Repository Analysis

OpenHands/OpenHands

🙌 OpenHands: AI-Driven Development

22.3 Moderate AI signal View on GitHub
22.3
Adjusted Score
22.3
Raw Score
100%
Time Factor
2026-05-30
Last Push
75,362
Stars
Python
Language
341,536
Lines of Code
2035
Files
5862
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 138MEDIUM 563LOW 5161

Pattern Findings

5862 matches across 17 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers3984 hits · 3687 pts
SeverityFileLineSnippet
LOW…tend/__tests__/conversation-websocket-handler.test.tsx92function renderWithWebSocketContext(
LOW…__/components/features/user/user-context-menu.test.tsx38function UserContextMenuWithRootOutlet({
LOW…end/__tests__/hooks/use-click-outside-element.test.tsx10function ClickOutsideTestComponent({
LOWfrontend/__tests__/routes/llm-settings.test.tsx33function resetProfilesServiceDefaults() {
LOWfrontend/__tests__/routes/llm-settings.test.tsx148function buildSettingsWithAdvancedToggle(
LOWfrontend/__tests__/routes/billing.test.tsx350 function renderWithForcedReRenders(
LOW…ontend/__tests__/routes/verification-settings.test.tsx43function renderVerificationSettingsScreen() {
LOWfrontend/__tests__/routes/task-list-tab.test.tsx20function createTaskTrackingObservation(
LOW…/__tests__/routes/manage-organization-members.test.tsx56function ManageOrganizationMembersWithPortalRoot() {
LOW…ontend/__tests__/helpers/websocket-test-components.tsx12export function ConnectionStatusComponent() {
LOW…ontend/__tests__/helpers/websocket-test-components.tsx45export function OptimisticUserMessageStoreComponent() {
LOW…ontend/__tests__/helpers/websocket-test-components.tsx59export function ErrorMessageStoreComponent() {
LOW…ontend/src/contexts/conversation-websocket-context.tsx80export function ConversationWebSocketProvider({
LOW…nd/src/context/conversation-subscriptions-provider.tsx73export function ConversationSubscriptionsProvider({
LOW…nd/src/context/conversation-subscriptions-provider.tsx322export function useConversationSubscriptions() {
LOWfrontend/src/utils/download-trajectory.ts3function isSaveFilePickerSupported(): boolean {
LOWfrontend/src/utils/sdk-settings-field-metadata.ts57export function getSettingsFieldConstraints(fieldKey: string) {
LOWfrontend/src/utils/sdk-settings-field-metadata.ts117export function resolveSchemaFieldDescription(
LOWfrontend/src/utils/sdk-settings-field-metadata.ts129export function resolveSchemaFieldSectionLabel(
LOWfrontend/src/utils/error-handler.ts45export function isBudgetOrCreditError(errorMessage: string): boolean {
LOWfrontend/src/utils/file-validation.ts13export function validateIndividualFileSizes(
LOWfrontend/src/utils/sdk-settings-schema.ts90export function getConversationSettingValue(
LOWfrontend/src/utils/sdk-settings-schema.ts219export function buildInitialSettingsFormValues(
LOWfrontend/src/utils/sdk-settings-schema.ts284export function hasAdvancedSettingsOverrides(settings: Settings): boolean {
LOWfrontend/src/utils/sdk-settings-schema.ts409export function buildSdkSettingsPayloadForView(
LOWfrontend/src/utils/sdk-settings-schema.ts431export function getVisibleSettingsSections(
LOWfrontend/src/utils/conversation-local-storage.ts128export function clearConversationLocalStorage(conversationId: string) {
LOWfrontend/src/utils/conversation-local-storage.ts153export function useConversationLocalStorageState(conversationId: string): {
LOWfrontend/src/utils/derive-profile-name.ts19export function deriveProfileNameFromModel(model: string): string | null {
LOWfrontend/src/utils/org/permission-guard.ts26async function getPermissionDeniedFallback(): Promise<string> {
LOW…at/task-tracking/task-tracking-observation-content.tsx10export function TaskTrackingObservationContent({
LOW…rc/components/v1/chat/hooks/use-plan-preview-events.ts50function findLastPlanningObservationInPhase(
LOW…hat/event-message-components/critic-result-display.tsx39function getIterativeRefinementEnabled(
LOW…-message-components/observation-pair-event-message.tsx10export function ObservationPairEventMessage({
LOW…t-message-components/generic-event-message-wrapper.tsx23export function GenericEventMessageWrapper({
LOW…nt-message-components/user-assistant-event-message.tsx15export function UserAssistantEventMessage({
LOW…nts/features/settings/upgrade-banner-with-backdrop.tsx9export function UpgradeBannerWithBackdrop({
LOW…/project-management/project-management-integration.tsx8export function ProjectManagementIntegration() {
LOW…settings/llm-settings/llm-settings-inputs-skeleton.tsx5export function LlmSettingsInputsSkeleton() {
LOW…settings/app-settings/app-settings-inputs-skeleton.tsx4export function AppSettingsInputsSkeleton() {
LOW…ttings/git-settings/azure-devops-token-help-anchor.tsx4export function AzureDevOpsTokenHelpAnchor() {
LOW…ttings/git-settings/bitbucket-dc-token-help-anchor.tsx4export function BitbucketDCTokenHelpAnchor() {
LOW…ettings/git-settings/configure-azure-devops-anchor.tsx7export function ConfigureAzureDevOpsAnchor() {
LOW…/git-settings/configure-github-repositories-anchor.tsx9export function ConfigureGitHubRepositoriesAnchor({
LOW…settings/git-settings/bitbucket-dc-webhook-manager.tsx38export function BitbucketDCWebhookManager({
LOW…settings/git-settings/gitlab-webhook-manager-state.tsx13export function GitLabWebhookManagerState({
LOW…recent-conversations/recent-conversations-skeleton.tsx29function RecentConversationSkeleton({
LOW…recent-conversations/recent-conversations-skeleton.tsx44export function RecentConversationsSkeleton() {
LOW…recent-conversations/conversation-status-indicator.tsx12export function ConversationStatusIndicator({
LOW…ents/features/chat/git-control-bar-tooltip-wrapper.tsx10export function GitControlBarTooltipWrapper({
LOW…ts/features/chat/task-tracking-observation-content.tsx8export function TaskTrackingObservationContent({
LOW…onents/features/chat/git-control-bar-branch-button.tsx15export function GitControlBarBranchButton({
LOW…-message-components/observation-pair-event-message.tsx14export function ObservationPairEventMessage({
LOW…t-message-components/generic-event-message-wrapper.tsx20export function GenericEventMessageWrapper({
LOW…nt-message-components/user-assistant-event-message.tsx14export function UserAssistantEventMessage({
LOW…ents/features/org/invite-organization-member-modal.tsx14export function InviteOrganizationMemberModal({
LOW…features/org/organization-member-role-context-menu.tsx25export function OrganizationMemberRoleContextMenu({
LOW…ponents/features/org/delete-org-confirmation-modal.tsx12export function DeleteOrgConfirmationModal({
LOW…ponents/features/org/organization-member-list-item.tsx20export function OrganizationMemberListItem({
LOW…ents/features/launch/plugin-launch-parameter-input.tsx14export function PluginLaunchParameterInput({
3924 more matches not shown…
Decorative Section Separators335 hits · 1287 pts
SeverityFileLineSnippet
MEDIUMfrontend/__tests__/routes/llm-settings.test.tsx2100 // ── Auto-profile flow ───────────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx80 // ── Sub-agents (OpenHands mode) ──────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx101 // ── ACP (ACP mode) ───────────────────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx140 // ── Derived state ────────────────────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx157 // ── Save ─────────────────────────────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx199 // ── Loading ──────────────────────────────────────────────────────────────
MEDIUMfrontend/src/routes/agent-settings.tsx204 // ── Render ───────────────────────────────────────────────────────────────
MEDIUMenterprise/tests/unit/test_billing.py635# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/test_billing.py637# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/test_saas_user_auth.py928# =============================================================================
MEDIUMenterprise/tests/unit/test_saas_user_auth.py930# =============================================================================
MEDIUMenterprise/tests/unit/test_org_store.py1068# =============================================================================
MEDIUMenterprise/tests/unit/test_org_store.py1070# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py81# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py83# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py119# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py121# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py198# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py200# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py246# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py248# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py336# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py338# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py687# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py689# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py824# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py826# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py1017# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py1019# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py23# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py25# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py447# =============================================================================
MEDIUMenterprise/tests/unit/test_authorization.py449# =============================================================================
MEDIUMenterprise/tests/unit/test_org_profiles.py170# ── Integration tests ──────────────────────────────────────────────────────
MEDIUMenterprise/tests/unit/test_auth_routes.py2421# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/test_auth_routes.py2423# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/test_auth_routes.py2512# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/test_auth_routes.py2514# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py45# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py47# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py64# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py66# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py214# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py216# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py239# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py241# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py27# ---------------------------------------------------------------------------
MEDIUM…tests/unit/test_sharing/test_shared_event_filtering.py29# ---------------------------------------------------------------------------
MEDIUMenterprise/tests/unit/server/routes/test_orgs.py3278# =============================================================================
MEDIUMenterprise/tests/unit/server/routes/test_orgs.py3280# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py57# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py59# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py125# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py127# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py263# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py265# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py339# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py341# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py385# =============================================================================
MEDIUM…rprise/tests/unit/server/routes/test_org_git_claims.py387# =============================================================================
275 more matches not shown…
Self-Referential Comments207 hits · 698 pts
SeverityFileLineSnippet
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py47 # Create a stale task (working for more than 1 hour)
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py57 # Create a non-stale task (working for less than 1 hour)
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py267 # Create a mock processor that raises an exception
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py271 # Create a task
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py380 # Create a mock processor
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py384 # Create a task with delay
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py87 # Create a pending task (older)
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py168 # Create a pending task
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py179 # Create a patched version of next_task with the bug fixed
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py210 # Create a mock processor
MEDIUMenterprise/tests/unit/test_run_maintenance_tasks.py426 # Create a stale task and a pending task
MEDIUMenterprise/tests/unit/test_stripe_service_db.py80 # Create a mock org object to return from OrgStore
MEDIUMenterprise/tests/unit/test_stripe_service_db.py120 # Create a mock org object to return from OrgStore
MEDIUMenterprise/tests/unit/test_stripe_service_db.py164 # Create a mock org object to return from OrgStore
MEDIUMenterprise/tests/unit/test_saas_user_auth.py612 # Create a JWT access token
MEDIUMenterprise/tests/unit/test_saas_user_auth.py621 # Create a signed token containing the access and refresh tokens
MEDIUMenterprise/tests/unit/test_saas_user_auth.py142 # Create a valid JWT token that expires in the future
MEDIUMenterprise/tests/unit/test_saas_user_auth.py480 # Create a valid offline token (refresh token)
MEDIUMenterprise/tests/unit/test_saas_user_auth.py566 # Create a signed token
MEDIUMenterprise/tests/unit/test_saas_user_auth.py646 # Create a mock request with Authorization header
MEDIUMenterprise/tests/unit/test_saas_user_auth.py659 # Create a mock request with X-Session-API-Key header
MEDIUMenterprise/tests/unit/test_saas_user_auth.py672 # Create a mock request with both headers
MEDIUMenterprise/tests/unit/test_saas_user_auth.py688 # Create a mock request with no relevant headers
MEDIUMenterprise/tests/unit/test_saas_user_auth.py701 # Create a mock request with incorrectly formatted Authorization header
MEDIUMenterprise/tests/unit/test_saas_user_auth.py714 # Create a mock request with X-Access-Token header
MEDIUMenterprise/tests/unit/test_saas_user_auth.py727 # Create a mock request with both headers
MEDIUMenterprise/tests/unit/test_saas_user_auth.py743 # Create a mock request with both headers
MEDIUMenterprise/tests/unit/test_saas_user_auth.py759 # Create a mock request with all three headers
MEDIUMenterprise/tests/unit/test_saas_user_auth.py776 # Create a mock request with invalid Authorization header and X-Access-Token
MEDIUMenterprise/tests/unit/test_saas_user_auth.py792 # Create a mock request with empty header values
MEDIUMenterprise/tests/unit/test_saas_user_auth.py809 # Create a mock request with Bearer header with empty token
MEDIUMenterprise/tests/unit/test_saas_user_auth.py220 # Create a valid JWT token
MEDIUMenterprise/tests/unit/test_gitlab_resolver.py34 # Create a mock request with a payload containing object_attributes.id
MEDIUMenterprise/tests/unit/test_gitlab_resolver.py109 # Create a mock request with a payload without object_attributes.id
MEDIUMenterprise/tests/unit/test_gitlab_resolver.py256 # Create a payload with object_attributes.id
MEDIUMenterprise/tests/unit/test_saas_secrets_store.py58 # Create a Secrets object with some test data
MEDIUMenterprise/tests/unit/test_saas_secrets_store.py97 # Create a Secrets object with sensitive data
MEDIUMenterprise/tests/unit/test_org_store.py49 # Create a test org
MEDIUMenterprise/tests/unit/test_org_store.py100 # Create a test org
MEDIUMenterprise/tests/unit/test_org_store.py277 # Create a test org
MEDIUMenterprise/tests/unit/test_org_store.py1020 # Create a second org for the user's current_org_id
MEDIUMenterprise/tests/unit/test_auth_middleware.py313 # Create a fresh mock request for each test
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py21 # Create a mock request
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py26 # Create a mock stripe session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py30 # Create a mock for stripe.checkout.Session.create_async
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py33 # Create a mock for the CreateBillingSessionResponse class
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py38 # Create a mock implementation of create_customer_setup_session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py46 # Create the session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py75 # Create a mock request
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py80 # Create a mock stripe session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py85 # Create a mock for stripe.checkout.Session.create_async
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py88 # Create a mock for the CreateBillingSessionResponse class
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py93 # Create a mock for the CreateCheckoutSessionRequest class
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py98 # Create a mock implementation of create_checkout_session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py106 # Create the session
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py161 # Create a mock request
MEDIUM…terprise/tests/unit/test_billing_stripe_integration.py168 # Create a mock implementation of has_payment_method route
MEDIUMenterprise/tests/unit/mock_stripe_service.py58 # Create the customer in stripe
MEDIUMenterprise/tests/unit/test_models.py31 # Create a test org
MEDIUMenterprise/tests/unit/test_models.py36 # Create a test user
147 more matches not shown…
Excessive Try-Catch Wrapping433 hits · 430 pts
SeverityFileLineSnippet
LOWenterprise/run_maintenance_tasks.py19 except Exception as e:
LOWenterprise/run_maintenance_tasks.py52 except Exception as e:
MEDIUMenterprise/run_maintenance_tasks.py15def main():
LOWenterprise/enterprise_local/convert_to_env.py50 except Exception as decode_error:
MEDIUMenterprise/enterprise_local/convert_to_env.py51 print(f"Error decoding base64 for '{param}': {decode_error}")
LOWenterprise/enterprise_local/convert_to_env.py71 except Exception as e:
MEDIUMenterprise/enterprise_local/convert_to_env.py72 print(f'Error: {e}')
LOW…/tests/unit/test_maintenance_task_runner_standalone.py113 except Exception:
LOW…/tests/unit/test_maintenance_task_runner_standalone.py159 except Exception:
LOW…/tests/unit/test_maintenance_task_runner_standalone.py292 except Exception as e:
LOW…/tests/unit/test_maintenance_task_runner_standalone.py360 except Exception as e:
LOW…/tests/unit/test_maintenance_task_runner_standalone.py617 except Exception as e:
LOW…unit/test_user_version_upgrade_processor_standalone.py170 except Exception as e:
LOWenterprise/server/rate_limit.py67 except Exception:
LOWenterprise/server/rate_limit.py73 except Exception:
LOWenterprise/server/middleware.py83 except Exception as logout_error:
LOWenterprise/server/middleware.py128 except Exception as e:
LOWenterprise/server/middleware.py195 except Exception:
LOWenterprise/server/auth/token_manager.py798 except Exception as e:
LOWenterprise/server/auth/token_manager.py132 except Exception:
LOWenterprise/server/auth/token_manager.py656 except Exception as e:
LOWenterprise/server/auth/token_manager.py759 except Exception as e:
LOWenterprise/server/auth/token_manager.py855 except Exception as e:
LOWenterprise/server/auth/token_manager.py1000 except Exception:
LOWenterprise/server/auth/saas_user_auth.py384 except Exception as e:
LOWenterprise/server/auth/saas_user_auth.py429 except Exception as e:
LOWenterprise/server/auth/saas_user_auth.py447 except Exception as e:
LOWenterprise/server/auth/saas_user_auth.py578 except Exception as e:
LOWenterprise/server/auth/saas_user_auth.py657 except Exception as exc:
LOWenterprise/server/auth/saas_user_auth.py667 except Exception as exc:
LOWenterprise/server/auth/gitlab_sync.py68 except Exception:
MEDIUMenterprise/server/auth/gitlab_sync.py46def _run():
LOWenterprise/server/auth/sheets_client.py26 except Exception:
LOWenterprise/server/auth/sheets_client.py107 except Exception:
LOWenterprise/server/auth/user/user_authorizer.py43 except Exception as ex:
LOWenterprise/server/auth/user/default_user_authorizer.py82 except Exception:
LOWenterprise/server/utils/rate_limit_utils.py80 except Exception as e:
LOW…prise/server/app_lifespan/saas_app_lifespan_service.py43 except Exception:
MEDIUM…prise/server/app_lifespan/saas_app_lifespan_service.py38def __aexit__(self, exc_type, exc_value, traceback):
LOWenterprise/server/routes/auth.py147 except Exception:
LOWenterprise/server/routes/auth.py172 except Exception:
LOWenterprise/server/routes/auth.py211 except Exception:
LOWenterprise/server/routes/auth.py242 except Exception:
LOWenterprise/server/routes/auth.py314 except Exception as e:
LOWenterprise/server/routes/auth.py389 except Exception as e:
LOWenterprise/server/routes/auth.py566 except Exception as e:
LOWenterprise/server/routes/auth.py673 except Exception:
LOWenterprise/server/routes/auth.py823 except Exception:
LOWenterprise/server/routes/auth.py951 except Exception:
LOWenterprise/server/routes/auth.py982 except Exception as e:
LOWenterprise/server/routes/service.py182 except Exception as e:
LOWenterprise/server/routes/analytics_events.py104 except Exception:
LOWenterprise/server/routes/oauth_device.py117 except Exception as e:
LOWenterprise/server/routes/oauth_device.py233 except Exception as e:
LOWenterprise/server/routes/oauth_device.py299 except Exception as e:
LOWenterprise/server/routes/oauth_device.py312 except Exception as cleanup_error:
LOWenterprise/server/routes/oauth_device.py353 except Exception:
LOWenterprise/server/routes/oauth_device.py366 except Exception as e:
LOWenterprise/server/routes/billing.py333 except Exception:
LOWenterprise/server/routes/user_app_settings.py61 except Exception as e:
373 more matches not shown…
Docstring Block Structure73 hits · 365 pts
SeverityFileLineSnippet
HIGHenterprise/server/email_validation.py14 Dependency that validates user has @openhands.dev email domain. This dependency can be used in place of get_us
HIGHenterprise/server/auth/token_manager.py154Get user info from Keycloak userinfo endpoint. Args: access_token: A valid Keycloak access token
HIGHenterprise/server/auth/token_manager.py720Check if a user with the same base email already exists. This method checks for duplicate signups using email +
HIGHenterprise/server/auth/email_validation.py7Extract base email from an email address. For emails with + modifier, extracts the base email (local part before +
HIGHenterprise/server/auth/authorization.py349 Authorization dependency for accessing organization financial data. Allows access if ANY of these conditions a
HIGH…terprise/server/utils/saas_pending_message_injector.py123Queue a message with ownership validation. Args: conversation_id: The conversation ID to queue the
HIGH…terprise/server/utils/saas_pending_message_injector.py140Get pending messages with ownership validation. Args: conversation_id: The conversation ID to get m
HIGH…terprise/server/utils/saas_pending_message_injector.py155Count pending messages with ownership validation. Args: conversation_id: The conversation ID to cou
HIGH…se/server/utils/saas_app_conversation_info_injector.py52Apply user_id and org_id filters to ensure conversation isolation. Filters conversations by: - user_id:
HIGHenterprise/server/routes/service.py60 Validate the service API key from the request header. Args: x_service_api_key: The service API key fro
HIGHenterprise/server/routes/service.py118 Get or create an API key for a user on behalf of the automations service. If a key with the given name already
HIGHenterprise/server/routes/service.py221 Delete a system API key created by the service. This endpoint allows the automations service to clean up API k
HIGHenterprise/server/routes/user_app_settings.py32Get the current user's app settings. Returns language, analytics consent, sound notifications, and git config.
HIGHenterprise/server/routes/user_app_settings.py77Update the current user's app settings (partial update). Only provided fields will be updated. Pass null to clear a
HIGHenterprise/server/routes/orgs.py82List organizations for the authenticated user. This endpoint returns a paginated list of all organizations that the
HIGHenterprise/server/routes/orgs.py157Create a new organization. This endpoint allows authenticated users with @openhands.dev email to create a new o
HIGHenterprise/server/routes/orgs.py400Get organization app settings for the user's current organization. This endpoint retrieves application settings for
HIGHenterprise/server/routes/orgs.py444Update organization app settings for the user's current organization. This endpoint updates application settings fo
HIGHenterprise/server/routes/orgs.py532Get the current user's membership record for an organization. Returns the authenticated user's role, status, email,
HIGHenterprise/server/routes/orgs.py594Delete an organization. This endpoint permanently deletes an organization and all associated data including org
HIGHenterprise/server/routes/orgs.py707Update an existing organization. This endpoint updates organization settings. Access requires the EDIT_ORG_SETTINGS
HIGHenterprise/server/routes/orgs.py813Get all members of an organization with pagination and optional email filter. This endpoint retrieves a paginated l
HIGHenterprise/server/routes/orgs.py906Get count of organization members with optional email filter. This endpoint returns the total count of organization
HIGHenterprise/server/routes/orgs.py982Get paginated financial data for organization members. Returns financial information (lifetime spend, current budge
HIGHenterprise/server/routes/orgs.py1136Switch to a different organization. This endpoint allows authenticated users to switch their current active org
HIGHenterprise/server/routes/orgs.py1358Claim a Git organization for an OpenHands organization. Only admin and owner roles can claim Git organizations.
HIGHenterprise/server/routes/orgs.py1446Remove a Git organization claim from an OpenHands organization. Only admin and owner roles can disconnect Git organ
HIGHenterprise/server/routes/org_invitations.py57Create organization invitations for multiple email addresses. Sends emails to invitees with secure links to join th
HIGHenterprise/server/routes/org_invitations.py203Accept an organization invitation via authenticated POST request. This endpoint is called by the frontend after dis
HIGHenterprise/server/routes/integration/jira.py130 Verify Jira webhook signature. Args: body: Raw request body bytes signature: Signature from x-
HIGH…rprise/server/services/org_member_financial_service.py26Get paginated financial data for organization members. Fetches member list from database and joins with financi
HIGHenterprise/server/services/org_app_settings_service.py89Update organization app settings. Only updates fields that are explicitly provided in update_data. User
HIGHenterprise/server/services/org_member_service.py32Get the current user's membership record for an organization. Retrieves the authenticated user's role, status,
HIGHenterprise/server/services/org_member_service.py146Get count of organization members with authorization check. Args: org_id: Organization UUID.
HIGHenterprise/server/services/org_member_service.py257Update a member's role in an organization. Permission rules: - Owners can modify anyone (including othe
HIGHenterprise/server/services/org_invitation_service.py37Create a new organization invitation. This method: 1. Validates the organization exists 2. Vali
HIGHenterprise/server/services/org_invitation_service.py164Create multiple organization invitations concurrently. Validates permissions once upfront, then creates invitat
HIGHenterprise/server/services/org_invitation_service.py259Accept an organization invitation. This method: 1. Validates the token and invitation status 2.
HIGHenterprise/server/services/user_app_settings_service.py64Update user app settings. Only updates fields that are explicitly provided in update_data. User ID is o
HIGHenterprise/storage/auth_token_store.py109Load authentication tokens from the database and refresh them if necessary. This method uses a double-checked l
HIGHenterprise/storage/device_code_store.py34Create a new device code entry. Uses database constraints to ensure uniqueness, avoiding TOCTOU race conditions
HIGHenterprise/storage/org_service.py56 Create LiteLLM team integration for the organization. Args: org_id: Organization ID
HIGHenterprise/storage/org_service.py193 Create a new organization with the specified user as owner. This method orchestrates the complete orga
HIGHenterprise/storage/org_service.py299 Persist organization with compensation on failure. If database persistence fails, cleans up LiteLLM re
HIGHenterprise/storage/org_service.py485 Update organization with permission checks for LLM settings. Args: org_id: Organization UU
HIGHenterprise/storage/org_service.py686 Get organization by ID with membership validation. This method verifies that the user is a member of t
HIGHenterprise/storage/org_service.py773 Delete organization with complete cleanup of all associated data. This method performs the complete or
HIGHenterprise/storage/org_service.py854 Switch user's current organization to the specified organization. This method: 1. Validates th
HIGHenterprise/storage/org_store.py405Persist organization and owner membership in a single transaction. Args: org: Organization entity t
HIGHenterprise/storage/org_store.py426Delete organization and all associated data in cascade, including external LiteLLM cleanup. Args: o
HIGHenterprise/storage/resend_synced_user_store.py59Mark a user as synced to a specific audience. Uses upsert to handle race conditions - if the user is already
HIGHenterprise/integrations/jira/jira_view.py465Create a Jira view with repository already selected. This factory method: 1. Creates the view with payl
HIGHenterprise/integrations/github/github_service.py108 Get the new GitHub GraphQL node ID for a repository using REST API. Args: repo_id: Numeric
HIGHenterprise/integrations/slack/slack_manager.py145Retrieve stored user message from Redis. Args: message_ts: The message timestamp thread
HIGHenterprise/sync/resend_keycloak.py117Get users from Keycloak using the admin client. Args: offset: The offset to start from. limit: The
HIGHenterprise/sync/resend_keycloak.py188Get contacts from Resend. Args: audience_id: The Resend audience ID. Returns: A dictionary map
HIGHenterprise/sync/resend_keycloak.py224Add a contact to the Resend audience with retry logic. Args: audience_id: The Resend audience ID. e
HIGHenterprise/sync/resend_keycloak.py267Send a welcome email to a new contact. Args: email: The email address of the contact. first_name: T
HIGH…/app_server/pending_messages/pending_message_router.py42Queue a message for delivery when conversation becomes ready. This endpoint allows users to submit messages even wh
HIGH…ver/integrations/bitbucket_data_center/service/base.py45Extract owner and repo from repository string. Args: repository: Repository name in format 'project
13 more matches not shown…
Cross-File Repetition54 hits · 270 pts
SeverityFileLineSnippet
HIGHenterprise/tests/unit/conftest.py0create an async session maker bound to the async engine.
HIGH…tests/unit/server/auth/test_saas_user_auth_org_info.py0create an async session maker bound to the async engine.
HIGHenterprise/tests/unit/storage/test_auth_token_store.py0create an async session maker bound to the async engine.
HIGH…se/tests/unit/storage/test_user_authorization_store.py0create an async session maker bound to the async engine.
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata (conversation_id, user_id, conversation_version, created_at, last_updated_at) values (
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata (conversation_id, user_id, conversation_version, created_at, last_updated_at) values (
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata (conversation_id, user_id, conversation_version, created_at, last_updated_at) values (
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata_saas (conversation_id, user_id, org_id) select conversation_id, :user_uuid, :user_uuid
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata_saas (conversation_id, user_id, org_id) select conversation_id, :user_uuid, :user_uuid
HIGHenterprise/tests/unit/test_user_store.py0insert into conversation_metadata_saas (conversation_id, user_id, org_id) select conversation_id, :user_uuid, :user_uuid
HIGHenterprise/storage/user_store.py0insert into conversation_metadata_saas (conversation_id, user_id, org_id) select conversation_id, :user_uuid, :user_uuid
HIGH…storage/test_saas_sql_app_conversation_info_service.py0create a sqlappconversationinfoservice instance for testing.
HIGH…/app_server/test_webhook_router_parent_conversation.py0create a sqlappconversationinfoservice instance for testing.
HIGH…t/app_server/test_sql_app_conversation_info_service.py0create a sqlappconversationinfoservice instance for testing.
HIGHtests/unit/app_server/test_webhook_router_stats.py0create a sqlappconversationinfoservice instance for testing.
HIGHtests/unit/app_server/test_webhook_router_auto_title.py0create a sqlappconversationinfoservice instance for testing.
HIGHtests/unit/app_server/test_webhook_router_tags.py0create a sqlappconversationinfoservice instance for testing.
HIGH…tegrations/gitlab/test_gitlab_v1_callback_processor.py0test that budget exceeded errors are logged at info level and user gets friendly message.
HIGH…tegrations/github/test_github_v1_callback_processor.py0test that budget exceeded errors are logged at info level and user gets friendly message.
HIGH…integrations/slack/test_slack_v1_callback_processor.py0test that budget exceeded errors are logged at info level and user gets friendly message.
HIGHenterprise/server/sharing/shared_event_service.py0given a conversation_id and event_id, retrieve an event if the conversation is shared.
HIGHenterprise/server/sharing/aws_shared_event_service.py0given a conversation_id and event_id, retrieve an event if the conversation is shared.
HIGH…se/server/sharing/google_cloud_shared_event_service.py0given a conversation_id and event_id, retrieve an event if the conversation is shared.
HIGH…rise/server/sharing/filesystem_shared_event_service.py0given a conversation_id and event_id, retrieve an event if the conversation is shared.
HIGHenterprise/storage/jira_integration_store.py0deactivate the workspace and all user links for a given workspace.
HIGHenterprise/storage/jira_dc_integration_store.py0deactivate the workspace and all user links for a given workspace.
HIGHenterprise/storage/linear_integration_store.py0deactivate the workspace and all user links for a given workspace.
HIGHenterprise/storage/jira_dc_integration_store.py0get jira dc user by keycloak user id and workspace id.
HIGHenterprise/storage/jira_dc_integration_store.py0get jira dc user by keycloak user id and workspace id.
HIGHenterprise/storage/jira_dc_integration_store.py0get jira dc user by keycloak user id and workspace id.
HIGHenterprise/integrations/gitlab/gitlab_view.py0create conversation using the new v1 app conversation system.
HIGHenterprise/integrations/jira/jira_view.py0create conversation using the new v1 app conversation system.
HIGHenterprise/integrations/github/github_view.py0create conversation using the new v1 app conversation system.
HIGHenterprise/integrations/slack/slack_view.py0create conversation using the new v1 app conversation system.
HIGH…se/integrations/gitlab/gitlab_v1_callback_processor.py0send a message to the agent server via the v1 api and return response text.
HIGH…rprise/integrations/jira/jira_v1_callback_processor.py0send a message to the agent server via the v1 api and return response text.
HIGH…se/integrations/github/github_v1_callback_processor.py0send a message to the agent server via the v1 api and return response text.
HIGH…/integrations/jira_dc/jira_dc_v1_callback_processor.py0send a message to the agent server via the v1 api and return response text.
HIGH…rise/integrations/slack/slack_v1_callback_processor.py0send a message to the agent server via the v1 api and return response text.
HIGH…se/integrations/gitlab/gitlab_v1_callback_processor.py0ask the agent to produce a summary of its work and return the agent response. note: this method now returns a string (th
HIGH…se/integrations/github/github_v1_callback_processor.py0ask the agent to produce a summary of its work and return the agent response. note: this method now returns a string (th
HIGH…rise/integrations/slack/slack_v1_callback_processor.py0ask the agent to produce a summary of its work and return the agent response. note: this method now returns a string (th
HIGHtests/unit/integrations/gitlab/test_gitlab.py0test that get_repositories correctly sets owner_type field for user repositories.
HIGHtests/unit/integrations/github/test_github_service.py0test that get_repositories correctly sets owner_type field for user repositories.
HIGHtests/unit/integrations/bitbucket/test_bitbucket.py0test that get_repositories correctly sets owner_type field for user repositories.
HIGHtests/unit/integrations/gitlab/test_gitlab.py0test that get_repositories correctly sets owner_type field for organization repositories.
HIGHtests/unit/integrations/github/test_github_service.py0test that get_repositories correctly sets owner_type field for organization repositories.
HIGHtests/unit/integrations/bitbucket/test_bitbucket.py0test that get_repositories correctly sets owner_type field for organization repositories.
HIGHtests/unit/integrations/gitlab/test_gitlab.py0test that get_repositories correctly handles mixed user and organization repositories.
HIGHtests/unit/integrations/github/test_github_service.py0test that get_repositories correctly handles mixed user and organization repositories.
HIGHtests/unit/integrations/bitbucket/test_bitbucket.py0test that get_repositories correctly handles mixed user and organization repositories.
HIGH…er/integrations/bitbucket_data_center/service/repos.py0get suggested tasks for the authenticated user across all repositories.
HIGH…nds/app_server/integrations/bitbucket/service/repos.py0get suggested tasks for the authenticated user across all repositories.
HIGH…p_server/integrations/azure_devops/service/features.py0get suggested tasks for the authenticated user across all repositories.
Unused Imports250 hits · 236 pts
SeverityFileLineSnippet
LOWenterprise/tests/unit/conftest.py9
LOWenterprise/tests/unit/conftest.py21
LOWenterprise/tests/unit/conftest.py25
LOWenterprise/tests/unit/conftest.py29
LOWenterprise/tests/unit/conftest.py30
LOWenterprise/tests/unit/conftest.py33
LOWenterprise/tests/unit/conftest.py41
LOW…tests/unit/test_sharing/test_shared_event_filtering.py9
LOW…unit/server/auth/test_reject_x_org_id_path_mismatch.py14
LOW…e/tests/unit/storage/test_saas_stores_effective_org.py17
LOW…ts/unit/storage/test_jira_dc_active_link_constraint.py1
LOW…ons/github/test_github_view_v1_initial_user_message.py1
LOW…server/sharing/sql_shared_conversation_info_service.py9
LOWenterprise/server/sharing/aws_shared_event_service.py11
LOW…se/server/sharing/google_cloud_shared_event_service.py9
LOW…rise/server/sharing/filesystem_shared_event_service.py9
LOWenterprise/server/auth/org_context.py24
LOWenterprise/server/auth/cookie_chunking.py18
LOW…prise/server/app_lifespan/saas_app_lifespan_service.py7
LOWenterprise/server/routes/integration/bitbucket_dc.py1
LOWenterprise/server/routes/integration/bitbucket.py1
LOWenterprise/server/services/org_app_settings_service.py7
LOWenterprise/server/services/user_app_settings_service.py7
LOWenterprise/storage/user_settings.py1
LOWenterprise/storage/openhands_pr_store.py1
LOWenterprise/storage/saas_settings_store.py1
LOWenterprise/storage/user.py16
LOWenterprise/storage/user.py17
LOWenterprise/storage/user.py18
LOWenterprise/storage/user.py19
LOWenterprise/storage/user_repo_map_store.py1
LOWenterprise/storage/bitbucket_webhook_store.py1
LOWenterprise/storage/org.py16
LOWenterprise/storage/org.py17
LOWenterprise/storage/org.py18
LOWenterprise/storage/org.py19
LOWenterprise/storage/org.py20
LOWenterprise/storage/org.py21
LOWenterprise/storage/org.py22
LOWenterprise/storage/org.py23
LOWenterprise/storage/org.py24
LOWenterprise/storage/org.py25
LOWenterprise/storage/org.py26
LOWenterprise/storage/bitbucket_dc_webhook_store.py1
LOWenterprise/storage/stripe_customer.py10
LOWenterprise/storage/org_app_settings_store.py3
LOWenterprise/storage/slack_user.py10
LOWenterprise/storage/slack_conversation.py9
LOWenterprise/storage/auth_token_store.py1
LOWenterprise/storage/stored_custom_secrets.py9
LOWenterprise/storage/maintenance_task.py1
LOWenterprise/storage/jira_integration_store.py1
LOWenterprise/storage/jira_dc_integration_store.py1
LOWenterprise/storage/stored_conversation_metadata_saas.py16
LOWenterprise/storage/stored_conversation_metadata_saas.py17
LOWenterprise/storage/__init__.py1
LOWenterprise/storage/__init__.py2
LOWenterprise/storage/__init__.py3
LOWenterprise/storage/__init__.py4
LOWenterprise/storage/__init__.py5
190 more matches not shown…
Redundant / Tautological Comments121 hits · 185 pts
SeverityFileLineSnippet
LOW.openhands/pre-commit.sh13# Check if any files match specific patterns
LOW.openhands/pre-commit.sh32 # Check if we're in a CI environment or if frontend dependencies are missing
LOWenterprise/enterprise_local/decrypt_env.sh4# Check if DEPLOY_DIR argument was provided
LOWenterprise/tests/unit/test_auth_routes.py561 # Set validate_offline_token to return False to test the "without offline token" scenario
LOWenterprise/tests/unit/test_lite_llm_manager.py166 user_settings.user_version = 4 # Set version to avoid None comparison
LOWenterprise/server/config.py114 # Check if the response is successful
LOWenterprise/server/constants.py7# Check if this is a feature environment
LOWenterprise/server/auth/recaptcha_service.py125 # Check if any suspicious labels are present
LOWenterprise/server/auth/authorization.py392 # Check if user has @openhands.dev email
LOWenterprise/server/auth/authorization.py403 # Check if user has Admin or Owner role in the organization
LOWenterprise/server/auth/saas_user_auth.py695 # Check if email is blacklisted (whitelist takes precedence)
LOWenterprise/server/auth/gitlab_sync.py48 # Check if the user has a GitLab provider token before syncing
LOW…se/server/utils/saas_app_conversation_info_injector.py195 # Check if there are more results
LOW…se/server/utils/saas_app_conversation_info_injector.py389 # Check if SAAS metadata already exists
LOWenterprise/server/routes/users_v1.py153 # Check if this is an AuthUserContext with a SaasUserAuth
LOWenterprise/server/routes/orgs.py1376 # Check if this Git org is already claimed (early feedback for the common case)
LOWenterprise/server/routes/api_keys.py300 # Check if authenticated via API key
LOWenterprise/server/routes/api_keys.py352 # Check if the BYOR key exists in the database
LOWenterprise/server/routes/integration/gitlab.py292 # Check if user has admin access to this resource
LOWenterprise/server/routes/integration/jira_dc.py217 # Check if user currently has an active workspace link
LOWenterprise/server/routes/integration/jira_dc.py235 # Check if user had a previous link to this specific workspace
LOWenterprise/server/routes/integration/jira_dc.py267 # Check if user is the admin of the workspace
LOWenterprise/server/routes/integration/jira_dc.py274 # Check if user's current link matches the workspace
LOWenterprise/server/routes/integration/jira_dc.py293 # Check if Jira DC webhooks are enabled
LOWenterprise/server/routes/integration/jira_dc.py1104 # Check if workspace exists
LOWenterprise/server/routes/integration/jira_dc.py1114 # Check if workspace is active
LOWenterprise/server/routes/integration/jira.py211 # Check if user currently has an active workspace link
LOWenterprise/server/routes/integration/jira.py229 # Check if user had a previous link to this specific workspace
LOWenterprise/server/routes/integration/jira.py261 # Check if user is the admin of the workspace
LOWenterprise/server/routes/integration/jira.py268 # Check if user's current link matches the workspace
LOWenterprise/server/routes/integration/jira.py288 # Check if Jira webhooks are enabled
LOWenterprise/server/routes/integration/jira.py735 # Check if workspace exists
LOWenterprise/server/routes/integration/jira.py745 # Check if workspace is active
LOWenterprise/server/routes/integration/github.py59 # Check if GitHub webhooks are enabled
LOWenterprise/server/services/org_app_settings_service.py112 # Check if any fields are provided
LOWenterprise/server/services/org_member_service.py189 # Check if trying to remove self
LOWenterprise/server/services/org_member_service.py210 # Check if removing the last owner
LOWenterprise/server/services/org_member_service.py223 # Set current_org_id to personal workspace (org.id == user.id)
LOWenterprise/server/services/org_member_service.py291 # Check if trying to modify self
LOWenterprise/server/services/org_member_service.py334 # Check if demoting the last owner
LOWenterprise/server/services/user_app_settings_service.py89 # Check if any fields are provided
LOWenterprise/storage/openhands_pr_store.py19 # Check if PR already exists
LOWenterprise/storage/openhands_pr_store.py104 # Check if the updated_at timestamp has changed (indicating concurrent modification)
LOWenterprise/storage/saas_settings_store.py302 # Check if we need to migrate from user_settings
LOWenterprise/storage/org_member_store.py234 # Check if there are more results
LOWenterprise/storage/lite_llm_manager.py35# Check if billing is enabled (defaults to false for enterprise deployments)
LOWenterprise/storage/lite_llm_manager.py155 # Check if team already exists and get its budget
LOWenterprise/storage/lite_llm_manager.py317 # Check if max_budget is None (not 0.0) or set to unlimited to determine if already migrated
LOWenterprise/storage/lite_llm_manager.py382 # Check if the database key exists in LiteLLM
LOWenterprise/storage/auth_token_store.py151 # Check if token needs refresh
LOWenterprise/storage/org_service.py749 # Check if organization exists
LOWenterprise/storage/org_service.py754 # Check if user is a member of the organization
LOWenterprise/storage/org_service.py759 # Check if user has owner role
LOWenterprise/storage/org_service.py516 # Check if user is a member of this organization
LOWenterprise/storage/org_service.py529 # Check if name is being updated and validate uniqueness
LOWenterprise/storage/org_service.py531 # Check if new name conflicts with another org
LOWenterprise/storage/device_code.py113 # Check if polling too fast
LOWenterprise/storage/user_store.py179 # Check if user has completed billing sessions to enable BYOR export
LOWenterprise/storage/user_store.py649 # Check if we need to migrate from user_settings
LOWenterprise/storage/user_store.py1119 # Check if model matches old version's default
61 more matches not shown…
Fake / Example Data184 hits · 152 pts
SeverityFileLineSnippet
LOWfrontend/__tests__/utils/input-validation.test.ts12 expect(isValidEmail("user@example.com")).toBe(true);
LOWfrontend/__tests__/utils/input-validation.test.ts87 const emails = ["user@example.com", "test@domain.org"];
LOWfrontend/__tests__/utils/input-validation.test.ts116 const emails = ["user@example.com", "test@domain.org", "admin@company.io"];
LOWfrontend/__tests__/utils/input-validation.test.ts121 const emails = ["user@example.com", "invalid", "test@domain.org"];
LOWfrontend/__tests__/utils/permission-guard.test.ts91 email: "admin@example.com",
LOW…_tests__/components/features/org/org-selector.test.tsx150 expect(options[1]).toHaveTextContent("Acme Corp");
LOW…_tests__/components/features/org/org-selector.test.tsx175 const acmeOption = within(listbox).getByText("Acme Corp");
LOW…_tests__/components/features/org/org-selector.test.tsx203 const acmeOption = within(listbox).getByText("Acme Corp");
LOW…_tests__/components/features/org/org-selector.test.tsx237 const acmeOption = within(listbox).getByText("Acme Corp");
LOW…_tests__/components/features/org/org-selector.test.tsx270 expect(screen.getByRole("combobox")).toHaveValue("Acme Corp");
LOW…/features/onboarding/information-request-form.test.tsx122 await user.type(nameInput, "John Doe");
LOW…/features/onboarding/information-request-form.test.tsx124 expect(nameInput).toHaveValue("John Doe");
LOW…/features/onboarding/information-request-form.test.tsx221 await user.type(screen.getByTestId("form-input-name"), "John Doe");
LOW…/features/onboarding/information-request-form.test.tsx222 await user.type(screen.getByTestId("form-input-company"), "Acme Inc");
LOW…/features/onboarding/information-request-form.test.tsx240 await user.type(nameInput, "John Doe");
LOW…/features/onboarding/information-request-form.test.tsx250 await user.type(screen.getByTestId("form-input-name"), "John Doe");
LOW…/features/onboarding/information-request-form.test.tsx251 await user.type(screen.getByTestId("form-input-company"), "Acme Inc");
LOW…/features/onboarding/information-request-form.test.tsx271 await user.type(screen.getByTestId("form-input-name"), "John Doe");
LOW…/features/onboarding/information-request-form.test.tsx272 await user.type(screen.getByTestId("form-input-company"), "Acme Inc");
LOW…omponents/features/onboarding/onboarding-form.test.tsx387 await user.type(orgNameInput, "Acme Corp");
LOW…omponents/features/onboarding/onboarding-form.test.tsx402 org_name: "Acme Corp",
LOW…ntend/__tests__/hooks/query/use-organizations.test.tsx76 createMinimalOrg("2", "Acme Corp", false),
LOW…ntend/__tests__/hooks/query/use-organizations.test.tsx93 expect(organizations[1].name).toBe("Acme Corp");
LOWenterprise/tests/unit/test_recaptcha_service.py41 email = 'user@example.com'
LOWenterprise/tests/unit/test_recaptcha_service.py63 email2 = 'user@example.com'
LOWenterprise/tests/unit/test_recaptcha_service.py215 email='user@example.com',
LOWenterprise/tests/unit/test_recaptcha_service.py224 assert assessment.event.user_info.user_ids[0].email == 'user@example.com'
LOWenterprise/tests/unit/test_token_manager_extended.py293 'email': 'user@example.com',
LOWenterprise/tests/unit/test_identity_utils.py23 'name': 'Jane Doe',
LOWenterprise/tests/unit/test_identity_utils.py28 assert resolve_display_name(user_info) == 'Jane Doe'
LOWenterprise/tests/unit/test_identity_utils.py38 assert resolve_display_name(user_info) == 'Jane Doe'
LOWenterprise/tests/unit/test_identity_utils.py106 assert resolve_display_name(user_info) == 'Jane Doe'
LOWenterprise/tests/unit/test_saas_user_auth.py888 assert result.email == 'user@example.com'
LOWenterprise/tests/unit/test_saas_user_auth.py890 'user@example.com', None
LOWenterprise/tests/unit/test_saas_user_auth.py866 'email': 'user@example.com',
LOWenterprise/tests/unit/test_user_store.py650 user_info = {'name': 'John Doe'}
LOWenterprise/tests/unit/test_user_store.py567 'name': 'John Doe',
LOWenterprise/tests/unit/test_user_store.py578 assert org.contact_name == 'John Doe'
LOWenterprise/tests/unit/test_user_store.py632 'name': 'John Doe',
LOWenterprise/tests/unit/test_org_store.py378 contact_name='John Doe',
LOWenterprise/tests/unit/test_org_store.py437 contact_name='Jane Doe',
LOWenterprise/tests/unit/test_org_store.py485 contact_name='John Doe',
LOWenterprise/tests/unit/test_org_store.py598 contact_name='John Doe',
LOWenterprise/tests/unit/test_org_store.py613 assert result.contact_name == 'John Doe'
LOWenterprise/tests/unit/test_org_store.py654 contact_name='John Doe',
LOWenterprise/tests/unit/test_authorization.py1022def _create_mock_request_with_email(api_key_org_id=None, user_email='user@example.com'):
LOWenterprise/tests/unit/test_email_service.py177 org_name='Acme Corp',
LOWenterprise/tests/unit/test_email_service.py178 inviter_name='John Doe',
LOWenterprise/tests/unit/test_email_service.py189 assert 'Acme Corp' in email_params['subject']
LOWenterprise/tests/unit/test_email_service.py190 assert 'John Doe' in email_params['html']
LOWenterprise/tests/unit/test_email_service.py191 assert 'Acme Corp' in email_params['html']
LOWenterprise/tests/unit/test_org_member_store.py1043 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1118 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1184 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1270 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1348 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1424 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1499 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1573 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
LOWenterprise/tests/unit/test_org_member_store.py1656 user = User(id=uuid.uuid4(), current_org_id=org.id, email='user@example.com')
124 more matches not shown…
Verbosity Indicators69 hits · 118 pts
SeverityFileLineSnippet
LOW…/src/components/features/chat/interactive-chat-box.tsx113 // Step 1: Validate and filter files
LOW…/src/components/features/chat/interactive-chat-box.tsx119 // Step 2: Show loading indicators immediately
LOW…/src/components/features/chat/interactive-chat-box.tsx122 // Step 3: Process files using REAL FileReader
LOW…/src/components/features/chat/interactive-chat-box.tsx129 // Step 4: Handle successful results
LOW…/src/components/features/chat/interactive-chat-box.tsx133 // Step 5: Handle failed results
LOWfrontend/src/routes/settings.tsx54 // Step 1: Get config first (needed for all checks, no user data required)
LOWfrontend/src/routes/settings.tsx64 // Step 2: Check SAAS_ONLY_PATHS for OSS mode (no user data required)
LOWfrontend/src/routes/settings.tsx69 // Step 3: Check feature flag-based hiding and redirect IMMEDIATELY (no user data required)
LOWfrontend/src/routes/settings.tsx114 // Step 4: For routes that need permission checks, get user data
LOW…storage/test_saas_sql_app_conversation_info_service.py1255 # Step 1: Create conversation via API key bound to ORG1
LOW…storage/test_saas_sql_app_conversation_info_service.py1276 # Step 2: Switch user to ORG2 in browser session
LOW…storage/test_saas_sql_app_conversation_info_service.py1285 # Step 3: User in ORG2 should NOT see the conversation
LOW…storage/test_saas_sql_app_conversation_info_service.py1301 # Step 4: Switch user back to ORG1
LOW…storage/test_saas_sql_app_conversation_info_service.py1310 # Step 5: User in ORG1 should see the conversation
LOWenterprise/server/routes/bitbucket_dc_proxy.py31 # Step 1: get username
LOWenterprise/server/routes/bitbucket_dc_proxy.py43 # Step 2: get user details
LOWenterprise/server/services/org_invitation_service.py75 # Step 1: Validate organization exists
LOWenterprise/server/services/org_invitation_service.py80 # Step 2: Check this is not a personal workspace
LOWenterprise/server/services/org_invitation_service.py87 # Step 3: Check inviter is a member and has permission
LOWenterprise/server/services/org_invitation_service.py351 # Step 3: Check if user is already a member
LOWenterprise/server/services/org_invitation_service.py360 # Step 4: Create LiteLLM integration for the user in the new org
LOWenterprise/server/services/org_invitation_service.py98 # Step 4: Validate role assignment permissions
LOWenterprise/server/services/org_invitation_service.py108 # Step 5: Check if user is already a member (by email)
LOWenterprise/server/services/org_invitation_service.py119 # Step 6: Create the invitation
LOWenterprise/server/services/org_invitation_service.py127 # Step 7: Send invitation email
LOWenterprise/server/services/org_invitation_service.py191 # Step 1: Validate permissions upfront (shared for all emails)
LOWenterprise/server/services/org_invitation_service.py219 # Step 2: Create invitations concurrently
LOWenterprise/server/services/org_invitation_service.py237 # Step 3: Separate successes and failures
LOWenterprise/server/services/org_invitation_service.py289 # Step 1: Get and validate invitation
LOWenterprise/server/services/org_invitation_service.py303 # Step 2: Check expiration
LOWenterprise/server/services/org_invitation_service.py384 # Step 5: Add user to organization. New members start with no
LOWenterprise/server/services/org_invitation_service.py402 # Step 6: Mark invitation as accepted
LOWenterprise/storage/lite_llm_manager.py481 # Step 1: Get the team info to retrieve the budget
LOWenterprise/storage/lite_llm_manager.py526 # Step 2: Update user to set their max_budget back from unlimited
LOWenterprise/storage/lite_llm_manager.py535 # Step 3: Add user back to the default team
LOWenterprise/storage/lite_llm_manager.py549 # Step 4: Update all user keys to remove org team association (set team_id to default)
LOWenterprise/storage/lite_llm_manager.py560 # Step 5: Remove user from their org team
LOWenterprise/storage/lite_llm_manager.py569 # Step 6: Delete the org team
LOWenterprise/storage/org_service.py226 # Step 1: Validate name uniqueness (fails early, no cleanup needed)
LOWenterprise/storage/org_service.py229 # Step 2: Generate organization ID
LOWenterprise/storage/org_service.py232 # Step 3: Create LiteLLM integration (external state created)
LOWenterprise/storage/org_service.py238 # Step 4: Create organization entity
LOWenterprise/storage/org_service.py246 # Step 5: Apply LiteLLM settings
LOWenterprise/storage/org_service.py249 # Step 6: Get owner role and create member entity
LOWenterprise/storage/org_service.py258 # Step 7: Persist in transaction (critical section)
LOWenterprise/storage/org_service.py879 # Step 1: Check if organization exists
LOWenterprise/storage/org_service.py884 # Step 2: Validate user is a member of the organization
LOWenterprise/storage/org_service.py894 # Step 3: Update user's current_org_id
LOWenterprise/storage/org_service.py797 # Step 1: Verify user authorization
LOWenterprise/storage/org_service.py800 # Step 2: Perform database cascade deletion with LiteLLM cleanup in transaction
LOWenterprise/storage/user_store.py528 # Step 3: Copy user_id from conversation_metadata_saas to conversation_metadata
LOWenterprise/storage/user_store.py544 # Step 4: Delete conversation_metadata_saas entries
LOWenterprise/storage/user_store.py550 # Step 5: Reset org_id columns in related tables
LOWenterprise/storage/user_store.py593 # Step 6: Delete org_member entries for this org
LOWenterprise/storage/user_store.py599 # Step 7: Delete the user entry
LOWenterprise/storage/user_store.py611 # Step 8: Set already_migrated=False on user_settings and encrypt fields
LOWenterprise/integrations/gitlab/gitlab_service.py438 # For projects, we need to check if the user has maintainer or owner access
LOWenterprise/integrations/gitlab/gitlab_service.py415 # For groups, we need to check if the user is an owner or maintainer
LOWenterprise/integrations/jira/jira_manager.py92 # Step 1: Parse webhook payload
LOWenterprise/integrations/jira/jira_manager.py122 # Step 2: Validate workspace
9 more matches not shown…
Deep Nesting84 hits · 72 pts
SeverityFileLineSnippet
LOWenterprise/enterprise_local/convert_to_env.py8
LOWenterprise/tests/unit/test_run_maintenance_tasks.py208
LOWenterprise/tests/unit/test_run_maintenance_tasks.py265
LOWenterprise/tests/unit/test_run_maintenance_tasks.py343
LOWenterprise/tests/unit/test_run_maintenance_tasks.py378
LOWenterprise/tests/unit/test_run_maintenance_tasks.py424
LOWenterprise/tests/unit/test_saas_settings_store.py112
LOWenterprise/tests/unit/test_saas_settings_store.py157
LOWenterprise/tests/unit/test_lite_llm_manager.py608
LOWenterprise/tests/unit/test_lite_llm_manager.py637
LOWenterprise/tests/unit/test_lite_llm_manager.py676
LOWenterprise/tests/unit/test_lite_llm_manager.py750
LOWenterprise/tests/unit/test_lite_llm_manager.py2028
LOWenterprise/tests/unit/test_lite_llm_manager.py2049
LOWenterprise/tests/unit/routes/test_service.py125
LOWenterprise/tests/unit/routes/test_service.py150
LOWenterprise/tests/unit/routes/test_service.py196
LOWenterprise/server/auth/token_manager.py361
LOWenterprise/server/auth/saas_user_auth.py387
LOWenterprise/server/utils/rate_limit_utils.py11
LOW…se/server/utils/saas_app_conversation_info_injector.py131
LOWenterprise/server/routes/auth.py250
LOWenterprise/server/routes/users_v1.py107
LOWenterprise/server/routes/integration/bitbucket_dc.py537
LOWenterprise/server/routes/integration/jira_dc.py466
LOWenterprise/storage/lite_llm_manager.py752
LOWenterprise/integrations/utils.py251
LOWenterprise/integrations/gitlab/gitlab_service.py227
LOWenterprise/integrations/gitlab/gitlab_service.py357
LOWenterprise/integrations/gitlab/gitlab_service.py399
LOWenterprise/integrations/gitlab/gitlab_view.py387
LOWenterprise/integrations/github/data_collector.py132
LOWenterprise/integrations/github/github_view.py729
LOWenterprise/sync/resend_keycloak.py395
LOW…pp_server/test_live_status_app_conversation_service.py1539
LOWopenhands/app_server/config.py242
LOWopenhands/app_server/version.py7
LOWopenhands/app_server/settings/settings_router.py96
LOWopenhands/app_server/settings/settings_models.py184
LOWopenhands/app_server/event_callback/webhook_router.py409
LOWopenhands/app_server/secrets/secrets_models.py110
LOWopenhands/app_server/secrets/secrets_router.py96
LOWopenhands/app_server/file_store/s3.py136
LOWopenhands/app_server/utils/llm.py164
LOWopenhands/app_server/utils/environment.py46
LOWopenhands/app_server/user/auth_user_context.py58
LOWopenhands/app_server/status/system_stats.py34
LOWopenhands/app_server/integrations/provider.py496
LOWopenhands/app_server/integrations/service_types.py46
LOWopenhands/app_server/integrations/service_types.py90
LOW…nds/app_server/integrations/gitlab/service/features.py15
LOW…er/integrations/bitbucket_data_center/service/repos.py16
LOW…integrations/bitbucket_data_center/service/resolver.py35
LOW…app_server/integrations/github/service/branches_prs.py17
LOW…nds/app_server/integrations/github/service/features.py19
LOW…nhands/app_server/integrations/github/service/repos.py210
LOW…nds/app_server/integrations/github/service/resolver.py73
LOW…nds/app_server/integrations/bitbucket/service/repos.py110
LOW…nds/app_server/integrations/bitbucket/service/repos.py192
LOW…p_server/integrations/azure_devops/service/branches.py142
24 more matches not shown…
Over-Commented Block40 hits · 38 pts
SeverityFileLineSnippet
LOWconfig.template.toml1###################### OpenHands Configuration Example ######################
LOWconfig.template.toml21# Debugging enabled
LOWconfig.template.toml41#file_store_path = "/tmp/file_store"
LOWconfig.template.toml61# Path to mount the workspace
LOWconfig.template.toml81
LOWconfig.template.toml141[agent.CustomAgent]
LOWconfig.template.toml161
LOWconfig.template.toml181#platform = ""
LOWconfig.template.toml201# Enable GPU support in the runtime
LOWconfig.template.toml221# volumes = "/my/host/dir:/workspace:rw,/path2:/workspace/path2:ro"
LOWconfig.template.toml241##############################################################################
LOWconfig.template.toml261
LOWconfig.template.toml281#keep_first = 1
LOWconfig.template.toml301########################### Kubernetes #######################################
LOWconfig.template.toml321#resource_memory_request = "1Gi"
LOWconfig.template.toml341# Run the runtime sandbox container in privileged mode for use with docker-in-docker
LOWconfig.template.toml361# "https://api.example.com/mcp/shttp",
LOWconfig.template.toml381# env = {DEBUG = "true"}
LOWfrontend/playwright.config.ts61 // name: 'Mobile Safari',
LOW…ontend/src/contexts/conversation-websocket-context.tsx461 }
LOW…pi/conversation-service/v1-conversation-service.api.ts481 // The agent-server provides a full ``conversationUrl`` with a
LOWfrontend/src/routes/settings.tsx81 // so bounce them to ``/settings/agent``. Driven by the nav-item
LOWenterprise/alembic.ini1# A generic, single database configuration.
LOWenterprise/alembic.ini21
LOWenterprise/tests/unit/__init__.py1# Do not delete this! There are dependencies with top level packages named `tests` that collide with ours,
LOWenterprise/tests/unit/test_user_store.py1501
LOWenterprise/storage/saas_settings_store.py201 org_conversation.model_dump(mode='json'),
LOW…grations/bitbucket_data_center/bitbucket_dc_manager.py221 f'access to {project_key}/{repo_slug}; ignoring.'
LOWtests/unit/app_server/test_profiles_api.py761 # Bypass the invariant validator to persist a corrupt state.
LOWopenhands/app_server/constants.py21# Override with: OH_MAX_API_SECRET_NAME_LENGTH
LOWopenhands/app_server/constants.py61)
LOWopenhands/app_server/app_lifespan/alembic.ini1# A generic, single database configuration.
LOWopenhands/app_server/app_lifespan/alembic.ini21
LOWopenhands/app_server/app_lifespan/alembic.ini41
LOWopenhands/app_server/app_lifespan/alembic.ini61# behavior of splitting on spaces and/or commas.
LOWopenhands/app_server/app_lifespan/alembic.ini81# are written from script.py.mako
LOWopenhands/app_server/app_lifespan/alembic.ini101# black.options = -l 79 REVISION_SCRIPT_FILENAME
LOW…app_server/app_conversation/app_conversation_router.py641 # The agent-server's LLM registry is first-write-wins by ``usage_id``:
LOW…p_conversation/live_status_app_conversation_service.py341
LOWopenhands-ui/vitest.shims.d.ts1/// <reference types="@vitest/browser/providers/playwright" />
Cross-Language Confusion7 hits · 35 pts
SeverityFileLineSnippet
HIGHtests/unit/app_server/test_profiles_api.py385 assert fetched['config']['api_key'] is None # GET returns null, not mask
HIGHtests/unit/app_server/test_agent_server_env_override.py158 'OH_AGENT_SERVER_ENV': '{"NUMBER": 123, "BOOLEAN": true, "NULL": null}',
HIGH…rver/app_conversation/app_conversation_service_base.py342 'git init && git config --global '
HIGH…rver/app_conversation/app_conversation_service_base.py471 "$secret_url" 2>/dev/null)" || exit 0
HIGH…rver/app_conversation/app_conversation_service_base.py532 command = 'mkdir -p .git/hooks && chmod +x .openhands/pre-commit.sh'
HIGH…p_conversation/live_status_app_conversation_service.py1857 # Repository is being removed (set to null)
HIGHscripts/issue_duplicate_check_openhands.py206 ' "canonical_issue_number": 123 or null,',
AI Slop Vocabulary16 hits · 32 pts
SeverityFileLineSnippet
LOW…terprise/tests/unit/test_billing_stripe_integration.py173 # For testing, just return True directly
LOWenterprise/tests/unit/test_email_service.py151 # Should not raise, just return early
LOWenterprise/tests/unit/test_lite_llm_manager.py838 # Should not raise an exception, just return early
LOW…unit/test_sharing/test_sharing_shared_event_service.py71 # For testing purposes, we'll just use a mock that the EventPage can accept
LOW…sts/unit/test_sharing/test_aws_shared_event_service.py72 # For testing purposes, we'll just use a mock that the EventPage can accept
MEDIUM…/unit/server/routes/test_jira_dc_integration_routes.py497# Additional comprehensive tests for better coverage
MEDIUM…sts/unit/server/routes/test_jira_integration_routes.py289# Additional comprehensive tests for better coverage
LOWenterprise/server/utils/url_utils.py23 # for now just use the full hostname except for staging stacks.
LOWenterprise/server/services/org_app_settings_service.py116 # No fields to update, just return current settings
LOWenterprise/server/services/user_app_settings_service.py93 # No fields to update, just return current settings
LOWenterprise/integrations/github/data_collector.py440 # In this case, we will simply return when the exception occurs
MEDIUM…/app_server/test_webhook_router_parent_conversation.py296 # Create existing conversation with comprehensive metadata
MEDIUM…nds/app_server/integrations/bitbucket/service/repos.py28 # Extract workspace and repo from URL using robust URL parsing
LOW…nds/app_server/integrations/bitbucket/service/repos.py182 # If we can't extract the page, just use the next URL as is
MEDIUMopenhands/app_server/services/injector.py13 """Object designed to facilitate dependency injection"""
MEDIUM.github/scripts/update_pr_description.sh24 # For existing PR descriptions, use a more robust approach
Magic Placeholder Names3 hits · 18 pts
SeverityFileLineSnippet
HIGHconfig.template.toml355# {url = "https://api.example.com/mcp/sse", api_key = "your-api-key"}
HIGHconfig.template.toml366# api_key = "your-api-key",
HIGHopenhands/app_server/sandbox/sandbox_spec_service.py103 export LMNR_PROJECT_API_KEY=your-api-key
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippet
HIGH…onversation/sql_app_conversation_start_task_service.py207 # Return tasks in the same order as requested, with None for missing ones
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWfrontend/public/mockServiceWorker.js124async function handleRequest(event, requestId, requestInterceptedAt) {