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
@@ -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
 
@@ -91,4 +91,4 @@ async function runType(args) {
91
91
  export {
92
92
  runType
93
93
  };
94
- //# sourceMappingURL=type-IYBN3ZLR.js.map
94
+ //# sourceMappingURL=type-Y2Y7LX7Y.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 runUncheck(args) {
68
68
  export {
69
69
  runUncheck
70
70
  };
71
- //# sourceMappingURL=uncheck-SG737EGI.js.map
71
+ //# sourceMappingURL=uncheck-6REVUUB2.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  hasBundledSkillArtifacts,
3
3
  hasManagedBundledSkillInstall
4
- } from "./chunk-KDSNXS6N.js";
4
+ } from "./chunk-ZMNEWS7A.js";
5
5
  import {
6
6
  getGlobalConfigPath,
7
7
  getLocalConfigPath,
@@ -9,7 +9,7 @@ import {
9
9
  readConfig,
10
10
  removePluginFromContent
11
11
  } from "./chunk-7THCPS52.js";
12
- import "./chunk-3ILXPKSJ.js";
12
+ import "./chunk-BUVYTJZR.js";
13
13
  import "./chunk-TBUCZX4A.js";
14
14
 
15
15
  // src/cli/commands/uninstall.ts
@@ -88,4 +88,4 @@ export {
88
88
  hasInstalledConfig,
89
89
  runUninstall
90
90
  };
91
- //# sourceMappingURL=uninstall-KYKGJAX7.js.map
91
+ //# sourceMappingURL=uninstall-FW5ORBIN.js.map
@@ -7,6 +7,7 @@ var PLUGIN_NAME = "opendevbrowser";
7
7
  var CACHE_MANIFEST = "package.json";
8
8
  var CACHE_LOCKFILE = "package-lock.json";
9
9
  var CACHE_UPDATE_LOCK = ".opendevbrowser-update.lock";
10
+ var OPENCODE_PACKAGE_ALIAS = `${PLUGIN_NAME}@latest`;
10
11
  var CACHE_LOCK_STALE_MS = 30 * 60 * 1e3;
11
12
  var DEPENDENCY_SECTIONS = [
12
13
  "dependencies",
@@ -257,6 +258,7 @@ function runUpdate() {
257
258
  const cacheDir = getCacheDir();
258
259
  const nodeModulesDir = path.join(cacheDir, "node_modules");
259
260
  const pluginCacheDir = path.join(nodeModulesDir, PLUGIN_NAME);
261
+ const pluginPackageCacheDir = path.join(cacheDir, "packages", OPENCODE_PACKAGE_ALIAS);
260
262
  const lockfilePath = path.join(cacheDir, CACHE_LOCKFILE);
261
263
  try {
262
264
  if (!cacheDirectoryExists(cacheDir)) {
@@ -269,14 +271,16 @@ function runUpdate() {
269
271
  preflightCacheMutationPaths(cacheDir, [
270
272
  path.join(cacheDir, CACHE_MANIFEST),
271
273
  pluginCacheDir,
274
+ pluginPackageCacheDir,
272
275
  lockfilePath,
273
276
  path.join(cacheDir, CACHE_UPDATE_LOCK)
274
277
  ]);
275
278
  const cleared = withCacheMutationLock(cacheDir, () => {
276
279
  const manifestPinRemoved = removeManifestPin(cacheDir);
277
280
  const packageRemoved = removePathIfExists(pluginCacheDir, cacheDir);
281
+ const aliasedPackageRemoved = removePathIfExists(pluginPackageCacheDir, cacheDir);
278
282
  const lockfileRemoved = removePathIfExists(lockfilePath, cacheDir);
279
- return packageRemoved || manifestPinRemoved || lockfileRemoved;
283
+ return packageRemoved || aliasedPackageRemoved || manifestPinRemoved || lockfileRemoved;
280
284
  });
281
285
  if (!cleared) {
282
286
  return {
@@ -302,4 +306,4 @@ function runUpdate() {
302
306
  export {
303
307
  runUpdate
304
308
  };
305
- //# sourceMappingURL=update-SMXPYGXS.js.map
309
+ //# sourceMappingURL=update-FZGSXB74.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/update.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { randomUUID } from \"crypto\";\n\nconst PLUGIN_NAME = \"opendevbrowser\";\nconst CACHE_MANIFEST = \"package.json\";\nconst CACHE_LOCKFILE = \"package-lock.json\";\nconst CACHE_UPDATE_LOCK = \".opendevbrowser-update.lock\";\n// OpenCode's active package alias cache uses the npm spec directory name.\n// Keep this exact so update repair cannot delete unrelated package aliases.\nconst OPENCODE_PACKAGE_ALIAS = `${PLUGIN_NAME}@latest`;\nconst CACHE_LOCK_STALE_MS = 30 * 60 * 1000;\nconst DEPENDENCY_SECTIONS = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n \"peerDependencies\"\n] as const;\n\ntype DependencySection = typeof DEPENDENCY_SECTIONS[number];\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\ntype JsonObject = { [key: string]: JsonValue };\ntype CacheMutationLock = {\n pid: number;\n createdAt: number;\n token?: string;\n};\ntype HeldCacheMutationLock = {\n fd: number;\n token: string;\n};\n\nexport interface UpdateResult {\n success: boolean;\n message: string;\n cleared: boolean;\n}\n\nfunction getCacheDir(): string {\n return process.env.OPENCODE_CACHE_DIR\n || path.join(os.homedir(), \".cache\", \"opencode\");\n}\n\nfunction assertCacheChild(targetPath: string, cacheDir: string): void {\n const resolvedCache = path.resolve(cacheDir);\n const resolvedPath = path.resolve(targetPath);\n const relativePath = path.relative(resolvedCache, resolvedPath);\n\n if (!relativePath || relativePath.startsWith(\"..\") || path.isAbsolute(relativePath)) {\n throw new Error(`Security: refusing to modify path outside cache directory: ${targetPath}`);\n }\n}\n\nfunction isMissingPathError(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && error.code === \"ENOENT\";\n}\n\nfunction isExistingPathError(error: unknown): boolean {\n return error instanceof Error && \"code\" in error && error.code === \"EEXIST\";\n}\n\nfunction assertNoSymlinkCachePath(targetPath: string, cacheDir: string): void {\n assertCacheChild(targetPath, cacheDir);\n const resolvedCache = path.resolve(cacheDir);\n const relativeSegments = path.relative(resolvedCache, path.resolve(targetPath)).split(path.sep).filter(Boolean);\n for (const candidate of [resolvedCache, ...relativeSegments.map((_, index) => path.join(resolvedCache, ...relativeSegments.slice(0, index + 1)))]) {\n try {\n if (fs.lstatSync(candidate).isSymbolicLink()) {\n throw new Error(`Security: refusing to modify symlinked cache path: ${candidate}`);\n }\n } catch (error) {\n if (isMissingPathError(error)) {\n continue;\n }\n throw error;\n }\n }\n}\n\nfunction cacheDirectoryExists(cacheDir: string): boolean {\n try {\n const stat = fs.lstatSync(cacheDir);\n if (stat.isSymbolicLink()) {\n throw new Error(`Security: refusing to modify symlinked cache path: ${cacheDir}`);\n }\n if (!stat.isDirectory()) {\n throw new Error(`${cacheDir} must be a directory`);\n }\n return true;\n } catch (error) {\n if (isMissingPathError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nfunction removePathIfExists(targetPath: string, cacheDir: string): boolean {\n assertNoSymlinkCachePath(targetPath, cacheDir);\n if (!fs.existsSync(targetPath)) {\n return false;\n }\n\n fs.rmSync(targetPath, { recursive: true, force: true });\n return true;\n}\n\nfunction cacheFileExists(targetPath: string, cacheDir: string): boolean {\n assertNoSymlinkCachePath(targetPath, cacheDir);\n try {\n const stat = fs.lstatSync(targetPath);\n if (stat.isSymbolicLink()) {\n throw new Error(`Security: refusing to modify symlinked cache manifest: ${targetPath}`);\n }\n return stat.isFile();\n } catch (error) {\n if (isMissingPathError(error)) {\n return false;\n }\n throw error;\n }\n}\n\nfunction writeManifestAtomic(manifestPath: string, cacheDir: string, manifest: JsonObject): void {\n const tempPath = `${manifestPath}.${process.pid}.tmp`;\n assertNoSymlinkCachePath(tempPath, cacheDir);\n let fd: number | null = null;\n try {\n fd = fs.openSync(tempPath, \"wx\");\n fs.writeFileSync(fd, `${JSON.stringify(manifest, null, 2)}\\n`, \"utf8\");\n fs.closeSync(fd);\n fd = null;\n fs.renameSync(tempPath, manifestPath);\n } catch (error) {\n if (fd !== null) {\n fs.closeSync(fd);\n }\n fs.rmSync(tempPath, { force: true });\n throw error;\n }\n}\n\nfunction withCacheMutationLock<T>(cacheDir: string, action: () => T): T {\n const lockPath = path.join(cacheDir, CACHE_UPDATE_LOCK);\n assertNoSymlinkCachePath(lockPath, cacheDir);\n let lock: HeldCacheMutationLock | null = null;\n try {\n lock = openCacheMutationLock(lockPath);\n return action();\n } catch (error) {\n if (isExistingPathError(error)) {\n throw new Error(\"another update is already running for this OpenCode cache\");\n }\n throw error;\n } finally {\n if (lock !== null) {\n fs.closeSync(lock.fd);\n removeOwnedCacheMutationLock(lockPath, lock.token);\n }\n }\n}\n\nfunction openCacheMutationLock(lockPath: string): HeldCacheMutationLock {\n try {\n return writeCacheMutationLock(lockPath);\n } catch (error) {\n if (!isExistingPathError(error) || !isStaleCacheMutationLock(lockPath)) {\n throw error;\n }\n removeStaleCacheMutationLock(lockPath);\n return writeCacheMutationLock(lockPath);\n }\n}\n\nfunction writeCacheMutationLock(lockPath: string): HeldCacheMutationLock {\n const fd = fs.openSync(lockPath, \"wx\");\n const token = randomUUID();\n try {\n const lock: CacheMutationLock = { pid: process.pid, createdAt: Date.now(), token };\n fs.writeFileSync(fd, `${JSON.stringify(lock)}\\n`, \"utf8\");\n return { fd, token };\n } catch (error) {\n fs.closeSync(fd);\n fs.rmSync(lockPath, { force: true });\n throw error;\n }\n}\n\nfunction isStaleCacheMutationLock(lockPath: string): boolean {\n const lock = readCacheMutationLock(lockPath);\n if (!lock) {\n return isLegacyCacheMutationLockStale(lockPath);\n }\n if (Date.now() - lock.createdAt < CACHE_LOCK_STALE_MS) {\n return false;\n }\n return !isProcessRunning(lock.pid);\n}\n\nfunction isLegacyCacheMutationLockStale(lockPath: string): boolean {\n try {\n const pid = readLegacyCacheMutationLockPid(lockPath);\n if (pid !== null && isProcessRunning(pid)) {\n return false;\n }\n return Date.now() - fs.statSync(lockPath).mtimeMs >= CACHE_LOCK_STALE_MS;\n } catch {\n return false;\n }\n}\n\nfunction readLegacyCacheMutationLockPid(lockPath: string): number | null {\n const raw = fs.readFileSync(lockPath, \"utf8\").trim();\n if (!/^\\d+$/.test(raw)) {\n return null;\n }\n const pid = Number(raw);\n return Number.isSafeInteger(pid) && pid > 0 ? pid : null;\n}\n\nfunction readCacheMutationLock(lockPath: string): CacheMutationLock | null {\n try {\n const parsed = JSON.parse(fs.readFileSync(lockPath, \"utf8\")) as Partial<CacheMutationLock>;\n const { pid, createdAt, token } = parsed;\n const hasToken = token === undefined || (typeof token === \"string\" && token.length > 0);\n if (typeof pid === \"number\" && typeof createdAt === \"number\" && hasToken\n && Number.isInteger(pid) && Number.isFinite(createdAt)) {\n return token === undefined ? { pid, createdAt } : { pid, createdAt, token };\n }\n } catch {\n return null;\n }\n return null;\n}\n\nfunction isProcessRunning(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n return error instanceof Error && \"code\" in error && error.code === \"EPERM\";\n }\n}\n\nfunction createExistingLockError(): NodeJS.ErrnoException {\n const error = new Error(\"cache update lock changed before stale cleanup\") as NodeJS.ErrnoException;\n error.code = \"EEXIST\";\n return error;\n}\n\nfunction removeStaleCacheMutationLock(lockPath: string): void {\n const content = fs.readFileSync(lockPath, \"utf8\");\n if (!isStaleCacheMutationLock(lockPath) || fs.readFileSync(lockPath, \"utf8\") !== content) {\n throw createExistingLockError();\n }\n fs.rmSync(lockPath, { force: true });\n}\n\nfunction removeOwnedCacheMutationLock(lockPath: string, token: string): void {\n const lock = readCacheMutationLock(lockPath);\n if (lock?.token === token) {\n fs.rmSync(lockPath, { force: true });\n }\n}\n\nfunction preflightCacheMutationPaths(cacheDir: string, paths: readonly string[]): void {\n for (const targetPath of paths) {\n assertNoSymlinkCachePath(targetPath, cacheDir);\n }\n}\n\nfunction isJsonObject(value: JsonValue | undefined): value is JsonObject {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction removeDependencyPin(manifest: JsonObject, section: DependencySection): boolean {\n const dependencies = manifest[section];\n if (!isJsonObject(dependencies) || !(PLUGIN_NAME in dependencies)) {\n return false;\n }\n\n delete dependencies[PLUGIN_NAME];\n if (Object.keys(dependencies).length === 0) {\n delete manifest[section];\n }\n return true;\n}\n\nfunction removeManifestPin(cacheDir: string): boolean {\n const manifestPath = path.join(cacheDir, CACHE_MANIFEST);\n if (!cacheFileExists(manifestPath, cacheDir)) {\n return false;\n }\n\n const manifest = JSON.parse(fs.readFileSync(manifestPath, \"utf8\")) as JsonValue;\n if (!isJsonObject(manifest)) {\n throw new Error(`${CACHE_MANIFEST} must contain a JSON object`);\n }\n\n const removed = DEPENDENCY_SECTIONS\n .map((section) => removeDependencyPin(manifest, section))\n .some(Boolean);\n if (removed) {\n writeManifestAtomic(manifestPath, cacheDir, manifest);\n }\n return removed;\n}\n\nexport function runUpdate(): UpdateResult {\n const cacheDir = getCacheDir();\n const nodeModulesDir = path.join(cacheDir, \"node_modules\");\n const pluginCacheDir = path.join(nodeModulesDir, PLUGIN_NAME);\n const pluginPackageCacheDir = path.join(cacheDir, \"packages\", OPENCODE_PACKAGE_ALIAS);\n const lockfilePath = path.join(cacheDir, CACHE_LOCKFILE);\n\n try {\n if (!cacheDirectoryExists(cacheDir)) {\n return {\n success: true,\n message: \"No cached plugin found. OpenCode will install the latest version on next run.\",\n cleared: false\n };\n }\n\n preflightCacheMutationPaths(cacheDir, [\n path.join(cacheDir, CACHE_MANIFEST),\n pluginCacheDir,\n pluginPackageCacheDir,\n lockfilePath,\n path.join(cacheDir, CACHE_UPDATE_LOCK)\n ]);\n const cleared = withCacheMutationLock(cacheDir, () => {\n const manifestPinRemoved = removeManifestPin(cacheDir);\n const packageRemoved = removePathIfExists(pluginCacheDir, cacheDir);\n const aliasedPackageRemoved = removePathIfExists(pluginPackageCacheDir, cacheDir);\n const lockfileRemoved = removePathIfExists(lockfilePath, cacheDir);\n return packageRemoved || aliasedPackageRemoved || manifestPinRemoved || lockfileRemoved;\n });\n\n if (!cleared) {\n return {\n success: true,\n message: \"No cached plugin found. OpenCode will install the latest version on next run.\",\n cleared: false\n };\n }\n\n return {\n success: true,\n message: \"Cache repaired. OpenCode will install the latest version on next run.\",\n cleared: true\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Failed to clear cache: ${message}`,\n cleared: false\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  hasBundledSkillArtifacts,
3
3
  hasManagedBundledSkillInstall
4
- } from "./chunk-KDSNXS6N.js";
4
+ } from "./chunk-ZMNEWS7A.js";
5
5
  import "./chunk-7THCPS52.js";
6
- import "./chunk-3ILXPKSJ.js";
6
+ import "./chunk-BUVYTJZR.js";
7
7
  import "./chunk-TBUCZX4A.js";
8
8
 
9
9
  // src/cli/update-skill-modes.ts
@@ -35,4 +35,4 @@ function resolveUpdateSkillModes(args) {
35
35
  export {
36
36
  resolveUpdateSkillModes
37
37
  };
38
- //# sourceMappingURL=update-skill-modes-BVX7IVMW.js.map
38
+ //# sourceMappingURL=update-skill-modes-3ULKJK3Y.js.map
@@ -2,25 +2,25 @@ import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseOptionalStringFlag,
4
4
  parseStringArrayFlag
5
- } from "./chunk-RPXWUCQQ.js";
5
+ } from "./chunk-SKFB5ICF.js";
6
6
  import {
7
7
  callDaemon
8
- } from "./chunk-MD655IPO.js";
9
- import "./chunk-COAOWH3G.js";
10
- import "./chunk-QOMWCRE3.js";
8
+ } from "./chunk-XDLJE3RJ.js";
9
+ import "./chunk-ZOVMMQO6.js";
10
+ import "./chunk-HBK56JST.js";
11
11
  import "./chunk-MX3NFLCE.js";
12
12
  import "./chunk-ASMHEEKY.js";
13
13
  import {
14
14
  createUsageError
15
- } from "./chunk-IPE7TF2P.js";
16
- import "./chunk-STGGGVYT.js";
17
- import "./chunk-3ILXPKSJ.js";
15
+ } from "./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
 
@@ -53,4 +53,4 @@ export {
53
53
  __test__,
54
54
  runUpload
55
55
  };
56
- //# sourceMappingURL=upload-KH6ZABJA.js.map
56
+ //# sourceMappingURL=upload-GGZC5UQP.js.map
@@ -1,22 +1,22 @@
1
1
  import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  callDaemon
4
- } from "./chunk-MD655IPO.js";
5
- import "./chunk-COAOWH3G.js";
6
- import "./chunk-QOMWCRE3.js";
4
+ } from "./chunk-XDLJE3RJ.js";
5
+ import "./chunk-ZOVMMQO6.js";
6
+ import "./chunk-HBK56JST.js";
7
7
  import "./chunk-MX3NFLCE.js";
8
8
  import "./chunk-ASMHEEKY.js";
9
9
  import {
10
10
  createUsageError
11
- } from "./chunk-IPE7TF2P.js";
12
- import "./chunk-STGGGVYT.js";
13
- import "./chunk-3ILXPKSJ.js";
11
+ } from "./chunk-7BNU6DFI.js";
12
+ import "./chunk-QMHKAFYX.js";
13
+ import "./chunk-BUVYTJZR.js";
14
14
  import "./chunk-TBUCZX4A.js";
15
15
  import "./chunk-Y2KL55OG.js";
16
16
  import "./chunk-5SWZDVOW.js";
17
- import "./chunk-4BEJVZRK.js";
17
+ import "./chunk-RO3SMXF3.js";
18
18
  import "./chunk-S5KZQJJI.js";
19
- import "./chunk-KZ2IXVQT.js";
19
+ import "./chunk-2X4JFMKJ.js";
20
20
  import "./chunk-WHQZBUNY.js";
21
21
  import "./chunk-FUSXMW3G.js";
22
22
 
@@ -60,4 +60,4 @@ async function runTargetUse(args) {
60
60
  export {
61
61
  runTargetUse
62
62
  };
63
- //# sourceMappingURL=use-7YDKO3U4.js.map
63
+ //# sourceMappingURL=use-B4Q7CFG2.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 runDomValue(args) {
68
68
  export {
69
69
  runDomValue
70
70
  };
71
- //# sourceMappingURL=value-RZBWSKKM.js.map
71
+ //# sourceMappingURL=value-DHOHO55D.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 runDomVisible(args) {
68
68
  export {
69
69
  runDomVisible
70
70
  };
71
- //# sourceMappingURL=visible-BSFTAKXR.js.map
71
+ //# sourceMappingURL=visible-S5BTWYNH.js.map
@@ -2,25 +2,25 @@ import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseNumberFlag,
4
4
  parseOptionalStringFlag
5
- } from "./chunk-RPXWUCQQ.js";
5
+ } from "./chunk-SKFB5ICF.js";
6
6
  import {
7
7
  callDaemon
8
- } from "./chunk-MD655IPO.js";
9
- import "./chunk-COAOWH3G.js";
10
- import "./chunk-QOMWCRE3.js";
8
+ } from "./chunk-XDLJE3RJ.js";
9
+ import "./chunk-ZOVMMQO6.js";
10
+ import "./chunk-HBK56JST.js";
11
11
  import "./chunk-MX3NFLCE.js";
