@rulemetric/cli 0.2.0 → 0.2.2

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 (774) hide show
  1. package/dist/base-command.js +13 -52
  2. package/dist/base-command.js.map +7 -1
  3. package/dist/chunk-2AM54TUK.js +59 -0
  4. package/dist/chunk-2AM54TUK.js.map +7 -0
  5. package/dist/chunk-3TIMQ3O6.js +96 -0
  6. package/dist/chunk-3TIMQ3O6.js.map +7 -0
  7. package/dist/chunk-4BHDHHKL.js +48 -0
  8. package/dist/chunk-4BHDHHKL.js.map +7 -0
  9. package/dist/chunk-4D537GXE.js +99 -0
  10. package/dist/chunk-4D537GXE.js.map +7 -0
  11. package/dist/chunk-4SCZK7AL.js +129 -0
  12. package/dist/chunk-4SCZK7AL.js.map +7 -0
  13. package/dist/chunk-4WFE4PFP.js +61 -0
  14. package/dist/chunk-4WFE4PFP.js.map +7 -0
  15. package/dist/chunk-52WIYRZH.js +73 -0
  16. package/dist/chunk-52WIYRZH.js.map +7 -0
  17. package/dist/chunk-7FAA3YNB.js +1549 -0
  18. package/dist/chunk-7FAA3YNB.js.map +7 -0
  19. package/dist/chunk-7NYKWN7U.js +12 -0
  20. package/dist/chunk-7NYKWN7U.js.map +7 -0
  21. package/dist/chunk-AULP2OWH.js +99 -0
  22. package/dist/chunk-AULP2OWH.js.map +7 -0
  23. package/dist/chunk-B5KNTGMJ.js +1788 -0
  24. package/dist/chunk-B5KNTGMJ.js.map +7 -0
  25. package/dist/chunk-BD7CY42U.js +23 -0
  26. package/dist/chunk-BD7CY42U.js.map +7 -0
  27. package/dist/chunk-BO76WKJR.js +42 -0
  28. package/dist/chunk-BO76WKJR.js.map +7 -0
  29. package/dist/chunk-BRD5RUGM.js +53 -0
  30. package/dist/chunk-BRD5RUGM.js.map +7 -0
  31. package/dist/chunk-BT6Z6545.js +43 -0
  32. package/dist/chunk-BT6Z6545.js.map +7 -0
  33. package/dist/chunk-BZDKEQKU.js +39 -0
  34. package/dist/chunk-BZDKEQKU.js.map +7 -0
  35. package/dist/chunk-CROYS75W.js +161 -0
  36. package/dist/chunk-CROYS75W.js.map +7 -0
  37. package/dist/chunk-DGHWRQXL.js +17 -0
  38. package/dist/chunk-DGHWRQXL.js.map +7 -0
  39. package/dist/chunk-DQ3KELXD.js +74 -0
  40. package/dist/chunk-DQ3KELXD.js.map +7 -0
  41. package/dist/chunk-DTFXCHHI.js +108 -0
  42. package/dist/chunk-DTFXCHHI.js.map +7 -0
  43. package/dist/chunk-DU73QUS3.js +75 -0
  44. package/dist/chunk-DU73QUS3.js.map +7 -0
  45. package/dist/chunk-EHZJ6OXD.js +307 -0
  46. package/dist/chunk-EHZJ6OXD.js.map +7 -0
  47. package/dist/chunk-EJOI2ZGU.js +109 -0
  48. package/dist/chunk-EJOI2ZGU.js.map +7 -0
  49. package/dist/chunk-EKJ2CABV.js +76 -0
  50. package/dist/chunk-EKJ2CABV.js.map +7 -0
  51. package/dist/chunk-EKP32DLN.js +16 -0
  52. package/dist/chunk-EKP32DLN.js.map +7 -0
  53. package/dist/chunk-EOOP6WTC.js +148 -0
  54. package/dist/chunk-EOOP6WTC.js.map +7 -0
  55. package/dist/chunk-ERPMDAO3.js +20 -0
  56. package/dist/chunk-ERPMDAO3.js.map +7 -0
  57. package/dist/chunk-FTJRMUID.js +96 -0
  58. package/dist/chunk-FTJRMUID.js.map +7 -0
  59. package/dist/chunk-FZKLLNDS.js +228 -0
  60. package/dist/chunk-FZKLLNDS.js.map +7 -0
  61. package/dist/chunk-GQCISMAH.js +157 -0
  62. package/dist/chunk-GQCISMAH.js.map +7 -0
  63. package/dist/chunk-IGXX624H.js +55 -0
  64. package/dist/chunk-IGXX624H.js.map +7 -0
  65. package/dist/chunk-IJGF2ETG.js +68 -0
  66. package/dist/chunk-IJGF2ETG.js.map +7 -0
  67. package/dist/chunk-IWYCRLEK.js +220 -0
  68. package/dist/chunk-IWYCRLEK.js.map +7 -0
  69. package/dist/chunk-J7N3DLH6.js +117 -0
  70. package/dist/chunk-J7N3DLH6.js.map +7 -0
  71. package/dist/chunk-JX5UI6RW.js +99 -0
  72. package/dist/chunk-JX5UI6RW.js.map +7 -0
  73. package/dist/chunk-K3BFZ7KG.js +154 -0
  74. package/dist/chunk-K3BFZ7KG.js.map +7 -0
  75. package/dist/chunk-KHJUQFIK.js +51 -0
  76. package/dist/chunk-KHJUQFIK.js.map +7 -0
  77. package/dist/chunk-KRBQLMOP.js +41 -0
  78. package/dist/chunk-KRBQLMOP.js.map +7 -0
  79. package/dist/chunk-KZRFUXGF.js +145 -0
  80. package/dist/chunk-KZRFUXGF.js.map +7 -0
  81. package/dist/chunk-L674RNKQ.js +492 -0
  82. package/dist/chunk-L674RNKQ.js.map +7 -0
  83. package/dist/chunk-N52AHNBH.js +47 -0
  84. package/dist/chunk-N52AHNBH.js.map +7 -0
  85. package/dist/chunk-NIDLJO6F.js +228 -0
  86. package/dist/chunk-NIDLJO6F.js.map +7 -0
  87. package/dist/chunk-NSBPE2FW.js +17 -0
  88. package/dist/chunk-NSBPE2FW.js.map +7 -0
  89. package/dist/chunk-OGVORIFM.js +70 -0
  90. package/dist/chunk-OGVORIFM.js.map +7 -0
  91. package/dist/chunk-OQSQC7VB.js +77 -0
  92. package/dist/chunk-OQSQC7VB.js.map +7 -0
  93. package/dist/chunk-PHLMIZKM.js +153 -0
  94. package/dist/chunk-PHLMIZKM.js.map +7 -0
  95. package/dist/chunk-PQU7GZ7A.js +92 -0
  96. package/dist/chunk-PQU7GZ7A.js.map +7 -0
  97. package/dist/chunk-PXVQLD7S.js +196 -0
  98. package/dist/chunk-PXVQLD7S.js.map +7 -0
  99. package/dist/chunk-QD6X4L4L.js +79 -0
  100. package/dist/chunk-QD6X4L4L.js.map +7 -0
  101. package/dist/chunk-QJQS6TUN.js +44 -0
  102. package/dist/chunk-QJQS6TUN.js.map +7 -0
  103. package/dist/chunk-QJXAULRC.js +191 -0
  104. package/dist/chunk-QJXAULRC.js.map +7 -0
  105. package/dist/chunk-QN34TGD3.js +83 -0
  106. package/dist/chunk-QN34TGD3.js.map +7 -0
  107. package/dist/chunk-R5MFHGHR.js +122 -0
  108. package/dist/chunk-R5MFHGHR.js.map +7 -0
  109. package/dist/chunk-RH7NHVSK.js +16 -0
  110. package/dist/chunk-RH7NHVSK.js.map +7 -0
  111. package/dist/chunk-RJ7BHDLM.js +121 -0
  112. package/dist/chunk-RJ7BHDLM.js.map +7 -0
  113. package/dist/chunk-RQ2TMLKG.js +142 -0
  114. package/dist/chunk-RQ2TMLKG.js.map +7 -0
  115. package/dist/chunk-S56LOTGQ.js +63 -0
  116. package/dist/chunk-S56LOTGQ.js.map +7 -0
  117. package/dist/chunk-UF73WX2J.js +49 -0
  118. package/dist/chunk-UF73WX2J.js.map +7 -0
  119. package/dist/chunk-W53GKIZQ.js +50 -0
  120. package/dist/chunk-W53GKIZQ.js.map +7 -0
  121. package/dist/chunk-WA4MWYRW.js +254 -0
  122. package/dist/chunk-WA4MWYRW.js.map +7 -0
  123. package/dist/chunk-WFULKPEQ.js +269 -0
  124. package/dist/chunk-WFULKPEQ.js.map +7 -0
  125. package/dist/chunk-XC6M4CSW.js +44 -0
  126. package/dist/chunk-XC6M4CSW.js.map +7 -0
  127. package/dist/chunk-XPUEGHXN.js +243 -0
  128. package/dist/chunk-XPUEGHXN.js.map +7 -0
  129. package/dist/chunk-XZXS2W24.js +148 -0
  130. package/dist/chunk-XZXS2W24.js.map +7 -0
  131. package/dist/chunk-YBNW7ARH.js +167 -0
  132. package/dist/chunk-YBNW7ARH.js.map +7 -0
  133. package/dist/chunk-YNIH3KMU.js +121 -0
  134. package/dist/chunk-YNIH3KMU.js.map +7 -0
  135. package/dist/commands/antigravity/backfill.js +135 -0
  136. package/dist/commands/antigravity/backfill.js.map +7 -0
  137. package/dist/commands/auth/create-key.js +48 -33
  138. package/dist/commands/auth/create-key.js.map +7 -1
  139. package/dist/commands/auth/login.js +58 -46
  140. package/dist/commands/auth/login.js.map +7 -1
  141. package/dist/commands/auth/logout.js +28 -13
  142. package/dist/commands/auth/logout.js.map +7 -1
  143. package/dist/commands/auth/revoke-key.js +32 -18
  144. package/dist/commands/auth/revoke-key.js.map +7 -1
  145. package/dist/commands/auth/status.js +40 -22
  146. package/dist/commands/auth/status.js.map +7 -1
  147. package/dist/commands/catalog/index.js +50 -34
  148. package/dist/commands/catalog/index.js.map +7 -1
  149. package/dist/commands/catalog/recommend.js +41 -26
  150. package/dist/commands/catalog/recommend.js.map +7 -1
  151. package/dist/commands/convert.js +72 -54
  152. package/dist/commands/convert.js.map +7 -1
  153. package/dist/commands/converters.js +52 -38
  154. package/dist/commands/converters.js.map +7 -1
  155. package/dist/commands/crons/list.js +50 -24
  156. package/dist/commands/crons/list.js.map +7 -1
  157. package/dist/commands/crons/run.js +72 -47
  158. package/dist/commands/crons/run.js.map +7 -1
  159. package/dist/commands/dashboard.js +45 -24
  160. package/dist/commands/dashboard.js.map +7 -1
  161. package/dist/commands/eval-targets/create.js +51 -39
  162. package/dist/commands/eval-targets/create.js.map +7 -1
  163. package/dist/commands/eval-targets/list.js +52 -35
  164. package/dist/commands/eval-targets/list.js.map +7 -1
  165. package/dist/commands/evals/agent.js +292 -0
  166. package/dist/commands/evals/agent.js.map +7 -0
  167. package/dist/commands/evals/benchmark.js +70 -51
  168. package/dist/commands/evals/benchmark.js.map +7 -1
  169. package/dist/commands/evals/compare.js +90 -78
  170. package/dist/commands/evals/compare.js.map +7 -1
  171. package/dist/commands/evals/create.js +64 -50
  172. package/dist/commands/evals/create.js.map +7 -1
  173. package/dist/commands/evals/optimize-description.js +225 -222
  174. package/dist/commands/evals/optimize-description.js.map +7 -1
  175. package/dist/commands/evals/optimize.js +206 -196
  176. package/dist/commands/evals/optimize.js.map +7 -1
  177. package/dist/commands/evals/run.js +178 -164
  178. package/dist/commands/evals/run.js.map +7 -1
  179. package/dist/commands/gateway/ensure.js +33 -19
  180. package/dist/commands/gateway/ensure.js.map +7 -1
  181. package/dist/commands/hooks/install.js +335 -275
  182. package/dist/commands/hooks/install.js.map +7 -1
  183. package/dist/commands/hooks/run.js +72 -53
  184. package/dist/commands/hooks/run.js.map +7 -1
  185. package/dist/commands/hooks/uninstall.js +117 -94
  186. package/dist/commands/hooks/uninstall.js.map +7 -1
  187. package/dist/commands/import.js +63 -53
  188. package/dist/commands/import.js.map +7 -1
  189. package/dist/commands/instructions/create.js +71 -58
  190. package/dist/commands/instructions/create.js.map +7 -1
  191. package/dist/commands/instructions/delete.js +53 -36
  192. package/dist/commands/instructions/delete.js.map +7 -1
  193. package/dist/commands/instructions/fork.js +33 -19
  194. package/dist/commands/instructions/fork.js.map +7 -1
  195. package/dist/commands/instructions/get.js +66 -49
  196. package/dist/commands/instructions/get.js.map +7 -1
  197. package/dist/commands/instructions/list.js +63 -46
  198. package/dist/commands/instructions/list.js.map +7 -1
  199. package/dist/commands/instructions/promote.js +41 -27
  200. package/dist/commands/instructions/promote.js.map +7 -1
  201. package/dist/commands/instructions/pull.js +37 -21
  202. package/dist/commands/instructions/pull.js.map +7 -1
  203. package/dist/commands/instructions/upstream.js +36 -21
  204. package/dist/commands/instructions/upstream.js.map +7 -1
  205. package/dist/commands/instructions/versions.js +51 -33
  206. package/dist/commands/instructions/versions.js.map +7 -1
  207. package/dist/commands/launcher.js +39 -0
  208. package/dist/commands/launcher.js.map +7 -0
  209. package/dist/commands/org/current.js +74 -68
  210. package/dist/commands/org/current.js.map +7 -1
  211. package/dist/commands/org/list.js +50 -36
  212. package/dist/commands/org/list.js.map +7 -1
  213. package/dist/commands/org/switch.js +69 -51
  214. package/dist/commands/org/switch.js.map +7 -1
  215. package/dist/commands/packs/add-instruction.js +36 -22
  216. package/dist/commands/packs/add-instruction.js.map +7 -1
  217. package/dist/commands/packs/apply.js +38 -24
  218. package/dist/commands/packs/apply.js.map +7 -1
  219. package/dist/commands/packs/create.js +47 -33
  220. package/dist/commands/packs/create.js.map +7 -1
  221. package/dist/commands/packs/fork.js +33 -19
  222. package/dist/commands/packs/fork.js.map +7 -1
  223. package/dist/commands/packs/get.js +54 -35
  224. package/dist/commands/packs/get.js.map +7 -1
  225. package/dist/commands/packs/list.js +64 -47
  226. package/dist/commands/packs/list.js.map +7 -1
  227. package/dist/commands/packs/remove-instruction.js +34 -20
  228. package/dist/commands/packs/remove-instruction.js.map +7 -1
  229. package/dist/commands/proxy/env.js +126 -116
  230. package/dist/commands/proxy/env.js.map +7 -1
  231. package/dist/commands/proxy/logs.js +83 -74
  232. package/dist/commands/proxy/logs.js.map +7 -1
  233. package/dist/commands/proxy/restart.js +34 -36
  234. package/dist/commands/proxy/restart.js.map +7 -1
  235. package/dist/commands/proxy/setup.js +432 -375
  236. package/dist/commands/proxy/setup.js.map +7 -1
  237. package/dist/commands/proxy/start.js +289 -289
  238. package/dist/commands/proxy/start.js.map +7 -1
  239. package/dist/commands/proxy/status.js +74 -64
  240. package/dist/commands/proxy/status.js.map +7 -1
  241. package/dist/commands/proxy/stop.js +81 -75
  242. package/dist/commands/proxy/stop.js.map +7 -1
  243. package/dist/commands/research/backfill.js +58 -0
  244. package/dist/commands/research/backfill.js.map +7 -0
  245. package/dist/commands/research/tail-transcript.js +69 -0
  246. package/dist/commands/research/tail-transcript.js.map +7 -0
  247. package/dist/commands/service/install.js +639 -405
  248. package/dist/commands/service/install.js.map +7 -1
  249. package/dist/commands/service/status.js +178 -111
  250. package/dist/commands/service/status.js.map +7 -1
  251. package/dist/commands/service/uninstall.js +85 -110
  252. package/dist/commands/service/uninstall.js.map +7 -1
  253. package/dist/commands/sessions/analyze.js +46 -25
  254. package/dist/commands/sessions/analyze.js.map +7 -1
  255. package/dist/commands/sessions/end.js +81 -79
  256. package/dist/commands/sessions/end.js.map +7 -1
  257. package/dist/commands/sessions/import.js +44 -27
  258. package/dist/commands/sessions/import.js.map +7 -1
  259. package/dist/commands/sessions/list.js +46 -33
  260. package/dist/commands/sessions/list.js.map +7 -1
  261. package/dist/commands/sessions/start.js +88 -87
  262. package/dist/commands/sessions/start.js.map +7 -1
  263. package/dist/commands/signals/report.js +42 -34
  264. package/dist/commands/signals/report.js.map +7 -1
  265. package/dist/commands/skills/export-approved.js +44 -30
  266. package/dist/commands/skills/export-approved.js.map +7 -1
  267. package/dist/commands/skills/install.js +99 -84
  268. package/dist/commands/skills/install.js.map +7 -1
  269. package/dist/commands/skills/list.js +59 -42
  270. package/dist/commands/skills/list.js.map +7 -1
  271. package/dist/commands/skills/publish.js +95 -78
  272. package/dist/commands/skills/publish.js.map +7 -1
  273. package/dist/commands/skills/search.js +68 -53
  274. package/dist/commands/skills/search.js.map +7 -1
  275. package/dist/commands/skills/update.js +52 -39
  276. package/dist/commands/skills/update.js.map +7 -1
  277. package/dist/commands/suggestions/accept.js +82 -59
  278. package/dist/commands/suggestions/accept.js.map +7 -1
  279. package/dist/commands/suggestions/dismiss.js +44 -26
  280. package/dist/commands/suggestions/dismiss.js.map +7 -1
  281. package/dist/commands/suggestions/list.js +59 -39
  282. package/dist/commands/suggestions/list.js.map +7 -1
  283. package/dist/commands/suggestions/refresh.js +26 -11
  284. package/dist/commands/suggestions/refresh.js.map +7 -1
  285. package/dist/cursor-BGQJ4CWI.js +134 -0
  286. package/dist/cursor-BGQJ4CWI.js.map +7 -0
  287. package/dist/dashboard/Dashboard.js +229 -126
  288. package/dist/dashboard/Dashboard.js.map +7 -1
  289. package/dist/dashboard/data.js +13 -137
  290. package/dist/dashboard/data.js.map +7 -1
  291. package/dist/dashboard/launcher/ActiveJobsList.js +10 -0
  292. package/dist/dashboard/launcher/ActiveJobsList.js.map +7 -0
  293. package/dist/dashboard/launcher/LauncherOverlay.js +14 -0
  294. package/dist/dashboard/launcher/LauncherOverlay.js.map +7 -0
  295. package/dist/dashboard/launcher/NewLaunchForm.js +10 -0
  296. package/dist/dashboard/launcher/NewLaunchForm.js.map +7 -0
  297. package/dist/dashboard/launcher/api.js +14 -0
  298. package/dist/dashboard/launcher/api.js.map +7 -0
  299. package/dist/dashboard/launcher/tool-labels.js +10 -0
  300. package/dist/dashboard/launcher/tool-labels.js.map +7 -0
  301. package/dist/dashboard/launcher/types.js +1 -0
  302. package/dist/dashboard/launcher/types.js.map +7 -0
  303. package/dist/dashboard/launcher/useLaunchJobs.js +9 -0
  304. package/dist/dashboard/launcher/useLaunchJobs.js.map +7 -0
  305. package/dist/dashboard/panels/friction.js +10 -22
  306. package/dist/dashboard/panels/friction.js.map +7 -1
  307. package/dist/dashboard/panels/insights.js +10 -109
  308. package/dist/dashboard/panels/insights.js.map +7 -1
  309. package/dist/dashboard/panels/instructions.js +10 -17
  310. package/dist/dashboard/panels/instructions.js.map +7 -1
  311. package/dist/dashboard/panels/outcomes.js +9 -28
  312. package/dist/dashboard/panels/outcomes.js.map +7 -1
  313. package/dist/dashboard/panels/overview.js +10 -20
  314. package/dist/dashboard/panels/overview.js.map +7 -1
  315. package/dist/dashboard/panels/shared.js +18 -61
  316. package/dist/dashboard/panels/shared.js.map +7 -1
  317. package/dist/dashboard/types.js +23 -26
  318. package/dist/dashboard/types.js.map +7 -1
  319. package/dist/dist-CSUYFYKI.js +52 -0
  320. package/dist/dist-CSUYFYKI.js.map +7 -0
  321. package/dist/index.js +8 -2
  322. package/dist/index.js.map +7 -1
  323. package/dist/lib/active-org-refresh.js +15 -108
  324. package/dist/lib/active-org-refresh.js.map +7 -1
  325. package/dist/lib/active-org.js +15 -95
  326. package/dist/lib/active-org.js.map +7 -1
  327. package/dist/lib/agent-loop.js +44 -0
  328. package/dist/lib/agent-loop.js.map +7 -0
  329. package/dist/lib/antigravity-transcript.js +22 -0
  330. package/dist/lib/antigravity-transcript.js.map +7 -0
  331. package/dist/lib/api-client.js +21 -92
  332. package/dist/lib/api-client.js.map +7 -1
  333. package/dist/lib/auth.js +26 -137
  334. package/dist/lib/auth.js.map +7 -1
  335. package/dist/lib/detect-languages.js +8 -113
  336. package/dist/lib/detect-languages.js.map +7 -1
  337. package/dist/lib/detect-tmux.js +9 -0
  338. package/dist/lib/detect-tmux.js.map +7 -0
  339. package/dist/lib/eval-analyzer.js +9 -89
  340. package/dist/lib/eval-analyzer.js.map +7 -1
  341. package/dist/lib/eval-benchmark.js +12 -92
  342. package/dist/lib/eval-benchmark.js.map +7 -1
  343. package/dist/lib/eval-conversation-handler.js +13 -200
  344. package/dist/lib/eval-conversation-handler.js.map +7 -1
  345. package/dist/lib/eval-executor.js +8 -83
  346. package/dist/lib/eval-executor.js.map +7 -1
  347. package/dist/lib/eval-grader.js +9 -123
  348. package/dist/lib/eval-grader.js.map +7 -1
  349. package/dist/lib/eval-meta-judge.js +9 -116
  350. package/dist/lib/eval-meta-judge.js.map +7 -1
  351. package/dist/lib/eval-trigger-tester.js +11 -96
  352. package/dist/lib/eval-trigger-tester.js.map +7 -1
  353. package/dist/lib/eval-worktree.js +8 -87
  354. package/dist/lib/eval-worktree.js.map +7 -1
  355. package/dist/lib/gateway-entry.js +20 -18
  356. package/dist/lib/gateway-entry.js.map +7 -1
  357. package/dist/lib/gateway-lifecycle.js +22 -97
  358. package/dist/lib/gateway-lifecycle.js.map +7 -1
  359. package/dist/lib/gateway.js +12 -216
  360. package/dist/lib/gateway.js.map +7 -1
  361. package/dist/lib/handlers/cron-close-stale-sessions.js +18 -7
  362. package/dist/lib/handlers/cron-close-stale-sessions.js.map +7 -1
  363. package/dist/lib/handlers/cron-data-integrity-audit.js +21 -15
  364. package/dist/lib/handlers/cron-data-integrity-audit.js.map +7 -1
  365. package/dist/lib/handlers/cron-refresh-skills.js +7 -90
  366. package/dist/lib/handlers/cron-refresh-skills.js.map +7 -1
  367. package/dist/lib/handlers/cron-suggest-instructions.js +14 -158
  368. package/dist/lib/handlers/cron-suggest-instructions.js.map +7 -1
  369. package/dist/lib/handlers/process-announcement.js +11 -0
  370. package/dist/lib/handlers/process-announcement.js.map +7 -0
  371. package/dist/lib/handlers/process-changelog.js +11 -0
  372. package/dist/lib/handlers/process-changelog.js.map +7 -0
  373. package/dist/lib/handlers/process-conversation.js +14 -35
  374. package/dist/lib/handlers/process-conversation.js.map +7 -1
  375. package/dist/lib/handlers/process-eval.js +15 -207
  376. package/dist/lib/handlers/process-eval.js.map +7 -1
  377. package/dist/lib/handlers/process-insights.js +14 -300
  378. package/dist/lib/handlers/process-insights.js.map +7 -1
  379. package/dist/lib/handlers/process-launch.js +16 -41
  380. package/dist/lib/handlers/process-launch.js.map +7 -1
  381. package/dist/lib/handlers/process-run-cleanup.js +13 -0
  382. package/dist/lib/handlers/process-run-cleanup.js.map +7 -0
  383. package/dist/lib/handlers/process-send-message.js +10 -0
  384. package/dist/lib/handlers/process-send-message.js.map +7 -0
  385. package/dist/lib/handlers/process-session-goal.js +11 -0
  386. package/dist/lib/handlers/process-session-goal.js.map +7 -0
  387. package/dist/lib/hooks-config.js +52 -544
  388. package/dist/lib/hooks-config.js.map +7 -1
  389. package/dist/lib/insights-prompts.js +12 -145
  390. package/dist/lib/insights-prompts.js.map +7 -1
  391. package/dist/lib/job-helpers.js +1 -0
  392. package/dist/lib/job-helpers.js.map +7 -0
  393. package/dist/lib/llm-client.js +16 -274
  394. package/dist/lib/llm-client.js.map +7 -1
  395. package/dist/lib/manual-tasks.js +22 -0
  396. package/dist/lib/manual-tasks.js.map +7 -0
  397. package/dist/lib/output.js +12 -36
  398. package/dist/lib/output.js.map +7 -1
  399. package/dist/lib/permanent-job-error.js +10 -23
  400. package/dist/lib/permanent-job-error.js.map +7 -1
  401. package/dist/lib/provider-aggregator.js +57 -55
  402. package/dist/lib/provider-aggregator.js.map +7 -1
  403. package/dist/lib/research-client.js +12 -0
  404. package/dist/lib/research-client.js.map +7 -0
  405. package/dist/lib/skills-loader.js +8 -51
  406. package/dist/lib/skills-loader.js.map +7 -1
  407. package/dist/lib/statusline-shim.js +16 -0
  408. package/dist/lib/statusline-shim.js.map +7 -0
  409. package/dist/lib/terminal-target-heartbeat.js +15 -0
  410. package/dist/lib/terminal-target-heartbeat.js.map +7 -0
  411. package/dist/lib/tmux.js +16 -0
  412. package/dist/lib/tmux.js.map +7 -0
  413. package/dist/lib/transcript-rate-limit-watcher.js +22 -0
  414. package/dist/lib/transcript-rate-limit-watcher.js.map +7 -0
  415. package/dist/lib/types.js +8 -7
  416. package/dist/lib/types.js.map +7 -1
  417. package/dist/lib/version-check.js +10 -106
  418. package/dist/lib/version-check.js.map +7 -1
  419. package/dist/lib/which.js +8 -0
  420. package/dist/lib/which.js.map +7 -0
  421. package/dist/lib/worktree.js +17 -0
  422. package/dist/lib/worktree.js.map +7 -0
  423. package/dist/opencode-IQ7X5YMJ.js +190 -0
  424. package/dist/opencode-IQ7X5YMJ.js.map +7 -0
  425. package/oclif.manifest.json +299 -66
  426. package/package.json +28 -10
  427. package/dist/base-command.d.ts +0 -12
  428. package/dist/base-command.d.ts.map +0 -1
  429. package/dist/commands/auth/create-key.d.ts +0 -11
  430. package/dist/commands/auth/create-key.d.ts.map +0 -1
  431. package/dist/commands/auth/login.d.ts +0 -11
  432. package/dist/commands/auth/login.d.ts.map +0 -1
  433. package/dist/commands/auth/logout.d.ts +0 -7
  434. package/dist/commands/auth/logout.d.ts.map +0 -1
  435. package/dist/commands/auth/revoke-key.d.ts +0 -10
  436. package/dist/commands/auth/revoke-key.d.ts.map +0 -1
  437. package/dist/commands/auth/status.d.ts +0 -7
  438. package/dist/commands/auth/status.d.ts.map +0 -1
  439. package/dist/commands/catalog/index.d.ts +0 -11
  440. package/dist/commands/catalog/index.d.ts.map +0 -1
  441. package/dist/commands/catalog/recommend.d.ts +0 -9
  442. package/dist/commands/catalog/recommend.d.ts.map +0 -1
  443. package/dist/commands/convert.d.ts +0 -15
  444. package/dist/commands/convert.d.ts.map +0 -1
  445. package/dist/commands/converters.d.ts +0 -12
  446. package/dist/commands/converters.d.ts.map +0 -1
  447. package/dist/commands/crons/list.d.ts +0 -7
  448. package/dist/commands/crons/list.d.ts.map +0 -1
  449. package/dist/commands/crons/run.d.ts +0 -13
  450. package/dist/commands/crons/run.d.ts.map +0 -1
  451. package/dist/commands/dashboard.d.ts +0 -10
  452. package/dist/commands/dashboard.d.ts.map +0 -1
  453. package/dist/commands/eval-targets/create.d.ts +0 -14
  454. package/dist/commands/eval-targets/create.d.ts.map +0 -1
  455. package/dist/commands/eval-targets/list.d.ts +0 -10
  456. package/dist/commands/eval-targets/list.d.ts.map +0 -1
  457. package/dist/commands/evals/benchmark.d.ts +0 -13
  458. package/dist/commands/evals/benchmark.d.ts.map +0 -1
  459. package/dist/commands/evals/compare.d.ts +0 -15
  460. package/dist/commands/evals/compare.d.ts.map +0 -1
  461. package/dist/commands/evals/create.d.ts +0 -17
  462. package/dist/commands/evals/create.d.ts.map +0 -1
  463. package/dist/commands/evals/listen.d.ts +0 -37
  464. package/dist/commands/evals/listen.d.ts.map +0 -1
  465. package/dist/commands/evals/listen.js +0 -188
  466. package/dist/commands/evals/listen.js.map +0 -1
  467. package/dist/commands/evals/listen.test.d.ts +0 -2
  468. package/dist/commands/evals/listen.test.d.ts.map +0 -1
  469. package/dist/commands/evals/listen.test.js +0 -48
  470. package/dist/commands/evals/listen.test.js.map +0 -1
  471. package/dist/commands/evals/optimize-description.d.ts +0 -22
  472. package/dist/commands/evals/optimize-description.d.ts.map +0 -1
  473. package/dist/commands/evals/optimize.d.ts +0 -22
  474. package/dist/commands/evals/optimize.d.ts.map +0 -1
  475. package/dist/commands/evals/run.d.ts +0 -21
  476. package/dist/commands/evals/run.d.ts.map +0 -1
  477. package/dist/commands/gateway/ensure.d.ts +0 -7
  478. package/dist/commands/gateway/ensure.d.ts.map +0 -1
  479. package/dist/commands/hooks/install.d.ts +0 -16
  480. package/dist/commands/hooks/install.d.ts.map +0 -1
  481. package/dist/commands/hooks/run.d.ts +0 -11
  482. package/dist/commands/hooks/run.d.ts.map +0 -1
  483. package/dist/commands/hooks/uninstall.d.ts +0 -7
  484. package/dist/commands/hooks/uninstall.d.ts.map +0 -1
  485. package/dist/commands/import.d.ts +0 -17
  486. package/dist/commands/import.d.ts.map +0 -1
  487. package/dist/commands/instructions/create.d.ts +0 -17
  488. package/dist/commands/instructions/create.d.ts.map +0 -1
  489. package/dist/commands/instructions/delete.d.ts +0 -13
  490. package/dist/commands/instructions/delete.d.ts.map +0 -1
  491. package/dist/commands/instructions/fork.d.ts +0 -10
  492. package/dist/commands/instructions/fork.d.ts.map +0 -1
  493. package/dist/commands/instructions/get.d.ts +0 -15
  494. package/dist/commands/instructions/get.d.ts.map +0 -1
  495. package/dist/commands/instructions/list.d.ts +0 -12
  496. package/dist/commands/instructions/list.d.ts.map +0 -1
  497. package/dist/commands/instructions/promote.d.ts +0 -14
  498. package/dist/commands/instructions/promote.d.ts.map +0 -1
  499. package/dist/commands/instructions/pull.d.ts +0 -9
  500. package/dist/commands/instructions/pull.d.ts.map +0 -1
  501. package/dist/commands/instructions/upstream.d.ts +0 -9
  502. package/dist/commands/instructions/upstream.d.ts.map +0 -1
  503. package/dist/commands/instructions/versions.d.ts +0 -12
  504. package/dist/commands/instructions/versions.d.ts.map +0 -1
  505. package/dist/commands/org/current.d.ts +0 -7
  506. package/dist/commands/org/current.d.ts.map +0 -1
  507. package/dist/commands/org/list.d.ts +0 -7
  508. package/dist/commands/org/list.d.ts.map +0 -1
  509. package/dist/commands/org/switch.d.ts +0 -13
  510. package/dist/commands/org/switch.d.ts.map +0 -1
  511. package/dist/commands/packs/add-instruction.d.ts +0 -11
  512. package/dist/commands/packs/add-instruction.d.ts.map +0 -1
  513. package/dist/commands/packs/apply.d.ts +0 -13
  514. package/dist/commands/packs/apply.d.ts.map +0 -1
  515. package/dist/commands/packs/create.d.ts +0 -13
  516. package/dist/commands/packs/create.d.ts.map +0 -1
  517. package/dist/commands/packs/fork.d.ts +0 -10
  518. package/dist/commands/packs/fork.d.ts.map +0 -1
  519. package/dist/commands/packs/get.d.ts +0 -10
  520. package/dist/commands/packs/get.d.ts.map +0 -1
  521. package/dist/commands/packs/list.d.ts +0 -22
  522. package/dist/commands/packs/list.d.ts.map +0 -1
  523. package/dist/commands/packs/remove-instruction.d.ts +0 -11
  524. package/dist/commands/packs/remove-instruction.d.ts.map +0 -1
  525. package/dist/commands/proxy/env.d.ts +0 -14
  526. package/dist/commands/proxy/env.d.ts.map +0 -1
  527. package/dist/commands/proxy/logs.d.ts +0 -11
  528. package/dist/commands/proxy/logs.d.ts.map +0 -1
  529. package/dist/commands/proxy/restart.d.ts +0 -11
  530. package/dist/commands/proxy/restart.d.ts.map +0 -1
  531. package/dist/commands/proxy/setup.d.ts +0 -23
  532. package/dist/commands/proxy/setup.d.ts.map +0 -1
  533. package/dist/commands/proxy/start.d.ts +0 -17
  534. package/dist/commands/proxy/start.d.ts.map +0 -1
  535. package/dist/commands/proxy/status.d.ts +0 -7
  536. package/dist/commands/proxy/status.d.ts.map +0 -1
  537. package/dist/commands/proxy/stop.d.ts +0 -8
  538. package/dist/commands/proxy/stop.d.ts.map +0 -1
  539. package/dist/commands/service/install.d.ts +0 -33
  540. package/dist/commands/service/install.d.ts.map +0 -1
  541. package/dist/commands/service/install.test.d.ts +0 -2
  542. package/dist/commands/service/install.test.d.ts.map +0 -1
  543. package/dist/commands/service/install.test.js +0 -345
  544. package/dist/commands/service/install.test.js.map +0 -1
  545. package/dist/commands/service/status.d.ts +0 -6
  546. package/dist/commands/service/status.d.ts.map +0 -1
  547. package/dist/commands/service/uninstall.d.ts +0 -6
  548. package/dist/commands/service/uninstall.d.ts.map +0 -1
  549. package/dist/commands/sessions/analyze.d.ts +0 -10
  550. package/dist/commands/sessions/analyze.d.ts.map +0 -1
  551. package/dist/commands/sessions/end.d.ts +0 -9
  552. package/dist/commands/sessions/end.d.ts.map +0 -1
  553. package/dist/commands/sessions/import.d.ts +0 -13
  554. package/dist/commands/sessions/import.d.ts.map +0 -1
  555. package/dist/commands/sessions/list.d.ts +0 -11
  556. package/dist/commands/sessions/list.d.ts.map +0 -1
  557. package/dist/commands/sessions/start.d.ts +0 -11
  558. package/dist/commands/sessions/start.d.ts.map +0 -1
  559. package/dist/commands/signals/report.d.ts +0 -10
  560. package/dist/commands/signals/report.d.ts.map +0 -1
  561. package/dist/commands/signals/report.test.d.ts +0 -2
  562. package/dist/commands/signals/report.test.d.ts.map +0 -1
  563. package/dist/commands/signals/report.test.js +0 -65
  564. package/dist/commands/signals/report.test.js.map +0 -1
  565. package/dist/commands/skills/export-approved.d.ts +0 -10
  566. package/dist/commands/skills/export-approved.d.ts.map +0 -1
  567. package/dist/commands/skills/install.d.ts +0 -15
  568. package/dist/commands/skills/install.d.ts.map +0 -1
  569. package/dist/commands/skills/list.d.ts +0 -11
  570. package/dist/commands/skills/list.d.ts.map +0 -1
  571. package/dist/commands/skills/publish.d.ts +0 -17
  572. package/dist/commands/skills/publish.d.ts.map +0 -1
  573. package/dist/commands/skills/search.d.ts +0 -17
  574. package/dist/commands/skills/search.d.ts.map +0 -1
  575. package/dist/commands/skills/update.d.ts +0 -10
  576. package/dist/commands/skills/update.d.ts.map +0 -1
  577. package/dist/commands/suggestions/accept.d.ts +0 -16
  578. package/dist/commands/suggestions/accept.d.ts.map +0 -1
  579. package/dist/commands/suggestions/accept.test.d.ts +0 -2
  580. package/dist/commands/suggestions/accept.test.d.ts.map +0 -1
  581. package/dist/commands/suggestions/accept.test.js +0 -52
  582. package/dist/commands/suggestions/accept.test.js.map +0 -1
  583. package/dist/commands/suggestions/dismiss.d.ts +0 -10
  584. package/dist/commands/suggestions/dismiss.d.ts.map +0 -1
  585. package/dist/commands/suggestions/list.d.ts +0 -10
  586. package/dist/commands/suggestions/list.d.ts.map +0 -1
  587. package/dist/commands/suggestions/refresh.d.ts +0 -7
  588. package/dist/commands/suggestions/refresh.d.ts.map +0 -1
  589. package/dist/dashboard/Dashboard.d.ts +0 -3
  590. package/dist/dashboard/Dashboard.d.ts.map +0 -1
  591. package/dist/dashboard/data.d.ts +0 -11
  592. package/dist/dashboard/data.d.ts.map +0 -1
  593. package/dist/dashboard/panels/friction.d.ts +0 -7
  594. package/dist/dashboard/panels/friction.d.ts.map +0 -1
  595. package/dist/dashboard/panels/insights.d.ts +0 -8
  596. package/dist/dashboard/panels/insights.d.ts.map +0 -1
  597. package/dist/dashboard/panels/instructions.d.ts +0 -9
  598. package/dist/dashboard/panels/instructions.d.ts.map +0 -1
  599. package/dist/dashboard/panels/outcomes.d.ts +0 -7
  600. package/dist/dashboard/panels/outcomes.d.ts.map +0 -1
  601. package/dist/dashboard/panels/overview.d.ts +0 -8
  602. package/dist/dashboard/panels/overview.d.ts.map +0 -1
  603. package/dist/dashboard/panels/shared.d.ts +0 -17
  604. package/dist/dashboard/panels/shared.d.ts.map +0 -1
  605. package/dist/dashboard/types.d.ts +0 -80
  606. package/dist/dashboard/types.d.ts.map +0 -1
  607. package/dist/index.d.ts +0 -2
  608. package/dist/index.d.ts.map +0 -1
  609. package/dist/lib/active-org-refresh.d.ts +0 -22
  610. package/dist/lib/active-org-refresh.d.ts.map +0 -1
  611. package/dist/lib/active-org-refresh.test.d.ts +0 -2
  612. package/dist/lib/active-org-refresh.test.d.ts.map +0 -1
  613. package/dist/lib/active-org-refresh.test.js +0 -190
  614. package/dist/lib/active-org-refresh.test.js.map +0 -1
  615. package/dist/lib/active-org.d.ts +0 -43
  616. package/dist/lib/active-org.d.ts.map +0 -1
  617. package/dist/lib/active-org.test.d.ts +0 -2
  618. package/dist/lib/active-org.test.d.ts.map +0 -1
  619. package/dist/lib/active-org.test.js +0 -147
  620. package/dist/lib/active-org.test.js.map +0 -1
  621. package/dist/lib/api-client.d.ts +0 -17
  622. package/dist/lib/api-client.d.ts.map +0 -1
  623. package/dist/lib/api-client.test.d.ts +0 -2
  624. package/dist/lib/api-client.test.d.ts.map +0 -1
  625. package/dist/lib/api-client.test.js +0 -161
  626. package/dist/lib/api-client.test.js.map +0 -1
  627. package/dist/lib/auth.d.ts +0 -27
  628. package/dist/lib/auth.d.ts.map +0 -1
  629. package/dist/lib/auth.test.d.ts +0 -2
  630. package/dist/lib/auth.test.d.ts.map +0 -1
  631. package/dist/lib/auth.test.js +0 -110
  632. package/dist/lib/auth.test.js.map +0 -1
  633. package/dist/lib/cron-registry.d.ts +0 -47
  634. package/dist/lib/cron-registry.d.ts.map +0 -1
  635. package/dist/lib/cron-registry.js +0 -102
  636. package/dist/lib/cron-registry.js.map +0 -1
  637. package/dist/lib/cron-registry.test.d.ts +0 -2
  638. package/dist/lib/cron-registry.test.d.ts.map +0 -1
  639. package/dist/lib/cron-registry.test.js +0 -136
  640. package/dist/lib/cron-registry.test.js.map +0 -1
  641. package/dist/lib/cron-runner.d.ts +0 -16
  642. package/dist/lib/cron-runner.d.ts.map +0 -1
  643. package/dist/lib/cron-runner.js +0 -68
  644. package/dist/lib/cron-runner.js.map +0 -1
  645. package/dist/lib/detect-languages.d.ts +0 -7
  646. package/dist/lib/detect-languages.d.ts.map +0 -1
  647. package/dist/lib/detect-languages.test.d.ts +0 -2
  648. package/dist/lib/detect-languages.test.d.ts.map +0 -1
  649. package/dist/lib/detect-languages.test.js +0 -29
  650. package/dist/lib/detect-languages.test.js.map +0 -1
  651. package/dist/lib/eval-analyzer.d.ts +0 -23
  652. package/dist/lib/eval-analyzer.d.ts.map +0 -1
  653. package/dist/lib/eval-benchmark.d.ts +0 -17
  654. package/dist/lib/eval-benchmark.d.ts.map +0 -1
  655. package/dist/lib/eval-conversation-handler.d.ts +0 -9
  656. package/dist/lib/eval-conversation-handler.d.ts.map +0 -1
  657. package/dist/lib/eval-executor.d.ts +0 -21
  658. package/dist/lib/eval-executor.d.ts.map +0 -1
  659. package/dist/lib/eval-executor.test.d.ts +0 -2
  660. package/dist/lib/eval-executor.test.d.ts.map +0 -1
  661. package/dist/lib/eval-executor.test.js +0 -8
  662. package/dist/lib/eval-executor.test.js.map +0 -1
  663. package/dist/lib/eval-grader.d.ts +0 -38
  664. package/dist/lib/eval-grader.d.ts.map +0 -1
  665. package/dist/lib/eval-grader.test.d.ts +0 -2
  666. package/dist/lib/eval-grader.test.d.ts.map +0 -1
  667. package/dist/lib/eval-grader.test.js +0 -8
  668. package/dist/lib/eval-grader.test.js.map +0 -1
  669. package/dist/lib/eval-meta-judge.d.ts +0 -28
  670. package/dist/lib/eval-meta-judge.d.ts.map +0 -1
  671. package/dist/lib/eval-trigger-tester.d.ts +0 -19
  672. package/dist/lib/eval-trigger-tester.d.ts.map +0 -1
  673. package/dist/lib/eval-worktree.d.ts +0 -11
  674. package/dist/lib/eval-worktree.d.ts.map +0 -1
  675. package/dist/lib/eval-worktree.test.d.ts +0 -2
  676. package/dist/lib/eval-worktree.test.d.ts.map +0 -1
  677. package/dist/lib/eval-worktree.test.js +0 -68
  678. package/dist/lib/eval-worktree.test.js.map +0 -1
  679. package/dist/lib/gateway-entry.d.ts +0 -3
  680. package/dist/lib/gateway-entry.d.ts.map +0 -1
  681. package/dist/lib/gateway-lifecycle.d.ts +0 -9
  682. package/dist/lib/gateway-lifecycle.d.ts.map +0 -1
  683. package/dist/lib/gateway.d.ts +0 -11
  684. package/dist/lib/gateway.d.ts.map +0 -1
  685. package/dist/lib/graphile-worker-runner.d.ts +0 -124
  686. package/dist/lib/graphile-worker-runner.d.ts.map +0 -1
  687. package/dist/lib/graphile-worker-runner.js +0 -526
  688. package/dist/lib/graphile-worker-runner.js.map +0 -1
  689. package/dist/lib/graphile-worker-runner.test.d.ts +0 -2
  690. package/dist/lib/graphile-worker-runner.test.d.ts.map +0 -1
  691. package/dist/lib/graphile-worker-runner.test.js +0 -153
  692. package/dist/lib/graphile-worker-runner.test.js.map +0 -1
  693. package/dist/lib/handlers/cron-close-stale-sessions.d.ts +0 -3
  694. package/dist/lib/handlers/cron-close-stale-sessions.d.ts.map +0 -1
  695. package/dist/lib/handlers/cron-data-integrity-audit.d.ts +0 -3
  696. package/dist/lib/handlers/cron-data-integrity-audit.d.ts.map +0 -1
  697. package/dist/lib/handlers/cron-refresh-skills.d.ts +0 -3
  698. package/dist/lib/handlers/cron-refresh-skills.d.ts.map +0 -1
  699. package/dist/lib/handlers/cron-refresh-skills.test.d.ts +0 -2
  700. package/dist/lib/handlers/cron-refresh-skills.test.d.ts.map +0 -1
  701. package/dist/lib/handlers/cron-refresh-skills.test.js +0 -114
  702. package/dist/lib/handlers/cron-refresh-skills.test.js.map +0 -1
  703. package/dist/lib/handlers/cron-regenerate-insights.d.ts +0 -3
  704. package/dist/lib/handlers/cron-regenerate-insights.d.ts.map +0 -1
  705. package/dist/lib/handlers/cron-regenerate-insights.js +0 -6
  706. package/dist/lib/handlers/cron-regenerate-insights.js.map +0 -1
  707. package/dist/lib/handlers/cron-suggest-instructions.d.ts +0 -3
  708. package/dist/lib/handlers/cron-suggest-instructions.d.ts.map +0 -1
  709. package/dist/lib/handlers/cron-suggest-instructions.test.d.ts +0 -2
  710. package/dist/lib/handlers/cron-suggest-instructions.test.d.ts.map +0 -1
  711. package/dist/lib/handlers/cron-suggest-instructions.test.js +0 -80
  712. package/dist/lib/handlers/cron-suggest-instructions.test.js.map +0 -1
  713. package/dist/lib/handlers/process-conversation.d.ts +0 -35
  714. package/dist/lib/handlers/process-conversation.d.ts.map +0 -1
  715. package/dist/lib/handlers/process-eval.d.ts +0 -32
  716. package/dist/lib/handlers/process-eval.d.ts.map +0 -1
  717. package/dist/lib/handlers/process-insights.d.ts +0 -39
  718. package/dist/lib/handlers/process-insights.d.ts.map +0 -1
  719. package/dist/lib/handlers/process-launch.d.ts +0 -29
  720. package/dist/lib/handlers/process-launch.d.ts.map +0 -1
  721. package/dist/lib/hooks-config.d.ts +0 -119
  722. package/dist/lib/hooks-config.d.ts.map +0 -1
  723. package/dist/lib/hooks-config.test.d.ts +0 -2
  724. package/dist/lib/hooks-config.test.d.ts.map +0 -1
  725. package/dist/lib/hooks-config.test.js +0 -231
  726. package/dist/lib/hooks-config.test.js.map +0 -1
  727. package/dist/lib/insights-prompts.d.ts +0 -13
  728. package/dist/lib/insights-prompts.d.ts.map +0 -1
  729. package/dist/lib/llm-client.d.ts +0 -26
  730. package/dist/lib/llm-client.d.ts.map +0 -1
  731. package/dist/lib/llm-client.test.d.ts +0 -2
  732. package/dist/lib/llm-client.test.d.ts.map +0 -1
  733. package/dist/lib/llm-client.test.js +0 -62
  734. package/dist/lib/llm-client.test.js.map +0 -1
  735. package/dist/lib/mirror-writer-db.d.ts +0 -12
  736. package/dist/lib/mirror-writer-db.d.ts.map +0 -1
  737. package/dist/lib/mirror-writer-db.js +0 -51
  738. package/dist/lib/mirror-writer-db.js.map +0 -1
  739. package/dist/lib/mirror-writer.d.ts +0 -35
  740. package/dist/lib/mirror-writer.d.ts.map +0 -1
  741. package/dist/lib/mirror-writer.js +0 -27
  742. package/dist/lib/mirror-writer.js.map +0 -1
  743. package/dist/lib/mirror-writer.test.d.ts +0 -2
  744. package/dist/lib/mirror-writer.test.d.ts.map +0 -1
  745. package/dist/lib/mirror-writer.test.js +0 -47
  746. package/dist/lib/mirror-writer.test.js.map +0 -1
  747. package/dist/lib/output.d.ts +0 -4
  748. package/dist/lib/output.d.ts.map +0 -1
  749. package/dist/lib/output.test.d.ts +0 -2
  750. package/dist/lib/output.test.d.ts.map +0 -1
  751. package/dist/lib/output.test.js +0 -71
  752. package/dist/lib/output.test.js.map +0 -1
  753. package/dist/lib/permanent-job-error.d.ts +0 -17
  754. package/dist/lib/permanent-job-error.d.ts.map +0 -1
  755. package/dist/lib/permanent-job-error.test.d.ts +0 -2
  756. package/dist/lib/permanent-job-error.test.d.ts.map +0 -1
  757. package/dist/lib/permanent-job-error.test.js +0 -29
  758. package/dist/lib/permanent-job-error.test.js.map +0 -1
  759. package/dist/lib/provider-aggregator.d.ts +0 -24
  760. package/dist/lib/provider-aggregator.d.ts.map +0 -1
  761. package/dist/lib/provider-aggregator.test.d.ts +0 -2
  762. package/dist/lib/provider-aggregator.test.d.ts.map +0 -1
  763. package/dist/lib/provider-aggregator.test.js +0 -103
  764. package/dist/lib/provider-aggregator.test.js.map +0 -1
  765. package/dist/lib/skills-loader.d.ts +0 -6
  766. package/dist/lib/skills-loader.d.ts.map +0 -1
  767. package/dist/lib/types.d.ts +0 -48
  768. package/dist/lib/types.d.ts.map +0 -1
  769. package/dist/lib/version-check.d.ts +0 -11
  770. package/dist/lib/version-check.d.ts.map +0 -1
  771. package/dist/test-helpers.d.ts +0 -58
  772. package/dist/test-helpers.d.ts.map +0 -1
  773. package/dist/test-helpers.js +0 -58
  774. package/dist/test-helpers.js.map +0 -1
