@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
package/src/cli/skills-eval.ts
CHANGED
|
@@ -272,10 +272,10 @@ export async function runSkillsEvalCommand(nameOrPath: string, options: SkillsEv
|
|
|
272
272
|
return anyUnmeasured || evidenceErrors.length > 0 ? 3 : 0;
|
|
273
273
|
}
|
|
274
274
|
|
|
275
|
-
export type NetworkPolicyLabel = "
|
|
275
|
+
export type NetworkPolicyLabel = "retrieve-disabled" | "allowed";
|
|
276
276
|
|
|
277
277
|
function networkPolicyLabel(allowNetwork: boolean): NetworkPolicyLabel {
|
|
278
|
-
return allowNetwork ? "allowed" : "
|
|
278
|
+
return allowNetwork ? "allowed" : "retrieve-disabled";
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
/**
|
|
@@ -287,7 +287,7 @@ function networkPolicyLabel(allowNetwork: boolean): NetworkPolicyLabel {
|
|
|
287
287
|
function describeArmPolicy(allowNetwork: boolean): string {
|
|
288
288
|
const network = allowNetwork
|
|
289
289
|
? "network allowed (--allow-network), so arm runs keep the web tools"
|
|
290
|
-
: "
|
|
290
|
+
: "retrieval tools disabled in every arm run; bash networking requires OS isolation (pass --allow-network to keep web tools)";
|
|
291
291
|
return `policy: autonomy ${ARM_AUTONOMY} for the baseline and treatment arms in per-run disposable workspaces; ${network}`;
|
|
292
292
|
}
|
|
293
293
|
|
|
@@ -295,7 +295,7 @@ function describeArmPolicy(allowNetwork: boolean): string {
|
|
|
295
295
|
function describeArmPolicyOutcome(allowNetwork: boolean): string {
|
|
296
296
|
const network = allowNetwork
|
|
297
297
|
? "network: allowed (--allow-network); arm runs kept the web tools"
|
|
298
|
-
: "
|
|
298
|
+
: "retrieval: disabled; bash networking was not constrained";
|
|
299
299
|
return `policy: the baseline and treatment arms ran at autonomy ${ARM_AUTONOMY}; ${network}`;
|
|
300
300
|
}
|
|
301
301
|
|
|
@@ -353,17 +353,19 @@ function unmeasuredBullets(scenario: SkillEvalScenario, reason: string): ScoredB
|
|
|
353
353
|
|
|
354
354
|
/**
|
|
355
355
|
* The environment each arm's child `clio-coder run` inherits. Absent
|
|
356
|
-
* `--allow-network` the
|
|
356
|
+
* `--allow-network` the retrieval registration switch is set, which strips the RETRIEVE
|
|
357
357
|
* plane from every registry the child and its descendants build. With the flag
|
|
358
358
|
* the variable is removed rather than left alone, so an ambient setting in the
|
|
359
359
|
* operator's shell cannot make `--allow-network` a claim the run does not keep.
|
|
360
360
|
*
|
|
361
361
|
* @internal Exported for contract tests.
|
|
362
362
|
*/
|
|
363
|
-
function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
|
|
363
|
+
export function evalChildEnv(allowNetwork: boolean, env: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
|
|
364
364
|
const childEnv: NodeJS.ProcessEnv = { ...env };
|
|
365
|
-
if (allowNetwork)
|
|
366
|
-
|
|
365
|
+
if (allowNetwork) {
|
|
366
|
+
Reflect.deleteProperty(childEnv, NO_NETWORK_TOOLS_ENV);
|
|
367
|
+
Reflect.deleteProperty(childEnv, "CLIO_CODER_NO_NETWORK_TOOLS");
|
|
368
|
+
} else childEnv[NO_NETWORK_TOOLS_ENV] = "1";
|
|
367
369
|
return childEnv;
|
|
368
370
|
}
|
|
369
371
|
|
package/src/cli/steer-channel.ts
CHANGED
|
@@ -1,18 +1,44 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
+
import { Socket } from "node:net";
|
|
2
3
|
import * as readline from "node:readline";
|
|
3
4
|
|
|
4
5
|
export function setupSteerChannel(filePath: string, onLine: (line: string) => void): () => void {
|
|
5
6
|
let closed = false;
|
|
6
7
|
let watcher: fs.FSWatcher | null = null;
|
|
7
|
-
let stream:
|
|
8
|
+
let stream: Socket | null = null;
|
|
8
9
|
let rl: readline.Interface | null = null;
|
|
10
|
+
const cleanup = () => {
|
|
11
|
+
if (closed) return;
|
|
12
|
+
closed = true;
|
|
13
|
+
watcher?.close();
|
|
14
|
+
rl?.close();
|
|
15
|
+
stream?.destroy();
|
|
16
|
+
};
|
|
17
|
+
const reportError = (err: unknown) => {
|
|
18
|
+
if (closed) return;
|
|
19
|
+
process.stderr.write(
|
|
20
|
+
`clio-coder run: failed to setup steer channel: ${err instanceof Error ? err.message : String(err)}\n`,
|
|
21
|
+
);
|
|
22
|
+
cleanup();
|
|
23
|
+
};
|
|
9
24
|
|
|
10
25
|
try {
|
|
11
26
|
const stats = fs.statSync(filePath);
|
|
12
27
|
if (stats.isFIFO()) {
|
|
13
|
-
//
|
|
14
|
-
|
|
28
|
+
// A blocking fs read cannot be cancelled while a FIFO writer stays
|
|
29
|
+
// open. Socket uses readiness-driven pipe reads that destroy() closes.
|
|
30
|
+
// Keep read-only access and the existing first-writer-EOF behavior.
|
|
31
|
+
const fd = fs.openSync(filePath, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
|
|
32
|
+
try {
|
|
33
|
+
stream = new Socket({ fd, readable: true, writable: false });
|
|
34
|
+
} catch (err) {
|
|
35
|
+
// Ownership transfers to Socket only after successful construction.
|
|
36
|
+
fs.closeSync(fd);
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
stream.on("error", reportError);
|
|
15
40
|
rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
|
|
41
|
+
rl.on("error", reportError);
|
|
16
42
|
rl.on("line", (line) => {
|
|
17
43
|
if (closed) return;
|
|
18
44
|
const trimmed = line.trim();
|
|
@@ -66,21 +92,8 @@ export function setupSteerChannel(filePath: string, onLine: (line: string) => vo
|
|
|
66
92
|
});
|
|
67
93
|
}
|
|
68
94
|
} catch (err) {
|
|
69
|
-
|
|
70
|
-
`clio-coder run: failed to setup steer channel: ${err instanceof Error ? err.message : String(err)}\n`,
|
|
71
|
-
);
|
|
95
|
+
reportError(err);
|
|
72
96
|
}
|
|
73
97
|
|
|
74
|
-
return
|
|
75
|
-
closed = true;
|
|
76
|
-
if (watcher) {
|
|
77
|
-
watcher.close();
|
|
78
|
-
}
|
|
79
|
-
if (rl) {
|
|
80
|
-
rl.close();
|
|
81
|
-
}
|
|
82
|
-
if (stream) {
|
|
83
|
-
stream.destroy();
|
|
84
|
-
}
|
|
85
|
-
};
|
|
98
|
+
return cleanup;
|
|
86
99
|
}
|
package/src/cli/targets.ts
CHANGED
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
readSettings,
|
|
6
6
|
removeFleetProfileFromSettings,
|
|
7
7
|
setFleetProfileInSettings,
|
|
8
|
+
type TargetSelectionRole,
|
|
9
|
+
type UseTargetOptions,
|
|
8
10
|
updateSettings,
|
|
9
11
|
useTargetInSettings,
|
|
10
12
|
} from "../core/config.js";
|
|
@@ -24,6 +26,7 @@ import { registerBuiltinRuntimes } from "../domains/providers/runtimes/builtins.
|
|
|
24
26
|
import type { CapabilityFlags } from "../domains/providers/types/capability-flags.js";
|
|
25
27
|
import type { RuntimeTier } from "../domains/providers/types/runtime-descriptor.js";
|
|
26
28
|
import { runConfigureCommand, runTargetRemove, runTargetRename } from "./configure.js";
|
|
29
|
+
import { resolveSupportedWireModels } from "./configure-target.js";
|
|
27
30
|
import { printError, printOk } from "./shared.js";
|
|
28
31
|
import { column, terminalColumns, truncate, wrapPlain } from "./text-layout.js";
|
|
29
32
|
|
|
@@ -259,7 +262,7 @@ function parseUseArgs(args: ReadonlyArray<string>): UseArgs | null {
|
|
|
259
262
|
return parsed;
|
|
260
263
|
}
|
|
261
264
|
|
|
262
|
-
function runUse(args: ReadonlyArray<string>): number {
|
|
265
|
+
async function runUse(args: ReadonlyArray<string>): Promise<number> {
|
|
263
266
|
if (wantsHelp(args)) return printUsage(USE_USAGE);
|
|
264
267
|
let parsed: UseArgs | null;
|
|
265
268
|
try {
|
|
@@ -281,42 +284,91 @@ function runUse(args: ReadonlyArray<string>): number {
|
|
|
281
284
|
}
|
|
282
285
|
const registry = getRuntimeRegistry();
|
|
283
286
|
if (registry.list().length === 0) registerBuiltinRuntimes(registry);
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
)
|
|
287
|
+
const options: UseTargetOptions = {
|
|
288
|
+
...(parsed.model !== undefined ? { model: parsed.model } : {}),
|
|
289
|
+
...(parsed.orchestratorModel !== undefined ? { orchestratorModel: parsed.orchestratorModel } : {}),
|
|
290
|
+
...(parsed.workerModel !== undefined ? { workerModel: parsed.workerModel } : {}),
|
|
291
|
+
...(parsed.workerTarget !== undefined ? { workerTargetId: parsed.workerTarget } : {}),
|
|
292
|
+
...(parsed.backgroundModel !== undefined ? { backgroundModel: parsed.backgroundModel } : {}),
|
|
293
|
+
};
|
|
294
|
+
const candidate = structuredClone(settings);
|
|
295
|
+
const selection = useTargetInSettings(candidate, target.id, options);
|
|
296
|
+
if (!selection) {
|
|
297
|
+
printError(`no target with id ${parsed.workerTarget}`);
|
|
289
298
|
return 1;
|
|
290
299
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
300
|
+
const labels: Record<TargetSelectionRole, string> = {
|
|
301
|
+
chat: "chat",
|
|
302
|
+
fleet: "fleet dispatch",
|
|
303
|
+
memory: "background memory",
|
|
304
|
+
};
|
|
305
|
+
const routes = { chat: candidate.chat, fleet: candidate.fleet.default, memory: candidate.context.memory };
|
|
306
|
+
const inventories = new Map<string, Awaited<ReturnType<typeof resolveSupportedWireModels>>>();
|
|
307
|
+
const checkedTargets = new Map<string, string>();
|
|
308
|
+
for (const role of selection.roles) {
|
|
309
|
+
const route = routes[role];
|
|
310
|
+
const selectedTarget = candidate.targets.find((entry) => entry.id === route.target);
|
|
311
|
+
if (!selectedTarget) throw new Error("selected target disappeared");
|
|
312
|
+
const runtime = registry.get(selectedTarget.runtime);
|
|
313
|
+
if (!runtime || !(role === "fleet" ? isDispatchEligibleRuntime(runtime) : isOrchestratorEligibleRuntime(runtime))) {
|
|
314
|
+
printError(
|
|
315
|
+
`cannot use target '${selectedTarget.id}' for ${labels[role]}: runtime '${selectedTarget.runtime}' is not eligible`,
|
|
316
|
+
);
|
|
317
|
+
return 1;
|
|
318
|
+
}
|
|
319
|
+
checkedTargets.set(selectedTarget.id, JSON.stringify(selectedTarget));
|
|
320
|
+
if (route.model === null) continue;
|
|
321
|
+
let inventory = inventories.get(selectedTarget.id);
|
|
322
|
+
if (!inventory) {
|
|
323
|
+
inventory = await resolveSupportedWireModels(runtime, selectedTarget, selectedTarget);
|
|
324
|
+
inventories.set(selectedTarget.id, inventory);
|
|
325
|
+
}
|
|
326
|
+
if (inventory.models.length > 0 && !inventory.models.includes(route.model)) {
|
|
327
|
+
printError(
|
|
328
|
+
`target '${selectedTarget.id}' does not list model '${route.model}' for ${labels[role]} (${inventory.source} inventory). Use an exact listed model id: ${inventory.models.slice(0, 10).join(", ")}`,
|
|
329
|
+
);
|
|
330
|
+
return 1;
|
|
331
|
+
}
|
|
332
|
+
if (inventory.models.length === 0) {
|
|
333
|
+
// Keep offline selection possible, but never imply that an unknown id was verified.
|
|
334
|
+
process.stderr.write(
|
|
335
|
+
`warning: could not verify model '${route.model}' for ${labels[role]}: target '${selectedTarget.id}' returned no model list; saving the id as written\n`,
|
|
336
|
+
);
|
|
337
|
+
} else if (inventory.source === "cache" || inventory.source === "legacy") {
|
|
338
|
+
process.stderr.write(
|
|
339
|
+
`warning: using ${inventory.source} model inventory for target '${selectedTarget.id}'; live availability was not verified\n`,
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Re-read under the settings lock. A changed endpoint/default invalidates the
|
|
344
|
+
// checked inventory; unrelated concurrent role edits are preserved by the scoped mutation.
|
|
345
|
+
let changedRoles: TargetSelectionRole[] = [];
|
|
346
|
+
try {
|
|
347
|
+
updateSettings((fresh) => {
|
|
348
|
+
for (const [id, descriptor] of checkedTargets) {
|
|
349
|
+
if (JSON.stringify(fresh.targets.find((entry) => entry.id === id)) !== descriptor) {
|
|
350
|
+
throw new Error(`target '${id}' changed while checking models; retry targets use`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
const applied = useTargetInSettings(fresh, target.id, options);
|
|
354
|
+
if (!applied) throw new Error("target changed while checking models; retry targets use");
|
|
355
|
+
changedRoles = applied.changedRoles;
|
|
356
|
+
});
|
|
357
|
+
} catch (error) {
|
|
358
|
+
printError(error instanceof Error ? error.message : String(error));
|
|
295
359
|
return 1;
|
|
296
360
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
361
|
+
const changedByTarget = new Map<string, string[]>();
|
|
362
|
+
for (const role of changedRoles) {
|
|
363
|
+
const id = routes[role].target as string;
|
|
364
|
+
const names = changedByTarget.get(id) ?? [];
|
|
365
|
+
names.push(labels[role]);
|
|
366
|
+
changedByTarget.set(id, names);
|
|
302
367
|
}
|
|
303
|
-
const backgroundModel = parsed.backgroundModel;
|
|
304
|
-
// Locked read-modify-write so a concurrent session's field-level
|
|
305
|
-
// write-through (Shift+Tab, Alt+L, …) cannot be lost between our read
|
|
306
|
-
// above and this save.
|
|
307
|
-
updateSettings((fresh) => {
|
|
308
|
-
useTargetInSettings(fresh, target.id, {
|
|
309
|
-
...(parsed.model !== undefined ? { model: parsed.model } : {}),
|
|
310
|
-
...(parsed.orchestratorModel !== undefined ? { orchestratorModel: parsed.orchestratorModel } : {}),
|
|
311
|
-
...(parsed.workerModel !== undefined ? { workerModel: parsed.workerModel } : {}),
|
|
312
|
-
workerTargetId: workerTarget.id,
|
|
313
|
-
...(backgroundModel !== undefined ? { backgroundModel } : {}),
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
const dispatchWhere = workerTarget === target ? "" : ` and ${workerTarget.id} for fleet dispatch`;
|
|
317
|
-
const chatWhere = workerTarget === target ? "for chat and fleet dispatch" : "for chat";
|
|
318
368
|
printOk(
|
|
319
|
-
|
|
369
|
+
changedRoles.length === 0
|
|
370
|
+
? "no role settings changed"
|
|
371
|
+
: `using ${[...changedByTarget].map(([id, names]) => `target ${id} for ${names.join(" and ")}`).join("; ")}`,
|
|
320
372
|
);
|
|
321
373
|
return 0;
|
|
322
374
|
}
|
package/src/cli/tasks.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { normalizeIntentExpectedOutputs, normalizeIntentVerification } from "../domains/dispatch/intent.js";
|
|
2
2
|
import type { UserTaskAcceptance } from "../domains/user-tasks/acceptance.js";
|
|
3
|
+
import { formatUserTaskHandoff } from "../domains/user-tasks/handoff.js";
|
|
3
4
|
import { createUserTasksStore } from "../domains/user-tasks/store.js";
|
|
4
5
|
import { packageDeclaredCheck } from "../tools/verify/catalog.js";
|
|
5
6
|
import { discoverDeclaredChecksAtRoot, discoverDeclaredProjectEntriesAtRoot } from "../tools/verify/scripts.js";
|
|
@@ -74,7 +75,15 @@ export function runTasksCommand(args: string[]): number {
|
|
|
74
75
|
} else if (action === "list" && rest.length === 0) {
|
|
75
76
|
console.log(JSON.stringify(store.snapshot(), null, 2));
|
|
76
77
|
} else if ((action === "hand" || action === "done" || action === "drop") && rest.length === 1) {
|
|
77
|
-
|
|
78
|
+
const task = store[action](rest[0] ?? "");
|
|
79
|
+
console.log(JSON.stringify(task, null, 2));
|
|
80
|
+
if (action === "hand") {
|
|
81
|
+
console.error(
|
|
82
|
+
"CLI hand records the inbox state only; it does not start a session or submit the interactive /tasks hand turn. " +
|
|
83
|
+
"Pass this pickup prompt to clio-coder run in the same project:\n" +
|
|
84
|
+
formatUserTaskHandoff(task),
|
|
85
|
+
);
|
|
86
|
+
}
|
|
78
87
|
} else throw new Error(HELP);
|
|
79
88
|
return 0;
|
|
80
89
|
} catch (error) {
|
package/src/cli/upgrade.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { initializeClioHome } from "../core/init.js";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveClioDirs } from "../core/xdg.js";
|
|
4
4
|
import { detectInstallMethod } from "../domains/lifecycle/install-method.js";
|
|
5
5
|
import { listMigrations, readMigrationManifest, runPending } from "../domains/lifecycle/migrations/index.js";
|
|
6
6
|
import { readStateInfo } from "../domains/lifecycle/state.js";
|
|
@@ -21,11 +21,12 @@ Flags:
|
|
|
21
21
|
--dry-run print planned actions without changing anything
|
|
22
22
|
--channel=<chan> npm dist-tag to install (latest|beta|dev). npm installs only.
|
|
23
23
|
--skip-migrations skip migrations after the install step
|
|
24
|
+
--post-install apply local checks after a package-manager update; skip reinstall
|
|
24
25
|
--json emit machine-readable JSON output
|
|
25
26
|
--help, -h show this message
|
|
26
27
|
`;
|
|
27
28
|
|
|
28
|
-
const SOURCE_UPGRADE_STEPS = ["git pull", "
|
|
29
|
+
const SOURCE_UPGRADE_STEPS = ["git pull", "pnpm run install:local", "hash -r"] as const;
|
|
29
30
|
/** One wording for the source-update advice. Three paths print it; they used to disagree. */
|
|
30
31
|
const SOURCE_UPGRADE_LEAD = "To update the checkout itself, run:";
|
|
31
32
|
|
|
@@ -85,7 +86,7 @@ function parseUpgradeArgs(argv: ReadonlyArray<string>): UpgradeOptions {
|
|
|
85
86
|
* the installed version is the newest one.
|
|
86
87
|
*/
|
|
87
88
|
type RegistryLookup =
|
|
88
|
-
| { asked: false; reason: "source checkout" | "network checks are disabled" }
|
|
89
|
+
| { asked: false; reason: "source checkout" | "network checks are disabled" | "post-install checks" }
|
|
89
90
|
| { asked: true; version: string | null };
|
|
90
91
|
|
|
91
92
|
function testSeam(name: string): string | undefined {
|
|
@@ -184,13 +185,15 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
184
185
|
presenter.header("Upgrade", "upgrade");
|
|
185
186
|
|
|
186
187
|
const before = getVersionInfo().clio;
|
|
187
|
-
const stateDir =
|
|
188
|
+
const stateDir = resolveClioDirs().state;
|
|
188
189
|
const method = detectInstallMethod();
|
|
189
|
-
const methodLabel = method === "source" ? "source checkout" : "npm global";
|
|
190
|
+
const methodLabel = method === "source" ? "source checkout" : opts.postInstall ? "package install" : "npm global";
|
|
190
191
|
presenter.setMethod(methodLabel);
|
|
191
192
|
|
|
192
193
|
const noNetwork = Boolean(testSeam("CLIO_CODER_TEST_UPGRADE_NO_NETWORK"));
|
|
193
|
-
const lookup =
|
|
194
|
+
const lookup: RegistryLookup = opts.postInstall
|
|
195
|
+
? { asked: false, reason: "post-install checks" }
|
|
196
|
+
: await lookUpAvailableVersion(opts.channel, method, noNetwork);
|
|
194
197
|
const availableVersion = lookup.asked ? lookup.version : null;
|
|
195
198
|
|
|
196
199
|
presenter.step(`Installation method: ${methodLabel}`);
|
|
@@ -201,7 +204,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
201
204
|
if (availableVersion !== null) presenter.step(`Available version: ${availableVersion}`);
|
|
202
205
|
else if (!lookup.asked) presenter.step(`Available version: not checked (${lookup.reason})`);
|
|
203
206
|
else presenter.step("Available version: unknown (the registry could not be reached)");
|
|
204
|
-
if (method === "npm") presenter.step(`Channel: ${opts.channel}`);
|
|
207
|
+
if (method === "npm" && !opts.postInstall) presenter.step(`Channel: ${opts.channel}`);
|
|
205
208
|
presenter.step(`State dir: ${shortenPath(stateDir)}`);
|
|
206
209
|
|
|
207
210
|
const migrations = listMigrations();
|
|
@@ -236,7 +239,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
236
239
|
|
|
237
240
|
if (opts.dryRun) {
|
|
238
241
|
if (method === "source") presenter.commandAdvice(SOURCE_UPGRADE_LEAD, SOURCE_UPGRADE_STEPS.join("\n"));
|
|
239
|
-
else presenter.note(`Would run: npm install -g @iowarp/clio-coder@${opts.channel}`);
|
|
242
|
+
else if (!opts.postInstall) presenter.note(`Would run: npm install -g @iowarp/clio-coder@${opts.channel}`);
|
|
240
243
|
if (opts.skipMigrations) presenter.note("Would skip migrations (--skip-migrations).");
|
|
241
244
|
else if (pendingMigrationIds.length === 0) presenter.note("No pending migrations.");
|
|
242
245
|
else {
|
package/src/cli/usage.ts
CHANGED
|
@@ -354,6 +354,9 @@ export async function runUsageCommand(argv: ReadonlyArray<string>): Promise<numb
|
|
|
354
354
|
diagnostics.malformedAuditRows = auditRows.errors.length;
|
|
355
355
|
const auditInWindow = auditRows.rows.filter((row) => row.ts !== null && inWindow(row.ts, windowStart, now));
|
|
356
356
|
const auditToolCalls = auditInWindow.filter((row) => row.auditKind === "tool_call");
|
|
357
|
+
const permissions = summarizePermissionDecisions(
|
|
358
|
+
auditInWindow.filter((row) => row.auditKind === "permission").map((row) => row.row),
|
|
359
|
+
);
|
|
357
360
|
const auditBlocked = auditToolCalls.filter((row) => {
|
|
358
361
|
const decision = typeof row.row.decision === "string" ? row.row.decision : "";
|
|
359
362
|
return decision === "blocked" || decision === "denied";
|
|
@@ -564,6 +567,7 @@ export async function runUsageCommand(argv: ReadonlyArray<string>): Promise<numb
|
|
|
564
567
|
emit({ kind: "fact", fact: "unverified-successes", value: accountability.unverifiedSuccesses });
|
|
565
568
|
emit({ kind: "fact", fact: "ungrounded-claims", value: accountability.ungroundedClaims });
|
|
566
569
|
emit({ kind: "fact", fact: "audit-tool-calls", value: auditToolCalls.length, blocked: auditBlocked.length });
|
|
570
|
+
emit({ kind: "fact", fact: "permission-approval", ...permissions });
|
|
567
571
|
if (usageMeasurable) {
|
|
568
572
|
// The origin split is emitted only when something out of turn was
|
|
569
573
|
// recorded, so a report over an archive with no `/btw`, `/handoff`, or
|
|
@@ -656,6 +660,9 @@ export async function runUsageCommand(argv: ReadonlyArray<string>): Promise<numb
|
|
|
656
660
|
} else {
|
|
657
661
|
out(` receipt store missing at ${presence.receiptsPath}`);
|
|
658
662
|
}
|
|
663
|
+
out(
|
|
664
|
+
` permission decisions: ${permissions.requested} requested, ${permissions.granted} granted, ${permissions.denied} denied, ${permissions.expired} expired; approval rate ${permissions.approvalRate === null ? "n/a" : `${(permissions.approvalRate * 100).toFixed(1)}%`}`,
|
|
665
|
+
);
|
|
659
666
|
out(` audited tool calls in window: ${auditToolCalls.length} (${auditBlocked.length} blocked/denied)`);
|
|
660
667
|
if (usageMeasurable) {
|
|
661
668
|
out(
|
|
@@ -1128,3 +1135,20 @@ function numberOr0(value: unknown): number {
|
|
|
1128
1135
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
1129
1136
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1130
1137
|
}
|
|
1138
|
+
|
|
1139
|
+
/** Event-window approval rate. Resolutions can belong to requests outside the window. */
|
|
1140
|
+
export function summarizePermissionDecisions(rows: ReadonlyArray<Record<string, unknown>>): {
|
|
1141
|
+
requested: number;
|
|
1142
|
+
granted: number;
|
|
1143
|
+
denied: number;
|
|
1144
|
+
expired: number;
|
|
1145
|
+
approvalRate: number | null;
|
|
1146
|
+
} {
|
|
1147
|
+
const counts = { requested: 0, granted: 0, denied: 0, expired: 0 };
|
|
1148
|
+
for (const row of rows) {
|
|
1149
|
+
const status = row.status;
|
|
1150
|
+
if (status === "requested" || status === "granted" || status === "denied" || status === "expired")
|
|
1151
|
+
counts[status] += 1;
|
|
1152
|
+
}
|
|
1153
|
+
return { ...counts, approvalRate: counts.requested === 0 ? null : counts.granted / counts.requested };
|
|
1154
|
+
}
|