@rulemetric/cli 0.1.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 (416) hide show
  1. package/bin/dev.js +3 -0
  2. package/bin/run.js +3 -0
  3. package/dist/base-command.d.ts +12 -0
  4. package/dist/base-command.d.ts.map +1 -0
  5. package/dist/base-command.js +37 -0
  6. package/dist/base-command.js.map +1 -0
  7. package/dist/commands/auth/create-key.d.ts +11 -0
  8. package/dist/commands/auth/create-key.d.ts.map +1 -0
  9. package/dist/commands/auth/create-key.js +34 -0
  10. package/dist/commands/auth/create-key.js.map +1 -0
  11. package/dist/commands/auth/login.d.ts +11 -0
  12. package/dist/commands/auth/login.d.ts.map +1 -0
  13. package/dist/commands/auth/login.js +40 -0
  14. package/dist/commands/auth/login.js.map +1 -0
  15. package/dist/commands/auth/logout.d.ts +7 -0
  16. package/dist/commands/auth/logout.d.ts.map +1 -0
  17. package/dist/commands/auth/logout.js +13 -0
  18. package/dist/commands/auth/logout.js.map +1 -0
  19. package/dist/commands/auth/revoke-key.d.ts +10 -0
  20. package/dist/commands/auth/revoke-key.d.ts.map +1 -0
  21. package/dist/commands/auth/revoke-key.js +18 -0
  22. package/dist/commands/auth/revoke-key.js.map +1 -0
  23. package/dist/commands/auth/status.d.ts +7 -0
  24. package/dist/commands/auth/status.d.ts.map +1 -0
  25. package/dist/commands/auth/status.js +23 -0
  26. package/dist/commands/auth/status.js.map +1 -0
  27. package/dist/commands/catalog/index.d.ts +11 -0
  28. package/dist/commands/catalog/index.d.ts.map +1 -0
  29. package/dist/commands/catalog/index.js +35 -0
  30. package/dist/commands/catalog/index.js.map +1 -0
  31. package/dist/commands/catalog/recommend.d.ts +9 -0
  32. package/dist/commands/catalog/recommend.d.ts.map +1 -0
  33. package/dist/commands/catalog/recommend.js +27 -0
  34. package/dist/commands/catalog/recommend.js.map +1 -0
  35. package/dist/commands/convert.d.ts +15 -0
  36. package/dist/commands/convert.d.ts.map +1 -0
  37. package/dist/commands/convert.js +55 -0
  38. package/dist/commands/convert.js.map +1 -0
  39. package/dist/commands/converters.d.ts +12 -0
  40. package/dist/commands/converters.d.ts.map +1 -0
  41. package/dist/commands/converters.js +39 -0
  42. package/dist/commands/converters.js.map +1 -0
  43. package/dist/commands/dashboard.d.ts +10 -0
  44. package/dist/commands/dashboard.d.ts.map +1 -0
  45. package/dist/commands/dashboard.js +24 -0
  46. package/dist/commands/dashboard.js.map +1 -0
  47. package/dist/commands/eval-targets/create.d.ts +14 -0
  48. package/dist/commands/eval-targets/create.d.ts.map +1 -0
  49. package/dist/commands/eval-targets/create.js +40 -0
  50. package/dist/commands/eval-targets/create.js.map +1 -0
  51. package/dist/commands/eval-targets/list.d.ts +10 -0
  52. package/dist/commands/eval-targets/list.d.ts.map +1 -0
  53. package/dist/commands/eval-targets/list.js +36 -0
  54. package/dist/commands/eval-targets/list.js.map +1 -0
  55. package/dist/commands/evals/benchmark.d.ts +13 -0
  56. package/dist/commands/evals/benchmark.d.ts.map +1 -0
  57. package/dist/commands/evals/benchmark.js +53 -0
  58. package/dist/commands/evals/benchmark.js.map +1 -0
  59. package/dist/commands/evals/compare.d.ts +15 -0
  60. package/dist/commands/evals/compare.d.ts.map +1 -0
  61. package/dist/commands/evals/compare.js +101 -0
  62. package/dist/commands/evals/compare.js.map +1 -0
  63. package/dist/commands/evals/create.d.ts +17 -0
  64. package/dist/commands/evals/create.d.ts.map +1 -0
  65. package/dist/commands/evals/create.js +52 -0
  66. package/dist/commands/evals/create.js.map +1 -0
  67. package/dist/commands/evals/listen.d.ts +11 -0
  68. package/dist/commands/evals/listen.d.ts.map +1 -0
  69. package/dist/commands/evals/listen.js +54 -0
  70. package/dist/commands/evals/listen.js.map +1 -0
  71. package/dist/commands/evals/optimize-description.d.ts +22 -0
  72. package/dist/commands/evals/optimize-description.d.ts.map +1 -0
  73. package/dist/commands/evals/optimize-description.js +269 -0
  74. package/dist/commands/evals/optimize-description.js.map +1 -0
  75. package/dist/commands/evals/optimize.d.ts +22 -0
  76. package/dist/commands/evals/optimize.d.ts.map +1 -0
  77. package/dist/commands/evals/optimize.js +200 -0
  78. package/dist/commands/evals/optimize.js.map +1 -0
  79. package/dist/commands/evals/run.d.ts +21 -0
  80. package/dist/commands/evals/run.d.ts.map +1 -0
  81. package/dist/commands/evals/run.js +168 -0
  82. package/dist/commands/evals/run.js.map +1 -0
  83. package/dist/commands/gateway/ensure.d.ts +7 -0
  84. package/dist/commands/gateway/ensure.d.ts.map +1 -0
  85. package/dist/commands/gateway/ensure.js +20 -0
  86. package/dist/commands/gateway/ensure.js.map +1 -0
  87. package/dist/commands/hooks/install.d.ts +16 -0
  88. package/dist/commands/hooks/install.d.ts.map +1 -0
  89. package/dist/commands/hooks/install.js +248 -0
  90. package/dist/commands/hooks/install.js.map +1 -0
  91. package/dist/commands/hooks/run.d.ts +11 -0
  92. package/dist/commands/hooks/run.d.ts.map +1 -0
  93. package/dist/commands/hooks/run.js +56 -0
  94. package/dist/commands/hooks/run.js.map +1 -0
  95. package/dist/commands/hooks/uninstall.d.ts +7 -0
  96. package/dist/commands/hooks/uninstall.d.ts.map +1 -0
  97. package/dist/commands/hooks/uninstall.js +88 -0
  98. package/dist/commands/hooks/uninstall.js.map +1 -0
  99. package/dist/commands/import.d.ts +17 -0
  100. package/dist/commands/import.d.ts.map +1 -0
  101. package/dist/commands/import.js +55 -0
  102. package/dist/commands/import.js.map +1 -0
  103. package/dist/commands/insights/sync.d.ts +17 -0
  104. package/dist/commands/insights/sync.d.ts.map +1 -0
  105. package/dist/commands/insights/sync.js +477 -0
  106. package/dist/commands/insights/sync.js.map +1 -0
  107. package/dist/commands/instructions/create.d.ts +17 -0
  108. package/dist/commands/instructions/create.d.ts.map +1 -0
  109. package/dist/commands/instructions/create.js +60 -0
  110. package/dist/commands/instructions/create.js.map +1 -0
  111. package/dist/commands/instructions/delete.d.ts +13 -0
  112. package/dist/commands/instructions/delete.d.ts.map +1 -0
  113. package/dist/commands/instructions/delete.js +37 -0
  114. package/dist/commands/instructions/delete.js.map +1 -0
  115. package/dist/commands/instructions/fork.d.ts +10 -0
  116. package/dist/commands/instructions/fork.d.ts.map +1 -0
  117. package/dist/commands/instructions/fork.js +19 -0
  118. package/dist/commands/instructions/fork.js.map +1 -0
  119. package/dist/commands/instructions/get.d.ts +15 -0
  120. package/dist/commands/instructions/get.d.ts.map +1 -0
  121. package/dist/commands/instructions/get.js +50 -0
  122. package/dist/commands/instructions/get.js.map +1 -0
  123. package/dist/commands/instructions/list.d.ts +12 -0
  124. package/dist/commands/instructions/list.d.ts.map +1 -0
  125. package/dist/commands/instructions/list.js +47 -0
  126. package/dist/commands/instructions/list.js.map +1 -0
  127. package/dist/commands/instructions/promote.d.ts +14 -0
  128. package/dist/commands/instructions/promote.d.ts.map +1 -0
  129. package/dist/commands/instructions/promote.js +27 -0
  130. package/dist/commands/instructions/promote.js.map +1 -0
  131. package/dist/commands/instructions/pull.d.ts +9 -0
  132. package/dist/commands/instructions/pull.d.ts.map +1 -0
  133. package/dist/commands/instructions/pull.js +22 -0
  134. package/dist/commands/instructions/pull.js.map +1 -0
  135. package/dist/commands/instructions/upstream.d.ts +9 -0
  136. package/dist/commands/instructions/upstream.d.ts.map +1 -0
  137. package/dist/commands/instructions/upstream.js +22 -0
  138. package/dist/commands/instructions/upstream.js.map +1 -0
  139. package/dist/commands/instructions/versions.d.ts +12 -0
  140. package/dist/commands/instructions/versions.d.ts.map +1 -0
  141. package/dist/commands/instructions/versions.js +34 -0
  142. package/dist/commands/instructions/versions.js.map +1 -0
  143. package/dist/commands/packs/add-instruction.d.ts +11 -0
  144. package/dist/commands/packs/add-instruction.d.ts.map +1 -0
  145. package/dist/commands/packs/add-instruction.js +22 -0
  146. package/dist/commands/packs/add-instruction.js.map +1 -0
  147. package/dist/commands/packs/apply.d.ts +13 -0
  148. package/dist/commands/packs/apply.d.ts.map +1 -0
  149. package/dist/commands/packs/apply.js +24 -0
  150. package/dist/commands/packs/apply.js.map +1 -0
  151. package/dist/commands/packs/create.d.ts +13 -0
  152. package/dist/commands/packs/create.d.ts.map +1 -0
  153. package/dist/commands/packs/create.js +35 -0
  154. package/dist/commands/packs/create.js.map +1 -0
  155. package/dist/commands/packs/fork.d.ts +10 -0
  156. package/dist/commands/packs/fork.d.ts.map +1 -0
  157. package/dist/commands/packs/fork.js +19 -0
  158. package/dist/commands/packs/fork.js.map +1 -0
  159. package/dist/commands/packs/get.d.ts +10 -0
  160. package/dist/commands/packs/get.d.ts.map +1 -0
  161. package/dist/commands/packs/get.js +36 -0
  162. package/dist/commands/packs/get.js.map +1 -0
  163. package/dist/commands/packs/list.d.ts +22 -0
  164. package/dist/commands/packs/list.d.ts.map +1 -0
  165. package/dist/commands/packs/list.js +48 -0
  166. package/dist/commands/packs/list.js.map +1 -0
  167. package/dist/commands/packs/remove-instruction.d.ts +11 -0
  168. package/dist/commands/packs/remove-instruction.d.ts.map +1 -0
  169. package/dist/commands/packs/remove-instruction.js +20 -0
  170. package/dist/commands/packs/remove-instruction.js.map +1 -0
  171. package/dist/commands/proxy/env.d.ts +14 -0
  172. package/dist/commands/proxy/env.d.ts.map +1 -0
  173. package/dist/commands/proxy/env.js +118 -0
  174. package/dist/commands/proxy/env.js.map +1 -0
  175. package/dist/commands/proxy/logs.d.ts +11 -0
  176. package/dist/commands/proxy/logs.d.ts.map +1 -0
  177. package/dist/commands/proxy/logs.js +75 -0
  178. package/dist/commands/proxy/logs.js.map +1 -0
  179. package/dist/commands/proxy/setup.d.ts +23 -0
  180. package/dist/commands/proxy/setup.d.ts.map +1 -0
  181. package/dist/commands/proxy/setup.js +391 -0
  182. package/dist/commands/proxy/setup.js.map +1 -0
  183. package/dist/commands/proxy/start.d.ts +17 -0
  184. package/dist/commands/proxy/start.d.ts.map +1 -0
  185. package/dist/commands/proxy/start.js +306 -0
  186. package/dist/commands/proxy/start.js.map +1 -0
  187. package/dist/commands/proxy/status.d.ts +7 -0
  188. package/dist/commands/proxy/status.d.ts.map +1 -0
  189. package/dist/commands/proxy/status.js +65 -0
  190. package/dist/commands/proxy/status.js.map +1 -0
  191. package/dist/commands/proxy/stop.d.ts +8 -0
  192. package/dist/commands/proxy/stop.d.ts.map +1 -0
  193. package/dist/commands/proxy/stop.js +77 -0
  194. package/dist/commands/proxy/stop.js.map +1 -0
  195. package/dist/commands/service/install.d.ts +17 -0
  196. package/dist/commands/service/install.d.ts.map +1 -0
  197. package/dist/commands/service/install.js +383 -0
  198. package/dist/commands/service/install.js.map +1 -0
  199. package/dist/commands/service/install.test.d.ts +2 -0
  200. package/dist/commands/service/install.test.d.ts.map +1 -0
  201. package/dist/commands/service/install.test.js +345 -0
  202. package/dist/commands/service/install.test.js.map +1 -0
  203. package/dist/commands/service/status.d.ts +6 -0
  204. package/dist/commands/service/status.d.ts.map +1 -0
  205. package/dist/commands/service/status.js +112 -0
  206. package/dist/commands/service/status.js.map +1 -0
  207. package/dist/commands/service/uninstall.d.ts +6 -0
  208. package/dist/commands/service/uninstall.d.ts.map +1 -0
  209. package/dist/commands/service/uninstall.js +84 -0
  210. package/dist/commands/service/uninstall.js.map +1 -0
  211. package/dist/commands/sessions/analyze.d.ts +10 -0
  212. package/dist/commands/sessions/analyze.d.ts.map +1 -0
  213. package/dist/commands/sessions/analyze.js +26 -0
  214. package/dist/commands/sessions/analyze.js.map +1 -0
  215. package/dist/commands/sessions/end.d.ts +9 -0
  216. package/dist/commands/sessions/end.d.ts.map +1 -0
  217. package/dist/commands/sessions/end.js +82 -0
  218. package/dist/commands/sessions/end.js.map +1 -0
  219. package/dist/commands/sessions/import.d.ts +13 -0
  220. package/dist/commands/sessions/import.d.ts.map +1 -0
  221. package/dist/commands/sessions/import.js +28 -0
  222. package/dist/commands/sessions/import.js.map +1 -0
  223. package/dist/commands/sessions/list.d.ts +11 -0
  224. package/dist/commands/sessions/list.d.ts.map +1 -0
  225. package/dist/commands/sessions/list.js +34 -0
  226. package/dist/commands/sessions/list.js.map +1 -0
  227. package/dist/commands/sessions/start.d.ts +11 -0
  228. package/dist/commands/sessions/start.d.ts.map +1 -0
  229. package/dist/commands/sessions/start.js +83 -0
  230. package/dist/commands/sessions/start.js.map +1 -0
  231. package/dist/commands/skills/install.d.ts +15 -0
  232. package/dist/commands/skills/install.d.ts.map +1 -0
  233. package/dist/commands/skills/install.js +91 -0
  234. package/dist/commands/skills/install.js.map +1 -0
  235. package/dist/commands/skills/list.d.ts +11 -0
  236. package/dist/commands/skills/list.d.ts.map +1 -0
  237. package/dist/commands/skills/list.js +47 -0
  238. package/dist/commands/skills/list.js.map +1 -0
  239. package/dist/commands/skills/search.d.ts +17 -0
  240. package/dist/commands/skills/search.d.ts.map +1 -0
  241. package/dist/commands/skills/search.js +56 -0
  242. package/dist/commands/skills/search.js.map +1 -0
  243. package/dist/commands/skills/update.d.ts +7 -0
  244. package/dist/commands/skills/update.d.ts.map +1 -0
  245. package/dist/commands/skills/update.js +30 -0
  246. package/dist/commands/skills/update.js.map +1 -0
  247. package/dist/dashboard/Dashboard.d.ts +3 -0
  248. package/dist/dashboard/Dashboard.d.ts.map +1 -0
  249. package/dist/dashboard/Dashboard.js +132 -0
  250. package/dist/dashboard/Dashboard.js.map +1 -0
  251. package/dist/dashboard/data.d.ts +11 -0
  252. package/dist/dashboard/data.d.ts.map +1 -0
  253. package/dist/dashboard/data.js +137 -0
  254. package/dist/dashboard/data.js.map +1 -0
  255. package/dist/dashboard/panels/friction.d.ts +7 -0
  256. package/dist/dashboard/panels/friction.d.ts.map +1 -0
  257. package/dist/dashboard/panels/friction.js +22 -0
  258. package/dist/dashboard/panels/friction.js.map +1 -0
  259. package/dist/dashboard/panels/insights.d.ts +8 -0
  260. package/dist/dashboard/panels/insights.d.ts.map +1 -0
  261. package/dist/dashboard/panels/insights.js +109 -0
  262. package/dist/dashboard/panels/insights.js.map +1 -0
  263. package/dist/dashboard/panels/instructions.d.ts +9 -0
  264. package/dist/dashboard/panels/instructions.d.ts.map +1 -0
  265. package/dist/dashboard/panels/instructions.js +17 -0
  266. package/dist/dashboard/panels/instructions.js.map +1 -0
  267. package/dist/dashboard/panels/outcomes.d.ts +7 -0
  268. package/dist/dashboard/panels/outcomes.d.ts.map +1 -0
  269. package/dist/dashboard/panels/outcomes.js +29 -0
  270. package/dist/dashboard/panels/outcomes.js.map +1 -0
  271. package/dist/dashboard/panels/overview.d.ts +8 -0
  272. package/dist/dashboard/panels/overview.d.ts.map +1 -0
  273. package/dist/dashboard/panels/overview.js +20 -0
  274. package/dist/dashboard/panels/overview.js.map +1 -0
  275. package/dist/dashboard/panels/shared.d.ts +17 -0
  276. package/dist/dashboard/panels/shared.d.ts.map +1 -0
  277. package/dist/dashboard/panels/shared.js +62 -0
  278. package/dist/dashboard/panels/shared.js.map +1 -0
  279. package/dist/dashboard/types.d.ts +80 -0
  280. package/dist/dashboard/types.d.ts.map +1 -0
  281. package/dist/dashboard/types.js +27 -0
  282. package/dist/dashboard/types.js.map +1 -0
  283. package/dist/index.d.ts +2 -0
  284. package/dist/index.d.ts.map +1 -0
  285. package/dist/index.js +2 -0
  286. package/dist/index.js.map +1 -0
  287. package/dist/lib/api-client.d.ts +17 -0
  288. package/dist/lib/api-client.d.ts.map +1 -0
  289. package/dist/lib/api-client.js +92 -0
  290. package/dist/lib/api-client.js.map +1 -0
  291. package/dist/lib/api-client.test.d.ts +2 -0
  292. package/dist/lib/api-client.test.d.ts.map +1 -0
  293. package/dist/lib/api-client.test.js +161 -0
  294. package/dist/lib/api-client.test.js.map +1 -0
  295. package/dist/lib/auth.d.ts +27 -0
  296. package/dist/lib/auth.d.ts.map +1 -0
  297. package/dist/lib/auth.js +137 -0
  298. package/dist/lib/auth.js.map +1 -0
  299. package/dist/lib/auth.test.d.ts +2 -0
  300. package/dist/lib/auth.test.d.ts.map +1 -0
  301. package/dist/lib/auth.test.js +110 -0
  302. package/dist/lib/auth.test.js.map +1 -0
  303. package/dist/lib/eval-analyzer.d.ts +23 -0
  304. package/dist/lib/eval-analyzer.d.ts.map +1 -0
  305. package/dist/lib/eval-analyzer.js +89 -0
  306. package/dist/lib/eval-analyzer.js.map +1 -0
  307. package/dist/lib/eval-benchmark.d.ts +17 -0
  308. package/dist/lib/eval-benchmark.d.ts.map +1 -0
  309. package/dist/lib/eval-benchmark.js +92 -0
  310. package/dist/lib/eval-benchmark.js.map +1 -0
  311. package/dist/lib/eval-conversation-handler.d.ts +9 -0
  312. package/dist/lib/eval-conversation-handler.d.ts.map +1 -0
  313. package/dist/lib/eval-conversation-handler.js +200 -0
  314. package/dist/lib/eval-conversation-handler.js.map +1 -0
  315. package/dist/lib/eval-executor.d.ts +21 -0
  316. package/dist/lib/eval-executor.d.ts.map +1 -0
  317. package/dist/lib/eval-executor.js +80 -0
  318. package/dist/lib/eval-executor.js.map +1 -0
  319. package/dist/lib/eval-executor.test.d.ts +2 -0
  320. package/dist/lib/eval-executor.test.d.ts.map +1 -0
  321. package/dist/lib/eval-executor.test.js +8 -0
  322. package/dist/lib/eval-executor.test.js.map +1 -0
  323. package/dist/lib/eval-grader.d.ts +38 -0
  324. package/dist/lib/eval-grader.d.ts.map +1 -0
  325. package/dist/lib/eval-grader.js +123 -0
  326. package/dist/lib/eval-grader.js.map +1 -0
  327. package/dist/lib/eval-grader.test.d.ts +2 -0
  328. package/dist/lib/eval-grader.test.d.ts.map +1 -0
  329. package/dist/lib/eval-grader.test.js +8 -0
  330. package/dist/lib/eval-grader.test.js.map +1 -0
  331. package/dist/lib/eval-meta-judge.d.ts +28 -0
  332. package/dist/lib/eval-meta-judge.d.ts.map +1 -0
  333. package/dist/lib/eval-meta-judge.js +116 -0
  334. package/dist/lib/eval-meta-judge.js.map +1 -0
  335. package/dist/lib/eval-trigger-tester.d.ts +19 -0
  336. package/dist/lib/eval-trigger-tester.d.ts.map +1 -0
  337. package/dist/lib/eval-trigger-tester.js +96 -0
  338. package/dist/lib/eval-trigger-tester.js.map +1 -0
  339. package/dist/lib/eval-worker.d.ts +12 -0
  340. package/dist/lib/eval-worker.d.ts.map +1 -0
  341. package/dist/lib/eval-worker.js +395 -0
  342. package/dist/lib/eval-worker.js.map +1 -0
  343. package/dist/lib/eval-worktree.d.ts +11 -0
  344. package/dist/lib/eval-worktree.d.ts.map +1 -0
  345. package/dist/lib/eval-worktree.js +87 -0
  346. package/dist/lib/eval-worktree.js.map +1 -0
  347. package/dist/lib/eval-worktree.test.d.ts +2 -0
  348. package/dist/lib/eval-worktree.test.d.ts.map +1 -0
  349. package/dist/lib/eval-worktree.test.js +68 -0
  350. package/dist/lib/eval-worktree.test.js.map +1 -0
  351. package/dist/lib/gateway-entry.d.ts +3 -0
  352. package/dist/lib/gateway-entry.d.ts.map +1 -0
  353. package/dist/lib/gateway-entry.js +19 -0
  354. package/dist/lib/gateway-entry.js.map +1 -0
  355. package/dist/lib/gateway-lifecycle.d.ts +9 -0
  356. package/dist/lib/gateway-lifecycle.d.ts.map +1 -0
  357. package/dist/lib/gateway-lifecycle.js +86 -0
  358. package/dist/lib/gateway-lifecycle.js.map +1 -0
  359. package/dist/lib/gateway.d.ts +12 -0
  360. package/dist/lib/gateway.d.ts.map +1 -0
  361. package/dist/lib/gateway.js +150 -0
  362. package/dist/lib/gateway.js.map +1 -0
  363. package/dist/lib/hooks-config.d.ts +95 -0
  364. package/dist/lib/hooks-config.d.ts.map +1 -0
  365. package/dist/lib/hooks-config.js +416 -0
  366. package/dist/lib/hooks-config.js.map +1 -0
  367. package/dist/lib/hooks-config.test.d.ts +2 -0
  368. package/dist/lib/hooks-config.test.d.ts.map +1 -0
  369. package/dist/lib/hooks-config.test.js +231 -0
  370. package/dist/lib/hooks-config.test.js.map +1 -0
  371. package/dist/lib/insights-prompts.d.ts +13 -0
  372. package/dist/lib/insights-prompts.d.ts.map +1 -0
  373. package/dist/lib/insights-prompts.js +145 -0
  374. package/dist/lib/insights-prompts.js.map +1 -0
  375. package/dist/lib/insights-worker.d.ts +10 -0
  376. package/dist/lib/insights-worker.d.ts.map +1 -0
  377. package/dist/lib/insights-worker.js +329 -0
  378. package/dist/lib/insights-worker.js.map +1 -0
  379. package/dist/lib/llm-client.d.ts +26 -0
  380. package/dist/lib/llm-client.d.ts.map +1 -0
  381. package/dist/lib/llm-client.js +142 -0
  382. package/dist/lib/llm-client.js.map +1 -0
  383. package/dist/lib/llm-client.test.d.ts +2 -0
  384. package/dist/lib/llm-client.test.d.ts.map +1 -0
  385. package/dist/lib/llm-client.test.js +62 -0
  386. package/dist/lib/llm-client.test.js.map +1 -0
  387. package/dist/lib/output.d.ts +4 -0
  388. package/dist/lib/output.d.ts.map +1 -0
  389. package/dist/lib/output.js +36 -0
  390. package/dist/lib/output.js.map +1 -0
  391. package/dist/lib/output.test.d.ts +2 -0
  392. package/dist/lib/output.test.d.ts.map +1 -0
  393. package/dist/lib/output.test.js +71 -0
  394. package/dist/lib/output.test.js.map +1 -0
  395. package/dist/lib/provider-aggregator.d.ts +24 -0
  396. package/dist/lib/provider-aggregator.d.ts.map +1 -0
  397. package/dist/lib/provider-aggregator.js +57 -0
  398. package/dist/lib/provider-aggregator.js.map +1 -0
  399. package/dist/lib/provider-aggregator.test.d.ts +2 -0
  400. package/dist/lib/provider-aggregator.test.d.ts.map +1 -0
  401. package/dist/lib/provider-aggregator.test.js +103 -0
  402. package/dist/lib/provider-aggregator.test.js.map +1 -0
  403. package/dist/lib/skills-loader.d.ts +6 -0
  404. package/dist/lib/skills-loader.d.ts.map +1 -0
  405. package/dist/lib/skills-loader.js +51 -0
  406. package/dist/lib/skills-loader.js.map +1 -0
  407. package/dist/lib/types.d.ts +48 -0
  408. package/dist/lib/types.d.ts.map +1 -0
  409. package/dist/lib/types.js +7 -0
  410. package/dist/lib/types.js.map +1 -0
  411. package/dist/test-helpers.d.ts +58 -0
  412. package/dist/test-helpers.d.ts.map +1 -0
  413. package/dist/test-helpers.js +58 -0
  414. package/dist/test-helpers.js.map +1 -0
  415. package/oclif.manifest.json +3197 -0
  416. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-worker.js","sourceRoot":"","sources":["../../src/lib/eval-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Create an isolated git worktree for eval execution.
