opendevbrowser 0.0.28 → 0.0.29

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 (313) hide show
  1. package/README.md +2 -2
  2. package/dist/accessibility-snapshot-PA6NWNS7.js +39 -0
  3. package/dist/accessibility-snapshot-PA6NWNS7.js.map +1 -0
  4. package/dist/active-window-YNYTIPZN.js +37 -0
  5. package/dist/active-window-YNYTIPZN.js.map +1 -0
  6. package/dist/annotate-STYHXZYJ.js +205 -0
  7. package/dist/annotate-STYHXZYJ.js.map +1 -0
  8. package/dist/artifacts-KJ6RNDO2.js +120 -0
  9. package/dist/artifacts-KJ6RNDO2.js.map +1 -0
  10. package/dist/attr-GHFZZ4SA.js +84 -0
  11. package/dist/attr-GHFZZ4SA.js.map +1 -0
  12. package/dist/browser/ops-client.d.ts +1 -0
  13. package/dist/browser/ops-client.d.ts.map +1 -1
  14. package/dist/canvas-54FBOEGP.js +309 -0
  15. package/dist/canvas-54FBOEGP.js.map +1 -0
  16. package/dist/capture-desktop-SNABC24E.js +38 -0
  17. package/dist/capture-desktop-SNABC24E.js.map +1 -0
  18. package/dist/capture-window-UJSB5AMP.js +40 -0
  19. package/dist/capture-window-UJSB5AMP.js.map +1 -0
  20. package/dist/check-ST5UQ2F5.js +71 -0
  21. package/dist/check-ST5UQ2F5.js.map +1 -0
  22. package/dist/checked-IEMWI5CU.js +71 -0
  23. package/dist/checked-IEMWI5CU.js.map +1 -0
  24. package/dist/chunk-2CG4SW3E.js +64 -0
  25. package/dist/chunk-2CG4SW3E.js.map +1 -0
  26. package/dist/chunk-2SIMIPLY.js +67 -0
  27. package/dist/chunk-2SIMIPLY.js.map +1 -0
  28. package/dist/chunk-37VSRUW4.js +141 -0
  29. package/dist/chunk-37VSRUW4.js.map +1 -0
  30. package/dist/chunk-5SWZDVOW.js +144 -0
  31. package/dist/chunk-5SWZDVOW.js.map +1 -0
  32. package/dist/chunk-6PVZ2ABC.js +429 -0
  33. package/dist/chunk-6PVZ2ABC.js.map +1 -0
  34. package/dist/chunk-7GVOUZMQ.js +64 -0
  35. package/dist/chunk-7GVOUZMQ.js.map +1 -0
  36. package/dist/chunk-7THCPS52.js +84 -0
  37. package/dist/chunk-7THCPS52.js.map +1 -0
  38. package/dist/chunk-ASMHEEKY.js +10 -0
  39. package/dist/chunk-ASMHEEKY.js.map +1 -0
  40. package/dist/chunk-DBF5OKH3.js +111 -0
  41. package/dist/chunk-DBF5OKH3.js.map +1 -0
  42. package/dist/chunk-DW4TX7MU.js +54 -0
  43. package/dist/chunk-DW4TX7MU.js.map +1 -0
  44. package/dist/chunk-IPE7TF2P.js +54 -0
  45. package/dist/chunk-IPE7TF2P.js.map +1 -0
  46. package/dist/chunk-IQTJHXZJ.js +126 -0
  47. package/dist/chunk-IQTJHXZJ.js.map +1 -0
  48. package/dist/chunk-J47N77VG.js +2969 -0
  49. package/dist/chunk-J47N77VG.js.map +1 -0
  50. package/dist/chunk-JZXD6FWR.js +25 -0
  51. package/dist/chunk-JZXD6FWR.js.map +1 -0
  52. package/dist/{chunk-QVWOPIZJ.js → chunk-KDSNXS6N.js} +75 -149
  53. package/dist/chunk-KDSNXS6N.js.map +1 -0
  54. package/dist/chunk-KZ2IXVQT.js +219 -0
  55. package/dist/chunk-KZ2IXVQT.js.map +1 -0
  56. package/dist/chunk-LBPELU7L.js +3649 -0
  57. package/dist/chunk-LBPELU7L.js.map +1 -0
  58. package/dist/chunk-MX3NFLCE.js +940 -0
  59. package/dist/chunk-MX3NFLCE.js.map +1 -0
  60. package/dist/chunk-N44UXKIB.js +26 -0
  61. package/dist/chunk-N44UXKIB.js.map +1 -0
  62. package/dist/chunk-OW5HMYMI.js +19 -0
  63. package/dist/chunk-OW5HMYMI.js.map +1 -0
  64. package/dist/chunk-OYNLAZQU.js +838 -0
  65. package/dist/chunk-OYNLAZQU.js.map +1 -0
  66. package/dist/chunk-PDPJN2OP.js +17 -0
  67. package/dist/chunk-PDPJN2OP.js.map +1 -0
  68. package/dist/chunk-RCZZGGJS.js +226 -0
  69. package/dist/chunk-RCZZGGJS.js.map +1 -0
  70. package/dist/chunk-RJNI3BHT.js +1 -0
  71. package/dist/chunk-RPXWUCQQ.js +112 -0
  72. package/dist/chunk-RPXWUCQQ.js.map +1 -0
  73. package/dist/chunk-S5KZQJJI.js +107 -0
  74. package/dist/chunk-S5KZQJJI.js.map +1 -0
  75. package/dist/{chunk-T3VVHJTK.js → chunk-S6S2UP6U.js} +1074 -1459
  76. package/dist/chunk-S6S2UP6U.js.map +1 -0
  77. package/dist/{chunk-I5ZCOZZV.js → chunk-SXAGSEKZ.js} +1202 -9561
  78. package/dist/chunk-SXAGSEKZ.js.map +1 -0
  79. package/dist/chunk-T4GMCW6Z.js +46 -0
  80. package/dist/chunk-T4GMCW6Z.js.map +1 -0
  81. package/dist/chunk-WHQZBUNY.js +982 -0
  82. package/dist/chunk-WHQZBUNY.js.map +1 -0
  83. package/dist/chunk-WOXBLP7V.js +610 -0
  84. package/dist/chunk-WOXBLP7V.js.map +1 -0
  85. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  86. package/dist/cli/commands/macro-resolve.d.ts +4 -1
  87. package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
  88. package/dist/cli/commands/product-video.d.ts.map +1 -1
  89. package/dist/cli/commands/research.d.ts.map +1 -1
  90. package/dist/cli/commands/serve.d.ts.map +1 -1
  91. package/dist/cli/commands/shopping.d.ts.map +1 -1
  92. package/dist/cli/commands/workflow-output.d.ts +2 -0
  93. package/dist/cli/commands/workflow-output.d.ts.map +1 -0
  94. package/dist/cli/daemon-commands.d.ts.map +1 -1
  95. package/dist/cli/daemon.d.ts.map +1 -1
  96. package/dist/cli/index.js +204 -8123
  97. package/dist/cli/index.js.map +1 -1
  98. package/dist/cli/installers/postinstall-skill-sync.js +2 -1
  99. package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
  100. package/dist/cli/remote-relay.d.ts.map +1 -1
  101. package/dist/click-TENZA3Y6.js +81 -0
  102. package/dist/click-TENZA3Y6.js.map +1 -0
  103. package/dist/clone-component-STH5AR6M.js +82 -0
  104. package/dist/clone-component-STH5AR6M.js.map +1 -0
  105. package/dist/clone-page-BSTWAPAJ.js +69 -0
  106. package/dist/clone-page-BSTWAPAJ.js.map +1 -0
  107. package/dist/close-CEMMAAM7.js +63 -0
  108. package/dist/close-CEMMAAM7.js.map +1 -0
  109. package/dist/close-QCWUNRAI.js +63 -0
  110. package/dist/close-QCWUNRAI.js.map +1 -0
  111. package/dist/connect-J3RVSEZF.js +107 -0
  112. package/dist/connect-J3RVSEZF.js.map +1 -0
  113. package/dist/console-poll-HL7BVIVX.js +76 -0
  114. package/dist/console-poll-HL7BVIVX.js.map +1 -0
  115. package/dist/cookie-import-WMUCIIHN.js +177 -0
  116. package/dist/cookie-import-WMUCIIHN.js.map +1 -0
  117. package/dist/cookie-list-PB2N4RPH.js +117 -0
  118. package/dist/cookie-list-PB2N4RPH.js.map +1 -0
  119. package/dist/daemon-5KSVMGN4.js +194 -0
  120. package/dist/daemon-5KSVMGN4.js.map +1 -0
  121. package/dist/daemon-fingerprint.json +1 -1
  122. package/dist/debug-trace-snapshot-RK7KDXA5.js +136 -0
  123. package/dist/debug-trace-snapshot-RK7KDXA5.js.map +1 -0
  124. package/dist/dialog-P6P4U7XE.js +75 -0
  125. package/dist/dialog-P6P4U7XE.js.map +1 -0
  126. package/dist/disconnect-32F7IDIP.js +58 -0
  127. package/dist/disconnect-32F7IDIP.js.map +1 -0
  128. package/dist/enabled-A6C6ZM2O.js +71 -0
  129. package/dist/enabled-A6C6ZM2O.js.map +1 -0
  130. package/dist/extension-extractor-GKWSFHPN.js +11 -0
  131. package/dist/extension-extractor-GKWSFHPN.js.map +1 -0
  132. package/dist/global-D6WLWBXA.js +56 -0
  133. package/dist/global-D6WLWBXA.js.map +1 -0
  134. package/dist/goto-ULTSABDM.js +98 -0
  135. package/dist/goto-ULTSABDM.js.map +1 -0
  136. package/dist/help-EKKKEDL5.js +491 -0
  137. package/dist/help-EKKKEDL5.js.map +1 -0
  138. package/dist/hover-UF2ZUMTQ.js +71 -0
  139. package/dist/hover-UF2ZUMTQ.js.map +1 -0
  140. package/dist/html-B6TX7GK7.js +84 -0
  141. package/dist/html-B6TX7GK7.js.map +1 -0
  142. package/dist/index.js +68 -34
  143. package/dist/index.js.map +1 -1
  144. package/dist/inspector-6S5FKUZQ.js +62 -0
  145. package/dist/inspector-6S5FKUZQ.js.map +1 -0
  146. package/dist/inspector-audit-ARGEGOS7.js +84 -0
  147. package/dist/inspector-audit-ARGEGOS7.js.map +1 -0
  148. package/dist/inspector-plan-CSG5HZOC.js +69 -0
  149. package/dist/inspector-plan-CSG5HZOC.js.map +1 -0
  150. package/dist/inspiredesign-7VRMMZN4.js +234 -0
  151. package/dist/inspiredesign-7VRMMZN4.js.map +1 -0
  152. package/dist/install-autostart-output-5DOMKCQL.js +41 -0
  153. package/dist/install-autostart-output-5DOMKCQL.js.map +1 -0
  154. package/dist/install-autostart-reconciliation-NHKOFYTD.js +73 -0
  155. package/dist/install-autostart-reconciliation-NHKOFYTD.js.map +1 -0
  156. package/dist/launch-REYCIR3Z.js +225 -0
  157. package/dist/launch-REYCIR3Z.js.map +1 -0
  158. package/dist/list-NPRXRQY2.js +51 -0
  159. package/dist/list-NPRXRQY2.js.map +1 -0
  160. package/dist/list-STYD2ZWA.js +54 -0
  161. package/dist/list-STYD2ZWA.js.map +1 -0
  162. package/dist/local-HXJLUUNT.js +54 -0
  163. package/dist/local-HXJLUUNT.js.map +1 -0
  164. package/dist/macro-resolve-ZIJZ65QI.js +253 -0
  165. package/dist/macro-resolve-ZIJZ65QI.js.map +1 -0
  166. package/dist/macros/execute-runtime.d.ts +3 -1
  167. package/dist/macros/execute-runtime.d.ts.map +1 -1
  168. package/dist/macros/execute.d.ts +2 -0
  169. package/dist/macros/execute.d.ts.map +1 -1
  170. package/dist/native-UPLVQ2SG.js +22 -0
  171. package/dist/native-UPLVQ2SG.js.map +1 -0
  172. package/dist/network-poll-HLDOSC72.js +76 -0
  173. package/dist/network-poll-HLDOSC72.js.map +1 -0
  174. package/dist/new-HXLLN6UT.js +69 -0
  175. package/dist/new-HXLLN6UT.js.map +1 -0
  176. package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
  177. package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
  178. package/dist/open-KDR25LQZ.js +81 -0
  179. package/dist/open-KDR25LQZ.js.map +1 -0
  180. package/dist/opendevbrowser.js +68 -34
  181. package/dist/opendevbrowser.js.map +1 -1
  182. package/dist/perf-EM6SWFJ6.js +58 -0
  183. package/dist/perf-EM6SWFJ6.js.map +1 -0
  184. package/dist/pointer-down-ZYWRZNCH.js +55 -0
  185. package/dist/pointer-down-ZYWRZNCH.js.map +1 -0
  186. package/dist/pointer-drag-LVEAVJO4.js +54 -0
  187. package/dist/pointer-drag-LVEAVJO4.js.map +1 -0
  188. package/dist/pointer-move-7SRKUS66.js +52 -0
  189. package/dist/pointer-move-7SRKUS66.js.map +1 -0
  190. package/dist/pointer-up-KLDBSK37.js +55 -0
  191. package/dist/pointer-up-KLDBSK37.js.map +1 -0
  192. package/dist/press-UIIXFTD7.js +83 -0
  193. package/dist/press-UIIXFTD7.js.map +1 -0
  194. package/dist/product-video-PYOXJVAI.js +235 -0
  195. package/dist/product-video-PYOXJVAI.js.map +1 -0
  196. package/dist/providers/artifacts.d.ts +0 -2
  197. package/dist/providers/artifacts.d.ts.map +1 -1
  198. package/dist/providers/blocker.d.ts.map +1 -1
  199. package/dist/providers/bounded-map.d.ts +2 -0
  200. package/dist/providers/bounded-map.d.ts.map +1 -0
  201. package/dist/providers/community/index.d.ts.map +1 -1
  202. package/dist/providers/constraint.d.ts.map +1 -1
  203. package/dist/providers/index.d.ts +1 -0
  204. package/dist/providers/index.d.ts.map +1 -1
  205. package/dist/providers/renderer.d.ts.map +1 -1
  206. package/dist/providers/research-compiler.d.ts +1 -1
  207. package/dist/providers/research-compiler.d.ts.map +1 -1
  208. package/dist/providers/research-executor.d.ts.map +1 -1
  209. package/dist/providers/runtime-factory.d.ts.map +1 -1
  210. package/dist/providers/shared/traversal-url.d.ts +3 -0
  211. package/dist/providers/shared/traversal-url.d.ts.map +1 -1
  212. package/dist/providers/shopping/index.d.ts.map +1 -1
  213. package/dist/providers/social/search-quality.d.ts.map +1 -1
  214. package/dist/providers/workflow-handoff.d.ts +4 -0
  215. package/dist/providers/workflow-handoff.d.ts.map +1 -1
  216. package/dist/providers/workflows.d.ts.map +1 -1
  217. package/dist/{providers-QF2RFB4J.js → providers-4YY2BLXG.js} +19 -14
  218. package/dist/providers-4YY2BLXG.js.map +1 -0
  219. package/dist/public-surface/generated-manifest.d.ts +2 -2
  220. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  221. package/dist/public-surface/source.d.ts +2 -2
  222. package/dist/public-surface/source.d.ts.map +1 -1
  223. package/dist/relay/protocol.d.ts +3 -1
  224. package/dist/relay/protocol.d.ts.map +1 -1
  225. package/dist/relay/relay-server.d.ts +6 -0
  226. package/dist/relay/relay-server.d.ts.map +1 -1
  227. package/dist/research-CKXMJ2DK.js +295 -0
  228. package/dist/research-CKXMJ2DK.js.map +1 -0
  229. package/dist/review-7HWJPZOD.js +48 -0
  230. package/dist/review-7HWJPZOD.js.map +1 -0
  231. package/dist/review-desktop-2IBJHFB5.js +54 -0
  232. package/dist/review-desktop-2IBJHFB5.js.map +1 -0
  233. package/dist/rpc-3HGIEJUO.js +159 -0
  234. package/dist/rpc-3HGIEJUO.js.map +1 -0
  235. package/dist/run-ADRYI3MS.js +180 -0
  236. package/dist/run-ADRYI3MS.js.map +1 -0
  237. package/dist/screencast-start-DTLUHD5H.js +67 -0
  238. package/dist/screencast-start-DTLUHD5H.js.map +1 -0
  239. package/dist/screencast-stop-54C5LRSS.js +59 -0
  240. package/dist/screencast-stop-54C5LRSS.js.map +1 -0
  241. package/dist/screenshot-HOAKR7P7.js +68 -0
  242. package/dist/screenshot-HOAKR7P7.js.map +1 -0
  243. package/dist/scroll-IAOO5COY.js +84 -0
  244. package/dist/scroll-IAOO5COY.js.map +1 -0
  245. package/dist/scroll-into-view-RKWSLAPH.js +71 -0
  246. package/dist/scroll-into-view-RKWSLAPH.js.map +1 -0
  247. package/dist/select-IGD3T6X4.js +86 -0
  248. package/dist/select-IGD3T6X4.js.map +1 -0
  249. package/dist/serve-7X4INUCU.js +498 -0
  250. package/dist/serve-7X4INUCU.js.map +1 -0
  251. package/dist/shopping-FC6DRW76.js +273 -0
  252. package/dist/shopping-FC6DRW76.js.map +1 -0
  253. package/dist/skill-lifecycle-5UAZGKSN.js +89 -0
  254. package/dist/skill-lifecycle-5UAZGKSN.js.map +1 -0
  255. package/dist/skills-NSXDX6YM.js +26 -0
  256. package/dist/skills-NSXDX6YM.js.map +1 -0
  257. package/dist/snapshot-X22GG324.js +113 -0
  258. package/dist/snapshot-X22GG324.js.map +1 -0
  259. package/dist/status-SP55LMNW.js +132 -0
  260. package/dist/status-SP55LMNW.js.map +1 -0
  261. package/dist/status-VH2WXIDG.js +35 -0
  262. package/dist/status-VH2WXIDG.js.map +1 -0
  263. package/dist/status-capabilities-YBERLRRA.js +57 -0
  264. package/dist/status-capabilities-YBERLRRA.js.map +1 -0
  265. package/dist/text-6TB5WNLI.js +84 -0
  266. package/dist/text-6TB5WNLI.js.map +1 -0
  267. package/dist/tools/macro_resolve.d.ts.map +1 -1
  268. package/dist/type-3UI3TQH3.js +94 -0
  269. package/dist/type-3UI3TQH3.js.map +1 -0
  270. package/dist/uncheck-5L3D2D4U.js +71 -0
  271. package/dist/uncheck-5L3D2D4U.js.map +1 -0
  272. package/dist/uninstall-KYKGJAX7.js +91 -0
  273. package/dist/uninstall-KYKGJAX7.js.map +1 -0
  274. package/dist/update-SMXPYGXS.js +305 -0
  275. package/dist/update-SMXPYGXS.js.map +1 -0
  276. package/dist/update-skill-modes-BVX7IVMW.js +38 -0
  277. package/dist/update-skill-modes-BVX7IVMW.js.map +1 -0
  278. package/dist/upload-YG4J2EMI.js +56 -0
  279. package/dist/upload-YG4J2EMI.js.map +1 -0
  280. package/dist/use-V3LGFP3K.js +63 -0
  281. package/dist/use-V3LGFP3K.js.map +1 -0
  282. package/dist/value-3247D57X.js +71 -0
  283. package/dist/value-3247D57X.js.map +1 -0
  284. package/dist/visible-A7HEV36U.js +71 -0
  285. package/dist/visible-A7HEV36U.js.map +1 -0
  286. package/dist/wait-UZPP4Y4R.js +109 -0
  287. package/dist/wait-UZPP4Y4R.js.map +1 -0
  288. package/dist/windows-76TR3AIP.js +37 -0
  289. package/dist/windows-76TR3AIP.js.map +1 -0
  290. package/extension/dist/background.js +99 -22
  291. package/extension/dist/ops/ops-runtime.js +85 -7
  292. package/extension/dist/ops/ops-session-store.js +3 -0
  293. package/extension/dist/ops/target-session-coordinator.js +3 -0
  294. package/extension/dist/services/CDPRouter.js +9 -0
  295. package/extension/manifest.json +1 -1
  296. package/package.json +1 -1
  297. package/skills/opendevbrowser-best-practices/SKILL.md +8 -6
  298. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
  299. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
  300. package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
  301. package/skills/opendevbrowser-research/SKILL.md +64 -12
  302. package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
  303. package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
  304. package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
  305. package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
  306. package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
  307. package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
  308. package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
  309. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
  310. package/dist/chunk-I5ZCOZZV.js.map +0 -1
  311. package/dist/chunk-QVWOPIZJ.js.map +0 -1
  312. package/dist/chunk-T3VVHJTK.js.map +0 -1
  313. /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
