@redscope-ai/redscope 1.0.0

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 (619) hide show
  1. package/README.md +224 -0
  2. package/dist/chunk-090920rk.js +288 -0
  3. package/dist/chunk-0afb2r78.js +141 -0
  4. package/dist/chunk-0d4ekx1g.js +73 -0
  5. package/dist/chunk-0g6nwbhq.js +15 -0
  6. package/dist/chunk-0qj905nt.js +18 -0
  7. package/dist/chunk-0s5btnn1.js +186 -0
  8. package/dist/chunk-0s8fars0.js +91 -0
  9. package/dist/chunk-10ev3dvh.js +312 -0
  10. package/dist/chunk-10k5jfc5.js +1295 -0
  11. package/dist/chunk-12tspwqa.js +240 -0
  12. package/dist/chunk-13qesvnw.js +17 -0
  13. package/dist/chunk-143eh1e0.js +121 -0
  14. package/dist/chunk-14p6wvsq.js +39 -0
  15. package/dist/chunk-19f3zb1m.js +342 -0
  16. package/dist/chunk-1a5cep8h.js +145 -0
  17. package/dist/chunk-1abw9kkn.js +34 -0
  18. package/dist/chunk-1aer7c78.js +118 -0
  19. package/dist/chunk-1dazz4g6.js +154 -0
  20. package/dist/chunk-1fcf4ty1.js +142 -0
  21. package/dist/chunk-1gnxhyf8.js +62 -0
  22. package/dist/chunk-1he3944e.js +8124 -0
  23. package/dist/chunk-1jpayz7y.js +952 -0
  24. package/dist/chunk-1qd6f6vk.js +269 -0
  25. package/dist/chunk-1v0kpe62.js +2547 -0
  26. package/dist/chunk-1w20m7gw.js +445 -0
  27. package/dist/chunk-1y7kp51j.js +72 -0
  28. package/dist/chunk-1ycb5sxt.js +247 -0
  29. package/dist/chunk-1zbwhcbt.js +1124 -0
  30. package/dist/chunk-20psem54.js +116 -0
  31. package/dist/chunk-23h69r5b.js +30 -0
  32. package/dist/chunk-23x86ptv.js +473 -0
  33. package/dist/chunk-24fyv3jz.js +378 -0
  34. package/dist/chunk-24kv69g3.js +97 -0
  35. package/dist/chunk-2azx8zsc.js +125 -0
  36. package/dist/chunk-2d1gwzz9.js +524 -0
  37. package/dist/chunk-2g0ytd9d.js +29058 -0
  38. package/dist/chunk-2hfp9kat.js +21 -0
  39. package/dist/chunk-2j875eq6.js +37 -0
  40. package/dist/chunk-2kcgxnvp.js +39 -0
  41. package/dist/chunk-2kz09j2s.js +23 -0
  42. package/dist/chunk-2mwnwp0n.js +17 -0
  43. package/dist/chunk-2p1cqhcn.js +921 -0
  44. package/dist/chunk-2p369q9z.js +61 -0
  45. package/dist/chunk-2rf6asgf.js +151 -0
  46. package/dist/chunk-2vr7mqx1.js +384 -0
  47. package/dist/chunk-2xcg933e.js +205 -0
  48. package/dist/chunk-2ypwckbz.js +40310 -0
  49. package/dist/chunk-30wnahyg.js +626 -0
  50. package/dist/chunk-326zehp8.js +204 -0
  51. package/dist/chunk-32s6jzgw.js +183 -0
  52. package/dist/chunk-35yzt1a7.js +202 -0
  53. package/dist/chunk-38frkej6.js +62 -0
  54. package/dist/chunk-3abaq08g.js +34 -0
  55. package/dist/chunk-3h59ttr5.js +32 -0
  56. package/dist/chunk-3nk9q8dr.js +154 -0
  57. package/dist/chunk-3prrxevm.js +224 -0
  58. package/dist/chunk-3tv8p9xw.js +127 -0
  59. package/dist/chunk-3txyekes.js +19 -0
  60. package/dist/chunk-3vfxjn7g.js +19 -0
  61. package/dist/chunk-3w9sye8h.js +81 -0
  62. package/dist/chunk-3y69j7y8.js +24 -0
  63. package/dist/chunk-3zwjpkjh.js +1603 -0
  64. package/dist/chunk-40t1d75v.js +3442 -0
  65. package/dist/chunk-470kmby4.js +318 -0
  66. package/dist/chunk-47jc141z.js +335 -0
  67. package/dist/chunk-48rz50ct.js +868 -0
  68. package/dist/chunk-49wv03ts.js +232 -0
  69. package/dist/chunk-4a189mn2.js +103 -0
  70. package/dist/chunk-4c4fmh7a.js +15 -0
  71. package/dist/chunk-4ct8dsj5.js +49 -0
  72. package/dist/chunk-4kqt1pm1.js +100 -0
  73. package/dist/chunk-4ng0xy0e.js +802 -0
  74. package/dist/chunk-4spgkgr3.js +43 -0
  75. package/dist/chunk-4tjdwtyy.js +19 -0
  76. package/dist/chunk-4tr60273.js +370 -0
  77. package/dist/chunk-4vnaeng5.js +29 -0
  78. package/dist/chunk-4wbqpeaw.js +871 -0
  79. package/dist/chunk-4wgkv3fv.js +1140 -0
  80. package/dist/chunk-4yjskjb6.js +40 -0
  81. package/dist/chunk-50m3a23z.js +35 -0
  82. package/dist/chunk-511f79az.js +182 -0
  83. package/dist/chunk-51sgztvv.js +161 -0
  84. package/dist/chunk-563fcpv1.js +290 -0
  85. package/dist/chunk-564cnq6v.js +735 -0
  86. package/dist/chunk-569r8cxc.js +31 -0
  87. package/dist/chunk-570x55d4.js +12 -0
  88. package/dist/chunk-571556cm.js +80 -0
  89. package/dist/chunk-59t4c56e.js +63 -0
  90. package/dist/chunk-5axjhkma.js +36 -0
  91. package/dist/chunk-5b188q5e.js +157 -0
  92. package/dist/chunk-5dmn1865.js +439 -0
  93. package/dist/chunk-5ks4829r.js +267 -0
  94. package/dist/chunk-5mmhfbxb.js +1078 -0
  95. package/dist/chunk-5rdt14hy.js +742 -0
  96. package/dist/chunk-5ssryexj.js +121 -0
  97. package/dist/chunk-5v95pnq4.js +15 -0
  98. package/dist/chunk-5xvjt2t9.js +68 -0
  99. package/dist/chunk-5zyq6t1q.js +118 -0
  100. package/dist/chunk-60fkafk2.js +15 -0
  101. package/dist/chunk-62fjkf5q.js +46 -0
  102. package/dist/chunk-64gazrrb.js +8067 -0
  103. package/dist/chunk-65tq2yjx.js +126 -0
  104. package/dist/chunk-65zbgg1n.js +14 -0
  105. package/dist/chunk-66v8mty3.js +264 -0
  106. package/dist/chunk-6acx5heq.js +292 -0
  107. package/dist/chunk-6hr7742d.js +61 -0
  108. package/dist/chunk-6hygvrhn.js +143 -0
  109. package/dist/chunk-6kjh280m.js +128 -0
  110. package/dist/chunk-6s0q1s5r.js +66 -0
  111. package/dist/chunk-6x35ffpx.js +690 -0
  112. package/dist/chunk-71jfy1hh.js +570 -0
  113. package/dist/chunk-71sdcaq6.js +15 -0
  114. package/dist/chunk-754qdxs5.js +92 -0
  115. package/dist/chunk-79v5bkj4.js +1176 -0
  116. package/dist/chunk-7br0w7j5.js +151 -0
  117. package/dist/chunk-7cjgrzz1.js +298 -0
  118. package/dist/chunk-7d41ks0y.js +133 -0
  119. package/dist/chunk-7f40pmtr.js +71 -0
  120. package/dist/chunk-7g15x8hm.js +131 -0
  121. package/dist/chunk-7gtnzdet.js +120 -0
  122. package/dist/chunk-7h0z4aqx.js +702 -0
  123. package/dist/chunk-7h7e5a7d.js +25 -0
  124. package/dist/chunk-7m2cznwr.js +40 -0
  125. package/dist/chunk-7nvday0n.js +252 -0
  126. package/dist/chunk-7qey87th.js +145 -0
  127. package/dist/chunk-7qx3xhv3.js +9076 -0
  128. package/dist/chunk-7tfdhkpy.js +61 -0
  129. package/dist/chunk-80m511j6.js +121 -0
  130. package/dist/chunk-80ysxfe9.js +784 -0
  131. package/dist/chunk-8375zk8t.js +17200 -0
  132. package/dist/chunk-85bpkyy9.js +412 -0
  133. package/dist/chunk-85tcn547.js +876 -0
  134. package/dist/chunk-85vqgbc8.js +13 -0
  135. package/dist/chunk-86626jb4.js +49 -0
  136. package/dist/chunk-87ms17f6.js +444 -0
  137. package/dist/chunk-87mz239c.js +118 -0
  138. package/dist/chunk-89vdzt4e.js +254 -0
  139. package/dist/chunk-89z3e99z.js +159 -0
  140. package/dist/chunk-8cwrz1dd.js +1806 -0
  141. package/dist/chunk-8gv2pjby.js +21 -0
  142. package/dist/chunk-8hdevr3s.js +140 -0
  143. package/dist/chunk-8hdsk6qc.js +710 -0
  144. package/dist/chunk-8kct9arg.js +724 -0
  145. package/dist/chunk-8kf8h7xf.js +23 -0
  146. package/dist/chunk-8qed8ymj.js +605 -0
  147. package/dist/chunk-8sdgr592.js +101 -0
  148. package/dist/chunk-8we9w8pw.js +111 -0
  149. package/dist/chunk-8xnm5637.js +72 -0
  150. package/dist/chunk-8y3q0eqy.js +67 -0
  151. package/dist/chunk-8yvsnrkr.js +3449 -0
  152. package/dist/chunk-8zz4z1q3.js +42 -0
  153. package/dist/chunk-90eyff3k.js +119 -0
  154. package/dist/chunk-92bjkrf2.js +121 -0
  155. package/dist/chunk-92zrc7c6.js +327 -0
  156. package/dist/chunk-935nrvdb.js +13 -0
  157. package/dist/chunk-94pfyv6a.js +48 -0
  158. package/dist/chunk-9568p8se.js +115 -0
  159. package/dist/chunk-96km1ywr.js +37 -0
  160. package/dist/chunk-980bg4w4.js +163 -0
  161. package/dist/chunk-9a9g5hbj.js +205 -0
  162. package/dist/chunk-9cm4725d.js +4395 -0
  163. package/dist/chunk-9ds3vzq8.js +847 -0
  164. package/dist/chunk-9ffc9n60.js +618 -0
  165. package/dist/chunk-9fstrwv2.js +184 -0
  166. package/dist/chunk-9gt0g0qe.js +153 -0
  167. package/dist/chunk-9h9k5vz3.js +2761 -0
  168. package/dist/chunk-9he8bmhy.js +17 -0
  169. package/dist/chunk-9hn8e6h1.js +12 -0
  170. package/dist/chunk-9j0n3g8e.js +179 -0
  171. package/dist/chunk-9j6pa3ft.js +251 -0
  172. package/dist/chunk-9jpg9dn7.js +122 -0
  173. package/dist/chunk-9mycnwj5.js +46 -0
  174. package/dist/chunk-9npy2c17.js +517 -0
  175. package/dist/chunk-9p6sec8n.js +34 -0
  176. package/dist/chunk-9pnym83h.js +4584 -0
  177. package/dist/chunk-9skwrnd2.js +25 -0
  178. package/dist/chunk-9tsfaqr8.js +459 -0
  179. package/dist/chunk-9tsw3cqv.js +5924 -0
  180. package/dist/chunk-9w6ckyk4.js +49 -0
  181. package/dist/chunk-a15bwzv6.js +147 -0
  182. package/dist/chunk-a9t6cp69.js +28 -0
  183. package/dist/chunk-ad2yk19p.js +102 -0
  184. package/dist/chunk-ad4cw4nw.js +336 -0
  185. package/dist/chunk-ad69fbsk.js +347 -0
  186. package/dist/chunk-ae76ded0.js +30 -0
  187. package/dist/chunk-aeysytks.js +216 -0
  188. package/dist/chunk-ag81m9bq.js +61 -0
  189. package/dist/chunk-ahx7gp6r.js +4448 -0
  190. package/dist/chunk-aj4tk4tk.js +23 -0
  191. package/dist/chunk-an82t9jc.js +104 -0
  192. package/dist/chunk-apg95qd7.js +1393 -0
  193. package/dist/chunk-aq5n2adz.js +27 -0
  194. package/dist/chunk-aw4s3a99.js +208 -0
  195. package/dist/chunk-awgdfggg.js +14 -0
  196. package/dist/chunk-ayymxgn1.js +164 -0
  197. package/dist/chunk-azbab59e.js +637 -0
  198. package/dist/chunk-azdxq2a3.js +293 -0
  199. package/dist/chunk-b0tjx3k1.js +523 -0
  200. package/dist/chunk-b5pp4g2g.js +371 -0
  201. package/dist/chunk-b5zm8dt6.js +26 -0
  202. package/dist/chunk-bcnye5a0.js +109 -0
  203. package/dist/chunk-beqz3k49.js +190 -0
  204. package/dist/chunk-bf906wpw.js +147 -0
  205. package/dist/chunk-bgan4cpf.js +13 -0
  206. package/dist/chunk-bhzp13h7.js +1178 -0
  207. package/dist/chunk-bk403kpw.js +142 -0
  208. package/dist/chunk-bmq4c135.js +489 -0
  209. package/dist/chunk-bprbeda7.js +35 -0
  210. package/dist/chunk-bst7czdd.js +888 -0
  211. package/dist/chunk-bths4xgn.js +111 -0
  212. package/dist/chunk-btjn3qby.js +13 -0
  213. package/dist/chunk-bwb1vxnt.js +120 -0
  214. package/dist/chunk-bxa6tw4m.js +643 -0
  215. package/dist/chunk-bxfjr8qb.js +27 -0
  216. package/dist/chunk-bxpzhrej.js +73 -0
  217. package/dist/chunk-bzyzrq0k.js +51 -0
  218. package/dist/chunk-c0k7b0jw.js +4265 -0
  219. package/dist/chunk-c17f0h2s.js +16 -0
  220. package/dist/chunk-c1yc761e.js +6748 -0
  221. package/dist/chunk-c5g9shkw.js +298 -0
  222. package/dist/chunk-c696122m.js +69 -0
  223. package/dist/chunk-c92b3yxx.js +109 -0
  224. package/dist/chunk-c9aqz56y.js +143 -0
  225. package/dist/chunk-cba7c5w3.js +345 -0
  226. package/dist/chunk-cbcxbbe6.js +6543 -0
  227. package/dist/chunk-cdfjb87h.js +11 -0
  228. package/dist/chunk-ce8zjt1y.js +136 -0
  229. package/dist/chunk-cep7e37k.js +22740 -0
  230. package/dist/chunk-chs5qm8d.js +258 -0
  231. package/dist/chunk-ckydq33g.js +144 -0
  232. package/dist/chunk-cnge6wpj.js +514 -0
  233. package/dist/chunk-cpnsvqf1.js +13 -0
  234. package/dist/chunk-cqqebkv4.js +32 -0
  235. package/dist/chunk-cvqpp7dk.js +627 -0
  236. package/dist/chunk-cwc33j40.js +65 -0
  237. package/dist/chunk-cypvrq2a.js +155 -0
  238. package/dist/chunk-d1ha0swn.js +475 -0
  239. package/dist/chunk-d2an0138.js +35 -0
  240. package/dist/chunk-d2tt72ck.js +343 -0
  241. package/dist/chunk-d6wvcqrw.js +9507 -0
  242. package/dist/chunk-d7ys2kka.js +991 -0
  243. package/dist/chunk-dbts5q5p.js +122 -0
  244. package/dist/chunk-dct29ggs.js +295 -0
  245. package/dist/chunk-de0qnnf7.js +1059 -0
  246. package/dist/chunk-dep72ce4.js +513 -0
  247. package/dist/chunk-dgpvgy8x.js +47 -0
  248. package/dist/chunk-dhhd7dtc.js +20 -0
  249. package/dist/chunk-dhzpmxv6.js +594 -0
  250. package/dist/chunk-djes4da7.js +413 -0
  251. package/dist/chunk-dnhv3vx7.js +166 -0
  252. package/dist/chunk-dqtvafan.js +2365 -0
  253. package/dist/chunk-dr4a3tcp.js +60 -0
  254. package/dist/chunk-dz2xk9kb.js +100 -0
  255. package/dist/chunk-dz7nc6rf.js +15 -0
  256. package/dist/chunk-e3abfxpy.js +1486 -0
  257. package/dist/chunk-e3cq9z89.js +85 -0
  258. package/dist/chunk-e3j7m7k2.js +642 -0
  259. package/dist/chunk-e4dsy4g1.js +9951 -0
  260. package/dist/chunk-e5592pnn.js +197 -0
  261. package/dist/chunk-e55hdegh.js +129 -0
  262. package/dist/chunk-e5r5r04e.js +1030 -0
  263. package/dist/chunk-e60zztbt.js +442 -0
  264. package/dist/chunk-e7qq6vn0.js +372 -0
  265. package/dist/chunk-e9aat7xw.js +80 -0
  266. package/dist/chunk-e9d5v3zs.js +143 -0
  267. package/dist/chunk-eax32zk4.js +87 -0
  268. package/dist/chunk-ebfwmbx1.js +117 -0
  269. package/dist/chunk-ec71pb8t.js +971 -0
  270. package/dist/chunk-eemjb825.js +17252 -0
  271. package/dist/chunk-ees8xdhd.js +256 -0
  272. package/dist/chunk-eewg66y1.js +112 -0
  273. package/dist/chunk-eg22v12d.js +266 -0
  274. package/dist/chunk-enzzk67f.js +313 -0
  275. package/dist/chunk-eskhp70f.js +117 -0
  276. package/dist/chunk-ewx6z4g8.js +55 -0
  277. package/dist/chunk-eyvx461k.js +76 -0
  278. package/dist/chunk-eztq2b5f.js +94 -0
  279. package/dist/chunk-f0ffwzdd.js +321 -0
  280. package/dist/chunk-f80n68mf.js +119 -0
  281. package/dist/chunk-fae2hjxp.js +99 -0
  282. package/dist/chunk-fbtfp370.js +60 -0
  283. package/dist/chunk-fc6ndtgf.js +94 -0
  284. package/dist/chunk-fdwabr8p.js +13870 -0
  285. package/dist/chunk-fejeqe61.js +785 -0
  286. package/dist/chunk-fh0d6mvk.js +168 -0
  287. package/dist/chunk-fh19zcaf.js +304 -0
  288. package/dist/chunk-fh8bd39r.js +186 -0
  289. package/dist/chunk-fj2ebbpn.js +33 -0
  290. package/dist/chunk-fjn632v7.js +194 -0
  291. package/dist/chunk-fncpkzs5.js +1389 -0
  292. package/dist/chunk-fpd1gpt8.js +332 -0
  293. package/dist/chunk-fq9snrnh.js +295 -0
  294. package/dist/chunk-fqcfzg3j.js +207 -0
  295. package/dist/chunk-ftt3vqj2.js +1919 -0
  296. package/dist/chunk-g06pm4n9.js +395 -0
  297. package/dist/chunk-g4m5pf4g.js +8 -0
  298. package/dist/chunk-g72h52y6.js +36 -0
  299. package/dist/chunk-g79ej71s.js +1627 -0
  300. package/dist/chunk-g7fwk59d.js +19 -0
  301. package/dist/chunk-g9jnkrtm.js +663 -0
  302. package/dist/chunk-g9vg5d7t.js +38 -0
  303. package/dist/chunk-ga1jkyqy.js +1636 -0
  304. package/dist/chunk-gaaap2nk.js +676 -0
  305. package/dist/chunk-gc6erq5q.js +483 -0
  306. package/dist/chunk-gjrcmf0a.js +752 -0
  307. package/dist/chunk-gmdy2w3z.js +238999 -0
  308. package/dist/chunk-gsz4yrrk.js +81 -0
  309. package/dist/chunk-gy47rjy8.js +3830 -0
  310. package/dist/chunk-h12a4f4x.js +11 -0
  311. package/dist/chunk-h1yratmg.js +725 -0
  312. package/dist/chunk-h9y0jnsy.js +155 -0
  313. package/dist/chunk-hbhs3mwy.js +133 -0
  314. package/dist/chunk-hbs8cmb4.js +8 -0
  315. package/dist/chunk-hdk0t1ht.js +940 -0
  316. package/dist/chunk-hef8dx4s.js +178 -0
  317. package/dist/chunk-hgsca8mt.js +381 -0
  318. package/dist/chunk-hhsxm2yr.js +67 -0
  319. package/dist/chunk-hj5tzzpd.js +39 -0
  320. package/dist/chunk-hjxqmtg5.js +94 -0
  321. package/dist/chunk-hn4w9pkj.js +68 -0
  322. package/dist/chunk-hnprkjgp.js +25 -0
  323. package/dist/chunk-hq3n5ex7.js +183 -0
  324. package/dist/chunk-hqjspfma.js +158 -0
  325. package/dist/chunk-hqxp6b72.js +1198 -0
  326. package/dist/chunk-hs6nrmq6.js +94 -0
  327. package/dist/chunk-hwba5xdc.js +267 -0
  328. package/dist/chunk-hy566ev3.js +430 -0
  329. package/dist/chunk-hzmzwte2.js +153 -0
  330. package/dist/chunk-hzxzvzw8.js +274 -0
  331. package/dist/chunk-j139fzgs.js +114 -0
  332. package/dist/chunk-j1mep9ck.js +62 -0
  333. package/dist/chunk-j3xveeg4.js +273 -0
  334. package/dist/chunk-j5y1s11j.js +100 -0
  335. package/dist/chunk-j9475b46.js +26 -0
  336. package/dist/chunk-j9rgqs8m.js +1192 -0
  337. package/dist/chunk-jccjaddz.js +74 -0
  338. package/dist/chunk-jdkwfy9e.js +35 -0
  339. package/dist/chunk-jdqp0r4h.js +6157 -0
  340. package/dist/chunk-jdzk4zwn.js +587 -0
  341. package/dist/chunk-jfafmkte.js +49 -0
  342. package/dist/chunk-jg3r989b.js +16 -0
  343. package/dist/chunk-jhtccjc9.js +54 -0
  344. package/dist/chunk-jj2ff1pr.js +688 -0
  345. package/dist/chunk-jmv7k0jn.js +37 -0
  346. package/dist/chunk-jmxzmwpw.js +65 -0
  347. package/dist/chunk-jnjxdqyr.js +353 -0
  348. package/dist/chunk-jsbbez9j.js +138 -0
  349. package/dist/chunk-jvpt2dc0.js +424 -0
  350. package/dist/chunk-jwd7cka0.js +34 -0
  351. package/dist/chunk-jy5er3st.js +15 -0
  352. package/dist/chunk-jyby79z5.js +121 -0
  353. package/dist/chunk-jzyr6j5n.js +332 -0
  354. package/dist/chunk-k49xc781.js +63 -0
  355. package/dist/chunk-k7dt2g4a.js +41 -0
  356. package/dist/chunk-k7hexw3v.js +969 -0
  357. package/dist/chunk-k7wwkraa.js +117 -0
  358. package/dist/chunk-kb3758f7.js +51 -0
  359. package/dist/chunk-kc67kt75.js +3119 -0
  360. package/dist/chunk-kdhmfxmh.js +3149 -0
  361. package/dist/chunk-kejdd6zc.js +51 -0
  362. package/dist/chunk-kekrjeem.js +402 -0
  363. package/dist/chunk-kez5r0zz.js +280 -0
  364. package/dist/chunk-kfsvcs5t.js +75 -0
  365. package/dist/chunk-khtvffc4.js +285 -0
  366. package/dist/chunk-kkz4w1tv.js +64 -0
  367. package/dist/chunk-kmywng0j.js +272 -0
  368. package/dist/chunk-kq6vcpdr.js +224 -0
  369. package/dist/chunk-kqzdszcc.js +37 -0
  370. package/dist/chunk-ktxpp02w.js +435 -0
  371. package/dist/chunk-kwcvhbtz.js +26 -0
  372. package/dist/chunk-kx0cm9qr.js +128 -0
  373. package/dist/chunk-kxcmqz10.js +120 -0
  374. package/dist/chunk-kxwava1g.js +14 -0
  375. package/dist/chunk-kywtr3jg.js +825 -0
  376. package/dist/chunk-kzwg923p.js +8 -0
  377. package/dist/chunk-m1eq3sgv.js +255 -0
  378. package/dist/chunk-m21h5zb4.js +119 -0
  379. package/dist/chunk-m2c3bjv1.js +111 -0
  380. package/dist/chunk-m41e19ms.js +42 -0
  381. package/dist/chunk-m7ka36ex.js +97 -0
  382. package/dist/chunk-m81w8tbm.js +259 -0
  383. package/dist/chunk-m95ggkax.js +281 -0
  384. package/dist/chunk-manx26xa.js +145 -0
  385. package/dist/chunk-mdxh3pk2.js +298 -0
  386. package/dist/chunk-mhbfkcja.js +311 -0
  387. package/dist/chunk-mjnr5erm.js +173 -0
  388. package/dist/chunk-mngvnmwp.js +135 -0
  389. package/dist/chunk-mvfqanv5.js +63 -0
  390. package/dist/chunk-mw1nesq1.js +140 -0
  391. package/dist/chunk-mx168925.js +661 -0
  392. package/dist/chunk-mxwvj18g.js +795 -0
  393. package/dist/chunk-my7r5mba.js +257 -0
  394. package/dist/chunk-myaa1kkf.js +17 -0
  395. package/dist/chunk-myypc3tn.js +46 -0
  396. package/dist/chunk-mzcnmnpq.js +3379 -0
  397. package/dist/chunk-mznav6d1.js +194 -0
  398. package/dist/chunk-n0qxskpr.js +24 -0
  399. package/dist/chunk-n6a6hgtp.js +394 -0
  400. package/dist/chunk-n6d5fgx0.js +254 -0
  401. package/dist/chunk-n6ym3n03.js +120 -0
  402. package/dist/chunk-n9g24mwe.js +104 -0
  403. package/dist/chunk-naamqdf9.js +185 -0
  404. package/dist/chunk-nb2jk7zj.js +15 -0
  405. package/dist/chunk-nbkbq9en.js +67 -0
  406. package/dist/chunk-ndttd6es.js +38 -0
  407. package/dist/chunk-nfygaaxg.js +133 -0
  408. package/dist/chunk-ngdzpszd.js +454 -0
  409. package/dist/chunk-nmfwksa4.js +1297 -0
  410. package/dist/chunk-nt837qt9.js +21 -0
  411. package/dist/chunk-nwc3v0vp.js +691 -0
  412. package/dist/chunk-nz8ha95p.js +3610 -0
  413. package/dist/chunk-nzxfj0gq.js +2007 -0
  414. package/dist/chunk-p0r8887g.js +6932 -0
  415. package/dist/chunk-p1seyqdm.js +120 -0
  416. package/dist/chunk-p425zbgw.js +726 -0
  417. package/dist/chunk-p7hamd2c.js +146 -0
  418. package/dist/chunk-pdvg91cg.js +32 -0
  419. package/dist/chunk-pecy49yr.js +14649 -0
  420. package/dist/chunk-pfxrg89f.js +547 -0
  421. package/dist/chunk-pfyw3155.js +2750 -0
  422. package/dist/chunk-pr8m11pm.js +1192 -0
  423. package/dist/chunk-ptxteaeh.js +1591 -0
  424. package/dist/chunk-pv164mac.js +394 -0
  425. package/dist/chunk-pxxhtxf5.js +10154 -0
  426. package/dist/chunk-q0e485mg.js +61 -0
  427. package/dist/chunk-q1vrhh0q.js +458 -0
  428. package/dist/chunk-q2h79ncs.js +370 -0
  429. package/dist/chunk-q3b4n194.js +56 -0
  430. package/dist/chunk-q44zc68f.js +4301 -0
  431. package/dist/chunk-q8gknbdx.js +352 -0
  432. package/dist/chunk-q8xk3kdj.js +11 -0
  433. package/dist/chunk-qak46xtp.js +119 -0
  434. package/dist/chunk-qfq7absv.js +95 -0
  435. package/dist/chunk-qfsn720k.js +151 -0
  436. package/dist/chunk-qg4811f6.js +228 -0
  437. package/dist/chunk-qgzn3qps.js +90 -0
  438. package/dist/chunk-qhaggqkt.js +113 -0
  439. package/dist/chunk-qjjp27z8.js +195 -0
  440. package/dist/chunk-qxp0nye6.js +34 -0
  441. package/dist/chunk-qy3nagaq.js +4957 -0
  442. package/dist/chunk-qz2meav1.js +1452 -0
  443. package/dist/chunk-r50hne7m.js +63 -0
  444. package/dist/chunk-r6m0vgnv.js +80 -0
  445. package/dist/chunk-r7yw38vf.js +22864 -0
  446. package/dist/chunk-r8xc618w.js +42 -0
  447. package/dist/chunk-r961r5kj.js +87 -0
  448. package/dist/chunk-r9b5xrh0.js +66 -0
  449. package/dist/chunk-rcn2pd6q.js +477 -0
  450. package/dist/chunk-rdeh8p3y.js +148 -0
  451. package/dist/chunk-rg9x1742.js +542 -0
  452. package/dist/chunk-rgyzsbs3.js +39 -0
  453. package/dist/chunk-rk2fsxtz.js +16 -0
  454. package/dist/chunk-rkchkwv9.js +40 -0
  455. package/dist/chunk-rp8whpb3.js +478 -0
  456. package/dist/chunk-rpkxdtgr.js +68 -0
  457. package/dist/chunk-rpmntgyh.js +394 -0
  458. package/dist/chunk-rpshz4dy.js +614 -0
  459. package/dist/chunk-rqd60ay5.js +133 -0
  460. package/dist/chunk-rrsjf2ea.js +229 -0
  461. package/dist/chunk-rtjk8c8e.js +173 -0
  462. package/dist/chunk-rw0y2wdf.js +1017 -0
  463. package/dist/chunk-rx5w7ess.js +663 -0
  464. package/dist/chunk-rx8t9d35.js +1947 -0
  465. package/dist/chunk-rxcazxgf.js +195 -0
  466. package/dist/chunk-rxg6q3bp.js +1413 -0
  467. package/dist/chunk-rxrb7xnd.js +71 -0
  468. package/dist/chunk-rxrzxff3.js +118 -0
  469. package/dist/chunk-ryqjc943.js +71 -0
  470. package/dist/chunk-rzk9k2rf.js +81 -0
  471. package/dist/chunk-s2qv0nht.js +119 -0
  472. package/dist/chunk-s3hafnk3.js +2285 -0
  473. package/dist/chunk-s4a496tt.js +226 -0
  474. package/dist/chunk-s4d1h3ka.js +35 -0
  475. package/dist/chunk-sm3k3ze4.js +16525 -0
  476. package/dist/chunk-sn0bja82.js +385 -0
  477. package/dist/chunk-sngjggw1.js +4227 -0
  478. package/dist/chunk-sq047n34.js +364 -0
  479. package/dist/chunk-sttwe2tw.js +8584 -0
  480. package/dist/chunk-sw8qx1r0.js +86 -0
  481. package/dist/chunk-swstah6a.js +240 -0
  482. package/dist/chunk-syrkr0mf.js +63 -0
  483. package/dist/chunk-sz206bd9.js +26 -0
  484. package/dist/chunk-t09669cj.js +333 -0
  485. package/dist/chunk-t5f8e30k.js +602 -0
  486. package/dist/chunk-t5m78mc8.js +432 -0
  487. package/dist/chunk-t5x1dqwn.js +143 -0
  488. package/dist/chunk-t877ea0w.js +168 -0
  489. package/dist/chunk-t91hb71c.js +17 -0
  490. package/dist/chunk-tb636bcf.js +942 -0
  491. package/dist/chunk-tb8sykbr.js +426 -0
  492. package/dist/chunk-tbdkekz3.js +125 -0
  493. package/dist/chunk-td2gsz7s.js +225 -0
  494. package/dist/chunk-tenvxbyh.js +20 -0
  495. package/dist/chunk-texg4qqt.js +317 -0
  496. package/dist/chunk-teymzz80.js +266 -0
  497. package/dist/chunk-tj26qpf7.js +153 -0
  498. package/dist/chunk-tk85ec4p.js +395 -0
  499. package/dist/chunk-tq205h01.js +164 -0
  500. package/dist/chunk-tqzddjzg.js +61 -0
  501. package/dist/chunk-trqrj23e.js +134 -0
  502. package/dist/chunk-tw1hfsxv.js +2477 -0
  503. package/dist/chunk-txxdfq83.js +122 -0
  504. package/dist/chunk-v0yhe582.js +31 -0
  505. package/dist/chunk-v14184xm.js +15 -0
  506. package/dist/chunk-v1h9z4hw.js +138 -0
  507. package/dist/chunk-v3ey5j7f.js +329 -0
  508. package/dist/chunk-v3nh1sfn.js +208 -0
  509. package/dist/chunk-v3x8tcc0.js +45 -0
  510. package/dist/chunk-v4nqnvqq.js +3984 -0
  511. package/dist/chunk-v4ypszbb.js +15 -0
  512. package/dist/chunk-v7wbqcx9.js +63 -0
  513. package/dist/chunk-v8r5fev3.js +341 -0
  514. package/dist/chunk-v9zg5kzx.js +2810 -0
  515. package/dist/chunk-va1wh5ss.js +24 -0
  516. package/dist/chunk-vbfswhht.js +42 -0
  517. package/dist/chunk-ve7x2tfq.js +124 -0
  518. package/dist/chunk-vfz8k89y.js +485 -0
  519. package/dist/chunk-vgm5k14x.js +35678 -0
  520. package/dist/chunk-vh9pej3c.js +247 -0
  521. package/dist/chunk-vjxqyt6f.js +3820 -0
  522. package/dist/chunk-vpb1xstn.js +178 -0
  523. package/dist/chunk-vqt79tj8.js +110 -0
  524. package/dist/chunk-vr0n9pv9.js +152 -0
  525. package/dist/chunk-vrejmja5.js +90 -0
  526. package/dist/chunk-vrxasmdw.js +449 -0
  527. package/dist/chunk-vrxb946v.js +125 -0
  528. package/dist/chunk-vv4kj0q8.js +98 -0
  529. package/dist/chunk-vvpfng7w.js +8 -0
  530. package/dist/chunk-vw6ybyew.js +2007 -0
  531. package/dist/chunk-vwenx8ke.js +17 -0
  532. package/dist/chunk-vwfa0s5a.js +155 -0
  533. package/dist/chunk-vx71j8xe.js +63 -0
  534. package/dist/chunk-vxbjzggp.js +43 -0
  535. package/dist/chunk-vxjxtz8w.js +440 -0
  536. package/dist/chunk-vy0c1bwp.js +9 -0
  537. package/dist/chunk-w3zczyse.js +14 -0
  538. package/dist/chunk-w4p5t920.js +655 -0
  539. package/dist/chunk-w68wc625.js +287 -0
  540. package/dist/chunk-w9ddp3yf.js +96 -0
  541. package/dist/chunk-wcggm5ja.js +125 -0
  542. package/dist/chunk-wgnyph3q.js +1306 -0
  543. package/dist/chunk-wjm5pc1e.js +134 -0
  544. package/dist/chunk-wnve0drm.js +131 -0
  545. package/dist/chunk-wp27ev2k.js +135 -0
  546. package/dist/chunk-wyvy8a4x.js +131 -0
  547. package/dist/chunk-x671y4dk.js +129 -0
  548. package/dist/chunk-xbj5keyy.js +22 -0
  549. package/dist/chunk-xf4fzms8.js +39 -0
  550. package/dist/chunk-xf59k3zg.js +65 -0
  551. package/dist/chunk-xgzc4w49.js +204 -0
  552. package/dist/chunk-xhj7g13b.js +2149 -0
  553. package/dist/chunk-xjp0cd00.js +56 -0
  554. package/dist/chunk-xkhnmhqs.js +74 -0
  555. package/dist/chunk-xkrkqx61.js +55 -0
  556. package/dist/chunk-xmpgmeb8.js +114 -0
  557. package/dist/chunk-xrw80zgd.js +4249 -0
  558. package/dist/chunk-xrzc96g0.js +202 -0
  559. package/dist/chunk-xt76sm44.js +318 -0
  560. package/dist/chunk-xwet3awb.js +20 -0
  561. package/dist/chunk-xyg1sk2w.js +78 -0
  562. package/dist/chunk-y0jpkqb0.js +180 -0
  563. package/dist/chunk-y1q7rt9n.js +102 -0
  564. package/dist/chunk-y67ntyek.js +258 -0
  565. package/dist/chunk-ybk37qp9.js +37 -0
  566. package/dist/chunk-yc1stfve.js +5386 -0
  567. package/dist/chunk-ychjpjef.js +62 -0
  568. package/dist/chunk-yez8fa9g.js +276 -0
  569. package/dist/chunk-ygm7xszr.js +90 -0
  570. package/dist/chunk-ym11azkj.js +37 -0
  571. package/dist/chunk-ympz2h15.js +578 -0
  572. package/dist/chunk-yqx3az3n.js +129 -0
  573. package/dist/chunk-yt3nfhcc.js +152 -0
  574. package/dist/chunk-yy8q0n8s.js +120 -0
  575. package/dist/chunk-yzb92zxv.js +8 -0
  576. package/dist/chunk-yzet6xyr.js +119 -0
  577. package/dist/chunk-yzm97qp1.js +226 -0
  578. package/dist/chunk-z0jgeax8.js +35 -0
  579. package/dist/chunk-z1r3z6w6.js +29 -0
  580. package/dist/chunk-z2dp53wn.js +17 -0
  581. package/dist/chunk-z79355gz.js +308 -0
  582. package/dist/chunk-z7e94hxz.js +251 -0
  583. package/dist/chunk-z8cqdcec.js +173 -0
  584. package/dist/chunk-z99tbg45.js +148 -0
  585. package/dist/chunk-z9nsjcht.js +37 -0
  586. package/dist/chunk-za3k6h2h.js +470 -0
  587. package/dist/chunk-zacynq5p.js +265 -0
  588. package/dist/chunk-zb0x40az.js +1785 -0
  589. package/dist/chunk-zbxtzycc.js +274 -0
  590. package/dist/chunk-zga50181.js +342 -0
  591. package/dist/chunk-zhb2pns1.js +44 -0
  592. package/dist/chunk-zkch6trx.js +231 -0
  593. package/dist/chunk-znf3z4qt.js +954 -0
  594. package/dist/chunk-zp8zwdgq.js +72 -0
  595. package/dist/chunk-ztjd8pyf.js +120 -0
  596. package/dist/chunk-ztmb7geg.js +173 -0
  597. package/dist/chunk-zvr4snzv.js +887 -0
  598. package/dist/chunk-zw62m6n3.js +34858 -0
  599. package/dist/chunk-zwwdebd0.js +65 -0
  600. package/dist/chunk-zxc6x9w8.js +340 -0
  601. package/dist/chunk-zy2e7sz0.js +8 -0
  602. package/dist/chunk-zzf074w3.js +196 -0
  603. package/dist/chunk-zzz0nwb5.js +310 -0
  604. package/dist/cli-bun.js +2 -0
  605. package/dist/cli-node.js +2 -0
  606. package/dist/cli.js +218 -0
  607. package/dist/vendor/audio-capture/arm64-darwin/audio-capture.node +0 -0
  608. package/dist/vendor/audio-capture/arm64-linux/audio-capture.node +0 -0
  609. package/dist/vendor/audio-capture/arm64-win32/audio-capture.node +0 -0
  610. package/dist/vendor/audio-capture/x64-darwin/audio-capture.node +0 -0
  611. package/dist/vendor/audio-capture/x64-linux/audio-capture.node +0 -0
  612. package/dist/vendor/audio-capture/x64-win32/audio-capture.node +0 -0
  613. package/dist/vendor/ripgrep/x64-win32/rg.exe +0 -0
  614. package/package.json +243 -0
  615. package/scripts/chrome-mcp-bridge-resolver.mjs +43 -0
  616. package/scripts/chrome-mcp-env.mjs +19 -0
  617. package/scripts/postinstall.cjs +339 -0
  618. package/scripts/run-parallel.mjs +10 -0
  619. package/scripts/setup-chrome-mcp.mjs +69 -0
