@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
@@ -4,44 +4,51 @@ import {
4
4
  discoverVerifierAuthoring,
5
5
  previewVerifierDraft,
6
6
  runVerifierAuthoringWorkflow
7
- } from "./chunk-54CBCGIR.js";
7
+ } from "./chunk-ZMZQEBKI.js";
8
8
  import {
9
9
  verifyTool
10
- } from "./chunk-F5JHEYZM.js";
11
- import "./chunk-V2ANDPVT.js";
12
- import "./chunk-LCGCVYZ4.js";
10
+ } from "./chunk-UXAC2FX4.js";
11
+ import {
12
+ recordPerfBaseline
13
+ } from "./chunk-HGSLRG33.js";
14
+ import "./chunk-T52TPHYC.js";
15
+ import "./chunk-LQTKDAUO.js";
13
16
  import {
14
17
  printError,
15
18
  printOk
16
- } from "./chunk-VPKWYKEY.js";
17
- import "./chunk-5TSRNF4G.js";
18
- import "./chunk-ZDN3Y73Y.js";
19
- import "./chunk-VG7TBQIY.js";
19
+ } from "./chunk-3T4DXWP6.js";
20
+ import "./chunk-GXCCHKN6.js";
21
+ import "./chunk-YGDMBK7O.js";
22
+ import "./chunk-V552WL53.js";
23
+ import "./chunk-KQ6IDQIB.js";
24
+ import "./chunk-WJIMKGD6.js";
20
25
  import {
26
+ DECLARED_CHECK_KINDS,
21
27
  PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
22
- loadProjectVerifierCatalog
23
- } from "./chunk-7DICMOS6.js";
24
- import "./chunk-OQE5J4C6.js";
28
+ loadProjectVerifierCatalog,
29
+ normalizeNumericTolerance
30
+ } from "./chunk-MDU3C27C.js";
25
31
  import {
26
32
  isProjectVerifierCheckId
27
- } from "./chunk-UL3WSD3F.js";
28
- import "./chunk-ECH6PKUQ.js";
29
- import "./chunk-6XLNIQDB.js";
30
- import "./chunk-5B2AEOW5.js";
31
- import "./chunk-K6BSR66V.js";
33
+ } from "./chunk-M4KFUXS7.js";
34
+ import "./chunk-GH5ZR6JP.js";
35
+ import "./chunk-B6UM3OZC.js";
36
+ import "./chunk-MYI32N4R.js";
37
+ import "./chunk-EHOSNVVM.js";
32
38
  import {
33
39
  SAFE_EXEC_DEFAULT_TIMEOUT_MS
34
- } from "./chunk-JSC3U7TI.js";
35
- import "./chunk-JIEGK6UF.js";
36
- import "./chunk-EBY63B7G.js";
37
- import "./chunk-6EJMN2Y3.js";
38
- import "./chunk-APJ265NV.js";
39
- import "./chunk-YPC6ZR5L.js";
40
- import "./chunk-YXLYO42X.js";
41
- import "./chunk-BYP5D4HI.js";
40
+ } from "./chunk-GJ24ODAX.js";
41
+ import "./chunk-LTR5QCLS.js";
42
+ import "./chunk-6EXUUOSN.js";
43
+ import "./chunk-ZTNFYMIO.js";
44
+ import "./chunk-VNBICSS2.js";
45
+ import "./chunk-B5GGDIHT.js";
46
+ import "./chunk-5CMARGPF.js";
47
+ import "./chunk-DXVMLM3Z.js";
48
+ import "./chunk-CTTI7G3T.js";
42
49
  import {
43
50
  init_esm_shims
44
- } from "./chunk-3R73A4XB.js";
51
+ } from "./chunk-ECBHH7LU.js";
45
52
 
46
53
  // src/cli/verifiers.ts
47
54
  init_esm_shims();
@@ -208,11 +215,22 @@ Usage:
208
215
  clio-coder verifiers edit <id> [--description <text>] [--command <json-argv>] [fields] [--yes]
209
216
  clio-coder verifiers rename <old> <new> [--yes]
