@iowarp/clio-coder 0.4.4 → 0.4.5

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 (555) hide show
  1. package/CHANGELOG.md +92 -2
  2. package/CONTRIBUTING.md +25 -15
  3. package/README.md +340 -27
  4. package/dist/{acp-WNAYYF4F.js → acp-H3CU2HBQ.js} +25 -24
  5. package/dist/{agents-3OKXHLOI.js → agents-IXQQZ7BD.js} +77 -77
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-VKNNMGPU.js → auth-R7KYF7N3.js} +38 -38
  8. package/dist/builtins-CRFDQUVP.js +22 -0
  9. package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
  10. package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
  11. package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
  12. package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
  13. package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
  14. package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
  15. package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
  16. package/dist/{chunk-6Q3CYFD3.js → chunk-4SVIVOMC.js} +184 -33
  17. package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
  18. package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
  19. package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
  20. package/dist/{chunk-I2DWJ4GM.js → chunk-5DDOTTG4.js} +54 -42
  21. package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
  22. package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
  23. package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
  24. package/dist/{chunk-54X7T7DK.js → chunk-5ZMXGW7P.js} +79 -7
  25. package/dist/chunk-5ZSZEYJK.js +119 -0
  26. package/dist/{chunk-IXIY2H4R.js → chunk-633EXGZA.js} +5 -5
  27. package/dist/{chunk-CUSRQKPU.js → chunk-6CDNRHWH.js} +299 -89
  28. package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
  29. package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
  30. package/dist/{chunk-JEIYHLOR.js → chunk-6SYEGZI3.js} +12 -12
  31. package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
  32. package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
  33. package/dist/{chunk-6PAZTBPA.js → chunk-7HBHHVCK.js} +15 -6
  34. package/dist/{chunk-25QBEXRS.js → chunk-7TKWWPD7.js} +5 -4
  35. package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
  36. package/dist/chunk-7WUZEB2M.js +165 -0
  37. package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
  38. package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
  39. package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
  40. package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
  41. package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
  42. package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
  43. package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
  44. package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
  45. package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
  46. package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
  47. package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
  48. package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
  49. package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
  50. package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
  51. package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
  52. package/dist/{chunk-YNFKXPEC.js → chunk-DIMRLNIC.js} +35 -66
  53. package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
  54. package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
  55. package/dist/{chunk-XULDXHTN.js → chunk-DRD2A54W.js} +102 -50
  56. package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
  57. package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
  58. package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
  59. package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
  60. package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
  61. package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
  62. package/dist/chunk-ECOMVOHP.js +139 -0
  63. package/dist/chunk-EFSEIZE6.js +56 -0
  64. package/dist/{chunk-FEAXX7B6.js → chunk-EHCPSZJF.js} +4 -4
  65. package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
  66. package/dist/{chunk-7UGL4MB5.js → chunk-EQEJJ53P.js} +10 -10
  67. package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
  68. package/dist/{chunk-6UINWWS6.js → chunk-F34AR6O3.js} +14 -14
  69. package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
  70. package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
  71. package/dist/{chunk-Y55JBDO5.js → chunk-FSTIBAGM.js} +38 -23
  72. package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
  73. package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
  74. package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
  75. package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
  76. package/dist/{chunk-QUFRYSWI.js → chunk-GNQRWTMY.js} +129 -48
  77. package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
  78. package/dist/{chunk-GX5WYQO4.js → chunk-GXCCHKN6.js} +6 -6
  79. package/dist/{chunk-K6T2ZAMZ.js → chunk-HGSLRG33.js} +6 -6
  80. package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
  81. package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
  82. package/dist/{chunk-JT2RFCC5.js → chunk-HR3HPQ76.js} +5 -5
  83. package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
  84. package/dist/{chunk-ELWDPP3Y.js → chunk-I7VLWRK2.js} +8 -8
  85. package/dist/{chunk-6OSVSQL5.js → chunk-ICO4TQ2F.js} +7 -5
  86. package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
  87. package/dist/{chunk-72YIHOZQ.js → chunk-ILJ7DWGE.js} +9 -9
  88. package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
  89. package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
  90. package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
  91. package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
  92. package/dist/{chunk-2ASED4PZ.js → chunk-K6RDB7IA.js} +26 -26
  93. package/dist/{chunk-FFUPXJC4.js → chunk-KDWLXVMN.js} +23 -24
  94. package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
  95. package/dist/{chunk-6QOTUPRG.js → chunk-KF6GFW6O.js} +66 -18
  96. package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
  97. package/dist/chunk-KPRLAMP4.js +32 -0
  98. package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
  99. package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
  100. package/dist/{chunk-57XXR6DR.js → chunk-KYKNBD4Y.js} +24 -23
  101. package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
  102. package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
  103. package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
  104. package/dist/chunk-LUL5Z66S.js +221 -0
  105. package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
  106. package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
  107. package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
  108. package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
  109. package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
  110. package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
  111. package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
  112. package/dist/{chunk-DXKJURES.js → chunk-MDU3C27C.js} +10 -7
  113. package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
  114. package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
  115. package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
  116. package/dist/chunk-NTK3WTHM.js +141 -0
  117. package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
  118. package/dist/{chunk-RZDWV63N.js → chunk-NY6IWDVU.js} +6 -6
  119. package/dist/{chunk-XXYSBZIQ.js → chunk-O2RQ7LCK.js} +4 -4
  120. package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
  121. package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
  122. package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
  123. package/dist/{chunk-LTIKRKFL.js → chunk-ONRTXOZY.js} +4 -4
  124. package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
  125. package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
  126. package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
  127. package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
  128. package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
  129. package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
  130. package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
  131. package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
  132. package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
  133. package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
  134. package/dist/{chunk-2DSOYNFC.js → chunk-R6MAYTMS.js} +7 -7
  135. package/dist/{chunk-JQLNNIKT.js → chunk-R6MICQYU.js} +6 -6
  136. package/dist/{chunk-NAI6ZFCY.js → chunk-RLTT5GVY.js} +122 -11
  137. package/dist/{chunk-DT3LWJOB.js → chunk-RXIOCVBZ.js} +24 -6
  138. package/dist/{chunk-N56KALIC.js → chunk-S32UQ5GL.js} +61 -34
  139. package/dist/{chunk-UEPWCCTY.js → chunk-SBZX6ARC.js} +12 -12
  140. package/dist/chunk-SD7SHNDW.js +15 -0
  141. package/dist/{chunk-NRO2BJRH.js → chunk-SDWNDICN.js} +10235 -4015
  142. package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
  143. package/dist/chunk-SL2RDHKO.js +19 -0
  144. package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
  145. package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
  146. package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
  147. package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
  148. package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
  149. package/dist/{chunk-2ZSONWVL.js → chunk-T7FDXNRU.js} +13 -13
  150. package/dist/{chunk-JSD46VO2.js → chunk-TEG3RYVZ.js} +43 -36
  151. package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
  152. package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
  153. package/dist/{chunk-75W7L2E2.js → chunk-TZ7MFRG4.js} +1041 -162
  154. package/dist/{chunk-36CT5VVL.js → chunk-U2JOLB7O.js} +126 -77
  155. package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
  156. package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
  157. package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
  158. package/dist/{chunk-RQCKCSRL.js → chunk-U7VQ4NI4.js} +22 -22
  159. package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
  160. package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
  161. package/dist/{chunk-USR47QNF.js → chunk-UL36QJX6.js} +14 -14
  162. package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
  163. package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
  164. package/dist/chunk-USZA7GWL.js +341 -0
  165. package/dist/{chunk-YD5GIKET.js → chunk-UTUNT5QL.js} +48 -579
  166. package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
  167. package/dist/{chunk-23L32XTI.js → chunk-UXAC2FX4.js} +68 -39
  168. package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
  169. package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
  170. package/dist/{chunk-EXLD33WO.js → chunk-VLPTKCKT.js} +24 -9
  171. package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
  172. package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
  173. package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
  174. package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
  175. package/dist/{chunk-S6PYF2XF.js → chunk-WFKDPU7U.js} +4 -4
  176. package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
  177. package/dist/{chunk-5636DCO5.js → chunk-WLMSOT73.js} +59 -12
  178. package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
  179. package/dist/chunk-WXA2CFJO.js +23 -0
  180. package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
  181. package/dist/{chunk-4M6Z5QVF.js → chunk-XXBQKW32.js} +11 -11
  182. package/dist/{chunk-OEJSLEPW.js → chunk-YEJIG7LN.js} +332 -332
  183. package/dist/chunk-YGDMBK7O.js +567 -0
  184. package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
  185. package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
  186. package/dist/{chunk-Q4WO54TA.js → chunk-ZMZQEBKI.js} +14 -14
  187. package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
  188. package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
  189. package/dist/cli/index.js +44 -44
  190. package/dist/clio-5I2IBFYL.js +26 -0
  191. package/dist/{code-nav-IJR2DBPR.js → code-nav-YXIAEZVS.js} +48 -32
  192. package/dist/codewiki/build-worker.js +76 -29
  193. package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
  194. package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
  195. package/dist/{config-IUA6OYNS.js → config-Y2JDJ3JJ.js} +210 -124
  196. package/dist/configure-SML6UBZ5.js +55 -0
  197. package/dist/{context-4MPR7WKB.js → context-P5YSEO55.js} +125 -121
  198. package/dist/{context-2DKHWH2T.js → context-QQ53HSGJ.js} +91 -62
  199. package/dist/{context-BOYF5EJM.js → context-S2EEC3EJ.js} +62 -31
  200. package/dist/context-clear-TMEQCOTH.js +183 -0
  201. package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
  202. package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
  203. package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-CNLSQN5K.js} +31 -31
  204. package/dist/detail-5572VLBO.js +114 -0
  205. package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-FRHD6P2O.js} +191 -116
  206. package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
  207. package/dist/{doctor-DKICC2SN.js → doctor-N3LCM2LG.js} +58 -58
  208. package/dist/{eval-OQOQUDHK.js → eval-BUU3ZOUZ.js} +473 -168
  209. package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
  210. package/dist/evidence-DTGEN456.js +224 -0
  211. package/dist/{evidence-4DQ25GUQ.js → evidence-SQ5DNFEN.js} +110 -94
  212. package/dist/{evolve-GSS52E5J.js → evolve-IJNUFZDS.js} +107 -91
  213. package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
  214. package/dist/{fleet-Q37YHHAQ.js → fleet-ZNNVSYFO.js} +147 -147
  215. package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-5YE7NPJL.js} +27 -26
  216. package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
  217. package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-6HHPWF5T.js} +39 -38
  218. package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-JEYMGCGC.js} +107 -91
  219. package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
  220. package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
  221. package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-4PM4GDDL.js} +46 -42
  222. package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-NJDTHTO3.js} +105 -89
  223. package/dist/fleet-view-UP2BWQQY.js +117 -0
  224. package/dist/{init-PXEXQSBF.js → init-S3GZQ5ZF.js} +123 -123
  225. package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
  226. package/dist/{interop-ZG5T62U3.js → interop-YOTGXFJM.js} +25 -25
  227. package/dist/inventory-K2OZ36YJ.js +117 -0
  228. package/dist/{library-B2W4N74O.js → library-GJI6W6OK.js} +45 -44
  229. package/dist/{memory-YCANYS5A.js → memory-OQOXQGYD.js} +107 -93
  230. package/dist/{models-GERTU3YI.js → models-3IK2Y5WE.js} +63 -62
  231. package/dist/{monitor-CPNIUULB.js → monitor-FTJLTKCQ.js} +136 -107
  232. package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-N47O7SFD.js} +1159 -697
  233. package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
  234. package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
  235. package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
  236. package/dist/preload-65U34NG6.js +115 -0
  237. package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
  238. package/dist/{reset-TNWTB5LU.js → reset-MUVQDLNL.js} +20 -20
  239. package/dist/{resources-4PXNMD5G.js → resources-LM76COAO.js} +41 -40
  240. package/dist/{run-D6XJ34CN.js → run-3VFZQ33N.js} +162 -156
  241. package/dist/{share-2NWMJJEE.js → share-4JUB4BL7.js} +43 -42
  242. package/dist/{skills-KR7WON5G.js → skills-S36AAJHU.js} +47 -46
  243. package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-G6T57L7M.js} +127 -107
  244. package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-WLM46PJH.js} +41 -40
  245. package/dist/slash-commands-GBARG3Y7.js +91 -0
  246. package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
  247. package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
  248. package/dist/{targets-OMH2XCSN.js → targets-N5REUETU.js} +145 -94
  249. package/dist/tasks-6BVY5YZF.js +36 -0
  250. package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-57UEOJKS.js} +12 -11
  251. package/dist/tools-6OCQ6SVB.js +28 -0
  252. package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
  253. package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
  254. package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
  255. package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
  256. package/dist/{upgrade-MS72RJEP.js → upgrade-4HD5HAIV.js} +40 -39
  257. package/dist/{usage-NHG6MCJM.js → usage-4GWM2WWP.js} +136 -105
  258. package/dist/{verifiers-7AUNVXDY.js → verifiers-GSKWKWVG.js} +28 -27
  259. package/dist/verify-3AS3ULCY.js +30 -0
  260. package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
  261. package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
  262. package/dist/wiki-generate-7BV7XWIY.js +614 -0
  263. package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
  264. package/dist/worker/entry.js +99 -88
  265. package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
  266. package/docs/README.md +7 -6
  267. package/docs/architecture/acp.md +10 -0
  268. package/docs/architecture/architecture.md +5 -5
  269. package/docs/architecture/context-engine.md +44 -59
  270. package/docs/architecture/context-working-set.md +7 -9
  271. package/docs/architecture/dispatch-architecture-rationale.md +1 -1
  272. package/docs/architecture/evidence-and-memory.md +10 -0
  273. package/docs/architecture/pi-boundary.md +37 -7
  274. package/docs/architecture/prompt-envelope-and-tools.md +7 -7
  275. package/docs/architecture/session-lifecycle.md +4 -4
  276. package/docs/architecture/worker-dispatch-mechanics.md +4 -0
  277. package/docs/guide/commands-and-modes.md +49 -36
  278. package/docs/guide/configuration-and-targets.md +7 -2
  279. package/docs/guide/configuration-reference.md +13 -3
  280. package/docs/guide/environment-variables.md +6 -2
  281. package/docs/guide/fleet-dispatch.md +12 -0
  282. package/docs/guide/installation-and-lifecycle.md +35 -9
  283. package/docs/guide/proactive-memory.md +1 -1
  284. package/docs/guide/skills-marketplace.md +11 -3
  285. package/docs/guide/tool-usage.md +9 -2
  286. package/docs/process/development-pipeline.md +10 -10
  287. package/docs/process/documentation-guide.md +2 -2
  288. package/docs/process/eval-runner.md +15 -0
  289. package/docs/process/evals-internal.md +1 -1
  290. package/docs/process/release-cut-checklist.md +6 -6
  291. package/evals/README.md +4 -0
  292. package/evals/behavioral-corpus-grader.mjs +147 -14
  293. package/evals/behavioral-model-negative-control.yaml +1 -0
  294. package/evals/behavioral-model.yaml +266 -1
  295. package/evals/fixtures/docs-retrieval.json +102 -0
  296. package/evals/fixtures/scalar-decision.json +17 -0
  297. package/evals/fixtures/scout-citation-pipeline.json +55 -0
  298. package/evals/fixtures/source-explanation.json +74 -0
  299. package/evals/fixtures/tool-arguments.json +18 -0
  300. package/evals/fixtures/tool-surface/read.txt +4 -0
  301. package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
  302. package/evals/no-edit-memory-grader.mjs +149 -0
  303. package/evals/scalar-decision-grader.py +41 -0
  304. package/evals/scalar-decision-machinery.ts +145 -0
  305. package/evals/source-explanation-grader.mjs +118 -0
  306. package/evals/tool-surface-grader.mjs +53 -0
  307. package/evals/tool-surface-model.yaml +274 -0
  308. package/package.json +14 -14
  309. package/skills/README.md +6 -6
  310. package/skills/registry.yaml +1 -1
  311. package/skills/skill-marketplace.json +1 -1
  312. package/src/cli/bootstrap-generate.ts +6 -0
  313. package/src/cli/config-inspect.ts +24 -7
  314. package/src/cli/config-trust.ts +62 -0
  315. package/src/cli/config.ts +8 -0
  316. package/src/cli/context-map.ts +75 -14
  317. package/src/cli/context.ts +46 -17
  318. package/src/cli/eval.ts +17 -3
  319. package/src/cli/modes/print.ts +32 -4
  320. package/src/cli/run.ts +16 -14
  321. package/src/cli/skills-eval.ts +10 -8
  322. package/src/cli/steer-channel.ts +31 -18
  323. package/src/cli/targets.ts +83 -31
  324. package/src/cli/tasks.ts +10 -1
  325. package/src/cli/upgrade.ts +9 -6
  326. package/src/cli/usage.ts +24 -0
  327. package/src/cli/wiki-generate.ts +239 -96
  328. package/src/core/bash-exec.ts +43 -15
  329. package/src/core/bus-events.ts +15 -0
  330. package/src/core/config.ts +33 -14
  331. package/src/core/defaults.ts +5 -4
  332. package/src/core/file-references.ts +11 -1
  333. package/src/core/incomplete-installation.ts +3 -1
  334. package/src/core/settings-layers.ts +21 -5
  335. package/src/core/termination.ts +26 -9
  336. package/src/core/untrusted-content.ts +16 -0
  337. package/src/core/workspace-trust.ts +179 -0
  338. package/src/domains/agents/builtins/coder.md +4 -2
  339. package/src/domains/agents/builtins/context-bootstrap.md +3 -1
  340. package/src/domains/agents/builtins/documenter.md +7 -4
  341. package/src/domains/agents/builtins/researcher.md +1 -0
  342. package/src/domains/agents/builtins/scout.md +7 -1
  343. package/src/domains/agents/result-contract.ts +199 -26
  344. package/src/domains/context/bootstrap-prompt.ts +11 -9
  345. package/src/domains/context/bootstrap.ts +74 -39
  346. package/src/domains/context/clio-md.ts +88 -26
  347. package/src/domains/context/codewiki/build-operation.ts +121 -0
  348. package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
  349. package/src/domains/context/codewiki/build-worker.ts +3 -35
  350. package/src/domains/context/codewiki/coordinator.ts +36 -6
  351. package/src/domains/context/codewiki/indexer.ts +59 -19
  352. package/src/domains/context/contract.ts +6 -2
  353. package/src/domains/context/extension.ts +72 -10
  354. package/src/domains/context/fingerprint.ts +39 -34
  355. package/src/domains/context/index.ts +7 -1
  356. package/src/domains/context/prompt-context.ts +55 -14
  357. package/src/domains/context/refresh.ts +9 -57
  358. package/src/domains/context/wiki/assemble.ts +14 -10
  359. package/src/domains/context/wiki/evidence.ts +209 -0
  360. package/src/domains/context/wiki/generate.ts +201 -67
  361. package/src/domains/context/wiki/meta.ts +10 -2
  362. package/src/domains/context/wiki/plan-store.ts +70 -14
  363. package/src/domains/context/wiki/plan.ts +71 -14
  364. package/src/domains/context/wiki/prompts.ts +42 -1
  365. package/src/domains/context/wiki/source-content.ts +106 -0
  366. package/src/domains/context/wiki/staleness.ts +33 -22
  367. package/src/domains/context/working-set/contract.ts +8 -2
  368. package/src/domains/context/working-set/engine.ts +17 -4
  369. package/src/domains/context/working-set/fold.ts +15 -2
  370. package/src/domains/context/working-set/marker.ts +2 -1
  371. package/src/domains/context/working-set/project.ts +18 -7
  372. package/src/domains/context/working-set/recall.ts +82 -56
  373. package/src/domains/dispatch/active-route-planner.ts +6 -3
  374. package/src/domains/dispatch/admission-queue.ts +19 -7
  375. package/src/domains/dispatch/admission.ts +3 -3
  376. package/src/domains/dispatch/budget-envelope.ts +47 -82
  377. package/src/domains/dispatch/capacity-lease.ts +57 -19
  378. package/src/domains/dispatch/contract.ts +10 -2
  379. package/src/domains/dispatch/event-pump.ts +28 -7
  380. package/src/domains/dispatch/execution-role.ts +49 -2
  381. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  382. package/src/domains/dispatch/extension.ts +190 -105
  383. package/src/domains/dispatch/fleet-run.ts +20 -0
  384. package/src/domains/dispatch/gate-role-prompts.ts +4 -2
  385. package/src/domains/dispatch/parallel-writers.ts +34 -0
  386. package/src/domains/dispatch/reservation-store.ts +8 -34
  387. package/src/domains/dispatch/route-approval.ts +3 -3
  388. package/src/domains/dispatch/route-observer.ts +4 -2
  389. package/src/domains/dispatch/route-quality.ts +6 -1
  390. package/src/domains/dispatch/types.ts +4 -3
  391. package/src/domains/dispatch/worker-spawn.ts +58 -21
  392. package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
  393. package/src/domains/eval/compare/behavioral.ts +81 -14
  394. package/src/domains/eval/compare/compare.ts +15 -5
  395. package/src/domains/eval/compare/envelope.ts +12 -5
  396. package/src/domains/eval/metrics/context.ts +24 -1
  397. package/src/domains/eval/metrics/tracked.ts +4 -28
  398. package/src/domains/eval/reports/comparison.ts +9 -9
  399. package/src/domains/eval/runners/clio-run.ts +5 -1
  400. package/src/domains/eval/schema/suite.ts +2 -0
  401. package/src/domains/eval/schema/validate.ts +1 -0
  402. package/src/domains/eval/suites/run.ts +189 -13
  403. package/src/domains/eval/verifiers/integrity.ts +39 -0
  404. package/src/domains/eval/verifiers/patch.ts +58 -2
  405. package/src/domains/eval/workspaces/temp-copy.ts +3 -0
  406. package/src/domains/evidence/build.ts +4 -2
  407. package/src/domains/interop/registry.ts +2 -2
  408. package/src/domains/middleware/hooks-io.ts +45 -26
  409. package/src/domains/middleware/hooks.ts +6 -0
  410. package/src/domains/middleware/injection-screen.ts +23 -0
  411. package/src/domains/middleware/rules.ts +5 -1
  412. package/src/domains/middleware/stalled-turn.ts +18 -3
  413. package/src/domains/middleware/task-board-reminder.ts +4 -2
  414. package/src/domains/middleware/task-nudge.ts +4 -1
  415. package/src/domains/mux/contract.ts +34 -1
  416. package/src/domains/mux/dock-controller.ts +8 -1
  417. package/src/domains/mux/index.ts +1 -0
  418. package/src/domains/mux/socket-client.ts +13 -3
  419. package/src/domains/observability/contract.ts +2 -2
  420. package/src/domains/observability/projection.ts +30 -9
  421. package/src/domains/prompts/compiler.ts +10 -2
  422. package/src/domains/prompts/contract.ts +7 -4
  423. package/src/domains/prompts/extension.ts +28 -64
  424. package/src/domains/prompts/fragments/identity/clio.md +23 -0
  425. package/src/domains/prompts/fragments/operating/contract.md +10 -0
  426. package/src/domains/prompts/fragments/operating/delegation.md +5 -0
  427. package/src/domains/prompts/fragments/wiki/page.md +28 -15
  428. package/src/domains/prompts/fragments/wiki/plan.md +4 -4
  429. package/src/domains/prompts/preload-prefix.ts +31 -0
  430. package/src/domains/prompts/preload.ts +135 -61
  431. package/src/domains/providers/auth/backend-file.ts +15 -11
  432. package/src/domains/providers/auth/storage.ts +3 -5
  433. package/src/domains/providers/catalog.ts +18 -3
  434. package/src/domains/providers/runtime-resolution.ts +11 -9
  435. package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
  436. package/src/domains/resources/skills/promotion.ts +8 -1
  437. package/src/domains/safety/action-classifier.ts +9 -0
  438. package/src/domains/safety/autonomy.ts +10 -1
  439. package/src/domains/safety/contract.ts +5 -1
  440. package/src/domains/safety/default-path-policy.ts +11 -0
  441. package/src/domains/safety/extension.ts +11 -2
  442. package/src/domains/safety/policy-engine.ts +189 -32
  443. package/src/domains/safety/project-policy.ts +7 -2
  444. package/src/domains/safety/workspace-trust.ts +43 -0
  445. package/src/domains/session/compaction/compact.ts +384 -21
  446. package/src/domains/session/compaction/cut-point.ts +42 -5
  447. package/src/domains/session/compaction/tokens.ts +9 -1
  448. package/src/domains/session/decision-board.ts +43 -33
  449. package/src/domains/session/entries.ts +169 -4
  450. package/src/domains/session/prompt-manifest.ts +47 -8
  451. package/src/domains/session/task-board.ts +21 -3
  452. package/src/domains/user-tasks/handoff.ts +16 -0
  453. package/src/engine/acp/adapter.ts +44 -12
  454. package/src/engine/acp/server.ts +1 -0
  455. package/src/engine/acp/transport.ts +2 -1
  456. package/src/engine/acp/types.ts +6 -1
  457. package/src/engine/antigravity/subprocess-runtime.ts +20 -4
  458. package/src/engine/api-registry.ts +19 -2
  459. package/src/engine/apis/openai-completions.ts +13 -6
  460. package/src/engine/apis/output-budget.ts +26 -10
  461. package/src/engine/claude/sdk-runtime.ts +4 -3
  462. package/src/engine/env-api-keys.ts +2 -1
  463. package/src/engine/external-subprocess.ts +14 -3
  464. package/src/engine/loop-guard.ts +19 -2
  465. package/src/engine/provider-diagnostics.ts +129 -0
  466. package/src/engine/provider-payload.ts +3 -1
  467. package/src/engine/worker-runtime.ts +13 -2
  468. package/src/engine/worker-tools.ts +5 -1
  469. package/src/entry/extension-reload.ts +1 -0
  470. package/src/entry/orchestrator.ts +53 -15
  471. package/src/interactive/chat-loop-messages.ts +12 -4
  472. package/src/interactive/chat-loop.ts +115 -45
  473. package/src/interactive/chat-renderer.ts +60 -0
  474. package/src/interactive/context-recall-command.ts +2 -1
  475. package/src/interactive/dispatch-board.ts +17 -2
  476. package/src/interactive/editor-submit.ts +13 -0
  477. package/src/interactive/interactive-application.ts +8 -2
  478. package/src/interactive/interactive-event-projection.ts +7 -1
  479. package/src/interactive/interactive-presentation.ts +15 -7
  480. package/src/interactive/interactive-slash-runtime.ts +2 -0
  481. package/src/interactive/layout.ts +2 -1
  482. package/src/interactive/model-session-replay.ts +2 -2
  483. package/src/interactive/overlay-frame.ts +1 -0
  484. package/src/interactive/overlay-general-openers.ts +3 -1
  485. package/src/interactive/overlay-session-lifecycle.ts +6 -0
  486. package/src/interactive/overlays/ask-user.ts +1 -0
  487. package/src/interactive/overlays/message-picker.ts +1 -1
  488. package/src/interactive/renderers/tool-execution.ts +17 -1
  489. package/src/interactive/renderers/worker-entry.ts +25 -10
  490. package/src/interactive/slash-commands.ts +9 -7
  491. package/src/interactive/turn-context.ts +221 -53
  492. package/src/interactive/turn-middleware.ts +3 -1
  493. package/src/interactive/turn-persistence.ts +3 -0
  494. package/src/interactive/turn-runtime.ts +11 -2
  495. package/src/interactive/turn-state.ts +10 -9
  496. package/src/interactive/watch-pane.ts +18 -4
  497. package/src/interactive/worker-stream.ts +7 -7
  498. package/src/tools/agent-tools.ts +6 -3
  499. package/src/tools/bash.ts +1 -1
  500. package/src/tools/builtin-tool-catalog.ts +9 -2
  501. package/src/tools/codewiki/code-nav.ts +4 -10
  502. package/src/tools/compete-judge-task.ts +71 -0
  503. package/src/tools/compete-worktrees.ts +34 -0
  504. package/src/tools/context/index.ts +32 -7
  505. package/src/tools/context/surface.ts +15 -4
  506. package/src/tools/decide.ts +1 -1
  507. package/src/tools/dispatch-admission.ts +12 -1
  508. package/src/tools/dispatch-arguments.ts +38 -1
  509. package/src/tools/dispatch-plan.ts +7 -7
  510. package/src/tools/dispatch-runner.ts +48 -32
  511. package/src/tools/dispatch-schema.ts +30 -23
  512. package/src/tools/dispatch-scout-admission.ts +10 -44
  513. package/src/tools/dispatch-scout.ts +2 -3
  514. package/src/tools/find.ts +13 -4
  515. package/src/tools/grep.ts +13 -1
  516. package/src/tools/ls.ts +7 -1
  517. package/src/tools/monitor.ts +26 -11
  518. package/src/tools/network-policy.ts +11 -24
  519. package/src/tools/observation.ts +39 -2
  520. package/src/tools/read.ts +112 -15
  521. package/src/tools/registry.ts +54 -17
  522. package/src/tools/result-shaping.ts +110 -2
  523. package/src/tools/tasks.ts +33 -7
  524. package/src/tools/verify/frontend.ts +67 -30
  525. package/src/tools/verify/numeric.ts +6 -1
  526. package/src/tools/web-fetch-network.ts +179 -0
  527. package/src/tools/web-fetch-surface.ts +2 -1
  528. package/src/tools/web-fetch.ts +15 -13
  529. package/src/tools/worker-evidence.ts +27 -0
  530. package/src/worker/spec-contract.ts +12 -8
  531. package/dist/builtins-WGALA46I.js +0 -22
  532. package/dist/chunk-2WZ546HR.js +0 -792
  533. package/dist/chunk-5PSMVOLM.js +0 -56
  534. package/dist/chunk-EL24TAU4.js +0 -1560
  535. package/dist/chunk-IZXGRF7P.js +0 -4048
  536. package/dist/chunk-JVCV3ICN.js +0 -47
  537. package/dist/chunk-MNJGS2IN.js +0 -33
  538. package/dist/chunk-O5CVSAG5.js +0 -122
  539. package/dist/chunk-ODGTEFFI.js +0 -50
  540. package/dist/chunk-OQE5J4C6.js +0 -73
  541. package/dist/chunk-UUVG37B4.js +0 -244
  542. package/dist/chunk-V6HJFQZE.js +0 -228
  543. package/dist/clio-QLICPCF5.js +0 -25
  544. package/dist/configure-VEPX4NMX.js +0 -55
  545. package/dist/context-clear-S4ZJCQUX.js +0 -182
  546. package/dist/detail-A7JAVSIG.js +0 -98
  547. package/dist/evidence-4F5USFKH.js +0 -208
  548. package/dist/fleet-view-MN2VG4MR.js +0 -101
  549. package/dist/inventory-C26CFDRR.js +0 -101
  550. package/dist/preload-P6DGH2PZ.js +0 -13
  551. package/dist/slash-commands-ZXPJD64J.js +0 -92
  552. package/dist/tasks-IPAGMEIX.js +0 -36
  553. package/dist/tools-EFFEAIDP.js +0 -28
  554. package/dist/verify-FWYGPKMR.js +0 -29
  555. package/dist/wiki-generate-743CIGJW.js +0 -476
