opendevbrowser 0.0.33 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +1 -1
  2. package/dist/{accessibility-snapshot-JSPFVWZ6.js → accessibility-snapshot-TAFPVLZN.js} +9 -9
  3. package/dist/{active-window-2OB2MSCR.js → active-window-MHFMC6NQ.js} +9 -9
  4. package/dist/{annotate-VDZBZBKZ.js → annotate-5ZFRFQ4B.js} +8 -8
  5. package/dist/{attr-7XIO4MCH.js → attr-MBF2UCRF.js} +8 -8
  6. package/dist/browser/browser-manager.d.ts +6 -1
  7. package/dist/browser/browser-manager.d.ts.map +1 -1
  8. package/dist/browser/manager-types.d.ts +51 -0
  9. package/dist/browser/manager-types.d.ts.map +1 -1
  10. package/dist/browser/ops-browser-manager.d.ts +2 -1
  11. package/dist/browser/ops-browser-manager.d.ts.map +1 -1
  12. package/dist/browser/screencast-recorder.d.ts +1 -0
  13. package/dist/browser/screencast-recorder.d.ts.map +1 -1
  14. package/dist/{canvas-N4PAA274.js → canvas-CAMD22YU.js} +8 -8
  15. package/dist/{capture-desktop-T5YO3EBI.js → capture-desktop-TMZSFA5R.js} +9 -9
  16. package/dist/{capture-window-UKEUBWKH.js → capture-window-NZDKD2AE.js} +9 -9
  17. package/dist/{check-PQB6KKMN.js → check-MO33GTQ4.js} +8 -8
  18. package/dist/{checked-RNZIMCU6.js → checked-3HDF5X2M.js} +8 -8
  19. package/dist/{chunk-YRRRUGSQ.js → chunk-32ZSOZND.js} +2 -2
  20. package/dist/{chunk-EOX6U6Q4.js → chunk-AHQC4A6P.js} +896 -118
  21. package/dist/chunk-AHQC4A6P.js.map +1 -0
  22. package/dist/{chunk-IBIHDGTZ.js → chunk-B5XIJQXO.js} +32 -4
  23. package/dist/chunk-B5XIJQXO.js.map +1 -0
  24. package/dist/{chunk-FDBUB7BM.js → chunk-BHZLEFXW.js} +2 -2
  25. package/dist/{chunk-JROW6ZNN.js → chunk-FJZY3Z3X.js} +3 -3
  26. package/dist/{chunk-J3KYGJRQ.js → chunk-G6NQ7WYD.js} +2 -2
  27. package/dist/{chunk-27W46IKI.js → chunk-HM4CO3EW.js} +38 -23
  28. package/dist/chunk-HM4CO3EW.js.map +1 -0
  29. package/dist/{chunk-SKFB5ICF.js → chunk-TI5I6UWY.js} +8 -3
  30. package/dist/chunk-TI5I6UWY.js.map +1 -0
  31. package/dist/{chunk-52ZIOWVU.js → chunk-UEAXTWGT.js} +3 -3
  32. package/dist/{chunk-ZGCTC5YM.js → chunk-UVD34RA2.js} +33 -1
  33. package/dist/chunk-UVD34RA2.js.map +1 -0
  34. package/dist/{chunk-W6YPVNDX.js → chunk-VTGG5ZU2.js} +2 -2
  35. package/dist/{chunk-FBKPDILE.js → chunk-WTWSBEBW.js} +5954 -436
  36. package/dist/chunk-WTWSBEBW.js.map +1 -0
  37. package/dist/{chunk-NURQB55J.js → chunk-WY72GYAH.js} +2 -2
  38. package/dist/{chunk-MJF67OTH.js → chunk-XSSPNVMS.js} +3 -3
  39. package/dist/{chunk-MJF67OTH.js.map → chunk-XSSPNVMS.js.map} +1 -1
  40. package/dist/{chunk-HMRANSDX.js → chunk-Z3ADLR7I.js} +698 -18
  41. package/dist/chunk-Z3ADLR7I.js.map +1 -0
  42. package/dist/cli/commands/inspiredesign.d.ts +12 -1
  43. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  44. package/dist/cli/daemon-commands.d.ts.map +1 -1
  45. package/dist/cli/help.d.ts.map +1 -1
  46. package/dist/cli/index.js +76 -76
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/utils/parse.d.ts +1 -0
  49. package/dist/cli/utils/parse.d.ts.map +1 -1
  50. package/dist/cli/utils/workflow-message.d.ts.map +1 -1
  51. package/dist/{click-U7ZFKSB4.js → click-SWZPJO2U.js} +8 -8
  52. package/dist/{clone-component-SWYAORTU.js → clone-component-YTB46YU4.js} +7 -7
  53. package/dist/{clone-page-WJ6UJOJG.js → clone-page-5FMPHQ3A.js} +7 -7
  54. package/dist/{close-NAVIHZ2T.js → close-22SNMDX3.js} +7 -7
  55. package/dist/{close-VKIGIKVT.js → close-ORQZCZ2E.js} +7 -7
  56. package/dist/{connect-XVG2MOZL.js → connect-EWYITNQU.js} +8 -8
  57. package/dist/{console-poll-XI5BZPL7.js → console-poll-LJR6ZTDK.js} +8 -8
  58. package/dist/{cookie-import-QELKE7TK.js → cookie-import-PTAIWPEC.js} +7 -7
  59. package/dist/{cookie-list-QDA6KWIY.js → cookie-list-76C35B5B.js} +7 -7
  60. package/dist/{daemon-CA4UIIZQ.js → daemon-UKJMDLCB.js} +6 -6
  61. package/dist/daemon-fingerprint.json +1 -1
  62. package/dist/{debug-trace-snapshot-AT4GAO57.js → debug-trace-snapshot-PQ5FJART.js} +8 -8
  63. package/dist/{dialog-O3V2IBFH.js → dialog-WLJDWJV4.js} +8 -8
  64. package/dist/{disconnect-NAX5TPTG.js → disconnect-FNB4JC2U.js} +7 -7
  65. package/dist/{enabled-VT4FJXDX.js → enabled-PYMCOQPC.js} +8 -8
  66. package/dist/{goto-GBJG5NC4.js → goto-UNTEW4VI.js} +8 -8
  67. package/dist/guidance/context.d.ts +10 -0
  68. package/dist/guidance/context.d.ts.map +1 -1
  69. package/dist/guidance/readiness.d.ts.map +1 -1
  70. package/dist/guidance/recipes/generic.d.ts.map +1 -1
  71. package/dist/guidance/recipes/pinterest.d.ts.map +1 -1
  72. package/dist/guidance/recipes/site-recipe-validation.d.ts +27 -0
  73. package/dist/guidance/recipes/site-recipe-validation.d.ts.map +1 -0
  74. package/dist/guidance/types.d.ts +5 -0
  75. package/dist/guidance/types.d.ts.map +1 -1
  76. package/dist/{help-SUI4H77K.js → help-QOLCIB3P.js} +8 -7
  77. package/dist/{help-SUI4H77K.js.map → help-QOLCIB3P.js.map} +1 -1
  78. package/dist/{hover-476ZNQZE.js → hover-ZWY4YOM4.js} +8 -8
  79. package/dist/{html-5C4TXOV3.js → html-M46YBFT3.js} +8 -8
  80. package/dist/index.js +83 -23
  81. package/dist/index.js.map +1 -1
  82. package/dist/{inspector-73ARPCIV.js → inspector-6YAOI74U.js} +10 -10
  83. package/dist/{inspector-audit-QT6QY7KS.js → inspector-audit-PF64X6SJ.js} +12 -12
  84. package/dist/{inspector-plan-JRNSGN2Z.js → inspector-plan-IUGTQV3Q.js} +10 -10
  85. package/dist/inspiredesign/capture-mode.d.ts +8 -0
  86. package/dist/inspiredesign/capture-mode.d.ts.map +1 -1
  87. package/dist/inspiredesign/capture.d.ts +36 -1
  88. package/dist/inspiredesign/capture.d.ts.map +1 -1
  89. package/dist/inspiredesign/contract.d.ts +25 -0
  90. package/dist/inspiredesign/contract.d.ts.map +1 -1
  91. package/dist/inspiredesign/handoff.d.ts +6 -2
  92. package/dist/inspiredesign/handoff.d.ts.map +1 -1
  93. package/dist/inspiredesign/media-analysis/analyzer.d.ts +13 -0
  94. package/dist/inspiredesign/media-analysis/analyzer.d.ts.map +1 -0
  95. package/dist/inspiredesign/media-analysis/design-guidance.d.ts +11 -0
  96. package/dist/inspiredesign/media-analysis/design-guidance.d.ts.map +1 -0
  97. package/dist/inspiredesign/media-analysis/ffmpeg.d.ts +21 -0
  98. package/dist/inspiredesign/media-analysis/ffmpeg.d.ts.map +1 -0
  99. package/dist/inspiredesign/media-analysis/ffprobe.d.ts +8 -0
  100. package/dist/inspiredesign/media-analysis/ffprobe.d.ts.map +1 -0
  101. package/dist/inspiredesign/media-analysis/index.d.ts +10 -0
  102. package/dist/inspiredesign/media-analysis/index.d.ts.map +1 -0
  103. package/dist/inspiredesign/media-analysis/persist.d.ts +6 -0
  104. package/dist/inspiredesign/media-analysis/persist.d.ts.map +1 -0
  105. package/dist/inspiredesign/media-analysis/pixel.d.ts +9 -0
  106. package/dist/inspiredesign/media-analysis/pixel.d.ts.map +1 -0
  107. package/dist/inspiredesign/media-analysis/types.d.ts +163 -0
  108. package/dist/inspiredesign/media-analysis/types.d.ts.map +1 -0
  109. package/dist/inspiredesign/media-analysis/typography-structure.d.ts +3 -0
  110. package/dist/inspiredesign/media-analysis/typography-structure.d.ts.map +1 -0
  111. package/dist/inspiredesign/meta-prompt.d.ts.map +1 -1
  112. package/dist/inspiredesign/motion-evidence.d.ts +73 -0
  113. package/dist/inspiredesign/motion-evidence.d.ts.map +1 -0
  114. package/dist/inspiredesign/pinterest-media-classification.d.ts +27 -0
  115. package/dist/inspiredesign/pinterest-media-classification.d.ts.map +1 -0
  116. package/dist/inspiredesign/pinterest-pin-media-evidence.d.ts +151 -0
  117. package/dist/inspiredesign/pinterest-pin-media-evidence.d.ts.map +1 -0
  118. package/dist/inspiredesign/product-readiness.d.ts +97 -0
  119. package/dist/inspiredesign/product-readiness.d.ts.map +1 -0
  120. package/dist/inspiredesign/reference-pattern-board.d.ts +32 -2
  121. package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
  122. package/dist/inspiredesign/visual-evidence.d.ts +5 -0
  123. package/dist/inspiredesign/visual-evidence.d.ts.map +1 -1
  124. package/dist/{inspiredesign-IPVZDLSQ.js → inspiredesign-GZIEXETS.js} +101 -31
  125. package/dist/inspiredesign-GZIEXETS.js.map +1 -0
  126. package/dist/{launch-B35YDRQC.js → launch-I7WNLWLY.js} +8 -8
  127. package/dist/{list-YETWKTKY.js → list-BAECFJI7.js} +7 -7
  128. package/dist/{list-JV55JVGB.js → list-BCF4HZ2K.js} +7 -7
  129. package/dist/{macro-resolve-DQK4B3W3.js → macro-resolve-4GNZYHHW.js} +9 -9
  130. package/dist/{network-poll-4GWHCJXI.js → network-poll-DCZ5ZNLP.js} +8 -8
  131. package/dist/{new-XDCQPIEG.js → new-6KZYJTJG.js} +7 -7
  132. package/dist/{open-GIM3ZCSV.js → open-JPGEAJHJ.js} +7 -7
  133. package/dist/opendevbrowser.js +83 -23
  134. package/dist/opendevbrowser.js.map +1 -1
  135. package/dist/{perf-26VBXDPI.js → perf-5X367PRP.js} +8 -8
  136. package/dist/{pointer-down-O3VSNAXW.js → pointer-down-5OAUDDNR.js} +9 -9
  137. package/dist/{pointer-drag-WQ5QGE6J.js → pointer-drag-LIW5PY5P.js} +9 -9
  138. package/dist/{pointer-move-4N4D7JY2.js → pointer-move-7AMURLJD.js} +9 -9
  139. package/dist/{pointer-up-CQC4NPDX.js → pointer-up-EY652YWL.js} +9 -9
  140. package/dist/{press-XGJD45CU.js → press-UIAE5XEF.js} +8 -8
  141. package/dist/{product-video-HD4ZOUI7.js → product-video-B6TLS7VC.js} +10 -10
  142. package/dist/providers/browser-native-discovery.d.ts.map +1 -1
  143. package/dist/providers/browser-output-artifacts.d.ts +13 -0
  144. package/dist/providers/browser-output-artifacts.d.ts.map +1 -0
  145. package/dist/providers/renderer.d.ts +10 -1
  146. package/dist/providers/renderer.d.ts.map +1 -1
  147. package/dist/providers/workflows.d.ts +53 -2
  148. package/dist/providers/workflows.d.ts.map +1 -1
  149. package/dist/{providers-KKNPJSQK.js → providers-AERTX6X4.js} +5 -3
  150. package/dist/public-surface/generated-manifest.d.ts +4 -4
  151. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  152. package/dist/public-surface/source.d.ts +2 -2
  153. package/dist/public-surface/source.d.ts.map +1 -1
  154. package/dist/{research-VUWWEQ4R.js → research-AJH6ECYW.js} +10 -10
  155. package/dist/{review-LZ3TA7U7.js → review-RN6XF2YB.js} +9 -9
  156. package/dist/{review-desktop-LAO7U7T3.js → review-desktop-UJOUS7K2.js} +9 -9
  157. package/dist/{rpc-HKNIVFGC.js → rpc-VS5Y5FUT.js} +8 -8
  158. package/dist/{run-SHCF53FO.js → run-EVRIQW7S.js} +6 -6
  159. package/dist/{screencast-start-JHMQZVWJ.js → screencast-start-U6J4FYU4.js} +8 -8
  160. package/dist/{screencast-stop-RWQTWWQS.js → screencast-stop-EQUPRGMP.js} +8 -8
  161. package/dist/{screenshot-QHFYO6PB.js → screenshot-BENYGC36.js} +8 -8
  162. package/dist/{scroll-L3FTMAV4.js → scroll-3OALQLX2.js} +8 -8
  163. package/dist/{scroll-into-view-JVDHX4WU.js → scroll-into-view-SNZKBIVB.js} +8 -8
  164. package/dist/{select-X4BO7GTB.js → select-JDZDDC3Y.js} +8 -8
  165. package/dist/{serve-JIMIBCNO.js → serve-LOC6ESJ4.js} +7 -7
  166. package/dist/{shopping-EGSDP2GL.js → shopping-267OAYGM.js} +10 -10
  167. package/dist/{snapshot-QGJ7RDNV.js → snapshot-ASYI5UFR.js} +8 -8
  168. package/dist/{status-CKGPNYIH.js → status-47CI4LJX.js} +7 -7
  169. package/dist/{status-LEBY2X7N.js → status-N4O6DJTF.js} +9 -9
  170. package/dist/{status-capabilities-6QTWNGKM.js → status-capabilities-C777JZG4.js} +9 -9
  171. package/dist/{text-VUZU7D3L.js → text-MS2653MW.js} +8 -8
  172. package/dist/tools/inspiredesign_run.d.ts.map +1 -1
  173. package/dist/tools/product_video_run.d.ts.map +1 -1
  174. package/dist/{type-N5SURP74.js → type-UMPSDACC.js} +8 -8
  175. package/dist/{uncheck-JFMK3SSY.js → uncheck-2OZ56D42.js} +8 -8
  176. package/dist/{upload-KFUYLL7M.js → upload-CD7PRH54.js} +8 -8
  177. package/dist/{use-CNMPP2ED.js → use-MO67AGG7.js} +7 -7
  178. package/dist/{value-J335MPZE.js → value-4GI2LRUY.js} +8 -8
  179. package/dist/{visible-YQZWWPBZ.js → visible-VSUFGRFZ.js} +8 -8
  180. package/dist/{wait-IC7YJJPJ.js → wait-OQYMFENT.js} +8 -8
  181. package/dist/{windows-AGVQ3KX3.js → windows-75W2JCW7.js} +9 -9
  182. package/extension/manifest.json +1 -1
  183. package/package.json +1 -1
  184. package/skills/opendevbrowser-best-practices/SKILL.md +41 -30
  185. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +12 -8
  186. package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +1 -0
  187. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +19 -0
  188. package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +23 -13
  189. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +3 -1
  190. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +62 -21
  191. package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +28 -0
  192. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +15 -0
  193. package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +13 -0
  194. package/skills/opendevbrowser-design-agent/SKILL.md +2 -0
  195. package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +15 -13
  196. package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +1 -1
  197. package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +14 -7
  198. package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +1 -0
  199. package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +10 -7
  200. package/skills/opendevbrowser-motion-design/SKILL.md +1 -1
  201. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +5 -4
  202. package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +1 -0
  203. package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +1 -0
  204. package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +1 -0
  205. package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +4 -0
  206. package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +1 -0
  207. package/skills/opendevbrowser-research/SKILL.md +1 -0
  208. package/skills/opendevbrowser-research/scripts/render-output.sh +1 -0
  209. package/skills/opendevbrowser-research/scripts/run-research.sh +1 -0
  210. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +4 -0
  211. package/skills/opendevbrowser-research/scripts/write-artifacts.sh +1 -0
  212. package/skills/opendevbrowser-shopping/SKILL.md +1 -0
  213. package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +1 -0
  214. package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +1 -0
  215. package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +1 -0
  216. package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +4 -0
  217. package/dist/chunk-27W46IKI.js.map +0 -1
  218. package/dist/chunk-EOX6U6Q4.js.map +0 -1
  219. package/dist/chunk-FBKPDILE.js.map +0 -1
  220. package/dist/chunk-HMRANSDX.js.map +0 -1
  221. package/dist/chunk-IBIHDGTZ.js.map +0 -1
  222. package/dist/chunk-SKFB5ICF.js.map +0 -1
  223. package/dist/chunk-ZGCTC5YM.js.map +0 -1
  224. package/dist/inspiredesign-IPVZDLSQ.js.map +0 -1
  225. /package/dist/{accessibility-snapshot-JSPFVWZ6.js.map → accessibility-snapshot-TAFPVLZN.js.map} +0 -0
  226. /package/dist/{active-window-2OB2MSCR.js.map → active-window-MHFMC6NQ.js.map} +0 -0
  227. /package/dist/{annotate-VDZBZBKZ.js.map → annotate-5ZFRFQ4B.js.map} +0 -0
  228. /package/dist/{attr-7XIO4MCH.js.map → attr-MBF2UCRF.js.map} +0 -0
  229. /package/dist/{canvas-N4PAA274.js.map → canvas-CAMD22YU.js.map} +0 -0
  230. /package/dist/{capture-desktop-T5YO3EBI.js.map → capture-desktop-TMZSFA5R.js.map} +0 -0
  231. /package/dist/{capture-window-UKEUBWKH.js.map → capture-window-NZDKD2AE.js.map} +0 -0
  232. /package/dist/{check-PQB6KKMN.js.map → check-MO33GTQ4.js.map} +0 -0
  233. /package/dist/{checked-RNZIMCU6.js.map → checked-3HDF5X2M.js.map} +0 -0
  234. /package/dist/{chunk-YRRRUGSQ.js.map → chunk-32ZSOZND.js.map} +0 -0
  235. /package/dist/{chunk-FDBUB7BM.js.map → chunk-BHZLEFXW.js.map} +0 -0
  236. /package/dist/{chunk-JROW6ZNN.js.map → chunk-FJZY3Z3X.js.map} +0 -0
  237. /package/dist/{chunk-J3KYGJRQ.js.map → chunk-G6NQ7WYD.js.map} +0 -0
  238. /package/dist/{chunk-52ZIOWVU.js.map → chunk-UEAXTWGT.js.map} +0 -0
  239. /package/dist/{chunk-W6YPVNDX.js.map → chunk-VTGG5ZU2.js.map} +0 -0
  240. /package/dist/{chunk-NURQB55J.js.map → chunk-WY72GYAH.js.map} +0 -0
  241. /package/dist/{click-U7ZFKSB4.js.map → click-SWZPJO2U.js.map} +0 -0
  242. /package/dist/{clone-component-SWYAORTU.js.map → clone-component-YTB46YU4.js.map} +0 -0
  243. /package/dist/{clone-page-WJ6UJOJG.js.map → clone-page-5FMPHQ3A.js.map} +0 -0
  244. /package/dist/{close-NAVIHZ2T.js.map → close-22SNMDX3.js.map} +0 -0
  245. /package/dist/{close-VKIGIKVT.js.map → close-ORQZCZ2E.js.map} +0 -0
  246. /package/dist/{connect-XVG2MOZL.js.map → connect-EWYITNQU.js.map} +0 -0
  247. /package/dist/{console-poll-XI5BZPL7.js.map → console-poll-LJR6ZTDK.js.map} +0 -0
  248. /package/dist/{cookie-import-QELKE7TK.js.map → cookie-import-PTAIWPEC.js.map} +0 -0
  249. /package/dist/{cookie-list-QDA6KWIY.js.map → cookie-list-76C35B5B.js.map} +0 -0
  250. /package/dist/{daemon-CA4UIIZQ.js.map → daemon-UKJMDLCB.js.map} +0 -0
  251. /package/dist/{debug-trace-snapshot-AT4GAO57.js.map → debug-trace-snapshot-PQ5FJART.js.map} +0 -0
  252. /package/dist/{dialog-O3V2IBFH.js.map → dialog-WLJDWJV4.js.map} +0 -0
  253. /package/dist/{disconnect-NAX5TPTG.js.map → disconnect-FNB4JC2U.js.map} +0 -0
  254. /package/dist/{enabled-VT4FJXDX.js.map → enabled-PYMCOQPC.js.map} +0 -0
  255. /package/dist/{goto-GBJG5NC4.js.map → goto-UNTEW4VI.js.map} +0 -0
  256. /package/dist/{hover-476ZNQZE.js.map → hover-ZWY4YOM4.js.map} +0 -0
  257. /package/dist/{html-5C4TXOV3.js.map → html-M46YBFT3.js.map} +0 -0
  258. /package/dist/{inspector-73ARPCIV.js.map → inspector-6YAOI74U.js.map} +0 -0
  259. /package/dist/{inspector-audit-QT6QY7KS.js.map → inspector-audit-PF64X6SJ.js.map} +0 -0
  260. /package/dist/{inspector-plan-JRNSGN2Z.js.map → inspector-plan-IUGTQV3Q.js.map} +0 -0
  261. /package/dist/{launch-B35YDRQC.js.map → launch-I7WNLWLY.js.map} +0 -0
  262. /package/dist/{list-YETWKTKY.js.map → list-BAECFJI7.js.map} +0 -0
  263. /package/dist/{list-JV55JVGB.js.map → list-BCF4HZ2K.js.map} +0 -0
  264. /package/dist/{macro-resolve-DQK4B3W3.js.map → macro-resolve-4GNZYHHW.js.map} +0 -0
  265. /package/dist/{network-poll-4GWHCJXI.js.map → network-poll-DCZ5ZNLP.js.map} +0 -0
  266. /package/dist/{new-XDCQPIEG.js.map → new-6KZYJTJG.js.map} +0 -0
  267. /package/dist/{open-GIM3ZCSV.js.map → open-JPGEAJHJ.js.map} +0 -0
  268. /package/dist/{perf-26VBXDPI.js.map → perf-5X367PRP.js.map} +0 -0
  269. /package/dist/{pointer-down-O3VSNAXW.js.map → pointer-down-5OAUDDNR.js.map} +0 -0
  270. /package/dist/{pointer-drag-WQ5QGE6J.js.map → pointer-drag-LIW5PY5P.js.map} +0 -0
  271. /package/dist/{pointer-move-4N4D7JY2.js.map → pointer-move-7AMURLJD.js.map} +0 -0
  272. /package/dist/{pointer-up-CQC4NPDX.js.map → pointer-up-EY652YWL.js.map} +0 -0
  273. /package/dist/{press-XGJD45CU.js.map → press-UIAE5XEF.js.map} +0 -0
  274. /package/dist/{product-video-HD4ZOUI7.js.map → product-video-B6TLS7VC.js.map} +0 -0
  275. /package/dist/{providers-KKNPJSQK.js.map → providers-AERTX6X4.js.map} +0 -0
  276. /package/dist/{research-VUWWEQ4R.js.map → research-AJH6ECYW.js.map} +0 -0
  277. /package/dist/{review-LZ3TA7U7.js.map → review-RN6XF2YB.js.map} +0 -0
  278. /package/dist/{review-desktop-LAO7U7T3.js.map → review-desktop-UJOUS7K2.js.map} +0 -0
  279. /package/dist/{rpc-HKNIVFGC.js.map → rpc-VS5Y5FUT.js.map} +0 -0
  280. /package/dist/{run-SHCF53FO.js.map → run-EVRIQW7S.js.map} +0 -0
  281. /package/dist/{screencast-start-JHMQZVWJ.js.map → screencast-start-U6J4FYU4.js.map} +0 -0
  282. /package/dist/{screencast-stop-RWQTWWQS.js.map → screencast-stop-EQUPRGMP.js.map} +0 -0
  283. /package/dist/{screenshot-QHFYO6PB.js.map → screenshot-BENYGC36.js.map} +0 -0
  284. /package/dist/{scroll-L3FTMAV4.js.map → scroll-3OALQLX2.js.map} +0 -0
  285. /package/dist/{scroll-into-view-JVDHX4WU.js.map → scroll-into-view-SNZKBIVB.js.map} +0 -0
  286. /package/dist/{select-X4BO7GTB.js.map → select-JDZDDC3Y.js.map} +0 -0
  287. /package/dist/{serve-JIMIBCNO.js.map → serve-LOC6ESJ4.js.map} +0 -0
  288. /package/dist/{shopping-EGSDP2GL.js.map → shopping-267OAYGM.js.map} +0 -0
  289. /package/dist/{snapshot-QGJ7RDNV.js.map → snapshot-ASYI5UFR.js.map} +0 -0
  290. /package/dist/{status-CKGPNYIH.js.map → status-47CI4LJX.js.map} +0 -0
  291. /package/dist/{status-LEBY2X7N.js.map → status-N4O6DJTF.js.map} +0 -0
  292. /package/dist/{status-capabilities-6QTWNGKM.js.map → status-capabilities-C777JZG4.js.map} +0 -0
  293. /package/dist/{text-VUZU7D3L.js.map → text-MS2653MW.js.map} +0 -0
  294. /package/dist/{type-N5SURP74.js.map → type-UMPSDACC.js.map} +0 -0
  295. /package/dist/{uncheck-JFMK3SSY.js.map → uncheck-2OZ56D42.js.map} +0 -0
  296. /package/dist/{upload-KFUYLL7M.js.map → upload-CD7PRH54.js.map} +0 -0
  297. /package/dist/{use-CNMPP2ED.js.map → use-MO67AGG7.js.map} +0 -0
  298. /package/dist/{value-J335MPZE.js.map → value-4GI2LRUY.js.map} +0 -0
  299. /package/dist/{visible-YQZWWPBZ.js.map → visible-VSUFGRFZ.js.map} +0 -0
  300. /package/dist/{wait-IC7YJJPJ.js.map → wait-OQYMFENT.js.map} +0 -0
  301. /package/dist/{windows-AGVQ3KX3.js.map → windows-75W2JCW7.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/help.ts"],"sourcesContent":["import onboardingMetadata from \"./onboarding-metadata.json\";\nimport {\n INSPIREDESIGN_HANDOFF_COMMANDS,\n INSPIREDESIGN_HANDOFF_GUIDANCE\n} from \"../inspiredesign/handoff\";\nimport type { CliCommand } from \"./args\";\nimport { CLI_COMMANDS, VALID_FLAGS } from \"./args\";\nimport {\n CLI_COMMAND_HELP_DETAILS,\n PUBLIC_CLI_COMMAND_GROUPS,\n TOOL_SURFACE_ENTRIES\n} from \"../public-surface/generated-manifest\";\n\ntype HelpFlag = (typeof VALID_FLAGS)[number];\n\ninterface CommandGroup {\n title: string;\n summary: string;\n commands: readonly CliCommand[];\n}\n\nexport type CommandHelpDetail = typeof CLI_COMMAND_HELP_DETAILS[CliCommand];\n\ninterface FlagEntry {\n flag: HelpFlag;\n alias?: string;\n description: string;\n example?: string;\n}\n\ninterface FlagGroup {\n title: string;\n summary: string;\n flags: readonly FlagEntry[];\n}\n\ninterface ReferenceEntry {\n label: string;\n description: string;\n}\n\ninterface DetailRow {\n label: string;\n value: string;\n}\n\ninterface FormattableRow {\n label: string;\n description: string;\n details?: readonly DetailRow[];\n}\n\nconst LABEL_WIDTH = 42;\nconst DETAIL_LABEL_WIDTH = 9;\nconst COMMAND_SET = new Set<string>(CLI_COMMANDS);\nconst FLAG_SET = new Set<string>(VALID_FLAGS);\nconst TOOL_COUNT = TOOL_SURFACE_ENTRIES.length;\nconst CLI_EQUIVALENT_SET = new Set(\n TOOL_SURFACE_ENTRIES.flatMap((entry) => (entry.cliEquivalent ? [entry.cliEquivalent] : []))\n);\n\nconst formatFlags = (flags: readonly HelpFlag[]): string => (flags.length > 0 ? flags.join(\", \") : \"none\");\n\nexport const getCliOnlyCommands = (): CliCommand[] => (\n CLI_COMMANDS.filter((command) => !CLI_EQUIVALENT_SET.has(command))\n);\n\nexport const getToolOnlyHelperNames = (): string[] => (\n TOOL_SURFACE_ENTRIES\n .filter((entry) => !entry.cliEquivalent)\n .map((entry) => entry.name)\n);\n\nexport const HELP_COMMAND_GROUPS: readonly CommandGroup[] = PUBLIC_CLI_COMMAND_GROUPS.map((group) => ({\n title: group.title,\n summary: group.summary,\n commands: group.commands.map((command) => command.name) as CliCommand[]\n}));\n\nexport const COMMAND_HELP_DETAILS: Record<CliCommand, CommandHelpDetail> = CLI_COMMAND_HELP_DETAILS as Record<CliCommand, CommandHelpDetail>;\n\nexport const HELP_FLAG_GROUPS: readonly FlagGroup[] = [\n {\n title: \"Install / Global Flags\",\n summary: \"Control install scope, prompting, and bundled skill setup.\",\n flags: [\n { flag: \"--global\", alias: \"-g\", description: \"Install into ~/.config/opencode/opencode.json.\", example: \"npx opendevbrowser --global --with-config\" },\n { flag: \"--local\", alias: \"-l\", description: \"Install into ./opencode.json for this project.\", example: \"npx opendevbrowser --local --skills-local\" },\n { flag: \"--update\", alias: \"-u\", description: \"Repair OpenCode package caches, plugin pins, and managed skill packs.\" },\n { flag: \"--uninstall\", description: \"Alias for the uninstall command.\" },\n { flag: \"--with-config\", description: \"Also create opendevbrowser.jsonc defaults.\", example: \"npx opendevbrowser --global --with-config\" },\n { flag: \"--full\", alias: \"-f\", description: \"Install config and pre-extract extension assets.\", example: \"npx opendevbrowser --full\" },\n { flag: \"--no-prompt\", description: \"Run non-interactively using defaults.\" },\n { flag: \"--no-interactive\", description: \"Alias of --no-prompt.\" },\n { flag: \"--quiet\", description: \"Suppress non-error text output.\" },\n { flag: \"--skills-global\", description: \"Install bundled skills into global agent directories.\" },\n { flag: \"--skills-local\", description: \"Install bundled skills into local project agent directories.\" },\n { flag: \"--no-skills\", description: \"Skip bundled skill installation.\" }\n ]\n },\n {\n title: \"Help / Output Flags\",\n summary: \"Inspect help or version and control output transport.\",\n flags: [\n { flag: \"--help\", alias: \"-h\", description: \"Show CLI help output.\", example: \"npx opendevbrowser --help\" },\n { flag: \"--version\", alias: \"-v\", description: \"Show CLI version.\", example: \"npx opendevbrowser --version\" },\n { flag: \"--output-format\", description: \"Output mode: text, json, or stream-json.\", example: \"opendevbrowser status --daemon --output-format json\" },\n { flag: \"--transport\", description: \"Transport selector for transport-aware commands. `status` uses relay/native; `annotate` uses auto/direct/relay.\", example: \"opendevbrowser status --session-id s1 --transport native\" }\n ]\n },\n {\n title: \"Daemon / Session / Launch Flags\",\n summary: \"Control daemon binding, browser connect, and launch behavior. If ext=on but handshake=off, reopen the extension popup and click Connect again to re-establish a clean daemon-extension handshake.\",\n flags: [\n { flag: \"--port\", description: \"Daemon or relay port override.\", example: \"opendevbrowser serve --port 8788\" },\n { flag: \"--token\", description: \"Relay or daemon auth token override.\", example: \"opendevbrowser serve --token local-dev-token\" },\n { flag: \"--stop\", description: \"Stop a running daemon.\", example: \"opendevbrowser serve --stop\" },\n { flag: \"--daemon\", description: \"Target daemon status mode where supported.\", example: \"opendevbrowser status --daemon --output-format json\" },\n { flag: \"--script\", description: \"Path to a run-script JSON file.\", example: \"opendevbrowser run --script ./workflow.json\" },\n { flag: \"--session-id\", description: \"Target an existing browser or daemon session.\", example: \"opendevbrowser snapshot --session-id s1\" },\n { flag: \"--close-browser\", description: \"Close the managed browser on disconnect.\" },\n { flag: \"--ws-endpoint\", description: \"Connect using an explicit CDP WebSocket endpoint.\", example: \"opendevbrowser connect --ws-endpoint ws://127.0.0.1:9222/devtools/browser/...\" },\n { flag: \"--host\", description: \"CDP host for host/port connect mode.\", example: \"opendevbrowser connect --host 127.0.0.1 --cdp-port 9222\" },\n { flag: \"--cdp-port\", description: \"CDP port for host/port connect mode.\" },\n { flag: \"--headless\", description: \"Launch a managed browser in headless mode.\", example: \"opendevbrowser launch --no-extension --headless\" },\n { flag: \"--profile\", description: \"Use a named browser profile directory.\" },\n { flag: \"--persist-profile\", description: \"Keep the generated profile directory after exit. `run` uses a temporary profile by default unless this flag is enabled.\" },\n { flag: \"--chrome-path\", description: \"Use a specific Chrome, Chromium, or CfT binary.\" },\n { flag: \"--start-url\", description: \"Open this URL immediately after launch or connect.\" },\n { flag: \"--flag\", description: \"Pass one or more extra Chrome CLI flags.\" },\n { flag: \"--no-extension\", description: \"Force managed mode without extension relay.\" },\n { flag: \"--extension-only\", description: \"Fail unless the extension relay websocket is connected and the daemon-extension handshake is complete.\" },\n { flag: \"--extension-legacy\", description: \"Use the legacy /cdp relay mode instead of /ops.\" },\n { flag: \"--wait-for-extension\", description: \"Wait for a clean daemon-extension handshake before returning.\" },\n { flag: \"--wait-timeout-ms\", description: \"Handshake wait timeout in milliseconds.\" }\n ]\n },\n {\n title: \"Navigation / Interaction / Diagnostics Flags\",\n summary: \"Command-specific flags for page actions, reads, and diagnostics.\",\n flags: [\n { flag: \"--url\", description: \"Target URL for navigation, connect, or workflow commands; repeat for multi-reference inspiredesign run or harvest inputs.\", example: \"opendevbrowser goto --session-id s1 --url https://example.com\" },\n { flag: \"--wait-until\", description: \"Navigation wait strategy such as load or domcontentloaded.\" },\n { flag: \"--timeout-ms\", description: \"Operation timeout in milliseconds.\", example: \"opendevbrowser canvas --timeout-ms 120000 --command canvas.session.open ...\" },\n { flag: \"--ref\", description: \"Snapshot ref id for element-targeted commands.\", example: \"opendevbrowser click --session-id s1 --ref r12\" },\n { flag: \"--state\", description: \"Wait state selector for wait-style commands.\" },\n { flag: \"--until\", description: \"Wait condition selector for wait-style commands.\" },\n { flag: \"--mode\", description: \"Mode selector for commands that accept variants.\" },\n { flag: \"--max-chars\", description: \"Maximum text characters to return for DOM reads.\" },\n { flag: \"--cursor\", description: \"Cursor token for paginated list commands.\" },\n { flag: \"--text\", description: \"Text payload for type and related commands.\" },\n { flag: \"--clear\", description: \"Clear the existing input value before typing.\" },\n { flag: \"--submit\", description: \"Submit the form or input after typing.\" },\n { flag: \"--values\", description: \"CSV values for select commands.\" },\n { flag: \"--files\", description: \"CSV file paths for upload commands.\" },\n { flag: \"--dy\", description: \"Vertical scroll delta for scroll commands.\" },\n { flag: \"--key\", description: \"Keyboard key for the press command.\" },\n { flag: \"--attr\", description: \"DOM attribute name for dom-attr.\" },\n { flag: \"--x\", description: \"Viewport x coordinate for pointer commands.\" },\n { flag: \"--y\", description: \"Viewport y coordinate for pointer commands.\" },\n { flag: \"--from-x\", description: \"Pointer drag start x coordinate.\" },\n { flag: \"--from-y\", description: \"Pointer drag start y coordinate.\" },\n { flag: \"--to-x\", description: \"Pointer drag end x coordinate.\" },\n { flag: \"--to-y\", description: \"Pointer drag end y coordinate.\" },\n { flag: \"--steps\", description: \"Interpolation step count for pointer move or drag commands.\" },\n { flag: \"--button\", description: \"Pointer button selector for pointer down or up.\" },\n { flag: \"--click-count\", description: \"Associated click count for pointer down or up.\" },\n { flag: \"--name\", description: \"Named page identifier for page commands.\" },\n { flag: \"--target-id\", description: \"Browser target id for target commands.\", example: \"opendevbrowser target-use --session-id s1 --target-id page-2\" },\n { flag: \"--window-id\", description: \"Desktop window id for direct window capture commands.\" },\n { flag: \"--tab-id\", description: \"Browser tab id override for extension and annotation commands.\" },\n { flag: \"--include-urls\", description: \"Include page URLs in list output where supported.\" },\n { flag: \"--path\", description: \"Filesystem path for command output or artifacts.\", example: \"opendevbrowser screenshot --session-id s1 --path ./shot.png\" },\n { flag: \"--screencast-id\", description: \"Recorded screencast id returned by screencast-start for the same session.\" },\n { flag: \"--reason\", description: \"Audit reason for desktop observation commands.\" },\n { flag: \"--full-page\", description: \"Capture the full scrollable page instead of the current viewport.\" },\n { flag: \"--action\", description: \"Dialog action: status, accept, or dismiss.\" },\n { flag: \"--prompt-text\", description: \"Prompt text to submit when accepting a prompt dialog.\" },\n { flag: \"--since-seq\", description: \"Poll from a sequence id across diagnostics streams.\" },\n { flag: \"--max\", description: \"Maximum number of records or items to return.\" },\n { flag: \"--interval-ms\", description: \"Frame capture interval for screencast recording.\" },\n { flag: \"--max-frames\", description: \"Maximum screencast frame count before auto-stop.\" },\n { flag: \"--since-console-seq\", description: \"Console sequence cursor for debug-trace snapshots.\" },\n { flag: \"--since-network-seq\", description: \"Network sequence cursor for debug-trace snapshots.\" },\n { flag: \"--since-exception-seq\", description: \"Exception sequence cursor for debug-trace snapshots.\" },\n { flag: \"--request-id\", description: \"Attach or lookup a request id for correlated output.\" },\n { flag: \"--cookies\", description: \"Inline cookie payload for cookie-import.\" },\n { flag: \"--cookies-file\", description: \"File path containing cookies for cookie-import.\" },\n { flag: \"--strict\", description: \"Fail cookie import on invalid entries.\" },\n { flag: \"--screenshot-mode\", description: \"Annotation screenshot mode: visible, full, or none.\" },\n { flag: \"--debug\", description: \"Enable debug-level annotation capture extras.\" },\n { flag: \"--context\", description: \"Free-form annotation context for reviewers or agents.\" },\n { flag: \"--stored\", description: \"Return the last stored annotation payload instead of starting a new capture.\" }\n ]\n },\n {\n title: \"Macro / Provider / Power Flags\",\n summary: \"Workflow filters, provider selectors, and unsafe RPC or /canvas options.\",\n flags: [\n { flag: \"--expression\", description: \"Macro expression to resolve or execute.\", example: \"opendevbrowser macro-resolve --expression '@web.search(\\\"openai\\\")'\" },\n { flag: \"--default-provider\", description: \"Provider fallback for shorthand macro expressions.\" },\n { flag: \"--include-catalog\", description: \"Include macro catalog metadata in the response.\" },\n { flag: \"--command\", description: \"Canvas command name for the canvas CLI command.\", example: \"opendevbrowser canvas --command canvas.session.open --params '{...}'\" },\n { flag: \"--execute\", description: \"Execute a resolved macro action after planning.\" },\n { flag: \"--params\", description: \"Inline JSON params for canvas or rpc commands.\" },\n { flag: \"--params-file\", description: \"Path to a JSON params file for canvas or rpc commands.\", example: \"opendevbrowser canvas --command canvas.plan.set --params-file ./plan.json\" },\n { flag: \"--unsafe-internal\", description: \"Required safety gate for the rpc command.\" },\n { flag: \"--topic\", description: \"Research topic input.\" },\n { flag: \"--days\", description: \"Lookback window in days for research commands.\" },\n { flag: \"--from\", description: \"Start date boundary for research commands.\" },\n { flag: \"--to\", description: \"End date boundary for research commands.\" },\n { flag: \"--source-selection\", description: \"Research source-family selector: auto, web, community, social, shopping, or all. This selects families only and is not a reliability guarantee.\" },\n { flag: \"--sources\", description: \"Explicit source-family selectors such as web,community. Use shopping only when commercial intent is explicit.\" },\n { flag: \"--include-engagement\", description: \"Include engagement metrics in research output.\" },\n { flag: \"--limit-per-source\", description: \"Per-source result cap for research runs.\" },\n { flag: \"--query\", description: \"Shopping query input or inspiredesign harvest discovery query.\" },\n { flag: \"--providers\", description: \"Comma-separated provider ids for shopping or artifact commands.\" },\n { flag: \"--provider\", description: \"Repeatable provider id for inspiredesign harvest discovery.\" },\n { flag: \"--max-references\", description: \"Maximum inspiredesign harvest references to keep after explicit URL and query discovery merge.\" },\n { flag: \"--visual-evidence\", description: \"Inspiredesign visual evidence mode: off, auto, or required. Harvest defaults to required.\" },\n { flag: \"--budget\", description: \"Budget filter for shopping workflows.\" },\n { flag: \"--region\", description: \"Region or country hint for provider selection. Treat it as advisory unless output metadata reports `region_authoritative=true`.\" },\n { flag: \"--sort\", description: \"Sort mode for shopping results.\" },\n { flag: \"--brief\", description: \"Inspiredesign brief describing the target design direction.\" },\n { flag: \"--capture-mode\", description: \"Inspiredesign capture mode: off or deep. Any --url forces deep.\" },\n { flag: \"--include-prototype-guidance\", description: \"Include inspiredesign prototype guidance in workflow output.\" },\n { flag: \"--product-url\", description: \"Target product URL for product-video workflows.\" },\n { flag: \"--product-name\", description: \"Product name override for product-video workflows.\" },\n { flag: \"--provider-hint\", description: \"Provider hint override for product workflows.\" },\n { flag: \"--include-screenshots\", description: \"Include screenshots in product presentation output, or prefer screenshots when fetching stored annotations.\" },\n { flag: \"--include-all-images\", description: \"Include all discovered product images.\" },\n { flag: \"--include-copy\", description: \"Include product marketing copy metadata.\" },\n { flag: \"--use-cookies\", description: \"Enable or disable provider cookie injection for workflow runs and macro-resolve execute; a bare flag means true.\", example: \"opendevbrowser macro-resolve --expression '@media.search(\\\"browser automation x\\\", \\\"x\\\", 5)' --execute --browser-mode extension --use-cookies\" },\n { flag: \"--browser-mode\", description: \"Provider browser transport mode: auto, extension, or managed. extension reuses relay-backed browser state; managed runs a deterministic managed browser.\", example: \"opendevbrowser research run --topic 'browser automation on X' --source-selection social --browser-mode extension --use-cookies --challenge-automation-mode browser_with_helper\" },\n { flag: \"--challenge-automation-mode\", description: \"Per-run challenge automation mode for workflow runs and macro-resolve execute: off, browser, or browser_with_helper. Precedence is run > session > config, and the helper remains browser-scoped only.\", example: \"opendevbrowser macro-resolve --expression '@community.search(\\\"openai\\\")' --execute --challenge-automation-mode browser_with_helper\" },\n { flag: \"--cookie-policy-override\", description: \"Per-run workflow and macro-resolve execute cookie policy override: off, auto, or required.\", example: \"opendevbrowser macro-resolve --expression '@community.search(\\\"browser automation failures\\\", 4)' --execute --browser-mode extension --use-cookies --cookie-policy required\" },\n { flag: \"--cookie-policy\", description: \"Alias of --cookie-policy-override.\" },\n { flag: \"--output-dir\", description: \"Directory where generated artifacts are written, including screencast replay output.\" },\n { flag: \"--ttl-hours\", description: \"Artifact cache time-to-live in hours.\" },\n { flag: \"--expired-only\", description: \"List only expired artifacts in artifacts commands.\" }\n ]\n }\n];\n\nexport const HELP_TOOL_ENTRIES = TOOL_SURFACE_ENTRIES;\n\nexport const HELP_CAPABILITY_ENTRIES: readonly FormattableRow[] = [\n {\n label: \"screencast / browser replay\",\n description: \"Use the public browser replay lane when you need temporal browser evidence before or after a fragile flow.\",\n details: [\n { label: \"cli:\", value: \"screencast-start, screencast-stop\" },\n { label: \"example:\", value: \"npx opendevbrowser screencast-start --session-id <id> --output-dir ./artifacts/replay\" }\n ]\n },\n {\n label: \"desktop observation\",\n description: \"Use the public read-only desktop observation plane for sibling desktop evidence on macOS; availability, window inventory, and accessibility probes use the local swift command, while screenshots use macOS screencapture outside extension relay.\",\n details: [\n {\n label: \"cli:\",\n value: \"desktop-status, desktop-windows, desktop-active-window, desktop-capture-desktop, desktop-capture-window, desktop-accessibility-snapshot\"\n },\n { label: \"example:\", value: \"npx opendevbrowser desktop-status --output-format json\" }\n ]\n },\n {\n label: \"computer use / browser-scoped computer use\",\n description: \"Control the bounded browser-scoped computer-use challenge lane with --challenge-automation-mode; the optional helper is not a desktop agent.\",\n details: [\n { label: \"flag:\", value: \"--challenge-automation-mode off|browser|browser_with_helper\" },\n { label: \"works:\", value: \"research run, shopping run, product-video run, inspiredesign run, inspiredesign harvest, macro-resolve --execute\" },\n { label: \"entry:\", value: onboardingMetadata.quickStartCommands.computerUseEntry },\n { label: \"proof:\", value: \"review, session-inspector, workflow fallback metadata\" }\n ]\n }\n];\n\nexport const HELP_ONBOARDING_ENTRIES: readonly FormattableRow[] = [\n {\n label: \"prompting_guide\",\n description: \"Load local best-practice guidance before low-level browser commands.\",\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.promptingGuide }]\n },\n {\n label: \"skill_load\",\n description: `Load ${onboardingMetadata.skillName} ${onboardingMetadata.skillTopic} directly when you want the canonical quick-start section.`,\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.skillLoad }]\n },\n {\n label: \"validated_lanes\",\n description: `Load ${onboardingMetadata.skillName} ${onboardingMetadata.validatedSkillTopic} when you need the current proven transcript, evidence-gated research, and shopping runbook.`,\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.validatedLanes }]\n },\n {\n label: \"skill_list\",\n description: \"Inspect bundled and discovered skill packs when you need a different local lane.\",\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.skillList }]\n },\n {\n label: \"research_evidence_gated\",\n description: \"Load opendevbrowser-research first, run explicit source-family research, and inspect artifacts before final claims.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.validatedResearch }]\n },\n {\n label: \"shopping_reliable\",\n description: \"Start deal hunting with explicit providers in managed mode and only trust regional comparisons when the result reports `region_authoritative=true`.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.validatedShopping }]\n },\n {\n label: \"inspiredesign_followthrough\",\n description: \"After inspiredesign finishes, inspect nextStepGuidance.readiness, read required artifacts, and continue in Canvas only when guidance is ready.\",\n details: [\n { label: \"quick:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadBestPractices },\n { label: \"design:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadDesignAgent },\n { label: \"motion:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadMotionDesign },\n { label: \"brief:\", value: INSPIREDESIGN_HANDOFF_GUIDANCE.reviewAdvancedBrief },\n { label: \"gate:\", value: \"Require nextStepGuidance.readiness=ready and no matching doNotProceedIf blockers before Canvas continuation.\" },\n { label: \"prep:\", value: INSPIREDESIGN_HANDOFF_GUIDANCE.prepareCanvasPlanRequest },\n { label: \"run:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas }\n ]\n },\n {\n label: \"computer_use_entry\",\n description: \"Enter browser-scoped computer use from a workflow run, not from a separate desktop command family.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.computerUseEntry }]\n },\n {\n label: \"happy_path\",\n description: \"After guidance, verify a minimal managed happy path before widening into multi-step automation.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.happyPath }]\n },\n {\n label: \"surface_split\",\n description: \"Use the existing public-surface split when a workflow or helper only exists on one side of the CLI or tool surface.\",\n details: [\n { label: \"cli-only:\", value: getCliOnlyCommands().join(\", \") },\n { label: \"tool-only:\", value: getToolOnlyHelperNames().join(\", \") }\n ]\n },\n {\n label: \"docs\",\n description: \"Use the first-run checklist and canonical skill runbook for proof and deeper operating details.\",\n details: [{\n label: \"paths:\",\n value: `${onboardingMetadata.referencePaths.onboardingDoc}, ${onboardingMetadata.referencePaths.skillDoc}`\n }]\n }\n];\n\nexport const HELP_REFERENCE_ENTRIES: readonly ReferenceEntry[] = [\n { label: \"src/cli/onboarding-metadata.json\", description: \"Canonical first-contact onboarding metadata shared by help, nudges, and proof lanes.\" },\n { label: \"src/providers/workflow-handoff.ts\", description: \"Central next-step advisory builders for workflow follow-through.\" },\n { label: \"src/inspiredesign/handoff.ts\", description: \"Shared inspiredesign follow-through commands, artifact names, and Canvas continuation guidance.\" },\n { label: \"src/public-surface/source.ts\", description: \"Authoritative command, usage, flag, and tool surface metadata.\" },\n { label: \"src/public-surface/generated-manifest.ts\", description: \"Checked-in generated public-surface snapshot consumed by help and parity tests.\" },\n { label: \"src/public-surface/generated-manifest.json\", description: \"Checked-in generated public-surface snapshot consumed by inventory scripts.\" },\n { label: \"src/cli/args.ts\", description: \"CLI argument parsing backed by the public-surface source.\" },\n { label: \"src/cli/help.ts\", description: \"Human-facing CLI formatting layered on the public-surface source, including the first-contact Find It Fast lookup block.\" },\n { label: \"src/tools/index.ts\", description: \"Code-level tool registry.\" },\n { label: \"docs/CLI.md\", description: \"Detailed CLI guide and release-gate runbooks.\" },\n { label: onboardingMetadata.referencePaths.onboardingDoc, description: \"First-run checklist for help-led onboarding and happy-path proof.\" },\n { label: onboardingMetadata.referencePaths.skillDoc, description: \"Canonical bundled best-practices runbook and quick-start guidance.\" },\n { label: \"docs/WORKFLOW_SURFACE_MAP.md\", description: \"Code-derived workflow and validation inventory, including CLI-only and tool-only surface splits.\" },\n { label: \"docs/SURFACE_REFERENCE.md\", description: \"Canonical CLI, tool, and relay channel inventory.\" },\n { label: \"opendevbrowser --help\", description: \"Primary full help invocation for quick discovery.\" },\n { label: \"opendevbrowser help\", description: \"Alias that prints the same full help inventory.\" }\n];\n\nfunction formatRows(rows: readonly FormattableRow[]): string {\n return rows\n .map((row) => {\n const lines = [` ${row.label.padEnd(LABEL_WIDTH)} ${row.description}`];\n for (const detail of row.details ?? []) {\n lines.push(` ${detail.label.padEnd(DETAIL_LABEL_WIDTH)} ${detail.value}`);\n }\n return lines.join(\"\\n\");\n })\n .join(\"\\n\");\n}\n\nfunction assertCommandCoverage(): void {\n const seen = new Set<string>();\n\n for (const group of HELP_COMMAND_GROUPS) {\n for (const command of group.commands) {\n const detail = COMMAND_HELP_DETAILS[command];\n if (!COMMAND_SET.has(command)) {\n throw new Error(`Help references unknown CLI command: ${command}`);\n }\n if (seen.has(command)) {\n throw new Error(`Help command appears multiple times: ${command}`);\n }\n if (!detail || !detail.description.trim() || !detail.usage.trim()) {\n throw new Error(`Missing command help metadata: ${command}`);\n }\n if (detail.examples.length === 0) {\n throw new Error(`Missing command example metadata: ${command}`);\n }\n for (const flag of detail.flags) {\n if (!FLAG_SET.has(flag)) {\n throw new Error(`Command help metadata references unknown flag ${flag} for ${command}`);\n }\n }\n seen.add(command);\n }\n }\n\n if (seen.size !== CLI_COMMANDS.length) {\n const missing = CLI_COMMANDS.filter((command) => !seen.has(command));\n throw new Error(`Help command coverage mismatch; missing: ${missing.join(\", \")}`);\n }\n}\n\nfunction assertFlagCoverage(): void {\n const seen = new Set<string>();\n\n for (const group of HELP_FLAG_GROUPS) {\n for (const entry of group.flags) {\n if (!FLAG_SET.has(entry.flag)) {\n throw new Error(`Help references unknown CLI flag: ${entry.flag}`);\n }\n if (seen.has(entry.flag)) {\n throw new Error(`Help flag appears multiple times: ${entry.flag}`);\n }\n seen.add(entry.flag);\n }\n }\n\n if (seen.size !== VALID_FLAGS.length) {\n const missing = VALID_FLAGS.filter((flag) => !seen.has(flag));\n throw new Error(`Help flag coverage mismatch; missing: ${missing.join(\", \")}`);\n }\n}\n\nfunction assertToolCoverage(): void {\n const seen = new Set<string>();\n\n for (const entry of HELP_TOOL_ENTRIES) {\n if (!entry.name.startsWith(\"opendevbrowser_\")) {\n throw new Error(`Invalid tool name in help inventory: ${entry.name}`);\n }\n if (!entry.description.trim()) {\n throw new Error(`Help tool is missing a description: ${entry.name}`);\n }\n if (!entry.example?.trim()) {\n throw new Error(`Help tool is missing an example: ${entry.name}`);\n }\n if (seen.has(entry.name)) {\n throw new Error(`Help tool appears multiple times: ${entry.name}`);\n }\n if (entry.cliEquivalent && !COMMAND_SET.has(entry.cliEquivalent)) {\n throw new Error(`Tool metadata references unknown CLI command: ${entry.cliEquivalent}`);\n }\n seen.add(entry.name);\n }\n\n if (HELP_TOOL_ENTRIES.length !== TOOL_COUNT) {\n throw new Error(`Help tool inventory must list ${TOOL_COUNT} tools; got ${HELP_TOOL_ENTRIES.length}`);\n }\n}\n\nfunction formatCommandGroups(): string {\n return HELP_COMMAND_GROUPS\n .map((group) => {\n const rows: FormattableRow[] = group.commands.map((command) => {\n const detail = COMMAND_HELP_DETAILS[command];\n return {\n label: command,\n description: detail.description,\n details: [\n { label: \"usage:\", value: detail.usage },\n { label: \"flags:\", value: formatFlags(detail.flags) },\n ...detail.examples.map((example) => ({ label: \"example:\", value: example })),\n ...detail.notes.map((note) => ({ label: \"note:\", value: note }))\n ]\n };\n });\n return `${group.title}: ${group.summary}\\n${formatRows(rows)}`;\n })\n .join(\"\\n\\n\");\n}\n\nfunction formatFlagGroups(): string {\n return HELP_FLAG_GROUPS\n .map((group) => {\n const rows: FormattableRow[] = group.flags.map((entry) => ({\n label: entry.alias ? `${entry.flag} (${entry.alias})` : entry.flag,\n description: entry.description,\n details: entry.example ? [{ label: \"example:\", value: entry.example }] : []\n }));\n return `${group.title}: ${group.summary}\\n${formatRows(rows)}`;\n })\n .join(\"\\n\\n\");\n}\n\nfunction formatToolEntries(): string {\n return formatRows(HELP_TOOL_ENTRIES.map((entry) => ({\n label: entry.name,\n description: entry.description,\n details: [\n ...(entry.cliEquivalent\n ? [{ label: \"cli:\", value: entry.cliEquivalent }]\n : [{ label: \"scope:\", value: \"tool-only\" }]),\n ...(entry.example ? [{ label: \"example:\", value: entry.example }] : []),\n ...((entry.notes ?? []).map((note) => ({ label: \"note:\", value: note })))\n ]\n })));\n}\n\nfunction formatOnboardingEntries(): string {\n return formatRows(HELP_ONBOARDING_ENTRIES);\n}\n\nfunction formatCapabilityEntries(): string {\n return formatRows(HELP_CAPABILITY_ENTRIES);\n}\n\nfunction formatReferenceEntries(): string {\n return formatRows(HELP_REFERENCE_ENTRIES.map((entry) => ({\n label: entry.label,\n description: entry.description\n })));\n}\n\nexport function getHelpText(): string {\n assertCommandCoverage();\n assertFlagCoverage();\n assertToolCoverage();\n\n return [\n \"OpenDevBrowser CLI\",\n \"\",\n \"Usage:\",\n \" npx opendevbrowser <command> [options]\",\n \"\",\n \"Find It Fast:\",\n \" Use these exact lookup terms when you need replay, desktop evidence, or browser-scoped computer use.\",\n formatCapabilityEntries(),\n \"\",\n `${onboardingMetadata.sectionTitle}:`,\n ` ${onboardingMetadata.sectionSummary}`,\n formatOnboardingEntries(),\n \"\",\n `Command Inventory (all ${CLI_COMMANDS.length} commands):`,\n formatCommandGroups(),\n \"\",\n \"Flag Inventory (all supported flags):\",\n formatFlagGroups(),\n \"\",\n `Tool Inventory (all ${TOOL_COUNT} opendevbrowser_* tools):`,\n formatToolEntries(),\n \"\",\n \"Reference Pointers:\",\n formatReferenceEntries()\n ].join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli/help.ts"],"sourcesContent":["import onboardingMetadata from \"./onboarding-metadata.json\";\nimport {\n INSPIREDESIGN_HANDOFF_COMMANDS,\n INSPIREDESIGN_HANDOFF_GUIDANCE\n} from \"../inspiredesign/handoff\";\nimport type { CliCommand } from \"./args\";\nimport { CLI_COMMANDS, VALID_FLAGS } from \"./args\";\nimport {\n CLI_COMMAND_HELP_DETAILS,\n PUBLIC_CLI_COMMAND_GROUPS,\n TOOL_SURFACE_ENTRIES\n} from \"../public-surface/generated-manifest\";\n\ntype HelpFlag = (typeof VALID_FLAGS)[number];\n\ninterface CommandGroup {\n title: string;\n summary: string;\n commands: readonly CliCommand[];\n}\n\nexport type CommandHelpDetail = typeof CLI_COMMAND_HELP_DETAILS[CliCommand];\n\ninterface FlagEntry {\n flag: HelpFlag;\n alias?: string;\n description: string;\n example?: string;\n}\n\ninterface FlagGroup {\n title: string;\n summary: string;\n flags: readonly FlagEntry[];\n}\n\ninterface ReferenceEntry {\n label: string;\n description: string;\n}\n\ninterface DetailRow {\n label: string;\n value: string;\n}\n\ninterface FormattableRow {\n label: string;\n description: string;\n details?: readonly DetailRow[];\n}\n\nconst LABEL_WIDTH = 42;\nconst DETAIL_LABEL_WIDTH = 9;\nconst COMMAND_SET = new Set<string>(CLI_COMMANDS);\nconst FLAG_SET = new Set<string>(VALID_FLAGS);\nconst TOOL_COUNT = TOOL_SURFACE_ENTRIES.length;\nconst CLI_EQUIVALENT_SET = new Set(\n TOOL_SURFACE_ENTRIES.flatMap((entry) => (entry.cliEquivalent ? [entry.cliEquivalent] : []))\n);\n\nconst formatFlags = (flags: readonly HelpFlag[]): string => (flags.length > 0 ? flags.join(\", \") : \"none\");\n\nexport const getCliOnlyCommands = (): CliCommand[] => (\n CLI_COMMANDS.filter((command) => !CLI_EQUIVALENT_SET.has(command))\n);\n\nexport const getToolOnlyHelperNames = (): string[] => (\n TOOL_SURFACE_ENTRIES\n .filter((entry) => !entry.cliEquivalent)\n .map((entry) => entry.name)\n);\n\nexport const HELP_COMMAND_GROUPS: readonly CommandGroup[] = PUBLIC_CLI_COMMAND_GROUPS.map((group) => ({\n title: group.title,\n summary: group.summary,\n commands: group.commands.map((command) => command.name) as CliCommand[]\n}));\n\nexport const COMMAND_HELP_DETAILS: Record<CliCommand, CommandHelpDetail> = CLI_COMMAND_HELP_DETAILS as Record<CliCommand, CommandHelpDetail>;\n\nexport const HELP_FLAG_GROUPS: readonly FlagGroup[] = [\n {\n title: \"Install / Global Flags\",\n summary: \"Control install scope, prompting, and bundled skill setup.\",\n flags: [\n { flag: \"--global\", alias: \"-g\", description: \"Install into ~/.config/opencode/opencode.json.\", example: \"npx opendevbrowser --global --with-config\" },\n { flag: \"--local\", alias: \"-l\", description: \"Install into ./opencode.json for this project.\", example: \"npx opendevbrowser --local --skills-local\" },\n { flag: \"--update\", alias: \"-u\", description: \"Repair OpenCode package caches, plugin pins, and managed skill packs.\" },\n { flag: \"--uninstall\", description: \"Alias for the uninstall command.\" },\n { flag: \"--with-config\", description: \"Also create opendevbrowser.jsonc defaults.\", example: \"npx opendevbrowser --global --with-config\" },\n { flag: \"--full\", alias: \"-f\", description: \"Install config and pre-extract extension assets.\", example: \"npx opendevbrowser --full\" },\n { flag: \"--no-prompt\", description: \"Run non-interactively using defaults.\" },\n { flag: \"--no-interactive\", description: \"Alias of --no-prompt.\" },\n { flag: \"--quiet\", description: \"Suppress non-error text output.\" },\n { flag: \"--skills-global\", description: \"Install bundled skills into global agent directories.\" },\n { flag: \"--skills-local\", description: \"Install bundled skills into local project agent directories.\" },\n { flag: \"--no-skills\", description: \"Skip bundled skill installation.\" }\n ]\n },\n {\n title: \"Help / Output Flags\",\n summary: \"Inspect help or version and control output transport.\",\n flags: [\n { flag: \"--help\", alias: \"-h\", description: \"Show CLI help output.\", example: \"npx opendevbrowser --help\" },\n { flag: \"--version\", alias: \"-v\", description: \"Show CLI version.\", example: \"npx opendevbrowser --version\" },\n { flag: \"--output-format\", description: \"Output mode: text, json, or stream-json.\", example: \"opendevbrowser status --daemon --output-format json\" },\n { flag: \"--transport\", description: \"Transport selector for transport-aware commands. `status` uses relay/native; `annotate` uses auto/direct/relay.\", example: \"opendevbrowser status --session-id s1 --transport native\" }\n ]\n },\n {\n title: \"Daemon / Session / Launch Flags\",\n summary: \"Control daemon binding, browser connect, and launch behavior. If ext=on but handshake=off, reopen the extension popup and click Connect again to re-establish a clean daemon-extension handshake.\",\n flags: [\n { flag: \"--port\", description: \"Daemon or relay port override.\", example: \"opendevbrowser serve --port 8788\" },\n { flag: \"--token\", description: \"Relay or daemon auth token override.\", example: \"opendevbrowser serve --token local-dev-token\" },\n { flag: \"--stop\", description: \"Stop a running daemon.\", example: \"opendevbrowser serve --stop\" },\n { flag: \"--daemon\", description: \"Target daemon status mode where supported.\", example: \"opendevbrowser status --daemon --output-format json\" },\n { flag: \"--script\", description: \"Path to a run-script JSON file.\", example: \"opendevbrowser run --script ./workflow.json\" },\n { flag: \"--session-id\", description: \"Target an existing browser or daemon session.\", example: \"opendevbrowser snapshot --session-id s1\" },\n { flag: \"--close-browser\", description: \"Close the managed browser on disconnect.\" },\n { flag: \"--ws-endpoint\", description: \"Connect using an explicit CDP WebSocket endpoint.\", example: \"opendevbrowser connect --ws-endpoint ws://127.0.0.1:9222/devtools/browser/...\" },\n { flag: \"--host\", description: \"CDP host for host/port connect mode.\", example: \"opendevbrowser connect --host 127.0.0.1 --cdp-port 9222\" },\n { flag: \"--cdp-port\", description: \"CDP port for host/port connect mode.\" },\n { flag: \"--headless\", description: \"Launch a managed browser in headless mode.\", example: \"opendevbrowser launch --no-extension --headless\" },\n { flag: \"--profile\", description: \"Use a named browser profile directory.\" },\n { flag: \"--persist-profile\", description: \"Keep the generated profile directory after exit. `run` uses a temporary profile by default unless this flag is enabled.\" },\n { flag: \"--chrome-path\", description: \"Use a specific Chrome, Chromium, or CfT binary.\" },\n { flag: \"--start-url\", description: \"Open this URL immediately after launch or connect.\" },\n { flag: \"--flag\", description: \"Pass one or more extra Chrome CLI flags.\" },\n { flag: \"--no-extension\", description: \"Force managed mode without extension relay.\" },\n { flag: \"--extension-only\", description: \"Fail unless the extension relay websocket is connected and the daemon-extension handshake is complete.\" },\n { flag: \"--extension-legacy\", description: \"Use the legacy /cdp relay mode instead of /ops.\" },\n { flag: \"--wait-for-extension\", description: \"Wait for a clean daemon-extension handshake before returning.\" },\n { flag: \"--wait-timeout-ms\", description: \"Handshake wait timeout in milliseconds.\" }\n ]\n },\n {\n title: \"Navigation / Interaction / Diagnostics Flags\",\n summary: \"Command-specific flags for page actions, reads, and diagnostics.\",\n flags: [\n { flag: \"--url\", description: \"Target URL for navigation, connect, or workflow commands; repeat for multi-reference inspiredesign run or harvest inputs.\", example: \"opendevbrowser goto --session-id s1 --url https://example.com\" },\n { flag: \"--wait-until\", description: \"Navigation wait strategy such as load or domcontentloaded.\" },\n { flag: \"--timeout-ms\", description: \"Operation timeout in milliseconds.\", example: \"opendevbrowser canvas --timeout-ms 120000 --command canvas.session.open ...\" },\n { flag: \"--ref\", description: \"Snapshot ref id for element-targeted commands.\", example: \"opendevbrowser click --session-id s1 --ref r12\" },\n { flag: \"--state\", description: \"Wait state selector for wait-style commands.\" },\n { flag: \"--until\", description: \"Wait condition selector for wait-style commands.\" },\n { flag: \"--mode\", description: \"Mode selector for commands that accept variants.\" },\n { flag: \"--max-chars\", description: \"Maximum text characters to return for DOM reads.\" },\n { flag: \"--cursor\", description: \"Cursor token for paginated list commands.\" },\n { flag: \"--text\", description: \"Text payload for type and related commands.\" },\n { flag: \"--clear\", description: \"Clear the existing input value before typing.\" },\n { flag: \"--submit\", description: \"Submit the form or input after typing.\" },\n { flag: \"--values\", description: \"CSV values for select commands.\" },\n { flag: \"--files\", description: \"CSV file paths for upload commands.\" },\n { flag: \"--dy\", description: \"Vertical scroll delta for scroll commands.\" },\n { flag: \"--key\", description: \"Keyboard key for the press command.\" },\n { flag: \"--attr\", description: \"DOM attribute name for dom-attr.\" },\n { flag: \"--x\", description: \"Viewport x coordinate for pointer commands.\" },\n { flag: \"--y\", description: \"Viewport y coordinate for pointer commands.\" },\n { flag: \"--from-x\", description: \"Pointer drag start x coordinate.\" },\n { flag: \"--from-y\", description: \"Pointer drag start y coordinate.\" },\n { flag: \"--to-x\", description: \"Pointer drag end x coordinate.\" },\n { flag: \"--to-y\", description: \"Pointer drag end y coordinate.\" },\n { flag: \"--steps\", description: \"Interpolation step count for pointer move or drag commands.\" },\n { flag: \"--button\", description: \"Pointer button selector for pointer down or up.\" },\n { flag: \"--click-count\", description: \"Associated click count for pointer down or up.\" },\n { flag: \"--name\", description: \"Named page identifier for page commands.\" },\n { flag: \"--target-id\", description: \"Browser target id for target commands.\", example: \"opendevbrowser target-use --session-id s1 --target-id page-2\" },\n { flag: \"--window-id\", description: \"Desktop window id for direct window capture commands.\" },\n { flag: \"--tab-id\", description: \"Browser tab id override for extension and annotation commands.\" },\n { flag: \"--include-urls\", description: \"Include page URLs in list output where supported.\" },\n { flag: \"--path\", description: \"Filesystem path for command output or artifacts.\", example: \"opendevbrowser screenshot --session-id s1 --path ./shot.png\" },\n { flag: \"--screencast-id\", description: \"Recorded screencast id returned by screencast-start for the same session.\" },\n { flag: \"--reason\", description: \"Audit reason for desktop observation commands.\" },\n { flag: \"--full-page\", description: \"Capture the full scrollable page instead of the current viewport.\" },\n { flag: \"--action\", description: \"Dialog action: status, accept, or dismiss.\" },\n { flag: \"--prompt-text\", description: \"Prompt text to submit when accepting a prompt dialog.\" },\n { flag: \"--since-seq\", description: \"Poll from a sequence id across diagnostics streams.\" },\n { flag: \"--max\", description: \"Maximum number of records or items to return.\" },\n { flag: \"--interval-ms\", description: \"Frame capture interval for screencast recording.\" },\n { flag: \"--max-frames\", description: \"Maximum screencast frame count before auto-stop.\" },\n { flag: \"--since-console-seq\", description: \"Console sequence cursor for debug-trace snapshots.\" },\n { flag: \"--since-network-seq\", description: \"Network sequence cursor for debug-trace snapshots.\" },\n { flag: \"--since-exception-seq\", description: \"Exception sequence cursor for debug-trace snapshots.\" },\n { flag: \"--request-id\", description: \"Attach or lookup a request id for correlated output.\" },\n { flag: \"--cookies\", description: \"Inline cookie payload for cookie-import.\" },\n { flag: \"--cookies-file\", description: \"File path containing cookies for cookie-import.\" },\n { flag: \"--strict\", description: \"Fail cookie import on invalid entries.\" },\n { flag: \"--screenshot-mode\", description: \"Annotation screenshot mode: visible, full, or none.\" },\n { flag: \"--debug\", description: \"Enable debug-level annotation capture extras.\" },\n { flag: \"--context\", description: \"Free-form annotation context for reviewers or agents.\" },\n { flag: \"--stored\", description: \"Return the last stored annotation payload instead of starting a new capture.\" }\n ]\n },\n {\n title: \"Macro / Provider / Power Flags\",\n summary: \"Workflow filters, provider selectors, and unsafe RPC or /canvas options.\",\n flags: [\n { flag: \"--expression\", description: \"Macro expression to resolve or execute.\", example: \"opendevbrowser macro-resolve --expression '@web.search(\\\"openai\\\")'\" },\n { flag: \"--default-provider\", description: \"Provider fallback for shorthand macro expressions.\" },\n { flag: \"--include-catalog\", description: \"Include macro catalog metadata in the response.\" },\n { flag: \"--command\", description: \"Canvas command name for the canvas CLI command.\", example: \"opendevbrowser canvas --command canvas.session.open --params '{...}'\" },\n { flag: \"--execute\", description: \"Execute a resolved macro action after planning.\" },\n { flag: \"--params\", description: \"Inline JSON params for canvas or rpc commands.\" },\n { flag: \"--params-file\", description: \"Path to a JSON params file for canvas or rpc commands.\", example: \"opendevbrowser canvas --command canvas.plan.set --params-file ./plan.json\" },\n { flag: \"--unsafe-internal\", description: \"Required safety gate for the rpc command.\" },\n { flag: \"--topic\", description: \"Research topic input.\" },\n { flag: \"--days\", description: \"Lookback window in days for research commands.\" },\n { flag: \"--from\", description: \"Start date boundary for research commands.\" },\n { flag: \"--to\", description: \"End date boundary for research commands.\" },\n { flag: \"--source-selection\", description: \"Research source-family selector: auto, web, community, social, shopping, or all. This selects families only and is not a reliability guarantee.\" },\n { flag: \"--sources\", description: \"Explicit source-family selectors such as web,community. Use shopping only when commercial intent is explicit.\" },\n { flag: \"--include-engagement\", description: \"Include engagement metrics in research output.\" },\n { flag: \"--limit-per-source\", description: \"Per-source result cap for research runs.\" },\n { flag: \"--query\", description: \"Shopping query input or inspiredesign harvest discovery query.\" },\n { flag: \"--providers\", description: \"Comma-separated provider ids for shopping or artifact commands.\" },\n { flag: \"--provider\", description: \"Repeatable provider id for inspiredesign harvest discovery.\" },\n { flag: \"--max-references\", description: \"Maximum inspiredesign harvest references to keep after explicit URL and query discovery merge.\" },\n { flag: \"--visual-evidence\", description: \"Inspiredesign visual evidence mode: off, auto, or required. Harvest defaults to required.\" },\n { flag: \"--budget\", description: \"Budget filter for shopping workflows.\" },\n { flag: \"--region\", description: \"Region or country hint for provider selection. Treat it as advisory unless output metadata reports `region_authoritative=true`.\" },\n { flag: \"--sort\", description: \"Sort mode for shopping results.\" },\n { flag: \"--brief\", description: \"Inspiredesign brief describing the target design direction.\" },\n { flag: \"--capture-mode\", description: \"Inspiredesign capture mode: off or deep. Run URLs force deep capture; harvest non-Pinterest URLs force deep capture; Pinterest harvest disables deep diagnostics and relies on extension preloading plus manifest-backed canonical pin-media evidence.\" },\n { flag: \"--include-prototype-guidance\", description: \"Include inspiredesign prototype guidance in workflow output.\" },\n { flag: \"--product-url\", description: \"Target product URL for product-video workflows.\" },\n { flag: \"--product-name\", description: \"Product name override for product-video workflows.\" },\n { flag: \"--provider-hint\", description: \"Provider hint override for product workflows.\" },\n { flag: \"--include-screenshots\", description: \"Include screenshots in product presentation output, or prefer screenshots when fetching stored annotations.\" },\n { flag: \"--include-all-images\", description: \"Include all discovered product images.\" },\n { flag: \"--include-copy\", description: \"Include product marketing copy metadata.\" },\n { flag: \"--use-cookies\", description: \"Enable or disable provider cookie injection for workflow runs and macro-resolve execute; a bare flag means true.\", example: \"opendevbrowser macro-resolve --expression '@media.search(\\\"browser automation x\\\", \\\"x\\\", 5)' --execute --browser-mode extension --use-cookies\" },\n { flag: \"--browser-mode\", description: \"Provider browser transport mode: auto, extension, or managed. extension reuses relay-backed browser state; managed runs a deterministic managed browser.\", example: \"opendevbrowser research run --topic 'browser automation on X' --source-selection social --browser-mode extension --use-cookies --challenge-automation-mode browser_with_helper\" },\n { flag: \"--challenge-automation-mode\", description: \"Per-run challenge automation mode for workflow runs and macro-resolve execute: off, browser, or browser_with_helper. Precedence is run > session > config, and the helper remains browser-scoped only.\", example: \"opendevbrowser macro-resolve --expression '@community.search(\\\"openai\\\")' --execute --challenge-automation-mode browser_with_helper\" },\n { flag: \"--cookie-policy-override\", description: \"Per-run workflow and macro-resolve execute cookie policy override: off, auto, or required.\", example: \"opendevbrowser macro-resolve --expression '@community.search(\\\"browser automation failures\\\", 4)' --execute --browser-mode extension --use-cookies --cookie-policy required\" },\n { flag: \"--cookie-policy\", description: \"Alias of --cookie-policy-override.\" },\n { flag: \"--output-dir\", description: \"Directory where generated artifacts are written, including screencast replay output.\" },\n { flag: \"--ttl-hours\", description: \"Artifact cache time-to-live in hours.\" },\n { flag: \"--expired-only\", description: \"List only expired artifacts in artifacts commands.\" }\n ]\n }\n];\n\nexport const HELP_TOOL_ENTRIES = TOOL_SURFACE_ENTRIES;\n\nexport const HELP_CAPABILITY_ENTRIES: readonly FormattableRow[] = [\n {\n label: \"screencast / browser replay\",\n description: \"Use the public browser replay lane when you need temporal browser evidence before or after a fragile flow.\",\n details: [\n { label: \"cli:\", value: \"screencast-start, screencast-stop\" },\n { label: \"example:\", value: \"npx opendevbrowser screencast-start --session-id <id> --output-dir ./artifacts/replay\" }\n ]\n },\n {\n label: \"desktop observation\",\n description: \"Use the public read-only desktop observation plane for sibling desktop evidence on macOS; availability, window inventory, and accessibility probes use the local swift command, while screenshots use macOS screencapture outside extension relay.\",\n details: [\n {\n label: \"cli:\",\n value: \"desktop-status, desktop-windows, desktop-active-window, desktop-capture-desktop, desktop-capture-window, desktop-accessibility-snapshot\"\n },\n { label: \"example:\", value: \"npx opendevbrowser desktop-status --output-format json\" }\n ]\n },\n {\n label: \"computer use / browser-scoped computer use\",\n description: \"Control the bounded browser-scoped computer-use challenge lane with --challenge-automation-mode; the optional helper is not a desktop agent.\",\n details: [\n { label: \"flag:\", value: \"--challenge-automation-mode off|browser|browser_with_helper\" },\n { label: \"works:\", value: \"research run, shopping run, product-video run, inspiredesign run, inspiredesign harvest, macro-resolve --execute\" },\n { label: \"entry:\", value: onboardingMetadata.quickStartCommands.computerUseEntry },\n { label: \"proof:\", value: \"review, session-inspector, workflow fallback metadata\" }\n ]\n }\n];\n\nexport const HELP_ONBOARDING_ENTRIES: readonly FormattableRow[] = [\n {\n label: \"prompting_guide\",\n description: \"Load local best-practice guidance before low-level browser commands.\",\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.promptingGuide }]\n },\n {\n label: \"skill_load\",\n description: `Load ${onboardingMetadata.skillName} ${onboardingMetadata.skillTopic} directly when you want the canonical quick-start section.`,\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.skillLoad }]\n },\n {\n label: \"validated_lanes\",\n description: `Load ${onboardingMetadata.skillName} ${onboardingMetadata.validatedSkillTopic} when you need the current proven transcript, evidence-gated research, and shopping runbook.`,\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.validatedLanes }]\n },\n {\n label: \"skill_list\",\n description: \"Inspect bundled and discovered skill packs when you need a different local lane.\",\n details: [{ label: \"tool:\", value: onboardingMetadata.quickStartCommands.skillList }]\n },\n {\n label: \"research_evidence_gated\",\n description: \"Load opendevbrowser-research first, run explicit source-family research, and inspect artifacts before final claims.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.validatedResearch }]\n },\n {\n label: \"shopping_reliable\",\n description: \"Start deal hunting with explicit providers in managed mode and only trust regional comparisons when the result reports `region_authoritative=true`.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.validatedShopping }]\n },\n {\n label: \"inspiredesign_followthrough\",\n description: \"After inspiredesign finishes, inspect nextStepGuidance.readiness, ranked references, and screenshot, screencast, or pin-media readiness evidence before Canvas.\",\n details: [\n { label: \"quick:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadBestPractices },\n { label: \"design:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadDesignAgent },\n { label: \"motion:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.loadMotionDesign },\n { label: \"brief:\", value: INSPIREDESIGN_HANDOFF_GUIDANCE.reviewAdvancedBrief },\n { label: \"gate:\", value: \"Require nextStepGuidance.readiness=ready, non-empty ranked references, no matching doNotProceedIf blockers, and Pinterest snapshot_ready, motion_ready, or pin_media_ready manifest-backed evidence before Canvas continuation.\" },\n { label: \"media:\", value: \"Treat media-analysis.json as design facts only; it never grants readiness authority and raw media-analysis fields must not enter canvas-plan.request.json.\" },\n { label: \"prep:\", value: INSPIREDESIGN_HANDOFF_GUIDANCE.prepareCanvasPlanRequest },\n { label: \"run:\", value: INSPIREDESIGN_HANDOFF_COMMANDS.continueInCanvas }\n ]\n },\n {\n label: \"computer_use_entry\",\n description: \"Enter browser-scoped computer use from a workflow run, not from a separate desktop command family.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.computerUseEntry }]\n },\n {\n label: \"happy_path\",\n description: \"After guidance, verify a minimal managed happy path before widening into multi-step automation.\",\n details: [{ label: \"cli:\", value: onboardingMetadata.quickStartCommands.happyPath }]\n },\n {\n label: \"surface_split\",\n description: \"Use the existing public-surface split when a workflow or helper only exists on one side of the CLI or tool surface.\",\n details: [\n { label: \"cli-only:\", value: getCliOnlyCommands().join(\", \") },\n { label: \"tool-only:\", value: getToolOnlyHelperNames().join(\", \") }\n ]\n },\n {\n label: \"docs\",\n description: \"Use the first-run checklist and canonical skill runbook for proof and deeper operating details.\",\n details: [{\n label: \"paths:\",\n value: `${onboardingMetadata.referencePaths.onboardingDoc}, ${onboardingMetadata.referencePaths.skillDoc}`\n }]\n }\n];\n\nexport const HELP_REFERENCE_ENTRIES: readonly ReferenceEntry[] = [\n { label: \"src/cli/onboarding-metadata.json\", description: \"Canonical first-contact onboarding metadata shared by help, nudges, and proof lanes.\" },\n { label: \"src/providers/workflow-handoff.ts\", description: \"Central next-step advisory builders for workflow follow-through.\" },\n { label: \"src/inspiredesign/handoff.ts\", description: \"Shared inspiredesign follow-through commands, artifact names, and Canvas continuation guidance.\" },\n { label: \"src/public-surface/source.ts\", description: \"Authoritative command, usage, flag, and tool surface metadata.\" },\n { label: \"src/public-surface/generated-manifest.ts\", description: \"Checked-in generated public-surface snapshot consumed by help and parity tests.\" },\n { label: \"src/public-surface/generated-manifest.json\", description: \"Checked-in generated public-surface snapshot consumed by inventory scripts.\" },\n { label: \"src/cli/args.ts\", description: \"CLI argument parsing backed by the public-surface source.\" },\n { label: \"src/cli/help.ts\", description: \"Human-facing CLI formatting layered on the public-surface source, including the first-contact Find It Fast lookup block.\" },\n { label: \"src/tools/index.ts\", description: \"Code-level tool registry.\" },\n { label: \"docs/CLI.md\", description: \"Detailed CLI guide and release-gate runbooks.\" },\n { label: onboardingMetadata.referencePaths.onboardingDoc, description: \"First-run checklist for help-led onboarding and happy-path proof.\" },\n { label: onboardingMetadata.referencePaths.skillDoc, description: \"Canonical bundled best-practices runbook and quick-start guidance.\" },\n { label: \"docs/WORKFLOW_SURFACE_MAP.md\", description: \"Code-derived workflow and validation inventory, including CLI-only and tool-only surface splits.\" },\n { label: \"docs/SURFACE_REFERENCE.md\", description: \"Canonical CLI, tool, and relay channel inventory.\" },\n { label: \"opendevbrowser --help\", description: \"Primary full help invocation for quick discovery.\" },\n { label: \"opendevbrowser help\", description: \"Alias that prints the same full help inventory.\" }\n];\n\nfunction formatRows(rows: readonly FormattableRow[]): string {\n return rows\n .map((row) => {\n const lines = [` ${row.label.padEnd(LABEL_WIDTH)} ${row.description}`];\n for (const detail of row.details ?? []) {\n lines.push(` ${detail.label.padEnd(DETAIL_LABEL_WIDTH)} ${detail.value}`);\n }\n return lines.join(\"\\n\");\n })\n .join(\"\\n\");\n}\n\nfunction assertCommandCoverage(): void {\n const seen = new Set<string>();\n\n for (const group of HELP_COMMAND_GROUPS) {\n for (const command of group.commands) {\n const detail = COMMAND_HELP_DETAILS[command];\n if (!COMMAND_SET.has(command)) {\n throw new Error(`Help references unknown CLI command: ${command}`);\n }\n if (seen.has(command)) {\n throw new Error(`Help command appears multiple times: ${command}`);\n }\n if (!detail || !detail.description.trim() || !detail.usage.trim()) {\n throw new Error(`Missing command help metadata: ${command}`);\n }\n if (detail.examples.length === 0) {\n throw new Error(`Missing command example metadata: ${command}`);\n }\n for (const flag of detail.flags) {\n if (!FLAG_SET.has(flag)) {\n throw new Error(`Command help metadata references unknown flag ${flag} for ${command}`);\n }\n }\n seen.add(command);\n }\n }\n\n if (seen.size !== CLI_COMMANDS.length) {\n const missing = CLI_COMMANDS.filter((command) => !seen.has(command));\n throw new Error(`Help command coverage mismatch; missing: ${missing.join(\", \")}`);\n }\n}\n\nfunction assertFlagCoverage(): void {\n const seen = new Set<string>();\n\n for (const group of HELP_FLAG_GROUPS) {\n for (const entry of group.flags) {\n if (!FLAG_SET.has(entry.flag)) {\n throw new Error(`Help references unknown CLI flag: ${entry.flag}`);\n }\n if (seen.has(entry.flag)) {\n throw new Error(`Help flag appears multiple times: ${entry.flag}`);\n }\n seen.add(entry.flag);\n }\n }\n\n if (seen.size !== VALID_FLAGS.length) {\n const missing = VALID_FLAGS.filter((flag) => !seen.has(flag));\n throw new Error(`Help flag coverage mismatch; missing: ${missing.join(\", \")}`);\n }\n}\n\nfunction assertToolCoverage(): void {\n const seen = new Set<string>();\n\n for (const entry of HELP_TOOL_ENTRIES) {\n if (!entry.name.startsWith(\"opendevbrowser_\")) {\n throw new Error(`Invalid tool name in help inventory: ${entry.name}`);\n }\n if (!entry.description.trim()) {\n throw new Error(`Help tool is missing a description: ${entry.name}`);\n }\n if (!entry.example?.trim()) {\n throw new Error(`Help tool is missing an example: ${entry.name}`);\n }\n if (seen.has(entry.name)) {\n throw new Error(`Help tool appears multiple times: ${entry.name}`);\n }\n if (entry.cliEquivalent && !COMMAND_SET.has(entry.cliEquivalent)) {\n throw new Error(`Tool metadata references unknown CLI command: ${entry.cliEquivalent}`);\n }\n seen.add(entry.name);\n }\n\n if (HELP_TOOL_ENTRIES.length !== TOOL_COUNT) {\n throw new Error(`Help tool inventory must list ${TOOL_COUNT} tools; got ${HELP_TOOL_ENTRIES.length}`);\n }\n}\n\nfunction formatCommandGroups(): string {\n return HELP_COMMAND_GROUPS\n .map((group) => {\n const rows: FormattableRow[] = group.commands.map((command) => {\n const detail = COMMAND_HELP_DETAILS[command];\n return {\n label: command,\n description: detail.description,\n details: [\n { label: \"usage:\", value: detail.usage },\n { label: \"flags:\", value: formatFlags(detail.flags) },\n ...detail.examples.map((example) => ({ label: \"example:\", value: example })),\n ...detail.notes.map((note) => ({ label: \"note:\", value: note }))\n ]\n };\n });\n return `${group.title}: ${group.summary}\\n${formatRows(rows)}`;\n })\n .join(\"\\n\\n\");\n}\n\nfunction formatFlagGroups(): string {\n return HELP_FLAG_GROUPS\n .map((group) => {\n const rows: FormattableRow[] = group.flags.map((entry) => ({\n label: entry.alias ? `${entry.flag} (${entry.alias})` : entry.flag,\n description: entry.description,\n details: entry.example ? [{ label: \"example:\", value: entry.example }] : []\n }));\n return `${group.title}: ${group.summary}\\n${formatRows(rows)}`;\n })\n .join(\"\\n\\n\");\n}\n\nfunction formatToolEntries(): string {\n return formatRows(HELP_TOOL_ENTRIES.map((entry) => ({\n label: entry.name,\n description: entry.description,\n details: [\n ...(entry.cliEquivalent\n ? [{ label: \"cli:\", value: entry.cliEquivalent }]\n : [{ label: \"scope:\", value: \"tool-only\" }]),\n ...(entry.example ? [{ label: \"example:\", value: entry.example }] : []),\n ...((entry.notes ?? []).map((note) => ({ label: \"note:\", value: note })))\n ]\n })));\n}\n\nfunction formatOnboardingEntries(): string {\n return formatRows(HELP_ONBOARDING_ENTRIES);\n}\n\nfunction formatCapabilityEntries(): string {\n return formatRows(HELP_CAPABILITY_ENTRIES);\n}\n\nfunction formatReferenceEntries(): string {\n return formatRows(HELP_REFERENCE_ENTRIES.map((entry) => ({\n label: entry.label,\n description: entry.description\n })));\n}\n\nexport function getHelpText(): string {\n assertCommandCoverage();\n assertFlagCoverage();\n assertToolCoverage();\n\n return [\n \"OpenDevBrowser CLI\",\n \"\",\n \"Usage:\",\n \" npx opendevbrowser <command> [options]\",\n \"\",\n \"Find It Fast:\",\n \" Use these exact lookup terms when you need replay, desktop evidence, or browser-scoped computer use.\",\n formatCapabilityEntries(),\n \"\",\n `${onboardingMetadata.sectionTitle}:`,\n ` ${onboardingMetadata.sectionSummary}`,\n formatOnboardingEntries(),\n \"\",\n `Command Inventory (all ${CLI_COMMANDS.length} commands):`,\n formatCommandGroups(),\n \"\",\n \"Flag Inventory (all supported flags):\",\n formatFlagGroups(),\n \"\",\n `Tool Inventory (all ${TOOL_COUNT} opendevbrowser_* tools):`,\n formatToolEntries(),\n \"\",\n \"Reference Pointers:\",\n formatReferenceEntries()\n ].join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
@@ -1,25 +1,25 @@
1
1
  import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseOptionalStringFlag
4
- } from "./chunk-SKFB5ICF.js";
4
+ } from "./chunk-TI5I6UWY.js";
5
5
  import {
6
6
  callDaemon
7
- } from "./chunk-MJF67OTH.js";
8
- import "./chunk-HMRANSDX.js";
9
- import "./chunk-EOX6U6Q4.js";
7
+ } from "./chunk-XSSPNVMS.js";
8
+ import "./chunk-Z3ADLR7I.js";
9
+ import "./chunk-AHQC4A6P.js";
10
10
  import "./chunk-MX3NFLCE.js";
