superbrowser-sdk 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/CHANGELOG.md +31 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/PKG-INFO +31 -10
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/README.md +18 -8
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/api-stability.md +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/cloak-integration.md +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/error-catalog.md +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/migration/v1.8-to-v1.9.md +5 -5
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/platform-abstraction.md +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/quickstart.md +2 -2
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/pyproject.toml +3 -3
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/__init__.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/anthropic_client.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/openai_client.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/cloak_backend.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/cloud.py +3 -3
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/engine.py +3 -3
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/session.py +1 -1
- superbrowser_sdk-2.0.0/src/super_browser/cli.py → superbrowser_sdk-2.0.2/src/super_browser/cli/__init__.py +203 -43
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/credential_vault.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v1100_features.py +1 -1
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v195_features.py +2 -2
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_cli/test_stealth_validate.py +4 -4
- superbrowser_sdk-2.0.2/tests/test_cli/test_unified_cli.py +120 -0
- superbrowser_sdk-2.0.0/src/super_browser/cli/__init__.py +0 -214
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.env.example +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.github/workflows/dco.yml +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.github/workflows/publish.yml +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.github/workflows/test.yml +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.gitignore +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/.pre-commit-config.yaml +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/CONTRIBUTING.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/Dockerfile +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/LICENSE +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/Super-Browser.png +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/00-SOURCE-INVENTORY.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/01-TRIAGE-QUEUE.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/AGENT-BROWSER-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/AGENT-S-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/BROWSER-HARNESS-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/BROWSER-USE-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/CROSS-PROJECT-SYNTHESIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/FIRECRAWL-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/GAP-INVENTORY.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/HERMES-AGENT-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/HERMES-SELF-EVOLUTION-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/HTTPMORPH-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/IMPLEMENTATION-ROADMAP.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/LAVAGUE-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/OPENCLAW-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/PATCHRIGHT-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/PROJECT-CONFIG.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/SESSION-STATE.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/SKYVERN-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/STAGEHAND-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/UI-TARS-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/UI-TARS-DESKTOP-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/CHROMECLAW-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/CLAW-VARIANTS-ASSESSMENT.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/E2B-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/EVOSKILL-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/GO-INFRA-ASSESSMENT.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/GUARDRAILS-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/KHOJ-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/LETTA-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/MCP-AGENT-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/MCP-ZERO-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/MEM0-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/OPENFGA-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/SKYLL-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/TEMPORAL-ANALYSIS.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/analysis/output/TOOL-BENCHMARK-ASSESSMENT.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/fixtures/behavioral.html +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/fixtures/dom-heavy.html +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/fixtures/form.html +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/fixtures/simple.html +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/v1.11.0-baseline-patchright.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/benchmarks/v1.11.0-baseline-patchright.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docker-compose.yml +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/agent-reliability.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/aiv/AIV_FRAMEWORK_v5.3.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/anti-detection-ejecta.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/api-reference.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/architecture.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/behavioral-synthesis.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/browser-networking.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/consistency-engine.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/discovery/DISCOVERY-REPORT.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/fingerprint-scoring.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/fingerprint-validation.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/gap-analysis.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/human-behavior.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/memory.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/migration/v1-to-v2.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/operating-doctrine.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/plugins.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/recording.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/README.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-decomposition.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-track-a-api-simplification.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-track-b-network-stealth.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-track-c-behavioral-realism.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-track-d-challenge-infrastructure.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/rfcs/v2-track-e-e2e-harness.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/docs/stealth-coverage.md +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/backend_selection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/basic_usage.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/budget_tracking.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/cloak_stealth.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/error_handling.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/fingerprint_scan.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/human_behavior.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/multi_tab_workflow.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/session_persistence.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/examples/stealth_mode.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/labels/config.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/scripts/agent_efficiency_benchmark.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/scripts/browser_benchmark.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/scripts/run_stealth_gauntlet.sh +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/debug.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/delegator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/facade.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/browser_transport.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/budget_aware.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/factory.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/protocol.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/loop.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/loop_detector.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/plugins.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/registry.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/router.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/structured_logging.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/bezier.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/dwell.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/fitts.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/gauss.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/keyboard.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/mouse.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/navigation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/orchestrator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/prng.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/qwerty.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/scroll.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/session_seed.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/behavioral/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/backends/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/backends/cdp_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/backends/patchright_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/backends/playwright_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/backends/selenium_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/cdp.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/discovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/fetch.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/injectors/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/injectors/bidi_injector.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/injectors/cdp_injector.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/injectors/page_injector.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/page.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/shutdown.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/tabs.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/cascade.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/client.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/compressor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/cost_estimator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/credential_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/governor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/budget/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/cli/commands.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/cli/interactive.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/cli/script.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/events/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/events/bus.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/events/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/controller.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/decorator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/presets.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/recovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/snapshot.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/interaction/vision.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/memory/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/memory/integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/memory/store.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/memory/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/plugins/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/plugins/decorators.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/plugins/hooks.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/py.typed +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/persistence.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/recorder.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/replayer.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/report.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recording/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/checkpoint.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/classifier.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/coordinator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/event_bus.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/format_validator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/reflection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/retry_tracker.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/session_recovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/recovery/watchdogs.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/results/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/results/output.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/results/typed.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/results/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/results/validation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/action_redaction.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/approval.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/domain_filter.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/gate.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/injection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/manager.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/policy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/redactor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/security/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/session/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/session/proxy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/skills/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/skills/activation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/skills/markdown.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/skills/registry.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/skills/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/action_policy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/captcha.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/challenges/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/challenges/cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/challenges/pow.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/challenges/turnstile.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/dag.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/derive.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/errors.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/inject.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/inject_delivery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/matrix.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/prng.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rule.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/audio.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/behavior.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/fonts.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/gpu.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/locale.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/navigator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/screen.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/consistency/rules/user_agent.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/diagnostics.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/audio.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/browser_apis.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/canvas.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/registry.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/timing.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ejecta/webrtc.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/fingerprint_scanner.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/fingerprint_score.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/headers.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/human.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/human_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/ip_reputation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/manager.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/data/linux-chrome-stable.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/data/macos-chrome-stable.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/data/macos-m4-chrome-stable.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/data/windows-chrome-stable.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/host_detect.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/profiles/schema.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/proxy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/proxy_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/report.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/scoring.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/tls_baselines.json +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/tls_fingerprint.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/user_agent_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/validation/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/validation/checks.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/validation/harness.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/validation/report.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/stealth/validation/suite.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/testing.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/cost_analytics.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/flow_logger.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/middleware.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/session_db.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/sinks.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/tracing/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/verification/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/verification/ax_diff.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/verification/hasher.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/verification/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/verification/verifier.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/controller.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/coords.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/factory.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/ocr.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/providers.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/vision/types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_01_example_nav.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_02_google_search.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_03_github_login.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_04_amazon_search.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_05_google_forms.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_06_google_flights.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_07_wikipedia_extract.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_08_reddit_spa.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_09_form_complex.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/discovery/test_task_10_signup_flow.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_behavioral_realism.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_challenge_detection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_interaction.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_live_navigation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_multi_tab.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_navigation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_session_persistence.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e/test_stealth_overhead.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/e2e_v1_3_journey.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_config_composition.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_engine_backends.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_error_paths.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_facade_smoke.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_full_lifecycle.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_multi_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_performance_smoke.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_playwright_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_public_api.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_session_persistence.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_stealth_abstraction.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v150_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v160_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v170_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v180_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v190_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v191_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v192_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v193_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v194_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v1_3_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/integration/test_v1_4_features.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/pattern_validation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/conftest.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_chrome_runtime.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_cli_switches.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_headless_indicators.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_live_sites.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_runtime_enable.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_tls_fingerprint.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/stealth_detection/test_webdriver.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_action_timeout.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_browser_transport.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_controller_rebinding.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_debug_mode.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_default_tooling.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_delegator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_error_screenshots.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade_security.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade_security_control.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade_security_file_tab.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade_security_network.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_facade_security_session.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_fail_fast.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_llm.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_llm_budget.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_llm_production.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_llm_streaming.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_loop.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_loop_detector.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_prompt_isolation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_registry.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_retry_budget.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_streaming.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_structured_logging.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_tab_cap.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_task_02.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_agent/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_behavioral.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_dwell.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_human_config_dwell.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_navigation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_orchestrator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_behavioral/test_session_seed.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_benchmark/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_benchmark/test_efficiency.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_cdp.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_cdp_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_cloak_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_cloak_docs.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_cloak_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_discovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_engine_protocol.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_fetch.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_injectors.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_page.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_patchright_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_playwright_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_selenium_backend.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_session.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_browser/test_shutdown.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_cascade.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_cascade_governor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_circuit_breaker.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_client.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_compressor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_cost_estimator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_credential_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_governor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_budget/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_cli/test_interactive.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_cli/test_script.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_cli/test_stealth_check.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_audio.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_batch37_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_batch38_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_browser_apis.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_canvas.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_timing.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_ejecta/test_webrtc.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_events/test_event_bus.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_events/test_lifecycle_hooks.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_governance_docs.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_controller.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_decorator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_injection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_page_change.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_presets.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_recovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_snapshot.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_interaction/test_vision.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_memory/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_memory/test_cli_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_memory/test_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_memory/test_store.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recording/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recording/test_persistence.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recording/test_recorder.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recording/test_replayer.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_checkpoint.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_classifier.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_coordinator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_event_bus.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_format_validator.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_reflection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_retry_tracker.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_session_recovery.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_recovery/test_watchdogs.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_batch40_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_categories.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_output.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_typed.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_results/test_validation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_approval.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_credential_vault.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_domain_filter.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_injection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_manager.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_policy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_redaction_pipeline.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_redactor.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_security/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_session/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_session/test_proxy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/test_activation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/test_integration.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/test_markdown.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/test_registry.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_skills/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_action_policy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_captcha.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_captcha_resolution.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_challenge_cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_challenge_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_consistency/test_consistency.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_consistency_inject.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_diagnostics.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_e2e_lifecycle.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_e2e_reporting.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_fingerprint_scanner.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_fingerprint_score.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_headers.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_human.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_human_behavior_v2.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_ip_reputation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_kasada_detection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_manager.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_network_stealth_config.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_profiles.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_proxy.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_proxy_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_stealth_bridge.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_tls_fingerprint.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_turnstile_detection.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_user_agent_pool.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_stealth/test_validation.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_cost_analytics.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_flow_logger.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_middleware.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_session_db.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_sinks.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_tracing/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_verification/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_verification/test_ax_diff.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_verification/test_hasher.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_verification/test_types.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_verification/test_verifier.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/__init__.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_cache.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_controller.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_coords.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_factory.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_ocr.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_providers.py +0 -0
- {superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/tests/test_vision/test_types.py +0 -0
|
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.2] — 2026-06-15
|
|
11
|
+
|
|
12
|
+
### Fixed — CLI entry point (#148)
|
|
13
|
+
|
|
14
|
+
- Fixed CLI module shadowing where both `src/super_browser/cli.py` and
|
|
15
|
+
`src/super_browser/cli/` existed, causing `super_browser.cli` to resolve
|
|
16
|
+
to the package and making several console commands inaccessible.
|
|
17
|
+
- Consolidated all CLI commands into `src/super_browser/cli/__init__.py`.
|
|
18
|
+
- Restored `superbrowser version`, `info`, `run`, `interactive`, `script`,
|
|
19
|
+
`replay`, `act`, and `stealth-check`.
|
|
20
|
+
- Preserved compatibility aliases for existing imports:
|
|
21
|
+
`memory_handler`, `stealth_validate_handler`, and `_result_demo_handler`.
|
|
22
|
+
|
|
23
|
+
No runtime API changes outside CLI dispatch.
|
|
24
|
+
|
|
25
|
+
## [2.0.1] — 2026-06-15
|
|
26
|
+
|
|
27
|
+
### Fixed — Hotfix: PyPI distribution naming
|
|
28
|
+
|
|
29
|
+
- **`[all]` extra broken on published v2.0.0**: The self-reference in
|
|
30
|
+
`pyproject.toml` `[all]` extra still pointed to `super-browser` instead of
|
|
31
|
+
`superbrowser-sdk`. Fixed in PR #146 but never republished.
|
|
32
|
+
- **CLI entry point name**: Published v2.0.0 had `super-browser` as the
|
|
33
|
+
console script name instead of `superbrowser`.
|
|
34
|
+
- **Doc version headers**: Updated to v2.0.1.
|
|
35
|
+
|
|
36
|
+
No code changes — packaging fix only. All 2,758 tests unchanged.
|
|
37
|
+
|
|
10
38
|
## [2.0.0] — 2026-06-15
|
|
11
39
|
|
|
12
40
|
### Overview
|
|
@@ -15,6 +43,9 @@ The v2.0 release delivers five tracks of improvement to the Super Browser
|
|
|
15
43
|
anti-detection agent browser SDK. All tracks are implementation-complete with
|
|
16
44
|
2,758 passing tests across 3 operating systems and 2 Python versions.
|
|
17
45
|
|
|
46
|
+
**Distribution name:** `superbrowser-sdk` (`pip install superbrowser-sdk`)
|
|
47
|
+
**Import name:** `super_browser` (`import super_browser`)
|
|
48
|
+
|
|
18
49
|
### Breaking Changes — Track A: API Simplification (Waves 14-16)
|
|
19
50
|
|
|
20
51
|
- **`SuperBrowserConfig` removed.** All fields flattened onto `AgentConfig`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superbrowser-sdk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Anti-detection agent browser SDK — stealth, budget governance, security guardrails, and structured error recovery behind one async facade
|
|
5
5
|
Project-URL: Homepage, https://github.com/Octo-Lex/Super-Browser
|
|
6
6
|
Project-URL: Documentation, https://github.com/Octo-Lex/Super-Browser#readme
|
|
@@ -27,7 +27,18 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
27
27
|
Classifier: Typing :: Typed
|
|
28
28
|
Requires-Python: >=3.11
|
|
29
29
|
Provides-Extra: all
|
|
30
|
-
Requires-Dist:
|
|
30
|
+
Requires-Dist: aiohttp>=3.9; extra == 'all'
|
|
31
|
+
Requires-Dist: anthropic>=0.40; extra == 'all'
|
|
32
|
+
Requires-Dist: cryptography>=42.0; extra == 'all'
|
|
33
|
+
Requires-Dist: httpx>=0.27; extra == 'all'
|
|
34
|
+
Requires-Dist: openai>=1.0; extra == 'all'
|
|
35
|
+
Requires-Dist: patchright>=1.0; extra == 'all'
|
|
36
|
+
Requires-Dist: pillow>=10.0; extra == 'all'
|
|
37
|
+
Requires-Dist: playwright>=1.40; extra == 'all'
|
|
38
|
+
Requires-Dist: psutil>=5.9; extra == 'all'
|
|
39
|
+
Requires-Dist: selenium>=4.0; extra == 'all'
|
|
40
|
+
Requires-Dist: webdriver-manager>=4.0; extra == 'all'
|
|
41
|
+
Requires-Dist: websockets>=12.0; extra == 'all'
|
|
31
42
|
Provides-Extra: anthropic
|
|
32
43
|
Requires-Dist: anthropic>=0.40; extra == 'anthropic'
|
|
33
44
|
Provides-Extra: cdp
|
|
@@ -64,31 +75,41 @@ Description-Content-Type: text/markdown
|
|
|
64
75
|

