@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":"hooks-config.test.js","sourceRoot":"","sources":["../../src/lib/hooks-config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Recommendation prompts matching Claude Code's /insights structure.
3
+ * Each prompt is sent to `claude -p` with the aggregated stats data.
4
+ */
5
+ export interface PromptSpec {
6
+ name: string;
7
+ prompt: string;
8
+ maxTokens: number;
9
+ }
10
+ export declare const RECOMMENDATION_PROMPTS: PromptSpec[];
11
+ export declare const AT_A_GLANCE_PROMPT = "You're writing an \"At a Glance\" summary for a Claude Code usage insights report.\nUse this 4-part structure:\n1. **What's working** - What is the user's unique style and what impactful things have they done? Don't be fluffy.\n2. **What's hindering you** - Split into (a) Claude's fault and (b) user-side friction. Be honest but constructive.\n3. **Quick wins to try** - Specific Claude Code features they could try, or a compelling workflow technique.\n4. **Ambitious workflows for better models** - As models improve, what workflows should they prepare for?\nKeep each section to 2-3 sentences. Use a coaching tone.\nRESPOND WITH ONLY A VALID JSON OBJECT:\n{\n \"whats_working\": \"(refer to instructions above)\",\n \"whats_hindering\": \"(refer to instructions above)\",\n \"quick_wins\": \"(refer to instructions above)\",\n \"ambitious_workflows\": \"(refer to instructions above)\"\n}";
12
+ export declare const FACET_GENERATION_PROMPT = "Analyze this coding session and produce a structured analysis.\nThe session is from a non-Claude-Code tool, so analyze the conversation and tool usage patterns.\n\nRESPOND WITH ONLY A VALID JSON OBJECT:\n{\n \"underlying_goal\": \"1-2 sentence description of what the user was trying to accomplish\",\n \"goal_categories\": {\"category\": count},\n \"outcome\": \"achieved|mostly_achieved|partially_achieved|not_achieved|abandoned\",\n \"session_type\": \"quick_task|iterative_refinement|exploration|debugging|greenfield\",\n \"friction_counts\": {\"wrong_approach\": 0, \"tool_failure\": 0, \"excessive_changes\": 0, \"misunderstanding\": 0},\n \"friction_detail\": \"Brief description of any friction encountered, or empty string\",\n \"primary_success\": \"Brief description of main achievement, or empty string\",\n \"brief_summary\": \"2-3 sentence summary of the session\"\n}\n\nGoal categories to use: debugging, feature_development, refactoring, testing, documentation, investigation, exploration, code_review, deployment, configuration, end_to_end_testing, logging_documentation, ui_testing.\n\nOutcome guide:\n- achieved: Task completed successfully\n- mostly_achieved: Main goal done but minor items remain\n- partially_achieved: Some progress but significant work left\n- not_achieved: Attempted but failed\n- abandoned: User gave up or switched tasks";
13
+ //# sourceMappingURL=insights-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-prompts.d.ts","sourceRoot":"","sources":["../../src/lib/insights-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,EAAE,UAAU,EAsG9C,CAAC;AAEF,eAAO,MAAM,kBAAkB,q4BAa7B,CAAC;AAEH,eAAO,MAAM,uBAAuB,g2CAsBQ,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Recommendation prompts matching Claude Code's /insights structure.
3
+ * Each prompt is sent to `claude -p` with the aggregated stats data.
4
+ */
5
+ export const RECOMMENDATION_PROMPTS = [
6
+ {
7
+ name: 'project_areas',
8
+ prompt: `Analyze this Claude Code usage data and identify project areas.
9
+ RESPOND WITH ONLY A VALID JSON OBJECT:
10
+ {
11
+ "areas": [
12
+ {"name": "Area name", "session_count": N, "description": "2-3 sentences about what was worked on and how Claude Code was used."}
13
+ ]
14
+ }
15
+ Include 4-5 areas. Skip internal CC operations.`,
16
+ maxTokens: 8192,
17
+ },
18
+ {
19
+ name: 'interaction_style',
20
+ prompt: `Analyze this Claude Code usage data and describe the user's interaction style.
21
+ RESPOND WITH ONLY A VALID JSON OBJECT:
22
+ {
23
+ "narrative": "2-3 paragraphs analyzing HOW the user interacts with Claude Code. Use second person 'you'. Describe patterns: iterate quickly vs detailed upfront specs? Interrupt often or let Claude run? Include specific examples. Use **bold** for key insights.",
24
+ "key_pattern": "One sentence summary of most distinctive interaction style"
25
+ }`,
26
+ maxTokens: 8192,
27
+ },
28
+ {
29
+ name: 'what_works',
30
+ prompt: `Analyze this Claude Code usage data and identify what's working well for this user. Use second person ("you").
31
+ RESPOND WITH ONLY A VALID JSON OBJECT:
32
+ {
33
+ "intro": "1 sentence of context",
34
+ "impressive_workflows": [
35
+ {"title": "Short title (3-6 words)", "description": "2-3 sentences describing the impressive workflow or approach. Use 'you' not 'the user'."}
36
+ ]
37
+ }
38
+ Include 3 impressive workflows.`,
39
+ maxTokens: 8192,
40
+ },
41
+ {
42
+ name: 'friction_analysis',
43
+ prompt: `Analyze this Claude Code usage data and identify friction points for this user. Use second person ("you").
44
+ RESPOND WITH ONLY A VALID JSON OBJECT:
45
+ {
46
+ "intro": "1 sentence summarizing friction patterns",
47
+ "categories": [
48
+ {"category": "Concrete category name", "description": "1-2 sentences explaining this category and what could be done differently. Use 'you' not 'the user'.", "examples": ["Specific example with consequence", "Another example"]}
49
+ ]
50
+ }
51
+ Include 3 friction categories with 2 examples each.`,
52
+ maxTokens: 8192,
53
+ },
54
+ {
55
+ name: 'suggestions',
56
+ prompt: `Analyze this Claude Code usage data and suggest improvements.
57
+ ## CC FEATURES REFERENCE (pick from these for features_to_try):
58
+ 1. **MCP Servers**: Connect Claude to external tools, databases, and APIs via Model Context Protocol.
59
+ - How to use: Run \`claude mcp add <server-name> -- <command>\`
60
+ 2. **Custom Skills**: Reusable prompts you define as markdown files that run with a single /command.
61
+ - How to use: Create \`.claude/skills/commit/SKILL.md\` with instructions. Then type \`/commit\` to run it.
62
+ 3. **Hooks**: Shell commands that auto-run at specific lifecycle events.
63
+ - How to use: Add to \`.claude/settings.json\` under "hooks" key.
64
+ 4. **Headless Mode**: Run Claude non-interactively from scripts and CI/CD.
65
+ - How to use: \`claude -p "fix lint errors" --allowedTools "Edit,Read,Bash"\`
66
+ 5. **Task Agents**: Claude spawns focused sub-agents for complex exploration or parallel work.
67
+ - How to use: Claude auto-invokes when helpful, or ask "use an agent to explore X"
68
+ RESPOND WITH ONLY A VALID JSON OBJECT:
69
+ {
70
+ "claude_md_additions": [
71
+ {"addition": "A specific line or block to add to CLAUDE.md", "why": "1 sentence explaining why", "prompt_scaffold": "Instructions for where to add this"}
72
+ ],
73
+ "features_to_try": [
74
+ {"feature": "Feature name from above", "one_liner": "What it does", "why_for_you": "Why this would help YOU", "example_code": "Actual command or config to copy"}
75
+ ],
76
+ "usage_patterns": [
77
+ {"title": "Short title", "suggestion": "1-2 sentence summary", "detail": "3-4 sentences explaining how this applies", "copyable_prompt": "A specific prompt to copy and try"}
78
+ ]
79
+ }
80
+ Include 2-3 items for each category.`,
81
+ maxTokens: 8192,
82
+ },
83
+ {
84
+ name: 'on_the_horizon',
85
+ prompt: `Analyze this Claude Code usage data and identify future opportunities.
86
+ RESPOND WITH ONLY A VALID JSON OBJECT:
87
+ {
88
+ "intro": "1 sentence about evolving AI-assisted development",
89
+ "opportunities": [
90
+ {"title": "Short title (4-8 words)", "whats_possible": "2-3 ambitious sentences about autonomous workflows", "how_to_try": "1-2 sentences mentioning relevant tooling", "copyable_prompt": "Detailed prompt to try"}
91
+ ]
92
+ }
93
+ Include 3 opportunities. Think BIG - autonomous workflows, parallel agents, iterating against tests.`,
94
+ maxTokens: 8192,
95
+ },
96
+ {
97
+ name: 'fun_ending',
98
+ prompt: `Analyze this Claude Code usage data and find a memorable moment.
99
+ RESPOND WITH ONLY A VALID JSON OBJECT:
100
+ {
101
+ "headline": "A memorable QUALITATIVE moment from the transcripts - not a statistic. Something human, funny, or surprising.",
102
+ "detail": "Brief context about when/where this happened"
103
+ }
104
+ Find something genuinely interesting or amusing from the session summaries.`,
105
+ maxTokens: 8192,
106
+ },
107
+ ];
108
+ export const AT_A_GLANCE_PROMPT = `You're writing an "At a Glance" summary for a Claude Code usage insights report.
109
+ Use this 4-part structure:
110
+ 1. **What's working** - What is the user's unique style and what impactful things have they done? Don't be fluffy.
111
+ 2. **What's hindering you** - Split into (a) Claude's fault and (b) user-side friction. Be honest but constructive.
112
+ 3. **Quick wins to try** - Specific Claude Code features they could try, or a compelling workflow technique.
113
+ 4. **Ambitious workflows for better models** - As models improve, what workflows should they prepare for?
114
+ Keep each section to 2-3 sentences. Use a coaching tone.
115
+ RESPOND WITH ONLY A VALID JSON OBJECT:
116
+ {
117
+ "whats_working": "(refer to instructions above)",
118
+ "whats_hindering": "(refer to instructions above)",
119
+ "quick_wins": "(refer to instructions above)",
120
+ "ambitious_workflows": "(refer to instructions above)"
121
+ }`;
122
+ export const FACET_GENERATION_PROMPT = `Analyze this coding session and produce a structured analysis.
123
+ The session is from a non-Claude-Code tool, so analyze the conversation and tool usage patterns.
124
+
125
+ RESPOND WITH ONLY A VALID JSON OBJECT:
126
+ {
127
+ "underlying_goal": "1-2 sentence description of what the user was trying to accomplish",
128
+ "goal_categories": {"category": count},
129
+ "outcome": "achieved|mostly_achieved|partially_achieved|not_achieved|abandoned",
130
+ "session_type": "quick_task|iterative_refinement|exploration|debugging|greenfield",
131
+ "friction_counts": {"wrong_approach": 0, "tool_failure": 0, "excessive_changes": 0, "misunderstanding": 0},
132
+ "friction_detail": "Brief description of any friction encountered, or empty string",
133
+ "primary_success": "Brief description of main achievement, or empty string",
134
+ "brief_summary": "2-3 sentence summary of the session"
135
+ }
136
+
137
+ Goal categories to use: debugging, feature_development, refactoring, testing, documentation, investigation, exploration, code_review, deployment, configuration, end_to_end_testing, logging_documentation, ui_testing.
138
+
139
+ Outcome guide:
140
+ - achieved: Task completed successfully
141
+ - mostly_achieved: Main goal done but minor items remain
142
+ - partially_achieved: Some progress but significant work left
143
+ - not_achieved: Attempted but failed
144
+ - abandoned: User gave up or switched tasks`;
145
+ //# sourceMappingURL=insights-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-prompts.js","sourceRoot":"","sources":["../../src/lib/insights-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD;QACE,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE;;;;;;;gDAOoC;QAC5C,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE;;;;;EAKV;QACE,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;;;;;;;;gCAQoB;QAC5B,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE;;;;;;;;oDAQwC;QAChD,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;qCAwByB;QACjC,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE;;;;;;;;qGAQyF;QACjG,SAAS,EAAE,IAAI;KAChB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;;;;;;4EAMgE;QACxE,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;EAahC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;4CAsBK,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface InsightsJob {
2
+ id: string;
3
+ userId: string;
4
+ status: string;
5
+ projectPath: string | null;
6
+ config?: Record<string, unknown>;
7
+ }
8
+ export declare function processInsightsJob(job: InsightsJob, workerId: string, log: (msg: string) => void): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=insights-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-worker.d.ts","sourceRoot":"","sources":["../../src/lib/insights-worker.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAuQD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,IAAI,CAAC,CA4If"}
@@ -0,0 +1,329 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { execSync } from 'node:child_process';
5
+ import { apiGet, apiPost, apiPatch } from './api-client.js';
6
+ import { RECOMMENDATION_PROMPTS, AT_A_GLANCE_PROMPT, FACET_GENERATION_PROMPT } from './insights-prompts.js';
7
+ import { runLlmPrompt, detectLlmBackend, runToolPrompt } from './llm-client.js';
8
+ function sendOsNotification(title, message) {
9
+ try {
10
+ if (process.platform === 'darwin') {
11
+ execSync(`osascript -e 'display notification "${message.replace(/"/g, '\\"')}" with title "${title.replace(/"/g, '\\"')}"'`, { timeout: 5000 });
12
+ }
13
+ else if (process.platform === 'linux') {
14
+ execSync(`notify-send "${title.replace(/"/g, '\\"')}" "${message.replace(/"/g, '\\"')}"`, { timeout: 5000 });
15
+ }
16
+ // Windows: could use PowerShell toast but skip for now
17
+ }
18
+ catch {
19
+ // Notifications are best-effort — don't fail the job
20
+ }
21
+ }
22
+ async function buildDataSummaryFromApi(projectPath) {
23
+ try {
24
+ const params = new URLSearchParams();
25
+ if (projectPath)
26
+ params.set('projectPath', projectPath);
27
+ const computed = await apiGet(`/api/insights/compute?${params}`);
28
+ if (!computed || computed.total_sessions === 0)
29
+ return null;
30
+ // Build the same text summary format the prompts expect
31
+ const topTools = Object.entries(computed.tool_counts ?? {})
32
+ .sort((a, b) => b[1] - a[1])
33
+ .slice(0, 10)
34
+ .map(([t, c]) => `${t}: ${c}`)
35
+ .join(', ');
36
+ const summary = [
37
+ `Sessions: ${computed.total_sessions}, Messages: ${computed.total_messages}, Hours: ${Math.round(computed.total_duration_hours)}`,
38
+ `Top tools: ${topTools}`,
39
+ computed.goal_categories && Object.keys(computed.goal_categories).length > 0
40
+ ? `Goals: ${JSON.stringify(computed.goal_categories)}`
41
+ : '',
42
+ computed.friction && Object.keys(computed.friction).length > 0
43
+ ? `Friction: ${JSON.stringify(computed.friction)}`
44
+ : '',
45
+ computed.outcomes && Object.keys(computed.outcomes).length > 0
46
+ ? `Outcomes: ${JSON.stringify(computed.outcomes)}`
47
+ : '',
48
+ computed.projects && Object.keys(computed.projects).length > 0
49
+ ? `Projects: ${JSON.stringify(computed.projects)}`
50
+ : '',
51
+ ].filter(Boolean).join('\n');
52
+ return {
53
+ summary,
54
+ stats: {
55
+ sessions: computed.total_sessions,
56
+ totalMessages: computed.total_messages,
57
+ totalHours: computed.total_duration_hours,
58
+ toolCounts: computed.tool_counts,
59
+ goalCounts: computed.goal_categories,
60
+ frictionCounts: computed.friction,
61
+ },
62
+ };
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ function buildDataSummary(claudeDir, projectPath) {
69
+ const usageDir = path.join(claudeDir, 'usage-data');
70
+ const metaDir = path.join(usageDir, 'session-meta');
71
+ const facetsDir = path.join(usageDir, 'facets');
72
+ if (!fs.existsSync(metaDir))
73
+ return null;
74
+ const metas = [];
75
+ for (const file of fs.readdirSync(metaDir).filter(f => f.endsWith('.json'))) {
76
+ try {
77
+ metas.push(JSON.parse(fs.readFileSync(path.join(metaDir, file), 'utf-8')));
78
+ }
79
+ catch { }
80
+ }
81
+ const facets = new Map();
82
+ if (fs.existsSync(facetsDir)) {
83
+ for (const file of fs.readdirSync(facetsDir).filter(f => f.endsWith('.json'))) {
84
+ try {
85
+ const f = JSON.parse(fs.readFileSync(path.join(facetsDir, file), 'utf-8'));
86
+ facets.set(f.session_id, f);
87
+ }
88
+ catch { }
89
+ }
90
+ }
91
+ const allValid = metas.filter(s => s.user_message_count >= 2 && s.duration_minutes >= 1);
92
+ const valid = projectPath
93
+ ? allValid.filter(s => s.project_path && s.project_path.toLowerCase().includes(projectPath.toLowerCase()))
94
+ : allValid;
95
+ // Build a text summary for the prompts
96
+ const toolCounts = {};
97
+ const goalCounts = {};
98
+ const frictionCounts = {};
99
+ let totalMessages = 0;
100
+ let totalHours = 0;
101
+ const summaries = [];
102
+ for (const s of valid) {
103
+ totalMessages += s.user_message_count;
104
+ totalHours += s.duration_minutes / 60;
105
+ for (const [t, c] of Object.entries(s.tool_counts))
106
+ toolCounts[t] = (toolCounts[t] || 0) + c;
107
+ const f = facets.get(s.session_id);
108
+ if (f) {
109
+ for (const [k, v] of Object.entries(f.goal_categories))
110
+ if (v > 0)
111
+ goalCounts[k] = (goalCounts[k] || 0) + v;
112
+ for (const [k, v] of Object.entries(f.friction_counts))
113
+ if (v > 0)
114
+ frictionCounts[k] = (frictionCounts[k] || 0) + v;
115
+ if (summaries.length < 50)
116
+ summaries.push(`- ${f.brief_summary} (${f.outcome})`);
117
+ }
118
+ else if (summaries.length < 50) {
119
+ summaries.push(`- ${s.first_prompt.slice(0, 100)}`);
120
+ }
121
+ }
122
+ const topTools = Object.entries(toolCounts).sort((a, b) => b[1] - a[1]).slice(0, 10)
123
+ .map(([t, c]) => `${t}: ${c}`).join(', ');
124
+ const summary = [
125
+ `Sessions: ${valid.length}, Messages: ${totalMessages}, Hours: ${Math.round(totalHours)}`,
126
+ `Top tools: ${topTools}`,
127
+ goalCounts && Object.keys(goalCounts).length > 0 ? `Goals: ${JSON.stringify(goalCounts)}` : '',
128
+ frictionCounts && Object.keys(frictionCounts).length > 0 ? `Friction: ${JSON.stringify(frictionCounts)}` : '',
129
+ '',
130
+ 'Session summaries:',
131
+ ...summaries,
132
+ ].filter(Boolean).join('\n');
133
+ return { summary, stats: { sessions: valid.length, totalMessages, totalHours, toolCounts, goalCounts, frictionCounts } };
134
+ }
135
+ async function processSessionAnalysisJob(job, workerId, log) {
136
+ const sessionId = job.config?.sessionId;
137
+ try {
138
+ await apiPost(`/api/insights-jobs/${job.id}/claim`, { workerId });
139
+ }
140
+ catch {
141
+ log(` Could not claim job ${job.id} — skipping`);
142
+ return;
143
+ }
144
+ log(`Analyzing session ${sessionId} via tool CLI...`);
145
+ try {
146
+ await apiPatch(`/api/insights-jobs/${job.id}/progress`, {
147
+ status: 'running',
148
+ progress: { step: 'fetching_session' },
149
+ });
150
+ const session = await apiGet(`/api/sessions/${sessionId}`);
151
+ // Idempotency: skip if session already has analysis from a prior run
152
+ if (session.analysis && session.analysis.source === 'session_analysis') {
153
+ log(` Session ${sessionId} already analyzed — skipping (idempotency guard)`);
154
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
155
+ result: { sessionId, skipped: true, reason: 'already_analyzed' },
156
+ });
157
+ return;
158
+ }
159
+ const events = await apiGet(`/api/sessions/${sessionId}/events?limit=100`);
160
+ if (events.length < 2) {
161
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
162
+ error: 'Session has too few events to analyze',
163
+ });
164
+ return;
165
+ }
166
+ const eventSummary = events
167
+ .filter(e => e.eventType === 'user_message' || e.eventType === 'human')
168
+ .map(e => e.content?.slice(0, 200) ?? '')
169
+ .filter(Boolean)
170
+ .join('\n---\n');
171
+ if (!eventSummary) {
172
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
173
+ error: 'No user messages found in session',
174
+ });
175
+ return;
176
+ }
177
+ await apiPatch(`/api/insights-jobs/${job.id}/progress`, {
178
+ status: 'running',
179
+ progress: { step: 'running_analysis', tool: session.tool },
180
+ });
181
+ // Run through the session's tool CLI
182
+ const facets = runToolPrompt(session.tool, FACET_GENERATION_PROMPT, eventSummary);
183
+ if (!facets) {
184
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
185
+ error: `Analysis failed — ${session.tool} CLI returned no result`,
186
+ });
187
+ return;
188
+ }
189
+ await apiPatch(`/api/sessions/${sessionId}/enrich`, {
190
+ analysis: { source: 'session_analysis', tool: session.tool, ...facets },
191
+ });
192
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
193
+ result: { sessionId, tool: session.tool, facets },
194
+ });
195
+ log(` Session ${sessionId} analyzed via ${session.tool}`);
196
+ }
197
+ catch (err) {
198
+ const message = err instanceof Error ? err.message : String(err);
199
+ log(` Error analyzing session ${sessionId}: ${message}`);
200
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, { error: message }).catch(() => { });
201
+ }
202
+ }
203
+ export async function processInsightsJob(job, workerId, log) {
204
+ // Check if this is a single-session analysis job
205
+ if (job.config?.sessionId) {
206
+ await processSessionAnalysisJob(job, workerId, log);
207
+ return;
208
+ }
209
+ // Claim
210
+ try {
211
+ await apiPost(`/api/insights-jobs/${job.id}/claim`, { workerId });
212
+ }
213
+ catch {
214
+ log(` Could not claim job ${job.id} — skipping`);
215
+ return;
216
+ }
217
+ log(`Processing insights job ${job.id}...`);
218
+ try {
219
+ // Update status to running
220
+ await apiPatch(`/api/insights-jobs/${job.id}/progress`, {
221
+ status: 'running',
222
+ progress: { step: 'reading_data' },
223
+ });
224
+ // Try API-based data first (works for all tools), fall back to local files (Claude Code only)
225
+ let data = await buildDataSummaryFromApi(job.projectPath);
226
+ if (!data) {
227
+ const claudeDir = path.join(os.homedir(), '.claude');
228
+ data = buildDataSummary(claudeDir, job.projectPath);
229
+ }
230
+ if (!data) {
231
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
232
+ error: 'No session data found — ensure sessions are captured and enriched.',
233
+ });
234
+ return;
235
+ }
236
+ log(` Found ${data.stats.sessions} sessions, generating recommendations...`);
237
+ // Generate facets for sessions that don't have analysis yet
238
+ if (detectLlmBackend() !== 'none') {
239
+ try {
240
+ const unfaceted = await apiGet('/api/sessions?hasAnalysis=false&limit=20');
241
+ if (unfaceted.length > 0) {
242
+ log(` Generating facets for ${unfaceted.length} un-analyzed sessions...`);
243
+ }
244
+ for (const session of unfaceted) {
245
+ try {
246
+ const events = await apiGet(`/api/sessions/${session.id}/events?limit=100`);
247
+ if (events.length < 2)
248
+ continue;
249
+ const eventSummary = events
250
+ .filter(e => e.eventType === 'user_message' || e.eventType === 'human')
251
+ .map(e => e.content?.slice(0, 200) ?? '')
252
+ .filter(Boolean)
253
+ .join('\n---\n');
254
+ if (!eventSummary)
255
+ continue;
256
+ const facets = await runLlmPrompt(FACET_GENERATION_PROMPT, eventSummary, 4096);
257
+ if (facets) {
258
+ await apiPatch(`/api/sessions/${session.id}/enrich`, {
259
+ analysis: { source: 'generated_facets', ...facets },
260
+ });
261
+ log(` Generated facets for session ${session.id} (${session.tool})`);
262
+ }
263
+ }
264
+ catch (sessionErr) {
265
+ log(` Failed to generate facets for session ${session.id}: ${sessionErr instanceof Error ? sessionErr.message : String(sessionErr)}`);
266
+ }
267
+ }
268
+ }
269
+ catch (facetErr) {
270
+ log(` Warning: facet generation failed: ${facetErr instanceof Error ? facetErr.message : String(facetErr)}`);
271
+ }
272
+ }
273
+ // Run recommendation prompts sequentially
274
+ const recommendations = {};
275
+ const totalPrompts = RECOMMENDATION_PROMPTS.length + 1; // +1 for at_a_glance
276
+ for (let i = 0; i < RECOMMENDATION_PROMPTS.length; i++) {
277
+ const spec = RECOMMENDATION_PROMPTS[i];
278
+ log(` [${i + 1}/${totalPrompts}] Generating ${spec.name}...`);
279
+ try {
280
+ await apiPatch(`/api/insights-jobs/${job.id}/progress`, {
281
+ status: 'running',
282
+ progress: { step: spec.name, current: i + 1, total: totalPrompts },
283
+ });
284
+ }
285
+ catch (patchErr) {
286
+ log(` Warning: progress update failed for ${spec.name}: ${patchErr instanceof Error ? patchErr.message : String(patchErr)}`);
287
+ }
288
+ log(` Running LLM prompt for ${spec.name}...`);
289
+ const result = await runLlmPrompt(spec.prompt, data.summary, spec.maxTokens);
290
+ if (result) {
291
+ recommendations[spec.name] = result;
292
+ log(` Got result for ${spec.name}`);
293
+ }
294
+ else {
295
+ log(` No result for ${spec.name} (LLM returned null)`);
296
+ }
297
+ }
298
+ // At a glance (uses outputs from previous prompts)
299
+ log(` [${totalPrompts}/${totalPrompts}] Generating at_a_glance...`);
300
+ await apiPatch(`/api/insights-jobs/${job.id}/progress`, {
301
+ status: 'running',
302
+ progress: { step: 'at_a_glance', current: totalPrompts, total: totalPrompts },
303
+ });
304
+ const glanceData = [
305
+ data.summary,
306
+ recommendations.what_works ? `\n## What Works\n${JSON.stringify(recommendations.what_works)}` : '',
307
+ recommendations.friction_analysis ? `\n## Friction\n${JSON.stringify(recommendations.friction_analysis)}` : '',
308
+ recommendations.suggestions ? `\n## Suggestions\n${JSON.stringify(recommendations.suggestions)}` : '',
309
+ recommendations.on_the_horizon ? `\n## On the Horizon\n${JSON.stringify(recommendations.on_the_horizon)}` : '',
310
+ ].join('\n');
311
+ const glance = await runLlmPrompt(AT_A_GLANCE_PROMPT, glanceData, 8192);
312
+ if (glance) {
313
+ recommendations.at_a_glance = glance;
314
+ }
315
+ log(' Uploading results...');
316
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, {
317
+ result: { recommendations },
318
+ });
319
+ log(` Done! Recommendations generated for job ${job.id}`);
320
+ const projectName = job.projectPath?.split('/').pop() ?? 'All Projects';
321
+ sendOsNotification('RuleMetric Insights Ready', `New recommendations for ${projectName}`);
322
+ }
323
+ catch (err) {
324
+ const message = err instanceof Error ? err.message : String(err);
325
+ log(` Error: ${message}`);
326
+ await apiPost(`/api/insights-jobs/${job.id}/complete`, { error: message }).catch(() => { });
327
+ }
328
+ }
329
+ //# sourceMappingURL=insights-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-worker.js","sourceRoot":"","sources":["../../src/lib/insights-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export declare function getToolCli(tool: string): {
2
+ bin: string;
3
+ args: string[];
4
+ };
5
+ /**
6
+ * Run a prompt through a specific tool's CLI.
7
+ * Falls back to claude -p for tools without their own CLI.
8
+ */
9
+ export declare function runToolPrompt(tool: string, prompt: string, data: string): Record<string, unknown> | null;
10
+ export type LlmBackend = 'claude-cli' | 'anthropic-sdk' | 'none';
11
+ /**
12
+ * Detect which LLM backend is available.
13
+ * Priority: claude CLI binary > ANTHROPIC_API_KEY env var > none.
14
+ * Result is cached after first call.
15
+ */
16
+ export declare function detectLlmBackend(): LlmBackend;
17
+ /**
18
+ * Reset the cached backend detection (useful for testing).
19
+ */
20
+ export declare function resetLlmBackendCache(): void;
21
+ /**
22
+ * Run a prompt through the detected LLM backend and parse JSON from the response.
23
+ * Returns the first JSON object found in the response, or null on failure.
24
+ */
25
+ export declare function runLlmPrompt(prompt: string, data: string, maxTokens: number): Promise<Record<string, unknown> | null>;
26
+ //# sourceMappingURL=llm-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/lib/llm-client.ts"],"names":[],"mappings":"AAeA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAExE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2BhC;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,CAAC;AAIjE;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAoB7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAYzC"}