opendevbrowser 0.0.12 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +425 -42
- package/dist/annotate/direct-annotator.d.ts +22 -0
- package/dist/annotate/direct-annotator.d.ts.map +1 -0
- package/dist/annotate/output.d.ts +10 -0
- package/dist/annotate/output.d.ts.map +1 -0
- package/dist/browser/annotation-manager.d.ts +30 -0
- package/dist/browser/annotation-manager.d.ts.map +1 -0
- package/dist/browser/browser-manager.d.ts +397 -0
- package/dist/browser/browser-manager.d.ts.map +1 -0
- package/dist/browser/fingerprint/adapters.d.ts +26 -0
- package/dist/browser/fingerprint/adapters.d.ts.map +1 -0
- package/dist/browser/fingerprint/canary.d.ts +25 -0
- package/dist/browser/fingerprint/canary.d.ts.map +1 -0
- package/dist/browser/fingerprint/profiles.d.ts +16 -0
- package/dist/browser/fingerprint/profiles.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier1-coherence.d.ts +36 -0
- package/dist/browser/fingerprint/tier1-coherence.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier2-runtime.d.ts +40 -0
- package/dist/browser/fingerprint/tier2-runtime.d.ts.map +1 -0
- package/dist/browser/fingerprint/tier3-adaptive.d.ts +30 -0
- package/dist/browser/fingerprint/tier3-adaptive.d.ts.map +1 -0
- package/dist/browser/manager-types.d.ts +3 -0
- package/dist/browser/manager-types.d.ts.map +1 -0
- package/dist/browser/ops-browser-manager.d.ts +131 -0
- package/dist/browser/ops-browser-manager.d.ts.map +1 -0
- package/dist/browser/ops-client.d.ts +56 -0
- package/dist/browser/ops-client.d.ts.map +1 -0
- package/dist/browser/parallelism-governor.d.ts +31 -0
- package/dist/browser/parallelism-governor.d.ts.map +1 -0
- package/dist/browser/script-runner.d.ts +23 -0
- package/dist/browser/script-runner.d.ts.map +1 -0
- package/dist/browser/session-store.d.ts +63 -0
- package/dist/browser/session-store.d.ts.map +1 -0
- package/dist/browser/target-manager.d.ts +36 -0
- package/dist/browser/target-manager.d.ts.map +1 -0
- package/dist/cache/chrome-locator.d.ts +2 -0
- package/dist/cache/chrome-locator.d.ts.map +1 -0
- package/dist/cache/downloader.d.ts +6 -0
- package/dist/cache/downloader.d.ts.map +1 -0
- package/dist/cache/paths.d.ts +9 -0
- package/dist/cache/paths.d.ts.map +1 -0
- package/dist/chunk-7W3SPXIB.js +166 -0
- package/dist/chunk-7W3SPXIB.js.map +1 -0
- package/dist/chunk-ST7CO5FA.js +18668 -0
- package/dist/chunk-ST7CO5FA.js.map +1 -0
- package/dist/cli/args.d.ts +25 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/client.d.ts +2 -0
- package/dist/cli/client.d.ts.map +1 -0
- package/dist/cli/commands/annotate.d.ts +27 -0
- package/dist/cli/commands/annotate.d.ts.map +1 -0
- package/dist/cli/commands/artifacts.d.ts +24 -0
- package/dist/cli/commands/artifacts.d.ts.map +1 -0
- package/dist/cli/commands/daemon.d.ts +35 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/devtools/console-poll.d.ts +7 -0
- package/dist/cli/commands/devtools/console-poll.d.ts.map +1 -0
- package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts +20 -0
- package/dist/cli/commands/devtools/debug-trace-snapshot.d.ts.map +1 -0
- package/dist/cli/commands/devtools/network-poll.d.ts +7 -0
- package/dist/cli/commands/devtools/network-poll.d.ts.map +1 -0
- package/dist/cli/commands/devtools/perf.d.ts +7 -0
- package/dist/cli/commands/devtools/perf.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screenshot.d.ts +17 -0
- package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -0
- package/dist/cli/commands/dom/attr.d.ts +7 -0
- package/dist/cli/commands/dom/attr.d.ts.map +1 -0
- package/dist/cli/commands/dom/checked.d.ts +7 -0
- package/dist/cli/commands/dom/checked.d.ts.map +1 -0
- package/dist/cli/commands/dom/enabled.d.ts +7 -0
- package/dist/cli/commands/dom/enabled.d.ts.map +1 -0
- package/dist/cli/commands/dom/html.d.ts +7 -0
- package/dist/cli/commands/dom/html.d.ts.map +1 -0
- package/dist/cli/commands/dom/text.d.ts +7 -0
- package/dist/cli/commands/dom/text.d.ts.map +1 -0
- package/dist/cli/commands/dom/value.d.ts +7 -0
- package/dist/cli/commands/dom/value.d.ts.map +1 -0
- package/dist/cli/commands/dom/visible.d.ts +7 -0
- package/dist/cli/commands/dom/visible.d.ts.map +1 -0
- package/dist/cli/commands/export/clone-component.d.ts +7 -0
- package/dist/cli/commands/export/clone-component.d.ts.map +1 -0
- package/dist/cli/commands/export/clone-page.d.ts +7 -0
- package/dist/cli/commands/export/clone-page.d.ts.map +1 -0
- package/dist/cli/commands/interact/check.d.ts +7 -0
- package/dist/cli/commands/interact/check.d.ts.map +1 -0
- package/dist/cli/commands/interact/click.d.ts +7 -0
- package/dist/cli/commands/interact/click.d.ts.map +1 -0
- package/dist/cli/commands/interact/hover.d.ts +7 -0
- package/dist/cli/commands/interact/hover.d.ts.map +1 -0
- package/dist/cli/commands/interact/press.d.ts +7 -0
- package/dist/cli/commands/interact/press.d.ts.map +1 -0
- package/dist/cli/commands/interact/scroll-into-view.d.ts +7 -0
- package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -0
- package/dist/cli/commands/interact/scroll.d.ts +7 -0
- package/dist/cli/commands/interact/scroll.d.ts.map +1 -0
- package/dist/cli/commands/interact/select.d.ts +7 -0
- package/dist/cli/commands/interact/select.d.ts.map +1 -0
- package/dist/cli/commands/interact/type.d.ts +7 -0
- package/dist/cli/commands/interact/type.d.ts.map +1 -0
- package/dist/cli/commands/interact/uncheck.d.ts +7 -0
- package/dist/cli/commands/interact/uncheck.d.ts.map +1 -0
- package/dist/cli/commands/macro-resolve.d.ts +18 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -0
- package/dist/cli/commands/native.d.ts +82 -0
- package/dist/cli/commands/native.d.ts.map +1 -0
- package/dist/cli/commands/nav/goto.d.ts +7 -0
- package/dist/cli/commands/nav/goto.d.ts.map +1 -0
- package/dist/cli/commands/nav/snapshot.d.ts +7 -0
- package/dist/cli/commands/nav/snapshot.d.ts.map +1 -0
- package/dist/cli/commands/nav/wait.d.ts +7 -0
- package/dist/cli/commands/nav/wait.d.ts.map +1 -0
- package/dist/cli/commands/pages/close.d.ts +6 -0
- package/dist/cli/commands/pages/close.d.ts.map +1 -0
- package/dist/cli/commands/pages/list.d.ts +7 -0
- package/dist/cli/commands/pages/list.d.ts.map +1 -0
- package/dist/cli/commands/pages/open.d.ts +7 -0
- package/dist/cli/commands/pages/open.d.ts.map +1 -0
- package/dist/cli/commands/product-video.d.ts +25 -0
- package/dist/cli/commands/product-video.d.ts.map +1 -0
- package/dist/cli/commands/registry.d.ts +5 -0
- package/dist/cli/commands/registry.d.ts.map +1 -0
- package/dist/cli/commands/research.d.ts +27 -0
- package/dist/cli/commands/research.d.ts.map +1 -0
- package/dist/cli/commands/rpc.d.ts +28 -0
- package/dist/cli/commands/rpc.d.ts.map +1 -0
- package/dist/cli/commands/run.d.ts +17 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/serve.d.ts +59 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/session/connect.d.ts +9 -0
- package/dist/cli/commands/session/connect.d.ts.map +1 -0
- package/dist/cli/commands/session/cookie-import.d.ts +31 -0
- package/dist/cli/commands/session/cookie-import.d.ts.map +1 -0
- package/dist/cli/commands/session/cookie-list.d.ts +17 -0
- package/dist/cli/commands/session/cookie-list.d.ts.map +1 -0
- package/dist/cli/commands/session/disconnect.d.ts +6 -0
- package/dist/cli/commands/session/disconnect.d.ts.map +1 -0
- package/dist/cli/commands/session/launch.d.ts +29 -0
- package/dist/cli/commands/session/launch.d.ts.map +1 -0
- package/dist/cli/commands/session/status.d.ts +7 -0
- package/dist/cli/commands/session/status.d.ts.map +1 -0
- package/dist/cli/commands/shopping.d.ts +25 -0
- package/dist/cli/commands/shopping.d.ts.map +1 -0
- package/dist/cli/commands/status.d.ts +19 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/targets/close.d.ts +6 -0
- package/dist/cli/commands/targets/close.d.ts.map +1 -0
- package/dist/cli/commands/targets/list.d.ts +7 -0
- package/dist/cli/commands/targets/list.d.ts.map +1 -0
- package/dist/cli/commands/targets/new.d.ts +7 -0
- package/dist/cli/commands/targets/new.d.ts.map +1 -0
- package/dist/cli/commands/targets/use.d.ts +7 -0
- package/dist/cli/commands/targets/use.d.ts.map +1 -0
- package/dist/cli/commands/types.d.ts +13 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +14 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/update.d.ts +7 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/daemon-autostart.d.ts +46 -0
- package/dist/cli/daemon-autostart.d.ts.map +1 -0
- package/dist/cli/daemon-client.d.ts +33 -0
- package/dist/cli/daemon-client.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts +7 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -0
- package/dist/cli/daemon-state.d.ts +56 -0
- package/dist/cli/daemon-state.d.ts.map +1 -0
- package/dist/cli/daemon-status.d.ts +19 -0
- package/dist/cli/daemon-status.d.ts.map +1 -0
- package/dist/cli/daemon.d.ts +29 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/errors.d.ts +20 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/help.d.ts +28 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +4604 -769
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/global.d.ts +9 -0
- package/dist/cli/installers/global.d.ts.map +1 -0
- package/dist/cli/installers/local.d.ts +9 -0
- package/dist/cli/installers/local.d.ts.map +1 -0
- package/dist/cli/installers/skills.d.ts +19 -0
- package/dist/cli/installers/skills.d.ts.map +1 -0
- package/dist/cli/output.d.ts +7 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/remote-manager.d.ts +96 -0
- package/dist/cli/remote-manager.d.ts.map +1 -0
- package/dist/cli/remote-relay.d.ts +17 -0
- package/dist/cli/remote-relay.d.ts.map +1 -0
- package/dist/cli/templates/config.d.ts +7 -0
- package/dist/cli/templates/config.d.ts.map +1 -0
- package/dist/cli/utils/config.d.ts +20 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/http.d.ts +5 -0
- package/dist/cli/utils/http.d.ts.map +1 -0
- package/dist/cli/utils/parse.d.ts +8 -0
- package/dist/cli/utils/parse.d.ts.map +1 -0
- package/dist/cli/utils/skills.d.ts +12 -0
- package/dist/cli/utils/skills.d.ts.map +1 -0
- package/dist/config.d.ts +208 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/bootstrap.d.ts +3 -0
- package/dist/core/bootstrap.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/logging.d.ts +34 -0
- package/dist/core/logging.d.ts.map +1 -0
- package/dist/core/types.d.ts +34 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/devtools/console-tracker.d.ts +44 -0
- package/dist/devtools/console-tracker.d.ts.map +1 -0
- package/dist/devtools/exception-tracker.d.ts +42 -0
- package/dist/devtools/exception-tracker.d.ts.map +1 -0
- package/dist/devtools/network-tracker.d.ts +34 -0
- package/dist/devtools/network-tracker.d.ts.map +1 -0
- package/dist/export/css-extract.d.ts +5 -0
- package/dist/export/css-extract.d.ts.map +1 -0
- package/dist/export/dom-capture.d.ts +15 -0
- package/dist/export/dom-capture.d.ts.map +1 -0
- package/dist/export/react-emitter.d.ts +11 -0
- package/dist/export/react-emitter.d.ts.map +1 -0
- package/dist/extension-extractor.d.ts +3 -0
- package/dist/extension-extractor.d.ts.map +1 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1905 -262
- package/dist/index.js.map +1 -1
- package/dist/macros/execute.d.ts +44 -0
- package/dist/macros/execute.d.ts.map +1 -0
- package/dist/macros/index.d.ts +9 -0
- package/dist/macros/index.d.ts.map +1 -0
- package/dist/macros/packs/core.d.ts +3 -0
- package/dist/macros/packs/core.d.ts.map +1 -0
- package/dist/macros/registry.d.ts +48 -0
- package/dist/macros/registry.d.ts.map +1 -0
- package/dist/macros-NUBRM44Y.js +399 -0
- package/dist/macros-NUBRM44Y.js.map +1 -0
- package/dist/opendevbrowser.d.ts +3 -4
- package/dist/opendevbrowser.d.ts.map +1 -0
- package/dist/opendevbrowser.js +1905 -262
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/providers/adaptive-concurrency.d.ts +42 -0
- package/dist/providers/adaptive-concurrency.d.ts.map +1 -0
- package/dist/providers/artifacts.d.ts +34 -0
- package/dist/providers/artifacts.d.ts.map +1 -0
- package/dist/providers/blocker.d.ts +47 -0
- package/dist/providers/blocker.d.ts.map +1 -0
- package/dist/providers/community/index.d.ts +44 -0
- package/dist/providers/community/index.d.ts.map +1 -0
- package/dist/providers/enrichment.d.ts +33 -0
- package/dist/providers/enrichment.d.ts.map +1 -0
- package/dist/providers/errors.d.ts +41 -0
- package/dist/providers/errors.d.ts.map +1 -0
- package/dist/providers/index.d.ts +121 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/normalize.d.ts +39 -0
- package/dist/providers/normalize.d.ts.map +1 -0
- package/dist/providers/policy.d.ts +5 -0
- package/dist/providers/policy.d.ts.map +1 -0
- package/dist/providers/registry.d.ts +22 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/renderer.d.ts +49 -0
- package/dist/providers/renderer.d.ts.map +1 -0
- package/dist/providers/runtime-factory.d.ts +20 -0
- package/dist/providers/runtime-factory.d.ts.map +1 -0
- package/dist/providers/safety/prompt-guard.d.ts +34 -0
- package/dist/providers/safety/prompt-guard.d.ts.map +1 -0
- package/dist/providers/shared/anti-bot-policy.d.ts +51 -0
- package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -0
- package/dist/providers/shared/post-policy.d.ts +31 -0
- package/dist/providers/shared/post-policy.d.ts.map +1 -0
- package/dist/providers/shared/request-headers.d.ts +5 -0
- package/dist/providers/shared/request-headers.d.ts.map +1 -0
- package/dist/providers/shared/traversal-url.d.ts +2 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -0
- package/dist/providers/shopping/index.d.ts +63 -0
- package/dist/providers/shopping/index.d.ts.map +1 -0
- package/dist/providers/social/bluesky.d.ts +3 -0
- package/dist/providers/social/bluesky.d.ts.map +1 -0
- package/dist/providers/social/facebook.d.ts +3 -0
- package/dist/providers/social/facebook.d.ts.map +1 -0
- package/dist/providers/social/index.d.ts +31 -0
- package/dist/providers/social/index.d.ts.map +1 -0
- package/dist/providers/social/instagram.d.ts +3 -0
- package/dist/providers/social/instagram.d.ts.map +1 -0
- package/dist/providers/social/linkedin.d.ts +3 -0
- package/dist/providers/social/linkedin.d.ts.map +1 -0
- package/dist/providers/social/platform.d.ts +40 -0
- package/dist/providers/social/platform.d.ts.map +1 -0
- package/dist/providers/social/reddit.d.ts +3 -0
- package/dist/providers/social/reddit.d.ts.map +1 -0
- package/dist/providers/social/threads.d.ts +3 -0
- package/dist/providers/social/threads.d.ts.map +1 -0
- package/dist/providers/social/tiktok.d.ts +3 -0
- package/dist/providers/social/tiktok.d.ts.map +1 -0
- package/dist/providers/social/x.d.ts +3 -0
- package/dist/providers/social/x.d.ts.map +1 -0
- package/dist/providers/social/youtube-resolver.d.ts +78 -0
- package/dist/providers/social/youtube-resolver.d.ts.map +1 -0
- package/dist/providers/social/youtube.d.ts +34 -0
- package/dist/providers/social/youtube.d.ts.map +1 -0
- package/dist/providers/tier-router.d.ts +30 -0
- package/dist/providers/tier-router.d.ts.map +1 -0
- package/dist/providers/timebox.d.ts +20 -0
- package/dist/providers/timebox.d.ts.map +1 -0
- package/dist/providers/types.d.ts +344 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/web/crawl-worker.d.ts +36 -0
- package/dist/providers/web/crawl-worker.d.ts.map +1 -0
- package/dist/providers/web/crawler.d.ts +101 -0
- package/dist/providers/web/crawler.d.ts.map +1 -0
- package/dist/providers/web/extract.d.ts +11 -0
- package/dist/providers/web/extract.d.ts.map +1 -0
- package/dist/providers/web/index.d.ts +24 -0
- package/dist/providers/web/index.d.ts.map +1 -0
- package/dist/providers/web/policy.d.ts +14 -0
- package/dist/providers/web/policy.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts +67 -0
- package/dist/providers/workflows.d.ts.map +1 -0
- package/dist/relay/protocol.d.ts +317 -0
- package/dist/relay/protocol.d.ts.map +1 -0
- package/dist/relay/relay-endpoints.d.ts +16 -0
- package/dist/relay/relay-endpoints.d.ts.map +1 -0
- package/dist/relay/relay-server.d.ts +111 -0
- package/dist/relay/relay-server.d.ts.map +1 -0
- package/dist/relay/relay-types.d.ts +9 -0
- package/dist/relay/relay-types.d.ts.map +1 -0
- package/dist/skills/continuity-nudge.d.ts +12 -0
- package/dist/skills/continuity-nudge.d.ts.map +1 -0
- package/dist/skills/skill-loader.d.ts +20 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-nudge.d.ts +18 -0
- package/dist/skills/skill-nudge.d.ts.map +1 -0
- package/dist/skills/types.d.ts +12 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/snapshot/ops-snapshot.d.ts +16 -0
- package/dist/snapshot/ops-snapshot.d.ts.map +1 -0
- package/dist/snapshot/refs.d.ts +23 -0
- package/dist/snapshot/refs.d.ts.map +1 -0
- package/dist/snapshot/snapshotter.d.ts +27 -0
- package/dist/snapshot/snapshotter.d.ts.map +1 -0
- package/dist/tools/annotate.d.ts +4 -0
- package/dist/tools/annotate.d.ts.map +1 -0
- package/dist/tools/check.d.ts +4 -0
- package/dist/tools/check.d.ts.map +1 -0
- package/dist/tools/click.d.ts +4 -0
- package/dist/tools/click.d.ts.map +1 -0
- package/dist/tools/clone_component.d.ts +4 -0
- package/dist/tools/clone_component.d.ts.map +1 -0
- package/dist/tools/clone_page.d.ts +4 -0
- package/dist/tools/clone_page.d.ts.map +1 -0
- package/dist/tools/close.d.ts +4 -0
- package/dist/tools/close.d.ts.map +1 -0
- package/dist/tools/connect.d.ts +4 -0
- package/dist/tools/connect.d.ts.map +1 -0
- package/dist/tools/console_poll.d.ts +4 -0
- package/dist/tools/console_poll.d.ts.map +1 -0
- package/dist/tools/cookie_import.d.ts +25 -0
- package/dist/tools/cookie_import.d.ts.map +1 -0
- package/dist/tools/cookie_list.d.ts +9 -0
- package/dist/tools/cookie_list.d.ts.map +1 -0
- package/dist/tools/debug_trace_snapshot.d.ts +4 -0
- package/dist/tools/debug_trace_snapshot.d.ts.map +1 -0
- package/dist/tools/deps.d.ts +26 -0
- package/dist/tools/deps.d.ts.map +1 -0
- package/dist/tools/disconnect.d.ts +4 -0
- package/dist/tools/disconnect.d.ts.map +1 -0
- package/dist/tools/dom_get_html.d.ts +4 -0
- package/dist/tools/dom_get_html.d.ts.map +1 -0
- package/dist/tools/dom_get_text.d.ts +4 -0
- package/dist/tools/dom_get_text.d.ts.map +1 -0
- package/dist/tools/get_attr.d.ts +4 -0
- package/dist/tools/get_attr.d.ts.map +1 -0
- package/dist/tools/get_value.d.ts +4 -0
- package/dist/tools/get_value.d.ts.map +1 -0
- package/dist/tools/goto.d.ts +4 -0
- package/dist/tools/goto.d.ts.map +1 -0
- package/dist/tools/hover.d.ts +4 -0
- package/dist/tools/hover.d.ts.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/is_checked.d.ts +4 -0
- package/dist/tools/is_checked.d.ts.map +1 -0
- package/dist/tools/is_enabled.d.ts +4 -0
- package/dist/tools/is_enabled.d.ts.map +1 -0
- package/dist/tools/is_visible.d.ts +4 -0
- package/dist/tools/is_visible.d.ts.map +1 -0
- package/dist/tools/launch.d.ts +4 -0
- package/dist/tools/launch.d.ts.map +1 -0
- package/dist/tools/list.d.ts +4 -0
- package/dist/tools/list.d.ts.map +1 -0
- package/dist/tools/macro_resolve.d.ts +25 -0
- package/dist/tools/macro_resolve.d.ts.map +1 -0
- package/dist/tools/network_poll.d.ts +4 -0
- package/dist/tools/network_poll.d.ts.map +1 -0
- package/dist/tools/page.d.ts +4 -0
- package/dist/tools/page.d.ts.map +1 -0
- package/dist/tools/perf.d.ts +4 -0
- package/dist/tools/perf.d.ts.map +1 -0
- package/dist/tools/press.d.ts +4 -0
- package/dist/tools/press.d.ts.map +1 -0
- package/dist/tools/product_video_run.d.ts +4 -0
- package/dist/tools/product_video_run.d.ts.map +1 -0
- package/dist/tools/prompting_guide.d.ts +4 -0
- package/dist/tools/prompting_guide.d.ts.map +1 -0
- package/dist/tools/research_run.d.ts +4 -0
- package/dist/tools/research_run.d.ts.map +1 -0
- package/dist/tools/response.d.ts +16 -0
- package/dist/tools/response.d.ts.map +1 -0
- package/dist/tools/run.d.ts +4 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/tools/screenshot.d.ts +4 -0
- package/dist/tools/screenshot.d.ts.map +1 -0
- package/dist/tools/scroll.d.ts +4 -0
- package/dist/tools/scroll.d.ts.map +1 -0
- package/dist/tools/scroll_into_view.d.ts +4 -0
- package/dist/tools/scroll_into_view.d.ts.map +1 -0
- package/dist/tools/select.d.ts +4 -0
- package/dist/tools/select.d.ts.map +1 -0
- package/dist/tools/shopping_run.d.ts +4 -0
- package/dist/tools/shopping_run.d.ts.map +1 -0
- package/dist/tools/skill_list.d.ts +4 -0
- package/dist/tools/skill_list.d.ts.map +1 -0
- package/dist/tools/skill_load.d.ts +4 -0
- package/dist/tools/skill_load.d.ts.map +1 -0
- package/dist/tools/snapshot.d.ts +4 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/status.d.ts +4 -0
- package/dist/tools/status.d.ts.map +1 -0
- package/dist/tools/target_close.d.ts +4 -0
- package/dist/tools/target_close.d.ts.map +1 -0
- package/dist/tools/target_new.d.ts +4 -0
- package/dist/tools/target_new.d.ts.map +1 -0
- package/dist/tools/target_use.d.ts +4 -0
- package/dist/tools/target_use.d.ts.map +1 -0
- package/dist/tools/targets_list.d.ts +4 -0
- package/dist/tools/targets_list.d.ts.map +1 -0
- package/dist/tools/type.d.ts +4 -0
- package/dist/tools/type.d.ts.map +1 -0
- package/dist/tools/uncheck.d.ts +4 -0
- package/dist/tools/uncheck.d.ts.map +1 -0
- package/dist/tools/wait.d.ts +4 -0
- package/dist/tools/wait.d.ts.map +1 -0
- package/dist/tools/workflow-runtime.d.ts +4 -0
- package/dist/tools/workflow-runtime.d.ts.map +1 -0
- package/dist/utils/crypto.d.ts +2 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/endpoint-validation.d.ts +2 -0
- package/dist/utils/endpoint-validation.d.ts.map +1 -0
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/hub-enabled.d.ts +3 -0
- package/dist/utils/hub-enabled.d.ts.map +1 -0
- package/extension/dist/annotate-content.css +237 -0
- package/extension/dist/annotate-content.js +934 -0
- package/extension/dist/background.js +1203 -35
- package/extension/dist/logging.js +50 -0
- package/extension/dist/ops/dom-bridge.js +355 -0
- package/extension/dist/ops/ops-runtime.js +1751 -0
- package/extension/dist/ops/ops-session-store.js +203 -0
- package/extension/dist/ops/parallelism-governor.js +117 -0
- package/extension/dist/ops/redaction.js +52 -0
- package/extension/dist/ops/snapshot-builder.js +4 -0
- package/extension/dist/ops/snapshot-shared.js +236 -0
- package/extension/dist/popup.js +370 -25
- package/extension/dist/relay-settings.js +1 -0
- package/extension/dist/services/CDPRouter.js +567 -104
- package/extension/dist/services/ConnectionManager.js +469 -60
- package/extension/dist/services/NativePortManager.js +182 -0
- package/extension/dist/services/RelayClient.js +227 -26
- package/extension/dist/services/TabManager.js +81 -0
- package/extension/dist/services/TargetSessionMap.js +146 -0
- package/extension/dist/services/cdp-router-commands.js +203 -0
- package/extension/dist/services/url-restrictions.js +41 -0
- package/extension/dist/types.js +3 -1
- package/extension/icons/icon128.png +0 -0
- package/extension/icons/icon16.png +0 -0
- package/extension/icons/icon32.png +0 -0
- package/extension/icons/icon48.png +0 -0
- package/extension/manifest.json +17 -3
- package/extension/popup.html +144 -0
- package/package.json +26 -17
- package/scripts/native/host.cjs +230 -0
- package/scripts/native/install.ps1 +73 -0
- package/scripts/native/install.sh +66 -0
- package/scripts/native/uninstall.ps1 +25 -0
- package/scripts/native/uninstall.sh +26 -0
- package/skills/AGENTS.md +47 -66
- package/skills/opendevbrowser-best-practices/SKILL.md +196 -49
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +44 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +95 -0
- package/skills/opendevbrowser-best-practices/artifacts/debug-trace-playbook.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/fingerprint-tiers.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/macro-workflows.md +43 -0
- package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +36 -0
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +89 -0
- package/skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json +11 -0
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +56 -0
- package/skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json +9 -0
- package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +79 -0
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +24 -0
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +144 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -0
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +93 -0
- package/skills/opendevbrowser-continuity-ledger/SKILL.md +67 -23
- package/skills/opendevbrowser-data-extraction/SKILL.md +126 -0
- package/skills/opendevbrowser-data-extraction/artifacts/extraction-workflows.md +31 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/compliance-checklist.md +7 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/extraction-schema.json +17 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/pagination-state.json +11 -0
- package/skills/opendevbrowser-data-extraction/assets/templates/quality-gates.json +10 -0
- package/skills/opendevbrowser-data-extraction/examples/sample-schema.json +19 -0
- package/skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh +83 -0
- package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +49 -0
- package/skills/opendevbrowser-form-testing/SKILL.md +143 -0
- package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +37 -0
- package/skills/opendevbrowser-form-testing/assets/templates/a11y-assertions.md +7 -0
- package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +16 -0
- package/skills/opendevbrowser-form-testing/assets/templates/multi-step-state.json +11 -0
- package/skills/opendevbrowser-form-testing/assets/templates/validation-matrix.json +24 -0
- package/skills/opendevbrowser-form-testing/examples/sample-validation-matrix.json +29 -0
- package/skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh +82 -0
- package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +49 -0
- package/skills/opendevbrowser-login-automation/SKILL.md +159 -0
- package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +39 -0
- package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +21 -0
- package/skills/opendevbrowser-login-automation/assets/templates/challenge-checkpoint.md +10 -0
- package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +26 -0
- package/skills/opendevbrowser-login-automation/examples/sample-auth-signals.json +14 -0
- package/skills/opendevbrowser-login-automation/scripts/record-auth-signals.sh +18 -0
- package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +99 -0
- package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +50 -0
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +98 -0
- package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +23 -0
- package/skills/opendevbrowser-product-presentation-asset/artifacts/ugc-creative-guide.md +21 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/claims-evidence-map.md +5 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/copy.md +5 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/features.md +4 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/manifest.schema.json +14 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +7 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/ugc-concepts.md +17 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/user-actions.md +7 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +18 -0
- package/skills/opendevbrowser-product-presentation-asset/examples/sample-input.json +6 -0
- package/skills/opendevbrowser-product-presentation-asset/examples/sample-manifest.json +18 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +9 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +14 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +9 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +96 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +56 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +43 -0
- package/skills/opendevbrowser-research/SKILL.md +73 -0
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +29 -0
- package/skills/opendevbrowser-research/assets/templates/compact.md +7 -0
- package/skills/opendevbrowser-research/assets/templates/context.json +18 -0
- package/skills/opendevbrowser-research/assets/templates/report.md +9 -0
- package/skills/opendevbrowser-research/examples/sample-input.json +6 -0
- package/skills/opendevbrowser-research/examples/sample-output.md +4 -0
- package/skills/opendevbrowser-research/scripts/render-output.sh +12 -0
- package/skills/opendevbrowser-research/scripts/run-research.sh +23 -0
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +48 -0
- package/skills/opendevbrowser-research/scripts/write-artifacts.sh +29 -0
- package/skills/opendevbrowser-shopping/SKILL.md +118 -0
- package/skills/opendevbrowser-shopping/artifacts/deal-hunting-workflows.md +37 -0
- package/skills/opendevbrowser-shopping/assets/templates/deal-thresholds.json +8 -0
- package/skills/opendevbrowser-shopping/assets/templates/deals-context.json +9 -0
- package/skills/opendevbrowser-shopping/assets/templates/deals-table.md +4 -0
- package/skills/opendevbrowser-shopping/assets/templates/market-analysis.json +30 -0
- package/skills/opendevbrowser-shopping/examples/sample-deals.md +4 -0
- package/skills/opendevbrowser-shopping/examples/sample-query.json +5 -0
- package/skills/opendevbrowser-shopping/scripts/analyze-market.sh +307 -0
- package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +28 -0
- package/skills/opendevbrowser-shopping/scripts/render-deals.sh +13 -0
- package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +32 -0
- package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +19 -0
- package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +53 -0
- package/dist/chunk-WTFSMBVH.js +0 -2815
- package/dist/chunk-WTFSMBVH.js.map +0 -1
- package/extension/dist/popup.jsx +0 -150
- package/skills/data-extraction/SKILL.md +0 -136
- package/skills/form-testing/SKILL.md +0 -113
- package/skills/login-automation/SKILL.md +0 -98
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opendevbrowser-data-extraction
|
|
3
|
+
description: This skill should be used when the user asks to "extract data from a page", "scrape tables", "collect paginated results", "parse list/card content", or "export structured web data" with OpenDevBrowser.
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Data Extraction Skill
|
|
8
|
+
|
|
9
|
+
Use this skill to extract structured, auditable datasets from dynamic pages with compliance-aware workflows.
|
|
10
|
+
|
|
11
|
+
## Pack Contents
|
|
12
|
+
|
|
13
|
+
- `artifacts/extraction-workflows.md`
|
|
14
|
+
- `assets/templates/extraction-schema.json`
|
|
15
|
+
- `assets/templates/pagination-state.json`
|
|
16
|
+
- `assets/templates/quality-gates.json`
|
|
17
|
+
- `assets/templates/compliance-checklist.md`
|
|
18
|
+
- `scripts/run-extraction-workflow.sh`
|
|
19
|
+
- `scripts/validate-skill-assets.sh`
|
|
20
|
+
- Shared robustness matrix: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
|
|
21
|
+
|
|
22
|
+
## Fast Start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
./skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh
|
|
26
|
+
./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh list
|
|
27
|
+
./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh pagination
|
|
28
|
+
./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh infinite-scroll
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Core Rules
|
|
32
|
+
|
|
33
|
+
- Define schema before extraction.
|
|
34
|
+
- Track provenance for each record (`source_url`, `provider`, `captured_at`, `page`).
|
|
35
|
+
- Prefer embedded structured data (JSON-LD/microdata) where available.
|
|
36
|
+
- Stop on sustained anti-bot pressure (repeated 403/429/challenge loops).
|
|
37
|
+
- Honor `Retry-After` and preserve checkpoint state before retrying pagination.
|
|
38
|
+
|
|
39
|
+
## Parallel Multitab Alignment
|
|
40
|
+
|
|
41
|
+
- Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
|
|
42
|
+
- Run extraction acceptance on `managed`, `extension`, and `cdpConnect` before claiming mode parity.
|
|
43
|
+
- Keep one session per worker; avoid interleaving `target-use` streams inside a single session.
|
|
44
|
+
|
|
45
|
+
## Robustness Coverage (Known-Issue Matrix)
|
|
46
|
+
|
|
47
|
+
Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
|
|
48
|
+
|
|
49
|
+
- `ISSUE-01`: stale refs after dynamic content updates
|
|
50
|
+
- `ISSUE-06`: 429/backoff and retry budgeting
|
|
51
|
+
- `ISSUE-08`: blocked/restricted origins and policy checks
|
|
52
|
+
- `ISSUE-09`: pagination drift, duplicate accumulation, terminal detection
|
|
53
|
+
- `ISSUE-10`: locale/currency parsing consistency
|
|
54
|
+
|
|
55
|
+
## Extraction Planning
|
|
56
|
+
|
|
57
|
+
1. Define required fields and null policy.
|
|
58
|
+
2. Snapshot and map refs to schema.
|
|
59
|
+
3. Choose pagination strategy.
|
|
60
|
+
4. Apply quality gates each page.
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Structured Data First
|
|
67
|
+
|
|
68
|
+
Attempt extraction in this order:
|
|
69
|
+
1. JSON-LD product/article blocks
|
|
70
|
+
2. semantic table/list/card DOM
|
|
71
|
+
3. fallback text parsing
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
opendevbrowser_dom_get_text sessionId="<session-id>" ref="<json-ld-ref>"
|
|
75
|
+
opendevbrowser_dom_get_html sessionId="<session-id>" ref="<table-ref>"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Pagination Patterns
|
|
79
|
+
|
|
80
|
+
### Numbered/Next pagination
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
opendevbrowser_click sessionId="<session-id>" ref="<next-ref>"
|
|
84
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
85
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Infinite scroll
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
opendevbrowser_scroll sessionId="<session-id>" dy=1000
|
|
92
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Load more
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
opendevbrowser_click sessionId="<session-id>" ref="<load-more-ref>"
|
|
99
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Quality Gates
|
|
103
|
+
|
|
104
|
+
Apply per page:
|
|
105
|
+
- dedupe by stable key (URL or canonical ID)
|
|
106
|
+
- null-rate check for required fields
|
|
107
|
+
- count delta check (new records must increase)
|
|
108
|
+
- consistency check for currency/units
|
|
109
|
+
- max consecutive challenge/429 loops before stop
|
|
110
|
+
|
|
111
|
+
Use `assets/templates/quality-gates.json`.
|
|
112
|
+
|
|
113
|
+
## Compliance and Safety
|
|
114
|
+
|
|
115
|
+
- Respect robots and site terms.
|
|
116
|
+
- Use pacing; do not flood endpoints.
|
|
117
|
+
- Treat robots as policy guidance, not auth.
|
|
118
|
+
- Stop or back off on repeated 429/403 and challenges.
|
|
119
|
+
|
|
120
|
+
## References
|
|
121
|
+
|
|
122
|
+
- RFC 9309 (robots protocol): https://www.rfc-editor.org/rfc/rfc9309
|
|
123
|
+
- Google robots docs: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
|
|
124
|
+
- Schema.org Offer: https://schema.org/Offer
|
|
125
|
+
- Google Product structured data: https://developers.google.com/search/docs/appearance/structured-data/product-snippet
|
|
126
|
+
- Playwright best practices: https://playwright.dev/docs/best-practices
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Extraction Workflows
|
|
2
|
+
|
|
3
|
+
## List/Card workflow
|
|
4
|
+
|
|
5
|
+
1. Snapshot actionables
|
|
6
|
+
2. Map repeating nodes
|
|
7
|
+
3. Extract title/price/link fields
|
|
8
|
+
4. Normalize and dedupe records
|
|
9
|
+
5. Record parse confidence and currency normalization status
|
|
10
|
+
|
|
11
|
+
## Table workflow
|
|
12
|
+
|
|
13
|
+
1. Wait for table visibility
|
|
14
|
+
2. Extract table HTML
|
|
15
|
+
3. Parse rows/cells in host process
|
|
16
|
+
4. Validate schema completeness
|
|
17
|
+
|
|
18
|
+
## Pagination workflow
|
|
19
|
+
|
|
20
|
+
1. Extract current page
|
|
21
|
+
2. Advance page
|
|
22
|
+
3. Wait + snapshot
|
|
23
|
+
4. Repeat until terminal condition
|
|
24
|
+
5. Persist checkpoint state every page
|
|
25
|
+
|
|
26
|
+
## Anti-bot pressure workflow
|
|
27
|
+
|
|
28
|
+
1. Detect repeated 403/429/challenge
|
|
29
|
+
2. Parse and honor `Retry-After` if present
|
|
30
|
+
3. Slow down / cooldown and resume from last checkpoint
|
|
31
|
+
4. Stop and report if pressure persists after bounded retries
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"max_required_null_rate": 0.05,
|
|
3
|
+
"max_duplicate_rate": 0.02,
|
|
4
|
+
"require_positive_page_delta": true,
|
|
5
|
+
"max_consecutive_empty_pages": 2,
|
|
6
|
+
"max_consecutive_challenge_loops": 2,
|
|
7
|
+
"max_retries_per_page": 2,
|
|
8
|
+
"respect_retry_after": true,
|
|
9
|
+
"stop_on_repeated_anti_bot_signals": true
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dataset": "shopping_offers",
|
|
3
|
+
"required_fields": [
|
|
4
|
+
"title",
|
|
5
|
+
"url",
|
|
6
|
+
"price"
|
|
7
|
+
],
|
|
8
|
+
"optional_fields": [
|
|
9
|
+
"rating",
|
|
10
|
+
"reviews_count",
|
|
11
|
+
"availability"
|
|
12
|
+
],
|
|
13
|
+
"field_types": {
|
|
14
|
+
"title": "string",
|
|
15
|
+
"url": "string",
|
|
16
|
+
"price": "number",
|
|
17
|
+
"rating": "number"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
print_help() {
|
|
5
|
+
cat <<'HELP'
|
|
6
|
+
Data extraction workflow router
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
./skills/opendevbrowser-data-extraction/scripts/run-extraction-workflow.sh <workflow>
|
|
10
|
+
|
|
11
|
+
Workflows:
|
|
12
|
+
list
|
|
13
|
+
table
|
|
14
|
+
pagination
|
|
15
|
+
infinite-scroll
|
|
16
|
+
load-more
|
|
17
|
+
anti-bot-pressure
|
|
18
|
+
checkpoint-resume
|
|
19
|
+
list-workflows
|
|
20
|
+
HELP
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
workflow="${1:-list-workflows}"
|
|
24
|
+
|
|
25
|
+
case "$workflow" in
|
|
26
|
+
list-workflows)
|
|
27
|
+
print_help
|
|
28
|
+
;;
|
|
29
|
+
list)
|
|
30
|
+
cat <<'FLOW'
|
|
31
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
32
|
+
opendevbrowser_dom_get_text sessionId="<session-id>" ref="<item-title-ref>"
|
|
33
|
+
opendevbrowser_get_attr sessionId="<session-id>" ref="<item-link-ref>" name="href"
|
|
34
|
+
FLOW
|
|
35
|
+
;;
|
|
36
|
+
table)
|
|
37
|
+
cat <<'FLOW'
|
|
38
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
39
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
40
|
+
opendevbrowser_dom_get_html sessionId="<session-id>" ref="<table-ref>"
|
|
41
|
+
FLOW
|
|
42
|
+
;;
|
|
43
|
+
pagination)
|
|
44
|
+
cat <<'FLOW'
|
|
45
|
+
opendevbrowser_click sessionId="<session-id>" ref="<next-ref>"
|
|
46
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
47
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
48
|
+
FLOW
|
|
49
|
+
;;
|
|
50
|
+
infinite-scroll)
|
|
51
|
+
cat <<'FLOW'
|
|
52
|
+
opendevbrowser_scroll sessionId="<session-id>" dy=1000
|
|
53
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
54
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
55
|
+
FLOW
|
|
56
|
+
;;
|
|
57
|
+
load-more)
|
|
58
|
+
cat <<'FLOW'
|
|
59
|
+
opendevbrowser_click sessionId="<session-id>" ref="<load-more-ref>"
|
|
60
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
61
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
62
|
+
FLOW
|
|
63
|
+
;;
|
|
64
|
+
anti-bot-pressure)
|
|
65
|
+
cat <<'FLOW'
|
|
66
|
+
opendevbrowser_network_poll sessionId="<session-id>" max=100
|
|
67
|
+
# Stop or back off on repeated 403/429/challenge signals; honor Retry-After.
|
|
68
|
+
FLOW
|
|
69
|
+
;;
|
|
70
|
+
checkpoint-resume)
|
|
71
|
+
cat <<'FLOW'
|
|
72
|
+
# Resume from stored pagination checkpoint token/page index.
|
|
73
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="outline"
|
|
74
|
+
opendevbrowser_wait sessionId="<session-id>" until="networkidle"
|
|
75
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
76
|
+
FLOW
|
|
77
|
+
;;
|
|
78
|
+
*)
|
|
79
|
+
echo "Unknown workflow: $workflow" >&2
|
|
80
|
+
print_help
|
|
81
|
+
exit 2
|
|
82
|
+
;;
|
|
83
|
+
esac
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
skill_file="$root/SKILL.md"
|
|
6
|
+
|
|
7
|
+
required=(
|
|
8
|
+
"artifacts/extraction-workflows.md"
|
|
9
|
+
"assets/templates/extraction-schema.json"
|
|
10
|
+
"assets/templates/pagination-state.json"
|
|
11
|
+
"assets/templates/quality-gates.json"
|
|
12
|
+
"assets/templates/compliance-checklist.md"
|
|
13
|
+
"scripts/run-extraction-workflow.sh"
|
|
14
|
+
"scripts/validate-skill-assets.sh"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
status=0
|
|
18
|
+
for rel in "${required[@]}"; do
|
|
19
|
+
if [[ ! -f "$root/$rel" ]]; then
|
|
20
|
+
echo "Missing required asset: $rel" >&2
|
|
21
|
+
status=1
|
|
22
|
+
fi
|
|
23
|
+
if ! grep -Fq "$rel" "$skill_file"; then
|
|
24
|
+
echo "SKILL.md missing reference: $rel" >&2
|
|
25
|
+
status=1
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
for rel in scripts/run-extraction-workflow.sh scripts/validate-skill-assets.sh; do
|
|
30
|
+
if [[ -f "$root/$rel" && ! -x "$root/$rel" ]]; then
|
|
31
|
+
echo "Script is not executable: $rel" >&2
|
|
32
|
+
status=1
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
for rel in assets/templates/extraction-schema.json assets/templates/pagination-state.json assets/templates/quality-gates.json; do
|
|
37
|
+
if [[ -f "$root/$rel" ]]; then
|
|
38
|
+
if ! node -e 'const fs=require("fs"); JSON.parse(fs.readFileSync(process.argv[1], "utf8"));' "$root/$rel" >/dev/null 2>&1; then
|
|
39
|
+
echo "Invalid JSON template: $rel" >&2
|
|
40
|
+
status=1
|
|
41
|
+
fi
|
|
42
|
+
fi
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
if [[ $status -ne 0 ]]; then
|
|
46
|
+
exit $status
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
echo "Data extraction skill assets validated."
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opendevbrowser-form-testing
|
|
3
|
+
description: This skill should be used when the user asks to "test a form", "verify validation", "check submission behavior", "test multi-step forms", or "debug form errors" with OpenDevBrowser.
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Form Testing Skill
|
|
8
|
+
|
|
9
|
+
Use this skill for robust form automation across dynamic, multi-step, challenge-protected, and accessibility-critical flows.
|
|
10
|
+
|
|
11
|
+
## Pack Contents
|
|
12
|
+
|
|
13
|
+
- `artifacts/form-workflows.md`
|
|
14
|
+
- `assets/templates/validation-matrix.json`
|
|
15
|
+
- `assets/templates/challenge-decision-tree.json`
|
|
16
|
+
- `assets/templates/a11y-assertions.md`
|
|
17
|
+
- `assets/templates/multi-step-state.json`
|
|
18
|
+
- `scripts/run-form-workflow.sh`
|
|
19
|
+
- `scripts/validate-skill-assets.sh`
|
|
20
|
+
- Shared robustness matrix: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
|
|
21
|
+
|
|
22
|
+
## Fast Start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh
|
|
26
|
+
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh validation
|
|
27
|
+
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh multi-step
|
|
28
|
+
./skills/opendevbrowser-form-testing/scripts/run-form-workflow.sh challenge-checkpoint
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Core Rules
|
|
32
|
+
|
|
33
|
+
- Snapshot first, then act.
|
|
34
|
+
- Keep one field mutation per decision loop in failure analysis.
|
|
35
|
+
- Re-snapshot after each invalid submit to avoid stale refs.
|
|
36
|
+
- Verify both UX and network behavior for each submission branch.
|
|
37
|
+
- Keep challenge retries bounded and honor `Retry-After` when 429 pressure appears.
|
|
38
|
+
|
|
39
|
+
## Parallel Multitab Alignment
|
|
40
|
+
|
|
41
|
+
- Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
|
|
42
|
+
- Validate form workflows in `managed`, `extension`, and `cdpConnect` paths before parity sign-off.
|
|
43
|
+
- Keep one session per worker and avoid alternating `target-use` inside one command stream.
|
|
44
|
+
|
|
45
|
+
## Robustness Coverage (Known-Issue Matrix)
|
|
46
|
+
|
|
47
|
+
Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md`
|
|
48
|
+
|
|
49
|
+
- `ISSUE-01`: stale refs after dynamic validation rerenders
|
|
50
|
+
- `ISSUE-02`: iframe challenge or embedded payment/auth forms
|
|
51
|
+
- `ISSUE-05`: anti-bot checkpoint loops on submit
|
|
52
|
+
- `ISSUE-06`: rate-limit/backoff behavior
|
|
53
|
+
- `ISSUE-08`: restricted origin or unsupported test surface
|
|
54
|
+
|
|
55
|
+
## Form Coverage Matrix
|
|
56
|
+
|
|
57
|
+
Cover at least:
|
|
58
|
+
- required/optional fields
|
|
59
|
+
- format/pattern constraints
|
|
60
|
+
- numeric and length boundaries
|
|
61
|
+
- dependent and conditional sections
|
|
62
|
+
- disabled/enabled transitions
|
|
63
|
+
- server-side rejection paths
|
|
64
|
+
|
|
65
|
+
Use the matrix template in `assets/templates/validation-matrix.json`.
|
|
66
|
+
|
|
67
|
+
| Validation area | Minimal assertion | Evidence capture |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| Required vs optional | Empty required field blocks submit; optional field allows submit | `snapshot`, inline error text, submit request status |
|
|
70
|
+
| Format and pattern | Invalid format shows field error and keeps form invalid | `dom_get_text`, `get_attr aria-invalid`, request payload |
|
|
71
|
+
| Numeric and length bounds | Min/max boundaries are enforced consistently client+server | field value checks, server response body |
|
|
72
|
+
| Conditional sections | Dependent fields appear/disappear with correct state reset | before/after snapshots, visibility checks |
|
|
73
|
+
| Disabled/enabled transitions | Submit only enables when constraints are satisfied | `is_enabled`, transition snapshots |
|
|
74
|
+
| Server-side rejection | Backend validation errors map to correct field/global errors | `network_poll`, rendered error copy |
|
|
75
|
+
|
|
76
|
+
## Canonical Validation Flow
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="actionables"
|
|
80
|
+
opendevbrowser_type sessionId="<session-id>" ref="<field-ref>" text=""
|
|
81
|
+
opendevbrowser_click sessionId="<session-id>" ref="<submit-ref>"
|
|
82
|
+
opendevbrowser_snapshot sessionId="<session-id>" format="outline"
|
|
83
|
+
opendevbrowser_dom_get_text sessionId="<session-id>" ref="<error-ref>"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Accessibility Assertions
|
|
87
|
+
|
|
88
|
+
Validate error handling semantics:
|
|
89
|
+
- error text bound to invalid field
|
|
90
|
+
- `aria-invalid="true"` when invalid
|
|
91
|
+
- keyboard focus on first invalid field when applicable
|
|
92
|
+
- labels/instructions remain programmatically associated
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-invalid"
|
|
96
|
+
opendevbrowser_get_attr sessionId="<session-id>" ref="<field-ref>" name="aria-describedby"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Anti-Bot and Challenge Branches
|
|
100
|
+
|
|
101
|
+
For forms guarded by challenge providers:
|
|
102
|
+
|
|
103
|
+
1. Detect challenge widget/frame state.
|
|
104
|
+
2. Mark manual checkpoint in run log.
|
|
105
|
+
3. Complete challenge manually or by approved test key in non-production.
|
|
106
|
+
4. Resume from fresh snapshot and continue validation.
|
|
107
|
+
|
|
108
|
+
Do not implement challenge bypass behavior.
|
|
109
|
+
|
|
110
|
+
Loop guardrail:
|
|
111
|
+
- Stop after 2 repeated challenge checkpoints without forward progress.
|
|
112
|
+
- Capture network evidence and escalate as blocker.
|
|
113
|
+
|
|
114
|
+
## Multi-Step and Conditional Forms
|
|
115
|
+
|
|
116
|
+
For wizard flows:
|
|
117
|
+
1. validate current step
|
|
118
|
+
2. submit and wait for next-step container ref
|
|
119
|
+
3. assert state carryover from prior step
|
|
120
|
+
4. finalize and validate confirmation payload
|
|
121
|
+
|
|
122
|
+
Use `assets/templates/multi-step-state.json` to track progression.
|
|
123
|
+
|
|
124
|
+
## Network Correlation
|
|
125
|
+
|
|
126
|
+
Always poll and inspect submit requests:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
opendevbrowser_network_poll sessionId="<session-id>" max=50
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Flag mismatch cases:
|
|
133
|
+
- UI shows success but network fails
|
|
134
|
+
- UI hides server validation errors
|
|
135
|
+
- repeated 429/403 challenge pressure on submit endpoint
|
|
136
|
+
|
|
137
|
+
## References
|
|
138
|
+
|
|
139
|
+
- Playwright best practices: https://playwright.dev/docs/best-practices
|
|
140
|
+
- WCAG 2.2 (Input assistance + accessible authentication): https://www.w3.org/TR/WCAG22/
|
|
141
|
+
- Cloudflare Turnstile testing: https://developers.cloudflare.com/turnstile/tutorials/testing/
|
|
142
|
+
- reCAPTCHA v2 test keys: https://developers.google.com/recaptcha/docs/faq
|
|
143
|
+
- hCaptcha test keys: https://docs.hcaptcha.com/
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Form Workflows
|
|
2
|
+
|
|
3
|
+
## Validation workflow
|
|
4
|
+
|
|
5
|
+
1. Discover refs
|
|
6
|
+
2. Run negative matrix cases
|
|
7
|
+
3. Assert field-level and summary errors
|
|
8
|
+
4. Run positive submission path
|
|
9
|
+
5. Re-snapshot after each submit branch
|
|
10
|
+
|
|
11
|
+
## Multi-step workflow
|
|
12
|
+
|
|
13
|
+
1. Validate each step in isolation
|
|
14
|
+
2. Preserve and verify carried values
|
|
15
|
+
3. Validate final confirmation state and IDs
|
|
16
|
+
|
|
17
|
+
## Dynamic requirement workflow
|
|
18
|
+
|
|
19
|
+
1. Trigger conditional sections (toggles/selectors)
|
|
20
|
+
2. Re-snapshot and discover newly required fields
|
|
21
|
+
3. Validate requiredness transitions and submit gating
|
|
22
|
+
4. Verify hidden fields are not submitted unexpectedly
|
|
23
|
+
|
|
24
|
+
## File upload workflow
|
|
25
|
+
|
|
26
|
+
1. Validate accepted type/size constraints
|
|
27
|
+
2. Validate invalid file rejection path
|
|
28
|
+
3. Validate success path and server response correlation
|
|
29
|
+
4. Confirm upload state survives step transitions
|
|
30
|
+
|
|
31
|
+
## Challenge checkpoint workflow
|
|
32
|
+
|
|
33
|
+
1. Detect challenge state
|
|
34
|
+
2. Pause and annotate checkpoint
|
|
35
|
+
3. Resume after manual completion
|
|
36
|
+
4. Continue assertions from refreshed snapshot
|
|
37
|
+
5. Stop and escalate after repeated challenge loops
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Accessibility Assertions
|
|
2
|
+
|
|
3
|
+
- Field has associated label
|
|
4
|
+
- Error message is specific and linked (`aria-describedby`)
|
|
5
|
+
- Invalid state uses `aria-invalid="true"`
|
|
6
|
+
- Focus moves to first invalid field after submit
|
|
7
|
+
- Keyboard-only path can complete correction and submit
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"challenge_detected": false,
|
|
3
|
+
"provider": "unknown",
|
|
4
|
+
"issue_ids": [
|
|
5
|
+
"ISSUE-02",
|
|
6
|
+
"ISSUE-05",
|
|
7
|
+
"ISSUE-06"
|
|
8
|
+
],
|
|
9
|
+
"action": "manual_checkpoint",
|
|
10
|
+
"max_challenge_retries": 2,
|
|
11
|
+
"retry_after_seconds": 0,
|
|
12
|
+
"resume_conditions": [
|
|
13
|
+
"challenge_cleared",
|
|
14
|
+
"new_snapshot_taken"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"form": "",
|
|
3
|
+
"fields": [
|
|
4
|
+
{
|
|
5
|
+
"name": "",
|
|
6
|
+
"type": "text",
|
|
7
|
+
"required": true,
|
|
8
|
+
"cases": [
|
|
9
|
+
"empty",
|
|
10
|
+
"whitespace",
|
|
11
|
+
"out_of_range",
|
|
12
|
+
"valid"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"conditional_cases": [
|
|
17
|
+
"becomes_required_after_toggle",
|
|
18
|
+
"hidden_field_not_submitted"
|
|
19
|
+
],
|
|
20
|
+
"submit_cases": [
|
|
21
|
+
"invalid_blocked",
|
|
22
|
+
"valid_success"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"form": "checkout",
|
|
3
|
+
"fields": [
|
|
4
|
+
{
|
|
5
|
+
"name": "email",
|
|
6
|
+
"type": "email",
|
|
7
|
+
"required": true,
|
|
8
|
+
"cases": [
|
|
9
|
+
"empty",
|
|
10
|
+
"invalid_format",
|
|
11
|
+
"valid"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "postal_code",
|
|
16
|
+
"type": "text",
|
|
17
|
+
"required": true,
|
|
18
|
+
"cases": [
|
|
19
|
+
"too_short",
|
|
20
|
+
"invalid_charset",
|
|
21
|
+
"valid"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"submit_cases": [
|
|
26
|
+
"invalid_blocked",
|
|
27
|
+
"valid_success"
|
|
28
|
+
]
|
|
29
|
+
}
|