opendevbrowser 0.0.15 → 0.0.17
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 +262 -43
- 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 +33 -0
- package/dist/browser/annotation-manager.d.ts.map +1 -0
- package/dist/browser/browser-manager.d.ts +402 -0
- package/dist/browser/browser-manager.d.ts.map +1 -0
- package/dist/browser/canvas-client.d.ts +53 -0
- package/dist/browser/canvas-client.d.ts.map +1 -0
- package/dist/browser/canvas-code-sync-manager.d.ts +79 -0
- package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -0
- package/dist/browser/canvas-manager.d.ts +94 -0
- package/dist/browser/canvas-manager.d.ts.map +1 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts +20 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts.map +1 -0
- package/dist/browser/canvas-session-sync-manager.d.ts +21 -0
- package/dist/browser/canvas-session-sync-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 +15 -0
- package/dist/browser/manager-types.d.ts.map +1 -0
- package/dist/browser/ops-browser-manager.d.ts +141 -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/canvas/code-sync/apply-tsx.d.ts +23 -0
- package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -0
- package/dist/canvas/code-sync/graph.d.ts +5 -0
- package/dist/canvas/code-sync/graph.d.ts.map +1 -0
- package/dist/canvas/code-sync/hash.d.ts +3 -0
- package/dist/canvas/code-sync/hash.d.ts.map +1 -0
- package/dist/canvas/code-sync/import.d.ts +18 -0
- package/dist/canvas/code-sync/import.d.ts.map +1 -0
- package/dist/canvas/code-sync/manifest.d.ts +5 -0
- package/dist/canvas/code-sync/manifest.d.ts.map +1 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts +8 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -0
- package/dist/canvas/code-sync/types.d.ts +152 -0
- package/dist/canvas/code-sync/types.d.ts.map +1 -0
- package/dist/canvas/code-sync/write.d.ts +9 -0
- package/dist/canvas/code-sync/write.d.ts.map +1 -0
- package/dist/canvas/document-store.d.ts +81 -0
- package/dist/canvas/document-store.d.ts.map +1 -0
- package/dist/canvas/export.d.ts +12 -0
- package/dist/canvas/export.d.ts.map +1 -0
- package/dist/canvas/repo-store.d.ts +10 -0
- package/dist/canvas/repo-store.d.ts.map +1 -0
- package/dist/canvas/surface-palette.d.ts +15 -0
- package/dist/canvas/surface-palette.d.ts.map +1 -0
- package/dist/canvas/types.d.ts +255 -0
- package/dist/canvas/types.d.ts.map +1 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js +7 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js.map +1 -0
- package/dist/chunk-5J3IFL3X.js +16706 -0
- package/dist/chunk-5J3IFL3X.js.map +1 -0
- package/dist/chunk-D633UO34.js +8149 -0
- package/dist/chunk-D633UO34.js.map +1 -0
- package/dist/chunk-FUSXMW3G.js +169 -0
- package/dist/chunk-FUSXMW3G.js.map +1 -0
- package/dist/chunk-TBUCZX4A.js +34 -0
- package/dist/chunk-TBUCZX4A.js.map +1 -0
- package/dist/chunk-V7KUDHDG.js +276 -0
- package/dist/chunk-V7KUDHDG.js.map +1 -0
- package/dist/chunk-Y2KL55OG.js +59 -0
- package/dist/chunk-Y2KL55OG.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 +38 -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/canvas.d.ts +45 -0
- package/dist/cli/commands/canvas.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 +18 -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 +16 -0
- package/dist/cli/commands/export/clone-component.d.ts.map +1 -0
- package/dist/cli/commands/export/clone-page.d.ts +15 -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 +93 -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 +64 -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 +24 -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 +33 -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 +2825 -326
- 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-canvas-manager.d.ts +8 -0
- package/dist/cli/remote-canvas-manager.d.ts.map +1 -0
- package/dist/cli/remote-manager.d.ts +98 -0
- package/dist/cli/remote-manager.d.ts.map +1 -0
- package/dist/cli/remote-relay.d.ts +19 -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 +9 -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 +36 -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/fs-UMRKOBNN.js +7 -0
- package/dist/fs-UMRKOBNN.js.map +1 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1028 -123
- 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-ND2M7LWU.js +399 -0
- package/dist/macros-ND2M7LWU.js.map +1 -0
- package/dist/opendevbrowser.d.ts +3 -4
- package/dist/opendevbrowser.d.ts.map +1 -0
- package/dist/opendevbrowser.js +1028 -123
- 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/providers-G3LRHQXX.js +121 -0
- package/dist/providers-G3LRHQXX.js.map +1 -0
- package/dist/relay/protocol.d.ts +399 -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 +124 -0
- package/dist/relay/relay-server.d.ts.map +1 -0
- package/dist/relay/relay-types.d.ts +12 -0
- package/dist/relay/relay-types.d.ts.map +1 -0
- package/dist/runtime-factory-BICHDPE7.js +13 -0
- package/dist/runtime-factory-BICHDPE7.js.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/canvas.d.ts +4 -0
- package/dist/tools/canvas.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 +28 -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 +19 -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 +3 -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/canvas.html +636 -0
- package/extension/dist/annotate-content.css +15 -6
- package/extension/dist/annotate-content.js +119 -9
- package/extension/dist/annotation-payload.js +163 -0
- package/extension/dist/background.js +158 -22
- package/extension/dist/canvas/canvas-runtime.js +1061 -0
- package/extension/dist/canvas/model.js +213 -0
- package/extension/dist/canvas/viewport-fit.js +67 -0
- package/extension/dist/canvas-page.js +1801 -0
- package/extension/dist/ops/dom-bridge.js +116 -3
- package/extension/dist/ops/ops-runtime.js +1014 -48
- package/extension/dist/ops/ops-session-store.js +37 -116
- package/extension/dist/ops/parallelism-governor.js +117 -0
- package/extension/dist/ops/snapshot-shared.js +21 -5
- package/extension/dist/ops/target-session-coordinator.js +157 -0
- package/extension/dist/popup.js +155 -31
- package/extension/dist/services/CDPRouter.js +70 -5
- package/extension/dist/services/ConnectionManager.js +22 -3
- package/extension/dist/services/RelayClient.js +9 -0
- package/extension/dist/services/TabManager.js +35 -12
- package/extension/dist/types.js +2 -0
- 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/extension/popup.html +52 -0
- package/package.json +30 -19
- 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 +20 -8
- package/skills/opendevbrowser-best-practices/SKILL.md +248 -74
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
- package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +141 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +191 -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/canvas-blocker-checklist.json +70 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json +73 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +67 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +126 -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 +136 -0
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +28 -0
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +170 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +164 -0
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +234 -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,169 @@
|
|
|
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
|
+
isProviderReasonCode,
|
|
161
|
+
normalizeProviderReasonCode,
|
|
162
|
+
providerErrorCodeFromReasonCode,
|
|
163
|
+
ProviderRuntimeError,
|
|
164
|
+
isRetryableByCode,
|
|
165
|
+
isProviderRuntimeError,
|
|
166
|
+
createProviderError,
|
|
167
|
+
toProviderError
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=chunk-FUSXMW3G.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"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// src/utils/fs.ts
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import * as crypto from "crypto";
|
|
5
|
+
function writeFileAtomic(filePath, content, options = {}) {
|
|
6
|
+
const { encoding = "utf-8", mode } = options;
|
|
7
|
+
const dir = path.dirname(filePath);
|
|
8
|
+
const hash = crypto.randomBytes(8).toString("hex");
|
|
9
|
+
const tempPath = path.join(dir, `.${path.basename(filePath)}.${process.pid}.${hash}.tmp`);
|
|
10
|
+
try {
|
|
11
|
+
if (!fs.existsSync(dir)) {
|
|
12
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
const writeOptions = { encoding };
|
|
15
|
+
if (mode !== void 0) {
|
|
16
|
+
writeOptions.mode = mode;
|
|
17
|
+
}
|
|
18
|
+
fs.writeFileSync(tempPath, content, writeOptions);
|
|
19
|
+
fs.renameSync(tempPath, filePath);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
try {
|
|
22
|
+
if (fs.existsSync(tempPath)) {
|
|
23
|
+
fs.unlinkSync(tempPath);
|
|
24
|
+
}
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
writeFileAtomic
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=chunk-TBUCZX4A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/fs.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as crypto from \"crypto\";\n\nexport function writeFileAtomic(\n filePath: string,\n content: string,\n options: { encoding?: BufferEncoding; mode?: number } = {}\n): void {\n const { encoding = \"utf-8\", mode } = options;\n const dir = path.dirname(filePath);\n const hash = crypto.randomBytes(8).toString(\"hex\");\n const tempPath = path.join(dir, `.${path.basename(filePath)}.${process.pid}.${hash}.tmp`);\n\n try {\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n const writeOptions: fs.WriteFileOptions = { encoding };\n if (mode !== undefined) {\n writeOptions.mode = mode;\n }\n fs.writeFileSync(tempPath, content, writeOptions);\n fs.renameSync(tempPath, filePath);\n } catch (error) {\n try {\n if (fs.existsSync(tempPath)) {\n fs.unlinkSync(tempPath);\n }\n } catch {\n /* best-effort cleanup */\n }\n throw error;\n }\n}\n"],"mappings":";AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,YAAY;AAEjB,SAAS,gBACd,UACA,SACA,UAAwD,CAAC,GACnD;AACN,QAAM,EAAE,WAAW,SAAS,KAAK,IAAI;AACrC,QAAM,MAAW,aAAQ,QAAQ;AACjC,QAAM,OAAc,mBAAY,CAAC,EAAE,SAAS,KAAK;AACjD,QAAM,WAAgB,UAAK,KAAK,IAAS,cAAS,QAAQ,CAAC,IAAI,QAAQ,GAAG,IAAI,IAAI,MAAM;AAExF,MAAI;AACF,QAAI,CAAI,cAAW,GAAG,GAAG;AACvB,MAAG,aAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IACvC;AAEA,UAAM,eAAoC,EAAE,SAAS;AACrD,QAAI,SAAS,QAAW;AACtB,mBAAa,OAAO;AAAA,IACtB;AACA,IAAG,iBAAc,UAAU,SAAS,YAAY;AAChD,IAAG,cAAW,UAAU,QAAQ;AAAA,EAClC,SAAS,OAAO;AACd,QAAI;AACF,UAAO,cAAW,QAAQ,GAAG;AAC3B,QAAG,cAAW,QAAQ;AAAA,MACxB;AAAA,IACF,QAAQ;AAAA,IAER;AACA,UAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createDefaultRuntime
|
|
3
|
+
} from "./chunk-D633UO34.js";
|
|
4
|
+
|
|
5
|
+
// src/providers/runtime-factory.ts
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import * as os from "os";
|
|
8
|
+
import { readFile } from "fs/promises";
|
|
9
|
+
var DEFAULT_COOKIE_POLICY = "auto";
|
|
10
|
+
var DEFAULT_COOKIE_SOURCE = {
|
|
11
|
+
type: "file",
|
|
12
|
+
value: "~/.config/opencode/opendevbrowser.provider-cookies.json"
|
|
13
|
+
};
|
|
14
|
+
var toFallbackMode = (mode) => {
|
|
15
|
+
return mode === "extension" ? "extension" : "managed_headed";
|
|
16
|
+
};
|
|
17
|
+
var expandHomePath = (filePath) => {
|
|
18
|
+
if (filePath === "~") return os.homedir();
|
|
19
|
+
if (filePath.startsWith("~/")) {
|
|
20
|
+
return path.join(os.homedir(), filePath.slice(2));
|
|
21
|
+
}
|
|
22
|
+
return filePath;
|
|
23
|
+
};
|
|
24
|
+
var cookieSourceRef = (source) => {
|
|
25
|
+
if (source.type === "file") {
|
|
26
|
+
return expandHomePath(source.value);
|
|
27
|
+
}
|
|
28
|
+
if (source.type === "env") {
|
|
29
|
+
return source.value;
|
|
30
|
+
}
|
|
31
|
+
return "inline";
|
|
32
|
+
};
|
|
33
|
+
var parseCookieArray = (payload) => {
|
|
34
|
+
const parsed = JSON.parse(payload);
|
|
35
|
+
if (!Array.isArray(parsed)) {
|
|
36
|
+
throw new Error("Cookie payload must be a JSON array.");
|
|
37
|
+
}
|
|
38
|
+
return parsed;
|
|
39
|
+
};
|
|
40
|
+
var readCookiesFromSource = async (source) => {
|
|
41
|
+
if (source.type === "inline") {
|
|
42
|
+
return {
|
|
43
|
+
cookies: source.value,
|
|
44
|
+
available: source.value.length > 0,
|
|
45
|
+
...source.value.length === 0 ? { message: "Inline cookie source is empty." } : {}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (source.type === "env") {
|
|
49
|
+
const envValue = process.env[source.value];
|
|
50
|
+
if (!envValue || envValue.trim().length === 0) {
|
|
51
|
+
return {
|
|
52
|
+
cookies: [],
|
|
53
|
+
available: false,
|
|
54
|
+
message: `Cookie env ${source.value} is not set.`
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const cookies = parseCookieArray(envValue);
|
|
59
|
+
return { cookies, available: cookies.length > 0 };
|
|
60
|
+
} catch (error) {
|
|
61
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
62
|
+
return {
|
|
63
|
+
cookies: [],
|
|
64
|
+
available: false,
|
|
65
|
+
message: `Cookie env ${source.value} is invalid JSON: ${message}`
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const resolvedPath = expandHomePath(source.value);
|
|
70
|
+
try {
|
|
71
|
+
const payload = await readFile(resolvedPath, "utf8");
|
|
72
|
+
const cookies = parseCookieArray(payload);
|
|
73
|
+
return { cookies, available: cookies.length > 0 };
|
|
74
|
+
} catch (error) {
|
|
75
|
+
if (error.code === "ENOENT") {
|
|
76
|
+
return {
|
|
77
|
+
cookies: [],
|
|
78
|
+
available: false,
|
|
79
|
+
message: `Cookie file not found: ${resolvedPath}`
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
83
|
+
return {
|
|
84
|
+
cookies: [],
|
|
85
|
+
available: false,
|
|
86
|
+
message: `Cookie file read failed: ${message}`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
var resolveEffectiveCookiePolicy = (defaults, request) => {
|
|
91
|
+
if (request.cookiePolicyOverride) {
|
|
92
|
+
return request.cookiePolicyOverride;
|
|
93
|
+
}
|
|
94
|
+
if (request.useCookies === false) {
|
|
95
|
+
return "off";
|
|
96
|
+
}
|
|
97
|
+
if (request.useCookies === true && defaults.policy === "off") {
|
|
98
|
+
return "auto";
|
|
99
|
+
}
|
|
100
|
+
return defaults.policy;
|
|
101
|
+
};
|
|
102
|
+
var baseCookieDiagnostics = (policy, source) => ({
|
|
103
|
+
policy,
|
|
104
|
+
source: source.type,
|
|
105
|
+
sourceRef: cookieSourceRef(source),
|
|
106
|
+
attempted: false,
|
|
107
|
+
available: false,
|
|
108
|
+
loaded: 0,
|
|
109
|
+
injected: 0,
|
|
110
|
+
rejected: 0,
|
|
111
|
+
verifiedCount: 0,
|
|
112
|
+
strict: false
|
|
113
|
+
});
|
|
114
|
+
var fallbackFailure = (reasonCode, message, cookieDiagnostics) => ({
|
|
115
|
+
ok: false,
|
|
116
|
+
reasonCode,
|
|
117
|
+
details: {
|
|
118
|
+
message,
|
|
119
|
+
...cookieDiagnostics ? { cookieDiagnostics } : {}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
var createBrowserFallbackPort = (manager, cookieDefaults = {}) => {
|
|
123
|
+
if (!manager) return void 0;
|
|
124
|
+
const defaults = {
|
|
125
|
+
policy: cookieDefaults.policy ?? DEFAULT_COOKIE_POLICY,
|
|
126
|
+
source: cookieDefaults.source ?? DEFAULT_COOKIE_SOURCE
|
|
127
|
+
};
|
|
128
|
+
return {
|
|
129
|
+
resolve: async (request) => {
|
|
130
|
+
const requestUrl = request.url;
|
|
131
|
+
if (!requestUrl) {
|
|
132
|
+
return fallbackFailure("env_limited", "Browser fallback requires a URL.");
|
|
133
|
+
}
|
|
134
|
+
let sessionId = null;
|
|
135
|
+
const policy = resolveEffectiveCookiePolicy(defaults, request);
|
|
136
|
+
const cookieDiagnostics = baseCookieDiagnostics(policy, defaults.source);
|
|
137
|
+
try {
|
|
138
|
+
const launched = await manager.launch({
|
|
139
|
+
// Force managed fallback so retrieval recovery is not coupled to extension relay state.
|
|
140
|
+
noExtension: true,
|
|
141
|
+
headless: false,
|
|
142
|
+
startUrl: "about:blank",
|
|
143
|
+
// Browser fallback sessions are transient and should not contend for persisted profile locks.
|
|
144
|
+
persistProfile: false
|
|
145
|
+
});
|
|
146
|
+
sessionId = launched.sessionId;
|
|
147
|
+
if (policy !== "off") {
|
|
148
|
+
const loaded = await readCookiesFromSource(defaults.source);
|
|
149
|
+
cookieDiagnostics.available = loaded.available;
|
|
150
|
+
cookieDiagnostics.loaded = loaded.cookies.length;
|
|
151
|
+
if (loaded.message) {
|
|
152
|
+
cookieDiagnostics.message = loaded.message;
|
|
153
|
+
}
|
|
154
|
+
if (loaded.cookies.length > 0) {
|
|
155
|
+
cookieDiagnostics.attempted = true;
|
|
156
|
+
const imported = await manager.cookieImport(sessionId, loaded.cookies, false);
|
|
157
|
+
cookieDiagnostics.injected = imported.imported;
|
|
158
|
+
cookieDiagnostics.rejected = imported.rejected.length;
|
|
159
|
+
const verified = await manager.cookieList(sessionId, [requestUrl]);
|
|
160
|
+
cookieDiagnostics.verifiedCount = verified.count;
|
|
161
|
+
}
|
|
162
|
+
if (policy === "required") {
|
|
163
|
+
const reasonMessage = cookieDiagnostics.message ?? (cookieDiagnostics.loaded === 0 ? "Required provider cookies are missing." : cookieDiagnostics.injected === 0 ? "Provider cookie injection imported 0 entries." : cookieDiagnostics.verifiedCount === 0 ? "Provider cookies were not observable after injection." : void 0);
|
|
164
|
+
if (reasonMessage) {
|
|
165
|
+
cookieDiagnostics.reasonCode = "auth_required";
|
|
166
|
+
cookieDiagnostics.message = reasonMessage;
|
|
167
|
+
return fallbackFailure("auth_required", reasonMessage, cookieDiagnostics);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
await manager.goto(sessionId, requestUrl, "load", 45e3);
|
|
172
|
+
const html = await manager.withPage(sessionId, null, async (page) => {
|
|
173
|
+
const candidate = page;
|
|
174
|
+
if (typeof candidate.content !== "function") return "";
|
|
175
|
+
return await candidate.content();
|
|
176
|
+
});
|
|
177
|
+
const status = await manager.status(sessionId);
|
|
178
|
+
return {
|
|
179
|
+
ok: true,
|
|
180
|
+
reasonCode: request.reasonCode,
|
|
181
|
+
mode: toFallbackMode(status.mode),
|
|
182
|
+
output: {
|
|
183
|
+
html,
|
|
184
|
+
url: status.url ?? requestUrl
|
|
185
|
+
},
|
|
186
|
+
details: {
|
|
187
|
+
provider: request.provider,
|
|
188
|
+
operation: request.operation,
|
|
189
|
+
cookieDiagnostics
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
} catch (error) {
|
|
193
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
194
|
+
return fallbackFailure("env_limited", message, cookieDiagnostics);
|
|
195
|
+
} finally {
|
|
196
|
+
if (sessionId) {
|
|
197
|
+
await manager.disconnect(sessionId, true).catch(() => {
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
var buildRuntimeInitFromConfig = (config, browserFallbackPort) => {
|
|
205
|
+
const providers = config?.providers;
|
|
206
|
+
return {
|
|
207
|
+
...typeof config?.blockerDetectionThreshold === "number" ? { blockerDetectionThreshold: config.blockerDetectionThreshold } : {},
|
|
208
|
+
promptInjectionGuard: {
|
|
209
|
+
enabled: config?.security.promptInjectionGuard?.enabled ?? true
|
|
210
|
+
},
|
|
211
|
+
...providers?.tiers ? {
|
|
212
|
+
tiers: {
|
|
213
|
+
defaultTier: providers.tiers.default,
|
|
214
|
+
enableHybrid: providers.tiers.enableHybrid,
|
|
215
|
+
enableRestrictedSafe: providers.tiers.enableRestrictedSafe,
|
|
216
|
+
hybridRiskThreshold: providers.tiers.hybridRiskThreshold,
|
|
217
|
+
restrictedSafeRecoveryIntervalMs: providers.tiers.restrictedSafeRecoveryIntervalMs
|
|
218
|
+
}
|
|
219
|
+
} : {},
|
|
220
|
+
...providers?.adaptiveConcurrency ? {
|
|
221
|
+
adaptiveConcurrency: {
|
|
222
|
+
enabled: providers.adaptiveConcurrency.enabled,
|
|
223
|
+
maxGlobal: providers.adaptiveConcurrency.maxGlobal,
|
|
224
|
+
maxPerDomain: providers.adaptiveConcurrency.maxPerDomain
|
|
225
|
+
}
|
|
226
|
+
} : {},
|
|
227
|
+
...providers?.antiBotPolicy ? {
|
|
228
|
+
antiBotPolicy: {
|
|
229
|
+
enabled: providers.antiBotPolicy.enabled,
|
|
230
|
+
cooldownMs: providers.antiBotPolicy.cooldownMs,
|
|
231
|
+
maxChallengeRetries: providers.antiBotPolicy.maxChallengeRetries,
|
|
232
|
+
proxyHint: providers.antiBotPolicy.proxyHint,
|
|
233
|
+
sessionHint: providers.antiBotPolicy.sessionHint,
|
|
234
|
+
allowBrowserEscalation: providers.antiBotPolicy.allowBrowserEscalation
|
|
235
|
+
}
|
|
236
|
+
} : {},
|
|
237
|
+
...providers?.transcript ? {
|
|
238
|
+
transcript: {
|
|
239
|
+
modeDefault: providers.transcript.modeDefault,
|
|
240
|
+
strategyOrder: providers.transcript.strategyOrder,
|
|
241
|
+
enableYtdlp: providers.transcript.enableYtdlp,
|
|
242
|
+
enableAsr: providers.transcript.enableAsr,
|
|
243
|
+
enableYtdlpAudioAsr: providers.transcript.enableYtdlpAudioAsr,
|
|
244
|
+
enableApify: providers.transcript.enableApify,
|
|
245
|
+
apifyActorId: providers.transcript.apifyActorId,
|
|
246
|
+
enableBrowserFallback: providers.transcript.enableBrowserFallback,
|
|
247
|
+
ytdlpTimeoutMs: providers.transcript.ytdlpTimeoutMs
|
|
248
|
+
}
|
|
249
|
+
} : {},
|
|
250
|
+
...providers?.cookiePolicy || providers?.cookieSource ? {
|
|
251
|
+
cookies: {
|
|
252
|
+
...providers.cookiePolicy ? { policy: providers.cookiePolicy } : {},
|
|
253
|
+
...providers.cookieSource ? { source: providers.cookieSource } : {}
|
|
254
|
+
}
|
|
255
|
+
} : {},
|
|
256
|
+
...browserFallbackPort ? { browserFallbackPort } : {}
|
|
257
|
+
};
|
|
258
|
+
};
|
|
259
|
+
var createConfiguredProviderRuntime = (args) => {
|
|
260
|
+
const fallbackPort = args.browserFallbackPort ?? createBrowserFallbackPort(args.manager, {
|
|
261
|
+
policy: args.config?.providers?.cookiePolicy,
|
|
262
|
+
source: args.config?.providers?.cookieSource
|
|
263
|
+
});
|
|
264
|
+
const runtimeInit = {
|
|
265
|
+
...buildRuntimeInitFromConfig(args.config, fallbackPort),
|
|
266
|
+
...args.init ?? {}
|
|
267
|
+
};
|
|
268
|
+
return createDefaultRuntime(args.defaults ?? {}, runtimeInit);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
export {
|
|
272
|
+
createBrowserFallbackPort,
|
|
273
|
+
buildRuntimeInitFromConfig,
|
|
274
|
+
createConfiguredProviderRuntime
|
|
275
|
+
};
|
|
276
|
+
//# sourceMappingURL=chunk-V7KUDHDG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/runtime-factory.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as os from \"os\";\nimport { readFile } from \"fs/promises\";\nimport type { BrowserManagerLike } from \"../browser/manager-types\";\nimport type { OpenDevBrowserConfig } from \"../config\";\nimport { createDefaultRuntime, type RuntimeDefaults, type RuntimeInit } from \"./index\";\nimport type {\n BrowserFallbackMode,\n BrowserFallbackPort,\n BrowserFallbackResponse,\n ProviderCookieImportRecord,\n ProviderCookiePolicy,\n ProviderCookieSourceConfig\n} from \"./types\";\n\ntype RuntimeConfig = Pick<OpenDevBrowserConfig, \"blockerDetectionThreshold\" | \"security\" | \"providers\">;\n\ntype BrowserFallbackCookieConfig = {\n policy: ProviderCookiePolicy;\n source: ProviderCookieSourceConfig;\n};\n\ntype BrowserFallbackCookieDiagnostics = {\n policy: ProviderCookiePolicy;\n source: ProviderCookieSourceConfig[\"type\"];\n sourceRef: string;\n attempted: boolean;\n available: boolean;\n loaded: number;\n injected: number;\n rejected: number;\n verifiedCount: number;\n strict: boolean;\n reasonCode?: BrowserFallbackResponse[\"reasonCode\"];\n message?: string;\n};\n\nconst DEFAULT_COOKIE_POLICY: ProviderCookiePolicy = \"auto\";\nconst DEFAULT_COOKIE_SOURCE: ProviderCookieSourceConfig = {\n type: \"file\",\n value: \"~/.config/opencode/opendevbrowser.provider-cookies.json\"\n};\n\nconst toFallbackMode = (mode: unknown): BrowserFallbackMode => {\n return mode === \"extension\" ? \"extension\" : \"managed_headed\";\n};\n\nconst expandHomePath = (filePath: string): string => {\n if (filePath === \"~\") return os.homedir();\n if (filePath.startsWith(\"~/\")) {\n return path.join(os.homedir(), filePath.slice(2));\n }\n return filePath;\n};\n\nconst cookieSourceRef = (source: ProviderCookieSourceConfig): string => {\n if (source.type === \"file\") {\n return expandHomePath(source.value);\n }\n if (source.type === \"env\") {\n return source.value;\n }\n return \"inline\";\n};\n\nconst parseCookieArray = (payload: string): ProviderCookieImportRecord[] => {\n const parsed = JSON.parse(payload);\n if (!Array.isArray(parsed)) {\n throw new Error(\"Cookie payload must be a JSON array.\");\n }\n return parsed as ProviderCookieImportRecord[];\n};\n\nconst readCookiesFromSource = async (\n source: ProviderCookieSourceConfig\n): Promise<{ cookies: ProviderCookieImportRecord[]; available: boolean; message?: string }> => {\n if (source.type === \"inline\") {\n return {\n cookies: source.value,\n available: source.value.length > 0,\n ...(source.value.length === 0 ? { message: \"Inline cookie source is empty.\" } : {})\n };\n }\n\n if (source.type === \"env\") {\n const envValue = process.env[source.value];\n if (!envValue || envValue.trim().length === 0) {\n return {\n cookies: [],\n available: false,\n message: `Cookie env ${source.value} is not set.`\n };\n }\n try {\n const cookies = parseCookieArray(envValue);\n return { cookies, available: cookies.length > 0 };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n cookies: [],\n available: false,\n message: `Cookie env ${source.value} is invalid JSON: ${message}`\n };\n }\n }\n\n const resolvedPath = expandHomePath(source.value);\n try {\n const payload = await readFile(resolvedPath, \"utf8\");\n const cookies = parseCookieArray(payload);\n return { cookies, available: cookies.length > 0 };\n } catch (error) {\n if ((error as { code?: string }).code === \"ENOENT\") {\n return {\n cookies: [],\n available: false,\n message: `Cookie file not found: ${resolvedPath}`\n };\n }\n const message = error instanceof Error ? error.message : String(error);\n return {\n cookies: [],\n available: false,\n message: `Cookie file read failed: ${message}`\n };\n }\n};\n\nconst resolveEffectiveCookiePolicy = (\n defaults: BrowserFallbackCookieConfig,\n request: { useCookies?: boolean; cookiePolicyOverride?: ProviderCookiePolicy }\n): ProviderCookiePolicy => {\n if (request.cookiePolicyOverride) {\n return request.cookiePolicyOverride;\n }\n if (request.useCookies === false) {\n return \"off\";\n }\n if (request.useCookies === true && defaults.policy === \"off\") {\n return \"auto\";\n }\n return defaults.policy;\n};\n\nconst baseCookieDiagnostics = (\n policy: ProviderCookiePolicy,\n source: ProviderCookieSourceConfig\n): BrowserFallbackCookieDiagnostics => ({\n policy,\n source: source.type,\n sourceRef: cookieSourceRef(source),\n attempted: false,\n available: false,\n loaded: 0,\n injected: 0,\n rejected: 0,\n verifiedCount: 0,\n strict: false\n});\n\nconst fallbackFailure = (\n reasonCode: BrowserFallbackResponse[\"reasonCode\"],\n message: string,\n cookieDiagnostics?: BrowserFallbackCookieDiagnostics\n): BrowserFallbackResponse => ({\n ok: false,\n reasonCode,\n details: {\n message,\n ...(cookieDiagnostics ? { cookieDiagnostics } : {})\n }\n});\n\nexport const createBrowserFallbackPort = (\n manager: BrowserManagerLike | undefined,\n cookieDefaults: Partial<BrowserFallbackCookieConfig> = {}\n): BrowserFallbackPort | undefined => {\n if (!manager) return undefined;\n const defaults: BrowserFallbackCookieConfig = {\n policy: cookieDefaults.policy ?? DEFAULT_COOKIE_POLICY,\n source: cookieDefaults.source ?? DEFAULT_COOKIE_SOURCE\n };\n return {\n resolve: async (request) => {\n const requestUrl = request.url;\n if (!requestUrl) {\n return fallbackFailure(\"env_limited\", \"Browser fallback requires a URL.\");\n }\n\n let sessionId: string | null = null;\n const policy = resolveEffectiveCookiePolicy(defaults, request);\n const cookieDiagnostics = baseCookieDiagnostics(policy, defaults.source);\n try {\n const launched = await manager.launch({\n // Force managed fallback so retrieval recovery is not coupled to extension relay state.\n noExtension: true,\n headless: false,\n startUrl: \"about:blank\",\n // Browser fallback sessions are transient and should not contend for persisted profile locks.\n persistProfile: false\n });\n sessionId = launched.sessionId;\n\n if (policy !== \"off\") {\n const loaded = await readCookiesFromSource(defaults.source);\n cookieDiagnostics.available = loaded.available;\n cookieDiagnostics.loaded = loaded.cookies.length;\n if (loaded.message) {\n cookieDiagnostics.message = loaded.message;\n }\n\n if (loaded.cookies.length > 0) {\n cookieDiagnostics.attempted = true;\n const imported = await manager.cookieImport(sessionId, loaded.cookies, false);\n cookieDiagnostics.injected = imported.imported;\n cookieDiagnostics.rejected = imported.rejected.length;\n\n const verified = await manager.cookieList(sessionId, [requestUrl]);\n cookieDiagnostics.verifiedCount = verified.count;\n }\n\n if (policy === \"required\") {\n const reasonMessage = cookieDiagnostics.message\n ?? (\n cookieDiagnostics.loaded === 0\n ? \"Required provider cookies are missing.\"\n : cookieDiagnostics.injected === 0\n ? \"Provider cookie injection imported 0 entries.\"\n : cookieDiagnostics.verifiedCount === 0\n ? \"Provider cookies were not observable after injection.\"\n : undefined\n );\n if (reasonMessage) {\n cookieDiagnostics.reasonCode = \"auth_required\";\n cookieDiagnostics.message = reasonMessage;\n return fallbackFailure(\"auth_required\", reasonMessage, cookieDiagnostics);\n }\n }\n }\n\n await manager.goto(sessionId, requestUrl, \"load\", 45000);\n const html = await manager.withPage(sessionId, null, async (page: unknown) => {\n const candidate = page as { content?: () => Promise<string> };\n if (typeof candidate.content !== \"function\") return \"\";\n return await candidate.content();\n });\n const status = await manager.status(sessionId);\n\n return {\n ok: true,\n reasonCode: request.reasonCode,\n mode: toFallbackMode(status.mode),\n output: {\n html,\n url: status.url ?? requestUrl\n },\n details: {\n provider: request.provider,\n operation: request.operation,\n cookieDiagnostics\n }\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return fallbackFailure(\"env_limited\", message, cookieDiagnostics);\n } finally {\n if (sessionId) {\n await manager.disconnect(sessionId, true).catch(() => {\n // Best effort cleanup for fallback sessions.\n });\n }\n }\n }\n };\n};\n\nexport const buildRuntimeInitFromConfig = (\n config: RuntimeConfig | undefined,\n browserFallbackPort?: BrowserFallbackPort\n): Omit<RuntimeInit, \"providers\"> => {\n const providers = config?.providers;\n return {\n ...(typeof config?.blockerDetectionThreshold === \"number\"\n ? { blockerDetectionThreshold: config.blockerDetectionThreshold }\n : {}),\n promptInjectionGuard: {\n enabled: config?.security.promptInjectionGuard?.enabled ?? true\n },\n ...(providers?.tiers\n ? {\n tiers: {\n defaultTier: providers.tiers.default,\n enableHybrid: providers.tiers.enableHybrid,\n enableRestrictedSafe: providers.tiers.enableRestrictedSafe,\n hybridRiskThreshold: providers.tiers.hybridRiskThreshold,\n restrictedSafeRecoveryIntervalMs: providers.tiers.restrictedSafeRecoveryIntervalMs\n }\n }\n : {}),\n ...(providers?.adaptiveConcurrency\n ? {\n adaptiveConcurrency: {\n enabled: providers.adaptiveConcurrency.enabled,\n maxGlobal: providers.adaptiveConcurrency.maxGlobal,\n maxPerDomain: providers.adaptiveConcurrency.maxPerDomain\n }\n }\n : {}),\n ...(providers?.antiBotPolicy\n ? {\n antiBotPolicy: {\n enabled: providers.antiBotPolicy.enabled,\n cooldownMs: providers.antiBotPolicy.cooldownMs,\n maxChallengeRetries: providers.antiBotPolicy.maxChallengeRetries,\n proxyHint: providers.antiBotPolicy.proxyHint,\n sessionHint: providers.antiBotPolicy.sessionHint,\n allowBrowserEscalation: providers.antiBotPolicy.allowBrowserEscalation\n }\n }\n : {}),\n ...(providers?.transcript\n ? {\n transcript: {\n modeDefault: providers.transcript.modeDefault,\n strategyOrder: providers.transcript.strategyOrder,\n enableYtdlp: providers.transcript.enableYtdlp,\n enableAsr: providers.transcript.enableAsr,\n enableYtdlpAudioAsr: providers.transcript.enableYtdlpAudioAsr,\n enableApify: providers.transcript.enableApify,\n apifyActorId: providers.transcript.apifyActorId,\n enableBrowserFallback: providers.transcript.enableBrowserFallback,\n ytdlpTimeoutMs: providers.transcript.ytdlpTimeoutMs\n }\n }\n : {}),\n ...(providers?.cookiePolicy || providers?.cookieSource\n ? {\n cookies: {\n ...(providers.cookiePolicy ? { policy: providers.cookiePolicy } : {}),\n ...(providers.cookieSource ? { source: providers.cookieSource } : {})\n }\n }\n : {}),\n ...(browserFallbackPort ? { browserFallbackPort } : {})\n };\n};\n\nexport const createConfiguredProviderRuntime = (args: {\n config?: RuntimeConfig;\n defaults?: RuntimeDefaults;\n manager?: BrowserManagerLike;\n browserFallbackPort?: BrowserFallbackPort;\n init?: Omit<RuntimeInit, \"providers\">;\n}) => {\n const fallbackPort = args.browserFallbackPort ?? createBrowserFallbackPort(args.manager, {\n policy: args.config?.providers?.cookiePolicy,\n source: args.config?.providers?.cookieSource\n });\n const runtimeInit = {\n ...buildRuntimeInitFromConfig(args.config, fallbackPort),\n ...(args.init ?? {})\n };\n return createDefaultRuntime(args.defaults ?? {}, runtimeInit);\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// src/browser/canvas-runtime-preview-bridge.ts
|
|
2
|
+
async function applyRuntimePreviewBridge(page, input) {
|
|
3
|
+
return await page.evaluate((payload) => {
|
|
4
|
+
const root = document.querySelector(payload.rootSelector);
|
|
5
|
+
if (!(root instanceof HTMLElement)) {
|
|
6
|
+
return {
|
|
7
|
+
ok: false,
|
|
8
|
+
fallbackReason: "runtime_projection_unsupported",
|
|
9
|
+
message: `Runtime root not found for selector ${payload.rootSelector}.`
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const existingBindingId = root.getAttribute("data-binding-id");
|
|
13
|
+
if (existingBindingId !== payload.bindingId) {
|
|
14
|
+
return {
|
|
15
|
+
ok: false,
|
|
16
|
+
fallbackReason: "runtime_instrumentation_missing",
|
|
17
|
+
message: "Runtime root is missing the expected data-binding-id instrumentation."
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
root.innerHTML = payload.html;
|
|
21
|
+
const nodes = [root, ...Array.from(root.querySelectorAll("[data-node-id]"))].filter((element) => element instanceof HTMLElement && element.hasAttribute("data-node-id")).map((element) => {
|
|
22
|
+
const computed = window.getComputedStyle(element);
|
|
23
|
+
const childOrder = Array.from(element.children).map((child) => child instanceof HTMLElement ? child.getAttribute("data-node-id") ?? child.tagName.toLowerCase() : "").join("|");
|
|
24
|
+
return {
|
|
25
|
+
nodeId: element.getAttribute("data-node-id") ?? "",
|
|
26
|
+
bindingId: element.getAttribute("data-binding-id") ?? payload.bindingId,
|
|
27
|
+
text: (element.innerText || "").trim(),
|
|
28
|
+
childOrderHash: childOrder,
|
|
29
|
+
attributes: {
|
|
30
|
+
"data-node-id": element.getAttribute("data-node-id") ?? "",
|
|
31
|
+
...element.hasAttribute("data-binding-id") ? { "data-binding-id": element.getAttribute("data-binding-id") ?? "" } : {}
|
|
32
|
+
},
|
|
33
|
+
styleProjection: {
|
|
34
|
+
color: computed.color,
|
|
35
|
+
backgroundColor: computed.backgroundColor,
|
|
36
|
+
fontSize: computed.fontSize,
|
|
37
|
+
fontWeight: computed.fontWeight,
|
|
38
|
+
borderRadius: computed.borderRadius,
|
|
39
|
+
display: computed.display
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
ok: true,
|
|
45
|
+
artifact: {
|
|
46
|
+
projection: "bound_app_runtime",
|
|
47
|
+
rootBindingId: payload.bindingId,
|
|
48
|
+
capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
49
|
+
hierarchyHash: nodes.map((node) => `${node.nodeId}:${node.childOrderHash}`).join("|"),
|
|
50
|
+
nodes
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}, input);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export {
|
|
57
|
+
applyRuntimePreviewBridge
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=chunk-Y2KL55OG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/browser/canvas-runtime-preview-bridge.ts"],"sourcesContent":["import type { CanvasParityArtifact } from \"../canvas/types\";\n\ntype RuntimePreviewPageLike = {\n evaluate: <TArg, TResult>(pageFunction: (arg: TArg) => TResult | Promise<TResult>, arg: TArg) => Promise<TResult>;\n};\n\nexport type RuntimePreviewBridgeInput = {\n bindingId: string;\n rootSelector: string;\n html: string;\n};\n\nexport type RuntimePreviewBridgeResult =\n | {\n ok: true;\n artifact: CanvasParityArtifact;\n }\n | {\n ok: false;\n fallbackReason:\n | \"runtime_bridge_unavailable\"\n | \"runtime_projection_unsupported\"\n | \"runtime_projection_failed\"\n | \"runtime_instrumentation_missing\"\n | \"fallback_canvas_html\";\n message: string;\n };\n\nexport async function applyRuntimePreviewBridge(\n page: RuntimePreviewPageLike,\n input: RuntimePreviewBridgeInput\n): Promise<RuntimePreviewBridgeResult> {\n return await page.evaluate((payload) => {\n const root = document.querySelector(payload.rootSelector);\n if (!(root instanceof HTMLElement)) {\n return {\n ok: false,\n fallbackReason: \"runtime_projection_unsupported\",\n message: `Runtime root not found for selector ${payload.rootSelector}.`\n } satisfies RuntimePreviewBridgeResult;\n }\n const existingBindingId = root.getAttribute(\"data-binding-id\");\n if (existingBindingId !== payload.bindingId) {\n return {\n ok: false,\n fallbackReason: \"runtime_instrumentation_missing\",\n message: \"Runtime root is missing the expected data-binding-id instrumentation.\"\n } satisfies RuntimePreviewBridgeResult;\n }\n root.innerHTML = payload.html;\n const nodes = [root, ...Array.from(root.querySelectorAll(\"[data-node-id]\"))]\n .filter((element): element is HTMLElement => element instanceof HTMLElement && element.hasAttribute(\"data-node-id\"))\n .map((element) => {\n const computed = window.getComputedStyle(element);\n const childOrder = Array.from(element.children)\n .map((child) => child instanceof HTMLElement ? child.getAttribute(\"data-node-id\") ?? child.tagName.toLowerCase() : \"\")\n .join(\"|\");\n return {\n nodeId: element.getAttribute(\"data-node-id\") ?? \"\",\n bindingId: element.getAttribute(\"data-binding-id\") ?? payload.bindingId,\n text: (element.innerText || \"\").trim(),\n childOrderHash: childOrder,\n attributes: {\n \"data-node-id\": element.getAttribute(\"data-node-id\") ?? \"\",\n ...(element.hasAttribute(\"data-binding-id\") ? { \"data-binding-id\": element.getAttribute(\"data-binding-id\") ?? \"\" } : {})\n },\n styleProjection: {\n color: computed.color,\n backgroundColor: computed.backgroundColor,\n fontSize: computed.fontSize,\n fontWeight: computed.fontWeight,\n borderRadius: computed.borderRadius,\n display: computed.display\n }\n };\n });\n return {\n ok: true,\n artifact: {\n projection: \"bound_app_runtime\",\n rootBindingId: payload.bindingId,\n capturedAt: new Date().toISOString(),\n hierarchyHash: nodes.map((node) => `${node.nodeId}:${node.childOrderHash}`).join(\"|\"),\n nodes\n }\n } satisfies RuntimePreviewBridgeResult;\n }, input);\n}\n"],"mappings":";AA4BA,eAAsB,0BACpB,MACA,OACqC;AACrC,SAAO,MAAM,KAAK,SAAS,CAAC,YAAY;AACtC,UAAM,OAAO,SAAS,cAAc,QAAQ,YAAY;AACxD,QAAI,EAAE,gBAAgB,cAAc;AAClC,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,QAChB,SAAS,uCAAuC,QAAQ,YAAY;AAAA,MACtE;AAAA,IACF;AACA,UAAM,oBAAoB,KAAK,aAAa,iBAAiB;AAC7D,QAAI,sBAAsB,QAAQ,WAAW;AAC3C,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,gBAAgB;AAAA,QAChB,SAAS;AAAA,MACX;AAAA,IACF;AACA,SAAK,YAAY,QAAQ;AACzB,UAAM,QAAQ,CAAC,MAAM,GAAG,MAAM,KAAK,KAAK,iBAAiB,gBAAgB,CAAC,CAAC,EACxE,OAAO,CAAC,YAAoC,mBAAmB,eAAe,QAAQ,aAAa,cAAc,CAAC,EAClH,IAAI,CAAC,YAAY;AAChB,YAAM,WAAW,OAAO,iBAAiB,OAAO;AAChD,YAAM,aAAa,MAAM,KAAK,QAAQ,QAAQ,EAC3C,IAAI,CAAC,UAAU,iBAAiB,cAAc,MAAM,aAAa,cAAc,KAAK,MAAM,QAAQ,YAAY,IAAI,EAAE,EACpH,KAAK,GAAG;AACX,aAAO;AAAA,QACL,QAAQ,QAAQ,aAAa,cAAc,KAAK;AAAA,QAChD,WAAW,QAAQ,aAAa,iBAAiB,KAAK,QAAQ;AAAA,QAC9D,OAAO,QAAQ,aAAa,IAAI,KAAK;AAAA,QACrC,gBAAgB;AAAA,QAChB,YAAY;AAAA,UACV,gBAAgB,QAAQ,aAAa,cAAc,KAAK;AAAA,UACxD,GAAI,QAAQ,aAAa,iBAAiB,IAAI,EAAE,mBAAmB,QAAQ,aAAa,iBAAiB,KAAK,GAAG,IAAI,CAAC;AAAA,QACxH;AAAA,QACA,iBAAiB;AAAA,UACf,OAAO,SAAS;AAAA,UAChB,iBAAiB,SAAS;AAAA,UAC1B,UAAU,SAAS;AAAA,UACnB,YAAY,SAAS;AAAA,UACrB,cAAc,SAAS;AAAA,UACvB,SAAS,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,IACF,CAAC;AACH,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,UAAU;AAAA,QACR,YAAY;AAAA,QACZ,eAAe,QAAQ;AAAA,QACvB,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,QACnC,eAAe,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,MAAM,IAAI,KAAK,cAAc,EAAE,EAAE,KAAK,GAAG;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,KAAK;AACV;","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const CLI_COMMANDS: readonly ["install", "update", "uninstall", "help", "version", "serve", "daemon", "native", "run", "launch", "connect", "disconnect", "status", "research", "shopping", "product-video", "artifacts", "goto", "wait", "snapshot", "click", "hover", "press", "check", "uncheck", "type", "select", "scroll", "scroll-into-view", "targets-list", "target-use", "target-new", "target-close", "page", "pages", "page-close", "dom-html", "dom-text", "dom-attr", "dom-value", "dom-visible", "dom-enabled", "dom-checked", "clone-page", "clone-component", "perf", "screenshot", "console-poll", "network-poll", "debug-trace-snapshot", "cookie-import", "cookie-list", "macro-resolve", "annotate", "canvas", "rpc"];
|
|
2
|
+
export type CliCommand = (typeof CLI_COMMANDS)[number];
|
|
3
|
+
export type InstallMode = "global" | "local";
|
|
4
|
+
export type SkillsMode = "global" | "local" | "none";
|
|
5
|
+
export type OutputFormat = "text" | "json" | "stream-json";
|
|
6
|
+
export type TransportMode = "relay" | "native";
|
|
7
|
+
export interface ParsedArgs {
|
|
8
|
+
command: CliCommand;
|
|
9
|
+
mode?: InstallMode;
|
|
10
|
+
withConfig: boolean;
|
|
11
|
+
noPrompt: boolean;
|
|
12
|
+
noInteractive: boolean;
|
|
13
|
+
quiet: boolean;
|
|
14
|
+
outputFormat: OutputFormat;
|
|
15
|
+
transport: TransportMode;
|
|
16
|
+
skillsMode: SkillsMode;
|
|
17
|
+
fullInstall: boolean;
|
|
18
|
+
rawArgs: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare const VALID_FLAGS: readonly ["--global", "--local", "--update", "--uninstall", "--help", "--version", "--with-config", "--no-prompt", "--no-interactive", "--quiet", "--output-format", "--full", "--port", "--token", "--stop", "--script", "--headless", "--profile", "--persist-profile", "--chrome-path", "--start-url", "--flag", "--session-id", "--close-browser", "--ws-endpoint", "--host", "--cdp-port", "--url", "--wait-until", "--timeout-ms", "--ref", "--state", "--until", "--mode", "--max-chars", "--cursor", "--text", "--clear", "--submit", "--values", "--dy", "--key", "--attr", "--name", "--target-id", "--tab-id", "--include-urls", "--path", "--since-seq", "--max", "--since-console-seq", "--since-network-seq", "--since-exception-seq", "--request-id", "--cookies", "--cookies-file", "--strict", "--expression", "--default-provider", "--include-catalog", "--command", "--execute", "--params", "--params-file", "--unsafe-internal", "--daemon", "--transport", "--no-extension", "--extension-only", "--extension-legacy", "--wait-for-extension", "--wait-timeout-ms", "--skills-global", "--skills-local", "--no-skills", "--screenshot-mode", "--debug", "--context", "--stored", "--topic", "--days", "--from", "--to", "--source-selection", "--sources", "--include-engagement", "--limit-per-source", "--query", "--providers", "--budget", "--region", "--sort", "--product-url", "--product-name", "--provider-hint", "--include-screenshots", "--include-all-images", "--include-copy", "--output-dir", "--ttl-hours", "--expired-only"];
|
|
21
|
+
export declare const VALID_EQUALS_FLAGS: readonly ["--output-format", "--transport", "--session-id", "--url", "--screenshot-mode", "--context", "--timeout-ms", "--since-seq", "--since-console-seq", "--since-network-seq", "--since-exception-seq", "--max", "--target-id", "--tab-id", "--name", "--cookies", "--cookies-file", "--persist-profile", "--expression", "--default-provider", "--command", "--request-id", "--strict", "--params", "--params-file", "--topic", "--days", "--from", "--to", "--source-selection", "--sources", "--mode", "--limit-per-source", "--query", "--providers", "--budget", "--region", "--sort", "--product-url", "--product-name", "--provider-hint", "--include-screenshots", "--include-all-images", "--include-copy", "--output-dir", "--ttl-hours"];
|
|
22
|
+
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
23
|
+
export declare function detectOutputFormat(argv: string[]): OutputFormat;
|
|
24
|
+
export declare function detectQuiet(argv: string[]): boolean;
|
|
25
|
+
//# sourceMappingURL=args.d.ts.map
|