opendevbrowser 0.0.30 → 0.0.32

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.
Files changed (298) hide show
  1. package/README.md +20 -7
  2. package/dist/{accessibility-snapshot-CQ4ZKWKC.js → accessibility-snapshot-XOP66CSK.js} +11 -11
  3. package/dist/{active-window-TD5HYJ72.js → active-window-E3WFOQGX.js} +11 -11
  4. package/dist/{annotate-VTLFS2XV.js → annotate-MAE7ZJOZ.js} +10 -10
  5. package/dist/{artifacts-KJ6RNDO2.js → artifacts-JHDUUJGQ.js} +2 -2
  6. package/dist/{attr-BCI5KYCW.js → attr-M3PFDJ7Q.js} +10 -10
  7. package/dist/{canvas-5DFEEOKM.js → canvas-3AJVL5I5.js} +10 -10
  8. package/dist/{capture-desktop-HFTTWY4Z.js → capture-desktop-VJGEETMJ.js} +11 -11
  9. package/dist/{capture-window-X63XPIFF.js → capture-window-W5UFSFQL.js} +11 -11
  10. package/dist/{check-LWAUY7GC.js → check-4IR3UJVW.js} +10 -10
  11. package/dist/{checked-ZSOUKVYT.js → checked-PKNY7724.js} +10 -10
  12. package/dist/{chunk-KZ2IXVQT.js → chunk-2X4JFMKJ.js} +39 -4
  13. package/dist/chunk-2X4JFMKJ.js.map +1 -0
  14. package/dist/{chunk-IPE7TF2P.js → chunk-7BNU6DFI.js} +8 -5
  15. package/dist/chunk-7BNU6DFI.js.map +1 -0
  16. package/dist/{chunk-J47N77VG.js → chunk-AKIAGFOE.js} +31 -8
  17. package/dist/chunk-AKIAGFOE.js.map +1 -0
  18. package/dist/{chunk-RCZZGGJS.js → chunk-AWQ37HSC.js} +7 -3
  19. package/dist/chunk-AWQ37HSC.js.map +1 -0
  20. package/dist/{chunk-3ILXPKSJ.js → chunk-BUVYTJZR.js} +2 -1
  21. package/dist/chunk-BUVYTJZR.js.map +1 -0
  22. package/dist/{chunk-AHEWXOKY.js → chunk-BUXFIY2P.js} +4 -4
  23. package/dist/{chunk-QOMWCRE3.js → chunk-HBK56JST.js} +3 -3
  24. package/dist/{chunk-T4GMCW6Z.js → chunk-J3KYGJRQ.js} +3 -3
  25. package/dist/{chunk-6PVZ2ABC.js → chunk-L3YNUGYF.js} +2 -2
  26. package/dist/{chunk-JZXD6FWR.js → chunk-NURQB55J.js} +2 -2
  27. package/dist/{chunk-GQJ5S3BL.js → chunk-P5K3ZIPI.js} +3 -3
  28. package/dist/{chunk-PPUWQKIC.js → chunk-PIFHXKV4.js} +4 -4
  29. package/dist/{chunk-STGGGVYT.js → chunk-QMHKAFYX.js} +2 -2
  30. package/dist/{chunk-4BEJVZRK.js → chunk-RO3SMXF3.js} +1073 -138
  31. package/dist/chunk-RO3SMXF3.js.map +1 -0
  32. package/dist/{chunk-RPXWUCQQ.js → chunk-SKFB5ICF.js} +2 -2
  33. package/dist/{chunk-2SIMIPLY.js → chunk-W6YPVNDX.js} +3 -3
  34. package/dist/{chunk-MD655IPO.js → chunk-XDLJE3RJ.js} +11 -4
  35. package/dist/chunk-XDLJE3RJ.js.map +1 -0
  36. package/dist/{chunk-KDSNXS6N.js → chunk-ZMNEWS7A.js} +2 -2
  37. package/dist/{chunk-COAOWH3G.js → chunk-ZOVMMQO6.js} +119 -27
  38. package/dist/chunk-ZOVMMQO6.js.map +1 -0
  39. package/dist/cli/args.d.ts.map +1 -1
  40. package/dist/cli/commands/daemon.d.ts +19 -2
  41. package/dist/cli/commands/daemon.d.ts.map +1 -1
  42. package/dist/cli/commands/inspiredesign.d.ts +6 -1
  43. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  44. package/dist/cli/commands/serve.d.ts +12 -3
  45. package/dist/cli/commands/serve.d.ts.map +1 -1
  46. package/dist/cli/commands/status.d.ts.map +1 -1
  47. package/dist/cli/commands/types.d.ts +1 -0
  48. package/dist/cli/commands/types.d.ts.map +1 -1
  49. package/dist/cli/commands/update.d.ts.map +1 -1
  50. package/dist/cli/daemon-client.d.ts.map +1 -1
  51. package/dist/cli/daemon-commands.d.ts.map +1 -1
  52. package/dist/cli/daemon-mismatch.d.ts +9 -0
  53. package/dist/cli/daemon-mismatch.d.ts.map +1 -0
  54. package/dist/cli/daemon.d.ts.map +1 -1
  55. package/dist/cli/errors.d.ts +4 -2
  56. package/dist/cli/errors.d.ts.map +1 -1
  57. package/dist/cli/help.d.ts.map +1 -1
  58. package/dist/cli/index.js +91 -90
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/installers/postinstall-skill-sync.js +2 -2
  61. package/dist/{click-2AILSEIZ.js → click-HLNXU4I5.js} +10 -10
  62. package/dist/{clone-component-TPJS3PEG.js → clone-component-QIKN5PIM.js} +9 -9
  63. package/dist/{clone-page-LE74CIFC.js → clone-page-5C7DTGZT.js} +9 -9
  64. package/dist/{close-HN4YI47K.js → close-PCRZHX7F.js} +9 -9
  65. package/dist/{close-WFERRHX6.js → close-WTXB3EDD.js} +9 -9
  66. package/dist/{connect-RWBV2UCQ.js → connect-6C2IG55I.js} +10 -10
  67. package/dist/{console-poll-PP4YYPDF.js → console-poll-VJXCZR3F.js} +10 -10
  68. package/dist/{cookie-import-6IP776FC.js → cookie-import-5OEDFB6U.js} +9 -9
  69. package/dist/{cookie-list-O2KG6DPU.js → cookie-list-44UNJJ6D.js} +9 -9
  70. package/dist/{daemon-2BSAZXLT.js → daemon-CIKGBWEB.js} +25 -12
  71. package/dist/daemon-CIKGBWEB.js.map +1 -0
  72. package/dist/daemon-fingerprint.json +1 -1
  73. package/dist/{debug-trace-snapshot-F3BDVZXS.js → debug-trace-snapshot-RGXAPGWB.js} +10 -10
  74. package/dist/{dialog-6JQYUWMQ.js → dialog-S64MJUM2.js} +10 -10
  75. package/dist/{disconnect-763TP7GH.js → disconnect-MTIELIM7.js} +9 -9
  76. package/dist/{enabled-DLYQFNIP.js → enabled-KF2L7LW4.js} +10 -10
  77. package/dist/{goto-S346TJJH.js → goto-ULWINUAZ.js} +10 -10
  78. package/dist/{help-EKKKEDL5.js → help-IG5S5RJD.js} +14 -10
  79. package/dist/help-IG5S5RJD.js.map +1 -0
  80. package/dist/{hover-6JVJFGO7.js → hover-NOCOTR6N.js} +10 -10
  81. package/dist/{html-EVOSPBIT.js → html-LXSYP6BT.js} +10 -10
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +46 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/{inspector-H57BVUJP.js → inspector-62EPCLYB.js} +11 -11
  86. package/dist/{inspector-audit-NQBAJWC7.js → inspector-audit-T2IF67RJ.js} +13 -13
  87. package/dist/{inspector-plan-ZDIQVND3.js → inspector-plan-KQS6LRMW.js} +11 -11
  88. package/dist/inspiredesign/capture.d.ts +4 -0
  89. package/dist/inspiredesign/capture.d.ts.map +1 -1
  90. package/dist/inspiredesign/contract.d.ts +22 -0
  91. package/dist/inspiredesign/contract.d.ts.map +1 -1
  92. package/dist/inspiredesign/handoff.d.ts +7 -1
  93. package/dist/inspiredesign/handoff.d.ts.map +1 -1
  94. package/dist/inspiredesign/meta-prompt.d.ts +9 -0
  95. package/dist/inspiredesign/meta-prompt.d.ts.map +1 -0
  96. package/dist/inspiredesign/reference-discovery.d.ts +29 -0
  97. package/dist/inspiredesign/reference-discovery.d.ts.map +1 -0
  98. package/dist/inspiredesign/reference-pattern-board.d.ts +21 -0
  99. package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
  100. package/dist/inspiredesign/visual-evidence.d.ts +46 -0
  101. package/dist/inspiredesign/visual-evidence.d.ts.map +1 -0
  102. package/dist/inspiredesign/visual-policy.d.ts +17 -0
  103. package/dist/inspiredesign/visual-policy.d.ts.map +1 -0
  104. package/dist/{inspiredesign-IEUL4PX3.js → inspiredesign-DB6CHYN3.js} +71 -19
  105. package/dist/inspiredesign-DB6CHYN3.js.map +1 -0
  106. package/dist/{launch-EK66VQPF.js → launch-B5ES6FVS.js} +10 -10
  107. package/dist/{list-KKUKN467.js → list-TIZVR6RO.js} +9 -9
  108. package/dist/{list-ADZAQ2IU.js → list-XM4BP5GM.js} +9 -9
  109. package/dist/{macro-resolve-6DOQJ7CA.js → macro-resolve-TTQZVFIW.js} +10 -10
  110. package/dist/{native-UPLVQ2SG.js → native-J2DFLOLP.js} +3 -3
  111. package/dist/{network-poll-NUL4PDPY.js → network-poll-NNSY4W63.js} +10 -10
  112. package/dist/{new-5NKYPEFT.js → new-E6VNAC2A.js} +9 -9
  113. package/dist/{open-NR3BPLXV.js → open-F55XKMKB.js} +9 -9
  114. package/dist/opendevbrowser.d.ts.map +1 -1
  115. package/dist/opendevbrowser.js +46 -17
  116. package/dist/opendevbrowser.js.map +1 -1
  117. package/dist/{perf-HJ36ZI6H.js → perf-RE7JE6CP.js} +10 -10
  118. package/dist/{pointer-down-IYTTQWXZ.js → pointer-down-BCBPC5FJ.js} +11 -11
  119. package/dist/{pointer-drag-A2YC5PWI.js → pointer-drag-QK7KGF7W.js} +11 -11
  120. package/dist/{pointer-move-W5K5FUI4.js → pointer-move-VFAZQAXA.js} +11 -11
  121. package/dist/{pointer-up-6GWVO64Y.js → pointer-up-FA5WE6LS.js} +11 -11
  122. package/dist/{press-A3V5WB3S.js → press-TNRHNDSW.js} +10 -10
  123. package/dist/{product-video-52REKWF3.js → product-video-UEANMZ2U.js} +11 -11
  124. package/dist/providers/renderer.d.ts +7 -1
  125. package/dist/providers/renderer.d.ts.map +1 -1
  126. package/dist/providers/workflow-handoff.d.ts +1 -0
  127. package/dist/providers/workflow-handoff.d.ts.map +1 -1
  128. package/dist/providers/workflows.d.ts +45 -3
  129. package/dist/providers/workflows.d.ts.map +1 -1
  130. package/dist/{providers-IMFYMMHQ.js → providers-AMCNWZUL.js} +3 -3
  131. package/dist/public-surface/generated-manifest.d.ts +12 -3
  132. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  133. package/dist/public-surface/source.d.ts +6 -6
  134. package/dist/public-surface/source.d.ts.map +1 -1
  135. package/dist/{research-WB6BBCDD.js → research-YFY7WJSZ.js} +11 -11
  136. package/dist/{review-BGWVY4RA.js → review-NHOPLAT7.js} +11 -11
  137. package/dist/{review-desktop-LEORC5VS.js → review-desktop-OFWPDYGD.js} +11 -11
  138. package/dist/{rpc-4TSKSFGC.js → rpc-TVVQPUOL.js} +10 -10
  139. package/dist/{run-3NBLVWXD.js → run-OCBEZRDW.js} +8 -8
  140. package/dist/{screencast-start-UZVIT3IN.js → screencast-start-GTSDA33J.js} +10 -10
  141. package/dist/{screencast-stop-NOSJSIUO.js → screencast-stop-FYBUIXAA.js} +10 -10
  142. package/dist/{screenshot-LARG4JQG.js → screenshot-OEYRT3SP.js} +10 -10
  143. package/dist/{scroll-VNFMV6TW.js → scroll-35OFEFC5.js} +10 -10
  144. package/dist/{scroll-into-view-VYRT3JPT.js → scroll-into-view-UQ5RAWIX.js} +10 -10
  145. package/dist/{select-KJTUZDVO.js → select-K56QELVZ.js} +10 -10
  146. package/dist/{serve-EV7K4HKR.js → serve-5UJ3VMWC.js} +48 -24
  147. package/dist/serve-5UJ3VMWC.js.map +1 -0
  148. package/dist/{shopping-DTXHVQ2X.js → shopping-FJG7XB4Q.js} +11 -11
  149. package/dist/{skill-lifecycle-5UAZGKSN.js → skill-lifecycle-OWZYBPFS.js} +3 -3
  150. package/dist/skills/bundled-skill-directories.d.ts.map +1 -1
  151. package/dist/skills/skill-loader.js +2 -2
  152. package/dist/{skills-NSXDX6YM.js → skills-KHMRNOE4.js} +3 -3
  153. package/dist/{snapshot-3XQMCMRJ.js → snapshot-W7RKVZEI.js} +10 -10
  154. package/dist/{status-YUMDP5KY.js → status-KHYCLGUD.js} +20 -12
  155. package/dist/status-KHYCLGUD.js.map +1 -0
  156. package/dist/{status-OXSYA5XD.js → status-R4EV4TWO.js} +11 -11
  157. package/dist/{status-capabilities-P4KDSE2Y.js → status-capabilities-XD3RGLKF.js} +11 -11
  158. package/dist/{text-V3B7UVIH.js → text-TANLFZ4O.js} +10 -10
  159. package/dist/tools/inspiredesign_run.d.ts.map +1 -1
  160. package/dist/{type-IYBN3ZLR.js → type-Y2Y7LX7Y.js} +10 -10
  161. package/dist/{uncheck-SG737EGI.js → uncheck-6REVUUB2.js} +10 -10
  162. package/dist/{uninstall-KYKGJAX7.js → uninstall-FW5ORBIN.js} +3 -3
  163. package/dist/{update-SMXPYGXS.js → update-FZGSXB74.js} +6 -2
  164. package/dist/update-FZGSXB74.js.map +1 -0
  165. package/dist/{update-skill-modes-BVX7IVMW.js → update-skill-modes-3ULKJK3Y.js} +3 -3
  166. package/dist/{upload-KH6ZABJA.js → upload-GGZC5UQP.js} +10 -10
  167. package/dist/{use-7YDKO3U4.js → use-B4Q7CFG2.js} +9 -9
  168. package/dist/{value-RZBWSKKM.js → value-DHOHO55D.js} +10 -10
  169. package/dist/{visible-BSFTAKXR.js → visible-S5BTWYNH.js} +10 -10
  170. package/dist/{wait-TMTEAYOP.js → wait-WV6NZUKL.js} +10 -10
  171. package/dist/{windows-HIZ23OHS.js → windows-GKE36DJQ.js} +11 -11
  172. package/extension/manifest.json +1 -1
  173. package/package.json +1 -1
  174. package/skills/AGENTS.md +2 -1
  175. package/skills/opendevbrowser-best-practices/SKILL.md +9 -2
  176. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +4 -3
  177. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +7 -0
  178. package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +49 -3
  179. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +24 -2
  180. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +1 -0
  181. package/skills/opendevbrowser-design-agent/SKILL.md +3 -0
  182. package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +85 -40
  183. package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +2 -0
  184. package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +20 -5
  185. package/skills/opendevbrowser-motion-design/SKILL.md +129 -0
  186. package/skills/opendevbrowser-motion-design/artifacts/accessibility-reduced-motion.md +37 -0
  187. package/skills/opendevbrowser-motion-design/artifacts/device-breakpoint-posture.md +40 -0
  188. package/skills/opendevbrowser-motion-design/artifacts/motion-anti-patterns.md +29 -0
  189. package/skills/opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md +430 -0
  190. package/skills/opendevbrowser-motion-design/artifacts/motion-release-gate.md +28 -0
  191. package/skills/opendevbrowser-motion-design/artifacts/motion-terminology.md +46 -0
  192. package/skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md +48 -0
  193. package/skills/opendevbrowser-motion-design/artifacts/performance-frame-budget.md +38 -0
  194. package/skills/opendevbrowser-motion-design/artifacts/platform-framework-guide.md +166 -0
  195. package/skills/opendevbrowser-motion-design/assets/templates/motion-audit-report.v1.md +70 -0
  196. package/skills/opendevbrowser-motion-design/assets/templates/motion-contract.v1.json +79 -0
  197. package/skills/opendevbrowser-motion-design/assets/templates/motion-release-gate.v1.json +18 -0
  198. package/skills/opendevbrowser-motion-design/assets/templates/motion-viewport-matrix.v1.json +76 -0
  199. package/skills/opendevbrowser-motion-design/scripts/motion-workflow.sh +163 -0
  200. package/skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh +374 -0
  201. package/dist/chunk-3ILXPKSJ.js.map +0 -1
  202. package/dist/chunk-4BEJVZRK.js.map +0 -1
  203. package/dist/chunk-COAOWH3G.js.map +0 -1
  204. package/dist/chunk-IPE7TF2P.js.map +0 -1
  205. package/dist/chunk-J47N77VG.js.map +0 -1
  206. package/dist/chunk-KZ2IXVQT.js.map +0 -1
  207. package/dist/chunk-MD655IPO.js.map +0 -1
  208. package/dist/chunk-RCZZGGJS.js.map +0 -1
  209. package/dist/daemon-2BSAZXLT.js.map +0 -1
  210. package/dist/help-EKKKEDL5.js.map +0 -1
  211. package/dist/inspiredesign-IEUL4PX3.js.map +0 -1
  212. package/dist/serve-EV7K4HKR.js.map +0 -1
  213. package/dist/status-YUMDP5KY.js.map +0 -1
  214. package/dist/update-SMXPYGXS.js.map +0 -1
  215. /package/dist/{accessibility-snapshot-CQ4ZKWKC.js.map → accessibility-snapshot-XOP66CSK.js.map} +0 -0
  216. /package/dist/{active-window-TD5HYJ72.js.map → active-window-E3WFOQGX.js.map} +0 -0
  217. /package/dist/{annotate-VTLFS2XV.js.map → annotate-MAE7ZJOZ.js.map} +0 -0
  218. /package/dist/{artifacts-KJ6RNDO2.js.map → artifacts-JHDUUJGQ.js.map} +0 -0
  219. /package/dist/{attr-BCI5KYCW.js.map → attr-M3PFDJ7Q.js.map} +0 -0
  220. /package/dist/{canvas-5DFEEOKM.js.map → canvas-3AJVL5I5.js.map} +0 -0
  221. /package/dist/{capture-desktop-HFTTWY4Z.js.map → capture-desktop-VJGEETMJ.js.map} +0 -0
  222. /package/dist/{capture-window-X63XPIFF.js.map → capture-window-W5UFSFQL.js.map} +0 -0
  223. /package/dist/{check-LWAUY7GC.js.map → check-4IR3UJVW.js.map} +0 -0
  224. /package/dist/{checked-ZSOUKVYT.js.map → checked-PKNY7724.js.map} +0 -0
  225. /package/dist/{chunk-AHEWXOKY.js.map → chunk-BUXFIY2P.js.map} +0 -0
  226. /package/dist/{chunk-QOMWCRE3.js.map → chunk-HBK56JST.js.map} +0 -0
  227. /package/dist/{chunk-T4GMCW6Z.js.map → chunk-J3KYGJRQ.js.map} +0 -0
  228. /package/dist/{chunk-6PVZ2ABC.js.map → chunk-L3YNUGYF.js.map} +0 -0
  229. /package/dist/{chunk-JZXD6FWR.js.map → chunk-NURQB55J.js.map} +0 -0
  230. /package/dist/{chunk-GQJ5S3BL.js.map → chunk-P5K3ZIPI.js.map} +0 -0
  231. /package/dist/{chunk-PPUWQKIC.js.map → chunk-PIFHXKV4.js.map} +0 -0
  232. /package/dist/{chunk-STGGGVYT.js.map → chunk-QMHKAFYX.js.map} +0 -0
  233. /package/dist/{chunk-RPXWUCQQ.js.map → chunk-SKFB5ICF.js.map} +0 -0
  234. /package/dist/{chunk-2SIMIPLY.js.map → chunk-W6YPVNDX.js.map} +0 -0
  235. /package/dist/{chunk-KDSNXS6N.js.map → chunk-ZMNEWS7A.js.map} +0 -0
  236. /package/dist/{click-2AILSEIZ.js.map → click-HLNXU4I5.js.map} +0 -0
  237. /package/dist/{clone-component-TPJS3PEG.js.map → clone-component-QIKN5PIM.js.map} +0 -0
  238. /package/dist/{clone-page-LE74CIFC.js.map → clone-page-5C7DTGZT.js.map} +0 -0
  239. /package/dist/{close-HN4YI47K.js.map → close-PCRZHX7F.js.map} +0 -0
  240. /package/dist/{close-WFERRHX6.js.map → close-WTXB3EDD.js.map} +0 -0
  241. /package/dist/{connect-RWBV2UCQ.js.map → connect-6C2IG55I.js.map} +0 -0
  242. /package/dist/{console-poll-PP4YYPDF.js.map → console-poll-VJXCZR3F.js.map} +0 -0
  243. /package/dist/{cookie-import-6IP776FC.js.map → cookie-import-5OEDFB6U.js.map} +0 -0
  244. /package/dist/{cookie-list-O2KG6DPU.js.map → cookie-list-44UNJJ6D.js.map} +0 -0
  245. /package/dist/{debug-trace-snapshot-F3BDVZXS.js.map → debug-trace-snapshot-RGXAPGWB.js.map} +0 -0
  246. /package/dist/{dialog-6JQYUWMQ.js.map → dialog-S64MJUM2.js.map} +0 -0
  247. /package/dist/{disconnect-763TP7GH.js.map → disconnect-MTIELIM7.js.map} +0 -0
  248. /package/dist/{enabled-DLYQFNIP.js.map → enabled-KF2L7LW4.js.map} +0 -0
  249. /package/dist/{goto-S346TJJH.js.map → goto-ULWINUAZ.js.map} +0 -0
  250. /package/dist/{hover-6JVJFGO7.js.map → hover-NOCOTR6N.js.map} +0 -0
  251. /package/dist/{html-EVOSPBIT.js.map → html-LXSYP6BT.js.map} +0 -0
  252. /package/dist/{inspector-H57BVUJP.js.map → inspector-62EPCLYB.js.map} +0 -0
  253. /package/dist/{inspector-audit-NQBAJWC7.js.map → inspector-audit-T2IF67RJ.js.map} +0 -0
  254. /package/dist/{inspector-plan-ZDIQVND3.js.map → inspector-plan-KQS6LRMW.js.map} +0 -0
  255. /package/dist/{launch-EK66VQPF.js.map → launch-B5ES6FVS.js.map} +0 -0
  256. /package/dist/{list-KKUKN467.js.map → list-TIZVR6RO.js.map} +0 -0
  257. /package/dist/{list-ADZAQ2IU.js.map → list-XM4BP5GM.js.map} +0 -0
  258. /package/dist/{macro-resolve-6DOQJ7CA.js.map → macro-resolve-TTQZVFIW.js.map} +0 -0
  259. /package/dist/{native-UPLVQ2SG.js.map → native-J2DFLOLP.js.map} +0 -0
  260. /package/dist/{network-poll-NUL4PDPY.js.map → network-poll-NNSY4W63.js.map} +0 -0
  261. /package/dist/{new-5NKYPEFT.js.map → new-E6VNAC2A.js.map} +0 -0
  262. /package/dist/{open-NR3BPLXV.js.map → open-F55XKMKB.js.map} +0 -0
  263. /package/dist/{perf-HJ36ZI6H.js.map → perf-RE7JE6CP.js.map} +0 -0
  264. /package/dist/{pointer-down-IYTTQWXZ.js.map → pointer-down-BCBPC5FJ.js.map} +0 -0
  265. /package/dist/{pointer-drag-A2YC5PWI.js.map → pointer-drag-QK7KGF7W.js.map} +0 -0
  266. /package/dist/{pointer-move-W5K5FUI4.js.map → pointer-move-VFAZQAXA.js.map} +0 -0
  267. /package/dist/{pointer-up-6GWVO64Y.js.map → pointer-up-FA5WE6LS.js.map} +0 -0
  268. /package/dist/{press-A3V5WB3S.js.map → press-TNRHNDSW.js.map} +0 -0
  269. /package/dist/{product-video-52REKWF3.js.map → product-video-UEANMZ2U.js.map} +0 -0
  270. /package/dist/{providers-IMFYMMHQ.js.map → providers-AMCNWZUL.js.map} +0 -0
  271. /package/dist/{research-WB6BBCDD.js.map → research-YFY7WJSZ.js.map} +0 -0
  272. /package/dist/{review-BGWVY4RA.js.map → review-NHOPLAT7.js.map} +0 -0
  273. /package/dist/{review-desktop-LEORC5VS.js.map → review-desktop-OFWPDYGD.js.map} +0 -0
  274. /package/dist/{rpc-4TSKSFGC.js.map → rpc-TVVQPUOL.js.map} +0 -0
  275. /package/dist/{run-3NBLVWXD.js.map → run-OCBEZRDW.js.map} +0 -0
  276. /package/dist/{screencast-start-UZVIT3IN.js.map → screencast-start-GTSDA33J.js.map} +0 -0
  277. /package/dist/{screencast-stop-NOSJSIUO.js.map → screencast-stop-FYBUIXAA.js.map} +0 -0
  278. /package/dist/{screenshot-LARG4JQG.js.map → screenshot-OEYRT3SP.js.map} +0 -0
  279. /package/dist/{scroll-VNFMV6TW.js.map → scroll-35OFEFC5.js.map} +0 -0
  280. /package/dist/{scroll-into-view-VYRT3JPT.js.map → scroll-into-view-UQ5RAWIX.js.map} +0 -0
  281. /package/dist/{select-KJTUZDVO.js.map → select-K56QELVZ.js.map} +0 -0
  282. /package/dist/{shopping-DTXHVQ2X.js.map → shopping-FJG7XB4Q.js.map} +0 -0
  283. /package/dist/{skill-lifecycle-5UAZGKSN.js.map → skill-lifecycle-OWZYBPFS.js.map} +0 -0
  284. /package/dist/{skills-NSXDX6YM.js.map → skills-KHMRNOE4.js.map} +0 -0
  285. /package/dist/{snapshot-3XQMCMRJ.js.map → snapshot-W7RKVZEI.js.map} +0 -0
  286. /package/dist/{status-OXSYA5XD.js.map → status-R4EV4TWO.js.map} +0 -0
  287. /package/dist/{status-capabilities-P4KDSE2Y.js.map → status-capabilities-XD3RGLKF.js.map} +0 -0
  288. /package/dist/{text-V3B7UVIH.js.map → text-TANLFZ4O.js.map} +0 -0
  289. /package/dist/{type-IYBN3ZLR.js.map → type-Y2Y7LX7Y.js.map} +0 -0
  290. /package/dist/{uncheck-SG737EGI.js.map → uncheck-6REVUUB2.js.map} +0 -0
  291. /package/dist/{uninstall-KYKGJAX7.js.map → uninstall-FW5ORBIN.js.map} +0 -0
  292. /package/dist/{update-skill-modes-BVX7IVMW.js.map → update-skill-modes-3ULKJK3Y.js.map} +0 -0
  293. /package/dist/{upload-KH6ZABJA.js.map → upload-GGZC5UQP.js.map} +0 -0
  294. /package/dist/{use-7YDKO3U4.js.map → use-B4Q7CFG2.js.map} +0 -0
  295. /package/dist/{value-RZBWSKKM.js.map → value-DHOHO55D.js.map} +0 -0
  296. /package/dist/{visible-BSFTAKXR.js.map → visible-S5BTWYNH.js.map} +0 -0
  297. /package/dist/{wait-TMTEAYOP.js.map → wait-WV6NZUKL.js.map} +0 -0
  298. /package/dist/{windows-HIZ23OHS.js.map → windows-GKE36DJQ.js.map} +0 -0
