opendevbrowser 0.0.17 → 0.0.19
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/README.md +172 -73
- package/dist/annotate/agent-inbox-store.d.ts +58 -0
- package/dist/annotate/agent-inbox-store.d.ts.map +1 -0
- package/dist/annotate/agent-inbox.d.ts +25 -0
- package/dist/annotate/agent-inbox.d.ts.map +1 -0
- package/dist/annotate/direct-annotator.d.ts.map +1 -1
- package/dist/annotate/timeout-messages.d.ts +4 -0
- package/dist/annotate/timeout-messages.d.ts.map +1 -0
- package/dist/automation/coordinator.d.ts +55 -0
- package/dist/automation/coordinator.d.ts.map +1 -0
- package/dist/browser/annotation-manager.d.ts +4 -1
- package/dist/browser/annotation-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.d.ts +147 -47
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/canvas-client.d.ts +1 -0
- package/dist/browser/canvas-client.d.ts.map +1 -1
- package/dist/browser/canvas-code-sync-manager.d.ts +9 -1
- package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -1
- package/dist/browser/canvas-manager.d.ts +29 -1
- package/dist/browser/canvas-manager.d.ts.map +1 -1
- package/dist/browser/global-challenge-coordinator.d.ts +27 -0
- package/dist/browser/global-challenge-coordinator.d.ts.map +1 -0
- package/dist/browser/manager-types.d.ts +167 -1
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts +103 -3
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/browser/ops-client.d.ts +17 -1
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/browser/playwright-runtime.d.ts +4 -0
- package/dist/browser/playwright-runtime.d.ts.map +1 -0
- package/dist/browser/review-surface.d.ts +9 -0
- package/dist/browser/review-surface.d.ts.map +1 -0
- package/dist/browser/screencast-recorder.d.ts +57 -0
- package/dist/browser/screencast-recorder.d.ts.map +1 -0
- package/dist/browser/session-inspector.d.ts +71 -0
- package/dist/browser/session-inspector.d.ts.map +1 -0
- package/dist/browser/session-store.d.ts +5 -1
- package/dist/browser/session-store.d.ts.map +1 -1
- package/dist/browser/system-chrome-cookies.d.ts +46 -0
- package/dist/browser/system-chrome-cookies.d.ts.map +1 -0
- package/dist/browser/target-manager.d.ts +1 -0
- package/dist/browser/target-manager.d.ts.map +1 -1
- package/dist/cache/chrome-locator.d.ts.map +1 -1
- package/dist/cache/chrome-user-data.d.ts +17 -0
- package/dist/cache/chrome-user-data.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/loader.d.ts +13 -0
- package/dist/canvas/adapter-plugins/loader.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/manifest.d.ts +146 -0
- package/dist/canvas/adapter-plugins/manifest.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/types.d.ts +83 -0
- package/dist/canvas/adapter-plugins/types.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/validator.d.ts +10 -0
- package/dist/canvas/adapter-plugins/validator.d.ts.map +1 -0
- package/dist/canvas/code-sync/apply-tsx.d.ts +3 -1
- package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -1
- package/dist/canvas/code-sync/import.d.ts +1 -0
- package/dist/canvas/code-sync/import.d.ts.map +1 -1
- package/dist/canvas/code-sync/manifest.d.ts +2 -1
- package/dist/canvas/code-sync/manifest.d.ts.map +1 -1
- package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -1
- package/dist/canvas/code-sync/types.d.ts +102 -10
- package/dist/canvas/code-sync/types.d.ts.map +1 -1
- package/dist/canvas/document-store.d.ts +11 -1
- package/dist/canvas/document-store.d.ts.map +1 -1
- package/dist/canvas/export.d.ts.map +1 -1
- package/dist/canvas/framework-adapters/custom-elements-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/custom-elements-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/html-static-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/html-static-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/markup.d.ts +9 -0
- package/dist/canvas/framework-adapters/markup.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/react-tsx-v2.d.ts +3 -0
- package/dist/canvas/framework-adapters/react-tsx-v2.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/registry.d.ts +12 -0
- package/dist/canvas/framework-adapters/registry.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/types.d.ts +57 -0
- package/dist/canvas/framework-adapters/types.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts.map +1 -0
- package/dist/canvas/kits/catalog.d.ts +5 -0
- package/dist/canvas/kits/catalog.d.ts.map +1 -0
- package/dist/canvas/library-adapters/react/index.d.ts +3 -0
- package/dist/canvas/library-adapters/react/index.d.ts.map +1 -0
- package/dist/canvas/library-adapters/registry.d.ts +11 -0
- package/dist/canvas/library-adapters/registry.d.ts.map +1 -0
- package/dist/canvas/library-adapters/types.d.ts +43 -0
- package/dist/canvas/library-adapters/types.d.ts.map +1 -0
- package/dist/canvas/repo-store.d.ts +2 -0
- package/dist/canvas/repo-store.d.ts.map +1 -1
- package/dist/canvas/starters/catalog.d.ts +34 -0
- package/dist/canvas/starters/catalog.d.ts.map +1 -0
- package/dist/canvas/token-references.d.ts +22 -0
- package/dist/canvas/token-references.d.ts.map +1 -0
- package/dist/canvas/types.d.ts +345 -6
- package/dist/canvas/types.d.ts.map +1 -1
- package/dist/challenges/action-loop.d.ts +13 -0
- package/dist/challenges/action-loop.d.ts.map +1 -0
- package/dist/challenges/capability-matrix.d.ts +3 -0
- package/dist/challenges/capability-matrix.d.ts.map +1 -0
- package/dist/challenges/evidence-bundle.d.ts +48 -0
- package/dist/challenges/evidence-bundle.d.ts.map +1 -0
- package/dist/challenges/governed-adapter-gateway.d.ts +4 -0
- package/dist/challenges/governed-adapter-gateway.d.ts.map +1 -0
- package/dist/challenges/human-yield-gate.d.ts +20 -0
- package/dist/challenges/human-yield-gate.d.ts.map +1 -0
- package/dist/challenges/index.d.ts +15 -0
- package/dist/challenges/index.d.ts.map +1 -0
- package/dist/challenges/interpreter.d.ts +3 -0
- package/dist/challenges/interpreter.d.ts.map +1 -0
- package/dist/challenges/optional-computer-use-bridge.d.ts +9 -0
- package/dist/challenges/optional-computer-use-bridge.d.ts.map +1 -0
- package/dist/challenges/orchestrator.d.ts +32 -0
- package/dist/challenges/orchestrator.d.ts.map +1 -0
- package/dist/challenges/outcome-recorder.d.ts +8 -0
- package/dist/challenges/outcome-recorder.d.ts.map +1 -0
- package/dist/challenges/owned-environment-lane.d.ts +3 -0
- package/dist/challenges/owned-environment-lane.d.ts.map +1 -0
- package/dist/challenges/policy-gate.d.ts +9 -0
- package/dist/challenges/policy-gate.d.ts.map +1 -0
- package/dist/challenges/sanctioned-identity-lane.d.ts +3 -0
- package/dist/challenges/sanctioned-identity-lane.d.ts.map +1 -0
- package/dist/challenges/service-adapter-lane.d.ts +3 -0
- package/dist/challenges/service-adapter-lane.d.ts.map +1 -0
- package/dist/challenges/strategy-selector.d.ts +10 -0
- package/dist/challenges/strategy-selector.d.ts.map +1 -0
- package/dist/challenges/types.d.ts +277 -0
- package/dist/challenges/types.d.ts.map +1 -0
- package/dist/challenges/verification-gate.d.ts +15 -0
- package/dist/challenges/verification-gate.d.ts.map +1 -0
- package/dist/chunk-5FZQJRBQ.js +15256 -0
- package/dist/chunk-5FZQJRBQ.js.map +1 -0
- package/dist/chunk-W4IHGDXV.js +33519 -0
- package/dist/chunk-W4IHGDXV.js.map +1 -0
- package/dist/chunk-YBQECXZX.js +409 -0
- package/dist/chunk-YBQECXZX.js.map +1 -0
- package/dist/cli/args.d.ts +4 -4
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/commands/artifacts.d.ts.map +1 -1
- package/dist/cli/commands/canvas.d.ts +7 -7
- package/dist/cli/commands/canvas.d.ts.map +1 -1
- package/dist/cli/commands/daemon.d.ts +7 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/desktop/accessibility-snapshot.d.ts +3 -0
- package/dist/cli/commands/desktop/accessibility-snapshot.d.ts.map +1 -0
- package/dist/cli/commands/desktop/active-window.d.ts +3 -0
- package/dist/cli/commands/desktop/active-window.d.ts.map +1 -0
- package/dist/cli/commands/desktop/capture-desktop.d.ts +3 -0
- package/dist/cli/commands/desktop/capture-desktop.d.ts.map +1 -0
- package/dist/cli/commands/desktop/capture-window.d.ts +3 -0
- package/dist/cli/commands/desktop/capture-window.d.ts.map +1 -0
- package/dist/cli/commands/desktop/shared.d.ts +19 -0
- package/dist/cli/commands/desktop/shared.d.ts.map +1 -0
- package/dist/cli/commands/desktop/status.d.ts +3 -0
- package/dist/cli/commands/desktop/status.d.ts.map +1 -0
- package/dist/cli/commands/desktop/windows.d.ts +3 -0
- package/dist/cli/commands/desktop/windows.d.ts.map +1 -0
- package/dist/cli/commands/devtools/dialog.d.ts +19 -0
- package/dist/cli/commands/devtools/dialog.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screencast-start.d.ts +20 -0
- package/dist/cli/commands/devtools/screencast-start.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screencast-stop.d.ts +17 -0
- package/dist/cli/commands/devtools/screencast-stop.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screenshot.d.ts +2 -0
- package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -1
- package/dist/cli/commands/interact/click.d.ts.map +1 -1
- package/dist/cli/commands/interact/pointer-down.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-down.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-drag.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-drag.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-move.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-move.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-shared.d.ts +6 -0
- package/dist/cli/commands/interact/pointer-shared.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-up.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-up.d.ts.map +1 -0
- package/dist/cli/commands/interact/upload.d.ts +18 -0
- package/dist/cli/commands/interact/upload.d.ts.map +1 -0
- package/dist/cli/commands/macro-resolve.d.ts +2 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/native.d.ts +10 -7
- package/dist/cli/commands/native.d.ts.map +1 -1
- package/dist/cli/commands/nav/review.d.ts +7 -0
- package/dist/cli/commands/nav/review.d.ts.map +1 -0
- package/dist/cli/commands/nav/snapshot.d.ts.map +1 -1
- package/dist/cli/commands/pages/open.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts +2 -0
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts +3 -0
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/run.d.ts +14 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts +1 -26
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/session/connect.d.ts.map +1 -1
- package/dist/cli/commands/session/disconnect.d.ts.map +1 -1
- package/dist/cli/commands/session/inspector.d.ts +21 -0
- package/dist/cli/commands/session/inspector.d.ts.map +1 -0
- package/dist/cli/commands/session/launch.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts +5 -0
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/status.d.ts +2 -14
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/targets/new.d.ts.map +1 -1
- package/dist/cli/daemon-autostart.d.ts +11 -0
- package/dist/cli/daemon-autostart.d.ts.map +1 -1
- package/dist/cli/daemon-client.d.ts +3 -0
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-state.d.ts +16 -0
- package/dist/cli/daemon-state.d.ts.map +1 -1
- package/dist/cli/daemon-status.d.ts +7 -2
- package/dist/cli/daemon-status.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts +1 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/help.d.ts +15 -4
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +2476 -1036
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install-autostart-output.d.ts +6 -0
- package/dist/cli/install-autostart-output.d.ts.map +1 -0
- package/dist/cli/install-autostart-reconciliation.d.ts +23 -0
- package/dist/cli/install-autostart-reconciliation.d.ts.map +1 -0
- package/dist/cli/installers/skills.d.ts +42 -6
- package/dist/cli/installers/skills.d.ts.map +1 -1
- package/dist/cli/output.d.ts +3 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/remote-desktop-runtime.d.ts +15 -0
- package/dist/cli/remote-desktop-runtime.d.ts.map +1 -0
- package/dist/cli/remote-manager.d.ts +24 -2
- package/dist/cli/remote-manager.d.ts.map +1 -1
- package/dist/cli/transport-timeouts.d.ts +8 -0
- package/dist/cli/transport-timeouts.d.ts.map +1 -0
- package/dist/cli/utils/http.d.ts +9 -0
- package/dist/cli/utils/http.d.ts.map +1 -1
- package/dist/cli/utils/parse.d.ts +2 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/cli/utils/skills.d.ts +1 -2
- package/dist/cli/utils/skills.d.ts.map +1 -1
- package/dist/cli/utils/workflow-message.d.ts +2 -0
- package/dist/cli/utils/workflow-message.d.ts.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/logging.d.ts +3 -1
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/runtime-assemblies.d.ts +22 -0
- package/dist/core/runtime-assemblies.d.ts.map +1 -0
- package/dist/core/types.d.ts +15 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/desktop/audit.d.ts +37 -0
- package/dist/desktop/audit.d.ts.map +1 -0
- package/dist/desktop/errors.d.ts +7 -0
- package/dist/desktop/errors.d.ts.map +1 -0
- package/dist/desktop/index.d.ts +6 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/runtime.d.ts +26 -0
- package/dist/desktop/runtime.d.ts.map +1 -0
- package/dist/desktop/types.d.ts +76 -0
- package/dist/desktop/types.d.ts.map +1 -0
- package/dist/extension-extractor.d.ts +6 -0
- package/dist/extension-extractor.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1103 -467
- package/dist/index.js.map +1 -1
- package/dist/integrations/figma/assets.d.ts +13 -0
- package/dist/integrations/figma/assets.d.ts.map +1 -0
- package/dist/integrations/figma/auth.d.ts +3 -0
- package/dist/integrations/figma/auth.d.ts.map +1 -0
- package/dist/integrations/figma/client.d.ts +42 -0
- package/dist/integrations/figma/client.d.ts.map +1 -0
- package/dist/integrations/figma/mappers.d.ts +23 -0
- package/dist/integrations/figma/mappers.d.ts.map +1 -0
- package/dist/integrations/figma/normalize.d.ts +99 -0
- package/dist/integrations/figma/normalize.d.ts.map +1 -0
- package/dist/integrations/figma/url.d.ts +17 -0
- package/dist/integrations/figma/url.d.ts.map +1 -0
- package/dist/integrations/figma/variables.d.ts +21 -0
- package/dist/integrations/figma/variables.d.ts.map +1 -0
- package/dist/macros/execute-runtime.d.ts +19 -0
- package/dist/macros/execute-runtime.d.ts.map +1 -0
- package/dist/macros/execute.d.ts +3 -1
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +1103 -467
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/providers/blocker.d.ts.map +1 -1
- package/dist/providers/browser-fallback.d.ts +30 -0
- package/dist/providers/browser-fallback.d.ts.map +1 -0
- package/dist/providers/constraint.d.ts +45 -0
- package/dist/providers/constraint.d.ts.map +1 -0
- package/dist/providers/index.d.ts +11 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/policy.d.ts.map +1 -1
- package/dist/providers/product-video-compiler.d.ts +92 -0
- package/dist/providers/product-video-compiler.d.ts.map +1 -0
- package/dist/providers/registry.d.ts +37 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +64 -0
- package/dist/providers/research-compiler.d.ts.map +1 -0
- package/dist/providers/research-executor.d.ts +27 -0
- package/dist/providers/research-executor.d.ts.map +1 -0
- package/dist/providers/runtime-bundle.d.ts +26 -0
- package/dist/providers/runtime-bundle.d.ts.map +1 -0
- package/dist/providers/runtime-factory.d.ts +6 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/runtime-policy.d.ts +24 -0
- package/dist/providers/runtime-policy.d.ts.map +1 -0
- package/dist/providers/shared/anti-bot-policy.d.ts +3 -2
- package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts +11 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/shopping-compiler.d.ts +51 -0
- package/dist/providers/shopping-compiler.d.ts.map +1 -0
- package/dist/providers/shopping-executor.d.ts +18 -0
- package/dist/providers/shopping-executor.d.ts.map +1 -0
- package/dist/providers/shopping-postprocess.d.ts +46 -0
- package/dist/providers/shopping-postprocess.d.ts.map +1 -0
- package/dist/providers/shopping-workflow.d.ts +33 -0
- package/dist/providers/shopping-workflow.d.ts.map +1 -0
- package/dist/providers/social/platform.d.ts +2 -1
- package/dist/providers/social/platform.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts +16 -0
- package/dist/providers/social/search-quality.d.ts.map +1 -0
- package/dist/providers/social/youtube-resolver.d.ts +2 -1
- package/dist/providers/social/youtube-resolver.d.ts.map +1 -1
- package/dist/providers/social/youtube.d.ts.map +1 -1
- package/dist/providers/types.d.ts +116 -4
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/web/crawl-worker.d.ts.map +1 -1
- package/dist/providers/web/extract.d.ts +16 -0
- package/dist/providers/web/extract.d.ts.map +1 -1
- package/dist/providers/web/index.d.ts.map +1 -1
- package/dist/providers/workflow-contracts.d.ts +53 -0
- package/dist/providers/workflow-contracts.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts +30 -6
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-G3LRHQXX.js → providers-G36AM3Z2.js} +2 -2
- package/dist/public-surface/generated-manifest.d.ts +1168 -0
- package/dist/public-surface/generated-manifest.d.ts.map +1 -0
- package/dist/public-surface/source.d.ts +437 -0
- package/dist/public-surface/source.d.ts.map +1 -0
- package/dist/relay/protocol.d.ts +25 -3
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-endpoints.d.ts +21 -0
- package/dist/relay/relay-endpoints.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +18 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/skills/bundled-skill-directories.d.ts +8 -0
- package/dist/skills/bundled-skill-directories.d.ts.map +1 -0
- package/dist/skills/skill-loader.d.ts +9 -1
- package/dist/skills/skill-loader.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +7 -0
- package/dist/skills/skill-nudge.d.ts.map +1 -1
- package/dist/skills/types.d.ts +31 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/snapshot/ops-snapshot.d.ts +1 -1
- package/dist/snapshot/ops-snapshot.d.ts.map +1 -1
- package/dist/snapshot/refs.d.ts +6 -1
- package/dist/snapshot/refs.d.ts.map +1 -1
- package/dist/snapshot/snapshotter.d.ts.map +1 -1
- package/dist/tools/connect.d.ts.map +1 -1
- package/dist/tools/deps.d.ts +4 -0
- package/dist/tools/deps.d.ts.map +1 -1
- package/dist/tools/desktop-shared.d.ts +6 -0
- package/dist/tools/desktop-shared.d.ts.map +1 -0
- package/dist/tools/desktop_accessibility_snapshot.d.ts +4 -0
- package/dist/tools/desktop_accessibility_snapshot.d.ts.map +1 -0
- package/dist/tools/desktop_active_window.d.ts +4 -0
- package/dist/tools/desktop_active_window.d.ts.map +1 -0
- package/dist/tools/desktop_capture_desktop.d.ts +4 -0
- package/dist/tools/desktop_capture_desktop.d.ts.map +1 -0
- package/dist/tools/desktop_capture_window.d.ts +4 -0
- package/dist/tools/desktop_capture_window.d.ts.map +1 -0
- package/dist/tools/desktop_status.d.ts +4 -0
- package/dist/tools/desktop_status.d.ts.map +1 -0
- package/dist/tools/desktop_windows.d.ts +4 -0
- package/dist/tools/desktop_windows.d.ts.map +1 -0
- package/dist/tools/dialog.d.ts +4 -0
- package/dist/tools/dialog.d.ts.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/launch.d.ts.map +1 -1
- package/dist/tools/macro_resolve.d.ts.map +1 -1
- package/dist/tools/pointer_down.d.ts +4 -0
- package/dist/tools/pointer_down.d.ts.map +1 -0
- package/dist/tools/pointer_drag.d.ts +4 -0
- package/dist/tools/pointer_drag.d.ts.map +1 -0
- package/dist/tools/pointer_move.d.ts +4 -0
- package/dist/tools/pointer_move.d.ts.map +1 -0
- package/dist/tools/pointer_up.d.ts +4 -0
- package/dist/tools/pointer_up.d.ts.map +1 -0
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/tools/prompting_guide.d.ts.map +1 -1
- package/dist/tools/research_run.d.ts.map +1 -1
- package/dist/tools/review.d.ts +4 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/screencast_start.d.ts +4 -0
- package/dist/tools/screencast_start.d.ts.map +1 -0
- package/dist/tools/screencast_stop.d.ts +4 -0
- package/dist/tools/screencast_stop.d.ts.map +1 -0
- package/dist/tools/screenshot.d.ts.map +1 -1
- package/dist/tools/session_inspector.d.ts +4 -0
- package/dist/tools/session_inspector.d.ts.map +1 -0
- package/dist/tools/shopping_run.d.ts.map +1 -1
- package/dist/tools/skill_list.d.ts.map +1 -1
- package/dist/tools/skill_load.d.ts.map +1 -1
- package/dist/tools/upload.d.ts +4 -0
- package/dist/tools/upload.d.ts.map +1 -0
- package/dist/tools/workflow-runtime.d.ts +4 -1
- package/dist/tools/workflow-runtime.d.ts.map +1 -1
- package/dist/utils/package-assets.d.ts +4 -0
- package/dist/utils/package-assets.d.ts.map +1 -0
- package/extension/canvas.html +379 -9
- package/extension/dist/annotate-content.js +62 -32
- package/extension/dist/annotation-payload.js +57 -21
- package/extension/dist/background.js +406 -61
- package/extension/dist/canvas/canvas-runtime.js +481 -52
- package/extension/dist/canvas/model.js +129 -1
- package/extension/dist/canvas-page.js +1882 -74
- package/extension/dist/ops/dom-bridge.js +139 -0
- package/extension/dist/ops/ops-runtime.js +2854 -295
- package/extension/dist/ops/ops-session-store.js +83 -5
- package/extension/dist/ops/snapshot-builder.js +2 -2
- package/extension/dist/ops/snapshot-shared.js +2 -2
- package/extension/dist/ops/target-session-coordinator.js +5 -3
- package/extension/dist/popup.js +50 -15
- package/extension/dist/services/CDPRouter.js +1567 -63
- package/extension/dist/services/ConnectionManager.js +436 -78
- package/extension/dist/services/RelayClient.js +70 -30
- package/extension/dist/services/TabManager.js +83 -10
- package/extension/dist/services/TargetSessionMap.js +127 -3
- package/extension/dist/services/attach-errors.js +20 -0
- package/extension/dist/services/cdp-router-commands.js +135 -8
- package/extension/dist/services/url-restrictions.js +9 -13
- package/extension/manifest.json +2 -2
- package/extension/popup.html +7 -6
- package/package.json +15 -7
- package/skills/AGENTS.md +9 -8
- package/skills/opendevbrowser-best-practices/SKILL.md +118 -9
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +1 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +26 -12
- package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +9 -2
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +6 -0
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +58 -0
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +674 -0
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +9 -4
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +89 -20
- package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +100 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +1 -0
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +256 -116
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +208 -0
- package/skills/opendevbrowser-continuity-ledger/SKILL.md +14 -1
- package/skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh +61 -0
- package/skills/opendevbrowser-data-extraction/SKILL.md +6 -0
- package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +112 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +275 -0
- package/skills/opendevbrowser-design-agent/artifacts/app-shell-and-state-wiring.md +84 -0
- package/skills/opendevbrowser-design-agent/artifacts/async-search-state-ownership.md +58 -0
- package/skills/opendevbrowser-design-agent/artifacts/component-pattern-index.md +130 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md +157 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-release-gate.md +40 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +153 -0
- package/skills/opendevbrowser-design-agent/artifacts/existing-surface-adaptation.md +56 -0
- package/skills/opendevbrowser-design-agent/artifacts/external-pattern-synthesis.md +103 -0
- package/skills/opendevbrowser-design-agent/artifacts/frontend-evaluation-rubric.md +61 -0
- package/skills/opendevbrowser-design-agent/artifacts/implementation-anti-patterns.md +163 -0
- package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +68 -0
- package/skills/opendevbrowser-design-agent/artifacts/loading-and-feedback-surfaces.md +56 -0
- package/skills/opendevbrowser-design-agent/artifacts/opendevbrowser-ui-example-map.md +44 -0
- package/skills/opendevbrowser-design-agent/artifacts/performance-audit-playbook.md +70 -0
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +81 -0
- package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +64 -0
- package/skills/opendevbrowser-design-agent/artifacts/state-ownership-matrix.md +36 -0
- package/skills/opendevbrowser-design-agent/artifacts/theming-and-token-ownership.md +43 -0
- package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +58 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-audit-report.v1.md +34 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-brief.v1.md +40 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-contract.v1.json +226 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-release-gate.v1.json +35 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-review-checklist.json +57 -0
- package/skills/opendevbrowser-design-agent/assets/templates/real-surface-design-matrix.json +32 -0
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +31 -0
- package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +171 -0
- package/skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh +56 -0
- package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +223 -0
- package/skills/opendevbrowser-form-testing/SKILL.md +19 -3
- package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +5 -4
- package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +2 -0
- package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +109 -0
- package/skills/opendevbrowser-login-automation/SKILL.md +21 -3
- package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +5 -4
- package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +5 -0
- package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +3 -2
- package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +17 -1
- package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +133 -0
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +23 -11
- package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +5 -3
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +2 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +3 -2
- package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +5 -1
- package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +6 -2
- package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +5 -1
- package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +20 -7
- package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +39 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +5 -1
- package/skills/opendevbrowser-research/SKILL.md +14 -6
- package/skills/opendevbrowser-research/scripts/render-output.sh +5 -1
- package/skills/opendevbrowser-research/scripts/run-research.sh +5 -1
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +45 -0
- package/skills/opendevbrowser-research/scripts/write-artifacts.sh +5 -1
- package/skills/opendevbrowser-shopping/SKILL.md +20 -1
- package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +6 -2
- package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +5 -1
- package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +5 -1
- package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +54 -0
- package/dist/chunk-5J3IFL3X.js +0 -16706
- package/dist/chunk-5J3IFL3X.js.map +0 -1
- package/dist/chunk-D633UO34.js +0 -8149
- package/dist/chunk-D633UO34.js.map +0 -1
- package/dist/chunk-V7KUDHDG.js +0 -276
- package/dist/chunk-V7KUDHDG.js.map +0 -1
- package/dist/runtime-factory-BICHDPE7.js +0 -13
- /package/dist/{providers-G3LRHQXX.js.map → providers-G36AM3Z2.js.map} +0 -0
- /package/dist/{runtime-factory-BICHDPE7.js.map → skills/skill-loader.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,37 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AGENT_INBOX_SYSTEM_MARKER,
|
|
2
3
|
DaemonClient,
|
|
3
4
|
ScriptRunner,
|
|
4
5
|
buildAnnotateResult,
|
|
6
|
+
buildBrowserReviewResult,
|
|
7
|
+
buildLoopbackSessionRelayEndpoint,
|
|
8
|
+
classifySessionRelayEndpoint,
|
|
9
|
+
createAutomationCoordinator,
|
|
10
|
+
createCoreRuntimeAssemblies,
|
|
5
11
|
createOpenDevBrowserCore,
|
|
6
|
-
|
|
12
|
+
executeMacroWithRuntime,
|
|
7
13
|
extractExtension,
|
|
8
14
|
fetchDaemonStatusFromMetadata,
|
|
9
|
-
|
|
15
|
+
inspectSession,
|
|
16
|
+
onboarding_metadata_default,
|
|
17
|
+
resolveBundledProviderRuntime,
|
|
18
|
+
resolveSessionRelayRoute,
|
|
10
19
|
startDaemon
|
|
11
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-W4IHGDXV.js";
|
|
21
|
+
import "./chunk-YBQECXZX.js";
|
|
12
22
|
import "./chunk-Y2KL55OG.js";
|
|
13
23
|
import "./chunk-TBUCZX4A.js";
|
|
14
24
|
import {
|
|
15
|
-
|
|
16
|
-
createConfiguredProviderRuntime
|
|
17
|
-
} from "./chunk-V7KUDHDG.js";
|
|
18
|
-
import {
|
|
25
|
+
CHALLENGE_AUTOMATION_MODES,
|
|
19
26
|
buildBlockerArtifacts,
|
|
20
27
|
classifyBlockerSignal,
|
|
21
28
|
createRequestId
|
|
22
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-5FZQJRBQ.js";
|
|
23
30
|
import "./chunk-FUSXMW3G.js";
|
|
24
31
|
|
|
25
32
|
// src/cli/remote-manager.ts
|
|
26
|
-
function isLegacyRelayEndpoint(wsEndpoint) {
|
|
27
|
-
try {
|
|
28
|
-
const url = new URL(wsEndpoint);
|
|
29
|
-
const path = url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname;
|
|
30
|
-
return path === "/cdp";
|
|
31
|
-
} catch {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
33
|
var RemoteManager = class {
|
|
36
34
|
client;
|
|
37
35
|
constructor(client) {
|
|
@@ -45,14 +43,12 @@ var RemoteManager = class {
|
|
|
45
43
|
}
|
|
46
44
|
connectRelay(wsEndpoint, options) {
|
|
47
45
|
const startUrl = typeof options?.startUrl === "string" && options.startUrl.trim().length > 0 ? options.startUrl.trim() : void 0;
|
|
46
|
+
const parsedRelayEndpoint = classifySessionRelayEndpoint(wsEndpoint);
|
|
48
47
|
return this.client.call(
|
|
49
48
|
"session.connect",
|
|
50
|
-
|
|
51
|
-
wsEndpoint,
|
|
52
|
-
extensionLegacy: true,
|
|
53
|
-
...startUrl ? { startUrl } : {}
|
|
54
|
-
} : {
|
|
49
|
+
{
|
|
55
50
|
wsEndpoint,
|
|
51
|
+
...parsedRelayEndpoint?.inputPath === "/cdp" ? { extensionLegacy: true } : {},
|
|
56
52
|
...startUrl ? { startUrl } : {}
|
|
57
53
|
}
|
|
58
54
|
);
|
|
@@ -253,11 +249,44 @@ var RemoteManager = class {
|
|
|
253
249
|
...typeof targetId === "string" ? { targetId } : {}
|
|
254
250
|
});
|
|
255
251
|
}
|
|
256
|
-
screenshot(sessionId,
|
|
252
|
+
screenshot(sessionId, options = {}) {
|
|
257
253
|
return this.client.call("page.screenshot", {
|
|
258
254
|
sessionId,
|
|
259
|
-
path,
|
|
260
|
-
...typeof targetId === "string" ? { targetId } : {}
|
|
255
|
+
...typeof options.path === "string" ? { path: options.path } : {},
|
|
256
|
+
...typeof options.targetId === "string" ? { targetId: options.targetId } : {},
|
|
257
|
+
...typeof options.ref === "string" ? { ref: options.ref } : {},
|
|
258
|
+
...options.fullPage === true ? { fullPage: true } : {}
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
startScreencast(sessionId, options = {}) {
|
|
262
|
+
return this.client.call("page.screencast.start", {
|
|
263
|
+
sessionId,
|
|
264
|
+
...typeof options.targetId === "string" ? { targetId: options.targetId } : {},
|
|
265
|
+
...typeof options.outputDir === "string" ? { outputDir: options.outputDir } : {},
|
|
266
|
+
...typeof options.intervalMs === "number" ? { intervalMs: options.intervalMs } : {},
|
|
267
|
+
...typeof options.maxFrames === "number" ? { maxFrames: options.maxFrames } : {}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
stopScreencast(sessionId, screencastId) {
|
|
271
|
+
return this.client.call("page.screencast.stop", {
|
|
272
|
+
sessionId,
|
|
273
|
+
screencastId
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
upload(sessionId, input) {
|
|
277
|
+
return this.client.call("interact.upload", {
|
|
278
|
+
sessionId,
|
|
279
|
+
ref: input.ref,
|
|
280
|
+
files: input.files,
|
|
281
|
+
...typeof input.targetId === "string" ? { targetId: input.targetId } : {}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
dialog(sessionId, input = {}) {
|
|
285
|
+
return this.client.call("page.dialog", {
|
|
286
|
+
sessionId,
|
|
287
|
+
action: input.action ?? "status",
|
|
288
|
+
...typeof input.promptText === "string" ? { promptText: input.promptText } : {},
|
|
289
|
+
...typeof input.targetId === "string" ? { targetId: input.targetId } : {}
|
|
261
290
|
});
|
|
262
291
|
}
|
|
263
292
|
consolePoll(sessionId, sinceSeq, max = 50) {
|
|
@@ -266,6 +295,59 @@ var RemoteManager = class {
|
|
|
266
295
|
networkPoll(sessionId, sinceSeq, max = 50) {
|
|
267
296
|
return this.client.call("devtools.networkPoll", { sessionId, sinceSeq, max });
|
|
268
297
|
}
|
|
298
|
+
debugTraceSnapshot(sessionId, options = {}) {
|
|
299
|
+
return this.client.call("devtools.debugTraceSnapshot", {
|
|
300
|
+
sessionId,
|
|
301
|
+
...options
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
createSessionInspector() {
|
|
305
|
+
return {
|
|
306
|
+
status: (sessionId) => this.status(sessionId),
|
|
307
|
+
listTargets: (sessionId, includeUrls) => this.listTargets(sessionId, includeUrls),
|
|
308
|
+
consolePoll: (sessionId, sinceSeq, max) => this.consolePoll(sessionId, sinceSeq, max),
|
|
309
|
+
networkPoll: (sessionId, sinceSeq, max) => this.networkPoll(sessionId, sinceSeq, max),
|
|
310
|
+
debugTraceSnapshot: (sessionId, options) => this.debugTraceSnapshot(sessionId, options)
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
pointerMove(sessionId, x, y, targetId, steps) {
|
|
314
|
+
return this.client.call("pointer.move", {
|
|
315
|
+
sessionId,
|
|
316
|
+
x,
|
|
317
|
+
y,
|
|
318
|
+
...typeof steps === "number" ? { steps } : {},
|
|
319
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
pointerDown(sessionId, x, y, targetId, button = "left", clickCount = 1) {
|
|
323
|
+
return this.client.call("pointer.down", {
|
|
324
|
+
sessionId,
|
|
325
|
+
x,
|
|
326
|
+
y,
|
|
327
|
+
button,
|
|
328
|
+
clickCount,
|
|
329
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
pointerUp(sessionId, x, y, targetId, button = "left", clickCount = 1) {
|
|
333
|
+
return this.client.call("pointer.up", {
|
|
334
|
+
sessionId,
|
|
335
|
+
x,
|
|
336
|
+
y,
|
|
337
|
+
button,
|
|
338
|
+
clickCount,
|
|
339
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
drag(sessionId, from, to, targetId, steps) {
|
|
343
|
+
return this.client.call("pointer.drag", {
|
|
344
|
+
sessionId,
|
|
345
|
+
from,
|
|
346
|
+
to,
|
|
347
|
+
...typeof steps === "number" ? { steps } : {},
|
|
348
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
349
|
+
});
|
|
350
|
+
}
|
|
269
351
|
listTargets(sessionId, includeUrls = false) {
|
|
270
352
|
return this.client.call("targets.list", { sessionId, includeUrls });
|
|
271
353
|
}
|
|
@@ -303,6 +385,42 @@ var RemoteCanvasManager = class {
|
|
|
303
385
|
}
|
|
304
386
|
};
|
|
305
387
|
|
|
388
|
+
// src/cli/remote-desktop-runtime.ts
|
|
389
|
+
var RemoteDesktopRuntime = class {
|
|
390
|
+
client;
|
|
391
|
+
constructor(client) {
|
|
392
|
+
this.client = client;
|
|
393
|
+
}
|
|
394
|
+
status() {
|
|
395
|
+
return this.client.call("desktop.status");
|
|
396
|
+
}
|
|
397
|
+
listWindows(reason) {
|
|
398
|
+
return this.client.call("desktop.windows.list", {
|
|
399
|
+
...reason ? { reason } : {}
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
activeWindow(reason) {
|
|
403
|
+
return this.client.call("desktop.window.active", {
|
|
404
|
+
...reason ? { reason } : {}
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
captureDesktop(input) {
|
|
408
|
+
return this.client.call("desktop.capture.desktop", { reason: input.reason });
|
|
409
|
+
}
|
|
410
|
+
captureWindow(windowId, input) {
|
|
411
|
+
return this.client.call("desktop.capture.window", {
|
|
412
|
+
windowId,
|
|
413
|
+
reason: input.reason
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
accessibilitySnapshot(reason, windowId) {
|
|
417
|
+
return this.client.call("desktop.accessibility.snapshot", {
|
|
418
|
+
reason,
|
|
419
|
+
...windowId ? { windowId } : {}
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
|
|
306
424
|
// src/cli/remote-relay.ts
|
|
307
425
|
var emptyStatus = {
|
|
308
426
|
running: false,
|
|
@@ -376,7 +494,7 @@ var RemoteRelay = class {
|
|
|
376
494
|
|
|
377
495
|
// src/skills/skill-nudge.ts
|
|
378
496
|
var SKILL_NUDGE_MARKER = "[opendevbrowser:skill-nudge]";
|
|
379
|
-
var SKILL_NUDGE_MESSAGE = `${SKILL_NUDGE_MARKER} If this task likely matches a skill, start with skill("
|
|
497
|
+
var SKILL_NUDGE_MESSAGE = `${SKILL_NUDGE_MARKER} If this task likely matches a skill, start with skill("${onboarding_metadata_default.skillName}", "${onboarding_metadata_default.skillTopic}"). For frontend, UI, screenshot-to-code, or /canvas design work, then load skill("${onboarding_metadata_default.designSkillName}"). Use the canonical opendevbrowser-* packs and start with the bundled quick-start lane before low-level browser commands.`;
|
|
380
498
|
function createSkillNudgeState() {
|
|
381
499
|
return { pending: false, requestedAtMs: null };
|
|
382
500
|
}
|
|
@@ -501,7 +619,7 @@ function createLaunchTool(deps) {
|
|
|
501
619
|
let relayUrl = extensionLegacy ? deps.relay?.getCdpUrl() ?? null : deps.relay?.getOpsUrl?.() ?? null;
|
|
502
620
|
const relayPort = relayStatus?.port;
|
|
503
621
|
if (!relayUrl && isValidPort(relayPort)) {
|
|
504
|
-
relayUrl =
|
|
622
|
+
relayUrl = buildLoopbackSessionRelayEndpoint(relayPort, { extensionLegacy });
|
|
505
623
|
}
|
|
506
624
|
const waitTimeoutMs = clampWaitTimeout(args.waitTimeoutMs ?? 3e4);
|
|
507
625
|
const headlessExplicit = args.headless === true;
|
|
@@ -526,7 +644,7 @@ function createLaunchTool(deps) {
|
|
|
526
644
|
const observedStatus = shouldFetchObserved ? await fetchRelayObservedStatus(observedPort) : null;
|
|
527
645
|
if (!relayUrl) {
|
|
528
646
|
const fallbackPort = isValidPort(observedStatus?.port) ? observedStatus?.port : observedPort;
|
|
529
|
-
relayUrl = fallbackPort ?
|
|
647
|
+
relayUrl = fallbackPort ? buildLoopbackSessionRelayEndpoint(fallbackPort, { extensionLegacy }) : null;
|
|
530
648
|
}
|
|
531
649
|
const extensionReady = Boolean(
|
|
532
650
|
relayUrl && (relayStatus?.extensionHandshakeComplete || relayStatus?.extensionConnected || observedStatus?.extensionHandshakeComplete || observedStatus?.extensionConnected)
|
|
@@ -783,21 +901,6 @@ async function fetchRelayObservedStatus(port) {
|
|
|
783
901
|
// src/tools/connect.ts
|
|
784
902
|
import { tool as tool2 } from "@opencode-ai/plugin";
|
|
785
903
|
var z2 = tool2.schema;
|
|
786
|
-
function normalizeRelayEndpoint(wsEndpoint, path, allowBase) {
|
|
787
|
-
if (!wsEndpoint) return null;
|
|
788
|
-
try {
|
|
789
|
-
const url = new URL(wsEndpoint);
|
|
790
|
-
if (url.protocol !== "ws:" && url.protocol !== "wss:") return null;
|
|
791
|
-
if (url.hostname !== "127.0.0.1" && url.hostname !== "localhost") return null;
|
|
792
|
-
if (!url.port || !/^\d+$/.test(url.port)) return null;
|
|
793
|
-
const normalizedPath = url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname;
|
|
794
|
-
if (!allowBase && normalizedPath === "") return null;
|
|
795
|
-
if (normalizedPath && normalizedPath !== `/${path}`) return null;
|
|
796
|
-
return `${url.protocol}//${url.hostname}:${url.port}/${path}`;
|
|
797
|
-
} catch {
|
|
798
|
-
return null;
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
904
|
function createConnectTool(deps) {
|
|
802
905
|
return tool2({
|
|
803
906
|
description: "Connect to an existing Chrome CDP endpoint or extension relay.",
|
|
@@ -816,15 +919,16 @@ function createConnectTool(deps) {
|
|
|
816
919
|
const startUrl = typeof args.startUrl === "string" && args.startUrl.trim().length > 0 ? args.startUrl.trim() : void 0;
|
|
817
920
|
const hasExplicitCdp = Boolean(wsEndpoint || args.host || args.port);
|
|
818
921
|
const relayUrl = extensionLegacy ? deps.relay?.getCdpUrl() ?? null : deps.relay?.getOpsUrl?.() ?? null;
|
|
819
|
-
const
|
|
820
|
-
const
|
|
821
|
-
if (
|
|
822
|
-
return failure(
|
|
922
|
+
const parsedRelayEndpoint = classifySessionRelayEndpoint(wsEndpoint);
|
|
923
|
+
const resolvedRelayEndpoint = parsedRelayEndpoint ? resolveSessionRelayRoute(parsedRelayEndpoint, { extensionLegacy }) : null;
|
|
924
|
+
if (resolvedRelayEndpoint && "code" in resolvedRelayEndpoint) {
|
|
925
|
+
return failure(resolvedRelayEndpoint.message, resolvedRelayEndpoint.code);
|
|
823
926
|
}
|
|
824
|
-
const relayEndpoint = relayUrl && wsEndpoint === relayUrl ? relayUrl :
|
|
927
|
+
const relayEndpoint = relayUrl && wsEndpoint === relayUrl ? relayUrl : resolvedRelayEndpoint?.normalizedEndpoint ?? null;
|
|
928
|
+
const preferredRelayEndpoint = relayEndpoint ?? (!hasExplicitCdp ? relayUrl : null);
|
|
825
929
|
let result;
|
|
826
|
-
if (
|
|
827
|
-
result = startUrl ? await deps.manager.connectRelay(
|
|
930
|
+
if (preferredRelayEndpoint) {
|
|
931
|
+
result = startUrl ? await deps.manager.connectRelay(preferredRelayEndpoint, { startUrl }) : await deps.manager.connectRelay(preferredRelayEndpoint);
|
|
828
932
|
} else {
|
|
829
933
|
if (!hasExplicitCdp) {
|
|
830
934
|
return failure("Extension relay not available. Connect the extension or pass wsEndpoint/host/port.", "extension_not_connected");
|
|
@@ -985,15 +1089,56 @@ function createStatusTool(deps) {
|
|
|
985
1089
|
});
|
|
986
1090
|
}
|
|
987
1091
|
|
|
988
|
-
// src/tools/
|
|
1092
|
+
// src/tools/session_inspector.ts
|
|
989
1093
|
import { tool as tool5 } from "@opencode-ai/plugin";
|
|
990
1094
|
var z5 = tool5.schema;
|
|
991
|
-
function
|
|
1095
|
+
function createSessionInspectorTool(deps) {
|
|
992
1096
|
return tool5({
|
|
993
|
-
description: "
|
|
1097
|
+
description: "Capture a session-first diagnostic bundle with relay health, trace proof, and a suggested next action.",
|
|
994
1098
|
args: {
|
|
995
1099
|
sessionId: z5.string().describe("Session id"),
|
|
996
|
-
includeUrls: z5.boolean().optional().describe("Include target URLs")
|
|
1100
|
+
includeUrls: z5.boolean().optional().describe("Include target URLs in the targets summary"),
|
|
1101
|
+
sinceConsoleSeq: z5.number().int().optional().describe("Resume cursor for console events"),
|
|
1102
|
+
sinceNetworkSeq: z5.number().int().optional().describe("Resume cursor for network events"),
|
|
1103
|
+
sinceExceptionSeq: z5.number().int().optional().describe("Resume cursor for exception events"),
|
|
1104
|
+
max: z5.number().int().optional().describe("Max events per diagnostics channel"),
|
|
1105
|
+
requestId: z5.string().optional().describe("Optional trace request id")
|
|
1106
|
+
},
|
|
1107
|
+
async execute(args) {
|
|
1108
|
+
try {
|
|
1109
|
+
const inspector = deps.manager.createSessionInspector?.();
|
|
1110
|
+
if (!inspector) {
|
|
1111
|
+
return failure("Session inspector is unavailable for the current runtime.", "session_inspector_unavailable");
|
|
1112
|
+
}
|
|
1113
|
+
await deps.relay?.refresh?.().catch(() => void 0);
|
|
1114
|
+
const relayStatus = deps.relay?.status?.() ?? null;
|
|
1115
|
+
const result = await inspectSession(inspector, {
|
|
1116
|
+
sessionId: args.sessionId,
|
|
1117
|
+
includeUrls: args.includeUrls,
|
|
1118
|
+
sinceConsoleSeq: args.sinceConsoleSeq,
|
|
1119
|
+
sinceNetworkSeq: args.sinceNetworkSeq,
|
|
1120
|
+
sinceExceptionSeq: args.sinceExceptionSeq,
|
|
1121
|
+
max: args.max,
|
|
1122
|
+
requestId: args.requestId,
|
|
1123
|
+
relayStatus
|
|
1124
|
+
});
|
|
1125
|
+
return ok(result);
|
|
1126
|
+
} catch (error) {
|
|
1127
|
+
return failure(serializeError(error).message, "session_inspector_failed");
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
});
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
// src/tools/targets_list.ts
|
|
1134
|
+
import { tool as tool6 } from "@opencode-ai/plugin";
|
|
1135
|
+
var z6 = tool6.schema;
|
|
1136
|
+
function createTargetsListTool(deps) {
|
|
1137
|
+
return tool6({
|
|
1138
|
+
description: "List targets (tabs) in the current session.",
|
|
1139
|
+
args: {
|
|
1140
|
+
sessionId: z6.string().describe("Session id"),
|
|
1141
|
+
includeUrls: z6.boolean().optional().describe("Include target URLs")
|
|
997
1142
|
},
|
|
998
1143
|
async execute(args) {
|
|
999
1144
|
try {
|
|
@@ -1010,14 +1155,14 @@ function createTargetsListTool(deps) {
|
|
|
1010
1155
|
}
|
|
1011
1156
|
|
|
1012
1157
|
// src/tools/target_use.ts
|
|
1013
|
-
import { tool as
|
|
1014
|
-
var
|
|
1158
|
+
import { tool as tool7 } from "@opencode-ai/plugin";
|
|
1159
|
+
var z7 = tool7.schema;
|
|
1015
1160
|
function createTargetUseTool(deps) {
|
|
1016
|
-
return
|
|
1161
|
+
return tool7({
|
|
1017
1162
|
description: "Set the active target (tab).",
|
|
1018
1163
|
args: {
|
|
1019
|
-
sessionId:
|
|
1020
|
-
targetId:
|
|
1164
|
+
sessionId: z7.string().describe("Session id"),
|
|
1165
|
+
targetId: z7.string().describe("Target id")
|
|
1021
1166
|
},
|
|
1022
1167
|
async execute(args) {
|
|
1023
1168
|
try {
|
|
@@ -1035,14 +1180,14 @@ function createTargetUseTool(deps) {
|
|
|
1035
1180
|
}
|
|
1036
1181
|
|
|
1037
1182
|
// src/tools/target_new.ts
|
|
1038
|
-
import { tool as
|
|
1039
|
-
var
|
|
1183
|
+
import { tool as tool8 } from "@opencode-ai/plugin";
|
|
1184
|
+
var z8 = tool8.schema;
|
|
1040
1185
|
function createTargetNewTool(deps) {
|
|
1041
|
-
return
|
|
1186
|
+
return tool8({
|
|
1042
1187
|
description: "Open a new target (tab).",
|
|
1043
1188
|
args: {
|
|
1044
|
-
sessionId:
|
|
1045
|
-
url:
|
|
1189
|
+
sessionId: z8.string().describe("Session id"),
|
|
1190
|
+
url: z8.string().optional().describe("Optional URL to open")
|
|
1046
1191
|
},
|
|
1047
1192
|
async execute(args) {
|
|
1048
1193
|
try {
|
|
@@ -1056,14 +1201,14 @@ function createTargetNewTool(deps) {
|
|
|
1056
1201
|
}
|
|
1057
1202
|
|
|
1058
1203
|
// src/tools/target_close.ts
|
|
1059
|
-
import { tool as
|
|
1060
|
-
var
|
|
1204
|
+
import { tool as tool9 } from "@opencode-ai/plugin";
|
|
1205
|
+
var z9 = tool9.schema;
|
|
1061
1206
|
function createTargetCloseTool(deps) {
|
|
1062
|
-
return
|
|
1207
|
+
return tool9({
|
|
1063
1208
|
description: "Close a target (tab).",
|
|
1064
1209
|
args: {
|
|
1065
|
-
sessionId:
|
|
1066
|
-
targetId:
|
|
1210
|
+
sessionId: z9.string().describe("Session id"),
|
|
1211
|
+
targetId: z9.string().describe("Target id")
|
|
1067
1212
|
},
|
|
1068
1213
|
async execute(args) {
|
|
1069
1214
|
try {
|
|
@@ -1077,15 +1222,15 @@ function createTargetCloseTool(deps) {
|
|
|
1077
1222
|
}
|
|
1078
1223
|
|
|
1079
1224
|
// src/tools/page.ts
|
|
1080
|
-
import { tool as
|
|
1081
|
-
var
|
|
1225
|
+
import { tool as tool10 } from "@opencode-ai/plugin";
|
|
1226
|
+
var z10 = tool10.schema;
|
|
1082
1227
|
function createPageTool(deps) {
|
|
1083
|
-
return
|
|
1228
|
+
return tool10({
|
|
1084
1229
|
description: "Open or focus a named page, optionally navigating to a URL.",
|
|
1085
1230
|
args: {
|
|
1086
|
-
sessionId:
|
|
1087
|
-
name:
|
|
1088
|
-
url:
|
|
1231
|
+
sessionId: z10.string().describe("Active browser session id"),
|
|
1232
|
+
name: z10.string().describe("Stable page name"),
|
|
1233
|
+
url: z10.string().optional().describe("Optional URL to open")
|
|
1089
1234
|
},
|
|
1090
1235
|
async execute(args) {
|
|
1091
1236
|
try {
|
|
@@ -1104,13 +1249,13 @@ function createPageTool(deps) {
|
|
|
1104
1249
|
}
|
|
1105
1250
|
|
|
1106
1251
|
// src/tools/list.ts
|
|
1107
|
-
import { tool as
|
|
1108
|
-
var
|
|
1252
|
+
import { tool as tool11 } from "@opencode-ai/plugin";
|
|
1253
|
+
var z11 = tool11.schema;
|
|
1109
1254
|
function createListTool(deps) {
|
|
1110
|
-
return
|
|
1255
|
+
return tool11({
|
|
1111
1256
|
description: "List named pages in the current session.",
|
|
1112
1257
|
args: {
|
|
1113
|
-
sessionId:
|
|
1258
|
+
sessionId: z11.string().describe("Active browser session id")
|
|
1114
1259
|
},
|
|
1115
1260
|
async execute(args) {
|
|
1116
1261
|
try {
|
|
@@ -1124,14 +1269,14 @@ function createListTool(deps) {
|
|
|
1124
1269
|
}
|
|
1125
1270
|
|
|
1126
1271
|
// src/tools/close.ts
|
|
1127
|
-
import { tool as
|
|
1128
|
-
var
|
|
1272
|
+
import { tool as tool12 } from "@opencode-ai/plugin";
|
|
1273
|
+
var z12 = tool12.schema;
|
|
1129
1274
|
function createCloseTool(deps) {
|
|
1130
|
-
return
|
|
1275
|
+
return tool12({
|
|
1131
1276
|
description: "Close a named page within the current session.",
|
|
1132
1277
|
args: {
|
|
1133
|
-
sessionId:
|
|
1134
|
-
name:
|
|
1278
|
+
sessionId: z12.string().describe("Active browser session id"),
|
|
1279
|
+
name: z12.string().describe("Named page to close")
|
|
1135
1280
|
},
|
|
1136
1281
|
async execute(args) {
|
|
1137
1282
|
try {
|
|
@@ -1145,18 +1290,18 @@ function createCloseTool(deps) {
|
|
|
1145
1290
|
}
|
|
1146
1291
|
|
|
1147
1292
|
// src/tools/goto.ts
|
|
1148
|
-
import { tool as
|
|
1149
|
-
var
|
|
1150
|
-
var waitUntilSchema =
|
|
1293
|
+
import { tool as tool13 } from "@opencode-ai/plugin";
|
|
1294
|
+
var z13 = tool13.schema;
|
|
1295
|
+
var waitUntilSchema = z13.enum(["domcontentloaded", "load", "networkidle"]);
|
|
1151
1296
|
function createGotoTool(deps) {
|
|
1152
|
-
return
|
|
1297
|
+
return tool13({
|
|
1153
1298
|
description: "Navigate the active target to a URL.",
|
|
1154
1299
|
args: {
|
|
1155
|
-
sessionId:
|
|
1156
|
-
url:
|
|
1157
|
-
targetId:
|
|
1300
|
+
sessionId: z13.string().describe("Session id"),
|
|
1301
|
+
url: z13.string().describe("URL to navigate to"),
|
|
1302
|
+
targetId: z13.string().optional().describe("Optional target id"),
|
|
1158
1303
|
waitUntil: waitUntilSchema.optional().describe("Load state to wait for"),
|
|
1159
|
-
timeoutMs:
|
|
1304
|
+
timeoutMs: z13.number().int().optional().describe("Timeout in milliseconds")
|
|
1160
1305
|
},
|
|
1161
1306
|
async execute(args) {
|
|
1162
1307
|
try {
|
|
@@ -1177,20 +1322,20 @@ function createGotoTool(deps) {
|
|
|
1177
1322
|
}
|
|
1178
1323
|
|
|
1179
1324
|
// src/tools/wait.ts
|
|
1180
|
-
import { tool as
|
|
1181
|
-
var
|
|
1182
|
-
var waitUntilSchema2 =
|
|
1183
|
-
var waitStateSchema =
|
|
1325
|
+
import { tool as tool14 } from "@opencode-ai/plugin";
|
|
1326
|
+
var z14 = tool14.schema;
|
|
1327
|
+
var waitUntilSchema2 = z14.enum(["domcontentloaded", "load", "networkidle"]);
|
|
1328
|
+
var waitStateSchema = z14.enum(["attached", "visible", "hidden"]);
|
|
1184
1329
|
function createWaitTool(deps) {
|
|
1185
|
-
return
|
|
1330
|
+
return tool14({
|
|
1186
1331
|
description: "Wait for a load state or a ref state.",
|
|
1187
1332
|
args: {
|
|
1188
|
-
sessionId:
|
|
1189
|
-
targetId:
|
|
1333
|
+
sessionId: z14.string().describe("Session id"),
|
|
1334
|
+
targetId: z14.string().optional().describe("Optional target id"),
|
|
1190
1335
|
until: waitUntilSchema2.optional().describe("Load state to wait for"),
|
|
1191
|
-
ref:
|
|
1336
|
+
ref: z14.string().optional().describe("Ref to wait for"),
|
|
1192
1337
|
state: waitStateSchema.optional().describe("Ref state to wait for"),
|
|
1193
|
-
timeoutMs:
|
|
1338
|
+
timeoutMs: z14.number().int().optional().describe("Timeout in milliseconds")
|
|
1194
1339
|
},
|
|
1195
1340
|
async execute(args) {
|
|
1196
1341
|
try {
|
|
@@ -1222,18 +1367,18 @@ function createWaitTool(deps) {
|
|
|
1222
1367
|
}
|
|
1223
1368
|
|
|
1224
1369
|
// src/tools/snapshot.ts
|
|
1225
|
-
import { tool as
|
|
1226
|
-
var
|
|
1227
|
-
var formatSchema =
|
|
1370
|
+
import { tool as tool15 } from "@opencode-ai/plugin";
|
|
1371
|
+
var z15 = tool15.schema;
|
|
1372
|
+
var formatSchema = z15.enum(["outline", "actionables"]);
|
|
1228
1373
|
function createSnapshotTool(deps) {
|
|
1229
|
-
return
|
|
1374
|
+
return tool15({
|
|
1230
1375
|
description: "Capture a snapshot of the current page and return refs.",
|
|
1231
1376
|
args: {
|
|
1232
|
-
sessionId:
|
|
1233
|
-
targetId:
|
|
1377
|
+
sessionId: z15.string().describe("Session id"),
|
|
1378
|
+
targetId: z15.string().optional().describe("Optional target id"),
|
|
1234
1379
|
format: formatSchema.optional().describe("Snapshot format"),
|
|
1235
|
-
maxChars:
|
|
1236
|
-
cursor:
|
|
1380
|
+
maxChars: z15.number().int().optional().describe("Max characters for snapshot output"),
|
|
1381
|
+
cursor: z15.string().optional().describe("Cursor for paging")
|
|
1237
1382
|
},
|
|
1238
1383
|
async execute(args) {
|
|
1239
1384
|
try {
|
|
@@ -1253,16 +1398,46 @@ function createSnapshotTool(deps) {
|
|
|
1253
1398
|
});
|
|
1254
1399
|
}
|
|
1255
1400
|
|
|
1401
|
+
// src/tools/review.ts
|
|
1402
|
+
import { tool as tool16 } from "@opencode-ai/plugin";
|
|
1403
|
+
var z16 = tool16.schema;
|
|
1404
|
+
function createReviewTool(deps) {
|
|
1405
|
+
return tool16({
|
|
1406
|
+
description: "Capture a first-class review payload with status and actionables.",
|
|
1407
|
+
args: {
|
|
1408
|
+
sessionId: z16.string().describe("Session id"),
|
|
1409
|
+
targetId: z16.string().optional().describe("Optional target id"),
|
|
1410
|
+
maxChars: z16.number().int().optional().describe("Max characters for review output"),
|
|
1411
|
+
cursor: z16.string().optional().describe("Cursor for paging")
|
|
1412
|
+
},
|
|
1413
|
+
async execute(args) {
|
|
1414
|
+
try {
|
|
1415
|
+
const config = deps.config.get();
|
|
1416
|
+
const result = await buildBrowserReviewResult({
|
|
1417
|
+
manager: deps.manager,
|
|
1418
|
+
sessionId: args.sessionId,
|
|
1419
|
+
targetId: args.targetId,
|
|
1420
|
+
maxChars: args.maxChars ?? config.snapshot.maxChars,
|
|
1421
|
+
cursor: args.cursor
|
|
1422
|
+
});
|
|
1423
|
+
return ok(result);
|
|
1424
|
+
} catch (error) {
|
|
1425
|
+
return failure(serializeError(error).message, "review_failed");
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
});
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1256
1431
|
// src/tools/click.ts
|
|
1257
|
-
import { tool as
|
|
1258
|
-
var
|
|
1432
|
+
import { tool as tool17 } from "@opencode-ai/plugin";
|
|
1433
|
+
var z17 = tool17.schema;
|
|
1259
1434
|
function createClickTool(deps) {
|
|
1260
|
-
return
|
|
1435
|
+
return tool17({
|
|
1261
1436
|
description: "Click a referenced element.",
|
|
1262
1437
|
args: {
|
|
1263
|
-
sessionId:
|
|
1264
|
-
targetId:
|
|
1265
|
-
ref:
|
|
1438
|
+
sessionId: z17.string().describe("Session id"),
|
|
1439
|
+
targetId: z17.string().optional().describe("Optional target id"),
|
|
1440
|
+
ref: z17.string().describe("Element ref")
|
|
1266
1441
|
},
|
|
1267
1442
|
async execute(args) {
|
|
1268
1443
|
try {
|
|
@@ -1276,15 +1451,15 @@ function createClickTool(deps) {
|
|
|
1276
1451
|
}
|
|
1277
1452
|
|
|
1278
1453
|
// src/tools/hover.ts
|
|
1279
|
-
import { tool as
|
|
1280
|
-
var
|
|
1454
|
+
import { tool as tool18 } from "@opencode-ai/plugin";
|
|
1455
|
+
var z18 = tool18.schema;
|
|
1281
1456
|
function createHoverTool(deps) {
|
|
1282
|
-
return
|
|
1457
|
+
return tool18({
|
|
1283
1458
|
description: "Hover over an element by ref.",
|
|
1284
1459
|
args: {
|
|
1285
|
-
sessionId:
|
|
1286
|
-
targetId:
|
|
1287
|
-
ref:
|
|
1460
|
+
sessionId: z18.string().describe("Active browser session id"),
|
|
1461
|
+
targetId: z18.string().optional().describe("Optional target id"),
|
|
1462
|
+
ref: z18.string().describe("Element ref from snapshot")
|
|
1288
1463
|
},
|
|
1289
1464
|
async execute(args) {
|
|
1290
1465
|
try {
|
|
@@ -1298,16 +1473,16 @@ function createHoverTool(deps) {
|
|
|
1298
1473
|
}
|
|
1299
1474
|
|
|
1300
1475
|
// src/tools/press.ts
|
|
1301
|
-
import { tool as
|
|
1302
|
-
var
|
|
1476
|
+
import { tool as tool19 } from "@opencode-ai/plugin";
|
|
1477
|
+
var z19 = tool19.schema;
|
|
1303
1478
|
function createPressTool(deps) {
|
|
1304
|
-
return
|
|
1479
|
+
return tool19({
|
|
1305
1480
|
description: "Press a keyboard key, optionally focusing a ref first.",
|
|
1306
1481
|
args: {
|
|
1307
|
-
sessionId:
|
|
1308
|
-
targetId:
|
|
1309
|
-
key:
|
|
1310
|
-
ref:
|
|
1482
|
+
sessionId: z19.string().describe("Active browser session id"),
|
|
1483
|
+
targetId: z19.string().optional().describe("Optional target id"),
|
|
1484
|
+
key: z19.string().describe("Keyboard key to press, e.g. Enter or ArrowDown"),
|
|
1485
|
+
ref: z19.string().optional().describe("Optional element ref to focus first")
|
|
1311
1486
|
},
|
|
1312
1487
|
async execute(args) {
|
|
1313
1488
|
try {
|
|
@@ -1321,15 +1496,15 @@ function createPressTool(deps) {
|
|
|
1321
1496
|
}
|
|
1322
1497
|
|
|
1323
1498
|
// src/tools/check.ts
|
|
1324
|
-
import { tool as
|
|
1325
|
-
var
|
|
1499
|
+
import { tool as tool20 } from "@opencode-ai/plugin";
|
|
1500
|
+
var z20 = tool20.schema;
|
|
1326
1501
|
function createCheckTool(deps) {
|
|
1327
|
-
return
|
|
1502
|
+
return tool20({
|
|
1328
1503
|
description: "Check a checkbox or toggle by ref.",
|
|
1329
1504
|
args: {
|
|
1330
|
-
sessionId:
|
|
1331
|
-
targetId:
|
|
1332
|
-
ref:
|
|
1505
|
+
sessionId: z20.string().describe("Active browser session id"),
|
|
1506
|
+
targetId: z20.string().optional().describe("Optional target id"),
|
|
1507
|
+
ref: z20.string().describe("Element ref from snapshot")
|
|
1333
1508
|
},
|
|
1334
1509
|
async execute(args) {
|
|
1335
1510
|
try {
|
|
@@ -1343,15 +1518,15 @@ function createCheckTool(deps) {
|
|
|
1343
1518
|
}
|
|
1344
1519
|
|
|
1345
1520
|
// src/tools/uncheck.ts
|
|
1346
|
-
import { tool as
|
|
1347
|
-
var
|
|
1521
|
+
import { tool as tool21 } from "@opencode-ai/plugin";
|
|
1522
|
+
var z21 = tool21.schema;
|
|
1348
1523
|
function createUncheckTool(deps) {
|
|
1349
|
-
return
|
|
1524
|
+
return tool21({
|
|
1350
1525
|
description: "Uncheck a checkbox or toggle by ref.",
|
|
1351
1526
|
args: {
|
|
1352
|
-
sessionId:
|
|
1353
|
-
targetId:
|
|
1354
|
-
ref:
|
|
1527
|
+
sessionId: z21.string().describe("Active browser session id"),
|
|
1528
|
+
targetId: z21.string().optional().describe("Optional target id"),
|
|
1529
|
+
ref: z21.string().describe("Element ref from snapshot")
|
|
1355
1530
|
},
|
|
1356
1531
|
async execute(args) {
|
|
1357
1532
|
try {
|
|
@@ -1365,18 +1540,18 @@ function createUncheckTool(deps) {
|
|
|
1365
1540
|
}
|
|
1366
1541
|
|
|
1367
1542
|
// src/tools/type.ts
|
|
1368
|
-
import { tool as
|
|
1369
|
-
var
|
|
1543
|
+
import { tool as tool22 } from "@opencode-ai/plugin";
|
|
1544
|
+
var z22 = tool22.schema;
|
|
1370
1545
|
function createTypeTool(deps) {
|
|
1371
|
-
return
|
|
1546
|
+
return tool22({
|
|
1372
1547
|
description: "Type text into a referenced input.",
|
|
1373
1548
|
args: {
|
|
1374
|
-
sessionId:
|
|
1375
|
-
targetId:
|
|
1376
|
-
ref:
|
|
1377
|
-
text:
|
|
1378
|
-
clear:
|
|
1379
|
-
submit:
|
|
1549
|
+
sessionId: z22.string().describe("Session id"),
|
|
1550
|
+
targetId: z22.string().optional().describe("Optional target id"),
|
|
1551
|
+
ref: z22.string().describe("Element ref"),
|
|
1552
|
+
text: z22.string().describe("Text to type"),
|
|
1553
|
+
clear: z22.boolean().optional().describe("Clear before typing"),
|
|
1554
|
+
submit: z22.boolean().optional().describe("Press Enter after typing")
|
|
1380
1555
|
},
|
|
1381
1556
|
async execute(args) {
|
|
1382
1557
|
try {
|
|
@@ -1397,16 +1572,16 @@ function createTypeTool(deps) {
|
|
|
1397
1572
|
}
|
|
1398
1573
|
|
|
1399
1574
|
// src/tools/select.ts
|
|
1400
|
-
import { tool as
|
|
1401
|
-
var
|
|
1575
|
+
import { tool as tool23 } from "@opencode-ai/plugin";
|
|
1576
|
+
var z23 = tool23.schema;
|
|
1402
1577
|
function createSelectTool(deps) {
|
|
1403
|
-
return
|
|
1578
|
+
return tool23({
|
|
1404
1579
|
description: "Select options in a referenced select element.",
|
|
1405
1580
|
args: {
|
|
1406
|
-
sessionId:
|
|
1407
|
-
targetId:
|
|
1408
|
-
ref:
|
|
1409
|
-
values:
|
|
1581
|
+
sessionId: z23.string().describe("Session id"),
|
|
1582
|
+
targetId: z23.string().optional().describe("Optional target id"),
|
|
1583
|
+
ref: z23.string().describe("Element ref"),
|
|
1584
|
+
values: z23.array(z23.string()).describe("Values to select")
|
|
1410
1585
|
},
|
|
1411
1586
|
async execute(args) {
|
|
1412
1587
|
try {
|
|
@@ -1420,17 +1595,17 @@ function createSelectTool(deps) {
|
|
|
1420
1595
|
}
|
|
1421
1596
|
|
|
1422
1597
|
// src/tools/scroll.ts
|
|
1423
|
-
import { tool as
|
|
1424
|
-
var
|
|
1598
|
+
import { tool as tool24 } from "@opencode-ai/plugin";
|
|
1599
|
+
var z24 = tool24.schema;
|
|
1425
1600
|
function createScrollTool(deps) {
|
|
1426
|
-
return
|
|
1601
|
+
return tool24({
|
|
1427
1602
|
description: "Scroll the page or a referenced element.",
|
|
1428
1603
|
args: {
|
|
1429
|
-
sessionId:
|
|
1430
|
-
targetId:
|
|
1431
|
-
dy:
|
|
1432
|
-
ref:
|
|
1433
|
-
},
|
|
1604
|
+
sessionId: z24.string().describe("Session id"),
|
|
1605
|
+
targetId: z24.string().optional().describe("Optional target id"),
|
|
1606
|
+
dy: z24.number().describe("Scroll delta in pixels"),
|
|
1607
|
+
ref: z24.string().optional().describe("Optional element ref to scroll")
|
|
1608
|
+
},
|
|
1434
1609
|
async execute(args) {
|
|
1435
1610
|
try {
|
|
1436
1611
|
await deps.manager.scroll(args.sessionId, args.dy, args.ref, args.targetId);
|
|
@@ -1443,15 +1618,15 @@ function createScrollTool(deps) {
|
|
|
1443
1618
|
}
|
|
1444
1619
|
|
|
1445
1620
|
// src/tools/scroll_into_view.ts
|
|
1446
|
-
import { tool as
|
|
1447
|
-
var
|
|
1621
|
+
import { tool as tool25 } from "@opencode-ai/plugin";
|
|
1622
|
+
var z25 = tool25.schema;
|
|
1448
1623
|
function createScrollIntoViewTool(deps) {
|
|
1449
|
-
return
|
|
1624
|
+
return tool25({
|
|
1450
1625
|
description: "Scroll an element into view by ref.",
|
|
1451
1626
|
args: {
|
|
1452
|
-
sessionId:
|
|
1453
|
-
targetId:
|
|
1454
|
-
ref:
|
|
1627
|
+
sessionId: z25.string().describe("Active browser session id"),
|
|
1628
|
+
targetId: z25.string().optional().describe("Optional target id"),
|
|
1629
|
+
ref: z25.string().describe("Element ref from snapshot")
|
|
1455
1630
|
},
|
|
1456
1631
|
async execute(args) {
|
|
1457
1632
|
try {
|
|
@@ -1464,17 +1639,164 @@ function createScrollIntoViewTool(deps) {
|
|
|
1464
1639
|
});
|
|
1465
1640
|
}
|
|
1466
1641
|
|
|
1642
|
+
// src/tools/upload.ts
|
|
1643
|
+
import { tool as tool26 } from "@opencode-ai/plugin";
|
|
1644
|
+
var z26 = tool26.schema;
|
|
1645
|
+
function createUploadTool(deps) {
|
|
1646
|
+
return tool26({
|
|
1647
|
+
description: "Upload files to an input or chooser by ref.",
|
|
1648
|
+
args: {
|
|
1649
|
+
sessionId: z26.string().describe("Active browser session id"),
|
|
1650
|
+
targetId: z26.string().optional().describe("Optional target id"),
|
|
1651
|
+
ref: z26.string().describe("Element ref"),
|
|
1652
|
+
files: z26.array(z26.string()).min(1).describe("Local host file paths")
|
|
1653
|
+
},
|
|
1654
|
+
async execute(args) {
|
|
1655
|
+
try {
|
|
1656
|
+
const result = await deps.manager.upload(args.sessionId, {
|
|
1657
|
+
targetId: args.targetId,
|
|
1658
|
+
ref: args.ref,
|
|
1659
|
+
files: args.files
|
|
1660
|
+
});
|
|
1661
|
+
return ok(result);
|
|
1662
|
+
} catch (error) {
|
|
1663
|
+
return failure(serializeError(error).message, "upload_failed");
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
// src/tools/pointer_move.ts
|
|
1670
|
+
import { tool as tool27 } from "@opencode-ai/plugin";
|
|
1671
|
+
var z27 = tool27.schema;
|
|
1672
|
+
function createPointerMoveTool(deps) {
|
|
1673
|
+
return tool27({
|
|
1674
|
+
description: "Move the pointer to viewport coordinates.",
|
|
1675
|
+
args: {
|
|
1676
|
+
sessionId: z27.string().describe("Active browser session id"),
|
|
1677
|
+
targetId: z27.string().optional().describe("Optional target id"),
|
|
1678
|
+
x: z27.number().describe("Viewport x coordinate"),
|
|
1679
|
+
y: z27.number().describe("Viewport y coordinate"),
|
|
1680
|
+
steps: z27.number().int().positive().optional().describe("Optional move interpolation step count")
|
|
1681
|
+
},
|
|
1682
|
+
async execute(args) {
|
|
1683
|
+
try {
|
|
1684
|
+
const result = await deps.manager.pointerMove(args.sessionId, args.x, args.y, args.targetId, args.steps);
|
|
1685
|
+
return ok(result);
|
|
1686
|
+
} catch (error) {
|
|
1687
|
+
return failure(serializeError(error).message, "pointer_move_failed");
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
});
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
// src/tools/pointer_down.ts
|
|
1694
|
+
import { tool as tool28 } from "@opencode-ai/plugin";
|
|
1695
|
+
var z28 = tool28.schema;
|
|
1696
|
+
function createPointerDownTool(deps) {
|
|
1697
|
+
return tool28({
|
|
1698
|
+
description: "Move to viewport coordinates and press a mouse button.",
|
|
1699
|
+
args: {
|
|
1700
|
+
sessionId: z28.string().describe("Active browser session id"),
|
|
1701
|
+
targetId: z28.string().optional().describe("Optional target id"),
|
|
1702
|
+
x: z28.number().describe("Viewport x coordinate"),
|
|
1703
|
+
y: z28.number().describe("Viewport y coordinate"),
|
|
1704
|
+
button: z28.enum(["left", "middle", "right"]).optional().describe("Mouse button to press"),
|
|
1705
|
+
clickCount: z28.number().int().positive().optional().describe("Associated click count")
|
|
1706
|
+
},
|
|
1707
|
+
async execute(args) {
|
|
1708
|
+
try {
|
|
1709
|
+
const result = await deps.manager.pointerDown(
|
|
1710
|
+
args.sessionId,
|
|
1711
|
+
args.x,
|
|
1712
|
+
args.y,
|
|
1713
|
+
args.targetId,
|
|
1714
|
+
args.button,
|
|
1715
|
+
args.clickCount
|
|
1716
|
+
);
|
|
1717
|
+
return ok(result);
|
|
1718
|
+
} catch (error) {
|
|
1719
|
+
return failure(serializeError(error).message, "pointer_down_failed");
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
});
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
// src/tools/pointer_up.ts
|
|
1726
|
+
import { tool as tool29 } from "@opencode-ai/plugin";
|
|
1727
|
+
var z29 = tool29.schema;
|
|
1728
|
+
function createPointerUpTool(deps) {
|
|
1729
|
+
return tool29({
|
|
1730
|
+
description: "Move to viewport coordinates and release a mouse button.",
|
|
1731
|
+
args: {
|
|
1732
|
+
sessionId: z29.string().describe("Active browser session id"),
|
|
1733
|
+
targetId: z29.string().optional().describe("Optional target id"),
|
|
1734
|
+
x: z29.number().describe("Viewport x coordinate"),
|
|
1735
|
+
y: z29.number().describe("Viewport y coordinate"),
|
|
1736
|
+
button: z29.enum(["left", "middle", "right"]).optional().describe("Mouse button to release"),
|
|
1737
|
+
clickCount: z29.number().int().positive().optional().describe("Associated click count")
|
|
1738
|
+
},
|
|
1739
|
+
async execute(args) {
|
|
1740
|
+
try {
|
|
1741
|
+
const result = await deps.manager.pointerUp(
|
|
1742
|
+
args.sessionId,
|
|
1743
|
+
args.x,
|
|
1744
|
+
args.y,
|
|
1745
|
+
args.targetId,
|
|
1746
|
+
args.button,
|
|
1747
|
+
args.clickCount
|
|
1748
|
+
);
|
|
1749
|
+
return ok(result);
|
|
1750
|
+
} catch (error) {
|
|
1751
|
+
return failure(serializeError(error).message, "pointer_up_failed");
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
});
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
// src/tools/pointer_drag.ts
|
|
1758
|
+
import { tool as tool30 } from "@opencode-ai/plugin";
|
|
1759
|
+
var z30 = tool30.schema;
|
|
1760
|
+
function createPointerDragTool(deps) {
|
|
1761
|
+
return tool30({
|
|
1762
|
+
description: "Drag the pointer between two viewport coordinates.",
|
|
1763
|
+
args: {
|
|
1764
|
+
sessionId: z30.string().describe("Active browser session id"),
|
|
1765
|
+
targetId: z30.string().optional().describe("Optional target id"),
|
|
1766
|
+
fromX: z30.number().describe("Start x coordinate"),
|
|
1767
|
+
fromY: z30.number().describe("Start y coordinate"),
|
|
1768
|
+
toX: z30.number().describe("End x coordinate"),
|
|
1769
|
+
toY: z30.number().describe("End y coordinate"),
|
|
1770
|
+
steps: z30.number().int().positive().optional().describe("Optional drag interpolation step count")
|
|
1771
|
+
},
|
|
1772
|
+
async execute(args) {
|
|
1773
|
+
try {
|
|
1774
|
+
const result = await deps.manager.drag(
|
|
1775
|
+
args.sessionId,
|
|
1776
|
+
{ x: args.fromX, y: args.fromY },
|
|
1777
|
+
{ x: args.toX, y: args.toY },
|
|
1778
|
+
args.targetId,
|
|
1779
|
+
args.steps
|
|
1780
|
+
);
|
|
1781
|
+
return ok(result);
|
|
1782
|
+
} catch (error) {
|
|
1783
|
+
return failure(serializeError(error).message, "pointer_drag_failed");
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
});
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1467
1789
|
// src/tools/dom_get_html.ts
|
|
1468
|
-
import { tool as
|
|
1469
|
-
var
|
|
1790
|
+
import { tool as tool31 } from "@opencode-ai/plugin";
|
|
1791
|
+
var z31 = tool31.schema;
|
|
1470
1792
|
function createDomGetHtmlTool(deps) {
|
|
1471
|
-
return
|
|
1793
|
+
return tool31({
|
|
1472
1794
|
description: "Get outerHTML for a referenced element.",
|
|
1473
1795
|
args: {
|
|
1474
|
-
sessionId:
|
|
1475
|
-
targetId:
|
|
1476
|
-
ref:
|
|
1477
|
-
maxChars:
|
|
1796
|
+
sessionId: z31.string().describe("Session id"),
|
|
1797
|
+
targetId: z31.string().optional().describe("Optional target id"),
|
|
1798
|
+
ref: z31.string().describe("Element ref"),
|
|
1799
|
+
maxChars: z31.number().int().optional().describe("Max characters")
|
|
1478
1800
|
},
|
|
1479
1801
|
async execute(args) {
|
|
1480
1802
|
try {
|
|
@@ -1497,16 +1819,16 @@ function createDomGetHtmlTool(deps) {
|
|
|
1497
1819
|
}
|
|
1498
1820
|
|
|
1499
1821
|
// src/tools/dom_get_text.ts
|
|
1500
|
-
import { tool as
|
|
1501
|
-
var
|
|
1822
|
+
import { tool as tool32 } from "@opencode-ai/plugin";
|
|
1823
|
+
var z32 = tool32.schema;
|
|
1502
1824
|
function createDomGetTextTool(deps) {
|
|
1503
|
-
return
|
|
1825
|
+
return tool32({
|
|
1504
1826
|
description: "Get inner text for a referenced element.",
|
|
1505
1827
|
args: {
|
|
1506
|
-
sessionId:
|
|
1507
|
-
targetId:
|
|
1508
|
-
ref:
|
|
1509
|
-
maxChars:
|
|
1828
|
+
sessionId: z32.string().describe("Session id"),
|
|
1829
|
+
targetId: z32.string().optional().describe("Optional target id"),
|
|
1830
|
+
ref: z32.string().describe("Element ref"),
|
|
1831
|
+
maxChars: z32.number().int().optional().describe("Max characters")
|
|
1510
1832
|
},
|
|
1511
1833
|
async execute(args) {
|
|
1512
1834
|
try {
|
|
@@ -1529,16 +1851,16 @@ function createDomGetTextTool(deps) {
|
|
|
1529
1851
|
}
|
|
1530
1852
|
|
|
1531
1853
|
// src/tools/get_attr.ts
|
|
1532
|
-
import { tool as
|
|
1533
|
-
var
|
|
1854
|
+
import { tool as tool33 } from "@opencode-ai/plugin";
|
|
1855
|
+
var z33 = tool33.schema;
|
|
1534
1856
|
function createGetAttrTool(deps) {
|
|
1535
|
-
return
|
|
1857
|
+
return tool33({
|
|
1536
1858
|
description: "Get a DOM attribute value by ref.",
|
|
1537
1859
|
args: {
|
|
1538
|
-
sessionId:
|
|
1539
|
-
targetId:
|
|
1540
|
-
ref:
|
|
1541
|
-
name:
|
|
1860
|
+
sessionId: z33.string().describe("Active browser session id"),
|
|
1861
|
+
targetId: z33.string().optional().describe("Optional target id"),
|
|
1862
|
+
ref: z33.string().describe("Element ref from snapshot"),
|
|
1863
|
+
name: z33.string().describe("Attribute name, e.g. href or aria-label")
|
|
1542
1864
|
},
|
|
1543
1865
|
async execute(args) {
|
|
1544
1866
|
try {
|
|
@@ -1552,15 +1874,15 @@ function createGetAttrTool(deps) {
|
|
|
1552
1874
|
}
|
|
1553
1875
|
|
|
1554
1876
|
// src/tools/get_value.ts
|
|
1555
|
-
import { tool as
|
|
1556
|
-
var
|
|
1877
|
+
import { tool as tool34 } from "@opencode-ai/plugin";
|
|
1878
|
+
var z34 = tool34.schema;
|
|
1557
1879
|
function createGetValueTool(deps) {
|
|
1558
|
-
return
|
|
1880
|
+
return tool34({
|
|
1559
1881
|
description: "Get the input value for an element by ref.",
|
|
1560
1882
|
args: {
|
|
1561
|
-
sessionId:
|
|
1562
|
-
targetId:
|
|
1563
|
-
ref:
|
|
1883
|
+
sessionId: z34.string().describe("Active browser session id"),
|
|
1884
|
+
targetId: z34.string().optional().describe("Optional target id"),
|
|
1885
|
+
ref: z34.string().describe("Element ref from snapshot")
|
|
1564
1886
|
},
|
|
1565
1887
|
async execute(args) {
|
|
1566
1888
|
try {
|
|
@@ -1574,15 +1896,15 @@ function createGetValueTool(deps) {
|
|
|
1574
1896
|
}
|
|
1575
1897
|
|
|
1576
1898
|
// src/tools/is_visible.ts
|
|
1577
|
-
import { tool as
|
|
1578
|
-
var
|
|
1899
|
+
import { tool as tool35 } from "@opencode-ai/plugin";
|
|
1900
|
+
var z35 = tool35.schema;
|
|
1579
1901
|
function createIsVisibleTool(deps) {
|
|
1580
|
-
return
|
|
1902
|
+
return tool35({
|
|
1581
1903
|
description: "Check if an element is visible by ref.",
|
|
1582
1904
|
args: {
|
|
1583
|
-
sessionId:
|
|
1584
|
-
targetId:
|
|
1585
|
-
ref:
|
|
1905
|
+
sessionId: z35.string().describe("Active browser session id"),
|
|
1906
|
+
targetId: z35.string().optional().describe("Optional target id"),
|
|
1907
|
+
ref: z35.string().describe("Element ref from snapshot")
|
|
1586
1908
|
},
|
|
1587
1909
|
async execute(args) {
|
|
1588
1910
|
try {
|
|
@@ -1596,15 +1918,15 @@ function createIsVisibleTool(deps) {
|
|
|
1596
1918
|
}
|
|
1597
1919
|
|
|
1598
1920
|
// src/tools/is_enabled.ts
|
|
1599
|
-
import { tool as
|
|
1600
|
-
var
|
|
1921
|
+
import { tool as tool36 } from "@opencode-ai/plugin";
|
|
1922
|
+
var z36 = tool36.schema;
|
|
1601
1923
|
function createIsEnabledTool(deps) {
|
|
1602
|
-
return
|
|
1924
|
+
return tool36({
|
|
1603
1925
|
description: "Check if an element is enabled by ref.",
|
|
1604
1926
|
args: {
|
|
1605
|
-
sessionId:
|
|
1606
|
-
targetId:
|
|
1607
|
-
ref:
|
|
1927
|
+
sessionId: z36.string().describe("Active browser session id"),
|
|
1928
|
+
targetId: z36.string().optional().describe("Optional target id"),
|
|
1929
|
+
ref: z36.string().describe("Element ref from snapshot")
|
|
1608
1930
|
},
|
|
1609
1931
|
async execute(args) {
|
|
1610
1932
|
try {
|
|
@@ -1618,15 +1940,15 @@ function createIsEnabledTool(deps) {
|
|
|
1618
1940
|
}
|
|
1619
1941
|
|
|
1620
1942
|
// src/tools/is_checked.ts
|
|
1621
|
-
import { tool as
|
|
1622
|
-
var
|
|
1943
|
+
import { tool as tool37 } from "@opencode-ai/plugin";
|
|
1944
|
+
var z37 = tool37.schema;
|
|
1623
1945
|
function createIsCheckedTool(deps) {
|
|
1624
|
-
return
|
|
1946
|
+
return tool37({
|
|
1625
1947
|
description: "Check if an element is checked by ref.",
|
|
1626
1948
|
args: {
|
|
1627
|
-
sessionId:
|
|
1628
|
-
targetId:
|
|
1629
|
-
ref:
|
|
1949
|
+
sessionId: z37.string().describe("Active browser session id"),
|
|
1950
|
+
targetId: z37.string().optional().describe("Optional target id"),
|
|
1951
|
+
ref: z37.string().describe("Element ref from snapshot")
|
|
1630
1952
|
},
|
|
1631
1953
|
async execute(args) {
|
|
1632
1954
|
try {
|
|
@@ -1640,20 +1962,20 @@ function createIsCheckedTool(deps) {
|
|
|
1640
1962
|
}
|
|
1641
1963
|
|
|
1642
1964
|
// src/tools/run.ts
|
|
1643
|
-
import { tool as
|
|
1644
|
-
var
|
|
1645
|
-
var stepSchema =
|
|
1646
|
-
action:
|
|
1647
|
-
args:
|
|
1965
|
+
import { tool as tool38 } from "@opencode-ai/plugin";
|
|
1966
|
+
var z38 = tool38.schema;
|
|
1967
|
+
var stepSchema = z38.object({
|
|
1968
|
+
action: z38.string().describe("Action name"),
|
|
1969
|
+
args: z38.record(z38.string(), z38.unknown()).optional().describe("Action arguments")
|
|
1648
1970
|
});
|
|
1649
1971
|
function createRunTool(deps) {
|
|
1650
|
-
return
|
|
1972
|
+
return tool38({
|
|
1651
1973
|
description: "Run multiple actions in a single tool call.",
|
|
1652
1974
|
args: {
|
|
1653
|
-
sessionId:
|
|
1654
|
-
steps:
|
|
1655
|
-
stopOnError:
|
|
1656
|
-
maxSnapshotChars:
|
|
1975
|
+
sessionId: z38.string().describe("Session id"),
|
|
1976
|
+
steps: z38.array(stepSchema).describe("Steps to execute"),
|
|
1977
|
+
stopOnError: z38.boolean().optional().describe("Stop when a step fails"),
|
|
1978
|
+
maxSnapshotChars: z38.number().int().optional().describe("Default maxChars for snapshot steps")
|
|
1657
1979
|
},
|
|
1658
1980
|
async execute(args) {
|
|
1659
1981
|
try {
|
|
@@ -1686,13 +2008,13 @@ function normalizeSteps(steps, maxSnapshotChars) {
|
|
|
1686
2008
|
}
|
|
1687
2009
|
|
|
1688
2010
|
// src/tools/prompting_guide.ts
|
|
1689
|
-
import { tool as
|
|
1690
|
-
var
|
|
2011
|
+
import { tool as tool39 } from "@opencode-ai/plugin";
|
|
2012
|
+
var z39 = tool39.schema;
|
|
1691
2013
|
function createPromptingGuideTool(deps) {
|
|
1692
|
-
return
|
|
1693
|
-
description:
|
|
2014
|
+
return tool39({
|
|
2015
|
+
description: `Start here for first-contact OpenDevBrowser guidance, including ${onboarding_metadata_default.skillName} ${onboarding_metadata_default.skillTopic}.`,
|
|
1694
2016
|
args: {
|
|
1695
|
-
topic:
|
|
2017
|
+
topic: z39.string().optional().describe("Optional topic for guidance")
|
|
1696
2018
|
},
|
|
1697
2019
|
async execute(args) {
|
|
1698
2020
|
try {
|
|
@@ -1706,15 +2028,15 @@ function createPromptingGuideTool(deps) {
|
|
|
1706
2028
|
}
|
|
1707
2029
|
|
|
1708
2030
|
// src/tools/console_poll.ts
|
|
1709
|
-
import { tool as
|
|
1710
|
-
var
|
|
2031
|
+
import { tool as tool40 } from "@opencode-ai/plugin";
|
|
2032
|
+
var z40 = tool40.schema;
|
|
1711
2033
|
function createConsolePollTool(deps) {
|
|
1712
|
-
return
|
|
2034
|
+
return tool40({
|
|
1713
2035
|
description: "Poll console events for the active target.",
|
|
1714
2036
|
args: {
|
|
1715
|
-
sessionId:
|
|
1716
|
-
sinceSeq:
|
|
1717
|
-
max:
|
|
2037
|
+
sessionId: z40.string().describe("Session id"),
|
|
2038
|
+
sinceSeq: z40.number().int().optional().describe("Sequence to resume from"),
|
|
2039
|
+
max: z40.number().int().optional().describe("Max events to return")
|
|
1718
2040
|
},
|
|
1719
2041
|
async execute(args) {
|
|
1720
2042
|
try {
|
|
@@ -1732,15 +2054,15 @@ function createConsolePollTool(deps) {
|
|
|
1732
2054
|
}
|
|
1733
2055
|
|
|
1734
2056
|
// src/tools/network_poll.ts
|
|
1735
|
-
import { tool as
|
|
1736
|
-
var
|
|
2057
|
+
import { tool as tool41 } from "@opencode-ai/plugin";
|
|
2058
|
+
var z41 = tool41.schema;
|
|
1737
2059
|
function createNetworkPollTool(deps) {
|
|
1738
|
-
return
|
|
2060
|
+
return tool41({
|
|
1739
2061
|
description: "Poll network events for the active target.",
|
|
1740
2062
|
args: {
|
|
1741
|
-
sessionId:
|
|
1742
|
-
sinceSeq:
|
|
1743
|
-
max:
|
|
2063
|
+
sessionId: z41.string().describe("Session id"),
|
|
2064
|
+
sinceSeq: z41.number().int().optional().describe("Sequence to resume from"),
|
|
2065
|
+
max: z41.number().int().optional().describe("Max events to return")
|
|
1744
2066
|
},
|
|
1745
2067
|
async execute(args) {
|
|
1746
2068
|
try {
|
|
@@ -1758,18 +2080,18 @@ function createNetworkPollTool(deps) {
|
|
|
1758
2080
|
}
|
|
1759
2081
|
|
|
1760
2082
|
// src/tools/debug_trace_snapshot.ts
|
|
1761
|
-
import { tool as
|
|
1762
|
-
var
|
|
2083
|
+
import { tool as tool42 } from "@opencode-ai/plugin";
|
|
2084
|
+
var z42 = tool42.schema;
|
|
1763
2085
|
function createDebugTraceSnapshotTool(deps) {
|
|
1764
|
-
return
|
|
2086
|
+
return tool42({
|
|
1765
2087
|
description: "Capture a combined debug trace snapshot (page + console + network + exceptions).",
|
|
1766
2088
|
args: {
|
|
1767
|
-
sessionId:
|
|
1768
|
-
sinceConsoleSeq:
|
|
1769
|
-
sinceNetworkSeq:
|
|
1770
|
-
sinceExceptionSeq:
|
|
1771
|
-
max:
|
|
1772
|
-
requestId:
|
|
2089
|
+
sessionId: z42.string().describe("Session id"),
|
|
2090
|
+
sinceConsoleSeq: z42.number().int().optional().describe("Resume cursor for console events"),
|
|
2091
|
+
sinceNetworkSeq: z42.number().int().optional().describe("Resume cursor for network events"),
|
|
2092
|
+
sinceExceptionSeq: z42.number().int().optional().describe("Resume cursor for exception events"),
|
|
2093
|
+
max: z42.number().int().optional().describe("Max events per channel"),
|
|
2094
|
+
requestId: z42.string().optional().describe("Optional trace request id")
|
|
1773
2095
|
},
|
|
1774
2096
|
async execute(args) {
|
|
1775
2097
|
try {
|
|
@@ -1879,8 +2201,8 @@ function extractHosts(events) {
|
|
|
1879
2201
|
}
|
|
1880
2202
|
|
|
1881
2203
|
// src/tools/cookie_import.ts
|
|
1882
|
-
import { tool as
|
|
1883
|
-
var
|
|
2204
|
+
import { tool as tool43 } from "@opencode-ai/plugin";
|
|
2205
|
+
var z43 = tool43.schema;
|
|
1884
2206
|
function validateCookieRecord(cookie) {
|
|
1885
2207
|
const name = cookie.name?.trim();
|
|
1886
2208
|
if (!name) {
|
|
@@ -1959,23 +2281,23 @@ function validateCookieRecord(cookie) {
|
|
|
1959
2281
|
};
|
|
1960
2282
|
}
|
|
1961
2283
|
function createCookieImportTool(deps) {
|
|
1962
|
-
return
|
|
2284
|
+
return tool43({
|
|
1963
2285
|
description: "Import validated cookies into the current session context.",
|
|
1964
2286
|
args: {
|
|
1965
|
-
sessionId:
|
|
1966
|
-
cookies:
|
|
1967
|
-
name:
|
|
1968
|
-
value:
|
|
1969
|
-
url:
|
|
1970
|
-
domain:
|
|
1971
|
-
path:
|
|
1972
|
-
expires:
|
|
1973
|
-
httpOnly:
|
|
1974
|
-
secure:
|
|
1975
|
-
sameSite:
|
|
2287
|
+
sessionId: z43.string().describe("Session id"),
|
|
2288
|
+
cookies: z43.array(z43.object({
|
|
2289
|
+
name: z43.string().min(1),
|
|
2290
|
+
value: z43.string(),
|
|
2291
|
+
url: z43.string().optional(),
|
|
2292
|
+
domain: z43.string().optional(),
|
|
2293
|
+
path: z43.string().optional(),
|
|
2294
|
+
expires: z43.number().optional(),
|
|
2295
|
+
httpOnly: z43.boolean().optional(),
|
|
2296
|
+
secure: z43.boolean().optional(),
|
|
2297
|
+
sameSite: z43.enum(["Strict", "Lax", "None"]).optional()
|
|
1976
2298
|
})).min(1).describe("Cookies to import"),
|
|
1977
|
-
strict:
|
|
1978
|
-
requestId:
|
|
2299
|
+
strict: z43.boolean().optional().describe("Reject on first invalid cookie (default true)"),
|
|
2300
|
+
requestId: z43.string().optional().describe("Optional trace request id")
|
|
1979
2301
|
},
|
|
1980
2302
|
async execute(args) {
|
|
1981
2303
|
try {
|
|
@@ -2017,8 +2339,8 @@ function createCookieImportTool(deps) {
|
|
|
2017
2339
|
}
|
|
2018
2340
|
|
|
2019
2341
|
// src/tools/cookie_list.ts
|
|
2020
|
-
import { tool as
|
|
2021
|
-
var
|
|
2342
|
+
import { tool as tool44 } from "@opencode-ai/plugin";
|
|
2343
|
+
var z44 = tool44.schema;
|
|
2022
2344
|
function normalizeCookieUrls(urls) {
|
|
2023
2345
|
if (!urls || urls.length === 0) {
|
|
2024
2346
|
return void 0;
|
|
@@ -2049,12 +2371,12 @@ function normalizeCookieUrls(urls) {
|
|
|
2049
2371
|
return normalized;
|
|
2050
2372
|
}
|
|
2051
2373
|
function createCookieListTool(deps) {
|
|
2052
|
-
return
|
|
2374
|
+
return tool44({
|
|
2053
2375
|
description: "List cookies in the current session context with optional URL filtering.",
|
|
2054
2376
|
args: {
|
|
2055
|
-
sessionId:
|
|
2056
|
-
urls:
|
|
2057
|
-
requestId:
|
|
2377
|
+
sessionId: z44.string().describe("Session id"),
|
|
2378
|
+
urls: z44.array(z44.string().min(1)).optional().describe("Optional URL filters for cookie scoping"),
|
|
2379
|
+
requestId: z44.string().optional().describe("Optional trace request id")
|
|
2058
2380
|
},
|
|
2059
2381
|
async execute(args) {
|
|
2060
2382
|
try {
|
|
@@ -2094,8 +2416,21 @@ function createCookieListTool(deps) {
|
|
|
2094
2416
|
}
|
|
2095
2417
|
|
|
2096
2418
|
// src/tools/macro_resolve.ts
|
|
2097
|
-
import { tool as
|
|
2098
|
-
|
|
2419
|
+
import { tool as tool45 } from "@opencode-ai/plugin";
|
|
2420
|
+
|
|
2421
|
+
// src/tools/workflow-runtime.ts
|
|
2422
|
+
var resolveProviderRuntime = async (deps, options) => {
|
|
2423
|
+
return resolveBundledProviderRuntime({
|
|
2424
|
+
existingRuntime: deps.providerRuntime,
|
|
2425
|
+
config: deps.config?.get?.(),
|
|
2426
|
+
manager: deps.manager,
|
|
2427
|
+
browserFallbackPort: deps.browserFallbackPort,
|
|
2428
|
+
init: options?.init
|
|
2429
|
+
});
|
|
2430
|
+
};
|
|
2431
|
+
|
|
2432
|
+
// src/tools/macro_resolve.ts
|
|
2433
|
+
var z45 = tool45.schema;
|
|
2099
2434
|
async function loadMacroRuntime() {
|
|
2100
2435
|
try {
|
|
2101
2436
|
const module = await import("./macros-ND2M7LWU.js");
|
|
@@ -2104,17 +2439,6 @@ async function loadMacroRuntime() {
|
|
|
2104
2439
|
return null;
|
|
2105
2440
|
}
|
|
2106
2441
|
}
|
|
2107
|
-
async function resolveMacroProviderRuntime(deps) {
|
|
2108
|
-
if (deps.providerRuntime) {
|
|
2109
|
-
return deps.providerRuntime;
|
|
2110
|
-
}
|
|
2111
|
-
const { createConfiguredProviderRuntime: createConfiguredProviderRuntime2 } = await import("./runtime-factory-BICHDPE7.js");
|
|
2112
|
-
return createConfiguredProviderRuntime2({
|
|
2113
|
-
config: deps.config?.get?.(),
|
|
2114
|
-
manager: deps.manager,
|
|
2115
|
-
browserFallbackPort: deps.browserFallbackPort
|
|
2116
|
-
});
|
|
2117
|
-
}
|
|
2118
2442
|
function parseFallbackMacro(expression, defaultProvider) {
|
|
2119
2443
|
const raw = expression.trim();
|
|
2120
2444
|
if (!raw.startsWith("@")) {
|
|
@@ -2154,13 +2478,13 @@ function parseFallbackMacro(expression, defaultProvider) {
|
|
|
2154
2478
|
};
|
|
2155
2479
|
}
|
|
2156
2480
|
function createMacroResolveTool(deps) {
|
|
2157
|
-
return
|
|
2481
|
+
return tool45({
|
|
2158
2482
|
description: "Resolve a macro expression to a provider action with provenance metadata.",
|
|
2159
2483
|
args: {
|
|
2160
|
-
expression:
|
|
2161
|
-
defaultProvider:
|
|
2162
|
-
includeCatalog:
|
|
2163
|
-
execute:
|
|
2484
|
+
expression: z45.string().min(2).describe('Macro expression, e.g. @web.search("query")'),
|
|
2485
|
+
defaultProvider: z45.string().optional().describe("Default provider fallback"),
|
|
2486
|
+
includeCatalog: z45.boolean().optional().describe("Include available runtime macro names"),
|
|
2487
|
+
execute: z45.boolean().optional().describe("Execute the resolved provider action and include execution payload")
|
|
2164
2488
|
},
|
|
2165
2489
|
async execute(args) {
|
|
2166
2490
|
try {
|
|
@@ -2189,10 +2513,11 @@ function createMacroResolveTool(deps) {
|
|
|
2189
2513
|
...catalog ? { catalog } : {}
|
|
2190
2514
|
});
|
|
2191
2515
|
}
|
|
2192
|
-
const providerRuntime = await
|
|
2193
|
-
const execution =
|
|
2194
|
-
|
|
2195
|
-
|
|
2516
|
+
const providerRuntime = await resolveProviderRuntime(deps);
|
|
2517
|
+
const execution = await executeMacroWithRuntime({
|
|
2518
|
+
resolution,
|
|
2519
|
+
runtime: providerRuntime
|
|
2520
|
+
});
|
|
2196
2521
|
return ok({
|
|
2197
2522
|
runtime: resolvedRuntime,
|
|
2198
2523
|
resolution,
|
|
@@ -2207,14 +2532,14 @@ function createMacroResolveTool(deps) {
|
|
|
2207
2532
|
}
|
|
2208
2533
|
|
|
2209
2534
|
// src/tools/clone_page.ts
|
|
2210
|
-
import { tool as
|
|
2211
|
-
var
|
|
2535
|
+
import { tool as tool46 } from "@opencode-ai/plugin";
|
|
2536
|
+
var z46 = tool46.schema;
|
|
2212
2537
|
function createClonePageTool(deps) {
|
|
2213
|
-
return
|
|
2538
|
+
return tool46({
|
|
2214
2539
|
description: "Export the active page as a React component and CSS bundle.",
|
|
2215
2540
|
args: {
|
|
2216
|
-
sessionId:
|
|
2217
|
-
targetId:
|
|
2541
|
+
sessionId: z46.string().describe("Active browser session id"),
|
|
2542
|
+
targetId: z46.string().optional().describe("Optional target id")
|
|
2218
2543
|
},
|
|
2219
2544
|
async execute(args) {
|
|
2220
2545
|
try {
|
|
@@ -2228,15 +2553,15 @@ function createClonePageTool(deps) {
|
|
|
2228
2553
|
}
|
|
2229
2554
|
|
|
2230
2555
|
// src/tools/clone_component.ts
|
|
2231
|
-
import { tool as
|
|
2232
|
-
var
|
|
2556
|
+
import { tool as tool47 } from "@opencode-ai/plugin";
|
|
2557
|
+
var z47 = tool47.schema;
|
|
2233
2558
|
function createCloneComponentTool(deps) {
|
|
2234
|
-
return
|
|
2559
|
+
return tool47({
|
|
2235
2560
|
description: "Export a selected element subtree as a React component and CSS bundle.",
|
|
2236
2561
|
args: {
|
|
2237
|
-
sessionId:
|
|
2238
|
-
targetId:
|
|
2239
|
-
ref:
|
|
2562
|
+
sessionId: z47.string().describe("Active browser session id"),
|
|
2563
|
+
targetId: z47.string().optional().describe("Optional target id"),
|
|
2564
|
+
ref: z47.string().describe("Element ref from snapshot")
|
|
2240
2565
|
},
|
|
2241
2566
|
async execute(args) {
|
|
2242
2567
|
try {
|
|
@@ -2250,14 +2575,14 @@ function createCloneComponentTool(deps) {
|
|
|
2250
2575
|
}
|
|
2251
2576
|
|
|
2252
2577
|
// src/tools/perf.ts
|
|
2253
|
-
import { tool as
|
|
2254
|
-
var
|
|
2578
|
+
import { tool as tool48 } from "@opencode-ai/plugin";
|
|
2579
|
+
var z48 = tool48.schema;
|
|
2255
2580
|
function createPerfTool(deps) {
|
|
2256
|
-
return
|
|
2581
|
+
return tool48({
|
|
2257
2582
|
description: "Fetch lightweight performance metrics from the active page.",
|
|
2258
2583
|
args: {
|
|
2259
|
-
sessionId:
|
|
2260
|
-
targetId:
|
|
2584
|
+
sessionId: z48.string().describe("Active browser session id"),
|
|
2585
|
+
targetId: z48.string().optional().describe("Optional target id")
|
|
2261
2586
|
},
|
|
2262
2587
|
async execute(args) {
|
|
2263
2588
|
try {
|
|
@@ -2271,19 +2596,26 @@ function createPerfTool(deps) {
|
|
|
2271
2596
|
}
|
|
2272
2597
|
|
|
2273
2598
|
// src/tools/screenshot.ts
|
|
2274
|
-
import { tool as
|
|
2275
|
-
var
|
|
2599
|
+
import { tool as tool49 } from "@opencode-ai/plugin";
|
|
2600
|
+
var z49 = tool49.schema;
|
|
2276
2601
|
function createScreenshotTool(deps) {
|
|
2277
|
-
return
|
|
2602
|
+
return tool49({
|
|
2278
2603
|
description: "Capture a screenshot of the active page.",
|
|
2279
2604
|
args: {
|
|
2280
|
-
sessionId:
|
|
2281
|
-
targetId:
|
|
2282
|
-
path:
|
|
2605
|
+
sessionId: z49.string().describe("Active browser session id"),
|
|
2606
|
+
targetId: z49.string().optional().describe("Optional target id"),
|
|
2607
|
+
path: z49.string().optional().describe("Optional output file path"),
|
|
2608
|
+
ref: z49.string().optional().describe("Optional snapshot ref for an element capture"),
|
|
2609
|
+
fullPage: z49.boolean().optional().describe("Capture the full scrollable page")
|
|
2283
2610
|
},
|
|
2284
2611
|
async execute(args) {
|
|
2285
2612
|
try {
|
|
2286
|
-
const result = await deps.manager.screenshot(args.sessionId,
|
|
2613
|
+
const result = await deps.manager.screenshot(args.sessionId, {
|
|
2614
|
+
targetId: args.targetId,
|
|
2615
|
+
path: args.path,
|
|
2616
|
+
ref: args.ref,
|
|
2617
|
+
fullPage: args.fullPage
|
|
2618
|
+
});
|
|
2287
2619
|
return ok(result);
|
|
2288
2620
|
} catch (error) {
|
|
2289
2621
|
return failure(serializeError(error).message, "screenshot_failed");
|
|
@@ -2292,31 +2624,273 @@ function createScreenshotTool(deps) {
|
|
|
2292
2624
|
});
|
|
2293
2625
|
}
|
|
2294
2626
|
|
|
2627
|
+
// src/tools/screencast_start.ts
|
|
2628
|
+
import { tool as tool50 } from "@opencode-ai/plugin";
|
|
2629
|
+
var z50 = tool50.schema;
|
|
2630
|
+
function createScreencastStartTool(deps) {
|
|
2631
|
+
return tool50({
|
|
2632
|
+
description: "Start a browser screencast replay capture.",
|
|
2633
|
+
args: {
|
|
2634
|
+
sessionId: z50.string().describe("Active browser session id"),
|
|
2635
|
+
targetId: z50.string().optional().describe("Optional target id"),
|
|
2636
|
+
outputDir: z50.string().optional().describe("Optional screencast output directory"),
|
|
2637
|
+
intervalMs: z50.number().int().min(250).optional().describe("Frame capture interval in milliseconds"),
|
|
2638
|
+
maxFrames: z50.number().int().min(1).optional().describe("Maximum frame count before auto-stop")
|
|
2639
|
+
},
|
|
2640
|
+
async execute(args) {
|
|
2641
|
+
try {
|
|
2642
|
+
const result = await deps.manager.startScreencast(args.sessionId, {
|
|
2643
|
+
targetId: args.targetId,
|
|
2644
|
+
outputDir: args.outputDir,
|
|
2645
|
+
intervalMs: args.intervalMs,
|
|
2646
|
+
maxFrames: args.maxFrames
|
|
2647
|
+
});
|
|
2648
|
+
return ok(result);
|
|
2649
|
+
} catch (error) {
|
|
2650
|
+
return failure(serializeError(error).message, "screencast_start_failed");
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2653
|
+
});
|
|
2654
|
+
}
|
|
2655
|
+
|
|
2656
|
+
// src/tools/screencast_stop.ts
|
|
2657
|
+
import { tool as tool51 } from "@opencode-ai/plugin";
|
|
2658
|
+
var z51 = tool51.schema;
|
|
2659
|
+
function createScreencastStopTool(deps) {
|
|
2660
|
+
return tool51({
|
|
2661
|
+
description: "Stop a browser screencast replay capture.",
|
|
2662
|
+
args: {
|
|
2663
|
+
sessionId: z51.string().describe("Browser session id that owns the screencast"),
|
|
2664
|
+
screencastId: z51.string().describe("Active screencast id")
|
|
2665
|
+
},
|
|
2666
|
+
async execute(args) {
|
|
2667
|
+
try {
|
|
2668
|
+
const result = await deps.manager.stopScreencast(args.sessionId, args.screencastId);
|
|
2669
|
+
return ok(result);
|
|
2670
|
+
} catch (error) {
|
|
2671
|
+
return failure(serializeError(error).message, "screencast_stop_failed");
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
});
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
// src/tools/dialog.ts
|
|
2678
|
+
import { tool as tool52 } from "@opencode-ai/plugin";
|
|
2679
|
+
var z52 = tool52.schema;
|
|
2680
|
+
function createDialogTool(deps) {
|
|
2681
|
+
return tool52({
|
|
2682
|
+
description: "Inspect or handle a JavaScript dialog.",
|
|
2683
|
+
args: {
|
|
2684
|
+
sessionId: z52.string().describe("Active browser session id"),
|
|
2685
|
+
targetId: z52.string().optional().describe("Optional target id"),
|
|
2686
|
+
action: z52.enum(["status", "accept", "dismiss"]).optional().describe("Dialog action"),
|
|
2687
|
+
promptText: z52.string().optional().describe("Prompt text to submit when accepting a prompt dialog")
|
|
2688
|
+
},
|
|
2689
|
+
async execute(args) {
|
|
2690
|
+
try {
|
|
2691
|
+
const result = await deps.manager.dialog(args.sessionId, {
|
|
2692
|
+
targetId: args.targetId,
|
|
2693
|
+
action: args.action,
|
|
2694
|
+
promptText: args.promptText
|
|
2695
|
+
});
|
|
2696
|
+
return ok(result);
|
|
2697
|
+
} catch (error) {
|
|
2698
|
+
return failure(serializeError(error).message, "dialog_failed");
|
|
2699
|
+
}
|
|
2700
|
+
}
|
|
2701
|
+
});
|
|
2702
|
+
}
|
|
2703
|
+
|
|
2704
|
+
// src/tools/desktop_status.ts
|
|
2705
|
+
import { tool as tool53 } from "@opencode-ai/plugin";
|
|
2706
|
+
|
|
2707
|
+
// src/tools/desktop-shared.ts
|
|
2708
|
+
function isRecord(value) {
|
|
2709
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2710
|
+
}
|
|
2711
|
+
function requireDesktopRuntime(deps) {
|
|
2712
|
+
if (deps.desktopRuntime) {
|
|
2713
|
+
return deps.desktopRuntime;
|
|
2714
|
+
}
|
|
2715
|
+
return failure("Desktop runtime unavailable.", "desktop_runtime_unavailable");
|
|
2716
|
+
}
|
|
2717
|
+
function desktopResult(result) {
|
|
2718
|
+
if (result.ok) {
|
|
2719
|
+
const payload = isRecord(result.value) ? { ok: true, ...result.value, audit: result.audit } : { ok: true, value: result.value, audit: result.audit };
|
|
2720
|
+
return JSON.stringify(payload);
|
|
2721
|
+
}
|
|
2722
|
+
return JSON.stringify({
|
|
2723
|
+
ok: false,
|
|
2724
|
+
code: result.code,
|
|
2725
|
+
message: result.message,
|
|
2726
|
+
audit: result.audit
|
|
2727
|
+
});
|
|
2728
|
+
}
|
|
2729
|
+
function desktopToolFailure(error, code) {
|
|
2730
|
+
return failure(serializeError(error).message, code);
|
|
2731
|
+
}
|
|
2732
|
+
|
|
2733
|
+
// src/tools/desktop_status.ts
|
|
2734
|
+
function createDesktopStatusTool(deps) {
|
|
2735
|
+
return tool53({
|
|
2736
|
+
description: "Inspect sibling desktop observation availability.",
|
|
2737
|
+
args: {},
|
|
2738
|
+
async execute() {
|
|
2739
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2740
|
+
if (typeof runtime === "string") {
|
|
2741
|
+
return runtime;
|
|
2742
|
+
}
|
|
2743
|
+
try {
|
|
2744
|
+
return ok(await runtime.status());
|
|
2745
|
+
} catch (error) {
|
|
2746
|
+
return desktopToolFailure(error, "desktop_status_failed");
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2749
|
+
});
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
// src/tools/desktop_windows.ts
|
|
2753
|
+
import { tool as tool54 } from "@opencode-ai/plugin";
|
|
2754
|
+
var z53 = tool54.schema;
|
|
2755
|
+
function createDesktopWindowsTool(deps) {
|
|
2756
|
+
return tool54({
|
|
2757
|
+
description: "List observable desktop windows.",
|
|
2758
|
+
args: {
|
|
2759
|
+
reason: z53.string().optional().describe("Optional audit reason")
|
|
2760
|
+
},
|
|
2761
|
+
async execute(args) {
|
|
2762
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2763
|
+
if (typeof runtime === "string") {
|
|
2764
|
+
return runtime;
|
|
2765
|
+
}
|
|
2766
|
+
try {
|
|
2767
|
+
return desktopResult(await runtime.listWindows(args.reason));
|
|
2768
|
+
} catch (error) {
|
|
2769
|
+
return desktopToolFailure(error, "desktop_windows_failed");
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
});
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
// src/tools/desktop_active_window.ts
|
|
2776
|
+
import { tool as tool55 } from "@opencode-ai/plugin";
|
|
2777
|
+
var z54 = tool55.schema;
|
|
2778
|
+
function createDesktopActiveWindowTool(deps) {
|
|
2779
|
+
return tool55({
|
|
2780
|
+
description: "Inspect the active desktop window.",
|
|
2781
|
+
args: {
|
|
2782
|
+
reason: z54.string().optional().describe("Optional audit reason")
|
|
2783
|
+
},
|
|
2784
|
+
async execute(args) {
|
|
2785
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2786
|
+
if (typeof runtime === "string") {
|
|
2787
|
+
return runtime;
|
|
2788
|
+
}
|
|
2789
|
+
try {
|
|
2790
|
+
return desktopResult(await runtime.activeWindow(args.reason));
|
|
2791
|
+
} catch (error) {
|
|
2792
|
+
return desktopToolFailure(error, "desktop_active_window_failed");
|
|
2793
|
+
}
|
|
2794
|
+
}
|
|
2795
|
+
});
|
|
2796
|
+
}
|
|
2797
|
+
|
|
2798
|
+
// src/tools/desktop_capture_desktop.ts
|
|
2799
|
+
import { tool as tool56 } from "@opencode-ai/plugin";
|
|
2800
|
+
var z55 = tool56.schema;
|
|
2801
|
+
function createDesktopCaptureDesktopTool(deps) {
|
|
2802
|
+
return tool56({
|
|
2803
|
+
description: "Capture the current desktop surface.",
|
|
2804
|
+
args: {
|
|
2805
|
+
reason: z55.string().describe("Audit reason for the capture")
|
|
2806
|
+
},
|
|
2807
|
+
async execute(args) {
|
|
2808
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2809
|
+
if (typeof runtime === "string") {
|
|
2810
|
+
return runtime;
|
|
2811
|
+
}
|
|
2812
|
+
try {
|
|
2813
|
+
return desktopResult(await runtime.captureDesktop({ reason: args.reason }));
|
|
2814
|
+
} catch (error) {
|
|
2815
|
+
return desktopToolFailure(error, "desktop_capture_desktop_failed");
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
});
|
|
2819
|
+
}
|
|
2820
|
+
|
|
2821
|
+
// src/tools/desktop_capture_window.ts
|
|
2822
|
+
import { tool as tool57 } from "@opencode-ai/plugin";
|
|
2823
|
+
var z56 = tool57.schema;
|
|
2824
|
+
function createDesktopCaptureWindowTool(deps) {
|
|
2825
|
+
return tool57({
|
|
2826
|
+
description: "Capture a specific desktop window.",
|
|
2827
|
+
args: {
|
|
2828
|
+
windowId: z56.string().describe("Desktop window id"),
|
|
2829
|
+
reason: z56.string().describe("Audit reason for the capture")
|
|
2830
|
+
},
|
|
2831
|
+
async execute(args) {
|
|
2832
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2833
|
+
if (typeof runtime === "string") {
|
|
2834
|
+
return runtime;
|
|
2835
|
+
}
|
|
2836
|
+
try {
|
|
2837
|
+
return desktopResult(await runtime.captureWindow(args.windowId, { reason: args.reason }));
|
|
2838
|
+
} catch (error) {
|
|
2839
|
+
return desktopToolFailure(error, "desktop_capture_window_failed");
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2842
|
+
});
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2845
|
+
// src/tools/desktop_accessibility_snapshot.ts
|
|
2846
|
+
import { tool as tool58 } from "@opencode-ai/plugin";
|
|
2847
|
+
var z57 = tool58.schema;
|
|
2848
|
+
function createDesktopAccessibilitySnapshotTool(deps) {
|
|
2849
|
+
return tool58({
|
|
2850
|
+
description: "Capture desktop accessibility state.",
|
|
2851
|
+
args: {
|
|
2852
|
+
reason: z57.string().describe("Audit reason for the accessibility snapshot"),
|
|
2853
|
+
windowId: z57.string().optional().describe("Optional desktop window id")
|
|
2854
|
+
},
|
|
2855
|
+
async execute(args) {
|
|
2856
|
+
const runtime = requireDesktopRuntime(deps);
|
|
2857
|
+
if (typeof runtime === "string") {
|
|
2858
|
+
return runtime;
|
|
2859
|
+
}
|
|
2860
|
+
try {
|
|
2861
|
+
return desktopResult(await runtime.accessibilitySnapshot(args.reason, args.windowId));
|
|
2862
|
+
} catch (error) {
|
|
2863
|
+
return desktopToolFailure(error, "desktop_accessibility_snapshot_failed");
|
|
2864
|
+
}
|
|
2865
|
+
}
|
|
2866
|
+
});
|
|
2867
|
+
}
|
|
2868
|
+
|
|
2295
2869
|
// src/tools/annotate.ts
|
|
2296
|
-
import { tool as
|
|
2297
|
-
var
|
|
2298
|
-
var screenshotModeSchema =
|
|
2299
|
-
var transportSchema =
|
|
2870
|
+
import { tool as tool59 } from "@opencode-ai/plugin";
|
|
2871
|
+
var z58 = tool59.schema;
|
|
2872
|
+
var screenshotModeSchema = z58.enum(["visible", "full", "none"]);
|
|
2873
|
+
var transportSchema = z58.enum(["auto", "direct", "relay"]);
|
|
2300
2874
|
function createAnnotateTool(deps) {
|
|
2301
|
-
return
|
|
2875
|
+
return tool59({
|
|
2302
2876
|
description: "Request interactive annotations via direct (CDP) or relay transport.",
|
|
2303
2877
|
args: {
|
|
2304
|
-
sessionId:
|
|
2305
|
-
stored:
|
|
2306
|
-
includeScreenshots:
|
|
2878
|
+
sessionId: z58.string().describe("Session id"),
|
|
2879
|
+
stored: z58.boolean().optional().describe("Fetch the latest payload explicitly sent from popup/canvas surfaces"),
|
|
2880
|
+
includeScreenshots: z58.boolean().optional().describe("When fetching stored payloads, prefer screenshots if still available in memory"),
|
|
2307
2881
|
transport: transportSchema.optional().describe("auto | direct | relay (default: auto)"),
|
|
2308
|
-
targetId:
|
|
2309
|
-
tabId:
|
|
2310
|
-
url:
|
|
2882
|
+
targetId: z58.string().optional().describe("Optional target id for direct mode"),
|
|
2883
|
+
tabId: z58.number().int().optional().describe("Optional Chrome tab id for relay mode"),
|
|
2884
|
+
url: z58.string().optional().describe("Optional URL to open before annotating"),
|
|
2311
2885
|
screenshotMode: screenshotModeSchema.optional().describe("visible | full | none (default: visible)"),
|
|
2312
|
-
debug:
|
|
2313
|
-
context:
|
|
2314
|
-
timeoutMs:
|
|
2886
|
+
debug: z58.boolean().optional().describe("Include debug metadata"),
|
|
2887
|
+
context: z58.string().optional().describe("Optional context for the annotator"),
|
|
2888
|
+
timeoutMs: z58.number().int().optional().describe("Timeout in milliseconds")
|
|
2315
2889
|
},
|
|
2316
2890
|
async execute(args) {
|
|
2317
2891
|
try {
|
|
2318
2892
|
const transport = args.stored ? "relay" : args.transport ?? "auto";
|
|
2319
|
-
if (transport === "relay") {
|
|
2893
|
+
if (transport === "relay" && !args.stored) {
|
|
2320
2894
|
const status = await deps.manager.status(args.sessionId);
|
|
2321
2895
|
if (status.mode !== "extension") {
|
|
2322
2896
|
return failure("Annotations require extension mode (relay).", "annotate_requires_extension");
|
|
@@ -2360,49 +2934,36 @@ function createAnnotateTool(deps) {
|
|
|
2360
2934
|
}
|
|
2361
2935
|
|
|
2362
2936
|
// src/tools/research_run.ts
|
|
2363
|
-
import { tool as
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
var
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
const { createConfiguredProviderRuntime: createConfiguredProviderRuntime2 } = await import("./runtime-factory-BICHDPE7.js");
|
|
2371
|
-
return createConfiguredProviderRuntime2({
|
|
2372
|
-
config: deps.config?.get?.(),
|
|
2373
|
-
manager: deps.manager,
|
|
2374
|
-
browserFallbackPort: deps.browserFallbackPort
|
|
2375
|
-
});
|
|
2376
|
-
};
|
|
2377
|
-
|
|
2378
|
-
// src/tools/research_run.ts
|
|
2379
|
-
var z44 = tool44.schema;
|
|
2380
|
-
var sourceSelectionSchema = z44.enum(["auto", "web", "community", "social", "shopping", "all"]);
|
|
2381
|
-
var sourceSchema = z44.enum(["web", "community", "social", "shopping"]);
|
|
2382
|
-
var modeSchema = z44.enum(["compact", "json", "md", "context", "path"]);
|
|
2383
|
-
var cookiePolicySchema = z44.enum(["off", "auto", "required"]);
|
|
2937
|
+
import { tool as tool60 } from "@opencode-ai/plugin";
|
|
2938
|
+
var z59 = tool60.schema;
|
|
2939
|
+
var sourceSelectionSchema = z59.enum(["auto", "web", "community", "social", "shopping", "all"]);
|
|
2940
|
+
var sourceSchema = z59.enum(["web", "community", "social", "shopping"]);
|
|
2941
|
+
var modeSchema = z59.enum(["compact", "json", "md", "context", "path"]);
|
|
2942
|
+
var cookiePolicySchema = z59.enum(["off", "auto", "required"]);
|
|
2943
|
+
var challengeAutomationModeSchema = z59.enum(CHALLENGE_AUTOMATION_MODES);
|
|
2384
2944
|
function createResearchRunTool(deps) {
|
|
2385
|
-
return
|
|
2945
|
+
return tool60({
|
|
2386
2946
|
description: "Run cross-source research with strict timebox and artifact outputs.",
|
|
2387
2947
|
args: {
|
|
2388
|
-
topic:
|
|
2389
|
-
days:
|
|
2390
|
-
from:
|
|
2391
|
-
to:
|
|
2948
|
+
topic: z59.string().min(1).describe("Research topic"),
|
|
2949
|
+
days: z59.number().int().positive().optional().describe("Timebox in days"),
|
|
2950
|
+
from: z59.string().optional().describe("ISO start date"),
|
|
2951
|
+
to: z59.string().optional().describe("ISO end date"),
|
|
2392
2952
|
sourceSelection: sourceSelectionSchema.optional().describe("auto|web|community|social|shopping|all"),
|
|
2393
|
-
sources:
|
|
2953
|
+
sources: z59.array(sourceSchema).optional().describe("Explicit source list"),
|
|
2394
2954
|
mode: modeSchema.optional().describe("compact|json|md|context|path"),
|
|
2395
|
-
includeEngagement:
|
|
2396
|
-
limitPerSource:
|
|
2397
|
-
outputDir:
|
|
2398
|
-
ttlHours:
|
|
2399
|
-
useCookies:
|
|
2955
|
+
includeEngagement: z59.boolean().optional().describe("Include engagement enrichment"),
|
|
2956
|
+
limitPerSource: z59.number().int().positive().optional().describe("Result limit per source"),
|
|
2957
|
+
outputDir: z59.string().optional().describe("Optional artifact output directory"),
|
|
2958
|
+
ttlHours: z59.number().int().positive().optional().describe("Artifact retention TTL in hours"),
|
|
2959
|
+
useCookies: z59.boolean().optional().describe("Enable/disable provider cookie injection for this run"),
|
|
2960
|
+
challengeAutomationMode: challengeAutomationModeSchema.optional().describe("Challenge automation mode: off|browser|browser_with_helper"),
|
|
2400
2961
|
cookiePolicyOverride: cookiePolicySchema.optional().describe("Override cookie policy: off|auto|required")
|
|
2401
2962
|
},
|
|
2402
2963
|
async execute(args) {
|
|
2403
2964
|
try {
|
|
2404
2965
|
const runtime = await resolveProviderRuntime(deps);
|
|
2405
|
-
const { runResearchWorkflow } = await import("./providers-
|
|
2966
|
+
const { runResearchWorkflow } = await import("./providers-G36AM3Z2.js");
|
|
2406
2967
|
const result = await runResearchWorkflow(runtime, {
|
|
2407
2968
|
topic: args.topic,
|
|
2408
2969
|
days: args.days,
|
|
@@ -2416,6 +2977,7 @@ function createResearchRunTool(deps) {
|
|
|
2416
2977
|
outputDir: args.outputDir,
|
|
2417
2978
|
ttlHours: args.ttlHours,
|
|
2418
2979
|
useCookies: args.useCookies,
|
|
2980
|
+
challengeAutomationMode: args.challengeAutomationMode,
|
|
2419
2981
|
cookiePolicyOverride: args.cookiePolicyOverride
|
|
2420
2982
|
});
|
|
2421
2983
|
return ok(result);
|
|
@@ -2427,30 +2989,32 @@ function createResearchRunTool(deps) {
|
|
|
2427
2989
|
}
|
|
2428
2990
|
|
|
2429
2991
|
// src/tools/shopping_run.ts
|
|
2430
|
-
import { tool as
|
|
2431
|
-
var
|
|
2432
|
-
var sortSchema =
|
|
2433
|
-
var modeSchema2 =
|
|
2434
|
-
var cookiePolicySchema2 =
|
|
2992
|
+
import { tool as tool61 } from "@opencode-ai/plugin";
|
|
2993
|
+
var z60 = tool61.schema;
|
|
2994
|
+
var sortSchema = z60.enum(["best_deal", "lowest_price", "highest_rating", "fastest_shipping"]);
|
|
2995
|
+
var modeSchema2 = z60.enum(["compact", "json", "md", "context", "path"]);
|
|
2996
|
+
var cookiePolicySchema2 = z60.enum(["off", "auto", "required"]);
|
|
2997
|
+
var challengeAutomationModeSchema2 = z60.enum(CHALLENGE_AUTOMATION_MODES);
|
|
2435
2998
|
function createShoppingRunTool(deps) {
|
|
2436
|
-
return
|
|
2999
|
+
return tool61({
|
|
2437
3000
|
description: "Run shopping/deal intelligence across shopping providers.",
|
|
2438
3001
|
args: {
|
|
2439
|
-
query:
|
|
2440
|
-
providers:
|
|
2441
|
-
budget:
|
|
2442
|
-
region:
|
|
3002
|
+
query: z60.string().min(1).describe("Shopping query"),
|
|
3003
|
+
providers: z60.array(z60.string()).optional().describe("Optional provider allow-list"),
|
|
3004
|
+
budget: z60.number().positive().optional().describe("Optional budget amount"),
|
|
3005
|
+
region: z60.string().optional().describe("Region hint"),
|
|
2443
3006
|
sort: sortSchema.optional().describe("best_deal|lowest_price|highest_rating|fastest_shipping"),
|
|
2444
3007
|
mode: modeSchema2.optional().describe("compact|json|md|context|path"),
|
|
2445
|
-
outputDir:
|
|
2446
|
-
ttlHours:
|
|
2447
|
-
useCookies:
|
|
3008
|
+
outputDir: z60.string().optional().describe("Optional artifact output directory"),
|
|
3009
|
+
ttlHours: z60.number().int().positive().optional().describe("Artifact retention TTL in hours"),
|
|
3010
|
+
useCookies: z60.boolean().optional().describe("Enable/disable provider cookie injection for this run"),
|
|
3011
|
+
challengeAutomationMode: challengeAutomationModeSchema2.optional().describe("Challenge automation mode: off|browser|browser_with_helper"),
|
|
2448
3012
|
cookiePolicyOverride: cookiePolicySchema2.optional().describe("Override cookie policy: off|auto|required")
|
|
2449
3013
|
},
|
|
2450
3014
|
async execute(args) {
|
|
2451
3015
|
try {
|
|
2452
3016
|
const runtime = await resolveProviderRuntime(deps);
|
|
2453
|
-
const { runShoppingWorkflow } = await import("./providers-
|
|
3017
|
+
const { runShoppingWorkflow } = await import("./providers-G36AM3Z2.js");
|
|
2454
3018
|
const result = await runShoppingWorkflow(runtime, {
|
|
2455
3019
|
query: args.query,
|
|
2456
3020
|
providers: args.providers,
|
|
@@ -2461,6 +3025,7 @@ function createShoppingRunTool(deps) {
|
|
|
2461
3025
|
outputDir: args.outputDir,
|
|
2462
3026
|
ttlHours: args.ttlHours,
|
|
2463
3027
|
useCookies: args.useCookies,
|
|
3028
|
+
challengeAutomationMode: args.challengeAutomationMode,
|
|
2464
3029
|
cookiePolicyOverride: args.cookiePolicyOverride
|
|
2465
3030
|
});
|
|
2466
3031
|
return ok(result);
|
|
@@ -2472,9 +3037,10 @@ function createShoppingRunTool(deps) {
|
|
|
2472
3037
|
}
|
|
2473
3038
|
|
|
2474
3039
|
// src/tools/product_video_run.ts
|
|
2475
|
-
import { tool as
|
|
2476
|
-
var
|
|
2477
|
-
var cookiePolicySchema3 =
|
|
3040
|
+
import { tool as tool62 } from "@opencode-ai/plugin";
|
|
3041
|
+
var z61 = tool62.schema;
|
|
3042
|
+
var cookiePolicySchema3 = z61.enum(["off", "auto", "required"]);
|
|
3043
|
+
var challengeAutomationModeSchema3 = z61.enum(CHALLENGE_AUTOMATION_MODES);
|
|
2478
3044
|
async function captureScreenshotBuffer(deps, url) {
|
|
2479
3045
|
let sessionId = null;
|
|
2480
3046
|
try {
|
|
@@ -2498,24 +3064,26 @@ async function captureScreenshotBuffer(deps, url) {
|
|
|
2498
3064
|
}
|
|
2499
3065
|
}
|
|
2500
3066
|
function createProductVideoRunTool(deps) {
|
|
2501
|
-
return
|
|
3067
|
+
return tool62({
|
|
2502
3068
|
description: "Collect a product presentation asset pack for video/UGC workflows.",
|
|
2503
3069
|
args: {
|
|
2504
|
-
product_url:
|
|
2505
|
-
product_name:
|
|
2506
|
-
provider_hint:
|
|
2507
|
-
include_screenshots:
|
|
2508
|
-
include_all_images:
|
|
2509
|
-
include_copy:
|
|
2510
|
-
output_dir:
|
|
2511
|
-
ttl_hours:
|
|
2512
|
-
|
|
3070
|
+
product_url: z61.string().optional().describe("Product URL"),
|
|
3071
|
+
product_name: z61.string().optional().describe("Product name"),
|
|
3072
|
+
provider_hint: z61.string().optional().describe("Optional provider hint"),
|
|
3073
|
+
include_screenshots: z61.boolean().optional().describe("Include screenshots (default true)"),
|
|
3074
|
+
include_all_images: z61.boolean().optional().describe("Include all discovered images (default true)"),
|
|
3075
|
+
include_copy: z61.boolean().optional().describe("Include product copy extraction (default true)"),
|
|
3076
|
+
output_dir: z61.string().optional().describe("Optional output directory"),
|
|
3077
|
+
ttl_hours: z61.number().int().positive().optional().describe("Artifact retention TTL in hours"),
|
|
3078
|
+
timeoutMs: z61.number().int().positive().optional().describe("Workflow timeout in milliseconds"),
|
|
3079
|
+
useCookies: z61.boolean().optional().describe("Enable/disable provider cookie injection for this run"),
|
|
3080
|
+
challengeAutomationMode: challengeAutomationModeSchema3.optional().describe("Challenge automation mode: off|browser|browser_with_helper"),
|
|
2513
3081
|
cookiePolicyOverride: cookiePolicySchema3.optional().describe("Override cookie policy: off|auto|required")
|
|
2514
3082
|
},
|
|
2515
3083
|
async execute(args) {
|
|
2516
3084
|
try {
|
|
2517
3085
|
const runtime = await resolveProviderRuntime(deps);
|
|
2518
|
-
const { runProductVideoWorkflow } = await import("./providers-
|
|
3086
|
+
const { runProductVideoWorkflow } = await import("./providers-G36AM3Z2.js");
|
|
2519
3087
|
const includeScreenshots = args.include_screenshots ?? true;
|
|
2520
3088
|
const result = await runProductVideoWorkflow(runtime, {
|
|
2521
3089
|
product_url: args.product_url,
|
|
@@ -2526,7 +3094,9 @@ function createProductVideoRunTool(deps) {
|
|
|
2526
3094
|
include_copy: args.include_copy,
|
|
2527
3095
|
output_dir: args.output_dir,
|
|
2528
3096
|
ttl_hours: args.ttl_hours,
|
|
3097
|
+
timeoutMs: args.timeoutMs,
|
|
2529
3098
|
useCookies: args.useCookies,
|
|
3099
|
+
challengeAutomationMode: args.challengeAutomationMode,
|
|
2530
3100
|
cookiePolicyOverride: args.cookiePolicyOverride
|
|
2531
3101
|
}, {
|
|
2532
3102
|
captureScreenshot: includeScreenshots ? async (url) => captureScreenshotBuffer(deps, url) : void 0
|
|
@@ -2540,14 +3110,14 @@ function createProductVideoRunTool(deps) {
|
|
|
2540
3110
|
}
|
|
2541
3111
|
|
|
2542
3112
|
// src/tools/canvas.ts
|
|
2543
|
-
import { tool as
|
|
2544
|
-
var
|
|
3113
|
+
import { tool as tool63 } from "@opencode-ai/plugin";
|
|
3114
|
+
var z62 = tool63.schema;
|
|
2545
3115
|
function createCanvasTool(deps) {
|
|
2546
|
-
return
|
|
2547
|
-
description: "Execute a typed design-canvas command such as canvas.session.open or canvas.document.patch.",
|
|
3116
|
+
return tool63({
|
|
3117
|
+
description: "Execute a typed design-canvas command such as canvas.session.open, canvas.feedback.next, or canvas.document.patch.",
|
|
2548
3118
|
args: {
|
|
2549
|
-
command:
|
|
2550
|
-
params:
|
|
3119
|
+
command: z62.string().min(1).describe("Canvas command name"),
|
|
3120
|
+
params: z62.record(z62.string(), z62.unknown()).optional().describe("Canvas command payload")
|
|
2551
3121
|
},
|
|
2552
3122
|
async execute(args) {
|
|
2553
3123
|
if (!deps.canvasManager) {
|
|
@@ -2571,10 +3141,10 @@ function createCanvasTool(deps) {
|
|
|
2571
3141
|
}
|
|
2572
3142
|
|
|
2573
3143
|
// src/tools/skill_list.ts
|
|
2574
|
-
import { tool as
|
|
3144
|
+
import { tool as tool64 } from "@opencode-ai/plugin";
|
|
2575
3145
|
function createSkillListTool(deps) {
|
|
2576
|
-
return
|
|
2577
|
-
description: "List
|
|
3146
|
+
return tool64({
|
|
3147
|
+
description: "List bundled and discovered skill packs before choosing a local onboarding or workflow lane.",
|
|
2578
3148
|
args: {},
|
|
2579
3149
|
async execute() {
|
|
2580
3150
|
const skills = await deps.skills.listSkills();
|
|
@@ -2583,20 +3153,23 @@ function createSkillListTool(deps) {
|
|
|
2583
3153
|
description: s.description,
|
|
2584
3154
|
version: s.version
|
|
2585
3155
|
}));
|
|
2586
|
-
return ok({
|
|
3156
|
+
return ok({
|
|
3157
|
+
skills: skillList,
|
|
3158
|
+
count: skillList.length
|
|
3159
|
+
});
|
|
2587
3160
|
}
|
|
2588
3161
|
});
|
|
2589
3162
|
}
|
|
2590
3163
|
|
|
2591
3164
|
// src/tools/skill_load.ts
|
|
2592
|
-
import { tool as
|
|
2593
|
-
var
|
|
3165
|
+
import { tool as tool65 } from "@opencode-ai/plugin";
|
|
3166
|
+
var z63 = tool65.schema;
|
|
2594
3167
|
function createSkillLoadTool(deps) {
|
|
2595
|
-
return
|
|
2596
|
-
description:
|
|
3168
|
+
return tool65({
|
|
3169
|
+
description: `Load a local skill directly; start with ${onboarding_metadata_default.skillName} ${onboarding_metadata_default.skillTopic} before low-level browser commands.`,
|
|
2597
3170
|
args: {
|
|
2598
|
-
name:
|
|
2599
|
-
topic:
|
|
3171
|
+
name: z63.string().describe("Name of the skill to load (e.g., 'opendevbrowser-login-automation', 'opendevbrowser-form-testing')"),
|
|
3172
|
+
topic: z63.string().optional().describe("Optional topic to filter the skill content")
|
|
2600
3173
|
},
|
|
2601
3174
|
async execute(args) {
|
|
2602
3175
|
try {
|
|
@@ -2611,9 +3184,10 @@ function createSkillLoadTool(deps) {
|
|
|
2611
3184
|
}
|
|
2612
3185
|
|
|
2613
3186
|
// src/tools/index.ts
|
|
3187
|
+
var LOCAL_ONLY_TOOL_NAMES = new Set(onboarding_metadata_default.localOnlyToolNames);
|
|
2614
3188
|
function createTools(deps) {
|
|
2615
|
-
const wrap = (definition) => {
|
|
2616
|
-
if (!deps.ensureHub) return definition;
|
|
3189
|
+
const wrap = (name, definition) => {
|
|
3190
|
+
if (!deps.ensureHub || LOCAL_ONLY_TOOL_NAMES.has(name)) return definition;
|
|
2617
3191
|
return {
|
|
2618
3192
|
...definition,
|
|
2619
3193
|
execute: async (args, context) => {
|
|
@@ -2626,67 +3200,88 @@ function createTools(deps) {
|
|
|
2626
3200
|
};
|
|
2627
3201
|
};
|
|
2628
3202
|
return {
|
|
2629
|
-
opendevbrowser_launch: wrap(createLaunchTool(deps)),
|
|
2630
|
-
opendevbrowser_connect: wrap(createConnectTool(deps)),
|
|
2631
|
-
opendevbrowser_disconnect: wrap(createDisconnectTool(deps)),
|
|
2632
|
-
opendevbrowser_status: wrap(createStatusTool(deps)),
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
3203
|
+
opendevbrowser_launch: wrap("opendevbrowser_launch", createLaunchTool(deps)),
|
|
3204
|
+
opendevbrowser_connect: wrap("opendevbrowser_connect", createConnectTool(deps)),
|
|
3205
|
+
opendevbrowser_disconnect: wrap("opendevbrowser_disconnect", createDisconnectTool(deps)),
|
|
3206
|
+
opendevbrowser_status: wrap("opendevbrowser_status", createStatusTool(deps)),
|
|
3207
|
+
opendevbrowser_session_inspector: wrap("opendevbrowser_session_inspector", createSessionInspectorTool(deps)),
|
|
3208
|
+
opendevbrowser_targets_list: wrap("opendevbrowser_targets_list", createTargetsListTool(deps)),
|
|
3209
|
+
opendevbrowser_target_use: wrap("opendevbrowser_target_use", createTargetUseTool(deps)),
|
|
3210
|
+
opendevbrowser_target_new: wrap("opendevbrowser_target_new", createTargetNewTool(deps)),
|
|
3211
|
+
opendevbrowser_target_close: wrap("opendevbrowser_target_close", createTargetCloseTool(deps)),
|
|
3212
|
+
opendevbrowser_page: wrap("opendevbrowser_page", createPageTool(deps)),
|
|
3213
|
+
opendevbrowser_list: wrap("opendevbrowser_list", createListTool(deps)),
|
|
3214
|
+
opendevbrowser_close: wrap("opendevbrowser_close", createCloseTool(deps)),
|
|
3215
|
+
opendevbrowser_goto: wrap("opendevbrowser_goto", createGotoTool(deps)),
|
|
3216
|
+
opendevbrowser_wait: wrap("opendevbrowser_wait", createWaitTool(deps)),
|
|
3217
|
+
opendevbrowser_snapshot: wrap("opendevbrowser_snapshot", createSnapshotTool(deps)),
|
|
3218
|
+
opendevbrowser_review: wrap("opendevbrowser_review", createReviewTool(deps)),
|
|
3219
|
+
opendevbrowser_click: wrap("opendevbrowser_click", createClickTool(deps)),
|
|
3220
|
+
opendevbrowser_hover: wrap("opendevbrowser_hover", createHoverTool(deps)),
|
|
3221
|
+
opendevbrowser_press: wrap("opendevbrowser_press", createPressTool(deps)),
|
|
3222
|
+
opendevbrowser_check: wrap("opendevbrowser_check", createCheckTool(deps)),
|
|
3223
|
+
opendevbrowser_uncheck: wrap("opendevbrowser_uncheck", createUncheckTool(deps)),
|
|
3224
|
+
opendevbrowser_type: wrap("opendevbrowser_type", createTypeTool(deps)),
|
|
3225
|
+
opendevbrowser_select: wrap("opendevbrowser_select", createSelectTool(deps)),
|
|
3226
|
+
opendevbrowser_scroll: wrap("opendevbrowser_scroll", createScrollTool(deps)),
|
|
3227
|
+
opendevbrowser_scroll_into_view: wrap("opendevbrowser_scroll_into_view", createScrollIntoViewTool(deps)),
|
|
3228
|
+
opendevbrowser_upload: wrap("opendevbrowser_upload", createUploadTool(deps)),
|
|
3229
|
+
opendevbrowser_pointer_move: wrap("opendevbrowser_pointer_move", createPointerMoveTool(deps)),
|
|
3230
|
+
opendevbrowser_pointer_down: wrap("opendevbrowser_pointer_down", createPointerDownTool(deps)),
|
|
3231
|
+
opendevbrowser_pointer_up: wrap("opendevbrowser_pointer_up", createPointerUpTool(deps)),
|
|
3232
|
+
opendevbrowser_pointer_drag: wrap("opendevbrowser_pointer_drag", createPointerDragTool(deps)),
|
|
3233
|
+
opendevbrowser_dom_get_html: wrap("opendevbrowser_dom_get_html", createDomGetHtmlTool(deps)),
|
|
3234
|
+
opendevbrowser_dom_get_text: wrap("opendevbrowser_dom_get_text", createDomGetTextTool(deps)),
|
|
3235
|
+
opendevbrowser_get_attr: wrap("opendevbrowser_get_attr", createGetAttrTool(deps)),
|
|
3236
|
+
opendevbrowser_get_value: wrap("opendevbrowser_get_value", createGetValueTool(deps)),
|
|
3237
|
+
opendevbrowser_is_visible: wrap("opendevbrowser_is_visible", createIsVisibleTool(deps)),
|
|
3238
|
+
opendevbrowser_is_enabled: wrap("opendevbrowser_is_enabled", createIsEnabledTool(deps)),
|
|
3239
|
+
opendevbrowser_is_checked: wrap("opendevbrowser_is_checked", createIsCheckedTool(deps)),
|
|
3240
|
+
opendevbrowser_run: wrap("opendevbrowser_run", createRunTool(deps)),
|
|
3241
|
+
opendevbrowser_prompting_guide: wrap("opendevbrowser_prompting_guide", createPromptingGuideTool(deps)),
|
|
3242
|
+
opendevbrowser_console_poll: wrap("opendevbrowser_console_poll", createConsolePollTool(deps)),
|
|
3243
|
+
opendevbrowser_network_poll: wrap("opendevbrowser_network_poll", createNetworkPollTool(deps)),
|
|
3244
|
+
opendevbrowser_debug_trace_snapshot: wrap("opendevbrowser_debug_trace_snapshot", createDebugTraceSnapshotTool(deps)),
|
|
3245
|
+
opendevbrowser_cookie_import: wrap("opendevbrowser_cookie_import", createCookieImportTool(deps)),
|
|
3246
|
+
opendevbrowser_cookie_list: wrap("opendevbrowser_cookie_list", createCookieListTool(deps)),
|
|
3247
|
+
opendevbrowser_macro_resolve: wrap("opendevbrowser_macro_resolve", createMacroResolveTool(deps)),
|
|
3248
|
+
opendevbrowser_research_run: wrap("opendevbrowser_research_run", createResearchRunTool(deps)),
|
|
3249
|
+
opendevbrowser_shopping_run: wrap("opendevbrowser_shopping_run", createShoppingRunTool(deps)),
|
|
3250
|
+
opendevbrowser_product_video_run: wrap("opendevbrowser_product_video_run", createProductVideoRunTool(deps)),
|
|
3251
|
+
opendevbrowser_canvas: wrap("opendevbrowser_canvas", createCanvasTool(deps)),
|
|
3252
|
+
opendevbrowser_clone_page: wrap("opendevbrowser_clone_page", createClonePageTool(deps)),
|
|
3253
|
+
opendevbrowser_clone_component: wrap("opendevbrowser_clone_component", createCloneComponentTool(deps)),
|
|
3254
|
+
opendevbrowser_perf: wrap("opendevbrowser_perf", createPerfTool(deps)),
|
|
3255
|
+
opendevbrowser_screenshot: wrap("opendevbrowser_screenshot", createScreenshotTool(deps)),
|
|
3256
|
+
opendevbrowser_screencast_start: wrap("opendevbrowser_screencast_start", createScreencastStartTool(deps)),
|
|
3257
|
+
opendevbrowser_screencast_stop: wrap("opendevbrowser_screencast_stop", createScreencastStopTool(deps)),
|
|
3258
|
+
opendevbrowser_dialog: wrap("opendevbrowser_dialog", createDialogTool(deps)),
|
|
3259
|
+
opendevbrowser_desktop_status: wrap("opendevbrowser_desktop_status", createDesktopStatusTool(deps)),
|
|
3260
|
+
opendevbrowser_desktop_windows: wrap("opendevbrowser_desktop_windows", createDesktopWindowsTool(deps)),
|
|
3261
|
+
opendevbrowser_desktop_active_window: wrap("opendevbrowser_desktop_active_window", createDesktopActiveWindowTool(deps)),
|
|
3262
|
+
opendevbrowser_desktop_capture_desktop: wrap("opendevbrowser_desktop_capture_desktop", createDesktopCaptureDesktopTool(deps)),
|
|
3263
|
+
opendevbrowser_desktop_capture_window: wrap("opendevbrowser_desktop_capture_window", createDesktopCaptureWindowTool(deps)),
|
|
3264
|
+
opendevbrowser_desktop_accessibility_snapshot: wrap(
|
|
3265
|
+
"opendevbrowser_desktop_accessibility_snapshot",
|
|
3266
|
+
createDesktopAccessibilitySnapshotTool(deps)
|
|
3267
|
+
),
|
|
3268
|
+
opendevbrowser_annotate: wrap("opendevbrowser_annotate", createAnnotateTool(deps)),
|
|
3269
|
+
opendevbrowser_skill_list: wrap("opendevbrowser_skill_list", createSkillListTool(deps)),
|
|
3270
|
+
opendevbrowser_skill_load: wrap("opendevbrowser_skill_load", createSkillLoadTool(deps))
|
|
2678
3271
|
};
|
|
2679
3272
|
}
|
|
2680
3273
|
|
|
2681
3274
|
// src/index.ts
|
|
2682
3275
|
var OpenDevBrowserPlugin = async ({ directory, worktree }) => {
|
|
2683
3276
|
const core = createOpenDevBrowserCore({ directory, worktree });
|
|
2684
|
-
const { config, configStore, skills, ensureRelay, cleanup, getExtensionPath } = core;
|
|
3277
|
+
const { config, configStore, skills, ensureRelay, cleanup, getExtensionPath, agentInbox } = core;
|
|
2685
3278
|
let relay = core.relay;
|
|
2686
3279
|
let manager = core.manager;
|
|
2687
3280
|
let canvasManager = core.canvasManager;
|
|
2688
3281
|
let runner = core.runner;
|
|
2689
3282
|
let annotationManager = core.annotationManager;
|
|
3283
|
+
let desktopRuntime = core.desktopRuntime;
|
|
3284
|
+
let automationCoordinator = core.automationCoordinator;
|
|
2690
3285
|
let providerRuntime = core.providerRuntime;
|
|
2691
3286
|
let browserFallbackPort = core.browserFallbackPort;
|
|
2692
3287
|
let hubStop = null;
|
|
@@ -2708,6 +3303,8 @@ var OpenDevBrowserPlugin = async ({ directory, worktree }) => {
|
|
|
2708
3303
|
runner,
|
|
2709
3304
|
config: configStore,
|
|
2710
3305
|
skills,
|
|
3306
|
+
desktopRuntime,
|
|
3307
|
+
automationCoordinator,
|
|
2711
3308
|
providerRuntime,
|
|
2712
3309
|
browserFallbackPort,
|
|
2713
3310
|
relay,
|
|
@@ -2719,20 +3316,29 @@ var OpenDevBrowserPlugin = async ({ directory, worktree }) => {
|
|
|
2719
3316
|
}
|
|
2720
3317
|
manager = new RemoteManager(daemonClient);
|
|
2721
3318
|
canvasManager = new RemoteCanvasManager(daemonClient);
|
|
3319
|
+
desktopRuntime = new RemoteDesktopRuntime(daemonClient);
|
|
2722
3320
|
relay = new RemoteRelay(daemonClient);
|
|
2723
3321
|
annotationManager.setRelay(relay);
|
|
2724
3322
|
annotationManager.setBrowserManager(manager);
|
|
2725
3323
|
runner = new ScriptRunner(manager);
|
|
2726
|
-
|
|
2727
|
-
|
|
3324
|
+
({
|
|
3325
|
+
providerRuntime,
|
|
3326
|
+
browserFallbackPort
|
|
3327
|
+
} = createCoreRuntimeAssemblies({
|
|
3328
|
+
cacheRoot: core.cacheRoot,
|
|
2728
3329
|
config: configStore.get(),
|
|
3330
|
+
manager
|
|
3331
|
+
}));
|
|
3332
|
+
automationCoordinator = createAutomationCoordinator({
|
|
2729
3333
|
manager,
|
|
2730
|
-
|
|
3334
|
+
desktopRuntime
|
|
2731
3335
|
});
|
|
2732
3336
|
toolDeps.manager = manager;
|
|
2733
3337
|
toolDeps.canvasManager = canvasManager;
|
|
2734
3338
|
toolDeps.relay = relay;
|
|
2735
3339
|
toolDeps.runner = runner;
|
|
3340
|
+
toolDeps.desktopRuntime = desktopRuntime;
|
|
3341
|
+
toolDeps.automationCoordinator = automationCoordinator;
|
|
2736
3342
|
toolDeps.providerRuntime = providerRuntime;
|
|
2737
3343
|
toolDeps.browserFallbackPort = browserFallbackPort;
|
|
2738
3344
|
};
|
|
@@ -2795,11 +3401,30 @@ var OpenDevBrowserPlugin = async ({ directory, worktree }) => {
|
|
|
2795
3401
|
process.on("SIGINT", cleanupAll);
|
|
2796
3402
|
process.on("SIGTERM", cleanupAll);
|
|
2797
3403
|
process.on("beforeExit", cleanupAll);
|
|
3404
|
+
const registerAgentInboxScope = (sessionID, registration) => {
|
|
3405
|
+
if (!sessionID) {
|
|
3406
|
+
return;
|
|
3407
|
+
}
|
|
3408
|
+
try {
|
|
3409
|
+
agentInbox.registerScope(sessionID, registration);
|
|
3410
|
+
} catch (error) {
|
|
3411
|
+
console.warn(
|
|
3412
|
+
"[opendevbrowser] Failed to register agent inbox scope:",
|
|
3413
|
+
error instanceof Error ? error.message : String(error)
|
|
3414
|
+
);
|
|
3415
|
+
}
|
|
3416
|
+
};
|
|
2798
3417
|
return {
|
|
2799
3418
|
tool: createTools(toolDeps),
|
|
2800
|
-
"chat.message": async (
|
|
3419
|
+
"chat.message": async (input, output) => {
|
|
2801
3420
|
const config2 = configStore.get();
|
|
2802
3421
|
if (output.message.role !== "user") return;
|
|
3422
|
+
registerAgentInboxScope(input.sessionID, {
|
|
3423
|
+
messageId: input.messageID ?? null,
|
|
3424
|
+
agent: input.agent ?? null,
|
|
3425
|
+
model: input.model ?? null,
|
|
3426
|
+
variant: input.variant ?? null
|
|
3427
|
+
});
|
|
2803
3428
|
const text = extractTextFromParts(output.parts);
|
|
2804
3429
|
if (!text) return;
|
|
2805
3430
|
if (config2.skills.nudge.enabled && shouldTriggerSkillNudge(text, config2.skills.nudge.keywords)) {
|
|
@@ -2811,11 +3436,22 @@ var OpenDevBrowserPlugin = async ({ directory, worktree }) => {
|
|
|
2811
3436
|
}
|
|
2812
3437
|
}
|
|
2813
3438
|
},
|
|
2814
|
-
"experimental.chat.system.transform": async (
|
|
3439
|
+
"experimental.chat.system.transform": async (input, output) => {
|
|
2815
3440
|
const config2 = configStore.get();
|
|
2816
3441
|
const systemEntries = output.system ?? [];
|
|
2817
3442
|
let nextEntries = systemEntries;
|
|
2818
3443
|
let changed = false;
|
|
3444
|
+
registerAgentInboxScope(input.sessionID, {
|
|
3445
|
+
model: null
|
|
3446
|
+
});
|
|
3447
|
+
if (input.sessionID && !systemEntries.some((entry) => entry.includes(AGENT_INBOX_SYSTEM_MARKER))) {
|
|
3448
|
+
const injection = agentInbox.buildSystemInjection(input.sessionID);
|
|
3449
|
+
if (injection) {
|
|
3450
|
+
nextEntries = [...nextEntries, injection.systemBlock];
|
|
3451
|
+
agentInbox.acknowledge(injection.receiptIds);
|
|
3452
|
+
changed = true;
|
|
3453
|
+
}
|
|
3454
|
+
}
|
|
2819
3455
|
if (config2.skills.nudge.enabled) {
|
|
2820
3456
|
if (systemEntries.some((entry) => entry.includes(SKILL_NUDGE_MARKER))) {
|
|
2821
3457
|
clearSkillNudge(skillNudgeState);
|