agentic-stealth-browser 2.7.0__tar.gz → 3.0.0__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 (243) hide show
  1. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/CHANGELOG.md +58 -0
  2. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/CONTRIBUTING.md +11 -4
  3. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/PKG-INFO +17 -3
  4. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/README.md +16 -2
  5. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/SECURITY.md +6 -2
  6. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/PKG-INFO +17 -3
  7. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/SOURCES.txt +28 -1
  8. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/audit/logger.py +147 -16
  9. agentic_stealth_browser-3.0.0/core/__init__.py +17 -0
  10. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/agent_browser.py +105 -60
  11. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/error_messages.py +2 -2
  12. agentic_stealth_browser-3.0.0/core/errors.py +48 -0
  13. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/feature_flags.py +0 -5
  14. {agentic_stealth_browser-2.7.0/production → agentic_stealth_browser-3.0.0/core}/metrics.py +4 -2
  15. {agentic_stealth_browser-2.7.0/production → agentic_stealth_browser-3.0.0/core}/rate_limiter.py +1 -1
  16. agentic_stealth_browser-3.0.0/docs/BACKUP_RESTORE.md +42 -0
  17. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/README.md +1 -6
  18. agentic_stealth_browser-3.0.0/docs/RELEASING.md +25 -0
  19. agentic_stealth_browser-3.0.0/docs/RUNBOOK.md +15 -0
  20. agentic_stealth_browser-3.0.0/docs/SLO.md +15 -0
  21. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/agentic-stealth-browser-analysis-report.md +2 -0
  22. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/mcp_security.py +14 -1
  23. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/Dockerfile +7 -2
  24. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/agentic_stealth_mcp.py +7 -1
  25. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/playwright_mcp.py +7 -1
  26. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/audit_enrichment.py +1 -1
  27. agentic_stealth_browser-3.0.0/production/docker-healthcheck.py +32 -0
  28. agentic_stealth_browser-3.0.0/production/hermes_dashboard.py +1164 -0
  29. agentic_stealth_browser-3.0.0/production/mcp_handlers.py +821 -0
  30. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/mcp_server.py +25 -785
  31. agentic_stealth_browser-3.0.0/production/metrics.py +2 -0
  32. agentic_stealth_browser-3.0.0/production/rate_limiter.py +12 -0
  33. agentic_stealth_browser-3.0.0/production/templates/dashboard.html +831 -0
  34. agentic_stealth_browser-3.0.0/production/templates/login.html +94 -0
  35. agentic_stealth_browser-3.0.0/proxy/py.typed +0 -0
  36. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/pyproject.toml +40 -3
  37. agentic_stealth_browser-3.0.0/recovery/__init__.py +0 -0
  38. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/recovery/anti_block_orchestrator.py +11 -0
  39. agentic_stealth_browser-3.0.0/recovery/py.typed +0 -0
  40. agentic_stealth_browser-3.0.0/scraping/__init__.py +0 -0
  41. agentic_stealth_browser-3.0.0/scraping/py.typed +0 -0
  42. agentic_stealth_browser-3.0.0/scripts/backup_sessions.py +35 -0
  43. agentic_stealth_browser-3.0.0/sessions/__init__.py +0 -0
  44. agentic_stealth_browser-3.0.0/sessions/py.typed +0 -0
  45. agentic_stealth_browser-3.0.0/stealth/__init__.py +0 -0
  46. agentic_stealth_browser-3.0.0/stealth/py.typed +0 -0
  47. agentic_stealth_browser-3.0.0/tests/stealth_harness/__init__.py +0 -0
  48. agentic_stealth_browser-3.0.0/tests/test_approval_mode.py +18 -0
  49. agentic_stealth_browser-3.0.0/tests/test_dashboard_rbac.py +103 -0
  50. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_hermes_dashboard.py +3 -1
  51. agentic_stealth_browser-3.0.0/tests/test_launch_leak.py +29 -0
  52. agentic_stealth_browser-3.0.0/tests/test_load_smoke.py +20 -0
  53. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_mcp_server_runtime.py +10 -1
  54. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_mcp_stealth_workflows.py +8 -0
  55. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_phase7_fixes.py +6 -2
  56. agentic_stealth_browser-3.0.0/tests/test_redaction_tokens.py +22 -0
  57. agentic_stealth_browser-3.0.0/workflows/py.typed +0 -0
  58. agentic_stealth_browser-2.7.0/production/docker-healthcheck.py +0 -21
  59. agentic_stealth_browser-2.7.0/production/hermes_dashboard.py +0 -1976
  60. agentic_stealth_browser-2.7.0/production/otel_export.py +0 -214
  61. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/.env.example +0 -0
  62. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/CODE_OF_CONDUCT.md +0 -0
  63. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/LICENSE +0 -0
  64. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/MANIFEST.in +0 -0
  65. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/dependency_links.txt +0 -0
  66. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/entry_points.txt +0 -0
  67. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/requires.txt +0 -0
  68. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/agentic_stealth_browser.egg-info/top_level.txt +0 -0
  69. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/ai/__init__.py +0 -0
  70. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/ai/ai_hooks.py +0 -0
  71. {agentic_stealth_browser-2.7.0/canary → agentic_stealth_browser-3.0.0/ai}/py.typed +0 -0
  72. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/assets/hn-demo.gif +0 -0
  73. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/audit/__init__.py +0 -0
  74. {agentic_stealth_browser-2.7.0/core → agentic_stealth_browser-3.0.0/audit}/py.typed +0 -0
  75. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/behavior/__init__.py +0 -0
  76. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/behavior/adaptive_tuner.py +0 -0
  77. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/behavior/human_behavior.py +0 -0
  78. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/behavior/orchestration.py +0 -0
  79. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/behavior/persona_rotator.py +0 -0
  80. /agentic_stealth_browser-2.7.0/core/__init__.py → /agentic_stealth_browser-3.0.0/behavior/py.typed +0 -0
  81. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/__init__.py +0 -0
  82. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/badge_gen.py +0 -0
  83. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/dashboard_gen.py +0 -0
  84. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/history.py +0 -0
  85. /agentic_stealth_browser-2.7.0/proxy/__init__.py → /agentic_stealth_browser-3.0.0/canary/py.typed +0 -0
  86. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/readme_gen.py +0 -0
  87. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/runner.py +0 -0
  88. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/score.py +0 -0
  89. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/sites.py +0 -0
  90. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/templates/badge.svg.j2 +0 -0
  91. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/canary/templates/dashboard.html.j2 +0 -0
  92. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/account_health.py +0 -0
  93. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/account_warming.py +0 -0
  94. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/connection_pool.py +0 -0
  95. /agentic_stealth_browser-2.7.0/recovery/__init__.py → /agentic_stealth_browser-3.0.0/core/py.typed +0 -0
  96. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/session_checkpoint.py +0 -0
  97. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/core/types.py +0 -0
  98. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/ATTACH_OVER_CDP.md +0 -0
  99. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/DATA_HANDLING.md +0 -0
  100. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/INCIDENT_RESPONSE.md +0 -0
  101. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/KEY_MANAGEMENT.md +0 -0
  102. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/canary/README.md +0 -0
  103. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/canary/badge.svg +0 -0
  104. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/canary/history.jsonl +0 -0
  105. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/canary/index.html +0 -0
  106. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/canary.md +0 -0
  107. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/2026-06-01-v2.4.0-attach-mode-hardening.md +0 -0
  108. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/2026-06-03-v2.5.0-real-backend-adapters.md +0 -0
  109. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/misc/GOAL_MODE_HERMES_BROWSER_DASHBOARD.md +0 -0
  110. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/misc/HN_POST.md +0 -0
  111. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/misc/OPEN_SOURCE_READINESS.md +0 -0
  112. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/docs/plans/misc/RELEASE_AUTONOMOUS_PLAN.md +0 -0
  113. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/examples/recipes/01_cloudflare_bypass.py +0 -0
  114. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/examples/recipes/02_linkedin_search.py +0 -0
  115. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/examples/recipes/03_amazon_product.py +0 -0
  116. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/examples/recipes/README.md +0 -0
  117. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/examples/recipes/linkedin.md +0 -0
  118. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/linkedin/__init__.py +0 -0
  119. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/linkedin/actions.py +0 -0
  120. /agentic_stealth_browser-2.7.0/scraping/__init__.py → /agentic_stealth_browser-3.0.0/linkedin/py.typed +0 -0
  121. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/plugins/__init__.py +0 -0
  122. /agentic_stealth_browser-2.7.0/sessions/__init__.py → /agentic_stealth_browser-3.0.0/plugins/py.typed +0 -0
  123. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/plugins/template/__init__.py +0 -0
  124. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/plugins/template/plugin.py +0 -0
  125. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/__init__.py +0 -0
  126. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/__init__.py +0 -0
  127. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/_jsonrpc_stdio.py +0 -0
  128. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/base.py +0 -0
  129. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/adapters/cdp_bridge.py +0 -0
  130. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/approval_gate.py +0 -0
  131. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/cli.py +0 -0
  132. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/dashboard_adapter_bridge.py +0 -0
  133. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/deprecations.py +0 -0
  134. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/docker-compose.yml +0 -0
  135. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/mcp_input_validator.py +0 -0
  136. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/mcp_session_isolation.py +0 -0
  137. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/policy_engine.py +0 -0
  138. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/profiler.py +0 -0
  139. /agentic_stealth_browser-2.7.0/stealth/__init__.py → /agentic_stealth_browser-3.0.0/production/py.typed +0 -0
  140. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/sdk/__init__.py +0 -0
  141. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/sdk/client.py +0 -0
  142. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/production/workflow_orchestrator.py +0 -0
  143. {agentic_stealth_browser-2.7.0/tests/stealth_harness → agentic_stealth_browser-3.0.0/proxy}/__init__.py +0 -0
  144. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/proxy/proxy_manager.py +0 -0
  145. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/recovery/detectors.py +0 -0
  146. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/recovery/explain_blocked.py +0 -0
  147. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scraping/scraper.py +0 -0
  148. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/canary_run.py +0 -0
  149. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/evaluate_stealth.py +0 -0
  150. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/generate-demo-gif.py +0 -0
  151. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/health_check.py +0 -0
  152. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/hn-demo.py +0 -0
  153. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/make-gif.py +0 -0
  154. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/migrate_v1_to_v2.py +0 -0
  155. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/perf_benchmark.py +0 -0
  156. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/scripts/setup_rbb.sh +0 -0
  157. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/sessions/cookie_manager.py +0 -0
  158. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/sessions/session_manager.py +0 -0
  159. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/setup.cfg +0 -0
  160. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/advanced_stealth.py +0 -0
  161. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/cache.py +0 -0
  162. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/firefox_adapter.py +0 -0
  163. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/headers.py +0 -0
  164. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/presets.py +0 -0
  165. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/profiles.py +0 -0
  166. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/tls_fingerprint.py +0 -0
  167. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/stealth/tls_ja3_ja4.py +0 -0
  168. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/debug_nowsecure.py +0 -0
  169. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/detection_check.py +0 -0
  170. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/detection_runner.py +0 -0
  171. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/fingerprint_scorecard.py +0 -0
  172. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/run_detection_tests.py +0 -0
  173. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/stealth_harness/collect.py +0 -0
  174. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/stealth_harness/test_stealth.py +0 -0
  175. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_account_health.py +0 -0
  176. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_account_warming.py +0 -0
  177. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_adapter_agentic_stealth_mcp.py +0 -0
  178. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_adapter_cdp_bridge.py +0 -0
  179. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_adapter_playwright_mcp.py +0 -0
  180. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_adaptive_tuner.py +0 -0
  181. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_attach_over_cdp.py +0 -0
  182. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_backend_adapter_contract.py +0 -0
  183. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_basic.py +0 -0
  184. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_cdp_snapshots.py +0 -0
  185. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_connection_pool.py +0 -0
  186. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_contract_agent_browser.py +0 -0
  187. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_cookie_manager_unit.py +0 -0
  188. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_dashboard_protocol_bridge.py +0 -0
  189. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_detectors.py +0 -0
  190. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_differential.py +0 -0
  191. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_docker_config.py +0 -0
  192. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_e2e_anti_block_recovery.py +0 -0
  193. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_e2e_protected_sites_placeholder.py +0 -0
  194. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_golden_master.py +0 -0
  195. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_human_behavior_fuzz.py +0 -0
  196. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_integration_modules.py +0 -0
  197. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_linkedin_actions.py +0 -0
  198. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_mcp_contract.py +0 -0
  199. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_mcp_url_safety.py +0 -0
  200. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_metrics_collector_unit.py +0 -0
  201. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_mutation_stealth.py +0 -0
  202. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_persona_rotator.py +0 -0
  203. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_player.py +0 -0
  204. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_proxy_config_unit.py +0 -0
  205. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_proxy_manager.py +0 -0
  206. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_rate_limiter_unit.py +0 -0
  207. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_recorder.py +0 -0
  208. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_recovery.py +0 -0
  209. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_recovery_phase1.py +0 -0
  210. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_recovery_state_machine.py +0 -0
  211. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_rehearsal_validation.py +0 -0
  212. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_selector_auto_heal.py +0 -0
  213. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_session_checkpoint.py +0 -0
  214. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_stealth_cache.py +0 -0
  215. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_stealth_coverage.py +0 -0
  216. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_stealth_modules.py +0 -0
  217. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_stress_multi_account.py +0 -0
  218. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_tls_ja3_ja4.py +0 -0
  219. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_workflow_orchestrator.py +0 -0
  220. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_workflow_schema.py +0 -0
  221. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_workflow_schema_unit.py +0 -0
  222. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/tests/test_workflow_versioning.py +0 -0
  223. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/__init__.py +0 -0
  224. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/action_interpreter.py +0 -0
  225. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/auto-session-test.yaml +0 -0
  226. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/common/login.yaml +0 -0
  227. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/common/verify-email.yaml +0 -0
  228. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/linkedin/send-connection-request.yaml +0 -0
  229. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/meta-test.yaml +0 -0
  230. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/simple-test.yaml +0 -0
  231. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/teach-test/test-teach.yaml +0 -0
  232. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/upwork/add-portfolio-item.yaml +0 -0
  233. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/upwork/apply.yaml +0 -0
  234. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/upwork/edit-title.yaml +0 -0
  235. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/upwork/submit-proposal.yaml +0 -0
  236. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/library/upwork/update-rate.yaml +0 -0
  237. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/player.py +0 -0
  238. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/recorder.py +0 -0
  239. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/recovery.py +0 -0
  240. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/schema.py +0 -0
  241. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/selector_generator.py +0 -0
  242. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/test-echo.yaml +0 -0
  243. {agentic_stealth_browser-2.7.0 → agentic_stealth_browser-3.0.0}/workflows/variable_resolver.py +0 -0