package/README.md CHANGED
@@ -108,7 +108,7 @@ export CLAUDECODE_HOME="$ISOLATED_ROOT/claudecode-home"
108
108
  export AMP_CLI_HOME="$ISOLATED_ROOT/ampcli-home"
109
109
  cd "$WORKDIR"
110
110
  npm init -y
111
- npm install <public-repo-root>/opendevbrowser-0.0.30.tgz
111
+ npm install <public-repo-root>/opendevbrowser-0.0.32.tgz
112
112
  npx --no-install opendevbrowser --help
113
113
  npx --no-install opendevbrowser help
114
114
  ```
@@ -221,6 +221,10 @@ Run a local daemon for persistent sessions, then drive automation via CLI comman
221
221
  # Start daemon
222
222
  npx opendevbrowser serve
223
223
 
224
+ # Preflight daemon-backed workflows
225
+ npx opendevbrowser status --daemon --output-format json
226
+ # Proceed only when data.fingerprintCurrent === true
227
+
224
228
  # Install auto-start (recommended for resilience)
225
229
  opendevbrowser daemon install
226
230
 
@@ -238,7 +242,14 @@ npx opendevbrowser click --session-id <session-id> --ref r12
238
242
  ```
239
243
 
240
244
  `opendevbrowser serve` includes stale-daemon preflight cleanup by default, so orphan daemon processes are terminated automatically