@@ -1,21 +1,14 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- extractCommandCdTargets,
4
- extractCommandWriteTargets
5
- } from "./chunk-NXYCB2VD.js";
6
- import {
7
- canonicalizeExistingPath
8
- } from "./chunk-ECH6PKUQ.js";
9
- import {
10
- artifactDefaultPath
11
- } from "./chunk-GYV6VZOC.js";
3
+ classify
4
+ } from "./chunk-LUL5Z66S.js";
12
5
  import {
13
6
  ToolNames,
14
7
  isBuiltinToolName
15
- } from "./chunk-4NSRCOYP.js";
8
+ } from "./chunk-EHOSNVVM.js";
16
9
  import {
17
10
  init_esm_shims
18
- } from "./chunk-3R73A4XB.js";
11
+ } from "./chunk-ECBHH7LU.js";
19
12
 
20
13
  // src/core/json-payload.ts
21
14
  init_esm_shims();
@@ -48,199 +41,6 @@ function parseJsonObjectPayload(text) {
48
41
  // src/domains/agents/spec.ts
49
42
  init_esm_shims();
50
43
  import { createHash } from "node:crypto";
51
-
52
- // src/domains/safety/action-classifier.ts
53
- init_esm_shims();
54
- import path from "node:path";
55
- var GIT_DESTRUCTIVE_PATTERNS = [
56
- { name: "git-push-force-long", re: /\bgit\s+push\s+--force\b/i },
57
- { name: "git-push-force-short", re: /\bgit\s+push\s+-f\b/i },
58
- { name: "git-reset-hard", re: /\bgit\s+reset\s+--hard\b/i },
59
- { name: "git-clean-fd", re: /\bgit\s+clean\s+-fd?\b/i },
60
- { name: "git-checkout-dot", re: /\bgit\s+checkout\s+--\s+\./i },
61
- { name: "git-branch-D", re: /\bgit\s+branch\s+-D\b/i },
62
- { name: "git-restore-source", re: /\bgit\s+restore\s+--source\b/i }
63
- ];
64
- var SYSTEM_MODIFY_PATTERNS = [
65
- { name: "sudo-or-doas", re: /\b(sudo|doas)\b/i },
66
- // allow rm -rf /tmp/... and /var/tmp/... but flag everything else rooted at /
67
- { name: "rm-rf-root", re: /\brm\s+-rf?\s+\/(?!(tmp|var\/tmp)(?:\/|\s|$))/i },
68
- { name: "apt-install", re: /\bapt(-get)?\s+(install|remove|purge)/i },
69
- { name: "brew-install", re: /\bbrew\s+(install|uninstall|reinstall)/i },
70
- { name: "npm-install-global", re: /\bnpm\s+install\s+-g\b/i },
71
- { name: "pip-install", re: /\bpip\s+install\b/i },
72
- { name: "systemctl", re: /\bsystemctl\s+/i },
73
- { name: "chmod-root", re: /\bchmod\s+[0-7]{3,4}\s+\//i },
74
- { name: "chown", re: /\bchown\s+/i }
75
- ];
76
- var SYSTEM_WRITE_ROOT_PREFIXES = ["/etc", "/usr", "/var", "/bin", "/sbin", "/run"];
77
- var SYSTEM_WRITE_EXEMPT_PREFIXES = ["/var/tmp", "/var/folders"];
78
- function isUnderPrefix(abs, prefix) {
79
- return abs === prefix || abs.startsWith(`${prefix}/`);
80
- }
81
- function baseClassify(tool) {
82
- switch (tool) {
83
- case ToolNames.Evidence:
84
- case ToolNames.Read:
85
- case ToolNames.Grep:
86
- case ToolNames.Find:
87
- case ToolNames.Ls:
88
- case ToolNames.WebFetch:
89
- case ToolNames.Git:
90
- case ToolNames.CodeNav:
91
- case ToolNames.Context:
92
- case ToolNames.Monitor:
93
- case ToolNames.AskUser:
94
- case ToolNames.CredentialPresent:
95
- // tasks pick mutates only Clio-owned session-ledger and project-local
96
- // .clio-coder runtime state, never source-workspace files. By intentional
97
- // policy it stays read class and ungated; the tool itself still requires
98
- // a durable operator task id before it can mutate either store.
99
- case ToolNames.Tasks:
100
- // ledger posts a typed contribution to a coordination board and reads a
101
- // local mirror. Neither touches the workspace, so it is never gated
102
- // behind a confirmation.
103
- case ToolNames.Ledger:
104
- // panes focuses, opens, and closes terminal panes Clio itself created, in
105
- // a pane host that lives outside the workspace. Nothing it does writes a
106
- // file, runs a model-supplied command (its schema exposes presets only),
107
- // or survives the session, so it is reversible, local, and never gated
108
- // behind a confirmation.
109
- case ToolNames.Panes:
110
- // limitation appends a typed receipt to the session ledger and touches
111
- // nothing else, so it is never gated behind a confirmation.
112
- case ToolNames.Limitation:
113
- // decide appends the model's own design decision to the session
114
- // decision board. One ledger append, no workspace effect, never gated.
115
- case ToolNames.Decide:
116
- return "read";
117
- case ToolNames.Write:
118
- case ToolNames.Edit:
119
- case ToolNames.Artifact:
120
- return "write";
121
- case ToolNames.Bash:
122
- case ToolNames.Verify:
123
- return "execute";
124
- case ToolNames.Dispatch:
125
- case ToolNames.Steer:
126
- return "dispatch";
127
- default:
128
- return null;
129
- }
130
- }
131
- function scanStringOf(args) {
132
- if (!args) return "";
133
- const parts = [];
134
- for (const value of Object.values(args)) {
135
- if (value == null) continue;
136
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
137
- parts.push(String(value));
138
- } else {
139
- try {
140
- parts.push(JSON.stringify(value));
141
- } catch {
142
- }
143
- }
144
- }
145
- return parts.join(" ");
146
- }
147
- function matchFirst(patterns, haystack) {
148
- for (const p of patterns) {
149
- if (p.re.test(haystack)) return p;
150
- }
151
- return null;
152
- }
153
- function resolveCandidate(p, baseCwd) {
154
- if (p.startsWith("~")) return p;
155
- const base = canonicalizeExistingPath(path.resolve(baseCwd ?? process.cwd()));
156
- const resolved = path.isAbsolute(p) ? path.resolve(p) : path.resolve(base, p);
157
- return canonicalizeExistingPath(resolved);
158
- }
159
- function isInsideCwd(abs) {
160
- const cwd = canonicalizeExistingPath(path.resolve(process.cwd()));
161
- const candidate = canonicalizeExistingPath(abs);
162
- const rel = path.relative(cwd, candidate);
163
- return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
164
- }
165
- function writePathClass(pathArg, baseCwd) {
166
- if (pathArg.startsWith("~")) {
167
- return { cls: "system_modify", reason: `write-path-home-escape: ${pathArg}` };
168
- }
169
- const abs = resolveCandidate(pathArg, baseCwd);
170
- const exempt = SYSTEM_WRITE_EXEMPT_PREFIXES.some((prefix) => isUnderPrefix(abs, prefix));
171
- if (!exempt) {
172
- for (const prefix of SYSTEM_WRITE_ROOT_PREFIXES) {
173
- if (isUnderPrefix(abs, prefix)) {
174
- return { cls: "system_modify", reason: `write-path-system-root: ${prefix}` };
175
- }
176
- }
177
- }
178
- if (!isInsideCwd(abs)) {
179
- return { cls: "system_modify", reason: `write-path-outside-cwd: ${abs}` };
180
- }
181
- return { cls: "write" };
182
- }
183
- function extractWritePath(tool, args) {
184
- const candidate = args?.path ?? args?.file_path ?? args?.filePath;
185
- if (typeof candidate === "string" && candidate.length > 0) return candidate;
186
- return tool === ToolNames.Artifact ? artifactDefaultPath(args?.kind) : null;
187
- }
188
- function classify(call) {
189
- const base = baseClassify(call.tool);
190
- if (base === null) {
191
- return { actionClass: "unknown", reasons: [`unknown tool: ${call.tool}`] };
192
- }
193
- const reasons = [];
194
- if (call.tool === ToolNames.Bash) {
195
- const scan = scanStringOf(call.args);
196
- const gitHit = matchFirst(GIT_DESTRUCTIVE_PATTERNS, scan);
197
- if (gitHit) {
198
- return { actionClass: "git_destructive", reasons: [`pattern:${gitHit.name}`] };
199
- }
200
- const sysHit = matchFirst(SYSTEM_MODIFY_PATTERNS, scan);
201
- if (sysHit) {
202
- return { actionClass: "system_modify", reasons: [`pattern:${sysHit.name}`] };
203
- }
204
- const command = typeof call.args?.command === "string" ? call.args.command : null;
205
- const argCwd = typeof call.args?.cwd === "string" && call.args.cwd.length > 0 ? call.args.cwd : void 0;
206
- if (command !== null) {
207
- const targetReasons = [];
208
- for (const target of extractCommandWriteTargets(command)) {
209
- const decision = writePathClass(target, argCwd);
210
- if (decision.cls === "system_modify") {
211
- targetReasons.push(decision.reason ?? `bash-write-target: ${target}`);
212
- }
213
- }
214
- for (const target of extractCommandCdTargets(command)) {
215
- if (target.startsWith("~")) {
216
- targetReasons.push(`bash-cd-home-escape: ${target}`);
217
- continue;
218
- }
219
- const abs = resolveCandidate(target, argCwd);
220
- if (!isInsideCwd(abs)) {
221
- targetReasons.push(`bash-cd-outside-workspace: ${abs}`);
222
- }
223
- }
224
- if (targetReasons.length > 0) {
225
- return { actionClass: "system_modify", reasons: targetReasons };
226
- }
227
- }
228
- return { actionClass: "execute", reasons };
229
- }
230
- if (base === "write") {
231
- const pathArg = extractWritePath(call.tool, call.args);
232
- if (pathArg) {
233
- const decision = writePathClass(pathArg);
234
- if (decision.cls === "system_modify") {
235
- return { actionClass: "system_modify", reasons: decision.reason ? [decision.reason] : [] };
236
- }
237
- }
238
- return { actionClass: "write", reasons };
239
- }
240
- return { actionClass: base, reasons };
241
- }
242
-
243
- // src/domains/agents/spec.ts
244
44
  var AGENT_AUTOMATION_AUTHORITIES = ["read-only", "verification", "artifact-write", "workspace-edit"];
245
45
  var AGENT_PRODUCTS = ["orientation"];
246
46
  var AGENT_CATEGORIES = [
@@ -476,7 +276,7 @@ ${errors.map((error) => `- ${error}`).join("\n")}`);
476
276
  // src/domains/agents/result-contract.ts
477
277
  init_esm_shims();
478
278
  import { createHash as createHash2 } from "node:crypto";
479
- import path2 from "node:path";
279
+ import path from "node:path";
480
280
  function parseDelegationPlanResult(output) {
481
281
  const parsed = parseJson(output);
482
282
  if (!parsed.ok || !hasOnlyKeys(parsed.value, ["tasks"]) || !Array.isArray(parsed.value.tasks) || parsed.value.tasks.length === 0)
@@ -799,17 +599,17 @@ function parseChecks(value) {
799
599
  return checks;
800
600
  }
801
601
  function citationWithinWorkspace(cwd, citedPath) {
802
- const relative = path2.relative(cwd, citedPath);
602
+ const relative = path.relative(cwd, citedPath);
803
603
  if (relative === "") return true;
804
- return !(relative === ".." || relative.startsWith(`..${path2.sep}`) || path2.isAbsolute(relative));
604
+ return !(relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative));
805
605
  }
806
606
  function directoryCitationDigest(cwd, citedPath) {
807
- const relative = path2.relative(cwd, citedPath);
607
+ const relative = path.relative(cwd, citedPath);
808
608
  return createHash2("sha256").update(`directory:${relative === "" ? "." : relative}`, "utf8").digest("hex");
809
609
  }
810
610
  function validateScoutCitation(input, citation) {
811
- const cwd = path2.resolve(input.cwd);
812
- const citedPath = path2.resolve(cwd, citation.path);
611
+ const cwd = path.resolve(input.cwd);
612
+ const citedPath = path.resolve(cwd, citation.path);
813
613
  if (!citationWithinWorkspace(cwd, citedPath)) {
814
614
  return { ok: false, reason: `Scout citation path escapes the workspace: ${citation.path}` };
815
615
  }
@@ -974,6 +774,27 @@ function validateCodeReport(contract, output) {
974
774
  return success(contract, "unmeasured", value);
975
775
  }
976
776
  var RESULT_COMMIT_MESSAGE_MAX_BYTES = 1e3;
777
+ var RESULT_SUMMARY_DEFAULT_MAX_BYTES = 16384;
778
+ var RESULT_SUMMARY_MAX_BYTES_CEILING = 32768;
779
+ var RESULT_OUTPUT_ENVELOPE_HEADROOM_BYTES = 4096;
780
+ function resultSummaryMaxBytes(contract) {
781
+ if (contract.kind !== "mutation-report") return RESULT_COMMIT_MESSAGE_MAX_BYTES;
782
+ return contract.maxSummaryBytes ?? RESULT_SUMMARY_DEFAULT_MAX_BYTES;
783
+ }
784
+ function parseResultSummaryMaxBytes(value, label) {
785
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1 || value > RESULT_SUMMARY_MAX_BYTES_CEILING) {
786
+ throw new Error(`${label} must be an integer between 1 and ${RESULT_SUMMARY_MAX_BYTES_CEILING}`);
787
+ }
788
+ return value;
789
+ }
790
+ function withResultSummaryAllowance(contract, maxSummaryBytes) {
791
+ if (contract.kind !== "mutation-report") return contract;
792
+ return { kind: "mutation-report", maxSummaryBytes: parseResultSummaryMaxBytes(maxSummaryBytes, "maxSummaryBytes") };
793
+ }
794
+ function resultContractOutputBytes(contract) {
795
+ if (contract === null || contract === void 0 || contract.kind !== "mutation-report") return null;
796
+ return 2 * resultSummaryMaxBytes(contract) + 2 * RESULT_COMMIT_MESSAGE_MAX_BYTES + RESULT_OUTPUT_ENVELOPE_HEADROOM_BYTES;
797
+ }
977
798
  var AUTHORSHIP_FIELDS = ["commitMessage", "summary"];
978
799
  function hasControlCharacters(value) {
979
800
  for (const character of value) {
@@ -986,15 +807,15 @@ function hasControlCharacters(value) {
986
807
  function normalizeAuthored(value) {
987
808
  return value.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n").trim();
988
809
  }
989
- function validateAuthorship(value) {
810
+ function validateAuthorship(value, summaryMaxBytes) {
990
811
  for (const field of AUTHORSHIP_FIELDS) {
812
+ const maxBytes = field === "summary" ? summaryMaxBytes : RESULT_COMMIT_MESSAGE_MAX_BYTES;
991
813
  const raw = value[field];
992
814
  if (raw === void 0 || raw === null) continue;
993
815
  if (typeof raw !== "string") return `${field} must be a string when present`;
994
816
  if (raw.trim().length === 0) continue;
995
- if (Buffer.byteLength(raw, "utf8") > RESULT_COMMIT_MESSAGE_MAX_BYTES) {
996
- return `${field} must be at most ${RESULT_COMMIT_MESSAGE_MAX_BYTES} bytes`;
997
- }
817
+ const bytes = Buffer.byteLength(raw, "utf8");
818
+ if (bytes > maxBytes) return `${field} must be at most ${maxBytes} UTF-8 bytes (${bytes} given)`;
998
819
  if (hasControlCharacters(raw)) return `${field} must not contain control characters`;
999
820
  }
1000
821
  return null;
@@ -1003,7 +824,7 @@ function resultContractAuthorship(contract, output) {
1003
824
  const empty = { commitMessage: null, summary: null };
1004
825
  if (contract.kind !== "mutation-report" && contract.kind !== "architect-plan") return empty;
1005
826
  const parsed = parseJson(output);
1006
- if (!parsed.ok || validateAuthorship(parsed.value) !== null) return empty;
827
+ if (!parsed.ok || validateAuthorship(parsed.value, resultSummaryMaxBytes(contract)) !== null) return empty;
1007
828
  const read = (field) => {
1008
829
  const raw = parsed.value[field];
1009
830
  if (typeof raw !== "string") return null;
@@ -1148,7 +969,7 @@ function validateWorldKnowledge(contract, output, externalSourcesAllowed) {
1148
969
  }
1149
970
  function describeWriteSet(effects, cwd) {
1150
971
  if (effects.mutatedPaths.size === 0) return "this run wrote nothing";
1151
- const written = [...effects.mutatedPaths].map((target) => path2.relative(cwd, target) || target).sort().slice(0, MUTATION_WRITE_SET_REASON_LIMIT);
972
+ const written = [...effects.mutatedPaths].map((target) => path.relative(cwd, target) || target).sort().slice(0, MUTATION_WRITE_SET_REASON_LIMIT);
1152
973
  const more = effects.mutatedPaths.size - written.length;
1153
974
  return `this run wrote ${written.join(", ")}${more > 0 ? ` (+${more} more)` : ""}`;
1154
975
  }
@@ -1166,23 +987,31 @@ function mutationValidationsReason(value) {
1166
987
  return `Mutation result must carry typed validation results: every validations entry is shaped like ${MUTATION_VALIDATION_EXAMPLE}, with a string name, a boolean passed, a string evidence, and no other keys.`;
1167
988
  }
1168
989
  function validateMutation(contract, input) {
990
+ if (input.outputTruncated === true && input.output !== null) {
991
+ const bound = resultContractOutputBytes(contract) ?? Buffer.byteLength(input.output, "utf8");
992
+ return failure(
993
+ contract,
994
+ "unmeasured",
995
+ `result exceeded the sealed output bound of ${bound} bytes and was truncated; keep summary within ${resultSummaryMaxBytes(contract)} UTF-8 bytes or state the limitation`
996
+ );
997
+ }
1169
998
  const parsed = parseJson(input.output);
1170
999
  if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
1171
1000
  const value = parsed.value;
1172
1001
  if (!hasOnlyKeys(value, ["mutatedPaths", "validations", "commitMessage", "summary"]) || !Array.isArray(value.mutatedPaths) || value.mutatedPaths.some((entry) => !string(entry))) {
1173
1002
  return failure(contract, "unmeasured", "Mutation result must carry mutatedPaths and validations");
1174
1003
  }
1175
- const authorship = validateAuthorship(value);
1004
+ const authorship = validateAuthorship(value, resultSummaryMaxBytes(contract));
1176
1005
  if (authorship !== null) return failure(contract, "unmeasured", authorship);
1177
1006
  const validations = parseChecks(value.validations);
1178
1007
  if (validations === null) return failure(contract, "unmeasured", mutationValidationsReason(value.validations));
1179
1008
  const reportedFailure = !validations.every((check) => check.passed);
1180
1009
  const effects = input.observedRunEffects;
1181
1010
  if (effects === void 0) return success(contract, reportedFailure ? "fail" : "pass", value);
1182
- const cwd = path2.resolve(input.cwd);
1011
+ const cwd = path.resolve(input.cwd);
1183
1012
  let unverifiedMutation = false;
1184
1013
  for (const reported of value.mutatedPaths) {
1185
- const target = path2.resolve(cwd, reported);
1014
+ const target = path.resolve(cwd, reported);
1186
1015
  if (effects.mutatedPaths.has(target)) continue;
1187
1016
  if (effects.failedMutationPaths.has(target)) {
1188
1017
  return failure(
@@ -1221,7 +1050,7 @@ function validateProvenance(contract, output) {
1221
1050
  return success(contract, "unmeasured", value);
1222
1051
  }
1223
1052
  function validateArchitect(contract, input) {
1224
- const artifactPath = path2.resolve(input.cwd, contract.path);
1053
+ const artifactPath = path.resolve(input.cwd, contract.path);
1225
1054
  const content = input.filesystem.readFile(artifactPath);
1226
1055
  if (content === null || content.trim().length === 0) {
1227
1056
  return failure(contract, "unmeasured", `required plan artifact is missing or empty: ${contract.path}`);
@@ -1285,8 +1114,22 @@ function validateResultContract(input) {
1285
1114
  return validateOracle(input.contract, input.output);
1286
1115
  case "external-delegation":
1287
1116
  return success(input.contract, "unmeasured", { external: true });
1288
- case "artifact-report":
1117
+ case "artifact-report": {
1118
+ if (input.contract.path !== void 0) {
1119
+ const content = input.filesystem.readFile(path.resolve(input.cwd, input.contract.path));
1120
+ if (content === null) {
1121
+ return failure(
1122
+ input.contract,
1123
+ "unmeasured",
1124
+ `Required artifact is missing or unreadable: ${JSON.stringify(input.contract.path)}`
1125
+ );
1126
+ }
1127
+ if (content.trim().length === 0) {
1128
+ return failure(input.contract, "unmeasured", `Required artifact is empty: ${JSON.stringify(input.contract.path)}`);
1129
+ }
1130
+ }
1289
1131
  return success(input.contract, "unmeasured", { artifact: true });
1132
+ }
1290
1133
  case "context-handbook":
1291
1134
  return validateContextHandbook(input.contract, input.output);
1292
1135
  case "code-report":
@@ -1312,7 +1155,8 @@ function validateRecipeResult(input) {
1312
1155
  cwd: input.cwd,
1313
1156
  networkAllowed: input.networkAllowed,
1314
1157
  filesystem: input.filesystem,
1315
- ...input.observedRunEffects !== void 0 ? { observedRunEffects: input.observedRunEffects } : {}
1158
+ ...input.observedRunEffects !== void 0 ? { observedRunEffects: input.observedRunEffects } : {},
1159
+ ...input.outputTruncated !== void 0 ? { outputTruncated: input.outputTruncated } : {}
1316
1160
  });
1317
1161
  return {
1318
1162
  applicable: true,
@@ -1346,7 +1190,7 @@ function resultContractShape(contract) {
1346
1190
  case "world-knowledge-report":
1347
1191
  return '{"discovery":"performed|caller-supplied-only|unavailable","facts":[{"claim":"...","evidence":"...","sources":["URL or document id"]}],"synthesis":["comparison or advisory conclusion"],"uncertainties":["..."],"followUpVerification":["..."]}';
1348
1192
  case "mutation-report":
1349
- return '{"mutatedPaths":["src/file.ts"],"validations":[{"name":"npm test","passed":true,"evidence":"exit 0"}],"commitMessage":"optional: the commit message for this change","summary":"optional: one line"}';
1193
+ return `{"mutatedPaths":["src/file.ts"],"validations":[{"name":"npm test","passed":true,"evidence":"exit 0"}],"commitMessage":"optional: the commit message for this change","summary":"the requested explanation or deliverable, or a specific limitation; otherwise optional"}. summary allows at most ${resultSummaryMaxBytes(contract)} UTF-8 bytes and commitMessage at most ${RESULT_COMMIT_MESSAGE_MAX_BYTES} UTF-8 bytes. Preserve the requested explanation and citations in summary when repairing the report; if they cannot fit or be grounded, state that specific limitation. Report only actual mutations and checks; a read-only task has mutatedPaths:[] and names the source read in validations, never a command that did not run`;
1350
1194
  case "provenance-report":
1351
1195
  return '{"confirmedFacts":["..."],"missingEvidence":["..."],"nextInspections":["..."]}';
1352
1196
  case "delegation-plan":
@@ -1356,7 +1200,7 @@ function resultContractShape(contract) {
1356
1200
  case "external-delegation":
1357
1201
  return "any final text";
1358
1202
  case "artifact-report":
1359
- return "any final text; the artifact you wrote at the location the task named is the result";
1203
+ return contract.path === void 0 ? "any final text; the artifact you wrote at the location the task named is the result" : `any final text; the required artifact at ${JSON.stringify(contract.path)} must be readable and non-empty on disk`;
1360
1204
  case "context-handbook":
1361
1205
  return '{"projectName":"string","identity":"one sentence","conventions":[],"invariants":[],"sections":[{"title":"Architecture","body":"markdown that cites `real/path.ts` tokens"}]}';
1362
1206
  case "code-report":
@@ -1365,20 +1209,32 @@ function resultContractShape(contract) {
1365
1209
  }
1366
1210
  function resultContractRepairMessage(input) {
1367
1211
  const last = input.attempt >= RESULT_CONTRACT_REPAIR_LIMIT;
1212
+ const boundArtifact = input.contract.kind === "artifact-report" && input.contract.path !== void 0;
1368
1213
  const lines = [
1369
1214
  last ? "FINAL RESULT REQUIRED IN THIS RESPONSE. Your previous response still did not satisfy this run's result contract." : "Your previous response did not satisfy this run's result contract.",
1370
1215
  `Validator reason: ${input.reason}`,
1371
1216
  input.toolsAvailable === true ? "You may use the admitted tools to repair this validator failure, then emit the required terminal result." : "Tool use is over. Answer from the evidence you already gathered.",
1372
- `Emit exactly this shape and nothing else: ${resultContractShape(input.contract)}`,
1373
- "Do not add prose, code fences, or commentary around it. Do not describe work you intend to do next."
1217
+ ...boundArtifact ? [
1218
+ `Required result: ${resultContractShape(input.contract)}`,
1219
+ input.toolsAvailable === true ? "Repair the required artifact on disk, then give a brief final status. Literal tool-call markup in final text does not write a file." : "State the limitation in a brief final status; the required artifact remains unsatisfied."
1220
+ ] : [
1221
+ `Emit exactly this shape and nothing else: ${resultContractShape(input.contract)}`,
1222
+ "Do not add prose, code fences, or commentary around it. Do not describe work you intend to do next."
1223
+ ]
1374
1224
  ];
1375
1225
  if (input.anchors.length > 0) {
1376
1226
  lines.push(
1377
1227
  "",
1378
- "Locations you read successfully in this run (use these exact path:line values):",
1228
+ "Source ranges you read successfully in this run (path:start-end, inclusive):",
1379
1229
  ...input.anchors.slice(-RESULT_CONTRACT_ANCHOR_LIMIT).map((anchor) => `- ${anchor}`)
1380
1230
  );
1381
1231
  }
1232
+ if (input.contract.kind === "scout-report") {
1233
+ lines.push(
1234
+ "For each finding, use the exact source line that supports its claim inside a listed read range. Range endpoints are not suggested citations.",
1235
+ "If a finding's supporting line cannot be confirmed from the source already returned, remove that finding and keep the confirmed findings. Never shift a rejected citation into range just to pass validation."
1236
+ );
1237
+ }
1382
1238
  return lines.join("\n");
1383
1239
  }
1384
1240
  var RESULT_CONTRACT_REPAIR_TOOL = "result_contract";
@@ -1427,7 +1283,7 @@ var RECIPE_DECLARABLE_KINDS = [
1427
1283
  "delegation-plan"
1428
1284
  ];
1429
1285
  var COORDINATOR_AUTHORED_KINDS = ["council-ballot"];
1430
- function parseContract(value, sourcePath, kinds) {
1286
+ function parseContract(value, sourcePath, kinds, callerBoundArtifacts = false) {
1431
1287
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
1432
1288
  throw new Error(`agent recipe: ${sourcePath}: resultContract must be an object`);
1433
1289
  }
@@ -1439,11 +1295,38 @@ function parseContract(value, sourcePath, kinds) {
1439
1295
  if (!only("kind", "path") || !string(record.path)) {
1440
1296
  throw new Error(`agent recipe: ${sourcePath}: architect-plan requires only non-empty path`);
1441
1297
  }
1442
- if (path2.isAbsolute(record.path) || record.path.split(/[\\/]/u).includes("..")) {
1298
+ if (path.isAbsolute(record.path) || record.path.split(/[\\/]/u).includes("..")) {
1443
1299
  throw new Error(`agent recipe: ${sourcePath}: architect-plan path must be workspace-relative`);
1444
1300
  }
1445
1301
  return { kind: "architect-plan", path: record.path };
1446
1302
  }
1303
+ if (record.kind === "artifact-report" && callerBoundArtifacts) {
1304
+ if (!only("kind", "path")) {
1305
+ throw new Error(`agent recipe: ${sourcePath}: artifact-report admits only kind and path`);
1306
+ }
1307
+ if (record.path === void 0) return { kind: "artifact-report" };
1308
+ if (!string(record.path) || record.path.includes("\0")) {
1309
+ throw new Error(`agent recipe: ${sourcePath}: artifact-report requires a non-empty path without NUL`);
1310
+ }
1311
+ if (path.posix.isAbsolute(record.path) || path.win32.isAbsolute(record.path) || /^[a-z]:/iu.test(record.path) || record.path.split(/[\\/]/u).includes("..")) {
1312
+ throw new Error(`agent recipe: ${sourcePath}: artifact-report path must be workspace-relative`);
1313
+ }
1314
+ return { kind: "artifact-report", path: record.path };
1315
+ }
1316
+ if (record.kind === "mutation-report") {
1317
+ if (!only("kind", "maxSummaryBytes")) {
1318
+ throw new Error(`agent recipe: ${sourcePath}: mutation-report admits only kind and maxSummaryBytes`);
1319
+ }
1320
+ if (record.maxSummaryBytes === void 0) return { kind: "mutation-report" };
1321
+ try {
1322
+ return {
1323
+ kind: "mutation-report",
1324
+ maxSummaryBytes: parseResultSummaryMaxBytes(record.maxSummaryBytes, "maxSummaryBytes")
1325
+ };
1326
+ } catch (error) {
1327
+ throw new Error(`agent recipe: ${sourcePath}: ${error instanceof Error ? error.message : String(error)}`);
1328
+ }
1329
+ }
1447
1330
  if (!kinds.includes(record.kind) || !only("kind")) {
1448
1331
  throw new Error(`agent recipe: ${sourcePath}: resultContract.kind is unsupported or has unknown keys`);
1449
1332
  }
@@ -1453,12 +1336,11 @@ function parseResultContract(value, sourcePath) {
1453
1336
  return parseContract(value, sourcePath, RECIPE_DECLARABLE_KINDS);
1454
1337
  }
1455
1338
  function parseWorkerResultContract(value, sourcePath) {
1456
- return parseContract(value, sourcePath, [...RECIPE_DECLARABLE_KINDS, ...COORDINATOR_AUTHORED_KINDS]);
1339
+ return parseContract(value, sourcePath, [...RECIPE_DECLARABLE_KINDS, ...COORDINATOR_AUTHORED_KINDS], true);
1457
1340
  }
1458
1341
 
1459
1342
  export {
1460
1343
  parseJsonObjectPayload,
1461
- classify,
1462
1344
  AGENT_AUTOMATION_AUTHORITIES,
1463
1345
  isAgentCategory,
1464
1346
  isAgentCapabilityClass,
@@ -1478,6 +1360,10 @@ export {
1478
1360
  resultContractSourceId,
1479
1361
  parseVerifierResult,
1480
1362
  parseOracleResult,
1363
+ RESULT_SUMMARY_MAX_BYTES_CEILING,
1364
+ parseResultSummaryMaxBytes,
1365
+ withResultSummaryAllowance,
1366
+ resultContractOutputBytes,
1481
1367
  resultContractAuthorship,
1482
1368
  parseScoutResult,
1483
1369
  validateResultContract,
@@ -1488,4 +1374,4 @@ export {
1488
1374
  parseResultContract,
1489
1375
  parseWorkerResultContract
1490
1376
  };
1491
- //# sourceMappingURL=chunk-KFV5L5SK.js.map
1377
+ //# sourceMappingURL=chunk-OQM5IVJY.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  atomicWrite
4
- } from "./chunk-HAXOFFRH.js";
4
+ } from "./chunk-FQOOGXBH.js";
5
5
  import {
6
6
  clioStateDir
7
- } from "./chunk-BYP5D4HI.js";
7
+ } from "./chunk-CTTI7G3T.js";
8
8
  import {
9
9
  init_esm_shims
10
- } from "./chunk-3R73A4XB.js";
10
+ } from "./chunk-ECBHH7LU.js";
11
11
 
12
12
  // src/domains/dispatch/code-step-store.ts
13
13
  init_esm_shims();
@@ -44,4 +44,4 @@ export {
44
44
  writeCodeStepRecord,
45
45
  readCodeStepRecords
46
46
  };
47
- //# sourceMappingURL=chunk-XRZT5WY5.js.map
47
+ //# sourceMappingURL=chunk-P5SC4DLJ.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  init_esm_shims
4
- } from "./chunk-3R73A4XB.js";
4
+ } from "./chunk-ECBHH7LU.js";
5
5
 
6
6
  // src/domains/context/wiki/plan.ts
7
7
  init_esm_shims();
@@ -60,12 +60,17 @@ function overviewPage(source) {
60
60
  return {
61
61
  path: "architecture.md",
62
62
  title: "Architecture",
63
- intent: "Explain what this repository is, its top-level composition, how a request or command flows through it, and where the boundaries between its major areas are.",
63
+ intent: "Explain what this repository is and its top-level composition; describe relationships, boundaries, and request or command flow where the inspected source establishes them.",
64
64
  sources: rankedSources(entries.length > 0 ? entries : source),
65
65
  status: "pending",
66
66
  attempts: 0
67
67
  };
68
68
  }
69
+ function intentForScope(files, areaDepth) {
70
+ const lines = files.reduce((total, file) => total + Math.max(0, file.loc), 0);
71
+ const scopes = [...new Set(files.map((file) => areaForPath(file.path, areaDepth)))];
72
+ return `Assigned scope (${files.length} indexed files, ${lines} lines): document responsibilities and key entry points/symbols; explain lifecycle rules, callers, dependencies, and specific test cases only where inspected source or tests establish them. Anchors are starting points, not the full assignment. Assigned areas: ` + scopes.join(", ") + ".";
73
+ }
69
74
  function buildCandidatePlan(codewiki, depth) {
70
75
  const source = codewiki.files.filter((file) => file.lang !== "config");
71
76
  const totalLines = source.reduce((total, file) => total + Math.max(0, file.loc), 0);
@@ -83,21 +88,38 @@ function buildCandidatePlan(codewiki, depth) {
83
88
  if (host === void 0) continue;
84
89
  extras.set(host, [...extras.get(host) ?? [], ...area.files]);
85
90
  }
91
+ const overview = overviewPage(source);
92
+ const [onlyArea] = selected;
93
+ if (depth === "simple" && selected.length === 1 && onlyArea) {
94
+ const files = [...onlyArea.files, ...extras.get(onlyArea.key) ?? []];
95
+ return {
96
+ version: 1,
97
+ depth,
98
+ overview: "",
99
+ pages: [
100
+ { ...overview, intent: `${overview.intent} ${intentForScope(files, areaDepth)}`, sources: rankedSources(files) }
101
+ ]
102
+ };
103
+ }
86
104
  const pages = selected.map((area) => {
87
105
  const files = [...area.files, ...extras.get(area.key) ?? []];
88
106
  return {
89
107
  path: pagePathForArea(area.key),
90
108
  title: titleForArea(area.key),
91
- intent: `Document ${area.key} (${area.files.length} indexed files, ${area.lines} lines): what it owns, its entry points and important symbols, the state and lifecycle invariants it enforces, an upstream caller and a downstream dependency, the focused tests that prove its behavior, and what to watch when editing it.`,
109
+ intent: intentForScope(files, areaDepth),
92
110
  sources: rankedSources(files),
93
111
  status: "pending",
94
112
  attempts: 0
95
113
  };
96
114
  });
115
+ if (pages.length > 0) {
116
+ overview.intent += " Link to the area pages for detailed behavior; keep this page focused on their composition and relationships.";
117
+ }
97
118
  return dedupePagePaths({
98
119
  version: 1,
120
+ depth,
99
121
  overview: "",
100
- pages: [overviewPage(source), ...pages]
122
+ pages: [overview, ...pages]
101
123
  });
102
124
  }
103
125
  function dedupePagePaths(plan) {
@@ -120,7 +142,13 @@ function planWikiGeneration(codewiki, requestedDepth = "auto") {
120
142
  const sourceFiles = source.length;
121
143
  const sourceLines = source.reduce((total, file) => total + Math.max(0, file.loc), 0);
122
144
  const depth = requestedDepth === "auto" ? classifyDepth(sourceFiles, sourceLines) : requestedDepth;
123
- return { requestedDepth, depth, sourceFiles, sourceLines, plan: buildCandidatePlan(codewiki, depth) };
145
+ return {
146
+ requestedDepth,
147
+ depth,
148
+ sourceFiles,
149
+ sourceLines,
150
+ plan: { ...buildCandidatePlan(codewiki, depth), requestedDepth }
151
+ };
124
152
  }
125
153
 
126
154
  export {
@@ -131,4 +159,4 @@ export {
131
159
  buildCandidatePlan,
132
160
  planWikiGeneration
133
161
  };
134
- //# sourceMappingURL=chunk-R6Q67RJH.js.map
162
+ //# sourceMappingURL=chunk-PECBKCDK.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  init_esm_shims
4
- } from "./chunk-3R73A4XB.js";
4
+ } from "./chunk-ECBHH7LU.js";
5
5
 
6
6
  // src/core/workspace-files.ts
7
7
  init_esm_shims();
@@ -336,4 +336,4 @@ export {
336
336
  enumerateWorkspaceFilesAsync,
337
337
  filterWorkspaceFileCandidates
338
338
  };
339
- //# sourceMappingURL=chunk-33YXPOE3.js.map
339
+ //# sourceMappingURL=chunk-PPEZJWUG.js.map