@iowarp/clio-coder 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +116 -2
- package/CONTRIBUTING.md +39 -24
- package/NOTICE +16 -0
- package/README.md +343 -403
- package/dist/{acp-WNAYYF4F.js → acp-UVEVWSDL.js} +25 -24
- package/dist/{agents-3OKXHLOI.js → agents-VWY37DTK.js} +78 -77
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-VKNNMGPU.js → auth-PCV2XQDV.js} +38 -38
- package/dist/builtins-PD652MTK.js +22 -0
- package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
- package/dist/{chunk-NRO2BJRH.js → chunk-24T2YZ7A.js} +10686 -4464
- package/dist/{chunk-Y55JBDO5.js → chunk-2AKYFREM.js} +38 -23
- package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
- package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
- package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
- package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
- package/dist/{chunk-UXCU4E3T.js → chunk-3BJGMT2D.js} +35 -14
- package/dist/{chunk-5ICU3EUH.js → chunk-3HQVBIKD.js} +5 -5
- package/dist/{chunk-GWZNEVM2.js → chunk-3JLFK5MW.js} +9 -9
- package/dist/{chunk-XXYSBZIQ.js → chunk-3O2ZAUGQ.js} +4 -4
- package/dist/{chunk-GX5WYQO4.js → chunk-3QKXHCGS.js} +8 -8
- package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
- package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
- package/dist/{chunk-OEJSLEPW.js → chunk-3WBALRQH.js} +337 -337
- package/dist/{chunk-ELWDPP3Y.js → chunk-4DU2TVI4.js} +8 -8
- package/dist/{chunk-JSD46VO2.js → chunk-4U4TKZFR.js} +43 -36
- package/dist/{chunk-FEAXX7B6.js → chunk-4VMV6OS6.js} +4 -4
- package/dist/{chunk-2ZSONWVL.js → chunk-536HXRFE.js} +13 -13
- package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
- package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
- package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
- package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
- package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
- package/dist/{chunk-Q4WO54TA.js → chunk-5QRX7SLS.js} +11 -11
- package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
- package/dist/chunk-5ZSZEYJK.js +119 -0
- package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
- package/dist/{chunk-DT3LWJOB.js → chunk-6HAO6X5B.js} +24 -6
- package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
- package/dist/{chunk-K6T2ZAMZ.js → chunk-6OII3LOK.js} +6 -6
- package/dist/{chunk-36CT5VVL.js → chunk-6RYDAVQT.js} +138 -89
- package/dist/{chunk-I7XBWTYH.js → chunk-6VRRJT7L.js} +5 -5
- package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
- package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
- package/dist/{chunk-NAI6ZFCY.js → chunk-7JSSKXG2.js} +122 -11
- package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
- package/dist/chunk-7WUZEB2M.js +165 -0
- package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
- package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
- package/dist/{chunk-IXIY2H4R.js → chunk-ACCKVSHU.js} +5 -5
- package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
- package/dist/{chunk-JEIYHLOR.js → chunk-B3MOMLJ4.js} +12 -12
- package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
- package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
- package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
- package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
- package/dist/{chunk-23L32XTI.js → chunk-BLTEAUCB.js} +68 -39
- package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
- package/dist/{chunk-XULDXHTN.js → chunk-BT7HGDOX.js} +105 -53
- package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
- package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
- package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
- package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
- package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
- package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
- package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
- package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
- package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
- package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
- package/dist/{chunk-6UINWWS6.js → chunk-DXLUVUD4.js} +16 -16
- package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
- package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
- package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
- package/dist/{chunk-JT2RFCC5.js → chunk-E7RF4KBO.js} +5 -5
- package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
- package/dist/chunk-ECOMVOHP.js +139 -0
- package/dist/chunk-EFSEIZE6.js +56 -0
- package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
- package/dist/chunk-EM2WNQS2.js +93 -0
- package/dist/{chunk-57XXR6DR.js → chunk-F5Z7EWMN.js} +967 -246
- package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
- package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
- package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
- package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
- package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
- package/dist/{chunk-EXLD33WO.js → chunk-GLYBJ4RQ.js} +24 -9
- package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
- package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
- package/dist/{chunk-FFUPXJC4.js → chunk-HPTJF6DG.js} +32 -56
- package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
- package/dist/{chunk-CUSRQKPU.js → chunk-HZ2T2YED.js} +299 -89
- package/dist/{chunk-YD5GIKET.js → chunk-HZFBVU5X.js} +49 -580
- package/dist/{chunk-6QOTUPRG.js → chunk-I2K2NCZQ.js} +65 -17
- package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
- package/dist/{chunk-I2DWJ4GM.js → chunk-IGLVVNEG.js} +54 -42
- package/dist/{chunk-6Q3CYFD3.js → chunk-IKRWLEDA.js} +186 -35
- package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
- package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
- package/dist/{chunk-2DSOYNFC.js → chunk-JMPL7NUB.js} +7 -7
- package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
- package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
- package/dist/{chunk-54X7T7DK.js → chunk-KAFMW7WM.js} +72 -81
- package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
- package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
- package/dist/chunk-KPRLAMP4.js +32 -0
- package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
- package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
- package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
- package/dist/{chunk-JQLNNIKT.js → chunk-LIN2K3EL.js} +6 -6
- package/dist/{chunk-2STGEDFV.js → chunk-LK2FN5JY.js} +2 -2
- package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
- package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
- package/dist/chunk-LUL5Z66S.js +221 -0
- package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
- package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
- package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
- package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
- package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
- package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
- package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
- package/dist/{chunk-4WR7VSYB.js → chunk-N2OKBREN.js} +23 -9
- package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
- package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
- package/dist/{chunk-4M6Z5QVF.js → chunk-NNWJYUNO.js} +11 -11
- package/dist/chunk-NTK3WTHM.js +141 -0
- package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
- package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
- package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
- package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
- package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
- package/dist/{chunk-75W7L2E2.js → chunk-P5JMBPDJ.js} +1052 -171
- package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
- package/dist/{chunk-S6PYF2XF.js → chunk-P6M7RKMI.js} +4 -4
- package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
- package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
- package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
- package/dist/{chunk-DXKJURES.js → chunk-PZN2LQY6.js} +14 -11
- package/dist/{chunk-N56KALIC.js → chunk-Q7NNUHQV.js} +62 -35
- package/dist/{chunk-RQCKCSRL.js → chunk-QCOV5DFY.js} +22 -22
- package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
- package/dist/{chunk-NEKRRTYW.js → chunk-QJMRYTCX.js} +8 -8
- package/dist/{chunk-YNFKXPEC.js → chunk-QNWRHOMF.js} +35 -66
- package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
- package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
- package/dist/{chunk-72YIHOZQ.js → chunk-QXFBABFJ.js} +10 -10
- package/dist/chunk-R2CT5YDO.js +66 -0
- package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
- package/dist/{chunk-IGLP3ODT.js → chunk-RGZNQ5CT.js} +15 -15
- package/dist/chunk-SD7SHNDW.js +15 -0
- package/dist/chunk-SL2RDHKO.js +19 -0
- package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
- package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
- package/dist/{chunk-UEPWCCTY.js → chunk-SXQKNKRA.js} +12 -12
- package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
- package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
- package/dist/{chunk-5636DCO5.js → chunk-TJFDL26W.js} +59 -12
- package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
- package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
- package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
- package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
- package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
- package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
- package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
- package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
- package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
- package/dist/chunk-USZA7GWL.js +341 -0
- package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
- package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
- package/dist/{chunk-7UGL4MB5.js → chunk-VAHLPXPY.js} +10 -10
- package/dist/{chunk-25QBEXRS.js → chunk-VANN3GDP.js} +7 -26
- package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
- package/dist/{chunk-QUFRYSWI.js → chunk-VHMX7SXF.js} +129 -48
- package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
- package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
- package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
- package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
- package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
- package/dist/{chunk-USR47QNF.js → chunk-WKUYQBCG.js} +14 -14
- package/dist/{chunk-GHS5EBTQ.js → chunk-WNGF5AJX.js} +36 -22
- package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
- package/dist/{chunk-6OSVSQL5.js → chunk-WV6TDAPN.js} +41 -23
- package/dist/chunk-WXA2CFJO.js +23 -0
- package/dist/{chunk-2ASED4PZ.js → chunk-X3BI7HTV.js} +26 -26
- package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
- package/dist/{chunk-RZDWV63N.js → chunk-XWMSPJYN.js} +6 -6
- package/dist/chunk-YGDMBK7O.js +567 -0
- package/dist/{chunk-6PAZTBPA.js → chunk-YPRSNUTC.js} +15 -6
- package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
- package/dist/{chunk-LTIKRKFL.js → chunk-ZS43Y2FT.js} +4 -4
- package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
- package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
- package/dist/cli/index.js +44 -44
- package/dist/clio-QQCMTUZE.js +26 -0
- package/dist/{code-nav-IJR2DBPR.js → code-nav-GUPM6766.js} +48 -32
- package/dist/codewiki/build-worker.js +76 -29
- package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
- package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
- package/dist/{config-IUA6OYNS.js → config-IIM7YOD3.js} +211 -124
- package/dist/configure-4ZM5HWJX.js +73 -0
- package/dist/{context-BOYF5EJM.js → context-44BZLJ3J.js} +62 -31
- package/dist/{context-4MPR7WKB.js → context-AIDVQKMW.js} +126 -121
- package/dist/{context-2DKHWH2T.js → context-OL5P3HEP.js} +92 -62
- package/dist/context-clear-OQV76MYP.js +184 -0
- package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
- package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
- package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-ZUW3EGLS.js} +32 -31
- package/dist/detail-UXPWRANG.js +115 -0
- package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-P3ZW6G77.js} +192 -116
- package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
- package/dist/{doctor-DKICC2SN.js → doctor-JJVGPZWT.js} +59 -58
- package/dist/{eval-OQOQUDHK.js → eval-V2RTN3UH.js} +476 -170
- package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
- package/dist/evidence-35PYWGSO.js +225 -0
- package/dist/{evidence-4DQ25GUQ.js → evidence-CIGGKI6J.js} +111 -94
- package/dist/{evolve-GSS52E5J.js → evolve-33SM3NJP.js} +108 -91
- package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
- package/dist/{fleet-Q37YHHAQ.js → fleet-LFO7SIPC.js} +147 -146
- package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-RLK72GU3.js} +27 -26
- package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
- package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-JZIBCGMW.js} +39 -38
- package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-2L5YGGZJ.js} +108 -91
- package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
- package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
- package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-LIAVKDUU.js} +46 -42
- package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-JIK3OQZR.js} +106 -89
- package/dist/fleet-view-IWHYGQKK.js +118 -0
- package/dist/{init-PXEXQSBF.js → init-NJEDOTQW.js} +124 -123
- package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
- package/dist/{interop-ZG5T62U3.js → interop-RVCAYECG.js} +25 -25
- package/dist/inventory-74UL7UHU.js +118 -0
- package/dist/{library-B2W4N74O.js → library-CTKZA7K3.js} +45 -44
- package/dist/{memory-YCANYS5A.js → memory-I76I5VUH.js} +108 -93
- package/dist/{models-GERTU3YI.js → models-D4YDIQZQ.js} +64 -62
- package/dist/{monitor-CPNIUULB.js → monitor-NKVD55HX.js} +137 -107
- package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-I6OATVPK.js} +1715 -1687
- package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
- package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
- package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
- package/dist/preload-EJAWJEIO.js +116 -0
- package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
- package/dist/{reset-TNWTB5LU.js → reset-4XMQKDNZ.js} +22 -20
- package/dist/{resources-4PXNMD5G.js → resources-TVYVXK3Q.js} +41 -40
- package/dist/{run-D6XJ34CN.js → run-OWQNNSJU.js} +164 -157
- package/dist/{share-2NWMJJEE.js → share-NPZZMUXG.js} +43 -42
- package/dist/{skills-KR7WON5G.js → skills-OXFEAWMT.js} +47 -46
- package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-J5TCKSJA.js} +128 -107
- package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-7II4DM57.js} +41 -40
- package/dist/slash-commands-MDSDSWYF.js +92 -0
- package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
- package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
- package/dist/{targets-OMH2XCSN.js → targets-KILZEOCE.js} +161 -94
- package/dist/tasks-R6P6OV22.js +36 -0
- package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-LZCG2KN3.js} +12 -11
- package/dist/tools-6OCQ6SVB.js +28 -0
- package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
- package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
- package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
- package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
- package/dist/{upgrade-MS72RJEP.js → upgrade-D2OZH6IQ.js} +42 -41
- package/dist/{usage-NHG6MCJM.js → usage-PIASNUS4.js} +137 -105
- package/dist/{verifiers-7AUNVXDY.js → verifiers-LTHUY2PX.js} +28 -27
- package/dist/verify-HYF7KBVE.js +30 -0
- package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
- package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
- package/dist/wiki-generate-RK7JQ5NP.js +615 -0
- package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
- package/dist/worker/entry.js +108 -95
- package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
- package/docs/README.md +7 -6
- package/docs/architecture/acp.md +10 -0
- package/docs/architecture/architecture.md +5 -5
- package/docs/architecture/context-engine.md +45 -60
- package/docs/architecture/context-working-set.md +7 -9
- package/docs/architecture/dispatch-architecture-rationale.md +1 -1
- package/docs/architecture/evidence-and-memory.md +10 -0
- package/docs/architecture/pi-boundary.md +37 -7
- package/docs/architecture/prompt-envelope-and-tools.md +7 -7
- package/docs/architecture/session-lifecycle.md +4 -4
- package/docs/architecture/tui-design.md +45 -30
- package/docs/architecture/worker-dispatch-mechanics.md +4 -0
- package/docs/guide/commands-and-modes.md +75 -61
- package/docs/guide/configuration-and-targets.md +126 -26
- package/docs/guide/configuration-reference.md +22 -7
- package/docs/guide/environment-variables.md +6 -2
- package/docs/guide/fleet-dispatch.md +13 -6
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +79 -20
- package/docs/guide/proactive-memory.md +1 -1
- package/docs/guide/skills-marketplace.md +11 -3
- package/docs/guide/tool-usage.md +9 -2
- package/docs/process/development-pipeline.md +11 -11
- package/docs/process/documentation-coverage.md +1 -1
- package/docs/process/documentation-guide.md +2 -2
- package/docs/process/eval-runner.md +15 -0
- package/docs/process/evals-internal.md +1 -1
- package/docs/process/release-cut-checklist.md +24 -12
- package/evals/README.md +4 -0
- package/evals/behavioral-corpus-grader.mjs +147 -14
- package/evals/behavioral-model-negative-control.yaml +1 -0
- package/evals/behavioral-model.yaml +266 -1
- package/evals/fixtures/docs-retrieval.json +102 -0
- package/evals/fixtures/scalar-decision.json +17 -0
- package/evals/fixtures/scout-citation-pipeline.json +55 -0
- package/evals/fixtures/source-explanation.json +74 -0
- package/evals/fixtures/tool-arguments.json +18 -0
- package/evals/fixtures/tool-surface/read.txt +4 -0
- package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
- package/evals/no-edit-memory-grader.mjs +149 -0
- package/evals/scalar-decision-grader.py +41 -0
- package/evals/scalar-decision-machinery.ts +145 -0
- package/evals/source-explanation-grader.mjs +118 -0
- package/evals/tool-surface-grader.mjs +53 -0
- package/evals/tool-surface-model.yaml +274 -0
- package/package.json +14 -14
- package/skills/README.md +6 -6
- package/skills/registry.yaml +1 -1
- package/skills/skill-marketplace.json +1 -1
- package/src/cli/ask.ts +10 -10
- package/src/cli/bootstrap-generate.ts +6 -0
- package/src/cli/config-inspect.ts +24 -7
- package/src/cli/config-trust.ts +62 -0
- package/src/cli/config.ts +8 -0
- package/src/cli/configure-editor.ts +51 -0
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure-oauth.ts +1 -1
- package/src/cli/configure-onboarding.ts +232 -96
- package/src/cli/configure-prompts.ts +76 -0
- package/src/cli/configure-quick.ts +274 -0
- package/src/cli/configure-target.ts +14 -2
- package/src/cli/configure.ts +413 -174
- package/src/cli/context-map.ts +75 -14
- package/src/cli/context.ts +46 -17
- package/src/cli/eval.ts +17 -3
- package/src/cli/modes/print.ts +32 -4
- package/src/cli/oauth-manual-input.ts +1 -1
- package/src/cli/reset.ts +2 -0
- package/src/cli/run.ts +16 -14
- package/src/cli/select.ts +35 -4
- package/src/cli/skills-eval.ts +10 -8
- package/src/cli/steer-channel.ts +31 -18
- package/src/cli/targets.ts +83 -31
- package/src/cli/tasks.ts +10 -1
- package/src/cli/upgrade.ts +11 -8
- package/src/cli/usage.ts +24 -0
- package/src/cli/wiki-generate.ts +239 -96
- package/src/core/bash-exec.ts +43 -15
- package/src/core/bus-events.ts +15 -0
- package/src/core/config.ts +39 -15
- package/src/core/defaults.ts +38 -15
- package/src/{interactive → core}/external-editor.ts +4 -4
- package/src/core/file-references.ts +11 -1
- package/src/core/incomplete-installation.ts +3 -1
- package/src/core/settings-layers.ts +21 -5
- package/src/core/termination.ts +26 -9
- package/src/core/untrusted-content.ts +16 -0
- package/src/core/workspace-trust.ts +179 -0
- package/src/domains/agents/builtins/coder.md +4 -2
- package/src/domains/agents/builtins/context-bootstrap.md +3 -1
- package/src/domains/agents/builtins/documenter.md +7 -4
- package/src/domains/agents/builtins/researcher.md +1 -0
- package/src/domains/agents/builtins/scout.md +7 -1
- package/src/domains/agents/result-contract.ts +199 -26
- package/src/domains/config/classify.ts +1 -1
- package/src/domains/config/keybindings.ts +3 -31
- package/src/domains/context/bootstrap-prompt.ts +11 -9
- package/src/domains/context/bootstrap.ts +74 -39
- package/src/domains/context/clio-md.ts +88 -26
- package/src/domains/context/codewiki/build-operation.ts +121 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
- package/src/domains/context/codewiki/build-worker.ts +3 -35
- package/src/domains/context/codewiki/coordinator.ts +36 -6
- package/src/domains/context/codewiki/indexer.ts +59 -19
- package/src/domains/context/contract.ts +6 -2
- package/src/domains/context/extension.ts +72 -10
- package/src/domains/context/fingerprint.ts +39 -34
- package/src/domains/context/index.ts +7 -1
- package/src/domains/context/prompt-context.ts +55 -14
- package/src/domains/context/refresh.ts +9 -57
- package/src/domains/context/wiki/assemble.ts +14 -10
- package/src/domains/context/wiki/evidence.ts +209 -0
- package/src/domains/context/wiki/generate.ts +201 -67
- package/src/domains/context/wiki/meta.ts +10 -2
- package/src/domains/context/wiki/plan-store.ts +70 -14
- package/src/domains/context/wiki/plan.ts +71 -14
- package/src/domains/context/wiki/prompts.ts +42 -1
- package/src/domains/context/wiki/source-content.ts +106 -0
- package/src/domains/context/wiki/staleness.ts +33 -22
- package/src/domains/context/working-set/contract.ts +8 -2
- package/src/domains/context/working-set/engine.ts +17 -4
- package/src/domains/context/working-set/fold.ts +15 -2
- package/src/domains/context/working-set/marker.ts +2 -1
- package/src/domains/context/working-set/project.ts +18 -7
- package/src/domains/context/working-set/recall.ts +82 -56
- package/src/domains/dispatch/active-route-planner.ts +6 -3
- package/src/domains/dispatch/admission-queue.ts +19 -7
- package/src/domains/dispatch/admission.ts +3 -3
- package/src/domains/dispatch/budget-envelope.ts +47 -82
- package/src/domains/dispatch/capacity-lease.ts +57 -19
- package/src/domains/dispatch/contract.ts +10 -2
- package/src/domains/dispatch/event-pump.ts +28 -7
- package/src/domains/dispatch/execution-role.ts +49 -2
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +190 -105
- package/src/domains/dispatch/fleet-run.ts +20 -0
- package/src/domains/dispatch/gate-role-prompts.ts +4 -2
- package/src/domains/dispatch/parallel-writers.ts +34 -0
- package/src/domains/dispatch/reservation-store.ts +8 -34
- package/src/domains/dispatch/route-approval.ts +3 -3
- package/src/domains/dispatch/route-observer.ts +4 -2
- package/src/domains/dispatch/route-quality.ts +6 -1
- package/src/domains/dispatch/types.ts +4 -3
- package/src/domains/dispatch/worker-spawn.ts +58 -21
- package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
- package/src/domains/eval/compare/behavioral.ts +81 -14
- package/src/domains/eval/compare/compare.ts +15 -5
- package/src/domains/eval/compare/envelope.ts +12 -5
- package/src/domains/eval/metrics/context.ts +24 -1
- package/src/domains/eval/metrics/tracked.ts +4 -28
- package/src/domains/eval/reports/comparison.ts +9 -9
- package/src/domains/eval/runners/clio-run.ts +5 -1
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +1 -0
- package/src/domains/eval/suites/run.ts +189 -13
- package/src/domains/eval/verifiers/integrity.ts +39 -0
- package/src/domains/eval/verifiers/patch.ts +58 -2
- package/src/domains/eval/workspaces/temp-copy.ts +3 -0
- package/src/domains/evidence/build.ts +4 -2
- package/src/domains/interop/registry.ts +2 -2
- package/src/domains/middleware/hooks-io.ts +45 -26
- package/src/domains/middleware/hooks.ts +6 -0
- package/src/domains/middleware/injection-screen.ts +23 -0
- package/src/domains/middleware/rules.ts +5 -1
- package/src/domains/middleware/stalled-turn.ts +18 -3
- package/src/domains/middleware/task-board-reminder.ts +4 -2
- package/src/domains/middleware/task-nudge.ts +4 -1
- package/src/domains/mux/contract.ts +34 -1
- package/src/domains/mux/dock-controller.ts +8 -1
- package/src/domains/mux/index.ts +1 -0
- package/src/domains/mux/socket-client.ts +13 -3
- package/src/domains/observability/contract.ts +2 -2
- package/src/domains/observability/projection.ts +30 -9
- package/src/domains/prompts/compiler.ts +10 -2
- package/src/domains/prompts/contract.ts +7 -4
- package/src/domains/prompts/extension.ts +28 -64
- package/src/domains/prompts/fragments/identity/clio.md +23 -0
- package/src/domains/prompts/fragments/operating/contract.md +10 -0
- package/src/domains/prompts/fragments/operating/delegation.md +5 -0
- package/src/domains/prompts/fragments/wiki/page.md +28 -15
- package/src/domains/prompts/fragments/wiki/plan.md +4 -4
- package/src/domains/prompts/preload-prefix.ts +31 -0
- package/src/domains/prompts/preload.ts +135 -61
- package/src/domains/providers/auth/backend-file.ts +15 -11
- package/src/domains/providers/auth/storage.ts +3 -5
- package/src/domains/providers/catalog.ts +18 -3
- package/src/domains/providers/probe/fingerprint.ts +13 -6
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtime-resolution.ts +11 -9
- package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
- package/src/domains/resources/skills/promotion.ts +8 -1
- package/src/domains/safety/action-classifier.ts +9 -0
- package/src/domains/safety/autonomy.ts +10 -1
- package/src/domains/safety/contract.ts +5 -1
- package/src/domains/safety/default-path-policy.ts +11 -0
- package/src/domains/safety/extension.ts +11 -2
- package/src/domains/safety/policy-engine.ts +189 -32
- package/src/domains/safety/project-policy.ts +7 -2
- package/src/domains/safety/workspace-trust.ts +43 -0
- package/src/domains/session/compaction/compact.ts +384 -21
- package/src/domains/session/compaction/cut-point.ts +42 -5
- package/src/domains/session/compaction/tokens.ts +9 -1
- package/src/domains/session/decision-board.ts +43 -33
- package/src/domains/session/entries.ts +169 -4
- package/src/domains/session/prompt-manifest.ts +47 -8
- package/src/domains/session/task-board.ts +21 -3
- package/src/domains/user-tasks/handoff.ts +16 -0
- package/src/engine/acp/adapter.ts +44 -12
- package/src/engine/acp/server.ts +1 -0
- package/src/engine/acp/transport.ts +2 -1
- package/src/engine/acp/types.ts +6 -1
- package/src/engine/antigravity/subprocess-runtime.ts +20 -4
- package/src/engine/api-registry.ts +19 -2
- package/src/engine/apis/openai-completions.ts +13 -6
- package/src/engine/apis/output-budget.ts +26 -10
- package/src/engine/claude/sdk-runtime.ts +4 -3
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/external-subprocess.ts +14 -3
- package/src/engine/loop-guard.ts +19 -2
- package/src/engine/provider-diagnostics.ts +129 -0
- package/src/engine/provider-payload.ts +3 -1
- package/src/engine/worker-runtime.ts +13 -2
- package/src/engine/worker-tools.ts +5 -1
- package/src/entry/extension-reload.ts +1 -0
- package/src/entry/orchestrator.ts +53 -15
- package/src/interactive/application-controller.ts +1 -31
- package/src/interactive/chat-loop-messages.ts +12 -4
- package/src/interactive/chat-loop.ts +115 -45
- package/src/interactive/chat-panel.ts +163 -637
- package/src/interactive/chat-renderer.ts +73 -30
- package/src/interactive/context-recall-command.ts +2 -1
- package/src/interactive/dispatch-board.ts +18 -5
- package/src/interactive/editor-submit.ts +21 -31
- package/src/interactive/footer/dashboard.ts +8 -3
- package/src/interactive/footer/widgets.ts +50 -91
- package/src/interactive/interactive-application.ts +24 -44
- package/src/interactive/interactive-event-projection.ts +9 -45
- package/src/interactive/interactive-input-runtime.ts +3 -28
- package/src/interactive/interactive-presentation.ts +45 -16
- package/src/interactive/interactive-slash-runtime.ts +5 -40
- package/src/interactive/layout.ts +31 -5
- package/src/interactive/model-session-replay.ts +2 -2
- package/src/interactive/overlay-frame.ts +1 -0
- package/src/interactive/overlay-general-openers.ts +5 -1
- package/src/interactive/overlay-lifecycle.ts +1 -0
- package/src/interactive/overlay-session-lifecycle.ts +7 -1
- package/src/interactive/overlays/ask-user.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/overlays/settings.ts +9 -8
- package/src/interactive/renderers/preview.ts +16 -0
- package/src/interactive/renderers/tool-execution.ts +84 -161
- package/src/interactive/renderers/worker-entry.ts +74 -43
- package/src/interactive/slash-autocomplete.ts +1 -6
- package/src/interactive/slash-commands.ts +16 -46
- package/src/interactive/status/controller.ts +0 -5
- package/src/interactive/status/state-machine.ts +44 -26
- package/src/interactive/status/types.ts +3 -0
- package/src/interactive/status/verbs.ts +13 -12
- package/src/interactive/transcript-detail.ts +50 -112
- package/src/interactive/turn-context.ts +221 -53
- package/src/interactive/turn-middleware.ts +3 -1
- package/src/interactive/turn-persistence.ts +3 -0
- package/src/interactive/turn-runtime.ts +11 -2
- package/src/interactive/turn-state.ts +10 -9
- package/src/interactive/view/artifacts.ts +4 -0
- package/src/interactive/view/view-overlay.ts +44 -34
- package/src/interactive/watch-pane.ts +18 -4
- package/src/interactive/worker-stream.ts +7 -7
- package/src/tools/agent-tools.ts +6 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/builtin-tool-catalog.ts +9 -2
- package/src/tools/codewiki/code-nav.ts +4 -10
- package/src/tools/compete-judge-task.ts +71 -0
- package/src/tools/compete-worktrees.ts +34 -0
- package/src/tools/context/index.ts +32 -7
- package/src/tools/context/surface.ts +15 -4
- package/src/tools/decide.ts +1 -1
- package/src/tools/dispatch-admission.ts +12 -1
- package/src/tools/dispatch-arguments.ts +38 -1
- package/src/tools/dispatch-plan.ts +7 -7
- package/src/tools/dispatch-runner.ts +48 -32
- package/src/tools/dispatch-schema.ts +30 -23
- package/src/tools/dispatch-scout-admission.ts +10 -44
- package/src/tools/dispatch-scout.ts +2 -3
- package/src/tools/find.ts +13 -4
- package/src/tools/grep.ts +13 -1
- package/src/tools/ls.ts +7 -1
- package/src/tools/monitor.ts +26 -11
- package/src/tools/network-policy.ts +11 -24
- package/src/tools/observation.ts +39 -2
- package/src/tools/presentation.ts +1 -1
- package/src/tools/read.ts +112 -15
- package/src/tools/registry.ts +55 -18
- package/src/tools/result-shaping.ts +110 -2
- package/src/tools/tasks.ts +33 -7
- package/src/tools/verify/frontend.ts +67 -30
- package/src/tools/verify/numeric.ts +10 -5
- package/src/tools/web-fetch-network.ts +179 -0
- package/src/tools/web-fetch-surface.ts +2 -1
- package/src/tools/web-fetch.ts +15 -13
- package/src/tools/worker-evidence.ts +27 -0
- package/src/worker/spec-contract.ts +12 -8
- package/dist/builtins-WGALA46I.js +0 -22
- package/dist/chunk-2WZ546HR.js +0 -792
- package/dist/chunk-5PSMVOLM.js +0 -56
- package/dist/chunk-EL24TAU4.js +0 -1560
- package/dist/chunk-IZXGRF7P.js +0 -4048
- package/dist/chunk-JVCV3ICN.js +0 -47
- package/dist/chunk-MNJGS2IN.js +0 -33
- package/dist/chunk-O5CVSAG5.js +0 -122
- package/dist/chunk-ODGTEFFI.js +0 -50
- package/dist/chunk-OQE5J4C6.js +0 -73
- package/dist/chunk-UUVG37B4.js +0 -244
- package/dist/chunk-V6HJFQZE.js +0 -228
- package/dist/clio-QLICPCF5.js +0 -25
- package/dist/configure-VEPX4NMX.js +0 -55
- package/dist/context-clear-S4ZJCQUX.js +0 -182
- package/dist/detail-A7JAVSIG.js +0 -98
- package/dist/evidence-4F5USFKH.js +0 -208
- package/dist/fleet-view-MN2VG4MR.js +0 -101
- package/dist/inventory-C26CFDRR.js +0 -101
- package/dist/preload-P6DGH2PZ.js +0 -13
- package/dist/slash-commands-ZXPJD64J.js +0 -92
- package/dist/tasks-IPAGMEIX.js +0 -36
- package/dist/tools-EFFEAIDP.js +0 -28
- package/dist/verify-FWYGPKMR.js +0 -29
- package/dist/wiki-generate-743CIGJW.js +0 -476
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { lookup } from "node:dns/promises";
|
|
2
|
+
import { request as httpRequest } from "node:http";
|
|
3
|
+
import { request as httpsRequest } from "node:https";
|
|
4
|
+
import { BlockList, isIP } from "node:net";
|
|
5
|
+
import { Readable } from "node:stream";
|
|
6
|
+
import { createBrotliDecompress, createGunzip, createInflate } from "node:zlib";
|
|
7
|
+
import { WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV } from "./network-policy.js";
|
|
8
|
+
|
|
9
|
+
const blocked = new BlockList();
|
|
10
|
+
for (const [address, prefix] of [
|
|
11
|
+
["0.0.0.0", 8],
|
|
12
|
+
["10.0.0.0", 8],
|
|
13
|
+
["100.64.0.0", 10],
|
|
14
|
+
["127.0.0.0", 8],
|
|
15
|
+
["169.254.0.0", 16],
|
|
16
|
+
["172.16.0.0", 12],
|
|
17
|
+
["192.168.0.0", 16],
|
|
18
|
+
["192.0.0.0", 24],
|
|
19
|
+
["192.0.2.0", 24],
|
|
20
|
+
["198.18.0.0", 15],
|
|
21
|
+
["198.51.100.0", 24],
|
|
22
|
+
["203.0.113.0", 24],
|
|
23
|
+
["224.0.0.0", 4],
|
|
24
|
+
["240.0.0.0", 4],
|
|
25
|
+
] as const)
|
|
26
|
+
blocked.addSubnet(address, prefix, "ipv4");
|
|
27
|
+
// Permit only global unicast IPv6. Block transition mechanisms that can embed
|
|
28
|
+
// an IPv4 destination and local/documentation allocations within that range.
|
|
29
|
+
for (const [address, prefix] of [
|
|
30
|
+
["2001::", 32],
|
|
31
|
+
["2001:db8::", 32],
|
|
32
|
+
["2002::", 16],
|
|
33
|
+
] as const)
|
|
34
|
+
blocked.addSubnet(address, prefix, "ipv6");
|
|
35
|
+
const globalV6 = new BlockList();
|
|
36
|
+
globalV6.addSubnet("2000::", 3, "ipv6");
|
|
37
|
+
export function isPublicWebAddress(address: string): boolean {
|
|
38
|
+
const family = isIP(address);
|
|
39
|
+
if (family === 4) return !blocked.check(address, "ipv4");
|
|
40
|
+
return family === 6 && globalV6.check(address, "ipv6") && !blocked.check(address, "ipv6");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export class WebFetchNetworkError extends Error {
|
|
44
|
+
constructor(message: string) {
|
|
45
|
+
super(`WEB_FETCH_PRIVATE_NETWORK: ${message}`);
|
|
46
|
+
this.name = "WebFetchNetworkError";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface Address {
|
|
51
|
+
address: string;
|
|
52
|
+
family: number;
|
|
53
|
+
}
|
|
54
|
+
export interface WebFetchNetworkDependencies {
|
|
55
|
+
resolve?: (hostname: string) => Promise<Address[]>;
|
|
56
|
+
request?: (url: URL, init: RequestInit, address: Address) => Promise<Response>;
|
|
57
|
+
allowPrivateNetwork?: boolean;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Pin the checked address in the socket lookup while retaining the URL host
|
|
61
|
+
* for Host, TLS SNI and certificate verification. No second DNS resolution,
|
|
62
|
+
* proxy, pooled socket, or automatic redirect can bypass admission. */
|
|
63
|
+
async function requestPinnedWebUrl(url: URL, init: RequestInit, address: Address): Promise<Response> {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
const headers = new Headers(init.headers);
|
|
66
|
+
headers.delete("host");
|
|
67
|
+
const request = (url.protocol === "https:" ? httpsRequest : httpRequest)(
|
|
68
|
+
url,
|
|
69
|
+
{
|
|
70
|
+
method: init.method ?? "GET",
|
|
71
|
+
headers: Object.fromEntries(headers),
|
|
72
|
+
agent: false,
|
|
73
|
+
...(init.signal ? { signal: init.signal } : {}),
|
|
74
|
+
lookup: (_hostname, options, callback) => {
|
|
75
|
+
if (options.all) callback(null, [address]);
|
|
76
|
+
else callback(null, address.address, address.family);
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
(response) => {
|
|
80
|
+
const responseHeaders = new Headers();
|
|
81
|
+
for (const [key, value] of Object.entries(response.headers)) {
|
|
82
|
+
if (value !== undefined) responseHeaders.set(key, Array.isArray(value) ? value.join(", ") : value);
|
|
83
|
+
}
|
|
84
|
+
const status = response.statusCode ?? 500;
|
|
85
|
+
let stream: Readable = response;
|
|
86
|
+
const encoding = responseHeaders.get("content-encoding");
|
|
87
|
+
const decoder =
|
|
88
|
+
encoding === "gzip"
|
|
89
|
+
? createGunzip()
|
|
90
|
+
: encoding === "br"
|
|
91
|
+
? createBrotliDecompress()
|
|
92
|
+
: encoding === "deflate"
|
|
93
|
+
? createInflate()
|
|
94
|
+
: null;
|
|
95
|
+
if (decoder) {
|
|
96
|
+
response.on("error", (error) => decoder.destroy(error));
|
|
97
|
+
decoder.on("close", () => response.destroy());
|
|
98
|
+
stream = response.pipe(decoder);
|
|
99
|
+
responseHeaders.delete("content-encoding");
|
|
100
|
+
responseHeaders.delete("content-length");
|
|
101
|
+
}
|
|
102
|
+
const noBody = init.method === "HEAD" || [204, 205, 304].includes(status);
|
|
103
|
+
if (noBody) response.resume();
|
|
104
|
+
const result = new Response(noBody ? null : (Readable.toWeb(stream) as ReadableStream<Uint8Array>), {
|
|
105
|
+
status,
|
|
106
|
+
statusText: response.statusMessage ?? "",
|
|
107
|
+
headers: responseHeaders,
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(result, "url", { value: url.toString() });
|
|
110
|
+
resolve(result);
|
|
111
|
+
},
|
|
112
|
+
);
|
|
113
|
+
request.on("error", reject);
|
|
114
|
+
request.end(typeof init.body === "string" ? init.body : undefined);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** DNS lookup itself is not cancellable; stop awaiting it on turn cancellation. */
|
|
119
|
+
async function abortableLookup(
|
|
120
|
+
pending: Promise<Address[]>,
|
|
121
|
+
signal: AbortSignal | null | undefined,
|
|
122
|
+
): Promise<Address[]> {
|
|
123
|
+
if (!signal) return pending;
|
|
124
|
+
signal.throwIfAborted();
|
|
125
|
+
return new Promise((resolve, reject) => {
|
|
126
|
+
const onAbort = (): void => reject(signal.reason);
|
|
127
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
128
|
+
pending.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Every hop, including helper URLs, resolves and validates before connecting. */
|
|
133
|
+
export async function fetchWebUrl(
|
|
134
|
+
input: string | URL,
|
|
135
|
+
initial: RequestInit = {},
|
|
136
|
+
dependencies: WebFetchNetworkDependencies = {},
|
|
137
|
+
): Promise<Response> {
|
|
138
|
+
let url = new URL(input);
|
|
139
|
+
const init = { ...initial, headers: new Headers(initial.headers) };
|
|
140
|
+
const allowPrivate = dependencies.allowPrivateNetwork ?? process.env[WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV] === "1";
|
|
141
|
+
for (let hop = 0; hop <= 10; hop++) {
|
|
142
|
+
init.signal?.throwIfAborted();
|
|
143
|
+
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password)
|
|
144
|
+
throw new Error("web_fetch: unsupported URL scheme or embedded credentials");
|
|
145
|
+
const hostname = url.hostname.replace(/^\[|\]$/g, "");
|
|
146
|
+
const addresses = isIP(hostname)
|
|
147
|
+
? [{ address: hostname, family: isIP(hostname) }]
|
|
148
|
+
: await abortableLookup((dependencies.resolve ?? ((host) => lookup(host, { all: true })))(hostname), init.signal);
|
|
149
|
+
init.signal?.throwIfAborted();
|
|
150
|
+
const address = addresses[0];
|
|
151
|
+
if (address === undefined) throw new Error("web_fetch: DNS returned no addresses");
|
|
152
|
+
if (!allowPrivate && addresses.some((address) => !isPublicWebAddress(address.address)))
|
|
153
|
+
throw new WebFetchNetworkError(
|
|
154
|
+
`destination ${url.hostname} is not public; operator opt-in ${WEB_FETCH_ALLOW_PRIVATE_NETWORK_ENV}=1 is required`,
|
|
155
|
+
);
|
|
156
|
+
const response = await (dependencies.request ?? requestPinnedWebUrl)(url, init, address);
|
|
157
|
+
const location = response.headers.get("location");
|
|
158
|
+
if (![301, 302, 303, 307, 308].includes(response.status) || location === null) return response;
|
|
159
|
+
await response.body?.cancel();
|
|
160
|
+
if (hop === 10) throw new Error("web_fetch: too many redirects");
|
|
161
|
+
const next = new URL(location, url);
|
|
162
|
+
if (next.origin !== url.origin) {
|
|
163
|
+
// Custom headers can carry credentials too. A cross-origin redirect gets
|
|
164
|
+
// no caller headers; the target still receives the ordinary Host header.
|
|
165
|
+
init.headers = new Headers();
|
|
166
|
+
}
|
|
167
|
+
if (
|
|
168
|
+
(response.status === 303 && init.method !== "HEAD") ||
|
|
169
|
+
([301, 302].includes(response.status) && init.method === "POST")
|
|
170
|
+
) {
|
|
171
|
+
init.method = "GET";
|
|
172
|
+
delete init.body;
|
|
173
|
+
init.headers.delete("content-type");
|
|
174
|
+
init.headers.delete("content-length");
|
|
175
|
+
}
|
|
176
|
+
url = next;
|
|
177
|
+
}
|
|
178
|
+
throw new Error("web_fetch: too many redirects");
|
|
179
|
+
}
|
|
@@ -4,7 +4,8 @@ import type { ToolSurface } from "./lazy-tool.js";
|
|
|
4
4
|
|
|
5
5
|
export const webFetchToolSurface = {
|
|
6
6
|
name: ToolNames.WebFetch,
|
|
7
|
-
description:
|
|
7
|
+
description:
|
|
8
|
+
"Fetch an http(s) URL; HTML is cleaned and converted to Markdown. Non-2xx responses are errors. Non-GET/HEAD methods or any body require outward-action approval; private networks require operator opt-in.",
|
|
8
9
|
parameters: Type.Object({
|
|
9
10
|
url: Type.String({ description: "Fully-qualified http(s) URL." }),
|
|
10
11
|
method: Type.Optional(Type.String({ description: "HTTP method (default GET)." })),
|
package/src/tools/web-fetch.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { UNTRUSTED_CONTENT_BANNER } from "../core/untrusted-content.js";
|
|
1
2
|
import type { ToolResult, ToolSpec } from "./registry.js";
|
|
2
3
|
import { truncateUtf8 } from "./truncate-utf8.js";
|
|
4
|
+
import { fetchWebUrl } from "./web-fetch-network.js";
|
|
3
5
|
import { webFetchToolSurface } from "./web-fetch-surface.js";
|
|
4
6
|
|
|
5
7
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
@@ -374,7 +376,7 @@ async function fetchArxivPaperSummary(
|
|
|
374
376
|
maxBytes: number,
|
|
375
377
|
): Promise<ToolResult | null> {
|
|
376
378
|
const metadataUrl = `https://export.arxiv.org/api/query?id_list=${encodeURIComponent(paperId)}`;
|
|
377
|
-
const response = await
|
|
379
|
+
const response = await fetchWebUrl(metadataUrl, init);
|
|
378
380
|
if (response.status < 200 || response.status >= 300) return null;
|
|
379
381
|
const read = await readResponseText(response, Math.min(120_000, maxBytes));
|
|
380
382
|
const entry = /<entry\b[^>]*>([\s\S]*?)<\/entry>/i.exec(read.text)?.[1];
|
|
@@ -384,7 +386,7 @@ async function fetchArxivPaperSummary(
|
|
|
384
386
|
let alphaxivRead: ReadResult | null = null;
|
|
385
387
|
const alphaUrl = `https://alphaxiv.org/overview/${encodeURIComponent(paperId)}.md`;
|
|
386
388
|
try {
|
|
387
|
-
const alpha = await
|
|
389
|
+
const alpha = await fetchWebUrl(alphaUrl, init);
|
|
388
390
|
if (alpha.status >= 200 && alpha.status < 300) {
|
|
389
391
|
alphaxivRead = await readResponseText(alpha, Math.min(80_000, Math.max(0, maxBytes - read.bytesRead)));
|
|
390
392
|
if (alphaxivRead.text.trim().length > 0) paper.alphaxivOverview = alphaxivRead.text.trim();
|
|
@@ -416,7 +418,7 @@ async function fetchArxivPaperSummary(
|
|
|
416
418
|
const bytesRead = read.bytesRead + (alphaxivRead?.bytesRead ?? 0);
|
|
417
419
|
return {
|
|
418
420
|
kind: "ok",
|
|
419
|
-
output: truncate(lines.join("\n")
|
|
421
|
+
output: truncate(`${UNTRUSTED_CONTENT_BANNER}\n${lines.join("\n")}`, maxBytes),
|
|
420
422
|
details: {
|
|
421
423
|
url: `https://arxiv.org/abs/${paper.id}`,
|
|
422
424
|
status: 200,
|
|
@@ -437,7 +439,7 @@ async function fetchArxivApiSummary(
|
|
|
437
439
|
init: Parameters<typeof fetch>[1],
|
|
438
440
|
maxBytes: number,
|
|
439
441
|
): Promise<ToolResult | null> {
|
|
440
|
-
const response = await
|
|
442
|
+
const response = await fetchWebUrl(url, init);
|
|
441
443
|
if (response.status < 200 || response.status >= 300) return null;
|
|
442
444
|
const read = await readResponseText(response, Math.min(240_000, maxBytes));
|
|
443
445
|
const entries = Array.from(read.text.matchAll(/<entry\b[^>]*>([\s\S]*?)<\/entry>/gi))
|
|
@@ -469,7 +471,7 @@ async function fetchArxivApiSummary(
|
|
|
469
471
|
}
|
|
470
472
|
return {
|
|
471
473
|
kind: "ok",
|
|
472
|
-
output: truncate(lines.join("\n")
|
|
474
|
+
output: truncate(`${UNTRUSTED_CONTENT_BANNER}\n${lines.join("\n")}`, maxBytes),
|
|
473
475
|
details: {
|
|
474
476
|
url: url.toString(),
|
|
475
477
|
status: 200,
|
|
@@ -553,7 +555,7 @@ async function fetchRepoTreeSummary(
|
|
|
553
555
|
init: Parameters<typeof fetch>[1],
|
|
554
556
|
maxBytes: number,
|
|
555
557
|
): Promise<ToolResult | null> {
|
|
556
|
-
const apiResponse = await
|
|
558
|
+
const apiResponse = await fetchWebUrl(target.apiUrl, init);
|
|
557
559
|
if (apiResponse.status < 200 || apiResponse.status >= 300) return null;
|
|
558
560
|
const apiRead = await readResponseText(apiResponse, Math.min(200_000, maxBytes));
|
|
559
561
|
let entries: unknown[];
|
|
@@ -581,7 +583,7 @@ async function fetchRepoTreeSummary(
|
|
|
581
583
|
for (const file of files) {
|
|
582
584
|
if (remaining <= 2000) break;
|
|
583
585
|
const rawUrl = `${target.rawBaseUrl}/${file}`;
|
|
584
|
-
const rawResponse = await
|
|
586
|
+
const rawResponse = await fetchWebUrl(rawUrl, init);
|
|
585
587
|
if (rawResponse.status < 200 || rawResponse.status >= 300) continue;
|
|
586
588
|
const rawRead = await readResponseText(rawResponse, Math.min(80_000, remaining));
|
|
587
589
|
sections.push("", `--- ${file} ---`, rawRead.text.trim());
|
|
@@ -589,7 +591,7 @@ async function fetchRepoTreeSummary(
|
|
|
589
591
|
}
|
|
590
592
|
return {
|
|
591
593
|
kind: "ok",
|
|
592
|
-
output: truncate(sections.join("\n")
|
|
594
|
+
output: truncate(`${UNTRUSTED_CONTENT_BANNER}\n${sections.join("\n")}`, maxBytes),
|
|
593
595
|
details: {
|
|
594
596
|
url: target.apiUrl,
|
|
595
597
|
status: 200,
|
|
@@ -621,7 +623,7 @@ function formatOutput(args: {
|
|
|
621
623
|
if (args.extracted.description) lines.push(`Description: ${args.extracted.description}`);
|
|
622
624
|
if (args.extracted.canonical) lines.push(`Canonical: ${args.extracted.canonical}`);
|
|
623
625
|
lines.push("", "Content:", args.extracted.content || "[empty]");
|
|
624
|
-
return truncate(lines.join("\n")
|
|
626
|
+
return truncate(`${UNTRUSTED_CONTENT_BANNER}\n${lines.join("\n")}`, args.maxBytes);
|
|
625
627
|
}
|
|
626
628
|
|
|
627
629
|
export const webFetchTool: ToolSpec = {
|
|
@@ -683,10 +685,10 @@ export const webFetchTool: ToolSpec = {
|
|
|
683
685
|
method,
|
|
684
686
|
headers,
|
|
685
687
|
signal: controller.signal,
|
|
686
|
-
redirect: "
|
|
688
|
+
redirect: "manual",
|
|
687
689
|
};
|
|
688
690
|
if (body !== undefined) init.body = body;
|
|
689
|
-
if (method === "GET" && body === undefined && format !== "raw") {
|
|
691
|
+
if (method === "GET" && body === undefined && format !== "raw" && Object.keys(userHeaders).length === 0) {
|
|
690
692
|
if (arxivApiUrl(parsed)) {
|
|
691
693
|
const arxivApiSummary = await fetchArxivApiSummary(parsed, init, maxBytes);
|
|
692
694
|
if (arxivApiSummary) return arxivApiSummary;
|
|
@@ -702,7 +704,7 @@ export const webFetchTool: ToolSpec = {
|
|
|
702
704
|
if (repoSummary) return repoSummary;
|
|
703
705
|
}
|
|
704
706
|
}
|
|
705
|
-
const response = await
|
|
707
|
+
const response = await fetchWebUrl(parsed, init);
|
|
706
708
|
const contentType = headerValue(response, "content-type");
|
|
707
709
|
const readLimit =
|
|
708
710
|
response.status >= 200 && response.status < 300 ? maxBytes : Math.min(ERROR_PREVIEW_BYTES, maxBytes);
|
|
@@ -711,7 +713,7 @@ export const webFetchTool: ToolSpec = {
|
|
|
711
713
|
const preview = extractWebFetchContent(read.text, contentType, response.url || parsed.toString(), "auto").content;
|
|
712
714
|
return {
|
|
713
715
|
kind: "error",
|
|
714
|
-
message: `web_fetch: HTTP ${response.status}: ${response.statusText}${preview ? `\nPreview:\n${truncate(preview, ERROR_PREVIEW_BYTES)}` : ""}`,
|
|
716
|
+
message: `web_fetch: HTTP ${response.status}: ${response.statusText}${preview ? `\n${UNTRUSTED_CONTENT_BANNER}\nPreview:\n${truncate(preview, ERROR_PREVIEW_BYTES)}` : ""}`,
|
|
715
717
|
};
|
|
716
718
|
}
|
|
717
719
|
if (isProbablyBinary(contentType, read.text)) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { mentionsWorkerToolCallCap } from "../core/guardrails.js";
|
|
2
|
+
import { RESULT_SUMMARY_MAX_BYTES_CEILING, resultContractAuthorship } from "../domains/agents/result-contract.js";
|
|
2
3
|
import {
|
|
3
4
|
formatBudgetPolicy,
|
|
4
5
|
formatBudgetReasons,
|
|
@@ -158,6 +159,7 @@ export function receiptEvidenceLabels(
|
|
|
158
159
|
return [
|
|
159
160
|
...canonical,
|
|
160
161
|
`receipt_integrity=verified/v${receipt.integrity.version}/${receipt.integrity.algorithm}`,
|
|
162
|
+
...documenterDeliveryLabels(receipt),
|
|
161
163
|
`evidence_verification=${verification.state}/${verification.basis}`,
|
|
162
164
|
`host_verification=${receipt.hostVerification?.status ?? "not_requested"}`,
|
|
163
165
|
...(responseModelIdObservation ? [responseModelIdObservation] : []),
|
|
@@ -170,6 +172,31 @@ export function receiptEvidenceLabels(
|
|
|
170
172
|
];
|
|
171
173
|
}
|
|
172
174
|
|
|
175
|
+
/** Delivery guidance uses only an authenticated, terminal mutation report. */
|
|
176
|
+
function documenterDeliveryLabels(receipt: RunReceipt): string[] {
|
|
177
|
+
if (
|
|
178
|
+
receipt.agentId !== "documenter" ||
|
|
179
|
+
!receipt.quality.resultContract?.sourceId.startsWith("agent-result-contract:mutation-report:")
|
|
180
|
+
)
|
|
181
|
+
return [];
|
|
182
|
+
const output = receipt.output;
|
|
183
|
+
// Read at the ceiling: the receipt already sealed conformance under the
|
|
184
|
+
// run's own allowance, which this reader does not know; any conforming
|
|
185
|
+
// summary is within the ceiling, and a reader that re-applied the default
|
|
186
|
+
// would report a delivered 20 KB summary as absent.
|
|
187
|
+
const summary =
|
|
188
|
+
output?.state === "final"
|
|
189
|
+
? resultContractAuthorship(
|
|
190
|
+
{ kind: "mutation-report", maxSummaryBytes: RESULT_SUMMARY_MAX_BYTES_CEILING },
|
|
191
|
+
output.text,
|
|
192
|
+
).summary
|
|
193
|
+
: null;
|
|
194
|
+
return [
|
|
195
|
+
`terminal Documenter result: ${summary === null ? "no inline summary is available" : "the inline deliverable or limitation is in output.text JSON field summary"}. Execution success and contract conformance alone do not prove the requested explanation was delivered.`,
|
|
196
|
+
"Read the summary or the task-authorized artifact once and check it against the requested deliverable. If it is absent, incomplete, or states a limitation, report the specific limitation and the run ID; do not repeatedly read this unchanged terminal receipt or poll it for new output. Keep any separately authorized recovery and its outcome distinct from the original run.",
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
|
|
173
200
|
/**
|
|
174
201
|
* The compact projection first, then the canonical axis line, both from the
|
|
175
202
|
* shared projection so the dispatch and monitor text can never spell a state
|
|
@@ -47,20 +47,22 @@ export interface WorkerProtectedArtifactState {
|
|
|
47
47
|
artifacts: ReadonlyArray<ProtectedArtifact>;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/** Concrete dispatch-time
|
|
50
|
+
/** Concrete dispatch-time planning estimates, or a legacy enforced budget. */
|
|
51
51
|
export interface WorkerBudgetPhase {
|
|
52
52
|
toolCalls: number;
|
|
53
53
|
readReserve: number;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
export interface WorkerBudget {
|
|
57
|
-
/**
|
|
57
|
+
/** New dispatches are advisory; omitted mode preserves legacy enforcement. */
|
|
58
|
+
mode?: "advisory" | "enforced";
|
|
59
|
+
/** Estimated tool calls; a phase boundary only in enforced mode. */
|
|
58
60
|
toolCalls: number;
|
|
59
|
-
/**
|
|
61
|
+
/** Suggested read allowance; reserved calls only in enforced mode. */
|
|
60
62
|
readReserve: number;
|
|
61
|
-
/**
|
|
63
|
+
/** Legacy enforced-mode phase behavior; advisory mode never forces synthesis. */
|
|
62
64
|
synthesis: boolean;
|
|
63
|
-
/**
|
|
65
|
+
/** Legacy enforced-mode attempt ceiling; advisory-mode planning baseline. */
|
|
64
66
|
hardCap: number;
|
|
65
67
|
/** Optional ceiling that a bounded result-contract revision may activate. */
|
|
66
68
|
revision?: WorkerBudgetPhase;
|
|
@@ -429,7 +431,7 @@ function validateAllowedTools(value: unknown): void {
|
|
|
429
431
|
|
|
430
432
|
function validateWorkerBudget(value: unknown): void {
|
|
431
433
|
const budget = readRecord(value, "WorkerSpec.budget");
|
|
432
|
-
const expected = ["hardCap", "readReserve", "revision", "synthesis", "toolCalls"];
|
|
434
|
+
const expected = ["mode", "hardCap", "readReserve", "revision", "synthesis", "toolCalls"];
|
|
433
435
|
const actual = Object.keys(budget).sort();
|
|
434
436
|
if (
|
|
435
437
|
actual.some((key) => !expected.includes(key)) ||
|
|
@@ -437,6 +439,8 @@ function validateWorkerBudget(value: unknown): void {
|
|
|
437
439
|
) {
|
|
438
440
|
throw new Error(`WorkerSpec.budget may contain only: ${expected.join(", ")}`);
|
|
439
441
|
}
|
|
442
|
+
if (budget.mode !== undefined && budget.mode !== "advisory" && budget.mode !== "enforced")
|
|
443
|
+
throw new Error("WorkerSpec.budget.mode must be advisory or enforced");
|
|
440
444
|
for (const required of ["hardCap", "readReserve", "synthesis", "toolCalls"] as const) {
|
|
441
445
|
if (!Object.hasOwn(budget, required)) throw new Error(`WorkerSpec.budget.${required} is required`);
|
|
442
446
|
}
|
|
@@ -448,7 +452,7 @@ function validateWorkerBudget(value: unknown): void {
|
|
|
448
452
|
}
|
|
449
453
|
if ((budget.toolCalls as number) <= 0) throw new Error("WorkerSpec.budget.toolCalls must be greater than zero");
|
|
450
454
|
if ((budget.hardCap as number) <= 0) throw new Error("WorkerSpec.budget.hardCap must be greater than zero");
|
|
451
|
-
if ((budget.toolCalls as number) > (budget.hardCap as number)) {
|
|
455
|
+
if (budget.mode !== "advisory" && (budget.toolCalls as number) > (budget.hardCap as number)) {
|
|
452
456
|
throw new Error("WorkerSpec.budget.toolCalls must not exceed WorkerSpec.budget.hardCap");
|
|
453
457
|
}
|
|
454
458
|
if ((budget.readReserve as number) < 0 || (budget.readReserve as number) >= (budget.toolCalls as number)) {
|
|
@@ -475,7 +479,7 @@ function validateWorkerBudget(value: unknown): void {
|
|
|
475
479
|
) {
|
|
476
480
|
throw new Error("WorkerSpec.budget.revision must increase toolCalls or readReserve");
|
|
477
481
|
}
|
|
478
|
-
if ((revision.toolCalls as number) > (budget.hardCap as number)) {
|
|
482
|
+
if (budget.mode !== "advisory" && (revision.toolCalls as number) > (budget.hardCap as number)) {
|
|
479
483
|
throw new Error("WorkerSpec.budget.revision.toolCalls must not exceed WorkerSpec.budget.hardCap");
|
|
480
484
|
}
|
|
481
485
|
if ((revision.readReserve as number) < 0 || (revision.readReserve as number) >= (revision.toolCalls as number)) {
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
BUILTIN_RUNTIMES,
|
|
4
|
-
registerBuiltinRuntimes
|
|
5
|
-
} from "./chunk-6OSVSQL5.js";
|
|
6
|
-
import "./chunk-UXCU4E3T.js";
|
|
7
|
-
import "./chunk-LL4KHSZI.js";
|
|
8
|
-
import "./chunk-S66XZJOF.js";
|
|
9
|
-
import "./chunk-TOIVGRUX.js";
|
|
10
|
-
import "./chunk-U6TMQNSI.js";
|
|
11
|
-
import "./chunk-EBY63B7G.js";
|
|
12
|
-
import "./chunk-6EJMN2Y3.js";
|
|
13
|
-
import "./chunk-5OIVVPHF.js";
|
|
14
|
-
import "./chunk-YPC6ZR5L.js";
|
|
15
|
-
import "./chunk-YXLYO42X.js";
|
|
16
|
-
import "./chunk-BYP5D4HI.js";
|
|
17
|
-
import "./chunk-3R73A4XB.js";
|
|
18
|
-
export {
|
|
19
|
-
BUILTIN_RUNTIMES,
|
|
20
|
-
registerBuiltinRuntimes
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=builtins-WGALA46I.js.map
|