@rulemetric/cli 0.6.9 → 0.7.1

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 (288) hide show
  1. package/dist/base-command.js +4 -3
  2. package/dist/{chunk-SZ7VDCD6.js → chunk-2HK7RGZB.js} +22 -3
  3. package/dist/chunk-2HK7RGZB.js.map +7 -0
  4. package/dist/{chunk-RUCSRN7F.js → chunk-2ORJWTNZ.js} +2 -2
  5. package/dist/{chunk-SLL3OBKN.js → chunk-37LN5O7M.js} +2 -2
  6. package/dist/chunk-3S7223UR.js +81 -0
  7. package/dist/chunk-3S7223UR.js.map +7 -0
  8. package/dist/{chunk-DAJNO4OI.js → chunk-4LYCDS2N.js} +28 -16
  9. package/dist/chunk-4LYCDS2N.js.map +7 -0
  10. package/dist/{chunk-UPXIO7CG.js → chunk-4XAWK6S2.js} +8 -8
  11. package/dist/{chunk-QD6X4L4L.js → chunk-5BAOGNUH.js} +4 -4
  12. package/dist/chunk-5EDMGK3W.js +39 -0
  13. package/dist/chunk-5EDMGK3W.js.map +7 -0
  14. package/dist/{chunk-5ADHO5QF.js → chunk-6NBS5XFS.js} +6 -6
  15. package/dist/{chunk-BBLTN35F.js → chunk-7DULPSFU.js} +49 -20
  16. package/dist/chunk-7DULPSFU.js.map +7 -0
  17. package/dist/chunk-7LVVKQMZ.js +98 -0
  18. package/dist/chunk-7LVVKQMZ.js.map +7 -0
  19. package/dist/{chunk-PXVQLD7S.js → chunk-7NNFYWKK.js} +48 -1
  20. package/dist/chunk-7NNFYWKK.js.map +7 -0
  21. package/dist/{chunk-DTFXCHHI.js → chunk-DNKSVWMD.js} +4 -4
  22. package/dist/{chunk-CNMWYYSV.js → chunk-DUJSRBLP.js} +2 -2
  23. package/dist/chunk-EARWG4EV.js +22 -0
  24. package/dist/chunk-EARWG4EV.js.map +7 -0
  25. package/dist/{chunk-6EMZI4Y3.js → chunk-EI5BHWXA.js} +437 -401
  26. package/dist/chunk-EI5BHWXA.js.map +7 -0
  27. package/dist/{chunk-HNZLEEG2.js → chunk-EJ3YAFDP.js} +4 -4
  28. package/dist/{chunk-HNZLEEG2.js.map → chunk-EJ3YAFDP.js.map} +2 -2
  29. package/dist/{chunk-YSEQWCN4.js → chunk-EYPAAGN5.js} +2 -2
  30. package/dist/{chunk-JEJ3J5J6.js → chunk-GIUBARWS.js} +2 -2
  31. package/dist/chunk-GQNJO2P2.js +102 -0
  32. package/dist/chunk-GQNJO2P2.js.map +7 -0
  33. package/dist/chunk-ILYDELUE.js +46 -0
  34. package/dist/chunk-ILYDELUE.js.map +7 -0
  35. package/dist/chunk-J6QFW4LD.js +55 -0
  36. package/dist/chunk-J6QFW4LD.js.map +7 -0
  37. package/dist/{chunk-OTOWLUOJ.js → chunk-JULOLTZS.js} +2 -2
  38. package/dist/{chunk-DR5WLIOU.js → chunk-KJKBDQ4D.js} +2 -2
  39. package/dist/{chunk-XN23W5HL.js → chunk-LXKPNATC.js} +93 -7
  40. package/dist/chunk-LXKPNATC.js.map +7 -0
  41. package/dist/{chunk-N5A2IQAK.js → chunk-OK3I555A.js} +2 -2
  42. package/dist/{chunk-XNNOXGP6.js → chunk-OKWCKCPE.js} +38 -19
  43. package/dist/chunk-OKWCKCPE.js.map +7 -0
  44. package/dist/{chunk-AHDRN6NE.js → chunk-OO7JDFS4.js} +5 -5
  45. package/dist/{chunk-N2X35ITW.js → chunk-OQBBVTDG.js} +11 -1
  46. package/dist/{chunk-N2X35ITW.js.map → chunk-OQBBVTDG.js.map} +2 -2
  47. package/dist/{chunk-3QH73QOQ.js → chunk-PED7L5GX.js} +2 -2
  48. package/dist/{chunk-VBGUNFKY.js → chunk-PMI56ED5.js} +5 -5
  49. package/dist/{chunk-RCMXTLQF.js → chunk-RMTT4KDY.js} +2 -2
  50. package/dist/{chunk-W4MZXKZ2.js → chunk-UKMLICWS.js} +2 -2
  51. package/dist/{chunk-3POYC5NA.js → chunk-XK42ZBDE.js} +3 -3
  52. package/dist/{chunk-ZSGKRCKD.js → chunk-XUV6DDBF.js} +2 -2
  53. package/dist/{chunk-LAKZUE35.js → chunk-Y3WD5CSW.js} +2 -2
  54. package/dist/{chunk-3QVMIJUL.js → chunk-YOBA3NAM.js} +5 -5
  55. package/dist/{chunk-ZRLYHBPN.js → chunk-ZUJBM6HE.js} +20 -2
  56. package/dist/chunk-ZUJBM6HE.js.map +7 -0
  57. package/dist/commands/antigravity/backfill.js +5 -4
  58. package/dist/commands/antigravity/backfill.js.map +1 -1
  59. package/dist/commands/auth/create-key.js +4 -3
  60. package/dist/commands/auth/create-key.js.map +1 -1
  61. package/dist/commands/auth/login.js +13 -9
  62. package/dist/commands/auth/login.js.map +2 -2
  63. package/dist/commands/auth/logout.js +4 -3
  64. package/dist/commands/auth/logout.js.map +1 -1
  65. package/dist/commands/auth/revoke-key.js +4 -3
  66. package/dist/commands/auth/revoke-key.js.map +1 -1
  67. package/dist/commands/auth/signup.js +13 -9
  68. package/dist/commands/auth/signup.js.map +2 -2
  69. package/dist/commands/auth/status.js +4 -3
  70. package/dist/commands/auth/status.js.map +1 -1
  71. package/dist/commands/catalog/index.js +4 -3
  72. package/dist/commands/catalog/index.js.map +1 -1
  73. package/dist/commands/catalog/recommend.js +4 -3
  74. package/dist/commands/catalog/recommend.js.map +1 -1
  75. package/dist/commands/convert.js +4 -3
  76. package/dist/commands/convert.js.map +1 -1
  77. package/dist/commands/converters.js +4 -3
  78. package/dist/commands/converters.js.map +1 -1
  79. package/dist/commands/crons/list.js +4 -3
  80. package/dist/commands/crons/list.js.map +1 -1
  81. package/dist/commands/crons/run.js +4 -3
  82. package/dist/commands/crons/run.js.map +1 -1
  83. package/dist/commands/dashboard.js +4 -3
  84. package/dist/commands/dashboard.js.map +1 -1
  85. package/dist/commands/diagnostics.js +117 -0
  86. package/dist/commands/diagnostics.js.map +7 -0
  87. package/dist/commands/eval-targets/create.js +4 -3
  88. package/dist/commands/eval-targets/create.js.map +1 -1
  89. package/dist/commands/eval-targets/list.js +4 -3
  90. package/dist/commands/eval-targets/list.js.map +1 -1
  91. package/dist/commands/evals/agent.js +41 -20
  92. package/dist/commands/evals/agent.js.map +2 -2
  93. package/dist/commands/evals/benchmark.js +5 -4
  94. package/dist/commands/evals/benchmark.js.map +1 -1
  95. package/dist/commands/evals/compare.js +4 -3
  96. package/dist/commands/evals/compare.js.map +1 -1
  97. package/dist/commands/evals/create.js +4 -3
  98. package/dist/commands/evals/create.js.map +1 -1
  99. package/dist/commands/evals/optimize-description.js +4 -3
  100. package/dist/commands/evals/optimize-description.js.map +1 -1
  101. package/dist/commands/evals/optimize.js +4 -3
  102. package/dist/commands/evals/optimize.js.map +1 -1
  103. package/dist/commands/evals/run.js +4 -3
  104. package/dist/commands/evals/run.js.map +1 -1
  105. package/dist/commands/gateway/ensure.js +75 -5
  106. package/dist/commands/gateway/ensure.js.map +2 -2
  107. package/dist/commands/hooks/install.js +76 -23
  108. package/dist/commands/hooks/install.js.map +2 -2
  109. package/dist/commands/hooks/run.js +4 -3
  110. package/dist/commands/hooks/run.js.map +1 -1
  111. package/dist/commands/hooks/uninstall.js +31 -40
  112. package/dist/commands/hooks/uninstall.js.map +2 -2
  113. package/dist/commands/import.js +4 -3
  114. package/dist/commands/import.js.map +1 -1
  115. package/dist/commands/instructions/create.js +4 -3
  116. package/dist/commands/instructions/create.js.map +1 -1
  117. package/dist/commands/instructions/delete.js +4 -3
  118. package/dist/commands/instructions/delete.js.map +1 -1
  119. package/dist/commands/instructions/fork.js +4 -3
  120. package/dist/commands/instructions/fork.js.map +1 -1
  121. package/dist/commands/instructions/get.js +4 -3
  122. package/dist/commands/instructions/get.js.map +1 -1
  123. package/dist/commands/instructions/list.js +4 -3
  124. package/dist/commands/instructions/list.js.map +1 -1
  125. package/dist/commands/instructions/promote.js +4 -3
  126. package/dist/commands/instructions/promote.js.map +1 -1
  127. package/dist/commands/instructions/pull.js +4 -3
  128. package/dist/commands/instructions/pull.js.map +1 -1
  129. package/dist/commands/instructions/upstream.js +4 -3
  130. package/dist/commands/instructions/upstream.js.map +1 -1
  131. package/dist/commands/instructions/versions.js +4 -3
  132. package/dist/commands/instructions/versions.js.map +1 -1
  133. package/dist/commands/launcher.js +4 -3
  134. package/dist/commands/launcher.js.map +1 -1
  135. package/dist/commands/org/current.js +4 -3
  136. package/dist/commands/org/current.js.map +1 -1
  137. package/dist/commands/org/list.js +4 -3
  138. package/dist/commands/org/list.js.map +1 -1
  139. package/dist/commands/org/switch.js +4 -3
  140. package/dist/commands/org/switch.js.map +1 -1
  141. package/dist/commands/packs/add-instruction.js +4 -3
  142. package/dist/commands/packs/add-instruction.js.map +1 -1
  143. package/dist/commands/packs/apply.js +4 -3
  144. package/dist/commands/packs/apply.js.map +1 -1
  145. package/dist/commands/packs/create.js +4 -3
  146. package/dist/commands/packs/create.js.map +1 -1
  147. package/dist/commands/packs/fork.js +4 -3
  148. package/dist/commands/packs/fork.js.map +1 -1
  149. package/dist/commands/packs/get.js +4 -3
  150. package/dist/commands/packs/get.js.map +1 -1
  151. package/dist/commands/packs/list.js +4 -3
  152. package/dist/commands/packs/list.js.map +1 -1
  153. package/dist/commands/packs/remove-instruction.js +4 -3
  154. package/dist/commands/packs/remove-instruction.js.map +1 -1
  155. package/dist/commands/proxy/env.js +7 -4
  156. package/dist/commands/proxy/env.js.map +1 -1
  157. package/dist/commands/proxy/logs.js +4 -3
  158. package/dist/commands/proxy/logs.js.map +1 -1
  159. package/dist/commands/proxy/restart.js +4 -3
  160. package/dist/commands/proxy/restart.js.map +1 -1
  161. package/dist/commands/proxy/setup.js +20 -14
  162. package/dist/commands/proxy/setup.js.map +2 -2
  163. package/dist/commands/proxy/start.js +29 -15
  164. package/dist/commands/proxy/start.js.map +2 -2
  165. package/dist/commands/proxy/status.js +16 -13
  166. package/dist/commands/proxy/status.js.map +2 -2
  167. package/dist/commands/proxy/stop.js +21 -12
  168. package/dist/commands/proxy/stop.js.map +2 -2
  169. package/dist/commands/research/backfill.js +5 -4
  170. package/dist/commands/research/backfill.js.map +1 -1
  171. package/dist/commands/research/tail-transcript.js +5 -4
  172. package/dist/commands/research/tail-transcript.js.map +1 -1
  173. package/dist/commands/service/install.js +6 -6
  174. package/dist/commands/service/status.js +4 -3
  175. package/dist/commands/service/status.js.map +1 -1
  176. package/dist/commands/service/uninstall.js +4 -3
  177. package/dist/commands/service/uninstall.js.map +1 -1
  178. package/dist/commands/sessions/analyze.js +4 -3
  179. package/dist/commands/sessions/analyze.js.map +1 -1
  180. package/dist/commands/sessions/end.js +4 -3
  181. package/dist/commands/sessions/end.js.map +1 -1
  182. package/dist/commands/sessions/import.js +4 -3
  183. package/dist/commands/sessions/import.js.map +1 -1
  184. package/dist/commands/sessions/list.js +4 -3
  185. package/dist/commands/sessions/list.js.map +1 -1
  186. package/dist/commands/sessions/start.js +4 -3
  187. package/dist/commands/sessions/start.js.map +1 -1
  188. package/dist/commands/setup.js +10 -6
  189. package/dist/commands/setup.js.map +1 -1
  190. package/dist/commands/skills/export-approved.js +4 -3
  191. package/dist/commands/skills/export-approved.js.map +1 -1
  192. package/dist/commands/skills/install.js +4 -3
  193. package/dist/commands/skills/install.js.map +1 -1
  194. package/dist/commands/skills/list.js +4 -3
  195. package/dist/commands/skills/list.js.map +1 -1
  196. package/dist/commands/skills/publish.js +4 -3
  197. package/dist/commands/skills/publish.js.map +1 -1
  198. package/dist/commands/skills/search.js +4 -3
  199. package/dist/commands/skills/search.js.map +1 -1
  200. package/dist/commands/skills/update.js +4 -3
  201. package/dist/commands/skills/update.js.map +1 -1
  202. package/dist/commands/suggestions/accept.js +4 -3
  203. package/dist/commands/suggestions/accept.js.map +1 -1
  204. package/dist/commands/suggestions/dismiss.js +4 -3
  205. package/dist/commands/suggestions/dismiss.js.map +1 -1
  206. package/dist/commands/suggestions/list.js +4 -3
  207. package/dist/commands/suggestions/list.js.map +1 -1
  208. package/dist/commands/suggestions/refresh.js +4 -3
  209. package/dist/commands/suggestions/refresh.js.map +1 -1
  210. package/dist/dashboard/Dashboard.js +16 -16
  211. package/dist/dashboard/data.js +2 -2
  212. package/dist/dashboard/launcher/ActiveJobsList.js +2 -2
  213. package/dist/dashboard/launcher/LauncherOverlay.js +7 -7
  214. package/dist/dashboard/launcher/NewLaunchForm.js +2 -2
  215. package/dist/dashboard/launcher/api.js +2 -2
  216. package/dist/dashboard/launcher/useLaunchJobs.js +3 -3
  217. package/dist/lib/active-org-refresh.js +2 -2
  218. package/dist/lib/agent-loop.js +19 -17
  219. package/dist/lib/antigravity-transcript.js +2 -2
  220. package/dist/lib/api-client.js +1 -1
  221. package/dist/lib/capture-hosts.js +8 -0
  222. package/dist/lib/capture-hosts.js.map +7 -0
  223. package/dist/lib/diagnostics.js +12 -0
  224. package/dist/lib/diagnostics.js.map +7 -0
  225. package/dist/lib/editor-proxy-pins.js +14 -0
  226. package/dist/lib/editor-proxy-pins.js.map +7 -0
  227. package/dist/lib/ensure-api-key.js +3 -3
  228. package/dist/lib/eval-benchmark.js +2 -2
  229. package/dist/lib/eval-conversation-handler.js +2 -2
  230. package/dist/lib/gateway-entry.js +39 -1
  231. package/dist/lib/gateway-entry.js.map +2 -2
  232. package/dist/lib/gateway-identity.js +16 -0
  233. package/dist/lib/gateway-identity.js.map +7 -0
  234. package/dist/lib/gateway-lifecycle.js +9 -3
  235. package/dist/lib/gateway.js +3 -1
  236. package/dist/lib/handlers/cron-suggest-instructions.js +3 -3
  237. package/dist/lib/handlers/process-announcement.js +3 -3
  238. package/dist/lib/handlers/process-changelog.js +2 -2
  239. package/dist/lib/handlers/process-conversation.js +3 -3
  240. package/dist/lib/handlers/process-eval.js +2 -2
  241. package/dist/lib/handlers/process-insights.js +2 -2
  242. package/dist/lib/handlers/process-launch.js +2 -2
  243. package/dist/lib/handlers/process-run-cleanup.js +2 -2
  244. package/dist/lib/handlers/process-session-goal.js +2 -2
  245. package/dist/lib/hooks-config.js +18 -1
  246. package/dist/lib/manual-tasks.js +5 -5
  247. package/dist/lib/pid-identity.js +14 -0
  248. package/dist/lib/pid-identity.js.map +7 -0
  249. package/dist/lib/proxy-respawn.js +12 -0
  250. package/dist/lib/proxy-respawn.js.map +7 -0
  251. package/dist/lib/research-client.js +2 -2
  252. package/dist/lib/setup-steps.js +7 -4
  253. package/dist/lib/statusline-shim.js +3 -1
  254. package/dist/lib/telemetry.js +4 -2
  255. package/dist/lib/terminal-target-heartbeat.js +2 -2
  256. package/oclif.manifest.json +34 -1
  257. package/package.json +4 -4
  258. package/dist/chunk-6EMZI4Y3.js.map +0 -7
  259. package/dist/chunk-BBLTN35F.js.map +0 -7
  260. package/dist/chunk-DAJNO4OI.js.map +0 -7
  261. package/dist/chunk-PXVQLD7S.js.map +0 -7
  262. package/dist/chunk-SZ7VDCD6.js.map +0 -7
  263. package/dist/chunk-TX2HKJLA.js +0 -55
  264. package/dist/chunk-TX2HKJLA.js.map +0 -7
  265. package/dist/chunk-XN23W5HL.js.map +0 -7
  266. package/dist/chunk-XNNOXGP6.js.map +0 -7
  267. package/dist/chunk-ZRLYHBPN.js.map +0 -7
  268. /package/dist/{chunk-RUCSRN7F.js.map → chunk-2ORJWTNZ.js.map} +0 -0
  269. /package/dist/{chunk-SLL3OBKN.js.map → chunk-37LN5O7M.js.map} +0 -0
  270. /package/dist/{chunk-UPXIO7CG.js.map → chunk-4XAWK6S2.js.map} +0 -0
  271. /package/dist/{chunk-QD6X4L4L.js.map → chunk-5BAOGNUH.js.map} +0 -0
  272. /package/dist/{chunk-5ADHO5QF.js.map → chunk-6NBS5XFS.js.map} +0 -0
  273. /package/dist/{chunk-DTFXCHHI.js.map → chunk-DNKSVWMD.js.map} +0 -0
  274. /package/dist/{chunk-CNMWYYSV.js.map → chunk-DUJSRBLP.js.map} +0 -0
  275. /package/dist/{chunk-YSEQWCN4.js.map → chunk-EYPAAGN5.js.map} +0 -0
  276. /package/dist/{chunk-JEJ3J5J6.js.map → chunk-GIUBARWS.js.map} +0 -0
  277. /package/dist/{chunk-OTOWLUOJ.js.map → chunk-JULOLTZS.js.map} +0 -0
  278. /package/dist/{chunk-DR5WLIOU.js.map → chunk-KJKBDQ4D.js.map} +0 -0
  279. /package/dist/{chunk-N5A2IQAK.js.map → chunk-OK3I555A.js.map} +0 -0
  280. /package/dist/{chunk-AHDRN6NE.js.map → chunk-OO7JDFS4.js.map} +0 -0
  281. /package/dist/{chunk-3QH73QOQ.js.map → chunk-PED7L5GX.js.map} +0 -0
  282. /package/dist/{chunk-VBGUNFKY.js.map → chunk-PMI56ED5.js.map} +0 -0
  283. /package/dist/{chunk-RCMXTLQF.js.map → chunk-RMTT4KDY.js.map} +0 -0
  284. /package/dist/{chunk-W4MZXKZ2.js.map → chunk-UKMLICWS.js.map} +0 -0
  285. /package/dist/{chunk-3POYC5NA.js.map → chunk-XK42ZBDE.js.map} +0 -0
  286. /package/dist/{chunk-ZSGKRCKD.js.map → chunk-XUV6DDBF.js.map} +0 -0
  287. /package/dist/{chunk-LAKZUE35.js.map → chunk-Y3WD5CSW.js.map} +0 -0
  288. /package/dist/{chunk-3QVMIJUL.js.map → chunk-YOBA3NAM.js.map} +0 -0
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/org/list.ts"],
4
4
  "sourcesContent": ["import { BaseCommand } from '../../base-command.js';\nimport { apiGet } from '../../lib/api-client.js';\nimport { readActiveOrg } from '../../lib/active-org.js';\n\ninterface Org {\n id: string;\n name: string;\n slug: string;\n role: string;\n}\n\nconst WEB_URL =\n process.env.RULEMETRIC_WEB_URL ?? 'https://rulemetric.com';\n\nexport default class OrgList extends BaseCommand {\n static override description = 'List organizations the current user is a member of';\n\n static override examples = ['<%= config.bin %> org list'];\n\n async run(): Promise<void> {\n await this.parse(OrgList);\n this.requireAuth();\n\n const orgs = await apiGet<Org[]>('/api/orgs');\n\n if (orgs.length === 0) {\n this.log('No organizations.');\n this.log(`Create one in the web UI: ${WEB_URL}`);\n return;\n }\n\n // Resolve active org from env > local file > none. Env without a slug\n // still gets a star next to the matching id.\n const active = readActiveOrg();\n const activeId = active?.orgId ?? null;\n\n // Compute column widths for stable, readable output.\n const slugWidth = Math.max(4, ...orgs.map((o) => o.slug.length));\n const nameWidth = Math.max(4, ...orgs.map((o) => o.name.length));\n const roleWidth = Math.max(4, ...orgs.map((o) => o.role.length));\n\n const header =\n ` ACTIVE ${'SLUG'.padEnd(slugWidth)} ${'NAME'.padEnd(nameWidth)} ${'ROLE'.padEnd(roleWidth)}`;\n this.log(header);\n\n for (const org of orgs) {\n const marker = org.id === activeId ? '*' : ' ';\n this.log(\n ` ${marker} ${org.slug.padEnd(slugWidth)} ${org.name.padEnd(nameWidth)} ${org.role.padEnd(roleWidth)}`,\n );\n }\n\n if (!activeId) {\n this.log('');\n this.log('No active organization. Run `rulemetric org switch <slug>` to set one.');\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAWA,IAAM,UACJ,QAAQ,IAAI,sBAAsB;AAEpC,IAAqB,UAArB,MAAqB,iBAAgB,YAAY;AAAA,EAC/C,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW,CAAC,4BAA4B;AAAA,EAExD,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,QAAO;AACxB,SAAK,YAAY;AAEjB,UAAM,OAAO,MAAM,OAAc,WAAW;AAE5C,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,IAAI,mBAAmB;AAC5B,WAAK,IAAI,6BAA6B,OAAO,EAAE;AAC/C;AAAA,IACF;AAIA,UAAM,SAAS,cAAc;AAC7B,UAAM,WAAW,QAAQ,SAAS;AAGlC,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAC/D,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAC/D,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAE/D,UAAM,SACJ,aAAa,OAAO,OAAO,SAAS,CAAC,KAAK,OAAO,OAAO,SAAS,CAAC,KAAK,OAAO,OAAO,SAAS,CAAC;AACjG,SAAK,IAAI,MAAM;AAEf,eAAW,OAAO,MAAM;AACtB,YAAM,SAAS,IAAI,OAAO,WAAW,MAAM;AAC3C,WAAK;AAAA,QACH,KAAK,MAAM,UAAU,IAAI,KAAK,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,OAAO,SAAS,CAAC;AAAA,MAC/G;AAAA,IACF;AAEA,QAAI,CAAC,UAAU;AACb,WAAK,IAAI,EAAE;AACX,WAAK,IAAI,wEAAwE;AAAA,IACnF;AAAA,EACF;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;AAWA,IAAM,UACJ,QAAQ,IAAI,sBAAsB;AAEpC,IAAqB,UAArB,MAAqB,iBAAgB,YAAY;AAAA,EAC/C,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW,CAAC,4BAA4B;AAAA,EAExD,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,QAAO;AACxB,SAAK,YAAY;AAEjB,UAAM,OAAO,MAAM,OAAc,WAAW;AAE5C,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,IAAI,mBAAmB;AAC5B,WAAK,IAAI,6BAA6B,OAAO,EAAE;AAC/C;AAAA,IACF;AAIA,UAAM,SAAS,cAAc;AAC7B,UAAM,WAAW,QAAQ,SAAS;AAGlC,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAC/D,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAC/D,UAAM,YAAY,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,CAAC;AAE/D,UAAM,SACJ,aAAa,OAAO,OAAO,SAAS,CAAC,KAAK,OAAO,OAAO,SAAS,CAAC,KAAK,OAAO,OAAO,SAAS,CAAC;AACjG,SAAK,IAAI,MAAM;AAEf,eAAW,OAAO,MAAM;AACtB,YAAM,SAAS,IAAI,OAAO,WAAW,MAAM;AAC3C,WAAK;AAAA,QACH,KAAK,MAAM,UAAU,IAAI,KAAK,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,OAAO,SAAS,CAAC,KAAK,IAAI,KAAK,OAAO,SAAS,CAAC;AAAA,MAC/G;AAAA,IACF;AAEA,QAAI,CAAC,UAAU;AACb,WAAK,IAAI,EAAE;AACX,WAAK,IAAI,wEAAwE;AAAA,IACnF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import {
7
8
  clearActiveOrg,
8
9
  writeActiveOrg
@@ -10,7 +11,7 @@ import {
10
11
  import {
11
12
  apiGet,
12
13
  apiPatch
13
- } from "../../chunk-ZRLYHBPN.js";
14
+ } from "../../chunk-ZUJBM6HE.js";
14
15
  import "../../chunk-W2YERO7E.js";
15
16
  import "../../chunk-NSBPE2FW.js";
16
17
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/org/switch.ts"],
4
4
  "sourcesContent": ["import { Args, Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiGet, apiPatch } from '../../lib/api-client.js';\nimport { writeActiveOrg, clearActiveOrg } from '../../lib/active-org.js';\n\ninterface Org {\n id: string;\n name: string;\n slug: string;\n role: string;\n}\n\nexport default class OrgSwitch extends BaseCommand {\n static override description = 'Switch the active organization';\n\n static override examples = [\n '<%= config.bin %> org switch acme',\n '<%= config.bin %> org switch --clear',\n ];\n\n static override args = {\n slug: Args.string({\n description: 'Organization slug to switch to',\n required: false,\n }),\n };\n\n static override flags = {\n clear: Flags.boolean({\n description: 'Clear the active organization (personal mode)',\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(OrgSwitch);\n this.requireAuth();\n\n if (flags.clear) {\n // PATCH the server first; only update the local cache after the\n // server confirms. If the request fails we leave the cache alone so\n // we don't pretend something changed when it didn't.\n await apiPatch('/api/profile', { activeOrgId: null });\n clearActiveOrg();\n this.log('Active org cleared (personal mode).');\n return;\n }\n\n if (!args.slug) {\n this.error(\n 'Slug is required. Run `rulemetric org list` to see your orgs, or use --clear to unset.',\n );\n }\n\n const orgs = await apiGet<Org[]>('/api/orgs');\n const match = orgs.find((o) => o.slug === args.slug);\n if (!match) {\n this.error(\n `Not a member of \"${args.slug}\". Run \\`rulemetric org list\\` to see your orgs.`,\n );\n }\n\n await apiPatch('/api/profile', { activeOrgId: match.id });\n writeActiveOrg({\n orgId: match.id,\n orgSlug: match.slug,\n syncedAt: Date.now(),\n });\n this.log(`Active org: ${match.slug}`);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA,SAAS,MAAM,aAAa;AAY5B,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,MAAM,KAAK,OAAO;AAAA,MAChB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,OAAO,MAAM,QAAQ;AAAA,MACnB,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAClD,SAAK,YAAY;AAEjB,QAAI,MAAM,OAAO;AAIf,YAAM,SAAS,gBAAgB,EAAE,aAAa,KAAK,CAAC;AACpD,qBAAe;AACf,WAAK,IAAI,qCAAqC;AAC9C;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,MAAM;AACd,WAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,OAAc,WAAW;AAC5C,UAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;AACnD,QAAI,CAAC,OAAO;AACV,WAAK;AAAA,QACH,oBAAoB,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,SAAS,gBAAgB,EAAE,aAAa,MAAM,GAAG,CAAC;AACxD,mBAAe;AAAA,MACb,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,MACf,UAAU,KAAK,IAAI;AAAA,IACrB,CAAC;AACD,SAAK,IAAI,eAAe,MAAM,IAAI,EAAE;AAAA,EACtC;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,MAAM,aAAa;AAY5B,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,MAAM,KAAK,OAAO;AAAA,MAChB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,OAAO,MAAM,QAAQ;AAAA,MACnB,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAClD,SAAK,YAAY;AAEjB,QAAI,MAAM,OAAO;AAIf,YAAM,SAAS,gBAAgB,EAAE,aAAa,KAAK,CAAC;AACpD,qBAAe;AACf,WAAK,IAAI,qCAAqC;AAC9C;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,MAAM;AACd,WAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,OAAc,WAAW;AAC5C,UAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;AACnD,QAAI,CAAC,OAAO;AACV,WAAK;AAAA,QACH,oBAAoB,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,SAAS,gBAAgB,EAAE,aAAa,MAAM,GAAG,CAAC;AACxD,mBAAe;AAAA,MACb,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,MACf,UAAU,KAAK,IAAI;AAAA,IACrB,CAAC;AACD,SAAK,IAAI,eAAe,MAAM,IAAI,EAAE;AAAA,EACtC;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
8
  import {
8
9
  apiPost
9
- } from "../../chunk-ZRLYHBPN.js";
10
+ } from "../../chunk-ZUJBM6HE.js";
10
11
  import "../../chunk-W2YERO7E.js";
11
12
  import "../../chunk-NSBPE2FW.js";
12
13
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/add-instruction.ts"],
4
4
  "sourcesContent": ["import { Args } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\n\nexport default class PacksAddInstruction extends BaseCommand {\n static override description = 'Add an instruction to a pack';\n\n static override examples = [\n '<%= config.bin %> packs add-instruction <pack-id> <instruction-id>',\n ];\n\n static override args = {\n packId: Args.string({ description: 'Pack ID', required: true }),\n instructionId: Args.string({ description: 'Instruction ID', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(PacksAddInstruction);\n this.requireAuth();\n\n await apiPost(`/api/packs/${args.packId}/instructions`, {\n instructionId: args.instructionId,\n });\n\n this.log('Instruction added to pack.');\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,sBAArB,MAAqB,6BAA4B,YAAY;AAAA,EAC3D,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,QAAQ,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,IAC9D,eAAe,KAAK,OAAO,EAAE,aAAa,kBAAkB,UAAU,KAAK,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,oBAAmB;AACrD,SAAK,YAAY;AAEjB,UAAM,QAAQ,cAAc,KAAK,MAAM,iBAAiB;AAAA,MACtD,eAAe,KAAK;AAAA,IACtB,CAAC;AAED,SAAK,IAAI,4BAA4B;AAAA,EACvC;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,sBAArB,MAAqB,6BAA4B,YAAY;AAAA,EAC3D,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,QAAQ,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,IAC9D,eAAe,KAAK,OAAO,EAAE,aAAa,kBAAkB,UAAU,KAAK,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,oBAAmB;AACrD,SAAK,YAAY;AAEjB,UAAM,QAAQ,cAAc,KAAK,MAAM,iBAAiB;AAAA,MACtD,eAAe,KAAK;AAAA,IACtB,CAAC;AAED,SAAK,IAAI,4BAA4B;AAAA,EACvC;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
8
  import {
8
9
  apiPost
9
- } from "../../chunk-ZRLYHBPN.js";
10
+ } from "../../chunk-ZUJBM6HE.js";
10
11
  import "../../chunk-W2YERO7E.js";
11
12
  import "../../chunk-NSBPE2FW.js";
12
13
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/apply.ts"],
4
4
  "sourcesContent": ["import { Args, Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\n\ninterface ApplyResult {\n success: boolean;\n linked: number;\n total: number;\n}\n\nexport default class PacksApply extends BaseCommand {\n static override description = 'Apply a pack to a project (bulk-link all instructions)';\n\n static override examples = [\n '<%= config.bin %> packs apply <pack-id> --project <project-id>',\n ];\n\n static override args = {\n id: Args.string({ description: 'Pack ID', required: true }),\n };\n\n static override flags = {\n project: Flags.string({ char: 'p', description: 'Project ID', required: true }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(PacksApply);\n this.requireAuth();\n\n const result = await apiPost<ApplyResult>(`/api/packs/${args.id}/apply`, {\n projectId: flags.project,\n });\n\n this.log(`Applied pack: ${result.linked} of ${result.total} instructions linked to project.`);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,MAAM,aAAa;AAU5B,IAAqB,aAArB,MAAqB,oBAAmB,YAAY;AAAA,EAClD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,SAAS,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,cAAc,UAAU,KAAK,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,WAAU;AACnD,SAAK,YAAY;AAEjB,UAAM,SAAS,MAAM,QAAqB,cAAc,KAAK,EAAE,UAAU;AAAA,MACvE,WAAW,MAAM;AAAA,IACnB,CAAC;AAED,SAAK,IAAI,iBAAiB,OAAO,MAAM,OAAO,OAAO,KAAK,kCAAkC;AAAA,EAC9F;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,MAAM,aAAa;AAU5B,IAAqB,aAArB,MAAqB,oBAAmB,YAAY;AAAA,EAClD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,SAAS,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,cAAc,UAAU,KAAK,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,WAAU;AACnD,SAAK,YAAY;AAEjB,UAAM,SAAS,MAAM,QAAqB,cAAc,KAAK,EAAE,UAAU;AAAA,MACvE,WAAW,MAAM;AAAA,IACnB,CAAC;AAED,SAAK,IAAI,iBAAiB,OAAO,MAAM,OAAO,OAAO,KAAK,kCAAkC;AAAA,EAC9F;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
8
  import {
8
9
  apiPost
9
- } from "../../chunk-ZRLYHBPN.js";
10
+ } from "../../chunk-ZUJBM6HE.js";
10
11
  import "../../chunk-W2YERO7E.js";
11
12
  import "../../chunk-NSBPE2FW.js";
12
13
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/create.ts"],
4
4
  "sourcesContent": ["import { Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\n\ninterface CreatedPack {\n id: string;\n name: string;\n}\n\nexport default class PacksCreate extends BaseCommand {\n static override description = 'Create a new instruction pack';\n\n static override examples = [\n '<%= config.bin %> packs create --name \"Security Pack\" --description \"Security-focused instructions\"',\n ];\n\n static override flags = {\n name: Flags.string({ char: 'n', description: 'Pack name', required: true }),\n description: Flags.string({ char: 'd', description: 'Pack description', required: true }),\n scope: Flags.string({\n char: 's',\n description: 'Pack scope',\n options: ['org', 'team', 'personal'],\n default: 'personal',\n }),\n tags: Flags.string({ char: 't', description: 'Comma-separated tags' }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(PacksCreate);\n this.requireAuth();\n\n const body: Record<string, unknown> = {\n name: flags.name,\n description: flags.description,\n scope: flags.scope,\n };\n\n if (flags.tags) {\n body.tags = flags.tags.split(',').map((t) => t.trim());\n }\n\n const result = await apiPost<CreatedPack>('/api/packs', body);\n this.log(`Created pack: ${result.name} (${result.id})`);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,aAAa;AAStB,IAAqB,cAArB,MAAqB,qBAAoB,YAAY;AAAA,EACnD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,aAAa,UAAU,KAAK,CAAC;AAAA,IAC1E,aAAa,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,oBAAoB,UAAU,KAAK,CAAC;AAAA,IACxF,OAAO,MAAM,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,OAAO,QAAQ,UAAU;AAAA,MACnC,SAAS;AAAA,IACX,CAAC;AAAA,IACD,MAAM,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,uBAAuB,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,YAAW;AAC9C,SAAK,YAAY;AAEjB,UAAM,OAAgC;AAAA,MACpC,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,IACf;AAEA,QAAI,MAAM,MAAM;AACd,WAAK,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,IACvD;AAEA,UAAM,SAAS,MAAM,QAAqB,cAAc,IAAI;AAC5D,SAAK,IAAI,iBAAiB,OAAO,IAAI,KAAK,OAAO,EAAE,GAAG;AAAA,EACxD;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,aAAa;AAStB,IAAqB,cAArB,MAAqB,qBAAoB,YAAY;AAAA,EACnD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,aAAa,UAAU,KAAK,CAAC;AAAA,IAC1E,aAAa,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,oBAAoB,UAAU,KAAK,CAAC;AAAA,IACxF,OAAO,MAAM,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,OAAO,QAAQ,UAAU;AAAA,MACnC,SAAS;AAAA,IACX,CAAC;AAAA,IACD,MAAM,MAAM,OAAO,EAAE,MAAM,KAAK,aAAa,uBAAuB,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,YAAW;AAC9C,SAAK,YAAY;AAEjB,UAAM,OAAgC;AAAA,MACpC,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,IACf;AAEA,QAAI,MAAM,MAAM;AACd,WAAK,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,IACvD;AAEA,UAAM,SAAS,MAAM,QAAqB,cAAc,IAAI;AAC5D,SAAK,IAAI,iBAAiB,OAAO,IAAI,KAAK,OAAO,EAAE,GAAG;AAAA,EACxD;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
8
  import {
8
9
  apiPost
9
- } from "../../chunk-ZRLYHBPN.js";
10
+ } from "../../chunk-ZUJBM6HE.js";
10
11
  import "../../chunk-W2YERO7E.js";
11
12
  import "../../chunk-NSBPE2FW.js";
12
13
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/fork.ts"],
4
4
  "sourcesContent": ["import { Args } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\n\nexport default class PacksFork extends BaseCommand {\n static override description = 'Fork a pack to your personal scope';\n\n static override examples = [\n '<%= config.bin %> packs fork <pack-id>',\n ];\n\n static override args = {\n id: Args.string({ description: 'ID of the pack to fork', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(PacksFork);\n this.requireAuth();\n\n const result = await apiPost<{ id: string; name: string }>(`/api/packs/${args.id}/fork`, {});\n this.log(`Forked pack: ${result.name} (${result.id})`);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,0BAA0B,UAAU,KAAK,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,UAAS;AAC3C,SAAK,YAAY;AAEjB,UAAM,SAAS,MAAM,QAAsC,cAAc,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3F,SAAK,IAAI,gBAAgB,OAAO,IAAI,KAAK,OAAO,EAAE,GAAG;AAAA,EACvD;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,0BAA0B,UAAU,KAAK,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,UAAS;AAC3C,SAAK,YAAY;AAEjB,UAAM,SAAS,MAAM,QAAsC,cAAc,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3F,SAAK,IAAI,gBAAgB,OAAO,IAAI,KAAK,OAAO,EAAE,GAAG;AAAA,EACvD;AACF;",
6
6
  "names": []
7
7
  }
@@ -4,13 +4,14 @@ import {
4
4
  } from "../../chunk-BZDKEQKU.js";
5
5
  import {
6
6
  BaseCommand
7
- } from "../../chunk-SZ7VDCD6.js";
7
+ } from "../../chunk-2HK7RGZB.js";
8
8
  import "../../chunk-R56PH7YE.js";
