@iowarp/clio-coder 0.4.4 → 0.4.6

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 (598) hide show
  1. package/CHANGELOG.md +116 -2
  2. package/CONTRIBUTING.md +39 -24
  3. package/NOTICE +16 -0
  4. package/README.md +343 -403
  5. package/dist/{acp-WNAYYF4F.js → acp-UVEVWSDL.js} +25 -24
  6. package/dist/{agents-3OKXHLOI.js → agents-VWY37DTK.js} +78 -77
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-VKNNMGPU.js → auth-PCV2XQDV.js} +38 -38
  9. package/dist/builtins-PD652MTK.js +22 -0
  10. package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
  11. package/dist/{chunk-NRO2BJRH.js → chunk-24T2YZ7A.js} +10686 -4464
  12. package/dist/{chunk-Y55JBDO5.js → chunk-2AKYFREM.js} +38 -23
  13. package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
  14. package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
  15. package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
  16. package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
  17. package/dist/{chunk-UXCU4E3T.js → chunk-3BJGMT2D.js} +35 -14
  18. package/dist/{chunk-5ICU3EUH.js → chunk-3HQVBIKD.js} +5 -5
  19. package/dist/{chunk-GWZNEVM2.js → chunk-3JLFK5MW.js} +9 -9
  20. package/dist/{chunk-XXYSBZIQ.js → chunk-3O2ZAUGQ.js} +4 -4
  21. package/dist/{chunk-GX5WYQO4.js → chunk-3QKXHCGS.js} +8 -8
  22. package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
  23. package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
  24. package/dist/{chunk-OEJSLEPW.js → chunk-3WBALRQH.js} +337 -337
  25. package/dist/{chunk-ELWDPP3Y.js → chunk-4DU2TVI4.js} +8 -8
  26. package/dist/{chunk-JSD46VO2.js → chunk-4U4TKZFR.js} +43 -36
  27. package/dist/{chunk-FEAXX7B6.js → chunk-4VMV6OS6.js} +4 -4
  28. package/dist/{chunk-2ZSONWVL.js → chunk-536HXRFE.js} +13 -13
  29. package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
  30. package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
  31. package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
  32. package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
  33. package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
  34. package/dist/{chunk-Q4WO54TA.js → chunk-5QRX7SLS.js} +11 -11
  35. package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
  36. package/dist/chunk-5ZSZEYJK.js +119 -0
  37. package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
  38. package/dist/{chunk-DT3LWJOB.js → chunk-6HAO6X5B.js} +24 -6
  39. package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
  40. package/dist/{chunk-K6T2ZAMZ.js → chunk-6OII3LOK.js} +6 -6
  41. package/dist/{chunk-36CT5VVL.js → chunk-6RYDAVQT.js} +138 -89
  42. package/dist/{chunk-I7XBWTYH.js → chunk-6VRRJT7L.js} +5 -5
  43. package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
  44. package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
  45. package/dist/{chunk-NAI6ZFCY.js → chunk-7JSSKXG2.js} +122 -11
  46. package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
  47. package/dist/chunk-7WUZEB2M.js +165 -0
  48. package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
  49. package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
  50. package/dist/{chunk-IXIY2H4R.js → chunk-ACCKVSHU.js} +5 -5
  51. package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
  52. package/dist/{chunk-JEIYHLOR.js → chunk-B3MOMLJ4.js} +12 -12
  53. package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
  54. package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
  55. package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
  56. package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
  57. package/dist/{chunk-23L32XTI.js → chunk-BLTEAUCB.js} +68 -39
  58. package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
  59. package/dist/{chunk-XULDXHTN.js → chunk-BT7HGDOX.js} +105 -53
  60. package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
  61. package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
  62. package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
  63. package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
  64. package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
  65. package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
  66. package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
  67. package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
  68. package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
  69. package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
  70. package/dist/{chunk-6UINWWS6.js → chunk-DXLUVUD4.js} +16 -16
  71. package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
  72. package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
  73. package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
  74. package/dist/{chunk-JT2RFCC5.js → chunk-E7RF4KBO.js} +5 -5
  75. package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
  76. package/dist/chunk-ECOMVOHP.js +139 -0
  77. package/dist/chunk-EFSEIZE6.js +56 -0
  78. package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
  79. package/dist/chunk-EM2WNQS2.js +93 -0
  80. package/dist/{chunk-57XXR6DR.js → chunk-F5Z7EWMN.js} +967 -246
  81. package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
  82. package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
  83. package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
  84. package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
  85. package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
  86. package/dist/{chunk-EXLD33WO.js → chunk-GLYBJ4RQ.js} +24 -9
  87. package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
  88. package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
  89. package/dist/{chunk-FFUPXJC4.js → chunk-HPTJF6DG.js} +32 -56
  90. package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
  91. package/dist/{chunk-CUSRQKPU.js → chunk-HZ2T2YED.js} +299 -89
  92. package/dist/{chunk-YD5GIKET.js → chunk-HZFBVU5X.js} +49 -580
  93. package/dist/{chunk-6QOTUPRG.js → chunk-I2K2NCZQ.js} +65 -17
  94. package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
  95. package/dist/{chunk-I2DWJ4GM.js → chunk-IGLVVNEG.js} +54 -42
  96. package/dist/{chunk-6Q3CYFD3.js → chunk-IKRWLEDA.js} +186 -35
  97. package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
  98. package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
  99. package/dist/{chunk-2DSOYNFC.js → chunk-JMPL7NUB.js} +7 -7
  100. package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
  101. package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
  102. package/dist/{chunk-54X7T7DK.js → chunk-KAFMW7WM.js} +72 -81
  103. package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
  104. package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
  105. package/dist/chunk-KPRLAMP4.js +32 -0
  106. package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
  107. package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
  108. package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
  109. package/dist/{chunk-JQLNNIKT.js → chunk-LIN2K3EL.js} +6 -6
  110. package/dist/{chunk-2STGEDFV.js → chunk-LK2FN5JY.js} +2 -2
  111. package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
  112. package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
  113. package/dist/chunk-LUL5Z66S.js +221 -0
  114. package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
  115. package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
  116. package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
  117. package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
  118. package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
  119. package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
  120. package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
  121. package/dist/{chunk-4WR7VSYB.js → chunk-N2OKBREN.js} +23 -9
  122. package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
  123. package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
  124. package/dist/{chunk-4M6Z5QVF.js → chunk-NNWJYUNO.js} +11 -11
  125. package/dist/chunk-NTK3WTHM.js +141 -0
  126. package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
  127. package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
  128. package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
  129. package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
  130. package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
  131. package/dist/{chunk-75W7L2E2.js → chunk-P5JMBPDJ.js} +1052 -171
  132. package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
  133. package/dist/{chunk-S6PYF2XF.js → chunk-P6M7RKMI.js} +4 -4
  134. package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
  135. package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
  136. package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
  137. package/dist/{chunk-DXKJURES.js → chunk-PZN2LQY6.js} +14 -11
  138. package/dist/{chunk-N56KALIC.js → chunk-Q7NNUHQV.js} +62 -35
  139. package/dist/{chunk-RQCKCSRL.js → chunk-QCOV5DFY.js} +22 -22
  140. package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
  141. package/dist/{chunk-NEKRRTYW.js → chunk-QJMRYTCX.js} +8 -8
  142. package/dist/{chunk-YNFKXPEC.js → chunk-QNWRHOMF.js} +35 -66
  143. package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
  144. package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
  145. package/dist/{chunk-72YIHOZQ.js → chunk-QXFBABFJ.js} +10 -10
  146. package/dist/chunk-R2CT5YDO.js +66 -0
  147. package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
  148. package/dist/{chunk-IGLP3ODT.js → chunk-RGZNQ5CT.js} +15 -15
  149. package/dist/chunk-SD7SHNDW.js +15 -0
  150. package/dist/chunk-SL2RDHKO.js +19 -0
  151. package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
  152. package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
  153. package/dist/{chunk-UEPWCCTY.js → chunk-SXQKNKRA.js} +12 -12
  154. package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
  155. package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
  156. package/dist/{chunk-5636DCO5.js → chunk-TJFDL26W.js} +59 -12
  157. package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
  158. package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
  159. package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
  160. package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
  161. package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
  162. package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
  163. package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
  164. package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
  165. package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
  166. package/dist/chunk-USZA7GWL.js +341 -0
  167. package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
  168. package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
  169. package/dist/{chunk-7UGL4MB5.js → chunk-VAHLPXPY.js} +10 -10
  170. package/dist/{chunk-25QBEXRS.js → chunk-VANN3GDP.js} +7 -26
  171. package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
  172. package/dist/{chunk-QUFRYSWI.js → chunk-VHMX7SXF.js} +129 -48
  173. package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
  174. package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
  175. package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
  176. package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
  177. package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
  178. package/dist/{chunk-USR47QNF.js → chunk-WKUYQBCG.js} +14 -14
  179. package/dist/{chunk-GHS5EBTQ.js → chunk-WNGF5AJX.js} +36 -22
  180. package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
  181. package/dist/{chunk-6OSVSQL5.js → chunk-WV6TDAPN.js} +41 -23
  182. package/dist/chunk-WXA2CFJO.js +23 -0
  183. package/dist/{chunk-2ASED4PZ.js → chunk-X3BI7HTV.js} +26 -26
  184. package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
  185. package/dist/{chunk-RZDWV63N.js → chunk-XWMSPJYN.js} +6 -6
  186. package/dist/chunk-YGDMBK7O.js +567 -0
  187. package/dist/{chunk-6PAZTBPA.js → chunk-YPRSNUTC.js} +15 -6
  188. package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
  189. package/dist/{chunk-LTIKRKFL.js → chunk-ZS43Y2FT.js} +4 -4
  190. package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
  191. package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
  192. package/dist/cli/index.js +44 -44
  193. package/dist/clio-QQCMTUZE.js +26 -0
  194. package/dist/{code-nav-IJR2DBPR.js → code-nav-GUPM6766.js} +48 -32
  195. package/dist/codewiki/build-worker.js +76 -29
  196. package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
  197. package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
  198. package/dist/{config-IUA6OYNS.js → config-IIM7YOD3.js} +211 -124
  199. package/dist/configure-4ZM5HWJX.js +73 -0
  200. package/dist/{context-BOYF5EJM.js → context-44BZLJ3J.js} +62 -31
  201. package/dist/{context-4MPR7WKB.js → context-AIDVQKMW.js} +126 -121
  202. package/dist/{context-2DKHWH2T.js → context-OL5P3HEP.js} +92 -62
  203. package/dist/context-clear-OQV76MYP.js +184 -0
  204. package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
  205. package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
  206. package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-ZUW3EGLS.js} +32 -31
  207. package/dist/detail-UXPWRANG.js +115 -0
  208. package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-P3ZW6G77.js} +192 -116
  209. package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
  210. package/dist/{doctor-DKICC2SN.js → doctor-JJVGPZWT.js} +59 -58
  211. package/dist/{eval-OQOQUDHK.js → eval-V2RTN3UH.js} +476 -170
  212. package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
  213. package/dist/evidence-35PYWGSO.js +225 -0
  214. package/dist/{evidence-4DQ25GUQ.js → evidence-CIGGKI6J.js} +111 -94
  215. package/dist/{evolve-GSS52E5J.js → evolve-33SM3NJP.js} +108 -91
  216. package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
  217. package/dist/{fleet-Q37YHHAQ.js → fleet-LFO7SIPC.js} +147 -146
  218. package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-RLK72GU3.js} +27 -26
  219. package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
  220. package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-JZIBCGMW.js} +39 -38
  221. package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-2L5YGGZJ.js} +108 -91
  222. package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
  223. package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
  224. package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-LIAVKDUU.js} +46 -42
  225. package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-JIK3OQZR.js} +106 -89
  226. package/dist/fleet-view-IWHYGQKK.js +118 -0
  227. package/dist/{init-PXEXQSBF.js → init-NJEDOTQW.js} +124 -123
  228. package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
  229. package/dist/{interop-ZG5T62U3.js → interop-RVCAYECG.js} +25 -25
  230. package/dist/inventory-74UL7UHU.js +118 -0
  231. package/dist/{library-B2W4N74O.js → library-CTKZA7K3.js} +45 -44
  232. package/dist/{memory-YCANYS5A.js → memory-I76I5VUH.js} +108 -93
  233. package/dist/{models-GERTU3YI.js → models-D4YDIQZQ.js} +64 -62
  234. package/dist/{monitor-CPNIUULB.js → monitor-NKVD55HX.js} +137 -107
  235. package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-I6OATVPK.js} +1715 -1687
  236. package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
  237. package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
  238. package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
  239. package/dist/preload-EJAWJEIO.js +116 -0
  240. package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
  241. package/dist/{reset-TNWTB5LU.js → reset-4XMQKDNZ.js} +22 -20
  242. package/dist/{resources-4PXNMD5G.js → resources-TVYVXK3Q.js} +41 -40
  243. package/dist/{run-D6XJ34CN.js → run-OWQNNSJU.js} +164 -157
  244. package/dist/{share-2NWMJJEE.js → share-NPZZMUXG.js} +43 -42
  245. package/dist/{skills-KR7WON5G.js → skills-OXFEAWMT.js} +47 -46
  246. package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-J5TCKSJA.js} +128 -107
  247. package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-7II4DM57.js} +41 -40
  248. package/dist/slash-commands-MDSDSWYF.js +92 -0
  249. package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
  250. package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
  251. package/dist/{targets-OMH2XCSN.js → targets-KILZEOCE.js} +161 -94
  252. package/dist/tasks-R6P6OV22.js +36 -0
  253. package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-LZCG2KN3.js} +12 -11
  254. package/dist/tools-6OCQ6SVB.js +28 -0
  255. package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
  256. package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
  257. package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
  258. package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
  259. package/dist/{upgrade-MS72RJEP.js → upgrade-D2OZH6IQ.js} +42 -41
  260. package/dist/{usage-NHG6MCJM.js → usage-PIASNUS4.js} +137 -105
  261. package/dist/{verifiers-7AUNVXDY.js → verifiers-LTHUY2PX.js} +28 -27
  262. package/dist/verify-HYF7KBVE.js +30 -0
  263. package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
  264. package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
  265. package/dist/wiki-generate-RK7JQ5NP.js +615 -0
  266. package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
  267. package/dist/worker/entry.js +108 -95
  268. package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
  269. package/docs/README.md +7 -6
  270. package/docs/architecture/acp.md +10 -0
  271. package/docs/architecture/architecture.md +5 -5
  272. package/docs/architecture/context-engine.md +45 -60
  273. package/docs/architecture/context-working-set.md +7 -9
  274. package/docs/architecture/dispatch-architecture-rationale.md +1 -1
  275. package/docs/architecture/evidence-and-memory.md +10 -0
  276. package/docs/architecture/pi-boundary.md +37 -7
  277. package/docs/architecture/prompt-envelope-and-tools.md +7 -7
  278. package/docs/architecture/session-lifecycle.md +4 -4
  279. package/docs/architecture/tui-design.md +45 -30
  280. package/docs/architecture/worker-dispatch-mechanics.md +4 -0
  281. package/docs/guide/commands-and-modes.md +75 -61
  282. package/docs/guide/configuration-and-targets.md +126 -26
  283. package/docs/guide/configuration-reference.md +22 -7
  284. package/docs/guide/environment-variables.md +6 -2
  285. package/docs/guide/fleet-dispatch.md +13 -6
  286. package/docs/guide/glossary.md +1 -1
  287. package/docs/guide/installation-and-lifecycle.md +79 -20
  288. package/docs/guide/proactive-memory.md +1 -1
  289. package/docs/guide/skills-marketplace.md +11 -3
  290. package/docs/guide/tool-usage.md +9 -2
  291. package/docs/process/development-pipeline.md +11 -11
  292. package/docs/process/documentation-coverage.md +1 -1
  293. package/docs/process/documentation-guide.md +2 -2
  294. package/docs/process/eval-runner.md +15 -0
  295. package/docs/process/evals-internal.md +1 -1
  296. package/docs/process/release-cut-checklist.md +24 -12
  297. package/evals/README.md +4 -0
  298. package/evals/behavioral-corpus-grader.mjs +147 -14
  299. package/evals/behavioral-model-negative-control.yaml +1 -0
  300. package/evals/behavioral-model.yaml +266 -1
  301. package/evals/fixtures/docs-retrieval.json +102 -0
  302. package/evals/fixtures/scalar-decision.json +17 -0
  303. package/evals/fixtures/scout-citation-pipeline.json +55 -0
  304. package/evals/fixtures/source-explanation.json +74 -0
  305. package/evals/fixtures/tool-arguments.json +18 -0
  306. package/evals/fixtures/tool-surface/read.txt +4 -0
  307. package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
  308. package/evals/no-edit-memory-grader.mjs +149 -0
  309. package/evals/scalar-decision-grader.py +41 -0
  310. package/evals/scalar-decision-machinery.ts +145 -0
  311. package/evals/source-explanation-grader.mjs +118 -0
  312. package/evals/tool-surface-grader.mjs +53 -0
  313. package/evals/tool-surface-model.yaml +274 -0
  314. package/package.json +14 -14
  315. package/skills/README.md +6 -6
  316. package/skills/registry.yaml +1 -1
  317. package/skills/skill-marketplace.json +1 -1
  318. package/src/cli/ask.ts +10 -10
  319. package/src/cli/bootstrap-generate.ts +6 -0
  320. package/src/cli/config-inspect.ts +24 -7
  321. package/src/cli/config-trust.ts +62 -0
  322. package/src/cli/config.ts +8 -0
  323. package/src/cli/configure-editor.ts +51 -0
  324. package/src/cli/configure-interop.ts +1 -1
  325. package/src/cli/configure-oauth.ts +1 -1
  326. package/src/cli/configure-onboarding.ts +232 -96
  327. package/src/cli/configure-prompts.ts +76 -0
  328. package/src/cli/configure-quick.ts +274 -0
  329. package/src/cli/configure-target.ts +14 -2
  330. package/src/cli/configure.ts +413 -174
  331. package/src/cli/context-map.ts +75 -14
  332. package/src/cli/context.ts +46 -17
  333. package/src/cli/eval.ts +17 -3
  334. package/src/cli/modes/print.ts +32 -4
  335. package/src/cli/oauth-manual-input.ts +1 -1
  336. package/src/cli/reset.ts +2 -0
  337. package/src/cli/run.ts +16 -14
  338. package/src/cli/select.ts +35 -4
  339. package/src/cli/skills-eval.ts +10 -8
  340. package/src/cli/steer-channel.ts +31 -18
  341. package/src/cli/targets.ts +83 -31
  342. package/src/cli/tasks.ts +10 -1
  343. package/src/cli/upgrade.ts +11 -8
  344. package/src/cli/usage.ts +24 -0
  345. package/src/cli/wiki-generate.ts +239 -96
  346. package/src/core/bash-exec.ts +43 -15
  347. package/src/core/bus-events.ts +15 -0
  348. package/src/core/config.ts +39 -15
  349. package/src/core/defaults.ts +38 -15
  350. package/src/{interactive → core}/external-editor.ts +4 -4
  351. package/src/core/file-references.ts +11 -1
  352. package/src/core/incomplete-installation.ts +3 -1
  353. package/src/core/settings-layers.ts +21 -5
  354. package/src/core/termination.ts +26 -9
  355. package/src/core/untrusted-content.ts +16 -0
  356. package/src/core/workspace-trust.ts +179 -0
  357. package/src/domains/agents/builtins/coder.md +4 -2
  358. package/src/domains/agents/builtins/context-bootstrap.md +3 -1
  359. package/src/domains/agents/builtins/documenter.md +7 -4
  360. package/src/domains/agents/builtins/researcher.md +1 -0
  361. package/src/domains/agents/builtins/scout.md +7 -1
  362. package/src/domains/agents/result-contract.ts +199 -26
  363. package/src/domains/config/classify.ts +1 -1
  364. package/src/domains/config/keybindings.ts +3 -31
  365. package/src/domains/context/bootstrap-prompt.ts +11 -9
  366. package/src/domains/context/bootstrap.ts +74 -39
  367. package/src/domains/context/clio-md.ts +88 -26
  368. package/src/domains/context/codewiki/build-operation.ts +121 -0
  369. package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
  370. package/src/domains/context/codewiki/build-worker.ts +3 -35
  371. package/src/domains/context/codewiki/coordinator.ts +36 -6
  372. package/src/domains/context/codewiki/indexer.ts +59 -19
  373. package/src/domains/context/contract.ts +6 -2
  374. package/src/domains/context/extension.ts +72 -10
  375. package/src/domains/context/fingerprint.ts +39 -34
  376. package/src/domains/context/index.ts +7 -1
  377. package/src/domains/context/prompt-context.ts +55 -14
  378. package/src/domains/context/refresh.ts +9 -57
  379. package/src/domains/context/wiki/assemble.ts +14 -10
  380. package/src/domains/context/wiki/evidence.ts +209 -0
  381. package/src/domains/context/wiki/generate.ts +201 -67
  382. package/src/domains/context/wiki/meta.ts +10 -2
  383. package/src/domains/context/wiki/plan-store.ts +70 -14
  384. package/src/domains/context/wiki/plan.ts +71 -14
  385. package/src/domains/context/wiki/prompts.ts +42 -1
  386. package/src/domains/context/wiki/source-content.ts +106 -0
  387. package/src/domains/context/wiki/staleness.ts +33 -22
  388. package/src/domains/context/working-set/contract.ts +8 -2
  389. package/src/domains/context/working-set/engine.ts +17 -4
  390. package/src/domains/context/working-set/fold.ts +15 -2
  391. package/src/domains/context/working-set/marker.ts +2 -1
  392. package/src/domains/context/working-set/project.ts +18 -7
  393. package/src/domains/context/working-set/recall.ts +82 -56
  394. package/src/domains/dispatch/active-route-planner.ts +6 -3
  395. package/src/domains/dispatch/admission-queue.ts +19 -7
  396. package/src/domains/dispatch/admission.ts +3 -3
  397. package/src/domains/dispatch/budget-envelope.ts +47 -82
  398. package/src/domains/dispatch/capacity-lease.ts +57 -19
  399. package/src/domains/dispatch/contract.ts +10 -2
  400. package/src/domains/dispatch/event-pump.ts +28 -7
  401. package/src/domains/dispatch/execution-role.ts +49 -2
  402. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  403. package/src/domains/dispatch/extension.ts +190 -105
  404. package/src/domains/dispatch/fleet-run.ts +20 -0
  405. package/src/domains/dispatch/gate-role-prompts.ts +4 -2
  406. package/src/domains/dispatch/parallel-writers.ts +34 -0
  407. package/src/domains/dispatch/reservation-store.ts +8 -34
  408. package/src/domains/dispatch/route-approval.ts +3 -3
  409. package/src/domains/dispatch/route-observer.ts +4 -2
  410. package/src/domains/dispatch/route-quality.ts +6 -1
  411. package/src/domains/dispatch/types.ts +4 -3
  412. package/src/domains/dispatch/worker-spawn.ts +58 -21
  413. package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
  414. package/src/domains/eval/compare/behavioral.ts +81 -14
  415. package/src/domains/eval/compare/compare.ts +15 -5
  416. package/src/domains/eval/compare/envelope.ts +12 -5
  417. package/src/domains/eval/metrics/context.ts +24 -1
  418. package/src/domains/eval/metrics/tracked.ts +4 -28
  419. package/src/domains/eval/reports/comparison.ts +9 -9
  420. package/src/domains/eval/runners/clio-run.ts +5 -1
  421. package/src/domains/eval/schema/suite.ts +2 -0
  422. package/src/domains/eval/schema/validate.ts +1 -0
  423. package/src/domains/eval/suites/run.ts +189 -13
  424. package/src/domains/eval/verifiers/integrity.ts +39 -0
  425. package/src/domains/eval/verifiers/patch.ts +58 -2
  426. package/src/domains/eval/workspaces/temp-copy.ts +3 -0
  427. package/src/domains/evidence/build.ts +4 -2
  428. package/src/domains/interop/registry.ts +2 -2
  429. package/src/domains/middleware/hooks-io.ts +45 -26
  430. package/src/domains/middleware/hooks.ts +6 -0
  431. package/src/domains/middleware/injection-screen.ts +23 -0
  432. package/src/domains/middleware/rules.ts +5 -1
  433. package/src/domains/middleware/stalled-turn.ts +18 -3
  434. package/src/domains/middleware/task-board-reminder.ts +4 -2
  435. package/src/domains/middleware/task-nudge.ts +4 -1
  436. package/src/domains/mux/contract.ts +34 -1
  437. package/src/domains/mux/dock-controller.ts +8 -1
  438. package/src/domains/mux/index.ts +1 -0
  439. package/src/domains/mux/socket-client.ts +13 -3
  440. package/src/domains/observability/contract.ts +2 -2
  441. package/src/domains/observability/projection.ts +30 -9
  442. package/src/domains/prompts/compiler.ts +10 -2
  443. package/src/domains/prompts/contract.ts +7 -4
  444. package/src/domains/prompts/extension.ts +28 -64
  445. package/src/domains/prompts/fragments/identity/clio.md +23 -0
  446. package/src/domains/prompts/fragments/operating/contract.md +10 -0
  447. package/src/domains/prompts/fragments/operating/delegation.md +5 -0
  448. package/src/domains/prompts/fragments/wiki/page.md +28 -15
  449. package/src/domains/prompts/fragments/wiki/plan.md +4 -4
  450. package/src/domains/prompts/preload-prefix.ts +31 -0
  451. package/src/domains/prompts/preload.ts +135 -61
  452. package/src/domains/providers/auth/backend-file.ts +15 -11
  453. package/src/domains/providers/auth/storage.ts +3 -5
  454. package/src/domains/providers/catalog.ts +18 -3
  455. package/src/domains/providers/probe/fingerprint.ts +13 -6
  456. package/src/domains/providers/probe/reasoning.ts +2 -0
  457. package/src/domains/providers/runtime-resolution.ts +11 -9
  458. package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
  459. package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
  460. package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
  461. package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
  462. package/src/domains/resources/skills/promotion.ts +8 -1
  463. package/src/domains/safety/action-classifier.ts +9 -0
  464. package/src/domains/safety/autonomy.ts +10 -1
  465. package/src/domains/safety/contract.ts +5 -1
  466. package/src/domains/safety/default-path-policy.ts +11 -0
  467. package/src/domains/safety/extension.ts +11 -2
  468. package/src/domains/safety/policy-engine.ts +189 -32
  469. package/src/domains/safety/project-policy.ts +7 -2
  470. package/src/domains/safety/workspace-trust.ts +43 -0
  471. package/src/domains/session/compaction/compact.ts +384 -21
  472. package/src/domains/session/compaction/cut-point.ts +42 -5
  473. package/src/domains/session/compaction/tokens.ts +9 -1
  474. package/src/domains/session/decision-board.ts +43 -33
  475. package/src/domains/session/entries.ts +169 -4
  476. package/src/domains/session/prompt-manifest.ts +47 -8
  477. package/src/domains/session/task-board.ts +21 -3
  478. package/src/domains/user-tasks/handoff.ts +16 -0
  479. package/src/engine/acp/adapter.ts +44 -12
  480. package/src/engine/acp/server.ts +1 -0
  481. package/src/engine/acp/transport.ts +2 -1
  482. package/src/engine/acp/types.ts +6 -1
  483. package/src/engine/antigravity/subprocess-runtime.ts +20 -4
  484. package/src/engine/api-registry.ts +19 -2
  485. package/src/engine/apis/openai-completions.ts +13 -6
  486. package/src/engine/apis/output-budget.ts +26 -10
  487. package/src/engine/claude/sdk-runtime.ts +4 -3
  488. package/src/engine/env-api-keys.ts +2 -1
  489. package/src/engine/external-subprocess.ts +14 -3
  490. package/src/engine/loop-guard.ts +19 -2
  491. package/src/engine/provider-diagnostics.ts +129 -0
  492. package/src/engine/provider-payload.ts +3 -1
  493. package/src/engine/worker-runtime.ts +13 -2
  494. package/src/engine/worker-tools.ts +5 -1
  495. package/src/entry/extension-reload.ts +1 -0
  496. package/src/entry/orchestrator.ts +53 -15
  497. package/src/interactive/application-controller.ts +1 -31
  498. package/src/interactive/chat-loop-messages.ts +12 -4
  499. package/src/interactive/chat-loop.ts +115 -45
  500. package/src/interactive/chat-panel.ts +163 -637
  501. package/src/interactive/chat-renderer.ts +73 -30
  502. package/src/interactive/context-recall-command.ts +2 -1
  503. package/src/interactive/dispatch-board.ts +18 -5
  504. package/src/interactive/editor-submit.ts +21 -31
  505. package/src/interactive/footer/dashboard.ts +8 -3
  506. package/src/interactive/footer/widgets.ts +50 -91
  507. package/src/interactive/interactive-application.ts +24 -44
  508. package/src/interactive/interactive-event-projection.ts +9 -45
  509. package/src/interactive/interactive-input-runtime.ts +3 -28
  510. package/src/interactive/interactive-presentation.ts +45 -16
  511. package/src/interactive/interactive-slash-runtime.ts +5 -40
  512. package/src/interactive/layout.ts +31 -5
  513. package/src/interactive/model-session-replay.ts +2 -2
  514. package/src/interactive/overlay-frame.ts +1 -0
  515. package/src/interactive/overlay-general-openers.ts +5 -1
  516. package/src/interactive/overlay-lifecycle.ts +1 -0
  517. package/src/interactive/overlay-session-lifecycle.ts +7 -1
  518. package/src/interactive/overlays/ask-user.ts +1 -0
  519. package/src/interactive/overlays/message-picker.ts +1 -1
  520. package/src/interactive/overlays/settings.ts +9 -8
  521. package/src/interactive/renderers/preview.ts +16 -0
  522. package/src/interactive/renderers/tool-execution.ts +84 -161
  523. package/src/interactive/renderers/worker-entry.ts +74 -43
  524. package/src/interactive/slash-autocomplete.ts +1 -6
  525. package/src/interactive/slash-commands.ts +16 -46
  526. package/src/interactive/status/controller.ts +0 -5
  527. package/src/interactive/status/state-machine.ts +44 -26
  528. package/src/interactive/status/types.ts +3 -0
  529. package/src/interactive/status/verbs.ts +13 -12
  530. package/src/interactive/transcript-detail.ts +50 -112
  531. package/src/interactive/turn-context.ts +221 -53
  532. package/src/interactive/turn-middleware.ts +3 -1
  533. package/src/interactive/turn-persistence.ts +3 -0
  534. package/src/interactive/turn-runtime.ts +11 -2
  535. package/src/interactive/turn-state.ts +10 -9
  536. package/src/interactive/view/artifacts.ts +4 -0
  537. package/src/interactive/view/view-overlay.ts +44 -34
  538. package/src/interactive/watch-pane.ts +18 -4
  539. package/src/interactive/worker-stream.ts +7 -7
  540. package/src/tools/agent-tools.ts +6 -3
  541. package/src/tools/bash.ts +1 -1
  542. package/src/tools/builtin-tool-catalog.ts +9 -2
  543. package/src/tools/codewiki/code-nav.ts +4 -10
  544. package/src/tools/compete-judge-task.ts +71 -0
  545. package/src/tools/compete-worktrees.ts +34 -0
  546. package/src/tools/context/index.ts +32 -7
  547. package/src/tools/context/surface.ts +15 -4
  548. package/src/tools/decide.ts +1 -1
  549. package/src/tools/dispatch-admission.ts +12 -1
  550. package/src/tools/dispatch-arguments.ts +38 -1
  551. package/src/tools/dispatch-plan.ts +7 -7
  552. package/src/tools/dispatch-runner.ts +48 -32
  553. package/src/tools/dispatch-schema.ts +30 -23
  554. package/src/tools/dispatch-scout-admission.ts +10 -44
  555. package/src/tools/dispatch-scout.ts +2 -3
  556. package/src/tools/find.ts +13 -4
  557. package/src/tools/grep.ts +13 -1
  558. package/src/tools/ls.ts +7 -1
  559. package/src/tools/monitor.ts +26 -11
  560. package/src/tools/network-policy.ts +11 -24
  561. package/src/tools/observation.ts +39 -2
  562. package/src/tools/presentation.ts +1 -1
  563. package/src/tools/read.ts +112 -15
  564. package/src/tools/registry.ts +55 -18
  565. package/src/tools/result-shaping.ts +110 -2
  566. package/src/tools/tasks.ts +33 -7
  567. package/src/tools/verify/frontend.ts +67 -30
  568. package/src/tools/verify/numeric.ts +10 -5
  569. package/src/tools/web-fetch-network.ts +179 -0
  570. package/src/tools/web-fetch-surface.ts +2 -1
  571. package/src/tools/web-fetch.ts +15 -13
  572. package/src/tools/worker-evidence.ts +27 -0
  573. package/src/worker/spec-contract.ts +12 -8
  574. package/dist/builtins-WGALA46I.js +0 -22
  575. package/dist/chunk-2WZ546HR.js +0 -792
  576. package/dist/chunk-5PSMVOLM.js +0 -56
  577. package/dist/chunk-EL24TAU4.js +0 -1560
  578. package/dist/chunk-IZXGRF7P.js +0 -4048
  579. package/dist/chunk-JVCV3ICN.js +0 -47
  580. package/dist/chunk-MNJGS2IN.js +0 -33
  581. package/dist/chunk-O5CVSAG5.js +0 -122
  582. package/dist/chunk-ODGTEFFI.js +0 -50
  583. package/dist/chunk-OQE5J4C6.js +0 -73
  584. package/dist/chunk-UUVG37B4.js +0 -244
  585. package/dist/chunk-V6HJFQZE.js +0 -228
  586. package/dist/clio-QLICPCF5.js +0 -25
  587. package/dist/configure-VEPX4NMX.js +0 -55
  588. package/dist/context-clear-S4ZJCQUX.js +0 -182
  589. package/dist/detail-A7JAVSIG.js +0 -98
  590. package/dist/evidence-4F5USFKH.js +0 -208
  591. package/dist/fleet-view-MN2VG4MR.js +0 -101
  592. package/dist/inventory-C26CFDRR.js +0 -101
  593. package/dist/preload-P6DGH2PZ.js +0 -13
  594. package/dist/slash-commands-ZXPJD64J.js +0 -92
  595. package/dist/tasks-IPAGMEIX.js +0 -36
  596. package/dist/tools-EFFEAIDP.js +0 -28
  597. package/dist/verify-FWYGPKMR.js +0 -29
  598. package/dist/wiki-generate-743CIGJW.js +0 -476
