browser-control-and-automation-cli 0.1.1.dev3__tar.gz → 0.1.3__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 (277) hide show
  1. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/AGENTS.md +3 -0
  2. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/PKG-INFO +1 -1
  3. browser_control_and_automation_cli-0.1.3/src/browser_cli/__init__.py +21 -0
  4. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/browser_service.py +46 -0
  5. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/client.py +4 -1
  6. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/server.py +2 -0
  7. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/PKG-INFO +1 -1
  8. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/SOURCES.txt +1 -0
  9. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_daemon_browser_service.py +48 -0
  10. browser_control_and_automation_cli-0.1.3/tests/unit/test_package_version.py +44 -0
  11. browser_control_and_automation_cli-0.1.1.dev3/src/browser_cli/__init__.py +0 -7
  12. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.github/pull_request_template.md +0 -0
  13. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.github/workflows/ci.yml +0 -0
  14. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.github/workflows/release.yml +0 -0
  15. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.gitignore +0 -0
  16. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.pre-commit-config.yaml +0 -0
  17. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/.python-version +0 -0
  18. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/LICENSE +0 -0
  19. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/MANIFEST.in +0 -0
  20. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/README.md +0 -0
  21. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/manifest.json +0 -0
  22. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/offscreen.html +0 -0
  23. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/package.json +0 -0
  24. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/popup.html +0 -0
  25. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/artifact_actions.js +0 -0
  26. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/dialog_actions.js +0 -0
  27. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/input_actions.js +0 -0
  28. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/locator_actions.js +0 -0
  29. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/observe_actions.js +0 -0
  30. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/page_actions.js +0 -0
  31. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/trace_actions.js +0 -0
  32. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/video_actions.js +0 -0
  33. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background/workspace.js +0 -0
  34. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/background.js +0 -0
  35. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/debugger.js +0 -0
  36. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/offscreen.js +0 -0
  37. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/page_runtime.js +0 -0
  38. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/popup.css +0 -0
  39. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/popup.js +0 -0
  40. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/popup_view.js +0 -0
  41. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/src/protocol.js +0 -0
  42. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/tests/debugger.test.js +0 -0
  43. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/browser-cli-extension/tests/popup_view.test.js +0 -0
  44. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/examples/task-and-automation.md +0 -0
  45. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/extension-driver-gaps.md +0 -0
  46. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/installed-with-pip.md +0 -0
  47. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/installed-with-uv.md +0 -0
  48. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/smoke-checklist.md +0 -0
  49. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-08-browser-cli-v1-implementation-plan.md +0 -0
  50. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-09-browser-cli-semantic-ref-task-workflow-skill-implementation-plan.md +0 -0
  51. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-09-browser-cli-v2-agent-actions-implementation-plan.md +0 -0
  52. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-10-browser-cli-dual-driver-extension-implementation-plan.md +0 -0
  53. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-10-browser-cli-status-reload-implementation-plan.md +0 -0
  54. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-11-browser-cli-extension-driver-parity-refactor-implementation-plan.md +0 -0
  55. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-11-browser-cli-network-response-body-implementation-plan.md +0 -0
  56. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-12-browser-cli-popup-runtime-polish.md +0 -0
  57. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-12-browser-cli-workflow-publish-layer-implementation-plan.md +0 -0
  58. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-13-browser-cli-long-run-stability-implementation-plan.md +0 -0
  59. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-13-browser-cli-pip-user-ux-roadmap-implementation-plan.md +0 -0
  60. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-13-browser-cli-task-automation-implementation-plan.md +0 -0
  61. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-automation-manifest-roundtrip-implementation-plan.md +0 -0
  62. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-delivery-skills-implementation-plan.md +0 -0
  63. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-douyin-automation-packaging-plan.md +0 -0
  64. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-extension-attach-race-implementation-plan.md +0 -0
  65. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-install-skills-implementation-plan.md +0 -0
  66. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-persistent-startup-page-reuse.md +0 -0
  67. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-release-readiness-implementation-plan.md +0 -0
  68. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-task-runtime-read-unification-implementation-plan.md +0 -0
  69. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-uninstall-doc-implementation-plan.md +0 -0
  70. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-browser-cli-uv-migration-implementation-plan.md +0 -0
  71. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-daemon-parameter-validation-implementation-plan.md +0 -0
  72. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/plans/2026-04-14-pypi-package-rename-implementation-plan.md +0 -0
  73. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-08-browser-cli-design.md +0 -0
  74. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-09-browser-cli-backed-explore-delivery-skill-design.md +0 -0
  75. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-09-browser-cli-explore-task-workflow-design.md +0 -0
  76. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-09-browser-cli-v2-agent-actions-design.md +0 -0
  77. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-09-browser-cli-v3a-semantic-ref-resolution-design.md +0 -0
  78. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-10-browser-cli-dual-driver-extension-architecture-design.md +0 -0
  79. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-10-browser-cli-status-reload-design.md +0 -0
  80. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-11-browser-cli-extension-driver-parity-refactor-design.md +0 -0
  81. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-11-browser-cli-extension-video-cdp-screencast-design.md +0 -0
  82. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-11-browser-cli-network-response-body-design.md +0 -0
  83. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-11-browser-cli-next-roadmap.md +0 -0
  84. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-12-browser-cli-popup-control-surface-runtime-polish-design.md +0 -0
  85. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-12-browser-cli-workflow-publish-layer-design.md +0 -0
  86. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-13-browser-cli-long-run-stability-design.md +0 -0
  87. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-13-browser-cli-pip-user-ux-backlog.md +0 -0
  88. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-13-browser-cli-pip-user-ux-roadmap-design.md +0 -0
  89. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-13-browser-cli-task-automation-design.md +0 -0
  90. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-automation-manifest-roundtrip-design.md +0 -0
  91. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-delivery-skills-design.md +0 -0
  92. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-persistent-startup-page-reuse-design.md +0 -0
  93. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-release-readiness-design.md +0 -0
  94. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-task-runtime-read-unification-design.md +0 -0
  95. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-uninstall-doc-design.md +0 -0
  96. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-browser-cli-uv-migration-design.md +0 -0
  97. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-daemon-parameter-validation-design.md +0 -0
  98. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-install-skills-design.md +0 -0
  99. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/superpowers/specs/2026-04-14-pypi-package-rename-design.md +0 -0
  100. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/docs/uninstall.md +0 -0
  101. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/pyproject.toml +0 -0
  102. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/__init__.py +0 -0
  103. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/check.sh +0 -0
  104. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/generate_packaged_skill_docs.py +0 -0
  105. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guard.sh +0 -0
  106. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/__init__.py +0 -0
  107. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/architecture.py +0 -0
  108. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/common.py +0 -0
  109. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/docs_sync.py +0 -0
  110. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/product_contracts.py +0 -0
  111. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/python_compatibility.py +0 -0
  112. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/guards/run_all.py +0 -0
  113. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/lint.sh +0 -0
  114. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/scripts/test.sh +0 -0
  115. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/setup.cfg +0 -0
  116. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/skills/browser-cli-converge/SKILL.md +0 -0
  117. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/skills/browser-cli-delivery/SKILL.md +0 -0
  118. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/skills/browser-cli-explore/SKILL.md +0 -0
  119. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/actions/__init__.py +0 -0
  120. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/actions/cli_specs.py +0 -0
  121. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/agent_scope/__init__.py +0 -0
  122. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/__init__.py +0 -0
  123. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/api/__init__.py +0 -0
  124. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/api/server.py +0 -0
  125. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/hooks.py +0 -0
  126. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/loader.py +0 -0
  127. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/models.py +0 -0
  128. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/persistence/__init__.py +0 -0
  129. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/persistence/store.py +0 -0
  130. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/projections.py +0 -0
  131. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/publisher.py +0 -0
  132. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/scheduler/__init__.py +0 -0
  133. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/scheduler/schedule.py +0 -0
  134. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/service/__init__.py +0 -0
  135. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/service/__main__.py +0 -0
  136. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/service/client.py +0 -0
  137. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/service/runtime.py +0 -0
  138. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/toml.py +0 -0
  139. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/web/__init__.py +0 -0
  140. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/automation/web/assets.py +0 -0
  141. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/__init__.py +0 -0
  142. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/models.py +0 -0
  143. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/network_capture.py +0 -0
  144. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/service.py +0 -0
  145. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/session.py +0 -0
  146. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/snapshot.py +0 -0
  147. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/browser/stealth.py +0 -0
  148. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/cli/__init__.py +0 -0
  149. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/cli/error_hints.py +0 -0
  150. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/cli/main.py +0 -0
  151. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/__init__.py +0 -0
  152. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/action.py +0 -0
  153. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/automation.py +0 -0
  154. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/doctor.py +0 -0
  155. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/install_skills.py +0 -0
  156. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/paths.py +0 -0
  157. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/read.py +0 -0
  158. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/reload.py +0 -0
  159. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/status.py +0 -0
  160. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/commands/task.py +0 -0
  161. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/constants.py +0 -0
  162. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/__init__.py +0 -0
  163. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/__main__.py +0 -0
  164. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/app.py +0 -0
  165. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/models.py +0 -0
  166. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/runtime_presentation.py +0 -0
  167. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/state.py +0 -0
  168. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/daemon/transport.py +0 -0
  169. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/__init__.py +0 -0
  170. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/__init__.py +0 -0
  171. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/artifact_actions.py +0 -0
  172. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/dialog_actions.py +0 -0
  173. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/input_actions.py +0 -0
  174. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/locator_actions.py +0 -0
  175. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/observe_actions.py +0 -0
  176. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/page_actions.py +0 -0
  177. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/_extension/state_actions.py +0 -0
  178. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/base.py +0 -0
  179. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/extension_driver.py +0 -0
  180. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/models.py +0 -0
  181. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/drivers/playwright_driver.py +0 -0
  182. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/error_codes.py +0 -0
  183. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/errors.py +0 -0
  184. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/exit_codes.py +0 -0
  185. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/extension/__init__.py +0 -0
  186. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/extension/protocol.py +0 -0
  187. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/extension/session.py +0 -0
  188. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/network.py +0 -0
  189. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/outputs/__init__.py +0 -0
  190. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/outputs/json.py +0 -0
  191. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/outputs/render.py +0 -0
  192. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/packaged_skills/__init__.py +0 -0
  193. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/packaged_skills/browser-cli-converge/SKILL.md +0 -0
  194. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/packaged_skills/browser-cli-delivery/SKILL.md +0 -0
  195. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/packaged_skills/browser-cli-explore/SKILL.md +0 -0
  196. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/profiles/__init__.py +0 -0
  197. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/profiles/discovery.py +0 -0
  198. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/refs/__init__.py +0 -0
  199. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/refs/generator.py +0 -0
  200. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/refs/models.py +0 -0
  201. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/refs/registry.py +0 -0
  202. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/refs/resolver.py +0 -0
  203. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/tabs/__init__.py +0 -0
  204. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/tabs/registry.py +0 -0
  205. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/__init__.py +0 -0
  206. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/client.py +0 -0
  207. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/entrypoint.py +0 -0
  208. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/errors.py +0 -0
  209. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/flow.py +0 -0
  210. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/models.py +0 -0
  211. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/read.py +0 -0
  212. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_cli/task_runtime/templates.py +0 -0
  213. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/dependency_links.txt +0 -0
  214. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/entry_points.txt +0 -0
  215. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/requires.txt +0 -0
  216. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/src/browser_control_and_automation_cli.egg-info/top_level.txt +0 -0
  217. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/_templates/automation.toml +0 -0
  218. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/_templates/task.meta.json +0 -0
  219. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/_templates/task.py +0 -0
  220. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/douyin_video_download/automation.toml +0 -0
  221. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/douyin_video_download/task.meta.json +0 -0
  222. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/douyin_video_download/task.py +0 -0
  223. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/interactive_reveal_capture/automation.toml +0 -0
  224. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/interactive_reveal_capture/task.meta.json +0 -0
  225. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/interactive_reveal_capture/task.py +0 -0
  226. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/karpathy_nitter_latest_five/task.meta.json +0 -0
  227. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/karpathy_nitter_latest_five/task.py +0 -0
  228. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/lazy_scroll_capture/automation.toml +0 -0
  229. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/lazy_scroll_capture/task.meta.json +0 -0
  230. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tasks/lazy_scroll_capture/task.py +0 -0
  231. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/__init__.py +0 -0
  232. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/conftest.py +0 -0
  233. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/integration/fixture_server.py +0 -0
  234. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/integration/test_daemon_actions.py +0 -0
  235. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/integration/test_runtime_stability.py +0 -0
  236. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/integration/test_task_cli.py +0 -0
  237. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/integration/test_task_runtime_read.py +0 -0
  238. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_action_catalog.py +0 -0
  239. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_agent_scope.py +0 -0
  240. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_automation_api.py +0 -0
  241. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_automation_commands.py +0 -0
  242. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_automation_projections.py +0 -0
  243. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_automation_publish.py +0 -0
  244. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_automation_service.py +0 -0
  245. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_browser_models.py +0 -0
  246. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_browser_service.py +0 -0
  247. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_browser_stealth.py +0 -0
  248. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_cli.py +0 -0
  249. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_daemon_app_validation.py +0 -0
  250. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_daemon_client.py +0 -0
  251. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_daemon_server.py +0 -0
  252. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_doctor_command.py +0 -0
  253. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_error_hints.py +0 -0
  254. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_extension_driver_actions.py +0 -0
  255. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_extension_transport.py +0 -0
  256. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_guard_scripts.py +0 -0
  257. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_install_skills_command.py +0 -0
  258. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_lifecycle_commands.py +0 -0
  259. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_network.py +0 -0
  260. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_paths_command.py +0 -0
  261. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_profile_discovery.py +0 -0
  262. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_python_compat_guard.py +0 -0
  263. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_python_compatibility.py +0 -0
  264. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_release_artifacts.py +0 -0
  265. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_repo_metadata.py +0 -0
  266. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_repo_skill_docs.py +0 -0
  267. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_repo_text_contracts.py +0 -0
  268. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_repo_workflows.py +0 -0
  269. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_runtime_presentation.py +0 -0
  270. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_semantic_refs.py +0 -0
  271. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_task_commands.py +0 -0
  272. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_task_entrypoint.py +0 -0
  273. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_task_runtime_automation.py +0 -0
  274. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/tests/unit/test_task_runtime_client_read.py +0 -0
  275. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/third_party/bridgic-browser/LICENSE +0 -0
  276. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/third_party/bridgic-browser/PROVENANCE.md +0 -0
  277. {browser_control_and_automation_cli-0.1.1.dev3 → browser_control_and_automation_cli-0.1.3}/uv.lock +0 -0
