opendevbrowser 0.0.34 → 0.0.35
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 +1 -1
- package/dist/{accessibility-snapshot-VCBXK47S.js → accessibility-snapshot-TAFPVLZN.js} +8 -8
- package/dist/{active-window-7EUN36LZ.js → active-window-MHFMC6NQ.js} +8 -8
- package/dist/{annotate-VLBK7YB6.js → annotate-5ZFRFQ4B.js} +7 -7
- package/dist/{attr-JNANQKM6.js → attr-MBF2UCRF.js} +7 -7
- package/dist/browser/browser-manager.d.ts +6 -1
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/manager-types.d.ts +48 -0
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts +2 -1
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/{canvas-V5LO4JVL.js → canvas-CAMD22YU.js} +7 -7
- package/dist/{capture-desktop-FKVDWTVG.js → capture-desktop-TMZSFA5R.js} +8 -8
- package/dist/{capture-window-QVPM2DN2.js → capture-window-NZDKD2AE.js} +8 -8
- package/dist/{check-V3CWZ56S.js → check-MO33GTQ4.js} +7 -7
- package/dist/{checked-Q27Q6YZN.js → checked-3HDF5X2M.js} +7 -7
- package/dist/{chunk-VX47SJZM.js → chunk-32ZSOZND.js} +2 -2
- package/dist/{chunk-XRDCSHKZ.js → chunk-AHQC4A6P.js} +744 -14
- package/dist/chunk-AHQC4A6P.js.map +1 -0
- package/dist/{chunk-IBIHDGTZ.js → chunk-B5XIJQXO.js} +32 -4
- package/dist/chunk-B5XIJQXO.js.map +1 -0
- package/dist/{chunk-OJAUKABV.js → chunk-BHZLEFXW.js} +2 -2
- package/dist/{chunk-VY47VKXU.js → chunk-FJZY3Z3X.js} +2 -2
- package/dist/{chunk-GC2FWISX.js → chunk-HM4CO3EW.js} +20 -16
- package/dist/chunk-HM4CO3EW.js.map +1 -0
- package/dist/{chunk-Z3HIX2SE.js → chunk-UEAXTWGT.js} +2 -2
- package/dist/{chunk-ZGCTC5YM.js → chunk-UVD34RA2.js} +33 -1
- package/dist/chunk-UVD34RA2.js.map +1 -0
- package/dist/{chunk-5FDXH4CS.js → chunk-WTWSBEBW.js} +5659 -419
- package/dist/chunk-WTWSBEBW.js.map +1 -0
- package/dist/{chunk-NX2XYJP5.js → chunk-XSSPNVMS.js} +3 -3
- package/dist/{chunk-NX2XYJP5.js.map → chunk-XSSPNVMS.js.map} +1 -1
- package/dist/{chunk-QXJDJDSZ.js → chunk-Z3ADLR7I.js} +667 -8
- package/dist/chunk-Z3ADLR7I.js.map +1 -0
- package/dist/cli/commands/inspiredesign.d.ts +12 -1
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +76 -76
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/workflow-message.d.ts.map +1 -1
- package/dist/{click-EQDRSLR3.js → click-SWZPJO2U.js} +7 -7
- package/dist/{clone-component-SISUXTJS.js → clone-component-YTB46YU4.js} +7 -7
- package/dist/{clone-page-MLDPCBOY.js → clone-page-5FMPHQ3A.js} +7 -7
- package/dist/{close-7J7EV237.js → close-22SNMDX3.js} +7 -7
- package/dist/{close-2LQMJVOA.js → close-ORQZCZ2E.js} +7 -7
- package/dist/{connect-JFRSIW5M.js → connect-EWYITNQU.js} +7 -7
- package/dist/{console-poll-NSVVUNEC.js → console-poll-LJR6ZTDK.js} +7 -7
- package/dist/{cookie-import-B7IQTGTN.js → cookie-import-PTAIWPEC.js} +7 -7
- package/dist/{cookie-list-YHG7JCZZ.js → cookie-list-76C35B5B.js} +7 -7
- package/dist/{daemon-ENU4FOV4.js → daemon-UKJMDLCB.js} +6 -6
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-KLGU2AWY.js → debug-trace-snapshot-PQ5FJART.js} +7 -7
- package/dist/{dialog-MUVQIERS.js → dialog-WLJDWJV4.js} +7 -7
- package/dist/{disconnect-KELQJ45J.js → disconnect-FNB4JC2U.js} +7 -7
- package/dist/{enabled-SF6UU5HG.js → enabled-PYMCOQPC.js} +7 -7
- package/dist/{goto-AZQWXYPG.js → goto-UNTEW4VI.js} +7 -7
- package/dist/guidance/context.d.ts +10 -0
- package/dist/guidance/context.d.ts.map +1 -1
- package/dist/guidance/readiness.d.ts.map +1 -1
- package/dist/guidance/recipes/generic.d.ts.map +1 -1
- package/dist/guidance/recipes/pinterest.d.ts.map +1 -1
- package/dist/guidance/types.d.ts +4 -0
- package/dist/guidance/types.d.ts.map +1 -1
- package/dist/{help-B44IBHXL.js → help-QOLCIB3P.js} +8 -7
- package/dist/{help-B44IBHXL.js.map → help-QOLCIB3P.js.map} +1 -1
- package/dist/{hover-MQRAKKVU.js → hover-ZWY4YOM4.js} +7 -7
- package/dist/{html-PLRTU2WS.js → html-M46YBFT3.js} +7 -7
- package/dist/index.js +43 -18
- package/dist/index.js.map +1 -1
- package/dist/{inspector-IY4GBIT6.js → inspector-6YAOI74U.js} +8 -8
- package/dist/{inspector-audit-7MQCRJHD.js → inspector-audit-PF64X6SJ.js} +9 -9
- package/dist/{inspector-plan-ZAUDHBET.js → inspector-plan-IUGTQV3Q.js} +9 -9
- package/dist/inspiredesign/capture-mode.d.ts +8 -0
- package/dist/inspiredesign/capture-mode.d.ts.map +1 -1
- package/dist/inspiredesign/capture.d.ts +36 -1
- package/dist/inspiredesign/capture.d.ts.map +1 -1
- package/dist/inspiredesign/contract.d.ts +24 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +6 -2
- package/dist/inspiredesign/handoff.d.ts.map +1 -1
- package/dist/inspiredesign/media-analysis/analyzer.d.ts +13 -0
- package/dist/inspiredesign/media-analysis/analyzer.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/design-guidance.d.ts +11 -0
- package/dist/inspiredesign/media-analysis/design-guidance.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/ffmpeg.d.ts +21 -0
- package/dist/inspiredesign/media-analysis/ffmpeg.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/ffprobe.d.ts +8 -0
- package/dist/inspiredesign/media-analysis/ffprobe.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/index.d.ts +10 -0
- package/dist/inspiredesign/media-analysis/index.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/persist.d.ts +6 -0
- package/dist/inspiredesign/media-analysis/persist.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/pixel.d.ts +9 -0
- package/dist/inspiredesign/media-analysis/pixel.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/types.d.ts +163 -0
- package/dist/inspiredesign/media-analysis/types.d.ts.map +1 -0
- package/dist/inspiredesign/media-analysis/typography-structure.d.ts +3 -0
- package/dist/inspiredesign/media-analysis/typography-structure.d.ts.map +1 -0
- package/dist/inspiredesign/meta-prompt.d.ts.map +1 -1
- package/dist/inspiredesign/motion-evidence.d.ts +73 -0
- package/dist/inspiredesign/motion-evidence.d.ts.map +1 -0
- package/dist/inspiredesign/pinterest-media-classification.d.ts +27 -0
- package/dist/inspiredesign/pinterest-media-classification.d.ts.map +1 -0
- package/dist/inspiredesign/pinterest-pin-media-evidence.d.ts +151 -0
- package/dist/inspiredesign/pinterest-pin-media-evidence.d.ts.map +1 -0
- package/dist/inspiredesign/product-readiness.d.ts +97 -0
- package/dist/inspiredesign/product-readiness.d.ts.map +1 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts +27 -2
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/inspiredesign/visual-evidence.d.ts +5 -0
- package/dist/inspiredesign/visual-evidence.d.ts.map +1 -1
- package/dist/{inspiredesign-VHPEO3UK.js → inspiredesign-GZIEXETS.js} +29 -12
- package/dist/inspiredesign-GZIEXETS.js.map +1 -0
- package/dist/{launch-OCTWPTV5.js → launch-I7WNLWLY.js} +7 -7
- package/dist/{list-HUSYADUS.js → list-BAECFJI7.js} +7 -7
- package/dist/{list-JWKAMAUA.js → list-BCF4HZ2K.js} +7 -7
- package/dist/{macro-resolve-WOXMPZDQ.js → macro-resolve-4GNZYHHW.js} +8 -8
- package/dist/{network-poll-WHB62OEF.js → network-poll-DCZ5ZNLP.js} +7 -7
- package/dist/{new-IKZBYBNK.js → new-6KZYJTJG.js} +7 -7
- package/dist/{open-UA2VI6ZP.js → open-JPGEAJHJ.js} +7 -7
- package/dist/opendevbrowser.js +43 -18
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-DICS3VKH.js → perf-5X367PRP.js} +7 -7
- package/dist/{pointer-down-2XPRZFJC.js → pointer-down-5OAUDDNR.js} +7 -7
- package/dist/{pointer-drag-7NY4BOLH.js → pointer-drag-LIW5PY5P.js} +7 -7
- package/dist/{pointer-move-FWEXMH37.js → pointer-move-7AMURLJD.js} +7 -7
- package/dist/{pointer-up-VU2OHK5D.js → pointer-up-EY652YWL.js} +7 -7
- package/dist/{press-W7IZ3FCX.js → press-UIAE5XEF.js} +7 -7
- package/dist/{product-video-XCZ6CHR5.js → product-video-B6TLS7VC.js} +9 -9
- package/dist/providers/browser-native-discovery.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts +10 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts +53 -2
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-XCNSU3T6.js → providers-AERTX6X4.js} +5 -3
- 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/{research-AYCKHOWK.js → research-AJH6ECYW.js} +9 -9
- package/dist/{review-PP2UNSMJ.js → review-RN6XF2YB.js} +7 -7
- package/dist/{review-desktop-3JOJFUEJ.js → review-desktop-UJOUS7K2.js} +7 -7
- package/dist/{rpc-7EPTJQQ6.js → rpc-VS5Y5FUT.js} +7 -7
- package/dist/{run-P6UJS3D4.js → run-EVRIQW7S.js} +5 -5
- package/dist/{screencast-start-ZZYNH2HT.js → screencast-start-U6J4FYU4.js} +7 -7
- package/dist/{screencast-stop-Y6ADFOFA.js → screencast-stop-EQUPRGMP.js} +7 -7
- package/dist/{screenshot-CJB7PMAF.js → screenshot-BENYGC36.js} +7 -7
- package/dist/{scroll-BP5MA4ZT.js → scroll-3OALQLX2.js} +7 -7
- package/dist/{scroll-into-view-O3RDWLM2.js → scroll-into-view-SNZKBIVB.js} +7 -7
- package/dist/{select-QLCNRI36.js → select-JDZDDC3Y.js} +7 -7
- package/dist/{serve-OO2MQWGL.js → serve-LOC6ESJ4.js} +6 -6
- package/dist/{shopping-UYHCYPAH.js → shopping-267OAYGM.js} +9 -9
- package/dist/{snapshot-SXYZ3CMC.js → snapshot-ASYI5UFR.js} +7 -7
- package/dist/{status-AL2AHVA5.js → status-47CI4LJX.js} +7 -7
- package/dist/{status-QQW7REK4.js → status-N4O6DJTF.js} +8 -8
- package/dist/{status-capabilities-AVHJYQQQ.js → status-capabilities-C777JZG4.js} +8 -8
- package/dist/{text-B6Z47EOA.js → text-MS2653MW.js} +7 -7
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/{type-LR3F3SQY.js → type-UMPSDACC.js} +7 -7
- package/dist/{uncheck-5PJEHR7J.js → uncheck-2OZ56D42.js} +7 -7
- package/dist/{upload-HQ3QN2OW.js → upload-CD7PRH54.js} +7 -7
- package/dist/{use-KFZLMRUH.js → use-MO67AGG7.js} +7 -7
- package/dist/{value-TKUFUK5I.js → value-4GI2LRUY.js} +7 -7
- package/dist/{visible-P5Z2N2QR.js → visible-VSUFGRFZ.js} +7 -7
- package/dist/{wait-BYSHJPSC.js → wait-OQYMFENT.js} +7 -7
- package/dist/{windows-6GTD25EU.js → windows-75W2JCW7.js} +8 -8
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +41 -30
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +12 -8
- package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +1 -0
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +19 -0
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +23 -13
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +3 -1
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +62 -21
- package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +28 -0
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +15 -0
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +13 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +2 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +15 -13
- package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +1 -1
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +14 -7
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +1 -0
- package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +10 -7
- package/skills/opendevbrowser-motion-design/SKILL.md +1 -1
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +5 -4
- package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +1 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +1 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +1 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +4 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +1 -0
- package/skills/opendevbrowser-research/SKILL.md +1 -0
- package/skills/opendevbrowser-research/scripts/render-output.sh +1 -0
- package/skills/opendevbrowser-research/scripts/run-research.sh +1 -0
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +4 -0
- package/skills/opendevbrowser-research/scripts/write-artifacts.sh +1 -0
- package/skills/opendevbrowser-shopping/SKILL.md +1 -0
- package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +1 -0
- package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +1 -0
- package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +1 -0
- package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +4 -0
- package/dist/chunk-5FDXH4CS.js.map +0 -1
- package/dist/chunk-GC2FWISX.js.map +0 -1
- package/dist/chunk-IBIHDGTZ.js.map +0 -1
- package/dist/chunk-QXJDJDSZ.js.map +0 -1
- package/dist/chunk-XRDCSHKZ.js.map +0 -1
- package/dist/chunk-ZGCTC5YM.js.map +0 -1
- package/dist/inspiredesign-VHPEO3UK.js.map +0 -1
- /package/dist/{accessibility-snapshot-VCBXK47S.js.map → accessibility-snapshot-TAFPVLZN.js.map} +0 -0
- /package/dist/{active-window-7EUN36LZ.js.map → active-window-MHFMC6NQ.js.map} +0 -0
- /package/dist/{annotate-VLBK7YB6.js.map → annotate-5ZFRFQ4B.js.map} +0 -0
- /package/dist/{attr-JNANQKM6.js.map → attr-MBF2UCRF.js.map} +0 -0
- /package/dist/{canvas-V5LO4JVL.js.map → canvas-CAMD22YU.js.map} +0 -0
- /package/dist/{capture-desktop-FKVDWTVG.js.map → capture-desktop-TMZSFA5R.js.map} +0 -0
- /package/dist/{capture-window-QVPM2DN2.js.map → capture-window-NZDKD2AE.js.map} +0 -0
- /package/dist/{check-V3CWZ56S.js.map → check-MO33GTQ4.js.map} +0 -0
- /package/dist/{checked-Q27Q6YZN.js.map → checked-3HDF5X2M.js.map} +0 -0
- /package/dist/{chunk-VX47SJZM.js.map → chunk-32ZSOZND.js.map} +0 -0
- /package/dist/{chunk-OJAUKABV.js.map → chunk-BHZLEFXW.js.map} +0 -0
- /package/dist/{chunk-VY47VKXU.js.map → chunk-FJZY3Z3X.js.map} +0 -0
- /package/dist/{chunk-Z3HIX2SE.js.map → chunk-UEAXTWGT.js.map} +0 -0
- /package/dist/{click-EQDRSLR3.js.map → click-SWZPJO2U.js.map} +0 -0
- /package/dist/{clone-component-SISUXTJS.js.map → clone-component-YTB46YU4.js.map} +0 -0
- /package/dist/{clone-page-MLDPCBOY.js.map → clone-page-5FMPHQ3A.js.map} +0 -0
- /package/dist/{close-7J7EV237.js.map → close-22SNMDX3.js.map} +0 -0
- /package/dist/{close-2LQMJVOA.js.map → close-ORQZCZ2E.js.map} +0 -0
- /package/dist/{connect-JFRSIW5M.js.map → connect-EWYITNQU.js.map} +0 -0
- /package/dist/{console-poll-NSVVUNEC.js.map → console-poll-LJR6ZTDK.js.map} +0 -0
- /package/dist/{cookie-import-B7IQTGTN.js.map → cookie-import-PTAIWPEC.js.map} +0 -0
- /package/dist/{cookie-list-YHG7JCZZ.js.map → cookie-list-76C35B5B.js.map} +0 -0
- /package/dist/{daemon-ENU4FOV4.js.map → daemon-UKJMDLCB.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-KLGU2AWY.js.map → debug-trace-snapshot-PQ5FJART.js.map} +0 -0
- /package/dist/{dialog-MUVQIERS.js.map → dialog-WLJDWJV4.js.map} +0 -0
- /package/dist/{disconnect-KELQJ45J.js.map → disconnect-FNB4JC2U.js.map} +0 -0
- /package/dist/{enabled-SF6UU5HG.js.map → enabled-PYMCOQPC.js.map} +0 -0
- /package/dist/{goto-AZQWXYPG.js.map → goto-UNTEW4VI.js.map} +0 -0
- /package/dist/{hover-MQRAKKVU.js.map → hover-ZWY4YOM4.js.map} +0 -0
- /package/dist/{html-PLRTU2WS.js.map → html-M46YBFT3.js.map} +0 -0
- /package/dist/{inspector-IY4GBIT6.js.map → inspector-6YAOI74U.js.map} +0 -0
- /package/dist/{inspector-audit-7MQCRJHD.js.map → inspector-audit-PF64X6SJ.js.map} +0 -0
- /package/dist/{inspector-plan-ZAUDHBET.js.map → inspector-plan-IUGTQV3Q.js.map} +0 -0
- /package/dist/{launch-OCTWPTV5.js.map → launch-I7WNLWLY.js.map} +0 -0
- /package/dist/{list-HUSYADUS.js.map → list-BAECFJI7.js.map} +0 -0
- /package/dist/{list-JWKAMAUA.js.map → list-BCF4HZ2K.js.map} +0 -0
- /package/dist/{macro-resolve-WOXMPZDQ.js.map → macro-resolve-4GNZYHHW.js.map} +0 -0
- /package/dist/{network-poll-WHB62OEF.js.map → network-poll-DCZ5ZNLP.js.map} +0 -0
- /package/dist/{new-IKZBYBNK.js.map → new-6KZYJTJG.js.map} +0 -0
- /package/dist/{open-UA2VI6ZP.js.map → open-JPGEAJHJ.js.map} +0 -0
- /package/dist/{perf-DICS3VKH.js.map → perf-5X367PRP.js.map} +0 -0
- /package/dist/{pointer-down-2XPRZFJC.js.map → pointer-down-5OAUDDNR.js.map} +0 -0
- /package/dist/{pointer-drag-7NY4BOLH.js.map → pointer-drag-LIW5PY5P.js.map} +0 -0
- /package/dist/{pointer-move-FWEXMH37.js.map → pointer-move-7AMURLJD.js.map} +0 -0
- /package/dist/{pointer-up-VU2OHK5D.js.map → pointer-up-EY652YWL.js.map} +0 -0
- /package/dist/{press-W7IZ3FCX.js.map → press-UIAE5XEF.js.map} +0 -0
- /package/dist/{product-video-XCZ6CHR5.js.map → product-video-B6TLS7VC.js.map} +0 -0
- /package/dist/{providers-XCNSU3T6.js.map → providers-AERTX6X4.js.map} +0 -0
- /package/dist/{research-AYCKHOWK.js.map → research-AJH6ECYW.js.map} +0 -0
- /package/dist/{review-PP2UNSMJ.js.map → review-RN6XF2YB.js.map} +0 -0
- /package/dist/{review-desktop-3JOJFUEJ.js.map → review-desktop-UJOUS7K2.js.map} +0 -0
- /package/dist/{rpc-7EPTJQQ6.js.map → rpc-VS5Y5FUT.js.map} +0 -0
- /package/dist/{run-P6UJS3D4.js.map → run-EVRIQW7S.js.map} +0 -0
- /package/dist/{screencast-start-ZZYNH2HT.js.map → screencast-start-U6J4FYU4.js.map} +0 -0
- /package/dist/{screencast-stop-Y6ADFOFA.js.map → screencast-stop-EQUPRGMP.js.map} +0 -0
- /package/dist/{screenshot-CJB7PMAF.js.map → screenshot-BENYGC36.js.map} +0 -0
- /package/dist/{scroll-BP5MA4ZT.js.map → scroll-3OALQLX2.js.map} +0 -0
- /package/dist/{scroll-into-view-O3RDWLM2.js.map → scroll-into-view-SNZKBIVB.js.map} +0 -0
- /package/dist/{select-QLCNRI36.js.map → select-JDZDDC3Y.js.map} +0 -0
- /package/dist/{serve-OO2MQWGL.js.map → serve-LOC6ESJ4.js.map} +0 -0
- /package/dist/{shopping-UYHCYPAH.js.map → shopping-267OAYGM.js.map} +0 -0
- /package/dist/{snapshot-SXYZ3CMC.js.map → snapshot-ASYI5UFR.js.map} +0 -0
- /package/dist/{status-AL2AHVA5.js.map → status-47CI4LJX.js.map} +0 -0
- /package/dist/{status-QQW7REK4.js.map → status-N4O6DJTF.js.map} +0 -0
- /package/dist/{status-capabilities-AVHJYQQQ.js.map → status-capabilities-C777JZG4.js.map} +0 -0
- /package/dist/{text-B6Z47EOA.js.map → text-MS2653MW.js.map} +0 -0
- /package/dist/{type-LR3F3SQY.js.map → type-UMPSDACC.js.map} +0 -0
- /package/dist/{uncheck-5PJEHR7J.js.map → uncheck-2OZ56D42.js.map} +0 -0
- /package/dist/{upload-HQ3QN2OW.js.map → upload-CD7PRH54.js.map} +0 -0
- /package/dist/{use-KFZLMRUH.js.map → use-MO67AGG7.js.map} +0 -0
- /package/dist/{value-TKUFUK5I.js.map → value-4GI2LRUY.js.map} +0 -0
- /package/dist/{visible-P5Z2N2QR.js.map → visible-VSUFGRFZ.js.map} +0 -0
- /package/dist/{wait-BYSHJPSC.js.map → wait-OQYMFENT.js.map} +0 -0
- /package/dist/{windows-6GTD25EU.js.map → windows-75W2JCW7.js.map} +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"expectedCounts": {
|
|
4
4
|
"cliCommands": 77,
|
|
5
5
|
"tools": 70,
|
|
6
|
+
"cliToolPairs": 67,
|
|
6
7
|
"opsCommands": 59,
|
|
7
8
|
"canvasCommands": 35
|
|
8
9
|
},
|
|
@@ -34,7 +35,8 @@
|
|
|
34
35
|
"Mode semantics documented",
|
|
35
36
|
"Generated help first-contact owners documented",
|
|
36
37
|
"Onboarding metadata owner documented",
|
|
37
|
-
"First-run onboarding proof owner documented"
|
|
38
|
+
"First-run onboarding proof owner documented",
|
|
39
|
+
"Hardcoded public-surface counts documented and validator-covered"
|
|
38
40
|
],
|
|
39
41
|
"firstContactOwners": [
|
|
40
42
|
"src/cli/help.ts",
|
|
@@ -26,6 +26,30 @@ $CLI_PREFIX status --daemon --output-format json
|
|
|
26
26
|
EOF
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
print_extension_readiness() {
|
|
30
|
+
cat <<EOF
|
|
31
|
+
# Extension readiness preflight:
|
|
32
|
+
$CLI_PREFIX status --daemon --output-format json
|
|
33
|
+
# Continue only when data.fingerprintCurrent === true, data.relay.extensionConnected === true, and data.relay.extensionHandshakeComplete === true.
|
|
34
|
+
# Treat data.relay.opsConnected, data.relay.canvasConnected, and data.relay.cdpConnected as diagnostic or lane-specific presence fields.
|
|
35
|
+
EOF
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
print_pinterest_multi_pin_harvest_guidance() {
|
|
39
|
+
cat <<EOF
|
|
40
|
+
# Multi-pin Pinterest harvest agent pattern. This is guidance over inspiredesign harvest, not a standalone product workflow.
|
|
41
|
+
# 1. Run the query discovery command above with --query and --provider social/pinterest.
|
|
42
|
+
# 2. Read meta.discovery.acceptedUrls from the JSON output or artifact metadata.
|
|
43
|
+
# 3. Keep only canonical https://www.pinterest.com/pin/<id>/ URLs.
|
|
44
|
+
# 4. Run one canonical harvest per selected pin:
|
|
45
|
+
$CLI_PREFIX inspiredesign harvest --brief "Premium digital photography studio landing page" --provider social/pinterest --url "https://www.pinterest.com/pin/<pin-id>/" --max-references 1 --visual-evidence required --browser-mode extension --use-cookies --cookie-policy required --challenge-automation-mode browser_with_helper --mode json --output-format json --output-dir "artifacts/pinterest-harvest/<pin-id>"
|
|
46
|
+
# 5. Extension-mode canonical harvest opens the exact canonical pin in the extension before byte-backed pin-media extraction.
|
|
47
|
+
# 6. Trust only outputs with nextStepGuidance.readiness=ready, non-empty ranked-references.json, and pin-media-index.json, screenshot-index.json, or motion-evidence.json authority.
|
|
48
|
+
# 7. Use media-analysis.json for deterministic design facts from trusted saved pin media only. It is not readiness authority, and pin-media-index.json remains the only pin-media readiness authority.
|
|
49
|
+
# 8. Do not claim readable text extraction, exact copy, font families, OCR, model vision, Tesseract, OpenCV, Sharp, browser canvas analysis, new dependencies, or raw mediaAnalysis in canvas-plan.request.json.
|
|
50
|
+
EOF
|
|
51
|
+
}
|
|
52
|
+
|
|
29
53
|
print_help() {
|
|
30
54
|
cat <<'EOF'
|
|
31
55
|
OpenDevBrowser workflow router
|
|
@@ -84,11 +108,17 @@ EOF
|
|
|
84
108
|
print_daemon_preflight
|
|
85
109
|
cat <<EOF
|
|
86
110
|
# Pair with opendevbrowser-design-agent when the contract will flow into implementation or /canvas work.
|
|
87
|
-
|
|
111
|
+
# When --output-dir is omitted, inspect .opendevbrowser/inspiredesign/<runId> for workflow artifacts.
|
|
112
|
+
# URL-backed inspiredesign run forces deep capture for DOM/layout diagnostics; do not disable capture for URL-backed runs.
|
|
113
|
+
$CLI_PREFIX inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --include-prototype-guidance --mode json --output-format json
|
|
114
|
+
EOF
|
|
115
|
+
print_extension_readiness
|
|
116
|
+
cat <<EOF
|
|
88
117
|
$CLI_PREFIX inspiredesign harvest --brief "Premium digital photography studio landing page" --query "Pinterest premium digital photography studio landing page cinematic parallax portfolio" --provider social/pinterest --max-references 5 --visual-evidence required --browser-mode extension --use-cookies --cookie-policy required --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
89
118
|
# Inspect nextStepGuidance.readiness and doNotProceedIf before Canvas continuation. For non-ready evidence, follow recovery-first guidance.
|
|
90
|
-
# Review visual-evidence.json, screenshot-index.json, ranked-references.json, and meta-prompt.md before design or Canvas work.
|
|
119
|
+
# Review visual-evidence.json, screenshot-index.json, motion-evidence.json, pin-media-evidence.json, pin-media-index.json, media-analysis.json, ranked-references.json, and meta-prompt.md before design or Canvas work.
|
|
91
120
|
EOF
|
|
121
|
+
print_pinterest_multi_pin_harvest_guidance
|
|
92
122
|
;;
|
|
93
123
|
parallel-multipage-safe)
|
|
94
124
|
cat <<'EOF'
|
|
@@ -134,14 +164,14 @@ EOF
|
|
|
134
164
|
cat <<EOF
|
|
135
165
|
cat skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json
|
|
136
166
|
cat skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json
|
|
137
|
-
$CLI_PREFIX canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}'
|
|
167
|
+
$CLI_PREFIX canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}' --output-format json
|
|
138
168
|
# Read handshake before any mutation. Inspect planStatus, preflightState, generationPlanRequirements.allowedValues, generationPlanIssues, and guidance.recommendedNextCommands.
|
|
139
|
-
$CLI_PREFIX canvas --command canvas.plan.set --params-file skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json
|
|
169
|
+
$CLI_PREFIX canvas --command canvas.plan.set --params-file skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json --output-format json
|
|
140
170
|
# Replace placeholders in the plan file with canvasSessionId, leaseId, and documentId from the open response.
|
|
141
171
|
# If canvas.plan.set succeeds with planStatus=accepted or preflightState=plan_accepted, follow the returned guidance into canvas.document.patch.
|
|
142
172
|
# If canvas.plan.set returns generation_plan_invalid, read guidance.nextStepGuidance, guidance.paramsExamples, guidance.fieldExamples, guidance.validationChecks, and guidance.doNotProceedIf, then repair the params file and retry.
|
|
143
173
|
# Optional diagnostics after generation_plan_invalid:
|
|
144
|
-
# $CLI_PREFIX canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}'
|
|
174
|
+
# $CLI_PREFIX canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}' --output-format json
|
|
145
175
|
# or re-read with canvas.capabilities.get to inspect generationPlanIssues before resubmitting canvas.plan.set.
|
|
146
176
|
EOF
|
|
147
177
|
;;
|
|
@@ -151,10 +181,10 @@ EOF
|
|
|
151
181
|
cat skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md
|
|
152
182
|
cat skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json
|
|
153
183
|
cat skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json
|
|
154
|
-
$CLI_PREFIX canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}'
|
|
184
|
+
$CLI_PREFIX canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}' --output-format json
|
|
155
185
|
# Verify every feedback item is target-attributed and uses approved categories. If feedback returns preflight-blocker, return to canvas.plan.set first.
|
|
156
|
-
$CLI_PREFIX canvas --command canvas.preview.refresh --params '{"requestId":"req_refresh_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","refreshMode":"full"}'
|
|
157
|
-
$CLI_PREFIX canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}'
|
|
186
|
+
$CLI_PREFIX canvas --command canvas.preview.refresh --params '{"requestId":"req_refresh_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","refreshMode":"full"}' --output-format json
|
|
187
|
+
$CLI_PREFIX canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}' --output-format json
|
|
158
188
|
# Save should fail or warn when requiredBeforeSave governance blocks remain unresolved.
|
|
159
189
|
EOF
|
|
160
190
|
;;
|
|
@@ -168,6 +198,8 @@ EOF
|
|
|
168
198
|
release-direct-gates)
|
|
169
199
|
print_daemon_preflight
|
|
170
200
|
cat <<'EOF'
|
|
201
|
+
# artifacts/release/vX.Y.Z paths are local-only release proof outputs.
|
|
202
|
+
# Normal omitted workflow outputs persist under .opendevbrowser/<workflow>/<runId>.
|
|
171
203
|
mkdir -p artifacts/release/vX.Y.Z
|
|
172
204
|
node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json
|
|
173
205
|
node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json
|
|
@@ -197,6 +229,8 @@ OPENCODE_CONFIG_DIR="$WORKDIR/config" CODEX_HOME="$WORKDIR/codex-home" CLAUDECOD
|
|
|
197
229
|
./skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh
|
|
198
230
|
./skills/opendevbrowser-research/scripts/validate-skill-assets.sh
|
|
199
231
|
./skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh
|
|
232
|
+
# Explicit artifacts/skill-runtime-audit outputs are local-only audit proof.
|
|
233
|
+
# Omitted provider workflow outputs persist under .opendevbrowser/<workflow>/<runId>.
|
|
200
234
|
node scripts/skill-runtime-audit.mjs --smoke --out artifacts/skill-runtime-audit/smoke.json
|
|
201
235
|
node scripts/skill-runtime-audit.mjs --out artifacts/skill-runtime-audit/full.json
|
|
202
236
|
EOF
|
|
@@ -207,22 +241,29 @@ EOF
|
|
|
207
241
|
# Public-first YouTube transcript probe
|
|
208
242
|
node $TRANSCRIPT_PROBE_PATH --url "https://www.youtube.com/watch?v=aircAruvnKk" --youtube-mode auto --out artifacts/capability-fix/youtube-transcript-auto.json
|
|
209
243
|
|
|
244
|
+
# When --output-dir or --out is omitted, inspect .opendevbrowser/<workflow>/<runId> for workflow artifacts.
|
|
245
|
+
|
|
210
246
|
# Evidence-gated research primitive with explicit public source families
|
|
211
247
|
# Load opendevbrowser-research first, then inspect records.json, context.json, meta.json, and report.md before publishing claims.
|
|
212
248
|
$CLI_PREFIX research run --topic "Chrome extension debugging workflows" --days 30 --sources web,community --mode json --output-format json
|
|
213
249
|
|
|
214
250
|
# Deterministic shopping reruns with explicit providers
|
|
215
|
-
$CLI_PREFIX shopping run --query "wireless ergonomic mouse" --providers shopping/bestbuy,shopping/ebay --budget 150 --browser-mode managed --mode json --output-format json
|
|
216
|
-
$CLI_PREFIX shopping run --query "27 inch 4k monitor" --providers shopping/bestbuy,shopping/ebay --budget 350 --sort lowest_price --browser-mode managed --mode json --output-format json
|
|
251
|
+
$CLI_PREFIX shopping run --query "wireless ergonomic mouse" --providers shopping/bestbuy,shopping/ebay --budget 150 --browser-mode managed --use-cookies --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
252
|
+
$CLI_PREFIX shopping run --query "27 inch 4k monitor" --providers shopping/bestbuy,shopping/ebay --budget 350 --sort lowest_price --browser-mode managed --use-cookies --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
217
253
|
|
|
218
254
|
# Public-reference inspiredesign contract synthesis
|
|
219
|
-
$CLI_PREFIX inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --
|
|
220
|
-
|
|
255
|
+
$CLI_PREFIX inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --include-prototype-guidance --mode json --output-format json
|
|
256
|
+
EOF
|
|
257
|
+
print_extension_readiness
|
|
258
|
+
cat <<EOF
|
|
221
259
|
# Browser-native Pinterest recipe. Continue only when nextStepGuidance.readiness is ready.
|
|
222
260
|
$CLI_PREFIX inspiredesign harvest --brief "Premium digital photography studio landing page" --query "Pinterest premium digital photography studio landing page cinematic parallax portfolio" --provider social/pinterest --max-references 5 --visual-evidence required --browser-mode extension --use-cookies --cookie-policy required --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
261
|
+
EOF
|
|
262
|
+
print_pinterest_multi_pin_harvest_guidance
|
|
263
|
+
cat <<EOF
|
|
223
264
|
|
|
224
265
|
# Region note: advisory unless output reports meta.selection.region_authoritative=true
|
|
225
|
-
$CLI_PREFIX shopping run --query "wireless earbuds" --providers shopping/amazon --region us --browser-mode managed --mode json --output-format json
|
|
266
|
+
$CLI_PREFIX shopping run --query "wireless earbuds" --providers shopping/amazon --region us --browser-mode managed --use-cookies --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
226
267
|
EOF
|
|
227
268
|
;;
|
|
228
269
|
surface-audit)
|
|
@@ -236,24 +277,24 @@ EOF
|
|
|
236
277
|
ops-channel-check)
|
|
237
278
|
cat <<EOF
|
|
238
279
|
$CLI_PREFIX serve
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
280
|
+
EOF
|
|
281
|
+
print_daemon_preflight
|
|
282
|
+
cat <<EOF
|
|
242
283
|
$CLI_PREFIX launch --extension-only --wait-for-extension --output-format json
|
|
243
284
|
$CLI_PREFIX status --daemon --output-format json
|
|
244
|
-
# Verify fingerprintCurrent=true,
|
|
285
|
+
# Verify data.fingerprintCurrent=true, data.relay.extensionConnected=true, and data.relay.extensionHandshakeComplete=true after launch. Treat data.relay.opsConnected as diagnostic presence only.
|
|
245
286
|
cat skills/opendevbrowser-best-practices/assets/templates/ops-request-envelope.json
|
|
246
287
|
EOF
|
|
247
288
|
;;
|
|
248
289
|
cdp-channel-check)
|
|
249
290
|
cat <<EOF
|
|
250
291
|
$CLI_PREFIX serve
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
292
|
+
EOF
|
|
293
|
+
print_daemon_preflight
|
|
294
|
+
cat <<EOF
|
|
254
295
|
$CLI_PREFIX launch --extension-only --extension-legacy --wait-for-extension --output-format json
|
|
255
296
|
$CLI_PREFIX status --daemon --output-format json
|
|
256
|
-
# Verify fingerprintCurrent=true and
|
|
297
|
+
# Verify data.fingerprintCurrent=true, data.relay.extensionConnected=true, and data.relay.extensionHandshakeComplete=true after launch. data.relay.cdpConnected is active-legacy-session-only and true only while the legacy /cdp session is active.
|
|
257
298
|
cat skills/opendevbrowser-best-practices/assets/templates/cdp-forward-envelope.json
|
|
258
299
|
EOF
|
|
259
300
|
;;
|
|
@@ -98,3 +98,31 @@ resolve_odb_cli() {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
resolve_odb_cli
|
|
101
|
+
|
|
102
|
+
require_odb_daemon_current() {
|
|
103
|
+
local status_json
|
|
104
|
+
|
|
105
|
+
if ! status_json="$("${ODB_CLI[@]}" status --daemon --output-format json)"; then
|
|
106
|
+
echo "OpenDevBrowser daemon preflight failed. Run: ${ODB_CLI[*]} status --daemon --output-format json" >&2
|
|
107
|
+
return 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
if ! printf '%s\n' "$status_json" | node -e '
|
|
111
|
+
const fs = require("node:fs");
|
|
112
|
+
const input = fs.readFileSync(0, "utf8");
|
|
113
|
+
let payload;
|
|
114
|
+
try {
|
|
115
|
+
payload = JSON.parse(input);
|
|
116
|
+
} catch {
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
if (payload?.data?.fingerprintCurrent !== true) {
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
'; then
|
|
123
|
+
echo "OpenDevBrowser daemon is not current. Expected data.fingerprintCurrent === true from:" >&2
|
|
124
|
+
echo "${ODB_CLI[*]} status --daemon --output-format json" >&2
|
|
125
|
+
printf '%s\n' "$status_json" >&2
|
|
126
|
+
return 1
|
|
127
|
+
fi
|
|
128
|
+
}
|
|
@@ -68,8 +68,16 @@ const workflowMarkers = [
|
|
|
68
68
|
"inspiredesign run",
|
|
69
69
|
"inspiredesign harvest",
|
|
70
70
|
"social/pinterest",
|
|
71
|
+
"meta.discovery.acceptedUrls",
|
|
72
|
+
"Multi-pin Pinterest harvest agent pattern",
|
|
73
|
+
"one canonical harvest per selected pin",
|
|
74
|
+
"opens the exact canonical pin in the extension",
|
|
71
75
|
"nextStepGuidance.readiness",
|
|
72
76
|
"visual-evidence.json",
|
|
77
|
+
"pin-media-index.json",
|
|
78
|
+
"media-analysis.json",
|
|
79
|
+
"deterministic design facts from trusted saved pin media",
|
|
80
|
+
"raw mediaAnalysis in canvas-plan.request.json",
|
|
73
81
|
"--include-prototype-guidance",
|
|
74
82
|
"canvas-preflight",
|
|
75
83
|
"canvas-feedback-eval",
|
|
@@ -98,6 +106,13 @@ const parityGateMarkers = [
|
|
|
98
106
|
|
|
99
107
|
const providerWorkflowPath = "artifacts/provider-workflows.md";
|
|
100
108
|
const providerWorkflowMarkers = [
|
|
109
|
+
"Agent Pattern F: Pinterest Multi-Pin Design Harvest",
|
|
110
|
+
"meta.discovery.acceptedUrls",
|
|
111
|
+
"not a new product workflow",
|
|
112
|
+
"opens the exact pin in the extension",
|
|
113
|
+
"media-analysis.json",
|
|
114
|
+
"`pin-media-index.json` remains the only pin-media readiness authority",
|
|
115
|
+
"raw `mediaAnalysis` in `canvas-plan.request.json`",
|
|
101
116
|
"## Release evidence lane",
|
|
102
117
|
"node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json",
|
|
103
118
|
"node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json",
|
|
@@ -88,6 +88,19 @@ if (!domain || !command) {
|
|
|
88
88
|
|
|
89
89
|
const flags = parseFlags(rest);
|
|
90
90
|
|
|
91
|
+
if (domain === "status") {
|
|
92
|
+
emitJson({
|
|
93
|
+
data: {
|
|
94
|
+
fingerprintCurrent: true,
|
|
95
|
+
relay: {
|
|
96
|
+
extensionConnected: true,
|
|
97
|
+
extensionHandshakeComplete: true
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
process.exit(0);
|
|
102
|
+
}
|
|
103
|
+
|
|
91
104
|
if (domain === "research" && command === "run") {
|
|
92
105
|
const topic = String(flags.topic || "fixture topic");
|
|
93
106
|
const days = String(flags.days || "30");
|
|
@@ -169,6 +169,7 @@ Use when a redesign needs external references or when the brief explicitly asks
|
|
|
169
169
|
- Start with `artifacts/research-harvest-workflow.md`.
|
|
170
170
|
- Capture `3` to `5` live references with OpenDevBrowser.
|
|
171
171
|
- For Pinterest, use the browser-native `social/pinterest` recipe with extension mode and cookies instead of treating Pinterest as a default full provider.
|
|
172
|
+
- Before extension-mode Pinterest harvests, preflight `npx opendevbrowser status --daemon --output-format json` and continue only when `data.fingerprintCurrent === true`, `data.relay.extensionConnected === true`, and `data.relay.extensionHandshakeComplete === true`.
|
|
172
173
|
- Inspect `nextStepGuidance.readiness`, `doNotProceedIf`, and recovery commands before using the bundle.
|
|
173
174
|
- Record ready evidence in `assets/templates/reference-pattern-board.v1.json`.
|
|
174
175
|
- Turn the synthesis into contract deltas before implementation.
|
|
@@ -188,6 +189,7 @@ Use when starting from screenshots, mocks, or an existing page.
|
|
|
188
189
|
Use when the task should run through the design canvas.
|
|
189
190
|
|
|
190
191
|
- Start with `canvas.session.open`; use `canvas.capabilities.get` only after you have a `canvasSessionId`.
|
|
192
|
+
- Use `--output-format json` for Canvas CLI commands whenever you read returned IDs, statuses, guidance, or follow-up fields.
|
|
191
193
|
- Read the handshake and inspect `planStatus`, `preflightState`, `generationPlanRequirements.allowedValues`, `generationPlanIssues`, `guidance.recommendedNextCommands`, `guidance.nextStepGuidance`, params examples, field examples, validation checks, and do-not-proceed blockers before choosing the next command.
|
|
192
194
|
- Treat `preflightState="handshake_read"` as the normal first-step checkpoint before `canvas.plan.set`; if the handshake already reports `plan_invalid`, repair the plan instead of mutating.
|
|
193
195
|
- Fill the full design contract and extract the `generationPlan`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This file turns the design-agent skill into repeatable execution paths.
|
|
4
4
|
|
|
5
|
-
## Workflow A
|
|
5
|
+
## Workflow A - Contract-First Frontend Delivery
|
|
6
6
|
|
|
7
7
|
Use when the task starts from a PRD, issue, or user request.
|
|
8
8
|
|
|
@@ -37,7 +37,7 @@ Use when the task starts from a PRD, issue, or user request.
|
|
|
37
37
|
16. Implement the smallest coherent slice that satisfies the contract.
|
|
38
38
|
17. Validate in an isolated fixture first, then in a real browser before declaring the work complete.
|
|
39
39
|
|
|
40
|
-
## Workflow B
|
|
40
|
+
## Workflow B - Screenshot Or Existing-Page Audit
|
|
41
41
|
|
|
42
42
|
Use when a screenshot, mock, or live page is the starting point.
|
|
43
43
|
|
|
@@ -71,7 +71,7 @@ Use when a screenshot, mock, or live page is the starting point.
|
|
|
71
71
|
8. Record the audit in `assets/templates/design-audit-report.v1.md`.
|
|
72
72
|
9. Implement changes only after the contract reflects the intended end state.
|
|
73
73
|
|
|
74
|
-
## Workflow C
|
|
74
|
+
## Workflow C - `/canvas` Contract-Governed Iteration
|
|
75
75
|
|
|
76
76
|
Use when the work should flow through the OpenDevBrowser design canvas.
|
|
77
77
|
|
|
@@ -88,22 +88,24 @@ Use when the work should flow through the OpenDevBrowser design canvas.
|
|
|
88
88
|
|
|
89
89
|
Canonical command order:
|
|
90
90
|
|
|
91
|
+
Use `--output-format json` whenever returned IDs, statuses, guidance, or follow-up fields are read from Canvas command output.
|
|
92
|
+
|
|
91
93
|
```bash
|
|
92
|
-
npx opendevbrowser canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}'
|
|
94
|
+
npx opendevbrowser canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}' --output-format json
|
|
93
95
|
# Inspect planStatus, preflightState, generationPlanRequirements.allowedValues, generationPlanIssues, guidance.recommendedNextCommands, guidance.nextStepGuidance, guidance.paramsExamples, guidance.fieldExamples, guidance.validationChecks, and guidance.doNotProceedIf before continuing.
|
|
94
|
-
npx opendevbrowser canvas --command canvas.plan.set --params-file ./tmp/canvas-plan.json
|
|
96
|
+
npx opendevbrowser canvas --command canvas.plan.set --params-file ./tmp/canvas-plan.json --output-format json
|
|
95
97
|
# If canvas.plan.set succeeds with planStatus=accepted or preflightState=plan_accepted, follow the returned guidance into canvas.document.patch.
|
|
96
98
|
# If canvas.plan.set returns generation_plan_invalid, repair ./tmp/canvas-plan.json from guidance.paramsExamples before retrying.
|
|
97
99
|
# Optional diagnostics after generation_plan_invalid:
|
|
98
|
-
# npx opendevbrowser canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}'
|
|
100
|
+
# npx opendevbrowser canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}' --output-format json
|
|
99
101
|
# or re-read with canvas.capabilities.get to inspect generationPlanIssues before resubmitting canvas.plan.set.
|
|
100
|
-
npx opendevbrowser canvas --command canvas.document.patch --params-file ./tmp/canvas-patch.json
|
|
101
|
-
npx opendevbrowser canvas --command canvas.preview.render --params '{"requestId":"req_preview_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","projection":"canvas_html"}'
|
|
102
|
-
npx opendevbrowser canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}'
|
|
103
|
-
npx opendevbrowser canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}'
|
|
102
|
+
npx opendevbrowser canvas --command canvas.document.patch --params-file ./tmp/canvas-patch.json --output-format json
|
|
103
|
+
npx opendevbrowser canvas --command canvas.preview.render --params '{"requestId":"req_preview_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","projection":"canvas_html"}' --output-format json
|
|
104
|
+
npx opendevbrowser canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}' --output-format json
|
|
105
|
+
npx opendevbrowser canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}' --output-format json
|
|
104
106
|
```
|
|
105
107
|
|
|
106
|
-
## Workflow D
|
|
108
|
+
## Workflow D - Real-Surface Validation
|
|
107
109
|
|
|
108
110
|
Use when design quality must be demonstrated, not inferred.
|
|
109
111
|
|
|
@@ -123,7 +125,7 @@ Use when design quality must be demonstrated, not inferred.
|
|
|
123
125
|
- no console or network regressions caused by the UI change
|
|
124
126
|
7. If parity matters, repeat across supported surfaces before sign-off.
|
|
125
127
|
|
|
126
|
-
## Workflow E
|
|
128
|
+
## Workflow E - Performance Audit
|
|
127
129
|
|
|
128
130
|
Use when the screen is visually correct but interaction quality is poor.
|
|
129
131
|
|
|
@@ -143,7 +145,7 @@ npx opendevbrowser screenshot --session-id <session-id>
|
|
|
143
145
|
npx opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
144
146
|
```
|
|
145
147
|
|
|
146
|
-
## Workflow F
|
|
148
|
+
## Workflow F - Ship Audit
|
|
147
149
|
|
|
148
150
|
Use after implementation and before final sign-off.
|
|
149
151
|
|
|
@@ -62,7 +62,7 @@ npx opendevbrowser launch --no-extension --start-url http://127.0.0.1:3000/previ
|
|
|
62
62
|
npx opendevbrowser snapshot --session-id <session-id>
|
|
63
63
|
npx opendevbrowser screenshot --session-id <session-id>
|
|
64
64
|
npx opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
65
|
-
npx opendevbrowser canvas --command canvas.preview.render --params '{"canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","projection":"canvas_html"}'
|
|
65
|
+
npx opendevbrowser canvas --command canvas.preview.render --params '{"canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","projection":"canvas_html"}' --output-format json
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
Use the same fixture states as the contract when comparing preview and integrated behavior.
|
|
@@ -29,12 +29,16 @@ npx opendevbrowser inspiredesign harvest \
|
|
|
29
29
|
--max-references 5 \
|
|
30
30
|
--visual-evidence required \
|
|
31
31
|
--browser-mode managed \
|
|
32
|
-
--mode json
|
|
32
|
+
--mode json \
|
|
33
|
+
--output-format json
|
|
33
34
|
```
|
|
34
35
|
|
|
35
|
-
Use the browser-native Pinterest site recipe when the brief specifically needs logged-in Pinterest search. Pinterest is not a default full social provider, and the workflow should not widen to unrelated sources without user confirmation
|
|
36
|
+
Use the browser-native Pinterest site recipe when the brief specifically needs logged-in Pinterest search. Pinterest is not a default full social provider, and the workflow should not widen to unrelated sources without user confirmation.
|
|
37
|
+
|
|
38
|
+
Before the extension-mode Pinterest harvest, preflight the daemon with JSON status output and continue only when `data.fingerprintCurrent === true`, `data.relay.extensionConnected === true`, and `data.relay.extensionHandshakeComplete === true`:
|
|
36
39
|
|
|
37
40
|
```bash
|
|
41
|
+
npx opendevbrowser status --daemon --output-format json
|
|
38
42
|
npx opendevbrowser inspiredesign harvest \
|
|
39
43
|
--brief "Premium digital photography studio landing page" \
|
|
40
44
|
--query "Pinterest premium digital photography studio landing page cinematic parallax portfolio" \
|
|
@@ -57,7 +61,8 @@ npx opendevbrowser inspiredesign harvest \
|
|
|
57
61
|
--url https://example.com/reference-a \
|
|
58
62
|
--url https://example.com/reference-b \
|
|
59
63
|
--visual-evidence required \
|
|
60
|
-
--mode json
|
|
64
|
+
--mode json \
|
|
65
|
+
--output-format json
|
|
61
66
|
```
|
|
62
67
|
|
|
63
68
|
Harvest defaults:
|
|
@@ -82,11 +87,13 @@ Then inspect these files before `/canvas` or code changes:
|
|
|
82
87
|
1. `advanced-brief.md` for the reference-first creative brief.
|
|
83
88
|
2. `ranked-references.json` for rank, score, confidence, visual strengths, visual risks, rejected references, and selection reasons.
|
|
84
89
|
3. `visual-evidence.json` and `screenshot-index.json` for artifact-relative PNG paths, hashes, byte counts, viewport metadata when available, provenance, and warnings.
|
|
85
|
-
4.
|
|
86
|
-
5. `
|
|
87
|
-
6. `
|
|
90
|
+
4. `motion-evidence.json` for screencast replay and preview paths when motion evidence is captured.
|
|
91
|
+
5. `pin-media-evidence.json` and `pin-media-index.json` for persisted first-party Pinterest pin media proof. Remote media URLs alone are not proof.
|
|
92
|
+
6. PNG files under `visual-evidence/<referenceId>/viewport.png` and pin-media files under `pin-media-evidence/<referenceId>/` for actual visual review.
|
|
93
|
+
7. `meta-prompt.md` for borrow guidance, reject guidance, motion posture, accessibility constraints, no-copy warning, and validation gates.
|
|
94
|
+
8. `canvas-plan.request.json` and `design-agent-handoff.json` only after the visual synthesis is accepted and `nextStepGuidance.readiness` is `ready`.
|
|
88
95
|
|
|
89
|
-
JSON files are metadata-only. They must not contain base64 screenshots, absolute temp paths, full DOM,
|
|
96
|
+
JSON files are metadata-only. They must not contain base64 screenshots, absolute temp paths, full DOM, full snapshot text, or remote media as product-ready proof.
|
|
90
97
|
|
|
91
98
|
## Manual Evidence Fallback
|
|
92
99
|
|
|
@@ -67,6 +67,9 @@ cat skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.
|
|
|
67
67
|
cat skills/opendevbrowser-design-agent/artifacts/external-pattern-synthesis.md
|
|
68
68
|
cat skills/opendevbrowser-design-agent/artifacts/component-pattern-index.md
|
|
69
69
|
cat skills/opendevbrowser-design-agent/artifacts/existing-surface-adaptation.md
|
|
70
|
+
# Daemon preflight for extension-mode Pinterest harvest:
|
|
71
|
+
$CLI_PREFIX status --daemon --output-format json
|
|
72
|
+
# Continue only when data.fingerprintCurrent === true, data.relay.extensionConnected === true, and data.relay.extensionHandshakeComplete === true.
|
|
70
73
|
$CLI_PREFIX inspiredesign harvest --brief "Premium digital photography studio landing page" --query "Pinterest premium digital photography studio landing page cinematic parallax portfolio" --provider social/pinterest --max-references 5 --visual-evidence required --browser-mode extension --use-cookies --cookie-policy required --challenge-automation-mode browser_with_helper --mode json --output-format json
|
|
71
74
|
# Inspect nextStepGuidance.readiness and doNotProceedIf first. Use recovery-first guidance unless readiness is ready.
|
|
72
75
|
$CLI_PREFIX launch --no-extension --start-url https://example.com
|
|
@@ -102,19 +105,19 @@ cat skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md
|
|
|
102
105
|
cat skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md
|
|
103
106
|
cat skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json
|
|
104
107
|
./skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh ./tmp/design-contract.json > ./tmp/canvas-plan.json
|
|
105
|
-
$CLI_PREFIX canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}'
|
|
108
|
+
$CLI_PREFIX canvas --command canvas.session.open --params '{"requestId":"req_open_01","browserSessionId":"<browser-session-id>","documentId":null,"repoPath":null,"mode":"dual-track"}' --output-format json
|
|
106
109
|
# Inspect planStatus, preflightState, generationPlanRequirements.allowedValues, generationPlanIssues, guidance.recommendedNextCommands, guidance.nextStepGuidance, guidance.paramsExamples, guidance.fieldExamples, guidance.validationChecks, and guidance.doNotProceedIf before continuing.
|
|
107
110
|
# Treat preflightState=handshake_read as the normal first-step checkpoint before canvas.plan.set.
|
|
108
|
-
$CLI_PREFIX canvas --command canvas.plan.set --params-file ./tmp/canvas-plan.json
|
|
111
|
+
$CLI_PREFIX canvas --command canvas.plan.set --params-file ./tmp/canvas-plan.json --output-format json
|
|
109
112
|
# If canvas.plan.set succeeds with planStatus=accepted or preflightState=plan_accepted, follow the returned guidance into canvas.document.patch.
|
|
110
113
|
# If canvas.plan.set returns generation_plan_invalid, repair ./tmp/canvas-plan.json from guidance.paramsExamples before retrying.
|
|
111
114
|
# Optional diagnostics after generation_plan_invalid:
|
|
112
|
-
# $CLI_PREFIX canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}'
|
|
115
|
+
# $CLI_PREFIX canvas --command canvas.plan.get --params '{"requestId":"req_plan_get_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>"}' --output-format json
|
|
113
116
|
# or re-read with canvas.capabilities.get to inspect generationPlanIssues before resubmitting canvas.plan.set.
|
|
114
|
-
$CLI_PREFIX canvas --command canvas.document.patch --params-file ./tmp/canvas-patch.json
|
|
115
|
-
$CLI_PREFIX canvas --command canvas.preview.render --params '{"requestId":"req_preview_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","prototypeId":"<prototype-id>"}'
|
|
116
|
-
$CLI_PREFIX canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}'
|
|
117
|
-
$CLI_PREFIX canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}'
|
|
117
|
+
$CLI_PREFIX canvas --command canvas.document.patch --params-file ./tmp/canvas-patch.json --output-format json
|
|
118
|
+
$CLI_PREFIX canvas --command canvas.preview.render --params '{"requestId":"req_preview_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","prototypeId":"<prototype-id>"}' --output-format json
|
|
119
|
+
$CLI_PREFIX canvas --command canvas.feedback.poll --params '{"requestId":"req_feedback_01","canvasSessionId":"<canvas-session-id>","documentId":"<document-id>","targetId":"<target-id>","afterCursor":null}' --output-format json
|
|
120
|
+
$CLI_PREFIX canvas --command canvas.document.save --params '{"requestId":"req_save_01","canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","documentId":"<document-id>","repoPath":null}' --output-format json
|
|
118
121
|
EOF
|
|
119
122
|
;;
|
|
120
123
|
real-surface-validation)
|
|
@@ -41,7 +41,7 @@ Use this skill when a task asks for animation, motion language, transition syste
|
|
|
41
41
|
|
|
42
42
|
## InspireDesign Harvest Inputs
|
|
43
43
|
|
|
44
|
-
When an InspireDesign harvest bundle is available, inspect `nextStepGuidance.readiness` and `doNotProceedIf` before selecting motion patterns. Read `meta-prompt.md`, `ranked-references.json`, `visual-evidence.json`, `screenshot-index.json`, and the referenced PNG files only after the bundle is ready or while following recovery guidance. Treat harvested motion posture as evidence-backed design intent, not permission to add dependencies or copy source-brand choreography. Carry accepted cues into the motion contract with explicit reduced-motion behavior, device posture, frame budget, and temporal proof requirements.
|
|
44
|
+
When an InspireDesign harvest bundle is available, inspect `nextStepGuidance.readiness` and `doNotProceedIf` before selecting motion patterns. Read `meta-prompt.md`, `ranked-references.json`, `visual-evidence.json`, `screenshot-index.json`, `motion-evidence.json`, `pin-media-evidence.json`, `pin-media-index.json`, and the referenced PNG or pin-media files only after the bundle is ready or while following recovery guidance. Treat harvested motion posture as evidence-backed design intent, not permission to add dependencies or copy source-brand choreography. Pinterest video posters can support still-image cues through pin-media evidence, but motion timing still requires screencast authority. Carry accepted cues into the motion contract with explicit reduced-motion behavior, device posture, frame budget, and temporal proof requirements.
|
|
45
45
|
|
|
46
46
|
## Motion Contract
|
|
47
47
|
|
|
@@ -65,11 +65,12 @@ The `render-video-brief.sh` helper adds:
|
|
|
65
65
|
## What the User Should Do
|
|
66
66
|
|
|
67
67
|
1. Pick product URL or product name.
|
|
68
|
-
2.
|
|
69
|
-
3.
|
|
70
|
-
4.
|
|
68
|
+
2. Before daemon-backed `product-video run` workflows, run `opendevbrowser status --daemon --output-format json` and continue only when `data.fingerprintCurrent === true`.
|
|
69
|
+
3. Run collection workflow and confirm output pack path.
|
|
70
|
+
4. Review generated manifest/copy/features for accuracy and check whether the pack is visual-ready or metadata-first.
|
|
71
|
+
5. Run `./skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh` to generate production instructions and visual sourcing notes.
|
|
71
72
|
Canonical helper path: `./skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh`.
|
|
72
|
-
|
|
73
|
+
6. If no visuals were captured, source or capture visuals before handing the brief to the editor/creator pipeline.
|
|
73
74
|
|
|
74
75
|
## Parallel Multitab Alignment
|
|
75
76
|
|
|
@@ -9,5 +9,6 @@ fi
|
|
|
9
9
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
10
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
11
11
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
12
|
+
require_odb_daemon_current
|
|
12
13
|
|
|
13
14
|
"${ODB_CLI[@]}" product-video run --product-url "$1" --include-screenshots --include-all-images=false
|
|
@@ -10,6 +10,7 @@ VALUE="$1"
|
|
|
10
10
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
11
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
12
12
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
13
|
+
require_odb_daemon_current
|
|
13
14
|
|
|
14
15
|
if [[ "$VALUE" == http* ]]; then
|
|
15
16
|
"${ODB_CLI[@]}" product-video run --product-url "$VALUE"
|
|
@@ -9,5 +9,6 @@ fi
|
|
|
9
9
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
10
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
11
11
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
12
|
+
require_odb_daemon_current
|
|
12
13
|
|
|
13
14
|
"${ODB_CLI[@]}" product-video run --product-url "$1" --include-all-images --include-screenshots=false
|
|
@@ -62,6 +62,10 @@ for rel in scripts/collect-product.sh scripts/capture-screenshots.sh scripts/dow
|
|
|
62
62
|
echo "Workflow wrapper missing ODB_CLI invocation: $rel" >&2
|
|
63
63
|
status=1
|
|
64
64
|
fi
|
|
65
|
+
if [[ "$rel" == "scripts/collect-product.sh" || "$rel" == "scripts/capture-screenshots.sh" || "$rel" == "scripts/download-images.sh" || "$rel" == "scripts/write-manifest.sh" ]] && ! grep -Fq "require_odb_daemon_current" "$root/$rel"; then
|
|
66
|
+
echo "Workflow wrapper missing daemon fingerprint preflight: $rel" >&2
|
|
67
|
+
status=1
|
|
68
|
+
fi
|
|
65
69
|
fi
|
|
66
70
|
done
|
|
67
71
|
|
|
@@ -13,6 +13,7 @@ mkdir -p "$OUTDIR"
|
|
|
13
13
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
14
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
15
15
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
16
|
+
require_odb_daemon_current
|
|
16
17
|
|
|
17
18
|
cmd=("${ODB_CLI[@]}" product-video run --output-dir "$OUTDIR" --output-format json)
|
|
18
19
|
if [[ "$VALUE" == http* ]]; then
|
|
@@ -38,6 +38,7 @@ Load this skill before research tasks. Use it to plan source families, gather pr
|
|
|
38
38
|
|
|
39
39
|
## Core Rules
|
|
40
40
|
|
|
41
|
+
- Before daemon-backed `research run` workflows, run `opendevbrowser status --daemon --output-format json` and continue only when `data.fingerprintCurrent === true`.
|
|
41
42
|
- Define timebox first (`--days` or `--from/--to`).
|
|
42
43
|
- Choose explicit source families before invoking the CLI primitive: `web`, `community`, `social`, `shopping`, or a deliberate combination such as `web,community`.
|
|
43
44
|
- Treat `auto` as a source-family selector, not a reliability guarantee.
|
|
@@ -12,5 +12,6 @@ MODE="$2"
|
|
|
12
12
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
13
13
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
14
14
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
15
|
+
require_odb_daemon_current
|
|
15
16
|
|
|
16
17
|
"${ODB_CLI[@]}" research run --topic "$TOPIC" --mode "$MODE"
|
|
@@ -14,6 +14,7 @@ SOURCES="${4:-}"
|
|
|
14
14
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
15
15
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
16
16
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
17
|
+
require_odb_daemon_current
|
|
17
18
|
|
|
18
19
|
cmd=("${ODB_CLI[@]}" research run --topic "$TOPIC" --days "$DAYS" --mode "$MODE")
|
|
19
20
|
if [[ -n "$SOURCES" ]]; then
|
|
@@ -153,6 +153,10 @@ for rel in scripts/run-research.sh scripts/render-output.sh scripts/write-artifa
|
|
|
153
153
|
echo "Workflow wrapper missing ODB_CLI invocation: $rel" >&2
|
|
154
154
|
status=1
|
|
155
155
|
fi
|
|
156
|
+
if ! grep -Fq "require_odb_daemon_current" "$root/$rel"; then
|
|
157
|
+
echo "Workflow wrapper missing daemon fingerprint preflight: $rel" >&2
|
|
158
|
+
status=1
|
|
159
|
+
fi
|
|
156
160
|
fi
|
|
157
161
|
done
|
|
158
162
|
|
|
@@ -12,6 +12,7 @@ OUTDIR="$2"
|
|
|
12
12
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
13
13
|
# shellcheck source=../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh
|
|
14
14
|
source "$script_dir/../../opendevbrowser-best-practices/scripts/resolve-odb-cli.sh"
|
|
15
|
+
require_odb_daemon_current
|
|
15
16
|
|
|
16
17
|
json_output="$("${ODB_CLI[@]}" research run --topic "$TOPIC" --mode path --output-dir "$OUTDIR" --output-format json)"
|
|
17
18
|
printf '%s\n' "$json_output"
|