9
- import "../../chunk-SLL3OBKN.js";
9
+ import "../../chunk-GQNJO2P2.js";
10
+ import "../../chunk-37LN5O7M.js";
10
11
  import "../../chunk-EKJ2CABV.js";
11
12
  import {
12
13
  apiGet
13
- } from "../../chunk-ZRLYHBPN.js";
14
+ } from "../../chunk-ZUJBM6HE.js";
14
15
  import "../../chunk-W2YERO7E.js";
15
16
  import "../../chunk-NSBPE2FW.js";
16
17
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/get.ts"],
4
4
  "sourcesContent": ["import { Args } from '@oclif/core';\nimport { printTable } from '@oclif/table';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiGet } from '../../lib/api-client.js';\nimport { truncate, formatScope } from '../../lib/output.js';\n\ninterface PackDetail {\n id: string;\n name: string;\n description: string;\n scope: string;\n version: string;\n tags: string[];\n tier: string;\n instructionCount: number;\n instructions: Array<{\n id: string;\n name: string;\n scope: string;\n version: string;\n position: number;\n }>;\n}\n\nexport default class PacksGet extends BaseCommand {\n static override description = 'Get pack detail with instruction list';\n\n static override examples = [\n '<%= config.bin %> packs get <pack-id>',\n ];\n\n static override args = {\n id: Args.string({ description: 'Pack ID', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(PacksGet);\n this.requireAuth();\n\n const pack = await apiGet<PackDetail>(`/api/packs/${args.id}`);\n\n this.log(`\\nPack: ${pack.name}`);\n this.log(`Description: ${pack.description}`);\n this.log(`Scope: ${formatScope(pack.scope)} | Version: ${pack.version} | Tier: ${pack.tier}`);\n this.log(`Tags: ${(pack.tags ?? []).join(', ') || '(none)'}`);\n this.log(`Instructions: ${pack.instructionCount}\\n`);\n\n if (pack.instructions.length > 0) {\n printTable({\n data: pack.instructions.map((i) => ({\n '#': String(i.position),\n Name: truncate(i.name, 40),\n Scope: formatScope(i.scope),\n Version: i.version,\n })),\n columns: ['#', 'Name', 'Scope', 'Version'],\n });\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAuB3B,IAAqB,WAArB,MAAqB,kBAAiB,YAAY;AAAA,EAChD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,SAAQ;AAC1C,SAAK,YAAY;AAEjB,UAAM,OAAO,MAAM,OAAmB,cAAc,KAAK,EAAE,EAAE;AAE7D,SAAK,IAAI;AAAA,QAAW,KAAK,IAAI,EAAE;AAC/B,SAAK,IAAI,gBAAgB,KAAK,WAAW,EAAE;AAC3C,SAAK,IAAI,UAAU,YAAY,KAAK,KAAK,CAAC,eAAe,KAAK,OAAO,YAAY,KAAK,IAAI,EAAE;AAC5F,SAAK,IAAI,UAAU,KAAK,QAAQ,CAAC,GAAG,KAAK,IAAI,KAAK,QAAQ,EAAE;AAC5D,SAAK,IAAI,iBAAiB,KAAK,gBAAgB;AAAA,CAAI;AAEnD,QAAI,KAAK,aAAa,SAAS,GAAG;AAChC,iBAAW;AAAA,QACT,MAAM,KAAK,aAAa,IAAI,CAAC,OAAO;AAAA,UAClC,KAAK,OAAO,EAAE,QAAQ;AAAA,UACtB,MAAM,SAAS,EAAE,MAAM,EAAE;AAAA,UACzB,OAAO,YAAY,EAAE,KAAK;AAAA,UAC1B,SAAS,EAAE;AAAA,QACb,EAAE;AAAA,QACF,SAAS,CAAC,KAAK,QAAQ,SAAS,SAAS;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAuB3B,IAAqB,WAArB,MAAqB,kBAAiB,YAAY;AAAA,EAChD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,IAAI,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,SAAQ;AAC1C,SAAK,YAAY;AAEjB,UAAM,OAAO,MAAM,OAAmB,cAAc,KAAK,EAAE,EAAE;AAE7D,SAAK,IAAI;AAAA,QAAW,KAAK,IAAI,EAAE;AAC/B,SAAK,IAAI,gBAAgB,KAAK,WAAW,EAAE;AAC3C,SAAK,IAAI,UAAU,YAAY,KAAK,KAAK,CAAC,eAAe,KAAK,OAAO,YAAY,KAAK,IAAI,EAAE;AAC5F,SAAK,IAAI,UAAU,KAAK,QAAQ,CAAC,GAAG,KAAK,IAAI,KAAK,QAAQ,EAAE;AAC5D,SAAK,IAAI,iBAAiB,KAAK,gBAAgB;AAAA,CAAI;AAEnD,QAAI,KAAK,aAAa,SAAS,GAAG;AAChC,iBAAW;AAAA,QACT,MAAM,KAAK,aAAa,IAAI,CAAC,OAAO;AAAA,UAClC,KAAK,OAAO,EAAE,QAAQ;AAAA,UACtB,MAAM,SAAS,EAAE,MAAM,EAAE;AAAA,UACzB,OAAO,YAAY,EAAE,KAAK;AAAA,UAC1B,SAAS,EAAE;AAAA,QACb,EAAE;AAAA,QACF,SAAS,CAAC,KAAK,QAAQ,SAAS,SAAS;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -5,13 +5,14 @@ import {
5
5
  } from "../../chunk-BZDKEQKU.js";
