superbrowser-sdk 2.1.1__tar.gz → 2.2.1__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.
Files changed (585) hide show
  1. superbrowser_sdk-2.2.1/.github/workflows/stress.yml +64 -0
  2. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.gitignore +1 -0
  3. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/CHANGELOG.md +73 -0
  4. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/PKG-INFO +1 -1
  5. superbrowser_sdk-2.2.1/docs/api-ergonomics-audit.md +195 -0
  6. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/api-reference.md +4 -4
  7. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/architecture.md +1 -1
  8. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/quickstart.md +6 -6
  9. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/backend_selection.py +1 -1
  10. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/basic_usage.py +1 -1
  11. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/budget_tracking.py +1 -1
  12. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/error_handling.py +1 -1
  13. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/multi_tab_workflow.py +1 -1
  14. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/session_persistence.py +1 -1
  15. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/pyproject.toml +1 -1
  16. superbrowser_sdk-2.2.1/scripts/stress_real_world.py +1149 -0
  17. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/__init__.py +1 -1
  18. superbrowser_sdk-2.2.1/src/super_browser/__main__.py +12 -0
  19. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/facade.py +7 -0
  20. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/loop.py +1 -1
  21. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/page.py +2 -2
  22. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/cli/__init__.py +7 -7
  23. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/controller.py +88 -7
  24. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ip_reputation.py +2 -2
  25. superbrowser_sdk-2.2.1/stress/__init__.py +7 -0
  26. superbrowser_sdk-2.2.1/stress/server.py +363 -0
  27. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v194_features.py +2 -2
  28. superbrowser_sdk-2.2.1/tests/test_benchmarks/test_stress_real_world.py +720 -0
  29. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_cli/test_unified_cli.py +7 -0
  30. superbrowser_sdk-2.2.1/tests/test_runtime_correctness/test_runtime_fixes.py +407 -0
  31. superbrowser_sdk-2.2.1/tests/test_vision/__init__.py +0 -0
  32. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.env.example +0 -0
  33. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/benchmark.yml +0 -0
  34. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/dco.yml +0 -0
  35. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/e2e.yml +0 -0
  36. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/publish.yml +0 -0
  37. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/smoke.yml +0 -0
  38. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.github/workflows/test.yml +0 -0
  39. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/.pre-commit-config.yaml +0 -0
  40. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/CONTRIBUTING.md +0 -0
  41. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/Dockerfile +0 -0
  42. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/LICENSE +0 -0
  43. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/README.md +0 -0
  44. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/Super-Browser.png +0 -0
  45. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/00-SOURCE-INVENTORY.md +0 -0
  46. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/01-TRIAGE-QUEUE.md +0 -0
  47. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/AGENT-BROWSER-ANALYSIS.md +0 -0
  48. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/AGENT-S-ANALYSIS.md +0 -0
  49. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/BROWSER-HARNESS-ANALYSIS.md +0 -0
  50. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/BROWSER-USE-ANALYSIS.md +0 -0
  51. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/CROSS-PROJECT-SYNTHESIS.md +0 -0
  52. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/FIRECRAWL-ANALYSIS.md +0 -0
  53. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/GAP-INVENTORY.md +0 -0
  54. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/HERMES-AGENT-ANALYSIS.md +0 -0
  55. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/HERMES-SELF-EVOLUTION-ANALYSIS.md +0 -0
  56. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/HTTPMORPH-ANALYSIS.md +0 -0
  57. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/IMPLEMENTATION-ROADMAP.md +0 -0
  58. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/LAVAGUE-ANALYSIS.md +0 -0
  59. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/OPENCLAW-ANALYSIS.md +0 -0
  60. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/PATCHRIGHT-ANALYSIS.md +0 -0
  61. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/PROJECT-CONFIG.md +0 -0
  62. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/SESSION-STATE.md +0 -0
  63. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/SKYVERN-ANALYSIS.md +0 -0
  64. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/STAGEHAND-ANALYSIS.md +0 -0
  65. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/UI-TARS-ANALYSIS.md +0 -0
  66. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/UI-TARS-DESKTOP-ANALYSIS.md +0 -0
  67. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/CHROMECLAW-ANALYSIS.md +0 -0
  68. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/CLAW-VARIANTS-ASSESSMENT.md +0 -0
  69. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/E2B-ANALYSIS.md +0 -0
  70. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/EVOSKILL-ANALYSIS.md +0 -0
  71. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/GO-INFRA-ASSESSMENT.md +0 -0
  72. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/GUARDRAILS-ANALYSIS.md +0 -0
  73. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/KHOJ-ANALYSIS.md +0 -0
  74. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/LETTA-ANALYSIS.md +0 -0
  75. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/MCP-AGENT-ANALYSIS.md +0 -0
  76. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/MCP-ZERO-ANALYSIS.md +0 -0
  77. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/MEM0-ANALYSIS.md +0 -0
  78. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/OPENFGA-ANALYSIS.md +0 -0
  79. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/SKYLL-ANALYSIS.md +0 -0
  80. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/TEMPORAL-ANALYSIS.md +0 -0
  81. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/analysis/output/TOOL-BENCHMARK-ASSESSMENT.md +0 -0
  82. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/fixtures/behavioral.html +0 -0
  83. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/fixtures/dom-heavy.html +0 -0
  84. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/fixtures/form.html +0 -0
  85. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/fixtures/simple.html +0 -0
  86. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/v1.11.0-baseline-patchright.json +0 -0
  87. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/benchmarks/v1.11.0-baseline-patchright.md +0 -0
  88. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/conftest.py +0 -0
  89. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docker-compose.yml +0 -0
  90. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/agent-reliability.md +0 -0
  91. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/aiv/AIV_FRAMEWORK_v5.3.md +0 -0
  92. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/anti-detection-ejecta.md +0 -0
  93. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/api-stability.md +0 -0
  94. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/behavioral-synthesis.md +0 -0
  95. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/browser-networking.md +0 -0
  96. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/cloak-integration.md +0 -0
  97. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/consistency-engine.md +0 -0
  98. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/discovery/DISCOVERY-REPORT.md +0 -0
  99. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/error-catalog.md +0 -0
  100. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/fingerprint-scoring.md +0 -0
  101. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/fingerprint-validation.md +0 -0
  102. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/gap-analysis.md +0 -0
  103. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/human-behavior.md +0 -0
  104. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/memory.md +0 -0
  105. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/migration/v1-to-v2.md +0 -0
  106. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/migration/v1.8-to-v1.9.md +0 -0
  107. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/operating-doctrine.md +0 -0
  108. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/platform-abstraction.md +0 -0
  109. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/plugins.md +0 -0
  110. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/recording.md +0 -0
  111. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/README.md +0 -0
  112. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-decomposition.md +0 -0
  113. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-track-a-api-simplification.md +0 -0
  114. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-track-b-network-stealth.md +0 -0
  115. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-track-c-behavioral-realism.md +0 -0
  116. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-track-d-challenge-infrastructure.md +0 -0
  117. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/rfcs/v2-track-e-e2e-harness.md +0 -0
  118. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/docs/stealth-coverage.md +0 -0
  119. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/cloak_stealth.py +0 -0
  120. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/fingerprint_scan.py +0 -0
  121. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/human_behavior.py +0 -0
  122. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/examples/stealth_mode.py +0 -0
  123. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/labels/config.json +0 -0
  124. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/agent_efficiency_benchmark.py +0 -0
  125. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/browser_benchmark.py +0 -0
  126. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/e2e_trend.py +0 -0
  127. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/run_stealth_gauntlet.sh +0 -0
  128. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/smoke_published.py +0 -0
  129. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/validate_e2e_report.py +0 -0
  130. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/scripts/verify_release_artifact.py +0 -0
  131. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/__init__.py +0 -0
  132. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/config.py +0 -0
  133. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/debug.py +0 -0
  134. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/delegator.py +0 -0
  135. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/__init__.py +0 -0
  136. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/anthropic_client.py +0 -0
  137. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/browser_transport.py +0 -0
  138. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/budget_aware.py +0 -0
  139. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/factory.py +0 -0
  140. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/openai_client.py +0 -0
  141. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/llm/protocol.py +0 -0
  142. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/loop_detector.py +0 -0
  143. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/plugins.py +0 -0
  144. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/registry.py +0 -0
  145. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/router.py +0 -0
  146. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/structured_logging.py +0 -0
  147. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/agent/types.py +0 -0
  148. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/__init__.py +0 -0
  149. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/bezier.py +0 -0
  150. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/dwell.py +0 -0
  151. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/fitts.py +0 -0
  152. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/gauss.py +0 -0
  153. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/keyboard.py +0 -0
  154. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/mouse.py +0 -0
  155. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/navigation.py +0 -0
  156. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/orchestrator.py +0 -0
  157. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/prng.py +0 -0
  158. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/qwerty.py +0 -0
  159. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/scroll.py +0 -0
  160. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/session_seed.py +0 -0
  161. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/behavioral/types.py +0 -0
  162. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/__init__.py +0 -0
  163. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/backends/__init__.py +0 -0
  164. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/backends/cdp_backend.py +0 -0
  165. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/backends/patchright_backend.py +0 -0
  166. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/backends/playwright_backend.py +0 -0
  167. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/backends/selenium_backend.py +0 -0
  168. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/cdp.py +0 -0
  169. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/cloak_backend.py +0 -0
  170. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/cloud.py +0 -0
  171. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/config.py +0 -0
  172. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/discovery.py +0 -0
  173. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/engine.py +0 -0
  174. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/fetch.py +0 -0
  175. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/injectors/__init__.py +0 -0
  176. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/injectors/bidi_injector.py +0 -0
  177. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/injectors/cdp_injector.py +0 -0
  178. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/injectors/page_injector.py +0 -0
  179. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/session.py +0 -0
  180. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/shutdown.py +0 -0
  181. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/browser/tabs.py +0 -0
  182. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/__init__.py +0 -0
  183. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/cascade.py +0 -0
  184. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/client.py +0 -0
  185. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/compressor.py +0 -0
  186. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/cost_estimator.py +0 -0
  187. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/credential_pool.py +0 -0
  188. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/governor.py +0 -0
  189. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/budget/types.py +0 -0
  190. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/cli/commands.py +0 -0
  191. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/cli/interactive.py +0 -0
  192. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/cli/script.py +0 -0
  193. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/config.py +0 -0
  194. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/events/__init__.py +0 -0
  195. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/events/bus.py +0 -0
  196. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/events/types.py +0 -0
  197. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/__init__.py +0 -0
  198. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/cache.py +0 -0
  199. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/decorator.py +0 -0
  200. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/presets.py +0 -0
  201. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/recovery.py +0 -0
  202. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/snapshot.py +0 -0
  203. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/types.py +0 -0
  204. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/interaction/vision.py +0 -0
  205. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/memory/__init__.py +0 -0
  206. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/memory/integration.py +0 -0
  207. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/memory/store.py +0 -0
  208. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/memory/types.py +0 -0
  209. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/plugins/__init__.py +0 -0
  210. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/plugins/decorators.py +0 -0
  211. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/plugins/hooks.py +0 -0
  212. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/py.typed +0 -0
  213. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/__init__.py +0 -0
  214. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/persistence.py +0 -0
  215. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/recorder.py +0 -0
  216. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/replayer.py +0 -0
  217. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/report.py +0 -0
  218. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recording/types.py +0 -0
  219. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/__init__.py +0 -0
  220. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/checkpoint.py +0 -0
  221. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/classifier.py +0 -0
  222. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/coordinator.py +0 -0
  223. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/event_bus.py +0 -0
  224. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/format_validator.py +0 -0
  225. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/reflection.py +0 -0
  226. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/retry_tracker.py +0 -0
  227. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/session_recovery.py +0 -0
  228. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/types.py +0 -0
  229. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/recovery/watchdogs.py +0 -0
  230. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/results/__init__.py +0 -0
  231. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/results/output.py +0 -0
  232. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/results/typed.py +0 -0
  233. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/results/types.py +0 -0
  234. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/results/validation.py +0 -0
  235. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/__init__.py +0 -0
  236. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/action_redaction.py +0 -0
  237. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/approval.py +0 -0
  238. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/credential_vault.py +0 -0
  239. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/domain_filter.py +0 -0
  240. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/gate.py +0 -0
  241. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/injection.py +0 -0
  242. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/manager.py +0 -0
  243. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/policy.py +0 -0
  244. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/redactor.py +0 -0
  245. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/security/types.py +0 -0
  246. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/session/__init__.py +0 -0
  247. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/session/proxy.py +0 -0
  248. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/skills/__init__.py +0 -0
  249. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/skills/activation.py +0 -0
  250. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/skills/markdown.py +0 -0
  251. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/skills/registry.py +0 -0
  252. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/skills/types.py +0 -0
  253. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/__init__.py +0 -0
  254. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/action_policy.py +0 -0
  255. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/captcha.py +0 -0
  256. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/challenges/__init__.py +0 -0
  257. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/challenges/cache.py +0 -0
  258. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/challenges/pow.py +0 -0
  259. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/challenges/turnstile.py +0 -0
  260. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/__init__.py +0 -0
  261. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/dag.py +0 -0
  262. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/derive.py +0 -0
  263. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/errors.py +0 -0
  264. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/inject.py +0 -0
  265. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/inject_delivery.py +0 -0
  266. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/matrix.py +0 -0
  267. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/prng.py +0 -0
  268. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rule.py +0 -0
  269. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/__init__.py +0 -0
  270. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/audio.py +0 -0
  271. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/behavior.py +0 -0
  272. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/fonts.py +0 -0
  273. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/gpu.py +0 -0
  274. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/locale.py +0 -0
  275. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/navigator.py +0 -0
  276. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/screen.py +0 -0
  277. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/consistency/rules/user_agent.py +0 -0
  278. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/diagnostics.py +0 -0
  279. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/__init__.py +0 -0
  280. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/audio.py +0 -0
  281. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/browser_apis.py +0 -0
  282. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/canvas.py +0 -0
  283. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/config.py +0 -0
  284. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/registry.py +0 -0
  285. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/timing.py +0 -0
  286. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/types.py +0 -0
  287. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/ejecta/webrtc.py +0 -0
  288. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/fingerprint_scanner.py +0 -0
  289. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/fingerprint_score.py +0 -0
  290. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/headers.py +0 -0
  291. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/human.py +0 -0
  292. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/human_config.py +0 -0
  293. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/manager.py +0 -0
  294. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/__init__.py +0 -0
  295. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/data/linux-chrome-stable.json +0 -0
  296. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/data/macos-chrome-stable.json +0 -0
  297. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/data/macos-m4-chrome-stable.json +0 -0
  298. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/data/windows-chrome-stable.json +0 -0
  299. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/host_detect.py +0 -0
  300. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/profiles/schema.py +0 -0
  301. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/proxy.py +0 -0
  302. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/proxy_pool.py +0 -0
  303. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/report.py +0 -0
  304. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/scoring.py +0 -0
  305. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/tls_baselines.json +0 -0
  306. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/tls_fingerprint.py +0 -0
  307. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/types.py +0 -0
  308. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/user_agent_pool.py +0 -0
  309. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/validation/__init__.py +0 -0
  310. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/validation/checks.py +0 -0
  311. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/validation/harness.py +0 -0
  312. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/validation/report.py +0 -0
  313. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/stealth/validation/suite.py +0 -0
  314. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/testing.py +0 -0
  315. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/__init__.py +0 -0
  316. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/cost_analytics.py +0 -0
  317. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/flow_logger.py +0 -0
  318. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/middleware.py +0 -0
  319. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/session_db.py +0 -0
  320. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/sinks.py +0 -0
  321. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/tracing/types.py +0 -0
  322. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/verification/__init__.py +0 -0
  323. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/verification/ax_diff.py +0 -0
  324. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/verification/hasher.py +0 -0
  325. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/verification/types.py +0 -0
  326. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/verification/verifier.py +0 -0
  327. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/__init__.py +0 -0
  328. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/cache.py +0 -0
  329. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/controller.py +0 -0
  330. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/coords.py +0 -0
  331. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/factory.py +0 -0
  332. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/ocr.py +0 -0
  333. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/providers.py +0 -0
  334. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/src/super_browser/vision/types.py +0 -0
  335. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/__init__.py +0 -0
  336. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/conftest.py +0 -0
  337. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/__init__.py +0 -0
  338. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/conftest.py +0 -0
  339. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_01_example_nav.py +0 -0
  340. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_02_google_search.py +0 -0
  341. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_03_github_login.py +0 -0
  342. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_04_amazon_search.py +0 -0
  343. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_05_google_forms.py +0 -0
  344. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_06_google_flights.py +0 -0
  345. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_07_wikipedia_extract.py +0 -0
  346. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_08_reddit_spa.py +0 -0
  347. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_09_form_complex.py +0 -0
  348. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/discovery/test_task_10_signup_flow.py +0 -0
  349. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/__init__.py +0 -0
  350. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/conftest.py +0 -0
  351. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_behavioral_realism.py +0 -0
  352. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_challenge_detection.py +0 -0
  353. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_interaction.py +0 -0
  354. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_live_navigation.py +0 -0
  355. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_multi_tab.py +0 -0
  356. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_navigation.py +0 -0
  357. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_session_persistence.py +0 -0
  358. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e/test_stealth_overhead.py +0 -0
  359. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/e2e_v1_3_journey.py +0 -0
  360. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/__init__.py +0 -0
  361. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/conftest.py +0 -0
  362. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_config_composition.py +0 -0
  363. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_engine_backends.py +0 -0
  364. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_error_paths.py +0 -0
  365. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_facade_smoke.py +0 -0
  366. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_full_lifecycle.py +0 -0
  367. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_multi_backend.py +0 -0
  368. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_performance_smoke.py +0 -0
  369. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_playwright_integration.py +0 -0
  370. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_public_api.py +0 -0
  371. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_session_persistence.py +0 -0
  372. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_stealth_abstraction.py +0 -0
  373. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v1100_features.py +0 -0
  374. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v150_features.py +0 -0
  375. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v160_features.py +0 -0
  376. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v170_features.py +0 -0
  377. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v180_features.py +0 -0
  378. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v190_features.py +0 -0
  379. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v191_features.py +0 -0
  380. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v192_features.py +0 -0
  381. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v193_features.py +0 -0
  382. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v195_features.py +0 -0
  383. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v1_3_features.py +0 -0
  384. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/integration/test_v1_4_features.py +0 -0
  385. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/pattern_validation.py +0 -0
  386. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/__init__.py +0 -0
  387. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/conftest.py +0 -0
  388. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_chrome_runtime.py +0 -0
  389. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_cli_switches.py +0 -0
  390. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_headless_indicators.py +0 -0
  391. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_live_sites.py +0 -0
  392. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_runtime_enable.py +0 -0
  393. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_tls_fingerprint.py +0 -0
  394. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/stealth_detection/test_webdriver.py +0 -0
  395. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/__init__.py +0 -0
  396. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_action_timeout.py +0 -0
  397. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_browser_transport.py +0 -0
  398. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_controller_rebinding.py +0 -0
  399. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_debug_mode.py +0 -0
  400. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_default_tooling.py +0 -0
  401. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_delegator.py +0 -0
  402. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_error_screenshots.py +0 -0
  403. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade.py +0 -0
  404. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade_security.py +0 -0
  405. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade_security_control.py +0 -0
  406. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade_security_file_tab.py +0 -0
  407. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade_security_network.py +0 -0
  408. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_facade_security_session.py +0 -0
  409. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_fail_fast.py +0 -0
  410. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_llm.py +0 -0
  411. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_llm_budget.py +0 -0
  412. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_llm_production.py +0 -0
  413. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_llm_streaming.py +0 -0
  414. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_loop.py +0 -0
  415. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_loop_detector.py +0 -0
  416. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_prompt_isolation.py +0 -0
  417. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_registry.py +0 -0
  418. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_retry_budget.py +0 -0
  419. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_streaming.py +0 -0
  420. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_structured_logging.py +0 -0
  421. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_tab_cap.py +0 -0
  422. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_task_02.py +0 -0
  423. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_agent/test_types.py +0 -0
  424. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/__init__.py +0 -0
  425. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_behavioral.py +0 -0
  426. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_dwell.py +0 -0
  427. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_human_config_dwell.py +0 -0
  428. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_navigation.py +0 -0
  429. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_orchestrator.py +0 -0
  430. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_behavioral/test_session_seed.py +0 -0
  431. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_benchmark/__init__.py +0 -0
  432. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_benchmark/test_efficiency.py +0 -0
  433. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_benchmarks/test_browser_benchmark.py +0 -0
  434. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/__init__.py +0 -0
  435. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_cdp.py +0 -0
  436. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_cdp_backend.py +0 -0
  437. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_cloak_backend.py +0 -0
  438. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_cloak_docs.py +0 -0
  439. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_cloak_integration.py +0 -0
  440. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_config.py +0 -0
  441. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_discovery.py +0 -0
  442. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_engine_protocol.py +0 -0
  443. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_fetch.py +0 -0
  444. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_injectors.py +0 -0
  445. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_page.py +0 -0
  446. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_patchright_backend.py +0 -0
  447. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_playwright_backend.py +0 -0
  448. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_selenium_backend.py +0 -0
  449. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_session.py +0 -0
  450. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_browser/test_shutdown.py +0 -0
  451. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/__init__.py +0 -0
  452. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_cascade.py +0 -0
  453. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_cascade_governor.py +0 -0
  454. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_circuit_breaker.py +0 -0
  455. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_client.py +0 -0
  456. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_compressor.py +0 -0
  457. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_cost_estimator.py +0 -0
  458. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_credential_pool.py +0 -0
  459. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_governor.py +0 -0
  460. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_budget/test_types.py +0 -0
  461. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_cli/test_interactive.py +0 -0
  462. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_cli/test_script.py +0 -0
  463. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_cli/test_stealth_check.py +0 -0
  464. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_cli/test_stealth_validate.py +0 -0
  465. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_config.py +0 -0
  466. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_e2e/test_report_schema.py +0 -0
  467. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_e2e/test_trend.py +0 -0
  468. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_audio.py +0 -0
  469. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_batch37_integration.py +0 -0
  470. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_batch38_integration.py +0 -0
  471. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_browser_apis.py +0 -0
  472. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_canvas.py +0 -0
  473. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_integration.py +0 -0
  474. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_timing.py +0 -0
  475. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_ejecta/test_webrtc.py +0 -0
  476. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_events/test_event_bus.py +0 -0
  477. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_events/test_lifecycle_hooks.py +0 -0
  478. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_governance_docs.py +0 -0
  479. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/__init__.py +0 -0
  480. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_cache.py +0 -0
  481. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_controller.py +0 -0
  482. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_decorator.py +0 -0
  483. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_injection.py +0 -0
  484. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_page_change.py +0 -0
  485. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_presets.py +0 -0
  486. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_recovery.py +0 -0
  487. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_snapshot.py +0 -0
  488. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_types.py +0 -0
  489. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_interaction/test_vision.py +0 -0
  490. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_memory/__init__.py +0 -0
  491. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_memory/test_cli_config.py +0 -0
  492. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_memory/test_integration.py +0 -0
  493. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_memory/test_store.py +0 -0
  494. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recording/__init__.py +0 -0
  495. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recording/test_persistence.py +0 -0
  496. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recording/test_recorder.py +0 -0
  497. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recording/test_replayer.py +0 -0
  498. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/__init__.py +0 -0
  499. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_checkpoint.py +0 -0
  500. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_classifier.py +0 -0
  501. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_coordinator.py +0 -0
  502. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_event_bus.py +0 -0
  503. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_format_validator.py +0 -0
  504. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_reflection.py +0 -0
  505. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_retry_tracker.py +0 -0
  506. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_session_recovery.py +0 -0
  507. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_types.py +0 -0
  508. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_recovery/test_watchdogs.py +0 -0
  509. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_release/test_naming_consistency.py +0 -0
  510. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_release/test_smoke_published.py +0 -0
  511. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_release/test_verify_artifact.py +0 -0
  512. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/__init__.py +0 -0
  513. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_batch40_integration.py +0 -0
  514. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_categories.py +0 -0
  515. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_output.py +0 -0
  516. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_typed.py +0 -0
  517. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_types.py +0 -0
  518. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_results/test_validation.py +0 -0
  519. {superbrowser_sdk-2.1.1/tests/test_security → superbrowser_sdk-2.2.1/tests/test_runtime_correctness}/__init__.py +0 -0
  520. {superbrowser_sdk-2.1.1/tests/test_session → superbrowser_sdk-2.2.1/tests/test_security}/__init__.py +0 -0
  521. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_approval.py +0 -0
  522. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_credential_vault.py +0 -0
  523. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_domain_filter.py +0 -0
  524. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_injection.py +0 -0
  525. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_manager.py +0 -0
  526. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_policy.py +0 -0
  527. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_redaction_pipeline.py +0 -0
  528. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_redactor.py +0 -0
  529. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_security/test_types.py +0 -0
  530. {superbrowser_sdk-2.1.1/tests/test_skills → superbrowser_sdk-2.2.1/tests/test_session}/__init__.py +0 -0
  531. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_session/test_proxy.py +0 -0
  532. {superbrowser_sdk-2.1.1/tests/test_stealth → superbrowser_sdk-2.2.1/tests/test_skills}/__init__.py +0 -0
  533. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_skills/test_activation.py +0 -0
  534. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_skills/test_integration.py +0 -0
  535. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_skills/test_markdown.py +0 -0
  536. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_skills/test_registry.py +0 -0
  537. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_skills/test_types.py +0 -0
  538. {superbrowser_sdk-2.1.1/tests/test_tracing → superbrowser_sdk-2.2.1/tests/test_stealth}/__init__.py +0 -0
  539. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_action_policy.py +0 -0
  540. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_captcha.py +0 -0
  541. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_captcha_resolution.py +0 -0
  542. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_challenge_cache.py +0 -0
  543. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_challenge_config.py +0 -0
  544. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_consistency/test_consistency.py +0 -0
  545. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_consistency_inject.py +0 -0
  546. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_diagnostics.py +0 -0
  547. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_e2e_lifecycle.py +0 -0
  548. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_e2e_reporting.py +0 -0
  549. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_fingerprint_scanner.py +0 -0
  550. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_fingerprint_score.py +0 -0
  551. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_headers.py +0 -0
  552. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_human.py +0 -0
  553. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_human_behavior_v2.py +0 -0
  554. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_ip_reputation.py +0 -0
  555. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_kasada_detection.py +0 -0
  556. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_manager.py +0 -0
  557. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_network_stealth_config.py +0 -0
  558. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_profiles.py +0 -0
  559. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_proxy.py +0 -0
  560. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_proxy_pool.py +0 -0
  561. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_stealth_bridge.py +0 -0
  562. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_tls_fingerprint.py +0 -0
  563. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_turnstile_detection.py +0 -0
  564. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_types.py +0 -0
  565. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_user_agent_pool.py +0 -0
  566. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_stealth/test_validation.py +0 -0
  567. {superbrowser_sdk-2.1.1/tests/test_verification → superbrowser_sdk-2.2.1/tests/test_tracing}/__init__.py +0 -0
  568. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_cost_analytics.py +0 -0
  569. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_flow_logger.py +0 -0
  570. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_middleware.py +0 -0
  571. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_session_db.py +0 -0
  572. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_sinks.py +0 -0
  573. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_tracing/test_types.py +0 -0
  574. {superbrowser_sdk-2.1.1/tests/test_vision → superbrowser_sdk-2.2.1/tests/test_verification}/__init__.py +0 -0
  575. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_verification/test_ax_diff.py +0 -0
  576. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_verification/test_hasher.py +0 -0
  577. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_verification/test_types.py +0 -0
  578. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_verification/test_verifier.py +0 -0
  579. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_cache.py +0 -0
  580. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_controller.py +0 -0
  581. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_coords.py +0 -0
  582. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_factory.py +0 -0
  583. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_ocr.py +0 -0
  584. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_providers.py +0 -0
  585. {superbrowser_sdk-2.1.1 → superbrowser_sdk-2.2.1}/tests/test_vision/test_types.py +0 -0