241
- before startup while preserving the active daemon on the requested port.
245
+ before startup while preserving the active daemon on the requested port. For daemon-backed workflows, run
246
+ `npx opendevbrowser status --daemon --output-format json` first and require `data.fingerprintCurrent === true` before issuing
247
+ launch, connect, canvas, provider, or release-harness commands.
248
+
249
+ If protected stop or reuse fails with `daemon_fingerprint_mismatch`, the running daemon was started by a different OpenDevBrowser
250
+ build than the current CLI. Use the matching binary for the running daemon, restart it from the current install, or isolate shared
251
+ environments with `OPENCODE_CONFIG_DIR`, `OPENCODE_CACHE_DIR`, and unique daemon or relay ports before retrying.
252
+
242
253
  If you are running from a temporary onboarding workspace, rerun `opendevbrowser daemon install` from a stable install location
243
254
  before expecting auto-start to survive login. macOS auto-start also writes `WorkingDirectory=~/.cache/opendevbrowser`
244
255
  so launchd does not start the daemon from `/`.
@@ -472,12 +483,13 @@ Desktop observation currently ships as a public read-only macOS surface. Availab
472
483
 
473
484
  ## Bundled Skills
474
485
 
475
- OpenDevBrowser includes **9 OpenDevBrowser-specific skill packs**. Install, update, and uninstall own the managed skill lifecycle across OpenCode, Codex, ClaudeCode, and AmpCLI targets:
486
+ OpenDevBrowser includes **10 OpenDevBrowser-specific skill packs**. Install, update, and uninstall own the managed skill lifecycle across OpenCode, Codex, ClaudeCode, and AmpCLI targets:
476
487
 