|
|
65
76
|
|
|
66
77
|
[](https://github.com/Octo-Lex/Super-Browser/actions)
|
|
67
|
-
[](https://pypi.org/project/superbrowser-sdk/)
|
|
68
79
|
[](https://github.com/Octo-Lex/Super-Browser/blob/main/LICENSE)
|
|
69
80
|
|
|
70
81
|
**Super Browser** is an anti-detection agent browser SDK. It wraps browser automation (Patchright, Playwright, Selenium, or raw CDP) in an agent-first API with stealth, budget governance, security guardrails, and structured error recovery. MCP is a transport, the agent SDK is the user-facing layer, and stealth is the foundation.
|
|
71
82
|
|
|
72
83
|
## Installation
|
|
73
84
|
|
|
85
|
+
> **Package naming:** The distribution name is `superbrowser-sdk`. The
|
|
86
|
+
> Python import name is `super_browser`.
|
|
87
|
+
>
|
|
88
|
+
> ```bash
|
|
89
|
+
> pip install superbrowser-sdk
|
|
90
|
+
> ```
|
|
91
|
+
> ```python
|
|
92
|
+
> import super_browser
|
|
93
|
+
> ```
|
|
94
|
+
|
|
74
95
|
```bash
|
|
75
96
|
# Default — Patchright (full stealth)
|
|
76
|
-
pip install
|
|
97
|
+
pip install superbrowser-sdk[patchright]
|
|
77
98
|
python -m patchright install chromium
|
|
78
99
|
|
|
79
100
|
# Alternative backends
|
|
80
|
-
pip install
|
|
81
|
-
pip install
|
|
101
|
+
pip install superbrowser-sdk[playwright] # Standard Playwright
|
|
102
|
+
pip install superbrowser-sdk[selenium] # Enterprise CI
|
|
82
103
|
|
|
83
104
|
# Or everything
|
|
84
|
-
pip install
|
|
105
|
+
pip install superbrowser-sdk[all]
|
|
85
106
|
```
|
|
86
107
|
|
|
87
108
|
For specific LLM providers:
|
|
88
109
|
|
|
89
110
|
```bash
|
|
90
|
-
pip install
|
|
91
|
-
pip install
|
|
111
|
+
pip install superbrowser-sdk[patchright,anthropic] # Anthropic Claude
|
|
112
|
+
pip install superbrowser-sdk[patchright,openai] # OpenAI GPT
|
|
92
113
|
```
|
|
93
114
|
|
|
94
115
|
## Quickstart
|
|
@@ -518,7 +539,7 @@ See [docs/memory.md](docs/memory.md).
|
|
|
518
539
|
Super Browser supports **CloakBrowser** as an optional stealth backend — a hardened Chromium with 57 C++ anti-detection patches:
|
|
519
540
|
|
|
520
541
|
```bash
|
|
521
|
-
pip install
|
|
542
|
+
pip install superbrowser-sdk[patchright,cloak]
|
|
522
543
|
```
|
|
523
544
|
|
|
524
545
|
When installed, CloakBrowser is automatically detected and used. No code changes required:
|
|
@@ -1,31 +1,41 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
3
|
[](https://github.com/Octo-Lex/Super-Browser/actions)
|
|
4
|
-
[](https://pypi.org/project/superbrowser-sdk/)
|
|
5
5
|
[](https://github.com/Octo-Lex/Super-Browser/blob/main/LICENSE)
|
|
6
6
|
|
|
7
7
|
**Super Browser** is an anti-detection agent browser SDK. It wraps browser automation (Patchright, Playwright, Selenium, or raw CDP) in an agent-first API with stealth, budget governance, security guardrails, and structured error recovery. MCP is a transport, the agent SDK is the user-facing layer, and stealth is the foundation.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
|
+
> **Package naming:** The distribution name is `superbrowser-sdk`. The
|
|
12
|
+
> Python import name is `super_browser`.
|
|
13
|
+
>
|
|
14
|
+
> ```bash
|
|
15
|
+
> pip install superbrowser-sdk
|
|
16
|
+
> ```
|
|
17
|
+
> ```python
|
|
18
|
+
> import super_browser
|
|
19
|
+
> ```
|
|
20
|
+
|
|
11
21
|
```bash
|
|
12
22
|
# Default — Patchright (full stealth)
|
|
13
|
-
pip install
|
|
23
|
+
pip install superbrowser-sdk[patchright]
|
|
14
24
|
python -m patchright install chromium
|
|
15
25
|
|
|
16
26
|
# Alternative backends
|
|
17
|
-
pip install
|
|
18
|
-
pip install
|
|
27
|
+
pip install superbrowser-sdk[playwright] # Standard Playwright
|
|
28
|
+
pip install superbrowser-sdk[selenium] # Enterprise CI
|
|
19
29
|
|
|
20
30
|
# Or everything
|
|
21
|
-
pip install
|
|
31
|
+
pip install superbrowser-sdk[all]
|
|
22
32
|
```
|
|
23
33
|
|
|
24
34
|
For specific LLM providers:
|
|
25
35
|
|
|
26
36
|
```bash
|
|
27
|
-
pip install
|
|
28
|
-
pip install
|
|
37
|
+
pip install superbrowser-sdk[patchright,anthropic] # Anthropic Claude
|
|
38
|
+
pip install superbrowser-sdk[patchright,openai] # OpenAI GPT
|
|
29
39
|
```
|
|
30
40
|
|
|
31
41
|
## Quickstart
|
|
@@ -455,7 +465,7 @@ See [docs/memory.md](docs/memory.md).
|
|
|
455
465
|
Super Browser supports **CloakBrowser** as an optional stealth backend — a hardened Chromium with 57 C++ anti-detection patches:
|
|
456
466
|
|
|
457
467
|
```bash
|
|
458
|
-
pip install
|
|
468
|
+
pip install superbrowser-sdk[patchright,cloak]
|
|
459
469
|
```
|
|
460
470
|
|
|
461
471
|
When installed, CloakBrowser is automatically detected and used. No code changes required:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# API Stability Contract
|
|
2
2
|
|
|
3
|
-
> **Super Browser** v2.0.
|
|
3
|
+
> **Super Browser** v2.0.2 — Public API stability guarantees.
|
|
4
4
|
|
|
5
5
|
This document defines which APIs are stable, which are protocols (stable interface, evolving implementations), and which are internal.
|
|
6
6
|
|
|
@@ -6,7 +6,7 @@ Super Browser supports **CloakBrowser** as an optional stealth backend. When ins
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Install Super Browser with CloakBrowser support
|
|
9
|
-
pip install
|
|
9
|
+
pip install superbrowser-sdk[browser,cloak]
|
|
10
10
|
|
|
11
11
|
# Or add to an existing installation
|
|
12
12
|
pip install cloakbrowser>=0.3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Error Catalog
|
|
2
2
|
|
|
3
|
-
> **Super Browser** v2.0.
|
|
3
|
+
> **Super Browser** v2.0.2 — Complete failure taxonomy, causes, and recovery guidance.
|
|
4
4
|
|
|
5
5
|
Every `ActionResult` carries structured error information. This catalog maps each error category to its typical causes and recommended recovery strategy.
|
|
6
6
|
|
|
@@ -103,15 +103,15 @@ You don't need to select injectors manually unless you're building a custom back
|
|
|
103
103
|
|
|
104
104
|
## New pip Install Targets
|
|
105
105
|
|
|
106
|
-
**v1.8:** `pip install
|
|
106
|
+
**v1.8:** `pip install superbrowser-sdk[browser]` (now removed — use `[patchright]`)
|
|
107
107
|
|
|
108
108
|
**v1.9:** Backend-specific install targets:
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
|
-
pip install
|
|
112
|
-
pip install
|
|
113
|
-
pip install
|
|
114
|
-
pip install
|
|
111
|
+
pip install superbrowser-sdk[patchright] # Default, full stealth
|
|
112
|
+
pip install superbrowser-sdk[playwright] # Standard Playwright
|
|
113
|
+
pip install superbrowser-sdk[selenium] # Enterprise CI
|
|
114
|
+
pip install superbrowser-sdk[all] # Everything
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
## Structured Error Categories
|
|
@@ -178,4 +178,4 @@ The Selenium backend does not support network interception:
|
|
|
178
178
|
| `route()` | Raises `NotImplementedError` — Selenium has no equivalent to Playwright's route interception |
|
|
179
179
|
| `unroute()` | Raises `NotImplementedError` — see above |
|
|
180
180
|
|
|
181
|
-
For full feature coverage, use the Patchright backend (`pip install
|
|
181
|
+
For full feature coverage, use the Patchright backend (`pip install superbrowser-sdk[patchright]`).
|
|
@@ -20,7 +20,7 @@ This tutorial walks you through:
|
|
|
20
20
|
## 1. Install
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
pip install
|
|
23
|
+
pip install superbrowser-sdk[patchright]
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Verify the installation:
|
|
@@ -397,6 +397,6 @@ The `create_llm()` factory couldn't find a provider. Set `SB_LLM_PROVIDER` or pa
|
|
|
397
397
|
Ensure you have a Chromium-based browser installed:
|
|
398
398
|
|
|
399
399
|
```bash
|
|
400
|
-
pip install
|
|
400
|
+
pip install superbrowser-sdk[patchright]
|
|
401
401
|
python -m patchright install chromium
|
|
402
402
|
```
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "superbrowser-sdk"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.2"
|
|
8
8
|
description = "Anti-detection agent browser SDK — stealth, budget governance, security guardrails, and structured error recovery behind one async facade"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
@@ -42,7 +42,7 @@ classifiers = [
|
|
|
42
42
|
]
|
|
43
43
|
|
|
44
44
|
[project.scripts]
|
|
45
|
-
|
|
45
|
+
superbrowser = "super_browser.cli:main"
|
|
46
46
|
|
|
47
47
|
[project.urls]
|
|
48
48
|
Homepage = "https://github.com/Octo-Lex/Super-Browser"
|
|
@@ -69,7 +69,7 @@ cdp = [
|
|
|
69
69
|
"aiohttp>=3.9",
|
|
70
70
|
]
|
|
71
71
|
all = [
|
|
72
|
-
"
|
|
72
|
+
"superbrowser-sdk[patchright,playwright,selenium,cdp,security,anthropic,openai,cloud]",
|
|
73
73
|
]
|
|
74
74
|
dev = [
|
|
75
75
|
"pytest>=9.0",
|
|
@@ -6,7 +6,7 @@ from super_browser.agent.types import StreamEvent as StreamEvent # noqa: F401
|
|
|
6
6
|
from super_browser.config import Config as Config # noqa: F401
|
|
7
7
|
from super_browser.results.types import ActionResult as ActionResult # noqa: F401
|
|
8
8
|
|
|
9
|
-
__version__ = "2.0.
|
|
9
|
+
__version__ = "2.0.2"
|
|
10
10
|
|
|
11
11
|
__all__ = [
|
|
12
12
|
"SuperBrowser",
|
{superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/anthropic_client.py
RENAMED
|
@@ -49,7 +49,7 @@ class AnthropicLLMClient:
|
|
|
49
49
|
except ImportError as exc:
|
|
50
50
|
raise ImportError(
|
|
51
51
|
"The 'anthropic' package is required for AnthropicLLMClient. "
|
|
52
|
-
"Install it with: pip install
|
|
52
|
+
"Install it with: pip install superbrowser-sdk[anthropic]"
|
|
53
53
|
) from exc
|
|
54
54
|
|
|
55
55
|
self._client = anthropic.AsyncAnthropic(api_key=api_key)
|
{superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/agent/llm/openai_client.py
RENAMED
|
@@ -49,7 +49,7 @@ class OpenAILLMClient:
|
|
|
49
49
|
except ImportError as exc:
|
|
50
50
|
raise ImportError(
|
|
51
51
|
"The 'openai' package is required for OpenAILLMClient. "
|
|
52
|
-
"Install it with: pip install
|
|
52
|
+
"Install it with: pip install superbrowser-sdk[openai]"
|
|
53
53
|
) from exc
|
|
54
54
|
|
|
55
55
|
self._client = openai.AsyncOpenAI(api_key=api_key)
|
{superbrowser_sdk-2.0.0 → superbrowser_sdk-2.0.2}/src/super_browser/browser/cloak_backend.py
RENAMED
|
@@ -122,7 +122,7 @@ class CloakBrowserAdapter:
|
|
|
122
122
|
except ImportError as exc:
|
|
123
123
|
raise ImportError(
|
|
124
124
|
"cloakbrowser is required for CLOAK_LAUNCH mode. "
|
|
125
|
-
"Install with: pip install
|
|
125
|
+
"Install with: pip install superbrowser-sdk[cloak]"
|
|
126
126
|
) from exc
|
|
127
127
|
|
|
128
128
|
kwargs: dict[str, Any] = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Provides a unified interface for connecting to remote cloud browser
|
|
4
4
|
sessions instead of running Chromium locally.
|
|
5
5
|
|
|
6
|
-
Requires: pip install
|
|
6
|
+
Requires: pip install superbrowser-sdk[cloud]
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
@@ -82,7 +82,7 @@ class BrowserbaseConnector(CloudBrowserConnector):
|
|
|
82
82
|
except ImportError:
|
|
83
83
|
raise ImportError(
|
|
84
84
|
"httpx is required for cloud browser support. "
|
|
85
|
-
"Install with: pip install
|
|
85
|
+
"Install with: pip install superbrowser-sdk[cloud]"
|
|
86
86
|
)
|
|
87
87
|
|
|
88
88
|
if not self._api_key or not self._project_id:
|
|
@@ -182,7 +182,7 @@ class SteelConnector(CloudBrowserConnector):
|
|
|
182
182
|
except ImportError:
|
|
183
183
|
raise ImportError(
|
|
184
184
|
"httpx is required for cloud browser support. "
|
|
185
|
-
"Install with: pip install
|
|
185
|
+
"Install with: pip install superbrowser-sdk[cloud]"
|
|
186
186
|
)
|
|
187
187
|
|
|
188
188
|
if not self._api_key:
|
|
@@ -320,7 +320,7 @@ def _detect_backend(config: Any = None) -> str:
|
|
|
320
320
|
# 5. Nothing found
|
|
321
321
|
raise RuntimeError(
|
|
322
322
|
"No browser backend found. Install one of:\n"
|
|
323
|
-
" pip install
|
|
324
|
-
" pip install
|
|
325
|
-
" pip install
|
|
323
|
+
" pip install superbrowser-sdk[patchright]\n"
|
|
324
|
+
" pip install superbrowser-sdk[playwright]\n"
|
|
325
|
+
" pip install superbrowser-sdk[selenium]"
|
|
326
326
|
)
|
|
@@ -65,7 +65,7 @@ class BrowserSession:
|
|
|
65
65
|
if async_playwright is None:
|
|
66
66
|
raise ImportError(
|
|
67
67
|
"patchright is required for browser sessions. "
|
|
68
|
-
"Install with: pip install
|
|
68
|
+
"Install with: pip install superbrowser-sdk[browser]"
|
|
69
69
|
)
|
|
70
70
|
|
|
71
71
|
# -- CloakBrowser path ----------------------------------------
|