11
11
  import "./chunk-ASMHEEKY.js";
12
+ import "./chunk-QMHKAFYX.js";
12
13
  import {
13
14
  createUsageError
14
15
  } from "./chunk-7BNU6DFI.js";
15
- import "./chunk-QMHKAFYX.js";
16
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-FBKPDILE.js";
20
+ import "./chunk-WTWSBEBW.js";
21
21
  import "./chunk-S5KZQJJI.js";
22
- import "./chunk-IBIHDGTZ.js";
22
+ import "./chunk-B5XIJQXO.js";
23
23
  import "./chunk-3WLCWHIV.js";
24
24
  import "./chunk-FUSXMW3G.js";
25
25
 
@@ -68,4 +68,4 @@ async function runHover(args) {
68
68
  export {
69
69
  runHover
70
70
  };
71
- //# sourceMappingURL=hover-476ZNQZE.js.map
71
+ //# sourceMappingURL=hover-ZWY4YOM4.js.map
@@ -2,25 +2,25 @@ import "./chunk-RJNI3BHT.js";
2
2
  import {
3
3
  parseNumberFlag,
4
4
  parseOptionalStringFlag
5
- } from "./chunk-SKFB5ICF.js";
5
+ } from "./chunk-TI5I6UWY.js";
6
6
  import {
7
7
  callDaemon
8
- } from "./chunk-MJF67OTH.js";
9
- import "./chunk-HMRANSDX.js";
10
- import "./chunk-EOX6U6Q4.js";
8
+ } from "./chunk-XSSPNVMS.js";
9
+ import "./chunk-Z3ADLR7I.js";
10
+ import "./chunk-AHQC4A6P.js";
11
11
  import "./chunk-MX3NFLCE.js";