@@ -199,6 +199,9 @@ the implementation, and where should a change land first.
199
199
  `Tab <id> is not debuggable: unknown` during extension-mode `read` or `open-tab`
200
200
  -> extension tried to attach Chrome debugger before the new tab reported a debuggable URL
201
201
  -> inspect `browser-cli-extension/src/background.js::openTab` and `browser-cli-extension/src/debugger.js::ensureAttached`
202
+ `read` fails in extension mode with `Separator is found, but chunk is longer than limit` or `chunk exceed the limit`
203
+ -> extension-side page extraction hit a large-result chunking limit on the current page
204
+ -> inspect `src/browser_cli/daemon/browser_service.py::read_page`, `src/browser_cli/drivers/_extension/page_actions.py`, and `browser-cli-extension/src/background/page_actions.js`; safe fix is a one-shot read fallback to Playwright rather than changing CLI contracts
202
205
  - If the user reports popup/runtime observer drift:
203
206
  start at `src/browser_cli/daemon/runtime_presentation.py`, then `src/browser_cli/extension/session.py`, then `browser-cli-extension/src/background.js`, `browser-cli-extension/src/popup_view.js`, and `browser-cli-extension/src/popup.js`.
204
207
  - If the user reports long-run stability drift across repeated reloads, reconnects, or artifact runs:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: browser-control-and-automation-cli
