opendevbrowser 0.0.12 → 0.0.16
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.
- package/LICENSE +21 -0
- package/README.md +425 -42
- package/dist/annotate/direct-annotator.d.ts +22 -0
- package/dist/annotate/direct-annotator.d.ts.map +1 -0
- package/dist/annotate/output.d.ts +10 -0
- package/dist/annotate/output.d.ts.map +1 -0
- package/dist/browser/annotation-manager.d.ts +30 -0
- package/dist/browser/annotation-manager.d.ts.map +1 -0
- package/dist/browser/browser-manager.d.ts +397 -0
- package/dist/browser/browser-manager.d.ts.map +1 -0
- package/dist/browser/fingerprint/adapters.d.ts +26 -0
- package/dist/browser/fingerprint/adapters.d.ts.map +1 -0
- package/dist/browser/fingerprint/canary.d.ts +25 -0
- package/dist/browser/fingerprint/canary.d.ts.map +1 -0
- package/dist/browser/fingerprint/profiles.d.ts +16 -0
- package/dist/browser/fingerprint/profiles.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier1-coherence.d.ts +36 -0
- package/dist/browser/fingerprint/tier1-coherence.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier2-runtime.d.ts +40 -0
- package/dist/browser/fingerprint/tier2-runtime.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier3-adaptive.d.ts +30 -0
- package/dist/browser/fingerprint/tier3-adaptive.d.ts.map +1 -0
- package/dist/browser/manager-types.d.ts +3 -0
- package/dist/browser/manager-types.d.ts.map +1 -0
- package/dist/browser/ops-browser-manager.d.ts +131 -0
- package/dist/browser/ops-browser-manager.d.ts.map +1 -0
- package/dist/browser/ops-client.d.ts +56 -0
- package/dist/browser/ops-client.d.ts.map +1 -0
- package/dist/browser/parallelism-governor.d.ts +31 -0
- package/dist/browser/parallelism-governor.d.ts.map +1 -0
- package/dist/browser/script-runner.d.ts +23 -0
- package/dist/browser/script-runner.d.ts.map +1 -0
- package/dist/browser/session-store.d.ts +63 -0
- package/dist/browser/session-store.d.ts.map +1 -0
- package/dist/browser/target-manager.d.ts +36 -0
- package/dist/browser/target-manager.d.ts.map +1 -0
- package/dist/cache/chrome-locator.d.ts +2 -0
- package/dist/cache/chrome-locator.d.ts.map +1 -0
- package/dist/cache/downloader.d.ts +6 -0
- package/dist/cache/downloader.d.ts.map +1 -0
- package/dist/cache/paths.d.ts +9 -0
- package/dist/cache/paths.d.ts.map +1 -0
- package/dist/chunk-7W3SPXIB.js +166 -0
- package/dist/chunk-7W3SPXIB.js.map +1 -0
- package/dist/chunk-ST7CO5FA.js +18668 -0
- package/dist/chunk-ST7CO5FA.js.map +1 -0
- package/dist/cli/args.d.ts +25 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/client.d.ts +2 -0
- package/dist/cli/client.d.ts.map +1 -0
- package/dist/cli/commands/annotate.d.ts +27 -0
- package/dist/cli/commands/annotate.d.ts.map +1 -0
- package/dist/cli/commands/artifacts.d.ts +24 -0
- package/dist/cli/commands/artifacts.d.ts.map +1 -0
- package/dist/cli/commands/daemon.d.ts +35 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/devtools/console-poll.d.ts +7 -0
- package/dist/cli/commands/devtools/console-poll.d.ts.map +1 -0
- package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts +20 -0
- package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts.map +1 -0
- package/dist/cli/commands/devtools/network-poll.d.ts +7 -0
- package/dist/cli/commands/devtools/network-poll.d.ts.map +1 -0
- package/dist/cli/commands/devtools/perf.d.ts +7 -0
- package/dist/cli/commands/devtools/perf.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screenshot.d.ts +17 -0
- package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -0
- package/dist/cli/commands/dom/attr.d.ts +7 -0
- package/dist/cli/commands/dom/attr.d.ts.map +1 -0
- package/dist/cli/commands/dom/checked.d.ts +7 -0
- package/dist/cli/commands/dom/checked.d.ts.map +1 -0
- package/dist/cli/commands/dom/enabled.d.ts +7 -0
- package/dist/cli/commands/dom/enabled.d.ts.map +1 -0
- package/dist/cli/commands/dom/html.d.ts +7 -0
- package/dist/cli/commands/dom/html.d.ts.map +1 -0
- package/dist/cli/commands/dom/text.d.ts +7 -0
- package/dist/cli/commands/dom/text.d.ts.map +1 -0
- package/dist/cli/commands/dom/value.d.ts +7 -0
- package/dist/cli/commands/dom/value.d.ts.map +1 -0
- package/dist/cli/commands/dom/visible.d.ts +7 -0
- package/dist/cli/commands/dom/visible.d.ts.map +1 -0
- package/dist/cli/commands/export/clone-component.d.ts +7 -0
- package/dist/cli/commands/export/clone-component.d.ts.map +1 -0
- package/dist/cli/commands/export/clone-page.d.ts +7 -0
- package/dist/cli/commands/export/clone-page.d.ts.map +1 -0
- package/dist/cli/commands/interact/check.d.ts +7 -0
- package/dist/cli/commands/interact/check.d.ts.map +1 -0
- package/dist/cli/commands/interact/click.d.ts +7 -0
- package/dist/cli/commands/interact/click.d.ts.map +1 -0
- package/dist/cli/commands/interact/hover.d.ts +7 -0
- package/dist/cli/commands/interact/hover.d.ts.map +1 -0
- package/dist/cli/commands/interact/press.d.ts +7 -0
- package/dist/cli/commands/interact/press.d.ts.map +1 -0
- package/dist/cli/commands/interact/scroll-into-view.d.ts +7 -0
- package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -0
- package/dist/cli/commands/interact/scroll.d.ts +7 -0
- package/dist/cli/commands/interact/scroll.d.ts.map +1 -0
- package/dist/cli/commands/interact/select.d.ts +7 -0
- package/dist/cli/commands/interact/select.d.ts.map +1 -0
- package/dist/cli/commands/interact/type.d.ts +7 -0
- package/dist/cli/commands/interact/type.d.ts.map +1 -0
- package/dist/cli/commands/interact/uncheck.d.ts +7 -0
- package/dist/cli/commands/interact/uncheck.d.ts.map +1 -0
- package/dist/cli/commands/macro-resolve.d.ts +18 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -0
- package/dist/cli/commands/native.d.ts +82 -0
- package/dist/cli/commands/native.d.ts.map +1 -0
- package/dist/cli/commands/nav/goto.d.ts +7 -0
- package/dist/cli/commands/nav/goto.d.ts.map +1 -0
- package/dist/cli/commands/nav/snapshot.d.ts +7 -0
- package/dist/cli/commands/nav/snapshot.d.ts.map +1 -0
- package/dist/cli/commands/nav/wait.d.ts +7 -0
- package/dist/cli/commands/nav/wait.d.ts.map +1 -0
- package/dist/cli/commands/pages/close.d.ts +6 -0
- package/dist/cli/commands/pages/close.d.ts.map +1 -0
- package/dist/cli/commands/pages/list.d.ts +7 -0
- package/dist/cli/commands/pages/list.d.ts.map +1 -0
- package/dist/cli/commands/pages/open.d.ts +7 -0
- package/dist/cli/commands/pages/open.d.ts.map +1 -0
- package/dist/cli/commands/product-video.d.ts +25 -0
- package/dist/cli/commands/product-video.d.ts.map +1 -0
- package/dist/cli/commands/registry.d.ts +5 -0
- package/dist/cli/commands/registry.d.ts.map +1 -0
- package/dist/cli/commands/research.d.ts +27 -0
- package/dist/cli/commands/research.d.ts.map +1 -0
- package/dist/cli/commands/rpc.d.ts +28 -0
- package/dist/cli/commands/rpc.d.ts.map +1 -0
- package/dist/cli/commands/run.d.ts +17 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/serve.d.ts +59 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/session/connect.d.ts +9 -0
- package/dist/cli/commands/session/connect.d.ts.map +1 -0
- package/dist/cli/commands/session/cookie-import.d.ts +31 -0
- package/dist/cli/commands/session/cookie-import.d.ts.map +1 -0
- package/dist/cli/commands/session/cookie-list.d.ts +17 -0
- package/dist/cli/commands/session/cookie-list.d.ts.map +1 -0
- package/dist/cli/commands/session/disconnect.d.ts +6 -0
- package/dist/cli/commands/session/disconnect.d.ts.map +1 -0
- package/dist/cli/commands/session/launch.d.ts +29 -0
- package/dist/cli/commands/session/launch.d.ts.map +1 -0
- package/dist/cli/commands/session/status.d.ts +7 -0
- package/dist/cli/commands/session/status.d.ts.map +1 -0
- package/dist/cli/commands/shopping.d.ts +25 -0
- package/dist/cli/commands/shopping.d.ts.map +1 -0
- package/dist/cli/commands/status.d.ts +19 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/targets/close.d.ts +6 -0
- package/dist/cli/commands/targets/close.d.ts.map +1 -0
- package/dist/cli/commands/targets/list.d.ts +7 -0
- package/dist/cli/commands/targets/list.d.ts.map +1 -0
- package/dist/cli/commands/targets/new.d.ts +7 -0
- package/dist/cli/commands/targets/new.d.ts.map +1 -0
- package/dist/cli/commands/targets/use.d.ts +7 -0
- package/dist/cli/commands/targets/use.d.ts.map +1 -0
- package/dist/cli/commands/types.d.ts +13 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +14 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/update.d.ts +7 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/daemon-autostart.d.ts +46 -0
- package/dist/cli/daemon-autostart.d.ts.map +1 -0
- package/dist/cli/daemon-client.d.ts +33 -0
- package/dist/cli/daemon-client.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts +7 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -0
- package/dist/cli/daemon-state.d.ts +56 -0
- package/dist/cli/daemon-state.d.ts.map +1 -0
- package/dist/cli/daemon-status.d.ts +19 -0
- package/dist/cli/daemon-status.d.ts.map +1 -0
- package/dist/cli/daemon.d.ts +29 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/errors.d.ts +20 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/help.d.ts +28 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +4604 -769
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/global.d.ts +9 -0
- package/dist/cli/installers/global.d.ts.map +1 -0
- package/dist/cli/installers/local.d.ts +9 -0
- package/dist/cli/installers/local.d.ts.map +1 -0
- package/dist/cli/installers/skills.d.ts +19 -0
- package/dist/cli/installers/skills.d.ts.map +1 -0
- package/dist/cli/output.d.ts +7 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/remote-manager.d.ts +96 -0
- package/dist/cli/remote-manager.d.ts.map +1 -0
- package/dist/cli/remote-relay.d.ts +17 -0
- package/dist/cli/remote-relay.d.ts.map +1 -0
- package/dist/cli/templates/config.d.ts +7 -0
- package/dist/cli/templates/config.d.ts.map +1 -0
- package/dist/cli/utils/config.d.ts +20 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/http.d.ts +5 -0
- package/dist/cli/utils/http.d.ts.map +1 -0
- package/dist/cli/utils/parse.d.ts +8 -0
- package/dist/cli/utils/parse.d.ts.map +1 -0
- package/dist/cli/utils/skills.d.ts +12 -0
- package/dist/cli/utils/skills.d.ts.map +1 -0
- package/dist/config.d.ts +208 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/bootstrap.d.ts +3 -0
- package/dist/core/bootstrap.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/logging.d.ts +34 -0
- package/dist/core/logging.d.ts.map +1 -0
- package/dist/core/types.d.ts +34 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/devtools/console-tracker.d.ts +44 -0
- package/dist/devtools/console-tracker.d.ts.map +1 -0
- package/dist/devtools/exception-tracker.d.ts +42 -0
- package/dist/devtools/exception-tracker.d.ts.map +1 -0
- package/dist/devtools/network-tracker.d.ts +34 -0
- package/dist/devtools/network-tracker.d.ts.map +1 -0
- package/dist/export/css-extract.d.ts +5 -0
- package/dist/export/css-extract.d.ts.map +1 -0
- package/dist/export/dom-capture.d.ts +15 -0
- package/dist/export/dom-capture.d.ts.map +1 -0
- package/dist/export/react-emitter.d.ts +11 -0
- package/dist/export/react-emitter.d.ts.map +1 -0
- package/dist/extension-extractor.d.ts +3 -0
- package/dist/extension-extractor.d.ts.map +1 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1905 -262
- package/dist/index.js.map +1 -1
- package/dist/macros/execute.d.ts +44 -0
- package/dist/macros/execute.d.ts.map +1 -0
- package/dist/macros/index.d.ts +9 -0
- package/dist/macros/index.d.ts.map +1 -0
- package/dist/macros/packs/core.d.ts +3 -0
- package/dist/macros/packs/core.d.ts.map +1 -0
- package/dist/macros/registry.d.ts +48 -0
- package/dist/macros/registry.d.ts.map +1 -0
- package/dist/macros-NUBRM44Y.js +399 -0
- package/dist/macros-NUBRM44Y.js.map +1 -0
- package/dist/opendevbrowser.d.ts +3 -4
- package/dist/opendevbrowser.d.ts.map +1 -0
- package/dist/opendevbrowser.js +1905 -262
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/providers/adaptive-concurrency.d.ts +42 -0
- package/dist/providers/adaptive-concurrency.d.ts.map +1 -0
- package/dist/providers/artifacts.d.ts +34 -0
- package/dist/providers/artifacts.d.ts.map +1 -0
- package/dist/providers/blocker.d.ts +47 -0
- package/dist/providers/blocker.d.ts.map +1 -0
- package/dist/providers/community/index.d.ts +44 -0
- package/dist/providers/community/index.d.ts.map +1 -0
- package/dist/providers/enrichment.d.ts +33 -0
- package/dist/providers/enrichment.d.ts.map +1 -0
- package/dist/providers/errors.d.ts +41 -0
- package/dist/providers/errors.d.ts.map +1 -0
- package/dist/providers/index.d.ts +121 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/normalize.d.ts +39 -0
- package/dist/providers/normalize.d.ts.map +1 -0
- package/dist/providers/policy.d.ts +5 -0
- package/dist/providers/policy.d.ts.map +1 -0
- package/dist/providers/registry.d.ts +22 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/renderer.d.ts +49 -0
- package/dist/providers/renderer.d.ts.map +1 -0
- package/dist/providers/runtime-factory.d.ts +20 -0
- package/dist/providers/runtime-factory.d.ts.map +1 -0
- package/dist/providers/safety/prompt-guard.d.ts +34 -0
- package/dist/providers/safety/prompt-guard.d.ts.map +1 -0
- package/dist/providers/shared/anti-bot-policy.d.ts +51 -0
- package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -0
- package/dist/providers/shared/post-policy.d.ts +31 -0
- package/dist/providers/shared/post-policy.d.ts.map +1 -0
- package/dist/providers/shared/request-headers.d.ts +5 -0
- package/dist/providers/shared/request-headers.d.ts.map +1 -0
- package/dist/providers/shared/traversal-url.d.ts +2 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -0
- package/dist/providers/shopping/index.d.ts +63 -0
- package/dist/providers/shopping/index.d.ts.map +1 -0
- package/dist/providers/social/bluesky.d.ts +3 -0
- package/dist/providers/social/bluesky.d.ts.map +1 -0
- package/dist/providers/social/facebook.d.ts +3 -0
- package/dist/providers/social/facebook.d.ts.map +1 -0
- package/dist/providers/social/index.d.ts +31 -0
- package/dist/providers/social/index.d.ts.map +1 -0
- package/dist/providers/social/instagram.d.ts +3 -0
- package/dist/providers/social/instagram.d.ts.map +1 -0
- package/dist/providers/social/linkedin.d.ts +3 -0
- package/dist/providers/social/linkedin.d.ts.map +1 -0
- package/dist/providers/social/platform.d.ts +40 -0
- package/dist/providers/social/platform.d.ts.map +1 -0
- package/dist/providers/social/reddit.d.ts +3 -0
- package/dist/providers/social/reddit.d.ts.map +1 -0
- package/dist/providers/social/threads.d.ts +3 -0
- package/dist/providers/social/threads.d.ts.map +1 -0
- package/dist/providers/social/tiktok.d.ts +3 -0
- package/dist/providers/social/tiktok.d.ts.map +1 -0
- package/dist/providers/social/x.d.ts +3 -0
- package/dist/providers/social/x.d.ts.map +1 -0
- package/dist/providers/social/youtube-resolver.d.ts +78 -0
- package/dist/providers/social/youtube-resolver.d.ts.map +1 -0
- package/dist/providers/social/youtube.d.ts +34 -0
- package/dist/providers/social/youtube.d.ts.map +1 -0
- package/dist/providers/tier-router.d.ts +30 -0
- package/dist/providers/tier-router.d.ts.map +1 -0
- package/dist/providers/timebox.d.ts +20 -0
- package/dist/providers/timebox.d.ts.map +1 -0
- package/dist/providers/types.d.ts +344 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/web/crawl-worker.d.ts +36 -0
- package/dist/providers/web/crawl-worker.d.ts.map +1 -0
- package/dist/providers/web/crawler.d.ts +101 -0
- package/dist/providers/web/crawler.d.ts.map +1 -0
- package/dist/providers/web/extract.d.ts +11 -0
- package/dist/providers/web/extract.d.ts.map +1 -0
- package/dist/providers/web/index.d.ts +24 -0
- package/dist/providers/web/index.d.ts.map +1 -0
- package/dist/providers/web/policy.d.ts +14 -0
- package/dist/providers/web/policy.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts +67 -0
- package/dist/providers/workflows.d.ts.map +1 -0
- package/dist/relay/protocol.d.ts +317 -0
- package/dist/relay/protocol.d.ts.map +1 -0
- package/dist/relay/relay-endpoints.d.ts +16 -0
- package/dist/relay/relay-endpoints.d.ts.map +1 -0
- package/dist/relay/relay-server.d.ts +111 -0
- package/dist/relay/relay-server.d.ts.map +1 -0
- package/dist/relay/relay-types.d.ts +9 -0
- package/dist/relay/relay-types.d.ts.map +1 -0
- package/dist/skills/continuity-nudge.d.ts +12 -0
- package/dist/skills/continuity-nudge.d.ts.map +1 -0
- package/dist/skills/skill-loader.d.ts +20 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-nudge.d.ts +18 -0
- package/dist/skills/skill-nudge.d.ts.map +1 -0
- package/dist/skills/types.d.ts +12 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/snapshot/ops-snapshot.d.ts +16 -0
- package/dist/snapshot/ops-snapshot.d.ts.map +1 -0
- package/dist/snapshot/refs.d.ts +23 -0
- package/dist/snapshot/refs.d.ts.map +1 -0
- package/dist/snapshot/snapshotter.d.ts +27 -0
- package/dist/snapshot/snapshotter.d.ts.map +1 -0
- package/dist/tools/annotate.d.ts +4 -0
- package/dist/tools/annotate.d.ts.map +1 -0
- package/dist/tools/check.d.ts +4 -0
- package/dist/tools/check.d.ts.map +1 -0
- package/dist/tools/click.d.ts +4 -0
- package/dist/tools/click.d.ts.map +1 -0
- package/dist/tools/clone_component.d.ts +4 -0
- package/dist/tools/clone_component.d.ts.map +1 -0
- package/dist/tools/clone_page.d.ts +4 -0
- package/dist/tools/clone_page.d.ts.map +1 -0
- package/dist/tools/close.d.ts +4 -0
- package/dist/tools/close.d.ts.map +1 -0
- package/dist/tools/connect.d.ts +4 -0
- package/dist/tools/connect.d.ts.map +1 -0
- package/dist/tools/console_poll.d.ts +4 -0
- package/dist/tools/console_poll.d.ts.map +1 -0
- package/dist/tools/cookie_import.d.ts +25 -0
- package/dist/tools/cookie_import.d.ts.map +1 -0
- package/dist/tools/cookie_list.d.ts +9 -0
- package/dist/tools/cookie_list.d.ts.map +1 -0
- package/dist/tools/debug_trace_snapshot.d.ts +4 -0
- package/dist/tools/debug_trace_snapshot.d.ts.map +1 -0
- package/dist/tools/deps.d.ts +26 -0
- package/dist/tools/deps.d.ts.map +1 -0
- package/dist/tools/disconnect.d.ts +4 -0
- package/dist/tools/disconnect.d.ts.map +1 -0
- package/dist/tools/dom_get_html.d.ts +4 -0
- package/dist/tools/dom_get_html.d.ts.map +1 -0
- package/dist/tools/dom_get_text.d.ts +4 -0
- package/dist/tools/dom_get_text.d.ts.map +1 -0
- package/dist/tools/get_attr.d.ts +4 -0
- package/dist/tools/get_attr.d.ts.map +1 -0
- package/dist/tools/get_value.d.ts +4 -0
- package/dist/tools/get_value.d.ts.map +1 -0
- package/dist/tools/goto.d.ts +4 -0
- package/dist/tools/goto.d.ts.map +1 -0
- package/dist/tools/hover.d.ts +4 -0
- package/dist/tools/hover.d.ts.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/is_checked.d.ts +4 -0
- package/dist/tools/is_checked.d.ts.map +1 -0
- package/dist/tools/is_enabled.d.ts +4 -0
- package/dist/tools/is_enabled.d.ts.map +1 -0
- package/dist/tools/is_visible.d.ts +4 -0
- package/dist/tools/is_visible.d.ts.map +1 -0
- package/dist/tools/launch.d.ts +4 -0
- package/dist/tools/launch.d.ts.map +1 -0
- package/dist/tools/list.d.ts +4 -0
- package/dist/tools/list.d.ts.map +1 -0
- package/dist/tools/macro_resolve.d.ts +25 -0
- package/dist/tools/macro_resolve.d.ts.map +1 -0
- package/dist/tools/network_poll.d.ts +4 -0
- package/dist/tools/network_poll.d.ts.map +1 -0
- package/dist/tools/page.d.ts +4 -0
- package/dist/tools/page.d.ts.map +1 -0
- package/dist/tools/perf.d.ts +4 -0
- package/dist/tools/perf.d.ts.map +1 -0
- package/dist/tools/press.d.ts +4 -0
- package/dist/tools/press.d.ts.map +1 -0
- package/dist/tools/product_video_run.d.ts +4 -0
- package/dist/tools/product_video_run.d.ts.map +1 -0
- package/dist/tools/prompting_guide.d.ts +4 -0
- package/dist/tools/prompting_guide.d.ts.map +1 -0
- package/dist/tools/research_run.d.ts +4 -0
- package/dist/tools/research_run.d.ts.map +1 -0
- package/dist/tools/response.d.ts +16 -0
- package/dist/tools/response.d.ts.map +1 -0
- package/dist/tools/run.d.ts +4 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/tools/screenshot.d.ts +4 -0
- package/dist/tools/screenshot.d.ts.map +1 -0
- package/dist/tools/scroll.d.ts +4 -0
- package/dist/tools/scroll.d.ts.map +1 -0
- package/dist/tools/scroll_into_view.d.ts +4 -0
- package/dist/tools/scroll_into_view.d.ts.map +1 -0
- package/dist/tools/select.d.ts +4 -0
- package/dist/tools/select.d.ts.map +1 -0
- package/dist/tools/shopping_run.d.ts +4 -0
- package/dist/tools/shopping_run.d.ts.map +1 -0
- package/dist/tools/skill_list.d.ts +4 -0
- package/dist/tools/skill_list.d.ts.map +1 -0
- package/dist/tools/skill_load.d.ts +4 -0
- package/dist/tools/skill_load.d.ts.map +1 -0
- package/dist/tools/snapshot.d.ts +4 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/status.d.ts +4 -0
- package/dist/tools/status.d.ts.map +1 -0
- package/dist/tools/target_close.d.ts +4 -0
- package/dist/tools/target_close.d.ts.map +1 -0
- package/dist/tools/target_new.d.ts +4 -0
- package/dist/tools/target_new.d.ts.map +1 -0
- package/dist/tools/target_use.d.ts +4 -0
- package/dist/tools/target_use.d.ts.map +1 -0
- package/dist/tools/targets_list.d.ts +4 -0
- package/dist/tools/targets_list.d.ts.map +1 -0
- package/dist/tools/type.d.ts +4 -0
- package/dist/tools/type.d.ts.map +1 -0
- package/dist/tools/uncheck.d.ts +4 -0
- package/dist/tools/uncheck.d.ts.map +1 -0
- package/dist/tools/wait.d.ts +4 -0
- package/dist/tools/wait.d.ts.map +1 -0
- package/dist/tools/workflow-runtime.d.ts +4 -0
- package/dist/tools/workflow-runtime.d.ts.map +1 -0
- package/dist/utils/crypto.d.ts +2 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/endpoint-validation.d.ts +2 -0
- package/dist/utils/endpoint-validation.d.ts.map +1 -0
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/hub-enabled.d.ts +3 -0
- package/dist/utils/hub-enabled.d.ts.map +1 -0
- package/extension/dist/annotate-content.css +237 -0
- package/extension/dist/annotate-content.js +934 -0
- package/extension/dist/background.js +1203 -35
- package/extension/dist/logging.js +50 -0
- package/extension/dist/ops/dom-bridge.js +355 -0
- package/extension/dist/ops/ops-runtime.js +1751 -0
- package/extension/dist/ops/ops-session-store.js +203 -0
- package/extension/dist/ops/parallelism-governor.js +117 -0
- package/extension/dist/ops/redaction.js +52 -0
- package/extension/dist/ops/snapshot-builder.js +4 -0
- package/extension/dist/ops/snapshot-shared.js +236 -0
- package/extension/dist/popup.js +370 -25
- package/extension/dist/relay-settings.js +1 -0
- package/extension/dist/services/CDPRouter.js +567 -104
- package/extension/dist/services/ConnectionManager.js +469 -60
- package/extension/dist/services/NativePortManager.js +182 -0
- package/extension/dist/services/RelayClient.js +227 -26
- package/extension/dist/services/TabManager.js +81 -0
- package/extension/dist/services/TargetSessionMap.js +146 -0
- package/extension/dist/services/cdp-router-commands.js +203 -0
- package/extension/dist/services/url-restrictions.js +41 -0
- package/extension/dist/types.js +3 -1
- package/extension/icons/icon128.png +0 -0
- package/extension/icons/icon16.png +0 -0
- package/extension/icons/icon32.png +0 -0
- package/extension/icons/icon48.png +0 -0
- package/extension/manifest.json +17 -3
- package/extension/popup.html +144 -0
- package/package.json +26 -17
- package/scripts/native/host.cjs +230 -0
- package/scripts/native/install.ps1 +73 -0
- package/scripts/native/install.sh +66 -0
- package/scripts/native/uninstall.ps1 +25 -0
- package/scripts/native/uninstall.sh +26 -0
- package/skills/AGENTS.md +47 -66
- package/skills/opendevbrowser-best-practices/SKILL.md +196 -49
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +95 -0
- package/skills/opendevbrowser-best-practices/artifacts/debug-trace-playbook.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/fingerprint-tiers.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/macro-workflows.md +43 -0
- package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +89 -0
- package/skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json +11 -0
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +56 -0
- package/skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json +9 -0
- package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +79 -0
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +24 -0
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +144 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -0
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +93 -0
- package/skills/opendevbrowser-continuity-ledger/SKILL.md +67 -23
- package/skills/opendevbrowser-data-extraction/SKILL.md +126 -0
- package/skills/opendevbrowser-data-extraction/artifacts/extraction-workflows.md +31 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/compliance-checklist.md +7 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/extraction-schema.json +17 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/pagination-state.json +11 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/quality-gates.json +10 -0
- package/skills/opendevbrowser-data-extraction/examples/sample-schema.json +19 -0
- package/skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh +83 -0
- package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +49 -0
- package/skills/opendevbrowser-form-testing/SKILL.md +143 -0
- package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +37 -0
- package/skills/opendevbrowser-form-testing/assets/templates/a11y-assertions.md +7 -0
- package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +16 -0
- package/skills/opendevbrowser-form-testing/assets/templates/multi-step-state.json +11 -0
- package/skills/opendevbrowser-form-testing/assets/templates/validation-matrix.json +24 -0
- package/skills/opendevbrowser-form-testing/examples/sample-validation-matrix.json +29 -0
- package/skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh +82 -0
- package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +49 -0
- package/skills/opendevbrowser-login-automation/SKILL.md +159 -0
- package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +39 -0
- package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +21 -0
- package/skills/opendevbrowser-login-automation/assets/templates/challenge-checkpoint.md +10 -0
- package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +26 -0
- package/skills/opendevbrowser-login-automation/examples/sample-auth-signals.json +14 -0
- package/skills/opendevbrowser-login-automation/scripts/record-auth-signals.sh +18 -0
- package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +99 -0
- package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +50 -0
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +98 -0
- package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +23 -0
- package/skills/opendevbrowser-product-presentation-asset/artifacts/ugc-creative-guide.md +21 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/claims-evidence-map.md +5 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/copy.md +5 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/features.md +4 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/manifest.schema.json +14 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +7 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/ugc-concepts.md +17 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/user-actions.md +7 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +18 -0
- package/skills/opendevbrowser-product-presentation-asset/examples/sample-input.json +6 -0
- package/skills/opendevbrowser-product-presentation-asset/examples/sample-manifest.json +18 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +9 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +14 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +9 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +96 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +56 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +43 -0
- package/skills/opendevbrowser-research/SKILL.md +73 -0
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +29 -0
- package/skills/opendevbrowser-research/assets/templates/compact.md +7 -0
- package/skills/opendevbrowser-research/assets/templates/context.json +18 -0
- package/skills/opendevbrowser-research/assets/templates/report.md +9 -0
- package/skills/opendevbrowser-research/examples/sample-input.json +6 -0
- package/skills/opendevbrowser-research/examples/sample-output.md +4 -0
- package/skills/opendevbrowser-research/scripts/render-output.sh +12 -0
- package/skills/opendevbrowser-research/scripts/run-research.sh +23 -0
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +48 -0
- package/skills/opendevbrowser-research/scripts/write-artifacts.sh +29 -0
- package/skills/opendevbrowser-shopping/SKILL.md +118 -0
- package/skills/opendevbrowser-shopping/artifacts/deal-hunting-workflows.md +37 -0
- package/skills/opendevbrowser-shopping/assets/templates/deal-thresholds.json +8 -0
- package/skills/opendevbrowser-shopping/assets/templates/deals-context.json +9 -0
- package/skills/opendevbrowser-shopping/assets/templates/deals-table.md +4 -0
- package/skills/opendevbrowser-shopping/assets/templates/market-analysis.json +30 -0
- package/skills/opendevbrowser-shopping/examples/sample-deals.md +4 -0
- package/skills/opendevbrowser-shopping/examples/sample-query.json +5 -0
- package/skills/opendevbrowser-shopping/scripts/analyze-market.sh +307 -0
- package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +28 -0
- package/skills/opendevbrowser-shopping/scripts/render-deals.sh +13 -0
- package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +32 -0
- package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +19 -0
- package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +53 -0
- package/dist/chunk-WTFSMBVH.js +0 -2815
- package/dist/chunk-WTFSMBVH.js.map +0 -1
- package/extension/dist/popup.jsx +0 -150
- package/skills/data-extraction/SKILL.md +0 -136
- package/skills/form-testing/SKILL.md +0 -113
- package/skills/login-automation/SKILL.md +0 -98
package/README.md
CHANGED
|
@@ -4,16 +4,59 @@
|
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
[](https://www.typescriptlang.org/)
|
|
6
6
|
[](https://opencode.ai)
|
|
7
|
-
[](docs/CLI.md)
|
|
8
|
+
[](docs/EXTENSION.md)
|
|
9
|
+
[](https://registry.npmjs.org/opendevbrowser)
|
|
8
10
|
|
|
9
11
|
> **Script-first browser automation for AI agents.** Snapshot → Refs → Actions.
|
|
10
12
|
|
|
11
|
-
OpenDevBrowser is an [OpenCode](https://opencode.ai) plugin
|
|
13
|
+
OpenDevBrowser is an agent-agnostic browser automation runtime. You can use it as an [OpenCode](https://opencode.ai) plugin, as a standalone CLI, or through the Chrome extension relay for logged-in browser sessions. It supports managed sessions, direct CDP attach, and extension-backed Ops sessions. Frontend website source and deployment are maintained in the private repo `opendevbrowser-website-deploy`.
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="assets/hero-image.png" alt="OpenDevBrowser hero image showing AI-assisted annotation and browser automation workflow" width="920" />
|
|
17
|
+
<br />
|
|
18
|
+
<em>AI-assisted annotation and browser automation workflow</em>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
## Use It Your Way
|
|
22
|
+
|
|
23
|
+
| Interface | OpenCode Required | Best For |
|
|
24
|
+
|-----------|-------------------|----------|
|
|
25
|
+
| **CLI (`npx opendevbrowser ...`)** | No | Any agent/workflow that can run shell commands |
|
|
26
|
+
| **Chrome Extension + Relay** | No | Reusing existing logged-in tabs without launching a new browser |
|
|
27
|
+
| **OpenCode Plugin Tools** | Yes | Native tool-calling inside OpenCode (`opendevbrowser_*`) |
|
|
28
|
+
| **Frontend Website (private repo)** | No | Product website and generated docs routes |
|
|
29
|
+
|
|
30
|
+
All core automation flows are available through the CLI command surface and the plugin tool surface.
|
|
31
|
+
Private website docs routes are generated from public repository source-of-truth docs and skill packs.
|
|
32
|
+
|
|
33
|
+
Distribution split (current target state):
|
|
34
|
+
- Public repo (`opendevbrowser`): runtime, CLI, extension, docs, npm, release artifacts.
|
|
35
|
+
- Private repo (`opendevbrowser-website-deploy`): website deployment (`website-production` branch).
|
|
36
|
+
|
|
37
|
+
## Why OpenDevBrowser?
|
|
38
|
+
|
|
39
|
+
| Feature | Benefit |
|
|
40
|
+
|---------|---------|
|
|
41
|
+
| **Script-first UX** | Snapshot → Refs → Actions workflow optimized for AI agents |
|
|
42
|
+
| **Accessibility-tree snapshots** | Token-efficient page representation (not raw DOM) |
|
|
43
|
+
| **Stable refs** | Elements identified by `backendNodeId`, not fragile selectors |
|
|
44
|
+
| **Security by default** | CDP localhost-only, timing-safe auth, HTML sanitization |
|
|
45
|
+
| **3 browser modes** | Managed, CDP connect, or extension relay for logged-in sessions |
|
|
46
|
+
| **Ops + CDP channels** | High-level multi-client `/ops` plus legacy `/cdp` compatibility |
|
|
47
|
+
| **Relay Hub (FIFO leases)** | Single-owner CDP binding with a FIFO queue for multi-client safety |
|
|
48
|
+
| **Flat-session routing** | Extension relay uses DebuggerSession sessionId routing (Chrome 125+) |
|
|
49
|
+
| **Loop-closure diagnostics** | Console/network polling + unified debug trace snapshots for verification workflows |
|
|
50
|
+
| **8 bundled skill packs** | Best practices plus login, forms, data extraction, research, shopping, and product asset workflows |
|
|
51
|
+
| **48 tools** | Complete browser automation coverage |
|
|
52
|
+
| **97% test coverage** | Production-ready with strict TypeScript |
|
|
12
53
|
|
|
13
54
|
---
|
|
14
55
|
|
|
15
56
|
## Installation
|
|
16
57
|
|
|
58
|
+
Requires Node.js `>=18`.
|
|
59
|
+
|
|
17
60
|
### For Humans
|
|
18
61
|
|
|
19
62
|
```bash
|
|
@@ -26,11 +69,74 @@ npx opendevbrowser --local # ./opencode.json
|
|
|
26
69
|
|
|
27
70
|
# Full install (config + extension assets)
|
|
28
71
|
npx opendevbrowser --full
|
|
72
|
+
|
|
73
|
+
# Optional: persistent global CLI
|
|
74
|
+
npm install -g opendevbrowser
|
|
75
|
+
opendevbrowser --version
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Pre-release Local Package (No npm publish required)
|
|
79
|
+
|
|
80
|
+
Use this path to validate first-run onboarding before public distribution:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cd <public-repo-root>
|
|
84
|
+
npm pack
|
|
85
|
+
|
|
86
|
+
WORKDIR=$(mktemp -d /tmp/opendevbrowser-first-run-XXXXXX)
|
|
87
|
+
cd "$WORKDIR"
|
|
88
|
+
npm init -y
|
|
89
|
+
npm install <public-repo-root>/opendevbrowser-0.0.16.tgz
|
|
90
|
+
npx --no-install opendevbrowser --help
|
|
91
|
+
npx --no-install opendevbrowser help
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Full validated flow: [`docs/FIRST_RUN_ONBOARDING.md`](docs/FIRST_RUN_ONBOARDING.md).
|
|
95
|
+
Dependency/runtime inventory: [`docs/DEPENDENCIES.md`](docs/DEPENDENCIES.md).
|
|
96
|
+
|
|
97
|
+
Use OpenCode only if you want plugin tools. CLI and extension workflows work without OpenCode.
|
|
98
|
+
|
|
99
|
+
On first successful install, the CLI attempts to install daemon auto-start on supported platforms so the relay is available on login.
|
|
100
|
+
You can remove it later with `npx opendevbrowser daemon uninstall`.
|
|
101
|
+
|
|
102
|
+
During install, bundled skills are synced for **OpenCode, Codex, ClaudeCode, and AmpCLI**.
|
|
103
|
+
Default `--skills-global` targets:
|
|
104
|
+
- `~/.config/opencode/skill` (OpenCode)
|
|
105
|
+
- `$CODEX_HOME/skills` (fallback `~/.codex/skills`)
|
|
106
|
+
- `$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` (fallback `~/.claude/skills`)
|
|
107
|
+
- `$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` (fallback `~/.amp/skills`)
|
|
108
|
+
|
|
109
|
+
Use `--skills-local` for project-local targets:
|
|
110
|
+
- `./.opencode/skill`, `./.codex/skills`, `./.claude/skills`, `./.amp/skills`
|
|
111
|
+
|
|
112
|
+
### CLI + Extension (No OpenCode)
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Start relay/daemon runtime
|
|
116
|
+
npx opendevbrowser serve
|
|
117
|
+
|
|
118
|
+
# Launch using extension mode (requires extension popup connected)
|
|
119
|
+
npx opendevbrowser launch --extension-only --wait-for-extension
|
|
120
|
+
|
|
121
|
+
# Or force managed mode without extension
|
|
122
|
+
npx opendevbrowser launch --no-extension
|
|
29
123
|
```
|
|
30
124
|
|
|
31
|
-
|
|
125
|
+
Unpacked extension load path after local install:
|
|
126
|
+
- `<WORKDIR>/node_modules/opendevbrowser/extension`
|
|
127
|
+
|
|
128
|
+
### Frontend Website (Private Repo)
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
git clone https://github.com/freshtechbro/opendevbrowser-website-deploy.git
|
|
132
|
+
cd opendevbrowser-website-deploy/frontend
|
|
133
|
+
npm install
|
|
134
|
+
npm run dev
|
|
135
|
+
```
|
|
32
136
|
|
|
33
|
-
|
|
137
|
+
Website build/data pipeline lives in the private repo:
|
|
138
|
+
- `npm run sync:assets` copies mirrored assets into private `frontend/public/brand`.
|
|
139
|
+
- `npm run generate:docs` regenerates docs, metrics, and roadmap JSON consumed by `/docs`.
|
|
34
140
|
|
|
35
141
|
### Agent Installation (OpenCode)
|
|
36
142
|
|
|
@@ -57,12 +163,14 @@ Manual fallback (edit OpenCode config):
|
|
|
57
163
|
|
|
58
164
|
Config location: `~/.config/opencode/opencode.json`
|
|
59
165
|
|
|
60
|
-
Restart OpenCode, then run `opendevbrowser_status` to verify the plugin is loaded.
|
|
166
|
+
Restart OpenCode, then run `opendevbrowser_status` to verify the plugin is loaded (daemon status when hub is enabled).
|
|
61
167
|
|
|
62
168
|
---
|
|
63
169
|
|
|
64
170
|
## Quick Start
|
|
65
171
|
|
|
172
|
+
OpenDevBrowser uses the same automation model across plugin tools and CLI commands:
|
|
173
|
+
|
|
66
174
|
```
|
|
67
175
|
1. Launch a browser session
|
|
68
176
|
2. Navigate to a URL
|
|
@@ -71,15 +179,20 @@ Restart OpenCode, then run `opendevbrowser_status` to verify the plugin is loade
|
|
|
71
179
|
5. Re-snapshot after navigation
|
|
72
180
|
```
|
|
73
181
|
|
|
74
|
-
|
|
182
|
+
Shipping checklist for first-time users (local-package install, daemon, extension, first task, multi-tab auth/cookies):
|
|
183
|
+
- [`docs/FIRST_RUN_ONBOARDING.md`](docs/FIRST_RUN_ONBOARDING.md)
|
|
184
|
+
|
|
185
|
+
Parallel execution is target-scoped (`ExecutionKey = (sessionId,targetId)`): same target is FIFO, different targets can run concurrently up to the governor cap. `session-per-worker` remains the safest baseline for strict isolation. See [`docs/CLI.md`](docs/CLI.md) (Concurrency semantics) and [`skills/opendevbrowser-best-practices/artifacts/provider-workflows.md`](skills/opendevbrowser-best-practices/artifacts/provider-workflows.md) (Workflow E).
|
|
186
|
+
|
|
187
|
+
### Core Workflow (Plugin Tools)
|
|
75
188
|
|
|
76
189
|
| Step | Tool | Purpose |
|
|
77
190
|
|------|------|---------|
|
|
78
|
-
| 1 | `opendevbrowser_launch` |
|
|
191
|
+
| 1 | `opendevbrowser_launch` | Launch a session (extension relay first; managed fallback is explicit) |
|
|
79
192
|
| 2 | `opendevbrowser_goto` | Navigate to URL |
|
|
80
193
|
| 3 | `opendevbrowser_snapshot` | Get page structure with refs |
|
|
81
194
|
| 4 | `opendevbrowser_click` / `opendevbrowser_type` | Interact with elements |
|
|
82
|
-
| 5 | `
|
|
195
|
+
| 5 | `opendevbrowser_disconnect` | Clean up session |
|
|
83
196
|
|
|
84
197
|
---
|
|
85
198
|
|
|
@@ -91,6 +204,12 @@ Run a local daemon for persistent sessions, then drive automation via CLI comman
|
|
|
91
204
|
# Start daemon
|
|
92
205
|
npx opendevbrowser serve
|
|
93
206
|
|
|
207
|
+
# Install auto-start (recommended for resilience)
|
|
208
|
+
npx opendevbrowser daemon install
|
|
209
|
+
|
|
210
|
+
# Stop/kill the daemon before restarting
|
|
211
|
+
npx opendevbrowser serve --stop
|
|
212
|
+
|
|
94
213
|
# Launch a session
|
|
95
214
|
npx opendevbrowser launch --start-url https://example.com
|
|
96
215
|
|
|
@@ -101,6 +220,9 @@ npx opendevbrowser snapshot --session-id <session-id>
|
|
|
101
220
|
npx opendevbrowser click --session-id <session-id> --ref r12
|
|
102
221
|
```
|
|
103
222
|
|
|
223
|
+
`opendevbrowser serve` includes stale-daemon preflight cleanup by default, so orphan daemon processes are terminated automatically
|
|
224
|
+
before startup while preserving the active daemon on the requested port.
|
|
225
|
+
|
|
104
226
|
For single-shot scripts:
|
|
105
227
|
|
|
106
228
|
```bash
|
|
@@ -111,6 +233,32 @@ Use `--output-format json|stream-json` for automation-friendly output.
|
|
|
111
233
|
|
|
112
234
|
---
|
|
113
235
|
|
|
236
|
+
## Recent Features
|
|
237
|
+
|
|
238
|
+
### v0.0.16 (Latest)
|
|
239
|
+
|
|
240
|
+
- **Release-gate hardening** with dedicated audit/compliance scripts (`audit-zombie-files`, `docs-drift-check`, `chrome-store-compliance-check`) and grouped release-gate tests.
|
|
241
|
+
- **Live matrix robustness upgrades** across `live-regression-matrix` and `provider-live-matrix` (strict `--release-gate`, extension/CDP recovery paths, deterministic strict-mode semantics).
|
|
242
|
+
- **CLI/runtime reliability fixes** including launch RPC timeout derivation from wait hints, bounded macro execute timeouts, and stale extension `/cdp` attach retry handling.
|
|
243
|
+
- **Version/distribution integrity checks** now enforce parity across `package.json`, `extension/manifest.json`, and `extension/package.json`.
|
|
244
|
+
- **Dependency and docs refresh** for v0.0.16 release readiness, onboarding parity, and public/private distribution operations.
|
|
245
|
+
|
|
246
|
+
### v0.0.15
|
|
247
|
+
|
|
248
|
+
- **Documentation and release readiness refresh** across README/CLI/extension guidance.
|
|
249
|
+
- **Extension mode stabilization** with stronger native host flow and recovery paths.
|
|
250
|
+
- **Ops/CDP hardening** for disconnect cleanup and extension routing reliability.
|
|
251
|
+
- **Coverage expansion** for browser/target/native workflows while preserving the 97% threshold.
|
|
252
|
+
|
|
253
|
+
### v0.0.14
|
|
254
|
+
|
|
255
|
+
- **Ops parity delivery** across daemon, relay, and extension runtime paths.
|
|
256
|
+
- **New automation surface**: expanded DOM query + interaction commands/tools.
|
|
257
|
+
- **Multi-client/session improvements** in core tracking and extension router behavior.
|
|
258
|
+
- **Security and reliability hardening** for relay + daemon connection handling.
|
|
259
|
+
|
|
260
|
+
See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
261
|
+
|
|
114
262
|
## Features
|
|
115
263
|
|
|
116
264
|
### Browser Control
|
|
@@ -129,10 +277,16 @@ Use `--output-format json|stream-json` for automation-friendly output.
|
|
|
129
277
|
|
|
130
278
|
### DevTools Integration
|
|
131
279
|
- **Console Capture** - Monitor console.log, errors, warnings
|
|
132
|
-
- **Network Tracking** -
|
|
133
|
-
- **
|
|
280
|
+
- **Network Tracking** - Request/response metadata (method, url, status)
|
|
281
|
+
- **Debug Trace Snapshot** - Combined page/console/network/exception diagnostics with blocker metadata
|
|
282
|
+
- **Screenshot** - Viewport PNG screenshot (file or base64)
|
|
134
283
|
- **Performance** - Page load metrics
|
|
135
284
|
|
|
285
|
+
### Session & Macro Utilities
|
|
286
|
+
- **Cookie Import** - Validate and import cookies into active sessions
|
|
287
|
+
- **Cookie List** - First-class cookie inspection with optional URL filters
|
|
288
|
+
- **Macro Resolve/Execute** - Expand macro expressions into provider actions with optional execution
|
|
289
|
+
|
|
136
290
|
### Export & Clone
|
|
137
291
|
- **DOM Capture** - Extract sanitized HTML with inline styles
|
|
138
292
|
- **React Emitter** - Generate React component code from pages
|
|
@@ -142,15 +296,19 @@ Use `--output-format json|stream-json` for automation-friendly output.
|
|
|
142
296
|
|
|
143
297
|
## Tool Reference
|
|
144
298
|
|
|
145
|
-
OpenDevBrowser provides **
|
|
299
|
+
OpenDevBrowser provides **48 tools** organized by category:
|
|
300
|
+
Most runtime actions also have CLI command equivalents (see [docs/CLI.md](docs/CLI.md)).
|
|
301
|
+
Complete source-accurate inventory (tools + CLI + `/ops` + `/cdp`): [docs/SURFACE_REFERENCE.md](docs/SURFACE_REFERENCE.md).
|
|
146
302
|
|
|
147
303
|
### Session Management
|
|
148
304
|
| Tool | Description |
|
|
149
305
|
|------|-------------|
|
|
150
|
-
| `opendevbrowser_launch` | Launch
|
|
151
|
-
| `opendevbrowser_connect` | Connect to existing Chrome CDP endpoint |
|
|
306
|
+
| `opendevbrowser_launch` | Launch a session (extension relay first; managed is explicit) |
|
|
307
|
+
| `opendevbrowser_connect` | Connect to existing Chrome CDP endpoint (or relay `/ops`; legacy `/cdp` via `--extension-legacy`) |
|
|
152
308
|
| `opendevbrowser_disconnect` | Disconnect browser session |
|
|
153
|
-
| `opendevbrowser_status` | Get session status and connection info |
|
|
309
|
+
| `opendevbrowser_status` | Get session status and connection info (daemon status in hub mode) |
|
|
310
|
+
| `opendevbrowser_cookie_import` | Import validated cookies into the current session |
|
|
311
|
+
| `opendevbrowser_cookie_list` | List session cookies with optional URL filters |
|
|
154
312
|
|
|
155
313
|
### Tab/Target Management
|
|
156
314
|
| Tool | Description |
|
|
@@ -174,9 +332,14 @@ OpenDevBrowser provides **30 tools** organized by category:
|
|
|
174
332
|
| `opendevbrowser_wait` | Wait for load state or element |
|
|
175
333
|
| `opendevbrowser_snapshot` | Capture page accessibility tree with refs |
|
|
176
334
|
| `opendevbrowser_click` | Click element by ref |
|
|
335
|
+
| `opendevbrowser_hover` | Hover element by ref |
|
|
336
|
+
| `opendevbrowser_press` | Press a keyboard key (optionally focusing a ref) |
|
|
337
|
+
| `opendevbrowser_check` | Check checkbox/toggle by ref |
|
|
338
|
+
| `opendevbrowser_uncheck` | Uncheck checkbox/toggle by ref |
|
|
177
339
|
| `opendevbrowser_type` | Type text into input by ref |
|
|
178
340
|
| `opendevbrowser_select` | Select dropdown option by ref |
|
|
179
341
|
| `opendevbrowser_scroll` | Scroll page or element |
|
|
342
|
+
| `opendevbrowser_scroll_into_view` | Scroll element into view by ref |
|
|
180
343
|
| `opendevbrowser_run` | Execute multiple actions in sequence |
|
|
181
344
|
|
|
182
345
|
### DOM Inspection
|
|
@@ -184,16 +347,32 @@ OpenDevBrowser provides **30 tools** organized by category:
|
|
|
184
347
|
|------|-------------|
|
|
185
348
|
| `opendevbrowser_dom_get_html` | Get outerHTML of element by ref |
|
|
186
349
|
| `opendevbrowser_dom_get_text` | Get innerText of element by ref |
|
|
350
|
+
| `opendevbrowser_get_attr` | Get attribute value by ref |
|
|
351
|
+
| `opendevbrowser_get_value` | Get input value by ref |
|
|
352
|
+
| `opendevbrowser_is_visible` | Check if element is visible |
|
|
353
|
+
| `opendevbrowser_is_enabled` | Check if element is enabled |
|
|
354
|
+
| `opendevbrowser_is_checked` | Check if element is checked |
|
|
187
355
|
|
|
188
356
|
### DevTools & Analysis
|
|
189
357
|
| Tool | Description |
|
|
190
358
|
|------|-------------|
|
|
191
359
|
| `opendevbrowser_console_poll` | Poll console logs since sequence |
|
|
192
360
|
| `opendevbrowser_network_poll` | Poll network requests since sequence |
|
|
361
|
+
| `opendevbrowser_debug_trace_snapshot` | Capture a unified page + console + network + exception diagnostic bundle |
|
|
193
362
|
| `opendevbrowser_screenshot` | Capture page screenshot |
|
|
194
363
|
| `opendevbrowser_perf` | Get page performance metrics |
|
|
195
364
|
| `opendevbrowser_prompting_guide` | Get best-practice prompting guidance |
|
|
196
365
|
|
|
366
|
+
### Macro Workflows
|
|
367
|
+
| Tool | Description |
|
|
368
|
+
|------|-------------|
|
|
369
|
+
| `opendevbrowser_macro_resolve` | Resolve macro expressions into provider action/provenance (optionally execute) |
|
|
370
|
+
|
|
371
|
+
### Annotation
|
|
372
|
+
| Tool | Description |
|
|
373
|
+
|------|-------------|
|
|
374
|
+
| `opendevbrowser_annotate` | Capture interactive annotations via extension relay |
|
|
375
|
+
|
|
197
376
|
### Export & Cloning
|
|
198
377
|
| Tool | Description |
|
|
199
378
|
|------|-------------|
|
|
@@ -210,22 +389,29 @@ OpenDevBrowser provides **30 tools** organized by category:
|
|
|
210
389
|
|
|
211
390
|
## Bundled Skills
|
|
212
391
|
|
|
213
|
-
OpenDevBrowser includes **
|
|
392
|
+
OpenDevBrowser includes **8 task-specific skill packs**:
|
|
214
393
|
|
|
215
394
|
| Skill | Purpose |
|
|
216
395
|
|-------|---------|
|
|
217
396
|
| `opendevbrowser-best-practices` | Core prompting patterns and workflow guidance |
|
|
218
397
|
| `opendevbrowser-continuity-ledger` | Long-running task state management |
|
|
219
|
-
| `login-automation` | Authentication flow patterns |
|
|
220
|
-
| `form-testing` | Form validation and submission workflows |
|
|
221
|
-
| `data-extraction` | Structured data scraping patterns |
|
|
398
|
+
| `opendevbrowser-login-automation` | Authentication flow patterns |
|
|
399
|
+
| `opendevbrowser-form-testing` | Form validation and submission workflows |
|
|
400
|
+
| `opendevbrowser-data-extraction` | Structured data scraping patterns |
|
|
401
|
+
| `opendevbrowser-research` | Deterministic multi-source research workflows |
|
|
402
|
+
| `opendevbrowser-shopping` | Deterministic multi-provider deal comparison workflows |
|
|
403
|
+
| `opendevbrowser-product-presentation-asset` | Product screenshot/copy asset collection for presentation pipelines |
|
|
222
404
|
|
|
223
405
|
Skills are discovered from (priority order):
|
|
224
406
|
1. `.opencode/skill/` (project)
|
|
225
407
|
2. `~/.config/opencode/skill/` (global)
|
|
226
|
-
3. `.
|
|
227
|
-
4.
|
|
228
|
-
5.
|
|
408
|
+
3. `.codex/skills/` (project compatibility)
|
|
409
|
+
4. `$CODEX_HOME/skills` (global compatibility; fallback `~/.codex/skills`)
|
|
410
|
+
5. `.claude/skills/` (ClaudeCode project compatibility)
|
|
411
|
+
6. `$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` (ClaudeCode global compatibility; fallback `~/.claude/skills`)
|
|
412
|
+
7. `.amp/skills/` (AmpCLI project compatibility)
|
|
413
|
+
8. `$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` (AmpCLI global compatibility; fallback `~/.amp/skills`)
|
|
414
|
+
9. Custom paths via `skillPaths` config
|
|
229
415
|
|
|
230
416
|
Load a skill: `opendevbrowser_skill_load` with `name` and optional `topic` filter.
|
|
231
417
|
|
|
@@ -239,22 +425,49 @@ Load a skill: `opendevbrowser_skill_load` with `name` and optional `topic` filte
|
|
|
239
425
|
| **CDP Connect** | `opendevbrowser_connect` | Attach to existing Chrome with `--remote-debugging-port` |
|
|
240
426
|
| **Extension Relay** | Chrome Extension | Attach to logged-in tabs via relay server |
|
|
241
427
|
|
|
428
|
+
Default behavior: `opendevbrowser_launch` prefers **Extension Relay** when available. Use `--no-extension` (and `--headless` if desired) for managed sessions.
|
|
429
|
+
|
|
430
|
+
Extension relay relies on **flat CDP sessions (Chrome 125+)** and uses DebuggerSession `sessionId` routing for multi-tab and child-target support. When hub mode is enabled, the hub daemon is the sole relay owner and there is **no local relay fallback**.
|
|
431
|
+
|
|
432
|
+
Relay ops endpoint: `ws://127.0.0.1:<relayPort>/ops`.
|
|
433
|
+
The connect command also accepts base relay WS URLs (`ws://127.0.0.1:<relayPort>` or `ws://localhost:<relayPort>`) and normalizes them to `/ops`.
|
|
434
|
+
Legacy relay `/cdp` remains available with explicit opt-in (`--extension-legacy`).
|
|
435
|
+
When pairing is enabled, both `/ops` and `/cdp` require a relay token (`?token=<relayToken>`). Tools and the CLI auto-fetch relay config and tokens.
|
|
436
|
+
|
|
437
|
+
## Ops vs CDP
|
|
438
|
+
|
|
439
|
+
| Channel | What It Does | When to Use It |
|
|
440
|
+
|---------|---------------|----------------|
|
|
441
|
+
| **`/ops` (default)** | High-level automation protocol with session ownership, event streaming, and multi-client handling | Preferred extension relay path for modern workflows |
|
|
442
|
+
| **`/cdp` (legacy)** | Low-level CDP relay path with compatibility-focused behavior | Opt-in compatibility mode (`--extension-legacy`) |
|
|
443
|
+
| **Direct CDP connect** | Attach to Chrome started with `--remote-debugging-port` | Existing debug/browser setups without extension relay |
|
|
444
|
+
|
|
445
|
+
For full `/ops` command names, `/cdp` envelope details, and mode/flag matrices, see [docs/SURFACE_REFERENCE.md](docs/SURFACE_REFERENCE.md).
|
|
446
|
+
|
|
242
447
|
---
|
|
243
448
|
|
|
449
|
+
## Breaking Changes (latest)
|
|
450
|
+
|
|
451
|
+
- `opendevbrowser_launch` now prefers the extension relay by default. Use `--no-extension` (and `--headless` if desired) for managed sessions.
|
|
452
|
+
- Relay `/ops` (default) and legacy `/cdp` both require a token when pairing is enabled; tools/CLI handle this automatically.
|
|
453
|
+
|
|
244
454
|
## Chrome Extension (Optional)
|
|
245
455
|
|
|
246
|
-
The extension enables **
|
|
456
|
+
The extension enables **Extension Relay** mode - attach to existing logged-in browser tabs without launching a new browser.
|
|
457
|
+
|
|
458
|
+
**Requirements:** Chrome 125+ (flat CDP sessions). Older versions will fail fast with a clear error.
|
|
247
459
|
|
|
248
460
|
### Auto-Connect + Auto-Pair
|
|
249
461
|
|
|
250
|
-
The plugin and extension can automatically pair:
|
|
462
|
+
The runtime (plugin or CLI daemon) and extension can automatically pair:
|
|
251
463
|
|
|
252
|
-
1. **
|
|
464
|
+
1. **Runtime side**: Starts a local relay server and config discovery endpoint
|
|
253
465
|
2. **Extension side**: Enable "Auto-Pair" toggle and click Connect
|
|
254
466
|
3. Extension fetches relay port from discovery, then fetches token from the relay server
|
|
255
467
|
4. Connection established with color indicator (green = connected)
|
|
256
468
|
|
|
257
|
-
**Auto-connect** and **Auto-pair** are enabled by default for a seamless setup. The extension badge shows status (
|
|
469
|
+
**Auto-connect** and **Auto-pair** are enabled by default for a seamless setup. The extension badge shows a small status dot (green = connected, red = disconnected).
|
|
470
|
+
If the relay is unavailable, the background worker retries `/config` + `/pair` with exponential backoff (using `chrome.alarms`).
|
|
258
471
|
|
|
259
472
|
### Default Settings (Extension)
|
|
260
473
|
|
|
@@ -273,15 +486,28 @@ The plugin and extension can automatically pair:
|
|
|
273
486
|
3. If pairing is required and Auto-pair is on, it fetches the token from `http://127.0.0.1:<relayPort>/pair`.
|
|
274
487
|
4. It connects to `ws://127.0.0.1:<relayPort>/extension` using the extension origin.
|
|
275
488
|
|
|
276
|
-
`/config` and `/pair`
|
|
489
|
+
`/config` and `/pair` accept loopback requests with no `Origin` (including `Origin: null`) to support MV3 + PNA; non-extension origins are still rejected, and preflights include `Access-Control-Allow-Private-Network: true`.
|
|
490
|
+
|
|
491
|
+
### Troubleshooting: Extension Won't Connect
|
|
492
|
+
|
|
493
|
+
- Ensure the active tab is a normal `http(s)` page (not `chrome://` or extension pages).
|
|
494
|
+
- Confirm `relayPort` and `relayToken` in `~/.config/opencode/opendevbrowser.jsonc` match the popup (Auto-pair should fetch the token).
|
|
495
|
+
- If `relayPort` is `0`, the relay is off.
|
|
496
|
+
- `relayToken: false` disables relay/hub behavior entirely.
|
|
497
|
+
- `relayToken: ""` (empty string) keeps relay enabled but disables pairing requirements.
|
|
498
|
+
- Install auto-start with `npx opendevbrowser daemon install` so the relay is available on login.
|
|
499
|
+
- Clear extension local data and retry if the token/port seem stuck.
|
|
500
|
+
- If another process owns the port, change `relayPort` or stop it; `opencode` listening is expected.
|
|
277
501
|
|
|
278
502
|
### Manual Setup
|
|
279
503
|
|
|
280
|
-
1.
|
|
504
|
+
1. Ensure extension assets exist by running either:
|
|
505
|
+
- `npx opendevbrowser --full` (installer path), or
|
|
506
|
+
- `npm run extension:build` (repo/dev path)
|
|
281
507
|
2. Load unpacked from `~/.config/opencode/opendevbrowser/extension`
|
|
282
508
|
(fallback: `~/.cache/opencode/node_modules/opendevbrowser/extension`).
|
|
283
509
|
3. Open extension popup
|
|
284
|
-
4. Enter the same relay port and token as the
|
|
510
|
+
4. Enter the same relay port and token as the runtime config
|
|
285
511
|
(if `relayToken` is missing, either add one to `opendevbrowser.jsonc` or use Auto-Pair).
|
|
286
512
|
5. Click Connect
|
|
287
513
|
|
|
@@ -325,6 +551,15 @@ Optional config file: `~/.config/opencode/opendevbrowser.jsonc`
|
|
|
325
551
|
"allowUnsafeExport": false
|
|
326
552
|
},
|
|
327
553
|
|
|
554
|
+
// Provider workflow cookie defaults (optional)
|
|
555
|
+
"providers": {
|
|
556
|
+
"cookiePolicy": "auto",
|
|
557
|
+
"cookieSource": {
|
|
558
|
+
"type": "file",
|
|
559
|
+
"value": "~/.config/opencode/opendevbrowser.provider-cookies.json"
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
|
|
328
563
|
// Skills configuration
|
|
329
564
|
"skills": {
|
|
330
565
|
"nudge": {
|
|
@@ -350,17 +585,40 @@ Optional config file: `~/.config/opencode/opendevbrowser.jsonc`
|
|
|
350
585
|
"relayPort": 8787,
|
|
351
586
|
"relayToken": "auto-generated-on-first-run",
|
|
352
587
|
|
|
588
|
+
// Hub daemon (relay ownership + FIFO queue)
|
|
589
|
+
"daemonPort": 8788,
|
|
590
|
+
"daemonToken": "auto-generated-on-first-run",
|
|
591
|
+
|
|
353
592
|
// Updates
|
|
354
593
|
"checkForUpdates": false
|
|
355
594
|
}
|
|
356
595
|
```
|
|
357
596
|
|
|
358
|
-
All fields optional.
|
|
597
|
+
All fields are optional. OpenDevBrowser works with sensible defaults.
|
|
359
598
|
|
|
360
599
|
---
|
|
361
600
|
|
|
362
601
|
## CLI Commands
|
|
363
602
|
|
|
603
|
+
The CLI is agent-agnostic and supports the full automation surface (session, navigation, interaction, DOM, targets, pages, export, devtools, and annotate).
|
|
604
|
+
All commands listed in the CLI reference are implemented and available in the current codebase.
|
|
605
|
+
See [docs/CLI.md](docs/CLI.md) for the full command and flag matrix.
|
|
606
|
+
See [docs/SURFACE_REFERENCE.md](docs/SURFACE_REFERENCE.md) for the source-accurate inventory matrix (CLI commands, 48 tools, `/ops` and `/cdp` channel contracts).
|
|
607
|
+
|
|
608
|
+
### CLI Category Matrix (core command groups)
|
|
609
|
+
|
|
610
|
+
| Category | Commands |
|
|
611
|
+
|---------|----------|
|
|
612
|
+
| Install/runtime | `install`, `update`, `uninstall`, `help`, `version`, `serve`, `daemon`, `native`, `run` |
|
|
613
|
+
| Session/connection | `launch`, `connect`, `disconnect`, `status`, `cookie-import`, `cookie-list` |
|
|
614
|
+
| Navigation | `goto`, `wait`, `snapshot` |
|
|
615
|
+
| Interaction | `click`, `hover`, `press`, `check`, `uncheck`, `type`, `select`, `scroll`, `scroll-into-view` |
|
|
616
|
+
| Targets/pages | `targets-list`, `target-use`, `target-new`, `target-close`, `page`, `pages`, `page-close` |
|
|
617
|
+
| DOM | `dom-html`, `dom-text`, `dom-attr`, `dom-value`, `dom-visible`, `dom-enabled`, `dom-checked` |
|
|
618
|
+
| Export/diagnostics/macro/annotation/power | `clone-page`, `clone-component`, `perf`, `screenshot`, `console-poll`, `network-poll`, `debug-trace-snapshot`, `macro-resolve`, `annotate`, `rpc` |
|
|
619
|
+
|
|
620
|
+
### Install/Management
|
|
621
|
+
|
|
364
622
|
| Command | Description |
|
|
365
623
|
|---------|-------------|
|
|
366
624
|
| `npx opendevbrowser` | Interactive install |
|
|
@@ -368,20 +626,53 @@ All fields optional. Plugin works with sensible defaults.
|
|
|
368
626
|
| `npx opendevbrowser --local` | Install to project config |
|
|
369
627
|
| `npx opendevbrowser --with-config` | Also create opendevbrowser.jsonc |
|
|
370
628
|
| `npx opendevbrowser --full` | Full install (config + extension assets) |
|
|
629
|
+
| `npm install -g opendevbrowser` | Install persistent global CLI |
|
|
371
630
|
| `npx opendevbrowser --update` | Clear cache, trigger reinstall |
|
|
372
631
|
| `npx opendevbrowser --uninstall` | Remove from config |
|
|
373
632
|
| `npx opendevbrowser --version` | Show version |
|
|
374
633
|
|
|
634
|
+
### Common Automation Commands (Daemon-backed)
|
|
635
|
+
|
|
636
|
+
Start the daemon with `npx opendevbrowser serve`, then use:
|
|
637
|
+
|
|
638
|
+
| Command | Description |
|
|
639
|
+
|---------|-------------|
|
|
640
|
+
| `npx opendevbrowser launch` | Launch session (defaults to extension mode when available) |
|
|
641
|
+
| `npx opendevbrowser connect` | Connect via relay or direct CDP endpoint |
|
|
642
|
+
| `npx opendevbrowser disconnect` | Disconnect session |
|
|
643
|
+
| `npx opendevbrowser status` | Show session status |
|
|
644
|
+
| `npx opendevbrowser goto` | Navigate to URL |
|
|
645
|
+
| `npx opendevbrowser wait` | Wait for load or element |
|
|
646
|
+
| `npx opendevbrowser snapshot` | Capture snapshot with refs |
|
|
647
|
+
| `npx opendevbrowser click` | Click element by ref |
|
|
648
|
+
| `npx opendevbrowser type` | Type into element by ref |
|
|
649
|
+
| `npx opendevbrowser select` | Select dropdown option by ref |
|
|
650
|
+
| `npx opendevbrowser scroll` | Scroll page or element |
|
|
651
|
+
| `npx opendevbrowser run` | Run a JSON script |
|
|
652
|
+
| `npx opendevbrowser macro-resolve --expression '@media.search("youtube transcript parity", "youtube", 5)' --execute --timeout-ms 120000` | Execute macro plans with extended timeout for slow runs |
|
|
653
|
+
|
|
654
|
+
Workflow cookie controls (`research run`, `shopping run`, `product-video run`):
|
|
655
|
+
- Defaults come from `providers.cookiePolicy` (`off|auto|required`) and `providers.cookieSource` (`file|env|inline`).
|
|
656
|
+
- Per-run overrides: `--use-cookies`, `--cookie-policy-override` (alias `--cookie-policy`).
|
|
657
|
+
- `auto` is non-blocking when cookies are unavailable; `required` fails fast with `reasonCode=auth_required`.
|
|
658
|
+
|
|
375
659
|
---
|
|
376
660
|
|
|
377
661
|
## Security
|
|
378
662
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
663
|
+
OpenDevBrowser is **secure by default** with defense-in-depth protections:
|
|
664
|
+
|
|
665
|
+
| Protection | Details |
|
|
666
|
+
|------------|---------|
|
|
667
|
+
| **CDP Localhost-Only** | Remote endpoints blocked; hostname normalized to prevent bypass |
|
|
668
|
+
| **Timing-Safe Auth** | `crypto.timingSafeEqual()` for token comparison |
|
|
669
|
+
| **Origin Validation** | `/extension` requires `chrome-extension://` origin; `/ops`, `/cdp`, `/annotation`, and `/config`/`/status`/`/pair` allow loopback no-Origin requests |
|
|
670
|
+
| **PNA Preflights** | HTTP preflights include `Access-Control-Allow-Private-Network: true` when requested |
|
|
671
|
+
| **Rate Limiting** | 5 handshake attempts/minute per IP, plus HTTP rate limiting for `/config`, `/status`, `/pair` |
|
|
672
|
+
| **Data Redaction** | Tokens, API keys, sensitive paths auto-redacted |
|
|
673
|
+
| **Export Sanitization** | Scripts, event handlers, dangerous CSS stripped |
|
|
674
|
+
| **Atomic Writes** | Config writes are atomic to prevent corruption |
|
|
675
|
+
| **Secure Defaults** | `allowRawCDP`, `allowNonLocalCdp`, `allowUnsafeExport` all `false` |
|
|
385
676
|
|
|
386
677
|
---
|
|
387
678
|
|
|
@@ -398,6 +689,85 @@ npx opendevbrowser --update
|
|
|
398
689
|
|
|
399
690
|
Architecture overview: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)
|
|
400
691
|
Release checklist: [docs/DISTRIBUTION_PLAN.md](docs/DISTRIBUTION_PLAN.md)
|
|
692
|
+
Documentation index: [docs/README.md](docs/README.md)
|
|
693
|
+
Frontend docs: [docs/FRONTEND.md](docs/FRONTEND.md)
|
|
694
|
+
Dependency inventory: [docs/DEPENDENCIES.md](docs/DEPENDENCIES.md)
|
|
695
|
+
|
|
696
|
+
---
|
|
697
|
+
|
|
698
|
+
## Architecture
|
|
699
|
+
|
|
700
|
+
```
|
|
701
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
702
|
+
│ Distribution Layer │
|
|
703
|
+
├──────────────────┬──────────────────┬──────────────────┬──────────────────────────┤
|
|
704
|
+
│ OpenCode Plugin │ CLI │ Hub Daemon │ Chrome Extension │
|
|
705
|
+
│ (src/index.ts) │ (src/cli/index) │ (opendevbrowser │ (extension/src/) │
|
|
706
|
+
│ │ │ serve) │ │
|
|
707
|
+
└────────┬─────────┴────────┬─────────┴─────────┬────────┴──────────────┬────────────┘
|
|
708
|
+
│ │ │ │
|
|
709
|
+
▼ ▼ ▼ ▼
|
|
710
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
711
|
+
│ Core Runtime (src/core/) │
|
|
712
|
+
│ bootstrap.ts → wires managers, injects ToolDeps │
|
|
713
|
+
└────────┬────────────────────────────────────────────────────────┘
|
|
714
|
+
│
|
|
715
|
+
┌────┴────┬─────────────┬──────────────┬──────────────┬──────────────┐
|
|
716
|
+
▼ ▼ ▼ ▼ ▼ ▼
|
|
717
|
+
┌────────┐ ┌────────┐ ┌──────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
|
|
718
|
+
│Browser │ │Script │ │Snapshot │ │ Annotation │ │ Relay │ │ Skills │
|
|
719
|
+
│Manager │ │Runner │ │Pipeline │ │ Manager │ │ Server │ │ Loader │
|
|
720
|
+
└───┬────┘ └────────┘ └──────────┘ └────────────┘ └─────┬──────┘ └────────────┘
|
|
721
|
+
│ │
|
|
722
|
+
▼ ▼
|
|
723
|
+
┌────────┐ ┌────────────┐
|
|
724
|
+
│Target │ │ Extension │
|
|
725
|
+
│Manager │ │ (WS relay) │
|
|
726
|
+
└────────┘ └────────────┘
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
### Data Flow
|
|
730
|
+
|
|
731
|
+
```
|
|
732
|
+
Tool Call → Zod Validation → Manager/Runner → CDP/Playwright → Response
|
|
733
|
+
↓
|
|
734
|
+
Snapshot (AX-tree → refs)
|
|
735
|
+
↓
|
|
736
|
+
Action (ref → backendNodeId → DOM)
|
|
737
|
+
```
|
|
738
|
+
|
|
739
|
+
### System Workflow (Happy Path)
|
|
740
|
+
|
|
741
|
+
1. `launch` (extension or managed) -> `sessionId`
|
|
742
|
+
2. `snapshot` -> refs
|
|
743
|
+
3. Action commands (`click`, `type`, `press`, `hover`, `check`, etc.) -> repeat snapshot
|
|
744
|
+
4. `disconnect` on completion
|
|
745
|
+
|
|
746
|
+
### Repository Layout
|
|
747
|
+
|
|
748
|
+
```
|
|
749
|
+
.
|
|
750
|
+
├── src/ # Plugin implementation
|
|
751
|
+
│ ├── browser/ # BrowserManager, TargetManager, CDP lifecycle
|
|
752
|
+
│ ├── cache/ # Chrome executable resolution
|
|
753
|
+
│ ├── cli/ # CLI commands, daemon, installers
|
|
754
|
+
│ ├── core/ # Bootstrap, runtime wiring, ToolDeps
|
|
755
|
+
│ ├── devtools/ # Console/network trackers with redaction
|
|
756
|
+
│ ├── export/ # DOM capture, React emitter, CSS extraction
|
|
757
|
+
│ ├── relay/ # Extension relay server, protocol types
|
|
758
|
+
│ ├── skills/ # SkillLoader for skill pack discovery
|
|
759
|
+
│ ├── snapshot/ # AX-tree snapshots, ref management
|
|
760
|
+
│ ├── tools/ # 48 opendevbrowser_* tool definitions
|
|
761
|
+
│ ├── annotate/ # Annotation transports + output shaping
|
|
762
|
+
│ └── utils/ # Shared utilities
|
|
763
|
+
├── extension/ # Chrome extension (relay client)
|
|
764
|
+
├── scripts/ # Operational scripts (build/sync/smoke)
|
|
765
|
+
├── skills/ # Bundled skill packs (8 total)
|
|
766
|
+
├── tests/ # Vitest tests (97% coverage required)
|
|
767
|
+
└── docs/ # Architecture, CLI, extension, distribution plans
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
Extension relay uses flat CDP sessions (Chrome 125+) with DebuggerSession `sessionId` routing for multi-tab support. When hub mode is enabled, the hub daemon is the sole relay owner and enforces a FIFO lease queue for multi-client safety. See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full architecture reference.
|
|
401
771
|
|
|
402
772
|
---
|
|
403
773
|
|
|
@@ -406,14 +776,14 @@ Release checklist: [docs/DISTRIBUTION_PLAN.md](docs/DISTRIBUTION_PLAN.md)
|
|
|
406
776
|
```bash
|
|
407
777
|
npm install
|
|
408
778
|
npm run build # Compile to dist/
|
|
409
|
-
npm run test # Run tests with coverage
|
|
410
|
-
npm run lint # ESLint checks
|
|
779
|
+
npm run test # Run tests with coverage (97% threshold)
|
|
780
|
+
npm run lint # ESLint checks (strict TypeScript)
|
|
411
781
|
npm run extension:build # Compile extension
|
|
412
782
|
npm run version:check # Verify package/extension version alignment
|
|
413
783
|
npm run extension:pack # Build extension zip for releases
|
|
414
784
|
```
|
|
415
785
|
|
|
416
|
-
### Packaging & Distribution (
|
|
786
|
+
### Packaging & Distribution (Public + Private)
|
|
417
787
|
|
|
418
788
|
Uniform versioning is required (source of truth: `package.json`):
|
|
419
789
|
|
|
@@ -422,10 +792,23 @@ Uniform versioning is required (source of truth: `package.json`):
|
|
|
422
792
|
3. Run: `npm run version:check`
|
|
423
793
|
4. Run: `npm run build`
|
|
424
794
|
5. Run: `npm run extension:build`
|
|
425
|
-
6. Run
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
795
|
+
6. Run release audits:
|
|
796
|
+
- `node scripts/audit-zombie-files.mjs`
|
|
797
|
+
- `node scripts/docs-drift-check.mjs`
|
|
798
|
+
- `node scripts/chrome-store-compliance-check.mjs`
|
|
799
|
+
7. Run strict live release gates:
|
|
800
|
+
- `node scripts/provider-live-matrix.mjs --release-gate --out artifacts/release/v0.0.16/provider-live-matrix.json`
|
|
801
|
+
- `node scripts/live-regression-matrix.mjs --release-gate`
|
|
802
|
+
8. Run first-time global install dry run checklist from `docs/FIRST_RUN_ONBOARDING.md`.
|
|
803
|
+
9. Run: `npm run extension:pack` (outputs `./opendevbrowser-extension.zip`)
|
|
804
|
+
10. Tag `vX.Y.Z` and let `.github/workflows/release-public.yml` publish npm + GitHub release artifacts.
|
|
805
|
+
11. Dispatch website content sync to private repo through `.github/workflows/dispatch-private-sync.yml`.
|
|
806
|
+
|
|
807
|
+
Runbooks:
|
|
808
|
+
- `docs/DISTRIBUTION_PLAN.md`
|
|
809
|
+
- `docs/RELEASE_RUNBOOK.md`
|
|
810
|
+
- `docs/EXTENSION_RELEASE_RUNBOOK.md`
|
|
811
|
+
- `docs/CUTOVER_CHECKLIST.md`
|
|
429
812
|
|
|
430
813
|
---
|
|
431
814
|
|