477
488
  | Skill | Purpose |
478
489
  |-------|---------|
479
490
  | `opendevbrowser-best-practices` | Core prompting patterns and workflow guidance |
480
491
  | `opendevbrowser-design-agent` | Contract-first, research-backed frontend and `/canvas` design execution |
492
+ | `opendevbrowser-motion-design` | Contract-first motion language, pattern selection, reduced-motion, performance, and temporal proof |
481
493
  | `opendevbrowser-continuity-ledger` | Long-running task state management |
482
494
  | `opendevbrowser-login-automation` | Authentication flow patterns |
483
495
  | `opendevbrowser-form-testing` | Form validation and submission workflows |
@@ -487,7 +499,7 @@ OpenDevBrowser includes **9 OpenDevBrowser-specific skill packs**. Install, upda
487
499
  | `opendevbrowser-product-presentation-asset` | Product screenshot/copy asset collection for presentation pipelines |
488
500
 
489
501
  Installer note:
490
- - `--skills-global` and `--skills-local` sync the 9 canonical `opendevbrowser-*` packs into managed global or project-local agent directories.
502
+ - `--skills-global` and `--skills-local` sync the 10 canonical `opendevbrowser-*` packs into managed global or project-local agent directories.
491
503
  - Managed installs write a target-level ownership marker, so later update and uninstall only act on CLI-managed skill targets or older config installs that already contain canonical packs.
492
504
  - Reinstall and update refresh drifted managed copies and leave matching packs unchanged.
493
505
  - Uninstall removes managed canonical packs, retires repo-owned legacy alias directories that match shipped content, and leaves unrelated directories untouched.
@@ -740,7 +752,7 @@ See [docs/SURFACE_REFERENCE.md](docs/SURFACE_REFERENCE.md) for the source-accura
740
752
  | `npx opendevbrowser --with-config` | Also create opendevbrowser.jsonc |
741
753
  | `npx opendevbrowser --full` | Full install (config + extension assets) |
742
754
  | `npm install -g opendevbrowser` | Install persistent global CLI |
743
- | `npx opendevbrowser --update` | Repair cached plugin pins |
755
+ | `npx opendevbrowser --update` | Repair OpenCode package caches and plugin pins |
744
756
  | `npx opendevbrowser --uninstall` | Remove from config |
745
757
  | `npx opendevbrowser --version` | Show version |
746
758
 
@@ -806,7 +818,7 @@ OpenDevBrowser is **secure by default** with defense-in-depth protections:
806
818
  ## Updating
807
819
 
808
820
  ```bash
809
- # Repair OpenCode's cached package and manifest pin, then restart OpenCode
821
+ # Repair OpenCode's cached packages, manifest pin, and lockfile, then restart OpenCode
810
822
  npx opendevbrowser --update
811
823
  ```
812
824
 
@@ -897,7 +909,7 @@ Tool Call → Zod Validation → Manager/Runner → CDP/Playwright → Response
897
909
  │ └── utils/ # Shared utilities
898
910
  ├── extension/ # Chrome extension (relay client)
899
911
  ├── scripts/ # Operational scripts (build/sync/smoke)
900
- ├── skills/ # Bundled skill directories (11 total; 9 canonical OpenDevBrowser packs + 2 shared compatibility packs)
912
+ ├── skills/ # Bundled skill directories (10 canonical OpenDevBrowser packs)
901
913
  ├── tests/ # Vitest tests (97% coverage required)
902
914
  └── docs/ # Architecture, CLI, extension, distribution plans