@@ -0,0 +1,295 @@
1
+ import {
2
+ resolveWorkflowOutputDirFlag
3
+ } from "./chunk-PDPJN2OP.js";
4
+ import "./chunk-RJNI3BHT.js";
5
+ import {
6
+ parseNumberFlag
7
+ } from "./chunk-RPXWUCQQ.js";
8
+ import {
9
+ DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS
10
+ } from "./chunk-OW5HMYMI.js";
11
+ import {
12
+ callDaemon
13
+ } from "./chunk-OYNLAZQU.js";
14
+ import "./chunk-LBPELU7L.js";
15
+ import "./chunk-SXAGSEKZ.js";
16
+ import "./chunk-MX3NFLCE.js";
17
+ import "./chunk-ASMHEEKY.js";
18
+ import {
19
+ buildWorkflowCompletionMessage
20
+ } from "./chunk-37VSRUW4.js";
21
+ import {
22
+ createUsageError
23
+ } from "./chunk-IPE7TF2P.js";
24
+ import "./chunk-STGGGVYT.js";
25
+ import "./chunk-3ILXPKSJ.js";
26
+ import "./chunk-TBUCZX4A.js";
27
+ import "./chunk-Y2KL55OG.js";
28
+ import "./chunk-5SWZDVOW.js";
29
+ import {
30
+ isChallengeAutomationMode
31
+ } from "./chunk-S6S2UP6U.js";
32
+ import "./chunk-S5KZQJJI.js";
33
+ import "./chunk-KZ2IXVQT.js";
34
+ import "./chunk-WHQZBUNY.js";
35
+ import "./chunk-FUSXMW3G.js";
36
+
37
+ // src/cli/commands/research.ts
38
+ var SOURCE_VALUES = /* @__PURE__ */ new Set(["web", "community", "social", "shopping"]);
39
+ var SOURCE_SELECTION_VALUES = /* @__PURE__ */ new Set(["auto", "web", "community", "social", "shopping", "all"]);
40
+ var MODE_VALUES = /* @__PURE__ */ new Set(["compact", "json", "md", "context", "path"]);
41
+ var BROWSER_MODE_VALUES = /* @__PURE__ */ new Set(["auto", "extension", "managed"]);
42
+ var COOKIE_POLICY_VALUES = /* @__PURE__ */ new Set(["off", "auto", "required"]);
43
+ var requireValue = (rawArgs, index, flag) => {
44
+ const value = rawArgs[index + 1];
45
+ if (!value) {
46
+ throw createUsageError(`Missing value for ${flag}`);
47
+ }
48
+ return value;
49
+ };
50
+ var parseBoolean = (value, flag) => {
51
+ if (value === "true") return true;
52
+ if (value === "false") return false;
53
+ throw createUsageError(`Invalid ${flag}: ${value}`);
54
+ };
55
+ var parseSources = (raw) => {
56
+ const parsed = raw.split(",").map((entry) => entry.trim().toLowerCase()).filter(Boolean);
57
+ if (parsed.length === 0) {
58
+ throw createUsageError("--sources requires at least one source");
59
+ }
60
+ const deduped = [...new Set(parsed)];
61
+ for (const source of deduped) {
62
+ if (!SOURCE_VALUES.has(source)) {
63
+ throw createUsageError(`Invalid --sources value: ${source}`);
64
+ }
65
+ }
66
+ return deduped;
67
+ };
68
+ var parseResearchRunArgs = (rawArgs) => {
69
+ const parsed = {};
70
+ for (let index = 0; index < rawArgs.length; index += 1) {
71
+ const arg = rawArgs[index];
72
+ if (arg === "--topic") {
73
+ parsed.topic = requireValue(rawArgs, index, "--topic");
74
+ index += 1;
75
+ continue;
76
+ }
77
+ if (arg?.startsWith("--topic=")) {
78
+ parsed.topic = arg.split("=", 2)[1];
79
+ continue;
80
+ }
81
+ if (arg === "--days") {
82
+ parsed.days = parseNumberFlag(requireValue(rawArgs, index, "--days"), "--days", { min: 1, max: 365 });
83
+ index += 1;
84
+ continue;
85
+ }
86
+ if (arg?.startsWith("--days=")) {
87
+ parsed.days = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--days", { min: 1, max: 365 });
88
+ continue;
89
+ }
90
+ if (arg === "--from") {
91
+ parsed.from = requireValue(rawArgs, index, "--from");
92
+ index += 1;
93
+ continue;
94
+ }
95
+ if (arg?.startsWith("--from=")) {
96
+ parsed.from = arg.split("=", 2)[1];
97
+ continue;
98
+ }
99
+ if (arg === "--to") {
100
+ parsed.to = requireValue(rawArgs, index, "--to");
101
+ index += 1;
102
+ continue;
103
+ }
104
+ if (arg?.startsWith("--to=")) {
105
+ parsed.to = arg.split("=", 2)[1];
106
+ continue;
107
+ }
108
+ if (arg === "--source-selection") {
109
+ const value = requireValue(rawArgs, index, "--source-selection").toLowerCase();
110
+ if (!SOURCE_SELECTION_VALUES.has(value)) {
111
+ throw createUsageError(`Invalid --source-selection: ${value}`);
112
+ }
113
+ parsed.sourceSelection = value;
114
+ index += 1;
115
+ continue;
116
+ }
117
+ if (arg?.startsWith("--source-selection=")) {
118
+ const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
119
+ if (!SOURCE_SELECTION_VALUES.has(value)) {
120
+ throw createUsageError(`Invalid --source-selection: ${value}`);
121
+ }
122
+ parsed.sourceSelection = value;
123
+ continue;
124
+ }
125
+ if (arg === "--sources") {
126
+ parsed.sources = parseSources(requireValue(rawArgs, index, "--sources"));
127
+ index += 1;
128
+ continue;
129
+ }
130
+ if (arg?.startsWith("--sources=")) {
131
+ parsed.sources = parseSources(arg.split("=", 2)[1] ?? "");
132
+ continue;
133
+ }
134
+ if (arg === "--mode") {
135
+ const value = requireValue(rawArgs, index, "--mode").toLowerCase();
136
+ if (!MODE_VALUES.has(value)) {
137
+ throw createUsageError(`Invalid --mode: ${value}`);
138
+ }
139
+ parsed.mode = value;
140
+ index += 1;
141
+ continue;
142
+ }
143
+ if (arg?.startsWith("--mode=")) {
144
+ const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
145
+ if (!MODE_VALUES.has(value)) {
146
+ throw createUsageError(`Invalid --mode: ${value}`);
147
+ }
148
+ parsed.mode = value;
149
+ continue;
150
+ }
151
+ if (arg === "--include-engagement") {
152
+ parsed.includeEngagement = true;
153
+ continue;
154
+ }
155
+ if (arg === "--limit-per-source") {
156
+ parsed.limitPerSource = parseNumberFlag(requireValue(rawArgs, index, "--limit-per-source"), "--limit-per-source", { min: 1, max: 100 });
157
+ index += 1;
158
+ continue;
159
+ }
160
+ if (arg?.startsWith("--limit-per-source=")) {
161
+ parsed.limitPerSource = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--limit-per-source", { min: 1, max: 100 });
162
+ continue;
163
+ }
164
+ if (arg === "--timeout-ms") {
165
+ parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs, index, "--timeout-ms"), "--timeout-ms", { min: 1 });
166
+ index += 1;
167
+ continue;
168
+ }
169
+ if (arg?.startsWith("--timeout-ms=")) {
170
+ parsed.timeoutMs = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--timeout-ms", { min: 1 });
171
+ continue;
172
+ }
173
+ if (arg === "--output-dir") {
174
+ parsed.outputDir = resolveWorkflowOutputDirFlag(requireValue(rawArgs, index, "--output-dir"));
175
+ index += 1;
176
+ continue;
177
+ }
178
+ if (arg?.startsWith("--output-dir=")) {
179
+ parsed.outputDir = resolveWorkflowOutputDirFlag(arg.split("=", 2)[1]);
180
+ continue;
181
+ }
182
+ if (arg === "--ttl-hours") {
183
+ parsed.ttlHours = parseNumberFlag(requireValue(rawArgs, index, "--ttl-hours"), "--ttl-hours", { min: 1, max: 168 });
184
+ index += 1;
185
+ continue;
186
+ }
187
+ if (arg?.startsWith("--ttl-hours=")) {
188
+ parsed.ttlHours = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--ttl-hours", { min: 1, max: 168 });
189
+ continue;
190
+ }
191
+ if (arg === "--browser-mode") {
192
+ const value = requireValue(rawArgs, index, "--browser-mode").toLowerCase();
193
+ if (!BROWSER_MODE_VALUES.has(value)) {
194
+ throw createUsageError(`Invalid --browser-mode: ${value}`);
195
+ }
196
+ parsed.browserMode = value;
197
+ index += 1;
198
+ continue;
199
+ }
200
+ if (arg?.startsWith("--browser-mode=")) {
201
+ const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
202
+ if (!BROWSER_MODE_VALUES.has(value)) {
203
+ throw createUsageError(`Invalid --browser-mode: ${value}`);
204
+ }
205
+ parsed.browserMode = value;
206
+ continue;
207
+ }
208
+ if (arg === "--use-cookies") {
209
+ parsed.useCookies = true;
210
+ continue;
211
+ }
212
+ if (arg?.startsWith("--use-cookies=")) {
213
+ parsed.useCookies = parseBoolean(arg.split("=", 2)[1] ?? "", "--use-cookies");
214
+ continue;
215
+ }
216
+ if (arg === "--challenge-automation-mode") {
217
+ const value = requireValue(rawArgs, index, "--challenge-automation-mode");
218
+ if (!isChallengeAutomationMode(value)) {
219
+ throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);
220
+ }
221
+ parsed.challengeAutomationMode = value;
222
+ index += 1;
223
+ continue;
224
+ }
225
+ if (arg?.startsWith("--challenge-automation-mode=")) {
226
+ const value = arg.split("=", 2)[1] ?? "";
227
+ if (!isChallengeAutomationMode(value)) {
228
+ throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);
229
+ }
230
+ parsed.challengeAutomationMode = value;
231
+ continue;
232
+ }
233
+ if (arg === "--cookie-policy-override" || arg === "--cookie-policy") {
234
+ const value = requireValue(rawArgs, index, arg).toLowerCase();
235
+ if (!COOKIE_POLICY_VALUES.has(value)) {
236
+ throw createUsageError(`Invalid ${arg}: ${value}`);
237
+ }
238
+ parsed.cookiePolicyOverride = value;
239
+ index += 1;
240
+ continue;
241
+ }
242
+ if (arg?.startsWith("--cookie-policy-override=") || arg?.startsWith("--cookie-policy=")) {
243
+ const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
244
+ if (!COOKIE_POLICY_VALUES.has(value)) {
245
+ throw createUsageError(`Invalid --cookie-policy-override: ${value}`);
246
+ }
247
+ parsed.cookiePolicyOverride = value;
248
+ continue;
249
+ }
250
+ }
251
+ return parsed;
252
+ };
253
+ async function runResearchCommand(args) {
254
+ const [subcommand, ...rest] = args.rawArgs;
255
+ if (subcommand !== "run") {
256
+ throw createUsageError("Usage: opendevbrowser research run --topic <value> [options]");
257
+ }
258
+ const parsed = parseResearchRunArgs(rest);
259
+ if (!parsed.topic?.trim()) {
260
+ throw createUsageError("Missing --topic");
261
+ }
262
+ const payload = {
263
+ topic: parsed.topic,
264
+ days: parsed.days,
265
+ from: parsed.from,
266
+ to: parsed.to,
267
+ sourceSelection: parsed.sourceSelection,
268
+ sources: parsed.sources,
269
+ mode: parsed.mode ?? "compact",
270
+ includeEngagement: parsed.includeEngagement ?? false,
271
+ limitPerSource: parsed.limitPerSource,
272
+ timeoutMs: parsed.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,
273
+ outputDir: resolveWorkflowOutputDirFlag(parsed.outputDir),
274
+ ttlHours: parsed.ttlHours,
275
+ browserMode: parsed.browserMode,
276
+ useCookies: parsed.useCookies,
277
+ challengeAutomationMode: parsed.challengeAutomationMode,
278
+ cookiePolicyOverride: parsed.cookiePolicyOverride
279
+ };
280
+ const data = await callDaemon("research.run", payload);
281
+ return {
282
+ success: true,
283
+ message: buildWorkflowCompletionMessage("Research workflow", data),
284
+ data
285
+ };
286
+ }
287
+ var __test__ = {
288
+ parseResearchRunArgs,
289
+ parseSources
290
+ };
291
+ export {
292
+ __test__,
293
+ runResearchCommand
294
+ };
295
+ //# sourceMappingURL=research-CKXMJ2DK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/research.ts"],"sourcesContent":["import type { ParsedArgs } from \"../args\";\nimport { callDaemon } from \"../client\";\nimport { createUsageError } from \"../errors\";\nimport { parseNumberFlag } from \"../utils/parse\";\nimport { buildWorkflowCompletionMessage } from \"../utils/workflow-message\";\nimport { DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS } from \"../transport-timeouts\";\nimport { resolveWorkflowOutputDirFlag } from \"./workflow-output\";\nimport { isChallengeAutomationMode, type ChallengeAutomationMode } from \"../../challenges/types\";\nimport type { WorkflowBrowserMode } from \"../../providers/types\";\n\ntype ResearchCommandArgs = {\n topic?: string;\n days?: number;\n from?: string;\n to?: string;\n sourceSelection?: \"auto\" | \"web\" | \"community\" | \"social\" | \"shopping\" | \"all\";\n sources?: Array<\"web\" | \"community\" | \"social\" | \"shopping\">;\n mode?: \"compact\" | \"json\" | \"md\" | \"context\" | \"path\";\n includeEngagement?: boolean;\n limitPerSource?: number;\n timeoutMs?: number;\n outputDir?: string;\n ttlHours?: number;\n browserMode?: WorkflowBrowserMode;\n useCookies?: boolean;\n challengeAutomationMode?: ChallengeAutomationMode;\n cookiePolicyOverride?: \"off\" | \"auto\" | \"required\";\n};\n\nconst SOURCE_VALUES = new Set([\"web\", \"community\", \"social\", \"shopping\"]);\nconst SOURCE_SELECTION_VALUES = new Set([\"auto\", \"web\", \"community\", \"social\", \"shopping\", \"all\"]);\nconst MODE_VALUES = new Set([\"compact\", \"json\", \"md\", \"context\", \"path\"]);\nconst BROWSER_MODE_VALUES = new Set([\"auto\", \"extension\", \"managed\"]);\nconst COOKIE_POLICY_VALUES = new Set([\"off\", \"auto\", \"required\"]);\nconst requireValue = (rawArgs: string[], index: number, flag: string): string => {\n const value = rawArgs[index + 1];\n if (!value) {\n throw createUsageError(`Missing value for ${flag}`);\n }\n return value;\n};\n\nconst parseBoolean = (value: string, flag: string): boolean => {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n throw createUsageError(`Invalid ${flag}: ${value}`);\n};\n\nconst parseSources = (raw: string): Array<\"web\" | \"community\" | \"social\" | \"shopping\"> => {\n const parsed = raw\n .split(\",\")\n .map((entry) => entry.trim().toLowerCase())\n .filter(Boolean);\n\n if (parsed.length === 0) {\n throw createUsageError(\"--sources requires at least one source\");\n }\n\n const deduped = [...new Set(parsed)];\n for (const source of deduped) {\n if (!SOURCE_VALUES.has(source)) {\n throw createUsageError(`Invalid --sources value: ${source}`);\n }\n }\n return deduped as Array<\"web\" | \"community\" | \"social\" | \"shopping\">;\n};\n\nconst parseResearchRunArgs = (rawArgs: string[]): ResearchCommandArgs => {\n const parsed: ResearchCommandArgs = {};\n\n for (let index = 0; index < rawArgs.length; index += 1) {\n const arg = rawArgs[index];\n\n if (arg === \"--topic\") {\n parsed.topic = requireValue(rawArgs, index, \"--topic\");\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--topic=\")) {\n parsed.topic = arg.split(\"=\", 2)[1];\n continue;\n }\n\n if (arg === \"--days\") {\n parsed.days = parseNumberFlag(requireValue(rawArgs, index, \"--days\"), \"--days\", { min: 1, max: 365 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--days=\")) {\n parsed.days = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--days\", { min: 1, max: 365 });\n continue;\n }\n\n if (arg === \"--from\") {\n parsed.from = requireValue(rawArgs, index, \"--from\");\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--from=\")) {\n parsed.from = arg.split(\"=\", 2)[1];\n continue;\n }\n\n if (arg === \"--to\") {\n parsed.to = requireValue(rawArgs, index, \"--to\");\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--to=\")) {\n parsed.to = arg.split(\"=\", 2)[1];\n continue;\n }\n\n if (arg === \"--source-selection\") {\n const value = requireValue(rawArgs, index, \"--source-selection\").toLowerCase();\n if (!SOURCE_SELECTION_VALUES.has(value)) {\n throw createUsageError(`Invalid --source-selection: ${value}`);\n }\n parsed.sourceSelection = value as ResearchCommandArgs[\"sourceSelection\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--source-selection=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!SOURCE_SELECTION_VALUES.has(value)) {\n throw createUsageError(`Invalid --source-selection: ${value}`);\n }\n parsed.sourceSelection = value as ResearchCommandArgs[\"sourceSelection\"];\n continue;\n }\n\n if (arg === \"--sources\") {\n parsed.sources = parseSources(requireValue(rawArgs, index, \"--sources\"));\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--sources=\")) {\n parsed.sources = parseSources(arg.split(\"=\", 2)[1] ?? \"\");\n continue;\n }\n\n if (arg === \"--mode\") {\n const value = requireValue(rawArgs, index, \"--mode\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as ResearchCommandArgs[\"mode\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as ResearchCommandArgs[\"mode\"];\n continue;\n }\n\n if (arg === \"--include-engagement\") {\n parsed.includeEngagement = true;\n continue;\n }\n\n if (arg === \"--limit-per-source\") {\n parsed.limitPerSource = parseNumberFlag(requireValue(rawArgs, index, \"--limit-per-source\"), \"--limit-per-source\", { min: 1, max: 100 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--limit-per-source=\")) {\n parsed.limitPerSource = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--limit-per-source\", { min: 1, max: 100 });\n continue;\n }\n\n if (arg === \"--timeout-ms\") {\n parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs, index, \"--timeout-ms\"), \"--timeout-ms\", { min: 1 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--timeout-ms=\")) {\n parsed.timeoutMs = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--timeout-ms\", { min: 1 });\n continue;\n }\n\n if (arg === \"--output-dir\") {\n parsed.outputDir = resolveWorkflowOutputDirFlag(requireValue(rawArgs, index, \"--output-dir\"));\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--output-dir=\")) {\n parsed.outputDir = resolveWorkflowOutputDirFlag(arg.split(\"=\", 2)[1]);\n continue;\n }\n\n if (arg === \"--ttl-hours\") {\n parsed.ttlHours = parseNumberFlag(requireValue(rawArgs, index, \"--ttl-hours\"), \"--ttl-hours\", { min: 1, max: 168 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--ttl-hours=\")) {\n parsed.ttlHours = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--ttl-hours\", { min: 1, max: 168 });\n continue;\n }\n\n if (arg === \"--browser-mode\") {\n const value = requireValue(rawArgs, index, \"--browser-mode\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--browser-mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n continue;\n }\n\n if (arg === \"--use-cookies\") {\n parsed.useCookies = true;\n continue;\n }\n if (arg?.startsWith(\"--use-cookies=\")) {\n parsed.useCookies = parseBoolean(arg.split(\"=\", 2)[1] ?? \"\", \"--use-cookies\");\n continue;\n }\n\n if (arg === \"--challenge-automation-mode\") {\n const value = requireValue(rawArgs, index, \"--challenge-automation-mode\");\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--challenge-automation-mode=\")) {\n const value = arg.split(\"=\", 2)[1] ?? \"\";\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n continue;\n }\n\n if (arg === \"--cookie-policy-override\" || arg === \"--cookie-policy\") {\n const value = requireValue(rawArgs, index, arg).toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid ${arg}: ${value}`);\n }\n parsed.cookiePolicyOverride = value as ResearchCommandArgs[\"cookiePolicyOverride\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--cookie-policy-override=\") || arg?.startsWith(\"--cookie-policy=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid --cookie-policy-override: ${value}`);\n }\n parsed.cookiePolicyOverride = value as ResearchCommandArgs[\"cookiePolicyOverride\"];\n continue;\n }\n }\n\n return parsed;\n};\n\nexport async function runResearchCommand(args: ParsedArgs) {\n const [subcommand, ...rest] = args.rawArgs;\n if (subcommand !== \"run\") {\n throw createUsageError(\"Usage: opendevbrowser research run --topic <value> [options]\");\n }\n\n const parsed = parseResearchRunArgs(rest);\n if (!parsed.topic?.trim()) {\n throw createUsageError(\"Missing --topic\");\n }\n\n const payload = {\n topic: parsed.topic,\n days: parsed.days,\n from: parsed.from,\n to: parsed.to,\n sourceSelection: parsed.sourceSelection,\n sources: parsed.sources,\n mode: parsed.mode ?? \"compact\",\n includeEngagement: parsed.includeEngagement ?? false,\n limitPerSource: parsed.limitPerSource,\n timeoutMs: parsed.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,\n outputDir: resolveWorkflowOutputDirFlag(parsed.outputDir),\n ttlHours: parsed.ttlHours,\n browserMode: parsed.browserMode,\n useCookies: parsed.useCookies,\n challengeAutomationMode: parsed.challengeAutomationMode,\n cookiePolicyOverride: parsed.cookiePolicyOverride\n };\n\n const data = await callDaemon(\"research.run\", payload);\n\n return {\n success: true,\n message: buildWorkflowCompletionMessage(\"Research workflow\", data),\n data\n };\n}\n\nexport const __test__ = {\n parseResearchRunArgs,\n parseSources\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,48 @@
1
+ import {
2
+ parseReviewCommandArgs
3
+ } from "./chunk-JZXD6FWR.js";
4
+ import "./chunk-RJNI3BHT.js";
5
+ import "./chunk-RPXWUCQQ.js";
6
+ import {
7
+ DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
8
+ } from "./chunk-OW5HMYMI.js";
9
+ import {
10
+ callDaemon
11
+ } from "./chunk-OYNLAZQU.js";
12
+ import "./chunk-LBPELU7L.js";
13
+ import "./chunk-SXAGSEKZ.js";
14
+ import "./chunk-MX3NFLCE.js";
15
+ import "./chunk-ASMHEEKY.js";
16
+ import {
17
+ createUsageError
18
+ } from "./chunk-IPE7TF2P.js";
19
+ import "./chunk-STGGGVYT.js";
20
+ import "./chunk-3ILXPKSJ.js";
21
+ import "./chunk-TBUCZX4A.js";
22
+ import "./chunk-Y2KL55OG.js";
23
+ import "./chunk-5SWZDVOW.js";
24
+ import "./chunk-S6S2UP6U.js";
25
+ import "./chunk-S5KZQJJI.js";
26
+ import "./chunk-KZ2IXVQT.js";
27
+ import "./chunk-WHQZBUNY.js";
28
+ import "./chunk-FUSXMW3G.js";
29
+
30
+ // src/cli/commands/nav/review.ts
31
+ async function runReview(args) {
32
+ const { sessionId, targetId, maxChars, cursor, timeoutMs } = parseReviewCommandArgs(args.rawArgs);
33
+ if (!sessionId) throw createUsageError("Missing --session-id");
34
+ const payload = {
35
+ sessionId,
36
+ maxChars,
37
+ cursor,
38
+ ...typeof targetId === "string" ? { targetId } : {}
39
+ };
40
+ const result = await callDaemon("nav.review", payload, {
41
+ timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
42
+ });
43
+ return { success: true, message: "Review captured.", data: result };
44
+ }
45
+ export {
46
+ runReview
47
+ };
48
+ //# sourceMappingURL=review-7HWJPZOD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/nav/review.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS } from \"../../transport-timeouts\";\nimport { parseReviewCommandArgs } from \"./review-shared\";\n\nexport async function runReview(args: ParsedArgs) {\n const { sessionId, targetId, maxChars, cursor, timeoutMs } = parseReviewCommandArgs(args.rawArgs);\n if (!sessionId) throw createUsageError(\"Missing --session-id\");\n const payload = {\n sessionId,\n maxChars,\n cursor,\n ...(typeof targetId === \"string\" ? { targetId } : {})\n };\n const result = await callDaemon(\"nav.review\", payload, {\n timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS\n });\n return { success: true, message: \"Review captured.\", data: result };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,eAAsB,UAAU,MAAkB;AAChD,QAAM,EAAE,WAAW,UAAU,UAAU,QAAQ,UAAU,IAAI,uBAAuB,KAAK,OAAO;AAChG,MAAI,CAAC,UAAW,OAAM,iBAAiB,sBAAsB;AAC7D,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACrD;AACA,QAAM,SAAS,MAAM,WAAW,cAAc,SAAS;AAAA,IACrD,WAAW,aAAa;AAAA,EAC1B,CAAC;AACD,SAAO,EAAE,SAAS,MAAM,SAAS,oBAAoB,MAAM,OAAO;AACpE;","names":[]}
@@ -0,0 +1,54 @@
1
+ import {
2
+ parseReviewCommandArgs
3
+ } from "./chunk-JZXD6FWR.js";
4
+ import "./chunk-RJNI3BHT.js";
5
+ import "./chunk-RPXWUCQQ.js";
6
+ import {
7
+ DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
8
+ } from "./chunk-OW5HMYMI.js";
9
+ import {
10
+ callDaemon
11
+ } from "./chunk-OYNLAZQU.js";
12
+ import "./chunk-LBPELU7L.js";
13
+ import "./chunk-SXAGSEKZ.js";
14
+ import "./chunk-MX3NFLCE.js";
15
+ import "./chunk-ASMHEEKY.js";
16
+ import {
17
+ createUsageError
18
+ } from "./chunk-IPE7TF2P.js";
19
+ import "./chunk-STGGGVYT.js";
20
+ import "./chunk-3ILXPKSJ.js";
21
+ import "./chunk-TBUCZX4A.js";
22
+ import "./chunk-Y2KL55OG.js";
23
+ import "./chunk-5SWZDVOW.js";
24
+ import "./chunk-S6S2UP6U.js";
25
+ import "./chunk-S5KZQJJI.js";
26
+ import "./chunk-KZ2IXVQT.js";
27
+ import "./chunk-WHQZBUNY.js";
28
+ import "./chunk-FUSXMW3G.js";
29
+
30
+ // src/cli/commands/nav/review-desktop.ts
31
+ async function runReviewDesktop(args) {
32
+ const { sessionId, targetId, reason, maxChars, cursor, timeoutMs } = parseReviewCommandArgs(args.rawArgs);
33
+ if (!sessionId) {
34
+ throw createUsageError("Missing --session-id");
35
+ }
36
+ const result = await callDaemon("nav.reviewDesktop", {
37
+ sessionId,
38
+ ...typeof targetId === "string" ? { targetId } : {},
39
+ ...typeof reason === "string" ? { reason } : {},
40
+ ...typeof maxChars === "number" ? { maxChars } : {},
41
+ ...typeof cursor === "string" ? { cursor } : {}
42
+ }, {
43
+ timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
44
+ });
45
+ return {
46
+ success: true,
47
+ message: "Desktop-assisted review captured.",
48
+ data: result
49
+ };
50
+ }
51
+ export {
52
+ runReviewDesktop
53
+ };
54
+ //# sourceMappingURL=review-desktop-2IBJHFB5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/nav/review-desktop.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS } from \"../../transport-timeouts\";\nimport { parseReviewCommandArgs } from \"./review-shared\";\n\nexport async function runReviewDesktop(args: ParsedArgs) {\n const { sessionId, targetId, reason, maxChars, cursor, timeoutMs } = parseReviewCommandArgs(args.rawArgs);\n if (!sessionId) {\n throw createUsageError(\"Missing --session-id\");\n }\n const result = await callDaemon(\"nav.reviewDesktop\", {\n sessionId,\n ...(typeof targetId === \"string\" ? { targetId } : {}),\n ...(typeof reason === \"string\" ? { reason } : {}),\n ...(typeof maxChars === \"number\" ? { maxChars } : {}),\n ...(typeof cursor === \"string\" ? { cursor } : {})\n }, {\n timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS\n });\n return {\n success: true,\n message: \"Desktop-assisted review captured.\",\n data: result\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,eAAsB,iBAAiB,MAAkB;AACvD,QAAM,EAAE,WAAW,UAAU,QAAQ,UAAU,QAAQ,UAAU,IAAI,uBAAuB,KAAK,OAAO;AACxG,MAAI,CAAC,WAAW;AACd,UAAM,iBAAiB,sBAAsB;AAAA,EAC/C;AACA,QAAM,SAAS,MAAM,WAAW,qBAAqB;AAAA,IACnD;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnD,GAAI,OAAO,WAAW,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,IAC/C,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnD,GAAI,OAAO,WAAW,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,EACjD,GAAG;AAAA,IACD,WAAW,aAAa;AAAA,EAC1B,CAAC;AACD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,159 @@
1
+ import {
2
+ parseNumberFlag
3
+ } from "./chunk-RPXWUCQQ.js";
4
+ import {
5
+ DaemonClient
6
+ } from "./chunk-OYNLAZQU.js";
7
+ import "./chunk-LBPELU7L.js";
8
+ import "./chunk-SXAGSEKZ.js";
9
+ import "./chunk-MX3NFLCE.js";
10
+ import "./chunk-ASMHEEKY.js";
11
+ import {
12
+ createUsageError
13
+ } from "./chunk-IPE7TF2P.js";
14
+ import "./chunk-STGGGVYT.js";
15
+ import "./chunk-3ILXPKSJ.js";
16
+ import "./chunk-TBUCZX4A.js";
17
+ import "./chunk-Y2KL55OG.js";
18
+ import "./chunk-5SWZDVOW.js";
19
+ import "./chunk-S6S2UP6U.js";
20
+ import "./chunk-S5KZQJJI.js";
21
+ import "./chunk-KZ2IXVQT.js";
22
+ import "./chunk-WHQZBUNY.js";
23
+ import "./chunk-FUSXMW3G.js";
24
+
25
+ // src/cli/commands/rpc.ts
26
+ import { readFileSync } from "fs";
27
+ var requireValue = (value, flag) => {
28
+ if (!value) throw createUsageError(`Missing value for ${flag}`);
29
+ return value;
30
+ };
31
+ var parseJsonObject = (raw, source) => {
32
+ let parsed;
33
+ try {
34
+ parsed = JSON.parse(raw);
35
+ } catch (error) {
36
+ const message = error instanceof Error ? error.message : "Invalid JSON";
37
+ throw createUsageError(`Invalid JSON from ${source}: ${message}`);
38
+ }
39
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
40
+ throw createUsageError(`Invalid JSON from ${source}: expected object`);
41
+ }
42
+ return parsed;
43
+ };
44
+ var parseRpcArgs = (rawArgs) => {
45
+ const parsed = {};
46
+ for (let i = 0; i < rawArgs.length; i += 1) {
47
+ const arg = rawArgs[i];
48
+ if (arg === "--unsafe-internal") {
49
+ parsed.unsafeInternal = true;
50
+ continue;
51
+ }
52
+ if (arg === "--name") {
53
+ parsed.name = requireValue(rawArgs[i + 1], "--name");
54
+ i += 1;
55
+ continue;
56
+ }
57
+ if (arg?.startsWith("--name=")) {
58
+ parsed.name = requireValue(arg.split("=", 2)[1], "--name");
59
+ continue;
60
+ }
61
+ if (arg === "--params") {
62
+ parsed.params = requireValue(rawArgs[i + 1], "--params");
63
+ i += 1;
64
+ continue;
65
+ }
66
+ if (arg?.startsWith("--params=")) {
67
+ parsed.params = requireValue(arg.split("=", 2)[1], "--params");
68
+ continue;
69
+ }
70
+ if (arg === "--params-file") {
71
+ parsed.paramsFile = requireValue(rawArgs[i + 1], "--params-file");
72
+ i += 1;
73
+ continue;
74
+ }
75
+ if (arg?.startsWith("--params-file=")) {
76
+ parsed.paramsFile = requireValue(arg.split("=", 2)[1], "--params-file");
77
+ continue;
78
+ }
79
+ if (arg === "--timeout-ms") {
80
+ const value = requireValue(rawArgs[i + 1], "--timeout-ms");
81
+ parsed.timeoutMs = parseNumberFlag(value, "--timeout-ms", { min: 1 });
82
+ i += 1;
83
+ continue;
84
+ }
85
+ if (arg?.startsWith("--timeout-ms=")) {
86
+ const value = requireValue(arg.split("=", 2)[1], "--timeout-ms");
87
+ parsed.timeoutMs = parseNumberFlag(value, "--timeout-ms", { min: 1 });
88
+ continue;
89
+ }
90
+ }
91
+ return parsed;
92
+ };
93
+ var resolveRpcParams = (rpcArgs) => {
94
+ const hasParamsArg = typeof rpcArgs.params === "string";
95
+ const hasParamsFile = typeof rpcArgs.paramsFile === "string";
96
+ const inputCount = Number(hasParamsArg) + Number(hasParamsFile);
97
+ if (inputCount > 1) {
98
+ throw createUsageError("Provide only one params source: --params or --params-file.");
99
+ }
100
+ if (hasParamsArg) {
101
+ return parseJsonObject(rpcArgs.params ?? "", "--params");
102
+ }
103
+ if (hasParamsFile) {
104
+ let raw = "";
105
+ try {
106
+ raw = readFileSync(rpcArgs.paramsFile ?? "", "utf8");
107
+ } catch (error) {
108
+ const message = error instanceof Error ? error.message : "Unable to read file";
109
+ throw createUsageError(`Invalid --params-file: ${message}`);
110
+ }
111
+ if (!raw.trim()) {
112
+ throw createUsageError("Invalid JSON from --params-file: empty input");
113
+ }
114
+ return parseJsonObject(raw, "--params-file");
115
+ }
116
+ return {};
117
+ };
118
+ async function runRpc(args) {
119
+ const rpcArgs = parseRpcArgs(args.rawArgs);
120
+ if (!rpcArgs.unsafeInternal) {
121
+ throw createUsageError(
122
+ "Missing --unsafe-internal. rpc is a power-user command that executes internal daemon commands and can mutate session state."
123
+ );
124
+ }
125
+ if (!rpcArgs.name) {
126
+ throw createUsageError("Missing --name");
127
+ }
128
+ const params = resolveRpcParams(rpcArgs);
129
+ const client = new DaemonClient({ autoRenew: true });
130
+ try {
131
+ const result = await client.call(rpcArgs.name, params, { timeoutMs: rpcArgs.timeoutMs });
132
+ if (args.outputFormat === "text") {
133
+ const output = typeof result === "string" ? result : JSON.stringify(result, null, 2);
134
+ return { success: true, message: output };
135
+ }
136
+ return {
137
+ success: true,
138
+ message: `RPC executed: ${rpcArgs.name}`,
139
+ data: {
140
+ name: rpcArgs.name,
141
+ result
142
+ }
143
+ };
144
+ } finally {
145
+ await client.releaseBinding().catch(() => {
146
+ });
147
+ }
148
+ }
149
+ var __test__ = {
150
+ parseJsonObject,
151
+ parseRpcArgs,
152
+ resolveRpcParams
153
+ };
154
+ export {
155
+ __test__,
156
+ parseRpcArgs,
157
+ runRpc
158
+ };
159
+ //# sourceMappingURL=rpc-3HGIEJUO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/rpc.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport type { ParsedArgs } from \"../args\";\nimport { DaemonClient } from \"../daemon-client\";\nimport { createUsageError } from \"../errors\";\nimport { parseNumberFlag } from \"../utils/parse\";\n\ntype RpcArgs = {\n name?: string;\n params?: string;\n paramsFile?: string;\n timeoutMs?: number;\n unsafeInternal?: boolean;\n};\n\nconst requireValue = (value: string | undefined, flag: string): string => {\n if (!value) throw createUsageError(`Missing value for ${flag}`);\n return value;\n};\n\nconst parseJsonObject = (raw: string, source: string): Record<string, unknown> => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Invalid JSON\";\n throw createUsageError(`Invalid JSON from ${source}: ${message}`);\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw createUsageError(`Invalid JSON from ${source}: expected object`);\n }\n return parsed as Record<string, unknown>;\n};\n\nexport const parseRpcArgs = (rawArgs: string[]): RpcArgs => {\n const parsed: RpcArgs = {};\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--unsafe-internal\") {\n parsed.unsafeInternal = true;\n continue;\n }\n if (arg === \"--name\") {\n parsed.name = requireValue(rawArgs[i + 1], \"--name\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--name=\")) {\n parsed.name = requireValue(arg.split(\"=\", 2)[1], \"--name\");\n continue;\n }\n if (arg === \"--params\") {\n parsed.params = requireValue(rawArgs[i + 1], \"--params\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--params=\")) {\n parsed.params = requireValue(arg.split(\"=\", 2)[1], \"--params\");\n continue;\n }\n if (arg === \"--params-file\") {\n parsed.paramsFile = requireValue(rawArgs[i + 1], \"--params-file\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--params-file=\")) {\n parsed.paramsFile = requireValue(arg.split(\"=\", 2)[1], \"--params-file\");\n continue;\n }\n if (arg === \"--timeout-ms\") {\n const value = requireValue(rawArgs[i + 1], \"--timeout-ms\");\n parsed.timeoutMs = parseNumberFlag(value, \"--timeout-ms\", { min: 1 });\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--timeout-ms=\")) {\n const value = requireValue(arg.split(\"=\", 2)[1], \"--timeout-ms\");\n parsed.timeoutMs = parseNumberFlag(value, \"--timeout-ms\", { min: 1 });\n continue;\n }\n }\n return parsed;\n};\n\nconst resolveRpcParams = (rpcArgs: RpcArgs): Record<string, unknown> => {\n const hasParamsArg = typeof rpcArgs.params === \"string\";\n const hasParamsFile = typeof rpcArgs.paramsFile === \"string\";\n const inputCount = Number(hasParamsArg) + Number(hasParamsFile);\n\n if (inputCount > 1) {\n throw createUsageError(\"Provide only one params source: --params or --params-file.\");\n }\n if (hasParamsArg) {\n return parseJsonObject(rpcArgs.params ?? \"\", \"--params\");\n }\n if (hasParamsFile) {\n let raw = \"\";\n try {\n raw = readFileSync(rpcArgs.paramsFile ?? \"\", \"utf8\");\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unable to read file\";\n throw createUsageError(`Invalid --params-file: ${message}`);\n }\n if (!raw.trim()) {\n throw createUsageError(\"Invalid JSON from --params-file: empty input\");\n }\n return parseJsonObject(raw, \"--params-file\");\n }\n return {};\n};\n\nexport async function runRpc(args: ParsedArgs) {\n const rpcArgs = parseRpcArgs(args.rawArgs);\n if (!rpcArgs.unsafeInternal) {\n throw createUsageError(\n \"Missing --unsafe-internal. rpc is a power-user command that executes internal daemon commands and can mutate session state.\"\n );\n }\n if (!rpcArgs.name) {\n throw createUsageError(\"Missing --name\");\n }\n\n const params = resolveRpcParams(rpcArgs);\n const client = new DaemonClient({ autoRenew: true });\n try {\n const result = await client.call<unknown>(rpcArgs.name, params, { timeoutMs: rpcArgs.timeoutMs });\n if (args.outputFormat === \"text\") {\n const output = typeof result === \"string\" ? result : JSON.stringify(result, null, 2);\n return { success: true, message: output };\n }\n return {\n success: true,\n message: `RPC executed: ${rpcArgs.name}`,\n data: {\n name: rpcArgs.name,\n result\n }\n };\n } finally {\n await client.releaseBinding().catch(() => {});\n }\n}\n\nexport const __test__ = {\n parseJsonObject,\n parseRpcArgs,\n resolveRpcParams\n};\n"],"mappings":"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","names":[]}