opendevbrowser 0.0.33 → 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-JSPFVWZ6.js → accessibility-snapshot-TAFPVLZN.js} +9 -9
- package/dist/{active-window-2OB2MSCR.js → active-window-MHFMC6NQ.js} +9 -9
- package/dist/{annotate-VDZBZBKZ.js → annotate-5ZFRFQ4B.js} +8 -8
- package/dist/{attr-7XIO4MCH.js → attr-MBF2UCRF.js} +8 -8
- 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 +51 -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/browser/screencast-recorder.d.ts +1 -0
- package/dist/browser/screencast-recorder.d.ts.map +1 -1
- package/dist/{canvas-N4PAA274.js → canvas-CAMD22YU.js} +8 -8
- package/dist/{capture-desktop-T5YO3EBI.js → capture-desktop-TMZSFA5R.js} +9 -9
- package/dist/{capture-window-UKEUBWKH.js → capture-window-NZDKD2AE.js} +9 -9
- package/dist/{check-PQB6KKMN.js → check-MO33GTQ4.js} +8 -8
- package/dist/{checked-RNZIMCU6.js → checked-3HDF5X2M.js} +8 -8
- package/dist/{chunk-YRRRUGSQ.js → chunk-32ZSOZND.js} +2 -2
- package/dist/{chunk-EOX6U6Q4.js → chunk-AHQC4A6P.js} +896 -118
- 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-FDBUB7BM.js → chunk-BHZLEFXW.js} +2 -2
- package/dist/{chunk-JROW6ZNN.js → chunk-FJZY3Z3X.js} +3 -3
- package/dist/{chunk-J3KYGJRQ.js → chunk-G6NQ7WYD.js} +2 -2
- package/dist/{chunk-27W46IKI.js → chunk-HM4CO3EW.js} +38 -23
- package/dist/chunk-HM4CO3EW.js.map +1 -0
- package/dist/{chunk-SKFB5ICF.js → chunk-TI5I6UWY.js} +8 -3
- package/dist/chunk-TI5I6UWY.js.map +1 -0
- package/dist/{chunk-52ZIOWVU.js → chunk-UEAXTWGT.js} +3 -3
- package/dist/{chunk-ZGCTC5YM.js → chunk-UVD34RA2.js} +33 -1
- package/dist/chunk-UVD34RA2.js.map +1 -0
- package/dist/{chunk-W6YPVNDX.js → chunk-VTGG5ZU2.js} +2 -2
- package/dist/{chunk-FBKPDILE.js → chunk-WTWSBEBW.js} +5954 -436
- package/dist/chunk-WTWSBEBW.js.map +1 -0
- package/dist/{chunk-NURQB55J.js → chunk-WY72GYAH.js} +2 -2
- package/dist/{chunk-MJF67OTH.js → chunk-XSSPNVMS.js} +3 -3
- package/dist/{chunk-MJF67OTH.js.map → chunk-XSSPNVMS.js.map} +1 -1
- package/dist/{chunk-HMRANSDX.js → chunk-Z3ADLR7I.js} +698 -18
- 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/parse.d.ts +1 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/cli/utils/workflow-message.d.ts.map +1 -1
- package/dist/{click-U7ZFKSB4.js → click-SWZPJO2U.js} +8 -8
- package/dist/{clone-component-SWYAORTU.js → clone-component-YTB46YU4.js} +7 -7
- package/dist/{clone-page-WJ6UJOJG.js → clone-page-5FMPHQ3A.js} +7 -7
- package/dist/{close-NAVIHZ2T.js → close-22SNMDX3.js} +7 -7
- package/dist/{close-VKIGIKVT.js → close-ORQZCZ2E.js} +7 -7
- package/dist/{connect-XVG2MOZL.js → connect-EWYITNQU.js} +8 -8
- package/dist/{console-poll-XI5BZPL7.js → console-poll-LJR6ZTDK.js} +8 -8
- package/dist/{cookie-import-QELKE7TK.js → cookie-import-PTAIWPEC.js} +7 -7
- package/dist/{cookie-list-QDA6KWIY.js → cookie-list-76C35B5B.js} +7 -7
- package/dist/{daemon-CA4UIIZQ.js → daemon-UKJMDLCB.js} +6 -6
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-AT4GAO57.js → debug-trace-snapshot-PQ5FJART.js} +8 -8
- package/dist/{dialog-O3V2IBFH.js → dialog-WLJDWJV4.js} +8 -8
- package/dist/{disconnect-NAX5TPTG.js → disconnect-FNB4JC2U.js} +7 -7
- package/dist/{enabled-VT4FJXDX.js → enabled-PYMCOQPC.js} +8 -8
- package/dist/{goto-GBJG5NC4.js → goto-UNTEW4VI.js} +8 -8
- 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/recipes/site-recipe-validation.d.ts +27 -0
- package/dist/guidance/recipes/site-recipe-validation.d.ts.map +1 -0
- package/dist/guidance/types.d.ts +5 -0
- package/dist/guidance/types.d.ts.map +1 -1
- package/dist/{help-SUI4H77K.js → help-QOLCIB3P.js} +8 -7
- package/dist/{help-SUI4H77K.js.map → help-QOLCIB3P.js.map} +1 -1
- package/dist/{hover-476ZNQZE.js → hover-ZWY4YOM4.js} +8 -8
- package/dist/{html-5C4TXOV3.js → html-M46YBFT3.js} +8 -8
- package/dist/index.js +83 -23
- package/dist/index.js.map +1 -1
- package/dist/{inspector-73ARPCIV.js → inspector-6YAOI74U.js} +10 -10
- package/dist/{inspector-audit-QT6QY7KS.js → inspector-audit-PF64X6SJ.js} +12 -12
- package/dist/{inspector-plan-JRNSGN2Z.js → inspector-plan-IUGTQV3Q.js} +10 -10
- 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 +25 -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 +32 -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-IPVZDLSQ.js → inspiredesign-GZIEXETS.js} +101 -31
- package/dist/inspiredesign-GZIEXETS.js.map +1 -0
- package/dist/{launch-B35YDRQC.js → launch-I7WNLWLY.js} +8 -8
- package/dist/{list-YETWKTKY.js → list-BAECFJI7.js} +7 -7
- package/dist/{list-JV55JVGB.js → list-BCF4HZ2K.js} +7 -7
- package/dist/{macro-resolve-DQK4B3W3.js → macro-resolve-4GNZYHHW.js} +9 -9
- package/dist/{network-poll-4GWHCJXI.js → network-poll-DCZ5ZNLP.js} +8 -8
- package/dist/{new-XDCQPIEG.js → new-6KZYJTJG.js} +7 -7
- package/dist/{open-GIM3ZCSV.js → open-JPGEAJHJ.js} +7 -7
- package/dist/opendevbrowser.js +83 -23
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-26VBXDPI.js → perf-5X367PRP.js} +8 -8
- package/dist/{pointer-down-O3VSNAXW.js → pointer-down-5OAUDDNR.js} +9 -9
- package/dist/{pointer-drag-WQ5QGE6J.js → pointer-drag-LIW5PY5P.js} +9 -9
- package/dist/{pointer-move-4N4D7JY2.js → pointer-move-7AMURLJD.js} +9 -9
- package/dist/{pointer-up-CQC4NPDX.js → pointer-up-EY652YWL.js} +9 -9
- package/dist/{press-XGJD45CU.js → press-UIAE5XEF.js} +8 -8
- package/dist/{product-video-HD4ZOUI7.js → product-video-B6TLS7VC.js} +10 -10
- package/dist/providers/browser-native-discovery.d.ts.map +1 -1
- package/dist/providers/browser-output-artifacts.d.ts +13 -0
- package/dist/providers/browser-output-artifacts.d.ts.map +1 -0
- 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-KKNPJSQK.js → providers-AERTX6X4.js} +5 -3
- package/dist/public-surface/generated-manifest.d.ts +4 -4
- 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-VUWWEQ4R.js → research-AJH6ECYW.js} +10 -10
- package/dist/{review-LZ3TA7U7.js → review-RN6XF2YB.js} +9 -9
- package/dist/{review-desktop-LAO7U7T3.js → review-desktop-UJOUS7K2.js} +9 -9
- package/dist/{rpc-HKNIVFGC.js → rpc-VS5Y5FUT.js} +8 -8
- package/dist/{run-SHCF53FO.js → run-EVRIQW7S.js} +6 -6
- package/dist/{screencast-start-JHMQZVWJ.js → screencast-start-U6J4FYU4.js} +8 -8
- package/dist/{screencast-stop-RWQTWWQS.js → screencast-stop-EQUPRGMP.js} +8 -8
- package/dist/{screenshot-QHFYO6PB.js → screenshot-BENYGC36.js} +8 -8
- package/dist/{scroll-L3FTMAV4.js → scroll-3OALQLX2.js} +8 -8
- package/dist/{scroll-into-view-JVDHX4WU.js → scroll-into-view-SNZKBIVB.js} +8 -8
- package/dist/{select-X4BO7GTB.js → select-JDZDDC3Y.js} +8 -8
- package/dist/{serve-JIMIBCNO.js → serve-LOC6ESJ4.js} +7 -7
- package/dist/{shopping-EGSDP2GL.js → shopping-267OAYGM.js} +10 -10
- package/dist/{snapshot-QGJ7RDNV.js → snapshot-ASYI5UFR.js} +8 -8
- package/dist/{status-CKGPNYIH.js → status-47CI4LJX.js} +7 -7
- package/dist/{status-LEBY2X7N.js → status-N4O6DJTF.js} +9 -9
- package/dist/{status-capabilities-6QTWNGKM.js → status-capabilities-C777JZG4.js} +9 -9
- package/dist/{text-VUZU7D3L.js → text-MS2653MW.js} +8 -8
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/{type-N5SURP74.js → type-UMPSDACC.js} +8 -8
- package/dist/{uncheck-JFMK3SSY.js → uncheck-2OZ56D42.js} +8 -8
- package/dist/{upload-KFUYLL7M.js → upload-CD7PRH54.js} +8 -8
- package/dist/{use-CNMPP2ED.js → use-MO67AGG7.js} +7 -7
- package/dist/{value-J335MPZE.js → value-4GI2LRUY.js} +8 -8
- package/dist/{visible-YQZWWPBZ.js → visible-VSUFGRFZ.js} +8 -8
- package/dist/{wait-IC7YJJPJ.js → wait-OQYMFENT.js} +8 -8
- package/dist/{windows-AGVQ3KX3.js → windows-75W2JCW7.js} +9 -9
- 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-27W46IKI.js.map +0 -1
- package/dist/chunk-EOX6U6Q4.js.map +0 -1
- package/dist/chunk-FBKPDILE.js.map +0 -1
- package/dist/chunk-HMRANSDX.js.map +0 -1
- package/dist/chunk-IBIHDGTZ.js.map +0 -1
- package/dist/chunk-SKFB5ICF.js.map +0 -1
- package/dist/chunk-ZGCTC5YM.js.map +0 -1
- package/dist/inspiredesign-IPVZDLSQ.js.map +0 -1
- /package/dist/{accessibility-snapshot-JSPFVWZ6.js.map → accessibility-snapshot-TAFPVLZN.js.map} +0 -0
- /package/dist/{active-window-2OB2MSCR.js.map → active-window-MHFMC6NQ.js.map} +0 -0
- /package/dist/{annotate-VDZBZBKZ.js.map → annotate-5ZFRFQ4B.js.map} +0 -0
- /package/dist/{attr-7XIO4MCH.js.map → attr-MBF2UCRF.js.map} +0 -0
- /package/dist/{canvas-N4PAA274.js.map → canvas-CAMD22YU.js.map} +0 -0
- /package/dist/{capture-desktop-T5YO3EBI.js.map → capture-desktop-TMZSFA5R.js.map} +0 -0
- /package/dist/{capture-window-UKEUBWKH.js.map → capture-window-NZDKD2AE.js.map} +0 -0
- /package/dist/{check-PQB6KKMN.js.map → check-MO33GTQ4.js.map} +0 -0
- /package/dist/{checked-RNZIMCU6.js.map → checked-3HDF5X2M.js.map} +0 -0
- /package/dist/{chunk-YRRRUGSQ.js.map → chunk-32ZSOZND.js.map} +0 -0
- /package/dist/{chunk-FDBUB7BM.js.map → chunk-BHZLEFXW.js.map} +0 -0
- /package/dist/{chunk-JROW6ZNN.js.map → chunk-FJZY3Z3X.js.map} +0 -0
- /package/dist/{chunk-J3KYGJRQ.js.map → chunk-G6NQ7WYD.js.map} +0 -0
- /package/dist/{chunk-52ZIOWVU.js.map → chunk-UEAXTWGT.js.map} +0 -0
- /package/dist/{chunk-W6YPVNDX.js.map → chunk-VTGG5ZU2.js.map} +0 -0
- /package/dist/{chunk-NURQB55J.js.map → chunk-WY72GYAH.js.map} +0 -0
- /package/dist/{click-U7ZFKSB4.js.map → click-SWZPJO2U.js.map} +0 -0
- /package/dist/{clone-component-SWYAORTU.js.map → clone-component-YTB46YU4.js.map} +0 -0
- /package/dist/{clone-page-WJ6UJOJG.js.map → clone-page-5FMPHQ3A.js.map} +0 -0
- /package/dist/{close-NAVIHZ2T.js.map → close-22SNMDX3.js.map} +0 -0
- /package/dist/{close-VKIGIKVT.js.map → close-ORQZCZ2E.js.map} +0 -0
- /package/dist/{connect-XVG2MOZL.js.map → connect-EWYITNQU.js.map} +0 -0
- /package/dist/{console-poll-XI5BZPL7.js.map → console-poll-LJR6ZTDK.js.map} +0 -0
- /package/dist/{cookie-import-QELKE7TK.js.map → cookie-import-PTAIWPEC.js.map} +0 -0
- /package/dist/{cookie-list-QDA6KWIY.js.map → cookie-list-76C35B5B.js.map} +0 -0
- /package/dist/{daemon-CA4UIIZQ.js.map → daemon-UKJMDLCB.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-AT4GAO57.js.map → debug-trace-snapshot-PQ5FJART.js.map} +0 -0
- /package/dist/{dialog-O3V2IBFH.js.map → dialog-WLJDWJV4.js.map} +0 -0
- /package/dist/{disconnect-NAX5TPTG.js.map → disconnect-FNB4JC2U.js.map} +0 -0
- /package/dist/{enabled-VT4FJXDX.js.map → enabled-PYMCOQPC.js.map} +0 -0
- /package/dist/{goto-GBJG5NC4.js.map → goto-UNTEW4VI.js.map} +0 -0
- /package/dist/{hover-476ZNQZE.js.map → hover-ZWY4YOM4.js.map} +0 -0
- /package/dist/{html-5C4TXOV3.js.map → html-M46YBFT3.js.map} +0 -0
- /package/dist/{inspector-73ARPCIV.js.map → inspector-6YAOI74U.js.map} +0 -0
- /package/dist/{inspector-audit-QT6QY7KS.js.map → inspector-audit-PF64X6SJ.js.map} +0 -0
- /package/dist/{inspector-plan-JRNSGN2Z.js.map → inspector-plan-IUGTQV3Q.js.map} +0 -0
- /package/dist/{launch-B35YDRQC.js.map → launch-I7WNLWLY.js.map} +0 -0
- /package/dist/{list-YETWKTKY.js.map → list-BAECFJI7.js.map} +0 -0
- /package/dist/{list-JV55JVGB.js.map → list-BCF4HZ2K.js.map} +0 -0
- /package/dist/{macro-resolve-DQK4B3W3.js.map → macro-resolve-4GNZYHHW.js.map} +0 -0
- /package/dist/{network-poll-4GWHCJXI.js.map → network-poll-DCZ5ZNLP.js.map} +0 -0
- /package/dist/{new-XDCQPIEG.js.map → new-6KZYJTJG.js.map} +0 -0
- /package/dist/{open-GIM3ZCSV.js.map → open-JPGEAJHJ.js.map} +0 -0
- /package/dist/{perf-26VBXDPI.js.map → perf-5X367PRP.js.map} +0 -0
- /package/dist/{pointer-down-O3VSNAXW.js.map → pointer-down-5OAUDDNR.js.map} +0 -0
- /package/dist/{pointer-drag-WQ5QGE6J.js.map → pointer-drag-LIW5PY5P.js.map} +0 -0
- /package/dist/{pointer-move-4N4D7JY2.js.map → pointer-move-7AMURLJD.js.map} +0 -0
- /package/dist/{pointer-up-CQC4NPDX.js.map → pointer-up-EY652YWL.js.map} +0 -0
- /package/dist/{press-XGJD45CU.js.map → press-UIAE5XEF.js.map} +0 -0
- /package/dist/{product-video-HD4ZOUI7.js.map → product-video-B6TLS7VC.js.map} +0 -0
- /package/dist/{providers-KKNPJSQK.js.map → providers-AERTX6X4.js.map} +0 -0
- /package/dist/{research-VUWWEQ4R.js.map → research-AJH6ECYW.js.map} +0 -0
- /package/dist/{review-LZ3TA7U7.js.map → review-RN6XF2YB.js.map} +0 -0
- /package/dist/{review-desktop-LAO7U7T3.js.map → review-desktop-UJOUS7K2.js.map} +0 -0
- /package/dist/{rpc-HKNIVFGC.js.map → rpc-VS5Y5FUT.js.map} +0 -0
- /package/dist/{run-SHCF53FO.js.map → run-EVRIQW7S.js.map} +0 -0
- /package/dist/{screencast-start-JHMQZVWJ.js.map → screencast-start-U6J4FYU4.js.map} +0 -0
- /package/dist/{screencast-stop-RWQTWWQS.js.map → screencast-stop-EQUPRGMP.js.map} +0 -0
- /package/dist/{screenshot-QHFYO6PB.js.map → screenshot-BENYGC36.js.map} +0 -0
- /package/dist/{scroll-L3FTMAV4.js.map → scroll-3OALQLX2.js.map} +0 -0
- /package/dist/{scroll-into-view-JVDHX4WU.js.map → scroll-into-view-SNZKBIVB.js.map} +0 -0
- /package/dist/{select-X4BO7GTB.js.map → select-JDZDDC3Y.js.map} +0 -0
- /package/dist/{serve-JIMIBCNO.js.map → serve-LOC6ESJ4.js.map} +0 -0
- /package/dist/{shopping-EGSDP2GL.js.map → shopping-267OAYGM.js.map} +0 -0
- /package/dist/{snapshot-QGJ7RDNV.js.map → snapshot-ASYI5UFR.js.map} +0 -0
- /package/dist/{status-CKGPNYIH.js.map → status-47CI4LJX.js.map} +0 -0
- /package/dist/{status-LEBY2X7N.js.map → status-N4O6DJTF.js.map} +0 -0
- /package/dist/{status-capabilities-6QTWNGKM.js.map → status-capabilities-C777JZG4.js.map} +0 -0
- /package/dist/{text-VUZU7D3L.js.map → text-MS2653MW.js.map} +0 -0
- /package/dist/{type-N5SURP74.js.map → type-UMPSDACC.js.map} +0 -0
- /package/dist/{uncheck-JFMK3SSY.js.map → uncheck-2OZ56D42.js.map} +0 -0
- /package/dist/{upload-KFUYLL7M.js.map → upload-CD7PRH54.js.map} +0 -0
- /package/dist/{use-CNMPP2ED.js.map → use-MO67AGG7.js.map} +0 -0
- /package/dist/{value-J335MPZE.js.map → value-4GI2LRUY.js.map} +0 -0
- /package/dist/{visible-YQZWWPBZ.js.map → visible-VSUFGRFZ.js.map} +0 -0
- /package/dist/{wait-IC7YJJPJ.js.map → wait-OQYMFENT.js.map} +0 -0
- /package/dist/{windows-AGVQ3KX3.js.map → windows-75W2JCW7.js.map} +0 -0
|
@@ -8,9 +8,10 @@ Compact operational map of the current OpenDevBrowser surfaces, with the `/canva
|
|
|
8
8
|
|
|
9
9
|
- CLI commands: `77`
|
|
10
10
|
- Plugin tools: `70`
|
|
11
|
+
- CLI-tool pairs: `67`
|
|
11
12
|
- `/ops` command names: `59`
|
|
12
13
|
- `/canvas` command names: `35`
|
|
13
|
-
- Legacy `/cdp` relay: generic CDP forwarding (method-level)
|
|
14
|
+
- Legacy `/cdp` relay: generic CDP forwarding (method-level), active-legacy-session-only
|
|
14
15
|
|
|
15
16
|
Canonical exhaustive reference: `docs/SURFACE_REFERENCE.md`.
|
|
16
17
|
CLI help mirror: `npx opendevbrowser --help` and `npx opendevbrowser help` (identical inventories).
|
|
@@ -236,13 +237,16 @@ Operational rule:
|
|
|
236
237
|
- Direct CDP: `connect --ws-endpoint ...` or `connect --host ... --cdp-port ...`
|
|
237
238
|
- Direct release harnesses (`live-regression-direct`, `provider-direct-runs`) are the shipping evidence path; broad matrix wrappers are debug-only and should not replace fresh direct-run artifacts.
|
|
238
239
|
|
|
239
|
-
Required readiness
|
|
240
|
-
- `
|
|
241
|
-
- `
|
|
242
|
-
- `
|
|
243
|
-
|
|
244
|
-
-
|
|
245
|
-
- `
|
|
240
|
+
Required extension readiness checks:
|
|
241
|
+
- `data.fingerprintCurrent === true`
|
|
242
|
+
- `data.relay.extensionConnected === true`
|
|
243
|
+
- `data.relay.extensionHandshakeComplete === true`
|
|
244
|
+
|
|
245
|
+
Diagnostic and lane-specific presence fields:
|
|
246
|
+
- `data.relay.opsConnected`: active `/ops` client presence only. It is not required for normal extension readiness.
|
|
247
|
+
- `data.relay.canvasConnected`: active `/canvas` client presence only.
|
|
248
|
+
- `data.relay.cdpConnected`: active-legacy-session-only. Expected `false` unless a legacy `/cdp` session is connected.
|
|
249
|
+
- `data.relay.pairingRequired`: relay token requirement status.
|
|
246
250
|
|
|
247
251
|
## Fast verification commands
|
|
248
252
|
|
|
@@ -35,6 +35,7 @@ npm run test -- tests/providers-performance-gate.test.ts
|
|
|
35
35
|
|
|
36
36
|
- `tests/parity-matrix.test.ts` is contract coverage for CLI/tool/runtime surface parity.
|
|
37
37
|
- `node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json` and `node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json` are the live release-proof lane.
|
|
38
|
+
- Treat `artifacts/release/vX.Y.Z/...` paths as local-only release proof outputs unless release policy explicitly requests publication.
|
|
38
39
|
- Treat grouped contract checks and direct-run release proof as complementary, not interchangeable.
|
|
39
40
|
|
|
40
41
|
## Release Requirement
|
|
@@ -84,10 +84,29 @@ Expected output:
|
|
|
84
84
|
- `workerStats[]` with `{ sessionId, processed, failures }`
|
|
85
85
|
- `frontierStats` and checkpoint state
|
|
86
86
|
|
|
87
|
+
## Agent Pattern F: Pinterest Multi-Pin Design Harvest
|
|
88
|
+
|
|
89
|
+
This is guidance for agents using `inspiredesign harvest`; it is not a new product workflow, CLI command, or daemon method.
|
|
90
|
+
|
|
91
|
+
1. Run query discovery with `--query ... --provider social/pinterest`.
|
|
92
|
+
2. Read `meta.discovery.acceptedUrls` from the JSON output or artifact metadata.
|
|
93
|
+
3. Keep only canonical `https://www.pinterest.com/pin/<id>/` URLs.
|
|
94
|
+
4. Run the canonical harvest command once per selected pin with `--provider social/pinterest --url "https://www.pinterest.com/pin/<id>/"`.
|
|
95
|
+
5. In extension mode, the canonical harvest opens the exact pin in the extension before extracting pin-media bytes, which stabilizes live GIF and video pins.
|
|
96
|
+
6. Trust only outputs with `nextStepGuidance.readiness=ready`, non-empty `ranked-references.json`, and manifest-backed authority from `pin-media-index.json`, `screenshot-index.json`, or `motion-evidence.json`.
|
|
97
|
+
7. Use `media-analysis.json` as the deterministic design-fact surface for trusted saved pin media only; it can guide palette, tone, layout, OCR-free typography structure, text-region layout, and sampled motion decisions, but it never replaces `pin-media-index.json` readiness authority.
|
|
98
|
+
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`.
|
|
99
|
+
|
|
100
|
+
Expected output:
|
|
101
|
+
- one artifact bundle per selected canonical pin
|
|
102
|
+
- selected design directions backed by persisted first-party pin media, screenshot, or motion authority
|
|
103
|
+
- `media-analysis.json` may explain media-derived design facts, while `pin-media-index.json` remains the only pin-media readiness authority
|
|
104
|
+
|
|
87
105
|
## Release evidence lane
|
|
88
106
|
|
|
89
107
|
- Use `node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json` for provider live release proof.
|
|
90
108
|
- Use `node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json` for cross-surface live release proof.
|
|
109
|
+
- Treat `artifacts/release/vX.Y.Z/...` paths as local-only release proof outputs unless release policy explicitly requests publication.
|
|
91
110
|
- Treat parity matrix tests as contract coverage, not live release proof.
|
|
92
111
|
- Read `data.guidanceReason` and `data.recommendedNextCommand` in the provider-direct report before escalating a provider failure to manual follow-up.
|
|
93
112
|
|
|
@@ -4,59 +4,69 @@
|
|
|
4
4
|
"command": "npx opendevbrowser status --daemon --output-format json",
|
|
5
5
|
"required": true,
|
|
6
6
|
"statusExpectations": {
|
|
7
|
-
"fingerprintCurrent": true
|
|
7
|
+
"data.fingerprintCurrent": true
|
|
8
8
|
}
|
|
9
9
|
},
|
|
10
10
|
"modes": [
|
|
11
11
|
{
|
|
12
12
|
"name": "managed",
|
|
13
13
|
"launch": "npx opendevbrowser launch --no-extension",
|
|
14
|
-
"statusProbe": "npx opendevbrowser status --session-id <session-id>",
|
|
14
|
+
"statusProbe": "npx opendevbrowser status --session-id <session-id> --output-format json",
|
|
15
15
|
"requiredFlags": [
|
|
16
16
|
"--no-extension"
|
|
17
17
|
],
|
|
18
18
|
"statusExpectations": {
|
|
19
|
-
"mode": "managed"
|
|
19
|
+
"data.mode": "managed"
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "extension",
|
|
24
24
|
"launch": "npx opendevbrowser launch --extension-only --wait-for-extension",
|
|
25
|
-
"statusProbe": "npx opendevbrowser status --daemon",
|
|
25
|
+
"statusProbe": "npx opendevbrowser status --daemon --output-format json",
|
|
26
26
|
"requiredFlags": [
|
|
27
27
|
"--extension-only",
|
|
28
28
|
"--wait-for-extension"
|
|
29
29
|
],
|
|
30
30
|
"statusExpectations": {
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
31
|
+
"data.fingerprintCurrent": true,
|
|
32
|
+
"data.relay.extensionConnected": true,
|
|
33
|
+
"data.relay.extensionHandshakeComplete": true
|
|
34
|
+
},
|
|
35
|
+
"diagnosticPresenceFields": {
|
|
36
|
+
"data.relay.opsConnected": "presence-only; true only when an /ops client is active",
|
|
37
|
+
"data.relay.canvasConnected": "lane-specific; true only when a /canvas client is active",
|
|
38
|
+
"data.relay.cdpConnected": "active-legacy-session-only; false is normal outside legacy /cdp sessions"
|
|
34
39
|
}
|
|
35
40
|
},
|
|
36
41
|
{
|
|
37
42
|
"name": "extension-legacy",
|
|
38
43
|
"launch": "npx opendevbrowser launch --extension-only --extension-legacy --wait-for-extension",
|
|
39
|
-
"statusProbe": "npx opendevbrowser status --daemon",
|
|
44
|
+
"statusProbe": "npx opendevbrowser status --daemon --output-format json",
|
|
40
45
|
"requiredFlags": [
|
|
41
46
|
"--extension-only",
|
|
42
47
|
"--extension-legacy",
|
|
43
48
|
"--wait-for-extension"
|
|
44
49
|
],
|
|
45
50
|
"statusExpectations": {
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
51
|
+
"data.fingerprintCurrent": true,
|
|
52
|
+
"data.relay.extensionConnected": true,
|
|
53
|
+
"data.relay.extensionHandshakeComplete": true
|
|
54
|
+
},
|
|
55
|
+
"diagnosticPresenceFields": {
|
|
56
|
+
"data.relay.cdpConnected": "active-legacy-session-only; true only while the legacy /cdp client is connected",
|
|
57
|
+
"data.relay.opsConnected": "presence-only; true only when an /ops client is active",
|
|
58
|
+
"data.relay.canvasConnected": "lane-specific; true only when a /canvas client is active"
|
|
49
59
|
}
|
|
50
60
|
},
|
|
51
61
|
{
|
|
52
62
|
"name": "cdpConnect",
|
|
53
63
|
"connect": "npx opendevbrowser connect --ws-endpoint ws://127.0.0.1:9222/devtools/browser/<id>",
|
|
54
|
-
"statusProbe": "npx opendevbrowser status --session-id <session-id>",
|
|
64
|
+
"statusProbe": "npx opendevbrowser status --session-id <session-id> --output-format json",
|
|
55
65
|
"requiredFlags": [
|
|
56
66
|
"--ws-endpoint"
|
|
57
67
|
],
|
|
58
68
|
"statusExpectations": {
|
|
59
|
-
"mode": "cdpConnect"
|
|
69
|
+
"data.mode": "cdpConnect"
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
72
|
]
|
|
@@ -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
|
|