6
6
  import {
7
7
  BaseCommand
8
- } from "../../chunk-SZ7VDCD6.js";
8
+ } from "../../chunk-2HK7RGZB.js";
9
9
  import "../../chunk-R56PH7YE.js";
10
- import "../../chunk-SLL3OBKN.js";
10
+ import "../../chunk-GQNJO2P2.js";
11
+ import "../../chunk-37LN5O7M.js";
11
12
  import "../../chunk-EKJ2CABV.js";
12
13
  import {
13
14
  apiGet
14
- } from "../../chunk-ZRLYHBPN.js";
15
+ } from "../../chunk-ZUJBM6HE.js";
15
16
  import "../../chunk-W2YERO7E.js";
16
17
  import "../../chunk-NSBPE2FW.js";
17
18
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/list.ts"],
4
4
  "sourcesContent": ["import { Flags } from '@oclif/core';\nimport { printTable } from '@oclif/table';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiGet } from '../../lib/api-client.js';\nimport { formatDate, truncate, formatScope } from '../../lib/output.js';\n\ninterface PackSummary {\n id: string;\n name: string;\n scope: string;\n version: string;\n tags: string[];\n instructionCount: number;\n tier: string;\n updatedAt: string;\n}\n\nexport default class PacksList extends BaseCommand {\n static override description = 'List your instruction packs';\n\n static override examples = [\n '<%= config.bin %> packs list',\n '<%= config.bin %> packs list --json',\n ];\n\n static override enableJsonFlag = true;\n\n static override flags = {\n format: Flags.string({\n char: 'f',\n description: 'Output format',\n options: ['table', 'json'],\n default: 'table',\n }),\n };\n\n async run(): Promise<PackSummary[]> {\n const { flags } = await this.parse(PacksList);\n this.requireAuth();\n\n const results = await apiGet<PackSummary[]>('/api/packs');\n\n if (results.length === 0) {\n this.log('No packs found. Create one with `rulemetric packs create`.');\n return results;\n }\n\n if (flags.format === 'json') {\n this.log(JSON.stringify(results, null, 2));\n } else {\n printTable({\n data: results.map((p) => ({\n Name: truncate(p.name, 40),\n Scope: formatScope(p.scope),\n Tier: p.tier,\n Count: String(p.instructionCount),\n Tags: (p.tags ?? []).join(', '),\n Updated: formatDate(p.updatedAt),\n })),\n columns: ['Name', 'Scope', 'Tier', 'Count', 'Tags', 'Updated'],\n });\n }\n\n return results;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,kBAAkB;AAgB3B,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,iBAAiB;AAAA,EAEjC,OAAgB,QAAQ;AAAA,IACtB,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,SAAS,MAAM;AAAA,MACzB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAA8B;AAClC,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAC5C,SAAK,YAAY;AAEjB,UAAM,UAAU,MAAM,OAAsB,YAAY;AAExD,QAAI,QAAQ,WAAW,GAAG;AACxB,WAAK,IAAI,4DAA4D;AACrE,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,WAAW,QAAQ;AAC3B,WAAK,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,IAC3C,OAAO;AACL,iBAAW;AAAA,QACT,MAAM,QAAQ,IAAI,CAAC,OAAO;AAAA,UACxB,MAAM,SAAS,EAAE,MAAM,EAAE;AAAA,UACzB,OAAO,YAAY,EAAE,KAAK;AAAA,UAC1B,MAAM,EAAE;AAAA,UACR,OAAO,OAAO,EAAE,gBAAgB;AAAA,UAChC,OAAO,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI;AAAA,UAC9B,SAAS,WAAW,EAAE,SAAS;AAAA,QACjC,EAAE;AAAA,QACF,SAAS,CAAC,QAAQ,SAAS,QAAQ,SAAS,QAAQ,SAAS;AAAA,MAC/D,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,kBAAkB;AAgB3B,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,iBAAiB;AAAA,EAEjC,OAAgB,QAAQ;AAAA,IACtB,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,SAAS,MAAM;AAAA,MACzB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAA8B;AAClC,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAC5C,SAAK,YAAY;AAEjB,UAAM,UAAU,MAAM,OAAsB,YAAY;AAExD,QAAI,QAAQ,WAAW,GAAG;AACxB,WAAK,IAAI,4DAA4D;AACrE,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,WAAW,QAAQ;AAC3B,WAAK,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,IAC3C,OAAO;AACL,iBAAW;AAAA,QACT,MAAM,QAAQ,IAAI,CAAC,OAAO;AAAA,UACxB,MAAM,SAAS,EAAE,MAAM,EAAE;AAAA,UACzB,OAAO,YAAY,EAAE,KAAK;AAAA,UAC1B,MAAM,EAAE;AAAA,UACR,OAAO,OAAO,EAAE,gBAAgB;AAAA,UAChC,OAAO,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI;AAAA,UAC9B,SAAS,WAAW,EAAE,SAAS;AAAA,QACjC,EAAE;AAAA,QACF,SAAS,CAAC,QAAQ,SAAS,QAAQ,SAAS,QAAQ,SAAS;AAAA,MAC/D,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
8
  import {
8
9
  apiDelete
9
- } from "../../chunk-ZRLYHBPN.js";
10
+ } from "../../chunk-ZUJBM6HE.js";
10
11
  import "../../chunk-W2YERO7E.js";