@@ -0,0 +1,64 @@
1
+ name: Stress Test
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ mode:
7
+ description: "Quick or realistic"
8
+ required: true
9
+ default: "quick"
10
+ type: choice
11
+ options:
12
+ - quick
13
+ - realistic
14
+ sessions:
15
+ description: "Number of sessions (realistic mode)"
16
+ required: false
17
+ default: "3"
18
+ concurrency:
19
+ description: "Concurrency (realistic mode)"
20
+ required: false
21
+ default: "2"
22
+
23
+ permissions:
24
+ contents: read
25
+
26
+ jobs:
27
+ stress:
28
+ runs-on: ubuntu-latest
29
+ timeout-minutes: 15
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+
33
+ - uses: actions/setup-python@v5
34
+ with:
35
+ python-version: "3.12"
36
+
37
+ - name: Install Super Browser
38
+ run: |
39
+ pip install --upgrade pip
40
+ pip install -e ".[patchright]"
41
+ python -m patchright install chromium
42
+
43
+ - name: Run stress test (quick)
44
+ if: inputs.mode == 'quick'
45
+ run: |
46
+ python scripts/stress_real_world.py --quick \
47
+ --output stress-results
48
+
49
+ - name: Run stress test (realistic)
50
+ if: inputs.mode == 'realistic'
51
+ run: |
52
+ python scripts/stress_real_world.py --realistic \
53
+ --sessions ${{ inputs.sessions }} \
54
+ --concurrency ${{ inputs.concurrency }} \
55
+ --output stress-results
56
+
57
+ - name: Upload stress report
58
+ if: always()
59
+ uses: actions/upload-artifact@v4
60
+ with:
61
+ name: stress-report
62
+ path: stress-results/
63
+ retention-days: 90
64
+ if-no-files-found: warn
@@ -70,6 +70,7 @@ benchmarks/results/
70
70
 