12
12
  import "./chunk-ASMHEEKY.js";
13
+ import "./chunk-QMHKAFYX.js";
13
14
  import {
14
15
  createUsageError
15
16
  } from "./chunk-7BNU6DFI.js";
16
- import "./chunk-QMHKAFYX.js";
17
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-FBKPDILE.js";
21
+ import "./chunk-WTWSBEBW.js";
22
22
  import "./chunk-S5KZQJJI.js";
23
- import "./chunk-IBIHDGTZ.js";
23
+ import "./chunk-B5XIJQXO.js";
24
24
  import "./chunk-3WLCWHIV.js";
25
25
  import "./chunk-FUSXMW3G.js";
26
26
 
@@ -81,4 +81,4 @@ async function runDomHtml(args) {
81
81
  export {
82
82
  runDomHtml
83
83
  };
84
- //# sourceMappingURL=html-5C4TXOV3.js.map
84
+ //# sourceMappingURL=html-M46YBFT3.js.map
package/dist/index.js CHANGED
@@ -6,11 +6,14 @@ import {
6
6
  } from "./chunk-OW5HMYMI.js";
7
7
  import {
8
8
  DaemonClient
9
- } from "./chunk-MJF67OTH.js";
9
+ } from "./chunk-XSSPNVMS.js";
10
10
  import {
11
11
  DEFAULT_DAEMON_STATUS_FETCH_OPTIONS,
12
12
  buildCorrelatedAuditBundle,
13
13
  buildDaemonFingerprintMismatchMessage,
14
+ captureInspiredesignPrimaryMotionEvidenceFromManager,
15
+ captureInspiredesignPrimaryPinMediaEvidenceFromManager,
16
+ captureInspiredesignPrimaryVisualEvidenceFromManager,
14
17
  captureInspiredesignReferenceFromManager,
15
18
  createDaemonStopHeaders,
16
19
  executeMacroWithRuntime,
@@ -21,7 +24,7 @@ import {
21
24
  isCurrentDaemonFingerprint,
22
25
  readDaemonMetadata,
23
26
  startDaemon
24
- } from "./chunk-HMRANSDX.js";
27
+ } from "./chunk-Z3ADLR7I.js";
25
28
  import {
26
29
  AGENT_INBOX_SYSTEM_MARKER,
27
30
  ScriptRunner,
@@ -33,7 +36,7 @@ import {
33
36
  createOpenDevBrowserCore,
34
37
  resolveBundledProviderRuntime,
35
38
  resolveSessionRelayRoute
36
- } from "./chunk-EOX6U6Q4.js";
39
+ } from "./chunk-AHQC4A6P.js";
37
40
  import {
38
41
  requireChallengeOrchestrationConfig
39
42
  } from "./chunk-MX3NFLCE.js";
