@iowarp/clio-coder 0.4.3 → 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 (670) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/CONTRIBUTING.md +25 -15
  3. package/README.md +340 -27
  4. package/dist/{acp-H2NGRPWO.js → acp-H3CU2HBQ.js} +25 -25
  5. package/dist/{agents-TL5LLUQP.js → agents-IXQQZ7BD.js} +77 -75
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-E5SW4HMS.js → auth-R7KYF7N3.js} +38 -39
  8. package/dist/builtins-CRFDQUVP.js +22 -0
  9. package/dist/{chunk-7DRAWPTZ.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-5TSRNF4G.js → chunk-3T4DXWP6.js} +170 -12
  15. package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
  16. package/dist/{chunk-XIVNBFZS.js → chunk-4SVIVOMC.js} +208 -39
  17. package/dist/{chunk-NMJXSHBJ.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-5DDOTTG4.js +402 -0
  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-PUVDKJ2Y.js → chunk-5VTJP36Q.js} +5 -7
  24. package/dist/{chunk-JGRC33J2.js → chunk-5ZMXGW7P.js} +90 -9
  25. package/dist/chunk-5ZSZEYJK.js +119 -0
  26. package/dist/chunk-633EXGZA.js +44 -0
  27. package/dist/{chunk-IWT4SF4R.js → chunk-6CDNRHWH.js} +361 -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-INY6HTFL.js → chunk-6SYEGZI3.js} +12 -12
  31. package/dist/{chunk-SKHCAU7K.js → chunk-6YA46L5A.js} +5 -4
  32. package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
  33. package/dist/{chunk-L47TF46W.js → chunk-7HBHHVCK.js} +24 -3
  34. package/dist/{chunk-DWUOQKRU.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-6PTFB5VS.js → chunk-7YJWEF2L.js} +59 -28
  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-B6UM3OZC.js +15 -0
  43. package/dist/{chunk-MCEPRMZW.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-42FMPA75.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-WCXUNS7U.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-2UG5F4C5.js → chunk-DRD2A54W.js} +116 -52
  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-IJNZMHLA.js → chunk-EHCPSZJF.js} +4 -4
  65. package/dist/{chunk-K6BSR66V.js → chunk-EHOSNVVM.js} +6 -2
  66. package/dist/{chunk-RRNP2ANY.js → chunk-EQEJJ53P.js} +10 -10
  67. package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
  68. package/dist/{chunk-JKKCYP3C.js → chunk-F34AR6O3.js} +21 -15
  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-MWUZBSAQ.js → chunk-FSTIBAGM.js} +358 -63
  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-JSC3U7TI.js → chunk-GJ24ODAX.js} +5 -5
  76. package/dist/{chunk-B4VEBZKF.js → chunk-GNQRWTMY.js} +139 -52
  77. package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
  78. package/dist/chunk-GXCCHKN6.js +59 -0
  79. package/dist/{chunk-V2ANDPVT.js → chunk-HGSLRG33.js} +170 -8
  80. package/dist/{chunk-LLDJM5XK.js → chunk-HHVJNVUJ.js} +6 -6
  81. package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
  82. package/dist/{chunk-VA5FNYMT.js → chunk-HR3HPQ76.js} +42 -5
  83. package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
  84. package/dist/{chunk-OML5D5V5.js → chunk-I7VLWRK2.js} +8 -8
  85. package/dist/{chunk-VW6DOEDG.js → chunk-ICO4TQ2F.js} +16 -5
  86. package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
  87. package/dist/{chunk-WBKFA554.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-EKCHAPYA.js → chunk-K2HL3GBL.js} +4 -4
  92. package/dist/{chunk-N2Z7HLVY.js → chunk-K6RDB7IA.js} +28 -28
  93. package/dist/{chunk-TM6LQDI3.js → chunk-KDWLXVMN.js} +85 -335
  94. package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
  95. package/dist/{chunk-RSJ25QSL.js → chunk-KF6GFW6O.js} +217 -50
  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-IUE3Y34X.js → chunk-KTFSFCVN.js} +20 -9
  100. package/dist/{chunk-7E7I3WLS.js → chunk-KYKNBD4Y.js} +36 -34
  101. package/dist/chunk-L4N3DWNW.js +539 -0
  102. package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
  103. package/dist/{chunk-JIEGK6UF.js → chunk-LTR5QCLS.js} +51 -7
  104. package/dist/chunk-LUL5Z66S.js +221 -0
  105. package/dist/chunk-LVFANMOH.js +466 -0
  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-I7ZPNEJM.js → chunk-M6TAYK66.js} +8 -8
  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-MDU3C27C.js +674 -0
  113. package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
  114. package/dist/{chunk-4UVU7BJ5.js → chunk-NC4KV7EL.js} +6 -6
  115. package/dist/{chunk-JEQ3XTHC.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-UPZU6GE4.js → chunk-NY6IWDVU.js} +6 -6
  119. package/dist/chunk-O2RQ7LCK.js +283 -0
  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-WRBAGUNF.js → chunk-ODUTYZIU.js} +5 -5
  123. package/dist/{chunk-E3TPLWFX.js → chunk-ONRTXOZY.js} +4 -4
  124. package/dist/{chunk-B4OAX3SI.js → chunk-OQM5IVJY.js} +118 -225
  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-64I3JVYM.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-R6MAYTMS.js +108 -0
  135. package/dist/{chunk-MUW2BDDH.js → chunk-R6MICQYU.js} +6 -6
  136. package/dist/{chunk-JDAY6FIL.js → chunk-RLTT5GVY.js} +132 -17
  137. package/dist/{chunk-ZWPRK62N.js → chunk-RXIOCVBZ.js} +24 -6
  138. package/dist/{chunk-NIQJ66N4.js → chunk-S32UQ5GL.js} +62 -35
  139. package/dist/{chunk-AX2THNSA.js → chunk-SBZX6ARC.js} +12 -12
  140. package/dist/{chunk-TXOTCRLG.js → chunk-SD7SHNDW.js} +2 -2
  141. package/dist/{chunk-AF4YM7Z4.js → chunk-SDWNDICN.js} +10284 -3756
  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-KKOJXO6R.js → chunk-SRZOW5L2.js} +46 -14
  146. package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
  147. package/dist/chunk-T52TPHYC.js +318 -0
  148. package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
  149. package/dist/{chunk-LDJG7DW3.js → chunk-T7FDXNRU.js} +13 -13
  150. package/dist/{chunk-XPWWI35G.js → chunk-TEG3RYVZ.js} +59 -41
  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-PAJQJ7BS.js → chunk-TZ7MFRG4.js} +1263 -835
  154. package/dist/{chunk-GI7YYQ3F.js → chunk-U2JOLB7O.js} +415 -83
  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-CE5AX47J.js → chunk-U7H5WRG5.js} +5 -5
  158. package/dist/{chunk-G76U63X4.js → chunk-U7VQ4NI4.js} +22 -22
  159. package/dist/{chunk-7ZYNNDKC.js → chunk-UFYNOQK4.js} +7 -7
  160. package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
  161. package/dist/{chunk-QWGDJJYJ.js → chunk-UL36QJX6.js} +14 -14
  162. package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
  163. package/dist/{chunk-HEQY7ZFI.js → chunk-URBGEOH3.js} +5 -5
  164. package/dist/chunk-USZA7GWL.js +341 -0
  165. package/dist/{chunk-W6RRQCPQ.js → chunk-UTUNT5QL.js} +48 -579
  166. package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
  167. package/dist/{chunk-F5JHEYZM.js → chunk-UXAC2FX4.js} +73 -41
  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-VLPTKCKT.js +396 -0
  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-2UH2KFUP.js → chunk-WFKDPU7U.js} +4 -4
  176. package/dist/{chunk-ZDN3Y73Y.js → chunk-WJIMKGD6.js} +9 -51
  177. package/dist/{chunk-YQWYVTMC.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-2APPQIER.js → chunk-XXBQKW32.js} +11 -11
  182. package/dist/{chunk-2VIKGWFZ.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-54CBCGIR.js → chunk-ZMZQEBKI.js} +136 -81
  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 +45 -44
  190. package/dist/clio-5I2IBFYL.js +26 -0
  191. package/dist/{code-nav-MDZNQS33.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-UCUQ4QXW.js → components-TNIKXCBH.js} +13 -14
  195. package/dist/{config-SVM5P5YI.js → config-Y2JDJ3JJ.js} +210 -119
  196. package/dist/configure-SML6UBZ5.js +55 -0
  197. package/dist/{context-2OHRKS42.js → context-P5YSEO55.js} +125 -115
  198. package/dist/{context-VNCR7KAG.js → context-QQ53HSGJ.js} +91 -62
  199. package/dist/{context-E3VC7RX5.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-VDS25HXZ.js → context-working-set-CNLSQN5K.js} +31 -31
  204. package/dist/detail-5572VLBO.js +114 -0
  205. package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-FRHD6P2O.js} +214 -126
  206. package/dist/{docs-PD3EXDKU.js → docs-BL7ROUFN.js} +5 -7
  207. package/dist/{doctor-WNNVO6FY.js → doctor-N3LCM2LG.js} +89 -66
  208. package/dist/{eval-7G7SGAYO.js → eval-BUU3ZOUZ.js} +493 -197
  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-VD6736FQ.js → evidence-SQ5DNFEN.js} +114 -195
  212. package/dist/{evolve-AL3NGVRL.js → evolve-IJNUFZDS.js} +107 -88
  213. package/dist/{extensions-MOVJ32NM.js → extensions-YVRHX6ZI.js} +16 -17
  214. package/dist/{fleet-QZHUMAGI.js → fleet-ZNNVSYFO.js} +147 -141
  215. package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-5YE7NPJL.js} +27 -23
  216. package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-3SBSCTCW.js} +16 -15
  217. package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-6HHPWF5T.js} +39 -38
  218. package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-JEYMGCGC.js} +107 -87
  219. package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
  220. package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-QRSHIIDE.js} +10 -10
  221. package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-4PM4GDDL.js} +46 -42
  222. package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-NJDTHTO3.js} +105 -85
  223. package/dist/fleet-view-UP2BWQQY.js +117 -0
  224. package/dist/{init-J477LKZH.js → init-S3GZQ5ZF.js} +123 -117
  225. package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
  226. package/dist/{interop-3FCM6XLG.js → interop-YOTGXFJM.js} +25 -26
  227. package/dist/inventory-K2OZ36YJ.js +117 -0
  228. package/dist/{library-QUQEIUG6.js → library-GJI6W6OK.js} +45 -45
  229. package/dist/{memory-SGGSEP65.js → memory-OQOXQGYD.js} +107 -90
  230. package/dist/{models-HEKUAXXK.js → models-3IK2Y5WE.js} +64 -65
  231. package/dist/{monitor-HKU57TYQ.js → monitor-FTJLTKCQ.js} +136 -101
  232. package/dist/{orchestrator-VDFAEFAI.js → orchestrator-N47O7SFD.js} +1442 -1671
  233. package/dist/{panes-DN2SSFOH.js → panes-7BTYH3XQ.js} +8 -8
  234. package/dist/{panes-TALGNPZT.js → panes-WPOMEMRH.js} +22 -23
  235. package/dist/{paths-NBMFAIEZ.js → paths-J3KN7UAO.js} +12 -13
  236. package/dist/preload-65U34NG6.js +115 -0
  237. package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
  238. package/dist/{reset-EAJFFJVB.js → reset-MUVQDLNL.js} +20 -21
  239. package/dist/{resources-OVKSEFVE.js → resources-LM76COAO.js} +41 -40
  240. package/dist/{run-7DP7ZF2J.js → run-3VFZQ33N.js} +168 -166
  241. package/dist/{share-WML67FT3.js → share-4JUB4BL7.js} +43 -43
  242. package/dist/{skills-SG662R2K.js → skills-S36AAJHU.js} +47 -47
  243. package/dist/{skills-eval-VVZEUU46.js → skills-eval-G6T57L7M.js} +127 -104
  244. package/dist/{skills-inventory-I2E23GET.js → skills-inventory-WLM46PJH.js} +41 -40
  245. package/dist/slash-commands-GBARG3Y7.js +91 -0
  246. package/dist/{steer-2LQOMCPB.js → steer-S7D7IKPU.js} +7 -7
  247. package/dist/{support-CC2UJBJ6.js → support-5VAEC32W.js} +14 -14
  248. package/dist/{targets-4QC3HIEW.js → targets-N5REUETU.js} +147 -98
  249. package/dist/tasks-6BVY5YZF.js +36 -0
  250. package/dist/{terminal-lease-TUHIJ6Y2.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-5PEVOE5B.js → uninstall-FXYMFFRT.js} +19 -20
  256. package/dist/{upgrade-M4WXY6KN.js → upgrade-4HD5HAIV.js} +49 -45
  257. package/dist/{usage-N7ZNVLEM.js → usage-4GWM2WWP.js} +143 -103
  258. package/dist/{verifiers-DJTP4XX6.js → verifiers-GSKWKWVG.js} +162 -28
  259. package/dist/verify-3AS3ULCY.js +30 -0
  260. package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
  261. package/dist/{web-fetch-MPARV2K7.js → web-fetch-MQN4FH3X.js} +169 -18
  262. package/dist/wiki-generate-7BV7XWIY.js +614 -0
  263. package/dist/{with-panes-4GCGSL7J.js → with-panes-OFTNAR4Y.js} +34 -20
  264. package/dist/worker/entry.js +99 -85
  265. package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
  266. package/docs/README.md +10 -8
  267. package/docs/architecture/acp.md +27 -0
  268. package/docs/architecture/architecture.md +5 -5
  269. package/docs/architecture/artifact-versions.md +1 -1
  270. package/docs/architecture/context-engine.md +44 -59
  271. package/docs/architecture/context-working-set.md +7 -9
  272. package/docs/architecture/dispatch-architecture-rationale.md +1 -1
  273. package/docs/architecture/dispatch-typed-intent.md +1 -1
  274. package/docs/architecture/evidence-and-memory.md +11 -1
  275. package/docs/architecture/observability.md +7 -1
  276. package/docs/architecture/pi-boundary.md +37 -7
  277. package/docs/architecture/prompt-envelope-and-tools.md +22 -12
  278. package/docs/architecture/safety-model.md +10 -17
  279. package/docs/architecture/session-lifecycle.md +4 -4
  280. package/docs/architecture/tui-design.md +1 -1
  281. package/docs/architecture/worker-dispatch-mechanics.md +4 -0
  282. package/docs/guide/built-in-agents.md +8 -8
  283. package/docs/guide/commands-and-modes.md +66 -38
  284. package/docs/guide/configuration-and-targets.md +10 -3
  285. package/docs/guide/configuration-reference.md +23 -8
  286. package/docs/guide/environment-variables.md +8 -4
  287. package/docs/guide/fleet-dispatch.md +12 -0
  288. package/docs/guide/installation-and-lifecycle.md +35 -9
  289. package/docs/guide/proactive-memory.md +1 -1
  290. package/docs/guide/skills-marketplace.md +11 -3
  291. package/docs/guide/tool-usage.md +87 -5
  292. package/docs/history/config-knobs-audit.md +2 -2
  293. package/docs/process/development-pipeline.md +15 -10
  294. package/docs/process/documentation-guide.md +2 -2
  295. package/docs/process/eval-runner.md +15 -0
  296. package/docs/process/evals-internal.md +1 -1
  297. package/docs/process/git-commit-provenance.md +15 -0
  298. package/docs/process/release-cut-checklist.md +207 -0
  299. package/docs/process/scientific-validation.md +18 -17
  300. package/evals/README.md +4 -0
  301. package/evals/behavioral-corpus-grader.mjs +147 -14
  302. package/evals/behavioral-machinery-support.ts +1 -0
  303. package/evals/behavioral-machinery.yaml +1 -1
  304. package/evals/behavioral-model-negative-control.yaml +1 -0
  305. package/evals/behavioral-model.yaml +266 -1
  306. package/evals/fixtures/docs-retrieval.json +102 -0
  307. package/evals/fixtures/scalar-decision.json +17 -0
  308. package/evals/fixtures/scout-citation-pipeline.json +55 -0
  309. package/evals/fixtures/source-explanation.json +74 -0
  310. package/evals/fixtures/tool-arguments.json +18 -0
  311. package/evals/fixtures/tool-surface/read.txt +4 -0
  312. package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
  313. package/evals/no-edit-memory-grader.mjs +149 -0
  314. package/evals/scalar-decision-grader.py +41 -0
  315. package/evals/scalar-decision-machinery.ts +145 -0
  316. package/evals/source-explanation-grader.mjs +118 -0
  317. package/evals/tool-surface-grader.mjs +53 -0
  318. package/evals/tool-surface-model.yaml +274 -0
  319. package/package.json +14 -14
  320. package/skills/README.md +6 -6
  321. package/skills/coding/coding-standards/SKILL.md +14 -4
  322. package/skills/context/context-handoff/SKILL.md +3 -3
  323. package/skills/context/context-prime/SKILL.md +3 -3
  324. package/skills/planning/architecture/SKILL.md +5 -5
  325. package/skills/planning/backlog/SKILL.md +4 -4
  326. package/skills/planning/prd/SKILL.md +4 -3
  327. package/skills/planning/product-intent/SKILL.md +8 -8
  328. package/skills/planning/tech-spec/SKILL.md +4 -4
  329. package/skills/registry.yaml +33 -33
  330. package/skills/research/arxiv-literature/SKILL.md +3 -3
  331. package/skills/research/experiment-protocol/SKILL.md +3 -3
  332. package/skills/research/scientific-debugging/SKILL.md +3 -2
  333. package/skills/research/scientific-modernization/SKILL.md +3 -3
  334. package/skills/skill-marketplace.json +17 -17
  335. package/skills/workflow/cut-it/SKILL.md +3 -4
  336. package/skills/workflow/design-council/SKILL.md +5 -10
  337. package/skills/workflow/grill-me/SKILL.md +14 -15
  338. package/skills/workflow/workflow-distiller/SKILL.md +4 -4
  339. package/src/cli/args.ts +0 -8
  340. package/src/cli/bootstrap-generate.ts +6 -0
  341. package/src/cli/config-inspect.ts +24 -7
  342. package/src/cli/config-trust.ts +62 -0
  343. package/src/cli/config.ts +8 -0
  344. package/src/cli/configure.ts +2 -1
  345. package/src/cli/context-map.ts +75 -14
  346. package/src/cli/context.ts +46 -17
  347. package/src/cli/doctor-state-size.ts +1 -12
  348. package/src/cli/doctor-validation-contract.ts +28 -0
  349. package/src/cli/doctor.ts +5 -0
  350. package/src/cli/eval.ts +17 -3
  351. package/src/cli/evidence-detail.ts +1 -75
  352. package/src/cli/evidence-inventory.ts +1 -167
  353. package/src/cli/index.ts +2 -0
  354. package/src/cli/modes/print.ts +32 -4
  355. package/src/cli/run.ts +16 -16
  356. package/src/cli/skills-eval.ts +10 -8
  357. package/src/cli/steer-channel.ts +31 -18
  358. package/src/cli/targets.ts +84 -32
  359. package/src/cli/tasks.ts +93 -0
  360. package/src/cli/upgrade.ts +19 -11
  361. package/src/cli/usage.ts +30 -0
  362. package/src/cli/verifiers.ts +147 -1
  363. package/src/cli/wiki-generate.ts +240 -96
  364. package/src/core/bash-exec.ts +43 -15
  365. package/src/core/bus-events.ts +15 -0
  366. package/src/core/commit-attribution.ts +41 -1
  367. package/src/core/config.ts +33 -14
  368. package/src/core/defaults.ts +5 -4
  369. package/src/core/file-references.ts +11 -1
  370. package/src/core/git-commit-attribution.ts +46 -3
  371. package/src/core/incomplete-installation.ts +3 -1
  372. package/src/core/run-overrides.ts +0 -5
  373. package/src/core/settings-layers.ts +21 -5
  374. package/src/core/skill-activation.ts +3 -0
  375. package/src/core/termination.ts +26 -9
  376. package/src/core/tool-names.ts +5 -2
  377. package/src/core/untrusted-content.ts +16 -0
  378. package/src/core/workspace-trust.ts +179 -0
  379. package/src/domains/agents/builtins/architect.md +1 -1
  380. package/src/domains/agents/builtins/coder.md +5 -3
  381. package/src/domains/agents/builtins/context-bootstrap.md +3 -1
  382. package/src/domains/agents/builtins/documenter.md +8 -5
  383. package/src/domains/agents/builtins/git-master.md +1 -1
  384. package/src/domains/agents/builtins/provenance.md +7 -7
  385. package/src/domains/agents/builtins/researcher.md +1 -0
  386. package/src/domains/agents/builtins/scout.md +7 -1
  387. package/src/domains/agents/builtins/tester.md +1 -1
  388. package/src/domains/agents/builtins/verifier.md +2 -2
  389. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  390. package/src/domains/agents/result-contract.ts +199 -26
  391. package/src/domains/context/bootstrap-prompt.ts +11 -9
  392. package/src/domains/context/bootstrap.ts +74 -39
  393. package/src/domains/context/clio-md.ts +88 -26
  394. package/src/domains/context/codewiki/build-operation.ts +121 -0
  395. package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
  396. package/src/domains/context/codewiki/build-worker.ts +3 -35
  397. package/src/domains/context/codewiki/coordinator.ts +36 -6
  398. package/src/domains/context/codewiki/indexer.ts +59 -19
  399. package/src/domains/context/contract.ts +6 -2
  400. package/src/domains/context/extension.ts +97 -11
  401. package/src/domains/context/fingerprint.ts +39 -34
  402. package/src/domains/context/index.ts +7 -1
  403. package/src/domains/context/prompt-context.ts +55 -14
  404. package/src/domains/context/refresh.ts +12 -57
  405. package/src/domains/context/wiki/assemble.ts +14 -10
  406. package/src/domains/context/wiki/evidence.ts +209 -0
  407. package/src/domains/context/wiki/frontmatter.ts +5 -2
  408. package/src/domains/context/wiki/generate.ts +207 -67
  409. package/src/domains/context/wiki/meta.ts +10 -2
  410. package/src/domains/context/wiki/plan-store.ts +70 -14
  411. package/src/domains/context/wiki/plan.ts +71 -14
  412. package/src/domains/context/wiki/prompts.ts +85 -1
  413. package/src/domains/context/wiki/source-content.ts +106 -0
  414. package/src/domains/context/wiki/staleness.ts +33 -22
  415. package/src/domains/context/working-set/contract.ts +8 -2
  416. package/src/domains/context/working-set/engine.ts +17 -4
  417. package/src/domains/context/working-set/fold.ts +15 -2
  418. package/src/domains/context/working-set/marker.ts +2 -1
  419. package/src/domains/context/working-set/project.ts +18 -7
  420. package/src/domains/context/working-set/recall.ts +82 -56
  421. package/src/domains/dispatch/active-route-planner.ts +10 -3
  422. package/src/domains/dispatch/admission-queue.ts +19 -7
  423. package/src/domains/dispatch/admission.ts +3 -3
  424. package/src/domains/dispatch/budget-envelope.ts +47 -82
  425. package/src/domains/dispatch/capacity-lease.ts +57 -19
  426. package/src/domains/dispatch/code-step.ts +11 -4
  427. package/src/domains/dispatch/contract.ts +41 -9
  428. package/src/domains/dispatch/event-pump.ts +28 -7
  429. package/src/domains/dispatch/execution-role.ts +49 -2
  430. package/src/domains/dispatch/execution-scheduler.ts +4 -0
  431. package/src/domains/dispatch/extension.ts +240 -132
  432. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  433. package/src/domains/dispatch/fleet-run.ts +21 -0
  434. package/src/domains/dispatch/gate-role-prompts.ts +4 -2
  435. package/src/domains/dispatch/host-verification.ts +114 -13
  436. package/src/domains/dispatch/intent.ts +28 -18
  437. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  438. package/src/domains/dispatch/parallel-writers.ts +34 -0
  439. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  440. package/src/domains/dispatch/reservation-store.ts +13 -37
  441. package/src/domains/dispatch/route-approval.ts +3 -3
  442. package/src/domains/dispatch/route-observer.ts +4 -2
  443. package/src/domains/dispatch/route-quality.ts +6 -1
  444. package/src/domains/dispatch/state.ts +15 -2
  445. package/src/domains/dispatch/types.ts +21 -5
  446. package/src/domains/dispatch/worker-spawn.ts +58 -21
  447. package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
  448. package/src/domains/eval/compare/behavioral.ts +81 -14
  449. package/src/domains/eval/compare/compare.ts +15 -5
  450. package/src/domains/eval/compare/envelope.ts +12 -5
  451. package/src/domains/eval/metrics/context.ts +24 -1
  452. package/src/domains/eval/metrics/tracked.ts +4 -28
  453. package/src/domains/eval/reports/comparison.ts +9 -9
  454. package/src/domains/eval/runners/clio-run.ts +17 -10
  455. package/src/domains/eval/runners/context-index.ts +2 -7
  456. package/src/domains/eval/runners/context-init.ts +3 -6
  457. package/src/domains/eval/runners/external-command.ts +29 -11
  458. package/src/domains/eval/schema/suite.ts +2 -0
  459. package/src/domains/eval/schema/validate.ts +1 -0
  460. package/src/domains/eval/suites/run.ts +189 -13
  461. package/src/domains/eval/verifiers/integrity.ts +39 -0
  462. package/src/domains/eval/verifiers/patch.ts +58 -2
  463. package/src/domains/eval/workspaces/temp-copy.ts +3 -0
  464. package/src/domains/evidence/build.ts +106 -17
  465. package/src/domains/evidence/detail.ts +69 -0
  466. package/src/domains/evidence/eval.ts +13 -1
  467. package/src/domains/evidence/finish-contract-map.ts +5 -1
  468. package/src/domains/evidence/inventory.ts +167 -0
  469. package/src/domains/evidence/store.ts +16 -0
  470. package/src/domains/evidence/types.ts +12 -0
  471. package/src/domains/extensions/resources.ts +7 -0
  472. package/src/domains/interop/registry.ts +2 -2
  473. package/src/domains/middleware/hooks-io.ts +45 -26
  474. package/src/domains/middleware/hooks.ts +6 -0
  475. package/src/domains/middleware/injection-screen.ts +23 -0
  476. package/src/domains/middleware/marketplace-offer.ts +20 -1
  477. package/src/domains/middleware/rules.ts +5 -1
  478. package/src/domains/middleware/runtime.ts +7 -3
  479. package/src/domains/middleware/stalled-turn.ts +18 -3
  480. package/src/domains/middleware/task-board-reminder.ts +4 -2
  481. package/src/domains/middleware/task-nudge.ts +4 -1
  482. package/src/domains/mux/contract.ts +34 -1
  483. package/src/domains/mux/detect.ts +3 -6
  484. package/src/domains/mux/dock-controller.ts +8 -1
  485. package/src/domains/mux/index.ts +1 -0
  486. package/src/domains/mux/socket-client.ts +13 -3
  487. package/src/domains/observability/accountability.ts +15 -1
  488. package/src/domains/observability/contract.ts +54 -9
  489. package/src/domains/observability/evidence-index.ts +10 -0
  490. package/src/domains/observability/extension.ts +9 -5
  491. package/src/domains/observability/projection.ts +423 -53
  492. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  493. package/src/domains/prompts/compiler.ts +10 -2
  494. package/src/domains/prompts/contract.ts +7 -4
  495. package/src/domains/prompts/extension.ts +28 -64
  496. package/src/domains/prompts/fragments/identity/clio.md +23 -0
  497. package/src/domains/prompts/fragments/operating/contract.md +12 -0
  498. package/src/domains/prompts/fragments/operating/delegation.md +5 -0
  499. package/src/domains/prompts/fragments/wiki/page.md +36 -15
  500. package/src/domains/prompts/fragments/wiki/plan.md +4 -4
  501. package/src/domains/prompts/preload-prefix.ts +31 -0
  502. package/src/domains/prompts/preload.ts +135 -61
  503. package/src/domains/providers/auth/backend-file.ts +15 -11
  504. package/src/domains/providers/auth/storage.ts +3 -5
  505. package/src/domains/providers/catalog.ts +18 -3
  506. package/src/domains/providers/model-discovery.ts +1 -4
  507. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
  508. package/src/domains/providers/runtime-resolution.ts +11 -9
  509. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  510. package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
  511. package/src/domains/providers/support.ts +1 -1
  512. package/src/domains/providers/types/runtime-descriptor.ts +1 -1
  513. package/src/domains/resources/skills/promotion.ts +8 -1
  514. package/src/domains/safety/action-classifier.ts +16 -0
  515. package/src/domains/safety/autonomy.ts +10 -1
  516. package/src/domains/safety/contract.ts +5 -1
  517. package/src/domains/safety/default-path-policy.ts +13 -0
  518. package/src/domains/safety/extension.ts +11 -2
  519. package/src/domains/safety/finish-contract-registration.ts +29 -14
  520. package/src/domains/safety/finish-contract.ts +252 -40
  521. package/src/domains/safety/index.ts +20 -1
  522. package/src/domains/safety/policy-engine.ts +211 -34
  523. package/src/domains/safety/project-policy.ts +7 -2
  524. package/src/domains/safety/rigor.ts +53 -39
  525. package/src/domains/safety/validation-contract.ts +388 -0
  526. package/src/domains/safety/workspace-trust.ts +43 -0
  527. package/src/domains/session/archive-readers.ts +10 -1
  528. package/src/domains/session/compaction/compact.ts +384 -21
  529. package/src/domains/session/compaction/cut-point.ts +42 -5
  530. package/src/domains/session/compaction/tokens.ts +9 -1
  531. package/src/domains/session/decision-board.ts +137 -28
  532. package/src/domains/session/entries.ts +213 -11
  533. package/src/domains/session/extension.ts +4 -4
  534. package/src/domains/session/handoff.ts +2 -1
  535. package/src/domains/session/manager.ts +2 -3
  536. package/src/domains/session/prompt-manifest.ts +47 -8
  537. package/src/domains/session/task-board.ts +32 -1
  538. package/src/domains/session/tree/fork.ts +1 -2
  539. package/src/domains/session/tree/navigator.ts +1 -1
  540. package/src/domains/user-tasks/acceptance.ts +56 -0
  541. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  542. package/src/domains/user-tasks/handoff.ts +16 -0
  543. package/src/domains/user-tasks/store.ts +34 -3
  544. package/src/engine/acp/adapter.ts +60 -10
  545. package/src/engine/acp/server.ts +22 -4
  546. package/src/engine/acp/transport.ts +55 -9
  547. package/src/engine/acp/types.ts +9 -0
  548. package/src/engine/antigravity/subprocess-runtime.ts +20 -4
  549. package/src/engine/api-registry.ts +19 -2
  550. package/src/engine/apis/ollama-native.ts +15 -0
  551. package/src/engine/apis/openai-completions.ts +13 -6
  552. package/src/engine/apis/output-budget.ts +26 -10
  553. package/src/engine/claude/sdk-runtime.ts +4 -3
  554. package/src/engine/claude/subprocess-runtime.ts +107 -60
  555. package/src/engine/env-api-keys.ts +2 -1
  556. package/src/engine/external-subprocess.ts +26 -7
  557. package/src/engine/loop-guard.ts +19 -2
  558. package/src/engine/provider-diagnostics.ts +129 -0
  559. package/src/engine/provider-payload.ts +3 -1
  560. package/src/engine/worker-runtime.ts +13 -2
  561. package/src/engine/worker-tools.ts +5 -1
  562. package/src/entry/extension-reload.ts +1 -0
  563. package/src/entry/orchestrator.ts +64 -17
  564. package/src/interactive/chat-loop-messages.ts +12 -4
  565. package/src/interactive/chat-loop.ts +115 -45
  566. package/src/interactive/chat-renderer.ts +60 -0
  567. package/src/interactive/context-recall-command.ts +2 -1
  568. package/src/interactive/dispatch-board.ts +58 -714
  569. package/src/interactive/editor-submit.ts +13 -0
  570. package/src/interactive/fleet-run-preview.ts +2 -1
  571. package/src/interactive/interactive-application.ts +11 -4
  572. package/src/interactive/interactive-event-projection.ts +7 -1
  573. package/src/interactive/interactive-presentation.ts +63 -12
  574. package/src/interactive/interactive-slash-runtime.ts +4 -1
  575. package/src/interactive/layout.ts +2 -1
  576. package/src/interactive/model-session-replay.ts +2 -2
  577. package/src/interactive/oracle.ts +5 -2
  578. package/src/interactive/overlay-frame.ts +1 -0
  579. package/src/interactive/overlay-general-openers.ts +3 -1
  580. package/src/interactive/overlay-session-lifecycle.ts +6 -0
  581. package/src/interactive/overlays/ask-user.ts +1 -0
  582. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  583. package/src/interactive/overlays/message-picker.ts +3 -3
  584. package/src/interactive/overlays/settings.ts +2 -2
  585. package/src/interactive/overlays/tree-selector.ts +2 -2
  586. package/src/interactive/renderers/branch-summary.ts +1 -1
  587. package/src/interactive/renderers/tool-execution.ts +17 -1
  588. package/src/interactive/renderers/worker-entry.ts +25 -10
  589. package/src/interactive/slash-autocomplete.ts +4 -6
  590. package/src/interactive/slash-commands.ts +31 -43
  591. package/src/interactive/slash-spec.ts +28 -0
  592. package/src/interactive/turn-context.ts +221 -53
  593. package/src/interactive/turn-middleware.ts +3 -1
  594. package/src/interactive/turn-persistence.ts +3 -0
  595. package/src/interactive/turn-runtime.ts +11 -2
  596. package/src/interactive/turn-state.ts +10 -9
  597. package/src/interactive/view/artifacts.ts +2 -0
  598. package/src/interactive/watch-pane.ts +18 -4
  599. package/src/interactive/worker-stream.ts +14 -10
  600. package/src/tools/agent-tools.ts +6 -3
  601. package/src/tools/bash.ts +1 -1
  602. package/src/tools/bootstrap.ts +4 -0
  603. package/src/tools/builtin-tool-catalog.ts +40 -2
  604. package/src/tools/codewiki/code-nav.ts +4 -10
  605. package/src/tools/compete-judge-task.ts +71 -0
  606. package/src/tools/compete-worktrees.ts +41 -1
  607. package/src/tools/context/index.ts +32 -7
  608. package/src/tools/context/surface.ts +15 -4
  609. package/src/tools/core-bootstrap.ts +16 -0
  610. package/src/tools/decide.ts +136 -0
  611. package/src/tools/dispatch-admission.ts +33 -1
  612. package/src/tools/dispatch-arguments.ts +38 -1
  613. package/src/tools/dispatch-plan.ts +12 -9
  614. package/src/tools/dispatch-runner.ts +63 -33
  615. package/src/tools/dispatch-schema.ts +30 -23
  616. package/src/tools/dispatch-scout-admission.ts +10 -44
  617. package/src/tools/dispatch-scout.ts +2 -3
  618. package/src/tools/dispatch-types.ts +6 -0
  619. package/src/tools/evidence.ts +96 -0
  620. package/src/tools/find.ts +13 -4
  621. package/src/tools/grep.ts +13 -1
  622. package/src/tools/limitation.ts +76 -0
  623. package/src/tools/ls.ts +7 -1
  624. package/src/tools/monitor.ts +26 -11
  625. package/src/tools/network-policy.ts +11 -24
  626. package/src/tools/observation.ts +39 -2
  627. package/src/tools/policy.ts +9 -0
  628. package/src/tools/presentation.ts +3 -0
  629. package/src/tools/read.ts +112 -15
  630. package/src/tools/registry.ts +55 -18
  631. package/src/tools/result-shaping.ts +127 -7
  632. package/src/tools/task-worktree.ts +13 -3
  633. package/src/tools/tasks.ts +40 -5
  634. package/src/tools/verify/authoring.ts +170 -83
  635. package/src/tools/verify/catalog.ts +122 -5
  636. package/src/tools/verify/frontend.ts +67 -30
  637. package/src/tools/verify/index.ts +2 -1
  638. package/src/tools/verify/numeric.ts +303 -0
  639. package/src/tools/verify/perf.ts +143 -0
  640. package/src/tools/verify/scripts.ts +229 -2
  641. package/src/tools/web-fetch-network.ts +179 -0
  642. package/src/tools/web-fetch-surface.ts +2 -1
  643. package/src/tools/web-fetch.ts +15 -13
  644. package/src/tools/worker-evidence.ts +27 -0
  645. package/src/worker/spec-contract.ts +12 -8
  646. package/dist/builtins-IA7V7FUC.js +0 -22
  647. package/dist/chunk-2WZ546HR.js +0 -792
  648. package/dist/chunk-5PSMVOLM.js +0 -56
  649. package/dist/chunk-7DICMOS6.js +0 -313
  650. package/dist/chunk-BEPZRGGU.js +0 -1560
  651. package/dist/chunk-JVCV3ICN.js +0 -47
  652. package/dist/chunk-KK4JZPBQ.js +0 -3982
  653. package/dist/chunk-MNJGS2IN.js +0 -33
  654. package/dist/chunk-NDINPTJ4.js +0 -641
  655. package/dist/chunk-O5CVSAG5.js +0 -122
  656. package/dist/chunk-OQE5J4C6.js +0 -73
  657. package/dist/chunk-RVG5JXAL.js +0 -41
  658. package/dist/chunk-T56WDKA5.js +0 -183
  659. package/dist/chunk-UUVG37B4.js +0 -244
  660. package/dist/chunk-VPKWYKEY.js +0 -169
  661. package/dist/chunk-Y3CBHOR6.js +0 -228
  662. package/dist/clio-CMMK4KRR.js +0 -25
  663. package/dist/configure-LE3IK2TJ.js +0 -56
  664. package/dist/context-clear-BW4O37TG.js +0 -176
  665. package/dist/fleet-view-SWBR3VGQ.js +0 -97
  666. package/dist/preload-P6DGH2PZ.js +0 -13
  667. package/dist/slash-commands-S7MBJDQK.js +0 -83
  668. package/dist/tools-TFGJICCU.js +0 -29
  669. package/dist/verify-RWE4PPEK.js +0 -27
  670. package/dist/wiki-generate-C7IQOXSP.js +0 -469