12
12
  import "./chunk-ASMHEEKY.js";
13
13
  import {
14
14
  createUsageError
15
- } from "./chunk-IPE7TF2P.js";
16
- import "./chunk-STGGGVYT.js";
17
- import "./chunk-3ILXPKSJ.js";
15
+ } from "./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
 
@@ -106,4 +106,4 @@ async function runWait(args) {
106
106
  export {
107
107
  runWait
108
108
  };
109
- //# sourceMappingURL=wait-TMTEAYOP.js.map
109
+ //# sourceMappingURL=wait-WV6NZUKL.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 runDesktopWindows(args) {
34
34
  export {
35
35
  runDesktopWindows
36
36
  };
37
- //# sourceMappingURL=windows-HIZ23OHS.js.map
37
+ //# sourceMappingURL=windows-GKE36DJQ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "OpenDevBrowser Relay",
4
- "version": "0.0.30",
4
+ "version": "0.0.32",
5
5
  "description": "Optional bridge to reuse existing Chrome tabs with OpenDevBrowser.",
6
6
  "permissions": [
7
7
  "debugger",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opendevbrowser",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "description": "Browser automation runtime with snapshot-refs-actions, browser replay screencasts, public read-only desktop observation, and browser-scoped computer-use orchestration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/skills/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # skills/ — Agent Guidelines
2
2
 
3
- Bundled OpenDevBrowser skill directories (9 canonical packs). Extends root `AGENTS.md`.
3
+ Bundled OpenDevBrowser skill directories (10 canonical packs). Extends root `AGENTS.md`.
4
4
 
5
5
  ## Structure
6
6
 
@@ -8,6 +8,7 @@ Bundled OpenDevBrowser skill directories (9 canonical packs). Extends root `AGEN
8
8
  skills/
9
9
  ├── opendevbrowser-best-practices/SKILL.md
10
10
  ├── opendevbrowser-design-agent/SKILL.md
11
+ ├── opendevbrowser-motion-design/SKILL.md
11
12
  ├── opendevbrowser-continuity-ledger/SKILL.md
12
13
  ├── opendevbrowser-login-automation/SKILL.md
13
14
  ├── opendevbrowser-form-testing/SKILL.md
@@ -145,12 +145,16 @@ Rules:
145
145
 
146
146
  ```bash
147
147
  npx opendevbrowser inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --browser-mode managed --use-cookies --challenge-automation-mode browser_with_helper --include-prototype-guidance --mode json --output-format json
148
+ npx opendevbrowser inspiredesign harvest --brief "Design a premium docs workspace" --query "best docs product landing pages" --provider web/default --max-references 5 --visual-evidence required --browser-mode managed --mode path --output-format json
148
149
  ```
149
150
 
150
151
  Rules:
151
152
  - keep inspiredesign references public-first; any supplied `--url` now forces deep capture so the workflow can collect DOM/layout evidence
152
153
  - use repeated `--url` flags instead of packed URL strings
153
- - after a successful run, read `advanced-brief.md` first, load `opendevbrowser_skill_load opendevbrowser-best-practices "quick start"` plus `opendevbrowser_skill_load opendevbrowser-design-agent "canvas-contract"`, fill the ids in `canvas-plan.request.json`, run `opendevbrowser canvas --command canvas.plan.set --params-file ./canvas-plan.request.json`, confirm `planStatus=accepted`, then patch only the governance blocks listed in `design-agent-handoff.json`
154
+ - provide `--query` or at least one `--url` for `inspiredesign harvest`; use `--query` when provider discovery is part of the task
155
+ - use `inspiredesign harvest` when visual reference discovery, screenshot PNG artifacts, ranked references, metadata-only visual JSON, `meta-prompt.md`, or motion-design follow-through is required
156
+ - visual harvest must not bypass `policy_blocked`, unresolved `auth_required`, `challenge_detected`, or `rate_limited`; inspect diagnostics instead of forcing screenshots through blocked references
157
+ - after a successful run or harvest, read `advanced-brief.md` first, inspect `ranked-references.json`, `visual-evidence.json`, `screenshot-index.json`, and `meta-prompt.md` when present, load `opendevbrowser_skill_load opendevbrowser-best-practices "quick start"`, `opendevbrowser_skill_load opendevbrowser-design-agent "canvas-contract"`, and `opendevbrowser_skill_load opendevbrowser-motion-design "quick start"`, fill the ids in `canvas-plan.request.json`, run `opendevbrowser canvas --command canvas.plan.set --params-file ./canvas-plan.request.json`, confirm `planStatus=accepted`, then patch only the governance blocks listed in `design-agent-handoff.json`
154
158
  - pair this lane with `opendevbrowser-design-agent` when the brief moves from contract synthesis into implementation or `/canvas`
155
159
 
156
160
  ## Agent Sync Targets
@@ -168,6 +172,9 @@ Install and update refresh managed copies of these canonical packs; uninstall re
168
172
  - Prefer refs from `opendevbrowser_snapshot` over raw selectors.
169
173
  - Use one action per decision loop: snapshot -> action -> snapshot.
170
174
  - Keep a single correlation context (`requestId`, `sessionId`) across a run.
175
+ - Before daemon-backed workflows, run `opendevbrowser status --daemon --output-format json` and require `data.fingerprintCurrent === true`.
176
+ - Treat missing or false `data.fingerprintCurrent` as not current; use the matching binary, restart from the current install, or isolate shared runs with `OPENCODE_CONFIG_DIR`, `OPENCODE_CACHE_DIR`, and unique daemon or relay ports.
177
+ - Do not conflate `daemon_fingerprint_mismatch` with native messaging host drift.
171
178
  - Run the same workflow shape across all three modes before claiming parity.
172
179
  - Default to read/research workflows. Social posting probes remain disabled unless explicitly requested via direct-run opt-in (`--include-social-posts`).
173
180
  - Apply rate-limit/backoff discipline (`Retry-After` aware) whenever 429 pressure appears.
@@ -181,7 +188,7 @@ Install and update refresh managed copies of these canonical packs; uninstall re
181
188
  - Use default extension `/ops` for relay-backed concurrency; use `/cdp` only for legacy compatibility paths.
182
189
  - For managed parallel runs with persisted profiles, use unique profile paths per session (or disable persistence) to avoid profile lock collisions.
183
190
  - Treat extension headless attempts (`--extension-only --headless`) as expected `unsupported_mode`; route headless workloads through managed/cdpConnect instead.
184
- - Before extension-mode runs, preflight `npx opendevbrowser status --daemon` and require `extensionConnected=true` plus `extensionHandshakeComplete=true`.
191
+ - Before extension-mode runs, preflight `npx opendevbrowser status --daemon --output-format json` and require `data.fingerprintCurrent === true`, `data.relay.extensionConnected === true`, and `data.relay.extensionHandshakeComplete === true`.
185
192
 
186
193
  Operational references:
187
194
  - `artifacts/provider-workflows.md` (see Workflow E)
@@ -10,6 +10,7 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the audit evide
10
10
  | `opendevbrowser-continuity-ledger` | `doc_only` | `./skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh` | continuity ownership, ledger template, reply protocol | validator output plus `skill-discovery` and `docs-drift`; no live browser probe | not applicable |
11
11
  | `opendevbrowser-data-extraction` | `workflow` | `./skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh` | snapshot, DOM text/html extraction, pagination, quality gates, structured extraction | `node scripts/cli-smoke-test.mjs` plus `node scripts/product-video-fixture-live-probe.mjs` for structured extraction on a repo-local product page | extension unavailable at start if extension mode is audited separately |
12
12
  | `opendevbrowser-design-agent` | `browser_surface` | `./skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh` | `/canvas`, annotate send/stored semantics, design contract workflow, real-surface validation | `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs` | extension unavailable at start, optional Figma live smoke |
13
+ | `opendevbrowser-motion-design` | `browser_surface` | `./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh` | screenshot, debug-trace-snapshot, screencast-start, screencast-stop, `/canvas`, reduced-motion checks, viewport motion matrix | `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs`, `skill-discovery` | extension unavailable at start, reduced-motion emulation unavailable |
13
14
  | `opendevbrowser-form-testing` | `workflow` | `./skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh` | snapshot -> type/click -> validation loop, multi-step forms, challenge checkpoints, network correlation | `node scripts/cli-smoke-test.mjs` plus `node scripts/login-fixture-live-probe.mjs` for invalid-submit, MFA, and persistence branches | extension unavailable at start if extension mode is audited separately |
14
15
  | `opendevbrowser-login-automation` | `workflow` | `./skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh` | login branching, invalid credential handling, MFA step-up, session validation | `node scripts/login-fixture-live-probe.mjs` | none; proof lane is repo-local |
15
16
  | `opendevbrowser-product-presentation-asset` | `workflow` | `./skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh` | `product-video run`, asset-pack assembly, screenshots, evidence mapping | `node scripts/product-video-fixture-live-probe.mjs` | none; proof lane is repo-local |
@@ -36,12 +37,12 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the audit evide
36
37
 
37
38
  | Audit domain | Covers | Proof lanes | Contract tests | Targeted reruns |
38
39
  |---|---|---|---|---|
39
- | `skills-assets-discovery` | bundled skills, validator assets, loader discovery, install targets | `skill-discovery`, `docs-drift` | `tests/skill-loader.test.ts`, `tests/skill-workflow-packs.test.ts`, `tests/cli-skills-installer.test.ts` | `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`, `node scripts/skill-runtime-audit.mjs --smoke --out artifacts/skill-runtime-audit/smoke.json` |
40
+ | `skills-assets-discovery` | bundled skills including `opendevbrowser-motion-design`, validator assets, loader discovery, install targets | `skill-discovery`, `docs-drift` | `tests/skill-loader.test.ts`, `tests/skill-workflow-packs.test.ts`, `tests/cli-skills-installer.test.ts` | `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`, `./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh`, `node scripts/skill-runtime-audit.mjs --smoke --out artifacts/skill-runtime-audit/smoke.json` |
40
41
  | `cli-tools-surface` | CLI args/help, tool registry, surface inventory docs, generated help, onboarding metadata, and first-contact owners | `docs-drift`, `cli-smoke` | `tests/cli-help.test.ts`, `tests/cli-help-parity.test.ts`, `tests/daemon-commands.integration.test.ts` | `node scripts/docs-drift-check.mjs`, `node scripts/cli-smoke-test.mjs` |
41
42
  | `scripts-and-governance` | audit scripts, workflow router, drift and robustness policy, machine matrix, prose mirror, and surface-audit checklist | `docs-drift`, `best-practices-robustness`, `skill-discovery` | `tests/docs-drift-check.test.ts`, `tests/skill-runtime-audit.test.ts`, `tests/audit-zombie-files.test.ts` | `./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh`, `node scripts/docs-drift-check.mjs` |
42
43
  | `browser-snapshot-interaction` | browser lifecycle, snapshot refs, DOM reads, click/type flows | `cli-smoke`, `login-fixture`, `product-video-fixture` | `tests/tools-workflows.test.ts`, `tests/tools-workflows-branches.test.ts`, `tests/browser-manager.test.ts` | `node scripts/cli-smoke-test.mjs`, `node scripts/login-fixture-live-probe.mjs --out artifacts/skill-runtime-audit/lanes/login-fixture.json` |
43
- | `canvas-annotate-design` | `/canvas`, annotate delivery, design-agent workflow, extension canvas runtime | `live-regression`, `canvas-competitive` | `tests/canvas-command-inventory.test.ts`, `tests/canvas-live-workflow-script.test.ts`, `tests/annotate-live-probe-script.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `node scripts/canvas-competitive-validation.mjs --out artifacts/skill-runtime-audit/lanes/canvas-competitive.json` |
44
- | `extension-relay-cdp` | extension `/ops`, relay contracts, legacy CDP, target-session routing | `live-regression`, `docs-drift` | `tests/parity-matrix.test.ts`, `tests/relay-server.test.ts`, `tests/ops-browser-manager.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh cdp-channel-check` |
44
+ | `canvas-annotate-design` | `/canvas`, annotate delivery, design-agent workflow, motion-design temporal evidence workflow, extension canvas runtime | `live-regression`, `canvas-competitive` | `tests/canvas-command-inventory.test.ts`, `tests/canvas-live-workflow-script.test.ts`, `tests/annotate-live-probe-script.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `node scripts/canvas-competitive-validation.mjs --out artifacts/skill-runtime-audit/lanes/canvas-competitive.json`, `./skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh` |
45
+ | `extension-relay-cdp` | extension `/ops`, relay contracts, legacy CDP, target-session routing, motion-design replay parity | `live-regression`, `docs-drift` | `tests/parity-matrix.test.ts`, `tests/relay-server.test.ts`, `tests/ops-browser-manager.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh cdp-channel-check` |
45
46
  | `providers-macros-workflows` | providers, workflow wrappers, inspiredesign contract synthesis, macro resolve or execute, product-video | `provider-direct`, `research-live`, `product-video-fixture` | `tests/provider-direct-runs.test.ts`, `tests/macro-resolve.test.ts`, `tests/cli-macro-resolve.test.ts`, `tests/providers-inspiredesign-workflow.test.ts` | `node scripts/provider-direct-runs.mjs --smoke --out artifacts/skill-runtime-audit/lanes/provider-direct.json`, `npm run test -- tests/macro-resolve.test.ts tests/cli-macro-resolve.test.ts tests/providers-inspiredesign-workflow.test.ts` |
46
47
  | `challenges-and-guardrails` | challenge coordinator, browser-scoped `challengeAutomationMode` computer-use boundary, login/form challenge branches, blocker envelopes | `login-fixture`, `provider-direct`, `research-live`, `live-regression` | `tests/challenges-capability-matrix.test.ts`, `tests/browser-manager-challenge-runtime-handle.test.ts`, `tests/ops-browser-manager-challenge-runtime-handle.test.ts` | `node scripts/login-fixture-live-probe.mjs --out artifacts/skill-runtime-audit/lanes/login-fixture.json`, `node scripts/provider-direct-runs.mjs --smoke --out artifacts/skill-runtime-audit/lanes/provider-direct.json` |
47
48
  | `runtime-infrastructure` | bootstrap, runtime factory, daemon client, shared hub utilities | `cli-smoke`, `live-regression` | `tests/core-bootstrap.test.ts`, `tests/providers-runtime-factory.test.ts`, `tests/daemon-client.test.ts` | `npm run test -- tests/core-bootstrap.test.ts tests/providers-runtime-factory.test.ts tests/daemon-client.test.ts`, `node scripts/cli-smoke-test.mjs` |
@@ -1,5 +1,12 @@
1
1
  {
2
2
  "schemaVersion": "1.0",
3
+ "daemonPreflight": {
4
+ "command": "npx opendevbrowser status --daemon --output-format json",
5
+ "required": true,
6
+ "statusExpectations": {
7
+ "fingerprintCurrent": true
8
+ }
9
+ },
3
10
  "modes": [
4
11
  {
5
12
  "name": "managed",