@@ -9,6 +9,64 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [3.0.0] — Enterprise Hardening, Part 2 (2026-07-18)
13
+
14
+ A large enterprise-readiness pass across reliability, auditability, security/
15
+ supply-chain, observability, and maintainability. One breaking change (MCP
16
+ approval default); everything else is additive or behavior-preserving.
17
+
18
+ ### Breaking
19
+ - **MCP approval gate is now fail-closed by default.** Sensitive actions
20
+ (`execute_js`, `stealth_launch`, navigate to unknown domains, `run_workflow`,
21
+ `stealth_replay`) return `MCP_APPROVAL_REQUIRED` until approved. Set
22
+ `STEALTH_APPROVAL_MODE=permissive` to restore the previous auto-approve
23
+ behavior. (`production/mcp_server.py`; covered by `tests/test_approval_mode.py`.)
24
+
25
+ ### Added
26
+ - **Auditability:** success-path audit records at every AgentBrowser choke point
27
+ and the MCP scrape handler; a `level` field on every entry; log rotation +
28
+ retention purge (`AGENTIC_AUDIT_*` env); an **HMAC-keyed tamper-evidence chain**
29
+ (`AGENTIC_AUDIT_HMAC_KEY`) with `verify_audit_chain()`; recursive secret
30
+ redaction into list/tuple values; GitHub/Slack/JWT token redaction patterns.
31
+ - **Observability:** recovery `blocks_total`/`rotations_total`/`captcha_total`
32
+ counters; a scrapeable `GET /metrics` Prometheus endpoint and `GET /api/usage`
33
+ business rollup on the dashboard; `docs/SLO.md` and `docs/RUNBOOK.md`.
34
+ - **Dashboard RBAC:** per-user viewer/operator roles replacing the single shared
35
+ password; mutating routes require the operator role; attributable operator
36
+ actions persisted to an append-only `audit.jsonl`; boot refuses the default
37
+ `change-me` password; `cookie_secure` defaults on.
38
+ - **Supply chain:** a hash-pinned, universal `requirements.lock`; a blocking
39
+ `pip-audit` CVE job; blocking `bandit` SAST (baseline-ratcheted); a `gitleaks`
40
+ secret-scan workflow; CycloneDX SBOM + build-provenance attestation on publish;
41
+ `py.typed` markers for every shipped package; a post-publish PyPI install smoke.
42
+ - **Compliance/governance:** `ACCEPTABLE_USE.md`, `GOVERNANCE.md`, `ROADMAP.md`,
43
+ `SUPPORT.md`, `DCO.txt` + sign-off, `docs/RELEASING.md`, `docs/INCIDENT_RESPONSE.md`,
44
+ `docs/KEY_MANAGEMENT.md`, `docs/DATA_HANDLING.md`, `docs/BACKUP_RESTORE.md` +
45
+ `scripts/backup_sessions.py`.
46
+ - **Reliability:** a launch-failure driver-leak guard in `__aenter__`; an opt-in
47
+ `respect_robots` guard (stdlib `robotparser`) on `safe_goto`/MCP navigate; an
48
+ `AGENTIC_MAX_REQUESTS_PER_SESSION` per-session navigation budget; a `perf`-marked
49
+ concurrency load smoke test.
50
+ - **API:** a stable public facade — `from core import AgentBrowser`.
51
+
52
+ ### Changed
53
+ - **CI is now a real gate:** blocking (relaxed) `mypy` on `core/` and on the five
54
+ MCP security modules; coverage gate raised to **55%** over a widened package set;
55
+ a Python **3.10–3.13** test matrix plus ubuntu/windows/macOS import-smoke; all
56
+ GitHub Actions pinned to commit SHAs; the three previously-excluded test files
57
+ un-gated; the nightly job no longer masks failures.
58
+ - **Architecture:** `rate_limiter.py`/`metrics.py` moved into `core/` (inverted
59
+ layering resolved, back-compat shims kept); ~830 lines of dashboard HTML extracted
60
+ to `production/templates/*.html`; the 18 `_tool_stealth_*` MCP handlers extracted
61
+ to a `_MCPToolHandlers` mixin; the 5 exception classes moved to `core/errors.py`.
62
+ - Swallowed (`pass`-only) exception handlers now log at debug with `exc_info`.
63
+ - Removed the dead `plugin_system` capability flag and unused `otel_export.py`.
64
+
65
+ ### Security
66
+ - Dependency lower bounds pinned to CVE-safe floors; Docker installs from the
67
+ hash-pinned lockfile and runs as a non-root user; `twine check --strict` before
68
+ every PyPI upload; `SECURITY.md` supported-versions corrected.
69
+
12
70
  ## [2.7.0] — Enterprise Hardening (2026-07-18)