11
12
  import "../../chunk-NSBPE2FW.js";
12
13
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/packs/remove-instruction.ts"],
4
4
  "sourcesContent": ["import { Args } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiDelete } from '../../lib/api-client.js';\n\nexport default class PacksRemoveInstruction extends BaseCommand {\n static override description = 'Remove an instruction from a pack';\n\n static override examples = [\n '<%= config.bin %> packs remove-instruction <pack-id> <instruction-id>',\n ];\n\n static override args = {\n packId: Args.string({ description: 'Pack ID', required: true }),\n instructionId: Args.string({ description: 'Instruction ID', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(PacksRemoveInstruction);\n this.requireAuth();\n\n await apiDelete(`/api/packs/${args.packId}/instructions/${args.instructionId}`);\n\n this.log('Instruction removed from pack.');\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,yBAArB,MAAqB,gCAA+B,YAAY;AAAA,EAC9D,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,QAAQ,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,IAC9D,eAAe,KAAK,OAAO,EAAE,aAAa,kBAAkB,UAAU,KAAK,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,uBAAsB;AACxD,SAAK,YAAY;AAEjB,UAAM,UAAU,cAAc,KAAK,MAAM,iBAAiB,KAAK,aAAa,EAAE;AAE9E,SAAK,IAAI,gCAAgC;AAAA,EAC3C;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,YAAY;AAIrB,IAAqB,yBAArB,MAAqB,gCAA+B,YAAY;AAAA,EAC9D,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,QAAQ,KAAK,OAAO,EAAE,aAAa,WAAW,UAAU,KAAK,CAAC;AAAA,IAC9D,eAAe,KAAK,OAAO,EAAE,aAAa,kBAAkB,UAAU,KAAK,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,uBAAsB;AACxD,SAAK,YAAY;AAEjB,UAAM,UAAU,cAAc,KAAK,MAAM,iBAAiB,KAAK,aAAa,EAAE;AAE9E,SAAK,IAAI,gCAAgC;AAAA,EAC3C;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,13 +1,16 @@
1
1
  import {
2
2
  GATEWAY_PORT
3
- } from "../../chunk-DAJNO4OI.js";
3
+ } from "../../chunk-4LYCDS2N.js";
4
+ import "../../chunk-7LVVKQMZ.js";
5
+ import "../../chunk-5EDMGK3W.js";
4
6
  import {
5
7
  BaseCommand
6
- } from "../../chunk-SZ7VDCD6.js";
8
+ } from "../../chunk-2HK7RGZB.js";
7
9
  import "../../chunk-R56PH7YE.js";