903
915
  ```
@@ -933,6 +945,7 @@ Uniform versioning is required (source of truth: `package.json`):
933
945
  - `node scripts/docs-drift-check.mjs`
934
946
  - `node scripts/chrome-store-compliance-check.mjs`
935
947
  - `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`
948
+ - `./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh`
936
949
  8. Run strict live release gates:
937
950
  - `node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json`
938
951
  - `node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json`
@@ -3,24 +3,24 @@ import {
3
3
  desktopCommandResult,
4
4
  parseDesktopWindowReasonArgs,
5
5
  requireDesktopReason
6
- } from "./chunk-AHEWXOKY.js";
6
+ } from "./chunk-BUXFIY2P.js";
7
7
  import "./chunk-RJNI3BHT.js";
8
- import "./chunk-RPXWUCQQ.js";
8
+ import "./chunk-SKFB5ICF.js";
9
9
  import "./chunk-OW5HMYMI.js";
10
- import "./chunk-MD655IPO.js";
11
- import "./chunk-COAOWH3G.js";
12
- import "./chunk-QOMWCRE3.js";
10
+ import "./chunk-XDLJE3RJ.js";
11
+ import "./chunk-ZOVMMQO6.js";
12
+ import "./chunk-HBK56JST.js";
13
13
  import "./chunk-MX3NFLCE.js";
14
14
  import "./chunk-ASMHEEKY.js";
15
- import "./chunk-IPE7TF2P.js";
16
- import "./chunk-STGGGVYT.js";
17
- import "./chunk-3ILXPKSJ.js";
15
+ import "./chunk-7BNU6DFI.js";
16
+ import "./chunk-QMHKAFYX.js";
17
+ import "./chunk-BUVYTJZR.js";
18
18
  import "./chunk-TBUCZX4A.js";
19
19
  import "./chunk-Y2KL55OG.js";
20
20
  import "./chunk-5SWZDVOW.js";
21
- import "./chunk-4BEJVZRK.js";
21
+ import "./chunk-RO3SMXF3.js";
22
22
  import "./chunk-S5KZQJJI.js";
23
- import "./chunk-KZ2IXVQT.js";
23
+ import "./chunk-2X4JFMKJ.js";
24
24
  import "./chunk-WHQZBUNY.js";
25
25
  import "./chunk-FUSXMW3G.js";
26
26
 
@@ -36,4 +36,4 @@ async function runDesktopAccessibilitySnapshot(args) {
36
36
  export {
37
37
  runDesktopAccessibilitySnapshot
38
38
  };
39
- //# sourceMappingURL=accessibility-snapshot-CQ4ZKWKC.js.map
39
+ //# sourceMappingURL=accessibility-snapshot-XOP66CSK.js.map
@@ -2,24 +2,24 @@ import {
2
2
  callDesktopCommand,
3
3
  desktopCommandResult,
4
4
  parseDesktopReasonArgs
5
- } from "./chunk-AHEWXOKY.js";
5
+ } from "./chunk-BUXFIY2P.js";
6
6
  import "./chunk-RJNI3BHT.js";
7
- import "./chunk-RPXWUCQQ.js";
7
+ import "./chunk-SKFB5ICF.js";
8
8
  import "./chunk-OW5HMYMI.js";
9
- import "./chunk-MD655IPO.js";
10
- import "./chunk-COAOWH3G.js";
11
- import "./chunk-QOMWCRE3.js";
9
+ import "./chunk-XDLJE3RJ.js";
10
+ import "./chunk-ZOVMMQO6.js";
11
+ import "./chunk-HBK56JST.js";
12
12
  import "./chunk-MX3NFLCE.js";
13
13
  import "./chunk-ASMHEEKY.js";
14
- import "./chunk-IPE7TF2P.js";
15
- import "./chunk-STGGGVYT.js";
16
- import "./chunk-3ILXPKSJ.js";
14
+ import "./chunk-7BNU6DFI.js";
15
+ import "./chunk-QMHKAFYX.js";
16
+ import "./chunk-BUVYTJZR.js";
17
17
  import "./chunk-TBUCZX4A.js";
18
18
  import "./chunk-Y2KL55OG.js";
19
19
  import "./chunk-5SWZDVOW.js";
20
- import "./chunk-4BEJVZRK.js";
20
+ import "./chunk-RO3SMXF3.js";
21
21
  import "./chunk-S5KZQJJI.js";
22
- import "./chunk-KZ2IXVQT.js";
22
+ import "./chunk-2X4JFMKJ.js";
23
23
  import "./chunk-WHQZBUNY.js";
24
24
  import "./chunk-FUSXMW3G.js";
25
25
 
@@ -34,4 +34,4 @@ async function runDesktopActiveWindow(args) {
34
34
  export {
35
35
  runDesktopActiveWindow
36
36
  };
37
- //# sourceMappingURL=active-window-TD5HYJ72.js.map
37
+ //# sourceMappingURL=active-window-E3WFOQGX.js.map
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  parseNumberFlag
3
- } from "./chunk-RPXWUCQQ.js";
3
+ } from "./chunk-SKFB5ICF.js";
4
4
  import {
5
5
  buildAnnotateResult
6
6
  } from "./chunk-IQTJHXZJ.js";
7
7
  import {
8
8
  DaemonClient
9
- } from "./chunk-MD655IPO.js";
10
- import "./chunk-COAOWH3G.js";
11
- import "./chunk-QOMWCRE3.js";
9
+ } from "./chunk-XDLJE3RJ.js";
10
+ import "./chunk-ZOVMMQO6.js";
11
+ import "./chunk-HBK56JST.js";
12
12
  import "./chunk-MX3NFLCE.js";
13
13
  import "./chunk-ASMHEEKY.js";
14
14
  import {
15
15
  createUsageError
16
- } from "./chunk-IPE7TF2P.js";
17
- import "./chunk-STGGGVYT.js";
18
- import "./chunk-3ILXPKSJ.js";
16
+ } from "./chunk-7BNU6DFI.js";
17
+ import "./chunk-QMHKAFYX.js";
18
+ import "./chunk-BUVYTJZR.js";
19
19
  import "./chunk-TBUCZX4A.js";
20
20
  import "./chunk-Y2KL55OG.js";
21
21
  import "./chunk-5SWZDVOW.js";
22
- import "./chunk-4BEJVZRK.js";
22
+ import "./chunk-RO3SMXF3.js";
23
23
  import "./chunk-S5KZQJJI.js";
24
- import "./chunk-KZ2IXVQT.js";
24
+ import "./chunk-2X4JFMKJ.js";
25
25
  import "./chunk-WHQZBUNY.js";
26
26
  import "./chunk-FUSXMW3G.js";
27
27
 
@@ -202,4 +202,4 @@ export {
202
202
  parseAnnotateArgs,
203
203
  runAnnotate
204
204
  };
205
- //# sourceMappingURL=annotate-VTLFS2XV.js.map
205
+ //# sourceMappingURL=annotate-MAE7ZJOZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createUsageError
3
- } from "./chunk-IPE7TF2P.js";
3
+ } from "./chunk-7BNU6DFI.js";
4
4
  import {
5
5
  cleanupExpiredArtifacts
6
6
  } from "./chunk-S5KZQJJI.js";
@@ -117,4 +117,4 @@ export {
117
117
  __test__,
118
118
  runArtifactsCommand
119
119
  };
120
- //# sourceMappingURL=artifacts-KJ6RNDO2.js.map
120
+ //# sourceMappingURL=artifacts-JHDUUJGQ.js.map
@@ -1,25 +1,25 @@
1
1
  import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseOptionalStringFlag
4
- } from "./chunk-RPXWUCQQ.js";
4
+ } from "./chunk-SKFB5ICF.js";
5
5
  import {
6
6
  callDaemon
7
- } from "./chunk-MD655IPO.js";
8
- import "./chunk-COAOWH3G.js";
9
- import "./chunk-QOMWCRE3.js";
7
+ } from "./chunk-XDLJE3RJ.js";
8
+ import "./chunk-ZOVMMQO6.js";
9
+ import "./chunk-HBK56JST.js";
10
10
  import "./chunk-MX3NFLCE.js";
11
11
  import "./chunk-ASMHEEKY.js";
12
12
  import {
13
13
  createUsageError
14
- } from "./chunk-IPE7TF2P.js";
15
- import "./chunk-STGGGVYT.js";
16
- import "./chunk-3ILXPKSJ.js";
14
+ } from "./chunk-7BNU6DFI.js";
15
+ import "./chunk-QMHKAFYX.js";
16
+ import "./chunk-BUVYTJZR.js";
17
17
  import "./chunk-TBUCZX4A.js";
18
18
  import "./chunk-Y2KL55OG.js";
19
19
  import "./chunk-5SWZDVOW.js";
20
- import "./chunk-4BEJVZRK.js";
20
+ import "./chunk-RO3SMXF3.js";
21
21
  import "./chunk-S5KZQJJI.js";
22
- import "./chunk-KZ2IXVQT.js";
22
+ import "./chunk-2X4JFMKJ.js";
23
23
  import "./chunk-WHQZBUNY.js";
24
24
  import "./chunk-FUSXMW3G.js";
25
25
 
@@ -81,4 +81,4 @@ async function runDomAttr(args) {
81
81
  export {
82
82
  runDomAttr
83
83
  };
84
- //# sourceMappingURL=attr-BCI5KYCW.js.map
84
+ //# sourceMappingURL=attr-M3PFDJ7Q.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  parseNumberFlag
3
- } from "./chunk-RPXWUCQQ.js";
3
+ } from "./chunk-SKFB5ICF.js";
4
4
  import {
5
5
  DaemonClient
6
- } from "./chunk-MD655IPO.js";
7
- import "./chunk-COAOWH3G.js";
8
- import "./chunk-QOMWCRE3.js";
6
+ } from "./chunk-XDLJE3RJ.js";
7
+ import "./chunk-ZOVMMQO6.js";
8
+ import "./chunk-HBK56JST.js";
9
9
  import "./chunk-MX3NFLCE.js";
10
10
  import "./chunk-ASMHEEKY.js";
11
11
  import {
@@ -13,15 +13,15 @@ import {
13
13
  } from "./chunk-7GVOUZMQ.js";
14
14
  import {
15
15
  createUsageError
16
- } from "./chunk-IPE7TF2P.js";
17
- import "./chunk-STGGGVYT.js";
18
- import "./chunk-3ILXPKSJ.js";
16
+ } from "./chunk-7BNU6DFI.js";
17
+ import "./chunk-QMHKAFYX.js";
18
+ import "./chunk-BUVYTJZR.js";
19
19
  import "./chunk-TBUCZX4A.js";
20
20
  import "./chunk-Y2KL55OG.js";
21
21
  import "./chunk-5SWZDVOW.js";
22
- import "./chunk-4BEJVZRK.js";
22
+ import "./chunk-RO3SMXF3.js";
23
23
  import "./chunk-S5KZQJJI.js";
24
- import "./chunk-KZ2IXVQT.js";
24
+ import "./chunk-2X4JFMKJ.js";
25
25
  import "./chunk-WHQZBUNY.js";
26
26
  import "./chunk-FUSXMW3G.js";
27
27
 
@@ -306,4 +306,4 @@ export {
306
306
  parseCanvasArgs,
307
307
  runCanvas
308
308
  };
309
- //# sourceMappingURL=canvas-5DFEEOKM.js.map
309
+ //# sourceMappingURL=canvas-3AJVL5I5.js.map
@@ -3,24 +3,24 @@ import {
3
3
  desktopCommandResult,
4
4
  parseDesktopReasonArgs,
5
5
  requireDesktopReason
6
- } from "./chunk-AHEWXOKY.js";
6
+ } from "./chunk-BUXFIY2P.js";
7
7
  import "./chunk-RJNI3BHT.js";
8
- import "./chunk-RPXWUCQQ.js";
8
+ import "./chunk-SKFB5ICF.js";
9
9
  import "./chunk-OW5HMYMI.js";
10
- import "./chunk-MD655IPO.js";
11
- import "./chunk-COAOWH3G.js";
12
- import "./chunk-QOMWCRE3.js";
10
+ import "./chunk-XDLJE3RJ.js";
11
+ import "./chunk-ZOVMMQO6.js";
12
+ import "./chunk-HBK56JST.js";
13
13
  import "./chunk-MX3NFLCE.js";
14
14
  import "./chunk-ASMHEEKY.js";
15
- import "./chunk-IPE7TF2P.js";
16
- import "./chunk-STGGGVYT.js";
17
- import "./chunk-3ILXPKSJ.js";
15
+ import "./chunk-7BNU6DFI.js";
16
+ import "./chunk-QMHKAFYX.js";
17
+ import "./chunk-BUVYTJZR.js";
18
18
  import "./chunk-TBUCZX4A.js";
19
19
  import "./chunk-Y2KL55OG.js";
20
20
  import "./chunk-5SWZDVOW.js";
21
- import "./chunk-4BEJVZRK.js";
21
+ import "./chunk-RO3SMXF3.js";
22
22
  import "./chunk-S5KZQJJI.js";
23
- import "./chunk-KZ2IXVQT.js";
23
+ import "./chunk-2X4JFMKJ.js";
24
24
  import "./chunk-WHQZBUNY.js";
25
25
  import "./chunk-FUSXMW3G.js";
26
26
 
@@ -35,4 +35,4 @@ async function runDesktopCaptureDesktop(args) {
35
35
  export {
36
36
  runDesktopCaptureDesktop
37
37
  };
38
- //# sourceMappingURL=capture-desktop-HFTTWY4Z.js.map
38
+ //# sourceMappingURL=capture-desktop-VJGEETMJ.js.map
@@ -4,24 +4,24 @@ import {
4
4
  parseDesktopWindowReasonArgs,
5
5
  requireDesktopReason,
6
6
  requireDesktopWindowId
7
- } from "./chunk-AHEWXOKY.js";
7
+ } from "./chunk-BUXFIY2P.js";
8
8
  import "./chunk-RJNI3BHT.js";
9
- import "./chunk-RPXWUCQQ.js";
9
+ import "./chunk-SKFB5ICF.js";
10
10
  import "./chunk-OW5HMYMI.js";
11
- import "./chunk-MD655IPO.js";
12
- import "./chunk-COAOWH3G.js";
13
- import "./chunk-QOMWCRE3.js";
11
+ import "./chunk-XDLJE3RJ.js";
12
+ import "./chunk-ZOVMMQO6.js";
13
+ import "./chunk-HBK56JST.js";
14
14
  import "./chunk-MX3NFLCE.js";
15
15
  import "./chunk-ASMHEEKY.js";
16
- import "./chunk-IPE7TF2P.js";
17
- import "./chunk-STGGGVYT.js";
18
- import "./chunk-3ILXPKSJ.js";
16
+ import "./chunk-7BNU6DFI.js";
17
+ import "./chunk-QMHKAFYX.js";
18
+ import "./chunk-BUVYTJZR.js";
19
19
  import "./chunk-TBUCZX4A.js";
20
20
  import "./chunk-Y2KL55OG.js";
21
21
  import "./chunk-5SWZDVOW.js";
22
- import "./chunk-4BEJVZRK.js";
22
+ import "./chunk-RO3SMXF3.js";
23
23
  import "./chunk-S5KZQJJI.js";
24
- import "./chunk-KZ2IXVQT.js";
24
+ import "./chunk-2X4JFMKJ.js";
25
25
  import "./chunk-WHQZBUNY.js";
26
26
  import "./chunk-FUSXMW3G.js";
27
27
 
@@ -37,4 +37,4 @@ async function runDesktopCaptureWindow(args) {
37
37
  export {
38
38
  runDesktopCaptureWindow
39
39
  };
40
- //# sourceMappingURL=capture-window-X63XPIFF.js.map
40
+ //# sourceMappingURL=capture-window-W5UFSFQL.js.map
@@ -1,25 +1,25 @@
1
1
  import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseOptionalStringFlag
4
- } from "./chunk-RPXWUCQQ.js";
4
+ } from "./chunk-SKFB5ICF.js";
5
5
  import {
6
6
  callDaemon
7
- } from "./chunk-MD655IPO.js";
8
- import "./chunk-COAOWH3G.js";
9
- import "./chunk-QOMWCRE3.js";
7
+ } from "./chunk-XDLJE3RJ.js";
8
+ import "./chunk-ZOVMMQO6.js";
9
+ import "./chunk-HBK56JST.js";
10
10
  import "./chunk-MX3NFLCE.js";
11
11
  import "./chunk-ASMHEEKY.js";
12
12
  import {
13
13
  createUsageError
14
- } from "./chunk-IPE7TF2P.js";
15
- import "./chunk-STGGGVYT.js";
16
- import "./chunk-3ILXPKSJ.js";
14
+ } from "./chunk-7BNU6DFI.js";
15
+ import "./chunk-QMHKAFYX.js";
16
+ import "./chunk-BUVYTJZR.js";
17
17
  import "./chunk-TBUCZX4A.js";
18
18
  import "./chunk-Y2KL55OG.js";
19
19
  import "./chunk-5SWZDVOW.js";
20
- import "./chunk-4BEJVZRK.js";
20
+ import "./chunk-RO3SMXF3.js";
21
21
  import "./chunk-S5KZQJJI.js";
22
- import "./chunk-KZ2IXVQT.js";
22
+ import "./chunk-2X4JFMKJ.js";
23
23
  import "./chunk-WHQZBUNY.js";
24
24
  import "./chunk-FUSXMW3G.js";
25
25
 
@@ -68,4 +68,4 @@ async function runCheck(args) {
68
68
  export {
69
69
  runCheck
70
70
  };
71
- //# sourceMappingURL=check-LWAUY7GC.js.map
71
+ //# sourceMappingURL=check-4IR3UJVW.js.map
@@ -1,25 +1,25 @@
1
1
  import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseOptionalStringFlag
4
- } from "./chunk-RPXWUCQQ.js";
4
+ } from "./chunk-SKFB5ICF.js";
5
5
  import {
6
6
  callDaemon
7
- } from "./chunk-MD655IPO.js";
8
- import "./chunk-COAOWH3G.js";
9
- import "./chunk-QOMWCRE3.js";
7
+ } from "./chunk-XDLJE3RJ.js";
8
+ import "./chunk-ZOVMMQO6.js";
9
+ import "./chunk-HBK56JST.js";
10
10
  import "./chunk-MX3NFLCE.js";
11
11
  import "./chunk-ASMHEEKY.js";
12
12
  import {
13
13
  createUsageError
14
- } from "./chunk-IPE7TF2P.js";
15
- import "./chunk-STGGGVYT.js";
16
- import "./chunk-3ILXPKSJ.js";
14
+ } from "./chunk-7BNU6DFI.js";
15
+ import "./chunk-QMHKAFYX.js";
16
+ import "./chunk-BUVYTJZR.js";
17
17
  import "./chunk-TBUCZX4A.js";
18
18
  import "./chunk-Y2KL55OG.js";
19
19
  import "./chunk-5SWZDVOW.js";
20
- import "./chunk-4BEJVZRK.js";
20
+ import "./chunk-RO3SMXF3.js";
21
21
  import "./chunk-S5KZQJJI.js";
22
- import "./chunk-KZ2IXVQT.js";
22
+ import "./chunk-2X4JFMKJ.js";
23
23
  import "./chunk-WHQZBUNY.js";
24
24
  import "./chunk-FUSXMW3G.js";
25
25
 
@@ -68,4 +68,4 @@ async function runDomChecked(args) {
68
68
  export {
69
69
  runDomChecked
70
70
  };
71
- //# sourceMappingURL=checked-ZSOUKVYT.js.map
71
+ //# sourceMappingURL=checked-PKNY7724.js.map
@@ -9,6 +9,10 @@ var INSPIREDESIGN_HANDOFF_FILES = {
9
9
  implementationPlanMarkdown: "implementation-plan.md",
10
10
  implementationPlan: "implementation-plan.json",
11
11
  evidence: "evidence.json",
12
+ visualEvidence: "visual-evidence.json",
13
+ screenshotIndex: "screenshot-index.json",
14
+ rankedReferences: "ranked-references.json",
15
+ metaPrompt: "meta-prompt.md",
12
16
  prototypeGuidance: "prototype-guidance.md"
13
17
  };
14
18
  var INSPIREDESIGN_HANDOFF_SKILLS = {
@@ -19,6 +23,10 @@ var INSPIREDESIGN_HANDOFF_SKILLS = {
19
23
  designAgent: {
20
24
  name: "opendevbrowser-design-agent",
21
25
  topic: "canvas-contract"
26
+ },
27
+ motionDesign: {
28
+ name: "opendevbrowser-motion-design",
29
+ topic: "quick start"
22
30
  }
23
31
  };
24
32
  var formatSkillReference = (skill) => `${skill.name} "${skill.topic}"`;
@@ -26,16 +34,19 @@ var formatSkillLoadCommand = (skill) => `opendevbrowser_skill_load ${skill.name}
26
34
  var INSPIREDESIGN_HANDOFF_COMMANDS = {
27
35
  loadBestPractices: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.bestPractices),