210
217
  clio-coder verifiers remove <id> [--yes]
218
+ clio-coder verifiers baseline <id>
211
219
 
212
220
  Fields:
213
221
  --cwd <path> repository-relative working directory (default .)
214
222
  --timeout-ms <number> bounded timeout in milliseconds (default 120000)
215
223
  --tags <a,b> comma-separated catalog tags
224
+ --kind <kind> command (default), numeric-compare, or perf-budget
225
+ --reference <path> numeric-compare: repository-relative reference JSON of string -> number | number[]
226
+ --tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"?}, at least one;
227
+ perf-budget with --baseline: {"relative"} headroom over the baseline
228
+ --budget-ms <number> perf-budget: wall-time bound in milliseconds
229
+ --budget-relative <r> perf-budget with --budget-ms: fractional headroom over the bound
230
+ --baseline <path> perf-budget: repository-relative baseline JSON written by 'verifiers baseline <id>'
231
+
232
+ baseline runs a perf-budget check once and records its wall time at the check's
233
+ baseline path; a failing or timed-out command records nothing.
216
234
 
217
235
  Discovery and every preview are read-only. Mutating commands write only with
218
236
  --yes after printing the exact argv, cwd, timeout, tags, source provenance, and
@@ -231,7 +249,13 @@ var VALUE_OPTIONS = /* @__PURE__ */ new Set([
231
249
  "--tags",
232
250
  "--exclude",
233
251
  "--rename",
234
- "--dry-run"
252
+ "--dry-run",
253
+ "--kind",
254
+ "--reference",
255
+ "--tolerance",
256
+ "--budget-ms",
257
+ "--budget-relative",
258
+ "--baseline"
235
259
  ]);