@@ -1,310 +1,310 @@
1
- import { Flags } from '@oclif/core';
2
- import { execSync, spawn, spawnSync } from 'node:child_process';
3
- import { appendFileSync, existsSync, mkdirSync, openSync, readFileSync, writeFileSync } from 'node:fs';
4
- import { homedir } from 'node:os';
5
- import { join, resolve } from 'node:path';
6
- import { BaseCommand } from '../../base-command.js';
7
- import { isAuthenticated } from '../../lib/auth.js';
8
- const DEFAULT_PORT = 8788;
9
- const CONFIG_DIR = join(homedir(), '.config', 'rulemetric');
10
- const PID_FILE = join(CONFIG_DIR, 'proxy.pid');
11
- const LOG_FILE = join(CONFIG_DIR, 'proxy.log');
12
- const DOCKER_IMAGE = 'rulemetric/proxy';
13
- const DOCKER_CONTAINER = 'rulemetric-proxy';
1
+ import {
2
+ findBinary
3
+ } from "../../chunk-ERPMDAO3.js";
4
+ import {
5
+ BaseCommand
6
+ } from "../../chunk-S56LOTGQ.js";
7
+ import "../../chunk-OGVORIFM.js";
8
+ import "../../chunk-2AM54TUK.js";
9
+ import "../../chunk-EJOI2ZGU.js";
10
+ import {
11
+ isAuthenticated
12
+ } from "../../chunk-KZRFUXGF.js";
13
+ import "../../chunk-EKJ2CABV.js";
14
+ import "../../chunk-NSBPE2FW.js";
15
+
16
+ // src/commands/proxy/start.ts
17
+ import { Flags } from "@oclif/core";
18
+ import { execSync, spawn, spawnSync } from "node:child_process";
19
+ import { appendFileSync, existsSync, mkdirSync, openSync, readFileSync, writeFileSync } from "node:fs";
20
+ import { homedir } from "node:os";
21
+ import { join, resolve } from "node:path";
22
+ var DEFAULT_PORT = 8788;
23
+ var CONFIG_DIR = join(homedir(), ".config", "rulemetric");
24
+ var PID_FILE = join(CONFIG_DIR, "proxy.pid");
25
+ var LOG_FILE = join(CONFIG_DIR, "proxy.log");
26
+ var DOCKER_IMAGE = "rulemetric/proxy";
27
+ var DOCKER_CONTAINER = "rulemetric-proxy";
14
28
  function findAddonPath() {
15
- const candidates = [
16
- resolve(import.meta.dirname, '../../../../../packages/proxy/addon/rulemetric_addon.py'),
17
- resolve(import.meta.dirname, '../../../node_modules/@rulemetric/proxy/addon/rulemetric_addon.py'),
18
- resolve(import.meta.dirname, '../../../../../node_modules/@rulemetric/proxy/addon/rulemetric_addon.py'),
19
- ];
20
- for (const p of candidates) {
21
- if (existsSync(p))
22
- return p;
23
- }
24
- throw new Error('Could not find rulemetric_addon.py. Is @rulemetric/proxy installed?\n' +
25
- 'Searched:\n' + candidates.map(c => ` ${c}`).join('\n'));
29
+ const candidates = [
30
+ resolve(import.meta.dirname, "../../../../../packages/proxy/addon/rulemetric_addon.py"),
31
+ resolve(import.meta.dirname, "../../../node_modules/@rulemetric/proxy/addon/rulemetric_addon.py"),
32
+ resolve(import.meta.dirname, "../../../../../node_modules/@rulemetric/proxy/addon/rulemetric_addon.py")
33
+ ];
34
+ for (const p of candidates) {
35
+ if (existsSync(p)) return p;
36
+ }
37
+ throw new Error(
38
+ "Could not find rulemetric_addon.py. Is @rulemetric/proxy installed?\nSearched:\n" + candidates.map((c) => ` ${c}`).join("\n")
39
+ );
26
40
  }