28
36
  loadDesignAgent: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.designAgent),
37
+ loadMotionDesign: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.motionDesign),
29
38
  continueInCanvas: `opendevbrowser canvas --command canvas.plan.set --params-file ./${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest}`
30
39
  };
31
40
  var INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS = [
32
41
  formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.bestPractices),
33
- formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.designAgent)
42
+ formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.designAgent),
43
+ formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.motionDesign)
34
44
  ];
35
45
  var INSPIREDESIGN_HANDOFF_GUIDANCE = {
36
46
  reviewAdvancedBrief: `${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} is the authoritative reference-first brief. When URL references exist, captured evidence leads the creative direction; selected format, profile defaults, layout posture, motion grammar, and anti-patterns are route guardrails only. Read it before touching Canvas or implementation files.`,
37
47
  prepareCanvasPlanRequest: `Fill canvasSessionId, leaseId, and documentId in ${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest} before running ${INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas}.`,
38
- deepCaptureRecommendation: "Any inspiredesign run with reference URLs already uses captureMode=deep. Rerun with the same URLs only when you need refreshed DOM/layout evidence, restored session state, or capture-specific debugging."
48
+ deepCaptureRecommendation: "Any inspiredesign run with reference URLs already uses captureMode=deep. Rerun with the same URLs only when you need refreshed DOM/layout evidence, restored session state, or capture-specific debugging.",
49
+ visualArtifactRecommendation: `${INSPIREDESIGN_HANDOFF_FILES.visualEvidence}, ${INSPIREDESIGN_HANDOFF_FILES.screenshotIndex}, ${INSPIREDESIGN_HANDOFF_FILES.rankedReferences}, and ${INSPIREDESIGN_HANDOFF_FILES.metaPrompt} are metadata-only guidance surfaces. Read them before translating visual or motion cues, and inspect PNG files by path instead of expecting image blobs in JSON.`
39
50
  };
