@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,523 @@
1
+ // @bun
2
+ import {
3
+ getSkillLearningConfig,
4
+ init_config
5
+ } from "./chunk-w9ddp3yf.js";
6
+ import {
7
+ clearSkillIndexCache,
8
+ init_localSearch
9
+ } from "./chunk-g06pm4n9.js";
10
+ import {
11
+ getClaudeConfigHomeDir,
12
+ init_envUtils
13
+ } from "./chunk-s3hafnk3.js";
14
+ import {
15
+ __esm,
16
+ __require
17
+ } from "./chunk-hhsxm2yr.js";
18
+
19
+ // src/services/skillLearning/learningPolicy.ts
20
+ function shouldGenerateSkillFromInstincts(instincts) {
21
+ if (instincts.length === 0)
22
+ return false;
23
+ const avg = instincts.reduce((sum, instinct) => sum + instinct.confidence, 0) / instincts.length;
24
+ return avg >= getSkillLearningConfig().minConfidence;
25
+ }
26
+ function buildLearnedSkillName(instincts) {
27
+ const domain = instincts[0]?.domain ?? "project";
28
+ const prefix = DOMAIN_PREFIXES[domain];
29
+ const words = new Set;
30
+ for (const instinct of instincts) {
31
+ for (const word of `${instinct.trigger} ${instinct.action}`.toLowerCase().split(/[^a-z0-9]+/)) {
32
+ if (isUsefulNameWord(word))
33
+ words.add(word);
34
+ if (words.size >= 5)
35
+ break;
36
+ }
37
+ if (words.size >= 5)
38
+ break;
39
+ }
40
+ const name = normalizeSkillName([prefix, ...words].join("-"));
41
+ return isGenericSkillName(name) ? `${prefix}-learned-pattern` : name;
42
+ }
43
+ function normalizeSkillName(value) {
44
+ const normalized = value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, MAX_SKILL_NAME_LENGTH).replace(/-$/g, "");
45
+ return normalized || "learned-skill";
46
+ }
47
+ function isValidLearnedSkillName(value) {
48
+ return value === normalizeSkillName(value) && value.length > 0 && value.length <= MAX_SKILL_NAME_LENGTH && !isGenericSkillName(value);
49
+ }
50
+ function isGenericSkillName(value) {
51
+ return GENERIC_NAMES.has(value);
52
+ }
53
+ function decideDefaultScope(instincts) {
54
+ if (instincts.length === 0)
55
+ return "project";
56
+ const globalFriendly = instincts.every((instinct) => ["security", "git", "workflow"].includes(instinct.domain));
57
+ return globalFriendly && instincts.length >= 2 ? "global" : "project";
58
+ }
59
+ function isUsefulNameWord(word) {
60
+ return word.length > 2 && ![
61
+ "when",
62
+ "with",
63
+ "this",
64
+ "that",
65
+ "user",
66
+ "project",
67
+ "prefer",
68
+ "avoid",
69
+ "use",
70
+ "using",
71
+ "the",
72
+ "and",
73
+ "for"
74
+ ].includes(word);
75
+ }
76
+ var MIN_CONFIDENCE_TO_GENERATE_SKILL = 0.75, MAX_SKILL_NAME_LENGTH = 64, DOMAIN_PREFIXES, GENERIC_NAMES;
77
+ var init_learningPolicy = __esm(() => {
78
+ init_config();
79
+ DOMAIN_PREFIXES = {
80
+ workflow: "workflow",
81
+ testing: "testing",
82
+ debugging: "debugging",
83
+ "code-style": "style",
84
+ security: "security",
85
+ git: "git",
86
+ project: "project"
87
+ };
88
+ GENERIC_NAMES = new Set([
89
+ "learned-skill",
90
+ "better-skill",
91
+ "new-skill",
92
+ "project-skill",
93
+ "workflow-skill"
94
+ ]);
95
+ });
96
+
97
+ // src/services/skillLearning/skillLifecycle.ts
98
+ import {
99
+ mkdir,
100
+ readdir,
101
+ readFile,
102
+ rename,
103
+ rm,
104
+ writeFile
105
+ } from "fs/promises";
106
+ import { existsSync } from "fs";
107
+ import { basename, dirname, join } from "path";
108
+ async function compareExistingArtifacts(kind, draft, rootsOrSkills) {
109
+ const existing = rootsOrSkills.length > 0 && typeof rootsOrSkills[0] === "string" ? await loadExistingArtifacts(kind, rootsOrSkills) : rootsOrSkills;
110
+ const draftTerms = terms(`${draft.name} ${draft.description} ${draft.content}`);
111
+ return existing.map((skill) => ({
112
+ skill,
113
+ score: overlapScore(draftTerms, terms(`${skill.name} ${skill.description} ${skill.content}`))
114
+ })).filter((item) => item.score >= 0.18).sort((a, b) => b.score - a.score).map((item) => item.skill);
115
+ }
116
+ async function compareExistingSkills(draft, rootsOrSkills) {
117
+ return compareExistingArtifacts("skill", draft, rootsOrSkills);
118
+ }
119
+ async function loadExistingArtifacts(kind, roots) {
120
+ if (kind === "skill")
121
+ return loadExistingSkills(roots);
122
+ const results = [];
123
+ for (const root of roots) {
124
+ if (!existsSync(root))
125
+ continue;
126
+ await collectArtifactFiles(root, results);
127
+ }
128
+ return results;
129
+ }
130
+ function decideSkillLifecycle(draft, existingSkills, options = {}) {
131
+ const deletable = existingSkills.find((skill) => isSafeToHardDelete(skill));
132
+ if (options.allowHardDelete && deletable) {
133
+ return {
134
+ type: "delete",
135
+ targetSkill: deletable,
136
+ reason: "Existing skill is low quality, unreferenced, and safe to delete.",
137
+ confirmed: true
138
+ };
139
+ }
140
+ const target = existingSkills[0];
141
+ if (!target) {
142
+ return {
143
+ type: "create",
144
+ draft,
145
+ reason: "No overlapping active skill found."
146
+ };
147
+ }
148
+ const draftTerms = terms(`${draft.name} ${draft.description} ${draft.content}`);
149
+ const existingTerms = terms(`${target.name} ${target.description} ${target.content}`);
150
+ const score = overlapScore(draftTerms, existingTerms);
151
+ if (score >= 0.72 && draft.confidence >= 0.75 && shouldReplaceSkill(draft, target)) {
152
+ return {
153
+ type: "replace",
154
+ targetSkill: target,
155
+ draft,
156
+ reason: `New learned skill has high overlap (${score.toFixed(2)}) and higher confidence.`
157
+ };
158
+ }
159
+ if (score >= 0.35) {
160
+ return {
161
+ type: "merge",
162
+ targetSkill: target,
163
+ patch: buildMergePatch(draft),
164
+ reason: `Existing skill overlaps with the learned pattern (${score.toFixed(2)}).`
165
+ };
166
+ }
167
+ return { type: "create", draft, reason: "Overlap is too low to merge." };
168
+ }
169
+ async function applySkillLifecycleDecision(decision, options = {}) {
170
+ switch (decision.type) {
171
+ case "create": {
172
+ return { activePath: await writeLearnedSkill(decision.draft) };
173
+ }
174
+ case "merge": {
175
+ if (!isSkillLearningGenerated(decision.targetSkill)) {
176
+ process.stderr.write(`[skill-learning] skip user-authored skill: ${decision.targetSkill.path}
177
+ `);
178
+ return {};
179
+ }
180
+ return {
181
+ activePath: await writeMergePatch(decision.targetSkill, decision.patch)
182
+ };
183
+ }
184
+ case "replace": {
185
+ if (!isSkillLearningGenerated(decision.targetSkill)) {
186
+ process.stderr.write(`[skill-learning] skip user-authored skill: ${decision.targetSkill.path}
187
+ `);
188
+ return {};
189
+ }
190
+ const predictedNewPath = decision.draft.outputPath;
191
+ if (decision.hardDelete) {
192
+ const { deletedPath, manifestPath: manifestPath2, tombstonePath } = await deleteSkill(decision.targetSkill, decision.reason, {
193
+ newSkill: decision.draft.name,
194
+ newPath: predictedNewPath
195
+ }, { ...options, allowHardDelete: true });
196
+ const activePath2 = await writeLearnedSkill(decision.draft);
197
+ return { activePath: activePath2, deletedPath, manifestPath: manifestPath2, tombstonePath };
198
+ }
199
+ const { archivedPath, manifestPath } = await archiveSkill(decision.targetSkill, decision.reason, {
200
+ newSkill: decision.draft.name,
201
+ newPath: predictedNewPath
202
+ }, options);
203
+ const activePath = await writeLearnedSkill(decision.draft);
204
+ return { activePath, archivedPath, manifestPath };
205
+ }
206
+ case "archive":
207
+ return await archiveSkill(decision.targetSkill, decision.reason, undefined, options);
208
+ case "delete":
209
+ return await deleteSkill(decision.targetSkill, decision.reason, undefined, {
210
+ ...options,
211
+ allowHardDelete: options.allowHardDelete && decision.confirmed !== false
212
+ });
213
+ }
214
+ }
215
+ async function loadExistingSkills(roots) {
216
+ const skills = [];
217
+ for (const root of roots) {
218
+ if (!existsSync(root))
219
+ continue;
220
+ await collectSkillFiles(root, skills);
221
+ }
222
+ return skills;
223
+ }
224
+ async function archiveSkill(skill, reason, replacement, options = {}) {
225
+ const skillDir = dirname(skill.path);
226
+ const archiveRoot = options.archiveRoot ?? join(dirname(skillDir), ".archive");
227
+ const archivedPath = join(archiveRoot, `${basename(skillDir)}-${timestamp(options.now)}`);
228
+ await mkdir(archiveRoot, { recursive: true });
229
+ await rename(skillDir, archivedPath);
230
+ const manifestPath = await writeReplacementManifest(options.manifestRoot ?? archivedPath, {
231
+ oldSkill: skill.name,
232
+ oldPath: skill.path,
233
+ newSkill: replacement?.newSkill,
234
+ newPath: replacement?.newPath,
235
+ action: "archive",
236
+ reason,
237
+ replacedAt: (options.now ?? new Date).toISOString(),
238
+ recoverable: true
239
+ });
240
+ clearSkillIndexCache();
241
+ return { archivedPath, manifestPath };
242
+ }
243
+ async function deleteSkill(skill, reason, replacement, options = {}) {
244
+ if (!options.allowHardDelete) {
245
+ throw new Error("Hard delete requires allowHardDelete=true");
246
+ }
247
+ const skillDir = dirname(skill.path);
248
+ const content = existsSync(skill.path) ? await readFile(skill.path, "utf8") : "";
249
+ const manifestRoot = options.manifestRoot ?? join(dirname(skillDir), ".tombstones");
250
+ const manifestPath = await writeReplacementManifest(manifestRoot, {
251
+ oldSkill: skill.name,
252
+ oldPath: skill.path,
253
+ newSkill: replacement?.newSkill,
254
+ newPath: replacement?.newPath,
255
+ action: "delete",
256
+ reason,
257
+ replacedAt: (options.now ?? new Date).toISOString(),
258
+ recoverable: false
259
+ });
260
+ const tombstonePath = join(manifestRoot, `${skill.name}-${timestamp(options.now)}.tombstone.json`);
261
+ await writeFile(tombstonePath, `${JSON.stringify({ deletedSkill: skill.name, oldPath: skill.path, content }, null, 2)}
262
+ `, "utf8");
263
+ await rm(skillDir, { recursive: true, force: true });
264
+ clearSkillIndexCache();
265
+ return { deletedPath: skill.path, manifestPath, tombstonePath };
266
+ }
267
+ async function writeReplacementManifest(directory, manifest) {
268
+ await mkdir(directory, { recursive: true });
269
+ const manifestPath = join(directory, "replacement-manifest.json");
270
+ await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}
271
+ `, "utf8");
272
+ return manifestPath;
273
+ }
274
+ async function writeMergePatch(skill, patch) {
275
+ const patchPath = join(dirname(skill.path), "learned-skill.patch.md");
276
+ await writeFile(patchPath, patch, "utf8");
277
+ clearSkillIndexCache();
278
+ return patchPath;
279
+ }
280
+ function buildMergePatch(draft) {
281
+ return [
282
+ "# Learned Skill Merge Patch",
283
+ "",
284
+ `Target learned skill: ${draft.name}`,
285
+ `Confidence: ${draft.confidence}`,
286
+ "",
287
+ "## Suggested additions",
288
+ "",
289
+ draft.content
290
+ ].join(`
291
+ `);
292
+ }
293
+ function shouldReplaceSkill(draft, target) {
294
+ if (target.status === "superseded" || target.status === "archived")
295
+ return true;
296
+ const confidenceGap = draft.confidence - (target.confidence ?? 0.5);
297
+ const contentGap = draft.content.length - target.content.length;
298
+ return confidenceGap >= 0.15 || contentGap > 160;
299
+ }
300
+ function isSafeToHardDelete(skill) {
301
+ return skill.safeToDelete === true && (skill.referencedBy?.length ?? 0) === 0 && skill.quality === "low";
302
+ }
303
+ function timestamp(date = new Date) {
304
+ return date.toISOString().replace(/[:.]/g, "-");
305
+ }
306
+ async function collectSkillFiles(root, results) {
307
+ const entries = await readdir(root, { withFileTypes: true });
308
+ for (const entry of entries) {
309
+ const full = join(root, entry.name);
310
+ if (entry.isDirectory()) {
311
+ if (entry.name === ".archive")
312
+ continue;
313
+ await collectSkillFiles(full, results);
314
+ continue;
315
+ }
316
+ if (entry.isFile() && entry.name === "SKILL.md") {
317
+ const content = await readFile(full, "utf8");
318
+ results.push({
319
+ name: parseFrontmatter(content, "name") ?? basename(dirname(full)),
320
+ description: parseFrontmatter(content, "description") ?? "",
321
+ path: full,
322
+ content
323
+ });
324
+ }
325
+ }
326
+ }
327
+ async function collectArtifactFiles(root, results) {
328
+ const entries = await readdir(root, { withFileTypes: true });
329
+ for (const entry of entries) {
330
+ const full = join(root, entry.name);
331
+ if (entry.isDirectory()) {
332
+ if (entry.name === ".archive")
333
+ continue;
334
+ await collectArtifactFiles(full, results);
335
+ continue;
336
+ }
337
+ if (entry.isFile() && entry.name.endsWith(".md")) {
338
+ const content = await readFile(full, "utf8");
339
+ results.push({
340
+ name: parseFrontmatter(content, "name") ?? entry.name.replace(/\.md$/, ""),
341
+ description: parseFrontmatter(content, "description") ?? "",
342
+ path: full,
343
+ content
344
+ });
345
+ }
346
+ }
347
+ }
348
+ function parseFrontmatter(content, key) {
349
+ const fmMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
350
+ if (!fmMatch)
351
+ return;
352
+ const match = fmMatch[1].match(new RegExp(`^${key}:\\s*"?([^"\\n]+)"?`, "m"));
353
+ return match?.[1]?.trim();
354
+ }
355
+ function isSkillLearningGenerated(skill) {
356
+ return parseFrontmatter(skill.content, "origin") === "skill-learning";
357
+ }
358
+ function terms(value) {
359
+ return new Set(value.toLowerCase().split(/[^a-z0-9]+/).filter((term) => term.length > 2));
360
+ }
361
+ function overlapScore(a, b) {
362
+ if (a.size === 0 || b.size === 0)
363
+ return 0;
364
+ let intersection = 0;
365
+ for (const term of a) {
366
+ if (b.has(term))
367
+ intersection++;
368
+ }
369
+ return intersection / Math.min(a.size, b.size);
370
+ }
371
+ function scoreArtifactOverlap(draft, existing) {
372
+ const draftTerms = terms(`${draft.name} ${draft.description} ${draft.content}`);
373
+ const existingTerms = terms(`${existing.name} ${existing.description} ${existing.content}`);
374
+ return overlapScore(draftTerms, existingTerms);
375
+ }
376
+ var init_skillLifecycle = __esm(() => {
377
+ init_localSearch();
378
+ init_skillGenerator();
379
+ });
380
+
381
+ // src/services/skillLearning/skillGenerator.ts
382
+ import { mkdir as mkdir2, readFile as readFile2, writeFile as writeFile2 } from "fs/promises";
383
+ import { join as join2 } from "path";
384
+ function generateSkillDraft(instincts, options) {
385
+ if (instincts.length === 0) {
386
+ throw new Error("Cannot generate a skill draft without instincts");
387
+ }
388
+ const scope = options?.scope ?? instincts[0]?.scope ?? "project";
389
+ const name = options?.name ? normalizeSkillName(options.name) : buildSkillName(instincts);
390
+ const confidence = instincts.reduce((sum, instinct) => sum + instinct.confidence, 0) / instincts.length;
391
+ const description = options?.description ?? buildDescription(instincts);
392
+ const outputPath = getLearnedSkillPath(name, scope, options);
393
+ const content = buildSkillContent({
394
+ name,
395
+ description,
396
+ confidence,
397
+ instincts
398
+ });
399
+ return {
400
+ name,
401
+ description,
402
+ scope,
403
+ sourceInstinctIds: instincts.map((instinct) => instinct.id),
404
+ confidence: Number(confidence.toFixed(2)),
405
+ content,
406
+ outputPath
407
+ };
408
+ }
409
+ async function generateOrMergeSkillDraft(instincts, options, existingRoots) {
410
+ const draft = generateSkillDraft(instincts, options);
411
+ const candidates = await compareExistingArtifacts("skill", draft, existingRoots);
412
+ for (const candidate of candidates) {
413
+ const overlap = scoreArtifactOverlap(draft, candidate);
414
+ if (overlap >= DUPLICATE_SKILL_OVERLAP_THRESHOLD) {
415
+ const appendedPath = await appendInstinctEvidenceToSkill(candidate, instincts);
416
+ return {
417
+ action: "append-evidence",
418
+ target: candidate,
419
+ overlap,
420
+ appendedPath
421
+ };
422
+ }
423
+ }
424
+ return { action: "create", draft };
425
+ }
426
+ async function appendInstinctEvidenceToSkill(target, instincts) {
427
+ const existing = await readFile2(target.path, "utf8").catch(() => target.content);
428
+ if (Buffer.byteLength(existing, "utf8") >= MAX_SKILL_FILE_BYTES) {
429
+ return target.path;
430
+ }
431
+ const allEvidence = instincts.flatMap((instinct) => instinct.evidence.map((evidence) => `- ${evidence}`));
432
+ const evidenceLines = allEvidence.slice(0, MAX_EVIDENCE_LINES_PER_APPEND);
433
+ if (evidenceLines.length < allEvidence.length) {
434
+ evidenceLines.push(`- [... ${allEvidence.length - evidenceLines.length} more evidence entries omitted]`);
435
+ }
436
+ const now = new Date().toISOString();
437
+ const block = [
438
+ "",
439
+ `## Learned evidence (${now})`,
440
+ "",
441
+ ...evidenceLines,
442
+ ""
443
+ ].join(`
444
+ `);
445
+ const merged = existing.endsWith(`
446
+ `) ? existing + block : `${existing}
447
+ ${block}`;
448
+ const finalContent = Buffer.byteLength(merged, "utf8") > MAX_SKILL_FILE_BYTES ? merged.slice(0, MAX_SKILL_FILE_BYTES) : merged;
449
+ await writeFile2(target.path, finalContent, "utf8");
450
+ clearSkillIndexCache();
451
+ return target.path;
452
+ }
453
+ async function writeLearnedSkill(draft) {
454
+ await mkdir2(draft.outputPath, { recursive: true });
455
+ const filePath = join2(draft.outputPath, "SKILL.md");
456
+ await writeFile2(filePath, draft.content, "utf8");
457
+ clearSkillIndexCache();
458
+ try {
459
+ const { clearCommandsCache } = await import("./chunk-9gt0g0qe.js");
460
+ clearCommandsCache();
461
+ } catch {}
462
+ return filePath;
463
+ }
464
+ function getLearnedSkillPath(name, scope, options) {
465
+ if (options?.outputRoot)
466
+ return join2(options.outputRoot, name);
467
+ if (scope === "project") {
468
+ return join2(options?.cwd ?? process.cwd(), ".claude", "skills", name);
469
+ }
470
+ return join2(options?.globalSkillsDir ?? join2(getClaudeConfigHomeDir(), "skills"), name);
471
+ }
472
+ function buildSkillName(instincts) {
473
+ return buildLearnedSkillName(instincts);
474
+ }
475
+ function buildDescription(instincts) {
476
+ const action = instincts[0]?.action ?? "Apply a learned project pattern";
477
+ const short = action.replace(/\s+/g, " ").slice(0, 120);
478
+ return short.length > 0 ? short : "Apply learned project patterns";
479
+ }
480
+ function buildSkillContent(params) {
481
+ const { name, description, confidence, instincts } = params;
482
+ const lines = [
483
+ "---",
484
+ `name: ${name}`,
485
+ `description: ${JSON.stringify(description)}`,
486
+ "origin: skill-learning",
487
+ `confidence: ${Number(confidence.toFixed(2))}`,
488
+ `evolved_from: [${instincts.map((instinct) => JSON.stringify(instinct.id)).join(", ")}]`,
489
+ "---",
490
+ "",
491
+ `# ${titleCase(name)}`,
492
+ "",
493
+ "## Trigger",
494
+ "",
495
+ instincts.map((instinct) => `- ${instinct.trigger}`).join(`
496
+ `),
497
+ "",
498
+ "## Action",
499
+ "",
500
+ instincts.map((instinct) => `- ${instinct.action}`).join(`
501
+ `),
502
+ "",
503
+ "## Evidence",
504
+ "",
505
+ instincts.flatMap((instinct) => instinct.evidence.map((evidence) => `- ${evidence}`)).slice(0, MAX_EVIDENCE_LINES_IN_SKILL).join(`
506
+ `),
507
+ ""
508
+ ];
509
+ return lines.join(`
510
+ `);
511
+ }
512
+ function titleCase(value) {
513
+ return value.split("-").filter(Boolean).map((part) => part[0]?.toUpperCase() + part.slice(1)).join(" ");
514
+ }
515
+ var DUPLICATE_SKILL_OVERLAP_THRESHOLD = 0.8, MAX_EVIDENCE_LINES_PER_APPEND = 20, MAX_EVIDENCE_LINES_IN_SKILL = 20, MAX_SKILL_FILE_BYTES = 50000;
516
+ var init_skillGenerator = __esm(() => {
517
+ init_envUtils();
518
+ init_localSearch();
519
+ init_learningPolicy();
520
+ init_skillLifecycle();
521
+ });
522
+
523
+ export { MIN_CONFIDENCE_TO_GENERATE_SKILL, MAX_SKILL_NAME_LENGTH, shouldGenerateSkillFromInstincts, buildLearnedSkillName, normalizeSkillName, isValidLearnedSkillName, isGenericSkillName, decideDefaultScope, init_learningPolicy, DUPLICATE_SKILL_OVERLAP_THRESHOLD, generateSkillDraft, generateOrMergeSkillDraft, appendInstinctEvidenceToSkill, writeLearnedSkill, getLearnedSkillPath, init_skillGenerator, compareExistingArtifacts, compareExistingSkills, loadExistingArtifacts, decideSkillLifecycle, applySkillLifecycleDecision, loadExistingSkills, archiveSkill, deleteSkill, writeReplacementManifest, scoreArtifactOverlap, init_skillLifecycle };