3
+ * Returns the worktree path and a cleanup function.
4
+ * Falls back to a temp directory copy if not in a git repo.
5
+ */
6
+ export declare function createEvalWorktree(baseDir?: string): {
7
+ workDir: string;
8
+ cleanup: () => void;
9
+ isWorktree: boolean;
10
+ };
11
+ //# sourceMappingURL=eval-worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-worktree.d.ts","sourceRoot":"","sources":["../../src/lib/eval-worktree.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB,CAgEA"}
@@ -0,0 +1,87 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { mkdtempSync, rmSync, existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ /**
6
+ * Create an isolated git worktree for eval execution.
7
+ * Returns the worktree path and a cleanup function.
8
+ * Falls back to a temp directory copy if not in a git repo.
9
+ */
10
+ export function createEvalWorktree(baseDir) {
11
+ const cwd = baseDir ?? process.cwd();
12
+ const prefix = join(tmpdir(), 'rulemetric-eval-');
13
+ // Check if we're in a git repo
14
+ try {
15
+ execSync('git rev-parse --git-dir', { cwd, stdio: 'pipe' });
16
+ }
17
+ catch {
18
+ // Not a git repo — use a plain temp dir
19
+ const tempDir = mkdtempSync(prefix);
20
+ return {
21
+ workDir: tempDir,
22
+ cleanup: () => safeRm(tempDir),
23
+ isWorktree: false,
24
+ };
25
+ }
26
+ // Get current branch/commit
27
+ let ref;
28
+ try {
29
+ ref = execSync('git rev-parse HEAD', { cwd, stdio: 'pipe' }).toString().trim();
30
+ }
31
+ catch {
32
+ const tempDir = mkdtempSync(prefix);
33
+ return {
34
+ workDir: tempDir,
35
+ cleanup: () => safeRm(tempDir),
36
+ isWorktree: false,
37
+ };
38
+ }
39
+ // Create worktree at a detached HEAD (no branch conflict)
40
+ const worktreePath = mkdtempSync(prefix);
41
+ // mkdtemp creates the dir — git worktree add needs it to not exist
42
+ rmSync(worktreePath, { recursive: true });
43
+ try {
44
+ execSync(`git worktree add --detach "${worktreePath}" ${ref}`, {
45
+ cwd,
46
+ stdio: 'pipe',
47
+ });
48
+ }
49
+ catch {
50
+ // Worktree creation failed — fall back to temp dir
51
+ const tempDir = mkdtempSync(prefix);
52
+ return {
53
+ workDir: tempDir,
54
+ cleanup: () => safeRm(tempDir),
55
+ isWorktree: false,
56
+ };
57
+ }
58
+ return {
59
+ workDir: worktreePath,
60
+ cleanup: () => {
61
+ try {
62
+ execSync(`git worktree remove --force "${worktreePath}"`, { cwd, stdio: 'pipe' });
63
+ }
64
+ catch {
65
+ // If git worktree remove fails, just delete the directory
66
+ safeRm(worktreePath);
67
+ // Prune stale worktree refs
68
+ try {
69
+ execSync('git worktree prune', { cwd, stdio: 'pipe' });
70
+ }
71
+ catch { /* ignore */ }
72
+ }
73
+ },
74
+ isWorktree: true,
75
+ };
76
+ }
77
+ function safeRm(dir) {
78
+ try {
79
+ if (existsSync(dir)) {
80
+ rmSync(dir, { recursive: true, force: true });
81
+ }
82
+ }
83
+ catch {
84
+ // Best-effort cleanup
85
+ }
86
+ }
87
+ //# sourceMappingURL=eval-worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-worktree.js","sourceRoot":"","sources":["../../src/lib/eval-worktree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=eval-worktree.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-worktree.test.d.ts","sourceRoot":"","sources":["../../src/lib/eval-worktree.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { createEvalWorktree } from './eval-worktree.js';
3
+ import { execSync } from 'node:child_process';
4
+ import { existsSync, mkdtempSync, writeFileSync, rmSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { tmpdir } from 'node:os';
7
+ describe('createEvalWorktree', () => {
8
+ let gitRepo;
9
+ beforeEach(() => {
10
+ // Create a temporary git repo for testing
11
+ gitRepo = mkdtempSync(join(tmpdir(), 'eval-worktree-test-'));
12
+ execSync('git init', { cwd: gitRepo, stdio: 'pipe' });
13
+ execSync('git config user.email "test@test.com"', { cwd: gitRepo, stdio: 'pipe' });
14
+ execSync('git config user.name "Test"', { cwd: gitRepo, stdio: 'pipe' });
15
+ writeFileSync(join(gitRepo, 'test.txt'), 'hello');
16
+ execSync('git add . && git commit -m "init"', { cwd: gitRepo, stdio: 'pipe' });
17
+ });
18
+ afterEach(() => {
19
+ // Clean up worktrees before removing repo
20
+ try {
21
+ execSync('git worktree prune', { cwd: gitRepo, stdio: 'pipe' });
22
+ }
23
+ catch { /* ignore */ }
24
+ rmSync(gitRepo, { recursive: true, force: true });
25
+ });
26
+ it('creates a git worktree in a git repo', () => {
27
+ const { workDir, cleanup, isWorktree } = createEvalWorktree(gitRepo);
28
+ expect(isWorktree).toBe(true);
29
+ expect(existsSync(workDir)).toBe(true);
30
+ expect(existsSync(join(workDir, 'test.txt'))).toBe(true);
31
+ cleanup();
32
+ expect(existsSync(workDir)).toBe(false);
33
+ });
34
+ it('falls back to temp dir outside a git repo', () => {
35
+ const nonGitDir = mkdtempSync(join(tmpdir(), 'non-git-'));
36
+ try {
37
+ const { workDir, cleanup, isWorktree } = createEvalWorktree(nonGitDir);
38
+ expect(isWorktree).toBe(false);
39
+ expect(existsSync(workDir)).toBe(true);
40
+ cleanup();
41
+ expect(existsSync(workDir)).toBe(false);
42
+ }
43
+ finally {
44
+ rmSync(nonGitDir, { recursive: true, force: true });
45
+ }
46
+ });
47
+ it('creates independent worktrees for parallel use', () => {
48
+ const wt1 = createEvalWorktree(gitRepo);
49
+ const wt2 = createEvalWorktree(gitRepo);
50
+ expect(wt1.workDir).not.toBe(wt2.workDir);
51
+ expect(wt1.isWorktree).toBe(true);
52
+ expect(wt2.isWorktree).toBe(true);
53
+ // Both should have the repo contents
54
+ expect(existsSync(join(wt1.workDir, 'test.txt'))).toBe(true);
55
+ expect(existsSync(join(wt2.workDir, 'test.txt'))).toBe(true);
56
+ // Modifications in one don't affect the other
57
+ writeFileSync(join(wt1.workDir, 'new-file.txt'), 'only in wt1');
58
+ expect(existsSync(join(wt2.workDir, 'new-file.txt'))).toBe(false);
59
+ wt1.cleanup();
60
+ wt2.cleanup();
61
+ });
62
+ it('cleanup is idempotent', () => {
63
+ const { cleanup } = createEvalWorktree(gitRepo);
64
+ cleanup();
65
+ cleanup(); // should not throw
66
+ });
67
+ });
68
+ //# sourceMappingURL=eval-worktree.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-worktree.test.js","sourceRoot":"","sources":["../../src/lib/eval-worktree.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=gateway-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-entry.d.ts","sourceRoot":"","sources":["../../src/lib/gateway-entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone entry point for the gateway process.
4
+ * Spawned as a detached child process by the CLI.
5
+ */
6
+ import { startGateway, GATEWAY_PORT, MITMPROXY_PORT } from './gateway.js';
7
+ const { server, healthInterval } = startGateway(GATEWAY_PORT, MITMPROXY_PORT);
8
+ function shutdown() {
9
+ console.log(`[${new Date().toISOString()}] gateway shutting down`);
10
+ clearInterval(healthInterval);
11
+ server.close(() => {
12
+ process.exit(0);
13
+ });
14
+ // Force exit after 5s if connections don't drain
15
+ setTimeout(() => process.exit(0), 5000).unref();
16
+ }
17
+ process.on('SIGTERM', shutdown);
18
+ process.on('SIGINT', shutdown);
19
+ //# sourceMappingURL=gateway-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-entry.js","sourceRoot":"","sources":["../../src/lib/gateway-entry.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAE9E,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACnE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,iDAAiD;IACjD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const GATEWAY_PID_FILE: string;
2
+ export declare const GATEWAY_LOG_FILE: string;
3
+ export declare const GATEWAY_PORT = 8787;
4
+ export declare const MITMPROXY_PORT = 8788;
5
+ export declare function isGatewayRunning(): boolean;
6
+ export declare function getGatewayPid(): number | null;
7
+ export declare function spawnGateway(): number;
8
+ export declare function stopGateway(): boolean;
9
+ //# sourceMappingURL=gateway-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-lifecycle.d.ts","sourceRoot":"","sources":["../../src/lib/gateway-lifecycle.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,gBAAgB,QAAkC,CAAC;AAChE,eAAO,MAAM,gBAAgB,QAAkC,CAAC;AAChE,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,wBAAgB,gBAAgB,IAAI,OAAO,CAa1C;AAED,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAK7C;AAiBD,wBAAgB,YAAY,IAAI,MAAM,CAyBrC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAYrC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Gateway process lifecycle helpers — spawn, stop, check status.
3
+ * Used by hooks install/uninstall, session-start hook, and proxy status.
4
+ */
5
+ import { spawn } from 'node:child_process';
6
+ import { existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
7
+ import { homedir } from 'node:os';
8
+ import { join, resolve } from 'node:path';
9
+ const CONFIG_DIR = join(homedir(), '.config', 'rulemetric');
10
+ export const GATEWAY_PID_FILE = join(CONFIG_DIR, 'gateway.pid');
11
+ export const GATEWAY_LOG_FILE = join(CONFIG_DIR, 'gateway.log');
12
+ export const GATEWAY_PORT = 8787;
13
+ export const MITMPROXY_PORT = 8788;
14
+ export function isGatewayRunning() {
15
+ if (!existsSync(GATEWAY_PID_FILE))
16
+ return false;
17
+ const content = readFileSync(GATEWAY_PID_FILE, 'utf-8').trim();
18
+ const pid = parseInt(content, 10);
19
+ if (isNaN(pid))
20
+ return false;
21
+ try {
22
+ process.kill(pid, 0);
23
+ return true;
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ export function getGatewayPid() {
30
+ if (!existsSync(GATEWAY_PID_FILE))
31
+ return null;
32
+ const content = readFileSync(GATEWAY_PID_FILE, 'utf-8').trim();
33
+ const pid = parseInt(content, 10);
34
+ return isNaN(pid) ? null : pid;
35
+ }
36
+ function findGatewayEntry() {
37
+ // Look for the compiled gateway-entry.js relative to this file's location
38
+ const candidates = [
39
+ resolve(import.meta.dirname, './gateway-entry.js'),
40
+ resolve(import.meta.dirname, '../lib/gateway-entry.js'),
41
+ ];
42
+ for (const p of candidates) {
43
+ if (existsSync(p))
44
+ return p;
45
+ }
46
+ throw new Error('Could not find gateway-entry.js. Is the CLI built?\n' +
47
+ 'Searched:\n' + candidates.map(c => ` ${c}`).join('\n'));
48
+ }
49
+ export function spawnGateway() {
50
+ if (isGatewayRunning()) {
51
+ const pid = getGatewayPid();
52
+ if (pid)
53
+ return pid;
54
+ }
55
+ mkdirSync(CONFIG_DIR, { recursive: true });
56
+ const entryPath = findGatewayEntry();
57
+ const logFd = openSync(GATEWAY_LOG_FILE, 'a');
58
+ const child = spawn(process.execPath, [entryPath], {
59
+ detached: true,
60
+ stdio: ['ignore', logFd, logFd],
61
+ env: process.env,
62
+ });
63
+ child.unref();
64
+ if (!child.pid) {
65
+ throw new Error('Failed to spawn gateway process');
66
+ }
67
+ writeFileSync(GATEWAY_PID_FILE, String(child.pid));
68
+ return child.pid;
69
+ }
70
+ export function stopGateway() {
71
+ const pid = getGatewayPid();
72
+ if (pid === null)
73
+ return false;
74
+ try {
75
+ process.kill(pid, 'SIGTERM');
76
+ }
77
+ catch {
78
+ // Process already gone
79
+ }
80
+ try {
81
+ unlinkSync(GATEWAY_PID_FILE);
82
+ }
83
+ catch { /* already gone */ }
84
+ return true;
85
+ }
86
+ //# sourceMappingURL=gateway-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-lifecycle.js","sourceRoot":"","sources":["../../src/lib/gateway-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Resilient HTTP proxy gateway that always accepts connections on GATEWAY_PORT.
3
+ * Routes through mitmproxy when it's alive, direct to upstream when it's not.
4
+ */
5
+ import * as http from 'node:http';
6
+ export declare const GATEWAY_PORT = 8787;
7
+ export declare const MITMPROXY_PORT = 8788;
8
+ export declare function startGateway(port?: number, mitmproxyPort?: number): {
9
+ server: http.Server;
10
+ healthInterval: NodeJS.Timeout;
11
+ };
12
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/lib/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,cAAc,OAAO,CAAC;AAuJnC,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAqB,EAC3B,aAAa,GAAE,MAAuB,GACrC;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAA;CAAE,CA4BzD"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Resilient HTTP proxy gateway that always accepts connections on GATEWAY_PORT.
3
+ * Routes through mitmproxy when it's alive, direct to upstream when it's not.
4
+ */
5
+ import * as http from 'node:http';
6
+ import * as net from 'node:net';
7
+ export const GATEWAY_PORT = 8787;
8
+ export const MITMPROXY_PORT = 8788;
9
+ const HEALTH_INTERVAL = 3000;
10
+ const HEALTH_TIMEOUT = 500;
11
+ let isProxyAlive = false;
12
+ let lastState = null;
13
+ function log(msg) {
14
+ const ts = new Date().toISOString();
15
+ console.log(`[${ts}] ${msg}`);
16
+ }
17
+ function checkProxyHealth(mitmproxyPort) {
18
+ const sock = net.connect({ port: mitmproxyPort, timeout: HEALTH_TIMEOUT });
19
+ sock.on('connect', () => {
20
+ sock.destroy();
21
+ if (!isProxyAlive) {
22
+ isProxyAlive = true;
23
+ log(`mitmproxy up on :${mitmproxyPort}, routing through proxy`);
24
+ }
25
+ });
26
+ sock.on('error', () => {
27
+ if (isProxyAlive) {
28
+ isProxyAlive = false;
29
+ log(`mitmproxy down on :${mitmproxyPort}, routing direct`);
30
+ }
31
+ });
32
+ sock.on('timeout', () => {
33
+ sock.destroy();
34
+ if (isProxyAlive) {
35
+ isProxyAlive = false;
36
+ log(`mitmproxy timeout on :${mitmproxyPort}, routing direct`);
37
+ }
38
+ });
39
+ }
40
+ function handleConnect(req, clientSocket, head, mitmproxyPort) {
41
+ const [targetHost, targetPortStr] = (req.url ?? '').split(':');
42
+ const targetPort = parseInt(targetPortStr, 10) || 443;
43
+ if (isProxyAlive) {
44
+ // Forward CONNECT to mitmproxy
45
+ const proxySocket = net.connect({ port: mitmproxyPort, host: '127.0.0.1' });
46
+ proxySocket.on('connect', () => {
47
+ // Send the CONNECT request to mitmproxy
48
+ proxySocket.write(`CONNECT ${req.url} HTTP/1.1\r\nHost: ${req.url}\r\n\r\n`);
49
+ });
50
+ // Wait for mitmproxy's 200 response before piping
51
+ let responseBuffer = Buffer.alloc(0);
52
+ const onData = (chunk) => {
53
+ responseBuffer = Buffer.concat([responseBuffer, chunk]);
54
+ const responseStr = responseBuffer.toString();
55
+ if (responseStr.includes('\r\n\r\n')) {
56
+ proxySocket.removeListener('data', onData);
57
+ // Forward the 200 to client
58
+ clientSocket.write('HTTP/1.1 200 Connection Established\r\n\r\n');
59
+ // Pipe remaining data and head
60
+ if (head.length > 0)
61
+ proxySocket.write(head);
62
+ clientSocket.pipe(proxySocket);
63
+ proxySocket.pipe(clientSocket);
64
+ }
65
+ };
66
+ proxySocket.on('data', onData);
67
+ proxySocket.on('error', (err) => {
68
+ log(`proxy socket error for ${req.url}: ${err.message}, falling back to direct`);
69
+ // Mitmproxy failed mid-connect, fall back to direct
70
+ connectDirect(req, clientSocket, head, targetHost, targetPort);
71
+ });
72
+ clientSocket.on('error', () => {
73
+ proxySocket.destroy();
74
+ });
75
+ }
76
+ else {
77
+ connectDirect(req, clientSocket, head, targetHost, targetPort);
78
+ }
79
+ }
80
+ function connectDirect(req, clientSocket, head, targetHost, targetPort) {
81
+ const upstream = net.connect({ port: targetPort, host: targetHost });
82
+ upstream.on('connect', () => {
83
+ clientSocket.write('HTTP/1.1 200 Connection Established\r\n\r\n');
84
+ if (head.length > 0)
85
+ upstream.write(head);
86
+ clientSocket.pipe(upstream);
87
+ upstream.pipe(clientSocket);
88
+ });
89
+ upstream.on('error', (err) => {
90
+ log(`upstream error for ${req.url}: ${err.message}`);
91
+ clientSocket.end('HTTP/1.1 502 Bad Gateway\r\n\r\n');
92
+ });
93
+ clientSocket.on('error', () => {
94
+ upstream.destroy();
95
+ });
96
+ }
97
+ function handleRequest(req, res, mitmproxyPort) {
98
+ // Plain HTTP proxy (non-CONNECT)
99
+ const targetUrl = req.url ?? '';
100
+ let parsedUrl;
101
+ try {
102
+ parsedUrl = new URL(targetUrl);
103
+ }
104
+ catch {
105
+ res.writeHead(400);
106
+ res.end('Bad Request');
107
+ return;
108
+ }
109
+ const options = {
110
+ hostname: isProxyAlive ? '127.0.0.1' : parsedUrl.hostname,
111
+ port: isProxyAlive ? mitmproxyPort : (parseInt(parsedUrl.port, 10) || 80),
112
+ path: isProxyAlive ? targetUrl : parsedUrl.pathname + parsedUrl.search,
113
+ method: req.method,
114
+ headers: req.headers,
115
+ };
116
+ const proxyReq = http.request(options, (proxyRes) => {
117
+ res.writeHead(proxyRes.statusCode ?? 502, proxyRes.headers);
118
+ proxyRes.pipe(res);
119
+ });
120
+ proxyReq.on('error', (err) => {
121
+ log(`HTTP proxy error for ${targetUrl}: ${err.message}`);
122
+ res.writeHead(502);
123
+ res.end('Bad Gateway');
124
+ });
125
+ req.pipe(proxyReq);
126
+ }
127
+ export function startGateway(port = GATEWAY_PORT, mitmproxyPort = MITMPROXY_PORT) {
128
+ const server = http.createServer((req, res) => {
129
+ handleRequest(req, res, mitmproxyPort);
130
+ });
131
+ server.on('connect', (req, clientSocket, head) => {
132
+ handleConnect(req, clientSocket, head, mitmproxyPort);
133
+ });
134
+ // Don't crash on client socket errors
135
+ server.on('clientError', (_err, socket) => {
136
+ if (socket.writable) {
137
+ socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
138
+ }
139
+ });
140
+ const healthInterval = setInterval(() => {
141
+ checkProxyHealth(mitmproxyPort);
142
+ }, HEALTH_INTERVAL);
143
+ // Do an immediate check
144
+ checkProxyHealth(mitmproxyPort);
145
+ server.listen(port, '127.0.0.1', () => {
146
+ log(`gateway listening on 127.0.0.1:${port} (mitmproxy target: :${mitmproxyPort})`);
147
+ });
148
+ return { server, healthInterval };
149
+ }
150
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/lib/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export type DetectedTool = 'claude_code' | 'cursor' | 'copilot_agent';
2
+ /**
3
+ * Detect which AI coding tools are installed in the project by checking
4
+ * for their config directories.
5
+ */
6
+ export declare function detectInstalledTools(projectPath: string): DetectedTool[];
7
+ /**
8
+ * Generate Cursor hooks config object.
9
+ *
10
+ * Cursor uses event names like beforeSubmitPrompt, afterFileEdit, etc.
11
+ * Each event maps to an array of hook objects with a `command` field.
12
+ */
13
+ export declare function generateCursorHooksConfig(): object;
14
+ /**
15
+ * Generate Copilot Agent hooks config object.
16
+ *
17
+ * Copilot uses event names like sessionStart, userPromptSubmitted, etc.
18
+ * Each event maps to an array of hook objects with `type` and `bash` fields.
19
+ */
20
+ export declare function generateCopilotHooksConfig(): object;
21
+ /**
22
+ * Write Cursor hooks config to `.cursor/hooks.json`.
23
+ * Merges with existing config — appends rulemetric hooks without duplicating.
24
+ * Returns the config file path, or null if `.cursor/` doesn't exist.
25
+ */
26
+ export declare function writeCursorHooks(projectPath: string): string | null;
27
+ /**
28
+ * Write Copilot Agent hooks config to `.github/hooks/rulemetric.json`.
29
+ * Creates the hooks directory if needed.
30
+ * Returns the config file path, or null if `.github/` doesn't exist.
31
+ */
32
+ export declare function writeCopilotHooks(projectPath: string): string | null;
33
+ /**
34
+ * Remove rulemetric hooks from `.cursor/hooks.json`.
35
+ * Preserves other hooks and removes empty event arrays.
36
+ * Returns true if changes were made.
37
+ */
38
+ export declare function removeCursorHooks(projectPath: string): boolean;
39
+ /**
40
+ * Write Cursor proxy config to `.cursor/settings.json`.
41
+ * Sets `http.proxy` and `http.proxyStrictSSL` while preserving existing settings.
42
+ * Returns true if `.cursor/` exists and config was written, false otherwise.
43
+ */
44
+ export declare function writeCursorProxyConfig(projectPath: string, gatewayPort: number, certPath: string): boolean;
45
+ /**
46
+ * Write VS Code proxy config to `.vscode/settings.json` for Copilot capture.
47
+ * Sets `http.proxy`, `http.proxyStrictSSL`, and Copilot-specific override
48
+ * while preserving existing settings.
49
+ * Returns true if config was written, false if `.vscode/` doesn't exist.
50
+ */
51
+ export declare function writeVSCodeProxyConfig(projectPath: string, gatewayPort: number, certPath: string): boolean;
52
+ /**
53
+ * Remove VS Code proxy config from `.vscode/settings.json`.
54
+ * Removes `http.proxy`, `http.proxyStrictSSL`, and Copilot proxy override.
55
+ * Returns true if changes were made.
56
+ */
57
+ export declare function removeVSCodeProxyConfig(projectPath: string): boolean;
58
+ /**
59
+ * Remove Copilot Agent hooks by deleting `.github/hooks/rulemetric.json`.
60
+ * Returns true if the file was removed.
61
+ */
62
+ export declare function removeCopilotHooks(projectPath: string): boolean;
63
+ /**
64
+ * Set HTTPS_PROXY and NODE_EXTRA_CA_CERTS for all GUI apps on macOS.
65
+ *
66
+ * Two layers:
67
+ * 1. `launchctl setenv` — immediate effect for newly launched apps
68
+ * 2. LaunchAgent plist — persists across reboots
69
+ *
70
+ * This ensures VS Code / Copilot / Cursor route LLM traffic through the
71
+ * gateway even when launched from Dock or Spotlight (not a terminal).
72
+ *
73
+ * References:
74
+ * - anthropics/claude-code#30318 (same pattern for Claude Desktop)
75
+ * - Snyk IDE docs recommend launchctl setenv for macOS
76
+ * - Apple QA1067 (archived) — original env var mechanism removed in 10.10
77
+ */
78
+ export declare function installMacOSProxyEnv(gatewayPort: number, certPath: string): boolean;
79
+ /**
80
+ * Remove the RuleMetric LaunchAgent and unset env vars.
81
+ */
82
+ export declare function uninstallMacOSProxyEnv(): boolean;
83
+ /**
84
+ * Set http.proxy in VS Code user settings (not workspace).
85
+ *
86
+ * Workspace-level http.proxy is silently ignored because VS Code restricts
87
+ * it to APPLICATION scope (microsoft/vscode#236932). User-level settings
88
+ * are the only reliable way to configure http.proxy.
89
+ */
90
+ export declare function writeVSCodeUserProxyConfig(gatewayPort: number): boolean;
91
+ /**
92
+ * Remove RuleMetric proxy config from VS Code user settings.
93
+ */
94
+ export declare function removeVSCodeUserProxyConfig(): boolean;
95
+ //# sourceMappingURL=hooks-config.d.ts.map