@@ -41,9 +44,9 @@ import "./chunk-ASMHEEKY.js";
41
44
  import {
42
45
  onboarding_metadata_default
43
46
  } from "./chunk-DW4TX7MU.js";
44
- import "./chunk-27W46IKI.js";
45
- import "./chunk-7BNU6DFI.js";
46
47
  import "./chunk-QMHKAFYX.js";
48
+ import "./chunk-HM4CO3EW.js";
49
+ import "./chunk-7BNU6DFI.js";
47
50
  import "./chunk-BUVYTJZR.js";
48
51
  import "./chunk-TBUCZX4A.js";
49
52
  import "./chunk-Y2KL55OG.js";
@@ -53,11 +56,15 @@ import {
53
56
  import {
54
57
  CHALLENGE_AUTOMATION_MODES,
55
58
  buildMacroResolveSuccessHandoff,
56
- resolveInspiredesignCaptureMode,
57
- resolveWorkflowArtifactRoot
58
- } from "./chunk-FBKPDILE.js";
59
+ requiresProviderUrlSiteRecipeCompatibility,
60
+ resolveInspiredesignHarvestCaptureMode,
61
+ resolveInspiredesignUserFacingProductReadinessFields,
62
+ resolveWorkflowArtifactRoot,
63
+ validateProviderScopedUrlCanonicality,
64
+ validateProviderUrlSiteRecipeCompatibility
65
+ } from "./chunk-WTWSBEBW.js";
59
66
  import "./chunk-S5KZQJJI.js";
