opendevbrowser 0.0.28 → 0.0.29
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 +2 -2
- package/dist/accessibility-snapshot-PA6NWNS7.js +39 -0
- package/dist/accessibility-snapshot-PA6NWNS7.js.map +1 -0
- package/dist/active-window-YNYTIPZN.js +37 -0
- package/dist/active-window-YNYTIPZN.js.map +1 -0
- package/dist/annotate-STYHXZYJ.js +205 -0
- package/dist/annotate-STYHXZYJ.js.map +1 -0
- package/dist/artifacts-KJ6RNDO2.js +120 -0
- package/dist/artifacts-KJ6RNDO2.js.map +1 -0
- package/dist/attr-GHFZZ4SA.js +84 -0
- package/dist/attr-GHFZZ4SA.js.map +1 -0
- package/dist/browser/ops-client.d.ts +1 -0
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/canvas-54FBOEGP.js +309 -0
- package/dist/canvas-54FBOEGP.js.map +1 -0
- package/dist/capture-desktop-SNABC24E.js +38 -0
- package/dist/capture-desktop-SNABC24E.js.map +1 -0
- package/dist/capture-window-UJSB5AMP.js +40 -0
- package/dist/capture-window-UJSB5AMP.js.map +1 -0
- package/dist/check-ST5UQ2F5.js +71 -0
- package/dist/check-ST5UQ2F5.js.map +1 -0
- package/dist/checked-IEMWI5CU.js +71 -0
- package/dist/checked-IEMWI5CU.js.map +1 -0
- package/dist/chunk-2CG4SW3E.js +64 -0
- package/dist/chunk-2CG4SW3E.js.map +1 -0
- package/dist/chunk-2SIMIPLY.js +67 -0
- package/dist/chunk-2SIMIPLY.js.map +1 -0
- package/dist/chunk-37VSRUW4.js +141 -0
- package/dist/chunk-37VSRUW4.js.map +1 -0
- package/dist/chunk-5SWZDVOW.js +144 -0
- package/dist/chunk-5SWZDVOW.js.map +1 -0
- package/dist/chunk-6PVZ2ABC.js +429 -0
- package/dist/chunk-6PVZ2ABC.js.map +1 -0
- package/dist/chunk-7GVOUZMQ.js +64 -0
- package/dist/chunk-7GVOUZMQ.js.map +1 -0
- package/dist/chunk-7THCPS52.js +84 -0
- package/dist/chunk-7THCPS52.js.map +1 -0
- package/dist/chunk-ASMHEEKY.js +10 -0
- package/dist/chunk-ASMHEEKY.js.map +1 -0
- package/dist/chunk-DBF5OKH3.js +111 -0
- package/dist/chunk-DBF5OKH3.js.map +1 -0
- package/dist/chunk-DW4TX7MU.js +54 -0
- package/dist/chunk-DW4TX7MU.js.map +1 -0
- package/dist/chunk-IPE7TF2P.js +54 -0
- package/dist/chunk-IPE7TF2P.js.map +1 -0
- package/dist/chunk-IQTJHXZJ.js +126 -0
- package/dist/chunk-IQTJHXZJ.js.map +1 -0
- package/dist/chunk-J47N77VG.js +2969 -0
- package/dist/chunk-J47N77VG.js.map +1 -0
- package/dist/chunk-JZXD6FWR.js +25 -0
- package/dist/chunk-JZXD6FWR.js.map +1 -0
- package/dist/{chunk-QVWOPIZJ.js → chunk-KDSNXS6N.js} +75 -149
- package/dist/chunk-KDSNXS6N.js.map +1 -0
- package/dist/chunk-KZ2IXVQT.js +219 -0
- package/dist/chunk-KZ2IXVQT.js.map +1 -0
- package/dist/chunk-LBPELU7L.js +3649 -0
- package/dist/chunk-LBPELU7L.js.map +1 -0
- package/dist/chunk-MX3NFLCE.js +940 -0
- package/dist/chunk-MX3NFLCE.js.map +1 -0
- package/dist/chunk-N44UXKIB.js +26 -0
- package/dist/chunk-N44UXKIB.js.map +1 -0
- package/dist/chunk-OW5HMYMI.js +19 -0
- package/dist/chunk-OW5HMYMI.js.map +1 -0
- package/dist/chunk-OYNLAZQU.js +838 -0
- package/dist/chunk-OYNLAZQU.js.map +1 -0
- package/dist/chunk-PDPJN2OP.js +17 -0
- package/dist/chunk-PDPJN2OP.js.map +1 -0
- package/dist/chunk-RCZZGGJS.js +226 -0
- package/dist/chunk-RCZZGGJS.js.map +1 -0
- package/dist/chunk-RJNI3BHT.js +1 -0
- package/dist/chunk-RPXWUCQQ.js +112 -0
- package/dist/chunk-RPXWUCQQ.js.map +1 -0
- package/dist/chunk-S5KZQJJI.js +107 -0
- package/dist/chunk-S5KZQJJI.js.map +1 -0
- package/dist/{chunk-T3VVHJTK.js → chunk-S6S2UP6U.js} +1074 -1459
- package/dist/chunk-S6S2UP6U.js.map +1 -0
- package/dist/{chunk-I5ZCOZZV.js → chunk-SXAGSEKZ.js} +1202 -9561
- package/dist/chunk-SXAGSEKZ.js.map +1 -0
- package/dist/chunk-T4GMCW6Z.js +46 -0
- package/dist/chunk-T4GMCW6Z.js.map +1 -0
- package/dist/chunk-WHQZBUNY.js +982 -0
- package/dist/chunk-WHQZBUNY.js.map +1 -0
- package/dist/chunk-WOXBLP7V.js +610 -0
- package/dist/chunk-WOXBLP7V.js.map +1 -0
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/macro-resolve.d.ts +4 -1
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/workflow-output.d.ts +2 -0
- package/dist/cli/commands/workflow-output.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/index.js +204 -8123
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -1
- package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
- package/dist/cli/remote-relay.d.ts.map +1 -1
- package/dist/click-TENZA3Y6.js +81 -0
- package/dist/click-TENZA3Y6.js.map +1 -0
- package/dist/clone-component-STH5AR6M.js +82 -0
- package/dist/clone-component-STH5AR6M.js.map +1 -0
- package/dist/clone-page-BSTWAPAJ.js +69 -0
- package/dist/clone-page-BSTWAPAJ.js.map +1 -0
- package/dist/close-CEMMAAM7.js +63 -0
- package/dist/close-CEMMAAM7.js.map +1 -0
- package/dist/close-QCWUNRAI.js +63 -0
- package/dist/close-QCWUNRAI.js.map +1 -0
- package/dist/connect-J3RVSEZF.js +107 -0
- package/dist/connect-J3RVSEZF.js.map +1 -0
- package/dist/console-poll-HL7BVIVX.js +76 -0
- package/dist/console-poll-HL7BVIVX.js.map +1 -0
- package/dist/cookie-import-WMUCIIHN.js +177 -0
- package/dist/cookie-import-WMUCIIHN.js.map +1 -0
- package/dist/cookie-list-PB2N4RPH.js +117 -0
- package/dist/cookie-list-PB2N4RPH.js.map +1 -0
- package/dist/daemon-5KSVMGN4.js +194 -0
- package/dist/daemon-5KSVMGN4.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/debug-trace-snapshot-RK7KDXA5.js +136 -0
- package/dist/debug-trace-snapshot-RK7KDXA5.js.map +1 -0
- package/dist/dialog-P6P4U7XE.js +75 -0
- package/dist/dialog-P6P4U7XE.js.map +1 -0
- package/dist/disconnect-32F7IDIP.js +58 -0
- package/dist/disconnect-32F7IDIP.js.map +1 -0
- package/dist/enabled-A6C6ZM2O.js +71 -0
- package/dist/enabled-A6C6ZM2O.js.map +1 -0
- package/dist/extension-extractor-GKWSFHPN.js +11 -0
- package/dist/extension-extractor-GKWSFHPN.js.map +1 -0
- package/dist/global-D6WLWBXA.js +56 -0
- package/dist/global-D6WLWBXA.js.map +1 -0
- package/dist/goto-ULTSABDM.js +98 -0
- package/dist/goto-ULTSABDM.js.map +1 -0
- package/dist/help-EKKKEDL5.js +491 -0
- package/dist/help-EKKKEDL5.js.map +1 -0
- package/dist/hover-UF2ZUMTQ.js +71 -0
- package/dist/hover-UF2ZUMTQ.js.map +1 -0
- package/dist/html-B6TX7GK7.js +84 -0
- package/dist/html-B6TX7GK7.js.map +1 -0
- package/dist/index.js +68 -34
- package/dist/index.js.map +1 -1
- package/dist/inspector-6S5FKUZQ.js +62 -0
- package/dist/inspector-6S5FKUZQ.js.map +1 -0
- package/dist/inspector-audit-ARGEGOS7.js +84 -0
- package/dist/inspector-audit-ARGEGOS7.js.map +1 -0
- package/dist/inspector-plan-CSG5HZOC.js +69 -0
- package/dist/inspector-plan-CSG5HZOC.js.map +1 -0
- package/dist/inspiredesign-7VRMMZN4.js +234 -0
- package/dist/inspiredesign-7VRMMZN4.js.map +1 -0
- package/dist/install-autostart-output-5DOMKCQL.js +41 -0
- package/dist/install-autostart-output-5DOMKCQL.js.map +1 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js +73 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js.map +1 -0
- package/dist/launch-REYCIR3Z.js +225 -0
- package/dist/launch-REYCIR3Z.js.map +1 -0
- package/dist/list-NPRXRQY2.js +51 -0
- package/dist/list-NPRXRQY2.js.map +1 -0
- package/dist/list-STYD2ZWA.js +54 -0
- package/dist/list-STYD2ZWA.js.map +1 -0
- package/dist/local-HXJLUUNT.js +54 -0
- package/dist/local-HXJLUUNT.js.map +1 -0
- package/dist/macro-resolve-ZIJZ65QI.js +253 -0
- package/dist/macro-resolve-ZIJZ65QI.js.map +1 -0
- package/dist/macros/execute-runtime.d.ts +3 -1
- package/dist/macros/execute-runtime.d.ts.map +1 -1
- package/dist/macros/execute.d.ts +2 -0
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/native-UPLVQ2SG.js +22 -0
- package/dist/native-UPLVQ2SG.js.map +1 -0
- package/dist/network-poll-HLDOSC72.js +76 -0
- package/dist/network-poll-HLDOSC72.js.map +1 -0
- package/dist/new-HXLLN6UT.js +69 -0
- package/dist/new-HXLLN6UT.js.map +1 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
- package/dist/open-KDR25LQZ.js +81 -0
- package/dist/open-KDR25LQZ.js.map +1 -0
- package/dist/opendevbrowser.js +68 -34
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/perf-EM6SWFJ6.js +58 -0
- package/dist/perf-EM6SWFJ6.js.map +1 -0
- package/dist/pointer-down-ZYWRZNCH.js +55 -0
- package/dist/pointer-down-ZYWRZNCH.js.map +1 -0
- package/dist/pointer-drag-LVEAVJO4.js +54 -0
- package/dist/pointer-drag-LVEAVJO4.js.map +1 -0
- package/dist/pointer-move-7SRKUS66.js +52 -0
- package/dist/pointer-move-7SRKUS66.js.map +1 -0
- package/dist/pointer-up-KLDBSK37.js +55 -0
- package/dist/pointer-up-KLDBSK37.js.map +1 -0
- package/dist/press-UIIXFTD7.js +83 -0
- package/dist/press-UIIXFTD7.js.map +1 -0
- package/dist/product-video-PYOXJVAI.js +235 -0
- package/dist/product-video-PYOXJVAI.js.map +1 -0
- package/dist/providers/artifacts.d.ts +0 -2
- package/dist/providers/artifacts.d.ts.map +1 -1
- package/dist/providers/blocker.d.ts.map +1 -1
- package/dist/providers/bounded-map.d.ts +2 -0
- package/dist/providers/bounded-map.d.ts.map +1 -0
- package/dist/providers/community/index.d.ts.map +1 -1
- package/dist/providers/constraint.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +1 -1
- package/dist/providers/research-compiler.d.ts.map +1 -1
- package/dist/providers/research-executor.d.ts.map +1 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/shared/traversal-url.d.ts +3 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +4 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-QF2RFB4J.js → providers-4YY2BLXG.js} +19 -14
- package/dist/providers-4YY2BLXG.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +2 -2
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +2 -2
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/relay/protocol.d.ts +3 -1
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +6 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/research-CKXMJ2DK.js +295 -0
- package/dist/research-CKXMJ2DK.js.map +1 -0
- package/dist/review-7HWJPZOD.js +48 -0
- package/dist/review-7HWJPZOD.js.map +1 -0
- package/dist/review-desktop-2IBJHFB5.js +54 -0
- package/dist/review-desktop-2IBJHFB5.js.map +1 -0
- package/dist/rpc-3HGIEJUO.js +159 -0
- package/dist/rpc-3HGIEJUO.js.map +1 -0
- package/dist/run-ADRYI3MS.js +180 -0
- package/dist/run-ADRYI3MS.js.map +1 -0
- package/dist/screencast-start-DTLUHD5H.js +67 -0
- package/dist/screencast-start-DTLUHD5H.js.map +1 -0
- package/dist/screencast-stop-54C5LRSS.js +59 -0
- package/dist/screencast-stop-54C5LRSS.js.map +1 -0
- package/dist/screenshot-HOAKR7P7.js +68 -0
- package/dist/screenshot-HOAKR7P7.js.map +1 -0
- package/dist/scroll-IAOO5COY.js +84 -0
- package/dist/scroll-IAOO5COY.js.map +1 -0
- package/dist/scroll-into-view-RKWSLAPH.js +71 -0
- package/dist/scroll-into-view-RKWSLAPH.js.map +1 -0
- package/dist/select-IGD3T6X4.js +86 -0
- package/dist/select-IGD3T6X4.js.map +1 -0
- package/dist/serve-7X4INUCU.js +498 -0
- package/dist/serve-7X4INUCU.js.map +1 -0
- package/dist/shopping-FC6DRW76.js +273 -0
- package/dist/shopping-FC6DRW76.js.map +1 -0
- package/dist/skill-lifecycle-5UAZGKSN.js +89 -0
- package/dist/skill-lifecycle-5UAZGKSN.js.map +1 -0
- package/dist/skills-NSXDX6YM.js +26 -0
- package/dist/skills-NSXDX6YM.js.map +1 -0
- package/dist/snapshot-X22GG324.js +113 -0
- package/dist/snapshot-X22GG324.js.map +1 -0
- package/dist/status-SP55LMNW.js +132 -0
- package/dist/status-SP55LMNW.js.map +1 -0
- package/dist/status-VH2WXIDG.js +35 -0
- package/dist/status-VH2WXIDG.js.map +1 -0
- package/dist/status-capabilities-YBERLRRA.js +57 -0
- package/dist/status-capabilities-YBERLRRA.js.map +1 -0
- package/dist/text-6TB5WNLI.js +84 -0
- package/dist/text-6TB5WNLI.js.map +1 -0
- package/dist/tools/macro_resolve.d.ts.map +1 -1
- package/dist/type-3UI3TQH3.js +94 -0
- package/dist/type-3UI3TQH3.js.map +1 -0
- package/dist/uncheck-5L3D2D4U.js +71 -0
- package/dist/uncheck-5L3D2D4U.js.map +1 -0
- package/dist/uninstall-KYKGJAX7.js +91 -0
- package/dist/uninstall-KYKGJAX7.js.map +1 -0
- package/dist/update-SMXPYGXS.js +305 -0
- package/dist/update-SMXPYGXS.js.map +1 -0
- package/dist/update-skill-modes-BVX7IVMW.js +38 -0
- package/dist/update-skill-modes-BVX7IVMW.js.map +1 -0
- package/dist/upload-YG4J2EMI.js +56 -0
- package/dist/upload-YG4J2EMI.js.map +1 -0
- package/dist/use-V3LGFP3K.js +63 -0
- package/dist/use-V3LGFP3K.js.map +1 -0
- package/dist/value-3247D57X.js +71 -0
- package/dist/value-3247D57X.js.map +1 -0
- package/dist/visible-A7HEV36U.js +71 -0
- package/dist/visible-A7HEV36U.js.map +1 -0
- package/dist/wait-UZPP4Y4R.js +109 -0
- package/dist/wait-UZPP4Y4R.js.map +1 -0
- package/dist/windows-76TR3AIP.js +37 -0
- package/dist/windows-76TR3AIP.js.map +1 -0
- package/extension/dist/background.js +99 -22
- package/extension/dist/ops/ops-runtime.js +85 -7
- package/extension/dist/ops/ops-session-store.js +3 -0
- package/extension/dist/ops/target-session-coordinator.js +3 -0
- package/extension/dist/services/CDPRouter.js +9 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +8 -6
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
- package/skills/opendevbrowser-research/SKILL.md +64 -12
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
- package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
- package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
- package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
- package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
- package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
- package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
- package/dist/chunk-I5ZCOZZV.js.map +0 -1
- package/dist/chunk-QVWOPIZJ.js.map +0 -1
- package/dist/chunk-T3VVHJTK.js.map +0 -1
- /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opendevbrowser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.29",
|
|
4
4
|
"description": "Browser automation runtime with snapshot-refs-actions, browser replay screencasts, public read-only desktop observation, and browser-scoped computer-use orchestration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -100,7 +100,7 @@ Load this section directly with:
|
|
|
100
100
|
opendevbrowser_skill_load opendevbrowser-best-practices "validated capability lanes"
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
Current
|
|
103
|
+
Current validated lanes:
|
|
104
104
|
|
|
105
105
|
1. Public-first YouTube transcript retrieval.
|
|
106
106
|
|
|
@@ -113,16 +113,18 @@ Rules:
|
|
|
113
113
|
- browser-assisted transcript fallback is opt-in only
|
|
114
114
|
- if browser fallback is enabled, use an isolated automation profile instead of a daily logged-in Google profile
|
|
115
115
|
|
|
116
|
-
2.
|
|
116
|
+
2. Evidence-gated research primitive with explicit public source families.
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
|
-
npx opendevbrowser research run --topic "Chrome extension debugging workflows" --days 30 --
|
|
119
|
+
npx opendevbrowser research run --topic "Chrome extension debugging workflows" --days 30 --sources web,community --browser-mode managed --mode json --output-format json
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
Rules:
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
123
|
+
- load `opendevbrowser-research` before research tasks so planning, evidence review, confidence, and limitations stay skill-guided
|
|
124
|
+
- treat `research run` as provider-constrained and low-level; inspect `summary.md`, `report.md`, `records.json`, `context.json`, `meta.json`, and `bundle-manifest.json` before publishing claims
|
|
125
|
+
- use `--source-selection` only to explain selector semantics; use explicit `--sources web,community` for public topical examples
|
|
126
|
+
- add shopping only with `--source-selection shopping` or explicit `--sources ...shopping...` when the task is deliberately commercial
|
|
127
|
+
- in the current contract, `auto` and `all` both resolve to `web`, `community`, and `social`, but neither value guarantees reliability
|
|
126
128
|
|
|
127
129
|
3. Deterministic shopping reruns with explicit providers.
|
|
128
130
|
|
|
@@ -13,7 +13,7 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the audit evide
|
|
|
13
13
|
| `opendevbrowser-form-testing` | `workflow` | `./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh` | snapshot -> type/click -> validation loop, multi-step forms, challenge checkpoints, network correlation | `node scripts/cli-smoke-test.mjs` plus `node scripts/login-fixture-live-probe.mjs` for invalid-submit, MFA, and persistence branches | extension unavailable at start if extension mode is audited separately |
|
|
14
14
|
| `opendevbrowser-login-automation` | `workflow` | `./skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh` | login branching, invalid credential handling, MFA step-up, session validation | `node scripts/login-fixture-live-probe.mjs` | none; proof lane is repo-local |
|
|
15
15
|
| `opendevbrowser-product-presentation-asset` | `workflow` | `./skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh` | `product-video run`, asset-pack assembly, screenshots, evidence mapping | `node scripts/product-video-fixture-live-probe.mjs` | none; proof lane is repo-local |
|
|
16
|
-
| `opendevbrowser-research` | `workflow` | `./skills/opendevbrowser-research/scripts/validate-skill-assets.sh` | `research run`, timebox resolution, multi-source artifact generation | `opendevbrowser research run --topic "<topic>" --
|
|
16
|
+
| `opendevbrowser-research` | `workflow` | `./skills/opendevbrowser-research/scripts/validate-skill-assets.sh` | `research run`, timebox resolution, multi-source artifact generation | `opendevbrowser research run --topic "<topic>" --sources web,community --mode json` via `scripts/skill-runtime-audit.mjs` | auth walls, rate limits, upstream source failure |
|
|
17
17
|
| `opendevbrowser-shopping` | `workflow` | `./skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh` | `shopping run`, offer normalization, market analysis, direct provider workflows | `node scripts/provider-direct-runs.mjs` | auth walls, anti-bot challenges, rate limits, upstream outage |
|
|
18
18
|
|
|
19
19
|
## Shared runtime families
|
|
@@ -188,8 +188,9 @@ EOF
|
|
|
188
188
|
# Public-first YouTube transcript probe
|
|
189
189
|
node $TRANSCRIPT_PROBE_PATH --url "https://www.youtube.com/watch?v=aircAruvnKk" --youtube-mode auto --out artifacts/capability-fix/youtube-transcript-auto.json
|
|
190
190
|
|
|
191
|
-
#
|
|
192
|
-
|
|
191
|
+
# Evidence-gated research primitive with explicit public source families
|
|
192
|
+
# Load opendevbrowser-research first, then inspect records.json, context.json, meta.json, and report.md before publishing claims.
|
|
193
|
+
$CLI_PREFIX research run --topic "Chrome extension debugging workflows" --days 30 --sources web,community --mode json --output-format json
|
|
193
194
|
|
|
194
195
|
# Deterministic shopping reruns with explicit providers
|
|
195
196
|
$CLI_PREFIX shopping run --query "wireless ergonomic mouse" --providers shopping/bestbuy,shopping/ebay --budget 150 --browser-mode managed --mode json --output-format json
|
|
@@ -118,7 +118,29 @@ if (domain === "research" && command === "run") {
|
|
|
118
118
|
);
|
|
119
119
|
fs.writeFileSync(
|
|
120
120
|
path.join(bundleDir, "report.md"),
|
|
121
|
-
|
|
121
|
+
[
|
|
122
|
+
"# Research Report",
|
|
123
|
+
"",
|
|
124
|
+
`- Topic: ${topic}`,
|
|
125
|
+
`- Days: ${days}`,
|
|
126
|
+
`- Source selection: ${sourceSelection}`,
|
|
127
|
+
`- Sources: ${sources}`,
|
|
128
|
+
"",
|
|
129
|
+
"## Search Direction",
|
|
130
|
+
"Fixture provider pass suggested destination follow-up.",
|
|
131
|
+
"",
|
|
132
|
+
"## Candidate Triage",
|
|
133
|
+
"Accepted fixture destination and rejected shell candidates.",
|
|
134
|
+
"",
|
|
135
|
+
"## Rejected Candidates",
|
|
136
|
+
"Rejected privacy, login, and search shell examples.",
|
|
137
|
+
"",
|
|
138
|
+
"## Deep Dives",
|
|
139
|
+
"Opened the fixture destination page.",
|
|
140
|
+
"",
|
|
141
|
+
"## Synthesis Feedback",
|
|
142
|
+
"Remaining gap is independent corroboration."
|
|
143
|
+
].join("\n")
|
|
122
144
|
);
|
|
123
145
|
fs.writeFileSync(
|
|
124
146
|
path.join(bundleDir, "compact.md"),
|
|
@@ -148,7 +170,22 @@ if (domain === "research" && command === "run") {
|
|
|
148
170
|
`- Days: ${days}`,
|
|
149
171
|
`- Source selection: ${sourceSelection}`,
|
|
150
172
|
`- Sources: ${sources}`,
|
|
151
|
-
"- Finding: ISSUE-09 pagination/result drift across sources"
|
|
173
|
+
"- Finding: ISSUE-09 pagination/result drift across sources",
|
|
174
|
+
"",
|
|
175
|
+
"## Search Direction",
|
|
176
|
+
"Fixture provider pass suggested destination follow-up.",
|
|
177
|
+
"",
|
|
178
|
+
"## Candidate Triage",
|
|
179
|
+
"Accepted fixture destination and rejected shell candidates.",
|
|
180
|
+
"",
|
|
181
|
+
"## Rejected Candidates",
|
|
182
|
+
"Rejected privacy, login, and search shell examples.",
|
|
183
|
+
"",
|
|
184
|
+
"## Deep Dives",
|
|
185
|
+
"Opened the fixture destination page.",
|
|
186
|
+
"",
|
|
187
|
+
"## Synthesis Feedback",
|
|
188
|
+
"Remaining gap is independent corroboration."
|
|
152
189
|
]);
|
|
153
190
|
process.exit(0);
|
|
154
191
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: opendevbrowser-research
|
|
3
|
-
description:
|
|
3
|
+
description: Skill-guided, evidence-gated research workflow for provider-constrained public source gathering and auditable artifact review.
|
|
4
4
|
version: 2.1.0
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Research Skill
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Load this skill before research tasks. Use it to plan source families, gather provider-constrained evidence, review artifacts, and publish only claims that survive the evidence gate.
|
|
10
|
+
|
|
11
|
+
`opendevbrowser research run` is a low-level, best-effort primitive. It can collect and render provider results, but the skill owns source planning, blocker review, confidence, limitations, and final synthesis.
|
|
10
12
|
|
|
11
13
|
## Pack Contents
|
|
12
14
|
|
|
@@ -24,7 +26,7 @@ Use this skill when you need benchmark-style research across public `web|communi
|
|
|
24
26
|
|
|
25
27
|
```bash
|
|
26
28
|
./skills/opendevbrowser-research/scripts/validate-skill-assets.sh
|
|
27
|
-
./skills/opendevbrowser-research/scripts/run-research.sh "browser automation" 30 context
|
|
29
|
+
./skills/opendevbrowser-research/scripts/run-research.sh "browser automation" 30 context "web,community"
|
|
28
30
|
./skills/opendevbrowser-research/scripts/render-output.sh "browser automation" compact
|
|
29
31
|
```
|
|
30
32
|
|
|
@@ -37,11 +39,59 @@ Use this skill when you need benchmark-style research across public `web|communi
|
|
|
37
39
|
## Core Rules
|
|
38
40
|
|
|
39
41
|
- Define timebox first (`--days` or `--from/--to`).
|
|
40
|
-
-
|
|
42
|
+
- Choose explicit source families before invoking the CLI primitive: `web`, `community`, `social`, `shopping`, or a deliberate combination such as `web,community`.
|
|
43
|
+
- Treat `auto` as a source-family selector, not a reliability guarantee.
|
|
41
44
|
- Persist artifacts and return reproducible paths.
|
|
42
|
-
- Mark unsupported claims as tentative
|
|
45
|
+
- Mark unsupported claims as tentative or exclude them from the final answer.
|
|
43
46
|
- Honor bounded retries and backoff windows under 429 pressure.
|
|
44
47
|
|
|
48
|
+
## Evidence Gate
|
|
49
|
+
|
|
50
|
+
Review artifacts before publishing claims. A successful command exit or rendered report is not enough.
|
|
51
|
+
|
|
52
|
+
Preserved artifact files:
|
|
53
|
+
|
|
54
|
+
- `summary.md`
|
|
55
|
+
- `report.md`
|
|
56
|
+
- `records.json`
|
|
57
|
+
- `context.json`
|
|
58
|
+
- `meta.json`
|
|
59
|
+
- `bundle-manifest.json`
|
|
60
|
+
|
|
61
|
+
Required review:
|
|
62
|
+
|
|
63
|
+
1. Read `records.json` for fetched source records, timestamps, providers, extraction quality, and blockers.
|
|
64
|
+
2. Read `context.json` for source ledger, evidence gaps, unsupported claims, staleness checks, and search-engine provenance when used.
|
|
65
|
+
3. Read `meta.json` for provider limits, warnings, no-evidence failures, cookie diagnostics, challenge/auth/token failures, and artifact generation details.
|
|
66
|
+
4. When gated providers such as Reddit block evidence, rerun with user-authorized recovery only after candidate triage has exhausted relevant public destination pages: `--browser-mode extension` for an existing signed-in relay session, `--use-cookies` only when legitimate cookies are available, and `--challenge-automation-mode browser_with_helper` for browser-scoped assistance.
|
|
67
|
+
5. Use `report.md` and `summary.md` only after confirming claims map back to accepted evidence.
|
|
68
|
+
6. Do not use shell-only, stale-only, login-only, not-found-only, or zero-source-evidence runs to support final claims.
|
|
69
|
+
|
|
70
|
+
## Guided Research Loop
|
|
71
|
+
|
|
72
|
+
Research is iterative. Do not stop at the first provider page or SERP shell.
|
|
73
|
+
|
|
74
|
+
1. Start with provider or search-engine direction: query, capture candidate URLs, rank, title, and blocker notes.
|
|
75
|
+
2. Reject navigation dead ends before treating them as evidence: login routes, privacy or cookie preference pages, consent gates, search result shells, not-found pages, and JavaScript-only shells.
|
|
76
|
+
3. Open destination pages from the candidate set, not account, privacy, cookie, or login links. For Reddit, prefer concrete `/r/.../comments/...` result URLs over `/login`, `/search`, `/account`, `/submit`, or root navigation.
|
|
77
|
+
4. If a destination is blocked, record the blocker and choose the next candidate from the same result set before escalating to cookies or an authenticated browser.
|
|
78
|
+
5. Escalate to `--browser-mode extension`, `--use-cookies`, or `--challenge-automation-mode browser_with_helper` only when the selected evidence page itself needs authorized browser recovery and the user has legitimate access.
|
|
79
|
+
6. Continue until you have enough accepted destination evidence for the claims, or every relevant candidate is blocked, stale, irrelevant, or unsupported.
|
|
80
|
+
7. Synthesize only after the loop produces accepted evidence. If no destination evidence survives, return limitations and next-step options instead of a research answer.
|
|
81
|
+
|
|
82
|
+
## Search Engine Discovery Lane
|
|
83
|
+
|
|
84
|
+
This lane is optional, skill-guided, provider-constrained, and discovery-only. It can improve breadth, but it is not a reliable default and does not replace `opendevbrowser research run` or the evidence gate.
|
|
85
|
+
|
|
86
|
+
1. Choose up to five engines based on topic and availability. Candidate set: Google, Bing, Brave, DuckDuckGo or Yahoo for overlap checks, Yandex for regional or index diversity, Baidu for China-specific topics, and Kagi only when the user has account access.
|
|
87
|
+
2. Record engine choice rationale, query variants, region and language assumptions, auth or cookie needs, and blockers.
|
|
88
|
+
3. Collect up to 10 result URLs per selected engine. Preserve engine, query, rank, URL, title if available, and retrieval notes.
|
|
89
|
+
4. Dedupe canonical URLs, then select the strongest 5 to 10 destination pages for extraction.
|
|
90
|
+
5. Extract selected destination pages through OpenDevBrowser browsing primitives when useful, including DOM interaction and screenshots. Use cookies or authenticated browsing only after destination-candidate triage shows the selected evidence page itself requires authorized access.
|
|
91
|
+
6. Do not violate robots restrictions, login walls, consent gates, CAPTCHAs, rate limits, anti-bot controls, or access controls. Stand down and record limitations instead.
|
|
92
|
+
7. Keep SERPs discovery-only. SERP snippets, result pages, shells, and blocked pages cannot be final evidence.
|
|
93
|
+
8. Final claims must cite destination pages or other fetched evidence that survived review.
|
|
94
|
+
|
|
45
95
|
## Parallel Multitab Alignment
|
|
46
96
|
|
|
47
97
|
- Apply shared concurrency policy from `../opendevbrowser-best-practices/SKILL.md` ("Parallel Operations").
|
|
@@ -60,22 +110,24 @@ Matrix source: `../opendevbrowser-best-practices/artifacts/browser-agent-known-i
|
|
|
60
110
|
## Workflow
|
|
61
111
|
|
|
62
112
|
1. Resolve timebox (`days` or `from/to`).
|
|
63
|
-
2. Choose
|
|
64
|
-
3.
|
|
65
|
-
4.
|
|
113
|
+
2. Choose explicit source families and document why they fit the topic.
|
|
114
|
+
3. Optionally run the search-engine discovery lane to find destination candidates.
|
|
115
|
+
4. Run `opendevbrowser research run` as a low-level best-effort primitive.
|
|
116
|
+
5. Review `records.json`, `context.json`, and `meta.json` before trusting `report.md`.
|
|
117
|
+
6. If `meta.json` shows auth, token, challenge, or cookie-gated providers, make the next run skill-first only after the candidate queue has no relevant public destination evidence left: use the existing signed-in browser session when authorized, cookies only when legitimate cookies are available, and browser-scoped challenge assistance only for that browser session.
|
|
118
|
+
7. Return final claims only when they are supported by accepted evidence.
|
|
66
119
|
|
|
67
120
|
## Commands
|
|
68
121
|
|
|
69
122
|
```bash
|
|
70
|
-
opendevbrowser research run --topic "<topic>" --days 30 --
|
|
71
|
-
opendevbrowser research run --topic "<topic>" --
|
|
123
|
+
opendevbrowser research run --topic "<topic>" --days 30 --sources web,community --mode context
|
|
124
|
+
opendevbrowser research run --topic "<topic>" --sources web --mode json
|
|
72
125
|
opendevbrowser research run --topic "<topic>" --sources web,shopping --mode md
|
|
73
126
|
```
|
|
74
127
|
|
|
75
128
|
## Notes
|
|
76
129
|
|
|
77
|
-
- `auto`
|
|
78
|
-
- In the current contract, both `auto` and `all` resolve to `web|community|social`.
|
|
130
|
+
- `auto` and `all` are selector values in the current source-family contract, not promises of reliable coverage.
|
|
79
131
|
- Use `--source-selection shopping` or explicit `--sources ...shopping...` to include shopping only when commercial intent is explicit.
|
|
80
132
|
- Use `--mode path` with `scripts/write-artifacts.sh` when you need replayable handoff bundles.
|
|
81
133
|
- For browser-backed release proof and mode sweeps, follow the canonical direct-run evidence policy in `../opendevbrowser-best-practices/SKILL.md`.
|
|
@@ -1,29 +1,66 @@
|
|
|
1
1
|
# Research Workflows
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use these workflows to plan evidence first, run provider-constrained collection second, and publish only claims that pass review.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
2. Resolve source selection (`auto|all|explicit`)
|
|
7
|
-
3. Run research workflow command
|
|
8
|
-
4. Persist context/report artifacts
|
|
9
|
-
5. Validate source diversity and freshness
|
|
5
|
+
## Evidence-gated baseline workflow
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
1. Define topic, scope, and strict time window.
|
|
8
|
+
2. Choose explicit source families before invoking the CLI primitive. Prefer `--sources web,community` for broad public research when both destination pages and community corroboration are useful.
|
|
9
|
+
3. Record why each source family is in scope and which families are intentionally excluded.
|
|
10
|
+
4. Run `opendevbrowser research run` as a low-level best-effort primitive.
|
|
11
|
+
5. Inspect candidates and follow useful destination pages before synthesis. Never treat account, privacy, cookie, login, consent, search shell, not-found, or JavaScript shell pages as final evidence.
|
|
12
|
+
6. If a selected destination is blocked, record the blocker and continue to the next relevant candidate before escalating to cookies or authenticated browser recovery.
|
|
13
|
+
7. Persist `summary.md`, `report.md`, `records.json`, `context.json`, `meta.json`, and `bundle-manifest.json`.
|
|
14
|
+
8. Review `records.json`, `context.json`, and `meta.json` before using `report.md`.
|
|
15
|
+
9. If the selected evidence page itself proves auth, token, challenge, or cookie gating after public candidate triage, rerun through user-authorized browser recovery only after relevant public destination pages are exhausted: `--browser-mode extension` for an existing signed-in relay session, `--use-cookies` only when legitimate cookies are available, and `--challenge-automation-mode browser_with_helper` for browser-scoped assistance.
|
|
16
|
+
10. Publish supported claims, mark weak claims as tentative, and exclude unsupported claims.
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
2. Require at least two independent source records for critical claims
|
|
15
|
-
3. Mark unsupported claims as tentative
|
|
16
|
-
4. Escalate when corroboration is missing
|
|
18
|
+
## Iterative destination-follow workflow
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
Use this when the first pass returns shells, login pages, privacy/cookie pages, or search result pages.
|
|
19
21
|
|
|
20
|
-
1.
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4.
|
|
22
|
+
1. Build a candidate queue from provider output or search-engine discovery: URL, rank, source family, title, and blocker notes.
|
|
23
|
+
2. Remove dead-end routes from the queue: `/login`, `/account`, `/submit`, privacy preference pages, cookie preference pages, search result pages, consent-only pages, static assets, and not-found URLs.
|
|
24
|
+
3. Open the highest-value remaining destination page with OpenDevBrowser.
|
|
25
|
+
4. Extract text, source URL, title, timestamp, and visible limitations.
|
|
26
|
+
5. If extraction returns a shell or blocker, mark that candidate rejected and continue with the next candidate.
|
|
27
|
+
6. If extraction succeeds, add it to the claim map and decide whether more evidence is needed for corroboration.
|
|
28
|
+
7. Stop only when accepted evidence is sufficient or every relevant candidate has a recorded rejection reason.
|
|
29
|
+
|
|
30
|
+
## Claim-to-source review workflow
|
|
31
|
+
|
|
32
|
+
1. Extract the claims that the final answer would make.
|
|
33
|
+
2. Map each claim to accepted destination evidence in `records.json`.
|
|
34
|
+
3. Check source date, fetch date, provider, extraction quality, and source independence.
|
|
35
|
+
4. Require corroboration for critical claims when the topic allows it.
|
|
36
|
+
5. Record evidence gaps, stale pages, login walls, challenge pages, rate limits, and extraction limits.
|
|
37
|
+
6. Do not use shell-only, stale-only, login-only, not-found-only, or zero-source-evidence runs as final support.
|
|
38
|
+
|
|
39
|
+
## Search Engine Discovery Lane
|
|
40
|
+
|
|
41
|
+
This optional lane is skill-guided, provider-constrained, and discovery-only. It is for richer candidate discovery, not for runtime source-family expansion.
|
|
42
|
+
|
|
43
|
+
1. Choose up to five engines based on topic and availability: Google, Bing, Brave, DuckDuckGo or Yahoo, Yandex, Baidu, and Kagi only with user account access.
|
|
44
|
+
2. Record search_engine_passes with engine, query, region, language, rationale, cookie or auth needs, and blockers.
|
|
45
|
+
3. Collect up to 10 SERP candidate URLs per engine with engine, query, rank, URL, title if available, and retrieval notes.
|
|
46
|
+
4. Dedupe canonical URLs across engines.
|
|
47
|
+
5. Select the strongest 5 to 10 destination pages for extraction.
|
|
48
|
+
6. Fetch selected destination pages with OpenDevBrowser browsing primitives when useful, including DOM interaction and screenshots. Use cookies or authenticated browsing only after destination-candidate triage shows the selected evidence page itself requires legitimate user-authorized access.
|
|
49
|
+
7. Stand down on robots restrictions, login walls, consent gates, CAPTCHAs, rate limits, anti-bot controls, and access controls. Record the limitation instead.
|
|
50
|
+
8. Keep SERPs discovery-only. SERP snippets, search result pages, shells, and blocked pages cannot be final evidence.
|
|
51
|
+
9. Cite destination-page evidence or other fetched evidence that passed review.
|
|
52
|
+
|
|
53
|
+
## Backoff and blocker workflow
|
|
54
|
+
|
|
55
|
+
1. Detect repeated 429 responses, provider throttling, challenge pages, login walls, token gates, consent gates, cookie diagnostics, or extraction failures.
|
|
56
|
+
2. Honor retry windows and bounded retries.
|
|
57
|
+
3. For gated providers such as Reddit, prefer a skill-first recovery rerun with an existing signed-in relay session, legitimate cookies only when available, and browser-scoped challenge assistance only after concrete result URLs from the candidate queue have been attempted or rejected with reasons.
|
|
58
|
+
4. Resume from persisted artifacts only when the next run can add evidence without violating controls.
|
|
59
|
+
5. Report partial coverage, provider constraints, and skipped lanes when limits persist.
|
|
24
60
|
|
|
25
61
|
## Compact handoff workflow
|
|
26
62
|
|
|
27
|
-
1. Produce compact summary with
|
|
28
|
-
2. Include
|
|
29
|
-
3. Attach artifact paths for replay
|
|
63
|
+
1. Produce a compact summary with accepted claims only.
|
|
64
|
+
2. Include evidence gaps, provider constraints, and limitations.
|
|
65
|
+
3. Attach artifact paths for replay and review.
|
|
66
|
+
4. Name unsupported claims that were excluded or left tentative.
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
# Compact Research Template
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
- Source
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
3
|
+
- Topic and timebox:
|
|
4
|
+
- Source families used:
|
|
5
|
+
- Evidence-gated status:
|
|
6
|
+
- Accepted claims:
|
|
7
|
+
- Tentative or excluded claims:
|
|
8
|
+
- Evidence gaps:
|
|
9
|
+
- Provider constraints:
|
|
10
|
+
- Staleness checks:
|
|
11
|
+
- Search engine discovery, if used:
|
|
12
|
+
- direction from providers/search:
|
|
13
|
+
- candidate_triage:
|
|
14
|
+
- rejected_candidates:
|
|
15
|
+
- rejected privacy/login/shell pages:
|
|
16
|
+
- replacement destination followed:
|
|
17
|
+
- remaining candidate queue:
|
|
18
|
+
- deep-dive pages:
|
|
19
|
+
- next query or evidence gap:
|
|
20
|
+
- search_engine_passes:
|
|
21
|
+
- serp_candidates reviewed:
|
|
22
|
+
- selected_destination_pages:
|
|
23
|
+
- engine_failures:
|
|
24
|
+
- provenance:
|
|
25
|
+
- synthesis_feedback:
|
|
26
|
+
- Limitations:
|
|
27
|
+
- Artifact paths:
|
|
28
|
+
- summary.md:
|
|
29
|
+
- report.md:
|
|
30
|
+
- records.json:
|
|
31
|
+
- context.json:
|
|
32
|
+
- meta.json:
|
|
33
|
+
- bundle-manifest.json:
|
|
@@ -1,8 +1,59 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topic": "",
|
|
3
3
|
"timebox": {
|
|
4
|
-
"days": 30
|
|
4
|
+
"days": 30,
|
|
5
|
+
"from": null,
|
|
6
|
+
"to": null
|
|
5
7
|
},
|
|
8
|
+
"source_families": [],
|
|
9
|
+
"evidence_gate": {
|
|
10
|
+
"status": "pending_review",
|
|
11
|
+
"reviewed_artifacts": [],
|
|
12
|
+
"accepted_claims": [],
|
|
13
|
+
"tentative_claims": [],
|
|
14
|
+
"unsupported_claims": [],
|
|
15
|
+
"blockers": []
|
|
16
|
+
},
|
|
17
|
+
"artifact_files": [
|
|
18
|
+
"summary.md",
|
|
19
|
+
"report.md",
|
|
20
|
+
"records.json",
|
|
21
|
+
"context.json",
|
|
22
|
+
"meta.json",
|
|
23
|
+
"bundle-manifest.json"
|
|
24
|
+
],
|
|
25
|
+
"source_ledger": [],
|
|
26
|
+
"search_direction_notes": [],
|
|
27
|
+
"candidate_triage_schema": {
|
|
28
|
+
"url": "",
|
|
29
|
+
"rank": 0,
|
|
30
|
+
"engine": "",
|
|
31
|
+
"query": "",
|
|
32
|
+
"source_family": "",
|
|
33
|
+
"title": "",
|
|
34
|
+
"status": "pending|accepted|rejected",
|
|
35
|
+
"blocker_notes": "",
|
|
36
|
+
"rejection_reason": "",
|
|
37
|
+
"replacement_url": "",
|
|
38
|
+
"retrieval_notes": "",
|
|
39
|
+
"extraction_status": "pending|fetched|blocked|shell|stale|irrelevant"
|
|
40
|
+
},
|
|
41
|
+
"candidate_triage": {
|
|
42
|
+
"accepted_destination_records": 0,
|
|
43
|
+
"rejected_shell_or_dead_end_candidates": 0
|
|
44
|
+
},
|
|
45
|
+
"rejected_candidates": [],
|
|
46
|
+
"deep_dive_pages": [],
|
|
47
|
+
"iteration_log": [],
|
|
48
|
+
"synthesis_feedback": "",
|
|
49
|
+
"staleness_checks": [],
|
|
50
|
+
"provider_constraints": [],
|
|
51
|
+
"search_engine_passes": [],
|
|
52
|
+
"serp_candidates": [],
|
|
53
|
+
"selected_destination_pages": [],
|
|
54
|
+
"engine_failures": [],
|
|
55
|
+
"provenance": [],
|
|
56
|
+
"limitations": [],
|
|
6
57
|
"issue_ids": [
|
|
7
58
|
"ISSUE-06",
|
|
8
59
|
"ISSUE-09",
|
|
@@ -1,9 +1,62 @@
|
|
|
1
1
|
# Research Report
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Topic and Scope
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Evidence Gate Status
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
State whether the run passed evidence review. Do not publish shell-only, stale-only, login-only, not-found-only, or zero-source-evidence claims.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Claim Map
|
|
10
|
+
|
|
11
|
+
| Claim | Status | Evidence | Notes |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| | accepted, tentative, or excluded | destination URL or artifact record id | |
|
|
14
|
+
|
|
15
|
+
## Evidence
|
|
16
|
+
|
|
17
|
+
Summarize accepted destination-page evidence from `records.json`, with source date, fetch date, provider, and extraction quality.
|
|
18
|
+
|
|
19
|
+
## Confidence
|
|
20
|
+
|
|
21
|
+
Explain confidence by claim, including corroboration quality and independence.
|
|
22
|
+
|
|
23
|
+
## Provider Constraints and Limitations
|
|
24
|
+
|
|
25
|
+
Record provider blockers, rate limits, login walls, challenge pages, stale pages, extraction limits, and unsupported claims.
|
|
26
|
+
|
|
27
|
+
## Search Engine Discovery
|
|
28
|
+
|
|
29
|
+
If used, summarize search_engine_passes, serp_candidates, selected_destination_pages, engine_failures, provenance, and limitations. SERPs are discovery-only and cannot be final evidence.
|
|
30
|
+
|
|
31
|
+
## Search Direction
|
|
32
|
+
|
|
33
|
+
Summarize what the provider or search-engine pass suggested and which follow-up direction was chosen.
|
|
34
|
+
|
|
35
|
+
## Candidate Triage
|
|
36
|
+
|
|
37
|
+
List useful destinations, duplicates, privacy or terms pages, login or account pages, blocked pages, shells, stale pages, and off-topic pages.
|
|
38
|
+
|
|
39
|
+
## Rejected Candidates
|
|
40
|
+
|
|
41
|
+
Record rejected_candidates with URL, source, reason, and whether another candidate replaced it.
|
|
42
|
+
|
|
43
|
+
## Deep Dives
|
|
44
|
+
|
|
45
|
+
Summarize deep_dive_pages opened after triage, including destination URL, accepted evidence, and remaining uncertainty.
|
|
46
|
+
|
|
47
|
+
## Synthesis Feedback
|
|
48
|
+
|
|
49
|
+
Explain how the evidence changed the research direction, what gaps remain, and what the next query or source should be if more work is needed.
|
|
50
|
+
|
|
51
|
+
## Final Answer
|
|
52
|
+
|
|
53
|
+
Provide only claims supported by reviewed destination evidence. Label unresolved points as tentative or omit them.
|
|
54
|
+
|
|
55
|
+
## Artifact Paths
|
|
56
|
+
|
|
57
|
+
- `summary.md`:
|
|
58
|
+
- `report.md`:
|
|
59
|
+
- `records.json`:
|
|
60
|
+
- `context.json`:
|
|
61
|
+
- `meta.json`:
|
|
62
|
+
- `bundle-manifest.json`:
|
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
# Sample Output
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
## Search Direction
|
|
4
|
+
|
|
5
|
+
- Provider pass produced destination candidates; accepted evidence came from following usable destination pages before considering browser recovery.
|
|
6
|
+
|
|
7
|
+
## Candidate Triage
|
|
8
|
+
|
|
9
|
+
- Accepted: `https://example.com/browser-automation-evidence`
|
|
10
|
+
- Rejected: `https://example.com/login` as login_or_account; replacement destination followed: `https://example.com/browser-automation-evidence`
|
|
11
|
+
- Rejected: `https://example.com/privacy/choices` as privacy_or_terms; replacement destination followed: `https://example.com/browser-automation-evidence`
|
|
12
|
+
- Remaining candidate queue: `https://example.org/challenge-recovery-field-notes`
|
|
13
|
+
|
|
14
|
+
## Deep Dives
|
|
15
|
+
|
|
16
|
+
- Opened `https://example.com/browser-automation-evidence`; extracted destination-page evidence, blocker notes, and artifact review guidance.
|
|
17
|
+
|
|
18
|
+
## Synthesis Feedback
|
|
19
|
+
|
|
20
|
+
- The first accepted page shifted the next query toward challenge recovery handoff evidence.
|
|
21
|
+
- Next query or evidence gap: find corroborating field notes from an independent browser automation source.
|
|
22
|
+
|
|
23
|
+
## Evidence
|
|
24
|
+
|
|
25
|
+
- Accepted claim: Browser automation research needs destination-page evidence, blocker notes, and artifact review before synthesis.
|
|
26
|
+
|
|
27
|
+
## Limitations
|
|
28
|
+
|
|
29
|
+
- Reddit evidence was excluded when only login or shell pages were available.
|
|
@@ -2,24 +2,20 @@
|
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
4
|
if [[ $# -lt 1 ]]; then
|
|
5
|
-
echo "Usage: run-research.sh <topic> [days] [mode] [
|
|
5
|
+
echo "Usage: run-research.sh <topic> [days] [mode] [sources]"
|
|
6
6
|
exit 1
|
|
7
7
|
fi
|
|
8
8
|
|
|
9
9
|
TOPIC="$1"
|
|
10
10
|
DAYS="${2:-30}"
|
|
11
11
|
MODE="${3:-context}"
|
|
12
|
-
|
|
13
|
-
SOURCES="${5:-}"
|
|
12
|
+
SOURCES="${4:-}"
|
|
14
13
|
|
|
15
14
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
15
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
17
16
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
18
17
|
|
|
19
18
|
cmd=("${ODB_CLI[@]}" research run --topic "$TOPIC" --days "$DAYS" --mode "$MODE")
|
|
20
|
-
if [[ -n "$SOURCE_SELECTION" ]]; then
|
|
21
|
-
cmd+=(--source-selection "$SOURCE_SELECTION")
|
|
22
|
-
fi
|
|
23
19
|
if [[ -n "$SOURCES" ]]; then
|
|
24
20
|
cmd+=(--sources "$SOURCES")
|
|
25
21
|
fi
|