236
260
  function parseAuthoringArgs(argv) {
237
261
  const positional = [];
@@ -289,6 +313,82 @@ function parseTimeout(value) {
289
313
  function tags(value) {
290
314
  return value === void 0 ? [] : value.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0);
291
315
  }
316
+ function parseJsonObject(value, option) {
317
+ try {
318
+ const parsed = JSON.parse(value);
319
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
320
+ return new Error(`${option} must be a JSON object`);
321
+ }
322
+ return parsed;
323
+ } catch (error) {
324
+ return new Error(`${option} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
325
+ }
326
+ }
327
+ function kindFieldsFromArgs(parsed) {
328
+ const kindValue = oneValue(parsed, "--kind") ?? "command";
329
+ if (!DECLARED_CHECK_KINDS.includes(kindValue)) {
330
+ return new Error(`--kind must be one of ${DECLARED_CHECK_KINDS.join(", ")}`);
331
+ }
332
+ const kind = kindValue;
333
+ const reference = oneValue(parsed, "--reference");
334
+ const toleranceValue = oneValue(parsed, "--tolerance");
335
+ const budgetMs = oneValue(parsed, "--budget-ms");
336
+ const budgetRelative = oneValue(parsed, "--budget-relative");
337
+ const baseline = oneValue(parsed, "--baseline");
338
+ if (kind === "command") {
339
+ const stray = [
340
+ ["--reference", reference],
341
+ ["--tolerance", toleranceValue],
342
+ ["--budget-ms", budgetMs],
343
+ ["--budget-relative", budgetRelative],
344
+ ["--baseline", baseline]
345
+ ].filter(([, value]) => value !== void 0);
346
+ if (stray.length > 0)
347
+ return new Error(`${stray.map(([name]) => name).join(", ")} require --kind numeric-compare or perf-budget`);
348
+ return {};
349
+ }
350
+ if (kind === "numeric-compare") {
351
+ if (budgetMs !== void 0 || budgetRelative !== void 0 || baseline !== void 0) {
352
+ return new Error("--budget-ms, --budget-relative, and --baseline belong to --kind perf-budget");
353
+ }
354
+ if (reference === void 0) return new Error("--reference is required for --kind numeric-compare");
355
+ if (toleranceValue === void 0) return new Error("--tolerance is required for --kind numeric-compare");
356
+ const toleranceJson = parseJsonObject(toleranceValue, "--tolerance");
357
+ if (toleranceJson instanceof Error) return toleranceJson;
358
+ const tolerance = normalizeNumericTolerance(toleranceJson);
359
+ if (tolerance instanceof Error) return new Error(`--tolerance ${tolerance.message}`);
360
+ return { kind, numeric: { reference, tolerance } };
361
+ }
362
+ if (reference !== void 0) return new Error("--reference belongs to --kind numeric-compare");
363
+ if (budgetMs === void 0 === (baseline === void 0)) {
364
+ return new Error("--kind perf-budget requires exactly one of --budget-ms or --baseline");
365
+ }
366
+ if (budgetMs !== void 0) {
367
+ if (toleranceValue !== void 0) return new Error("use --budget-relative for headroom over --budget-ms");
368
+ const wallTimeMs = Number(budgetMs);
369
+ if (!Number.isFinite(wallTimeMs) || wallTimeMs <= 0) return new Error("--budget-ms must be a positive number");
370
+ const budget = { wallTimeMs };
371
+ if (budgetRelative !== void 0) {
372
+ const relative = Number(budgetRelative);
373
+ if (!Number.isFinite(relative) || relative < 0) return new Error("--budget-relative must be a non-negative number");
374
+ budget.tolerance = { relative };
375
+ }
376
+ return { kind, perf: { budget } };
377
+ }
378
+ if (budgetRelative !== void 0)
379
+ return new Error("--budget-relative belongs with --budget-ms; use --tolerance with --baseline");
380
+ const perf = { baseline };
381
+ if (toleranceValue !== void 0) {
382
+ const toleranceJson = parseJsonObject(toleranceValue, "--tolerance");
383
+ if (toleranceJson instanceof Error) return toleranceJson;
384
+ const relative = toleranceJson.relative;
385
+ if (typeof relative !== "number" || !Number.isFinite(relative) || relative < 0) {
386
+ return new Error('--tolerance for a baseline must be {"relative": <non-negative number>}');
387
+ }
388
+ perf.tolerance = { relative };
389
+ }
390
+ return { kind, perf };
391
+ }
292
392
  function requiredValue(parsed, option) {
293
393
  const value = oneValue(parsed, option);
294
394
  return value === void 0 || value.length === 0 ? new Error(`${option} is required`) : value;
@@ -314,6 +414,8 @@ function addRevision(parsed) {
314
414
  if (command instanceof Error) return command;
315
415
  const timeoutMs = parseTimeout(oneValue(parsed, "--timeout-ms"));
316
416
  if (timeoutMs instanceof Error) return timeoutMs;
417
+ const kindFields = kindFieldsFromArgs(parsed);
418
+ if (kindFields instanceof Error) return kindFields;
317
419
  return {
318
420
  kind: "add",
319
421
  check: {
@@ -322,7 +424,8 @@ function addRevision(parsed) {
322
424
  command,
323
425
  cwd: oneValue(parsed, "--cwd") ?? ".",
324
426
  timeoutMs,
325
- tags: tags(oneValue(parsed, "--tags"))
427
+ tags: tags(oneValue(parsed, "--tags")),
428
+ ...kindFields
326
429
  }
327
430
  };
328
431
  }
@@ -348,6 +451,13 @@ function editRevision(parsed) {
348
451
  }
349
452
  const tagValue = oneValue(parsed, "--tags");
350
453
  if (tagValue !== void 0) changes.tags = tags(tagValue);
454
+ if (oneValue(parsed, "--kind") !== void 0) {
455
+ const kindFields = kindFieldsFromArgs(parsed);
456
+ if (kindFields instanceof Error) return kindFields;
457
+ changes.kind = kindFields.kind ?? "command";
458
+ if (kindFields.numeric !== void 0) changes.numeric = kindFields.numeric;
459
+ if (kindFields.perf !== void 0) changes.perf = kindFields.perf;
460
+ }
351
461
  if (Object.keys(changes).length === 0) return new Error("edit requires at least one changed field");
352
462
  return { kind: "edit", id, changes };
353
463
  }
@@ -419,6 +529,29 @@ async function executeWorkflow(parsed, options) {
419
529
  for (const dryRun of result.dryRuns) code = Math.max(code, printDryRun(dryRun.id, dryRun.result));
420
530
  return code;
421
531
  }
532
+ async function baselineCommand(id) {
533
+ if (id === void 0) {
534
+ printError("baseline requires a check ID");
535
+ return 2;
536
+ }
537
+ const loaded = loadProjectVerifierCatalog(process.cwd());
538
+ if (!loaded.ok) {
539
+ printError(`production catalog parser rejected ${loaded.reason}`);
540
+ return 1;
541
+ }
542
+ const check = loaded.source?.checks.find((candidate) => candidate.id === id);
543
+ if (check === void 0) {
544
+ printError(`no catalog check '${id}' in ${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}`);
545
+ return 1;
546
+ }
547
+ const recorded = await recordPerfBaseline(check);
548
+ if (!recorded.ok) {
549
+ printError(`baseline '${id}' not recorded: ${recorded.message}`);
550
+ return 1;
551
+ }
552
+ printOk(`recorded baseline for '${id}': ${Math.round(recorded.wallTimeMs)}ms at ${recorded.path}`);
553
+ return 0;
554
+ }
422
555
  async function discoverCommand() {
423
556
  const discovery = discoverVerifierAuthoring();
424
557
  if (!discovery.ok) {
@@ -462,6 +595,7 @@ async function runVerifiersCommand(argv) {
462
595
  const command = parsed.positional[0];
463
596
  if (command === "discover") return discoverCommand();
464
597
  if (command === "validate") return validateCommand();
598
+ if (command === "baseline") return baselineCommand(parsed.positional[1]);
465
599
  if (command === "dry-run") {
466
600
  const id = parsed.positional[1];
467
601
  if (id === void 0) {
@@ -493,4 +627,4 @@ async function runVerifiersCommand(argv) {
493
627
  export {
494
628
  runVerifiersCommand
495
629
  };
496
- //# sourceMappingURL=verifiers-DJTP4XX6.js.map
630
+ //# sourceMappingURL=verifiers-GSKWKWVG.js.map
@@ -0,0 +1,30 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ verifyTool
4
+ } from "./chunk-UXAC2FX4.js";
5
+ import "./chunk-HGSLRG33.js";
6
+ import "./chunk-GXCCHKN6.js";
7
+ import "./chunk-YGDMBK7O.js";
8
+ import "./chunk-V552WL53.js";
9
+ import "./chunk-KQ6IDQIB.js";
10
+ import "./chunk-WJIMKGD6.js";
11
+ import "./chunk-MDU3C27C.js";
12
+ import "./chunk-M4KFUXS7.js";
13
+ import "./chunk-GH5ZR6JP.js";
14
+ import "./chunk-B6UM3OZC.js";
15
+ import "./chunk-MYI32N4R.js";
16
+ import "./chunk-EHOSNVVM.js";
17
+ import "./chunk-GJ24ODAX.js";
18
+ import "./chunk-LTR5QCLS.js";
19
+ import "./chunk-6EXUUOSN.js";
20
+ import "./chunk-ZTNFYMIO.js";
21
+ import "./chunk-VNBICSS2.js";
22
+ import "./chunk-B5GGDIHT.js";
23
+ import "./chunk-5CMARGPF.js";
24
+ import "./chunk-DXVMLM3Z.js";
25
+ import "./chunk-CTTI7G3T.js";
26
+ import "./chunk-ECBHH7LU.js";
27
+ export {
28
+ verifyTool
29
+ };
30
+ //# sourceMappingURL=verify-3AS3ULCY.js.map
@@ -1,11 +1,11 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  getVersionInfo
4
- } from "./chunk-XPLRXC72.js";
5
- import "./chunk-IWHMRKLL.js";
4
+ } from "./chunk-GD55RTIW.js";
5
+ import "./chunk-E3LEPLQ2.js";
6
6
  import {
7
7
  init_esm_shims
8
- } from "./chunk-3R73A4XB.js";
8
+ } from "./chunk-ECBHH7LU.js";
9
9
 
10
10
  // src/cli/version.ts
11
11
  init_esm_shims();
@@ -18,4 +18,4 @@ function runVersionCommand() {
18
18
  export {
19
19
  runVersionCommand
20
20
  };
21
- //# sourceMappingURL=version-KGEG7EPO.js.map
21
+ //# sourceMappingURL=version-RFPKO6T7.js.map
@@ -1,18 +1,164 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  webFetchToolSurface
4
- } from "./chunk-MCEPRMZW.js";
4
+ } from "./chunk-BBV5TKE6.js";
5
+ import {
6
+ WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV
7
+ } from "./chunk-SL2RDHKO.js";
8
+ import {
9
+ UNTRUSTED_CONTENT_BANNER
10
+ } from "./chunk-WXA2CFJO.js";
11
+ import "./chunk-GH5ZR6JP.js";
5
12
  import {
6
13
  truncateUtf8
7
- } from "./chunk-6XLNIQDB.js";
8
- import "./chunk-5B2AEOW5.js";
9
- import "./chunk-K6BSR66V.js";
14
+ } from "./chunk-MYI32N4R.js";
15
+ import "./chunk-EHOSNVVM.js";
10
16
  import {
11
17
  init_esm_shims
12
- } from "./chunk-3R73A4XB.js";
18
+ } from "./chunk-ECBHH7LU.js";
13
19
 
14
20
  // src/tools/web-fetch.ts
15
21
  init_esm_shims();
22
+
23
+ // src/tools/web-fetch-network.ts
24
+ init_esm_shims();
25
+ import { lookup } from "node:dns/promises";
26
+ import { request as httpRequest } from "node:http";
27
+ import { request as httpsRequest } from "node:https";
28
+ import { BlockList, isIP } from "node:net";
29
+ import { Readable } from "node:stream";
30
+ import { createBrotliDecompress, createGunzip, createInflate } from "node:zlib";
31
+ var blocked = new BlockList();
32
+ for (const [address, prefix] of [
33
+ ["0.0.0.0", 8],
34
+ ["10.0.0.0", 8],
35
+ ["100.64.0.0", 10],
36
+ ["127.0.0.0", 8],
37
+ ["169.254.0.0", 16],
38
+ ["172.16.0.0", 12],
39
+ ["192.168.0.0", 16],
40
+ ["192.0.0.0", 24],
41
+ ["192.0.2.0", 24],
42
+ ["198.18.0.0", 15],
43
+ ["198.51.100.0", 24],
44
+ ["203.0.113.0", 24],
45
+ ["224.0.0.0", 4],
46
+ ["240.0.0.0", 4]
47
+ ])
48
+ blocked.addSubnet(address, prefix, "ipv4");
49
+ for (const [address, prefix] of [
50
+ ["2001::", 32],
51
+ ["2001:db8::", 32],
52
+ ["2002::", 16]
53
+ ])
54
+ blocked.addSubnet(address, prefix, "ipv6");
55
+ var globalV6 = new BlockList();
56
+ globalV6.addSubnet("2000::", 3, "ipv6");
57
+ function isPublicWebAddress(address) {
58
+ const family = isIP(address);
59
+ if (family === 4) return !blocked.check(address, "ipv4");
60
+ return family === 6 && globalV6.check(address, "ipv6") && !blocked.check(address, "ipv6");
61
+ }
62
+ var WebFetchNetworkError = class extends Error {
63
+ constructor(message) {
64
+ super(`WEB_FETCH_PRIVATE_NETWORK: ${message}`);
65
+ this.name = "WebFetchNetworkError";
66
+ }
67
+ };
68
+ async function requestPinnedWebUrl(url, init, address) {
69
+ return new Promise((resolve, reject) => {
70
+ const headers = new Headers(init.headers);
71
+ headers.delete("host");
72
+ const request = (url.protocol === "https:" ? httpsRequest : httpRequest)(
73
+ url,
74
+ {
75
+ method: init.method ?? "GET",
76
+ headers: Object.fromEntries(headers),
77
+ agent: false,
78
+ ...init.signal ? { signal: init.signal } : {},
79
+ lookup: (_hostname, options, callback) => {
80
+ if (options.all) callback(null, [address]);
81
+ else callback(null, address.address, address.family);
82
+ }
83
+ },
84
+ (response) => {
85
+ const responseHeaders = new Headers();
86
+ for (const [key, value] of Object.entries(response.headers)) {
87
+ if (value !== void 0) responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : value);
88
+ }
89
+ const status = response.statusCode ?? 500;
90
+ let stream = response;
91
+ const encoding = responseHeaders.get("content-encoding");
92
+ const decoder = encoding === "gzip" ? createGunzip() : encoding === "br" ? createBrotliDecompress() : encoding === "deflate" ? createInflate() : null;
93
+ if (decoder) {
94
+ response.on("error", (error) => decoder.destroy(error));
95
+ decoder.on("close", () => response.destroy());
96
+ stream = response.pipe(decoder);
97
+ responseHeaders.delete("content-encoding");
98
+ responseHeaders.delete("content-length");
99
+ }
100
+ const noBody = init.method === "HEAD" || [204, 205, 304].includes(status);
101
+ if (noBody) response.resume();
102
+ const result = new Response(noBody ? null : Readable.toWeb(stream), {
103
+ status,
104
+ statusText: response.statusMessage ?? "",
105
+ headers: responseHeaders
106
+ });
107
+ Object.defineProperty(result, "url", { value: url.toString() });
108
+ resolve(result);
109
+ }
110
+ );
111
+ request.on("error", reject);
112
+ request.end(typeof init.body === "string" ? init.body : void 0);
113
+ });
114
+ }
115
+ async function abortableLookup(pending, signal) {
116
+ if (!signal) return pending;
117
+ signal.throwIfAborted();
118
+ return new Promise((resolve, reject) => {
119
+ const onAbort = () => reject(signal.reason);
120
+ signal.addEventListener("abort", onAbort, { once: true });
121
+ pending.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
122
+ });
123
+ }
124
+ async function fetchWebUrl(input, initial = {}, dependencies = {}) {
125
+ let url = new URL(input);
126
+ const init = { ...initial, headers: new Headers(initial.headers) };
127
+ const allowPrivate = dependencies.allowPrivateNetwork ?? process.env[WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV] === "1";
128
+ for (let hop = 0; hop <= 10; hop++) {
129
+ init.signal?.throwIfAborted();
130
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password)
131
+ throw new Error("web_fetch: unsupported URL scheme or embedded credentials");
132
+ const hostname = url.hostname.replace(/^\[|\]$/g, "");
133
+ const addresses = isIP(hostname) ? [{ address: hostname, family: isIP(hostname) }] : await abortableLookup((dependencies.resolve ?? ((host) => lookup(host, { all: true })))(hostname), init.signal);
134
+ init.signal?.throwIfAborted();
135
+ const address = addresses[0];
136
+ if (address === void 0) throw new Error("web_fetch: DNS returned no addresses");
137
+ if (!allowPrivate && addresses.some((address2) => !isPublicWebAddress(address2.address)))
138
+ throw new WebFetchNetworkError(
139
+ `destination ${url.hostname} is not public; operator opt-in ${WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV}=1 is required`
140
+ );
141
+ const response = await (dependencies.request ?? requestPinnedWebUrl)(url, init, address);
142
+ const location = response.headers.get("location");
143
+ if (![301, 302, 303, 307, 308].includes(response.status) || location === null) return response;
144
+ await response.body?.cancel();
145
+ if (hop === 10) throw new Error("web_fetch: too many redirects");
146
+ const next = new URL(location, url);
147
+ if (next.origin !== url.origin) {
148
+ init.headers = new Headers();
149
+ }
150
+ if (response.status === 303 && init.method !== "HEAD" || [301, 302].includes(response.status) && init.method === "POST") {
151
+ init.method = "GET";
152
+ delete init.body;
153
+ init.headers.delete("content-type");
154
+ init.headers.delete("content-length");
155
+ }
156
+ url = next;
157
+ }
158
+ throw new Error("web_fetch: too many redirects");
159
+ }
160
+
161
+ // src/tools/web-fetch.ts
16
162
  var DEFAULT_TIMEOUT_MS = 3e4;
17
163
  var DEFAULT_MAX_BYTES = 6e5;
18
164
  var HARD_MAX_BYTES = 5e6;
@@ -298,7 +444,7 @@ function parseArxivEntry(entry, fallbackId) {
298
444
  }
299
445
  async function fetchArxivPaperSummary(paperId, init, maxBytes) {
300
446
  const metadataUrl = `https://export.arxiv.org/api/query?id_list=${encodeURIComponent(paperId)}`;
301
- const response = await fetch(metadataUrl, init);
447
+ const response = await fetchWebUrl(metadataUrl, init);
302
448
  if (response.status < 200 || response.status >= 300) return null;
303
449
  const read = await readResponseText(response, Math.min(12e4, maxBytes));
304
450
  const entry = /<entry\b[^>]*>([\s\S]*?)<\/entry>/i.exec(read.text)?.[1];
@@ -307,7 +453,7 @@ async function fetchArxivPaperSummary(paperId, init, maxBytes) {
307
453
  let alphaxivRead = null;
308
454
  const alphaUrl = `https://alphaxiv.org/overview/${encodeURIComponent(paperId)}.md`;
309
455
  try {
310
- const alpha = await fetch(alphaUrl, init);
456
+ const alpha = await fetchWebUrl(alphaUrl, init);
311
457
  if (alpha.status >= 200 && alpha.status < 300) {
312
458
  alphaxivRead = await readResponseText(alpha, Math.min(8e4, Math.max(0, maxBytes - read.bytesRead)));
313
459
  if (alphaxivRead.text.trim().length > 0) paper.alphaxivOverview = alphaxivRead.text.trim();
@@ -337,7 +483,8 @@ async function fetchArxivPaperSummary(paperId, init, maxBytes) {
337
483
  const bytesRead = read.bytesRead + (alphaxivRead?.bytesRead ?? 0);
338
484
  return {
339
485
  kind: "ok",
340
- output: truncate(lines.join("\n"), maxBytes),
486
+ output: truncate(`${UNTRUSTED_CONTENT_BANNER}
487
+ ${lines.join("\n")}`, maxBytes),
341
488
  details: {
342
489
  url: `https://arxiv.org/abs/${paper.id}`,
343
490
  status: 200,
@@ -352,7 +499,7 @@ function arxivApiUrl(url) {
352
499
  return url.hostname === "export.arxiv.org" && url.pathname === "/api/query";
353
500
  }
354
501
  async function fetchArxivApiSummary(url, init, maxBytes) {
355
- const response = await fetch(url, init);
502
+ const response = await fetchWebUrl(url, init);
356
503
  if (response.status < 200 || response.status >= 300) return null;
357
504
  const read = await readResponseText(response, Math.min(24e4, maxBytes));
358
505
  const entries = Array.from(read.text.matchAll(/<entry\b[^>]*>([\s\S]*?)<\/entry>/gi)).map((match, index) => match[1] ? parseArxivEntry(match[1], `entry-${index + 1}`) : null).filter((entry) => entry !== null);
@@ -382,7 +529,8 @@ async function fetchArxivApiSummary(url, init, maxBytes) {
382
529
  }
383
530
  return {
384
531
  kind: "ok",
385
- output: truncate(lines.join("\n"), maxBytes),
532
+ output: truncate(`${UNTRUSTED_CONTENT_BANNER}
533
+ ${lines.join("\n")}`, maxBytes),
386
534
  details: {
387
535
  url: url.toString(),
388
536
  status: 200,
@@ -447,7 +595,7 @@ function importantRepoFiles(entries) {
447
595
  return selected;
448
596
  }
449
597
  async function fetchRepoTreeSummary(target, init, maxBytes) {
450
- const apiResponse = await fetch(target.apiUrl, init);
598
+ const apiResponse = await fetchWebUrl(target.apiUrl, init);
451
599
  if (apiResponse.status < 200 || apiResponse.status >= 300) return null;
452
600
  const apiRead = await readResponseText(apiResponse, Math.min(2e5, maxBytes));
453
601
  let entries;
@@ -472,7 +620,7 @@ async function fetchRepoTreeSummary(target, init, maxBytes) {
472
620
  for (const file of files) {
473
621
  if (remaining <= 2e3) break;
474
622
  const rawUrl = `${target.rawBaseUrl}/${file}`;
475
- const rawResponse = await fetch(rawUrl, init);
623
+ const rawResponse = await fetchWebUrl(rawUrl, init);
476
624
  if (rawResponse.status < 200 || rawResponse.status >= 300) continue;
477
625
  const rawRead = await readResponseText(rawResponse, Math.min(8e4, remaining));
478
626
  sections.push("", `--- ${file} ---`, rawRead.text.trim());
@@ -480,7 +628,8 @@ async function fetchRepoTreeSummary(target, init, maxBytes) {
480
628
  }
481
629
  return {
482
630
  kind: "ok",
483
- output: truncate(sections.join("\n"), maxBytes),
631
+ output: truncate(`${UNTRUSTED_CONTENT_BANNER}
632
+ ${sections.join("\n")}`, maxBytes),
484
633
  details: {
485
634
  url: target.apiUrl,
486
635
  status: 200,
@@ -503,7 +652,8 @@ function formatOutput(args) {
503
652
  if (args.extracted.description) lines.push(`Description: ${args.extracted.description}`);
504
653
  if (args.extracted.canonical) lines.push(`Canonical: ${args.extracted.canonical}`);
505
654
  lines.push("", "Content:", args.extracted.content || "[empty]");
506
- return truncate(lines.join("\n"), args.maxBytes);
655
+ return truncate(`${UNTRUSTED_CONTENT_BANNER}
656
+ ${lines.join("\n")}`, args.maxBytes);
507
657
  }
508
658
  var webFetchTool = {
509
659
  ...webFetchToolSurface,
@@ -556,10 +706,10 @@ var webFetchTool = {
556
706
  method,
557
707
  headers,
558
708
  signal: controller.signal,
559
- redirect: "follow"
709
+ redirect: "manual"
560
710
  };
561
711
  if (body !== void 0) init.body = body;
562
- if (method === "GET" && body === void 0 && format !== "raw") {
712
+ if (method === "GET" && body === void 0 && format !== "raw" && Object.keys(userHeaders).length === 0) {
563
713
  if (arxivApiUrl(parsed)) {
564
714
  const arxivApiSummary = await fetchArxivApiSummary(parsed, init, maxBytes);
565
715
  if (arxivApiSummary) return arxivApiSummary;
@@ -575,7 +725,7 @@ var webFetchTool = {
575
725
  if (repoSummary) return repoSummary;
576
726
  }
577
727
  }
578
- const response = await fetch(parsed, init);
728
+ const response = await fetchWebUrl(parsed, init);
579
729
  const contentType = headerValue(response, "content-type");
580
730
  const readLimit = response.status >= 200 && response.status < 300 ? maxBytes : Math.min(ERROR_PREVIEW_BYTES, maxBytes);
581
731
  const read = await readResponseText(response, readLimit);
@@ -584,6 +734,7 @@ var webFetchTool = {
584
734
  return {
585
735
  kind: "error",
586
736
  message: `web_fetch: HTTP ${response.status}: ${response.statusText}${preview ? `
737
+ ${UNTRUSTED_CONTENT_BANNER}
587
738
  Preview:
588
739
  ${truncate(preview, ERROR_PREVIEW_BYTES)}` : ""}`
589
740
  };
@@ -634,4 +785,4 @@ ${truncate(preview, ERROR_PREVIEW_BYTES)}` : ""}`
634
785
  export {
635
786
  webFetchTool
636
787
  };
637
- //# sourceMappingURL=web-fetch-MPARV2K7.js.map
788
+ //# sourceMappingURL=web-fetch-MQN4FH3X.js.map