@@ -1,792 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- ceilChars
4
- } from "./chunk-NZMNUPZZ.js";
5
- import {
6
- clioStateDir
7
- } from "./chunk-BYP5D4HI.js";
8
- import {
9
- init_esm_shims
10
- } from "./chunk-3R73A4XB.js";
11
-
12
- // src/domains/memory/task-bank.ts
13
- init_esm_shims();
14
- var TASK_MEMORY_VERSION = 1;
15
- var TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP = 20;
16
- var TASK_MEMORY_DEFAULT_PROCEDURAL_CAP = 30;
17
- var TASK_MEMORY_CONTENT_MAX_CHARS = 1200;
18
- var TaskMemoryBank = class {
19
- #knowledgeCap;
20
- #proceduralCap;
21
- #now;
22
- #knowledge = /* @__PURE__ */ new Map();
23
- #procedural = /* @__PURE__ */ new Map();
24
- #status = null;
25
- #nextId = 1;
26
- constructor(options = {}) {
27
- this.#knowledgeCap = positiveInteger(options.knowledgeCap, TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP);
28
- this.#proceduralCap = positiveInteger(options.proceduralCap, TASK_MEMORY_DEFAULT_PROCEDURAL_CAP);
29
- this.#now = options.now ?? (() => /* @__PURE__ */ new Date());
30
- }
31
- updateStatus(content) {
32
- const timestamp = this.#timestamp();
33
- const normalized = normalizeContent(content);
34
- this.#status = this.#status === null ? this.#newEntry("status", normalized, timestamp) : { ...this.#status, content: normalized, lastTouchedAt: timestamp };
35
- return cloneEntry(this.#status);
36
- }
37
- saveKnowledge(content, options = {}) {
38
- return this.#save("knowledge", content, options.id);
39
- }
40
- saveProcedural(content, options = {}) {
41
- return this.#save("procedural", content, options.id);
42
- }
43
- deleteEntry(id) {
44
- if (this.#status?.id === id) {
45
- this.#status = null;
46
- return true;
47
- }
48
- return this.#knowledge.delete(id) || this.#procedural.delete(id);
49
- }
50
- /** Reset execution state when the composition root switches sessions. */
51
- clear() {
52
- this.#status = null;
53
- this.#knowledge.clear();
54
- this.#procedural.clear();
55
- this.#nextId = 1;
56
- }
57
- /** Record attribution after an entry has contributed to a visible reminder. */
58
- recordInjection(ids) {
59
- for (const id of new Set(ids)) {
60
- const entries = this.#knowledge.has(id) ? this.#knowledge : this.#procedural;
61
- const entry = entries.get(id);
62
- if (entry === void 0) continue;
63
- const updated = { ...entry, injectionCount: entry.injectionCount + 1, lastTouchedAt: this.#timestamp() };
64
- entries.set(id, updated);
65
- }
66
- }
67
- /**
68
- * Render only action-agent-visible classes under a conservative character
69
- * token estimate. Status remains private even if a caller requests it.
70
- */
71
- render(budgetTokens, kinds = ["knowledge", "procedural"]) {
72
- if (!Number.isFinite(budgetTokens) || budgetTokens <= 0) return "";
73
- const allowed = new Set(kinds);
74
- const entries = [...this.#knowledge.values(), ...this.#procedural.values()].filter((entry) => allowed.has(entry.kind)).sort(compareForRender);
75
- let rendered = "";
76
- for (const entry of entries) {
77
- const line = `- [${entry.id}] ${entry.kind}: ${entry.content}`;
78
- const candidate = rendered.length === 0 ? line : `${rendered}
79
- ${line}`;
80
- if (ceilChars(candidate.length) > budgetTokens) continue;
81
- rendered = candidate;
82
- }
83
- return rendered;
84
- }
85
- /**
86
- * Render the block handed back to the action agent after compaction, which is
87
- * the one place status is visible.
88
- *
89
- * `render` refuses status because a mid-turn reminder must never expose the
90
- * policy's private progress model as if the action agent had said it. That
91
- * boundary is different: compaction destroyed the agent's own working state
92
- * and this hands it back. Restoring knowledge alone restored nothing in the
93
- * common case, because across ten live LLM steps the model wrote status in all
94
- * ten and knowledge in two. Status leads for the same reason, and knowledge
95
- * takes the remaining budget. Procedural stays out, unchanged.
96
- */
97
- renderRestoredState(budgetTokens) {
98
- if (!Number.isFinite(budgetTokens) || budgetTokens <= 0) return "";
99
- const status = this.#status;
100
- const statusLine = status === null ? "" : `- [${status.id}] status: ${status.content}`;
101
- if (statusLine.length > 0 && ceilChars(statusLine.length) > budgetTokens)
102
- return this.render(budgetTokens, ["knowledge"]);
103
- const remaining = statusLine.length === 0 ? budgetTokens : budgetTokens - ceilChars(statusLine.length);
104
- const knowledge = this.render(remaining, ["knowledge"]);
105
- if (statusLine.length === 0) return knowledge;
106
- return knowledge.length === 0 ? statusLine : `${statusLine}
107
- ${knowledge}`;
108
- }
109
- snapshot() {
110
- return {
111
- version: TASK_MEMORY_VERSION,
112
- status: this.#status === null ? null : cloneEntry(this.#status),
113
- knowledge: [...this.#knowledge.values()].sort(compareForSnapshot).map(cloneEntry),
114
- procedural: [...this.#procedural.values()].sort(compareForSnapshot).map(cloneEntry)
115
- };
116
- }
117
- #save(kind, content, id) {
118
- const entries = this.#mapFor(kind);
119
- const normalized = normalizeContent(content);
120
- const timestamp = this.#timestamp();
121
- let saved;
122
- if (id === void 0) {
123
- saved = this.#newEntry(kind, normalized, timestamp);
124
- } else {
125
- const existing = entries.get(id);
126
- if (existing === void 0) throw new Error(`task memory entry not found: ${id}`);
127
- saved = { ...existing, content: normalized, lastTouchedAt: timestamp };
128
- }
129
- entries.set(saved.id, saved);
130
- this.#evictOldest(entries, kind === "knowledge" ? this.#knowledgeCap : this.#proceduralCap);
131
- return cloneEntry(saved);
132
- }
133
- #newEntry(kind, content, timestamp) {
134
- const prefix = kind === "status" ? "s" : kind === "knowledge" ? "k" : "p";
135
- const id = `tm-${prefix}-${this.#nextId.toString(36)}`;
136
- this.#nextId += 1;
137
- return { id, kind, content, createdAt: timestamp, lastTouchedAt: timestamp, injectionCount: 0 };
138
- }
139
- #mapFor(kind) {
140
- return kind === "knowledge" ? this.#knowledge : this.#procedural;
141
- }
142
- #evictOldest(entries, cap) {
143
- while (entries.size > cap) {
144
- const oldest = [...entries.values()].sort(compareForEviction)[0];
145
- if (oldest === void 0) return;
146
- entries.delete(oldest.id);
147
- }
148
- }
149
- #timestamp() {
150
- return this.#now().toISOString();
151
- }
152
- };
153
- function normalizeContent(content) {
154
- const normalized = content.replace(/\s+/gu, " ").trim();
155
- if (normalized.length === 0) throw new Error("task memory content must not be empty");
156
- return normalized.slice(0, TASK_MEMORY_CONTENT_MAX_CHARS).trimEnd();
157
- }
158
- function positiveInteger(value, fallback) {
159
- return value !== void 0 && Number.isInteger(value) && value > 0 ? value : fallback;
160
- }
161
- function cloneEntry(entry) {
162
- return { ...entry };
163
- }
164
- function compareForEviction(left, right) {
165
- const byTouched = left.lastTouchedAt.localeCompare(right.lastTouchedAt);
166
- if (byTouched !== 0) return byTouched;
167
- const byCreated = left.createdAt.localeCompare(right.createdAt);
168
- if (byCreated !== 0) return byCreated;
169
- return left.id.localeCompare(right.id);
170
- }
171
- function compareForRender(left, right) {
172
- const byTouched = right.lastTouchedAt.localeCompare(left.lastTouchedAt);
173
- if (byTouched !== 0) return byTouched;
174
- if (left.kind !== right.kind) return left.kind === "knowledge" ? -1 : 1;
175
- return left.id.localeCompare(right.id);
176
- }
177
- function compareForSnapshot(left, right) {
178
- const byCreated = left.createdAt.localeCompare(right.createdAt);
179
- return byCreated !== 0 ? byCreated : left.id.localeCompare(right.id);
180
- }
181
-
182
- // src/domains/memory/task-memory-policy.ts
183
- init_esm_shims();
184
-
185
- // src/domains/prompts/memory-intervention.ts
186
- init_esm_shims();
187
- var MEMORY_INTERVENTION_SYSTEM_PROMPT = `You maintain task execution memory for a separate action agent. You never act on the task yourself and you never call tools. You write notes into a memory bank and, rarely, pass one reminder back.
188
-
189
- Return exactly two lines and no markdown fences:
190
- <operations>[JSON operations]</operations>
191
- <no_intervention/>
192
-
193
- Or replace the second line with:
194
- <context_for_action>one concise reminder</context_for_action>
195
-
196
- The operations list holds memory writes only. It is never a list of tool calls, commands, files to read, or next steps. "op" must be exactly one of these four strings and no others:
197
- - {"op":"update_status","content":"one paragraph"}
198
- - {"op":"save_knowledge","content":"one stable task fact"}
199
- - {"op":"save_procedural","content":"one attempt, outcome, diagnosis, or fix"}
200
- - {"op":"delete","id":"existing entry id"}
201
-
202
- Any other "op" value discards that operation. Add "id" to a save only to overwrite an entry already listed in the task bank; omit "id" to record something new. Use at most eight operations, and use <operations>[]</operations> when nothing is worth recording.
203
-
204
- Worked example. Given a trajectory where the agent read three routing files and one build command failed twice, a correct response is:
205
- <operations>[{"op":"update_status","content":"Mapping the routing call chain; the build is still failing."},{"op":"save_knowledge","content":"Target selection runs through placement.ts before runtime-resolution.ts."},{"op":"save_procedural","content":"npm run build failed twice with the same TS2345; the edit did not address it."}]</operations>
206
- <no_intervention/>
207
-
208
- Second worked example. Given a trajectory where the same command failed twice and the bank already holds [tm-p-1] describing that failure, a correct response is:
209
- <operations>[{"op":"update_status","content":"The same build command has now failed twice with the same error."}]</operations>
210
- <context_for_action>[tm-p-1] this exact command already failed with this error; change the approach rather than running it again.</context_for_action>
211
-
212
- Status is your private progress model and must never appear in context_for_action. Default to <no_intervention/>. Intervene only to restore a relevant bank fact or prevent a repeated known failure. Cite supporting visible entries as [entry-id]. Never restate the latest observation, take over planning, give broad strategy, block a tool, or request continuation.`;
213
- function buildMemoryInterventionUserPrompt(input) {
214
- return [
215
- "Task:",
216
- input.task.trim() || "(unknown)",
217
- "",
218
- "Task bank (status is intentionally omitted):",
219
- input.bank.trim() || "(empty)",
220
- "",
221
- "Recent completed tool trajectory:",
222
- input.trajectory.trim() || "[]"
223
- ].join("\n");
224
- }
225
-
226
- // src/domains/memory/task-memory-policy.ts
227
- var TASK_MEMORY_POLICY_MAX_OPERATIONS = 8;
228
- var TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 6e4;
229
- var TaskMemoryEndpointBusyError = class extends Error {
230
- };
231
- var TASK_PROMPT_MAX_CHARS = 2e3;
232
- var TRAJECTORY_PROMPT_MAX_CHARS = 4e3;
233
- function renderTrajectory(trajectory) {
234
- let steps = [...trajectory];
235
- let rendered = JSON.stringify(steps);
236
- while (rendered.length > TRAJECTORY_PROMPT_MAX_CHARS && steps.length > 1) {
237
- steps = steps.slice(1);
238
- rendered = JSON.stringify(steps);
239
- }
240
- if (rendered.length > TRAJECTORY_PROMPT_MAX_CHARS && steps.length === 1) {
241
- const only = steps[0];
242
- if (only !== void 0) {
243
- const room = Math.max(0, TRAJECTORY_PROMPT_MAX_CHARS - JSON.stringify([{ ...only, resultDigest: "" }]).length);
244
- rendered = JSON.stringify([{ ...only, resultDigest: only.resultDigest.slice(0, room) }]);
245
- }
246
- }
247
- return rendered;
248
- }
249
- async function runTaskMemoryPolicy(bank, client, input) {
250
- const controller = new AbortController();
251
- const timeoutMs = positiveInteger2(input.timeoutMs, TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS);
252
- const timeoutMarker = /* @__PURE__ */ Symbol("task-memory-timeout");
253
- let timer;
254
- const cancelledMarker = /* @__PURE__ */ Symbol("task-memory-cancelled");
255
- let cancel = () => {
256
- };
257
- const cancelled = new Promise((resolve) => {
258
- cancel = () => {
259
- controller.abort();
260
- resolve(cancelledMarker);
261
- };
262
- });
263
- input.signal?.addEventListener("abort", cancel, { once: true });
264
- if (input.signal?.aborted) cancel();
265
- let userPrompt = "";
266
- let rawResponse = "";
267
- let clientError = null;
268
- let stepUsage = null;
269
- let usageReported = false;
270
- const reportUsage = (usage) => {
271
- if (usageReported) return;
272
- usageReported = true;
273
- stepUsage = usage;
274
- try {
275
- input.onStepUsage?.(usage);
276
- } catch {
277
- }
278
- };
279
- const settle = (decision, reason, parts = {}) => {
280
- const result = {
281
- decision,
282
- reason,
283
- bankOperations: parts.bankOperations ?? 0,
284
- droppedOperations: parts.droppedOperations ?? 0,
285
- reminder: parts.reminder ?? null,
286
- inputTokens: parts.inputTokens ?? stepUsage?.input ?? 0,
287
- outputTokens: parts.outputTokens ?? stepUsage?.output ?? 0,
288
- usage: stepUsage
289
- };
290
- try {
291
- if (input.isCurrent?.() !== false)
292
- input.onEnvelope?.({
293
- systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
294
- userPrompt,
295
- response: rawResponse,
296
- decision,
297
- reason,
298
- bankOperations: result.bankOperations,
299
- droppedOperations: result.droppedOperations,
300
- reminder: result.reminder,
301
- error: clientError
302
- });
303
- } catch {
304
- }
305
- return result;
306
- };
307
- try {
308
- if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed");
309
- userPrompt = buildMemoryInterventionUserPrompt({
310
- task: input.task.slice(0, TASK_PROMPT_MAX_CHARS),
311
- bank: bank.render(input.maxTokens),
312
- trajectory: renderTrajectory(input.trajectory)
313
- });
314
- const completion = client.complete({
315
- systemPrompt: MEMORY_INTERVENTION_SYSTEM_PROMPT,
316
- userPrompt,
317
- maxTokens: positiveInteger2(input.modelMaxTokens, input.maxTokens),
318
- signal: controller.signal,
319
- onUsage: reportUsage
320
- }).then((response2) => {
321
- if (response2.usage !== void 0) reportUsage(response2.usage);
322
- return response2;
323
- });
324
- const timeout = new Promise((resolve) => {
325
- timer = setTimeout(() => resolve(timeoutMarker), timeoutMs);
326
- });
327
- const response = await Promise.race([completion, timeout, cancelled]);
328
- if (response === cancelledMarker) return settle("silent", "scope_changed");
329
- if (response === timeoutMarker) {
330
- controller.abort();
331
- void completion.catch(() => void 0);
332
- return settle("timeout", "deadline");
333
- }
334
- rawResponse = typeof response.text === "string" ? response.text : "";
335
- stepUsage = response.usage ?? stepUsage;
336
- const usage = {
337
- inputTokens: nonNegativeInteger(response.inputTokens ?? stepUsage?.input),
338
- outputTokens: nonNegativeInteger(response.outputTokens ?? stepUsage?.output)
339
- };
340
- if (input.signal?.aborted || input.isCurrent?.() === false) return settle("silent", "scope_changed", usage);
341
- const read = readPolicyStep(rawResponse);
342
- if (!read.ok) return settle("malformed", read.reason, { ...usage, droppedOperations: read.dropped });
343
- const operations = resolveOperations(bank, read.step.operations);
344
- applyOperations(bank, operations);
345
- const counts = {
346
- ...usage,
347
- bankOperations: operations.length,
348
- droppedOperations: read.dropped + (read.step.operations.length - operations.length)
349
- };
350
- if (read.step.context === null) return settle("silent", "model_silent", counts);
351
- const reminder = withMemoryPrefix(read.step.context, input.maxTokens);
352
- if (reminder.length === 0) return settle("gated", "over_budget", counts);
353
- if (input.suppressIntervention === true) return settle("silent", "suppressed", counts);
354
- if (reminder === input.previousReminder) return settle("silent", "duplicate_reminder", counts);
355
- const citedIds = citedRenderableEntryIds(bank, reminder);
356
- if (!input.deterministicTrigger && citedIds.length === 0) return settle("gated", "uncited", counts);
357
- bank.recordInjection(citedIds);
358
- return settle("injected", "intervened", { ...counts, reminder });
359
- } catch (error) {
360
- if (error instanceof TaskMemoryEndpointBusyError) return settle("silent", "endpoint_busy");
361
- clientError = errorMessage(error);
362
- if (isTimeoutError(error)) return settle("timeout", "timed_out");
363
- return settle("silent", "client_error");
364
- } finally {
365
- if (timer !== void 0) clearTimeout(timer);
366
- input.signal?.removeEventListener("abort", cancel);
367
- }
368
- }
369
- var OPERATIONS_OPEN = "<operations>";
370
- var OPERATIONS_CLOSE = "</operations>";
371
- var CONTEXT_OPEN = "<context_for_action>";
372
- var CONTEXT_CLOSE = "</context_for_action>";
373
- function cleanPolicyResponse(raw) {
374
- return raw.replace(/<(think|thinking|reasoning|scratchpad)\b[^>]*>[\s\S]*?<\/\1\s*>/giu, " ").replace(/<(think|thinking|reasoning|scratchpad)\b[^>]*>[\s\S]*$/iu, " ").replace(/^[^\S\n]*```[^\n]*$/gmu, " ").trim();
375
- }
376
- function stripTagShapes(value) {
377
- return value.replace(/<\/?[a-zA-Z][^>]*>/gu, " ");
378
- }
379
- function operationsEndIndex(text, from) {
380
- let depth = 0;
381
- let inString = false;
382
- let escaped = false;
383
- let started = false;
384
- for (let index = from; index < text.length; index += 1) {
385
- const char = text[index];
386
- if (inString) {
387
- if (escaped) escaped = false;
388
- else if (char === "\\") escaped = true;
389
- else if (char === '"') inString = false;
390
- continue;
391
- }
392
- if (char === '"') {
393
- inString = true;
394
- continue;
395
- }
396
- if (char === "[" || char === "{") {
397
- depth += 1;
398
- started = true;
399
- continue;
400
- }
401
- if (char === "]" || char === "}") {
402
- depth -= 1;
403
- if (depth < 0) return -1;
404
- if (depth === 0 && started) return index + 1;
405
- continue;
406
- }
407
- if (!started && char !== void 0 && char.trim().length > 0) return -1;
408
- }
409
- return -1;
410
- }
411
- function readPolicyStep(response) {
412
- const unparseable = { ok: false, reason: "unparseable", dropped: 0 };
413
- if (typeof response !== "string" || response.length === 0) return unparseable;
414
- const text = cleanPolicyResponse(response);
415
- const opensAt = text.indexOf(OPERATIONS_OPEN);
416
- if (opensAt === -1) return unparseable;
417
- const listAt = opensAt + OPERATIONS_OPEN.length;
418
- const listEndsAt = operationsEndIndex(text, listAt);
419
- if (listEndsAt === -1) return unparseable;
420
- const closesAt = text.indexOf(OPERATIONS_CLOSE, listEndsAt);
421
- if (closesAt === -1) return unparseable;
422
- let rawOperations;
423
- try {
424
- rawOperations = JSON.parse(text.slice(listAt, listEndsAt));
425
- } catch {
426
- return unparseable;
427
- }
428
- const read = readOperations(rawOperations);
429
- if (read === null) return unparseable;
430
- if (read.operations.length === 0 && read.dropped > 0) {
431
- return { ok: false, reason: "all_operations_invalid", dropped: read.dropped };
432
- }
433
- return {
434
- ok: true,
435
- step: { operations: read.operations, context: readContext(text.slice(closesAt + OPERATIONS_CLOSE.length)) },
436
- dropped: read.dropped
437
- };
438
- }
439
- function readContext(tail) {
440
- const contextAt = tail.indexOf(CONTEXT_OPEN);
441
- const silenceAt = tail.search(/<no_intervention\s*\/?>/u);
442
- if (contextAt === -1) return null;
443
- if (silenceAt !== -1 && silenceAt < contextAt) return null;
444
- const body = tail.slice(contextAt + CONTEXT_OPEN.length);
445
- const closesAt = body.lastIndexOf(CONTEXT_CLOSE);
446
- const context = stripTagShapes(closesAt === -1 ? body : body.slice(0, closesAt)).replace(/\s+/gu, " ").trim();
447
- return context.length === 0 ? null : context;
448
- }
449
- function readOperations(value) {
450
- if (!Array.isArray(value) || value.length > TASK_MEMORY_POLICY_MAX_OPERATIONS) return null;
451
- const operations = [];
452
- let dropped = 0;
453
- for (const raw of value) {
454
- if (!isRecord(raw) || typeof raw.op !== "string") return null;
455
- switch (raw.op) {
456
- case "update_status": {
457
- if (!hasExactKeys(raw, ["op", "content"])) return null;
458
- const content = boundedContent(raw.content);
459
- if (content === null) return null;
460
- operations.push({ op: raw.op, content });
461
- break;
462
- }
463
- case "save_knowledge":
464
- case "save_procedural": {
465
- if (!hasExactKeys(raw, raw.id === void 0 ? ["op", "content"] : ["op", "content", "id"])) return null;
466
- const content = boundedContent(raw.content);
467
- if (content === null) return null;
468
- if (raw.id !== void 0 && !nonEmptyString(raw.id)) return null;
469
- const operation = { op: raw.op, content };
470
- if (typeof raw.id === "string") operation.id = raw.id;
471
- operations.push(operation);
472
- break;
473
- }
474
- case "delete":
475
- if (!hasExactKeys(raw, ["op", "id"]) || !nonEmptyString(raw.id)) return null;
476
- operations.push({ op: raw.op, id: raw.id });
477
- break;
478
- default:
479
- dropped += 1;
480
- break;
481
- }
482
- }
483
- return { operations, dropped };
484
- }
485
- function resolveOperations(bank, operations) {
486
- const snapshot = bank.snapshot();
487
- const classes = /* @__PURE__ */ new Map();
488
- if (snapshot.status !== null) classes.set(snapshot.status.id, "status");
489
- for (const entry of snapshot.knowledge) classes.set(entry.id, "knowledge");
490
- for (const entry of snapshot.procedural) classes.set(entry.id, "procedural");
491
- const resolved = [];
492
- for (const operation of operations) {
493
- switch (operation.op) {
494
- case "update_status":
495
- resolved.push(operation);
496
- break;
497
- case "save_knowledge":
498
- case "save_procedural": {
499
- const expected = operation.op === "save_knowledge" ? "knowledge" : "procedural";
500
- if (operation.id !== void 0 && classes.get(operation.id) === expected) {
501
- resolved.push(operation);
502
- break;
503
- }
504
- resolved.push({ op: operation.op, content: operation.content });
505
- break;
506
- }
507
- case "delete":
508
- if (classes.delete(operation.id)) resolved.push(operation);
509
- break;
510
- }
511
- }
512
- return resolved;
513
- }
514
- function applyOperations(bank, operations) {
515
- for (const operation of operations) {
516
- switch (operation.op) {
517
- case "update_status":
518
- bank.updateStatus(operation.content);
519
- break;
520
- case "save_knowledge":
521
- bank.saveKnowledge(operation.content, operation.id === void 0 ? {} : { id: operation.id });
522
- break;
523
- case "save_procedural":
524
- bank.saveProcedural(operation.content, operation.id === void 0 ? {} : { id: operation.id });
525
- break;
526
- case "delete":
527
- bank.deleteEntry(operation.id);
528
- break;
529
- }
530
- }
531
- }
532
- function citedRenderableEntryIds(bank, reminder) {
533
- const snapshot = bank.snapshot();
534
- return [...snapshot.knowledge, ...snapshot.procedural].map((entry) => entry.id).filter((id) => reminder.includes(`[${id}]`));
535
- }
536
- function withMemoryPrefix(content, maxTokens) {
537
- const prefixed = content.startsWith("Memory:") ? content : `Memory: ${content}`;
538
- const maxChars = Math.max(0, maxTokens) * 4;
539
- return prefixed.length <= maxChars ? prefixed : "";
540
- }
541
- function boundedContent(value) {
542
- if (typeof value !== "string") return null;
543
- const normalized = value.replace(/\s+/gu, " ").trim();
544
- return normalized.length > 0 && normalized.length <= TASK_MEMORY_CONTENT_MAX_CHARS ? normalized : null;
545
- }
546
- function isRecord(value) {
547
- return value !== null && typeof value === "object" && !Array.isArray(value);
548
- }
549
- function hasExactKeys(record, expected) {
550
- const keys = Object.keys(record).sort();
551
- return keys.length === expected.length && [...expected].sort().every((key, index) => keys[index] === key);
552
- }
553
- function nonEmptyString(value) {
554
- return typeof value === "string" && value.trim().length > 0;
555
- }
556
- function positiveInteger2(value, fallback) {
557
- return value !== void 0 && Number.isInteger(value) && value > 0 ? value : fallback;
558
- }
559
- function nonNegativeInteger(value) {
560
- return value !== void 0 && Number.isInteger(value) && value >= 0 ? value : 0;
561
- }
562
- function isTimeoutError(error) {
563
- const name = error instanceof Error ? error.name : "";
564
- if (name === "AbortError" || name === "TimeoutError") return true;
565
- const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
566
- return /\b(abort(ed)?|timed out|timeout)\b/iu.test(message);
567
- }
568
- function errorMessage(error) {
569
- if (error instanceof Error) return error.message.length > 0 ? error.message : error.name;
570
- return typeof error === "string" && error.length > 0 ? error : "an unknown client failure";
571
- }
572
-
573
- // src/domains/memory/task-memory-telemetry.ts
574
- init_esm_shims();
575
- import { appendFileSync, mkdirSync, renameSync, statSync } from "node:fs";
576
- import { join } from "node:path";
577
- var TASK_MEMORY_TELEMETRY_VERSION = 2;
578
- var TASK_MEMORY_TELEMETRY_MAX_BYTES = 1024 * 1024;
579
- var TASK_MEMORY_TELEMETRY_FILE = "steps.jsonl";
580
- function createTaskMemoryTelemetrySink(options = {}) {
581
- const now = options.now ?? (() => /* @__PURE__ */ new Date());
582
- return {
583
- record(step) {
584
- try {
585
- const logDir = options.logDir ?? join(clioStateDir(), "memory");
586
- const record = taskMemoryTelemetryRecord(step, now());
587
- mkdirSync(logDir, { recursive: true });
588
- const path = join(logDir, TASK_MEMORY_TELEMETRY_FILE);
589
- try {
590
- if (statSync(path).size > TASK_MEMORY_TELEMETRY_MAX_BYTES) renameSync(path, `${path}.1`);
591
- } catch {
592
- }
593
- appendFileSync(path, `${JSON.stringify(record)}
594
- `);
595
- } catch {
596
- }
597
- }
598
- };
599
- }
600
- function taskMemoryTelemetryRecord(step, at) {
601
- const input = nonNegativeInteger2(step.inputTokens);
602
- const output = nonNegativeInteger2(step.outputTokens);
603
- return {
604
- version: TASK_MEMORY_TELEMETRY_VERSION,
605
- at: at.toISOString(),
606
- triggerReasons: [...new Set(step.triggerReasons)],
607
- tier: step.tier,
608
- bankDelta: step.bankDelta,
609
- decision: step.decision,
610
- reason: step.reason,
611
- bankOperations: nonNegativeInteger2(step.bankOperations),
612
- droppedOperations: nonNegativeInteger2(step.droppedOperations),
613
- citedEntries: nonNegativeInteger2(step.citedEntries),
614
- tokenCost: { input, output, total: input + output },
615
- latencyMs: nonNegativeFinite(step.latencyMs)
616
- };
617
- }
618
- function taskMemoryBankDelta(before, after) {
619
- return {
620
- status: entryDelta(before.status === null ? [] : [before.status], after.status === null ? [] : [after.status]),
621
- knowledge: entryDelta(before.knowledge, after.knowledge),
622
- procedural: entryDelta(before.procedural, after.procedural)
623
- };
624
- }
625
- function parseTaskMemoryTelemetryRecord(value) {
626
- if (!isRecord2(value) || !hasExactKeys2(value, TELEMETRY_KEYS)) return null;
627
- if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
628
- if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
629
- if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
630
- if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
631
- const bankDelta = parseBankDelta(value.bankDelta);
632
- const tokenCost = parseTokenCost(value.tokenCost);
633
- if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
634
- return {
635
- version: TASK_MEMORY_TELEMETRY_VERSION,
636
- at: value.at,
637
- triggerReasons: value.triggerReasons,
638
- tier: value.tier,
639
- bankDelta,
640
- decision: value.decision,
641
- reason: value.reason,
642
- bankOperations: value.bankOperations,
643
- droppedOperations: value.droppedOperations,
644
- citedEntries: value.citedEntries,
645
- tokenCost,
646
- latencyMs: value.latencyMs
647
- };
648
- }
649
- var TELEMETRY_KEYS = [
650
- "version",
651
- "at",
652
- "triggerReasons",
653
- "tier",
654
- "bankDelta",
655
- "decision",
656
- "reason",
657
- "bankOperations",
658
- "droppedOperations",
659
- "citedEntries",
660
- "tokenCost",
661
- "latencyMs"
662
- ];
663
- var DELTA_KEYS = ["status", "knowledge", "procedural"];
664
- var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
665
- var TOKEN_KEYS = ["input", "output", "total"];
666
- var TRIGGERS = /* @__PURE__ */ new Set([
667
- "interval",
668
- "tool_error_streak",
669
- "loop_signal",
670
- "repeated_failure",
671
- "turn_end",
672
- "post_compaction",
673
- "manual"
674
- ]);
675
- var DECISIONS = /* @__PURE__ */ new Set([
676
- "silent",
677
- "injected",
678
- "gated",
679
- "timeout",
680
- "malformed",
681
- "dropped"
682
- ]);
683
- var REASONS = /* @__PURE__ */ new Set([
684
- "intervened",
685
- "model_silent",
686
- "duplicate_reminder",
687
- "suppressed",
688
- "uncited",
689
- "over_budget",
690
- "unparseable",
691
- "all_operations_invalid",
692
- "deadline",
693
- "timed_out",
694
- "endpoint_busy",
695
- "client_error",
696
- "no_client",
697
- "no_consumer",
698
- "step_in_flight",
699
- "llm_timeout_backoff",
700
- "no_repeated_failure",
701
- "bank_empty",
702
- "scope_changed"
703
- ]);
704
- function entryDelta(before, after) {
705
- const old = new Map(before.map((entry) => [entry.id, entry]));
706
- const next = new Map(after.map((entry) => [entry.id, entry]));
707
- let added = 0;
708
- let updated = 0;
709
- let deleted = 0;
710
- for (const [id, entry] of next) {
711
- const previous = old.get(id);
712
- if (previous === void 0) added += 1;
713
- else if (!sameEntry(previous, entry)) updated += 1;
714
- }
715
- for (const id of old.keys()) {
716
- if (!next.has(id)) deleted += 1;
717
- }
718
- return { added, updated, deleted };
719
- }
720
- function sameEntry(left, right) {
721
- return left.content === right.content && left.createdAt === right.createdAt;
722
- }
723
- function parseBankDelta(value) {
724
- if (!isRecord2(value) || !hasExactKeys2(value, DELTA_KEYS)) return null;
725
- const status = parseClassDelta(value.status);
726
- const knowledge = parseClassDelta(value.knowledge);
727
- const procedural = parseClassDelta(value.procedural);
728
- return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
729
- }
730
- function parseClassDelta(value) {
731
- if (!isRecord2(value) || !hasExactKeys2(value, CLASS_DELTA_KEYS)) return null;
732
- return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
733
- }
734
- function parseTokenCost(value) {
735
- if (!isRecord2(value) || !hasExactKeys2(value, TOKEN_KEYS)) return null;
736
- if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
737
- return null;
738
- if (value.total !== value.input + value.output) return null;
739
- return { input: value.input, output: value.output, total: value.total };
740
- }
741
- function validTriggerReasons(value) {
742
- return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
743
- }
744
- function isTier(value) {
745
- return value === "rules" || value === "llm";
746
- }
747
- function isDecision(value) {
748
- return typeof value === "string" && DECISIONS.has(value);
749
- }
750
- function isReason(value) {
751
- return typeof value === "string" && REASONS.has(value);
752
- }
753
- function validIsoTimestamp(value) {
754
- if (typeof value !== "string" || value.length > 40) return false;
755
- const timestamp = Date.parse(value);
756
- return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
757
- }
758
- function isRecord2(value) {
759
- return typeof value === "object" && value !== null && !Array.isArray(value);
760
- }
761
- function hasExactKeys2(value, keys) {
762
- const actual = Object.keys(value).sort();
763
- const expected = [...keys].sort();
764
- return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
765
- }
766
- function isNonNegativeInteger(value) {
767
- return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
768
- }
769
- function nonNegativeInteger2(value) {
770
- return Number.isSafeInteger(value) && value >= 0 ? value : 0;
771
- }
772
- function isNonNegativeFinite(value) {
773
- return typeof value === "number" && Number.isFinite(value) && value >= 0;
774
- }
775
- function nonNegativeFinite(value) {
776
- return Number.isFinite(value) && value >= 0 ? value : 0;
777
- }
778
-
779
- export {
780
- TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP,
781
- TASK_MEMORY_DEFAULT_PROCEDURAL_CAP,
782
- TASK_MEMORY_CONTENT_MAX_CHARS,
783
- TaskMemoryBank,
784
- TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
785
- TaskMemoryEndpointBusyError,
786
- runTaskMemoryPolicy,
787
- TASK_MEMORY_TELEMETRY_FILE,
788
- createTaskMemoryTelemetrySink,
789
- taskMemoryBankDelta,
790
- parseTaskMemoryTelemetryRecord
791
- };
792
- //# sourceMappingURL=chunk-2WZ546HR.js.map