8
- import "../../chunk-SLL3OBKN.js";
10
+ import "../../chunk-GQNJO2P2.js";
11
+ import "../../chunk-37LN5O7M.js";
9
12
  import "../../chunk-EKJ2CABV.js";
10
- import "../../chunk-ZRLYHBPN.js";
13
+ import "../../chunk-ZUJBM6HE.js";
11
14
  import "../../chunk-W2YERO7E.js";
12
15
  import "../../chunk-NSBPE2FW.js";
13
16
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/proxy/env.ts"],
4
4
  "sourcesContent": ["import { Flags } from '@oclif/core';\nimport { existsSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { BaseCommand } from '../../base-command.js';\nimport { GATEWAY_PORT } from '../../lib/gateway-lifecycle.js';\n\nconst CERT_PATH = join(homedir(), '.mitmproxy', 'mitmproxy-ca-cert.pem');\n\nexport default class ProxyEnv extends BaseCommand {\n static override description =\n 'Print shell env vars to route any client through the RuleMetric proxy';\n\n static override examples = [\n '<%= config.bin %> proxy env',\n '<%= config.bin %> proxy env --shell fish',\n 'eval \"$(rulemetric proxy env)\"',\n 'rulemetric proxy env --python',\n ];\n\n static override flags = {\n shell: Flags.string({\n char: 's',\n default: 'posix',\n description: 'Shell format (posix, fish, powershell)',\n options: ['posix', 'fish', 'powershell'],\n }),\n python: Flags.boolean({\n default: false,\n description: 'Include Python-specific env vars (REQUESTS_CA_BUNDLE, SSL_CERT_FILE)',\n }),\n node: Flags.boolean({\n default: false,\n description: 'Include Node.js-specific env vars (NODE_EXTRA_CA_CERTS)',\n }),\n all: Flags.boolean({\n default: false,\n description: 'Include env vars for all runtimes',\n }),\n vscode: Flags.boolean({\n default: false,\n description: 'Output VS Code settings.json snippet for Copilot proxy',\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(ProxyEnv);\n const shell = flags.shell;\n const includeAll = flags.all;\n const includePython = flags.python || includeAll;\n const includeNode = flags.node || includeAll;\n\n const certExists = existsSync(CERT_PATH);\n const proxyUrl = `http://localhost:${GATEWAY_PORT}`;\n\n if (!certExists) {\n this.warn(\n `CA certificate not found at ${CERT_PATH}\\n` +\n `Run 'rulemetric hooks install' or 'rulemetric proxy setup' to generate it.`,\n );\n this.exit(1);\n }\n\n // VS Code settings.json snippet mode\n if (flags.vscode) {\n const snippet = {\n 'http.proxy': proxyUrl,\n 'http.proxyStrictSSL': certExists,\n 'github.copilot.advanced': {\n 'debug.overrideProxyUrl': proxyUrl,\n },\n };\n this.log(JSON.stringify(snippet, null, 2));\n return;\n }\n\n const vars: Array<{ key: string; value: string; comment?: string }> = [\n { key: 'HTTPS_PROXY', value: proxyUrl, comment: 'Route HTTPS through RuleMetric gateway' },\n { key: 'HTTP_PROXY', value: proxyUrl, comment: 'Route HTTP through RuleMetric gateway' },\n ];\n\n // Always include generic SSL vars\n vars.push({\n key: 'SSL_CERT_FILE',\n value: CERT_PATH,\n comment: 'Trust mitmproxy CA (generic \u2014 works with most libraries)',\n });\n\n if (includeNode || (!includePython && !includeNode)) {\n vars.push({\n key: 'NODE_EXTRA_CA_CERTS',\n value: CERT_PATH,\n comment: 'Trust mitmproxy CA (Node.js)',\n });\n }\n\n if (includePython) {\n vars.push({\n key: 'REQUESTS_CA_BUNDLE',\n value: CERT_PATH,\n comment: 'Trust mitmproxy CA (Python requests / httpx)',\n });\n vars.push({\n key: 'CURL_CA_BUNDLE',\n value: CERT_PATH,\n comment: 'Trust mitmproxy CA (curl / libcurl)',\n });\n }\n\n // Output in the requested shell format\n const lines: string[] = [];\n\n for (const v of vars) {\n switch (shell) {\n case 'fish':\n if (v.comment) lines.push(`# ${v.comment}`);\n lines.push(`set -gx ${v.key} \"${v.value}\"`);\n break;\n case 'powershell':\n if (v.comment) lines.push(`# ${v.comment}`);\n lines.push(`$env:${v.key} = \"${v.value}\"`);\n break;\n default:\n // posix (bash/zsh)\n if (v.comment) lines.push(`# ${v.comment}`);\n lines.push(`export ${v.key}=\"${v.value}\"`);\n }\n }\n\n this.log(lines.join('\\n'));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
- import "../../chunk-ZRLYHBPN.js";
8
+ import "../../chunk-ZUJBM6HE.js";
8
9
  import "../../chunk-W2YERO7E.js";
9
10
  import "../../chunk-NSBPE2FW.js";
10
11
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/proxy/logs.ts"],
4
4
  "sourcesContent": ["import { Flags } from '@oclif/core';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { spawn } from 'node:child_process';\nimport { BaseCommand } from '../../base-command.js';\n\nconst CONFIG_DIR = join(homedir(), '.config', 'rulemetric');\nconst LOG_FILE = join(CONFIG_DIR, 'proxy.log');\nconst PID_FILE = join(CONFIG_DIR, 'proxy.pid');\nconst DOCKER_CONTAINER = 'rulemetric-proxy';\n\nexport default class ProxyLogs extends BaseCommand {\n static override description = 'View context capture proxy logs';\n\n static override examples = [\n '<%= config.bin %> proxy logs',\n '<%= config.bin %> proxy logs --follow',\n '<%= config.bin %> proxy logs --lines 50',\n ];\n\n static override flags = {\n follow: Flags.boolean({\n char: 'f',\n default: false,\n description: 'Follow log output (like tail -f)',\n }),\n lines: Flags.integer({\n char: 'n',\n default: 30,\n description: 'Number of lines to show',\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(ProxyLogs);\n\n // Check if running in Docker mode\n const isDocker = existsSync(PID_FILE) && readFileSync(PID_FILE, 'utf-8').trim().startsWith('docker:');\n\n if (isDocker) {\n const args = ['logs'];\n if (flags.follow) args.push('-f');\n args.push('--tail', String(flags.lines), DOCKER_CONTAINER);\n\n const child = spawn('docker', args, { stdio: 'inherit' });\n\n process.on('SIGINT', () => {\n child.kill();\n process.exit(0);\n });\n\n await new Promise<void>((resolve) => {\n child.on('exit', () => resolve());\n });\n return;\n }\n\n // Local mode \u2014 read log file\n if (!existsSync(LOG_FILE)) {\n this.log(`No proxy log file found at ${LOG_FILE}`);\n this.log('Start the proxy first: rulemetric proxy start');\n return;\n }\n\n if (flags.follow) {\n const tail = spawn('tail', ['-f', '-n', String(flags.lines), LOG_FILE], {\n stdio: 'inherit',\n });\n\n process.on('SIGINT', () => {\n tail.kill();\n process.exit(0);\n });\n\n await new Promise<void>((resolve) => {\n tail.on('exit', () => resolve());\n });\n } else {\n const content = readFileSync(LOG_FILE, 'utf-8');\n const lines = content.split('\\n');\n const lastN = lines.slice(-flags.lines).join('\\n');\n this.log(lastN);\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AACzC,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,aAAa;AAGtB,IAAM,aAAa,KAAK,QAAQ,GAAG,WAAW,YAAY;AAC1D,IAAM,WAAW,KAAK,YAAY,WAAW;AAC7C,IAAM,WAAW,KAAK,YAAY,WAAW;AAC7C,IAAM,mBAAmB;AAEzB,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,QAAQ,MAAM,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO,MAAM,QAAQ;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAG5C,UAAM,WAAW,WAAW,QAAQ,KAAK,aAAa,UAAU,OAAO,EAAE,KAAK,EAAE,WAAW,SAAS;AAEpG,QAAI,UAAU;AACZ,YAAM,OAAO,CAAC,MAAM;AACpB,UAAI,MAAM,OAAQ,MAAK,KAAK,IAAI;AAChC,WAAK,KAAK,UAAU,OAAO,MAAM,KAAK,GAAG,gBAAgB;AAEzD,YAAM,QAAQ,MAAM,UAAU,MAAM,EAAE,OAAO,UAAU,CAAC;AAExD,cAAQ,GAAG,UAAU,MAAM;AACzB,cAAM,KAAK;AACX,gBAAQ,KAAK,CAAC;AAAA,MAChB,CAAC;AAED,YAAM,IAAI,QAAc,CAAC,YAAY;AACnC,cAAM,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,MAClC,CAAC;AACD;AAAA,IACF;AAGA,QAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,WAAK,IAAI,8BAA8B,QAAQ,EAAE;AACjD,WAAK,IAAI,+CAA+C;AACxD;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ;AAChB,YAAM,OAAO,MAAM,QAAQ,CAAC,MAAM,MAAM,OAAO,MAAM,KAAK,GAAG,QAAQ,GAAG;AAAA,QACtE,OAAO;AAAA,MACT,CAAC;AAED,cAAQ,GAAG,UAAU,MAAM;AACzB,aAAK,KAAK;AACV,gBAAQ,KAAK,CAAC;AAAA,MAChB,CAAC;AAED,YAAM,IAAI,QAAc,CAAC,YAAY;AACnC,aAAK,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,MACjC,CAAC;AAAA,IACH,OAAO;AACL,YAAM,UAAU,aAAa,UAAU,OAAO;AAC9C,YAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,YAAM,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,EAAE,KAAK,IAAI;AACjD,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACF;",
5
+ "mappings": ";;;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,YAAY,oBAAoB;AACzC,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,aAAa;AAGtB,IAAM,aAAa,KAAK,QAAQ,GAAG,WAAW,YAAY;AAC1D,IAAM,WAAW,KAAK,YAAY,WAAW;AAC7C,IAAM,WAAW,KAAK,YAAY,WAAW;AAC7C,IAAM,mBAAmB;AAEzB,IAAqB,YAArB,MAAqB,mBAAkB,YAAY;AAAA,EACjD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,QAAQ,MAAM,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAAA,IACD,OAAO,MAAM,QAAQ;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,UAAS;AAG5C,UAAM,WAAW,WAAW,QAAQ,KAAK,aAAa,UAAU,OAAO,EAAE,KAAK,EAAE,WAAW,SAAS;AAEpG,QAAI,UAAU;AACZ,YAAM,OAAO,CAAC,MAAM;AACpB,UAAI,MAAM,OAAQ,MAAK,KAAK,IAAI;AAChC,WAAK,KAAK,UAAU,OAAO,MAAM,KAAK,GAAG,gBAAgB;AAEzD,YAAM,QAAQ,MAAM,UAAU,MAAM,EAAE,OAAO,UAAU,CAAC;AAExD,cAAQ,GAAG,UAAU,MAAM;AACzB,cAAM,KAAK;AACX,gBAAQ,KAAK,CAAC;AAAA,MAChB,CAAC;AAED,YAAM,IAAI,QAAc,CAAC,YAAY;AACnC,cAAM,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,MAClC,CAAC;AACD;AAAA,IACF;AAGA,QAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,WAAK,IAAI,8BAA8B,QAAQ,EAAE;AACjD,WAAK,IAAI,+CAA+C;AACxD;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ;AAChB,YAAM,OAAO,MAAM,QAAQ,CAAC,MAAM,MAAM,OAAO,MAAM,KAAK,GAAG,QAAQ,GAAG;AAAA,QACtE,OAAO;AAAA,MACT,CAAC;AAED,cAAQ,GAAG,UAAU,MAAM;AACzB,aAAK,KAAK;AACV,gBAAQ,KAAK,CAAC;AAAA,MAChB,CAAC;AAED,YAAM,IAAI,QAAc,CAAC,YAAY;AACnC,aAAK,GAAG,QAAQ,MAAM,QAAQ,CAAC;AAAA,MACjC,CAAC;AAAA,IACH,OAAO;AACL,YAAM,UAAU,aAAa,UAAU,OAAO;AAC9C,YAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,YAAM,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,EAAE,KAAK,IAAI;AACjD,WAAK,IAAI,KAAK;AAAA,IAChB;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-SZ7VDCD6.js";
3
+ } from "../../chunk-2HK7RGZB.js";
4
4
  import "../../chunk-R56PH7YE.js";
5
- import "../../chunk-SLL3OBKN.js";
5
+ import "../../chunk-GQNJO2P2.js";
6
+ import "../../chunk-37LN5O7M.js";
6
7
  import "../../chunk-EKJ2CABV.js";
7
- import "../../chunk-ZRLYHBPN.js";
8
+ import "../../chunk-ZUJBM6HE.js";
8
9
  import "../../chunk-W2YERO7E.js";
9
10
  import "../../chunk-NSBPE2FW.js";
10
11
 
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/commands/proxy/restart.ts"],
4
4
  "sourcesContent": ["// `rulemetric proxy restart` \u2014 stop + start in one command. Used by the\n// gateway when it detects an addon version drift (the proxy is loading\n// stale code from a previous CLI version), and by humans who just want\n// the obvious one-liner.\n//\n// We invoke the existing stop and start commands via oclif's runCommand\n// rather than re-implementing their logic. This keeps the addon-path\n// resolution, auth-env loading, and PID file management in exactly one\n// place.\nimport { Flags } from '@oclif/core';\nimport { setTimeout as sleep } from 'node:timers/promises';\nimport { BaseCommand } from '../../base-command.js';\n\nexport default class ProxyRestart extends BaseCommand {\n static override description = 'Restart the context capture proxy (stop + start)';\n static override examples = ['<%= config.bin %> proxy restart'];\n static override flags = {\n port: Flags.integer({ char: 'p', description: 'Proxy listen port' }),\n docker: Flags.boolean({ char: 'd', default: false, description: 'Run in Docker mode' }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(ProxyRestart);\n // Stop is idempotent \u2014 exits cleanly even if nothing is running.\n await this.config.runCommand('proxy:stop', []);\n // Brief gap so the OS releases the port before we re-bind. Without this,\n // the new mitmdump can race with the dying process and fail with\n // \"address already in use\".\n await sleep(500);\n const args: string[] = ['--skip-checks'];\n if (flags.docker) args.push('--docker');\n if (flags.port) args.push('--port', String(flags.port));\n await this.config.runCommand('proxy:start', args);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AASA,SAAS,aAAa;AACtB,SAAS,cAAc,aAAa;AAGpC,IAAqB,eAArB,MAAqB,sBAAqB,YAAY;AAAA,EACpD,OAAgB,cAAc;AAAA,EAC9B,OAAgB,WAAW,CAAC,iCAAiC;AAAA,EAC7D,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,QAAQ,EAAE,MAAM,KAAK,aAAa,oBAAoB,CAAC;AAAA,IACnE,QAAQ,MAAM,QAAQ,EAAE,MAAM,KAAK,SAAS,OAAO,aAAa,qBAAqB,CAAC;AAAA,EACxF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,aAAY;AAE/C,UAAM,KAAK,OAAO,WAAW,cAAc,CAAC,CAAC;AAI7C,UAAM,MAAM,GAAG;AACf,UAAM,OAAiB,CAAC,eAAe;AACvC,QAAI,MAAM,OAAQ,MAAK,KAAK,UAAU;AACtC,QAAI,MAAM,KAAM,MAAK,KAAK,UAAU,OAAO,MAAM,IAAI,CAAC;AACtD,UAAM,KAAK,OAAO,WAAW,eAAe,IAAI;AAAA,EAClD;AACF;",
5
+ "mappings": ";;;;;;;;;;;;AASA,SAAS,aAAa;AACtB,SAAS,cAAc,aAAa;AAGpC,IAAqB,eAArB,MAAqB,sBAAqB,YAAY;AAAA,EACpD,OAAgB,cAAc;AAAA,EAC9B,OAAgB,WAAW,CAAC,iCAAiC;AAAA,EAC7D,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,QAAQ,EAAE,MAAM,KAAK,aAAa,oBAAoB,CAAC;AAAA,IACnE,QAAQ,MAAM,QAAQ,EAAE,MAAM,KAAK,SAAS,OAAO,aAAa,qBAAqB,CAAC;AAAA,EACxF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,aAAY;AAE/C,UAAM,KAAK,OAAO,WAAW,cAAc,CAAC,CAAC;AAI7C,UAAM,MAAM,GAAG;AACf,UAAM,OAAiB,CAAC,eAAe;AACvC,QAAI,MAAM,OAAQ,MAAK,KAAK,UAAU;AACtC,QAAI,MAAM,KAAM,MAAK,KAAK,UAAU,OAAO,MAAM,IAAI,CAAC;AACtD,UAAM,KAAK,OAAO,WAAW,eAAe,IAAI;AAAA,EAClD;AACF;",
6
6
  "names": []
7
7
  }
@@ -3,11 +3,12 @@ import {
3
3
  } from "../../chunk-42GFSAJP.js";
4
4
  import {
5
5
  BaseCommand
6
- } from "../../chunk-SZ7VDCD6.js";
6
+ } from "../../chunk-2HK7RGZB.js";
7
7
  import "../../chunk-R56PH7YE.js";