@@ -3,34 +3,200 @@ import {
3
3
  ROUTE_POLICY_VERSION,
4
4
  isRouteDecisionAgentSelection,
5
5
  isRoutingIntent
6
- } from "./chunk-AUPNRN7C.js";
6
+ } from "./chunk-K2HL3GBL.js";
7
7
  import {
8
8
  isExecutionRole
9
- } from "./chunk-H7IXIC72.js";
9
+ } from "./chunk-LY4N4TTL.js";
10
10
  import {
11
11
  readSettings
12
- } from "./chunk-GHS5EBTQ.js";
12
+ } from "./chunk-WNGF5AJX.js";
13
13
  import {
14
14
  readClioVersion,
15
15
  resolvePackageRoot
16
- } from "./chunk-IWHMRKLL.js";
16
+ } from "./chunk-E3LEPLQ2.js";
17
17
  import {
18
18
  require_dist
19
- } from "./chunk-APJ265NV.js";
19
+ } from "./chunk-B5GGDIHT.js";
20
20
  import {
21
21
  __toESM,
22
22
  init_esm_shims
23
- } from "./chunk-3R73A4XB.js";
23
+ } from "./chunk-ECBHH7LU.js";
24
24
 
25
- // src/domains/dispatch/receipt-integrity.ts
25
+ // src/domains/context/codewiki/digest.ts
26
+ init_esm_shims();
27
+ function compareStrings(a, b) {
28
+ return a.localeCompare(b);
29
+ }
30
+ function topTwoSegments(path2) {
31
+ const parts = path2.split("/").slice(0, -1);
32
+ if (parts.length === 0) return ".";
33
+ return parts.slice(0, 2).join("/");
34
+ }
35
+ function sourceFiles(codewiki) {
36
+ return codewiki.files.filter((file) => file.lang !== "config").sort((a, b) => a.path.localeCompare(b.path));
37
+ }
38
+ function countBy(items) {
39
+ const counts = /* @__PURE__ */ new Map();
40
+ for (const item of items) counts.set(item, (counts.get(item) ?? 0) + 1);
41
+ return [...counts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
42
+ }
43
+ function entryPoints(codewiki, limit) {
44
+ const files = sourceFiles(codewiki);
45
+ const tagged = files.filter((file) => file.role === "entry");
46
+ if (tagged.length >= limit) return tagged.slice(0, limit);
47
+ const fileById = new Map(files.map((file) => [file.id, file]));
48
+ const inDegree = /* @__PURE__ */ new Map();
49
+ for (const edge of codewiki.edges) {
50
+ if ("toFileId" in edge) inDegree.set(edge.toFileId, (inDegree.get(edge.toFileId) ?? 0) + 1);
51
+ }
52
+ const taggedIds = new Set(tagged.map((file) => file.id));
53
+ const ranked = [...inDegree.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).map(([id]) => fileById.get(id)).filter((file) => file !== void 0 && !taggedIds.has(file.id));
54
+ return [...tagged, ...ranked].slice(0, limit);
55
+ }
56
+ function keySymbols(codewiki, limit) {
57
+ const rank = /* @__PURE__ */ new Map([
58
+ ["class", 0],
59
+ ["trait", 1],
60
+ ["iface", 2],
61
+ ["type", 3],
62
+ ["func", 4],
63
+ ["method", 5],
64
+ ["const", 6],
65
+ ["var", 7]
66
+ ]);
67
+ return [...codewiki.symbols].sort((a, b) => {
68
+ const rankCmp = (rank.get(a.kind) ?? 99) - (rank.get(b.kind) ?? 99);
69
+ return rankCmp || a.name.localeCompare(b.name) || a.fileId.localeCompare(b.fileId) || a.line - b.line;
70
+ }).slice(0, limit);
71
+ }
72
+ function dependencyLines(codewiki, limit) {
73
+ const fileById = new Map(codewiki.files.map((file) => [file.id, file]));
74
+ const byFile = /* @__PURE__ */ new Map();
75
+ for (const edge of codewiki.edges) {
76
+ const deps = byFile.get(edge.fileId) ?? { internal: [], external: [] };
77
+ if ("toFileId" in edge) {
78
+ const target = fileById.get(edge.toFileId);
79
+ if (target) deps.internal.push(target.path);
80
+ } else {
81
+ deps.external.push(edge.externalModule);
82
+ }
83
+ byFile.set(edge.fileId, deps);
84
+ }
85
+ return [...byFile.entries()].map(([fileId, deps]) => {
86
+ const file = fileById.get(fileId);
87
+ if (!file) return "";
88
+ const internal = [...new Set(deps.internal)].sort(compareStrings).slice(0, 4);
89
+ const external = [...new Set(deps.external)].sort(compareStrings).slice(0, 4);
90
+ return `- ${file.path}: internal=[${internal.join(", ")}] external=[${external.join(", ")}]`;
91
+ }).filter((line) => line.length > 0).sort(compareStrings).slice(0, limit);
92
+ }
93
+ function fitLines(lines, tokenBudget) {
94
+ const maxChars = Math.max(256, Math.floor(tokenBudget * 4));
95
+ const out = [];
96
+ let used = 0;
97
+ for (const line of lines) {
98
+ const next = used + line.length + 1;
99
+ if (next > maxChars) {
100
+ out.push("[digest truncated]");
101
+ break;
102
+ }
103
+ out.push(line);
104
+ used = next;
105
+ }
106
+ return out.join("\n");
107
+ }
108
+ function entryPointLine(file) {
109
+ const base = `- ${file.path} (${file.lang}, ${file.loc} loc)`;
110
+ return file.summary ? `${base}: ${file.summary.slice(0, 160)}` : base;
111
+ }
112
+ function renderCodewikiDigest(codewiki, tokenBudget = 1200) {
113
+ const files = sourceFiles(codewiki);
114
+ const areaCounts = countBy(files.map((file) => topTwoSegments(file.path))).slice(0, 10).map(([area, count]) => `${area}=${count}`);
115
+ const languageCounts = countBy(files.map((file) => file.lang)).map(([language, count]) => `${language}=${count}`).join(", ");
116
+ const roleCounts = countBy(files.map((file) => file.role)).map(([role, count]) => `${role}=${count}`).join(", ");
117
+ const fileById = new Map(codewiki.files.map((file) => [file.id, file]));
118
+ const lines = [
119
+ `codewiki v${codewiki.version} language=${codewiki.language} files=${files.length} configs=${codewiki.files.length - files.length} symbols=${codewiki.symbols.length} edges=${codewiki.edges.length}`,
120
+ `languages: ${languageCounts || "none"}`,
121
+ `roles: ${roleCounts || "none"}`,
122
+ `areas: ${areaCounts.join(", ") || "none"}`,
123
+ "entry points:",
124
+ ...entryPoints(codewiki, 12).map(entryPointLine),
125
+ "key symbols:",
126
+ ...keySymbols(codewiki, 40).map((symbol) => {
127
+ const file = fileById.get(symbol.fileId);
128
+ const location = file ? `${file.path}:${symbol.line}` : `${symbol.fileId}:${symbol.line}`;
129
+ return `- ${symbol.name} ${symbol.kind} ${location}`;
130
+ }),
131
+ "dependencies:",
132
+ ...dependencyLines(codewiki, 24)
133
+ ];
134
+ return fitLines(lines, tokenBudget);
135
+ }
136
+
137
+ // src/domains/prompts/hash.ts
26
138
  init_esm_shims();
27
139
  import { createHash } from "node:crypto";
28
- var RUN_RECEIPT_INTEGRITY_VERSION = 20;
29
- var RUN_RECEIPT_INTEGRITY_ALGORITHM = "sha256";
30
140
  function sha256(input) {
31
141
  return createHash("sha256").update(input, "utf8").digest("hex");
32
142
  }
33
143
  function canonicalJson(value) {
144
+ return serialize(value);
145
+ }
146
+ function serialize(value) {
147
+ if (value === null) return "null";
148
+ if (typeof value === "number") {
149
+ if (!Number.isFinite(value)) {
150
+ throw new Error(`canonicalJson: non-finite number ${String(value)} is not representable`);
151
+ }
152
+ return JSON.stringify(value);
153
+ }
154
+ if (typeof value === "string" || typeof value === "boolean") {
155
+ return JSON.stringify(value);
156
+ }
157
+ if (typeof value === "bigint") {
158
+ throw new Error("canonicalJson: bigint is not representable");
159
+ }
160
+ if (typeof value === "symbol" || typeof value === "function") {
161
+ throw new Error(`canonicalJson: ${typeof value} is not representable`);
162
+ }
163
+ if (value === void 0) {
164
+ throw new Error("canonicalJson: undefined is not representable at root");
165
+ }
166
+ if (Array.isArray(value)) {
167
+ const parts = [];
168
+ for (let i = 0; i < value.length; i++) {
169
+ if (!(i in value) || value[i] === void 0) {
170
+ parts.push("null");
171
+ continue;
172
+ }
173
+ parts.push(serialize(value[i]));
174
+ }
175
+ return `[${parts.join(",")}]`;
176
+ }
177
+ if (typeof value === "object") {
178
+ const obj = value;
179
+ const keys = Object.keys(obj).sort();
180
+ const parts = [];
181
+ for (const key of keys) {
182
+ const child = obj[key];
183
+ if (child === void 0) continue;
184
+ parts.push(`${JSON.stringify(key)}:${serialize(child)}`);
185
+ }
186
+ return `{${parts.join(",")}}`;
187
+ }
188
+ throw new Error(`canonicalJson: unsupported value of type ${typeof value}`);
189
+ }
190
+
191
+ // src/domains/dispatch/receipt-integrity.ts
192
+ init_esm_shims();
193
+ import { createHash as createHash2 } from "node:crypto";
194
+ var RUN_RECEIPT_INTEGRITY_VERSION = 20;
195
+ var RUN_RECEIPT_INTEGRITY_ALGORITHM = "sha256";
196
+ function sha2562(input) {
197
+ return createHash2("sha256").update(input, "utf8").digest("hex");
198
+ }
199
+ function canonicalJson2(value) {
34
200
  return serializeCanonical(value);
35
201
  }
36
202
  function serializeCanonical(value) {
@@ -244,7 +410,7 @@ function computeReceiptIntegrity(receipt, envelope, legacyNaming = false) {
244
410
  return {
245
411
  version: RUN_RECEIPT_INTEGRITY_VERSION,
246
412
  algorithm: RUN_RECEIPT_INTEGRITY_ALGORITHM,
247
- digest: sha256(canonicalJson(integrityPayload(receipt, envelope, legacyNaming)))
413
+ digest: sha2562(canonicalJson2(integrityPayload(receipt, envelope, legacyNaming)))
248
414
  };
249
415
  }
250
416
  function isReceiptQuality(value) {
@@ -319,9 +485,9 @@ function firstLedgerMismatch(receipt, envelope) {
319
485
  for (const [field, receiptValue, ledgerValue] of sharedFields) {
320
486
  if (!Object.is(receiptValue, ledgerValue)) return field;
321
487
  }
322
- if (canonicalJson(receipt.briefing ?? null) !== canonicalJson(envelope.briefing ?? null)) return "briefing";
323
- if (canonicalJson(receipt.budget ?? null) !== canonicalJson(envelope.budget ?? null)) return "budget";
324
- if (canonicalJson(receipt.steering ?? null) !== canonicalJson(envelope.steering ?? null)) return "steering";
488
+ if (canonicalJson2(receipt.briefing ?? null) !== canonicalJson2(envelope.briefing ?? null)) return "briefing";
489
+ if (canonicalJson2(receipt.budget ?? null) !== canonicalJson2(envelope.budget ?? null)) return "budget";
490
+ if (canonicalJson2(receipt.steering ?? null) !== canonicalJson2(envelope.steering ?? null)) return "steering";
325
491
  return null;
326
492
  }
327
493
  function verifyReceiptIntegrity(receipt, envelope) {
@@ -452,19 +618,19 @@ function compareArtifactReferences(left, right) {
452
618
  const rightKey = `${right.kind}\0${right.id}\0${right.digest?.value ?? ""}`;
453
619
  return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
454
620
  }
455
- function normalizeArtifactReference(value, path) {
456
- if (!isRecord(value)) throw new Error(`${path} must be an object`);
621
+ function normalizeArtifactReference(value, path2) {
622
+ if (!isRecord(value)) throw new Error(`${path2} must be an object`);
457
623
  if (!hasExactKeys(value, value.digest === void 0 ? ["kind", "id"] : ["kind", "id", "digest"])) {
458
- throw new Error(`${path} has unknown or missing fields`);
624
+ throw new Error(`${path2} has unknown or missing fields`);
459
625
  }
460
626
  if (typeof value.kind !== "string" || !ARTIFACT_KINDS.has(value.kind)) {
461
- throw new Error(`${path}.kind is invalid`);
627
+ throw new Error(`${path2}.kind is invalid`);
462
628
  }
463
- if (!isTrustStatusIdentifier(value.id)) throw new Error(`${path}.id is invalid`);
629
+ if (!isTrustStatusIdentifier(value.id)) throw new Error(`${path2}.id is invalid`);
464
630
  const reference = { kind: value.kind, id: value.id };
465
631
  if (value.digest !== void 0) {
466
632
  if (!isRecord(value.digest) || !hasExactKeys(value.digest, ["algorithm", "value"]) || value.digest.algorithm !== "sha256" || typeof value.digest.value !== "string" || !/^[a-f0-9]{64}$/u.test(value.digest.value)) {
467
- throw new Error(`${path}.digest is invalid`);
633
+ throw new Error(`${path2}.digest is invalid`);
468
634
  }
469
635
  reference.digest = { algorithm: "sha256", value: value.digest.value };
470
636
  }
@@ -1198,7 +1364,7 @@ function isRecord2(value) {
1198
1364
  // src/domains/eval/task-file.ts
1199
1365
  init_esm_shims();
1200
1366
  var import_yaml = __toESM(require_dist(), 1);
1201
- import { createHash as createHash2 } from "node:crypto";
1367
+ import { createHash as createHash3 } from "node:crypto";
1202
1368
  import { readFile } from "node:fs/promises";
1203
1369
  import { dirname, isAbsolute, relative, resolve } from "node:path";
1204
1370
 
@@ -1208,8 +1374,8 @@ var EVAL_TASK_FILE_VERSION = 1;
1208
1374
 
1209
1375
  // src/domains/eval/task-file.ts
1210
1376
  var TASK_KEYS = /* @__PURE__ */ new Set(["id", "prompt", "cwd", "setup", "verifier", "timeoutMs", "tags"]);
1211
- async function loadEvalTaskFile(path) {
1212
- const resolved = resolve(path);
1377
+ async function loadEvalTaskFile(path2) {
1378
+ const resolved = resolve(path2);
1213
1379
  const raw = await readFile(resolved, "utf8");
1214
1380
  const result = parseEvalTaskFileYaml(raw);
1215
1381
  if (!result.valid) {
@@ -1272,30 +1438,30 @@ var EvalTaskFileError = class extends Error {
1272
1438
  this.issues = [...issues];
1273
1439
  }
1274
1440
  };
1275
- function parseTask(value, path, issues) {
1441
+ function parseTask(value, path2, issues) {
1276
1442
  if (!isRecord3(value)) {
1277
- issues.push({ path, message: "expected object" });
1443
+ issues.push({ path: path2, message: "expected object" });
1278
1444
  return null;
1279
1445
  }
1280
1446
  for (const key of Object.keys(value).sort((a, b) => a.localeCompare(b))) {
1281
- if (!TASK_KEYS.has(key)) issues.push({ path: `${path}.${key}`, message: "unknown field" });
1447
+ if (!TASK_KEYS.has(key)) issues.push({ path: `${path2}.${key}`, message: "unknown field" });
1282
1448
  }
1283
- const id = readNonEmptyString(value, path, "id", issues);
1449
+ const id = readNonEmptyString(value, path2, "id", issues);
1284
1450
  if (id !== null && !/^[A-Za-z0-9._-]+$/.test(id)) {
1285
- issues.push({ path: `${path}.id`, message: "expected id with letters, numbers, dots, underscores, or hyphens" });
1451
+ issues.push({ path: `${path2}.id`, message: "expected id with letters, numbers, dots, underscores, or hyphens" });
1286
1452
  }
1287
- const prompt = readNonEmptyString(value, path, "prompt", issues);
1288
- const cwd = readNonEmptyString(value, path, "cwd", issues);
1453
+ const prompt = readNonEmptyString(value, path2, "prompt", issues);
1454
+ const cwd = readNonEmptyString(value, path2, "cwd", issues);
1289
1455
  if (cwd !== null && isAbsolute(cwd)) {
1290
- issues.push({ path: `${path}.cwd`, message: "expected repo-local relative path" });
1456
+ issues.push({ path: `${path2}.cwd`, message: "expected repo-local relative path" });
1291
1457
  }
1292
- const setup = readStringArray(value, path, "setup", issues, true);
1293
- const verifier = readStringArray(value, path, "verifier", issues, false);
1458
+ const setup = readStringArray(value, path2, "setup", issues, true);
1459
+ const verifier = readStringArray(value, path2, "verifier", issues, false);
1294
1460
  if (verifier !== null && verifier.length === 0) {
1295
- issues.push({ path: `${path}.verifier`, message: "expected at least one command" });
1461
+ issues.push({ path: `${path2}.verifier`, message: "expected at least one command" });
1296
1462
  }
1297
- const timeoutMs = readPositiveInteger(value, path, "timeoutMs", issues);
1298
- const tags = readStringArray(value, path, "tags", issues, true);
1463
+ const timeoutMs = readPositiveInteger(value, path2, "timeoutMs", issues);
1464
+ const tags = readStringArray(value, path2, "tags", issues, true);
1299
1465
  if (id === null || prompt === null || cwd === null || setup === null || verifier === null || timeoutMs === null) {
1300
1466
  return null;
1301
1467
  }
@@ -1313,36 +1479,36 @@ function validateTaskCwds(tasks, baseDir) {
1313
1479
  }
1314
1480
  return issues;
1315
1481
  }
1316
- function readNonEmptyString(record, path, field, issues) {
1482
+ function readNonEmptyString(record, path2, field, issues) {
1317
1483
  const value = record[field];
1318
1484
  if (typeof value !== "string" || value.trim().length === 0) {
1319
- issues.push({ path: `${path}.${field}`, message: "expected non-empty string" });
1485
+ issues.push({ path: `${path2}.${field}`, message: "expected non-empty string" });
1320
1486
  return null;
1321
1487
  }
1322
1488
  return value;
1323
1489
  }
1324
- function readStringArray(record, path, field, issues, allowMissing) {
1490
+ function readStringArray(record, path2, field, issues, allowMissing) {
1325
1491
  const value = record[field];
1326
1492
  if (value === void 0 && allowMissing) return [];
1327
1493
  if (!Array.isArray(value)) {
1328
- issues.push({ path: `${path}.${field}`, message: "expected string array" });
1494
+ issues.push({ path: `${path2}.${field}`, message: "expected string array" });
1329
1495
  return null;
1330
1496
  }
1331
1497
  const out = [];
1332
1498
  for (let index = 0; index < value.length; index += 1) {
1333
1499
  const entry = value[index];
1334
1500
  if (typeof entry !== "string" || entry.trim().length === 0) {
1335
- issues.push({ path: `${path}.${field}[${index}]`, message: "expected non-empty string" });
1501
+ issues.push({ path: `${path2}.${field}[${index}]`, message: "expected non-empty string" });
1336
1502
  continue;
1337
1503
  }
1338
1504
  out.push(entry);
1339
1505
  }
1340
1506
  return out;
1341
1507
  }
1342
- function readPositiveInteger(record, path, field, issues) {
1508
+ function readPositiveInteger(record, path2, field, issues) {
1343
1509
  const value = record[field];
1344
1510
  if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) {
1345
- issues.push({ path: `${path}.${field}`, message: "expected positive integer" });
1511
+ issues.push({ path: `${path2}.${field}`, message: "expected positive integer" });
1346
1512
  return null;
1347
1513
  }
1348
1514
  return value;
@@ -1351,7 +1517,7 @@ function isRecord3(value) {
1351
1517
  return typeof value === "object" && value !== null && !Array.isArray(value);
1352
1518
  }
1353
1519
  function sha256Hex(content) {
1354
- return createHash2("sha256").update(content, "utf8").digest("hex");
1520
+ return createHash3("sha256").update(content, "utf8").digest("hex");
1355
1521
  }
1356
1522
 
1357
1523
  // src/domains/eval/run-compare.ts
@@ -1369,63 +1535,106 @@ function assertComparableTrackedMetricSources(metric, baseline, candidate) {
1369
1535
  throw new EvalTrackedMetricSourceMismatchError(metric, baseline, candidate);
1370
1536
  }
1371
1537
 
1372
- // src/domains/prompts/hash.ts
1538
+ // src/domains/prompts/fragment-loader.ts
1373
1539
  init_esm_shims();
1374
- import { createHash as createHash3 } from "node:crypto";
1375
- function sha2562(input) {
1376
- return createHash3("sha256").update(input, "utf8").digest("hex");
1377
- }
1378
- function canonicalJson2(value) {
1379
- return serialize(value);
1380
- }
1381
- function serialize(value) {
1382
- if (value === null) return "null";
1383
- if (typeof value === "number") {
1384
- if (!Number.isFinite(value)) {
1385
- throw new Error(`canonicalJson: non-finite number ${String(value)} is not representable`);
1540
+ var import_yaml2 = __toESM(require_dist(), 1);
1541
+ import { readdirSync, readFileSync } from "node:fs";
1542
+ import path from "node:path";
1543
+ var frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
1544
+ var fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
1545
+ function defaultRootDir() {
1546
+ return path.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
1547
+ }
1548
+ function walk(root) {
1549
+ const out = [];
1550
+ let entries;
1551
+ try {
1552
+ entries = readdirSync(root, { withFileTypes: true });
1553
+ } catch {
1554
+ return out;
1555
+ }
1556
+ for (const entry of entries) {
1557
+ const full = path.join(root, entry.name);
1558
+ if (entry.isDirectory()) {
1559
+ out.push(...walk(full));
1560
+ continue;
1561
+ }
1562
+ if (entry.isFile() && entry.name.endsWith(".md")) {
1563
+ out.push(full);
1386
1564
  }
1387
- return JSON.stringify(value);
1388
1565
  }
1389
- if (typeof value === "string" || typeof value === "boolean") {
1390
- return JSON.stringify(value);
1566
+ return out.sort((left, right) => left.localeCompare(right));
1567
+ }
1568
+ function parseFragment(filePath, rootDir) {
1569
+ const raw = readFileSync(filePath, "utf8");
1570
+ const rawRel = path.relative(rootDir, filePath);
1571
+ const relPath = rawRel.split(path.sep).join("/");
1572
+ const match = raw.match(frontmatterRegex);
1573
+ if (!match) {
1574
+ throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
1391
1575
  }
1392
- if (typeof value === "bigint") {
1393
- throw new Error("canonicalJson: bigint is not representable");
1576
+ const frontmatterText = match[1] ?? "";
1577
+ const body = match[2] ?? "";
1578
+ let parsed;
1579
+ try {
1580
+ parsed = import_yaml2.default.parse(frontmatterText);
1581
+ } catch (err) {
1582
+ const reason = err instanceof Error ? err.message : String(err);
1583
+ throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
1394
1584
  }
1395
- if (typeof value === "symbol" || typeof value === "function") {
1396
- throw new Error(`canonicalJson: ${typeof value} is not representable`);
1585
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
1586
+ throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
1397
1587
  }
1398
- if (value === void 0) {
1399
- throw new Error("canonicalJson: undefined is not representable at root");
1588
+ const fm = parsed;
1589
+ const id = fm.id;
1590
+ if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
1591
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
1400
1592
  }
1401
- if (Array.isArray(value)) {
1402
- const parts = [];
1403
- for (let i = 0; i < value.length; i++) {
1404
- if (!(i in value) || value[i] === void 0) {
1405
- parts.push("null");
1406
- continue;
1407
- }
1408
- parts.push(serialize(value[i]));
1409
- }
1410
- return `[${parts.join(",")}]`;
1593
+ const version = fm.version;
1594
+ if (version !== 1) {
1595
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
1411
1596
  }
1412
- if (typeof value === "object") {
1413
- const obj = value;
1414
- const keys = Object.keys(obj).sort();
1415
- const parts = [];
1416
- for (const key of keys) {
1417
- const child = obj[key];
1418
- if (child === void 0) continue;
1419
- parts.push(`${JSON.stringify(key)}:${serialize(child)}`);
1597
+ const description = fm.description;
1598
+ if (typeof description !== "string" || description.trim() === "") {
1599
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
1600
+ }
1601
+ const dynamicRaw = fm.dynamic;
1602
+ if (dynamicRaw !== void 0 && typeof dynamicRaw !== "boolean") {
1603
+ throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
1604
+ }
1605
+ return {
1606
+ path: filePath,
1607
+ relPath,
1608
+ id,
1609
+ version,
1610
+ description,
1611
+ dynamic: dynamicRaw === true,
1612
+ body,
1613
+ contentHash: sha256(raw)
1614
+ };
1615
+ }
1616
+ function loadFragments(options) {
1617
+ const rootDir = typeof options === "string" ? options : options?.rootDir;
1618
+ const resolvedRoot = rootDir ? path.resolve(rootDir) : defaultRootDir();
1619
+ const files = walk(resolvedRoot);
1620
+ const byId = /* @__PURE__ */ new Map();
1621
+ for (const file of files) {
1622
+ const fragment = parseFragment(file, resolvedRoot);
1623
+ const existing = byId.get(fragment.id);
1624
+ if (existing) {
1625
+ throw new Error(
1626
+ `fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`
1627
+ );
1420
1628
  }
1421
- return `{${parts.join(",")}}`;
1629
+ byId.set(fragment.id, fragment);
1422
1630
  }
1423
- throw new Error(`canonicalJson: unsupported value of type ${typeof value}`);
1631
+ return { byId, rootDir: resolvedRoot };
1424
1632
  }
1425
1633
 
1426
1634
  export {
1427
- sha2562 as sha256,
1428
- canonicalJson2 as canonicalJson,
1635
+ renderCodewikiDigest,
1636
+ sha256,
1637
+ canonicalJson,
1429
1638
  RUN_RECEIPT_INTEGRITY_VERSION,
1430
1639
  RUN_RECEIPT_INTEGRITY_ALGORITHM,
1431
1640
  withReceiptIntegrity,
@@ -1472,6 +1681,7 @@ export {
1472
1681
  evalServingObservationFrom,
1473
1682
  assertComparableTrackedMetricSources,
1474
1683
  loadEvalTaskFile,
1475
- EvalTaskFileError
1684
+ EvalTaskFileError,
1685
+ loadFragments
1476
1686
  };
1477
- //# sourceMappingURL=chunk-CUSRQKPU.js.map
1687
+ //# sourceMappingURL=chunk-HZ2T2YED.js.map