opendevbrowser 0.0.16 → 0.0.18
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 +201 -79
- 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 +7 -1
- package/dist/browser/annotation-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.d.ts +153 -48
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/canvas-client.d.ts +54 -0
- package/dist/browser/canvas-client.d.ts.map +1 -0
- package/dist/browser/canvas-code-sync-manager.d.ts +87 -0
- package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -0
- package/dist/browser/canvas-manager.d.ts +122 -0
- package/dist/browser/canvas-manager.d.ts.map +1 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts +20 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts.map +1 -0
- package/dist/browser/canvas-session-sync-manager.d.ts +21 -0
- package/dist/browser/canvas-session-sync-manager.d.ts.map +1 -0
- package/dist/browser/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 +179 -1
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts +114 -4
- 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 +25 -0
- package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -0
- package/dist/canvas/code-sync/graph.d.ts +5 -0
- package/dist/canvas/code-sync/graph.d.ts.map +1 -0
- package/dist/canvas/code-sync/hash.d.ts +3 -0
- package/dist/canvas/code-sync/hash.d.ts.map +1 -0
- package/dist/canvas/code-sync/import.d.ts +19 -0
- package/dist/canvas/code-sync/import.d.ts.map +1 -0
- package/dist/canvas/code-sync/manifest.d.ts +6 -0
- package/dist/canvas/code-sync/manifest.d.ts.map +1 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts +8 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -0
- package/dist/canvas/code-sync/types.d.ts +244 -0
- package/dist/canvas/code-sync/types.d.ts.map +1 -0
- package/dist/canvas/code-sync/write.d.ts +9 -0
- package/dist/canvas/code-sync/write.d.ts.map +1 -0
- package/dist/canvas/document-store.d.ts +91 -0
- package/dist/canvas/document-store.d.ts.map +1 -0
- package/dist/canvas/export.d.ts +12 -0
- package/dist/canvas/export.d.ts.map +1 -0
- package/dist/canvas/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 +12 -0
- package/dist/canvas/repo-store.d.ts.map +1 -0
- package/dist/canvas/starters/catalog.d.ts +34 -0
- package/dist/canvas/starters/catalog.d.ts.map +1 -0
- package/dist/canvas/surface-palette.d.ts +15 -0
- package/dist/canvas/surface-palette.d.ts.map +1 -0
- package/dist/canvas/token-references.d.ts +22 -0
- package/dist/canvas/token-references.d.ts.map +1 -0
- package/dist/canvas/types.d.ts +594 -0
- package/dist/canvas/types.d.ts.map +1 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js +7 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js.map +1 -0
- package/dist/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-7W3SPXIB.js → chunk-FUSXMW3G.js} +4 -1
- package/dist/chunk-L57D35TB.js +33513 -0
- package/dist/chunk-L57D35TB.js.map +1 -0
- package/dist/chunk-TBUCZX4A.js +34 -0
- package/dist/chunk-TBUCZX4A.js.map +1 -0
- package/dist/chunk-Y2KL55OG.js +59 -0
- package/dist/chunk-Y2KL55OG.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/annotate.d.ts +11 -0
- package/dist/cli/commands/annotate.d.ts.map +1 -1
- package/dist/cli/commands/artifacts.d.ts.map +1 -1
- package/dist/cli/commands/canvas.d.ts +45 -0
- package/dist/cli/commands/canvas.d.ts.map +1 -0
- package/dist/cli/commands/daemon.d.ts +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/perf.d.ts.map +1 -1
- 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 +3 -0
- package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -1
- package/dist/cli/commands/dom/attr.d.ts.map +1 -1
- package/dist/cli/commands/dom/checked.d.ts.map +1 -1
- package/dist/cli/commands/dom/enabled.d.ts.map +1 -1
- package/dist/cli/commands/dom/html.d.ts.map +1 -1
- package/dist/cli/commands/dom/text.d.ts.map +1 -1
- package/dist/cli/commands/dom/value.d.ts.map +1 -1
- package/dist/cli/commands/dom/visible.d.ts.map +1 -1
- package/dist/cli/commands/export/clone-component.d.ts +9 -0
- package/dist/cli/commands/export/clone-component.d.ts.map +1 -1
- package/dist/cli/commands/export/clone-page.d.ts +8 -0
- package/dist/cli/commands/export/clone-page.d.ts.map +1 -1
- package/dist/cli/commands/interact/check.d.ts.map +1 -1
- package/dist/cli/commands/interact/click.d.ts.map +1 -1
- package/dist/cli/commands/interact/hover.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/press.d.ts.map +1 -1
- package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -1
- package/dist/cli/commands/interact/scroll.d.ts.map +1 -1
- package/dist/cli/commands/interact/select.d.ts.map +1 -1
- package/dist/cli/commands/interact/type.d.ts.map +1 -1
- package/dist/cli/commands/interact/uncheck.d.ts.map +1 -1
- 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 +22 -8
- package/dist/cli/commands/native.d.ts.map +1 -1
- package/dist/cli/commands/nav/goto.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/nav/wait.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 -21
- 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 -9
- 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 +19 -3
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +2927 -932
- 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-canvas-manager.d.ts +8 -0
- package/dist/cli/remote-canvas-manager.d.ts.map +1 -0
- 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 +27 -3
- package/dist/cli/remote-manager.d.ts.map +1 -1
- package/dist/cli/remote-relay.d.ts +2 -0
- package/dist/cli/remote-relay.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 +3 -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 +17 -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/fs-UMRKOBNN.js +7 -0
- package/dist/fs-UMRKOBNN.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1221 -460
- 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/{macros-NUBRM44Y.js → macros-ND2M7LWU.js} +2 -2
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +1221 -460
- 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-G36AM3Z2.js +121 -0
- package/dist/providers-G36AM3Z2.js.map +1 -0
- 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 +108 -4
- 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 +32 -1
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/relay/relay-types.d.ts +3 -0
- package/dist/relay/relay-types.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-loader.js.map +1 -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/annotate.d.ts.map +1 -1
- package/dist/tools/canvas.d.ts +4 -0
- package/dist/tools/canvas.d.ts.map +1 -0
- package/dist/tools/check.d.ts.map +1 -1
- package/dist/tools/click.d.ts.map +1 -1
- package/dist/tools/clone_component.d.ts.map +1 -1
- package/dist/tools/clone_page.d.ts.map +1 -1
- package/dist/tools/connect.d.ts.map +1 -1
- package/dist/tools/deps.d.ts +6 -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/dom_get_html.d.ts.map +1 -1
- package/dist/tools/dom_get_text.d.ts.map +1 -1
- package/dist/tools/get_attr.d.ts.map +1 -1
- package/dist/tools/get_value.d.ts.map +1 -1
- package/dist/tools/goto.d.ts.map +1 -1
- package/dist/tools/hover.d.ts.map +1 -1
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/is_checked.d.ts.map +1 -1
- package/dist/tools/is_enabled.d.ts.map +1 -1
- package/dist/tools/is_visible.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/perf.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/press.d.ts.map +1 -1
- 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/response.d.ts +4 -1
- package/dist/tools/response.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/scroll.d.ts.map +1 -1
- package/dist/tools/scroll_into_view.d.ts.map +1 -1
- package/dist/tools/select.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/snapshot.d.ts.map +1 -1
- package/dist/tools/type.d.ts.map +1 -1
- package/dist/tools/uncheck.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/wait.d.ts.map +1 -1
- package/dist/tools/workflow-runtime.d.ts +4 -2
- 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 +1006 -0
- package/extension/dist/annotate-content.css +15 -6
- package/extension/dist/annotate-content.js +175 -35
- package/extension/dist/annotation-payload.js +199 -0
- package/extension/dist/background.js +544 -69
- package/extension/dist/canvas/canvas-runtime.js +1490 -0
- package/extension/dist/canvas/model.js +341 -0
- package/extension/dist/canvas/viewport-fit.js +67 -0
- package/extension/dist/canvas-page.js +3609 -0
- package/extension/dist/ops/dom-bridge.js +255 -3
- package/extension/dist/ops/ops-runtime.js +3324 -301
- package/extension/dist/ops/ops-session-store.js +97 -112
- 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 +159 -0
- package/extension/dist/popup.js +201 -42
- package/extension/dist/services/CDPRouter.js +1567 -63
- package/extension/dist/services/ConnectionManager.js +453 -78
- package/extension/dist/services/RelayClient.js +79 -30
- package/extension/dist/services/TabManager.js +118 -22
- 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/dist/types.js +2 -0
- package/extension/manifest.json +2 -2
- package/extension/popup.html +59 -6
- package/package.json +19 -9
- package/skills/AGENTS.md +8 -4
- package/skills/opendevbrowser-best-practices/SKILL.md +183 -6
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +1 -0
- package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +141 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +129 -19
- 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/canvas-blocker-checklist.json +70 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json +73 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +67 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +126 -0
- package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +57 -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 +12 -3
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +107 -12
- package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +100 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -1
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +365 -84
- 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-ST7CO5FA.js +0 -18668
- package/dist/chunk-ST7CO5FA.js.map +0 -1
- /package/dist/{chunk-7W3SPXIB.js.map → chunk-FUSXMW3G.js.map} +0 -0
- /package/dist/{macros-NUBRM44Y.js.map → macros-ND2M7LWU.js.map} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
if [[ $# -lt 1 || $# -gt 2 ]]; then
|
|
5
|
+
cat <<'EOF' >&2
|
|
6
|
+
Usage:
|
|
7
|
+
./skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh <design-contract.json> [canvas-session.json]
|
|
8
|
+
EOF
|
|
9
|
+
exit 2
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
input_path="$1"
|
|
13
|
+
session_path="${2:-}"
|
|
14
|
+
|
|
15
|
+
node - "$input_path" "$session_path" <<'NODE'
|
|
16
|
+
const fs = require("node:fs");
|
|
17
|
+
|
|
18
|
+
const inputPath = process.argv[2];
|
|
19
|
+
const sessionPath = process.argv[3];
|
|
20
|
+
const requiredKeys = [
|
|
21
|
+
"targetOutcome",
|
|
22
|
+
"visualDirection",
|
|
23
|
+
"layoutStrategy",
|
|
24
|
+
"contentStrategy",
|
|
25
|
+
"componentStrategy",
|
|
26
|
+
"motionPosture",
|
|
27
|
+
"responsivePosture",
|
|
28
|
+
"accessibilityPosture",
|
|
29
|
+
"validationTargets"
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const payload = JSON.parse(fs.readFileSync(inputPath, "utf8"));
|
|
33
|
+
const plan = payload.generationPlan ?? payload;
|
|
34
|
+
const missing = requiredKeys.filter((key) => !(key in plan));
|
|
35
|
+
|
|
36
|
+
let sessionPayload = null;
|
|
37
|
+
if (sessionPath) {
|
|
38
|
+
sessionPayload = JSON.parse(fs.readFileSync(sessionPath, "utf8"));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const sessionResult = sessionPayload?.data?.result ?? sessionPayload?.result ?? sessionPayload ?? {};
|
|
42
|
+
|
|
43
|
+
if (missing.length > 0) {
|
|
44
|
+
console.error(`Missing generationPlan keys: ${missing.join(", ")}`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
process.stdout.write(JSON.stringify({
|
|
49
|
+
requestId: payload.requestId ?? "req_plan_from_contract",
|
|
50
|
+
canvasSessionId: payload.canvasSessionId ?? sessionResult.canvasSessionId ?? "<canvas-session-id>",
|
|
51
|
+
leaseId: payload.leaseId ?? sessionResult.leaseId ?? "<lease-id>",
|
|
52
|
+
documentId: payload.documentId ?? sessionResult.documentId ?? "<document-id>",
|
|
53
|
+
generationPlan: plan
|
|
54
|
+
}, null, 2));
|
|
55
|
+
process.stdout.write("\n");
|
|
56
|
+
NODE
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
skill_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
skill_file="$skill_root/SKILL.md"
|
|
6
|
+
|
|
7
|
+
node - "$skill_root" "$skill_file" <<'NODE'
|
|
8
|
+
const fs = require("node:fs");
|
|
9
|
+
const path = require("node:path");
|
|
10
|
+
const { spawnSync } = require("node:child_process");
|
|
11
|
+
|
|
12
|
+
const [skillRoot, skillFile] = process.argv.slice(2);
|
|
13
|
+
|
|
14
|
+
const requiredPaths = [
|
|
15
|
+
"artifacts/design-workflows.md",
|
|
16
|
+
"artifacts/design-contract-playbook.md",
|
|
17
|
+
"artifacts/frontend-evaluation-rubric.md",
|
|
18
|
+
"artifacts/external-pattern-synthesis.md",
|
|
19
|
+
"artifacts/component-pattern-index.md",
|
|
20
|
+
"artifacts/existing-surface-adaptation.md",
|
|
21
|
+
"artifacts/app-shell-and-state-wiring.md",
|
|
22
|
+
"artifacts/state-ownership-matrix.md",
|
|
23
|
+
"artifacts/async-search-state-ownership.md",
|
|
24
|
+
"artifacts/loading-and-feedback-surfaces.md",
|
|
25
|
+
"artifacts/theming-and-token-ownership.md",
|
|
26
|
+
"artifacts/isolated-preview-validation.md",
|
|
27
|
+
"artifacts/performance-audit-playbook.md",
|
|
28
|
+
"artifacts/scroll-reveal-surface-planning.md",
|
|
29
|
+
"artifacts/research-harvest-workflow.md",
|
|
30
|
+
"artifacts/design-release-gate.md",
|
|
31
|
+
"artifacts/opendevbrowser-ui-example-map.md",
|
|
32
|
+
"artifacts/implementation-anti-patterns.md",
|
|
33
|
+
"assets/templates/design-brief.v1.md",
|
|
34
|
+
"assets/templates/design-audit-report.v1.md",
|
|
35
|
+
"assets/templates/design-contract.v1.json",
|
|
36
|
+
"assets/templates/canvas-generation-plan.design.v1.json",
|
|
37
|
+
"assets/templates/design-review-checklist.json",
|
|
38
|
+
"assets/templates/real-surface-design-matrix.json",
|
|
39
|
+
"assets/templates/reference-pattern-board.v1.json",
|
|
40
|
+
"assets/templates/design-release-gate.v1.json",
|
|
41
|
+
"scripts/design-workflow.sh",
|
|
42
|
+
"scripts/extract-canvas-plan.sh",
|
|
43
|
+
"scripts/validate-skill-assets.sh"
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const jsonTemplates = [
|
|
47
|
+
"assets/templates/design-contract.v1.json",
|
|
48
|
+
"assets/templates/canvas-generation-plan.design.v1.json",
|
|
49
|
+
"assets/templates/design-review-checklist.json",
|
|
50
|
+
"assets/templates/real-surface-design-matrix.json",
|
|
51
|
+
"assets/templates/reference-pattern-board.v1.json",
|
|
52
|
+
"assets/templates/design-release-gate.v1.json"
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const executableScripts = [
|
|
56
|
+
"scripts/design-workflow.sh",
|
|
57
|
+
"scripts/extract-canvas-plan.sh",
|
|
58
|
+
"scripts/validate-skill-assets.sh"
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const workflowResolverMarkers = [
|
|
62
|
+
"resolve-odb-cli.sh",
|
|
63
|
+
"CLI_PREFIX"
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
const skillDocMarkers = [
|
|
67
|
+
"artifacts/design-workflows.md",
|
|
68
|
+
"artifacts/design-contract-playbook.md",
|
|
69
|
+
"artifacts/frontend-evaluation-rubric.md",
|
|
70
|
+
"artifacts/external-pattern-synthesis.md",
|
|
71
|
+
"artifacts/component-pattern-index.md",
|
|
72
|
+
"artifacts/existing-surface-adaptation.md",
|
|
73
|
+
"artifacts/app-shell-and-state-wiring.md",
|
|
74
|
+
"artifacts/state-ownership-matrix.md",
|
|
75
|
+
"artifacts/async-search-state-ownership.md",
|
|
76
|
+
"artifacts/loading-and-feedback-surfaces.md",
|
|
77
|
+
"artifacts/theming-and-token-ownership.md",
|
|
78
|
+
"artifacts/isolated-preview-validation.md",
|
|
79
|
+
"artifacts/performance-audit-playbook.md",
|
|
80
|
+
"artifacts/scroll-reveal-surface-planning.md",
|
|
81
|
+
"artifacts/research-harvest-workflow.md",
|
|
82
|
+
"artifacts/design-release-gate.md",
|
|
83
|
+
"artifacts/opendevbrowser-ui-example-map.md",
|
|
84
|
+
"artifacts/implementation-anti-patterns.md",
|
|
85
|
+
"assets/templates/design-audit-report.v1.md",
|
|
86
|
+
"assets/templates/design-contract.v1.json",
|
|
87
|
+
"assets/templates/canvas-generation-plan.design.v1.json",
|
|
88
|
+
"assets/templates/reference-pattern-board.v1.json",
|
|
89
|
+
"assets/templates/design-release-gate.v1.json",
|
|
90
|
+
"scripts/extract-canvas-plan.sh",
|
|
91
|
+
"canvas.plan.set",
|
|
92
|
+
"canvas.history.undo",
|
|
93
|
+
"canvas.history.redo",
|
|
94
|
+
"canvas_history_requested",
|
|
95
|
+
"research-harvest",
|
|
96
|
+
"release-gate",
|
|
97
|
+
"performance-audit",
|
|
98
|
+
"Delivered to agent",
|
|
99
|
+
"Stored only; fetch with annotate --stored",
|
|
100
|
+
"ISSUE-01",
|
|
101
|
+
"ISSUE-07",
|
|
102
|
+
"ISSUE-08",
|
|
103
|
+
"ISSUE-12",
|
|
104
|
+
"v0.dev/docs/prompting/text",
|
|
105
|
+
"docs.lovable.dev/prompting/prompting-best-practices"
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
const patternMarkers = [
|
|
109
|
+
"Anthropic",
|
|
110
|
+
"Vercel v0",
|
|
111
|
+
"Lovable",
|
|
112
|
+
"iannuttall/claude-agents",
|
|
113
|
+
"Dimillian",
|
|
114
|
+
"OpenDevBrowser-Specific Adaptation"
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
const failures = [];
|
|
118
|
+
const fullPath = (relPath) => path.join(skillRoot, relPath);
|
|
119
|
+
|
|
120
|
+
for (const relPath of requiredPaths) {
|
|
121
|
+
if (!fs.existsSync(fullPath(relPath))) {
|
|
122
|
+
failures.push(`Missing required asset: ${relPath}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
for (const relPath of executableScripts) {
|
|
127
|
+
if (!fs.existsSync(fullPath(relPath))) continue;
|
|
128
|
+
const mode = fs.statSync(fullPath(relPath)).mode & 0o111;
|
|
129
|
+
if (mode === 0) {
|
|
130
|
+
failures.push(`Script is not executable: ${relPath}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
for (const relPath of jsonTemplates) {
|
|
135
|
+
if (!fs.existsSync(fullPath(relPath))) continue;
|
|
136
|
+
try {
|
|
137
|
+
JSON.parse(fs.readFileSync(fullPath(relPath), "utf8"));
|
|
138
|
+
} catch {
|
|
139
|
+
failures.push(`Invalid JSON template: ${relPath}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const skillDoc = fs.readFileSync(skillFile, "utf8");
|
|
144
|
+
for (const marker of skillDocMarkers) {
|
|
145
|
+
if (!skillDoc.includes(marker)) {
|
|
146
|
+
failures.push(`SKILL.md missing marker: ${marker}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const patternDoc = fs.readFileSync(fullPath("artifacts/external-pattern-synthesis.md"), "utf8");
|
|
151
|
+
for (const marker of patternMarkers) {
|
|
152
|
+
if (!patternDoc.includes(marker)) {
|
|
153
|
+
failures.push(`external-pattern-synthesis missing marker: ${marker}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const extractScript = fullPath("scripts/extract-canvas-plan.sh");
|
|
158
|
+
const contractTemplate = fullPath("assets/templates/design-contract.v1.json");
|
|
159
|
+
const extractResult = spawnSync(extractScript, [contractTemplate], { encoding: "utf8" });
|
|
160
|
+
if (extractResult.status !== 0) {
|
|
161
|
+
failures.push(`extract-canvas-plan.sh failed on template: ${extractResult.stderr.trim() || extractResult.stdout.trim()}`);
|
|
162
|
+
} else {
|
|
163
|
+
try {
|
|
164
|
+
const output = JSON.parse(extractResult.stdout);
|
|
165
|
+
const requiredPlanKeys = [
|
|
166
|
+
"targetOutcome",
|
|
167
|
+
"visualDirection",
|
|
168
|
+
"layoutStrategy",
|
|
169
|
+
"contentStrategy",
|
|
170
|
+
"componentStrategy",
|
|
171
|
+
"motionPosture",
|
|
172
|
+
"responsivePosture",
|
|
173
|
+
"accessibilityPosture",
|
|
174
|
+
"validationTargets"
|
|
175
|
+
];
|
|
176
|
+
for (const key of requiredPlanKeys) {
|
|
177
|
+
if (!(key in (output.generationPlan ?? {}))) {
|
|
178
|
+
failures.push(`extract-canvas-plan output missing key: ${key}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
} catch {
|
|
182
|
+
failures.push("extract-canvas-plan.sh produced invalid JSON output");
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const workflowScript = fullPath("scripts/design-workflow.sh");
|
|
187
|
+
const workflowSource = fs.readFileSync(workflowScript, "utf8");
|
|
188
|
+
for (const marker of workflowResolverMarkers) {
|
|
189
|
+
if (!workflowSource.includes(marker)) {
|
|
190
|
+
failures.push(`design-workflow.sh missing resolver marker: ${marker}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
for (const workflow of [
|
|
195
|
+
"list",
|
|
196
|
+
"contract-first",
|
|
197
|
+
"research-harvest",
|
|
198
|
+
"screenshot-audit",
|
|
199
|
+
"canvas-contract",
|
|
200
|
+
"real-surface-validation",
|
|
201
|
+
"performance-audit",
|
|
202
|
+
"release-gate",
|
|
203
|
+
"ship-audit"
|
|
204
|
+
]) {
|
|
205
|
+
const result = spawnSync(workflowScript, [workflow], { encoding: "utf8" });
|
|
206
|
+
if (result.status !== 0) {
|
|
207
|
+
failures.push(`design-workflow.sh failed for mode ${workflow}: ${result.stderr.trim() || result.stdout.trim()}`);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if ((result.stdout ?? "").trim().length === 0) {
|
|
211
|
+
failures.push(`design-workflow.sh produced empty output for mode ${workflow}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (failures.length > 0) {
|
|
216
|
+
for (const failure of failures) {
|
|
217
|
+
console.error(failure);
|
|
218
|
+
}
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
console.log("Design-agent skill assets validated.");
|
|
223
|
+
NODE
|
|
@@ -28,14 +28,29 @@ Use this skill for robust form automation across dynamic, multi-step, challenge-
|
|
|
28
28
|
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh challenge-checkpoint
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
+
## Supporting Surfaces
|
|
32
|
+
|
|
33
|
+
- Use browser replay (`screencast-start` / `screencast-stop`) when transient validation, step transitions, or challenge timing need temporal evidence.
|
|
34
|
+
- Use desktop observation only for read-only evidence around OS-owned dialogs such as file choosers or sibling desktop prompts.
|
|
35
|
+
- Use `--challenge-automation-mode off|browser|browser_with_helper` for bounded browser-scoped computer use on submit or challenge branches; it is not desktop automation.
|
|
36
|
+
|
|
31
37
|
## Core Rules
|
|
32
38
|
|
|
33
39
|
- Snapshot first, then act.
|
|
34
40
|
- Keep one field mutation per decision loop in failure analysis.
|
|
35
41
|
- Re-snapshot after each invalid submit to avoid stale refs.
|
|
36
42
|
- Verify both UX and network behavior for each submission branch.
|
|
43
|
+
- Use low-level pointer controls when a deterministic challenge or slider gate is part of the approved test path, then re-snapshot before continuing.
|
|
37
44
|
- Keep challenge retries bounded and honor `Retry-After` when 429 pressure appears.
|
|
38
45
|
|
|
46
|
+
## Session Reuse by Mode
|
|
47
|
+
|
|
48
|
+
- `extension` reuses the attached live tab or profile state; it does not run system cookie bootstrap.
|
|
49
|
+
- `managed` attempts readable system Chrome-family cookie bootstrap before first navigation.
|
|
50
|
+
- `cdpConnect` attempts readable system Chrome-family cookie bootstrap before first navigation.
|
|
51
|
+
- Use `cookie-import` only when you intentionally need to add or override cookies after session creation.
|
|
52
|
+
- Canonical direct-run release evidence policy lives in `../opendevbrowser-best-practices/SKILL.md`.
|
|
53
|
+
|
|
39
54
|
## Parallel Multitab Alignment
|
|
40
55
|
|
|
41
56
|
- Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
|
|
@@ -101,9 +116,10 @@ opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-de
|
|
|
101
116
|
For forms guarded by challenge providers:
|
|
102
117
|
|
|
103
118
|
1. Detect challenge widget/frame state.
|
|
104
|
-
2.
|
|
105
|
-
3.
|
|
106
|
-
4.
|
|
119
|
+
2. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot.
|
|
120
|
+
3. Otherwise mark a manual checkpoint in the run log.
|
|
121
|
+
4. Complete challenge manually or by approved test key in non-production.
|
|
122
|
+
5. Resume from fresh snapshot and continue validation.
|
|
107
123
|
|
|
108
124
|
Do not implement challenge bypass behavior.
|
|
109
125
|
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
## Challenge checkpoint workflow
|
|
32
32
|
|
|
33
33
|
1. Detect challenge state
|
|
34
|
-
2.
|
|
35
|
-
3.
|
|
36
|
-
4.
|
|
37
|
-
5.
|
|
34
|
+
2. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot
|
|
35
|
+
3. Otherwise pause and annotate a manual checkpoint
|
|
36
|
+
4. Resume after completion from a refreshed snapshot
|
|
37
|
+
5. Continue assertions from refreshed snapshot
|
|
38
|
+
6. Stop and escalate after repeated challenge loops
|
|
@@ -15,6 +15,16 @@ required=(
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
status=0
|
|
18
|
+
|
|
19
|
+
require_marker() {
|
|
20
|
+
local label="$1"
|
|
21
|
+
local output="$2"
|
|
22
|
+
local marker="$3"
|
|
23
|
+
if [[ "$output" != *"$marker"* ]]; then
|
|
24
|
+
echo "$label missing marker: $marker" >&2
|
|
25
|
+
status=1
|
|
26
|
+
fi
|
|
27
|
+
}
|
|
18
28
|
for rel in "${required[@]}"; do
|
|
19
29
|
if [[ ! -f "$root/$rel" ]]; then
|
|
20
30
|
echo "Missing required asset: $rel" >&2
|
|
@@ -42,6 +52,105 @@ for rel in assets/templates/validation-matrix.json assets/templates/challenge-de
|
|
|
42
52
|
fi
|
|
43
53
|
done
|
|
44
54
|
|
|
55
|
+
list_output="$("$root/scripts/run-form-workflow.sh" list)"
|
|
56
|
+
for workflow_name in \
|
|
57
|
+
discovery \
|
|
58
|
+
validation \
|
|
59
|
+
multi-step \
|
|
60
|
+
dynamic-required \
|
|
61
|
+
file-upload \
|
|
62
|
+
challenge-checkpoint
|
|
63
|
+
do
|
|
64
|
+
require_marker "workflow list" "$list_output" "$workflow_name"
|
|
65
|
+
done
|
|
66
|
+
|
|
67
|
+
validation_output="$("$root/scripts/run-form-workflow.sh" validation)"
|
|
68
|
+
require_marker "validation workflow" "$validation_output" "aria-invalid"
|
|
69
|
+
require_marker "validation workflow" "$validation_output" "opendevbrowser_dom_get_text"
|
|
70
|
+
|
|
71
|
+
multi_step_output="$("$root/scripts/run-form-workflow.sh" multi-step)"
|
|
72
|
+
require_marker "multi-step workflow" "$multi_step_output" "next-step-ref"
|
|
73
|
+
require_marker "multi-step workflow" "$multi_step_output" "state=\"visible\""
|
|
74
|
+
|
|
75
|
+
challenge_output="$("$root/scripts/run-form-workflow.sh" challenge-checkpoint)"
|
|
76
|
+
require_marker "challenge-checkpoint workflow" "$challenge_output" "pause automation"
|
|
77
|
+
require_marker "challenge-checkpoint workflow" "$challenge_output" "opendevbrowser_snapshot"
|
|
78
|
+
|
|
79
|
+
dynamic_required_output="$("$root/scripts/run-form-workflow.sh" dynamic-required)"
|
|
80
|
+
require_marker "dynamic-required workflow" "$dynamic_required_output" "toggle-ref"
|
|
81
|
+
require_marker "dynamic-required workflow" "$dynamic_required_output" "opendevbrowser_snapshot"
|
|
82
|
+
|
|
83
|
+
file_upload_output="$("$root/scripts/run-form-workflow.sh" file-upload)"
|
|
84
|
+
require_marker "file-upload workflow" "$file_upload_output" "file-input-ref"
|
|
85
|
+
require_marker "file-upload workflow" "$file_upload_output" "opendevbrowser_network_poll"
|
|
86
|
+
|
|
87
|
+
if ! node - "$root" <<'NODE'
|
|
88
|
+
const fs = require("node:fs");
|
|
89
|
+
const path = require("node:path");
|
|
90
|
+
|
|
91
|
+
const [root] = process.argv.slice(2);
|
|
92
|
+
const failures = [];
|
|
93
|
+
|
|
94
|
+
const validationMatrix = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/validation-matrix.json"), "utf8"));
|
|
95
|
+
const challengeTree = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/challenge-decision-tree.json"), "utf8"));
|
|
96
|
+
const multiStepState = JSON.parse(fs.readFileSync(path.join(root, "assets/templates/multi-step-state.json"), "utf8"));
|
|
97
|
+
|
|
98
|
+
if (!Array.isArray(validationMatrix.fields) || validationMatrix.fields.length === 0) {
|
|
99
|
+
failures.push("validation-matrix.json must declare at least one field.");
|
|
100
|
+
} else {
|
|
101
|
+
const firstField = validationMatrix.fields[0];
|
|
102
|
+
for (const testCase of ["empty", "whitespace", "out_of_range", "valid"]) {
|
|
103
|
+
if (!Array.isArray(firstField.cases) || !firstField.cases.includes(testCase)) {
|
|
104
|
+
failures.push(`validation-matrix.json missing field case: ${testCase}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
for (const marker of ["becomes_required_after_toggle", "hidden_field_not_submitted"]) {
|
|
109
|
+
if (!Array.isArray(validationMatrix.conditional_cases) || !validationMatrix.conditional_cases.includes(marker)) {
|
|
110
|
+
failures.push(`validation-matrix.json missing conditional case: ${marker}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
for (const marker of ["invalid_blocked", "valid_success"]) {
|
|
114
|
+
if (!Array.isArray(validationMatrix.submit_cases) || !validationMatrix.submit_cases.includes(marker)) {
|
|
115
|
+
failures.push(`validation-matrix.json missing submit case: ${marker}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (challengeTree.action !== "manual_checkpoint") {
|
|
120
|
+
failures.push("challenge-decision-tree.json must default to manual_checkpoint.");
|
|
121
|
+
}
|
|
122
|
+
if (challengeTree.max_challenge_retries !== 2) {
|
|
123
|
+
failures.push("challenge-decision-tree.json must cap retries at 2.");
|
|
124
|
+
}
|
|
125
|
+
for (const marker of ["challenge_cleared", "new_snapshot_taken"]) {
|
|
126
|
+
if (!Array.isArray(challengeTree.resume_conditions) || !challengeTree.resume_conditions.includes(marker)) {
|
|
127
|
+
failures.push(`challenge-decision-tree.json missing resume condition: ${marker}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
for (const key of ["flow", "step_index", "step_name", "completed_steps", "carried_state", "final_confirmation"]) {
|
|
132
|
+
if (!(key in multiStepState)) {
|
|
133
|
+
failures.push(`multi-step-state.json missing key: ${key}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (typeof multiStepState.final_confirmation?.seen !== "boolean") {
|
|
137
|
+
failures.push("multi-step-state.json must define final_confirmation.seen as a boolean.");
|
|
138
|
+
}
|
|
139
|
+
if (typeof multiStepState.final_confirmation?.reference_id !== "string") {
|
|
140
|
+
failures.push("multi-step-state.json must define final_confirmation.reference_id as a string.");
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (failures.length > 0) {
|
|
144
|
+
for (const failure of failures) {
|
|
145
|
+
console.error(failure);
|
|
146
|
+
}
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
NODE
|
|
150
|
+
then
|
|
151
|
+
status=1
|
|
152
|
+
fi
|
|
153
|
+
|
|
45
154
|
if [[ $status -ne 0 ]]; then
|
|
46
155
|
exit $status
|
|
47
156
|
fi
|
|
@@ -35,14 +35,29 @@ Use this skill for deterministic auth testing that handles MFA and anti-bot chec
|
|
|
35
35
|
./skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh challenge-checkpoint
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
## Supporting Surfaces
|
|
39
|
+
|
|
40
|
+
- Use browser replay (`screencast-start` / `screencast-stop`) when login timing, MFA transitions, or challenge loops need temporal evidence.
|
|
41
|
+
- Use desktop observation only for read-only evidence around native dialogs or sibling desktop surfaces; it stays core-owned and is not extension relay control.
|
|
42
|
+
- Use `--challenge-automation-mode off|browser|browser_with_helper` when workflow or macro execution needs bounded browser-scoped computer use; the helper is not a desktop agent.
|
|
43
|
+
|
|
38
44
|
## Core Rules
|
|
39
45
|
|
|
40
46
|
- Use snapshot refs, not ad-hoc selectors.
|
|
41
47
|
- Run one decision loop at a time: snapshot -> action -> snapshot.
|
|
48
|
+
- Use low-level pointer controls when a deterministic test gate or slider challenge requires gesture input, then re-snapshot before resuming auth steps.
|
|
42
49
|
- Never store credentials in skill files, logs, screenshots, or committed fixtures.
|
|
43
50
|
- Treat anti-bot challenges as checkpoints (manual solve or approved test keys), not bypass targets.
|
|
44
51
|
- Keep a bounded retry budget (max 2 automated retries) and honor `Retry-After` when present.
|
|
45
52
|
|
|
53
|
+
## Session Reuse by Mode
|
|
54
|
+
|
|
55
|
+
- `extension` reuses the attached live tab or profile state; it does not run system cookie bootstrap.
|
|
56
|
+
- `managed` attempts readable system Chrome-family cookie bootstrap before first navigation.
|
|
57
|
+
- `cdpConnect` attempts readable system Chrome-family cookie bootstrap before first navigation.
|
|
58
|
+
- `cookie-import` is the explicit add or override lane after session creation, not the automatic bootstrap path.
|
|
59
|
+
- Canonical direct-run release evidence policy lives in `../opendevbrowser-best-practices/SKILL.md`.
|
|
60
|
+
|
|
46
61
|
## Parallel Multitab Alignment
|
|
47
62
|
|
|
48
63
|
- Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
|
|
@@ -70,6 +85,7 @@ Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-i
|
|
|
70
85
|
- authenticated shell appears -> success validation
|
|
71
86
|
- MFA prompt appears -> continue MFA branch
|
|
72
87
|
- popup/new-tab SSO appears -> switch target and continue auth branch
|
|
88
|
+
- deterministic slider or pointer gate appears -> complete pointer workflow, then re-snapshot
|
|
73
89
|
- anti-bot challenge appears -> checkpoint branch
|
|
74
90
|
- invalid credentials or lockout message -> failure branch
|
|
75
91
|
|
|
@@ -90,8 +106,9 @@ Use this when CAPTCHA/turnstile/challenge pages appear.
|
|
|
90
106
|
|
|
91
107
|
1. Detect challenge UI from snapshot refs or page text.
|
|
92
108
|
2. Pause automation and mark checkpoint in run log.
|
|
93
|
-
3.
|
|
94
|
-
4.
|
|
109
|
+
3. If the environment exposes a deterministic test slider or pointer gate, use low-level pointer commands and re-snapshot before continuing.
|
|
110
|
+
4. Otherwise complete the challenge manually (or with provider-approved test key in non-production).
|
|
111
|
+
5. Resume from a fresh snapshot and continue auth validation.
|
|
95
112
|
|
|
96
113
|
Signals to monitor:
|
|
97
114
|
- challenge iframe/widget visible
|
|
@@ -124,6 +141,7 @@ Validate at least two independent signals:
|
|
|
124
141
|
- URL/route transition to authenticated area.
|
|
125
142
|
- Auth-only element visible (`opendevbrowser_is_visible`).
|
|
126
143
|
- Auth request success from `opendevbrowser_network_poll`.
|
|
144
|
+
- Invalid-credential rejection from `opendevbrowser_network_poll` is acceptable failure proof when UI copy is suppressed or delayed.
|
|
127
145
|
|
|
128
146
|
```text
|
|
129
147
|
opendevbrowser_network_poll sessionId="<session-id>" max=50
|
|
@@ -143,7 +161,7 @@ Close and relaunch, then confirm one of:
|
|
|
143
161
|
|
|
144
162
|
## Failure Modes
|
|
145
163
|
|
|
146
|
-
- Invalid credentials:
|
|
164
|
+
- Invalid credentials: prefer explicit field/banner errors, but accept network rejection evidence when UI copy is absent.
|
|
147
165
|
- Rate limit/lockout: stop retries, apply cooldown, rotate test account.
|
|
148
166
|
- Challenge loop: escalate as anti-bot pressure issue.
|
|
149
167
|
- MFA unavailable for test account: mark incomplete test prerequisite.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
1. Preflight snapshot
|
|
6
6
|
2. Type identifier/password
|
|
7
7
|
3. Submit
|
|
8
|
-
4. Validate URL + auth-only ref + network status
|
|
8
|
+
4. Validate URL + auth-only ref + network status, or accept invalid-credential rejection from the network log when UI error copy is absent
|
|
9
9
|
5. Re-snapshot before any follow-up action
|
|
10
10
|
|
|
11
11
|
## MFA workflow
|
|
@@ -27,9 +27,10 @@
|
|
|
27
27
|
|
|
28
28
|
1. Detect challenge state
|
|
29
29
|
2. Record checkpoint with timestamp and trigger
|
|
30
|
-
3.
|
|
31
|
-
4.
|
|
32
|
-
5.
|
|
30
|
+
3. If the environment exposes a deterministic slider/test gate, complete it with low-level pointer controls and re-snapshot
|
|
31
|
+
4. Otherwise pause automated actions for manual completion
|
|
32
|
+
5. Resume after challenge completion from fresh snapshot
|
|
33
|
+
6. If challenge repeats twice, stop and escalate as anti-bot pressure
|
|
33
34
|
|
|
34
35
|
## Lockout recovery workflow
|
|
35
36
|
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
"url_after": "",
|
|
5
5
|
"auth_element_ref": "",
|
|
6
6
|
"auth_element_visible": false,
|
|
7
|
+
"invalid_credentials_ui_seen": false,
|
|
8
|
+
"invalid_credentials_network_seen": false,
|
|
7
9
|
"network": {
|
|
8
10
|
"login_request_seen": false,
|
|
9
11
|
"status_codes": [],
|
|
@@ -11,6 +13,9 @@
|
|
|
11
13
|
},
|
|
12
14
|
"frames_seen": 0,
|
|
13
15
|
"popup_detected": false,
|
|
16
|
+
"pointer_gate_detected": false,
|
|
17
|
+
"pointer_gate_completed": false,
|
|
18
|
+
"pointer_gate_status": "",
|
|
14
19
|
"challenge_detected": false,
|
|
15
20
|
"challenge_type": "none",
|
|
16
21
|
"challenge_checkpoint_count": 0,
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
"expected_signals": [
|
|
14
14
|
"url_changed",
|
|
15
15
|
"auth_shell_visible",
|
|
16
|
-
"auth_network_success"
|
|
16
|
+
"auth_network_success",
|
|
17
|
+
"pointer_gate_complete_when_required"
|
|
17
18
|
],
|
|
18
19
|
"failure_signals": [
|
|
19
|
-
"
|
|
20
|
+
"invalid_credentials_ui_or_network",
|
|
20
21
|
"anti_bot_challenge",
|
|
21
22
|
"rate_limited",
|
|
22
23
|
"lockout"
|
|
@@ -13,6 +13,7 @@ Workflows:
|
|
|
13
13
|
mfa
|
|
14
14
|
sso-popup
|
|
15
15
|
challenge-checkpoint
|
|
16
|
+
pointer-checkpoint
|
|
16
17
|
challenge-loop-guard
|
|
17
18
|
lockout-recovery
|
|
18
19
|
session-persistence
|
|
@@ -62,7 +63,22 @@ FLOW
|
|
|
62
63
|
cat <<'FLOW'
|
|
63
64
|
# Detect challenge state, then pause automated actions.
|
|
64
65
|
opendevbrowser_snapshot sessionId="<session-id>" format="outline"
|
|
65
|
-
#
|
|
66
|
+
# If the environment exposes a deterministic slider/test gate, complete it with pointer controls, then re-snapshot.
|
|
67
|
+
# Otherwise manual checkpoint required: solve challenge with approved flow/test keys.
|
|
68
|
+
# Resume only after challenge is solved.
|
|
69
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
70
|
+
opendevbrowser_click sessionId="<session-id>" ref="<continue-ref>"
|
|
71
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
72
|
+
FLOW
|
|
73
|
+
;;
|
|
74
|
+
pointer-checkpoint)
|
|
75
|
+
cat <<'FLOW'
|
|
76
|
+
# Use only for deterministic test gates or slider controls that are part of the approved workflow.
|
|
77
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
78
|
+
opendevbrowser_pointer_move sessionId="<session-id>" x=<start-x> y=<start-y>
|
|
79
|
+
opendevbrowser_pointer_down sessionId="<session-id>" x=<start-x> y=<start-y> button="left"
|
|
80
|
+
opendevbrowser_pointer_drag sessionId="<session-id>" startX=<start-x> startY=<start-y> endX=<end-x> endY=<end-y> steps=12
|
|
81
|
+
opendevbrowser_pointer_up sessionId="<session-id>" x=<end-x> y=<end-y> button="left"
|
|
66
82
|
# Resume only after challenge is solved.
|
|
67
83
|
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
68
84
|
opendevbrowser_click sessionId="<session-id>" ref="<continue-ref>"
|