13
71
 
14
72
  Auditability, supply-chain, and business-facing hardening from a full enterprise
@@ -36,10 +36,9 @@ pytest tests/ -v
36
36
  # Run specific test files
37
37
  pytest tests/test_stealth_modules.py -v
38
38
  pytest tests/test_contract_agent_browser.py -v
39
- pytest tests/test_recovery_phase1.py -v
40
39
 
41
- # Run with coverage
42
- pytest tests/ --cov=core --cov=stealth --cov=recovery --cov=behavior
40
+ # Run with coverage (CI-equivalent; coverage gate ratchets +5 each release)
41
+ python -m pytest tests/ -m "not e2e and not live_network" --ignore=tests/test_basic.py -q --cov=core --cov=stealth --cov=behavior --cov=recovery --cov=proxy --cov=production --cov=sessions --cov=workflows --cov=audit --cov=mcp_security --cov-fail-under=55
43
42
  ```
44
43
 
45
44
  ---
@@ -200,7 +199,7 @@ agentic-stealth-browser/
200
199
  ### New Recovery Strategy
201
200
 
202
201
  1. Update `PLATFORM_STRATEGIES` in `recovery/anti_block_orchestrator.py`
203
- 2. Add tests to `tests/test_recovery_phase1.py`
202
+ 2. Add tests to `tests/test_recovery_state_machine.py`
204
203
  3. Document rate limiting behavior changes in README.md or relevant code comments
205
204
 
206
205
  ### New Human Behavior
@@ -235,3 +234,11 @@ If you discover a security vulnerability:
235
234
  ## License
236
235
 
237
236
  By contributing, you agree that your contributions will be licensed under the MIT License.
237
+
238
+ All contributions must be signed off under the [Developer Certificate of Origin](DCO.txt). Add a `Signed-off-by: Your Name <you@example.com>` line to each commit (use `git commit -s`).
239
+
240
+ ## Deprecation Policy
241
+
242
+ The public API surface is: the SDK (`production.sdk.client.StealthClient`), MCP tool names (`stealth_launch`, `stealth_navigate`, `stealth_scrape`, `stealth_close`), the `agentic-stealth-browser` CLI and its flags, and the `plugins.BasePlugin` protocol.
243
+
244
+ A deprecated public symbol, flag, or tool emits a `DeprecationWarning` (or documented equivalent) for at least one full MINOR release before removal. Every deprecation and removal is listed in the CHANGELOG under `Deprecated` / `Removed`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-stealth-browser
3
- Version: 2.7.0
3
+ Version: 3.0.0
4
4
  Summary: Production-grade, human-mimicking browser automation framework for autonomous agents. Survives modern anti-bot systems.
5
5
  Author-email: Shane W <shanewas@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -55,6 +55,10 @@ Dynamic: license-file
55
55
 
56
56
  This is an anti-bot-evasion tool. Read the [Acceptable Use Policy](ACCEPTABLE_USE.md) before use — you are responsible for using it lawfully and within the target site's Terms of Service.
57
57
 
58
+ This software is for lawful, **authorized** automation and testing only; you are responsible for compliance with applicable laws, target Terms of Service, and **robots.txt** directives.
59
+
60
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND; the authors accept no liability for misuse. See [LICENSE](LICENSE).
61
+
58
62
  ## What is this
59
63
 
60
64
  A production-grade stealth browser automation library for Python, built on Playwright.
@@ -75,7 +79,7 @@ playwright install --with-deps chromium
75
79
  ```
