@iowarp/clio-coder 0.4.9 → 0.5.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 (1172) hide show
  1. package/.claude-plugin/marketplace.json +11 -3
  2. package/CHANGELOG.md +153 -0
  3. package/CODE_OF_CONDUCT.md +10 -0
  4. package/CONTRIBUTING.md +208 -382
  5. package/NOTICE +8 -2
  6. package/README.md +199 -418
  7. package/ROADMAP.md +82 -0
  8. package/SECURITY.md +14 -11
  9. package/dist/acp-KS7ARGV6.js +132 -0
  10. package/dist/agents-YOGJ2YEJ.js +163 -0
  11. package/dist/assets/codewiki.json +1 -1
  12. package/dist/auth-CEDCO6O6.js +557 -0
  13. package/dist/background-YWTBPSQU.js +39 -0
  14. package/dist/builtins-GDYO4RTR.js +23 -0
  15. package/dist/chunk-27YTM2CV.js +175 -0
  16. package/dist/chunk-2AF6YC7Q.js +75 -0
  17. package/dist/chunk-2DTIWSAW.js +381 -0
  18. package/dist/chunk-2EMLKSCX.js +262 -0
  19. package/dist/chunk-2OJ3YZQP.js +665 -0
  20. package/dist/chunk-2VLYHHFT.js +35 -0
  21. package/dist/chunk-2WVPJF3Z.js +204 -0
  22. package/dist/chunk-33OASOS6.js +176 -0
  23. package/dist/chunk-3BD2LXYJ.js +19 -0
  24. package/dist/chunk-3JHUFKG7.js +30 -0
  25. package/dist/chunk-3JLTRPN7.js +711 -0
  26. package/dist/chunk-3LT34CAM.js +2796 -0
  27. package/dist/chunk-3O5JWP4L.js +1670 -0
  28. package/dist/chunk-3UW3KU4A.js +21 -0
  29. package/dist/chunk-4A6YRGV4.js +569 -0
  30. package/dist/chunk-4D2BRCZ3.js +67 -0
  31. package/dist/chunk-4SYHGVDE.js +668 -0
  32. package/dist/chunk-4VDHLCF5.js +66 -0
  33. package/dist/chunk-4WOOTKFD.js +637 -0
  34. package/dist/chunk-4WV4PI66.js +80 -0
  35. package/dist/chunk-53OXPRI6.js +195 -0
  36. package/dist/chunk-55RMDDFM.js +1347 -0
  37. package/dist/chunk-56XP4FJU.js +2025 -0
  38. package/dist/chunk-5B3RTYAK.js +123 -0
  39. package/dist/chunk-5CD243WE.js +45 -0
  40. package/dist/chunk-5JQR5B4D.js +709 -0
  41. package/dist/chunk-5KQEUIWM.js +597 -0
  42. package/dist/chunk-5LP5FNNR.js +915 -0
  43. package/dist/chunk-62UK7AGW.js +9344 -0
  44. package/dist/chunk-6CTHLZFB.js +563 -0
  45. package/dist/chunk-6EJYVCTN.js +23 -0
  46. package/dist/chunk-6OWUM2NC.js +12289 -0
  47. package/dist/chunk-6RJMYYIE.js +1023 -0
  48. package/dist/chunk-6W75D37F.js +643 -0
  49. package/dist/chunk-733ZBT5P.js +1721 -0
  50. package/dist/chunk-77DCC6JZ.js +3710 -0
  51. package/dist/chunk-7QXCO3AF.js +156 -0
  52. package/dist/chunk-7RET77VB.js +481 -0
  53. package/dist/chunk-A4MVRV4C.js +65 -0
  54. package/dist/chunk-ALJWT6O6.js +93 -0
  55. package/dist/chunk-AVSR2HKI.js +232 -0
  56. package/dist/chunk-B7GY6QER.js +42 -0
  57. package/dist/chunk-BFOSV5EZ.js +178 -0
  58. package/dist/chunk-BGOIM7NB.js +103 -0
  59. package/dist/chunk-BJH6WFIB.js +372 -0
  60. package/dist/chunk-BOBCCDJ6.js +1533 -0
  61. package/dist/chunk-BRCOSE7O.js +117 -0
  62. package/dist/chunk-BYFHHCFV.js +601 -0
  63. package/dist/chunk-C2CPOIH2.js +83 -0
  64. package/dist/chunk-C7AQTPCE.js +694 -0
  65. package/dist/chunk-CBAQPTDU.js +165 -0
  66. package/dist/chunk-CDQ2UC6W.js +125 -0
  67. package/dist/chunk-CN6SW5DC.js +177 -0
  68. package/dist/chunk-CRHPCPZP.js +132 -0
  69. package/dist/chunk-CTFPFW3H.js +44 -0
  70. package/dist/chunk-D3KWFOUT.js +103 -0
  71. package/dist/chunk-D65E25JG.js +185 -0
  72. package/dist/chunk-DCGHJQ2U.js +236 -0
  73. package/dist/chunk-DE2LU267.js +106 -0
  74. package/dist/chunk-DF6PI6GN.js +97 -0
  75. package/dist/chunk-DGC6X6XR.js +53 -0
  76. package/dist/chunk-DOUISWEE.js +526 -0
  77. package/dist/chunk-DR3TAEUA.js +188 -0
  78. package/dist/chunk-DVTBERFY.js +33 -0
  79. package/dist/chunk-DXSETN72.js +1051 -0
  80. package/dist/chunk-DZLR4UEH.js +128 -0
  81. package/dist/chunk-E6IPKW2E.js +77 -0
  82. package/dist/chunk-EG4ARXPC.js +139 -0
  83. package/dist/chunk-EKV4UBCM.js +652 -0
  84. package/dist/chunk-EOJPDNUP.js +1325 -0
  85. package/dist/chunk-EX57VVWW.js +4157 -0
  86. package/dist/chunk-EYTLV3W3.js +5937 -0
  87. package/dist/chunk-EZD2BXGP.js +475 -0
  88. package/dist/chunk-EZDCA34W.js +314 -0
  89. package/dist/chunk-FD2I4KBR.js +33 -0
  90. package/dist/chunk-FD3IAHQM.js +27 -0
  91. package/dist/chunk-FFYTC2KQ.js +416 -0
  92. package/dist/chunk-FGSQHUCK.js +110 -0
  93. package/dist/chunk-GCQFN7YI.js +32 -0
  94. package/dist/chunk-GGPF6LLE.js +38 -0
  95. package/dist/chunk-GGWI3OVM.js +215 -0
  96. package/dist/chunk-GLIQT7SU.js +172 -0
  97. package/dist/chunk-GN7QBEEI.js +95 -0
  98. package/dist/chunk-GRHOXDKB.js +1104 -0
  99. package/dist/chunk-HMN2C6YL.js +54 -0
  100. package/dist/chunk-HOEDA42N.js +310 -0
  101. package/dist/chunk-HOYZUKG7.js +192 -0
  102. package/dist/chunk-HQVN7G4F.js +1021 -0
  103. package/dist/chunk-HSQQFDB3.js +519 -0
  104. package/dist/chunk-I4ELN5BX.js +47 -0
  105. package/dist/chunk-I4Y4WKZR.js +386 -0
  106. package/dist/chunk-IFPDAD7R.js +797 -0
  107. package/dist/chunk-IN7DGBVS.js +582 -0
  108. package/dist/chunk-ISHUS7HC.js +396 -0
  109. package/dist/chunk-JPXLJSGR.js +191 -0
  110. package/dist/chunk-JQCLXSFI.js +69 -0
  111. package/dist/chunk-KBUTSJSR.js +61 -0
  112. package/dist/chunk-KW5HXKLJ.js +56 -0
  113. package/dist/chunk-L4APUGCT.js +139 -0
  114. package/dist/chunk-L7G7K4I2.js +505 -0
  115. package/dist/chunk-LAR7DX5E.js +1840 -0
  116. package/dist/chunk-LAVUQX3B.js +462 -0
  117. package/dist/chunk-LJRBX7QR.js +116 -0
  118. package/dist/chunk-LNOXCGN2.js +1864 -0
  119. package/dist/chunk-LTWH2ACR.js +23002 -0
  120. package/dist/chunk-LYJJ6546.js +661 -0
  121. package/dist/chunk-M2IPMWCN.js +457 -0
  122. package/dist/chunk-MGLRTOCK.js +101 -0
  123. package/dist/chunk-MZF5IKZT.js +160 -0
  124. package/dist/chunk-N24R6KWS.js +386 -0
  125. package/dist/chunk-NASYVWDB.js +604 -0
  126. package/dist/chunk-NBXFPI7U.js +195 -0
  127. package/dist/chunk-NDPF2N2L.js +400 -0
  128. package/dist/chunk-NFSK2VNU.js +446 -0
  129. package/dist/chunk-NG3QQSXY.js +43 -0
  130. package/dist/chunk-NOCSM22Y.js +63 -0
  131. package/dist/chunk-NVPXXW2H.js +1143 -0
  132. package/dist/chunk-O63U2I6I.js +30 -0
  133. package/dist/chunk-OJXOA6YU.js +98 -0
  134. package/dist/chunk-OPD7GL6F.js +1196 -0
  135. package/dist/chunk-OQ2EOAHA.js +14399 -0
  136. package/dist/chunk-OV62D6KO.js +688 -0
  137. package/dist/chunk-OZ76TLGU.js +740 -0
  138. package/dist/chunk-P4GNZPXO.js +1156 -0
  139. package/dist/chunk-PS6JAWJZ.js +78 -0
  140. package/dist/chunk-PXRCXGLK.js +1865 -0
  141. package/dist/chunk-QDUUOZ3S.js +108 -0
  142. package/dist/chunk-QG6I2T5E.js +1416 -0
  143. package/dist/chunk-QHSBROEW.js +308 -0
  144. package/dist/chunk-QNUQ7K7D.js +46 -0
  145. package/dist/chunk-QZTTRSJE.js +333 -0
  146. package/dist/chunk-R2UUNSNQ.js +1605 -0
  147. package/dist/chunk-R7FGRZNF.js +1794 -0
  148. package/dist/chunk-RNDCROSG.js +199 -0
  149. package/dist/chunk-S36CXHO2.js +302 -0
  150. package/dist/chunk-SJGS3GDI.js +575 -0
  151. package/dist/chunk-SQZHXUB3.js +510 -0
  152. package/dist/chunk-SUTLW6ND.js +686 -0
  153. package/dist/chunk-SYF7FVBL.js +179 -0
  154. package/dist/chunk-T2MDZES3.js +1577 -0
  155. package/dist/chunk-T33IYTZM.js +1146 -0
  156. package/dist/chunk-TDGYTWM6.js +49 -0
  157. package/dist/chunk-TGL5FZVD.js +132 -0
  158. package/dist/chunk-TGWZXJ7L.js +1205 -0
  159. package/dist/chunk-TKDRT2DF.js +114 -0
  160. package/dist/chunk-TV2EBCSQ.js +152 -0
  161. package/dist/chunk-U26XXPJS.js +367 -0
  162. package/dist/chunk-U5QU5ZOD.js +419 -0
  163. package/dist/chunk-U6YTUVOX.js +1011 -0
  164. package/dist/chunk-UCINIRHW.js +188 -0
  165. package/dist/chunk-UJD5MPP6.js +52 -0
  166. package/dist/chunk-URCXX7WJ.js +146 -0
  167. package/dist/chunk-UX2L5CUD.js +898 -0
  168. package/dist/chunk-UZVYEF57.js +114 -0
  169. package/dist/chunk-V35KZDUZ.js +218 -0
  170. package/dist/chunk-VESL6DQY.js +1058 -0
  171. package/dist/chunk-VKHLUZNO.js +986 -0
  172. package/dist/chunk-VOYUCAQF.js +584 -0
  173. package/dist/chunk-VYRQHORQ.js +414 -0
  174. package/dist/chunk-W53XSRQE.js +245 -0
  175. package/dist/chunk-X4CEFOSG.js +226 -0
  176. package/dist/chunk-XDHUDE5K.js +380 -0
  177. package/dist/chunk-XISLDHEL.js +1290 -0
  178. package/dist/chunk-XM34YQ2Y.js +169 -0
  179. package/dist/chunk-XMDBTYCH.js +661 -0
  180. package/dist/chunk-XS2QPZJE.js +449 -0
  181. package/dist/chunk-YBUECLAF.js +618 -0
  182. package/dist/chunk-YQ6XEFVK.js +332 -0
  183. package/dist/chunk-YYLCPDCC.js +990 -0
  184. package/dist/chunk-Z4GLJ6J4.js +1035 -0
  185. package/dist/chunk-ZARZ4POR.js +210 -0
  186. package/dist/chunk-ZJPORZTC.js +119 -0
  187. package/dist/chunk-ZNUZ3EXD.js +243 -0
  188. package/dist/chunk-ZPST2KQO.js +49 -0
  189. package/dist/chunk-ZR5YA6ZF.js +512 -0
  190. package/dist/chunk-ZU4JPCPR.js +319 -0
  191. package/dist/chunk-ZUKUCZYZ.js +39 -0
  192. package/dist/cli/index.js +56 -45
  193. package/dist/clio-K2PBVCEM.js +27 -0
  194. package/dist/clio-context-tools-GR4OHFSO.js +145 -0
  195. package/dist/code-nav-4X3OI6DK.js +715 -0
  196. package/dist/codewiki/build-worker.js +4 -4
  197. package/dist/compile-cache-YRB6QRO7.js +18 -0
  198. package/dist/components-RQOJ6NUR.js +675 -0
  199. package/dist/config-Q5J7UBAB.js +291 -0
  200. package/dist/config-XE7XYZLU.js +38 -0
  201. package/dist/config-graph-P3555574.js +175 -0
  202. package/dist/configure-KIJ32ZO6.js +104 -0
  203. package/dist/context-LFBQOSXT.js +344 -0
  204. package/dist/context-NNLBES2Y.js +82 -0
  205. package/dist/context-WBH3KSVR.js +302 -0
  206. package/dist/context-clear-YOHMQ6SQ.js +208 -0
  207. package/dist/context-index-X2N5UAIF.js +120 -0
  208. package/dist/context-map-HOSMGUG2.js +555 -0
  209. package/dist/context-working-set-MRAEVDNV.js +1564 -0
  210. package/dist/data-tool-JJPBGMQJ.js +2986 -0
  211. package/dist/detail-RHJOTGN4.js +139 -0
  212. package/dist/dispatch-runner-NC7PYNIO.js +2477 -0
  213. package/dist/docs-K4GBWRUX.js +342 -0
  214. package/dist/doctor-S5KZ2GTN.js +1138 -0
  215. package/dist/doctor-deep-2EJQSHIZ.js +130 -0
  216. package/dist/domain-loader-MB34FDPD.js +13 -0
  217. package/dist/eval-3D6M36N7.js +5220 -0
  218. package/dist/eval-inventory-SM3HNM47.js +260 -0
  219. package/dist/evals-FO6JEUCN.js +104 -0
  220. package/dist/evidence-6IYN52ET.js +262 -0
  221. package/dist/evidence-JVECPI3F.js +250 -0
  222. package/dist/evidence-XNVPPLVK.js +410 -0
  223. package/dist/evolve-TLPUDJDM.js +634 -0
  224. package/dist/extensions-ROZJ5X3J.js +311 -0
  225. package/dist/fleet-6RJWIOEO.js +284 -0
  226. package/dist/fleet-WKVBF5SZ.js +942 -0
  227. package/dist/fleet-commands-L6WFT7KZ.js +76 -0
  228. package/dist/fleet-decisions-BTQMWU5A.js +55 -0
  229. package/dist/fleet-graph-553DZ67Q.js +141 -0
  230. package/dist/fleet-inspect-236FZPRB.js +329 -0
  231. package/dist/fleet-new-CKUXP3CO.js +48 -0
  232. package/dist/fleet-preflight-NZQHABWO.js +95 -0
  233. package/dist/fleet-validate-7NLAE26R.js +96 -0
  234. package/dist/fleet-verify-E3RO6A5W.js +226 -0
  235. package/dist/fleet-view-KMZQY7YJ.js +144 -0
  236. package/dist/gui/client/assets/abnfDiagram-VCTEODGH-DPBWQwNn.js +1 -0
  237. package/dist/gui/client/assets/architecture-7GRP2DOG-D1w8FrFW.js +1 -0
  238. package/dist/gui/client/assets/architectureDiagram-5GKGNRK7-CVPgKd1-.js +36 -0
  239. package/dist/gui/client/assets/blockDiagram-I7D4REHJ-BLmnqkK5.js +129 -0
  240. package/dist/gui/client/assets/c4Diagram-7LVT6UL2-4AU9cfM7.js +38 -0
  241. package/dist/gui/client/assets/channel-DwFZ0m8S.js +1 -0
  242. package/dist/gui/client/assets/chunk-4HAMMTFA-EOWkKCav.js +62 -0
  243. package/dist/gui/client/assets/chunk-75Z2AOVW-CygeoIMl.js +2 -0
  244. package/dist/gui/client/assets/chunk-DU6HZSFF-s27fViLb.js +125 -0
  245. package/dist/gui/client/assets/chunk-F27PBJKO-BrHvwLsZ.js +1 -0
  246. package/dist/gui/client/assets/chunk-GMAD6QVW-DzPh-7jt.js +72 -0
  247. package/dist/gui/client/assets/chunk-GVQU2GXP-pIaQkIzm.js +1 -0
  248. package/dist/gui/client/assets/chunk-IMKFNOWR-BGJVE_Br.js +231 -0
  249. package/dist/gui/client/assets/chunk-L3NEJ4N5-B3YLuhww.js +1 -0
  250. package/dist/gui/client/assets/chunk-OSK3NFVY-BRj61HHU.js +10 -0
  251. package/dist/gui/client/assets/chunk-P2QGCYS3-Sno90KxP.js +1 -0
  252. package/dist/gui/client/assets/chunk-POPQ4Y6H-Cw8NTbxr.js +1 -0
  253. package/dist/gui/client/assets/chunk-PWAF6VOD-BIhHgz37.js +1 -0
  254. package/dist/gui/client/assets/chunk-SHT3W25Y-Cqv7npBj.js +168 -0
  255. package/dist/gui/client/assets/chunk-SVP7TREG-Hxzl6Dee.js +88 -0
  256. package/dist/gui/client/assets/chunk-TICWLB2K-CIFVyVP2.js +206 -0
  257. package/dist/gui/client/assets/classDiagram-ZZMXUADV-BJbAiI_w.js +1 -0
  258. package/dist/gui/client/assets/classDiagram-v2-VYDZK3BY-BJbAiI_w.js +1 -0
  259. package/dist/gui/client/assets/cynefin-OW5HDTMX-DecLWZ-y.js +1 -0
  260. package/dist/gui/client/assets/cynefinDiagram-5FMLGOSQ-CK-T2N-D.js +62 -0
  261. package/dist/gui/client/assets/dagre-GXQ25YYZ-C0dfg-OS.js +4 -0
  262. package/dist/gui/client/assets/diagram-S7CK7UJ4-EaJukVh-.js +30 -0
  263. package/dist/gui/client/assets/diagram-UQ7AKVKN-xcOucEtP.js +41 -0
  264. package/dist/gui/client/assets/diagram-VSXAHHWV-3AUJACMf.js +3 -0
  265. package/dist/gui/client/assets/diagram-VX7I27RA-TPknLqam.js +24 -0
  266. package/dist/gui/client/assets/diagram-Z3DM3KII-wa1q3YMF.js +24 -0
  267. package/dist/gui/client/assets/ebnfDiagram-PWID7BFC-JBCF2-s7.js +1 -0
  268. package/dist/gui/client/assets/erDiagram-RLTQ6QDP-CmXjXPc4.js +99 -0
  269. package/dist/gui/client/assets/eventmodeling-NTZA5JFV-D_1aJWYl.js +1 -0
  270. package/dist/gui/client/assets/flowDiagram-HODETNUW-BQtZlael.js +1 -0
  271. package/dist/gui/client/assets/framework-Bq-znqwW.js +9 -0
  272. package/dist/gui/client/assets/ganttDiagram-EL5Y4UJY-IPaL_kaa.js +292 -0
  273. package/dist/gui/client/assets/gitGraph-4MIJSDKK-Oy0Q3hoc.js +1 -0
  274. package/dist/gui/client/assets/gitGraphDiagram-WWUBYQGX-jtAuBmbc.js +106 -0
  275. package/dist/gui/client/assets/index-CuFuBEdL.css +1 -0
  276. package/dist/gui/client/assets/index-hMbEIsX0.js +87 -0
  277. package/dist/gui/client/assets/info-A6RAGUB7-UtEs1tv7.js +1 -0
  278. package/dist/gui/client/assets/infoDiagram-27XIBGKW-hlwR1pBW.js +2 -0
  279. package/dist/gui/client/assets/ishikawaDiagram-5VMMS53U-C6vMtfsd.js +70 -0
  280. package/dist/gui/client/assets/journeyDiagram-3NMN7TZE-EAwAl_PS.js +139 -0
  281. package/dist/gui/client/assets/kanban-definition-UXKFOSKX-CQOhRKHW.js +89 -0
  282. package/dist/gui/client/assets/line-DbcwGZTW.js +1 -0
  283. package/dist/gui/client/assets/mermaid-parser.core-C2QfVcHd.js +7 -0
  284. package/dist/gui/client/assets/mermaid.core-N9qUTre1.js +44 -0
  285. package/dist/gui/client/assets/mindmap-definition-YA3MSWOX-BR_FL9gK.js +96 -0
  286. package/dist/gui/client/assets/packet-AYTQ26CC-CbBJ2oAa.js +1 -0
  287. package/dist/gui/client/assets/pegDiagram-XKGWAZYB-BruU0IHM.js +1 -0
  288. package/dist/gui/client/assets/pie-WAS4IAKB-BWdSng4H.js +1 -0
  289. package/dist/gui/client/assets/pieDiagram-E7YTZNPT-CR3ljgdU.js +39 -0
  290. package/dist/gui/client/assets/quadrantDiagram-AXDQQJYC-C-boKslr.js +7 -0
  291. package/dist/gui/client/assets/radar-RG4KPBEZ-CGlOnAKG.js +1 -0
  292. package/dist/gui/client/assets/railroad-74A4TZTK-CDvuAlyC.js +1 -0
  293. package/dist/gui/client/assets/railroad-abnf-HS5TGJTU-CQUA9crC.js +1 -0
  294. package/dist/gui/client/assets/railroad-ebnf-LZEXJU2U-CD857gxq.js +1 -0
  295. package/dist/gui/client/assets/railroad-peg-WCYAUIDC-DUV4k35E.js +1 -0
  296. package/dist/gui/client/assets/railroadDiagram-O6MQD6OU-DMR4LXmA.js +1 -0
  297. package/dist/gui/client/assets/requirementDiagram-BXWQKSXE-DVltaF6c.js +84 -0
  298. package/dist/gui/client/assets/sankeyDiagram-P5KCCOFB-CHdNz472.js +40 -0
  299. package/dist/gui/client/assets/sequenceDiagram-WJ2MYXX4-DaMafIty.js +162 -0
  300. package/dist/gui/client/assets/stateDiagram-D77RDMKH-CEbBHqn3.js +1 -0
  301. package/dist/gui/client/assets/stateDiagram-v2-MP3YSRHH-B3JgDdFg.js +1 -0
  302. package/dist/gui/client/assets/swimlanes-42K2YHIH-BlPHndnJ.js +1 -0
  303. package/dist/gui/client/assets/swimlanesDiagram-VR7AAH4N-BPabHwsZ.js +8 -0
  304. package/dist/gui/client/assets/timeline-definition-24CTP7MA-E4Y1lPBI.js +120 -0
  305. package/dist/gui/client/assets/treeView-Q6P3EWNA-DrY0uhTN.js +1 -0
  306. package/dist/gui/client/assets/treemap-WGGIJYW6-CVotnLHf.js +1 -0
  307. package/dist/gui/client/assets/vennDiagram-4TSXK5OY-DJNrLIOF.js +34 -0
  308. package/dist/gui/client/assets/wardley-WFR3VGLG-ClOpAp5S.js +1 -0
  309. package/dist/gui/client/assets/wardleyDiagram-VM6X3IG4-qhMoKOXc.js +78 -0
  310. package/dist/gui/client/assets/xychartDiagram-S5SC5T6Z-CTuXoo9R.js +7 -0
  311. package/dist/gui/client/index.html +6 -0
  312. package/dist/gui/ops-worker.js +167 -0
  313. package/dist/gui/reads-worker.js +473 -0
  314. package/dist/gui/server.js +9780 -0
  315. package/dist/gui-QJS7XQMV.js +16 -0
  316. package/dist/init-DV5B6HQG.js +354 -0
  317. package/dist/install-6C45YXFP.js +19 -0
  318. package/dist/install-O7NSRU2W.js +13 -0
  319. package/dist/interactive-OXGYZYAS.js +22381 -0
  320. package/dist/interop-J7UOBOSF.js +254 -0
  321. package/dist/inventory-OEGIL6PY.js +144 -0
  322. package/dist/library-B3UPGY4V.js +83 -0
  323. package/dist/library-MXQA5DLT.js +309 -0
  324. package/dist/library-ROZAMUIL.js +496 -0
  325. package/dist/library-import-2LTWOVBD.js +190 -0
  326. package/dist/library-inventory-LJ3XHLWO.js +60 -0
  327. package/dist/library-validation-DARHHUNW.js +46 -0
  328. package/dist/mcp-2GSPYQ54.js +28 -0
  329. package/dist/memory-J3STUUIK.js +537 -0
  330. package/dist/models-Y3GMFJ2V.js +314 -0
  331. package/dist/monitor-LHNH577J.js +811 -0
  332. package/dist/orchestrator-DTAPXULA.js +12117 -0
  333. package/dist/panes-A743ONZ5.js +103 -0
  334. package/dist/panes-CTNO57ZY.js +76 -0
  335. package/dist/paths-3SBYJQDP.js +68 -0
  336. package/dist/preload-OJBMAIXF.js +140 -0
  337. package/dist/providers-CMETPZNS.js +232 -0
  338. package/dist/registry-37T4U6X2.js +15 -0
  339. package/dist/reset-O7EUCYWO.js +346 -0
  340. package/dist/resources-FY6XYFN2.js +189 -0
  341. package/dist/run-H64MEVTA.js +1067 -0
  342. package/dist/run-script-PQ5NRU3X.js +42 -0
  343. package/dist/settings-SNIQNXCW.js +73 -0
  344. package/dist/settings-controls-X6GMCPVG.js +202 -0
  345. package/dist/share-CAFMMQLM.js +299 -0
  346. package/dist/skills-ERKQUC7L.js +114 -0
  347. package/dist/skills-eval-CQ23MYQK.js +1099 -0
  348. package/dist/skills-inventory-TVUYJDVN.js +142 -0
  349. package/dist/slash-commands-ROG3KIFJ.js +107 -0
  350. package/dist/startup-background-KDWCQMWT.js +247 -0
  351. package/dist/steer-KKYXJSH4.js +77 -0
  352. package/dist/support-M3RCUUEL.js +40 -0
  353. package/dist/system-ZDW44ZGX.js +142 -0
  354. package/dist/target-runtimes-PWA22WVW.js +73 -0
  355. package/dist/targets-AJWA6E7Z.js +1207 -0
  356. package/dist/tasks-6L2JJRC5.js +39 -0
  357. package/dist/terminal-lease-YFUSDPAD.js +432 -0
  358. package/dist/tools-5XJUABRD.js +30 -0
  359. package/dist/trace-LA5MVR4Y.js +527 -0
  360. package/dist/tree-sitter-TQW3Y52T.js +4673 -0
  361. package/dist/tui-primitives-IUCVWLH5.js +19 -0
  362. package/dist/uninstall-SAWGGXAB.js +448 -0
  363. package/dist/upgrade-HSNSVTZG.js +300 -0
  364. package/dist/usage-XSILDHKF.js +1083 -0
  365. package/dist/verifiers-ECA5GIHL.js +633 -0
  366. package/dist/verify-R6QQCCEB.js +31 -0
  367. package/dist/version-PLZYB5KW.js +22 -0
  368. package/dist/web-fetch-PVZNMBOB.js +803 -0
  369. package/dist/wiki-generate-RP22WP5K.js +647 -0
  370. package/dist/with-panes-W3PAZPRF.js +629 -0
  371. package/dist/worker/entry.js +324 -284
  372. package/dist/workspace-check-3764ZKC2.js +83 -0
  373. package/docs/README.md +26 -10
  374. package/docs/architecture/acp.md +179 -12
  375. package/docs/architecture/artifact-placement.md +1 -1
  376. package/docs/architecture/capacity-and-scheduling.md +7 -8
  377. package/docs/architecture/context-engine.md +350 -95
  378. package/docs/architecture/model-catalog.md +18 -11
  379. package/docs/architecture/observability.md +1 -1
  380. package/docs/architecture/pi-boundary.md +59 -6
  381. package/docs/architecture/prompt-envelope-and-tools.md +147 -39
  382. package/docs/architecture/provider-adapter-cookbook.md +2 -2
  383. package/docs/architecture/safety-model.md +18 -4
  384. package/docs/architecture/trace-store.md +2 -2
  385. package/docs/architecture/tui-design.md +41 -81
  386. package/docs/architecture/worker-dispatch-mechanics.md +9 -1
  387. package/docs/gui/README.md +69 -0
  388. package/docs/gui/boundary-doctrine.md +104 -0
  389. package/docs/gui/chat-rendering-spec.md +1440 -0
  390. package/docs/gui/cli-surface-routing.md +148 -0
  391. package/docs/gui/delivery-order.md +53 -0
  392. package/docs/gui/event-bus-coverage.md +103 -0
  393. package/docs/gui/inspector-presentation.md +71 -0
  394. package/docs/gui/parity/01-cli-surface.md +74 -0
  395. package/docs/gui/parity/02-slash-and-surfaces.md +110 -0
  396. package/docs/gui/parity/03-domains-and-plan.md +69 -0
  397. package/docs/gui/performance-baseline.md +76 -0
  398. package/docs/gui/settings-write-surface.md +267 -0
  399. package/docs/gui/workflow-coverage.md +64 -0
  400. package/docs/guide/built-in-agents.md +1 -1
  401. package/docs/guide/commands-and-modes.md +256 -99
  402. package/docs/guide/configuration-and-targets.md +485 -124
  403. package/docs/guide/configuration-reference.md +165 -82
  404. package/docs/guide/doctor.md +127 -0
  405. package/docs/guide/environment-variables.md +1 -1
  406. package/docs/guide/exit-codes-and-output.md +3 -1
  407. package/docs/guide/extensions-and-sharing.md +3 -14
  408. package/docs/guide/fleet-dispatch.md +231 -45
  409. package/docs/guide/glossary.md +1 -1
  410. package/docs/guide/installation-and-lifecycle.md +27 -16
  411. package/docs/guide/interop.md +2 -2
  412. package/docs/guide/proactive-memory.md +154 -68
  413. package/docs/guide/resource-library.md +4 -0
  414. package/docs/guide/skills-marketplace.md +8 -4
  415. package/docs/guide/slurm.md +88 -0
  416. package/docs/guide/tool-usage.md +134 -11
  417. package/docs/guide/troubleshooting.md +4 -2
  418. package/docs/process/battletest-2026-09-20-fixes.md +161 -0
  419. package/docs/process/configure-tree-proposal.md +637 -0
  420. package/docs/process/documentation-coverage.md +8 -0
  421. package/docs/process/documentation-guide.md +18 -1
  422. package/docs/process/eval-runner.md +58 -14
  423. package/docs/process/performance-methodology.md +11 -3
  424. package/docs/process/release-cut-checklist.md +29 -3
  425. package/docs/process/tool-audit-v0.4.9.md +3 -0
  426. package/examples/extensions/README.md +1 -3
  427. package/examples/extensions/lab-status/clio-coder-extension.json +1 -1
  428. package/examples/extensions/measurements/clio-coder-extension.json +1 -1
  429. package/library/registry.yaml +30 -5
  430. package/library/skills/git/fix-issue/SKILL.md +2 -1
  431. package/library/skills/git/fix-issue/plugin.json +1 -1
  432. package/library/skills/git/ship/SKILL.md +2 -1
  433. package/library/skills/git/ship/plugin.json +1 -1
  434. package/library/skills/meta/clio-coder-test/SKILL.md +5 -6
  435. package/library/skills/meta/clio-coder-test/evals.md +2 -2
  436. package/library/skills/meta/clio-coder-test/references/test-map.md +2 -2
  437. package/library/skills/registry.yaml +9 -5
  438. package/library/skills/research/slurm-jobs/SKILL.md +110 -0
  439. package/library/skills/research/slurm-jobs/evals.md +39 -0
  440. package/library/skills/research/slurm-jobs/plugin.json +23 -0
  441. package/library/skills/skill-marketplace.json +18 -2
  442. package/package.json +15 -10
  443. package/src/cli/args.ts +59 -0
  444. package/src/cli/argv.ts +7 -0
  445. package/src/cli/clio.ts +9 -1
  446. package/src/cli/configure-controls.ts +136 -0
  447. package/src/cli/configure-onboarding.ts +24 -7
  448. package/src/cli/configure-quick.ts +32 -7
  449. package/src/cli/configure-target.ts +11 -1
  450. package/src/cli/configure.ts +253 -256
  451. package/src/cli/docs-server.ts +290 -0
  452. package/src/cli/docs.ts +60 -15
  453. package/src/cli/doctor-deep.ts +126 -0
  454. package/src/cli/doctor-hpc.ts +122 -0
  455. package/src/cli/doctor-slurm.ts +130 -0
  456. package/src/cli/doctor-task-worktrees.ts +88 -0
  457. package/src/cli/doctor.ts +165 -16
  458. package/src/cli/fleet-verify.ts +3 -2
  459. package/src/cli/gui.ts +111 -0
  460. package/src/cli/index.ts +14 -4
  461. package/src/cli/library.ts +2 -7
  462. package/src/cli/modes/json-stream.ts +4 -2
  463. package/src/cli/modes/print.ts +252 -25
  464. package/src/cli/run.ts +199 -71
  465. package/src/cli/skills.ts +25 -7
  466. package/src/cli/targets.ts +87 -9
  467. package/src/cli/uninstall.ts +28 -8
  468. package/src/cli/usage.ts +2 -1
  469. package/src/cli/workspace-check.ts +71 -0
  470. package/src/core/bash-exec.ts +8 -2
  471. package/src/core/bus-events.ts +32 -3
  472. package/src/core/cache-telemetry.ts +3 -2
  473. package/src/core/compile-cache.ts +11 -1
  474. package/src/core/config.ts +59 -6
  475. package/src/core/defaults.ts +27 -5
  476. package/src/core/diagnostics.ts +25 -0
  477. package/src/core/event-bus.ts +2 -1
  478. package/src/core/gateway-routing.ts +10 -3
  479. package/src/core/git-commit-attribution.ts +2 -1
  480. package/src/core/naming-compat.ts +6 -4
  481. package/src/core/package-root.ts +0 -9
  482. package/src/core/path-canonical.ts +143 -24
  483. package/src/core/residency-target-key.ts +2 -6
  484. package/src/core/run-overrides.ts +1 -1
  485. package/src/core/settings-awareness.ts +108 -0
  486. package/src/core/settings-controls.ts +673 -0
  487. package/src/core/settings-navigation.ts +116 -0
  488. package/src/core/theme-token-hex.ts +19 -9
  489. package/src/core/turn-constraints.ts +52 -0
  490. package/src/domains/agents/builtins/scout.md +7 -17
  491. package/src/domains/agents/catalog.ts +5 -1
  492. package/src/domains/agents/extension.ts +2 -1
  493. package/src/domains/agents/registry.ts +4 -3
  494. package/src/domains/agents/result-contract.ts +132 -1
  495. package/src/domains/config/classify.ts +11 -7
  496. package/src/domains/config/extension.ts +5 -1
  497. package/src/domains/config/keybindings.ts +2 -2
  498. package/src/domains/context/codewiki/coordinator.ts +10 -0
  499. package/src/domains/context/worker/snapshot.ts +6 -3
  500. package/src/domains/dispatch/active-route-planner.ts +2 -0
  501. package/src/domains/dispatch/agent-candidates.ts +5 -1
  502. package/src/domains/dispatch/capability-match.ts +1 -1
  503. package/src/domains/dispatch/contract.ts +28 -0
  504. package/src/domains/dispatch/event-pump.ts +37 -3
  505. package/src/domains/dispatch/extension.ts +391 -48
  506. package/src/domains/dispatch/failure-classification.ts +37 -2
  507. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  508. package/src/domains/dispatch/run-identity.ts +10 -3
  509. package/src/domains/dispatch/target-breaker.ts +163 -0
  510. package/src/domains/dispatch/types.ts +29 -2
  511. package/src/domains/dispatch/worker-model-loads.ts +66 -0
  512. package/src/domains/dispatch/worker-protocol.ts +20 -1
  513. package/src/domains/dispatch/worker-spawn.ts +28 -2
  514. package/src/domains/eval/artifacts/redact.ts +9 -0
  515. package/src/domains/eval/metrics/noop.ts +61 -0
  516. package/src/domains/eval/reports/junit.ts +5 -1
  517. package/src/domains/eval/reports/text.ts +7 -0
  518. package/src/domains/eval/runners/clio-run.ts +19 -8
  519. package/src/domains/eval/runners/external-command.ts +29 -4
  520. package/src/domains/eval/schema/adapter.ts +6 -2
  521. package/src/domains/eval/schema/suite.ts +2 -0
  522. package/src/domains/eval/schema/validate.ts +3 -0
  523. package/src/domains/eval/suites/run.ts +167 -26
  524. package/src/domains/evidence/detail.ts +3 -2
  525. package/src/domains/extensions/operator-runtime.ts +11 -4
  526. package/src/domains/gateway/mcp/client.ts +1 -1
  527. package/src/domains/lifecycle/doctor.ts +42 -26
  528. package/src/domains/lifecycle/migrations/2026-09-18-ollama-runtime-id.ts +38 -0
  529. package/src/domains/lifecycle/migrations/index.ts +2 -0
  530. package/src/domains/middleware/demo-guidance.ts +36 -0
  531. package/src/domains/middleware/dispatch-nudge.ts +1 -1
  532. package/src/domains/middleware/memory-intervention.ts +51 -4
  533. package/src/domains/middleware/runtime.ts +5 -4
  534. package/src/domains/middleware/skills-reminder.ts +29 -52
  535. package/src/domains/middleware/task-nudge.ts +1 -0
  536. package/src/domains/middleware/watchdog.ts +4 -0
  537. package/src/domains/observability/extension.ts +2 -1
  538. package/src/domains/observability/out-of-turn-usage.ts +3 -2
  539. package/src/domains/observability/projection.ts +3 -2
  540. package/src/domains/observability/worker-progress.ts +48 -0
  541. package/src/domains/prompts/compiler.ts +148 -52
  542. package/src/domains/prompts/contract.ts +3 -3
  543. package/src/domains/prompts/demo-guidance.ts +8 -0
  544. package/src/domains/prompts/extension.ts +12 -7
  545. package/src/domains/prompts/fragments/identity/clio.md +2 -1
  546. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -0
  547. package/src/domains/prompts/fragments/identity/self-awareness.md +4 -0
  548. package/src/domains/prompts/fragments/operating/contract.md +16 -7
  549. package/src/domains/prompts/fragments/operating/delegation.md +29 -13
  550. package/src/domains/prompts/fragments/operating/skills.md +18 -10
  551. package/src/domains/prompts/fragments/operating/worker.md +2 -0
  552. package/src/domains/providers/cache-deployment.ts +45 -2
  553. package/src/domains/providers/contract.ts +52 -11
  554. package/src/domains/providers/extension.ts +230 -53
  555. package/src/domains/providers/model-discovery.ts +22 -8
  556. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +5 -7
  557. package/src/domains/providers/plugins.ts +3 -4
  558. package/src/domains/providers/probe/fingerprint.ts +2 -2
  559. package/src/domains/providers/probe/reasoning.ts +9 -16
  560. package/src/domains/providers/probe/tool-call.ts +236 -0
  561. package/src/domains/providers/registry.ts +51 -8
  562. package/src/domains/providers/runtime-resolution.ts +60 -12
  563. package/src/domains/providers/runtimes/boot-manifest.ts +1 -1
  564. package/src/domains/providers/runtimes/builtins.ts +2 -2
  565. package/src/domains/providers/runtimes/common/lmstudio-http.ts +57 -41
  566. package/src/domains/providers/runtimes/common/local-synth.ts +3 -1
  567. package/src/domains/providers/runtimes/common/ollama-model-ids.ts +11 -0
  568. package/src/domains/providers/runtimes/common/probe-helpers.ts +53 -0
  569. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +3 -1
  570. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +7 -13
  571. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +7 -17
  572. package/src/domains/providers/runtimes/local-native/llamacpp.ts +1 -0
  573. package/src/domains/providers/runtimes/local-native/ollama.ts +211 -0
  574. package/src/domains/providers/runtimes/protocol/litellm.ts +77 -65
  575. package/src/domains/providers/support.ts +1 -1
  576. package/src/domains/providers/types/local-model-quirks.ts +2 -3
  577. package/src/domains/providers/types/runtime-descriptor.ts +23 -3
  578. package/src/domains/providers/types/target-descriptor.ts +15 -3
  579. package/src/domains/resources/collision.ts +7 -2
  580. package/src/domains/resources/index.ts +1 -0
  581. package/src/domains/resources/library-actions.ts +4 -2
  582. package/src/domains/resources/library-inventory.ts +6 -2
  583. package/src/domains/resources/prompts/loader.ts +20 -7
  584. package/src/domains/resources/skills/availability.ts +56 -0
  585. package/src/domains/resources/skills/loader.ts +20 -9
  586. package/src/domains/safety/action-classifier.ts +282 -31
  587. package/src/domains/safety/audit.ts +2 -1
  588. package/src/domains/safety/autonomy.ts +54 -11
  589. package/src/domains/safety/decision-presentation.ts +17 -4
  590. package/src/domains/safety/finish-contract-registration.ts +25 -1
  591. package/src/domains/safety/finish-contract.ts +20 -5
  592. package/src/domains/safety/path-policy.ts +6 -2
  593. package/src/domains/safety/policy-engine.ts +168 -48
  594. package/src/domains/safety/protected-artifacts.ts +527 -16
  595. package/src/domains/safety/read-scope.ts +120 -0
  596. package/src/domains/safety/skill-authority.ts +52 -16
  597. package/src/domains/scheduling/cluster.ts +14 -3
  598. package/src/domains/scheduling/contract.ts +7 -0
  599. package/src/domains/scheduling/extension.ts +20 -9
  600. package/src/domains/scheduling/local-capacity.ts +160 -0
  601. package/src/domains/session/context-accounting.ts +44 -31
  602. package/src/domains/session/context-ledger.ts +10 -3
  603. package/src/domains/session/entries.ts +4 -0
  604. package/src/domains/session/history.ts +1 -1
  605. package/src/domains/session/prompt-cache.ts +1 -0
  606. package/src/domains/session/prompt-manifest.ts +3 -1
  607. package/src/domains/session/retry.ts +4 -6
  608. package/src/domains/session/task-board.ts +19 -4
  609. package/src/domains/session/tree/preview.ts +3 -2
  610. package/src/engine/acp/commands.ts +653 -0
  611. package/src/engine/acp/server.ts +639 -20
  612. package/src/engine/acp/tool-mediator.ts +30 -7
  613. package/src/engine/acp/types.ts +58 -0
  614. package/src/engine/agent.ts +55 -10
  615. package/src/engine/ai.ts +11 -2
  616. package/src/engine/api-registry.ts +5 -4
  617. package/src/engine/apis/degraded-inference.ts +243 -0
  618. package/src/engine/apis/llamacpp-residency.ts +50 -6
  619. package/src/engine/apis/lmstudio-residency.ts +3 -5
  620. package/src/engine/apis/lmstudio.ts +137 -31
  621. package/src/engine/apis/ollama-http.ts +118 -0
  622. package/src/engine/apis/ollama-native.ts +216 -97
  623. package/src/engine/apis/openai-completions.ts +191 -189
  624. package/src/engine/apis/output-budget.ts +3 -1
  625. package/src/engine/apis/residency-lock.ts +2 -1
  626. package/src/engine/apis/residency.ts +339 -89
  627. package/src/engine/apis/sampling-overrides.ts +23 -2
  628. package/src/engine/apis/types.ts +1 -2
  629. package/src/engine/claude/tool-safety.ts +30 -5
  630. package/src/engine/context.ts +13 -0
  631. package/src/engine/env-api-keys.ts +2 -1
  632. package/src/engine/gemma-channel-filter.ts +3 -2
  633. package/src/engine/instrumented-tui.ts +25 -0
  634. package/src/engine/loop-guard.ts +172 -6
  635. package/src/engine/pi-mono-names.ts +16 -0
  636. package/src/engine/prewarm.ts +44 -15
  637. package/src/engine/provider-payload.ts +52 -14
  638. package/src/engine/session.ts +4 -2
  639. package/src/engine/worker-events.ts +9 -1
  640. package/src/engine/worker-runtime.ts +269 -42
  641. package/src/engine/worker-tools.ts +8 -3
  642. package/src/entry/boot-options.ts +23 -0
  643. package/src/entry/orchestrator.ts +207 -36
  644. package/src/interactive/assistant-generation-timing.ts +52 -0
  645. package/src/interactive/chat-loop-messages.ts +4 -1
  646. package/src/interactive/chat-loop.ts +59 -9
  647. package/src/interactive/chat-panel.ts +10 -1
  648. package/src/interactive/clio-editor.ts +51 -79
  649. package/src/interactive/context-meter.ts +1 -0
  650. package/src/interactive/context-overlay.ts +21 -8
  651. package/src/interactive/cost-overlay.ts +1 -1
  652. package/src/interactive/dispatch-board.ts +39 -8
  653. package/src/interactive/editor-bash.ts +0 -34
  654. package/src/interactive/editor-rails.ts +43 -0
  655. package/src/interactive/editor-submit.ts +34 -2
  656. package/src/interactive/footer/dashboard.ts +67 -38
  657. package/src/interactive/footer/demo-hints.ts +40 -0
  658. package/src/interactive/footer/key-hints.ts +21 -0
  659. package/src/interactive/footer/notifications.ts +1 -1
  660. package/src/interactive/footer/pages.ts +486 -0
  661. package/src/interactive/footer/system-metrics.ts +147 -0
  662. package/src/interactive/footer/widgets.ts +158 -63
  663. package/src/interactive/footer-panel.ts +29 -7
  664. package/src/interactive/interactive-application.ts +109 -21
  665. package/src/interactive/interactive-event-projection.ts +6 -2
  666. package/src/interactive/interactive-presentation.ts +25 -29
  667. package/src/interactive/interactive-slash-runtime.ts +32 -18
  668. package/src/interactive/interactive-subscriptions.ts +25 -5
  669. package/src/interactive/interactive-tickers.ts +21 -5
  670. package/src/interactive/keybinding-manager.ts +9 -0
  671. package/src/interactive/overlay-frame.ts +29 -7
  672. package/src/interactive/overlay-lifecycle.ts +5 -3
  673. package/src/interactive/overlay-model-selectors.ts +4 -0
  674. package/src/interactive/overlay-permission-lifecycle.ts +6 -5
  675. package/src/interactive/overlays/ask-user.ts +103 -110
  676. package/src/interactive/overlays/help-reference.ts +1 -0
  677. package/src/interactive/overlays/message-picker.ts +3 -29
  678. package/src/interactive/overlays/session-selector.ts +3 -2
  679. package/src/interactive/overlays/settings-sections.ts +2 -30
  680. package/src/interactive/overlays/settings.ts +310 -607
  681. package/src/interactive/permission-hint.ts +3 -3
  682. package/src/interactive/permission-overlay.ts +45 -27
  683. package/src/interactive/renderers/doctor-report.ts +43 -0
  684. package/src/interactive/renderers/tool-execution.ts +87 -62
  685. package/src/interactive/renderers/worker-entry.ts +76 -3
  686. package/src/interactive/side-question.ts +3 -1
  687. package/src/interactive/slash-commands.ts +78 -23
  688. package/src/interactive/startup-background.ts +131 -0
  689. package/src/interactive/startup-diagnostics.ts +16 -0
  690. package/src/interactive/status/state-machine.ts +16 -3
  691. package/src/interactive/status/types.ts +2 -0
  692. package/src/interactive/status/verbs.ts +1 -1
  693. package/src/interactive/terminal-lease.ts +26 -22
  694. package/src/interactive/theme/components.ts +1 -1
  695. package/src/interactive/theme/rules.ts +1 -1
  696. package/src/interactive/theme/tokens.ts +16 -10
  697. package/src/interactive/transcript-detail.ts +4 -0
  698. package/src/interactive/turn-context.ts +56 -20
  699. package/src/interactive/turn-middleware.ts +57 -9
  700. package/src/interactive/turn-prewarm.ts +121 -18
  701. package/src/interactive/turn-recovery.ts +10 -8
  702. package/src/interactive/turn-runtime.ts +74 -29
  703. package/src/interactive/turn-state.ts +3 -0
  704. package/src/interactive/welcome-art.ts +36 -0
  705. package/src/interactive/welcome-dashboard.ts +209 -49
  706. package/src/interactive/worker-replay.ts +4 -0
  707. package/src/interactive/worker-stream.ts +17 -2
  708. package/src/tools/agent-tools.ts +22 -1
  709. package/src/tools/builtin-tool-catalog.ts +2 -2
  710. package/src/tools/codewiki/code-nav.ts +1 -1
  711. package/src/tools/codewiki/shared.ts +39 -1
  712. package/src/tools/compete-worktrees.ts +8 -91
  713. package/src/tools/context/docs-engine.ts +44 -12
  714. package/src/tools/context/index.ts +126 -22
  715. package/src/tools/context/library.ts +1 -1
  716. package/src/tools/context/surface.ts +12 -7
  717. package/src/tools/core-bootstrap.ts +3 -0
  718. package/src/tools/dispatch-runner.ts +18 -0
  719. package/src/tools/dispatch-schema.ts +187 -206
  720. package/src/tools/edit.ts +46 -42
  721. package/src/tools/file-mutation-queue.ts +25 -26
  722. package/src/tools/gateway/clio-context-surface.ts +1 -1
  723. package/src/tools/gateway/index.ts +7 -3
  724. package/src/tools/gateway/mcp-capabilities.ts +5 -3
  725. package/src/tools/grep.ts +14 -2
  726. package/src/tools/ls.ts +1 -4
  727. package/src/tools/monitor.ts +14 -1
  728. package/src/tools/observation.ts +1 -3
  729. package/src/tools/path-utils.ts +51 -18
  730. package/src/tools/process-lease.ts +99 -0
  731. package/src/tools/read.ts +1 -1
  732. package/src/tools/registry.ts +71 -9
  733. package/src/tools/task-worktree.ts +296 -17
  734. package/src/tools/tasks.ts +29 -7
  735. package/src/tools/worker-evidence.ts +60 -1
  736. package/src/tools/worktree-root.ts +252 -0
  737. package/src/tools/write.ts +34 -30
  738. package/src/worker/entry.ts +18 -1
  739. package/src/worker/protocol.ts +54 -1
  740. package/src/worker/spec-contract.ts +22 -2
  741. package/dist/acp-ZWZCPS2A.js +0 -130
  742. package/dist/agents-LYSOWZUE.js +0 -150
  743. package/dist/auth-WBQGKWQ5.js +0 -551
  744. package/dist/background-BUMOBAQN.js +0 -37
  745. package/dist/builtins-ODRJOEDI.js +0 -22
  746. package/dist/chunk-2DRRZ57Q.js +0 -571
  747. package/dist/chunk-2JBZYUPY.js +0 -105
  748. package/dist/chunk-2VBWFXYE.js +0 -198
  749. package/dist/chunk-2X2R3UTH.js +0 -1018
  750. package/dist/chunk-32KJPXAM.js +0 -75
  751. package/dist/chunk-37LW32LZ.js +0 -32
  752. package/dist/chunk-3A3CUMKA.js +0 -54
  753. package/dist/chunk-3AND2EFU.js +0 -215
  754. package/dist/chunk-3RDHGNU7.js +0 -647
  755. package/dist/chunk-3SUDBGEI.js +0 -1323
  756. package/dist/chunk-3TQN67I2.js +0 -396
  757. package/dist/chunk-3U4BL2EV.js +0 -103
  758. package/dist/chunk-3UQADNG2.js +0 -302
  759. package/dist/chunk-434LRQ6Z.js +0 -13441
  760. package/dist/chunk-4ATBOFRP.js +0 -7802
  761. package/dist/chunk-4DNL43EZ.js +0 -139
  762. package/dist/chunk-4HFJKRGZ.js +0 -5250
  763. package/dist/chunk-555E2WVV.js +0 -322
  764. package/dist/chunk-5GZICIYO.js +0 -462
  765. package/dist/chunk-5PHVPU4G.js +0 -160
  766. package/dist/chunk-5RTEFNBP.js +0 -197
  767. package/dist/chunk-64XJW7NT.js +0 -380
  768. package/dist/chunk-6TKOFFGE.js +0 -1058
  769. package/dist/chunk-6UJ7RDI7.js +0 -1143
  770. package/dist/chunk-7FBCRWVT.js +0 -1801
  771. package/dist/chunk-7JSOSVLP.js +0 -283
  772. package/dist/chunk-7N3OLLSL.js +0 -637
  773. package/dist/chunk-7QQRPB2E.js +0 -915
  774. package/dist/chunk-A6DULIMH.js +0 -986
  775. package/dist/chunk-AB3QXXBC.js +0 -123
  776. package/dist/chunk-ACCECAH4.js +0 -49
  777. package/dist/chunk-AM6CEP2K.js +0 -2120
  778. package/dist/chunk-AUHVBIDW.js +0 -19
  779. package/dist/chunk-AY4XE6GN.js +0 -665
  780. package/dist/chunk-BBA2TAWV.js +0 -667
  781. package/dist/chunk-BFPHMSK7.js +0 -169
  782. package/dist/chunk-BMNVVKEW.js +0 -604
  783. package/dist/chunk-CKK25WN3.js +0 -72
  784. package/dist/chunk-CTGZCEI6.js +0 -33
  785. package/dist/chunk-DIAJYJYG.js +0 -446
  786. package/dist/chunk-DVNAPPXU.js +0 -27
  787. package/dist/chunk-DXVMLM3Z.js +0 -92
  788. package/dist/chunk-E3LEPLQ2.js +0 -68
  789. package/dist/chunk-EHZRAB4U.js +0 -63
  790. package/dist/chunk-EM2DIQAJ.js +0 -179
  791. package/dist/chunk-EM2WNQS2.js +0 -93
  792. package/dist/chunk-ETF4ROKH.js +0 -595
  793. package/dist/chunk-F2YM3JY4.js +0 -22513
  794. package/dist/chunk-FEBQWHJT.js +0 -1023
  795. package/dist/chunk-FPS4R2RN.js +0 -1975
  796. package/dist/chunk-GD55RTIW.js +0 -33
  797. package/dist/chunk-GJDRMBDI.js +0 -573
  798. package/dist/chunk-GREYLTZ5.js +0 -658
  799. package/dist/chunk-H2WSCZZT.js +0 -238
  800. package/dist/chunk-H6IUCY6Q.js +0 -117
  801. package/dist/chunk-H72DCH3E.js +0 -563
  802. package/dist/chunk-H7TXJR23.js +0 -705
  803. package/dist/chunk-HBJQQTKM.js +0 -40
  804. package/dist/chunk-HCVKSGNZ.js +0 -990
  805. package/dist/chunk-HVCAY2FH.js +0 -67
  806. package/dist/chunk-I47EJPYL.js +0 -1377
  807. package/dist/chunk-IALGWTLO.js +0 -36
  808. package/dist/chunk-IALZJE37.js +0 -1710
  809. package/dist/chunk-IC7JXLOM.js +0 -1577
  810. package/dist/chunk-IOSVTTCD.js +0 -108
  811. package/dist/chunk-IPTPMLA6.js +0 -475
  812. package/dist/chunk-IZZI3SKQ.js +0 -128
  813. package/dist/chunk-JABWPKFY.js +0 -27
  814. package/dist/chunk-JIYWMQZ5.js +0 -175
  815. package/dist/chunk-JKU34ACI.js +0 -693
  816. package/dist/chunk-JOBN2YQQ.js +0 -176
  817. package/dist/chunk-JOL2QRLE.js +0 -152
  818. package/dist/chunk-JTR3VSV3.js +0 -44
  819. package/dist/chunk-JU6MAMRJ.js +0 -362
  820. package/dist/chunk-JURMQWVJ.js +0 -15
  821. package/dist/chunk-K2BLQC5E.js +0 -262
  822. package/dist/chunk-K3XN4LZ4.js +0 -402
  823. package/dist/chunk-KIVFXGBM.js +0 -688
  824. package/dist/chunk-KKRXONXG.js +0 -43
  825. package/dist/chunk-KOAHT3N2.js +0 -395
  826. package/dist/chunk-KP5BPXR3.js +0 -73
  827. package/dist/chunk-KQ6IDQIB.js +0 -39
  828. package/dist/chunk-KRJQG47M.js +0 -1289
  829. package/dist/chunk-KW6OJ7IY.js +0 -221
  830. package/dist/chunk-L3NBWLSN.js +0 -314
  831. package/dist/chunk-L4RUTLRL.js +0 -59
  832. package/dist/chunk-LGTVWPRN.js +0 -47
  833. package/dist/chunk-LSQW6KZO.js +0 -200
  834. package/dist/chunk-LTR5QCLS.js +0 -446
  835. package/dist/chunk-LWJYOHT3.js +0 -165
  836. package/dist/chunk-M6YLF66Z.js +0 -2687
  837. package/dist/chunk-MJ4QEJVT.js +0 -185
  838. package/dist/chunk-MO65K5CH.js +0 -1148
  839. package/dist/chunk-MTOZEQHL.js +0 -637
  840. package/dist/chunk-MZDPF35R.js +0 -45
  841. package/dist/chunk-MZKYVIWW.js +0 -188
  842. package/dist/chunk-NBPA5QM6.js +0 -386
  843. package/dist/chunk-NMBEW4PP.js +0 -688
  844. package/dist/chunk-NPLLK3HO.js +0 -3610
  845. package/dist/chunk-NSYGPIVW.js +0 -39
  846. package/dist/chunk-NXTV5OI5.js +0 -1020
  847. package/dist/chunk-NYDG4QP4.js +0 -689
  848. package/dist/chunk-OA2GDACN.js +0 -146
  849. package/dist/chunk-PJI57EC6.js +0 -236
  850. package/dist/chunk-PJJBUGMR.js +0 -4484
  851. package/dist/chunk-PNJE7JPS.js +0 -50
  852. package/dist/chunk-PP23PZEV.js +0 -1347
  853. package/dist/chunk-PPIFDSBK.js +0 -409
  854. package/dist/chunk-PTFISXQO.js +0 -319
  855. package/dist/chunk-QB33Z5S7.js +0 -1865
  856. package/dist/chunk-QGNII5VC.js +0 -110
  857. package/dist/chunk-QH3ZTUOA.js +0 -113
  858. package/dist/chunk-QI72X67S.js +0 -481
  859. package/dist/chunk-QJMRYTCX.js +0 -56
  860. package/dist/chunk-QKHZZFKH.js +0 -98
  861. package/dist/chunk-RDKX2PME.js +0 -66
  862. package/dist/chunk-RL7LJYN4.js +0 -66
  863. package/dist/chunk-RPMNIFRY.js +0 -65
  864. package/dist/chunk-RQROVOV3.js +0 -670
  865. package/dist/chunk-S34A7BSP.js +0 -97
  866. package/dist/chunk-SJETVJHX.js +0 -119
  867. package/dist/chunk-SJMNU4ZS.js +0 -634
  868. package/dist/chunk-SL2RDHKO.js +0 -19
  869. package/dist/chunk-SLLG2G44.js +0 -85
  870. package/dist/chunk-SQAZN2V3.js +0 -2744
  871. package/dist/chunk-SQBT46OF.js +0 -814
  872. package/dist/chunk-SRCEQKQS.js +0 -165
  873. package/dist/chunk-TCUOGIL2.js +0 -52
  874. package/dist/chunk-TIWPKCVO.js +0 -42
  875. package/dist/chunk-U44YYLVV.js +0 -1529
  876. package/dist/chunk-UIU7MGZ3.js +0 -486
  877. package/dist/chunk-USBBEKHW.js +0 -177
  878. package/dist/chunk-VHKTOLEW.js +0 -1416
  879. package/dist/chunk-VPWGADBG.js +0 -3151
  880. package/dist/chunk-VQD7NH7Z.js +0 -356
  881. package/dist/chunk-VWFCAK34.js +0 -697
  882. package/dist/chunk-W5RM7YAH.js +0 -78
  883. package/dist/chunk-W72LLZAV.js +0 -243
  884. package/dist/chunk-WGRDABW7.js +0 -207
  885. package/dist/chunk-WWRV5RJI.js +0 -165
  886. package/dist/chunk-XCUDZQLX.js +0 -195
  887. package/dist/chunk-XFLSL7BT.js +0 -386
  888. package/dist/chunk-XJZEDCNT.js +0 -391
  889. package/dist/chunk-XLLEL3K7.js +0 -709
  890. package/dist/chunk-XNZWWDC3.js +0 -686
  891. package/dist/chunk-XRECG65F.js +0 -308
  892. package/dist/chunk-XTQ7MEJG.js +0 -457
  893. package/dist/chunk-XW2UZICE.js +0 -372
  894. package/dist/chunk-Y3M2T5RO.js +0 -891
  895. package/dist/chunk-YGDMBK7O.js +0 -567
  896. package/dist/chunk-YJCCMYYT.js +0 -125
  897. package/dist/chunk-YPQOPFP7.js +0 -797
  898. package/dist/chunk-YQYINEJI.js +0 -132
  899. package/dist/chunk-ZF6CV4WZ.js +0 -5614
  900. package/dist/chunk-ZKJU55MX.js +0 -326
  901. package/dist/chunk-ZKQ63XZ5.js +0 -1196
  902. package/dist/chunk-ZKVMDNAN.js +0 -962
  903. package/dist/chunk-ZST3FRCV.js +0 -132
  904. package/dist/clio-JUDCLNHC.js +0 -26
  905. package/dist/clio-context-tools-FT672MNZ.js +0 -136
  906. package/dist/code-nav-7OVCTP2Z.js +0 -688
  907. package/dist/compile-cache-WJEPUZEJ.js +0 -16
  908. package/dist/components-OZXZMDWU.js +0 -674
  909. package/dist/config-P3ZQVF63.js +0 -275
  910. package/dist/config-graph-GKAOBAS5.js +0 -160
  911. package/dist/configure-25LRYZJG.js +0 -86
  912. package/dist/context-72VQV7JX.js +0 -73
  913. package/dist/context-COWRWXP3.js +0 -286
  914. package/dist/context-WB3D474G.js +0 -344
  915. package/dist/context-clear-Y4LYMWC6.js +0 -192
  916. package/dist/context-index-W6A4V7OC.js +0 -120
  917. package/dist/context-map-DKL3QT6D.js +0 -555
  918. package/dist/context-working-set-TMZYVC7A.js +0 -1560
  919. package/dist/data-tool-KMBWKKWR.js +0 -2987
  920. package/dist/detail-4GLROGY5.js +0 -123
  921. package/dist/dispatch-runner-TR3LBP5P.js +0 -2446
  922. package/dist/docs-ZK777W2G.js +0 -101
  923. package/dist/doctor-WC4OV2OB.js +0 -814
  924. package/dist/eval-FUNWJNUJ.js +0 -5050
  925. package/dist/eval-inventory-CX24K2JT.js +0 -260
  926. package/dist/evals-L73EBHSU.js +0 -104
  927. package/dist/evidence-AVJ2RTHX.js +0 -392
  928. package/dist/evidence-P4NZOAK7.js +0 -233
  929. package/dist/evidence-Y55WKYHH.js +0 -246
  930. package/dist/evolve-MAWKRYWF.js +0 -617
  931. package/dist/extensions-PYQH3H47.js +0 -308
  932. package/dist/fleet-M4H2QBWT.js +0 -268
  933. package/dist/fleet-ULBXXRDR.js +0 -923
  934. package/dist/fleet-commands-7NNC4JZU.js +0 -76
  935. package/dist/fleet-decisions-EHEY7KPU.js +0 -52
  936. package/dist/fleet-graph-LQ2AHZT3.js +0 -136
  937. package/dist/fleet-inspect-5IGBIIYZ.js +0 -312
  938. package/dist/fleet-new-RCKGSRDV.js +0 -48
  939. package/dist/fleet-preflight-UTTNOKMG.js +0 -27
  940. package/dist/fleet-validate-YGILJKA6.js +0 -91
  941. package/dist/fleet-verify-AUWTCDKR.js +0 -210
  942. package/dist/fleet-view-TGUFCY5A.js +0 -127
  943. package/dist/init-GFN2Z7NF.js +0 -333
  944. package/dist/install-3RZDDP23.js +0 -13
  945. package/dist/install-6PIF6F6W.js +0 -19
  946. package/dist/interop-EF5JUWWK.js +0 -246
  947. package/dist/inventory-I6VJDDYF.js +0 -127
  948. package/dist/library-3J5IO2OJ.js +0 -75
  949. package/dist/library-IJTOFTDS.js +0 -307
  950. package/dist/library-Z3KZSHPE.js +0 -492
  951. package/dist/library-import-IMKFLDHX.js +0 -183
  952. package/dist/library-inventory-CQP5D6GU.js +0 -56
  953. package/dist/library-validation-33UTX7AI.js +0 -42
  954. package/dist/mcp-5FWZKUS6.js +0 -26
  955. package/dist/memory-36CWN67Y.js +0 -520
  956. package/dist/models-KQ6PQJJQ.js +0 -302
  957. package/dist/monitor-XX6ZD6KC.js +0 -785
  958. package/dist/orchestrator-SK6HDAOP.js +0 -42067
  959. package/dist/panes-L27QRXUH.js +0 -74
  960. package/dist/panes-LXZIWNOZ.js +0 -103
  961. package/dist/paths-7DJDU4P4.js +0 -67
  962. package/dist/preload-K2TDYI4Y.js +0 -124
  963. package/dist/registry-DESGAXWK.js +0 -11
  964. package/dist/reset-73VU3XNT.js +0 -345
  965. package/dist/resources-3BYJYVYL.js +0 -181
  966. package/dist/run-AR7PY6GW.js +0 -896
  967. package/dist/run-script-H2KUDIII.js +0 -41
  968. package/dist/settings-3VMBMWID.js +0 -72
  969. package/dist/share-HVWH4FPF.js +0 -293
  970. package/dist/skills-5TYEY75Q.js +0 -100
  971. package/dist/skills-eval-CK3MD63Z.js +0 -1083
  972. package/dist/skills-inventory-KSFYG3I6.js +0 -138
  973. package/dist/slash-commands-DMVHML7P.js +0 -98
  974. package/dist/steer-XCD6V3EW.js +0 -77
  975. package/dist/support-JAZL6VBR.js +0 -38
  976. package/dist/system-3TDQRMZZ.js +0 -116
  977. package/dist/targets-EZKHAYRN.js +0 -1117
  978. package/dist/tasks-SNEFHWYW.js +0 -36
  979. package/dist/terminal-lease-BNLFA4OF.js +0 -419
  980. package/dist/tools-7IM6BDCE.js +0 -28
  981. package/dist/trace-C3MBGD4S.js +0 -524
  982. package/dist/tree-sitter-AQUUOSYM.js +0 -4673
  983. package/dist/tui-primitives-36BY2774.js +0 -18
  984. package/dist/uninstall-WWLOSZ42.js +0 -432
  985. package/dist/upgrade-ETK2JNSJ.js +0 -297
  986. package/dist/usage-S2HOB7BZ.js +0 -1065
  987. package/dist/verifiers-QDTEVH7R.js +0 -632
  988. package/dist/verify-SUKUK6XM.js +0 -31
  989. package/dist/version-RFPKO6T7.js +0 -21
  990. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +0 -1
  991. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +0 -1
  992. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +0 -36
  993. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +0 -129
  994. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +0 -38
  995. package/dist/web/client/assets/channel-c4EeUUqA.js +0 -1
  996. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +0 -62
  997. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +0 -2
  998. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +0 -125
  999. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +0 -1
  1000. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +0 -72
  1001. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +0 -1
  1002. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +0 -231
  1003. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +0 -1
  1004. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +0 -10
  1005. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +0 -1
  1006. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +0 -1
  1007. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +0 -1
  1008. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +0 -168
  1009. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +0 -88
  1010. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +0 -206
  1011. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +0 -1
  1012. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +0 -1
  1013. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +0 -1
  1014. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +0 -62
  1015. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +0 -4
  1016. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +0 -30
  1017. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +0 -41
  1018. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +0 -3
  1019. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +0 -24
  1020. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +0 -24
  1021. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +0 -1
  1022. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +0 -99
  1023. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +0 -1
  1024. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +0 -1
  1025. package/dist/web/client/assets/framework-YGoR34M4.js +0 -9
  1026. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +0 -292
  1027. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +0 -1
  1028. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +0 -106
  1029. package/dist/web/client/assets/index-CVcy0FAn.js +0 -75
  1030. package/dist/web/client/assets/index-Dsi52apB.css +0 -1
  1031. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +0 -1
  1032. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +0 -2
  1033. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +0 -70
  1034. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +0 -139
  1035. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +0 -89
  1036. package/dist/web/client/assets/line-BIDAcEtX.js +0 -1
  1037. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +0 -7
  1038. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +0 -44
  1039. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +0 -96
  1040. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +0 -1
  1041. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +0 -1
  1042. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +0 -1
  1043. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +0 -39
  1044. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +0 -7
  1045. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +0 -1
  1046. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +0 -1
  1047. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +0 -1
  1048. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +0 -1
  1049. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +0 -1
  1050. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +0 -1
  1051. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +0 -84
  1052. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +0 -40
  1053. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +0 -162
  1054. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +0 -1
  1055. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +0 -1
  1056. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +0 -1
  1057. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +0 -8
  1058. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +0 -120
  1059. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +0 -1
  1060. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +0 -1
  1061. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +0 -34
  1062. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +0 -1
  1063. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +0 -78
  1064. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +0 -7
  1065. package/dist/web/client/index.html +0 -6
  1066. package/dist/web/ops-worker.js +0 -37
  1067. package/dist/web/reads-worker.js +0 -1726
  1068. package/dist/web/server.js +0 -8499
  1069. package/dist/web-EMGUGGEI.js +0 -13
  1070. package/dist/web-fetch-6BRRVQON.js +0 -805
  1071. package/dist/wiki-generate-XHSJTDOP.js +0 -627
  1072. package/dist/with-panes-Z6BTEHMZ.js +0 -628
  1073. package/evals/README.md +0 -9
  1074. package/evals/behavioral-corpus-grader.mjs +0 -236
  1075. package/evals/behavioral-machinery-baseline.json +0 -2276
  1076. package/evals/behavioral-machinery-driver.ts +0 -250
  1077. package/evals/behavioral-machinery-support.ts +0 -254
  1078. package/evals/behavioral-machinery.yaml +0 -614
  1079. package/evals/behavioral-model-negative-control.yaml +0 -69
  1080. package/evals/behavioral-model.yaml +0 -482
  1081. package/evals/fixtures/behavioral-facts.txt +0 -3
  1082. package/evals/fixtures/behavioral-main.ts +0 -7
  1083. package/evals/fixtures/decoy/note.txt +0 -2
  1084. package/evals/fixtures/docs-retrieval.json +0 -102
  1085. package/evals/fixtures/private/credentials.txt +0 -1
  1086. package/evals/fixtures/scalar-decision.json +0 -17
  1087. package/evals/fixtures/scout-citation-pipeline.json +0 -55
  1088. package/evals/fixtures/source-explanation.json +0 -74
  1089. package/evals/fixtures/tool-arguments.json +0 -18
  1090. package/evals/fixtures/tool-surface/read.txt +0 -4
  1091. package/evals/fixtures/tool-surface/subdir/keep.txt +0 -1
  1092. package/evals/no-edit-memory-grader.mjs +0 -149
  1093. package/evals/scalar-decision-grader.py +0 -41
  1094. package/evals/scalar-decision-machinery.ts +0 -145
  1095. package/evals/source-explanation-grader.mjs +0 -118
  1096. package/evals/tool-surface-grader.mjs +0 -53
  1097. package/evals/tool-surface-model.yaml +0 -274
  1098. package/evals/tracked-metrics-baseline.yaml +0 -229
  1099. package/evals/tracked-metrics-grader.mjs +0 -129
  1100. package/src/cli/web.ts +0 -79
  1101. package/src/domains/providers/runtimes/local-native/ollama-native.ts +0 -122
  1102. /package/dist/assets/{web-notices → gui-notices}/@hono__node-server-LICENSE +0 -0
  1103. /package/dist/assets/{web-notices → gui-notices}/hono-LICENSE +0 -0
  1104. /package/dist/{web → gui}/client/THIRD_PARTY_LICENSES.md +0 -0
  1105. /package/dist/{web → gui}/client/assets/arc-Pry-7G1_.js +0 -0
  1106. /package/dist/{web → gui}/client/assets/array-BifhSqXX.js +0 -0
  1107. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  1108. /package/dist/{web → gui}/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  1109. /package/dist/{web → gui}/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
  1110. /package/dist/{web → gui}/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
  1111. /package/dist/{web → gui}/client/assets/chunk-FOHPRMQF-CoA4358r.js +0 -0
  1112. /package/dist/{web → gui}/client/assets/chunk-JWPE2WC7-DVXcaiue.js +0 -0
  1113. /package/dist/{web → gui}/client/assets/chunk-XXDRQBXY-DqAYeljN.js +0 -0
  1114. /package/dist/{web → gui}/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
  1115. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  1116. /package/dist/{web → gui}/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  1117. /package/dist/{web → gui}/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +0 -0
  1118. /package/dist/{web → gui}/client/assets/cytoscape.esm-c2aL46s-.js +0 -0
  1119. /package/dist/{web → gui}/client/assets/dagre-C-rnJpZF.js +0 -0
  1120. /package/dist/{web → gui}/client/assets/defaultLocale-BFoDCU3G.js +0 -0
  1121. /package/dist/{web → gui}/client/assets/dist-v5Q1xZ2K.js +0 -0
  1122. /package/dist/{web → gui}/client/assets/graphlib-DS17s2tU.js +0 -0
  1123. /package/dist/{web → gui}/client/assets/init-C-OQMol4.js +0 -0
  1124. /package/dist/{web → gui}/client/assets/katex-ZlcWpGUi.js +0 -0
  1125. /package/dist/{web → gui}/client/assets/linear-SzVmGSw4.js +0 -0
  1126. /package/dist/{web → gui}/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  1127. /package/dist/{web → gui}/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  1128. /package/dist/{web → gui}/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  1129. /package/dist/{web → gui}/client/assets/ordinal-BDEzSJ7C.js +0 -0
  1130. /package/dist/{web → gui}/client/assets/path-fybaL0A-.js +0 -0
  1131. /package/dist/{web → gui}/client/assets/prism-bash-D6zCJ74D.js +0 -0
  1132. /package/dist/{web → gui}/client/assets/prism-c-04YixN25.js +0 -0
  1133. /package/dist/{web → gui}/client/assets/prism-clike-DapgWyxx.js +0 -0
  1134. /package/dist/{web → gui}/client/assets/prism-core-BtsZdCS6.js +0 -0
  1135. /package/dist/{web → gui}/client/assets/prism-cpp-C-lJbC-6.js +0 -0
  1136. /package/dist/{web → gui}/client/assets/prism-css-CPgOzxXp.js +0 -0
  1137. /package/dist/{web → gui}/client/assets/prism-diff-BF8m0_mq.js +0 -0
  1138. /package/dist/{web → gui}/client/assets/prism-docker-DkT6yOFj.js +0 -0
  1139. /package/dist/{web → gui}/client/assets/prism-fortran-Be5x3y1V.js +0 -0
  1140. /package/dist/{web → gui}/client/assets/prism-go-C_8qAH5n.js +0 -0
  1141. /package/dist/{web → gui}/client/assets/prism-ini-BESK3y0r.js +0 -0
  1142. /package/dist/{web → gui}/client/assets/prism-javascript-BnO-swvr.js +0 -0
  1143. /package/dist/{web → gui}/client/assets/prism-json-Dp_-W-Hv.js +0 -0
  1144. /package/dist/{web → gui}/client/assets/prism-jsx-D-D0NWtC.js +0 -0
  1145. /package/dist/{web → gui}/client/assets/prism-julia-DIjOgiAV.js +0 -0
  1146. /package/dist/{web → gui}/client/assets/prism-latex-DNMbqcH_.js +0 -0
  1147. /package/dist/{web → gui}/client/assets/prism-makefile-CRKWLQ8l.js +0 -0
  1148. /package/dist/{web → gui}/client/assets/prism-markdown-C0FPJ1Iz.js +0 -0
  1149. /package/dist/{web → gui}/client/assets/prism-markup-Cp04rIa1.js +0 -0
  1150. /package/dist/{web → gui}/client/assets/prism-matlab-D-nk08al.js +0 -0
  1151. /package/dist/{web → gui}/client/assets/prism-python-CfiSVtM6.js +0 -0
  1152. /package/dist/{web → gui}/client/assets/prism-r-QmNGR8LX.js +0 -0
  1153. /package/dist/{web → gui}/client/assets/prism-rust-Bu9N8X3N.js +0 -0
  1154. /package/dist/{web → gui}/client/assets/prism-shell-session-Be4UuYoM.js +0 -0
  1155. /package/dist/{web → gui}/client/assets/prism-sql-CYhVDMEE.js +0 -0
  1156. /package/dist/{web → gui}/client/assets/prism-toml-DKb54GAT.js +0 -0
  1157. /package/dist/{web → gui}/client/assets/prism-tsx-p6J2Kc_4.js +0 -0
  1158. /package/dist/{web → gui}/client/assets/prism-typescript-BMqONzxf.js +0 -0
  1159. /package/dist/{web → gui}/client/assets/prism-yaml-C0JHu8gr.js +0 -0
  1160. /package/dist/{web → gui}/client/assets/purify.es-ChwZkWde.js +0 -0
  1161. /package/dist/{web → gui}/client/assets/rolldown-runtime-hePW80VL.js +0 -0
  1162. /package/dist/{web → gui}/client/assets/rough.esm-Dy-Kn_BL.js +0 -0
  1163. /package/dist/{web → gui}/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
  1164. /package/dist/{web → gui}/client/assets/src-B6xuSHsQ.js +0 -0
  1165. /package/dist/{web → gui}/client/clio-coder-logo.webp +0 -0
  1166. /package/dist/{web → gui}/client/icon-192.png +0 -0
  1167. /package/dist/{web → gui}/client/icon-512.png +0 -0
  1168. /package/dist/{web → gui}/client/manifest.webmanifest +0 -0
  1169. /package/dist/{web → gui}/client/offline.css +0 -0
  1170. /package/dist/{web → gui}/client/offline.html +0 -0
  1171. /package/dist/{web → gui}/client/offline.js +0 -0
  1172. /package/dist/{web → gui}/client/sw.js +0 -0