27
41
  function findDockerfilePath() {
28
- const candidates = [
29
- resolve(import.meta.dirname, '../../../../../packages/proxy'),
30
- resolve(import.meta.dirname, '../../../node_modules/@rulemetric/proxy'),
31
- resolve(import.meta.dirname, '../../../../../node_modules/@rulemetric/proxy'),
32
- ];
33
- for (const p of candidates) {
34
- if (existsSync(join(p, 'Dockerfile')))
35
- return p;
36
- }
37
- throw new Error('Could not find proxy Dockerfile. Is @rulemetric/proxy installed?');
42
+ const candidates = [
43
+ resolve(import.meta.dirname, "../../../../../packages/proxy"),
44
+ resolve(import.meta.dirname, "../../../node_modules/@rulemetric/proxy"),
45
+ resolve(import.meta.dirname, "../../../../../node_modules/@rulemetric/proxy")
46
+ ];
47
+ for (const p of candidates) {
48
+ if (existsSync(join(p, "Dockerfile"))) return p;
49
+ }
50
+ throw new Error("Could not find proxy Dockerfile. Is @rulemetric/proxy installed?");
38
51
  }
39
52
  function dockerImageExists() {
40
- const result = spawnSync('docker', ['image', 'inspect', DOCKER_IMAGE], { stdio: 'ignore' });
41
- return result.status === 0;
53
+ const result = spawnSync("docker", ["image", "inspect", DOCKER_IMAGE], { stdio: "ignore" });
54
+ return result.status === 0;
42
55
  }