60
- import "./chunk-IBIHDGTZ.js";
67
+ import "./chunk-B5XIJQXO.js";
61
68
  import {
62
69
  buildBlockerArtifacts,
63
70
  classifyBlockerSignal,
@@ -628,7 +635,7 @@ import { tool } from "@opencode-ai/plugin";
628
635
 
629
636
  // src/tools/response.ts
630
637
  function ok(data) {
631
- return JSON.stringify({ ok: true, ...data });
638
+ return JSON.stringify({ ...data, ok: true });
632
639
  }
633
640
  function failure(message, code, details) {
634
641
  return JSON.stringify({
@@ -3255,7 +3262,7 @@ function createResearchRunTool(deps) {
3255
3262
  async execute(args) {
3256
3263
  try {
3257
3264
  const runtime = await resolveProviderRuntime(deps);
3258
- const { runResearchWorkflow } = await import("./providers-KKNPJSQK.js");
3265
+ const { runResearchWorkflow } = await import("./providers-AERTX6X4.js");
3259
3266
  const result = await runResearchWorkflow(runtime, {
3260
3267
  topic: args.topic,
3261
3268
  days: args.days,
@@ -3309,7 +3316,7 @@ function createShoppingRunTool(deps) {
3309
3316
  async execute(args) {
3310
3317
  try {
3311
3318
  const runtime = await resolveProviderRuntime(deps);
3312
- const { runShoppingWorkflow } = await import("./providers-KKNPJSQK.js");
3319
+ const { runShoppingWorkflow } = await import("./providers-AERTX6X4.js");
3313
3320
  const result = await runShoppingWorkflow(runtime, {
3314
3321
  query: args.query,
3315
3322
  providers: args.providers,
@@ -3333,6 +3340,9 @@ function createShoppingRunTool(deps) {
3333
3340
  }
3334
3341
 
3335
3342
  // src/tools/product_video_run.ts
3343
+ import { mkdtemp, readFile, rm } from "fs/promises";
3344
+ import { tmpdir } from "os";
3345
+ import { join as join2 } from "path";
3336
3346
  import { tool as tool66 } from "@opencode-ai/plugin";
3337
3347
  var z65 = tool66.schema;
3338
3348
  var browserModeSchema4 = z65.enum(["auto", "extension", "managed"]);
@@ -3340,13 +3350,19 @@ var cookiePolicySchema4 = z65.enum(["off", "auto", "required"]);
3340
3350
  var challengeAutomationModeSchema7 = z65.enum(CHALLENGE_AUTOMATION_MODES);
3341
3351
  async function captureScreenshotBuffer(deps, url) {
3342
3352
  let sessionId = null;
3353
+ let captureDir = null;
3343
3354
  try {
3344
3355
  const launched = await deps.manager.launch({
3345
3356
  headless: true,
3346
3357
  startUrl: url
3347
3358
  });
3348
3359
  sessionId = launched.sessionId;
3349
- const screenshot = await deps.manager.screenshot(sessionId);
3360
+ captureDir = await mkdtemp(join2(tmpdir(), "odb-product-video-shot-"));
3361
+ const capturePath = join2(captureDir, "capture.png");
3362
+ const screenshot = await deps.manager.screenshot(sessionId, { path: capturePath });
3363
+ if (typeof screenshot.path === "string" && screenshot.path.length > 0) {
3364
+ return await readFile(screenshot.path);
3365
+ }
3350
3366
  if (typeof screenshot.base64 === "string" && screenshot.base64.length > 0) {
3351
3367
  return Buffer.from(screenshot.base64, "base64");
3352
3368
  }
@@ -3358,6 +3374,10 @@ async function captureScreenshotBuffer(deps, url) {
3358
3374
  await deps.manager.disconnect(sessionId, true).catch(() => {
3359
3375
  });
3360
3376
  }
3377
+ if (captureDir) {
3378
+ await rm(captureDir, { recursive: true, force: true }).catch(() => {
3379
+ });
3380
+ }
3361
3381
  }
3362
3382
  }
3363
3383
  function createProductVideoRunTool(deps) {
@@ -3381,7 +3401,7 @@ function createProductVideoRunTool(deps) {
3381
3401
  async execute(args) {
3382
3402
  try {
3383
3403
  const runtime = await resolveProviderRuntime(deps);
3384
- const { runProductVideoWorkflow } = await import("./providers-KKNPJSQK.js");
3404
+ const { runProductVideoWorkflow } = await import("./providers-AERTX6X4.js");
3385
3405
  const includeScreenshots = args.include_screenshots ?? true;
3386
3406
  const result = await runProductVideoWorkflow(runtime, {
3387
3407
  product_url: args.product_url,
@@ -3421,7 +3441,7 @@ var HARVEST_DEFAULT_MAX_REFERENCES = 5;
3421
3441
  var MAX_HARVEST_REFERENCES = 10;
3422
3442
  function createInspiredesignRunTool(deps) {
3423
3443
  return tool67({
3424
- description: "Run the inspiredesign workflow directly, including harvest query discovery and visual evidence capture.",
3444
+ description: "Run the inspiredesign workflow directly, including harvest query discovery and authoritative visual, motion, or pin-media evidence capture.",
3425
3445
  args: {
3426
3446
  brief: z66.string().min(1).describe("Inspiredesign brief"),
3427
3447
  harvest: z66.boolean().optional().describe("Enable visual harvest defaults for query-backed discovery"),
@@ -3430,7 +3450,7 @@ function createInspiredesignRunTool(deps) {
3430
3450
  maxReferences: z66.number().int().min(1).max(MAX_HARVEST_REFERENCES).optional().describe("Maximum references to analyze"),
3431
3451
  visualEvidence: visualEvidenceSchema.optional().describe("Visual evidence mode: off|auto|required"),
3432
3452
  urls: z66.array(z66.string()).optional().describe("Inspiration URLs to analyze"),
3433
- captureMode: captureModeSchema.optional().describe("Capture mode: off|deep. Any URLs force deep."),
3453
+ captureMode: captureModeSchema.optional().describe("Capture mode: off|deep. Pinterest harvest disables deep diagnostics and uses canonical pin media evidence."),
3434
3454
  includePrototypeGuidance: z66.boolean().optional().describe("Include prototype guidance output"),
3435
3455
  mode: modeSchema3.optional().describe("compact|json|md|context|path"),
3436
3456
  timeoutMs: z66.number().int().positive().optional().describe("Workflow timeout in milliseconds"),
@@ -3444,16 +3464,40 @@ function createInspiredesignRunTool(deps) {
3444
3464
  async execute(args) {
3445
3465
  try {
3446
3466
  const runtime = await resolveProviderRuntime(deps);
3447
- const { runInspiredesignWorkflow } = await import("./providers-KKNPJSQK.js");
3448
- const captureMode = resolveInspiredesignCaptureMode(args.captureMode, args.urls);
3467
+ const { runInspiredesignWorkflow } = await import("./providers-AERTX6X4.js");
3449
3468
  if (args.query && args.harvest !== true) {
3450
3469
  throw new Error("query is only supported when harvest is true.");
3451
3470
  }
3452
- if (args.providers && args.providers.length > 0 && !args.query) {
3453
- throw new Error("providers require query.");
3471
+ const isHarvest = args.harvest === true;
3472
+ const providers = args.providers ?? [];
3473
+ const urls = args.urls ?? [];
3474
+ const captureMode = resolveInspiredesignHarvestCaptureMode({
3475
+ requested: args.captureMode,
3476
+ urls,
3477
+ harvest: isHarvest,
3478
+ providers
3479
+ });
3480
+ const canonicality = validateProviderScopedUrlCanonicality({ providers, urls });
3481
+ if (!canonicality.ok) {
3482
+ throw new Error(canonicality.message);
3483
+ }
3484
+ if (requiresProviderUrlSiteRecipeCompatibility({
3485
+ providers,
3486
+ urls,
3487
+ query: args.query
3488
+ })) {
3489
+ if (!isHarvest) {
3490
+ throw new Error("providers require query unless harvest uses compatible URL recovery.");
3491
+ }
3492
+ const compatibility = validateProviderUrlSiteRecipeCompatibility({
3493
+ providers,
3494
+ urls
3495
+ });
3496
+ if (!compatibility.ok) {
3497
+ throw new Error(compatibility.message);
3498
+ }
3454
3499
  }
3455
3500
  const cookieSource = deps.config.get().providers?.cookieSource;
3456
- const isHarvest = args.harvest === true;
3457
3501
  if (isHarvest && !args.query && (!args.urls || args.urls.length === 0)) {
3458
3502
  throw new Error("inspiredesign harvest requires query or URLs.");
3459
3503
  }
@@ -3480,9 +3524,25 @@ function createInspiredesignRunTool(deps) {
3480
3524
  captureReference: shouldProvideCaptureReference ? async (url, options) => captureInspiredesignReferenceFromManager(deps.manager, url, {
3481
3525
  ...options,
3482
3526
  cookieSource
3483
- }) : void 0
3527
+ }) : void 0,
3528
+ captureVisualEvidence: async (url, options) => captureInspiredesignPrimaryVisualEvidenceFromManager(deps.manager, url, {
3529
+ ...options,
3530
+ cookieSource
3531
+ }),
3532
+ captureMotionEvidence: async (url, options) => captureInspiredesignPrimaryMotionEvidenceFromManager(deps.manager, url, {
3533
+ ...options,
3534
+ cookieSource
3535
+ }),
3536
+ capturePinMediaEvidence: async (url, options) => captureInspiredesignPrimaryPinMediaEvidenceFromManager(deps.manager, url, {
3537
+ ...options,
3538
+ cookieSource
3539
+ })
3540
+ });
3541
+ const productReadiness = resolveInspiredesignUserFacingProductReadinessFields(result);
3542
+ return ok({
3543
+ ...result,
3544
+ ...productReadiness
3484
3545
  });
3485
- return ok(result);
3486
3546
  } catch (error) {
3487
3547
  return failure(serializeError(error).message, "inspiredesign_run_failed");
3488
3548
  }