@@ -0,0 +1,942 @@
1
+ // @bun
2
+ import {
3
+ applySkillLifecycleDecision,
4
+ compareExistingArtifacts,
5
+ decideSkillLifecycle,
6
+ generateOrMergeSkillDraft,
7
+ generateSkillDraft,
8
+ init_learningPolicy,
9
+ init_skillGenerator,
10
+ init_skillLifecycle,
11
+ normalizeSkillName,
12
+ shouldGenerateSkillFromInstincts
13
+ } from "./chunk-b0tjx3k1.js";
14
+ import {
15
+ init_projectContext,
16
+ resolveProjectContext
17
+ } from "./chunk-fqcfzg3j.js";
18
+ import {
19
+ analyzeWithActiveBackend,
20
+ init_observerBackend,
21
+ init_sessionObserver,
22
+ resolveDefaultObserverBackend
23
+ } from "./chunk-cnge6wpj.js";
24
+ import {
25
+ clampConfidence,
26
+ createInstinct,
27
+ getSkillLearningConfig,
28
+ init_config,
29
+ init_instinctParser,
30
+ isContradictingInstinct,
31
+ normalizeInstinct,
32
+ parseInstinct,
33
+ serializeInstinct
34
+ } from "./chunk-w9ddp3yf.js";
35
+ import {
36
+ appendObservation,
37
+ getSkillLearningRoot,
38
+ init_observationStore,
39
+ purgeOldObservations,
40
+ readObservations,
41
+ stringifyField
42
+ } from "./chunk-v3ey5j7f.js";
43
+ import {
44
+ clearCommandsCache,
45
+ init_commands1 as init_commands,
46
+ init_postSamplingHooks,
47
+ registerPostSamplingHook
48
+ } from "./chunk-gmdy2w3z.js";
49
+ import {
50
+ init_featureCheck,
51
+ isSkillLearningEnabled
52
+ } from "./chunk-8gv2pjby.js";
53
+ import {
54
+ getClaudeConfigHomeDir,
55
+ init_envUtils
56
+ } from "./chunk-s3hafnk3.js";
57
+ import {
58
+ __esm,
59
+ __require
60
+ } from "./chunk-hhsxm2yr.js";
61
+
62
+ // src/services/skillLearning/instinctStore.ts
63
+ import {
64
+ mkdir,
65
+ readFile,
66
+ readdir,
67
+ rename,
68
+ unlink,
69
+ writeFile
70
+ } from "fs/promises";
71
+ import { randomBytes } from "crypto";
72
+ import { dirname, join } from "path";
73
+ function getInstinctsDir(options) {
74
+ const root = getSkillLearningRoot(options);
75
+ const project = options?.project;
76
+ const scope = options?.scope ?? project?.scope ?? "project";
77
+ if (scope === "global" || !project || project.projectId === "global") {
78
+ return join(root, "global", "instincts", "personal");
79
+ }
80
+ return join(root, "projects", project.projectId, "instincts", "personal");
81
+ }
82
+ async function saveInstinct(instinct, options) {
83
+ const normalized = normalizeInstinct(instinct);
84
+ const dir = getInstinctsDir(options);
85
+ await mkdir(dir, { recursive: true });
86
+ const target = instinctPath(normalized.id, options);
87
+ const tmp = `${target}.${randomBytes(6).toString("hex")}.tmp`;
88
+ await writeFile(tmp, serializeInstinct(normalized));
89
+ await rename(tmp, target);
90
+ return normalized;
91
+ }
92
+ async function loadInstincts(options) {
93
+ const dir = getInstinctsDir(options);
94
+ let files = [];
95
+ try {
96
+ files = await readdir(dir);
97
+ } catch (error) {
98
+ if (error.code === "ENOENT")
99
+ return [];
100
+ throw error;
101
+ }
102
+ const instincts = [];
103
+ for (const file of files.filter((file2) => file2.endsWith(".json"))) {
104
+ const content = await readFile(join(dir, file), "utf8");
105
+ instincts.push(parseInstinct(content));
106
+ }
107
+ return instincts.sort((a, b) => a.id.localeCompare(b.id));
108
+ }
109
+ function upsertInstinct(incoming, options) {
110
+ const result = upsertQueue.then(() => doUpsertInstinct(incoming, options));
111
+ upsertQueue = result.catch(() => {});
112
+ return result;
113
+ }
114
+ async function doUpsertInstinct(incoming, options) {
115
+ const existing = await loadInstincts(options);
116
+ const match = existing.find((instinct) => instinct.id === incoming.id) ?? existing.find((instinct) => instinct.trigger.toLowerCase() === incoming.trigger.toLowerCase() && isContradictingInstinct(instinct, incoming));
117
+ const now = new Date().toISOString();
118
+ if (!match)
119
+ return saveInstinct(incoming, options);
120
+ const contradiction = isContradictingInstinct(match, incoming);
121
+ const confidenceDelta = contradiction ? -0.1 : outcomeConfidenceDelta(incoming.evidenceOutcome);
122
+ const nextConfidence = clampConfidence(match.confidence + confidenceDelta);
123
+ const nextStatus = resolveNextStatus(match.status, nextConfidence, contradiction);
124
+ const merged = normalizeInstinct({
125
+ ...match,
126
+ confidence: nextConfidence,
127
+ evidence: [...match.evidence, ...incoming.evidence],
128
+ evidenceOutcome: incoming.evidenceOutcome ?? match.evidenceOutcome,
129
+ observationIds: [
130
+ ...match.observationIds ?? [],
131
+ ...incoming.observationIds ?? []
132
+ ],
133
+ updatedAt: now,
134
+ status: nextStatus
135
+ });
136
+ return saveInstinct(merged, options);
137
+ }
138
+ function resolveNextStatus(current, nextConfidence, contradiction) {
139
+ if (contradiction && nextConfidence < 0.3)
140
+ return "conflict-hold";
141
+ if (current === "conflict-hold" && nextConfidence >= 0.5)
142
+ return "active";
143
+ if (current === "pending" && nextConfidence >= 0.8)
144
+ return "active";
145
+ return current;
146
+ }
147
+ async function decayInstinctConfidence(options) {
148
+ const instincts = await loadInstincts(options);
149
+ const now = Date.now();
150
+ let decayed = 0;
151
+ for (const instinct of instincts) {
152
+ if (instinct.status !== "pending" && instinct.status !== "active")
153
+ continue;
154
+ const updatedAtMs = Date.parse(instinct.updatedAt);
155
+ if (Number.isNaN(updatedAtMs))
156
+ continue;
157
+ const weeksElapsed = Math.floor((now - updatedAtMs) / MS_PER_WEEK);
158
+ if (weeksElapsed < 1)
159
+ continue;
160
+ const delta = -DECAY_PER_WEEK * weeksElapsed;
161
+ const nextConfidence = clampConfidence(instinct.confidence + delta);
162
+ if (nextConfidence === instinct.confidence)
163
+ continue;
164
+ await saveInstinct(normalizeInstinct({
165
+ ...instinct,
166
+ confidence: nextConfidence,
167
+ updatedAt: new Date(now).toISOString()
168
+ }), options);
169
+ decayed += 1;
170
+ }
171
+ return decayed;
172
+ }
173
+ function outcomeConfidenceDelta(outcome) {
174
+ if (outcome === "failure")
175
+ return -0.05;
176
+ return 0.05;
177
+ }
178
+ async function updateConfidence(instinctId, delta, options) {
179
+ const instincts = await loadInstincts(options);
180
+ const target = instincts.find((instinct) => instinct.id === instinctId);
181
+ if (!target)
182
+ return null;
183
+ const updated = normalizeInstinct({
184
+ ...target,
185
+ confidence: clampConfidence(target.confidence + delta),
186
+ updatedAt: new Date().toISOString()
187
+ });
188
+ return saveInstinct(updated, options);
189
+ }
190
+ async function exportInstincts(outputPath, options) {
191
+ const instincts = await loadInstincts(options);
192
+ await mkdir(dirname(outputPath), { recursive: true });
193
+ await writeFile(outputPath, `${JSON.stringify(instincts, null, 2)}
194
+ `);
195
+ return instincts;
196
+ }
197
+ async function importInstincts(inputPath, options) {
198
+ const parsed = JSON.parse(await readFile(inputPath, "utf8"));
199
+ const saved = [];
200
+ for (const instinct of parsed) {
201
+ saved.push(await upsertInstinct(normalizeInstinct(instinct), options));
202
+ }
203
+ return saved;
204
+ }
205
+ async function prunePendingInstincts(maxAgeDays, options) {
206
+ const instincts = await loadInstincts(options);
207
+ const cutoff = Date.now() - maxAgeDays * 24 * 60 * 60 * 1000;
208
+ const pruned = [];
209
+ for (const instinct of instincts) {
210
+ if (instinct.status === "pending" && Date.parse(instinct.updatedAt) < cutoff) {
211
+ await unlink(instinctPath(instinct.id, options));
212
+ pruned.push(instinct);
213
+ }
214
+ }
215
+ return pruned;
216
+ }
217
+ function instinctPath(id, options) {
218
+ return join(getInstinctsDir(options), `${id}.json`);
219
+ }
220
+ var upsertQueue, DECAY_PER_WEEK = 0.02, MS_PER_WEEK;
221
+ var init_instinctStore = __esm(() => {
222
+ init_observationStore();
223
+ init_instinctParser();
224
+ upsertQueue = Promise.resolve();
225
+ MS_PER_WEEK = 7 * 24 * 60 * 60 * 1000;
226
+ });
227
+
228
+ // src/services/skillLearning/commandGenerator.ts
229
+ import { mkdir as mkdir2, writeFile as writeFile2 } from "fs/promises";
230
+ import { existsSync } from "fs";
231
+ import { join as join2 } from "path";
232
+ function generateCommandDraft(instincts, options) {
233
+ if (instincts.length === 0) {
234
+ throw new Error("Cannot generate a command draft without instincts");
235
+ }
236
+ const scope = options?.scope ?? instincts[0]?.scope ?? "project";
237
+ const rawName = options?.name ?? buildCommandName(instincts);
238
+ const name = normalizeSkillName(rawName);
239
+ const confidence = averageConfidence(instincts);
240
+ const description = options?.description ?? buildDescription(instincts);
241
+ const outputPath = getLearnedCommandPath(name, scope, options);
242
+ const content = buildCommandContent({
243
+ name,
244
+ description,
245
+ confidence,
246
+ instincts
247
+ });
248
+ return {
249
+ name,
250
+ description,
251
+ scope,
252
+ sourceInstinctIds: instincts.map((instinct) => instinct.id),
253
+ confidence: Number(confidence.toFixed(2)),
254
+ content,
255
+ outputPath
256
+ };
257
+ }
258
+ async function writeLearnedCommand(draft) {
259
+ await mkdir2(draft.outputPath, { recursive: true });
260
+ const filePath = join2(draft.outputPath, `${draft.name}.md`);
261
+ if (existsSync(filePath))
262
+ return filePath;
263
+ await writeFile2(filePath, draft.content, "utf8");
264
+ clearCommandsCache();
265
+ return filePath;
266
+ }
267
+ function getLearnedCommandPath(_name, scope, options) {
268
+ if (options?.outputRoot)
269
+ return options.outputRoot;
270
+ if (scope === "project") {
271
+ return join2(options?.cwd ?? process.cwd(), ".claude", "commands");
272
+ }
273
+ return options?.globalCommandsDir ?? join2(getClaudeConfigHomeDir(), "commands");
274
+ }
275
+ function buildCommandName(instincts) {
276
+ const words = extractWords(instincts, 4);
277
+ const name = ["learned", ...words].join("-");
278
+ return normalizeSkillName(name) || "learned-command";
279
+ }
280
+ function buildDescription(instincts) {
281
+ const trigger = instincts[0]?.trigger ?? "Reuse the learned workflow";
282
+ return trigger.replace(/\s+/g, " ").slice(0, 120);
283
+ }
284
+ function buildCommandContent(params) {
285
+ const { name, description, confidence, instincts } = params;
286
+ return [
287
+ "---",
288
+ `name: ${name}`,
289
+ `description: ${JSON.stringify(description)}`,
290
+ "origin: skill-learning",
291
+ `confidence: ${Number(confidence.toFixed(2))}`,
292
+ `evolved_from: [${instincts.map((instinct) => JSON.stringify(instinct.id)).join(", ")}]`,
293
+ "---",
294
+ "",
295
+ `# /${name}`,
296
+ "",
297
+ "## When to use",
298
+ "",
299
+ instincts.map((instinct) => `- ${instinct.trigger}`).join(`
300
+ `),
301
+ "",
302
+ "## Steps",
303
+ "",
304
+ instincts.map((instinct) => `- ${instinct.action}`).join(`
305
+ `),
306
+ "",
307
+ "## Evidence",
308
+ "",
309
+ instincts.flatMap((instinct) => instinct.evidence.map((evidence) => `- ${evidence}`)).join(`
310
+ `),
311
+ ""
312
+ ].join(`
313
+ `);
314
+ }
315
+ function averageConfidence(instincts) {
316
+ return instincts.reduce((sum, instinct) => sum + instinct.confidence, 0) / instincts.length;
317
+ }
318
+ function extractWords(instincts, max) {
319
+ const stopWords = new Set([
320
+ "when",
321
+ "with",
322
+ "this",
323
+ "that",
324
+ "user",
325
+ "asks",
326
+ "for",
327
+ "the",
328
+ "and",
329
+ "run",
330
+ "use",
331
+ "prefer",
332
+ "avoid"
333
+ ]);
334
+ const words = [];
335
+ for (const instinct of instincts) {
336
+ for (const token of `${instinct.trigger} ${instinct.action}`.toLowerCase().split(/[^a-z0-9]+/)) {
337
+ if (token.length > 2 && !stopWords.has(token) && !words.includes(token)) {
338
+ words.push(token);
339
+ }
340
+ if (words.length >= max)
341
+ return words;
342
+ }
343
+ }
344
+ return words;
345
+ }
346
+ var init_commandGenerator = __esm(() => {
347
+ init_envUtils();
348
+ init_commands();
349
+ init_learningPolicy();
350
+ });
351
+
352
+ // src/services/skillLearning/agentGenerator.ts
353
+ import { mkdir as mkdir3, writeFile as writeFile3 } from "fs/promises";
354
+ import { existsSync as existsSync2 } from "fs";
355
+ import { join as join3 } from "path";
356
+ function generateAgentDraft(instincts, options) {
357
+ if (instincts.length === 0) {
358
+ throw new Error("Cannot generate an agent draft without instincts");
359
+ }
360
+ const scope = options?.scope ?? instincts[0]?.scope ?? "project";
361
+ const rawName = options?.name ?? buildAgentName(instincts);
362
+ const name = normalizeSkillName(rawName);
363
+ const confidence = averageConfidence2(instincts);
364
+ const description = options?.description ?? buildDescription2(instincts);
365
+ const outputPath = getLearnedAgentPath(name, scope, options);
366
+ const content = buildAgentContent({
367
+ name,
368
+ description,
369
+ confidence,
370
+ instincts
371
+ });
372
+ return {
373
+ name,
374
+ description,
375
+ scope,
376
+ sourceInstinctIds: instincts.map((instinct) => instinct.id),
377
+ confidence: Number(confidence.toFixed(2)),
378
+ content,
379
+ outputPath
380
+ };
381
+ }
382
+ async function writeLearnedAgent(draft) {
383
+ await mkdir3(draft.outputPath, { recursive: true });
384
+ const filePath = join3(draft.outputPath, `${draft.name}.md`);
385
+ if (existsSync2(filePath))
386
+ return filePath;
387
+ await writeFile3(filePath, draft.content, "utf8");
388
+ clearCommandsCache();
389
+ return filePath;
390
+ }
391
+ function getLearnedAgentPath(_name, scope, options) {
392
+ if (options?.outputRoot)
393
+ return options.outputRoot;
394
+ if (scope === "project") {
395
+ return join3(options?.cwd ?? process.cwd(), ".claude", "agents");
396
+ }
397
+ return options?.globalAgentsDir ?? join3(getClaudeConfigHomeDir(), "agents");
398
+ }
399
+ function buildAgentName(instincts) {
400
+ const words = extractWords2(instincts, 4);
401
+ const name = ["learned", "agent", ...words].join("-");
402
+ return normalizeSkillName(name) || "learned-agent";
403
+ }
404
+ function buildDescription2(instincts) {
405
+ const trigger = instincts[0]?.trigger ?? "Run the learned multi-step workflow";
406
+ return trigger.replace(/\s+/g, " ").slice(0, 120);
407
+ }
408
+ function buildAgentContent(params) {
409
+ const { name, description, confidence, instincts } = params;
410
+ return [
411
+ "---",
412
+ `name: ${name}`,
413
+ `description: ${JSON.stringify(description)}`,
414
+ "origin: skill-learning",
415
+ `confidence: ${Number(confidence.toFixed(2))}`,
416
+ `evolved_from: [${instincts.map((instinct) => JSON.stringify(instinct.id)).join(", ")}]`,
417
+ "---",
418
+ "",
419
+ `You are the ${name} learned agent.`,
420
+ "",
421
+ "## Triggers",
422
+ "",
423
+ instincts.map((instinct) => `- ${instinct.trigger}`).join(`
424
+ `),
425
+ "",
426
+ "## Playbook",
427
+ "",
428
+ instincts.map((instinct) => `- ${instinct.action}`).join(`
429
+ `),
430
+ "",
431
+ "## Evidence",
432
+ "",
433
+ instincts.flatMap((instinct) => instinct.evidence.map((evidence) => `- ${evidence}`)).slice(0, 20).join(`
434
+ `),
435
+ ""
436
+ ].join(`
437
+ `);
438
+ }
439
+ function averageConfidence2(instincts) {
440
+ return instincts.reduce((sum, instinct) => sum + instinct.confidence, 0) / instincts.length;
441
+ }
442
+ function extractWords2(instincts, max) {
443
+ const stopWords = new Set([
444
+ "when",
445
+ "with",
446
+ "this",
447
+ "that",
448
+ "user",
449
+ "asks",
450
+ "for",
451
+ "the",
452
+ "and",
453
+ "debug",
454
+ "investigate",
455
+ "research"
456
+ ]);
457
+ const words = [];
458
+ for (const instinct of instincts) {
459
+ for (const token of `${instinct.trigger} ${instinct.action}`.toLowerCase().split(/[^a-z0-9]+/)) {
460
+ if (token.length > 2 && !stopWords.has(token) && !words.includes(token)) {
461
+ words.push(token);
462
+ }
463
+ if (words.length >= max)
464
+ return words;
465
+ }
466
+ }
467
+ return words;
468
+ }
469
+ var init_agentGenerator = __esm(() => {
470
+ init_envUtils();
471
+ init_commands();
472
+ init_learningPolicy();
473
+ });
474
+
475
+ // src/services/skillLearning/evolution.ts
476
+ function clusterInstincts(instincts) {
477
+ const groups = new Map;
478
+ for (const instinct of instincts) {
479
+ if (instinct.status !== "active" && instinct.status !== "pending")
480
+ continue;
481
+ const key = `${instinct.domain}:${normalizedTrigger(instinct.trigger)}`;
482
+ const group = groups.get(key) ?? [];
483
+ group.push(instinct);
484
+ groups.set(key, group);
485
+ }
486
+ return Array.from(groups.values()).filter((group) => {
487
+ return group.length >= getSkillLearningConfig().minClusterSize;
488
+ }).map((group) => {
489
+ const averageConfidence3 = group.reduce((sum, instinct) => sum + instinct.confidence, 0) / group.length;
490
+ return {
491
+ target: classifyEvolutionTarget(group),
492
+ trigger: group[0]?.trigger ?? "learned pattern",
493
+ domain: group[0]?.domain ?? "project",
494
+ instincts: group,
495
+ averageConfidence: Number(averageConfidence3.toFixed(2))
496
+ };
497
+ }).sort((a, b) => b.averageConfidence - a.averageConfidence);
498
+ }
499
+ function classifyEvolutionTarget(instinctsOrCandidate) {
500
+ const instincts = Array.isArray(instinctsOrCandidate) ? instinctsOrCandidate : instinctsOrCandidate.instincts;
501
+ const text = instincts.map((i) => `${i.trigger} ${i.action}`).join(" ").toLowerCase();
502
+ if (/user asks|explicitly request|command|run /.test(text))
503
+ return "command";
504
+ if (instincts.length >= 4 && /(debug|investigate|research|multi-step)/.test(text)) {
505
+ return "agent";
506
+ }
507
+ return "skill";
508
+ }
509
+ function suggestEvolutions(instincts) {
510
+ return clusterInstincts(instincts);
511
+ }
512
+ function generateSkillCandidates(instincts, options) {
513
+ return clusterInstincts(instincts).filter((candidate) => candidate.target === "skill" && shouldGenerateSkillFromInstincts(candidate.instincts)).map((candidate) => generateSkillDraft(candidate.instincts, {
514
+ ...options,
515
+ scope: candidate.instincts[0]?.scope ?? "project"
516
+ }));
517
+ }
518
+ function generateCommandCandidates(instincts, options) {
519
+ return clusterInstincts(instincts).filter((candidate) => candidate.target === "command" && shouldGenerateSkillFromInstincts(candidate.instincts)).map((candidate) => generateCommandDraft(candidate.instincts, {
520
+ ...options,
521
+ scope: candidate.instincts[0]?.scope ?? "project"
522
+ }));
523
+ }
524
+ function generateAgentCandidates(instincts, options) {
525
+ return clusterInstincts(instincts).filter((candidate) => candidate.target === "agent" && shouldGenerateSkillFromInstincts(candidate.instincts)).map((candidate) => generateAgentDraft(candidate.instincts, {
526
+ ...options,
527
+ scope: candidate.instincts[0]?.scope ?? "project"
528
+ }));
529
+ }
530
+ function generateAllCandidates(instincts, options) {
531
+ return [
532
+ ...generateSkillCandidates(instincts, options?.skill).map((draft) => ({ kind: "skill", draft })),
533
+ ...generateCommandCandidates(instincts, options?.command).map((draft) => ({ kind: "command", draft })),
534
+ ...generateAgentCandidates(instincts, options?.agent).map((draft) => ({ kind: "agent", draft }))
535
+ ];
536
+ }
537
+ function normalizedTrigger(trigger) {
538
+ return trigger.toLowerCase().replace(/[^a-z0-9]+/g, " ").split(/\s+/).filter(Boolean).slice(0, 6).join(" ");
539
+ }
540
+ var init_evolution = __esm(() => {
541
+ init_learningPolicy();
542
+ init_skillGenerator();
543
+ init_commandGenerator();
544
+ init_agentGenerator();
545
+ init_config();
546
+ });
547
+
548
+ // src/services/skillLearning/promotion.ts
549
+ import { readdir as readdir2 } from "fs/promises";
550
+ import { existsSync as existsSync3 } from "fs";
551
+ import { join as join4 } from "path";
552
+ function resetPromotionBookkeeping() {
553
+ sessionPromotedIds.clear();
554
+ }
555
+ function findPromotionCandidates(instincts, minProjects = 2, minConfidence = 0.8) {
556
+ const grouped = new Map;
557
+ for (const instinct of instincts) {
558
+ if (instinct.scope !== "project")
559
+ continue;
560
+ const group = grouped.get(instinct.id) ?? [];
561
+ group.push(instinct);
562
+ grouped.set(instinct.id, group);
563
+ }
564
+ return Array.from(grouped.entries()).flatMap(([instinctId, group]) => {
565
+ const projectIds = Array.from(new Set(group.map((instinct) => instinct.projectId).filter(Boolean)));
566
+ const averageConfidence3 = group.reduce((sum, instinct) => sum + instinct.confidence, 0) / group.length;
567
+ if (projectIds.length >= minProjects && averageConfidence3 >= minConfidence) {
568
+ return [
569
+ {
570
+ instinctId,
571
+ projectIds,
572
+ averageConfidence: Number(averageConfidence3.toFixed(2))
573
+ }
574
+ ];
575
+ }
576
+ return [];
577
+ });
578
+ }
579
+ async function checkPromotion(options = {}) {
580
+ const minProjects = options.minProjects ?? 2;
581
+ const minConfidence = options.minConfidence ?? 0.8;
582
+ const allProjectInstincts = await loadAllProjectInstincts(options.rootDir);
583
+ const candidates = findPromotionCandidates(allProjectInstincts, minProjects, minConfidence);
584
+ const promoted = [];
585
+ for (const candidate of candidates) {
586
+ if (sessionPromotedIds.has(candidate.instinctId))
587
+ continue;
588
+ const source = allProjectInstincts.find((instinct) => instinct.id === candidate.instinctId);
589
+ if (!source)
590
+ continue;
591
+ const globalInstinct = {
592
+ ...source,
593
+ scope: "global",
594
+ projectId: undefined,
595
+ projectName: undefined,
596
+ confidence: candidate.averageConfidence,
597
+ updatedAt: new Date().toISOString()
598
+ };
599
+ const globalOptions = {
600
+ rootDir: options.rootDir,
601
+ scope: "global",
602
+ project: globalProjectContext(options.rootDir)
603
+ };
604
+ await saveInstinct(globalInstinct, globalOptions);
605
+ sessionPromotedIds.add(candidate.instinctId);
606
+ promoted.push(candidate);
607
+ }
608
+ return promoted;
609
+ }
610
+ async function loadAllProjectInstincts(rootDir) {
611
+ const root = getSkillLearningRoot(rootDir ? { rootDir } : undefined);
612
+ const projectsRoot = join4(root, "projects");
613
+ if (!existsSync3(projectsRoot))
614
+ return [];
615
+ const entries = await readdir2(projectsRoot, { withFileTypes: true });
616
+ const instincts = [];
617
+ for (const entry of entries) {
618
+ if (!entry.isDirectory())
619
+ continue;
620
+ const project = {
621
+ projectId: entry.name,
622
+ projectName: entry.name,
623
+ scope: "project",
624
+ source: "git_root",
625
+ cwd: projectsRoot,
626
+ storageDir: join4(projectsRoot, entry.name)
627
+ };
628
+ const projectInstincts = await loadInstincts({
629
+ rootDir,
630
+ project,
631
+ scope: "project"
632
+ });
633
+ instincts.push(...projectInstincts);
634
+ }
635
+ return instincts;
636
+ }
637
+ function globalProjectContext(rootDir) {
638
+ const root = getSkillLearningRoot(rootDir ? { rootDir } : undefined);
639
+ return {
640
+ projectId: "global",
641
+ projectName: "Global",
642
+ scope: "global",
643
+ source: "global",
644
+ cwd: root,
645
+ storageDir: join4(root, "global")
646
+ };
647
+ }
648
+ function getGlobalInstinctsDir(rootDir) {
649
+ return getInstinctsDir({
650
+ rootDir,
651
+ scope: "global",
652
+ project: globalProjectContext(rootDir)
653
+ });
654
+ }
655
+ var sessionPromotedIds;
656
+ var init_promotion = __esm(() => {
657
+ init_instinctStore();
658
+ init_observationStore();
659
+ sessionPromotedIds = new Set;
660
+ });
661
+
662
+ // src/services/skillLearning/runtimeObserver.ts
663
+ import { existsSync as existsSync4 } from "fs";
664
+ import { join as join5 } from "path";
665
+ function resetRuntimeLLMBookkeeping() {
666
+ llmCallsThisSession = 0;
667
+ lastLlmCallTimestamp = 0;
668
+ lastProcessedMessageIds.clear();
669
+ }
670
+ function getRuntimeTurn() {
671
+ return runtimeTurn;
672
+ }
673
+ function initSkillLearning() {
674
+ if (initialized)
675
+ return;
676
+ initialized = true;
677
+ try {
678
+ resolveDefaultObserverBackend();
679
+ } catch {}
680
+ registerPostSamplingHook(runSkillLearningPostSampling);
681
+ runStartupMaintenance().catch(() => {});
682
+ }
683
+ async function runStartupMaintenance() {
684
+ if (!isSkillLearningEnabled())
685
+ return;
686
+ if (process.env.CLAUDE_SKILL_LEARNING_DISABLE)
687
+ return;
688
+ const project = resolveProjectContext(process.cwd());
689
+ const options = { project };
690
+ await Promise.allSettled([
691
+ decayInstinctConfidence(options),
692
+ purgeOldObservations(options),
693
+ prunePendingInstincts(30, options)
694
+ ]);
695
+ }
696
+ function isInsideSkillLearningStorage(cwd) {
697
+ try {
698
+ const root = getSkillLearningRoot();
699
+ return cwd.startsWith(root);
700
+ } catch {
701
+ return false;
702
+ }
703
+ }
704
+ async function runSkillLearningPostSampling(context) {
705
+ if (!isSkillLearningEnabled())
706
+ return;
707
+ if (process.env.CLAUDE_SKILL_LEARNING_DISABLE)
708
+ return;
709
+ if (!context.querySource?.startsWith("repl_main_thread"))
710
+ return;
711
+ if (context.toolUseContext.agentId)
712
+ return;
713
+ const cwd = process.cwd();
714
+ if (isInsideSkillLearningStorage(cwd))
715
+ return;
716
+ const project = resolveProjectContext(cwd);
717
+ const options = { project };
718
+ ++runtimeTurn;
719
+ const observations = [];
720
+ for (const observation of observationsFromMessages(context.messages, project)) {
721
+ observations.push(await appendObservation(observation, options));
722
+ }
723
+ const all = await readObservations(options);
724
+ const fresh = all.filter((o) => o.source === "tool-hook" && o.sessionId === RUNTIME_SESSION_ID && typeof o.timestamp === "string" && o.timestamp > lastConsumedToolHookTimestamp);
725
+ observations.push(...fresh);
726
+ for (const o of fresh) {
727
+ if (o.timestamp > lastConsumedToolHookTimestamp) {
728
+ lastConsumedToolHookTimestamp = o.timestamp;
729
+ }
730
+ }
731
+ if (observations.length === 0)
732
+ return;
733
+ const now = Date.now();
734
+ const minObservations = 5;
735
+ const { llm } = getSkillLearningConfig();
736
+ const shouldCallLLM = observations.length >= minObservations && llmCallsThisSession < llm.maxCallsPerSession && now - lastLlmCallTimestamp >= llm.cooldownMs;
737
+ let candidates;
738
+ if (shouldCallLLM) {
739
+ llmCallsThisSession++;
740
+ lastLlmCallTimestamp = now;
741
+ candidates = await analyzeWithActiveBackend(observations, { project });
742
+ } else {
743
+ const { heuristicObserverBackend } = await import("./chunk-vrxb946v.js");
744
+ const result = heuristicObserverBackend.analyze(observations, { project });
745
+ candidates = Array.isArray(result) ? result : await result;
746
+ }
747
+ for (const candidate of candidates) {
748
+ await upsertInstinct(createInstinct(candidate), options);
749
+ }
750
+ await autoEvolveLearnedSkills(options);
751
+ }
752
+ function resetRuntimeObserverForTest() {
753
+ runtimeTurn = 0;
754
+ lastConsumedToolHookTimestamp = "";
755
+ resetRuntimeLLMBookkeeping();
756
+ }
757
+ async function autoEvolveLearnedSkills(options) {
758
+ const instincts = await loadInstincts(options);
759
+ const cwd = process.cwd();
760
+ const skillRoots = [
761
+ join5(cwd, ".claude", "skills"),
762
+ join5(getClaudeConfigHomeDir(), "skills")
763
+ ];
764
+ const skillClusters = clusterInstincts(instincts).filter((candidate) => candidate.target === "skill" && shouldGenerateSkillFromInstincts(candidate.instincts));
765
+ for (const cluster of skillClusters) {
766
+ const outcome = await generateOrMergeSkillDraft(cluster.instincts, { cwd, scope: cluster.instincts[0]?.scope ?? "project" }, skillRoots);
767
+ if (outcome.action === "append-evidence")
768
+ continue;
769
+ const draft = outcome.draft;
770
+ if (existsSync4(join5(draft.outputPath, "SKILL.md")))
771
+ continue;
772
+ const existing = await compareExistingArtifacts("skill", draft, skillRoots);
773
+ const decision = decideSkillLifecycle(draft, existing);
774
+ await applySkillLifecycleDecision(decision);
775
+ }
776
+ const commandDrafts = generateCommandCandidates(instincts, { cwd });
777
+ for (const draft of commandDrafts) {
778
+ const roots = [
779
+ join5(cwd, ".claude", "commands"),
780
+ join5(getClaudeConfigHomeDir(), "commands")
781
+ ];
782
+ const existing = await compareExistingArtifacts("command", draft, roots);
783
+ if (existing.length > 0)
784
+ continue;
785
+ await writeLearnedCommand(draft);
786
+ }
787
+ const agentDrafts = generateAgentCandidates(instincts, { cwd });
788
+ for (const draft of agentDrafts) {
789
+ const roots = [
790
+ join5(cwd, ".claude", "agents"),
791
+ join5(getClaudeConfigHomeDir(), "agents")
792
+ ];
793
+ const existing = await compareExistingArtifacts("agent", draft, roots);
794
+ if (existing.length > 0)
795
+ continue;
796
+ await writeLearnedAgent(draft);
797
+ }
798
+ await checkPromotion();
799
+ }
800
+ function observationsFromMessages(messages, project) {
801
+ const sessionId = RUNTIME_SESSION_ID;
802
+ const base = {
803
+ sessionId,
804
+ projectId: project.projectId,
805
+ projectName: project.projectName,
806
+ cwd: project.cwd,
807
+ timestamp: new Date().toISOString(),
808
+ source: "hook"
809
+ };
810
+ return messages.flatMap((message) => {
811
+ const msgKey = `${sessionId}:${String(message.uuid)}`;
812
+ if (lastProcessedMessageIds.has(msgKey))
813
+ return [];
814
+ lastProcessedMessageIds.add(msgKey);
815
+ if (lastProcessedMessageIds.size > MAX_PROCESSED_IDS) {
816
+ const toDrop = lastProcessedMessageIds.size - TRIM_PROCESSED_IDS_TO;
817
+ const iter = lastProcessedMessageIds.values();
818
+ for (let i = 0;i < toDrop; i++) {
819
+ const next = iter.next();
820
+ if (next.done)
821
+ break;
822
+ lastProcessedMessageIds.delete(next.value);
823
+ }
824
+ }
825
+ if (message.type === "user") {
826
+ const toolResults = toolResultsFromContent(message.message?.content);
827
+ if (toolResults.length > 0) {
828
+ return toolResults.map((result) => ({
829
+ ...base,
830
+ id: crypto.randomUUID(),
831
+ event: "tool_complete",
832
+ toolName: result.toolName,
833
+ toolOutput: result.output,
834
+ outcome: result.isError ? "failure" : "success"
835
+ }));
836
+ }
837
+ const text = textFromContent(message.message?.content);
838
+ return text.trim() ? [
839
+ {
840
+ ...base,
841
+ id: crypto.randomUUID(),
842
+ event: "user_message",
843
+ messageText: text
844
+ }
845
+ ] : [];
846
+ }
847
+ if (message.type === "assistant") {
848
+ const toolUses = toolUsesFromContent(message.message?.content);
849
+ const text = textFromContent(message.message?.content);
850
+ return [
851
+ ...toolUses.map((toolUse) => ({
852
+ ...base,
853
+ id: crypto.randomUUID(),
854
+ event: "tool_start",
855
+ toolName: toolUse.toolName,
856
+ toolInput: toolUse.input
857
+ })),
858
+ ...text.trim() ? [
859
+ {
860
+ ...base,
861
+ id: crypto.randomUUID(),
862
+ event: "assistant_message",
863
+ messageText: text
864
+ }
865
+ ] : []
866
+ ];
867
+ }
868
+ return [];
869
+ });
870
+ }
871
+ function textFromContent(content) {
872
+ if (typeof content === "string")
873
+ return content;
874
+ if (!Array.isArray(content))
875
+ return "";
876
+ return content.map((block) => {
877
+ if (!block || typeof block !== "object")
878
+ return "";
879
+ const record = block;
880
+ return typeof record.text === "string" ? record.text : "";
881
+ }).filter(Boolean).join(`
882
+ `);
883
+ }
884
+ function toolUsesFromContent(content) {
885
+ if (!Array.isArray(content))
886
+ return [];
887
+ return content.flatMap((block) => {
888
+ if (!block || typeof block !== "object")
889
+ return [];
890
+ const record = block;
891
+ if (record.type !== "tool_use")
892
+ return [];
893
+ return [
894
+ {
895
+ toolName: String(record.name ?? "unknown_tool"),
896
+ input: stringifyField(record.input)
897
+ }
898
+ ];
899
+ });
900
+ }
901
+ function toolResultsFromContent(content) {
902
+ if (!Array.isArray(content))
903
+ return [];
904
+ return content.flatMap((block) => {
905
+ if (!block || typeof block !== "object")
906
+ return [];
907
+ const record = block;
908
+ if (record.type !== "tool_result")
909
+ return [];
910
+ return [
911
+ {
912
+ toolName: String(record.name ?? record.tool_name ?? "unknown_tool"),
913
+ output: stringifyField(record.content),
914
+ isError: record.is_error === true
915
+ }
916
+ ];
917
+ });
918
+ }
919
+ var RUNTIME_SESSION_ID = "runtime-session", initialized = false, runtimeTurn = 0, lastConsumedToolHookTimestamp = "", llmCallsThisSession = 0, lastLlmCallTimestamp = 0, lastProcessedMessageIds, MAX_PROCESSED_IDS = 1000, TRIM_PROCESSED_IDS_TO = 500;
920
+ var init_runtimeObserver = __esm(() => {
921
+ init_postSamplingHooks();
922
+ init_config();
923
+ init_featureCheck();
924
+ init_observationStore();
925
+ init_projectContext();
926
+ init_sessionObserver();
927
+ init_instinctParser();
928
+ init_observerBackend();
929
+ init_instinctStore();
930
+ init_skillLifecycle();
931
+ init_evolution();
932
+ init_skillGenerator();
933
+ init_learningPolicy();
934
+ init_commandGenerator();
935
+ init_agentGenerator();
936
+ init_observationStore();
937
+ init_promotion();
938
+ init_envUtils();
939
+ lastProcessedMessageIds = new Set;
940
+ });
941
+
942
+ export { saveInstinct, loadInstincts, upsertInstinct, updateConfidence, exportInstincts, importInstincts, prunePendingInstincts, init_instinctStore, generateCommandDraft, writeLearnedCommand, getLearnedCommandPath, init_commandGenerator, generateAgentDraft, writeLearnedAgent, getLearnedAgentPath, init_agentGenerator, clusterInstincts, classifyEvolutionTarget, suggestEvolutions, generateSkillCandidates, generateCommandCandidates, generateAgentCandidates, generateAllCandidates, init_evolution, resetPromotionBookkeeping, findPromotionCandidates, checkPromotion, getGlobalInstinctsDir, init_promotion, RUNTIME_SESSION_ID, resetRuntimeLLMBookkeeping, getRuntimeTurn, initSkillLearning, runSkillLearningPostSampling, resetRuntimeObserverForTest, init_runtimeObserver };