Repository Analysis

browserbase/stagehand

The SDK For Browser Agents

4.0 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of browserbase/stagehand, a TypeScript project with 24,090 GitHub stars. SynthScan v2.0 examined 201,593 lines of code across 869 source files, recording 663 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 4.0 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

4.0
Adjusted Score
4.0
Raw Score
100%
Time Factor
2026-08-28
Last Push
24.1K
Stars
TypeScript
Language
201.6K
Lines of Code
869
Files
663
Pattern Hits
2026-08-29
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 8HIGH 14MEDIUM 10LOW 631

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 663 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers431 hits · 428 pts
SeverityFileLineSnippetContext
LOWscripts/release/python-version.ts11function locatePythonProjectVersion(contents: string): VersionLocation {CODE
LOWscripts/release/python-version.ts36export function updatePythonProjectVersion(contents: string, nextVersion: string): string {CODE
LOWscripts/release/preview-python-project.ts8export function parsePreviewPythonProject(contents: string): PreviewPythonProject {CODE
LOWscripts/release/preview-python-project.ts16export function updatePreviewPythonProjectVersion(contents: string, version: string): string {CODE
LOWscripts/release/consolidate-changelogs.ts95export async function cleanupGeneratedChangelogs(CODE
LOWscripts/release/consolidate-changelogs.ts108export function shouldPreservePackageChangelogs(value: string | undefined): boolean {CODE
LOWscripts/release/consolidate-changelogs.ts112async function checkPackageChangelogsAreTemporary(): Promise<void> {CODE
LOWpackages/sdk-python/tests/test_response.py25def test_response_exposes_immediate_metadata_with_defensive_header_copies() -> None:CODE
LOWpackages/sdk-python/tests/test_response.py42async def test_response_retrieves_headers_and_connection_metadata_lazily() -> None:CODE
LOWpackages/sdk-python/tests/test_response.py100async def test_response_decodes_body_text_and_json_through_independent_rpc_calls() -> None:CODE
LOWpackages/sdk-python/tests/test_response.py120async def test_response_surfaces_finished_failures_transport_errors_and_malformed_bodies() -> None:CODE
LOWpackages/sdk-python/tests/test_response.py147async def test_response_finished_returns_none_after_success() -> None:CODE
LOWpackages/sdk-python/tests/test_stagehand.py134def test_stagehand_constructor_is_private() -> None:CODE
LOWpackages/sdk-python/tests/test_stagehand.py139def test_stagehand_does_not_expose_context() -> None:CODE
LOWpackages/sdk-python/tests/test_stagehand.py156async def test_experimental_batch_validates_arguments_before_transport(CODE
LOWpackages/sdk-python/tests/test_stagehand.py180async def test_experimental_batch_uses_registered_rpc_method(CODE
LOWpackages/sdk-python/tests/test_stagehand.py206async def test_experimental_batch_normalizes_json_object_keys(CODE
LOWpackages/sdk-python/tests/test_stagehand.py224async def test_experimental_batch_distinguishes_omitted_input_from_null(CODE
LOWpackages/sdk-python/tests/test_stagehand.py248async def test_experimental_batch_accepts_maximum_timeout(CODE
LOWpackages/sdk-python/tests/test_stagehand.py268async def test_experimental_batch_includes_an_explicit_page(CODE
LOWpackages/sdk-python/tests/test_stagehand.py290async def test_experimental_batch_maps_an_omitted_value_to_none(CODE
LOWpackages/sdk-python/tests/test_stagehand.py304async def test_create_requires_a_factory_browser_before_validating_config() -> None:CODE
LOWpackages/sdk-python/tests/test_stagehand.py313async def test_create_builds_wire_params_and_worker_metadata_wins(CODE
LOWpackages/sdk-python/tests/test_stagehand.py358async def test_create_omits_unset_browser_region_from_the_wire(CODE
LOWpackages/sdk-python/tests/test_stagehand.py376async def test_local_browser_omits_metadata_and_forwards_caller_options(CODE
LOWpackages/sdk-python/tests/test_stagehand.py414async def test_create_rejects_model_connection_options_for_missing_or_callback_models(CODE
LOWpackages/sdk-python/tests/test_stagehand.py428async def test_create_claim_errors_for_closed_and_attached_handles(CODE
LOWpackages/sdk-python/tests/test_stagehand.py446async def test_failed_create_releases_claim_and_keeps_browser_open_for_retry(CODE
LOWpackages/sdk-python/tests/test_stagehand.py472async def test_context_close_is_an_alias_for_browser_close(CODE
LOWpackages/sdk-python/tests/test_stagehand.py492async def test_invalid_success_response_fails_closed_because_initialization_is_ambiguous(CODE
LOWpackages/sdk-python/tests/test_stagehand.py511async def test_ambiguous_initialization_uses_browser_invalidation_not_public_close(CODE
LOWpackages/sdk-python/tests/test_stagehand.py550async def test_cancelled_create_fails_closed_and_prevents_same_browser_retry(CODE
LOWpackages/sdk-python/tests/test_stagehand.py604async def test_create_deadline_fails_closed_without_a_flaky_five_millisecond_timer(CODE
LOWpackages/sdk-python/tests/test_stagehand.py657async def test_failed_create_for_missing_cdp_url_can_retry_same_handle(CODE
LOWpackages/sdk-python/tests/test_stagehand.py675async def test_close_is_memoized_and_never_closes_browser_or_transport(CODE
LOWpackages/sdk-python/tests/test_stagehand.py710async def test_close_works_with_eager_task_factory(CODE
LOWpackages/sdk-python/tests/test_stagehand.py733async def test_close_swallows_cdp_connection_closed_error(CODE
LOWpackages/sdk-python/tests/test_stagehand.py753async def test_close_failure_retains_browser_claim(CODE
LOWpackages/sdk-python/tests/test_stagehand.py771async def test_stagehand_prints_logs_and_calls_structured_callback(CODE
LOWpackages/sdk-python/tests/test_stagehand.py808async def test_callback_llm_handler_preserves_structured_and_image_content(CODE
LOWpackages/sdk-python/tests/test_stagehand.py857async def test_stagehand_routes_metrics_and_ai_methods(CODE
LOWpackages/sdk-python/tests/test_stagehand.py974async def test_stagehand_observe_and_extract_serialize_active_page_locators(CODE
LOWpackages/sdk-python/tests/test_stagehand.py1043async def test_stagehand_act_observe_and_extract_reject_cross_page_locators(CODE
LOWpackages/sdk-python/tests/test_stagehand.py1068async def test_stagehand_extract_uses_default_schema(CODE
LOWpackages/sdk-python/tests/test_stagehand.py1113async def test_stagehand_ai_methods_require_an_active_page(CODE
LOWpackages/sdk-python/tests/test_stagehand.py1133def test_semantic_arguments_stay_positional(method: str, positional: list[str]) -> None:CODE
LOWpackages/sdk-python/tests/test_browser_context.py21async def test_browser_context_wraps_generated_page_references() -> None:CODE
LOWpackages/sdk-python/tests/test_browser_context.py48async def test_browser_context_new_page_validates_optional_url() -> None:CODE
LOWpackages/sdk-python/tests/test_browser_context.py61def test_browser_context_reuses_one_clipboard_wrapper() -> None:CODE
LOWpackages/sdk-python/tests/test_browser_context.py68async def test_browser_context_serializes_python_cookie_filters() -> None:CODE
LOWpackages/sdk-python/tests/test_generated_input_types.py26def test_every_registered_protocol_method_has_generated_python_params_input(CODE
LOWpackages/sdk-python/tests/test_generated_input_types.py39def test_every_registered_notification_has_generated_python_params_input(CODE
LOWpackages/sdk-python/tests/test_generated_input_types.py51def test_every_generated_typed_dict_resolves_its_references() -> None:CODE
LOWpackages/sdk-python/tests/test_generated_input_types.py63def test_generated_typed_dicts_are_plain_dictionary_inputs() -> None:CODE
LOWpackages/sdk-python/tests/test_generated_input_types.py76def test_generated_pydantic_params_validate_nested_typed_dicts() -> None:CODE
LOWpackages/sdk-python/tests/test_rpc_client.py76async def test_callback_batch_uses_the_normal_pending_request_path(CODE
LOWpackages/sdk-python/tests/test_rpc_client.py112async def test_callback_batch_preserves_json_numbers_on_the_wire() -> None:CODE
LOWpackages/sdk-python/tests/test_rpc_client.py156async def test_send_validates_and_serializes_params_and_results() -> None:CODE
LOWpackages/sdk-python/tests/test_rpc_client.py225async def test_send_omits_unset_nested_file_metadata() -> None:CODE
LOWpackages/sdk-python/tests/test_rpc_client.py261async def test_send_strictly_validates_root_model_results() -> None:CODE
371 more matches not shown…
Hallucination Indicators8 hits · 115 pts
SeverityFileLineSnippetContext
CRITICALpackages/evals/core/tools/stagehand_code.ts358 return (await this.sdk.stagehand.browser.context.pages()).map((page) => this.wrap(page));CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts362 const page = await this.sdk.stagehand.browser.context.activePage();CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts364 const pages = await this.sdk.stagehand.browser.context.pages();CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts370 return this.wrap(await this.sdk.stagehand.browser.context.newPage(url));CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts374 const page = (await this.sdk.stagehand.browser.context.pages()).find(CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts378 await this.sdk.stagehand.browser.context.setActivePage(page);CODE
CRITICALpackages/evals/core/tools/stagehand_code.ts382 const page = (await this.sdk.stagehand.browser.context.pages()).find(CODE
CRITICALpackages/extension/clients/rpcClient.ts68 const span = this.router.runtime.tracing.tracer.startSpan(CODE
Unused Imports104 hits · 78 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/tests/test_response.py1CODE
LOWpackages/sdk-python/tests/test_stagehand.py1CODE
LOWpackages/sdk-python/tests/test_browser_context.py1CODE
LOWpackages/sdk-python/tests/_support.py1CODE
LOWpackages/sdk-python/tests/test_locator.py1CODE
LOWpackages/sdk-python/tests/test_browser_clipboard.py1CODE
LOWpackages/sdk-python/tests/test_browser.py1CODE
LOWpackages/sdk-python/tests/test_client_models.py1CODE
LOWpackages/sdk-python/tests/test_browserbase_session.py1CODE
LOWpackages/sdk-python/scripts/build.py1CODE
LOWpackages/sdk-python/scripts/generate.py1CODE
LOWpackages/sdk-python/scripts/smoke.py1CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py1CODE
LOWpackages/sdk-python/src/stagehand/__init__.py3CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py6CODE
LOWpackages/sdk-python/src/stagehand/__init__.py19CODE
LOWpackages/sdk-python/src/stagehand/__init__.py22CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py23CODE
LOWpackages/sdk-python/src/stagehand/__init__.py55CODE
LOWpackages/sdk-python/src/stagehand/__init__.py58CODE
LOWpackages/sdk-python/src/stagehand/__init__.py58CODE
44 more matches not shown…
Cross-Language Confusion (JS/TS)12 hits · 60 pts
SeverityFileLineSnippetContext
HIGHpackages/evals/tui/commands/help.ts14 print([CODE
HIGHpackages/evals/tui/commands/help.ts38 print([CODE
HIGHpackages/evals/tui/commands/help.ts112 print([CODE
HIGHpackages/evals/tui/commands/help.ts130 print([CODE
HIGHpackages/evals/tui/commands/help.ts149 print([CODE
HIGHpackages/evals/tui/commands/help.ts190 print([CODE
HIGHpackages/evals/tui/commands/help.ts220 print([CODE
HIGHpackages/evals/tui/commands/help.ts242 print([CODE
HIGHpackages/evals/tui/commands/help.ts258 print([CODE
HIGHpackages/evals/tui/commands/help.ts273 print([CODE
HIGHpackages/evals/tui/commands/help.ts294 print([CODE
HIGHpackages/evals/tui/commands/help.ts325 print([CODE
Fake / Example Data37 hits · 37 pts
SeverityFileLineSnippetContext
LOWpackages/extension/tests/observe.test.ts23 value: "user@example.com",CODE
LOWpackages/extension/tests/observe.test.ts59 expect(request?.systemPrompt).not.toContain("user@example.com");CODE
LOWpackages/extension/tests/observe.test.ts137 value: "user@example.com",CODE
LOWpackages/extension/tests/act.test.ts120 value: "user@example.com",CODE
LOWpackages/extension/tests/act.test.ts140 ["user@example.com"],CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2269 value: "user@example.com",CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2277 expect(page.locatorRefs[0]?.fillCalls).toStrictEqual(["user@example.com"]);CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2341 inputValue: "user@example.com",CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2356 await expect(runtime.locatorInputValue(descriptor)).resolves.toBe("user@example.com");CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2488 value: "user@example.com",CODE
LOWpackages/extension/tests/stagehand-clients.test.ts2501 expect(page.locatorRefs[0]?.fillCalls).toStrictEqual(["user@example.com"]);CODE
LOW…rotocol/tests/browser-runtime/rpc-client-smoke.test.ts327 value: "user@example.com",CODE
LOWpackages/protocol/tests/protocol/wire-casing.test.ts257 value: "user@example.com",CODE
LOWpackages/protocol/tests/protocol/wire-casing.test.ts270 value: "user@example.com",CODE
LOWpackages/protocol/tests/protocol/wire-casing.test.ts290 value: "user@example.com",CODE
LOWpackages/protocol/tests/protocol/wire-casing.test.ts303 value: "user@example.com",CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts249 value: "user@example.com",CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts263 value: "user@example.com",CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts298 variables: { accountEmail: "user@example.com" },CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts306 variables: { accountEmail: "user@example.com" },CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts461 expect(StagehandMethods.locatorInputValue.result.parse("user@example.com")).toBe(CODE
LOW…/protocol/tests/protocol/object-model-protocol.test.ts462 "user@example.com",CODE
LOWpackages/integrations/core/src/facade/runtime.ts705 return this.byAttribute("placeholder", value, options.exact);CODE
LOW…ts/examples/managed/tools/_assets/playwright_facade.js493 return this.byAttribute("placeholder", value, options.exact);CODE
LOW…/src/stagehand_deepagents/_assets/playwright_facade.js493 return this.byAttribute("placeholder", value, options.exact);CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1206 variables: { accountEmail: "user@example.com" },CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1232 variables: { accountEmail: "user@example.com" },CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1307 value: "user@example.com",CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1332 value: "user@example.com",CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1562 await page.locator("#email").fill("user@example.com");CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1568 value: "user@example.com",CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1605 client.queueResponse(StagehandMethods.locatorInputValue, "user@example.com");CODE
LOWpackages/sdk-ts/tests/objectWrapper.test.ts1614 await expect(locator.inputValue()).resolves.toBe("user@example.com");CODE
LOWpackages/sdk-ts/tests/clientLocatorOptions.test.ts27 variables: { accountEmail: "user@example.com" },CODE
LOWpackages/sdk-ts/tests/clientLocatorOptions.test.ts35 variables: { accountEmail: "user@example.com" },CODE
LOW…ts/browser-runtime/stagehandLaunchConnectSmoke.test.ts186 await page.locator("#locator-input").fill("user@example.com");CODE
LOW…ts/browser-runtime/stagehandLaunchConnectSmoke.test.ts191 await expect(page.locator("#locator-input").inputValue()).resolves.toBe("user@example.com");CODE
Excessive Try-Catch Wrapping26 hits · 28 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/src/stagehand/cdp_client.py327 except Exception as error:CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py332 except Exception as error:CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py497 except Exception:CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py535 except Exception:CODE
MEDIUMpackages/sdk-python/src/stagehand/cdp_client.py322def _read(self) -> None:CODE
LOWpackages/sdk-python/src/stagehand/page.py402 except Exception as error:CODE
LOWpackages/sdk-python/src/stagehand/page.py432 except Exception:CODE
LOWpackages/sdk-python/src/stagehand/rpc_client.py348 except Exception as error:CODE
LOWpackages/sdk-python/src/stagehand/rpc_client.py459 except Exception as error:CODE
MEDIUMpackages/sdk-python/src/stagehand/rpc_client.py342def _read(self) -> None:CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py525 except Exception as error:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py168 except Exception as error:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py177 except Exception as error:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py205 except Exception as error:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py257 except Exception:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py285 except Exception:CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py296 except Exception:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py72 except Exception:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py346 except Exception:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py372 except Exception:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py381 except Exception:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py412 except Exception as error:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py423 except Exception as error:CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py447 except Exception as error:CODE
LOW…grations/deepagents/src/stagehand_deepagents/server.py184 except Exception as error:CODE
LOW…grations/deepagents/src/stagehand_deepagents/server.py284 except Exception as error:CODE
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpackages/evals/tui/repl.ts44 // ─── Onboarding chrome ───────────────────────────────────────────────COMMENT
MEDIUMpackages/evals/tui/commands/verify.ts124 // ── Build a verifier without launching a browser ────────────────────────COMMENT
MEDIUMpackages/evals/tui/commands/verify.ts154 // ── Human summary ──────────────────────────────────────────────────────COMMENT
MEDIUMpackages/evals/tui/commands/verify.ts199 // ── Persist ────────────────────────────────────────────────────────────COMMENT
Deep Nesting11 hits · 11 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/examples/custom_logging.py11CODE
LOWpackages/sdk-python/examples/file_upload.py8CODE
LOWpackages/sdk-python/scripts/smoke.py43CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py428CODE
LOWpackages/sdk-python/src/stagehand/cdp_client.py477CODE
LOWpackages/sdk-python/src/stagehand/browser.py623CODE
LOWpackages/sdk-python/src/stagehand/browser.py648CODE
LOW…ckages/sdk-python/src/stagehand/browserbase_session.py19CODE
LOWpackages/sdk-python/src/stagehand/file_upload.py33CODE
LOW…rations/deepagents/examples/managed/tools/stagehand.py329CODE
LOW…grations/deepagents/src/stagehand_deepagents/server.py275CODE
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHpackages/sdk-python/examples/file_upload.py24 return file ? { name: file.name, text: await file.text() } : null;CODE
HIGHpackages/sdk-python/src/stagehand/cdp_client.py26 marker: globalThis.__stagehand_runtime ?? null,CODE
AI Structural Patterns9 hits · 9 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/src/stagehand/page.py507CODE
LOWpackages/sdk-python/src/stagehand/browser.py355CODE
LOWpackages/sdk-python/src/stagehand/browser.py523CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py117CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py330CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py371CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py332CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py374CODE
LOWpackages/sdk-python/src/stagehand/stagehand.py403CODE
Modern AI Meta-Vocabulary4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md860- [#586](https://github.com/browserbase/stagehand/pull/586) [`c57dc19`](https://github.com/browserbase/stagehand/commit/CODE
MEDIUMCHANGELOG.md860- [#586](https://github.com/browserbase/stagehand/pull/586) [`c57dc19`](https://github.com/browserbase/stagehand/commit/CODE
MEDIUMCHANGELOG.md1027- [#373](https://github.com/browserbase/stagehand/pull/373) [`ff00965`](https://github.com/browserbase/stagehand/commit/CODE
MEDIUMCHANGELOG.md1027- [#373](https://github.com/browserbase/stagehand/pull/373) [`ff00965`](https://github.com/browserbase/stagehand/commit/CODE
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/src/stagehand/__init__.py84__all__ = [CODE
LOWpackages/sdk-python/src/stagehand/page.py438 async def set_extra_http_headers(self, headers: Mapping[str, str]) -> None:CODE
LOWpackages/sdk-python/src/stagehand/browser_context.py75 async def set_active_page(self, page: Page) -> None:CODE
LOWpackages/sdk-python/src/stagehand/browser_context.py100 async def set_extra_http_headers(self, headers: Mapping[str, str]) -> None:CODE
LOWpackages/sdk-python/src/stagehand/client_types.py98__all__ = [CODE
LOW…ations/deepagents/src/stagehand_deepagents/__init__.py5__all__ = ["BrowserTools", "RuntimeConfig"]CODE
TODO Padding4 hits · 6 pts
SeverityFileLineSnippetContext
LOWpackages/evals/tui/commands/new.ts23 // TODO: implement test logicCOMMENT
LOWpackages/evals/tui/commands/new.ts41 // TODO: implement eval logicCOMMENT
LOWpackages/evals/tui/commands/new.ts73 // TODO: implement eval logicCOMMENT
LOWpackages/evals/tests/tui/new.test.ts58 expect(task?.content).toContain("// TODO: implement eval logic");CODE
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippetContext
LOWpackages/evals/framework/claudeCodeToolAdapter.ts661 insertAfterFrontmatter(cliSkill, EVAL_HARNESS_ADDENDUM),COMMENT
LOWpackages/evals/framework/claudeCodeToolAdapter.ts681// reassemble from the ORIGINAL raw string so the frontmatter block thatCOMMENT
LOWpackages/docs/language-selector.js1// Language switcher for Stagehand docsCOMMENT
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpackages/sdk-python/tests/test_rpc_client.py330 async def handle_request(params: models.EmptyParams) -> RPCResult:CODE
LOWpackages/sdk-ts/tests/integration/_support.ts116async function handleRequest(CODE