@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
@@ -0,0 +1,161 @@
1
+ import {
2
+ NewLaunchForm
3
+ } from "./chunk-DTFXCHHI.js";
4
+ import {
5
+ useLaunchJobs
6
+ } from "./chunk-KHJUQFIK.js";
7
+ import {
8
+ cancelLaunchJob,
9
+ createLaunchJob,
10
+ listLaunchers
11
+ } from "./chunk-N52AHNBH.js";
12
+ import {
13
+ ActiveJobsList
14
+ } from "./chunk-QD6X4L4L.js";
15
+ import {
16
+ ORANGE
17
+ } from "./chunk-QJQS6TUN.js";
18
+
19
+ // src/dashboard/launcher/LauncherOverlay.tsx
20
+ import { useEffect, useState } from "react";
21
+ import { Box, Text, useInput } from "ink";
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ function LauncherOverlay({
24
+ onClose,
25
+ activeOrg,
26
+ defaultProjectPath,
27
+ width
28
+ }) {
29
+ const { jobs, error, loading, refetch } = useLaunchJobs(20);
30
+ const [launchers, setLaunchers] = useState([]);
31
+ const [zone, setZone] = useState("list");
32
+ const [selectedIndex, setSelectedIndex] = useState(0);
33
+ const [confirmCancel, setConfirmCancel] = useState(null);
34
+ const [resumePrefill, setResumePrefill] = useState(null);
35
+ const [toast, setToast] = useState(null);
36
+ useEffect(() => {
37
+ listLaunchers().then(setLaunchers).catch((e) => {
38
+ const msg = e instanceof Error ? e.message : String(e);
39
+ setToast(`couldn't load launchers: ${msg}`);
40
+ setLaunchers([
41
+ { tool: "claude_code", capabilities: { headless: true, interactive: true, remoteSpawn: true } }
42
+ ]);
43
+ });
44
+ }, []);
45
+ useEffect(() => {
46
+ if (!toast) return;
47
+ const t = setTimeout(() => setToast(null), 5e3);
48
+ return () => clearTimeout(t);
49
+ }, [toast]);
50
+ useInput((input, key) => {
51
+ if (confirmCancel) {
52
+ if (input === "y" || input === "Y") {
53
+ const id = confirmCancel.id;
54
+ setConfirmCancel(null);
55
+ cancelLaunchJob(id).then(() => {
56
+ refetch();
57
+ setToast(`cancelled ${id.slice(0, 8)}`);
58
+ }).catch((e) => setToast(`cancel failed: ${e instanceof Error ? e.message : String(e)}`));
59
+ } else if (input === "n" || input === "N" || key.escape) {
60
+ setConfirmCancel(null);
61
+ }
62
+ return;
63
+ }
64
+ if (key.escape) {
65
+ if (zone !== "none") {
66
+ setZone("none");
67
+ return;
68
+ }
69
+ onClose();
70
+ return;
71
+ }
72
+ if (key.tab) {
73
+ setZone((z) => z === "list" ? "form" : z === "form" ? "none" : "list");
74
+ return;
75
+ }
76
+ if (input === "q") return;
77
+ if (zone === "list") {
78
+ if (key.upArrow) {
79
+ setSelectedIndex((i) => Math.max(0, i - 1));
80
+ } else if (key.downArrow) {
81
+ setSelectedIndex((i) => Math.min(jobs.length - 1, i + 1));
82
+ } else if (input === "c") {
83
+ const sel = jobs[selectedIndex];
84
+ if (sel && (sel.status === "running" || sel.status === "queued" || sel.status === "pending")) {
85
+ setConfirmCancel(sel);
86
+ }
87
+ } else if (input === "r") {
88
+ const sel = jobs[selectedIndex];
89
+ const sid = sel?.result?.externalSessionId;
90
+ if (sel && sel.tool === "claude_code" && sid) {
91
+ setResumePrefill({
92
+ tool: "claude_code",
93
+ projectPath: sel.config.projectPath,
94
+ resumeSessionId: sid
95
+ });
96
+ setZone("form");
97
+ } else {
98
+ setToast("resume needs a Claude Code session with a session id");
99
+ }
100
+ } else if (input === "o") {
101
+ const sel = jobs[selectedIndex];
102
+ const sid = sel?.result?.externalSessionId;
103
+ if (sid) {
104
+ const webUrl = process.env.RULEMETRIC_WEB_URL ?? "http://localhost:5174";
105
+ void import("node:child_process").then(({ spawn }) => {
106
+ spawn("open", [`${webUrl}/sessions/${sid}`], { detached: true, stdio: "ignore" }).unref();
107
+ });
108
+ }
109
+ }
110
+ }
111
+ });
112
+ async function handleSubmit(payload) {
113
+ await createLaunchJob(payload);
114
+ setResumePrefill(null);
115
+ setZone("list");
116
+ setToast("launched");
117
+ refetch();
118
+ }
119
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: ORANGE, width, paddingX: 1, children: [
120
+ /* @__PURE__ */ jsxs(Box, { children: [
121
+ /* @__PURE__ */ jsx(Text, { bold: true, color: ORANGE, children: "Launcher" }),
122
+ /* @__PURE__ */ jsx(Text, { dimColor: true, children: " active org: " }),
123
+ /* @__PURE__ */ jsx(Text, { children: activeOrg ?? "(none)" }),
124
+ loading && /* @__PURE__ */ jsx(Text, { dimColor: true, children: " loading\u2026" }),
125
+ error && /* @__PURE__ */ jsxs(Text, { color: "#F55B5B", children: [
126
+ " \u26A0 ",
127
+ error
128
+ ] })
129
+ ] }),
130
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(ActiveJobsList, { jobs, selectedIndex, focused: zone === "list" }) }),
131
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(
132
+ NewLaunchForm,
133
+ {
134
+ launchers,
135
+ defaultProjectPath: resumePrefill?.projectPath ?? defaultProjectPath,
136
+ defaultTool: resumePrefill?.tool,
137
+ defaultResumeSessionId: resumePrefill?.resumeSessionId,
138
+ focused: zone === "form",
139
+ onSubmit: handleSubmit
140
+ }
141
+ ) }),
142
+ confirmCancel && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { color: "#FFD700", children: [
143
+ "Cancel job ",
144
+ confirmCancel.id.slice(0, 8),
145
+ "? (y/n)"
146
+ ] }) }),
147
+ toast && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
148
+ "\xB7 ",
149
+ toast
150
+ ] }) }),
151
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
152
+ "\u2191\u2193 select tab focus c cancel r resume o open esc ",
153
+ zone === "none" ? "close" : "back"
154
+ ] }) })
155
+ ] });
156
+ }
157
+
158
+ export {
159
+ LauncherOverlay
160
+ };
161
+ //# sourceMappingURL=chunk-CROYS75W.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dashboard/launcher/LauncherOverlay.tsx"],
4
+ "sourcesContent": ["import React, { useEffect, useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { ORANGE } from '../types.js';\nimport { useLaunchJobs } from './useLaunchJobs.js';\nimport { ActiveJobsList } from './ActiveJobsList.js';\nimport { NewLaunchForm } from './NewLaunchForm.js';\nimport { createLaunchJob, cancelLaunchJob, listLaunchers } from './api.js';\nimport type { AvailableLauncher, LaunchJob } from './types.js';\n\ntype FocusZone = 'none' | 'list' | 'form';\n\nexport function LauncherOverlay({\n onClose,\n activeOrg,\n defaultProjectPath,\n width,\n}: {\n onClose: () => void;\n activeOrg: string | null;\n defaultProjectPath: string;\n width: number;\n}) {\n const { jobs, error, loading, refetch } = useLaunchJobs(20);\n const [launchers, setLaunchers] = useState<AvailableLauncher[]>([]);\n const [zone, setZone] = useState<FocusZone>('list');\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [confirmCancel, setConfirmCancel] = useState<LaunchJob | null>(null);\n const [resumePrefill, setResumePrefill] = useState<{\n tool: string;\n projectPath: string;\n resumeSessionId: string;\n } | null>(null);\n const [toast, setToast] = useState<string | null>(null);\n\n useEffect(() => {\n listLaunchers()\n .then(setLaunchers)\n .catch((e: unknown) => {\n const msg = e instanceof Error ? e.message : String(e);\n setToast(`couldn't load launchers: ${msg}`);\n // Still set a fallback so the form is usable; auth errors will re-surface on submit.\n setLaunchers([\n { tool: 'claude_code', capabilities: { headless: true, interactive: true, remoteSpawn: true } },\n ]);\n });\n }, []);\n\n useEffect(() => {\n if (!toast) return;\n const t = setTimeout(() => setToast(null), 5000);\n return () => clearTimeout(t);\n }, [toast]);\n\n useInput((input, key) => {\n if (confirmCancel) {\n if (input === 'y' || input === 'Y') {\n const id = confirmCancel.id;\n setConfirmCancel(null);\n cancelLaunchJob(id)\n .then(() => {\n refetch();\n setToast(`cancelled ${id.slice(0, 8)}`);\n })\n .catch((e: unknown) => setToast(`cancel failed: ${e instanceof Error ? e.message : String(e)}`));\n } else if (input === 'n' || input === 'N' || key.escape) {\n setConfirmCancel(null);\n }\n return;\n }\n if (key.escape) {\n if (zone !== 'none') {\n setZone('none');\n return;\n }\n onClose();\n return;\n }\n if (key.tab) {\n setZone((z) => (z === 'list' ? 'form' : z === 'form' ? 'none' : 'list'));\n return;\n }\n // q is intentionally swallowed; do not exit while overlay is open\n if (input === 'q') return;\n if (zone === 'list') {\n if (key.upArrow) {\n setSelectedIndex((i) => Math.max(0, i - 1));\n } else if (key.downArrow) {\n setSelectedIndex((i) => Math.min(jobs.length - 1, i + 1));\n } else if (input === 'c') {\n const sel = jobs[selectedIndex];\n if (sel && (sel.status === 'running' || sel.status === 'queued' || sel.status === 'pending')) {\n setConfirmCancel(sel);\n }\n } else if (input === 'r') {\n const sel = jobs[selectedIndex];\n const sid = sel?.result?.externalSessionId;\n if (sel && sel.tool === 'claude_code' && sid) {\n setResumePrefill({\n tool: 'claude_code',\n projectPath: sel.config.projectPath,\n resumeSessionId: sid,\n });\n setZone('form');\n } else {\n setToast('resume needs a Claude Code session with a session id');\n }\n } else if (input === 'o') {\n const sel = jobs[selectedIndex];\n const sid = sel?.result?.externalSessionId;\n if (sid) {\n const webUrl = process.env.RULEMETRIC_WEB_URL ?? 'http://localhost:5174';\n void import('node:child_process').then(({ spawn }) => {\n spawn('open', [`${webUrl}/sessions/${sid}`], { detached: true, stdio: 'ignore' }).unref();\n });\n }\n }\n }\n });\n\n async function handleSubmit(payload: Parameters<typeof createLaunchJob>[0]) {\n await createLaunchJob(payload);\n setResumePrefill(null);\n setZone('list');\n setToast('launched');\n refetch();\n }\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={ORANGE} width={width} paddingX={1}>\n <Box>\n <Text bold color={ORANGE}>Launcher</Text>\n <Text dimColor> active org: </Text>\n <Text>{activeOrg ?? '(none)'}</Text>\n {loading && <Text dimColor> loading\u2026</Text>}\n {error && <Text color=\"#F55B5B\"> \u26A0 {error}</Text>}\n </Box>\n <Box marginTop={1}>\n <ActiveJobsList jobs={jobs} selectedIndex={selectedIndex} focused={zone === 'list'} />\n </Box>\n <Box marginTop={1}>\n <NewLaunchForm\n launchers={launchers}\n defaultProjectPath={resumePrefill?.projectPath ?? defaultProjectPath}\n defaultTool={resumePrefill?.tool}\n defaultResumeSessionId={resumePrefill?.resumeSessionId}\n focused={zone === 'form'}\n onSubmit={handleSubmit}\n />\n </Box>\n {confirmCancel && (\n <Box marginTop={1}>\n <Text color=\"#FFD700\">Cancel job {confirmCancel.id.slice(0, 8)}? (y/n)</Text>\n </Box>\n )}\n {toast && (\n <Box marginTop={1}>\n <Text dimColor>\u00B7 {toast}</Text>\n </Box>\n )}\n <Box marginTop={1}>\n <Text dimColor>\n \u2191\u2193 select tab focus c cancel r resume o open esc {zone === 'none' ? 'close' : 'back'}\n </Text>\n </Box>\n </Box>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ // src/lib/permanent-job-error.ts
2
+ var PermanentJobError = class extends Error {
3
+ __isPermanentJobError = true;
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "PermanentJobError";
7
+ }
8
+ };
9
+ function isPermanentJobError(err) {
10
+ return err instanceof Error && err.__isPermanentJobError === true;
11
+ }
12
+
13
+ export {
14
+ PermanentJobError,
15
+ isPermanentJobError
16
+ };
17
+ //# sourceMappingURL=chunk-DGHWRQXL.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/permanent-job-error.ts"],
4
+ "sourcesContent": ["/**\n * Sentinel error class for handler outcomes that retry is guaranteed not to\n * help with \u2014 e.g. \"no eval cases defined for target\", \"session has too few\n * events to analyze\". The agent loop intercepts these (see agent-loop.ts)\n * and tells Graphile to skip remaining attempts (via `permanently_fail_jobs`)\n * instead of running the same handler N more times against the same data.\n *\n * Use ONLY for genuinely deterministic failures. Transient errors (LLM\n * timeout, network, tool-CLI flakiness) should remain plain Error so Graphile\n * retries them.\n */\nexport class PermanentJobError extends Error {\n readonly __isPermanentJobError = true;\n\n constructor(message: string) {\n super(message);\n this.name = 'PermanentJobError';\n }\n}\n\nexport function isPermanentJobError(err: unknown): err is PermanentJobError {\n return (\n err instanceof Error &&\n (err as { __isPermanentJobError?: boolean }).__isPermanentJobError === true\n );\n}\n"],
5
+ "mappings": ";AAWO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAClC,wBAAwB;AAAA,EAEjC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,SAAS,oBAAoB,KAAwC;AAC1E,SACE,eAAe,SACd,IAA4C,0BAA0B;AAE3E;",
6
+ "names": []
7
+ }
@@ -0,0 +1,74 @@
1
+ import {
2
+ DIM
3
+ } from "./chunk-QJQS6TUN.js";
4
+
5
+ // src/dashboard/panels/shared.tsx
6
+ import { Box, Text } from "ink";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function Panel({ title, color, children, width }) {
9
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: color, paddingX: 1, width, overflowX: "hidden", children: [
10
+ /* @__PURE__ */ jsx(Text, { bold: true, color, children: title }),
11
+ children
12
+ ] });
13
+ }
14
+ function gradientColor(pct) {
15
+ const r = pct <= 0.5 ? Math.round(91 + pct * 2 * (255 - 91)) : 255;
16
+ const g = pct <= 0.5 ? Math.round(158 + pct * 2 * (200 - 158)) : Math.round(200 - (pct - 0.5) * 2 * (200 - 91));
17
+ const b = pct <= 0.5 ? Math.round(245 - pct * 2 * (245 - 91)) : 91;
18
+ return `#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`;
19
+ }
20
+ function HBar({ value, max, width }) {
21
+ if (max === 0) return /* @__PURE__ */ jsx(Text, { color: DIM, children: "\u2591".repeat(width) });
22
+ const filled = Math.round(value / max * width);
23
+ const fillChars = [];
24
+ for (let i = 0; i < Math.min(filled, width); i++) {
25
+ fillChars.push(/* @__PURE__ */ jsx(Text, { color: gradientColor(i / width), children: "\u2588" }, i));
26
+ }
27
+ return /* @__PURE__ */ jsxs(Text, { children: [
28
+ fillChars,
29
+ /* @__PURE__ */ jsx(Text, { color: "#333333", children: "\u2591".repeat(Math.max(width - filled, 0)) })
30
+ ] });
31
+ }
32
+ function fit(s, n) {
33
+ return s.length > n ? s.slice(0, n) : s.padEnd(n);
34
+ }
35
+ function formatTokens(n) {
36
+ if (n >= 1e9) return `${(n / 1e9).toFixed(1)}B`;
37
+ if (n >= 1e6) return `${(n / 1e6).toFixed(1)}M`;
38
+ if (n >= 1e3) return `${(n / 1e3).toFixed(0)}K`;
39
+ return String(n);
40
+ }
41
+ function formatCost(usd) {
42
+ if (usd >= 1e3) return `$${(usd / 1e3).toFixed(1)}K`;
43
+ if (usd >= 1) return `$${usd.toFixed(2)}`;
44
+ if (usd >= 0.01) return `$${usd.toFixed(2)}`;
45
+ return `$${usd.toFixed(3)}`;
46
+ }
47
+ var FRIENDLY_LABELS = {
48
+ fully_achieved: "Fully Achieved",
49
+ mostly_achieved: "Mostly Achieved",
50
+ partially_achieved: "Partially Achieved",
51
+ not_achieved: "Not Achieved",
52
+ unclear_from_transcript: "Unclear",
53
+ misunderstood_request: "Misunderstood Request",
54
+ wrong_approach: "Wrong Approach",
55
+ buggy_code: "Buggy Code",
56
+ user_rejected_action: "User Rejected",
57
+ excessive_changes: "Excessive Changes",
58
+ wrong_file_or_location: "Wrong File/Location",
59
+ slow_or_verbose: "Slow/Verbose",
60
+ tool_failed: "Tool Failed"
61
+ };
62
+ function friendlyLabel(key) {
63
+ return FRIENDLY_LABELS[key] || key.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
64
+ }
65
+
66
+ export {
67
+ Panel,
68
+ HBar,
69
+ fit,
70
+ formatTokens,
71
+ formatCost,
72
+ friendlyLabel
73
+ };
74
+ //# sourceMappingURL=chunk-DQ3KELXD.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dashboard/panels/shared.tsx"],
4
+ "sourcesContent": ["import React from 'react';\nimport { Box, Text } from 'ink';\nimport { DIM } from '../types.js';\n\nexport function Panel({ title, color, children, width }: {\n title: string; color: string; children: React.ReactNode; width: number;\n}) {\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={color} paddingX={1} width={width} overflowX=\"hidden\">\n <Text bold color={color}>{title}</Text>\n {children}\n </Box>\n );\n}\n\nfunction gradientColor(pct: number): string {\n const r = pct <= 0.5 ? Math.round(91 + pct * 2 * (255 - 91)) : 255;\n const g = pct <= 0.5 ? Math.round(158 + pct * 2 * (200 - 158)) : Math.round(200 - (pct - 0.5) * 2 * (200 - 91));\n const b = pct <= 0.5 ? Math.round(245 - pct * 2 * (245 - 91)) : 91;\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nexport function HBar({ value, max, width }: { value: number; max: number; width: number }) {\n if (max === 0) return <Text color={DIM}>{'\u2591'.repeat(width)}</Text>;\n const filled = Math.round((value / max) * width);\n const fillChars: React.ReactNode[] = [];\n for (let i = 0; i < Math.min(filled, width); i++) {\n fillChars.push(<Text key={i} color={gradientColor(i / width)}>{'\u2588'}</Text>);\n }\n return (\n <Text>\n {fillChars}\n <Text color=\"#333333\">{'\u2591'.repeat(Math.max(width - filled, 0))}</Text>\n </Text>\n );\n}\n\nexport function fit(s: string, n: number): string {\n return s.length > n ? s.slice(0, n) : s.padEnd(n);\n}\n\nexport function formatTokens(n: number): string {\n if (n >= 1_000_000_000) return `${(n / 1_000_000_000).toFixed(1)}B`;\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(0)}K`;\n return String(n);\n}\n\nexport function formatCost(usd: number): string {\n if (usd >= 1000) return `$${(usd / 1000).toFixed(1)}K`;\n if (usd >= 1) return `$${usd.toFixed(2)}`;\n if (usd >= 0.01) return `$${usd.toFixed(2)}`;\n return `$${usd.toFixed(3)}`;\n}\n\nconst FRIENDLY_LABELS: Record<string, string> = {\n fully_achieved: 'Fully Achieved',\n mostly_achieved: 'Mostly Achieved',\n partially_achieved: 'Partially Achieved',\n not_achieved: 'Not Achieved',\n unclear_from_transcript: 'Unclear',\n misunderstood_request: 'Misunderstood Request',\n wrong_approach: 'Wrong Approach',\n buggy_code: 'Buggy Code',\n user_rejected_action: 'User Rejected',\n excessive_changes: 'Excessive Changes',\n wrong_file_or_location: 'Wrong File/Location',\n slow_or_verbose: 'Slow/Verbose',\n tool_failed: 'Tool Failed',\n};\n\nexport function friendlyLabel(key: string): string {\n return FRIENDLY_LABELS[key] || key.replace(/_/g, ' ').replace(/\\b\\w/g, c => c.toUpperCase());\n}\n"],
5
+ "mappings": ";;;;;AACA,SAAS,KAAK,YAAY;AAOtB,SACE,KADF;AAJG,SAAS,MAAM,EAAE,OAAO,OAAO,UAAU,MAAM,GAEnD;AACD,SACE,qBAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,OAAO,UAAU,GAAG,OAAc,WAAU,UACvG;AAAA,wBAAC,QAAK,MAAI,MAAC,OAAe,iBAAM;AAAA,IAC/B;AAAA,KACH;AAEJ;AAEA,SAAS,cAAc,KAAqB;AAC1C,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,IAAI;AAC/D,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,OAAO,MAAM,OAAO,KAAK,MAAM,GAAG;AAC9G,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,GAAG,IAAI;AAChE,SAAO,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAChH;AAEO,SAAS,KAAK,EAAE,OAAO,KAAK,MAAM,GAAkD;AACzF,MAAI,QAAQ,EAAG,QAAO,oBAAC,QAAK,OAAO,KAAM,mBAAI,OAAO,KAAK,GAAE;AAC3D,QAAM,SAAS,KAAK,MAAO,QAAQ,MAAO,KAAK;AAC/C,QAAM,YAA+B,CAAC;AACtC,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK,GAAG,KAAK;AAChD,cAAU,KAAK,oBAAC,QAAa,OAAO,cAAc,IAAI,KAAK,GAAI,sBAArC,CAAyC,CAAO;AAAA,EAC5E;AACA,SACE,qBAAC,QACE;AAAA;AAAA,IACD,oBAAC,QAAK,OAAM,WAAW,mBAAI,OAAO,KAAK,IAAI,QAAQ,QAAQ,CAAC,CAAC,GAAE;AAAA,KACjE;AAEJ;AAEO,SAAS,IAAI,GAAW,GAAmB;AAChD,SAAO,EAAE,SAAS,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD;AAEO,SAAS,aAAa,GAAmB;AAC9C,MAAI,KAAK,IAAe,QAAO,IAAI,IAAI,KAAe,QAAQ,CAAC,CAAC;AAChE,MAAI,KAAK,IAAW,QAAO,IAAI,IAAI,KAAW,QAAQ,CAAC,CAAC;AACxD,MAAI,KAAK,IAAO,QAAO,IAAI,IAAI,KAAO,QAAQ,CAAC,CAAC;AAChD,SAAO,OAAO,CAAC;AACjB;AAEO,SAAS,WAAW,KAAqB;AAC9C,MAAI,OAAO,IAAM,QAAO,KAAK,MAAM,KAAM,QAAQ,CAAC,CAAC;AACnD,MAAI,OAAO,EAAG,QAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AACvC,MAAI,OAAO,KAAM,QAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AAC1C,SAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AAC3B;AAEA,IAAM,kBAA0C;AAAA,EAC9C,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,aAAa;AACf;AAEO,SAAS,cAAc,KAAqB;AACjD,SAAO,gBAAgB,GAAG,KAAK,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,OAAK,EAAE,YAAY,CAAC;AAC7F;",
6
+ "names": []
7
+ }
@@ -0,0 +1,108 @@
1
+ import {
2
+ toolLabel
3
+ } from "./chunk-RH7NHVSK.js";
4
+ import {
5
+ DIM,
6
+ ORANGE,
7
+ RED
8
+ } from "./chunk-QJQS6TUN.js";
9
+
10
+ // src/dashboard/launcher/NewLaunchForm.tsx
11
+ import { useState } from "react";
12
+ import { Box, Text, useInput } from "ink";
13
+ import TextInput from "ink-text-input";
14
+ import SelectInput from "ink-select-input";
15
+ import { jsx, jsxs } from "react/jsx-runtime";
16
+ var FIELD_ORDER = ["tool", "project", "mode", "prompt", "submit"];
17
+ function NewLaunchForm({
18
+ launchers,
19
+ defaultProjectPath,
20
+ defaultTool,
21
+ defaultPrompt,
22
+ defaultResumeSessionId,
23
+ focused,
24
+ onSubmit
25
+ }) {
26
+ const [tool, setTool] = useState(defaultTool ?? launchers[0]?.tool ?? "claude_code");
27
+ const [projectPath, setProjectPath] = useState(defaultProjectPath);
28
+ const [mode, setMode] = useState("interactive");
29
+ const [prompt, setPrompt] = useState(defaultPrompt ?? "");
30
+ const [field, setField] = useState("tool");
31
+ const [submitting, setSubmitting] = useState(false);
32
+ const [submitError, setSubmitError] = useState(null);
33
+ const canSubmit = prompt.trim().length > 0 && projectPath.trim().length > 0 && !submitting;
34
+ useInput((input, key) => {
35
+ if (!focused) return;
36
+ if (key.upArrow) {
37
+ const idx = FIELD_ORDER.indexOf(field);
38
+ if (idx > 0) setField(FIELD_ORDER[idx - 1]);
39
+ } else if (key.downArrow) {
40
+ const idx = FIELD_ORDER.indexOf(field);
41
+ if (idx < FIELD_ORDER.length - 1) setField(FIELD_ORDER[idx + 1]);
42
+ } else if (key.return && field === "submit" && canSubmit) {
43
+ void doSubmit();
44
+ } else if (field === "mode" && (input === " " || key.return)) {
45
+ setMode((m) => m === "interactive" ? "headless" : "interactive");
46
+ }
47
+ });
48
+ async function doSubmit() {
49
+ setSubmitting(true);
50
+ setSubmitError(null);
51
+ try {
52
+ await onSubmit({
53
+ tool,
54
+ config: {
55
+ projectPath,
56
+ prompt,
57
+ mode,
58
+ ...defaultResumeSessionId ? { resumeSessionId: defaultResumeSessionId } : {}
59
+ }
60
+ });
61
+ setPrompt("");
62
+ setSubmitError(null);
63
+ } catch (e) {
64
+ setSubmitError(e instanceof Error ? e.message : String(e));
65
+ } finally {
66
+ setSubmitting(false);
67
+ }
68
+ }
69
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
70
+ /* @__PURE__ */ jsx(Text, { bold: true, color: ORANGE, children: "\u25BC New launch" }),
71
+ /* @__PURE__ */ jsxs(Box, { children: [
72
+ /* @__PURE__ */ jsx(Text, { color: field === "tool" && focused ? ORANGE : DIM, children: " Tool: " }),
73
+ field === "tool" && focused ? /* @__PURE__ */ jsx(
74
+ SelectInput,
75
+ {
76
+ items: launchers.map((l) => ({ label: toolLabel(l.tool), value: l.tool })),
77
+ initialIndex: Math.max(0, launchers.findIndex((l) => l.tool === tool)),
78
+ onSelect: (item) => setTool(item.value)
79
+ }
80
+ ) : /* @__PURE__ */ jsx(Text, { children: toolLabel(tool) })
81
+ ] }),
82
+ /* @__PURE__ */ jsxs(Box, { children: [
83
+ /* @__PURE__ */ jsx(Text, { color: field === "project" && focused ? ORANGE : DIM, children: " Project: " }),
84
+ field === "project" && focused ? /* @__PURE__ */ jsx(TextInput, { value: projectPath, onChange: setProjectPath }) : /* @__PURE__ */ jsx(Text, { children: projectPath })
85
+ ] }),
86
+ /* @__PURE__ */ jsxs(Box, { children: [
87
+ /* @__PURE__ */ jsx(Text, { color: field === "mode" && focused ? ORANGE : DIM, children: " Mode: " }),
88
+ /* @__PURE__ */ jsx(Text, { children: mode === "interactive" ? "(\u2022) interactive ( ) headless" : "( ) interactive (\u2022) headless" })
89
+ ] }),
90
+ /* @__PURE__ */ jsxs(Box, { children: [
91
+ /* @__PURE__ */ jsx(Text, { color: field === "prompt" && focused ? ORANGE : DIM, children: " Prompt: " }),
92
+ field === "prompt" && focused ? /* @__PURE__ */ jsx(TextInput, { value: prompt, onChange: setPrompt }) : /* @__PURE__ */ jsx(Text, { children: prompt || "(empty)" })
93
+ ] }),
94
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { color: field === "submit" && focused ? ORANGE : DIM, children: [
95
+ canSubmit ? " [ Submit ]" : " [ Submit (disabled) ]",
96
+ submitting ? " \u2026submitting" : ""
97
+ ] }) }),
98
+ submitError && /* @__PURE__ */ jsxs(Text, { color: RED, children: [
99
+ " \u2717 ",
100
+ submitError
101
+ ] })
102
+ ] });
103
+ }
104
+
105
+ export {
106
+ NewLaunchForm
107
+ };
108
+ //# sourceMappingURL=chunk-DTFXCHHI.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dashboard/launcher/NewLaunchForm.tsx"],
4
+ "sourcesContent": ["import React, { useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport TextInput from 'ink-text-input';\nimport SelectInput from 'ink-select-input';\nimport { ORANGE, DIM, RED } from '../types.js';\nimport { toolLabel } from './tool-labels.js';\nimport type { AvailableLauncher, CreateLaunchPayload } from './types.js';\n\ntype FormField = 'tool' | 'project' | 'mode' | 'prompt' | 'submit';\nconst FIELD_ORDER: FormField[] = ['tool', 'project', 'mode', 'prompt', 'submit'];\n\nexport function NewLaunchForm({\n launchers,\n defaultProjectPath,\n defaultTool,\n defaultPrompt,\n defaultResumeSessionId,\n focused,\n onSubmit,\n}: {\n launchers: AvailableLauncher[];\n defaultProjectPath: string;\n defaultTool?: string;\n defaultPrompt?: string;\n defaultResumeSessionId?: string;\n focused: boolean;\n onSubmit: (payload: CreateLaunchPayload) => Promise<void>;\n}) {\n const [tool, setTool] = useState(defaultTool ?? launchers[0]?.tool ?? 'claude_code');\n const [projectPath, setProjectPath] = useState(defaultProjectPath);\n const [mode, setMode] = useState<'interactive' | 'headless'>('interactive');\n const [prompt, setPrompt] = useState(defaultPrompt ?? '');\n const [field, setField] = useState<FormField>('tool');\n const [submitting, setSubmitting] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n\n const canSubmit = prompt.trim().length > 0 && projectPath.trim().length > 0 && !submitting;\n\n useInput((input, key) => {\n if (!focused) return;\n if (key.upArrow) {\n const idx = FIELD_ORDER.indexOf(field);\n if (idx > 0) setField(FIELD_ORDER[idx - 1]!);\n } else if (key.downArrow) {\n const idx = FIELD_ORDER.indexOf(field);\n if (idx < FIELD_ORDER.length - 1) setField(FIELD_ORDER[idx + 1]!);\n } else if (key.return && field === 'submit' && canSubmit) {\n void doSubmit();\n } else if (field === 'mode' && (input === ' ' || key.return)) {\n setMode((m) => (m === 'interactive' ? 'headless' : 'interactive'));\n }\n });\n\n async function doSubmit() {\n setSubmitting(true);\n setSubmitError(null);\n try {\n await onSubmit({\n tool,\n config: {\n projectPath,\n prompt,\n mode,\n ...(defaultResumeSessionId ? { resumeSessionId: defaultResumeSessionId } : {}),\n },\n });\n setPrompt('');\n setSubmitError(null);\n } catch (e) {\n setSubmitError(e instanceof Error ? e.message : String(e));\n } finally {\n setSubmitting(false);\n }\n }\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Text bold color={ORANGE}>\u25BC New launch</Text>\n <Box>\n <Text color={field === 'tool' && focused ? ORANGE : DIM}> Tool: </Text>\n {field === 'tool' && focused ? (\n <SelectInput\n items={launchers.map((l) => ({ label: toolLabel(l.tool), value: l.tool }))}\n initialIndex={Math.max(0, launchers.findIndex((l) => l.tool === tool))}\n onSelect={(item) => setTool(item.value)}\n />\n ) : (\n <Text>{toolLabel(tool)}</Text>\n )}\n </Box>\n <Box>\n <Text color={field === 'project' && focused ? ORANGE : DIM}> Project: </Text>\n {field === 'project' && focused ? (\n <TextInput value={projectPath} onChange={setProjectPath} />\n ) : (\n <Text>{projectPath}</Text>\n )}\n </Box>\n <Box>\n <Text color={field === 'mode' && focused ? ORANGE : DIM}> Mode: </Text>\n <Text>{mode === 'interactive' ? '(\u2022) interactive ( ) headless' : '( ) interactive (\u2022) headless'}</Text>\n </Box>\n <Box>\n <Text color={field === 'prompt' && focused ? ORANGE : DIM}> Prompt: </Text>\n {field === 'prompt' && focused ? (\n <TextInput value={prompt} onChange={setPrompt} />\n ) : (\n <Text>{prompt || '(empty)'}</Text>\n )}\n </Box>\n <Box marginTop={1}>\n <Text color={field === 'submit' && focused ? ORANGE : DIM}>\n {canSubmit ? ' [ Submit ]' : ' [ Submit (disabled) ]'}\n {submitting ? ' \u2026submitting' : ''}\n </Text>\n </Box>\n {submitError && <Text color={RED}> \u2717 {submitError}</Text>}\n </Box>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,75 @@
1
+ import {
2
+ processChangelog
3
+ } from "./chunk-R5MFHGHR.js";
4
+ import {
5
+ cronRefreshSkills
6
+ } from "./chunk-RQ2TMLKG.js";
7
+ import {
8
+ cronSuggestInstructions
9
+ } from "./chunk-YBNW7ARH.js";
10
+
11
+ // src/lib/manual-tasks.ts
12
+ var MANUAL_TASKS = [
13
+ {
14
+ name: "cron_check_changelog",
15
+ description: "Parse CHANGELOG.md and create draft announcement rows for new versions.",
16
+ scheduledBy: "manual only \u2014 announcement drafts are reminder-driven, never scheduled",
17
+ handler: async (_payload, helpers) => {
18
+ const result = await processChangelog({
19
+ logger: {
20
+ info: (m) => helpers.logger.info(m),
21
+ warn: (m) => helpers.logger.warn(m)
22
+ }
23
+ });
24
+ helpers.logger.info(
25
+ `[cron_check_changelog] result: created=${result.createdCount} skipped=${result.skippedCount}`
26
+ );
27
+ }
28
+ },
29
+ {
30
+ name: "cron_suggest_instructions",
31
+ description: "Precompute per-project instruction suggestions for the SessionStart hook.",
32
+ scheduledBy: "Supabase pg_cron daily 04:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00083)",
33
+ handler: (payload, helpers) => cronSuggestInstructions(payload, helpers)
34
+ },
35
+ {
36
+ name: "cron_refresh_skills",
37
+ description: "Refresh the skills registry from GitHub sources (disk JSON + public instructions sync). Requires GITHUB_TOKEN.",
38
+ scheduledBy: "Supabase pg_cron daily 03:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00086)",
39
+ handler: (payload, helpers) => cronRefreshSkills(payload, helpers)
40
+ }
41
+ ];
42
+ async function runManualTask(name) {
43
+ const def = MANUAL_TASKS.find((t) => t.name === name);
44
+ if (!def) {
45
+ return { name, durationMs: 0, ok: false, error: `Unknown task: ${name}`, logs: [] };
46
+ }
47
+ const logs = [];
48
+ const helpers = {
49
+ logger: {
50
+ info: (message) => logs.push({ level: "info", message }),
51
+ warn: (message) => logs.push({ level: "warn", message }),
52
+ error: (message) => logs.push({ level: "error", message })
53
+ },
54
+ job: { attempts: 0 }
55
+ };
56
+ const start = Date.now();
57
+ try {
58
+ await def.handler({}, helpers);
59
+ return { name, durationMs: Date.now() - start, ok: true, logs };
60
+ } catch (err) {
61
+ return {
62
+ name,
63
+ durationMs: Date.now() - start,
64
+ ok: false,
65
+ error: err instanceof Error ? err.message : String(err),
66
+ logs
67
+ };
68
+ }
69
+ }
70
+
71
+ export {
72
+ MANUAL_TASKS,
73
+ runManualTask
74
+ };
75
+ //# sourceMappingURL=chunk-DU73QUS3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/manual-tasks.ts"],
4
+ "sourcesContent": ["// Manually-runnable maintenance tasks for `rulemetric crons run` / `crons list`.\n// Replaces the graphile cron-registry/cron-runner pair (deleted in Phase 4c\n// Stage 4): scheduled crons now live in Supabase pg_cron (see migrations\n// 00064/00065/00082/00083), so the only thing the CLI still needs is an\n// on-demand entry point for tasks an operator triggers by hand.\n\nimport type { JobHelpers } from './job-helpers.js';\nimport { processChangelog } from './handlers/process-changelog.js';\nimport { cronSuggestInstructions } from './handlers/cron-suggest-instructions.js';\nimport { cronRefreshSkills } from './handlers/cron-refresh-skills.js';\n\nexport interface ManualTaskDefinition {\n /** Task name, kept identical to the old cron names so muscle memory works. */\n name: string;\n /** One-line human description shown by `rulemetric crons list`. */\n description: string;\n /** Where the scheduled firing lives now (shown by `crons list`). */\n scheduledBy: string;\n handler: (payload: unknown, helpers: JobHelpers) => Promise<unknown>;\n}\n\nexport const MANUAL_TASKS: readonly ManualTaskDefinition[] = [\n {\n name: 'cron_check_changelog',\n description: 'Parse CHANGELOG.md and create draft announcement rows for new versions.',\n scheduledBy: 'manual only \u2014 announcement drafts are reminder-driven, never scheduled',\n handler: async (_payload, helpers) => {\n const result = await processChangelog({\n logger: {\n info: (m: string) => helpers.logger.info(m),\n warn: (m: string) => helpers.logger.warn(m),\n },\n });\n helpers.logger.info(\n `[cron_check_changelog] result: created=${result.createdCount} skipped=${result.skippedCount}`,\n );\n },\n },\n {\n name: 'cron_suggest_instructions',\n description: 'Precompute per-project instruction suggestions for the SessionStart hook.',\n scheduledBy: 'Supabase pg_cron daily 04:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00083)',\n handler: (payload, helpers) => cronSuggestInstructions(payload, helpers),\n },\n {\n name: 'cron_refresh_skills',\n description: 'Refresh the skills registry from GitHub sources (disk JSON + public instructions sync). Requires GITHUB_TOKEN.',\n scheduledBy: 'Supabase pg_cron daily 03:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00086)',\n handler: (payload, helpers) => cronRefreshSkills(payload, helpers),\n },\n];\n\nexport interface ManualTaskResult {\n name: string;\n durationMs: number;\n ok: boolean;\n error?: string;\n logs: Array<{ level: string; message: string }>;\n}\n\n/**\n * Synchronously invoke a manual task by name. Returns a structured result\n * with captured log lines so callers (CLI, tests) can render or assert.\n */\nexport async function runManualTask(name: string): Promise<ManualTaskResult> {\n const def = MANUAL_TASKS.find((t) => t.name === name);\n if (!def) {\n return { name, durationMs: 0, ok: false, error: `Unknown task: ${name}`, logs: [] };\n }\n\n const logs: Array<{ level: string; message: string }> = [];\n const helpers: JobHelpers = {\n logger: {\n info: (message) => logs.push({ level: 'info', message }),\n warn: (message) => logs.push({ level: 'warn', message }),\n error: (message) => logs.push({ level: 'error', message }),\n },\n job: { attempts: 0 },\n };\n\n const start = Date.now();\n try {\n await def.handler({}, helpers);\n return { name, durationMs: Date.now() - start, ok: true, logs };\n } catch (err) {\n return {\n name,\n durationMs: Date.now() - start,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n logs,\n };\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAqBO,IAAM,eAAgD;AAAA,EACzD;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,OAAO,UAAU,YAAY;AAClC,YAAM,SAAS,MAAM,iBAAiB;AAAA,QAClC,QAAQ;AAAA,UACJ,MAAM,CAAC,MAAc,QAAQ,OAAO,KAAK,CAAC;AAAA,UAC1C,MAAM,CAAC,MAAc,QAAQ,OAAO,KAAK,CAAC;AAAA,QAC9C;AAAA,MACJ,CAAC;AACD,cAAQ,OAAO;AAAA,QACX,0CAA0C,OAAO,YAAY,YAAY,OAAO,YAAY;AAAA,MAChG;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,CAAC,SAAS,YAAY,wBAAwB,SAAS,OAAO;AAAA,EAC3E;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,CAAC,SAAS,YAAY,kBAAkB,SAAS,OAAO;AAAA,EACrE;AACJ;AAcA,eAAsB,cAAc,MAAyC;AACzE,QAAM,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACpD,MAAI,CAAC,KAAK;AACN,WAAO,EAAE,MAAM,YAAY,GAAG,IAAI,OAAO,OAAO,iBAAiB,IAAI,IAAI,MAAM,CAAC,EAAE;AAAA,EACtF;AAEA,QAAM,OAAkD,CAAC;AACzD,QAAM,UAAsB;AAAA,IACxB,QAAQ;AAAA,MACJ,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvD,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvD,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,SAAS,QAAQ,CAAC;AAAA,IAC7D;AAAA,IACA,KAAK,EAAE,UAAU,EAAE;AAAA,EACvB;AAEA,QAAM,QAAQ,KAAK,IAAI;AACvB,MAAI;AACA,UAAM,IAAI,QAAQ,CAAC,GAAG,OAAO;AAC7B,WAAO,EAAE,MAAM,YAAY,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,KAAK;AAAA,EAClE,SAAS,KAAK;AACV,WAAO;AAAA,MACH;AAAA,MACA,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,IAAI;AAAA,MACJ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACtD;AAAA,IACJ;AAAA,EACJ;AACJ;",
6
+ "names": []
7
+ }