3
- Version: 0.1.1.dev3
3
+ Version: 0.1.3
4
4
  Summary: CLI-first browser reader for rendered HTML and page snapshots
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -0,0 +1,21 @@
1
+ """browser-cli package."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ __all__ = ["__version__"]
6
+
7
+
8
+ def _resolve_version() -> str:
9
+ for distribution_name in (
10
+ "browser-control-and-automation-cli",
11
+ "browserctl",
12
+ "browser-cli",
13
+ ):
14
+ try:
15
+ return version(distribution_name)
16
+ except PackageNotFoundError:
17
+ continue
18
+ return "0+unknown"
19
+
20
+
21
+ __version__ = _resolve_version()
@@ -58,6 +58,12 @@ class BrowserService:
58
58
  READ_SCROLL_PAUSE_MS = 450
59
59
  READ_SCROLL_MAX_ROUNDS = 8
60
60
  READ_SCROLL_STABLE_ROUNDS = 2
61
+ _READ_EXTENSION_FALLBACK_PATTERNS = (
62
+ "Separator is found, but chunk is longer than limit",
63
+ "Separator is not found, and chunk exceed the limit",
64
+ "chunk is longer than limit",
65
+ "chunk exceed the limit",
66
+ )
61
67
 
62
68
  def __init__(
63
69
  self,
@@ -333,6 +339,40 @@ class BrowserService:
333
339
  ) -> dict[str, Any]:
334
340
  if output_mode not in {"html", "snapshot"}:
335
341
  raise InvalidInputError(f"Unsupported read output mode: {output_mode}")
342
+ try:
343
+ return await self._read_page_once(
344
+ url=url,
345
+ output_mode=output_mode,
346
+ scroll_bottom=scroll_bottom,
347
+ )
348
+ except Exception as exc:
349
+ if not self._should_retry_read_on_playwright(exc):
350
+ raise
351
+ logger.warning(
352
+ "Extension read failed with chunking error; retrying with playwright: %s",
353
+ exc,
354
+ )
355
+ await self._activate_driver("playwright", reason="extension-read-fallback")
356
+ payload = await self._read_page_once(
357
+ url=url,
358
+ output_mode=output_mode,
359
+ scroll_bottom=scroll_bottom,
360
+ )
361
+ payload["driver_fallback"] = {
362
+ "from": "extension",
363
+ "to": "playwright",
364
+ "reason": "extension-read-fallback",
365
+ "error": str(exc),
366
+ }
367
+ return payload
368
+
369
+ async def _read_page_once(
370
+ self,
371
+ *,
372
+ url: str,
373
+ output_mode: str,
374
+ scroll_bottom: bool,
375
+ ) -> dict[str, Any]:
336
376
  page = await self.new_tab(
337
377
  url=url, wait_until="load", timeout_seconds=self.READ_NAVIGATION_TIMEOUT_SECONDS
338
378
  )
@@ -372,6 +412,12 @@ class BrowserService:
372
412
  with contextlib.suppress(Exception):
373
413
  await self.close_tab(page_id)
374
414
 
415
+ def _should_retry_read_on_playwright(self, exc: Exception) -> bool:
416
+ if self._driver_name != "extension":
417
+ return False
418
+ message = str(exc)
419
+ return any(pattern in message for pattern in self._READ_EXTENSION_FALLBACK_PATTERNS)
420
+
375
421
  async def close_tab(self, page_id: str) -> dict[str, Any]:
376
422
  self._snapshot_registry.clear_page(page_id)
377
423
  return await self._active_driver().close_tab(page_id)
@@ -48,6 +48,7 @@ from .transport import (
48
48
  STARTUP_TIMEOUT_SECONDS = 15.0
49
49
  STARTUP_PROBE_INTERVAL_SECONDS = 0.1
50
50
  TERMINATE_GRACE_SECONDS = 3.0
51
+ _STREAM_LIMIT = 32 * 1024 * 1024
51
52
 
52
53
 
53
54
  def send_command(
@@ -72,7 +73,9 @@ def send_command(
72
73
  async def _send_command_async(action: str, args: dict[str, Any]) -> dict[str, Any]:
73
74
  app_paths = get_app_paths()
74
75
  try:
75
- reader, writer = await asyncio.open_unix_connection(str(app_paths.socket_path))
76
+ reader, writer = await asyncio.open_unix_connection(
77
+ str(app_paths.socket_path), limit=_STREAM_LIMIT
78
+ )
76
79
  except OSError as exc:
77
80
  raise DaemonNotAvailableError(str(exc)) from exc
78
81
  request_payload = {
@@ -24,6 +24,7 @@ from .transport import (
24
24
  )
25
25
 
26
26
  logger = logging.getLogger(__name__)
27
+ _STREAM_LIMIT = 32 * 1024 * 1024
27
28
 
28
29
 
29
30
  class BrowserDaemonServer:
@@ -50,6 +51,7 @@ class BrowserDaemonServer:
50
51
  self._server = await asyncio.start_unix_server(
51
52
  self._handle_client,
52
53
  path=str(app_paths.socket_path),
54
+ limit=_STREAM_LIMIT,
53
55
  )
54
56
  with contextlib.suppress(OSError):
55
57
  os.chmod(app_paths.socket_path, 0o600)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: browser-control-and-automation-cli
3
- Version: 0.1.1.dev3
3
+ Version: 0.1.3
4
4
  Summary: CLI-first browser reader for rendered HTML and page snapshots
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -254,6 +254,7 @@ tests/unit/test_guard_scripts.py
254
254
  tests/unit/test_install_skills_command.py
255
255
  tests/unit/test_lifecycle_commands.py
256
256
  tests/unit/test_network.py
257
+ tests/unit/test_package_version.py
257
258
  tests/unit/test_paths_command.py
258
259
  tests/unit/test_profile_discovery.py
259
260
  tests/unit/test_python_compat_guard.py
@@ -108,6 +108,21 @@ class _FakeDriverBase:
108
108
  self.switched_to = page_id
109
109
  return await self.get_page_summary(page_id)
110
110
 
111
+ async def wait(
112
+ self,
113
+ page_id: str,
114
+ *,
115
+ seconds: float | None = None,
116
+ text: str | None = None,
117
+ gone: bool = False,
118
+ exact: bool = False,
119
+ ) -> dict:
120
+ _ = seconds
121
+ _ = text
122
+ _ = gone
123
+ _ = exact
124
+ return {"page_id": page_id, "waited": True}
125
+
111
126
 
112
127
  class _FakePlaywrightDriver(_FakeDriverBase):
113
128
  def __init__(self, chrome_environment=None, *, headless=None) -> None:
@@ -519,6 +534,39 @@ def test_browser_service_downgrades_at_safe_point_and_reports_state_reset(
519
534
  asyncio.run(_scenario())
520
535
 
521
536
 
537
+ def test_read_page_falls_back_to_playwright_when_extension_hits_chunk_limit(
538
+ _patched_browser_service: _FakeExtensionHub,
539
+ ) -> None:
540
+ async def _scenario() -> None:
541
+ _patched_browser_service.connect()
542
+ service = browser_service_module.BrowserService(TabRegistry())
543
+ await service.ensure_started()
544
+ assert service.active_driver_name == "extension"
545
+
546
+ async def _extension_capture_html(page_id: str) -> dict[str, str]:
547
+ raise RuntimeError("Separator is found, but chunk is longer than limit")
548
+
549
+ async def _playwright_capture_html(page_id: str) -> dict[str, str]:
550
+ return {"page_id": page_id, "html": "<html>ok</html>"}
551
+
552
+ service._extension.capture_html = _extension_capture_html # type: ignore[method-assign] # noqa: SLF001
553
+ service._playwright.capture_html = _playwright_capture_html # type: ignore[method-assign] # noqa: SLF001
554
+
555
+ payload = await service.read_page(url="https://example.com/long-doc", output_mode="html")
556
+
557
+ assert payload["body"] == "<html>ok</html>"
558
+ assert payload["driver_fallback"] == {
559
+ "from": "extension",
560
+ "to": "playwright",
561
+ "reason": "extension-read-fallback",
562
+ "error": "Separator is found, but chunk is longer than limit",
563
+ }
564
+ assert service.active_driver_name == "playwright"
565
+ await service.stop()
566
+
567
+ asyncio.run(_scenario())
568
+
569
+
522
570
  def test_browser_service_downgrade_survives_previous_driver_stop_failure(
523
571
  _patched_browser_service: _FakeExtensionHub,
524
572
  monkeypatch: pytest.MonkeyPatch,
@@ -0,0 +1,44 @@
1
+ from __future__ import annotations
2
+
3
+ from importlib.metadata import PackageNotFoundError
4
+
5
+ import browser_cli
6
+
7
+
8
+ def test_package_version_prefers_current_distribution_name(monkeypatch) -> None:
9
+ calls: list[str] = []
10
+
11
+ def _fake_version(name: str) -> str:
12
+ calls.append(name)
13
+ if name == "browser-control-and-automation-cli":
14
+ return "1.2.3"
15
+ raise PackageNotFoundError(name)
16
+
17
+ monkeypatch.setattr(browser_cli, "version", _fake_version)
18
+
19
+ assert browser_cli._resolve_version() == "1.2.3"
20
+ assert calls == ["browser-control-and-automation-cli"]
21
+
22
+
23
+ def test_package_version_falls_back_to_legacy_distribution_names(monkeypatch) -> None:
24
+ calls: list[str] = []
25
+
26
+ def _fake_version(name: str) -> str:
27
+ calls.append(name)
28
+ if name == "browserctl":
29
+ return "2.0.0"
30
+ raise PackageNotFoundError(name)
31
+
32
+ monkeypatch.setattr(browser_cli, "version", _fake_version)
33
+
34
+ assert browser_cli._resolve_version() == "2.0.0"
35
+ assert calls == ["browser-control-and-automation-cli", "browserctl"]
36
+
37
+
38
+ def test_package_version_uses_unknown_when_no_distribution_metadata_exists(monkeypatch) -> None:
39
+ def _fake_version(_name: str) -> str:
40
+ raise PackageNotFoundError("missing")
41
+
42
+ monkeypatch.setattr(browser_cli, "version", _fake_version)
43
+
44
+ assert browser_cli._resolve_version() == "0+unknown"
@@ -1,7 +0,0 @@
1
- """browser-cli package."""
2
-
3
- from importlib.metadata import version
4
-
5
- __all__ = ["__version__"]
6
-
7
- __version__ = version("browser-cli")