opendevbrowser 0.0.15 → 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 +1 -1
- package/README.md +229 -34
- 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 +2205 -267
- 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 +867 -87
- 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 +867 -87
- 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/background.js +10 -4
- package/extension/dist/ops/ops-runtime.js +506 -4
- package/extension/dist/ops/ops-session-store.js +16 -2
- package/extension/dist/ops/parallelism-governor.js +117 -0
- package/extension/dist/ops/snapshot-shared.js +21 -5
- package/extension/dist/services/CDPRouter.js +70 -5
- package/extension/dist/services/ConnectionManager.js +5 -3
- 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 +1 -1
- package/package.json +25 -16
- 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 +17 -8
- package/skills/opendevbrowser-best-practices/SKILL.md +178 -72
- 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 +10 -0
- 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-JVBMT2O5.js +0 -7173
- package/dist/chunk-JVBMT2O5.js.map +0 -1
- package/skills/data-extraction/SKILL.md +0 -128
- package/skills/form-testing/SKILL.md +0 -106
- package/skills/login-automation/SKILL.md +0 -108
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { OpenDevBrowserConfig } from "../config";
|
|
2
|
+
import type { BrowserManagerLike } from "./manager-types";
|
|
3
|
+
import type { ConnectOptions, LaunchOptions } from "./browser-manager";
|
|
4
|
+
import type { TargetInfo } from "./target-manager";
|
|
5
|
+
import type { ReactExport } from "../export/react-emitter";
|
|
6
|
+
import type { ConsoleTracker } from "../devtools/console-tracker";
|
|
7
|
+
import type { NetworkTracker } from "../devtools/network-tracker";
|
|
8
|
+
import { BrowserManager } from "./browser-manager";
|
|
9
|
+
type CookieImportRecord = {
|
|
10
|
+
name: string;
|
|
11
|
+
value: string;
|
|
12
|
+
url?: string;
|
|
13
|
+
domain?: string;
|
|
14
|
+
path?: string;
|
|
15
|
+
expires?: number;
|
|
16
|
+
httpOnly?: boolean;
|
|
17
|
+
secure?: boolean;
|
|
18
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
19
|
+
};
|
|
20
|
+
type CookieListRecord = {
|
|
21
|
+
name: string;
|
|
22
|
+
value: string;
|
|
23
|
+
domain: string;
|
|
24
|
+
path: string;
|
|
25
|
+
expires: number;
|
|
26
|
+
httpOnly: boolean;
|
|
27
|
+
secure: boolean;
|
|
28
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
29
|
+
};
|
|
30
|
+
export declare class OpsBrowserManager implements BrowserManagerLike {
|
|
31
|
+
private readonly base;
|
|
32
|
+
private readonly config;
|
|
33
|
+
private opsClient;
|
|
34
|
+
private opsEndpoint;
|
|
35
|
+
private opsSessions;
|
|
36
|
+
private opsLeases;
|
|
37
|
+
private closedOpsSessions;
|
|
38
|
+
constructor(base: BrowserManager, config: OpenDevBrowserConfig);
|
|
39
|
+
launch(options: LaunchOptions): ReturnType<BrowserManagerLike["launch"]>;
|
|
40
|
+
connect(options: ConnectOptions): ReturnType<BrowserManagerLike["connect"]>;
|
|
41
|
+
connectRelay(wsEndpoint: string): ReturnType<BrowserManagerLike["connectRelay"]>;
|
|
42
|
+
private buildParallelismPolicyPayload;
|
|
43
|
+
disconnect(sessionId: string, closeBrowser?: boolean): ReturnType<BrowserManagerLike["disconnect"]>;
|
|
44
|
+
status(sessionId: string): ReturnType<BrowserManagerLike["status"]>;
|
|
45
|
+
withPage<T>(sessionId: string, targetId: string | null, fn: (page: never) => Promise<T>): Promise<T>;
|
|
46
|
+
cookieImport(sessionId: string, cookies: CookieImportRecord[], strict?: boolean, requestId?: string): Promise<{
|
|
47
|
+
requestId: string;
|
|
48
|
+
imported: number;
|
|
49
|
+
rejected: Array<{
|
|
50
|
+
index: number;
|
|
51
|
+
reason: string;
|
|
52
|
+
}>;
|
|
53
|
+
}>;
|
|
54
|
+
cookieList(sessionId: string, urls?: string[], requestId?: string): Promise<{
|
|
55
|
+
requestId: string;
|
|
56
|
+
cookies: CookieListRecord[];
|
|
57
|
+
count: number;
|
|
58
|
+
}>;
|
|
59
|
+
goto(sessionId: string, url: string, waitUntil?: "domcontentloaded" | "load" | "networkidle", timeoutMs?: number, _sessionOverride?: {
|
|
60
|
+
browser: unknown;
|
|
61
|
+
context: unknown;
|
|
62
|
+
targets: unknown;
|
|
63
|
+
}, targetId?: string | null): ReturnType<BrowserManagerLike["goto"]>;
|
|
64
|
+
waitForLoad(sessionId: string, until: "domcontentloaded" | "load" | "networkidle", timeoutMs?: number, targetId?: string | null): ReturnType<BrowserManagerLike["waitForLoad"]>;
|
|
65
|
+
waitForRef(sessionId: string, ref: string, state?: "attached" | "visible" | "hidden", timeoutMs?: number, targetId?: string | null): ReturnType<BrowserManagerLike["waitForRef"]>;
|
|
66
|
+
snapshot(sessionId: string, mode: "outline" | "actionables", maxChars: number, cursor?: string, targetId?: string | null): ReturnType<BrowserManagerLike["snapshot"]>;
|
|
67
|
+
click(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["click"]>;
|
|
68
|
+
hover(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["hover"]>;
|
|
69
|
+
press(sessionId: string, key: string, ref?: string, targetId?: string | null): ReturnType<BrowserManagerLike["press"]>;
|
|
70
|
+
check(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["check"]>;
|
|
71
|
+
uncheck(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["uncheck"]>;
|
|
72
|
+
type(sessionId: string, ref: string, text: string, clear?: boolean, submit?: boolean, targetId?: string | null): ReturnType<BrowserManagerLike["type"]>;
|
|
73
|
+
select(sessionId: string, ref: string, values: string[], targetId?: string | null): ReturnType<BrowserManagerLike["select"]>;
|
|
74
|
+
scroll(sessionId: string, dy: number, ref?: string, targetId?: string | null): ReturnType<BrowserManagerLike["scroll"]>;
|
|
75
|
+
scrollIntoView(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["scrollIntoView"]>;
|
|
76
|
+
domGetHtml(sessionId: string, ref: string, maxChars?: number, targetId?: string | null): ReturnType<BrowserManagerLike["domGetHtml"]>;
|
|
77
|
+
domGetText(sessionId: string, ref: string, maxChars?: number, targetId?: string | null): ReturnType<BrowserManagerLike["domGetText"]>;
|
|
78
|
+
domGetAttr(sessionId: string, ref: string, name: string, targetId?: string | null): ReturnType<BrowserManagerLike["domGetAttr"]>;
|
|
79
|
+
domGetValue(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["domGetValue"]>;
|
|
80
|
+
domIsVisible(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["domIsVisible"]>;
|
|
81
|
+
domIsEnabled(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["domIsEnabled"]>;
|
|
82
|
+
domIsChecked(sessionId: string, ref: string, targetId?: string | null): ReturnType<BrowserManagerLike["domIsChecked"]>;
|
|
83
|
+
clonePage(sessionId: string, targetId?: string | null): Promise<ReactExport>;
|
|
84
|
+
cloneComponent(sessionId: string, ref: string, targetId?: string | null): Promise<ReactExport>;
|
|
85
|
+
perfMetrics(sessionId: string, targetId?: string | null): ReturnType<BrowserManagerLike["perfMetrics"]>;
|
|
86
|
+
screenshot(sessionId: string, path?: string, targetId?: string | null): ReturnType<BrowserManagerLike["screenshot"]>;
|
|
87
|
+
consolePoll(sessionId: string, sinceSeq?: number, max?: number): Promise<{
|
|
88
|
+
events: ReturnType<ConsoleTracker["poll"]>["events"];
|
|
89
|
+
nextSeq: number;
|
|
90
|
+
}>;
|
|
91
|
+
networkPoll(sessionId: string, sinceSeq?: number, max?: number): Promise<{
|
|
92
|
+
events: ReturnType<NetworkTracker["poll"]>["events"];
|
|
93
|
+
nextSeq: number;
|
|
94
|
+
}>;
|
|
95
|
+
listTargets(sessionId: string, includeUrls?: boolean): Promise<{
|
|
96
|
+
activeTargetId: string | null;
|
|
97
|
+
targets: TargetInfo[];
|
|
98
|
+
}>;
|
|
99
|
+
useTarget(sessionId: string, targetId: string): Promise<{
|
|
100
|
+
activeTargetId: string;
|
|
101
|
+
url?: string;
|
|
102
|
+
title?: string;
|
|
103
|
+
}>;
|
|
104
|
+
newTarget(sessionId: string, url?: string): Promise<{
|
|
105
|
+
targetId: string;
|
|
106
|
+
}>;
|
|
107
|
+
closeTarget(sessionId: string, targetId: string): Promise<void>;
|
|
108
|
+
page(sessionId: string, name: string, url?: string): Promise<{
|
|
109
|
+
targetId: string;
|
|
110
|
+
created: boolean;
|
|
111
|
+
url?: string;
|
|
112
|
+
title?: string;
|
|
113
|
+
}>;
|
|
114
|
+
listPages(sessionId: string): Promise<{
|
|
115
|
+
pages: Array<{
|
|
116
|
+
name: string;
|
|
117
|
+
targetId: string;
|
|
118
|
+
url?: string;
|
|
119
|
+
title?: string;
|
|
120
|
+
}>;
|
|
121
|
+
}>;
|
|
122
|
+
closePage(sessionId: string, name: string): Promise<void>;
|
|
123
|
+
private ensureOpsClient;
|
|
124
|
+
private withTarget;
|
|
125
|
+
private requestOps;
|
|
126
|
+
private handleOpsEvent;
|
|
127
|
+
private handleOpsClientClosed;
|
|
128
|
+
private trackClosedSessionCleanup;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=ops-browser-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-browser-manager.d.ts","sourceRoot":"","sources":["../../src/browser/ops-browser-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type OpsEvent, type OpsHelloAck } from "../relay/protocol";
|
|
2
|
+
export type OpsClientOptions = {
|
|
3
|
+
handshakeTimeoutMs?: number;
|
|
4
|
+
pingIntervalMs?: number;
|
|
5
|
+
pingTimeoutMs?: number;
|
|
6
|
+
maxPayloadBytes?: number;
|
|
7
|
+
autoReconnect?: boolean;
|
|
8
|
+
reconnectBaseDelayMs?: number;
|
|
9
|
+
reconnectMaxDelayMs?: number;
|
|
10
|
+
maxMissedPongs?: number;
|
|
11
|
+
onEvent?: (event: OpsEvent) => void;
|
|
12
|
+
onClose?: (detail?: {
|
|
13
|
+
code?: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
};
|
|
17
|
+
export declare class OpsClient {
|
|
18
|
+
private url;
|
|
19
|
+
private socket;
|
|
20
|
+
private lastHelloAck;
|
|
21
|
+
private connectPromise;
|
|
22
|
+
private pendingRequests;
|
|
23
|
+
private pendingChunks;
|
|
24
|
+
private pendingPings;
|
|
25
|
+
private heartbeatTimer;
|
|
26
|
+
private handshakeTimeoutMs;
|
|
27
|
+
private pingIntervalMs;
|
|
28
|
+
private pingTimeoutMs;
|
|
29
|
+
private maxPayloadBytes;
|
|
30
|
+
private onEvent?;
|
|
31
|
+
private onClose?;
|
|
32
|
+
private autoReconnect;
|
|
33
|
+
private reconnectBaseDelayMs;
|
|
34
|
+
private reconnectMaxDelayMs;
|
|
35
|
+
private reconnectAttempts;
|
|
36
|
+
private reconnectTimer;
|
|
37
|
+
private shouldReconnectOnClose;
|
|
38
|
+
private missedPongs;
|
|
39
|
+
private maxMissedPongs;
|
|
40
|
+
constructor(url: string, options?: OpsClientOptions);
|
|
41
|
+
connect(): Promise<OpsHelloAck>;
|
|
42
|
+
disconnect(): void;
|
|
43
|
+
request<T>(command: string, payload?: unknown, opsSessionId?: string, timeoutMs?: number, leaseId?: string): Promise<T>;
|
|
44
|
+
private waitForHelloAck;
|
|
45
|
+
private handleMessage;
|
|
46
|
+
private handleClose;
|
|
47
|
+
private startHeartbeat;
|
|
48
|
+
private stopHeartbeat;
|
|
49
|
+
private sendPing;
|
|
50
|
+
private scheduleReconnect;
|
|
51
|
+
private clearReconnectTimer;
|
|
52
|
+
private closeSocket;
|
|
53
|
+
private send;
|
|
54
|
+
private sendRaw;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ops-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-client.d.ts","sourceRoot":"","sources":["../../src/browser/ops-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,QAAQ,EAEb,KAAK,WAAW,EAKjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACjE,CAAC;AAoBF,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAC,CAA4B;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAwD;IACxE,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAS;gBAEnB,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAcjD,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAkFrC,UAAU,IAAI,IAAI;IA6BZ,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,SAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAqC5H,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,aAAa;IAkFrB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;YAOP,QAAQ;IAsBtB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;CAMhB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ParallelismGovernorConfig } from "../config";
|
|
2
|
+
export type ParallelModeVariant = "managedHeaded" | "managedHeadless" | "cdpConnectHeaded" | "cdpConnectHeadless" | "extensionOpsHeaded" | "extensionLegacyCdpHeaded";
|
|
3
|
+
export type ParallelPressureClass = "healthy" | "medium" | "high" | "critical";
|
|
4
|
+
export type ParallelismPressureInput = {
|
|
5
|
+
hostFreeMemPct: number;
|
|
6
|
+
rssUsagePct: number;
|
|
7
|
+
queueAgeMs: number;
|
|
8
|
+
queueDepth: number;
|
|
9
|
+
discardedSignals?: number;
|
|
10
|
+
frozenSignals?: number;
|
|
11
|
+
};
|
|
12
|
+
export type ParallelismGovernorState = {
|
|
13
|
+
modeVariant: ParallelModeVariant;
|
|
14
|
+
staticCap: number;
|
|
15
|
+
effectiveCap: number;
|
|
16
|
+
healthyWindows: number;
|
|
17
|
+
lastSampleAt: number;
|
|
18
|
+
lastPressure: ParallelPressureClass;
|
|
19
|
+
};
|
|
20
|
+
export type ParallelismGovernorSnapshot = {
|
|
21
|
+
state: ParallelismGovernorState;
|
|
22
|
+
pressure: ParallelPressureClass;
|
|
23
|
+
targetCap: number;
|
|
24
|
+
waitQueueDepth: number;
|
|
25
|
+
waitQueueAgeMs: number;
|
|
26
|
+
};
|
|
27
|
+
export declare const resolveStaticCap: (policy: ParallelismGovernorConfig, modeVariant: ParallelModeVariant) => number;
|
|
28
|
+
export declare const createGovernorState: (policy: ParallelismGovernorConfig, modeVariant: ParallelModeVariant) => ParallelismGovernorState;
|
|
29
|
+
export declare const evaluateGovernor: (policy: ParallelismGovernorConfig, current: ParallelismGovernorState, input: ParallelismPressureInput, sampledAt?: number) => ParallelismGovernorSnapshot;
|
|
30
|
+
export declare const rssUsagePercent: (rssBytes: number, budgetMb: number) => number;
|
|
31
|
+
//# sourceMappingURL=parallelism-governor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallelism-governor.d.ts","sourceRoot":"","sources":["../../src/browser/parallelism-governor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,0BAA0B,CAAC;AAE/B,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/E,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,qBAAqB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,wBAAwB,CAAC;IAChC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAkDF,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,yBAAyB,EACjC,aAAa,mBAAmB,KAC/B,MAGF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,yBAAyB,EACjC,aAAa,mBAAmB,KAC/B,wBAUF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,yBAAyB,EACjC,SAAS,wBAAwB,EACjC,OAAO,wBAAwB,EAC/B,kBAAsB,KACrB,2BA0CF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,KAAG,MAGpE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BrowserManagerLike } from "./manager-types";
|
|
2
|
+
export type RunStep = {
|
|
3
|
+
action: string;
|
|
4
|
+
args?: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
export type RunResult = {
|
|
7
|
+
i: number;
|
|
8
|
+
ok: boolean;
|
|
9
|
+
data?: unknown;
|
|
10
|
+
error?: {
|
|
11
|
+
message: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare class ScriptRunner {
|
|
15
|
+
private manager;
|
|
16
|
+
constructor(manager: BrowserManagerLike);
|
|
17
|
+
run(sessionId: string, steps: RunStep[], stopOnError?: boolean): Promise<{
|
|
18
|
+
results: RunResult[];
|
|
19
|
+
timingMs: number;
|
|
20
|
+
}>;
|
|
21
|
+
private executeStep;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=script-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-runner.d.ts","sourceRoot":"","sources":["../../src/browser/script-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,EAAE,kBAAkB;IAIjC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;YA2BzG,WAAW;CA4F1B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Browser, BrowserContext } from "playwright-core";
|
|
2
|
+
import type { BlockerSignalV1 } from "../providers/types";
|
|
3
|
+
export type BrowserMode = "managed" | "cdpConnect" | "extension";
|
|
4
|
+
export type SessionBlockerStateValue = "clear" | "active" | "resolving";
|
|
5
|
+
export type BrowserSession = {
|
|
6
|
+
id: string;
|
|
7
|
+
mode: BrowserMode;
|
|
8
|
+
browser: Browser;
|
|
9
|
+
context: BrowserContext;
|
|
10
|
+
};
|
|
11
|
+
export type SessionBlockerResolutionStatus = "resolved" | "unresolved" | "deferred";
|
|
12
|
+
export type SessionBlockerResolutionReason = "verifier_passed" | "verification_timeout" | "verifier_failed" | "env_limited" | "manual_clear";
|
|
13
|
+
export type SessionBlockerResolution = {
|
|
14
|
+
status: SessionBlockerResolutionStatus;
|
|
15
|
+
reason: SessionBlockerResolutionReason;
|
|
16
|
+
updatedAtMs: number;
|
|
17
|
+
};
|
|
18
|
+
export type SessionBlockerState = {
|
|
19
|
+
state: SessionBlockerStateValue;
|
|
20
|
+
blocker?: BlockerSignalV1;
|
|
21
|
+
targetKey?: string;
|
|
22
|
+
activatedAtMs?: number;
|
|
23
|
+
lastDetectedAtMs?: number;
|
|
24
|
+
updatedAtMs?: number;
|
|
25
|
+
resolution?: SessionBlockerResolution;
|
|
26
|
+
};
|
|
27
|
+
export type SessionBlockerSummary = {
|
|
28
|
+
state: SessionBlockerStateValue;
|
|
29
|
+
blocker?: BlockerSignalV1;
|
|
30
|
+
targetKey?: string;
|
|
31
|
+
updatedAt?: string;
|
|
32
|
+
resolution?: {
|
|
33
|
+
status: SessionBlockerResolutionStatus;
|
|
34
|
+
reason: SessionBlockerResolutionReason;
|
|
35
|
+
updatedAt: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export declare class SessionStore {
|
|
39
|
+
private sessions;
|
|
40
|
+
private blockerStates;
|
|
41
|
+
add(session: BrowserSession): void;
|
|
42
|
+
get(sessionId: string): BrowserSession;
|
|
43
|
+
has(sessionId: string): boolean;
|
|
44
|
+
delete(sessionId: string): void;
|
|
45
|
+
list(): BrowserSession[];
|
|
46
|
+
getBlockerState(sessionId: string): SessionBlockerState;
|
|
47
|
+
getBlockerSummary(sessionId: string): SessionBlockerSummary;
|
|
48
|
+
startResolving(sessionId: string, nowMs?: number): SessionBlockerState;
|
|
49
|
+
reconcileBlocker(sessionId: string, blocker: BlockerSignalV1 | null, options: {
|
|
50
|
+
timeoutMs: number;
|
|
51
|
+
verifier?: boolean;
|
|
52
|
+
targetKey?: string;
|
|
53
|
+
nowMs?: number;
|
|
54
|
+
}): SessionBlockerState;
|
|
55
|
+
markVerificationFailure(sessionId: string, options?: {
|
|
56
|
+
envLimited?: boolean;
|
|
57
|
+
timedOut?: boolean;
|
|
58
|
+
nowMs?: number;
|
|
59
|
+
}): SessionBlockerState;
|
|
60
|
+
clearBlocker(sessionId: string, nowMs?: number): SessionBlockerState;
|
|
61
|
+
private ensureSession;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/browser/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AACpF,MAAM,MAAM,8BAA8B,GACtC,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,GACjB,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,8BAA8B,CAAC;IACvC,MAAM,EAAE,8BAA8B,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,wBAAwB,CAAC;IAChC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,wBAAwB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,8BAA8B,CAAC;QACvC,MAAM,EAAE,8BAA8B,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAIF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,aAAa,CAA0C;IAE/D,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKlC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAQtC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/B,IAAI,IAAI,cAAc,EAAE;IAIxB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAKvD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB;IAmB3D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,mBAAmB;IAe1E,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,mBAAmB;IAiEtB,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,mBAAmB;IAyBtB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,mBAAmB;IAexE,OAAO,CAAC,aAAa;CAKtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Page } from "playwright-core";
|
|
2
|
+
export type TargetInfo = {
|
|
3
|
+
targetId: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
type: "page";
|
|
7
|
+
};
|
|
8
|
+
export type NamedTargetInfo = {
|
|
9
|
+
name: string;
|
|
10
|
+
targetId: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class TargetManager {
|
|
13
|
+
private targets;
|
|
14
|
+
private activeTargetId;
|
|
15
|
+
private nameToTarget;
|
|
16
|
+
private targetToName;
|
|
17
|
+
registerPage(page: Page, name?: string): string;
|
|
18
|
+
registerExistingPages(pages: Page[]): void;
|
|
19
|
+
setName(targetId: string, name: string): void;
|
|
20
|
+
getTargetIdByName(name: string): string | null;
|
|
21
|
+
getName(targetId: string): string | null;
|
|
22
|
+
listNamedTargets(): NamedTargetInfo[];
|
|
23
|
+
removeName(name: string): void;
|
|
24
|
+
setActiveTarget(targetId: string): void;
|
|
25
|
+
getActiveTargetId(): string | null;
|
|
26
|
+
getActivePage(): Page;
|
|
27
|
+
getPage(targetId: string): Page;
|
|
28
|
+
listTargets(includeUrls?: boolean): Promise<TargetInfo[]>;
|
|
29
|
+
closeTarget(targetId: string): Promise<void>;
|
|
30
|
+
listPageEntries(): Array<{
|
|
31
|
+
targetId: string;
|
|
32
|
+
page: Page;
|
|
33
|
+
}>;
|
|
34
|
+
syncPages(pages: Page[]): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=target-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-manager.d.ts","sourceRoot":"","sources":["../../src/browser/target-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAIF,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAA6B;IAEjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAY/C,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAM1C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB7C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxC,gBAAgB,IAAI,eAAe,EAAE;IAOrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS9B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOvC,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIlC,aAAa,IAAI,IAAI;IAWrB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQzB,WAAW,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCvD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,eAAe,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAO1D,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;CA+B/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome-locator.d.ts","sourceRoot":"","sources":["../../src/cache/chrome-locator.ts"],"names":[],"mappings":"AA6DA,wBAAsB,oBAAoB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../src/cache/downloader.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBxF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type CachePaths = {
|
|
2
|
+
root: string;
|
|
3
|
+
projectRoot: string;
|
|
4
|
+
profileDir: string;
|
|
5
|
+
chromeDir: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveCachePaths(worktree: string, profile: string): Promise<CachePaths>;
|
|
8
|
+
export declare function ensureFileAbsent(path: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/cache/paths.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAmBF,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAe9F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlE"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// src/providers/errors.ts
|
|
2
|
+
var NETWORK_MESSAGE_RE = /(ECONNRESET|EAI_AGAIN|ENOTFOUND|socket hang up|network)/i;
|
|
3
|
+
var RATE_LIMIT_RE = /(rate limit|too many requests|429)/i;
|
|
4
|
+
var AUTH_RE = /(unauthorized|forbidden|401|403|auth)/i;
|
|
5
|
+
var TIMEOUT_RE = /(timeout|timed out|abort)/i;
|
|
6
|
+
var CHALLENGE_RE = /(captcha|challenge|anti.?bot|cf_chl|hcaptcha|recaptcha|interstitial)/i;
|
|
7
|
+
var IP_BLOCK_RE = /(ip blocked|ip ban|access denied from your ip|geo.?blocked)/i;
|
|
8
|
+
var CAPTION_MISSING_RE = /(caption|subtitle).*(missing|not found|unavailable)|no captions/i;
|
|
9
|
+
var TRANSCRIPT_RE = /transcript.*(missing|unavailable|not found)|no transcript/i;
|
|
10
|
+
var ENV_LIMITED_RE = /(extension not connected|manual interaction|environment|not available in this environment)/i;
|
|
11
|
+
var PROVIDER_REASON_CODES = [
|
|
12
|
+
"ip_blocked",
|
|
13
|
+
"token_required",
|
|
14
|
+
"auth_required",
|
|
15
|
+
"challenge_detected",
|
|
16
|
+
"rate_limited",
|
|
17
|
+
"caption_missing",
|
|
18
|
+
"env_limited",
|
|
19
|
+
"transcript_unavailable",
|
|
20
|
+
"policy_blocked",
|
|
21
|
+
"cooldown_active",
|
|
22
|
+
"strategy_unapproved"
|
|
23
|
+
];
|
|
24
|
+
var reasonCodeSet = new Set(PROVIDER_REASON_CODES);
|
|
25
|
+
var isProviderReasonCode = (value) => {
|
|
26
|
+
return typeof value === "string" && reasonCodeSet.has(value);
|
|
27
|
+
};
|
|
28
|
+
var pickStatus = (details) => {
|
|
29
|
+
const status = details?.status;
|
|
30
|
+
return typeof status === "number" && Number.isFinite(status) ? status : void 0;
|
|
31
|
+
};
|
|
32
|
+
var readReasonFromDetails = (details) => {
|
|
33
|
+
const candidate = details?.reasonCode;
|
|
34
|
+
return isProviderReasonCode(candidate) ? candidate : void 0;
|
|
35
|
+
};
|
|
36
|
+
var normalizeProviderReasonCode = (params) => {
|
|
37
|
+
const fromDetails = readReasonFromDetails(params.details);
|
|
38
|
+
if (fromDetails) return fromDetails;
|
|
39
|
+
const message = params.message ?? "";
|
|
40
|
+
const status = params.status ?? pickStatus(params.details);
|
|
41
|
+
if (params.code === "policy_blocked") return "policy_blocked";
|
|
42
|
+
if (params.code === "rate_limited" || status === 429 || RATE_LIMIT_RE.test(message)) return "rate_limited";
|
|
43
|
+
if (params.code === "auth" || status === 401 || AUTH_RE.test(message)) return "token_required";
|
|
44
|
+
if (CHALLENGE_RE.test(message)) return "challenge_detected";
|
|
45
|
+
if (IP_BLOCK_RE.test(message)) return "ip_blocked";
|
|
46
|
+
if (CAPTION_MISSING_RE.test(message)) return "caption_missing";
|
|
47
|
+
if (TRANSCRIPT_RE.test(message)) return "transcript_unavailable";
|
|
48
|
+
if (ENV_LIMITED_RE.test(message)) return "env_limited";
|
|
49
|
+
return void 0;
|
|
50
|
+
};
|
|
51
|
+
var providerErrorCodeFromReasonCode = (reasonCode) => {
|
|
52
|
+
switch (reasonCode) {
|
|
53
|
+
case "rate_limited":
|
|
54
|
+
return "rate_limited";
|
|
55
|
+
case "token_required":
|
|
56
|
+
case "auth_required":
|
|
57
|
+
return "auth";
|
|
58
|
+
case "policy_blocked":
|
|
59
|
+
case "strategy_unapproved":
|
|
60
|
+
return "policy_blocked";
|
|
61
|
+
case "ip_blocked":
|
|
62
|
+
return "upstream";
|
|
63
|
+
case "caption_missing":
|
|
64
|
+
case "transcript_unavailable":
|
|
65
|
+
case "env_limited":
|
|
66
|
+
case "cooldown_active":
|
|
67
|
+
case "challenge_detected":
|
|
68
|
+
return "unavailable";
|
|
69
|
+
default:
|
|
70
|
+
return "unavailable";
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var withReasonCodeDetails = (details, reasonCode) => {
|
|
74
|
+
if (!reasonCode) return details;
|
|
75
|
+
if (details && typeof details.reasonCode === "string") {
|
|
76
|
+
return details;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
...details ?? {},
|
|
80
|
+
reasonCode
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
var ProviderRuntimeError = class extends Error {
|
|
84
|
+
code;
|
|
85
|
+
retryable;
|
|
86
|
+
reasonCode;
|
|
87
|
+
provider;
|
|
88
|
+
source;
|
|
89
|
+
details;
|
|
90
|
+
constructor(code, message, options = {}) {
|
|
91
|
+
super(message, { cause: options.cause });
|
|
92
|
+
this.name = "ProviderRuntimeError";
|
|
93
|
+
this.code = code;
|
|
94
|
+
this.retryable = options.retryable ?? isRetryableByCode(code);
|
|
95
|
+
this.reasonCode = options.reasonCode;
|
|
96
|
+
this.provider = options.provider;
|
|
97
|
+
this.source = options.source;
|
|
98
|
+
this.details = withReasonCodeDetails(options.details, options.reasonCode);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var isRetryableByCode = (code) => {
|
|
102
|
+
return code === "timeout" || code === "network" || code === "rate_limited" || code === "upstream" || code === "unavailable";
|
|
103
|
+
};
|
|
104
|
+
var isProviderRuntimeError = (value) => {
|
|
105
|
+
return value instanceof ProviderRuntimeError;
|
|
106
|
+
};
|
|
107
|
+
var createProviderError = (code, message, options = {}) => {
|
|
108
|
+
const reasonCode = options.reasonCode ?? readReasonFromDetails(options.details);
|
|
109
|
+
return {
|
|
110
|
+
code,
|
|
111
|
+
message,
|
|
112
|
+
retryable: options.retryable ?? isRetryableByCode(code),
|
|
113
|
+
...reasonCode ? { reasonCode } : {},
|
|
114
|
+
...options.provider ? { provider: options.provider } : {},
|
|
115
|
+
...options.source ? { source: options.source } : {},
|
|
116
|
+
...withReasonCodeDetails(options.details, reasonCode) ? { details: withReasonCodeDetails(options.details, reasonCode) } : {}
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
var toProviderError = (error, options = {}) => {
|
|
120
|
+
if (isProviderRuntimeError(error)) {
|
|
121
|
+
const reasonCode2 = error.reasonCode ?? normalizeProviderReasonCode({
|
|
122
|
+
code: error.code,
|
|
123
|
+
message: error.message,
|
|
124
|
+
details: error.details
|
|
125
|
+
});
|
|
126
|
+
return createProviderError(error.code, error.message, {
|
|
127
|
+
retryable: error.retryable,
|
|
128
|
+
reasonCode: reasonCode2,
|
|
129
|
+
provider: error.provider ?? options.provider,
|
|
130
|
+
source: error.source ?? options.source,
|
|
131
|
+
details: error.details ?? options.details
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
135
|
+
const code = classifyErrorCode(message, options.defaultCode ?? "internal");
|
|
136
|
+
const reasonCode = normalizeProviderReasonCode({
|
|
137
|
+
code,
|
|
138
|
+
message,
|
|
139
|
+
details: options.details
|
|
140
|
+
});
|
|
141
|
+
return createProviderError(code, message || "Unknown provider failure", {
|
|
142
|
+
reasonCode,
|
|
143
|
+
provider: options.provider,
|
|
144
|
+
source: options.source,
|
|
145
|
+
details: options.details
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
var classifyErrorCode = (message, fallback) => {
|
|
149
|
+
if (!message) return fallback;
|
|
150
|
+
if (TIMEOUT_RE.test(message)) return "timeout";
|
|
151
|
+
if (RATE_LIMIT_RE.test(message)) return "rate_limited";
|
|
152
|
+
if (AUTH_RE.test(message)) return "auth";
|
|
153
|
+
if (NETWORK_MESSAGE_RE.test(message)) return "network";
|
|
154
|
+
if (/not supported|unsupported|not implemented/i.test(message)) return "not_supported";
|
|
155
|
+
if (/unavailable|service down|temporarily unavailable/i.test(message)) return "unavailable";
|
|
156
|
+
return fallback;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export {
|
|
160
|
+
normalizeProviderReasonCode,
|
|
161
|
+
providerErrorCodeFromReasonCode,
|
|
162
|
+
ProviderRuntimeError,
|
|
163
|
+
createProviderError,
|
|
164
|
+
toProviderError
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=chunk-7W3SPXIB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/errors.ts"],"sourcesContent":["import type {\n JsonValue,\n ProviderError,\n ProviderErrorCode,\n ProviderReasonCode,\n ProviderSource\n} from \"./types\";\n\nconst NETWORK_MESSAGE_RE = /(ECONNRESET|EAI_AGAIN|ENOTFOUND|socket hang up|network)/i;\nconst RATE_LIMIT_RE = /(rate limit|too many requests|429)/i;\nconst AUTH_RE = /(unauthorized|forbidden|401|403|auth)/i;\nconst TIMEOUT_RE = /(timeout|timed out|abort)/i;\nconst CHALLENGE_RE = /(captcha|challenge|anti.?bot|cf_chl|hcaptcha|recaptcha|interstitial)/i;\nconst IP_BLOCK_RE = /(ip blocked|ip ban|access denied from your ip|geo.?blocked)/i;\nconst CAPTION_MISSING_RE = /(caption|subtitle).*(missing|not found|unavailable)|no captions/i;\nconst TRANSCRIPT_RE = /transcript.*(missing|unavailable|not found)|no transcript/i;\nconst ENV_LIMITED_RE = /(extension not connected|manual interaction|environment|not available in this environment)/i;\n\nconst PROVIDER_REASON_CODES: ProviderReasonCode[] = [\n \"ip_blocked\",\n \"token_required\",\n \"auth_required\",\n \"challenge_detected\",\n \"rate_limited\",\n \"caption_missing\",\n \"env_limited\",\n \"transcript_unavailable\",\n \"policy_blocked\",\n \"cooldown_active\",\n \"strategy_unapproved\"\n];\n\nconst reasonCodeSet = new Set<string>(PROVIDER_REASON_CODES);\n\nexport const isProviderReasonCode = (value: unknown): value is ProviderReasonCode => {\n return typeof value === \"string\" && reasonCodeSet.has(value);\n};\n\nconst pickStatus = (details: Record<string, JsonValue> | undefined): number | undefined => {\n const status = details?.status;\n return typeof status === \"number\" && Number.isFinite(status) ? status : undefined;\n};\n\nconst readReasonFromDetails = (\n details: Record<string, JsonValue> | undefined\n): ProviderReasonCode | undefined => {\n const candidate = details?.reasonCode;\n return isProviderReasonCode(candidate) ? candidate : undefined;\n};\n\nexport const normalizeProviderReasonCode = (params: {\n code: ProviderErrorCode;\n message?: string;\n status?: number;\n details?: Record<string, JsonValue>;\n}): ProviderReasonCode | undefined => {\n const fromDetails = readReasonFromDetails(params.details);\n if (fromDetails) return fromDetails;\n\n const message = params.message ?? \"\";\n const status = params.status ?? pickStatus(params.details);\n\n if (params.code === \"policy_blocked\") return \"policy_blocked\";\n if (params.code === \"rate_limited\" || status === 429 || RATE_LIMIT_RE.test(message)) return \"rate_limited\";\n if (params.code === \"auth\" || status === 401 || AUTH_RE.test(message)) return \"token_required\";\n if (CHALLENGE_RE.test(message)) return \"challenge_detected\";\n if (IP_BLOCK_RE.test(message)) return \"ip_blocked\";\n if (CAPTION_MISSING_RE.test(message)) return \"caption_missing\";\n if (TRANSCRIPT_RE.test(message)) return \"transcript_unavailable\";\n if (ENV_LIMITED_RE.test(message)) return \"env_limited\";\n return undefined;\n};\n\nexport const providerErrorCodeFromReasonCode = (\n reasonCode: ProviderReasonCode | undefined\n): ProviderErrorCode => {\n switch (reasonCode) {\n case \"rate_limited\":\n return \"rate_limited\";\n case \"token_required\":\n case \"auth_required\":\n return \"auth\";\n case \"policy_blocked\":\n case \"strategy_unapproved\":\n return \"policy_blocked\";\n case \"ip_blocked\":\n return \"upstream\";\n case \"caption_missing\":\n case \"transcript_unavailable\":\n case \"env_limited\":\n case \"cooldown_active\":\n case \"challenge_detected\":\n return \"unavailable\";\n default:\n return \"unavailable\";\n }\n};\n\nconst withReasonCodeDetails = (\n details: Record<string, JsonValue> | undefined,\n reasonCode: ProviderReasonCode | undefined\n): Record<string, JsonValue> | undefined => {\n if (!reasonCode) return details;\n if (details && typeof details.reasonCode === \"string\") {\n return details;\n }\n return {\n ...(details ?? {}),\n reasonCode\n };\n};\n\nexport class ProviderRuntimeError extends Error {\n readonly code: ProviderErrorCode;\n readonly retryable: boolean;\n readonly reasonCode?: ProviderReasonCode;\n readonly provider?: string;\n readonly source?: ProviderSource;\n readonly details?: Record<string, JsonValue>;\n\n constructor(\n code: ProviderErrorCode,\n message: string,\n options: {\n retryable?: boolean;\n reasonCode?: ProviderReasonCode;\n provider?: string;\n source?: ProviderSource;\n details?: Record<string, JsonValue>;\n cause?: unknown;\n } = {}\n ) {\n super(message, { cause: options.cause });\n this.name = \"ProviderRuntimeError\";\n this.code = code;\n this.retryable = options.retryable ?? isRetryableByCode(code);\n this.reasonCode = options.reasonCode;\n this.provider = options.provider;\n this.source = options.source;\n this.details = withReasonCodeDetails(options.details, options.reasonCode);\n }\n}\n\nexport const isRetryableByCode = (code: ProviderErrorCode): boolean => {\n return code === \"timeout\"\n || code === \"network\"\n || code === \"rate_limited\"\n || code === \"upstream\"\n || code === \"unavailable\";\n};\n\nexport const isProviderRuntimeError = (value: unknown): value is ProviderRuntimeError => {\n return value instanceof ProviderRuntimeError;\n};\n\nexport const createProviderError = (\n code: ProviderErrorCode,\n message: string,\n options: {\n retryable?: boolean;\n reasonCode?: ProviderReasonCode;\n provider?: string;\n source?: ProviderSource;\n details?: Record<string, JsonValue>;\n } = {}\n): ProviderError => {\n const reasonCode = options.reasonCode ?? readReasonFromDetails(options.details);\n return {\n code,\n message,\n retryable: options.retryable ?? isRetryableByCode(code),\n ...(reasonCode ? { reasonCode } : {}),\n ...(options.provider ? { provider: options.provider } : {}),\n ...(options.source ? { source: options.source } : {}),\n ...(withReasonCodeDetails(options.details, reasonCode)\n ? { details: withReasonCodeDetails(options.details, reasonCode) }\n : {})\n };\n};\n\nexport const toProviderError = (\n error: unknown,\n options: {\n provider?: string;\n source?: ProviderSource;\n defaultCode?: ProviderErrorCode;\n details?: Record<string, JsonValue>;\n } = {}\n): ProviderError => {\n if (isProviderRuntimeError(error)) {\n const reasonCode = error.reasonCode\n ?? normalizeProviderReasonCode({\n code: error.code,\n message: error.message,\n details: error.details\n });\n return createProviderError(error.code, error.message, {\n retryable: error.retryable,\n reasonCode,\n provider: error.provider ?? options.provider,\n source: error.source ?? options.source,\n details: error.details ?? options.details\n });\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const code = classifyErrorCode(message, options.defaultCode ?? \"internal\");\n const reasonCode = normalizeProviderReasonCode({\n code,\n message,\n details: options.details\n });\n\n return createProviderError(code, message || \"Unknown provider failure\", {\n reasonCode,\n provider: options.provider,\n source: options.source,\n details: options.details\n });\n};\n\nconst classifyErrorCode = (message: string, fallback: ProviderErrorCode): ProviderErrorCode => {\n if (!message) return fallback;\n if (TIMEOUT_RE.test(message)) return \"timeout\";\n if (RATE_LIMIT_RE.test(message)) return \"rate_limited\";\n if (AUTH_RE.test(message)) return \"auth\";\n if (NETWORK_MESSAGE_RE.test(message)) return \"network\";\n if (/not supported|unsupported|not implemented/i.test(message)) return \"not_supported\";\n if (/unavailable|service down|temporarily unavailable/i.test(message)) return \"unavailable\";\n return fallback;\n};\n"],"mappings":"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","names":["reasonCode"]}
|