8
- import "../../chunk-SLL3OBKN.js";
8
+ import "../../chunk-GQNJO2P2.js";
9
+ import "../../chunk-37LN5O7M.js";
9
10
  import "../../chunk-EKJ2CABV.js";
10
- import "../../chunk-ZRLYHBPN.js";
11
+ import "../../chunk-ZUJBM6HE.js";
11
12
  import {
12
13
  isAuthenticated
13
14
  } from "../../chunk-W2YERO7E.js";
@@ -227,8 +228,21 @@ var ProxySetup = class _ProxySetup extends BaseCommand {
227
228
  return false;
228
229
  }
229
230
  async checkHooks() {
230
- const settingsPath = join(process.cwd(), ".claude", "settings.json");
231
- if (!existsSync(settingsPath)) {
231
+ let sawSettingsFile = false;
232
+ for (const fileName of ["settings.local.json", "settings.json"]) {
233
+ const settingsPath = join(process.cwd(), ".claude", fileName);
234
+ if (!existsSync(settingsPath)) continue;
235
+ sawSettingsFile = true;
236
+ try {
237
+ const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
238
+ const hasHooks = settings.hooks && Object.keys(settings.hooks).length > 0;
239
+ if (hasHooks) {
240
+ return { name: "Session Hooks", ok: true, message: "Installed in current project" };
241
+ }
242
+ } catch {
243
+ }
244
+ }
245
+ if (!sawSettingsFile) {
232
246
  return {
233
247
  name: "Session Hooks",
234
248
  ok: false,
@@ -239,18 +253,10 @@ var ProxySetup = class _ProxySetup extends BaseCommand {
239
253
  }
240
254
  };
241
255
  }
242
- try {
243
- const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
244
- const hasHooks = settings.hooks && Object.keys(settings.hooks).length > 0;
245
- if (hasHooks) {
246
- return { name: "Session Hooks", ok: true, message: "Installed in current project" };
247
- }
248
- } catch {
249
- }
250
256
  return {
251
257
  name: "Session Hooks",
252
258
  ok: false,
253
- message: "settings.json exists but hooks not configured",
259
+ message: "settings file exists but hooks not configured",
254
260
  fix: async () => {
255
261
  this.log(" Run `rulemetric hooks install` to configure hooks.");
256
262
  return false;