43
56
  function dockerContainerRunning() {
44
- const result = spawnSync('docker', ['container', 'inspect', '-f', '{{.State.Running}}', DOCKER_CONTAINER], {
45
- encoding: 'utf-8',
46
- stdio: ['ignore', 'pipe', 'ignore'],
47
- });
48
- return result.status === 0 && result.stdout?.trim() === 'true';
57
+ const result = spawnSync("docker", ["container", "inspect", "-f", "{{.State.Running}}", DOCKER_CONTAINER], {
58
+ encoding: "utf-8",
59
+ stdio: ["ignore", "pipe", "ignore"]
60
+ });
61
+ return result.status === 0 && result.stdout?.trim() === "true";
49
62
  }
50
- export default class ProxyStart extends BaseCommand {
51
- static description = 'Start context capture proxy';
52
- static examples = [
53
- '<%= config.bin %> proxy start',
54
- '<%= config.bin %> proxy start --docker',
55
- '<%= config.bin %> proxy start --port 9090',
56
- '<%= config.bin %> proxy start --web',
57
- ];
58
- static flags = {
59
- port: Flags.integer({ char: 'p', default: DEFAULT_PORT, description: 'Proxy listen port' }),
60
- docker: Flags.boolean({ char: 'd', default: false, description: 'Run proxy in Docker (no local mitmproxy needed)' }),
61
- web: Flags.boolean({ default: false, description: 'Launch mitmweb debug UI instead of mitmdump (local mode only)' }),
62
- 'skip-checks': Flags.boolean({ default: false, description: 'Skip prerequisite checks' }),
63
- build: Flags.boolean({ default: false, description: 'Force rebuild Docker image' }),
63
+ var ProxyStart = class _ProxyStart extends BaseCommand {
64
+ static description = "Start context capture proxy";
65
+ static examples = [
66
+ "<%= config.bin %> proxy start",
67
+ "<%= config.bin %> proxy start --docker",
68
+ "<%= config.bin %> proxy start --port 9090",
69
+ "<%= config.bin %> proxy start --web"
70
+ ];
71
+ static flags = {
72
+ port: Flags.integer({ char: "p", default: DEFAULT_PORT, description: "Proxy listen port" }),
73
+ docker: Flags.boolean({ char: "d", default: false, description: "Run proxy in Docker (no local mitmproxy needed)" }),
74
+ web: Flags.boolean({ default: false, description: "Launch mitmweb debug UI instead of mitmdump (local mode only)" }),
75
+ "skip-checks": Flags.boolean({ default: false, description: "Skip prerequisite checks" }),
76
+ build: Flags.boolean({ default: false, description: "Force rebuild Docker image" })
77
+ };
78
+ async run() {
79
+ const { flags } = await this.parse(_ProxyStart);
80
+ const port = flags.port;
81
+ if (flags.docker) {
82
+ await this.startDocker(port, flags.build);
83
+ } else {
84
+ await this.startLocal(port, flags.web, flags["skip-checks"]);
85
+ }
86
+ }
87
+ async startDocker(port, forceBuild) {
88
+ try {
89
+ execSync("docker info", { stdio: "ignore" });
90
+ } catch {
91
+ this.error("Docker is not running. Start Docker Desktop and try again.");
92
+ }
93
+ if (dockerContainerRunning()) {
94
+ this.error(`Proxy container already running. Stop it first: rulemetric proxy stop`);
95
+ }
96
+ const composeFile = this.findComposeFile();
97
+ const certDir = join(homedir(), ".mitmproxy");
98
+ mkdirSync(certDir, { recursive: true });
99
+ const tmpDir = process.env.TMPDIR || "/tmp";
100
+ mkdirSync(join(tmpDir, "rulemetric"), { recursive: true });
101
+ const envOverrides = {
102
+ PROXY_PORT: String(port),
103
+ RULEMETRIC_PROJECT_PATH: process.cwd()
64
104
  };
65
- async run() {
66
- const { flags } = await this.parse(ProxyStart);
67
- const port = flags.port;
68
- if (flags.docker) {
69
- await this.startDocker(port, flags.build);
70
- }
71
- else {
72
- await this.startLocal(port, flags.web, flags['skip-checks']);
105
+ if (!process.env.RULEMETRIC_API_KEY && !process.env.RULEMETRIC_ACCESS_TOKEN) {
106
+ const envFile = join(homedir(), ".config", "rulemetric", "env");
107
+ if (existsSync(envFile)) {
108
+ for (const line of readFileSync(envFile, "utf-8").split("\n")) {
109
+ const trimmed = line.trim();
110
+ if (trimmed && !trimmed.startsWith("#") && trimmed.includes("=")) {
111
+ const [key, ...rest] = trimmed.split("=");
112
+ envOverrides[key] = rest.join("=");
113
+ }
73
114
  }
115
+ }
74
116
  }
75
- async startDocker(port, forceBuild) {
76
- // Check Docker is available
77
- try {
78
- execSync('docker info', { stdio: 'ignore' });
79
- }
80
- catch {
81
- this.error('Docker is not running. Start Docker Desktop and try again.');
82
- }
83
- // Check if already running
84
- if (dockerContainerRunning()) {
85
- this.error(`Proxy container already running. Stop it first: rulemetric proxy stop`);
86
- }
87
- // Find the compose file (monorepo root or project root)
88
- const composeFile = this.findComposeFile();
89
- // Ensure mount dirs exist
90
- const certDir = join(homedir(), '.mitmproxy');
91
- mkdirSync(certDir, { recursive: true });
92
- const tmpDir = process.env.TMPDIR || '/tmp';
93
- mkdirSync(join(tmpDir, 'rulemetric'), { recursive: true });
94
- // Load auth from env file if not in environment
95
- const envOverrides = {
96
- PROXY_PORT: String(port),
97
- RULEMETRIC_PROJECT_PATH: process.cwd(),
98
- };
99
- if (!process.env.RULEMETRIC_API_KEY && !process.env.RULEMETRIC_ACCESS_TOKEN) {
100
- const envFile = join(homedir(), '.config', 'rulemetric', 'env');
101
- if (existsSync(envFile)) {
102
- for (const line of readFileSync(envFile, 'utf-8').split('\n')) {
103
- const trimmed = line.trim();
104
- if (trimmed && !trimmed.startsWith('#') && trimmed.includes('=')) {
105
- const [key, ...rest] = trimmed.split('=');
106
- envOverrides[key] = rest.join('=');
107
- }
108
- }
109
- }
110
- }
111
- if (composeFile) {
112
- // Use docker compose
113
- const composeEnv = { ...process.env, ...envOverrides };
114
- const buildFlag = forceBuild ? '--build' : '';
115
- const args = ['compose', '-f', composeFile, 'up', '-d', 'proxy'];
116
- if (forceBuild)
117
- args.splice(4, 0, '--build');
118
- this.log(forceBuild ? 'Building and starting proxy via Docker Compose...' : 'Starting proxy via Docker Compose...');
119
- const result = spawnSync('docker', args, {
120
- env: composeEnv,
121
- stdio: 'inherit',
122
- });
123
- if (result.status !== 0) {
124
- this.error('Docker Compose failed. Try: docker compose -f docker-compose.yml up proxy');
125
- }
117
+ if (composeFile) {
118
+ const composeEnv = { ...process.env, ...envOverrides };
119
+ const buildFlag = forceBuild ? "--build" : "";
120
+ const args = ["compose", "-f", composeFile, "up", "-d", "proxy"];
121
+ if (forceBuild) args.splice(4, 0, "--build");
122
+ this.log(forceBuild ? "Building and starting proxy via Docker Compose..." : "Starting proxy via Docker Compose...");
123
+ const result = spawnSync("docker", args, {
124
+ env: composeEnv,
125
+ stdio: "inherit"
126
+ });
127
+ if (result.status !== 0) {
128
+ this.error("Docker Compose failed. Try: docker compose -f docker-compose.yml up proxy");
129
+ }
130
+ } else {
131
+ if (forceBuild || !dockerImageExists()) {
132
+ const proxyDir = findDockerfilePath();
133
+ this.log("Building proxy Docker image...");
134
+ const build = spawnSync("docker", ["build", "-t", DOCKER_IMAGE, proxyDir], { stdio: "inherit" });
135
+ if (build.status !== 0) {
136
+ this.error("Docker build failed");
126
137
  }
127
- else {
128
- // Fallback: raw docker run
129
- if (forceBuild || !dockerImageExists()) {
130
- const proxyDir = findDockerfilePath();
131
- this.log('Building proxy Docker image...');
132
- const build = spawnSync('docker', ['build', '-t', DOCKER_IMAGE, proxyDir], { stdio: 'inherit' });
133
- if (build.status !== 0) {
134
- this.error('Docker build failed');
135
- }
136
- }
137
- spawnSync('docker', ['rm', '-f', DOCKER_CONTAINER], { stdio: 'ignore' });
138
- const envArgs = [];
139
- for (const [key, val] of Object.entries(envOverrides)) {
140
- envArgs.push('-e', `${key}=${val}`);
141
- }
142
- // Pass through from current env
143
- for (const key of ['RULEMETRIC_API_URL', 'RULEMETRIC_API_KEY', 'RULEMETRIC_ACCESS_TOKEN']) {
144
- if (process.env[key])
145
- envArgs.push('-e', `${key}=${process.env[key]}`);
146
- }
147
- const dockerArgs = [
148
- 'run', '-d',
149
- '--name', DOCKER_CONTAINER,
150
- '-p', `${port}:8787`,
151
- '-v', `${certDir}:/root/.mitmproxy`,
152
- '-v', `${join(tmpDir, 'rulemetric')}:/tmp/rulemetric:ro`,
153
- ...envArgs,
154
- DOCKER_IMAGE,
155
- ];
156
- const result = spawnSync('docker', dockerArgs, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] });
157
- if (result.status !== 0) {
158
- this.error(`Failed to start container: ${result.stderr}`);
159
- }
160
- }
161
- // Write marker so proxy stop knows it's Docker
162
- mkdirSync(CONFIG_DIR, { recursive: true });
163
- writeFileSync(PID_FILE, `docker:${DOCKER_CONTAINER}`);
164
- // Wait for container to be ready
165
- await new Promise(resolve => setTimeout(resolve, 2000));
166
- const inspectResult = spawnSync('docker', ['container', 'inspect', '-f', '{{.Id}}', DOCKER_CONTAINER], {
167
- encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'],
168
- });
169
- const containerId = inspectResult.stdout?.trim().slice(0, 12) || 'unknown';
170
- this.log(`Proxy running in Docker on localhost:${port} (container: ${containerId})`);
171
- this.log('');
172
- this.log('View logs: rulemetric proxy logs -f');
138
+ }
139
+ spawnSync("docker", ["rm", "-f", DOCKER_CONTAINER], { stdio: "ignore" });
140
+ const envArgs = [];
141
+ for (const [key, val] of Object.entries(envOverrides)) {
142
+ envArgs.push("-e", `${key}=${val}`);
143
+ }
144
+ for (const key of ["RULEMETRIC_API_URL", "RULEMETRIC_API_KEY", "RULEMETRIC_ACCESS_TOKEN"]) {
145
+ if (process.env[key]) envArgs.push("-e", `${key}=${process.env[key]}`);
146
+ }
147
+ const dockerArgs = [
148
+ "run",
149
+ "-d",
150
+ "--name",
151
+ DOCKER_CONTAINER,
152
+ "-p",
153
+ `${port}:8787`,
154
+ "-v",
155
+ `${certDir}:/root/.mitmproxy`,
156
+ "-v",
157
+ `${join(tmpDir, "rulemetric")}:/tmp/rulemetric:ro`,
158
+ ...envArgs,
159
+ DOCKER_IMAGE
160
+ ];
161
+ const result = spawnSync("docker", dockerArgs, { encoding: "utf-8", stdio: ["ignore", "pipe", "pipe"] });
162
+ if (result.status !== 0) {
163
+ this.error(`Failed to start container: ${result.stderr}`);
164
+ }
173
165
  }
174
- findComposeFile() {
175
- const candidates = [
176
- join(process.cwd(), 'docker-compose.yml'),
177
- resolve(import.meta.dirname, '../../../../../docker-compose.yml'),
178
- ];
179
- for (const p of candidates) {
180
- if (existsSync(p))
181
- return p;
182
- }
183
- return null;
166
+ mkdirSync(CONFIG_DIR, { recursive: true });
167
+ writeFileSync(PID_FILE, `docker:${DOCKER_CONTAINER}`);
168
+ await new Promise((resolve2) => setTimeout(resolve2, 2e3));
169
+ const inspectResult = spawnSync("docker", ["container", "inspect", "-f", "{{.Id}}", DOCKER_CONTAINER], {
170
+ encoding: "utf-8",
171
+ stdio: ["ignore", "pipe", "ignore"]
172
+ });
173
+ const containerId = inspectResult.stdout?.trim().slice(0, 12) || "unknown";
174
+ this.log(`Proxy running in Docker on localhost:${port} (container: ${containerId})`);
175
+ this.log("");
176
+ this.log("View logs: rulemetric proxy logs -f");
177
+ }
178
+ findComposeFile() {
179
+ const candidates = [
180
+ join(process.cwd(), "docker-compose.yml"),
181
+ resolve(import.meta.dirname, "../../../../../docker-compose.yml")
182
+ ];
183
+ for (const p of candidates) {
184
+ if (existsSync(p)) return p;
184
185
  }
185
- async startLocal(port, useWeb, skipChecks) {
186
- // Check if already running
187
- if (existsSync(PID_FILE)) {
188
- const content = readFileSync(PID_FILE, 'utf-8').trim();
189
- if (content.startsWith('docker:')) {
190
- this.error('Proxy is running in Docker. Stop it first: rulemetric proxy stop');
191
- }
192
- const pid = Number.parseInt(content, 10);
193
- if (!Number.isNaN(pid)) {
194
- try {
195
- process.kill(pid, 0);
196
- this.error(`Proxy already running (PID ${pid}). Stop it first: rulemetric proxy stop`);
197
- }
198
- catch { /* stale PID, continue */ }
199
- }
200
- }
201
- // Check mitmproxy is installed
202
- const binary = useWeb ? 'mitmweb' : 'mitmdump';
186
+ return null;
187
+ }
188
+ async startLocal(port, useWeb, skipChecks) {
189
+ if (existsSync(PID_FILE)) {
190
+ const content = readFileSync(PID_FILE, "utf-8").trim();
191
+ if (content.startsWith("docker:")) {
192
+ this.error("Proxy is running in Docker. Stop it first: rulemetric proxy stop");
193
+ }
194
+ const pid = Number.parseInt(content, 10);
195
+ if (!Number.isNaN(pid)) {
203
196
  try {
204
- execSync(`which ${binary}`, { stdio: 'ignore' });
197
+ process.kill(pid, 0);
198
+ this.error(`Proxy already running (PID ${pid}). Stop it first: rulemetric proxy stop`);
199
+ } catch {
205
200
  }
206
- catch {
207
- this.error(`${binary} not found. Use Docker mode instead:\n` +
208
- ' rulemetric proxy start --docker\n\n' +
209
- 'Or install mitmproxy locally:\n' +
210
- ' pipx install mitmproxy\n' +
211
- ' brew install mitmproxy');
212
- }
213
- // Prerequisite warnings (non-blocking)
214
- if (!skipChecks) {
215
- const warnings = [];
216
- if (!isAuthenticated() && !process.env.RULEMETRIC_API_KEY) {
217
- const envFile = join(homedir(), '.config', 'rulemetric', 'env');
218
- let hasEnvAuth = false;
219
- if (existsSync(envFile)) {
220
- const content = readFileSync(envFile, 'utf-8');
221
- hasEnvAuth = content.includes('RULEMETRIC_API_KEY') || content.includes('RULEMETRIC_ACCESS_TOKEN');
222
- }
223
- if (!hasEnvAuth) {
224
- warnings.push('Not authenticated — snapshots cannot be stored. Run `rulemetric auth login`.');
225
- }
226
- }
227
- const certPath = join(homedir(), '.mitmproxy', 'mitmproxy-ca-cert.pem');
228
- if (!existsSync(certPath)) {
229
- warnings.push('CA cert not found — HTTPS interception may fail. Run `rulemetric proxy setup`.');
230
- }
231
- const settingsPath = join(process.cwd(), '.claude', 'settings.json');
232
- if (!existsSync(settingsPath)) {
233
- warnings.push('Session hooks not installed — snapshots won\'t link to sessions. Run `rulemetric hooks install`.');
234
- }
235
- if (warnings.length > 0) {
236
- for (const w of warnings) {
237
- this.log(` Warning: ${w}`);
238
- }
239
- this.log('');
240
- }
201
+ }
202
+ }
203
+ const binary = useWeb ? "mitmweb" : "mitmdump";
204
+ if (!findBinary(binary)) {
205
+ this.error(
206
+ `${binary} not found. Use Docker mode instead:
207
+ rulemetric proxy start --docker
208
+
209
+ Or install mitmproxy locally:
210
+ pipx install mitmproxy
211
+ brew install mitmproxy`
212
+ );
213
+ }
214
+ if (!skipChecks) {
215
+ const warnings = [];
216
+ if (!isAuthenticated() && !process.env.RULEMETRIC_API_KEY) {
217
+ const envFile = join(homedir(), ".config", "rulemetric", "env");
218
+ let hasEnvAuth = false;
219
+ if (existsSync(envFile)) {
220
+ const content = readFileSync(envFile, "utf-8");
221
+ hasEnvAuth = content.includes("RULEMETRIC_API_KEY") || content.includes("RULEMETRIC_ACCESS_TOKEN");
241
222
  }
242
- // Find addon
243
- const addonPath = findAddonPath();
244
- // Build env — pass through auth credentials for the reporter
245
- const env = {
246
- ...process.env,
247
- RULEMETRIC_PROJECT_PATH: process.cwd(),
248
- // Bound to this CLI binary's version. The addon writes this to a
249
- // version file the gateway watches; on drift the gateway restarts
250
- // mitmproxy so an upgraded CLI doesn't sit next to a stale proxy.
251
- RULEMETRIC_CLI_VERSION: this.config.version,
252
- };
253
- // Load auth from env file if not already in environment
254
- if (!env.RULEMETRIC_API_KEY && !env.RULEMETRIC_ACCESS_TOKEN) {
255
- const envFile = join(homedir(), '.config', 'rulemetric', 'env');
256
- if (existsSync(envFile)) {
257
- for (const line of readFileSync(envFile, 'utf-8').split('\n')) {
258
- const trimmed = line.trim();
259
- if (trimmed && !trimmed.startsWith('#') && trimmed.includes('=')) {
260
- const [key, ...rest] = trimmed.split('=');
261
- env[key] = rest.join('=');
262
- }
263
- }
264
- }
223
+ if (!hasEnvAuth) {
224
+ warnings.push("Not authenticated \u2014 snapshots cannot be stored. Run `rulemetric auth login`.");
265
225
  }
266
- // Ensure config dir exists
267
- mkdirSync(CONFIG_DIR, { recursive: true });
268
- // Open log file for proxy output (fd for spawn stdio)
269
- appendFileSync(LOG_FILE, `\n--- Proxy started at ${new Date().toISOString()} (port ${port}) ---\n`);
270
- const logFd = openSync(LOG_FILE, 'a');
271
- // Spawn mitmproxy with output redirected to log file
272
- const args = [
273
- '--listen-port', String(port),
274
- '-s', addonPath,
275
- '--set', 'console_eventlog_verbosity=info',
276
- ];
277
- const child = spawn(binary, args, {
278
- env,
279
- stdio: ['ignore', logFd, logFd],
280
- detached: true,
281
- });
282
- child.unref();
283
- if (!child.pid) {
284
- this.error('Failed to start proxy process');
226
+ }
227
+ const certPath = join(homedir(), ".mitmproxy", "mitmproxy-ca-cert.pem");
228
+ if (!existsSync(certPath)) {
229
+ warnings.push("CA cert not found \u2014 HTTPS interception may fail. Run `rulemetric proxy setup`.");
230
+ }
231
+ const settingsPath = join(process.cwd(), ".claude", "settings.json");
232
+ if (!existsSync(settingsPath)) {
233
+ warnings.push("Session hooks not installed \u2014 snapshots won't link to sessions. Run `rulemetric hooks install`.");
234
+ }
235
+ if (warnings.length > 0) {
236
+ for (const w of warnings) {
237
+ this.log(` Warning: ${w}`);
285
238
  }
286
- // Brief wait to check if process crashes immediately
287
- await new Promise((resolve) => {
288
- let exited = false;
289
- child.once('exit', (code) => {
290
- exited = true;
291
- this.error(`Proxy exited immediately with code ${code}. Check logs:\n ${LOG_FILE}`);
292
- });
293
- setTimeout(() => {
294
- if (!exited)
295
- resolve();
296
- }, 500);
297
- });
298
- // Write PID file
299
- writeFileSync(PID_FILE, String(child.pid));
300
- this.log(`Proxy running on localhost:${port} (PID ${child.pid})`);
301
- this.log(`Log file: ${LOG_FILE}`);
302
- if (useWeb) {
303
- this.log('');
304
- this.log('Debug UI: http://localhost:8081');
239
+ this.log("");
240
+ }
241
+ }
242
+ const addonPath = findAddonPath();
243
+ const env = {
244
+ ...process.env,
245
+ RULEMETRIC_PROJECT_PATH: process.cwd(),
246
+ // Bound to this CLI binary's version. The addon writes this to a
247
+ // version file the gateway watches; on drift the gateway restarts
248
+ // mitmproxy so an upgraded CLI doesn't sit next to a stale proxy.
249
+ RULEMETRIC_CLI_VERSION: this.config.version
250
+ };
251
+ if (!env.RULEMETRIC_API_KEY && !env.RULEMETRIC_ACCESS_TOKEN) {
252
+ const envFile = join(homedir(), ".config", "rulemetric", "env");
253
+ if (existsSync(envFile)) {
254
+ for (const line of readFileSync(envFile, "utf-8").split("\n")) {
255
+ const trimmed = line.trim();
256
+ if (trimmed && !trimmed.startsWith("#") && trimmed.includes("=")) {
257
+ const [key, ...rest] = trimmed.split("=");
258
+ env[key] = rest.join("=");
259
+ }
305
260
  }
306
- this.log('');
307
- this.log('View logs: rulemetric proxy logs -f');
261
+ }
308
262
  }
309
- }
310
- //# sourceMappingURL=start.js.map
263
+ mkdirSync(CONFIG_DIR, { recursive: true });
264
+ appendFileSync(LOG_FILE, `
265
+ --- Proxy started at ${(/* @__PURE__ */ new Date()).toISOString()} (port ${port}) ---
266
+ `);
267
+ const logFd = openSync(LOG_FILE, "a");
268
+ const args = [
269
+ "--listen-port",
270
+ String(port),
271
+ "-s",
272
+ addonPath,
273
+ "--set",
274
+ "console_eventlog_verbosity=info"
275
+ ];
276
+ const child = spawn(binary, args, {
277
+ env,
278
+ stdio: ["ignore", logFd, logFd],
279
+ detached: true
280
+ });
281
+ child.unref();
282
+ if (!child.pid) {
283
+ this.error("Failed to start proxy process");
284
+ }
285
+ await new Promise((resolve2) => {
286
+ let exited = false;
287
+ child.once("exit", (code) => {
288
+ exited = true;
289
+ this.error(`Proxy exited immediately with code ${code}. Check logs:
290
+ ${LOG_FILE}`);
291
+ });
292
+ setTimeout(() => {
293
+ if (!exited) resolve2();
294
+ }, 500);
295
+ });
296
+ writeFileSync(PID_FILE, String(child.pid));
297
+ this.log(`Proxy running on localhost:${port} (PID ${child.pid})`);
298
+ this.log(`Log file: ${LOG_FILE}`);
299
+ if (useWeb) {
300
+ this.log("");
301
+ this.log("Debug UI: http://localhost:8081");
302
+ }
303
+ this.log("");
304
+ this.log("View logs: rulemetric proxy logs -f");
305
+ }
306
+ };
307
+ export {
308
+ ProxyStart as default
309
+ };
310
+ //# sourceMappingURL=start.js.map