40
51
  var INSPIREDESIGN_ARTIFACT_GUIDE = {
41
52
  [INSPIREDESIGN_HANDOFF_FILES.advancedBrief]: {
@@ -92,6 +103,30 @@ var INSPIREDESIGN_ARTIFACT_GUIDE = {
92
103
  howToUse: ["Audit why choices were made", "prefer evidence over generic template defaults"],
93
104
  mustNot: ["Do not ignore failed or skipped capture statuses when judging confidence"]
94
105
  },
106
+ [INSPIREDESIGN_HANDOFF_FILES.visualEvidence]: {
107
+ purpose: "Metadata-only visual evidence index for screenshot capture results.",
108
+ expectedContents: ["reference ids", "artifact-relative PNG paths", "hashes", "byte counts", "viewport metadata when available", "warnings"],
109
+ howToUse: ["Open PNG files by path", "audit hashes and warnings before making visual claims"],
110
+ mustNot: ["Do not expect base64 images, absolute temp paths, DOM, or raw screenshots in JSON"]
111
+ },
112
+ [INSPIREDESIGN_HANDOFF_FILES.screenshotIndex]: {
113
+ purpose: "Compact index of finalized screenshot PNG files.",
114
+ expectedContents: ["reference ids", "paths", "sha256 hashes", "byte counts", "capture timestamps"],
115
+ howToUse: ["Use for bundle inspection", "confirm every listed path exists before implementation"],
116
+ mustNot: ["Do not treat missing screenshots as visual proof"]
117
+ },
118
+ [INSPIREDESIGN_HANDOFF_FILES.rankedReferences]: {
119
+ purpose: "Deterministic ranked reference pattern board for design transfer.",
120
+ expectedContents: ["rank", "score", "confidence", "visual strengths", "visual risks", "rejected references"],
121
+ howToUse: ["Start from rank 1 for dominant direction", "borrow patterns and reject risks explicitly"],
122
+ mustNot: ["Do not copy source brands or override the ranked order with source order"]
123
+ },
124
+ [INSPIREDESIGN_HANDOFF_FILES.metaPrompt]: {
125
+ purpose: "Markdown prompt for downstream design generation from harvested evidence.",
126
+ expectedContents: ["ranked references", "borrow guidance", "reject guidance", "motion posture", "accessibility constraints", "validation gates"],
127
+ howToUse: ["Use as the prompt brief for the first design pass", "pair with the motion-design skill for timing and reduced-motion decisions"],
128
+ mustNot: ["Do not generate production code from harvest output alone"]
129
+ },
95
130
  [INSPIREDESIGN_HANDOFF_FILES.prototypeGuidance]: {
96
131
  purpose: "Optional first prototype guidance when the workflow requests prototype output.",
97
132
  expectedContents: ["prototype structure", "design-vector guidance", "browser proof checklist"],
@@ -203,7 +238,7 @@ var INSPIREDESIGN_CONTRACT_SECTION_GUIDE = {
203
238
  mustNot: ["Do not ship heavy interaction surfaces without measurement evidence"]
204
239
  }
205
240
  };
206
- var buildInspiredesignFollowthroughSummary = () => `Read ${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} first, then continue in OpenDevBrowser Canvas with ${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest} and ${INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff}, load ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[0]} plus ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[1]} before implementation, and note that any supplied reference URL already uses captureMode=deep.`;
241
+ var buildInspiredesignFollowthroughSummary = () => `Read ${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} first, then continue in OpenDevBrowser Canvas with ${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest} and ${INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff}, load ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[0]}, ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[1]}, and ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[2]} before implementation, inspect ${INSPIREDESIGN_HANDOFF_FILES.metaPrompt} plus screenshot metadata, and note that any supplied reference URL already uses captureMode=deep.`;
207
242
  var buildInspiredesignNextStep = () => `Read ${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} first. ${INSPIREDESIGN_HANDOFF_GUIDANCE.prepareCanvasPlanRequest} Then run ${INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas}, confirm planStatus=accepted, then patch only the governance blocks listed in ${INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff}.`;
208
243
 
209
244
  export {
@@ -216,4 +251,4 @@ export {
216
251
  buildInspiredesignFollowthroughSummary,
217
252
  buildInspiredesignNextStep
218
253
  };
219
- //# sourceMappingURL=chunk-KZ2IXVQT.js.map
254
+ //# sourceMappingURL=chunk-2X4JFMKJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/inspiredesign/handoff.ts"],"sourcesContent":["export const INSPIREDESIGN_HANDOFF_FILES = {\n designMarkdown: \"design.md\",\n advancedBrief: \"advanced-brief.md\",\n designContract: \"design-contract.json\",\n canvasPlanRequest: \"canvas-plan.request.json\",\n designAgentHandoff: \"design-agent-handoff.json\",\n generationPlan: \"generation-plan.json\",\n implementationPlanMarkdown: \"implementation-plan.md\",\n implementationPlan: \"implementation-plan.json\",\n evidence: \"evidence.json\",\n visualEvidence: \"visual-evidence.json\",\n screenshotIndex: \"screenshot-index.json\",\n rankedReferences: \"ranked-references.json\",\n metaPrompt: \"meta-prompt.md\",\n prototypeGuidance: \"prototype-guidance.md\"\n} as const;\n\nexport type InspiredesignGuideEntry = {\n purpose: string;\n expectedContents: readonly string[];\n howToUse: readonly string[];\n mustNot: readonly string[];\n};\n\ntype InspiredesignHandoffFile =\n (typeof INSPIREDESIGN_HANDOFF_FILES)[keyof typeof INSPIREDESIGN_HANDOFF_FILES];\n\nexport type InspiredesignArtifactGuide = Record<InspiredesignHandoffFile, InspiredesignGuideEntry>;\n\nexport type InspiredesignContractSectionGuide = Record<string, InspiredesignGuideEntry>;\n\nconst INSPIREDESIGN_HANDOFF_SKILLS = {\n bestPractices: {\n name: \"opendevbrowser-best-practices\",\n topic: \"quick start\"\n },\n designAgent: {\n name: \"opendevbrowser-design-agent\",\n topic: \"canvas-contract\"\n },\n motionDesign: {\n name: \"opendevbrowser-motion-design\",\n topic: \"quick start\"\n }\n} as const;\n\ntype InspiredesignHandoffSkill =\n (typeof INSPIREDESIGN_HANDOFF_SKILLS)[keyof typeof INSPIREDESIGN_HANDOFF_SKILLS];\n\nconst formatSkillReference = (skill: InspiredesignHandoffSkill): string => (\n `${skill.name} \"${skill.topic}\"`\n);\n\nconst formatSkillLoadCommand = (skill: InspiredesignHandoffSkill): string => (\n `opendevbrowser_skill_load ${skill.name} \"${skill.topic}\"`\n);\n\nexport const INSPIREDESIGN_HANDOFF_COMMANDS = {\n loadBestPractices: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.bestPractices),\n loadDesignAgent: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.designAgent),\n loadMotionDesign: formatSkillLoadCommand(INSPIREDESIGN_HANDOFF_SKILLS.motionDesign),\n continueInCanvas: `opendevbrowser canvas --command canvas.plan.set --params-file ./${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest}`\n} as const;\n\nexport const INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS = [\n formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.bestPractices),\n formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.designAgent),\n formatSkillReference(INSPIREDESIGN_HANDOFF_SKILLS.motionDesign)\n] as const;\n\nexport const INSPIREDESIGN_HANDOFF_GUIDANCE = {\n reviewAdvancedBrief: `${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} is the authoritative reference-first brief. When URL references exist, captured evidence leads the creative direction; selected format, profile defaults, layout posture, motion grammar, and anti-patterns are route guardrails only. Read it before touching Canvas or implementation files.`,\n prepareCanvasPlanRequest: `Fill canvasSessionId, leaseId, and documentId in ${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest} before running ${INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas}.`,\n deepCaptureRecommendation: \"Any inspiredesign run with reference URLs already uses captureMode=deep. Rerun with the same URLs only when you need refreshed DOM/layout evidence, restored session state, or capture-specific debugging.\",\n visualArtifactRecommendation: `${INSPIREDESIGN_HANDOFF_FILES.visualEvidence}, ${INSPIREDESIGN_HANDOFF_FILES.screenshotIndex}, ${INSPIREDESIGN_HANDOFF_FILES.rankedReferences}, and ${INSPIREDESIGN_HANDOFF_FILES.metaPrompt} are metadata-only guidance surfaces. Read them before translating visual or motion cues, and inspect PNG files by path instead of expecting image blobs in JSON.`\n} as const;\n\nexport const INSPIREDESIGN_ARTIFACT_GUIDE: InspiredesignArtifactGuide = {\n [INSPIREDESIGN_HANDOFF_FILES.advancedBrief]: {\n purpose: \"Authoritative reference-first brief for the downstream design agent.\",\n expectedContents: [\"Selected prompt format\", \"reference pattern board\", \"route guardrails\"],\n howToUse: [\"Read first\", \"treat captured evidence as creative priority\", \"use guardrails to avoid route drift\"],\n mustNot: [\"Do not treat defaults as stronger than captured references\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.designMarkdown]: {\n purpose: \"Human-readable design specification and implementation narrative.\",\n expectedContents: [\"inspiration analysis\", \"unified direction\", \"governance summary\", \"deliverables\"],\n howToUse: [\"Use as the readable project brief\", \"cross-check implementation choices against its sections\"],\n mustNot: [\"Do not use prose as a substitute for the JSON contract when patching Canvas\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.designContract]: {\n purpose: \"Narrowed Canvas governance contract for design decisions.\",\n expectedContents: [\"emitted governance blocks\", \"motion system\", \"library policy\", \"runtime budgets\"],\n howToUse: [\"Patch only emitted governance blocks\", \"compare implementation against this contract before shipping\"],\n mustNot: [\"Do not add navigation, async, or performance context as Canvas governance patches\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest]: {\n purpose: \"Ready-to-fill request payload for `canvas.plan.set`.\",\n expectedContents: [\"request ids\", \"Canvas session ids\", \"mutation-safe generationPlan\"],\n howToUse: [\"Fill canvasSessionId, leaseId, and documentId\", \"submit with the provided canvas.plan.set command\"],\n mustNot: [\"Do not add handoff-only fields or reference-only analysis to generationPlan\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff]: {\n purpose: \"Downstream index for artifact usage, skills, commands, and omitted implementation context.\",\n expectedContents: [\"skills\", \"commands\", \"contract scope\", \"implementation context\", \"artifact and section guides\"],\n howToUse: [\"Use as the navigation map for the bundle\", \"load recommended skills before implementation\"],\n mustNot: [\"Do not treat handoff context as runtime Canvas schema\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.generationPlan]: {\n purpose: \"Full generated plan for reasoning about design intent.\",\n expectedContents: [\"Canvas plan fields\", \"design vectors\", \"reference analysis when available\"],\n howToUse: [\"Use for agent reasoning and audit traceability\", \"compare with canvas-plan.request.json for runtime subset\"],\n mustNot: [\"Do not submit this file directly to Canvas when it contains non-request context\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.implementationPlanMarkdown]: {\n purpose: \"Human-readable engineering sequence for the first implementation pass.\",\n expectedContents: [\"build sequence\", \"component plan\", \"token strategy\", \"QA and risk checks\"],\n howToUse: [\"Convert sections into implementation tasks\", \"keep tests and browser validation aligned to the plan\"],\n mustNot: [\"Do not implement sections unsupported by brief or reference evidence\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.implementationPlan]: {\n purpose: \"Machine-readable implementation plan matching the Markdown plan.\",\n expectedContents: [\"architecture steps\", \"component inventory\", \"state and validation tasks\"],\n howToUse: [\"Use for structured task extraction\", \"keep it synchronized with implementation-plan.md\"],\n mustNot: [\"Do not treat it as a Canvas document patch payload\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.evidence]: {\n purpose: \"Evidence digest for brief, reference, capture, and design-vector provenance.\",\n expectedContents: [\"brief expansion\", \"reference outcomes\", \"capture attempts\", \"design vectors\"],\n howToUse: [\"Audit why choices were made\", \"prefer evidence over generic template defaults\"],\n mustNot: [\"Do not ignore failed or skipped capture statuses when judging confidence\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.visualEvidence]: {\n purpose: \"Metadata-only visual evidence index for screenshot capture results.\",\n expectedContents: [\"reference ids\", \"artifact-relative PNG paths\", \"hashes\", \"byte counts\", \"viewport metadata when available\", \"warnings\"],\n howToUse: [\"Open PNG files by path\", \"audit hashes and warnings before making visual claims\"],\n mustNot: [\"Do not expect base64 images, absolute temp paths, DOM, or raw screenshots in JSON\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.screenshotIndex]: {\n purpose: \"Compact index of finalized screenshot PNG files.\",\n expectedContents: [\"reference ids\", \"paths\", \"sha256 hashes\", \"byte counts\", \"capture timestamps\"],\n howToUse: [\"Use for bundle inspection\", \"confirm every listed path exists before implementation\"],\n mustNot: [\"Do not treat missing screenshots as visual proof\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.rankedReferences]: {\n purpose: \"Deterministic ranked reference pattern board for design transfer.\",\n expectedContents: [\"rank\", \"score\", \"confidence\", \"visual strengths\", \"visual risks\", \"rejected references\"],\n howToUse: [\"Start from rank 1 for dominant direction\", \"borrow patterns and reject risks explicitly\"],\n mustNot: [\"Do not copy source brands or override the ranked order with source order\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.metaPrompt]: {\n purpose: \"Markdown prompt for downstream design generation from harvested evidence.\",\n expectedContents: [\"ranked references\", \"borrow guidance\", \"reject guidance\", \"motion posture\", \"accessibility constraints\", \"validation gates\"],\n howToUse: [\"Use as the prompt brief for the first design pass\", \"pair with the motion-design skill for timing and reduced-motion decisions\"],\n mustNot: [\"Do not generate production code from harvest output alone\"]\n },\n [INSPIREDESIGN_HANDOFF_FILES.prototypeGuidance]: {\n purpose: \"Optional first prototype guidance when the workflow requests prototype output.\",\n expectedContents: [\"prototype structure\", \"design-vector guidance\", \"browser proof checklist\"],\n howToUse: [\"Use only for the first prototype pass\", \"promote proven ideas back into contract-aligned work\"],\n mustNot: [\"Do not treat prototype guidance as final implementation authority\"]\n }\n};\n\nexport const INSPIREDESIGN_CONTRACT_SECTION_GUIDE: InspiredesignContractSectionGuide = {\n intent: {\n purpose: \"Define why the design exists and what success means.\",\n expectedContents: [\"audience\", \"task\", \"success criteria\", \"trust posture\"],\n howToUse: [\"Validate the primary user job before styling\", \"reject sections that do not serve the task\"],\n mustNot: [\"Do not start visual polish before the audience and task are clear\"]\n },\n generationPlan: {\n purpose: \"Mutation-safe subset accepted by Canvas planning.\",\n expectedContents: [\"target outcome\", \"visual, layout, content, component, motion, responsive, accessibility posture\"],\n howToUse: [\"Submit only through canvas-plan.request.json\", \"repair generationPlanIssues before mutation\"],\n mustNot: [\"Do not add handoff-only guide fields to the Canvas generation plan\"]\n },\n designLanguage: {\n purpose: \"Name the coherent visual direction and token ownership.\",\n expectedContents: [\"direction\", \"style axes\", \"semantic token source\", \"approved libraries\"],\n howToUse: [\"Keep one design language per task\", \"align repeated components to semantic tokens\"],\n mustNot: [\"Do not mix unrelated visual families inside one surface\"]\n },\n contentModel: {\n purpose: \"Define real content, message hierarchy, and UI states.\",\n expectedContents: [\"primary message\", \"supporting messages\", \"states\", \"loading, empty, and error behavior\"],\n howToUse: [\"Use real content first\", \"plan non-happy-path states before polish\"],\n mustNot: [\"Do not ship placeholder copy as product content\"]\n },\n layoutSystem: {\n purpose: \"Describe page architecture and section rhythm.\",\n expectedContents: [\"grid\", \"containers\", \"spacing rhythm\", \"alignment rules\"],\n howToUse: [\"Use to place sections and scan units consistently\", \"verify desktop and mobile structure\"],\n mustNot: [\"Do not invent one-off layout rules for repeated sections\"]\n },\n typographySystem: {\n purpose: \"Define type families, scale, measure, and loading behavior.\",\n expectedContents: [\"families\", \"scale\", \"measure\", \"fallback policy\", \"loading strategy\"],\n howToUse: [\"Apply type hierarchy consistently\", \"avoid layout shift from font loading\"],\n mustNot: [\"Do not default to unapproved system stacks for a distinctive design\"]\n },\n colorSystem: {\n purpose: \"Define semantic color roles and theme behavior.\",\n expectedContents: [\"primary roles\", \"surface roles\", \"text roles\", \"state colors\"],\n howToUse: [\"Map repeated UI to semantic tokens\", \"validate contrast in every required theme\"],\n mustNot: [\"Do not scatter raw color values across leaf components\"]\n },\n surfaceSystem: {\n purpose: \"Define material, depth, borders, and background behavior.\",\n expectedContents: [\"surface hierarchy\", \"border rules\", \"shadow rules\", \"material effects\"],\n howToUse: [\"Use depth only to clarify hierarchy\", \"align material effects with design vectors\"],\n mustNot: [\"Do not turn every content group into a card by default\"]\n },\n iconSystem: {\n purpose: \"Define icon usage and decorative asset boundaries.\",\n expectedContents: [\"icon family\", \"stroke policy\", \"labeling rules\", \"decorative rules\"],\n howToUse: [\"Use icons to clarify actions\", \"keep accessible names on icon-only controls\"],\n mustNot: [\"Do not rely on icons as the only explanation for critical actions\"]\n },\n motionSystem: {\n purpose: \"Define motion that supports comprehension.\",\n expectedContents: [\"timing\", \"interaction moments\", \"reduced-motion posture\", \"advanced motion advisory\"],\n howToUse: [\"Keep shader, WebGL, and Spline cues advisory\", \"provide reduced-motion replacements\"],\n mustNot: [\"Do not use motion cues to authorize new runtime libraries\"]\n },\n responsiveSystem: {\n purpose: \"Define authored behavior across desktop, tablet, and mobile.\",\n expectedContents: [\"breakpoints\", \"adaptation rules\", \"touch policy\", \"overflow policy\"],\n howToUse: [\"Validate the primary action at every viewport\", \"collapse structure before copy becomes cramped\"],\n mustNot: [\"Do not assume desktop layouts naturally scale down\"]\n },\n accessibilityPolicy: {\n purpose: \"Set accessibility requirements before implementation.\",\n expectedContents: [\"WCAG target\", \"keyboard requirements\", \"focus policy\", \"semantic requirements\"],\n howToUse: [\"Block release on contrast or keyboard regressions\", \"validate focus on every interactive state\"],\n mustNot: [\"Do not defer accessibility until after visual implementation\"]\n },\n libraryPolicy: {\n purpose: \"Declare approved implementation libraries and runtime boundaries.\",\n expectedContents: [\"components\", \"icons\", \"styling\", \"motion\", \"threeD\"],\n howToUse: [\"Use as the dependency authorization boundary\", \"keep motion and threeD empty unless separately approved\"],\n mustNot: [\"Do not infer WebGL, shader, Spline, or 3D runtime support from advisory motion\"]\n },\n runtimeBudgets: {\n purpose: \"Set practical limits for sections, actions, interaction latency, and preview cost.\",\n expectedContents: [\"section budgets\", \"action budgets\", \"latency budgets\", \"preview notes\"],\n howToUse: [\"Use as a constraint during implementation\", \"validate slow or animation-heavy surfaces against it\"],\n mustNot: [\"Do not add decorative weight that violates the budget\"]\n },\n navigationModel: {\n purpose: \"Implementation-only context for route, tab, overlay, and deep-link ownership.\",\n expectedContents: [\"route owner\", \"deep-link policy\", \"invalid route fallback\", \"overlay entry points\"],\n howToUse: [\"Use from design-agent-handoff.json when wiring implementation state\"],\n mustNot: [\"Do not patch this omitted block into Canvas governance\"]\n },\n asyncModel: {\n purpose: \"Implementation-only context for loading, restart, cancellation, and URL-owned query state.\",\n expectedContents: [\"owner\", \"load trigger\", \"restart triggers\", \"cancellation policy\"],\n howToUse: [\"Use when wiring fetch/search state and stale-request handling\"],\n mustNot: [\"Do not let components invent independent async ownership\"]\n },\n performanceModel: {\n purpose: \"Implementation-only context for render hotspots and measurement posture.\",\n expectedContents: [\"render hotspots\", \"stable identity policy\", \"list strategy\", \"measurement plan\"],\n howToUse: [\"Use before building scan-heavy or motion-heavy surfaces\"],\n mustNot: [\"Do not ship heavy interaction surfaces without measurement evidence\"]\n }\n};\n\nexport const buildInspiredesignFollowthroughSummary = (): string => (\n `Read ${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} first, then continue in OpenDevBrowser Canvas with ${INSPIREDESIGN_HANDOFF_FILES.canvasPlanRequest} and ${INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff}, load ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[0]}, ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[1]}, and ${INSPIREDESIGN_HANDOFF_RECOMMENDED_SKILLS[2]} before implementation, inspect ${INSPIREDESIGN_HANDOFF_FILES.metaPrompt} plus screenshot metadata, and note that any supplied reference URL already uses captureMode=deep.`\n);\n\nexport const buildInspiredesignNextStep = (): string => (\n `Read ${INSPIREDESIGN_HANDOFF_FILES.advancedBrief} first. ${INSPIREDESIGN_HANDOFF_GUIDANCE.prepareCanvasPlanRequest} Then run ${INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas}, confirm planStatus=accepted, then patch only the governance blocks listed in ${INSPIREDESIGN_HANDOFF_FILES.designAgentHandoff}.`\n);\n"],"mappings":"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","names":[]}