@@ -0,0 +1,1416 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ createSlicer
4
+ } from "./chunk-KPRLAMP4.js";
5
+ import {
6
+ CODEWIKI_VERSION,
7
+ readCodewiki,
8
+ readCodewikiAsync
9
+ } from "./chunk-W2RJEH6Q.js";
10
+ import {
11
+ WORKSPACE_EXCLUDED_DIRS,
12
+ enumerateWorkspaceFiles,
13
+ enumerateWorkspaceFilesAsync,
14
+ filterWorkspaceFileCandidates
15
+ } from "./chunk-PPEZJWUG.js";
16
+ import {
17
+ classifyCHeaderLanguage,
18
+ isAmbiguousHeaderPath
19
+ } from "./chunk-WDV62RKY.js";
20
+ import {
21
+ init_esm_shims
22
+ } from "./chunk-ECBHH7LU.js";
23
+
24
+ // src/domains/context/fingerprint.ts
25
+ init_esm_shims();
26
+ import { execFile, execFileSync } from "node:child_process";
27
+ import { createHash } from "node:crypto";
28
+ import { readFileSync } from "node:fs";
29
+ import { join } from "node:path";
30
+ import { promisify } from "node:util";
31
+
32
+ // src/domains/context/codewiki/paths.ts
33
+ init_esm_shims();
34
+
35
+ // src/domains/context/excluded-dirs.ts
36
+ init_esm_shims();
37
+
38
+ // src/domains/context/codewiki/paths.ts
39
+ var SOURCE_EXTENSIONS = /* @__PURE__ */ new Map([
40
+ [".ts", "typescript"],
41
+ [".tsx", "typescript"],
42
+ [".mts", "typescript"],
43
+ [".cts", "typescript"],
44
+ [".js", "javascript"],
45
+ [".jsx", "javascript"],
46
+ [".mjs", "javascript"],
47
+ [".cjs", "javascript"],
48
+ [".py", "python"],
49
+ [".pyw", "python"],
50
+ [".rs", "rust"],
51
+ [".go", "go"],
52
+ [".c", "c"],
53
+ [".h", "c"],
54
+ [".cc", "c++"],
55
+ [".cpp", "c++"],
56
+ [".cxx", "c++"],
57
+ [".hpp", "c++"],
58
+ [".hh", "c++"],
59
+ [".hxx", "c++"],
60
+ [".cu", "c++"],
61
+ [".cuh", "c++"],
62
+ [".java", "java"],
63
+ [".rb", "ruby"],
64
+ [".cs", "c#"]
65
+ ]);
66
+ var CONFIG_FILE_NAMES = /* @__PURE__ */ new Set([
67
+ "package.json",
68
+ "pyproject.toml",
69
+ "setup.py",
70
+ "Cargo.toml",
71
+ "go.mod",
72
+ "pom.xml",
73
+ "CMakeLists.txt",
74
+ "compile_commands.json",
75
+ "Gemfile"
76
+ ]);
77
+ function extensionOf(name) {
78
+ const index = name.lastIndexOf(".");
79
+ return index === -1 ? "" : name.slice(index);
80
+ }
81
+ function sourceLanguageForPath(relPath) {
82
+ if (relPath.endsWith(".d.ts")) return null;
83
+ return SOURCE_EXTENSIONS.get(extensionOf(relPath)) ?? null;
84
+ }
85
+ function languageForPath(relPath) {
86
+ const source = sourceLanguageForPath(relPath);
87
+ if (source) return source;
88
+ const name = relPath.split("/").pop() ?? relPath;
89
+ return CONFIG_FILE_NAMES.has(name) || name.endsWith(".csproj") || name.toLowerCase().endsWith(".cmake") ? "config" : null;
90
+ }
91
+ function isIndexablePath(relPath) {
92
+ if (relPath.split("/").some((segment) => WORKSPACE_EXCLUDED_DIRS.has(segment))) return false;
93
+ return languageForPath(relPath) !== null;
94
+ }
95
+
96
+ // src/domains/context/fingerprint.ts
97
+ var execFileAsync = promisify(execFile);
98
+ var DEFAULT_FINGERPRINT_CACHE_TTL_MS = 5e3;
99
+ var cachedFingerprints = /* @__PURE__ */ new Map();
100
+ var LOC_EXTENSIONS = /* @__PURE__ */ new Set([
101
+ ".ts",
102
+ ".tsx",
103
+ ".js",
104
+ ".mjs",
105
+ ".cjs",
106
+ ".py",
107
+ ".rs",
108
+ ".go",
109
+ ".cc",
110
+ ".cpp",
111
+ ".cxx",
112
+ ".hpp",
113
+ ".hh",
114
+ ".hxx",
115
+ ".c",
116
+ ".h",
117
+ ".cu",
118
+ ".cuh",
119
+ ".java",
120
+ ".kt"
121
+ ]);
122
+ function extensionOf2(name) {
123
+ const index = name.lastIndexOf(".");
124
+ return index === -1 ? "" : name.slice(index);
125
+ }
126
+ function currentGitHead(cwd) {
127
+ try {
128
+ return execFileSync("git", ["rev-parse", "--verify", "HEAD"], {
129
+ cwd,
130
+ encoding: "utf8",
131
+ stdio: ["ignore", "pipe", "ignore"]
132
+ }).trim();
133
+ } catch {
134
+ return null;
135
+ }
136
+ }
137
+ async function currentGitHeadAsync(cwd) {
138
+ try {
139
+ const { stdout } = await execFileAsync("git", ["rev-parse", "--verify", "HEAD"], { cwd, encoding: "utf8" });
140
+ return stdout.trim();
141
+ } catch {
142
+ return null;
143
+ }
144
+ }
145
+ function countLines(text) {
146
+ if (text.length === 0) return 0;
147
+ let lines = 1;
148
+ for (const ch of text) {
149
+ if (ch === "\n") lines += 1;
150
+ }
151
+ return lines;
152
+ }
153
+ function locFromCodewiki(codewiki) {
154
+ if (!codewiki) return null;
155
+ return codewiki.files.reduce((sum, file) => file.lang === "config" ? sum : sum + file.loc, 0);
156
+ }
157
+ function createTreeHash() {
158
+ return createHash("sha256").update("clio-codewiki-tree:v3\n");
159
+ }
160
+ function accumulateFile(cwd, relPath, hash, artifactLoc) {
161
+ const contents = readFileSync(join(cwd, relPath));
162
+ const digest = createHash("sha256").update(contents).digest("hex");
163
+ hash.update(`${JSON.stringify(relPath)}:${digest}
164
+ `);
165
+ if (artifactLoc === null && LOC_EXTENSIONS.has(extensionOf2(relPath))) return countLines(contents.toString("utf8"));
166
+ return 0;
167
+ }
168
+ function computeFingerprint(cwd, codewiki = readCodewiki(cwd), options = {}) {
169
+ const files = enumerateWorkspaceFiles(cwd, WORKSPACE_EXCLUDED_DIRS).filter(isIndexablePath);
170
+ const hash = createTreeHash();
171
+ const artifactLoc = options.artifactLoc ?? locFromCodewiki(codewiki);
172
+ let loc = 0;
173
+ for (const relPath of files) loc += accumulateFile(cwd, relPath, hash, artifactLoc);
174
+ return {
175
+ treeHash: hash.digest("hex"),
176
+ gitHead: currentGitHead(cwd),
177
+ loc: artifactLoc ?? loc
178
+ };
179
+ }
180
+ async function computeFingerprintAsync(cwd, codewiki = void 0, options = {}) {
181
+ const slicer = options.slicer ?? createSlicer();
182
+ const artifact = codewiki === void 0 ? await readCodewikiAsync(cwd) : codewiki;
183
+ await slicer.tick();
184
+ const files = (await enumerateWorkspaceFilesAsync(cwd, WORKSPACE_EXCLUDED_DIRS, void 0, slicer)).filter(isIndexablePath);
185
+ const hash = createTreeHash();
186
+ const artifactLoc = locFromCodewiki(artifact);
187
+ let loc = 0;
188
+ for (const relPath of files) {
189
+ await slicer.tick();
190
+ loc += accumulateFile(cwd, relPath, hash, artifactLoc);
191
+ }
192
+ return {
193
+ treeHash: hash.digest("hex"),
194
+ gitHead: await currentGitHeadAsync(cwd),
195
+ loc: artifactLoc ?? loc
196
+ };
197
+ }
198
+ function computeFingerprintCached(cwd, codewiki = readCodewiki(cwd), options = {}) {
199
+ const now = Date.now();
200
+ const cached = cachedFingerprints.get(cwd);
201
+ if (cached && cached.expiresAtMs > now) return cached.fingerprint;
202
+ const fingerprint = computeFingerprint(cwd, codewiki, options);
203
+ const ttlMs = options.ttlMs ?? DEFAULT_FINGERPRINT_CACHE_TTL_MS;
204
+ cachedFingerprints.set(cwd, {
205
+ fingerprint,
206
+ expiresAtMs: Date.now() + Math.max(0, ttlMs)
207
+ });
208
+ return fingerprint;
209
+ }
210
+ function isStale(prev, curr) {
211
+ return prev.treeHash !== curr.treeHash;
212
+ }
213
+
214
+ // src/domains/context/codewiki/indexer.ts
215
+ init_esm_shims();
216
+ import { createHash as createHash2 } from "node:crypto";
217
+ import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
218
+ import { dirname, join as join2, relative, resolve } from "node:path";
219
+
220
+ // src/domains/context/codewiki/cmake.ts
221
+ init_esm_shims();
222
+ var SOURCE_EXTENSIONS2 = /* @__PURE__ */ new Set([
223
+ ".c",
224
+ ".cc",
225
+ ".cpp",
226
+ ".cxx",
227
+ ".cu",
228
+ ".cuh",
229
+ ".h",
230
+ ".hh",
231
+ ".hpp",
232
+ ".hxx",
233
+ ".java",
234
+ ".js",
235
+ ".jsx",
236
+ ".mjs",
237
+ ".cjs",
238
+ ".mts",
239
+ ".cts",
240
+ ".py",
241
+ ".pyw",
242
+ ".rb",
243
+ ".rs",
244
+ ".cs",
245
+ ".ts",
246
+ ".tsx"
247
+ ]);
248
+ var TARGET_SOURCE_KEYWORDS = /* @__PURE__ */ new Set([
249
+ "PUBLIC",
250
+ "PRIVATE",
251
+ "INTERFACE",
252
+ "BEFORE",
253
+ "FILE_SET",
254
+ "TYPE",
255
+ "BASE_DIRS",
256
+ "FILES"
257
+ ]);
258
+ function compareStrings(a, b) {
259
+ return a.localeCompare(b);
260
+ }
261
+ function uniqueSorted(values) {
262
+ return [...new Set(values)].sort(compareStrings);
263
+ }
264
+ function lineStarts(text) {
265
+ const starts = [0];
266
+ for (let index = 0; index < text.length; index += 1) {
267
+ if (text[index] === "\n") starts.push(index + 1);
268
+ }
269
+ return starts;
270
+ }
271
+ function lineAt(starts, offset) {
272
+ let low = 0;
273
+ let high = starts.length;
274
+ while (low < high) {
275
+ const middle = Math.floor((low + high) / 2);
276
+ if ((starts[middle] ?? 0) <= offset) low = middle + 1;
277
+ else high = middle;
278
+ }
279
+ return Math.max(1, low);
280
+ }
281
+ function readBracketBlock(text, index) {
282
+ if (text[index] !== "[") return null;
283
+ let delimiterEnd = index + 1;
284
+ while (text[delimiterEnd] === "=") delimiterEnd += 1;
285
+ if (text[delimiterEnd] !== "[") return null;
286
+ const equals = text.slice(index + 1, delimiterEnd);
287
+ const close = `]${equals}]`;
288
+ const contentStart = delimiterEnd + 1;
289
+ const closeStart = text.indexOf(close, contentStart);
290
+ if (closeStart === -1) return null;
291
+ return {
292
+ content: text.slice(contentStart, closeStart),
293
+ end: closeStart + close.length
294
+ };
295
+ }
296
+ function skipComment(text, index) {
297
+ const bracket = readBracketBlock(text, index + 1);
298
+ if (bracket) return bracket.end;
299
+ const newline = text.indexOf("\n", index + 1);
300
+ return newline === -1 ? text.length : newline + 1;
301
+ }
302
+ function skipTrivia(text, start) {
303
+ let index = start;
304
+ while (index < text.length) {
305
+ if (/\s/.test(text[index] ?? "")) {
306
+ index += 1;
307
+ continue;
308
+ }
309
+ if (text[index] === "#") {
310
+ index = skipComment(text, index);
311
+ continue;
312
+ }
313
+ break;
314
+ }
315
+ return index;
316
+ }
317
+ function readQuotedArgument(text, start) {
318
+ let content = "";
319
+ for (let index = start + 1; index < text.length; index += 1) {
320
+ const current = text[index] ?? "";
321
+ if (current === '"') return { content, end: index + 1 };
322
+ if (current === "\\") {
323
+ const next = text[index + 1];
324
+ if (next === void 0) return null;
325
+ if (next === "\n") {
326
+ index += 1;
327
+ continue;
328
+ }
329
+ content += next;
330
+ index += 1;
331
+ continue;
332
+ }
333
+ content += current;
334
+ }
335
+ return null;
336
+ }
337
+ function parseInvocation(text, name, line, openParen) {
338
+ const args = [];
339
+ let current = "";
340
+ let depth = 1;
341
+ let index = openParen + 1;
342
+ const flush = () => {
343
+ if (current.length > 0) args.push(current);
344
+ current = "";
345
+ };
346
+ while (index < text.length) {
347
+ const char = text[index] ?? "";
348
+ if (/\s/.test(char)) {
349
+ flush();
350
+ index += 1;
351
+ continue;
352
+ }
353
+ if (char === "#") {
354
+ flush();
355
+ index = skipComment(text, index);
356
+ continue;
357
+ }
358
+ if (char === '"') {
359
+ const quoted = readQuotedArgument(text, index);
360
+ if (!quoted) return null;
361
+ current += quoted.content;
362
+ index = quoted.end;
363
+ continue;
364
+ }
365
+ if (char === "[") {
366
+ const bracket = readBracketBlock(text, index);
367
+ if (bracket) {
368
+ current += bracket.content;
369
+ index = bracket.end;
370
+ continue;
371
+ }
372
+ }
373
+ if (char === "\\") {
374
+ const next = text[index + 1];
375
+ if (next === void 0) return null;
376
+ if (next === "\n") {
377
+ index += 2;
378
+ continue;
379
+ }
380
+ current += next;
381
+ index += 2;
382
+ continue;
383
+ }
384
+ if (char === ";" && depth === 1) {
385
+ flush();
386
+ index += 1;
387
+ continue;
388
+ }
389
+ if (char === "(") {
390
+ depth += 1;
391
+ current += char;
392
+ index += 1;
393
+ continue;
394
+ }
395
+ if (char === ")") {
396
+ depth -= 1;
397
+ if (depth === 0) {
398
+ flush();
399
+ return {
400
+ invocation: { name, line, args },
401
+ end: index + 1
402
+ };
403
+ }
404
+ current += char;
405
+ index += 1;
406
+ continue;
407
+ }
408
+ current += char;
409
+ index += 1;
410
+ }
411
+ return null;
412
+ }
413
+ function scanInvocations(text) {
414
+ const invocations = [];
415
+ const starts = lineStarts(text);
416
+ let index = 0;
417
+ while (index < text.length) {
418
+ index = skipTrivia(text, index);
419
+ if (index >= text.length) break;
420
+ if (text[index] === '"') {
421
+ const quoted = readQuotedArgument(text, index);
422
+ index = quoted?.end ?? text.length;
423
+ continue;
424
+ }
425
+ if (text[index] === "[") {
426
+ const bracket = readBracketBlock(text, index);
427
+ if (bracket) {
428
+ index = bracket.end;
429
+ continue;
430
+ }
431
+ }
432
+ const name = /^[A-Za-z_][A-Za-z_0-9]*/.exec(text.slice(index))?.[0];
433
+ if (!name) {
434
+ index += 1;
435
+ continue;
436
+ }
437
+ const nameStart = index;
438
+ const openParen = skipTrivia(text, index + name.length);
439
+ if (text[openParen] !== "(") {
440
+ index += name.length;
441
+ continue;
442
+ }
443
+ const parsed = parseInvocation(text, name.toLowerCase(), lineAt(starts, nameStart), openParen);
444
+ if (!parsed) {
445
+ index = openParen + 1;
446
+ continue;
447
+ }
448
+ invocations.push(parsed.invocation);
449
+ index = parsed.end;
450
+ }
451
+ return invocations;
452
+ }
453
+ function literal(value) {
454
+ if (!value) return null;
455
+ const trimmed = value.trim();
456
+ if (trimmed.length === 0 || trimmed.includes("$")) return null;
457
+ return trimmed.replace(/\\/g, "/");
458
+ }
459
+ function literalTarget(value) {
460
+ const target = literal(value);
461
+ return target && /^[A-Za-z0-9_.:+-]+$/.test(target) ? target : null;
462
+ }
463
+ function relativeSpecifier(value) {
464
+ if (value.startsWith("/") || /^[A-Za-z]:\//.test(value)) return null;
465
+ const normalized = value.replace(/^\.\//, "").replace(/\/+$/g, "");
466
+ if (normalized.length === 0) return null;
467
+ return normalized.startsWith(".") ? normalized : `./${normalized}`;
468
+ }
469
+ function sourceSpecifier(value) {
470
+ const path = literal(value);
471
+ if (!path || path.includes(";") || path.startsWith("-") || TARGET_SOURCE_KEYWORDS.has(path.toUpperCase())) return null;
472
+ const withoutQuery = path.split(/[?#]/, 1)[0] ?? path;
473
+ const dot = withoutQuery.lastIndexOf(".");
474
+ if (dot === -1 || !SOURCE_EXTENSIONS2.has(withoutQuery.slice(dot).toLowerCase())) return null;
475
+ return relativeSpecifier(path);
476
+ }
477
+ function childCMakeSpecifier(value) {
478
+ const directory = literal(value);
479
+ if (!directory) return null;
480
+ const relative2 = relativeSpecifier(directory);
481
+ if (!relative2) return null;
482
+ return `${relative2}/CMakeLists.txt`.replace(/\/\//g, "/");
483
+ }
484
+ function isCMakePath(path) {
485
+ const name = path.split("/").at(-1) ?? path;
486
+ return name === "CMakeLists.txt" || name.toLowerCase().endsWith(".cmake");
487
+ }
488
+ function extractCMake(text) {
489
+ const symbols = [];
490
+ const imports = [];
491
+ for (const invocation of scanInvocations(text)) {
492
+ if (invocation.name === "add_subdirectory") {
493
+ const child = childCMakeSpecifier(invocation.args[0]);
494
+ if (child) imports.push(child);
495
+ continue;
496
+ }
497
+ if (invocation.name === "add_library" || invocation.name === "add_executable") {
498
+ const target = literalTarget(invocation.args[0]);
499
+ if (!target) continue;
500
+ symbols.push({ name: target, kind: "const", line: invocation.line });
501
+ if (invocation.args[1]?.toUpperCase() === "ALIAS") continue;
502
+ for (const arg of invocation.args.slice(1)) {
503
+ const source = sourceSpecifier(arg);
504
+ if (source) imports.push(source);
505
+ }
506
+ continue;
507
+ }
508
+ if (invocation.name === "target_sources") {
509
+ if (!literalTarget(invocation.args[0])) continue;
510
+ for (const arg of invocation.args.slice(1)) {
511
+ const source = sourceSpecifier(arg);
512
+ if (source) imports.push(source);
513
+ }
514
+ }
515
+ }
516
+ return {
517
+ symbols: symbols.sort((a, b) => a.line - b.line || a.name.localeCompare(b.name)),
518
+ imports: uniqueSorted(imports)
519
+ };
520
+ }
521
+
522
+ // src/domains/context/codewiki/indexer.ts
523
+ var CODEWIKI_SYMBOL_KINDS_WITH_SIG = /* @__PURE__ */ new Set(["func", "class", "method", "type"]);
524
+ var treeSitterExtractorPromise = null;
525
+ function loadTreeSitterExtractor() {
526
+ treeSitterExtractorPromise ??= import("./tree-sitter-TQW3Y52T.js").then(
527
+ ({ createTreeSitterExtractor }) => createTreeSitterExtractor()
528
+ );
529
+ return treeSitterExtractorPromise;
530
+ }
531
+ var RESOLUTION_EXTENSIONS = [
532
+ ".ts",
533
+ ".tsx",
534
+ ".mts",
535
+ ".cts",
536
+ ".js",
537
+ ".jsx",
538
+ ".mjs",
539
+ ".cjs",
540
+ ".py",
541
+ ".go",
542
+ ".rs",
543
+ ".c",
544
+ ".h",
545
+ ".cc",
546
+ ".cpp",
547
+ ".cxx",
548
+ ".hpp",
549
+ ".hh",
550
+ ".hxx",
551
+ ".cu",
552
+ ".cuh",
553
+ ".java",
554
+ ".rb",
555
+ ".cs"
556
+ ];
557
+ function compareStrings2(a, b) {
558
+ return a.localeCompare(b);
559
+ }
560
+ function stableFileId(path) {
561
+ return `f_${createHash2("sha256").update(path).digest("hex").slice(0, 16)}`;
562
+ }
563
+ function contentHash(text) {
564
+ return createHash2("sha256").update(text).digest("hex").slice(0, 16);
565
+ }
566
+ function defaultReadFile(path) {
567
+ try {
568
+ return readFileSync2(path, "utf8");
569
+ } catch {
570
+ return null;
571
+ }
572
+ }
573
+ function normalizeRel(cwd, filePath) {
574
+ return relative(cwd, filePath).split("\\").join("/");
575
+ }
576
+ function normalizeInputPath(path) {
577
+ return path.split("\\").join("/").replace(/^\.\//, "");
578
+ }
579
+ function lineCount(text) {
580
+ if (text.length === 0) return 0;
581
+ return text.endsWith("\n") ? text.split("\n").length - 1 : text.split("\n").length;
582
+ }
583
+ function roleFor(relPath, language) {
584
+ if (language === "config") return "config";
585
+ const lower = relPath.toLowerCase();
586
+ if (lower.includes("/test/") || lower.includes("/tests/") || /\.(test|spec)\.[cm]?[jt]sx?$/.test(lower) || /(^|\/)test_.*\.py$/.test(lower) || /(^|\/).*_test\.(go|rs|rb)$/.test(lower)) {
587
+ return "test";
588
+ }
589
+ if (/(^|\/)(index|main|server|cli|orchestrator|bootstrap)\.[^.]+$/.test(lower) || lower.endsWith("/__main__.py")) {
590
+ return "entry";
591
+ }
592
+ return "module";
593
+ }
594
+ function firstDocSummary(text) {
595
+ const jsDoc = /\/\*\*([\s\S]*?)\*\//.exec(text)?.[1];
596
+ const pythonDoc = /^\s*(?:"""([\s\S]*?)"""|'''([\s\S]*?)''')/.exec(text);
597
+ const raw = jsDoc ?? pythonDoc?.[1] ?? pythonDoc?.[2];
598
+ if (!raw) return null;
599
+ const cleaned = raw.split("\n").map((line) => line.replace(/^\s*\*\s?/, "").trim()).filter((line) => line.length > 0 && !line.startsWith("@")).join(" ").replace(/\s+/g, " ").trim();
600
+ return cleaned.length > 0 ? cleaned.slice(0, 160) : null;
601
+ }
602
+ function sanitizeSymbolName(value) {
603
+ return value.trim().replace(/^self\./, "").replace(/^this\./, "").slice(0, 160);
604
+ }
605
+ function addSymbol(target, seen, name, kind, line, sig) {
606
+ if (!name) return;
607
+ const clean = sanitizeSymbolName(name);
608
+ if (clean.length === 0) return;
609
+ const key = `${clean}\0${kind}\0${line}`;
610
+ if (seen.has(key)) return;
611
+ seen.add(key);
612
+ target.push({
613
+ name: clean,
614
+ kind,
615
+ line,
616
+ ...sig && sig.trim().length > 0 ? { sig: sig.trim().slice(0, 240) } : {}
617
+ });
618
+ }
619
+ function uniqueSorted2(values) {
620
+ return [...new Set([...values].filter((item) => item.length > 0))].sort(compareStrings2);
621
+ }
622
+ function extractWithLineRegex(text, patterns) {
623
+ const symbols = [];
624
+ const seen = /* @__PURE__ */ new Set();
625
+ const lines = text.split(/\r?\n/);
626
+ for (const [index, line] of lines.entries()) {
627
+ for (const pattern of patterns) {
628
+ const match = pattern.regex.exec(line);
629
+ if (!match) continue;
630
+ const name = match[pattern.nameIndex ?? 1];
631
+ addSymbol(symbols, seen, name, pattern.kind, index + 1, line.trim());
632
+ }
633
+ }
634
+ return symbols.sort(compareSymbols);
635
+ }
636
+ function compareSymbols(a, b) {
637
+ return a.line - b.line || a.name.localeCompare(b.name) || a.kind.localeCompare(b.kind);
638
+ }
639
+ function extractMatches(text, regex, group = 1) {
640
+ const out = [];
641
+ for (const match of text.matchAll(regex)) {
642
+ const value = match[group];
643
+ if (value) out.push(value);
644
+ }
645
+ return out;
646
+ }
647
+ function maskCFamilyCommentsAndStrings(text) {
648
+ const chars = text.split("");
649
+ let state = "code";
650
+ for (let index = 0; index < chars.length; index += 1) {
651
+ const current = chars[index] ?? "";
652
+ const next = chars[index + 1] ?? "";
653
+ if (state === "code") {
654
+ if (current === "/" && next === "/") {
655
+ chars[index] = " ";
656
+ chars[index + 1] = " ";
657
+ state = "line-comment";
658
+ index += 1;
659
+ } else if (current === "/" && next === "*") {
660
+ chars[index] = " ";
661
+ chars[index + 1] = " ";
662
+ state = "block-comment";
663
+ index += 1;
664
+ } else if (current === "'") {
665
+ chars[index] = " ";
666
+ state = "single-quote";
667
+ } else if (current === '"') {
668
+ chars[index] = " ";
669
+ state = "double-quote";
670
+ }
671
+ continue;
672
+ }
673
+ if (current === "\n") {
674
+ if (state === "line-comment") state = "code";
675
+ continue;
676
+ }
677
+ chars[index] = " ";
678
+ if (state === "block-comment" && current === "*" && next === "/") {
679
+ chars[index + 1] = " ";
680
+ state = "code";
681
+ index += 1;
682
+ continue;
683
+ }
684
+ if ((state === "single-quote" || state === "double-quote") && current === "\\") {
685
+ if (index + 1 < chars.length && chars[index + 1] !== "\n") {
686
+ chars[index + 1] = " ";
687
+ index += 1;
688
+ }
689
+ continue;
690
+ }
691
+ if (state === "single-quote" && current === "'") state = "code";
692
+ if (state === "double-quote" && current === '"') state = "code";
693
+ }
694
+ return chars.join("");
695
+ }
696
+ function cFamilyAliasStatements(text) {
697
+ const masked = maskCFamilyCommentsAndStrings(text);
698
+ const statements = [];
699
+ const token = /\b(?:typedef|using)\b/g;
700
+ for (let match = token.exec(masked); match; match = token.exec(masked)) {
701
+ const start = match.index;
702
+ const lineStart = masked.lastIndexOf("\n", start - 1) + 1;
703
+ if (masked.slice(lineStart, start).trimStart().startsWith("#")) continue;
704
+ let braces = 0;
705
+ let parentheses = 0;
706
+ let brackets = 0;
707
+ let end = -1;
708
+ for (let index = token.lastIndex; index < masked.length; index += 1) {
709
+ const current = masked[index];
710
+ if (current === "{") braces += 1;
711
+ else if (current === "}") braces = Math.max(0, braces - 1);
712
+ else if (current === "(") parentheses += 1;
713
+ else if (current === ")") parentheses = Math.max(0, parentheses - 1);
714
+ else if (current === "[") brackets += 1;
715
+ else if (current === "]") brackets = Math.max(0, brackets - 1);
716
+ else if (current === ";" && braces === 0 && parentheses === 0 && brackets === 0) {
717
+ end = index + 1;
718
+ break;
719
+ }
720
+ }
721
+ if (end === -1) continue;
722
+ statements.push({
723
+ text: text.slice(start, end),
724
+ masked: masked.slice(start, end),
725
+ line: 1 + Array.from(masked.slice(0, start).matchAll(/\n/g)).length
726
+ });
727
+ token.lastIndex = end;
728
+ }
729
+ return statements;
730
+ }
731
+ function stripCFamilyBraceBodies(statement) {
732
+ let depth = 0;
733
+ let result = "";
734
+ for (const current of statement) {
735
+ if (current === "{") {
736
+ depth += 1;
737
+ result += " ";
738
+ continue;
739
+ }
740
+ if (current === "}") {
741
+ depth = Math.max(0, depth - 1);
742
+ result += " ";
743
+ continue;
744
+ }
745
+ result += depth === 0 || current === "\n" ? current : " ";
746
+ }
747
+ return result;
748
+ }
749
+ function splitCFamilyDeclarators(value) {
750
+ const parts = [];
751
+ let start = 0;
752
+ let parentheses = 0;
753
+ let brackets = 0;
754
+ let angles = 0;
755
+ for (let index = 0; index < value.length; index += 1) {
756
+ const current = value[index];
757
+ if (current === "(") parentheses += 1;
758
+ else if (current === ")") parentheses = Math.max(0, parentheses - 1);
759
+ else if (current === "[") brackets += 1;
760
+ else if (current === "]") brackets = Math.max(0, brackets - 1);
761
+ else if (current === "<") angles += 1;
762
+ else if (current === ">") angles = Math.max(0, angles - 1);
763
+ else if (current === "," && parentheses === 0 && brackets === 0 && angles === 0) {
764
+ parts.push(value.slice(start, index));
765
+ start = index + 1;
766
+ }
767
+ }
768
+ parts.push(value.slice(start));
769
+ return parts;
770
+ }
771
+ var C_FAMILY_TYPE_WORDS = /* @__PURE__ */ new Set([
772
+ "typedef",
773
+ "const",
774
+ "volatile",
775
+ "restrict",
776
+ "signed",
777
+ "unsigned",
778
+ "short",
779
+ "long",
780
+ "void",
781
+ "char",
782
+ "int",
783
+ "float",
784
+ "double",
785
+ "struct",
786
+ "union",
787
+ "enum",
788
+ "class",
789
+ "typename",
790
+ "auto"
791
+ ]);
792
+ function stripTrailingCFamilyDeclaratorSuffixes(value) {
793
+ let end = value.length;
794
+ while (end > 0) {
795
+ while (end > 0 && /\s/.test(value[end - 1] ?? "")) end -= 1;
796
+ const close = value[end - 1];
797
+ if (close !== ")" && close !== "]") break;
798
+ const open = close === ")" ? "(" : "[";
799
+ let depth = 1;
800
+ let start = end - 1;
801
+ for (start -= 1; start >= 0; start -= 1) {
802
+ const current = value[start];
803
+ if (current === close) depth += 1;
804
+ else if (current === open) {
805
+ depth -= 1;
806
+ if (depth === 0) break;
807
+ }
808
+ }
809
+ if (start < 0) break;
810
+ if (start === 0 || !/[A-Za-z_0-9)\]]/.test(value[start - 1] ?? "")) break;
811
+ end = start;
812
+ }
813
+ return value.slice(0, end);
814
+ }
815
+ function cFamilyTypedefNames(maskedStatement) {
816
+ const withoutBodies = stripCFamilyBraceBodies(maskedStatement).replace(/^\s*typedef\b/, "").replace(/;\s*$/, "");
817
+ const names = [];
818
+ for (const declarator of splitCFamilyDeclarators(withoutBodies)) {
819
+ const functionPointerNames = Array.from(
820
+ declarator.matchAll(
821
+ /\(\s*(?:[A-Za-z_]\w*\s+)*[*&]+\s*(?:(?:const|volatile|restrict)\s+)*([A-Za-z_]\w*)\s*(?:\[[^\]]*\]\s*)*\)(?=\s*\()/g
822
+ ),
823
+ (match) => match[1] ?? ""
824
+ ).filter((name2) => name2.length > 0);
825
+ if (functionPointerNames.length > 0) {
826
+ names.push(...functionPointerNames);
827
+ continue;
828
+ }
829
+ const declaratorWithoutSuffixes = stripTrailingCFamilyDeclaratorSuffixes(declarator);
830
+ const identifiers = Array.from(declaratorWithoutSuffixes.matchAll(/\b[A-Za-z_]\w*\b/g), (match) => match[0]).filter(
831
+ (name2) => !C_FAMILY_TYPE_WORDS.has(name2)
832
+ );
833
+ const name = identifiers.at(-1);
834
+ if (name) names.push(name);
835
+ }
836
+ return uniqueSorted2(names);
837
+ }
838
+ function extractCFamilyAliasSymbols(text) {
839
+ const symbols = [];
840
+ const seen = /* @__PURE__ */ new Set();
841
+ for (const statement of cFamilyAliasStatements(text)) {
842
+ const usingName = /^\s*using\s+([A-Za-z_]\w*)\s*=/.exec(statement.masked)?.[1];
843
+ const names = usingName ? [usingName] : /^\s*typedef\b/.test(statement.masked) ? cFamilyTypedefNames(statement.masked) : [];
844
+ const signature = statement.text.replace(/\s+/g, " ").trim();
845
+ for (const name of names) addSymbol(symbols, seen, name, "type", statement.line, signature);
846
+ }
847
+ return symbols;
848
+ }
849
+ var tsJsExtractor = {
850
+ langs: ["typescript", "javascript"],
851
+ extractImports(_path, text) {
852
+ return uniqueSorted2([
853
+ ...extractMatches(text, /\bimport\s+(?:type\s+)?(?:[^'"]*?\s+from\s+)?["']([^"']+)["']/g),
854
+ ...extractMatches(text, /\bexport\s+[^'"]*?\s+from\s+["']([^"']+)["']/g),
855
+ ...extractMatches(text, /\brequire\s*\(\s*["']([^"']+)["']\s*\)/g),
856
+ ...extractMatches(text, /\bimport\s*\(\s*["']([^"']+)["']\s*\)/g)
857
+ ]);
858
+ },
859
+ extract(_path, text) {
860
+ const symbols = extractWithLineRegex(text, [
861
+ { regex: /^\s*export\s+default\s+(?:async\s+)?function\s+([A-Za-z_$][\w$]*)?/, kind: "func" },
862
+ { regex: /^\s*(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\(/, kind: "func" },
863
+ { regex: /^\s*(?:export\s+)?class\s+([A-Za-z_$][\w$]*)\b/, kind: "class" },
864
+ { regex: /^\s*(?:export\s+)?interface\s+([A-Za-z_$][\w$]*)\b/, kind: "iface" },
865
+ { regex: /^\s*(?:export\s+)?type\s+([A-Za-z_$][\w$]*)\b/, kind: "type" },
866
+ { regex: /^\s*(?:export\s+)?enum\s+([A-Za-z_$][\w$]*)\b/, kind: "type" },
867
+ { regex: /^(?:\s*export\s+)?const\s+([A-Za-z_$][\w$]*)\b/, kind: "const" },
868
+ { regex: /^(?:\s*export\s+)?(?:let|var)\s+([A-Za-z_$][\w$]*)\b/, kind: "var" },
869
+ {
870
+ regex: /^(?: {2,}|\t+)(?:public\s+|private\s+|protected\s+|static\s+|override\s+|abstract\s+|async\s+|get\s+|set\s+)*(?!(?:if|for|while|switch|catch|return|typeof|else|do|new|await|yield)\b)([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*\{?$/,
871
+ kind: "method"
872
+ }
873
+ ]);
874
+ return { symbols, imports: tsJsExtractor.extractImports?.(_path, text) ?? [] };
875
+ }
876
+ };
877
+ var pythonExtractor = {
878
+ langs: ["python"],
879
+ extractImports(_path, text) {
880
+ return uniqueSorted2([
881
+ ...extractMatches(text, /^\s*import\s+([A-Za-z_][\w.]*)(?:\s+as\s+\w+)?/gm),
882
+ ...extractMatches(text, /^\s*from\s+([.\w]+)\s+import\s+/gm)
883
+ ]);
884
+ },
885
+ extract(_path, text) {
886
+ const rawSymbols = extractWithLineRegex(text, [
887
+ { regex: /^(\s*)def\s+([A-Za-z_]\w*)\s*\(/, kind: "func", nameIndex: 2 },
888
+ { regex: /^(\s*)async\s+def\s+([A-Za-z_]\w*)\s*\(/, kind: "func", nameIndex: 2 },
889
+ { regex: /^\s*class\s+([A-Za-z_]\w*)\b/, kind: "class" },
890
+ { regex: /^([A-Z][A-Z0-9_]*)\s*=/, kind: "const" },
891
+ { regex: /^([A-Za-z_]\w*)\s*=/, kind: "var" }
892
+ ]);
893
+ const symbols = rawSymbols.map((symbol) => {
894
+ if ((symbol.kind === "func" || symbol.kind === "var") && /^\s+/.test(symbol.sig ?? "")) {
895
+ return { ...symbol, kind: symbol.kind === "func" ? "method" : symbol.kind };
896
+ }
897
+ return symbol;
898
+ });
899
+ return { symbols: symbols.sort(compareSymbols), imports: pythonExtractor.extractImports?.(_path, text) ?? [] };
900
+ }
901
+ };
902
+ var goExtractor = {
903
+ langs: ["go"],
904
+ extractImports(_path, text) {
905
+ return uniqueSorted2([
906
+ ...extractMatches(text, /^\s*import\s+"([^"]+)"/gm),
907
+ ...extractMatches(text, /^\s*"([^"]+)"\s*$/gm)
908
+ ]);
909
+ },
910
+ extract(_path, text) {
911
+ const rawSymbols = extractWithLineRegex(text, [
912
+ { regex: /^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)\s*\(/, kind: "func" },
913
+ { regex: /^\s*type\s+([A-Za-z_]\w*)\s+interface\b/, kind: "iface" },
914
+ { regex: /^\s*type\s+([A-Za-z_]\w*)\s+struct\b/, kind: "type" },
915
+ { regex: /^\s*type\s+([A-Za-z_]\w*)\b/, kind: "type" },
916
+ { regex: /^const\s+([A-Za-z_]\w*)\b/, kind: "const" },
917
+ { regex: /^var\s+([A-Za-z_]\w*)\b/, kind: "var" }
918
+ ]);
919
+ const symbols = rawSymbols.map((symbol) => {
920
+ if (symbol.kind === "func" && /^\s*func\s+\(/.test(symbol.sig ?? "")) return { ...symbol, kind: "method" };
921
+ return symbol;
922
+ });
923
+ return { symbols: symbols.sort(compareSymbols), imports: goExtractor.extractImports?.(_path, text) ?? [] };
924
+ }
925
+ };
926
+ var rustExtractor = {
927
+ langs: ["rust"],
928
+ extractImports(_path, text) {
929
+ return uniqueSorted2([
930
+ ...extractMatches(text, /^\s*use\s+([^;]+);/gm).map((item) => item.trim()),
931
+ ...extractMatches(text, /^\s*extern\s+crate\s+([A-Za-z_]\w*)/gm)
932
+ ]);
933
+ },
934
+ extract(_path, text) {
935
+ const symbols = extractWithLineRegex(text, [
936
+ { regex: /^\s*(?:pub(?:\([^)]*\))?\s+)?fn\s+([A-Za-z_]\w*)\s*[<(]/, kind: "func" },
937
+ { regex: /^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+([A-Za-z_]\w*)\b/, kind: "type" },
938
+ { regex: /^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+([A-Za-z_]\w*)\b/, kind: "type" },
939
+ { regex: /^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+([A-Za-z_]\w*)\b/, kind: "trait" },
940
+ { regex: /^\s*(?:pub(?:\([^)]*\))?\s+)?type\s+([A-Za-z_]\w*)\b/, kind: "type" },
941
+ { regex: /^(?:\s*pub(?:\([^)]*\))?\s+)?const\s+([A-Za-z_]\w*)\b/, kind: "const" },
942
+ { regex: /^(?:\s*pub(?:\([^)]*\))?\s+)?static\s+([A-Za-z_]\w*)\b/, kind: "var" }
943
+ ]);
944
+ return { symbols, imports: rustExtractor.extractImports?.(_path, text) ?? [] };
945
+ }
946
+ };
947
+ var cFamilyExtractor = {
948
+ langs: ["c", "c++"],
949
+ extractImports(_path, text) {
950
+ const imports = [];
951
+ for (const match of text.matchAll(/^\s*#\s*include\s*(?:"([^"]+)"|<([^>]+)>)/gm)) {
952
+ const quoted = match[1];
953
+ const system = match[2];
954
+ if (quoted) imports.push(quoted.startsWith(".") || quoted.startsWith("/") ? quoted : `./${quoted}`);
955
+ else if (system) imports.push(system);
956
+ }
957
+ return uniqueSorted2(imports);
958
+ },
959
+ extract(_path, text) {
960
+ const regexSymbols = extractWithLineRegex(text, [
961
+ { regex: /^\s*class\s+([A-Za-z_]\w*)\b/, kind: "class" },
962
+ {
963
+ regex: /^\s*(?:typedef\s+)?(?:struct\s+|union\s+|enum\s+(?:(?:class|struct)\s+)?)([A-Za-z_]\w*)\b/,
964
+ kind: "type"
965
+ },
966
+ {
967
+ regex: /^\s*(?!(?:typedef|using)\b)(?:template\s*<[^>]+>\s*)?(?:[A-Za-z_][\w:<>,*&\s]+\s+)+(?:(?:[A-Za-z_]\w*)::)*([~A-Za-z_]\w*)\s*\([^;]*\)\s*(?:const\s*)?(?:noexcept\s*)?(?:;|\{)?$/,
968
+ kind: "func"
969
+ },
970
+ { regex: /^(?:const\s+)?[A-Za-z_][\w:<>,*&\s]+\s+([A-Z][A-Z0-9_]*)\s*=/, kind: "const" }
971
+ ]);
972
+ const symbolsByKey = /* @__PURE__ */ new Map();
973
+ for (const symbol of [...regexSymbols, ...extractCFamilyAliasSymbols(text)]) {
974
+ const key = `${symbol.name}\0${symbol.kind}\0${symbol.line}`;
975
+ if (!symbolsByKey.has(key)) symbolsByKey.set(key, symbol);
976
+ }
977
+ const symbols = [...symbolsByKey.values()].sort(compareSymbols);
978
+ return { symbols, imports: cFamilyExtractor.extractImports?.(_path, text) ?? [] };
979
+ }
980
+ };
981
+ var javaExtractor = {
982
+ langs: ["java"],
983
+ extractImports(_path, text) {
984
+ return uniqueSorted2(extractMatches(text, /^\s*import\s+(?:static\s+)?([A-Za-z_][\w.*]*);/gm));
985
+ },
986
+ extract(_path, text) {
987
+ const symbols = extractWithLineRegex(text, [
988
+ { regex: /^\s*(?:public\s+|private\s+|protected\s+|abstract\s+|final\s+)*class\s+([A-Za-z_]\w*)\b/, kind: "class" },
989
+ {
990
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|abstract\s+|final\s+)*interface\s+([A-Za-z_]\w*)\b/,
991
+ kind: "iface"
992
+ },
993
+ { regex: /^\s*(?:public\s+|private\s+|protected\s+|abstract\s+|final\s+)*enum\s+([A-Za-z_]\w*)\b/, kind: "type" },
994
+ {
995
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|static\s+|final\s+|synchronized\s+)*[A-Za-z_][\w<>,[\]\s]*\s+([A-Za-z_]\w*)\s*\([^)]*\)\s*\{?$/,
996
+ kind: "method"
997
+ },
998
+ {
999
+ regex: /^\s*public\s+(?:static\s+|final\s+)*[A-Za-z_][\w<>,[\]\s]*\s+([A-Z][A-Z0-9_]*)\s*=/,
1000
+ kind: "const"
1001
+ }
1002
+ ]);
1003
+ return { symbols, imports: javaExtractor.extractImports?.(_path, text) ?? [] };
1004
+ }
1005
+ };
1006
+ var rubyExtractor = {
1007
+ langs: ["ruby"],
1008
+ extractImports(_path, text) {
1009
+ return uniqueSorted2([
1010
+ ...extractMatches(text, /^\s*require\s+["']([^"']+)["']/gm),
1011
+ ...extractMatches(text, /^\s*require_relative\s+["']([^"']+)["']/gm).map((item) => `./${item}`)
1012
+ ]);
1013
+ },
1014
+ extract(_path, text) {
1015
+ const symbols = extractWithLineRegex(text, [
1016
+ { regex: /^\s*class\s+([A-Z]\w*(?:::[A-Z]\w*)*)\b/, kind: "class" },
1017
+ { regex: /^\s*module\s+([A-Z]\w*(?:::[A-Z]\w*)*)\b/, kind: "type" },
1018
+ { regex: /^\s*def\s+(?:self\.)?([A-Za-z_]\w*[!?=]?)\b/, kind: "func" },
1019
+ { regex: /^([A-Z][A-Z0-9_]*)\s*=/, kind: "const" }
1020
+ ]);
1021
+ return { symbols, imports: rubyExtractor.extractImports?.(_path, text) ?? [] };
1022
+ }
1023
+ };
1024
+ var csharpExtractor = {
1025
+ langs: ["c#"],
1026
+ extractImports(_path, text) {
1027
+ return uniqueSorted2(
1028
+ extractMatches(text, /^\s*using\s+(?:static\s+)?(?:[A-Za-z_]\w*\s*=\s*)?([A-Za-z_][\w.]*)\s*;/gm)
1029
+ );
1030
+ },
1031
+ extract(_path, text) {
1032
+ const symbols = extractWithLineRegex(text, [
1033
+ {
1034
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|internal\s+|static\s+|sealed\s+|abstract\s+|partial\s+)*class\s+([A-Za-z_]\w*)\b/,
1035
+ kind: "class"
1036
+ },
1037
+ {
1038
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|internal\s+|partial\s+)*interface\s+([A-Za-z_]\w*)\b/,
1039
+ kind: "iface"
1040
+ },
1041
+ {
1042
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|internal\s+|readonly\s+|partial\s+)*(?:enum|struct|record)\s+([A-Za-z_]\w*)\b/,
1043
+ kind: "type"
1044
+ },
1045
+ {
1046
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|internal\s+|static\s+|virtual\s+|override\s+|abstract\s+|sealed\s+|async\s+|partial\s+|new\s+)*(?!(?:if|for|foreach|while|switch|catch|return|using|else|do|new|class|interface|enum|struct|record|namespace|lock|throw)\b)[A-Za-z_][\w<>,[\].?\s]*\s+([A-Za-z_]\w*)\s*\([^)]*\)\s*\{?$/,
1047
+ kind: "method"
1048
+ },
1049
+ {
1050
+ regex: /^\s*(?:public\s+|private\s+|protected\s+|internal\s+|static\s+)*const\s+[A-Za-z_][\w<>,[\]\s]*\s+([A-Za-z_]\w*)\s*=/,
1051
+ kind: "const"
1052
+ }
1053
+ ]);
1054
+ return { symbols, imports: csharpExtractor.extractImports?.(_path, text) ?? [] };
1055
+ }
1056
+ };
1057
+ var fallbackExtractors = [
1058
+ tsJsExtractor,
1059
+ pythonExtractor,
1060
+ goExtractor,
1061
+ rustExtractor,
1062
+ cFamilyExtractor,
1063
+ javaExtractor,
1064
+ rubyExtractor,
1065
+ csharpExtractor
1066
+ ];
1067
+ function extractWithExtractors(extractors, language, relPath, text) {
1068
+ const symbols = /* @__PURE__ */ new Map();
1069
+ const imports = [];
1070
+ for (const extractor of extractors) {
1071
+ if (!extractor.langs.includes(language)) continue;
1072
+ const extracted = extractor.extract(relPath, text);
1073
+ for (const symbol of extracted.symbols) {
1074
+ const key = `${symbol.name}\0${symbol.kind}\0${symbol.line}`;
1075
+ if (!symbols.has(key)) symbols.set(key, symbol);
1076
+ }
1077
+ imports.push(...extracted.imports);
1078
+ }
1079
+ return {
1080
+ symbols: [...symbols.values()].sort(compareSymbols),
1081
+ imports: uniqueSorted2(imports)
1082
+ };
1083
+ }
1084
+ function extractImportsWithExtractors(extractors, language, relPath, text) {
1085
+ const imports = [];
1086
+ for (const extractor of extractors) {
1087
+ if (!extractor.langs.includes(language) || !extractor.extractImports) continue;
1088
+ imports.push(...extractor.extractImports(relPath, text));
1089
+ }
1090
+ return uniqueSorted2(imports);
1091
+ }
1092
+ function mergeTreeSitterWithRegexImports(language, relPath, text, extracted) {
1093
+ const regexImports = extractImportsWithExtractors(fallbackExtractors, language, relPath, text);
1094
+ return {
1095
+ symbols: extracted.symbols.sort(compareSymbols),
1096
+ imports: uniqueSorted2([...extracted.imports, ...regexImports])
1097
+ };
1098
+ }
1099
+ function fallbackExtraction(language, relPath, text) {
1100
+ return extractWithExtractors(fallbackExtractors, language, relPath, text);
1101
+ }
1102
+ var MAX_TREE_SITTER_SOURCE_CHARS = 512 * 1024;
1103
+ function extractSourceFile(language, relPath, text, treeSitterExtractor) {
1104
+ if (!treeSitterExtractor.langs.includes(language)) return fallbackExtraction(language, relPath, text);
1105
+ if (text.length > MAX_TREE_SITTER_SOURCE_CHARS) return fallbackExtraction(language, relPath, text);
1106
+ try {
1107
+ return mergeTreeSitterWithRegexImports(language, relPath, text, treeSitterExtractor.extract(relPath, text));
1108
+ } catch {
1109
+ return fallbackExtraction(language, relPath, text);
1110
+ }
1111
+ }
1112
+ function buildFile(cwd, relPath, treeSitterExtractor, readFile) {
1113
+ const pathLanguage = languageForPath(relPath);
1114
+ if (!pathLanguage) return null;
1115
+ let text;
1116
+ try {
1117
+ text = readFile(join2(cwd, relPath));
1118
+ } catch {
1119
+ return null;
1120
+ }
1121
+ if (text === null) return null;
1122
+ const language = pathLanguage === "c" && isAmbiguousHeaderPath(relPath) ? classifyCHeaderLanguage(text) : pathLanguage;
1123
+ const file = {
1124
+ id: stableFileId(relPath),
1125
+ path: relPath,
1126
+ lang: language,
1127
+ loc: lineCount(text),
1128
+ role: roleFor(relPath, language),
1129
+ hash: contentHash(text),
1130
+ imports: []
1131
+ };
1132
+ if (text.trim().length === 0) return { file, symbols: [] };
1133
+ const extracted = isCMakePath(relPath) ? extractCMake(text) : language !== "config" ? extractSourceFile(language, relPath, text, treeSitterExtractor) : null;
1134
+ if (!extracted) return { file, symbols: [] };
1135
+ const summary = firstDocSummary(text);
1136
+ const sourceFile = {
1137
+ ...file,
1138
+ imports: extracted.imports,
1139
+ ...summary ? { summary } : {}
1140
+ };
1141
+ const symbols = extracted.symbols.map((symbol) => ({
1142
+ name: symbol.name,
1143
+ kind: symbol.kind,
1144
+ fileId: sourceFile.id,
1145
+ line: symbol.line,
1146
+ ...symbolSigFields(symbol.kind, symbol.sig)
1147
+ }));
1148
+ return {
1149
+ file: sourceFile,
1150
+ symbols
1151
+ };
1152
+ }
1153
+ function candidatePathsForImport(cwd, fromRel, specifier) {
1154
+ const fromDir = dirname(join2(cwd, fromRel));
1155
+ const cleaned = specifier.replace(/\\/g, "/");
1156
+ const base = cleaned.startsWith(".") || cleaned.startsWith("/") ? resolve(fromDir, cleaned) : "";
1157
+ if (!base) return [];
1158
+ const candidates = [base];
1159
+ for (const ext of RESOLUTION_EXTENSIONS) candidates.push(`${base}${ext}`);
1160
+ for (const ext of RESOLUTION_EXTENSIONS) candidates.push(join2(base, `index${ext}`));
1161
+ if (cleaned.endsWith(".js")) {
1162
+ const stripped = base.replace(/\.js$/, "");
1163
+ for (const ext of [".ts", ".tsx", ".mts", ".cts"]) candidates.push(`${stripped}${ext}`);
1164
+ }
1165
+ return uniqueSorted2(
1166
+ candidates.map((candidate) => normalizeRel(cwd, candidate)).filter((candidate) => !candidate.startsWith(".."))
1167
+ );
1168
+ }
1169
+ function createImportResolver(cwd) {
1170
+ const candidatesByOrigin = /* @__PURE__ */ new Map();
1171
+ const onDisk = /* @__PURE__ */ new Map();
1172
+ const candidatesFor = (fromRel, specifier) => {
1173
+ const python = /\.pyw?$/.test(fromRel);
1174
+ const key = `${python}\0${dirname(fromRel)}\0${specifier}`;
1175
+ let candidates = candidatesByOrigin.get(key);
1176
+ if (!candidates) {
1177
+ if (python) {
1178
+ const fromDir = dirname(fromRel);
1179
+ let packageRoot = fromDir;
1180
+ while (packageRoot !== "." && isFile(join2(packageRoot, "__init__.py"))) {
1181
+ packageRoot = dirname(packageRoot);
1182
+ }
1183
+ const dots = /^\.+/.exec(specifier)?.[0].length ?? 0;
1184
+ const modulePath = specifier.slice(dots).replace(/\./g, "/");
1185
+ let bases;
1186
+ if (dots > 0) {
1187
+ const parent = resolve(cwd, fromDir, ...Array(dots - 1).fill(".."));
1188
+ const root = resolve(cwd, packageRoot === fromDir ? "." : packageRoot);
1189
+ const insidePackage = parent !== root || root === resolve(cwd) && isFile("__init__.py");
1190
+ bases = insidePackage && !relative(root, parent).startsWith("..") ? [join2(parent, modulePath)] : [];
1191
+ } else {
1192
+ bases = [resolve(cwd, modulePath)];
1193
+ if (packageRoot !== fromDir && packageRoot !== ".") bases.push(resolve(cwd, packageRoot, modulePath));
1194
+ }
1195
+ candidates = [...new Set(bases.flatMap((base) => [join2(base, "__init__.py"), `${base}.py`]))].map(
1196
+ (candidate) => normalizeRel(cwd, candidate)
1197
+ );
1198
+ } else {
1199
+ candidates = candidatePathsForImport(cwd, fromRel, specifier);
1200
+ }
1201
+ candidatesByOrigin.set(key, candidates);
1202
+ }
1203
+ return candidates;
1204
+ };
1205
+ const isFile = (candidate) => {
1206
+ const cached = onDisk.get(candidate);
1207
+ if (cached !== void 0) return cached;
1208
+ let exists;
1209
+ try {
1210
+ exists = statSync(join2(cwd, candidate)).isFile();
1211
+ } catch {
1212
+ exists = false;
1213
+ }
1214
+ onDisk.set(candidate, exists);
1215
+ return exists;
1216
+ };
1217
+ return {
1218
+ resolve(fromRel, specifier, pathToId) {
1219
+ for (const candidate of candidatesFor(fromRel, specifier)) {
1220
+ if (pathToId.has(candidate)) return pathToId.get(candidate) ?? null;
1221
+ if (isFile(candidate)) return null;
1222
+ }
1223
+ return null;
1224
+ }
1225
+ };
1226
+ }
1227
+ async function buildEdges(cwd, files, slicer) {
1228
+ const pathToId = new Map(files.map((file) => [file.path, file.id]));
1229
+ const resolver = createImportResolver(cwd);
1230
+ const edges = [];
1231
+ const seen = /* @__PURE__ */ new Set();
1232
+ for (const file of files) {
1233
+ for (const specifier of file.imports) {
1234
+ await slicer.tick();
1235
+ const target = resolver.resolve(file.path, specifier, pathToId);
1236
+ const edge = target ? { fileId: file.id, toFileId: target } : { fileId: file.id, externalModule: specifier };
1237
+ const key = "toFileId" in edge ? `${edge.fileId}\0${edge.toFileId}` : `${edge.fileId}\0${edge.externalModule}`;
1238
+ if (seen.has(key)) continue;
1239
+ seen.add(key);
1240
+ edges.push(edge);
1241
+ }
1242
+ }
1243
+ return edges.sort(compareEdges);
1244
+ }
1245
+ function compareFiles(a, b) {
1246
+ return a.path.localeCompare(b.path);
1247
+ }
1248
+ function compareCodewikiSymbols(a, b) {
1249
+ const pathCmp = a.fileId.localeCompare(b.fileId);
1250
+ return pathCmp || a.line - b.line || a.name.localeCompare(b.name) || a.kind.localeCompare(b.kind);
1251
+ }
1252
+ function compareEdges(a, b) {
1253
+ const fileCmp = a.fileId.localeCompare(b.fileId);
1254
+ if (fileCmp !== 0) return fileCmp;
1255
+ const aTarget = "toFileId" in a ? a.toFileId : `~${a.externalModule}`;
1256
+ const bTarget = "toFileId" in b ? b.toFileId : `~${b.externalModule}`;
1257
+ return aTarget.localeCompare(bTarget);
1258
+ }
1259
+ function promoteSingleSourceEntry(files) {
1260
+ const sourceFiles = files.filter((file) => file.lang !== "config");
1261
+ if (sourceFiles.length !== 1) return files;
1262
+ const only = sourceFiles[0];
1263
+ if (only?.role !== "module") return files;
1264
+ return files.map((file) => file.id === only.id ? { ...file, role: "entry" } : file);
1265
+ }
1266
+ async function codewikiFromBuiltFiles(cwd, language, builtFiles, slicer) {
1267
+ const baseBuiltFiles = builtFiles.map((item) => ({
1268
+ ...item,
1269
+ file: { ...item.file, role: roleFor(item.file.path, item.file.lang) }
1270
+ }));
1271
+ const files = promoteSingleSourceEntry(baseBuiltFiles.map((item) => item.file).sort(compareFiles));
1272
+ const roleById = new Map(files.map((file) => [file.id, file.role]));
1273
+ const normalizedBuilt = baseBuiltFiles.map((item) => {
1274
+ const role = roleById.get(item.file.id);
1275
+ return role && role !== item.file.role ? { ...item, file: { ...item.file, role } } : item;
1276
+ });
1277
+ const normalizedFiles = normalizedBuilt.map((item) => item.file).sort(compareFiles);
1278
+ return {
1279
+ version: CODEWIKI_VERSION,
1280
+ language,
1281
+ files: normalizedFiles,
1282
+ symbols: normalizedBuilt.flatMap((item) => item.symbols).sort(compareCodewikiSymbols),
1283
+ edges: await buildEdges(cwd, normalizedFiles, slicer)
1284
+ };
1285
+ }
1286
+ async function buildFromPaths(cwd, language, relPaths, options = {}) {
1287
+ const slicer = options.slicer ?? createSlicer();
1288
+ const sortedPaths = [...relPaths].sort(compareStrings2);
1289
+ const treeSitterExtractor = await loadTreeSitterExtractor();
1290
+ await treeSitterExtractor.ensureGrammarsForPaths(sortedPaths);
1291
+ const readFile = options.readFile ?? defaultReadFile;
1292
+ const builtFiles = [];
1293
+ for (const relPath of sortedPaths) {
1294
+ await slicer.tick();
1295
+ const built = buildFile(cwd, relPath, treeSitterExtractor, readFile);
1296
+ if (built) builtFiles.push(built);
1297
+ }
1298
+ return codewikiFromBuiltFiles(cwd, language, builtFiles, slicer);
1299
+ }
1300
+ async function buildCodewiki(input, options = {}) {
1301
+ const slicer = options.slicer ?? createSlicer();
1302
+ const files = (await enumerateWorkspaceFilesAsync(input.cwd, WORKSPACE_EXCLUDED_DIRS, void 0, slicer)).filter(
1303
+ isIndexablePath
1304
+ );
1305
+ return buildFromPaths(input.cwd, input.language, files, { ...options, slicer });
1306
+ }
1307
+ async function updateCodewikiPaths(cwd, codewiki, paths, options = {}) {
1308
+ const normalizedPaths = uniqueSorted2(
1309
+ paths.map(normalizeInputPath).filter((path) => path.length > 0 && !path.startsWith(".."))
1310
+ );
1311
+ if (normalizedPaths.length === 0) return codewiki;
1312
+ if (normalizedPaths.some(
1313
+ (path) => path === ".gitignore" || path.endsWith("/.gitignore") || path === ".git/info/exclude" || path === ".git/index" || path === ".gitmodules"
1314
+ )) {
1315
+ return syncCodewiki(cwd, codewiki, options);
1316
+ }
1317
+ const slicer = options.slicer ?? createSlicer();
1318
+ const existingFiles = new Map(codewiki.files.map((file) => [file.path, file]));
1319
+ const visiblePaths = new Set(filterWorkspaceFileCandidates(cwd, normalizedPaths, WORKSPACE_EXCLUDED_DIRS));
1320
+ const readFile = options.readFile ?? defaultReadFile;
1321
+ const currentTexts = /* @__PURE__ */ new Map();
1322
+ const changedPathSet = /* @__PURE__ */ new Set();
1323
+ const rebuildPaths = [];
1324
+ for (const relPath of normalizedPaths) {
1325
+ const existing = existingFiles.get(relPath);
1326
+ const isCurrentIndexableFile = isIndexablePath(relPath) && visiblePaths.has(relPath);
1327
+ if (!existing && !isCurrentIndexableFile) continue;
1328
+ if (isCurrentIndexableFile) {
1329
+ const text = readFile(join2(cwd, relPath));
1330
+ if (text !== null) {
1331
+ if (existing?.hash === contentHash(text)) continue;
1332
+ currentTexts.set(relPath, text);
1333
+ rebuildPaths.push(relPath);
1334
+ }
1335
+ }
1336
+ changedPathSet.add(relPath);
1337
+ }
1338
+ if (changedPathSet.size === 0) return codewiki;
1339
+ const rebuiltFiles = [];
1340
+ if (rebuildPaths.length > 0) {
1341
+ const treeSitterExtractor = await loadTreeSitterExtractor();
1342
+ await treeSitterExtractor.ensureGrammarsForPaths(rebuildPaths);
1343
+ for (const relPath of rebuildPaths) {
1344
+ await slicer.tick();
1345
+ const built = buildFile(
1346
+ cwd,
1347
+ relPath,
1348
+ treeSitterExtractor,
1349
+ (path) => currentTexts.get(normalizeRel(cwd, path)) ?? null
1350
+ );
1351
+ if (built) rebuiltFiles.push(built);
1352
+ }
1353
+ }
1354
+ const removedFileIds = new Set(codewiki.files.filter((file) => changedPathSet.has(file.path)).map((file) => file.id));
1355
+ const symbolsByFileId = /* @__PURE__ */ new Map();
1356
+ for (const symbol of codewiki.symbols) {
1357
+ if (removedFileIds.has(symbol.fileId)) continue;
1358
+ const symbols = symbolsByFileId.get(symbol.fileId) ?? [];
1359
+ symbols.push(symbol);
1360
+ symbolsByFileId.set(symbol.fileId, symbols);
1361
+ }
1362
+ const keptFiles = codewiki.files.filter((file) => !changedPathSet.has(file.path)).map((file) => ({ file, symbols: symbolsByFileId.get(file.id) ?? [] }));
1363
+ return codewikiFromBuiltFiles(cwd, codewiki.language, [...keptFiles, ...rebuiltFiles], slicer);
1364
+ }
1365
+ async function syncCodewiki(cwd, codewiki, options = {}) {
1366
+ const slicer = options.slicer ?? createSlicer();
1367
+ const readFile = options.readFile ?? defaultReadFile;
1368
+ const currentPaths = (await enumerateWorkspaceFilesAsync(cwd, WORKSPACE_EXCLUDED_DIRS, void 0, slicer)).filter(
1369
+ isIndexablePath
1370
+ );
1371
+ const currentFiles = /* @__PURE__ */ new Map();
1372
+ const currentTexts = /* @__PURE__ */ new Map();
1373
+ for (const relPath of currentPaths) {
1374
+ await slicer.tick();
1375
+ const text = readFile(join2(cwd, relPath));
1376
+ if (text !== null) {
1377
+ currentFiles.set(relPath, contentHash(text));
1378
+ currentTexts.set(relPath, text);
1379
+ }
1380
+ }
1381
+ const indexedFiles = new Map(codewiki.files.map((file) => [file.path, file]));
1382
+ const changedPaths = /* @__PURE__ */ new Set();
1383
+ for (const [relPath, hash] of currentFiles) {
1384
+ if (indexedFiles.get(relPath)?.hash !== hash) changedPaths.add(relPath);
1385
+ }
1386
+ for (const relPath of indexedFiles.keys()) {
1387
+ if (!currentFiles.has(relPath)) changedPaths.add(relPath);
1388
+ }
1389
+ if (changedPaths.size === 0) {
1390
+ if (!codewiki.files.some((file) => file.lang === "python")) return codewiki;
1391
+ const edges = await buildEdges(cwd, codewiki.files, slicer);
1392
+ return JSON.stringify(edges) === JSON.stringify(codewiki.edges) ? codewiki : { ...codewiki, edges };
1393
+ }
1394
+ const syncOptions = {
1395
+ ...options,
1396
+ slicer,
1397
+ readFile: (path) => currentTexts.get(normalizeRel(cwd, path)) ?? readFile(path)
1398
+ };
1399
+ return updateCodewikiPaths(cwd, codewiki, [...changedPaths], syncOptions);
1400
+ }
1401
+ function symbolSigFields(kind, sig) {
1402
+ if (!CODEWIKI_SYMBOL_KINDS_WITH_SIG.has(kind)) return {};
1403
+ const clean = sig?.trim().slice(0, 240);
1404
+ return clean && clean.length > 0 ? { sig: clean } : {};
1405
+ }
1406
+
1407
+ export {
1408
+ computeFingerprint,
1409
+ computeFingerprintAsync,
1410
+ computeFingerprintCached,
1411
+ isStale,
1412
+ buildCodewiki,
1413
+ updateCodewikiPaths,
1414
+ syncCodewiki
1415
+ };
1416
+ //# sourceMappingURL=chunk-QG6I2T5E.js.map