71
71
  # Smoke test results
72
72
  smoke-results/
73
+ stress-results/
73
74
 
74
75
  # E2E trend artifacts
75
76
  tests/e2e/artifacts/e2e-history.json
@@ -7,6 +7,79 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.2.1] — 2026-06-17
11
+
12
+ ### Overview
13
+
14
+ **v2.2.1 — Runtime Correctness**
15
+
16
+ Patch release fixing three user-facing runtime defects discovered in
17
+ post-release source audit. No new features, no breaking changes.
18
+
19
+ ### Fixed
20
+
21
+ - **Rich page fingerprint `interactive_count`** (loop.py): Was iterating
22
+ dict keys instead of `.values()`, calling `.get()` on string keys.
23
+ The `except` block silently returned `interactive_count=0` every time,
24
+ weakening page change detection. Now correctly counts interactive
25
+ nodes via `is_interactive` attribute.
26
+
27
+ - **iframe action scoping** (controller.py + facade.py): `enter_frame()`
28
+ pushed a frame locator but no interaction method used it — all actions
29
+ targeted the top-level page instead of the iframe. New
30
+ `FrameInteractionTarget` adapter normalizes Playwright's
31
+ `FrameLocator` API (`.locator(sel).click()`) to match the controller's
32
+ selector-tier signatures (`.click(sel)`).
33
+
34
+ - **IPReputationClient async path** (ip_reputation.py): Replaced
35
+ deprecated `asyncio.get_event_loop()` with `asyncio.get_running_loop()`
36
+ to fix DeprecationWarning on every call and future RuntimeError risk.
37
+
38
+ ### Internal
39
+
40
+ - **Stress signal accuracy** (#167): RSS measurement prefers `psutil`
41
+ with platform-aware fallback; periodic `RSSSampler`; hard sleeps
42
+ replaced with `_wait_for_condition()` polling; `parallel_profiles`
43
+ verifies cross-context isolation; `/api/upload` returns real digest.
44
+
45
+ ## [2.2.0] — 2026-06-16
46
+
47
+ ### Overview
48
+
49
+ **v2.2.0 — API Ergonomics**
50
+
51
+ v2.2 polishes the public API surface based on the Track D discovery
52
+ audit. No new features, no breaking changes — cleaner imports, better
53
+ CLI discoverability, and a new `python -m super_browser` entry point.
54
+
55
+ ### Added
56
+
57
+ - **`python -m super_browser` support**: New `__main__.py` delegates to
58
+ the CLI dispatcher, so users can run either `superbrowser version` or
59
+ `python -m super_browser version`.
60
+
61
+ ### Changed
62
+
63
+ - **Standardized top-level imports**: All examples, quickstart, and docs
64
+ now use `from super_browser import SuperBrowser`, `Config`, and
65
+ `create_llm` instead of deep module paths.
66
+ - **CLI help clarified**:
67
+ - `stealth-check` → "Run offline fingerprint scoring and report"
68
+ - `stealth-validate` → "Validate fingerprint against baselines
69
+ (CI/regression mode)"
70
+ - `result-demo` → labeled as internal command
71
+ - **API reference cleaned**: Removed stale `SuperBrowserConfig`
72
+ references (class removed in v2.0) and the removed `core` field row
73
+ from `AgentConfig`.
74
+ - **`raw_page` deprecation updated**: Removal target changed from
75
+ "v2.1" to "v3.0" — the alias stays available through the v2.x series.
76
+
77
+ ### Track D audit artifacts
78
+
79
+ - `docs/api-ergonomics-audit.md` — full discovery document with 15
80
+ findings across three buckets (patch-safe, backward-compatible polish,
81
+ defer).
82
+
10
83
  ## [2.1.1] — 2026-06-16
11
84
 
12
85
  ### Fixed — Smoke workflow install spec format
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superbrowser-sdk
3
- Version: 2.1.1
3
+ Version: 2.2.1
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
@@ -0,0 +1,195 @@
1
+ # Track D — API Ergonomics Audit
2
+
3
+ > **v2.1.1 baseline** — 2026-06-16
4
+ >
5
+ > Discovery document for the v2.2 "API Ergonomics" track.
6
+ > No code changes in this audit — findings only.
7
+
8
+ ---
9
+
10
+ ## Methodology
11
+
12
+ Systematic inspection of:
13
+
14
+ 1. Public API surface (`__all__`, signatures, return types)
15
+ 2. CLI help output, command naming, option consistency
16
+ 3. Testing utilities (`E2EContext`, `MockLLMClient`, report builders)
17
+ 4. Documentation (quickstart, API reference, architecture, examples)
18
+ 5. Migration remnants from v1.x → v2.0
19
+
20
+ ---
21
+
22
+ ## Findings
23
+
24
+ ### Bucket 1 — Patch-safe (docs, help text, examples, aliases)
25
+
26
+ These changes are safe to ship without any risk to existing code.
27
+
28
+ #### 1.1 Stale `SuperBrowserConfig` in API reference
29
+
30
+ `docs/api-reference.md` still references `SuperBrowserConfig` in three
31
+ places — a class removed in v2.0:
32
+
33
+ - Line 45: constructor signature shows `config: Optional[SuperBrowserConfig]`
34
+ - Line 54: parameter table lists `SuperBrowserConfig | None`
35
+ - Line 631: `AgentConfig.core` field table references `SuperBrowserConfig`
36
+
37
+ **Fix:** Replace all `SuperBrowserConfig` → `Config` in the API reference.
38
+
39
+ #### 1.2 Inconsistent import paths in examples and quickstart
40
+
41
+ The top-level package exports `SuperBrowser`, `Config`, `ActionResult`,
42
+ `StreamEvent`, and `create_llm` via `__all__`. But examples and docs use
43
+ inconsistent deep-import paths:
44
+
45
+ | Canonical (top-level) | Deep import used in docs/examples |
46
+ |:----------------------|:----------------------------------|
47
+ | `from super_browser import SuperBrowser` | `from super_browser.agent.facade import SuperBrowser` |
48
+ | `from super_browser import create_llm` | `from super_browser.agent.llm.factory import create_llm` |
49
+ | `from super_browser import Config` | `from super_browser.config import Config` |
50
+
51
+ Files affected:
52
+ - `examples/basic_usage.py`
53
+ - `examples/budget_tracking.py`
54
+ - `examples/error_handling.py`
55
+ - `examples/multi_tab_workflow.py`
56
+ - `examples/session_persistence.py`
57
+ - `docs/quickstart.md` (multiple sections)
58
+
59
+ **Fix:** Standardize all examples and quickstart to use top-level imports.
60
+
61
+ #### 1.3 Quickstart verification command uses deep import
62
+
63
+ ```bash
64
+ # Current (deep import):
65
+ python -c "from super_browser.agent.facade import SuperBrowser; print('OK')"
66
+
67
+ # Should be:
68
+ python -c "from super_browser import SuperBrowser; print('OK')"
69
+ ```
70
+
71
+ #### 1.4 `raw_page` deprecation message is stale
72
+
73
+ The `DeprecationWarning` says:
74
+
75
+ > `raw_page is deprecated, use backend_page instead. Will be removed in v2.1.`
76
+
77
+ We are in v2.1.1. Either:
78
+
79
+ - **(a)** Update the message to say "Will be removed in v2.2" (defer)
80
+ - **(b)** Actually remove `raw_page` (breaking, see Bucket 3)
81
+
82
+ Recommendation: **(a)** — update the message, defer removal.
83
+
84
+ #### 1.5 CLI has no `python -m super_browser` entry point
85
+
86
+ Neither `python -m super_browser` nor `python -m super_browser.cli` works —
87
+ only the `superbrowser` console script does. Adding a `__main__.py` is a
88
+ common user expectation and trivially safe.
89
+
90
+ **Fix:** Add `src/super_browser/__main__.py` that calls `cli.main()`.
91
+
92
+ #### 1.6 CLI `result-demo` command is internal-looking
93
+
94
+ `result-demo` is a demonstration command that has no production use.
95
+ It clutters the top-level help output. Consider hiding it from the main
96
+ help listing or moving it to a `--debug` subgroup.
97
+
98
+ **Fix:** Remove from help listing (keep functional for backward compat).
99
+
100
+ #### 1.7 CLI `stealth-check` vs `stealth-validate` naming is confusing
101
+
102
+ Two similarly named commands with different purposes:
103
+
104
+ | Command | Purpose |
105
+ |:--------|:--------|
106
+ | `stealth-check` | Offline fingerprint scoring + report |
107
+ | `stealth-validate` | Fingerprint validation against baselines + CI mode |
108
+
109
+ **Fix:** Clarify in help text. Renaming would be a breaking change (defer).
110
+
111
+ ### Bucket 2 — Backward-compatible polish
112
+
113
+ These add convenience without breaking existing code.
114
+
115
+ #### 2.1 `create_llm` should be in `__all__` already (confirmed OK)
116
+
117
+ Verified — `create_llm` is already exported at top level. No action needed.
118
+
119
+ #### 2.2 `ActionResult.ok` could have a boolean alias property
120
+
121
+ `ActionResult` uses `.ok` for success/failure. Some users may expect `.success`
122
+ or `.is_ok`. Currently only `.ok` exists. Adding a read-only property alias is
123
+ backward-compatible.
124
+
125
+ **Decision:** Low value, skip unless explicitly requested.
126
+
127
+ #### 2.3 `Config.from_env()` is not in quickstart's verification flow
128
+
129
+ The quickstart shows `Config.from_env()` but doesn't show how to verify it
130
+ succeeded without an LLM API key (validation will report a missing key).
131
+
132
+ **Fix:** Add a note in quickstart that `validate()` returns errors but doesn't
133
+ raise, and that the missing-API-key error is expected for browser-only use.
134
+
135
+ #### 2.4 Testing utilities could export `build_e2e_json_report` at a stable path
136
+
137
+ `build_e2e_json_report` is in `super_browser.testing` — good. But the E2E
138
+ schema v3 validator (`scripts/validate_e2e_report.py`) is not importable.
139
+ If users want to validate reports programmatically, they'd need to run the
140
+ script. Consider extracting the validator into an importable function.
141
+
142
+ **Decision:** Defer unless external consumers request it.
143
+
144
+ ### Bucket 3 — Defer / avoid (risk to v2.x stability)
145
+
146
+ #### 3.1 Removing `raw_page` alias entirely
147
+
148
+ The migration doc said it would be removed in v2.1, but it still works with
149
+ a deprecation warning. Removing it would break any v1.x code that hasn't
150
+ migrated. Since v2.0 just shipped, defer to v3.0.
151
+
152
+ **Decision:** Defer. Update deprecation message to say "v3.0" instead.
153
+
154
+ #### 3.2 Removing legacy `core` sub-dict compat in `_build_agent()`
155
+
156
+ `_build_agent()` still merges a legacy `core` sub-dict for v1.x backward
157
+ compatibility. Removing it would break old YAML/dict configs. Defer.
158
+
159
+ **Decision:** Defer. No urgency — the compat path is ~5 lines of code.
160
+
161
+ #### 3.3 Renaming CLI commands
162
+
163
+ Renaming `stealth-check` → `stealth-score` or `stealth-validate` →
164
+ `stealth-baseline` would improve clarity but break scripts/automation.
165
+
166
+ **Decision:** Defer to a major version if at all.
167
+
168
+ #### 3.4 Removing `result-demo` CLI command
169
+
170
+ Removing it entirely would break anyone who uses it. Keep it functional
171
+ but hide from help (Bucket 1.6).
172
+
173
+ ---
174
+
175
+ ## Summary
176
+
177
+ | Bucket | Items | Risk | Recommended PR |
178
+ |:-------|------:|:-----|:---------------|
179
+ | **Patch-safe** | 7 | None | PR #163 |
180
+ | **Backward-compatible polish** | 4 | Minimal | Optional |
181
+ | **Defer** | 4 | Breaking | v3.0 |
182
+
183
+ ### Recommended PR #163 scope (patch-safe only)
184
+
185
+ 1. Fix `SuperBrowserConfig` → `Config` in API reference (3 occurrences)
186
+ 2. Standardize examples to use top-level imports
187
+ 3. Standardize quickstart to use top-level imports
188
+ 4. Fix quickstart verification command
189
+ 5. Update `raw_page` deprecation message to "v3.0"
190
+ 6. Add `__main__.py` for `python -m super_browser` support
191
+ 7. Hide `result-demo` from CLI help listing
192
+ 8. Clarify `stealth-check` vs `stealth-validate` help text
193
+
194
+ All items are documentation, help text, or additive-only code changes.
195
+ No public API signatures change.
@@ -1,6 +1,6 @@
1
1
  # API Reference
2
2
 
3
- > **Super Browser** v2.1.1 — Complete public API documentation.
3
+ > **Super Browser** v2.2.0 — Complete public API documentation.
4
4
 
5
5
  This reference covers every public class, method, and function in Super Browser. Classes are grouped by subsystem.
6
6
 
@@ -42,7 +42,7 @@ The primary entry point for all browser automation. Wraps the agent loop, stealt
42
42
 
43
43
  ```python
44
44
  class SuperBrowser(
45
- config: Optional[SuperBrowserConfig] = None,
45
+ config: Optional[Config] = None,
46
46
  *,
47
47
  tool_registry: Optional[ToolRegistry] = None,
48
48
  llm_client: Optional[LLMClient] = None,
@@ -51,7 +51,7 @@ class SuperBrowser(
51
51
 
52
52
  | Parameter | Type | Default | Description |
53
53
  |---|---|---|---|
54
- | `config` | `SuperBrowserConfig \| None` | `None` | Agent configuration. Uses defaults when `None`. |
54
+ | `config` | `Config \| None` | `None` | Agent configuration. Uses defaults when `None`. |
55
55
  | `tool_registry` | `ToolRegistry \| None` | `None` | Custom tool registry. Creates a default registry when `None`. |
56
56
  | `llm_client` | `LLMClient \| None` | `None` | LLM client for `act()` calls. **Required** for `act()`. |
57
57
 
@@ -628,7 +628,7 @@ if errors:
628
628
  | `llm_provider` | `str` | `"anthropic"` | LLM provider: `"anthropic"` or `"openai"`. |
629
629
  | `llm_model` | `str` | `"claude-sonnet-4-20250514"` | Model identifier. |
630
630
  | `llm_api_key` | `str` | `""` | API key for the chosen provider. |
631
- | `core` | `SuperBrowserConfig` | defaults | Nested agent-level settings. |
631
+
632
632
 
633
633
  #### `TracingConfig`
634
634
 
@@ -1,6 +1,6 @@
1
1
  # Architecture
2
2
 
3
- > **Super Browser** v2.1.1 — System architecture, data flow, and extension points.
3
+ > **Super Browser** v2.2.0 — System architecture, data flow, and extension points.
4
4
 
5
5
  ---
6
6
 
@@ -26,7 +26,7 @@ pip install superbrowser-sdk[patchright]
26
26
  Verify the installation:
27
27
 
28
28
  ```python
29
- python -c "from super_browser.agent.facade import SuperBrowser; print('OK')"
29
+ python -c "from super_browser import SuperBrowser; print('OK')"
30
30
  # OK
31
31
  ```
32
32
 
@@ -68,7 +68,7 @@ Create `my_first_browser.py`:
68
68
  """5-minute Super Browser quickstart."""
69
69
 
70
70
  import asyncio
71
- from super_browser.agent.facade import SuperBrowser
71
+ from super_browser import SuperBrowser
72
72
 
73
73
 
74
74
  class MockLLMClient:
@@ -151,7 +151,7 @@ export SB_DAILY_BUDGET=5.0
151
151
  > browser is less detectable than headless).
152
152
 
153
153
  ```python
154
- from super_browser.config import Config
154
+ from super_browser import Config
155
155
 
156
156
  config = Config.from_env()
157
157
  errors = config.validate()
@@ -178,7 +178,7 @@ tracing:
178
178
  ```
179
179
 
180
180
  ```python
181
- from super_browser.config import Config
181
+ from super_browser import Config
182
182
 
183
183
  config = Config.from_yaml("super-browser.yaml")
184
184
  ```
@@ -186,7 +186,7 @@ config = Config.from_yaml("super-browser.yaml")
186
186
  ### Option C: Dictionary
187
187
 
188
188
  ```python
189
- from super_browser.config import Config
189
+ from super_browser import Config
190
190
 
191
191
  config = Config.from_dict({
192
192
  "agent": {
@@ -205,7 +205,7 @@ config = Config.from_dict({
205
205
  With a real API key, create an LLM client directly:
206
206
 
207
207
  ```python
208
- from super_browser.agent.llm.factory import create_llm
208
+ from super_browser import create_llm
209
209
 
210
210
  # Explicit
211
211
  llm = create_llm(provider="anthropic", model="claude-sonnet-4-20250514", api_key="sk-ant-...")
@@ -12,7 +12,7 @@ import asyncio
12
12
  import logging
13
13
 
14
14
  from super_browser import Config
15
- from super_browser.agent.facade import SuperBrowser
15
+ from super_browser import SuperBrowser
16
16
  from super_browser.browser.config import SessionConfig
17
17
 
18
18
  logging.basicConfig(level=logging.INFO, format="%(name)s %(levelname)s %(message)s")
@@ -11,7 +11,7 @@ Run:
11
11
  import asyncio
12
12
  import logging
13
13
 
14
- from super_browser.agent.facade import SuperBrowser
14
+ from super_browser import SuperBrowser
15
15
 
16
16
  # Configure logging to see what's happening
17
17
  logging.basicConfig(
@@ -18,7 +18,7 @@ import asyncio
18
18
  import logging
19
19
  from pathlib import Path
20
20
 
21
- from super_browser.agent.facade import SuperBrowser
21
+ from super_browser import SuperBrowser
22
22
  from super_browser.agent.llm.protocol import LLMClient
23
23
  from super_browser.budget.governor import TokenBudgetGovernor
24
24
  from super_browser.budget.types import (
@@ -12,7 +12,7 @@ Run:
12
12
  import asyncio
13
13
  import logging
14
14
 
15
- from super_browser.agent.facade import SuperBrowser
15
+ from super_browser import SuperBrowser
16
16
  from super_browser.results.types import FailureCategory
17
17
 
18
18
  logging.basicConfig(level=logging.INFO, format="%(name)s %(levelname)s %(message)s")
@@ -11,7 +11,7 @@ Run:
11
11
  import asyncio
12
12
  import logging
13
13
 
14
- from super_browser.agent.facade import SuperBrowser
14
+ from super_browser import SuperBrowser
15
15
 
16
16
  logging.basicConfig(level=logging.INFO, format="%(name)s %(levelname)s %(message)s")
17
17
  logger = logging.getLogger(__name__)
@@ -12,7 +12,7 @@ Run:
12
12
  import asyncio
13
13
  import logging
14
14
 
15
- from super_browser.agent.facade import SuperBrowser
15
+ from super_browser import SuperBrowser
16
16
 
17
17
  logging.basicConfig(level=logging.INFO, format="%(name)s %(levelname)s %(message)s")
18
18
  logger = logging.getLogger(__name__)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "superbrowser-sdk"
7
- version = "2.1.1"
7
+ version = "2.2.1"
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" }