76
80
 
77
81
  ```python
78
- from core.agent_browser import AgentBrowser
82
+ from core import AgentBrowser
79
83
 
80
84
  async with AgentBrowser(session_name="demo") as browser:
81
85
  await browser.launch(headless=True)
@@ -126,6 +130,10 @@ This library is opinionated and has real limits. Operators should know them up f
126
130
  - **Login credentials are not shipped.** Examples that touch authenticated endpoints
127
131
  stop at the search/listing stage.
128
132
 
133
+ ### Cost controls
134
+
135
+ Set `AGENTIC_MAX_REQUESTS_PER_SESSION=<n>` to cap navigations per session (`safe_goto` returns `False` once exceeded).
136
+
129
137
  ---
130
138
 
131
139
  ## Quick Start
@@ -143,7 +151,7 @@ agentic-stealth-browser dashboard
143
151
  ### Python SDK
144
152
 
145
153
  ```python
146
- from core.agent_browser import AgentBrowser
154
+ from core import AgentBrowser
147
155
 
148
156
  async with AgentBrowser(
149
157
  session_name="my-session",
@@ -300,6 +308,12 @@ Additional references: [CHANGELOG.md](CHANGELOG.md) · [Workflow Library](workfl
300
308
  └── tests/ Contract + integration tests (live E2E opt-in)
301
309
  ```
302
310
 
311
+ ## Governance & Support
312
+
313
+ - [Governance](GOVERNANCE.md)
314
+ - [Roadmap](ROADMAP.md)
315
+ - [Support](SUPPORT.md)
316
+
303
317
  ## License
304
318
 
305
319
  MIT. See [LICENSE](LICENSE) and [CHANGELOG.md](CHANGELOG.md).
@@ -16,6 +16,10 @@
16
16
 
17
17
  This is an anti-bot-evasion tool. Read the [Acceptable Use Policy](ACCEPTABLE_USE.md) before use — you are responsible for using it lawfully and within the target site's Terms of Service.
18
18
 
19
+ This software is for lawful, **authorized** automation and testing only; you are responsible for compliance with applicable laws, target Terms of Service, and **robots.txt** directives.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND; the authors accept no liability for misuse. See [LICENSE](LICENSE).
22
+
19
23
  ## What is this
20
24
 
21
25
  A production-grade stealth browser automation library for Python, built on Playwright.
@@ -36,7 +40,7 @@ playwright install --with-deps chromium
36
40
  ```
37
41
 
38
42
  ```python
39
- from core.agent_browser import AgentBrowser
43
+ from core import AgentBrowser
40
44
 
41
45
  async with AgentBrowser(session_name="demo") as browser:
42
46
  await browser.launch(headless=True)
@@ -87,6 +91,10 @@ This library is opinionated and has real limits. Operators should know them up f
87
91
  - **Login credentials are not shipped.** Examples that touch authenticated endpoints
88
92
  stop at the search/listing stage.
89
93
 
94
+ ### Cost controls
95
+
96
+ Set `AGENTIC_MAX_REQUESTS_PER_SESSION=<n>` to cap navigations per session (`safe_goto` returns `False` once exceeded).
97
+
90
98
  ---
91
99
 
92
100
  ## Quick Start
@@ -104,7 +112,7 @@ agentic-stealth-browser dashboard
104
112
  ### Python SDK
105
113
 
106
114
  ```python
107
- from core.agent_browser import AgentBrowser
115
+ from core import AgentBrowser
108
116
 
109
117
  async with AgentBrowser(
110
118
  session_name="my-session",
@@ -261,6 +269,12 @@ Additional references: [CHANGELOG.md](CHANGELOG.md) · [Workflow Library](workfl
261
269
  └── tests/ Contract + integration tests (live E2E opt-in)
262
270
  ```
263
271
 
272
+ ## Governance & Support
273
+
274
+ - [Governance](GOVERNANCE.md)
275
+ - [Roadmap](ROADMAP.md)
276
+ - [Support](SUPPORT.md)
277
+
264
278
  ## License
265
279
 
266
280
  MIT. See [LICENSE](LICENSE) and [CHANGELOG.md](CHANGELOG.md).
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Version | Supported |
6
6
  | ------- | ------------------ |
7
- | 2.7.x | :white_check_mark: |
8
- | < 2.7 | :x: |
7
+ | 3.0.x | :white_check_mark: |
8
+ | < 3.0 | :x: |
9
9
 
10
10
  This table is updated as part of every release; a release is not complete until the current minor version appears here.
11
11
 
@@ -31,6 +31,10 @@ When using this framework in production:
31
31
  6. **Isolate accounts** — Never share proxies or browser contexts across accounts
32
32
  7. **Keep dependencies updated** — Regularly update Playwright and Python dependencies
33
33
 
34
+ ## MCP Approval Mode
35
+
36
+ The MCP server ships fail-closed: sensitive actions (`execute_js`, `stealth_launch`, navigate to unknown domains, `run_workflow`, `stealth_replay`) return `MCP_APPROVAL_REQUIRED` until approved. Set `STEALTH_APPROVAL_MODE=permissive` to auto-approve all sensitive actions (previous default; not recommended for shared/production deployments).
37
+
34
38
  ## Known Limitations
35
39
 
36
40
  - TLS fingerprint spoofing is limited to browser launch arguments; true ClientHello manipulation requires lower-level network stack access
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentic-stealth-browser
3
- Version: 2.7.0
3
+ Version: 3.0.0
4
4
  Summary: Production-grade, human-mimicking browser automation framework for autonomous agents. Survives modern anti-bot systems.
5
5
  Author-email: Shane W <shanewas@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -55,6 +55,10 @@ Dynamic: license-file
55
55
 
56
56
  This is an anti-bot-evasion tool. Read the [Acceptable Use Policy](ACCEPTABLE_USE.md) before use — you are responsible for using it lawfully and within the target site's Terms of Service.
57
57
 
58
+ This software is for lawful, **authorized** automation and testing only; you are responsible for compliance with applicable laws, target Terms of Service, and **robots.txt** directives.
59
+
60
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND; the authors accept no liability for misuse. See [LICENSE](LICENSE).
61
+
58
62
  ## What is this
59
63
 
60
64
  A production-grade stealth browser automation library for Python, built on Playwright.
@@ -75,7 +79,7 @@ playwright install --with-deps chromium
75
79
  ```
76
80
 
77
81
  ```python
78
- from core.agent_browser import AgentBrowser
82
+ from core import AgentBrowser
79
83
 
80
84
  async with AgentBrowser(session_name="demo") as browser:
81
85
  await browser.launch(headless=True)
@@ -126,6 +130,10 @@ This library is opinionated and has real limits. Operators should know them up f
126
130
  - **Login credentials are not shipped.** Examples that touch authenticated endpoints
127
131
  stop at the search/listing stage.
128
132
 
133
+ ### Cost controls
134
+
135
+ Set `AGENTIC_MAX_REQUESTS_PER_SESSION=<n>` to cap navigations per session (`safe_goto` returns `False` once exceeded).
136
+
129
137
  ---
130
138
 
131
139
  ## Quick Start
@@ -143,7 +151,7 @@ agentic-stealth-browser dashboard
143
151
  ### Python SDK
144
152
 
145
153
  ```python
146
- from core.agent_browser import AgentBrowser
154
+ from core import AgentBrowser
147
155
 
148
156
  async with AgentBrowser(
149
157
  session_name="my-session",
@@ -300,6 +308,12 @@ Additional references: [CHANGELOG.md](CHANGELOG.md) · [Workflow Library](workfl
300
308
  └── tests/ Contract + integration tests (live E2E opt-in)
301
309
  ```
302
310
 
311
+ ## Governance & Support
312
+
313
+ - [Governance](GOVERNANCE.md)
314
+ - [Roadmap](ROADMAP.md)
315
+ - [Support](SUPPORT.md)
316
+
303
317
  ## License
304
318
 
305
319
  MIT. See [LICENSE](LICENSE) and [CHANGELOG.md](CHANGELOG.md).
@@ -16,14 +16,17 @@ agentic_stealth_browser.egg-info/requires.txt
16
16
  agentic_stealth_browser.egg-info/top_level.txt
17
17
  ai/__init__.py
18
18
  ai/ai_hooks.py
19
+ ai/py.typed
19
20
  assets/hn-demo.gif
20
21
  audit/__init__.py
21
22
  audit/logger.py
23
+ audit/py.typed
22
24
  behavior/__init__.py
23
25
  behavior/adaptive_tuner.py
24
26
  behavior/human_behavior.py
25
27
  behavior/orchestration.py
26
28
  behavior/persona_rotator.py
29
+ behavior/py.typed
27
30
  canary/__init__.py
28
31
  canary/badge_gen.py
29
32
  canary/dashboard_gen.py
@@ -41,15 +44,22 @@ core/account_warming.py
41
44
  core/agent_browser.py
42
45
  core/connection_pool.py
43
46
  core/error_messages.py
47
+ core/errors.py
44
48
  core/feature_flags.py
49
+ core/metrics.py
45
50
  core/py.typed
51
+ core/rate_limiter.py
46
52
  core/session_checkpoint.py
47
53
  core/types.py
48
54
  docs/ATTACH_OVER_CDP.md
55
+ docs/BACKUP_RESTORE.md
49
56
  docs/DATA_HANDLING.md
50
57
  docs/INCIDENT_RESPONSE.md
51
58
  docs/KEY_MANAGEMENT.md
52
59
  docs/README.md
60
+ docs/RELEASING.md
61
+ docs/RUNBOOK.md
62
+ docs/SLO.md
53
63
  docs/agentic-stealth-browser-analysis-report.md
54
64
  docs/canary.md
55
65
  docs/canary/README.md
@@ -69,7 +79,9 @@ examples/recipes/README.md
69
79
  examples/recipes/linkedin.md
70
80
  linkedin/__init__.py
71
81
  linkedin/actions.py
82
+ linkedin/py.typed
72
83
  plugins/__init__.py
84
+ plugins/py.typed
73
85
  plugins/template/__init__.py
74
86
  plugins/template/plugin.py
75
87
  production/Dockerfile
@@ -82,13 +94,14 @@ production/deprecations.py
82
94
  production/docker-compose.yml
83
95
  production/docker-healthcheck.py
84
96
  production/hermes_dashboard.py
97
+ production/mcp_handlers.py
85
98
  production/mcp_input_validator.py
86
99
  production/mcp_server.py
87
100
  production/mcp_session_isolation.py
88
101
  production/metrics.py
89
- production/otel_export.py
90
102
  production/policy_engine.py
91
103
  production/profiler.py
104
+ production/py.typed
92
105
  production/rate_limiter.py
93
106
  production/workflow_orchestrator.py
94
107
  production/adapters/__init__.py
@@ -99,14 +112,20 @@ production/adapters/cdp_bridge.py
99
112
  production/adapters/playwright_mcp.py
100
113
  production/sdk/__init__.py
101
114
  production/sdk/client.py
115
+ production/templates/dashboard.html
116
+ production/templates/login.html
102
117
  proxy/__init__.py
103
118
  proxy/proxy_manager.py
119
+ proxy/py.typed
104
120
  recovery/__init__.py
105
121
  recovery/anti_block_orchestrator.py
106
122
  recovery/detectors.py
107
123
  recovery/explain_blocked.py
124
+ recovery/py.typed
108
125
  scraping/__init__.py
126
+ scraping/py.typed
109
127
  scraping/scraper.py
128
+ scripts/backup_sessions.py
110
129
  scripts/canary_run.py
111
130
  scripts/evaluate_stealth.py
112
131
  scripts/generate-demo-gif.py
@@ -118,6 +137,7 @@ scripts/perf_benchmark.py
118
137
  scripts/setup_rbb.sh
119
138
  sessions/__init__.py
120
139
  sessions/cookie_manager.py
140
+ sessions/py.typed
121
141
  sessions/session_manager.py
122
142
  stealth/__init__.py
123
143
  stealth/advanced_stealth.py
@@ -126,6 +146,7 @@ stealth/firefox_adapter.py
126
146
  stealth/headers.py
127
147
  stealth/presets.py
128
148
  stealth/profiles.py
149
+ stealth/py.typed
129
150
  stealth/tls_fingerprint.py
130
151
  stealth/tls_ja3_ja4.py
131
152
  tests/debug_nowsecure.py
@@ -139,6 +160,7 @@ tests/test_adapter_agentic_stealth_mcp.py
139
160
  tests/test_adapter_cdp_bridge.py
140
161
  tests/test_adapter_playwright_mcp.py
141
162
  tests/test_adaptive_tuner.py
163
+ tests/test_approval_mode.py
142
164
  tests/test_attach_over_cdp.py
143
165
  tests/test_backend_adapter_contract.py
144
166
  tests/test_basic.py
@@ -147,6 +169,7 @@ tests/test_connection_pool.py
147
169
  tests/test_contract_agent_browser.py
148
170
  tests/test_cookie_manager_unit.py
149
171
  tests/test_dashboard_protocol_bridge.py
172
+ tests/test_dashboard_rbac.py
150
173
  tests/test_detectors.py
151
174
  tests/test_differential.py
152
175
  tests/test_docker_config.py
@@ -156,7 +179,9 @@ tests/test_golden_master.py
156
179
  tests/test_hermes_dashboard.py
157
180
  tests/test_human_behavior_fuzz.py
158
181
  tests/test_integration_modules.py
182
+ tests/test_launch_leak.py
159
183
  tests/test_linkedin_actions.py
184
+ tests/test_load_smoke.py
160
185
  tests/test_mcp_contract.py
161
186
  tests/test_mcp_server_runtime.py
162
187
  tests/test_mcp_stealth_workflows.py
@@ -173,6 +198,7 @@ tests/test_recorder.py
173
198
  tests/test_recovery.py
174
199
  tests/test_recovery_phase1.py
175
200
  tests/test_recovery_state_machine.py
201
+ tests/test_redaction_tokens.py
176
202
  tests/test_rehearsal_validation.py
177
203
  tests/test_selector_auto_heal.py
178
204
  tests/test_session_checkpoint.py
@@ -191,6 +217,7 @@ tests/stealth_harness/test_stealth.py
191
217
  workflows/__init__.py
192
218
  workflows/action_interpreter.py
193
219
  workflows/player.py
220
+ workflows/py.typed
194
221
  workflows/recorder.py
195
222
  workflows/recovery.py
196
223
  workflows/schema.py