@iowarp/clio-coder 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +153 -0
- package/CONTRIBUTING.md +25 -15
- package/README.md +340 -27
- package/dist/{acp-H2NGRPWO.js → acp-H3CU2HBQ.js} +25 -25
- package/dist/{agents-TL5LLUQP.js → agents-IXQQZ7BD.js} +77 -75
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-E5SW4HMS.js → auth-R7KYF7N3.js} +38 -39
- package/dist/builtins-CRFDQUVP.js +22 -0
- package/dist/{chunk-7DRAWPTZ.js → chunk-22PQ4TX4.js} +4 -4
- 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-5TSRNF4G.js → chunk-3T4DXWP6.js} +170 -12
- package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
- package/dist/{chunk-XIVNBFZS.js → chunk-4SVIVOMC.js} +208 -39
- package/dist/{chunk-NMJXSHBJ.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-5DDOTTG4.js +402 -0
- package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
- package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
- package/dist/{chunk-PUVDKJ2Y.js → chunk-5VTJP36Q.js} +5 -7
- package/dist/{chunk-JGRC33J2.js → chunk-5ZMXGW7P.js} +90 -9
- package/dist/chunk-5ZSZEYJK.js +119 -0
- package/dist/chunk-633EXGZA.js +44 -0
- package/dist/{chunk-IWT4SF4R.js → chunk-6CDNRHWH.js} +361 -89
- package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
- package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
- package/dist/{chunk-INY6HTFL.js → chunk-6SYEGZI3.js} +12 -12
- package/dist/{chunk-SKHCAU7K.js → chunk-6YA46L5A.js} +5 -4
- package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
- package/dist/{chunk-L47TF46W.js → chunk-7HBHHVCK.js} +24 -3
- package/dist/{chunk-DWUOQKRU.js → chunk-7TKWWPD7.js} +5 -4
- package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
- package/dist/chunk-7WUZEB2M.js +165 -0
- package/dist/{chunk-6PTFB5VS.js → chunk-7YJWEF2L.js} +59 -28
- package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
- package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
- package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
- package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
- package/dist/chunk-B6UM3OZC.js +15 -0
- package/dist/{chunk-MCEPRMZW.js → chunk-BBV5TKE6.js} +5 -5
- package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
- package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
- package/dist/{chunk-42FMPA75.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-WCXUNS7U.js → chunk-DIMRLNIC.js} +35 -66
- package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
- package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
- package/dist/{chunk-2UG5F4C5.js → chunk-DRD2A54W.js} +116 -52
- package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
- package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
- package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
- package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
- package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
- 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-IJNZMHLA.js → chunk-EHCPSZJF.js} +4 -4
- package/dist/{chunk-K6BSR66V.js → chunk-EHOSNVVM.js} +6 -2
- package/dist/{chunk-RRNP2ANY.js → chunk-EQEJJ53P.js} +10 -10
- package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
- package/dist/{chunk-JKKCYP3C.js → chunk-F34AR6O3.js} +21 -15
- package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
- package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
- package/dist/{chunk-MWUZBSAQ.js → chunk-FSTIBAGM.js} +358 -63
- 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-JSC3U7TI.js → chunk-GJ24ODAX.js} +5 -5
- package/dist/{chunk-B4VEBZKF.js → chunk-GNQRWTMY.js} +139 -52
- package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
- package/dist/chunk-GXCCHKN6.js +59 -0
- package/dist/{chunk-V2ANDPVT.js → chunk-HGSLRG33.js} +170 -8
- package/dist/{chunk-LLDJM5XK.js → chunk-HHVJNVUJ.js} +6 -6
- package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
- package/dist/{chunk-VA5FNYMT.js → chunk-HR3HPQ76.js} +42 -5
- package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
- package/dist/{chunk-OML5D5V5.js → chunk-I7VLWRK2.js} +8 -8
- package/dist/{chunk-VW6DOEDG.js → chunk-ICO4TQ2F.js} +16 -5
- package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
- package/dist/{chunk-WBKFA554.js → chunk-ILJ7DWGE.js} +9 -9
- package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
- package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
- package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
- package/dist/{chunk-EKCHAPYA.js → chunk-K2HL3GBL.js} +4 -4
- package/dist/{chunk-N2Z7HLVY.js → chunk-K6RDB7IA.js} +28 -28
- package/dist/{chunk-TM6LQDI3.js → chunk-KDWLXVMN.js} +85 -335
- package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
- package/dist/{chunk-RSJ25QSL.js → chunk-KF6GFW6O.js} +217 -50
- 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-IUE3Y34X.js → chunk-KTFSFCVN.js} +20 -9
- package/dist/{chunk-7E7I3WLS.js → chunk-KYKNBD4Y.js} +36 -34
- package/dist/chunk-L4N3DWNW.js +539 -0
- package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
- package/dist/{chunk-JIEGK6UF.js → chunk-LTR5QCLS.js} +51 -7
- package/dist/chunk-LUL5Z66S.js +221 -0
- package/dist/chunk-LVFANMOH.js +466 -0
- 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-I7ZPNEJM.js → chunk-M6TAYK66.js} +8 -8
- package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
- package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
- package/dist/chunk-MDU3C27C.js +674 -0
- package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
- package/dist/{chunk-4UVU7BJ5.js → chunk-NC4KV7EL.js} +6 -6
- package/dist/{chunk-JEQ3XTHC.js → chunk-NF3BK5WR.js} +5 -5
- package/dist/chunk-NTK3WTHM.js +141 -0
- package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
- package/dist/{chunk-UPZU6GE4.js → chunk-NY6IWDVU.js} +6 -6
- package/dist/chunk-O2RQ7LCK.js +283 -0
- package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
- package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
- package/dist/{chunk-WRBAGUNF.js → chunk-ODUTYZIU.js} +5 -5
- package/dist/{chunk-E3TPLWFX.js → chunk-ONRTXOZY.js} +4 -4
- package/dist/{chunk-B4OAX3SI.js → chunk-OQM5IVJY.js} +118 -225
- package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.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-64I3JVYM.js → chunk-PWWSIB2A.js} +5 -5
- package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
- package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
- package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
- package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
- package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
- package/dist/chunk-R6MAYTMS.js +108 -0
- package/dist/{chunk-MUW2BDDH.js → chunk-R6MICQYU.js} +6 -6
- package/dist/{chunk-JDAY6FIL.js → chunk-RLTT5GVY.js} +132 -17
- package/dist/{chunk-ZWPRK62N.js → chunk-RXIOCVBZ.js} +24 -6
- package/dist/{chunk-NIQJ66N4.js → chunk-S32UQ5GL.js} +62 -35
- package/dist/{chunk-AX2THNSA.js → chunk-SBZX6ARC.js} +12 -12
- package/dist/{chunk-TXOTCRLG.js → chunk-SD7SHNDW.js} +2 -2
- package/dist/{chunk-AF4YM7Z4.js → chunk-SDWNDICN.js} +10284 -3756
- package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
- package/dist/chunk-SL2RDHKO.js +19 -0
- package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-SRZOW5L2.js} +46 -14
- package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
- package/dist/chunk-T52TPHYC.js +318 -0
- package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
- package/dist/{chunk-LDJG7DW3.js → chunk-T7FDXNRU.js} +13 -13
- package/dist/{chunk-XPWWI35G.js → chunk-TEG3RYVZ.js} +59 -41
- package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
- package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
- package/dist/{chunk-PAJQJ7BS.js → chunk-TZ7MFRG4.js} +1263 -835
- package/dist/{chunk-GI7YYQ3F.js → chunk-U2JOLB7O.js} +415 -83
- package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
- package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
- package/dist/{chunk-CE5AX47J.js → chunk-U7H5WRG5.js} +5 -5
- package/dist/{chunk-G76U63X4.js → chunk-U7VQ4NI4.js} +22 -22
- package/dist/{chunk-7ZYNNDKC.js → chunk-UFYNOQK4.js} +7 -7
- package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
- package/dist/{chunk-QWGDJJYJ.js → chunk-UL36QJX6.js} +14 -14
- package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
- package/dist/{chunk-HEQY7ZFI.js → chunk-URBGEOH3.js} +5 -5
- package/dist/chunk-USZA7GWL.js +341 -0
- package/dist/{chunk-W6RRQCPQ.js → chunk-UTUNT5QL.js} +48 -579
- package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
- package/dist/{chunk-F5JHEYZM.js → chunk-UXAC2FX4.js} +73 -41
- package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
- package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
- package/dist/chunk-VLPTKCKT.js +396 -0
- 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-2UH2KFUP.js → chunk-WFKDPU7U.js} +4 -4
- package/dist/{chunk-ZDN3Y73Y.js → chunk-WJIMKGD6.js} +9 -51
- package/dist/{chunk-YQWYVTMC.js → chunk-WLMSOT73.js} +59 -12
- package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
- package/dist/chunk-WXA2CFJO.js +23 -0
- package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
- package/dist/{chunk-2APPQIER.js → chunk-XXBQKW32.js} +11 -11
- package/dist/{chunk-2VIKGWFZ.js → chunk-YEJIG7LN.js} +332 -332
- package/dist/chunk-YGDMBK7O.js +567 -0
- package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
- package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
- package/dist/{chunk-54CBCGIR.js → chunk-ZMZQEBKI.js} +136 -81
- 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 +45 -44
- package/dist/clio-5I2IBFYL.js +26 -0
- package/dist/{code-nav-MDZNQS33.js → code-nav-YXIAEZVS.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-UCUQ4QXW.js → components-TNIKXCBH.js} +13 -14
- package/dist/{config-SVM5P5YI.js → config-Y2JDJ3JJ.js} +210 -119
- package/dist/configure-SML6UBZ5.js +55 -0
- package/dist/{context-2OHRKS42.js → context-P5YSEO55.js} +125 -115
- package/dist/{context-VNCR7KAG.js → context-QQ53HSGJ.js} +91 -62
- package/dist/{context-E3VC7RX5.js → context-S2EEC3EJ.js} +62 -31
- package/dist/context-clear-TMEQCOTH.js +183 -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-VDS25HXZ.js → context-working-set-CNLSQN5K.js} +31 -31
- package/dist/detail-5572VLBO.js +114 -0
- package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-FRHD6P2O.js} +214 -126
- package/dist/{docs-PD3EXDKU.js → docs-BL7ROUFN.js} +5 -7
- package/dist/{doctor-WNNVO6FY.js → doctor-N3LCM2LG.js} +89 -66
- package/dist/{eval-7G7SGAYO.js → eval-BUU3ZOUZ.js} +493 -197
- package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
- package/dist/evidence-DTGEN456.js +224 -0
- package/dist/{evidence-VD6736FQ.js → evidence-SQ5DNFEN.js} +114 -195
- package/dist/{evolve-AL3NGVRL.js → evolve-IJNUFZDS.js} +107 -88
- package/dist/{extensions-MOVJ32NM.js → extensions-YVRHX6ZI.js} +16 -17
- package/dist/{fleet-QZHUMAGI.js → fleet-ZNNVSYFO.js} +147 -141
- package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-5YE7NPJL.js} +27 -23
- package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-3SBSCTCW.js} +16 -15
- package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-6HHPWF5T.js} +39 -38
- package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-JEYMGCGC.js} +107 -87
- package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
- package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-QRSHIIDE.js} +10 -10
- package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-4PM4GDDL.js} +46 -42
- package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-NJDTHTO3.js} +105 -85
- package/dist/fleet-view-UP2BWQQY.js +117 -0
- package/dist/{init-J477LKZH.js → init-S3GZQ5ZF.js} +123 -117
- package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
- package/dist/{interop-3FCM6XLG.js → interop-YOTGXFJM.js} +25 -26
- package/dist/inventory-K2OZ36YJ.js +117 -0
- package/dist/{library-QUQEIUG6.js → library-GJI6W6OK.js} +45 -45
- package/dist/{memory-SGGSEP65.js → memory-OQOXQGYD.js} +107 -90
- package/dist/{models-HEKUAXXK.js → models-3IK2Y5WE.js} +64 -65
- package/dist/{monitor-HKU57TYQ.js → monitor-FTJLTKCQ.js} +136 -101
- package/dist/{orchestrator-VDFAEFAI.js → orchestrator-N47O7SFD.js} +1442 -1671
- package/dist/{panes-DN2SSFOH.js → panes-7BTYH3XQ.js} +8 -8
- package/dist/{panes-TALGNPZT.js → panes-WPOMEMRH.js} +22 -23
- package/dist/{paths-NBMFAIEZ.js → paths-J3KN7UAO.js} +12 -13
- package/dist/preload-65U34NG6.js +115 -0
- package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
- package/dist/{reset-EAJFFJVB.js → reset-MUVQDLNL.js} +20 -21
- package/dist/{resources-OVKSEFVE.js → resources-LM76COAO.js} +41 -40
- package/dist/{run-7DP7ZF2J.js → run-3VFZQ33N.js} +168 -166
- package/dist/{share-WML67FT3.js → share-4JUB4BL7.js} +43 -43
- package/dist/{skills-SG662R2K.js → skills-S36AAJHU.js} +47 -47
- package/dist/{skills-eval-VVZEUU46.js → skills-eval-G6T57L7M.js} +127 -104
- package/dist/{skills-inventory-I2E23GET.js → skills-inventory-WLM46PJH.js} +41 -40
- package/dist/slash-commands-GBARG3Y7.js +91 -0
- package/dist/{steer-2LQOMCPB.js → steer-S7D7IKPU.js} +7 -7
- package/dist/{support-CC2UJBJ6.js → support-5VAEC32W.js} +14 -14
- package/dist/{targets-4QC3HIEW.js → targets-N5REUETU.js} +147 -98
- package/dist/tasks-6BVY5YZF.js +36 -0
- package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-57UEOJKS.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-5PEVOE5B.js → uninstall-FXYMFFRT.js} +19 -20
- package/dist/{upgrade-M4WXY6KN.js → upgrade-4HD5HAIV.js} +49 -45
- package/dist/{usage-N7ZNVLEM.js → usage-4GWM2WWP.js} +143 -103
- package/dist/{verifiers-DJTP4XX6.js → verifiers-GSKWKWVG.js} +162 -28
- package/dist/verify-3AS3ULCY.js +30 -0
- package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-MQN4FH3X.js} +169 -18
- package/dist/wiki-generate-7BV7XWIY.js +614 -0
- package/dist/{with-panes-4GCGSL7J.js → with-panes-OFTNAR4Y.js} +34 -20
- package/dist/worker/entry.js +99 -85
- package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
- package/docs/README.md +10 -8
- package/docs/architecture/acp.md +27 -0
- package/docs/architecture/architecture.md +5 -5
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/context-engine.md +44 -59
- package/docs/architecture/context-working-set.md +7 -9
- package/docs/architecture/dispatch-architecture-rationale.md +1 -1
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +11 -1
- package/docs/architecture/observability.md +7 -1
- package/docs/architecture/pi-boundary.md +37 -7
- package/docs/architecture/prompt-envelope-and-tools.md +22 -12
- package/docs/architecture/safety-model.md +10 -17
- package/docs/architecture/session-lifecycle.md +4 -4
- package/docs/architecture/tui-design.md +1 -1
- package/docs/architecture/worker-dispatch-mechanics.md +4 -0
- package/docs/guide/built-in-agents.md +8 -8
- package/docs/guide/commands-and-modes.md +66 -38
- package/docs/guide/configuration-and-targets.md +10 -3
- package/docs/guide/configuration-reference.md +23 -8
- package/docs/guide/environment-variables.md +8 -4
- package/docs/guide/fleet-dispatch.md +12 -0
- package/docs/guide/installation-and-lifecycle.md +35 -9
- package/docs/guide/proactive-memory.md +1 -1
- package/docs/guide/skills-marketplace.md +11 -3
- package/docs/guide/tool-usage.md +87 -5
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +15 -10
- 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/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/README.md +4 -0
- package/evals/behavioral-corpus-grader.mjs +147 -14
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- 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/coding/coding-standards/SKILL.md +14 -4
- package/skills/context/context-handoff/SKILL.md +3 -3
- package/skills/context/context-prime/SKILL.md +3 -3
- package/skills/planning/architecture/SKILL.md +5 -5
- package/skills/planning/backlog/SKILL.md +4 -4
- package/skills/planning/prd/SKILL.md +4 -3
- package/skills/planning/product-intent/SKILL.md +8 -8
- package/skills/planning/tech-spec/SKILL.md +4 -4
- package/skills/registry.yaml +33 -33
- package/skills/research/arxiv-literature/SKILL.md +3 -3
- package/skills/research/experiment-protocol/SKILL.md +3 -3
- package/skills/research/scientific-debugging/SKILL.md +3 -2
- package/skills/research/scientific-modernization/SKILL.md +3 -3
- package/skills/skill-marketplace.json +17 -17
- package/skills/workflow/cut-it/SKILL.md +3 -4
- package/skills/workflow/design-council/SKILL.md +5 -10
- package/skills/workflow/grill-me/SKILL.md +14 -15
- package/skills/workflow/workflow-distiller/SKILL.md +4 -4
- package/src/cli/args.ts +0 -8
- 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.ts +2 -1
- package/src/cli/context-map.ts +75 -14
- package/src/cli/context.ts +46 -17
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/eval.ts +17 -3
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +2 -0
- package/src/cli/modes/print.ts +32 -4
- package/src/cli/run.ts +16 -16
- package/src/cli/skills-eval.ts +10 -8
- package/src/cli/steer-channel.ts +31 -18
- package/src/cli/targets.ts +84 -32
- package/src/cli/tasks.ts +93 -0
- package/src/cli/upgrade.ts +19 -11
- package/src/cli/usage.ts +30 -0
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +240 -96
- package/src/core/bash-exec.ts +43 -15
- package/src/core/bus-events.ts +15 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/config.ts +33 -14
- package/src/core/defaults.ts +5 -4
- package/src/core/file-references.ts +11 -1
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/incomplete-installation.ts +3 -1
- package/src/core/run-overrides.ts +0 -5
- package/src/core/settings-layers.ts +21 -5
- package/src/core/skill-activation.ts +3 -0
- package/src/core/termination.ts +26 -9
- package/src/core/tool-names.ts +5 -2
- package/src/core/untrusted-content.ts +16 -0
- package/src/core/workspace-trust.ts +179 -0
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +5 -3
- package/src/domains/agents/builtins/context-bootstrap.md +3 -1
- package/src/domains/agents/builtins/documenter.md +8 -5
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/researcher.md +1 -0
- package/src/domains/agents/builtins/scout.md +7 -1
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/agents/result-contract.ts +199 -26
- 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 +97 -11
- 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 +12 -57
- package/src/domains/context/wiki/assemble.ts +14 -10
- package/src/domains/context/wiki/evidence.ts +209 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +207 -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 +85 -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 +10 -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/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +41 -9
- 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 +4 -0
- package/src/domains/dispatch/extension.ts +240 -132
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +21 -0
- package/src/domains/dispatch/gate-role-prompts.ts +4 -2
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/parallel-writers.ts +34 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +13 -37
- 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/state.ts +15 -2
- package/src/domains/dispatch/types.ts +21 -5
- 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 +17 -10
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- 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 +106 -17
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- 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/marketplace-offer.ts +20 -1
- package/src/domains/middleware/rules.ts +5 -1
- package/src/domains/middleware/runtime.ts +7 -3
- 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/detect.ts +3 -6
- 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/accountability.ts +15 -1
- package/src/domains/observability/contract.ts +54 -9
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +9 -5
- package/src/domains/observability/projection.ts +423 -53
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- 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 +12 -0
- package/src/domains/prompts/fragments/operating/delegation.md +5 -0
- package/src/domains/prompts/fragments/wiki/page.md +36 -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/model-discovery.ts +1 -4
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
- package/src/domains/providers/runtime-resolution.ts +11 -9
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/runtime-descriptor.ts +1 -1
- package/src/domains/resources/skills/promotion.ts +8 -1
- package/src/domains/safety/action-classifier.ts +16 -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 +13 -0
- package/src/domains/safety/extension.ts +11 -2
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +20 -1
- package/src/domains/safety/policy-engine.ts +211 -34
- package/src/domains/safety/project-policy.ts +7 -2
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/safety/workspace-trust.ts +43 -0
- package/src/domains/session/archive-readers.ts +10 -1
- 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 +137 -28
- package/src/domains/session/entries.ts +213 -11
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/prompt-manifest.ts +47 -8
- package/src/domains/session/task-board.ts +32 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/handoff.ts +16 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +60 -10
- package/src/engine/acp/server.ts +22 -4
- package/src/engine/acp/transport.ts +55 -9
- package/src/engine/acp/types.ts +9 -0
- package/src/engine/antigravity/subprocess-runtime.ts +20 -4
- package/src/engine/api-registry.ts +19 -2
- package/src/engine/apis/ollama-native.ts +15 -0
- 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/claude/subprocess-runtime.ts +107 -60
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/external-subprocess.ts +26 -7
- 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 +64 -17
- package/src/interactive/chat-loop-messages.ts +12 -4
- package/src/interactive/chat-loop.ts +115 -45
- package/src/interactive/chat-renderer.ts +60 -0
- package/src/interactive/context-recall-command.ts +2 -1
- package/src/interactive/dispatch-board.ts +58 -714
- package/src/interactive/editor-submit.ts +13 -0
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +11 -4
- package/src/interactive/interactive-event-projection.ts +7 -1
- package/src/interactive/interactive-presentation.ts +63 -12
- package/src/interactive/interactive-slash-runtime.ts +4 -1
- package/src/interactive/layout.ts +2 -1
- package/src/interactive/model-session-replay.ts +2 -2
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlay-frame.ts +1 -0
- package/src/interactive/overlay-general-openers.ts +3 -1
- package/src/interactive/overlay-session-lifecycle.ts +6 -0
- package/src/interactive/overlays/ask-user.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +3 -3
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/renderers/tool-execution.ts +17 -1
- package/src/interactive/renderers/worker-entry.ts +25 -10
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +31 -43
- package/src/interactive/slash-spec.ts +28 -0
- 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 +2 -0
- package/src/interactive/watch-pane.ts +18 -4
- package/src/interactive/worker-stream.ts +14 -10
- package/src/tools/agent-tools.ts +6 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +40 -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 +41 -1
- package/src/tools/context/index.ts +32 -7
- package/src/tools/context/surface.ts +15 -4
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +33 -1
- package/src/tools/dispatch-arguments.ts +38 -1
- package/src/tools/dispatch-plan.ts +12 -9
- package/src/tools/dispatch-runner.ts +63 -33
- 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/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/find.ts +13 -4
- package/src/tools/grep.ts +13 -1
- package/src/tools/limitation.ts +76 -0
- 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/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/read.ts +112 -15
- package/src/tools/registry.ts +55 -18
- package/src/tools/result-shaping.ts +127 -7
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +40 -5
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/frontend.ts +67 -30
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +303 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- 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-IA7V7FUC.js +0 -22
- package/dist/chunk-2WZ546HR.js +0 -792
- package/dist/chunk-5PSMVOLM.js +0 -56
- package/dist/chunk-7DICMOS6.js +0 -313
- package/dist/chunk-BEPZRGGU.js +0 -1560
- package/dist/chunk-JVCV3ICN.js +0 -47
- package/dist/chunk-KK4JZPBQ.js +0 -3982
- package/dist/chunk-MNJGS2IN.js +0 -33
- package/dist/chunk-NDINPTJ4.js +0 -641
- package/dist/chunk-O5CVSAG5.js +0 -122
- package/dist/chunk-OQE5J4C6.js +0 -73
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-UUVG37B4.js +0 -244
- package/dist/chunk-VPKWYKEY.js +0 -169
- package/dist/chunk-Y3CBHOR6.js +0 -228
- package/dist/clio-CMMK4KRR.js +0 -25
- package/dist/configure-LE3IK2TJ.js +0 -56
- package/dist/context-clear-BW4O37TG.js +0 -176
- package/dist/fleet-view-SWBR3VGQ.js +0 -97
- package/dist/preload-P6DGH2PZ.js +0 -13
- package/dist/slash-commands-S7MBJDQK.js +0 -83
- package/dist/tools-TFGJICCU.js +0 -29
- package/dist/verify-RWE4PPEK.js +0 -27
- package/dist/wiki-generate-C7IQOXSP.js +0 -469
|
@@ -1,78 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Fixed machine-readable projection of one evidence bundle's trust record.
|
|
3
|
-
*
|
|
4
|
-
* `evidence inspect <id>` prints an operator record that quotes the task text,
|
|
5
|
-
* the bundle's file list, and per-finding prose. This is the same bundle read
|
|
6
|
-
* down to the one thing a GUI can carry safely and usefully: which runs the
|
|
7
|
-
* bundle covers, what verdict each run earned, and which axis produced it.
|
|
8
|
-
*
|
|
9
|
-
* Every value here comes from a closed vocabulary. The axis names, the axis
|
|
10
|
-
* states, and the verdicts are all enumerations the harness owns, so there is
|
|
11
|
-
* no free-form text on this surface at all, which is what lets it answer the
|
|
12
|
-
* question the inventory raises without reopening the boundary the inventory
|
|
13
|
-
* closed.
|
|
14
|
-
*
|
|
15
|
-
* Unlike the other fixed reads this one takes an identifier, because an
|
|
16
|
-
* operator names the bundle. The GUI host may only pass back an id it served
|
|
17
|
-
* inside its current bounded window; see `apps/workbench/artifact-allowlist.ts`.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { clioDataDir } from "../core/xdg.js";
|
|
21
|
-
import {
|
|
22
|
-
inspectEvidence,
|
|
23
|
-
TRUST_STATUS_AXES,
|
|
24
|
-
type TrustStatusAxis,
|
|
25
|
-
type TrustVerdict,
|
|
26
|
-
trustVerdict,
|
|
27
|
-
} from "../domains/evidence/index.js";
|
|
28
|
-
|
|
29
|
-
export const EVIDENCE_DETAIL_MAX_RUNS = 16;
|
|
30
|
-
|
|
31
|
-
export interface EvidenceDetailRun {
|
|
32
|
-
readonly runId: string;
|
|
33
|
-
readonly verdict: TrustVerdict;
|
|
34
|
-
/** Every axis, always all six, so an absent axis is stated rather than missing. */
|
|
35
|
-
readonly axes: Readonly<Record<TrustStatusAxis, string>>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface EvidenceDetailSnapshot {
|
|
39
|
-
readonly version: 1;
|
|
40
|
-
readonly generatedAt: string;
|
|
41
|
-
readonly evidenceId: string;
|
|
42
|
-
readonly sourceKind: "run" | "session" | "eval";
|
|
43
|
-
/** False when the bundle predates the canonical trust projection. */
|
|
44
|
-
readonly canonical: boolean;
|
|
45
|
-
readonly runs: readonly EvidenceDetailRun[];
|
|
46
|
-
readonly runsTruncated: boolean;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
async function evidenceDetailSnapshot(
|
|
50
|
-
evidenceId: string,
|
|
51
|
-
now: () => number = Date.now,
|
|
52
|
-
dataDir: string = clioDataDir(),
|
|
53
|
-
): Promise<EvidenceDetailSnapshot> {
|
|
54
|
-
const inspected = await inspectEvidence(dataDir, evidenceId);
|
|
55
|
-
const all = inspected.trustStatus.runs;
|
|
56
|
-
const window = all.slice(0, EVIDENCE_DETAIL_MAX_RUNS);
|
|
57
|
-
return {
|
|
58
|
-
version: 1,
|
|
59
|
-
generatedAt: new Date(now()).toISOString(),
|
|
60
|
-
evidenceId: inspected.overview.evidenceId,
|
|
61
|
-
sourceKind: inspected.overview.source.kind,
|
|
62
|
-
canonical: inspected.trustStatus.projection === "canonical",
|
|
63
|
-
runs: window.map(
|
|
64
|
-
(run): EvidenceDetailRun => ({
|
|
65
|
-
runId: run.runId,
|
|
66
|
-
verdict: trustVerdict(run.status),
|
|
67
|
-
axes: Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, run.status[axis].state])) as Record<
|
|
68
|
-
TrustStatusAxis,
|
|
69
|
-
string
|
|
70
|
-
>,
|
|
71
|
-
}),
|
|
72
|
-
),
|
|
73
|
-
runsTruncated: all.length > window.length,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
1
|
+
import { evidenceDetailSnapshot } from "../domains/evidence/detail.js";
|
|
76
2
|
|
|
77
3
|
/**
|
|
78
4
|
* `clio-coder evidence inspect <id> --json`.
|
|
@@ -1,170 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Fixed machine-readable projection of recent evidence artifacts.
|
|
3
|
-
*
|
|
4
|
-
* `evidence list` is an operator table and `evidence inspect <id>` needs an id,
|
|
5
|
-
* so neither is a transport a GUI host can invoke blind. This command accepts
|
|
6
|
-
* no identifier, path, or limit, selects a bounded newest-first window itself,
|
|
7
|
-
* and emits provenance, tags, totals, and a trust verdict.
|
|
8
|
-
*
|
|
9
|
-
* An overview carries the working directories the runs executed in, the task
|
|
10
|
-
* text the operator typed, and the file names inside the bundle. None of that
|
|
11
|
-
* appears here. What does is the shape of the artifact and how far it can be
|
|
12
|
-
* trusted, which is what an operator picks a bundle by.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { clioDataDir } from "../core/xdg.js";
|
|
16
|
-
import {
|
|
17
|
-
EVIDENCE_TAGS,
|
|
18
|
-
type EvidenceOverview,
|
|
19
|
-
type EvidenceTag,
|
|
20
|
-
listEvidenceOverviews,
|
|
21
|
-
loadEvidenceTrustStatus,
|
|
22
|
-
type TrustVerdict,
|
|
23
|
-
trustVerdict,
|
|
24
|
-
} from "../domains/evidence/index.js";
|
|
25
|
-
import { sanitizeCallTargetText } from "../domains/safety/call-target.js";
|
|
26
|
-
import { truncateToWidth } from "../engine/tui-primitives.js";
|
|
27
|
-
|
|
28
|
-
export const EVIDENCE_INVENTORY_MAX_ARTIFACTS = 12;
|
|
29
|
-
export const EVIDENCE_INVENTORY_MAX_IDS = 8;
|
|
30
|
-
|
|
31
|
-
const IDENTITY_WIDTH = 128;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Worst verdict first.
|
|
35
|
-
*
|
|
36
|
-
* An artifact covering several runs is only as trustworthy as its weakest run,
|
|
37
|
-
* so the fold takes the worst rather than the newest or the most common. A
|
|
38
|
-
* `compromised` run inside an otherwise clean bundle is the fact the operator
|
|
39
|
-
* needs, and averaging it away would be the one summary worth not printing.
|
|
40
|
-
*/
|
|
41
|
-
const VERDICT_SEVERITY: ReadonlyArray<TrustVerdict> = ["compromised", "unverified", "unknown", "grounded", "reviewed"];
|
|
42
|
-
|
|
43
|
-
export interface EvidenceInventoryArtifact {
|
|
44
|
-
readonly evidenceId: string;
|
|
45
|
-
readonly sourceKind: "run" | "session" | "eval";
|
|
46
|
-
readonly generatedAt: string;
|
|
47
|
-
readonly startedAt: string | null;
|
|
48
|
-
readonly endedAt: string | null;
|
|
49
|
-
readonly runIds: readonly string[];
|
|
50
|
-
readonly runIdsTruncated: boolean;
|
|
51
|
-
readonly agentIds: readonly string[];
|
|
52
|
-
readonly statuses: readonly string[];
|
|
53
|
-
readonly tags: readonly EvidenceTag[];
|
|
54
|
-
readonly totals: Readonly<{
|
|
55
|
-
runs: number;
|
|
56
|
-
receipts: number;
|
|
57
|
-
toolCalls: number;
|
|
58
|
-
toolErrors: number;
|
|
59
|
-
blockedToolCalls: number;
|
|
60
|
-
protectedArtifacts: number;
|
|
61
|
-
tokens: number;
|
|
62
|
-
costUsd: number;
|
|
63
|
-
wallTimeMs: number;
|
|
64
|
-
}>;
|
|
65
|
-
/** Secret-shaped values the builder replaced across the bundle's exports. */
|
|
66
|
-
readonly redactionCount: number;
|
|
67
|
-
readonly trust: Readonly<{
|
|
68
|
-
verdict: TrustVerdict;
|
|
69
|
-
/** Runs whose canonical trust status the bundle actually recorded. */
|
|
70
|
-
runsCovered: number;
|
|
71
|
-
/** True when the bundle predates the canonical trust projection. */
|
|
72
|
-
historical: boolean;
|
|
73
|
-
}>;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export interface EvidenceInventorySnapshot {
|
|
77
|
-
readonly version: 1;
|
|
78
|
-
readonly generatedAt: string;
|
|
79
|
-
readonly artifacts: readonly EvidenceInventoryArtifact[];
|
|
80
|
-
readonly truncated: boolean;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function bounded(value: string, width: number): string {
|
|
84
|
-
const sanitized = sanitizeCallTargetText(value);
|
|
85
|
-
if (sanitized.length === 0) return "unavailable";
|
|
86
|
-
return sanitizeCallTargetText(truncateToWidth(sanitized, width, "…", false));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Distinct, sanitized, bounded, in first-seen order. */
|
|
90
|
-
function identities(values: ReadonlyArray<string>): string[] {
|
|
91
|
-
const seen: string[] = [];
|
|
92
|
-
for (const value of values) {
|
|
93
|
-
const text = bounded(value, IDENTITY_WIDTH);
|
|
94
|
-
if (!seen.includes(text)) seen.push(text);
|
|
95
|
-
if (seen.length >= EVIDENCE_INVENTORY_MAX_IDS) break;
|
|
96
|
-
}
|
|
97
|
-
return seen;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function tally(value: number | undefined): number {
|
|
101
|
-
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function amount(value: number | undefined): number {
|
|
105
|
-
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : 0;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** Newest generation first. An unparseable stamp sorts oldest rather than throwing. */
|
|
109
|
-
function byNewest(a: EvidenceOverview, b: EvidenceOverview): number {
|
|
110
|
-
return (Date.parse(b.generatedAt) || 0) - (Date.parse(a.generatedAt) || 0);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
async function evidenceInventorySnapshot(
|
|
114
|
-
now: () => number = Date.now,
|
|
115
|
-
dataDir: string = clioDataDir(),
|
|
116
|
-
): Promise<EvidenceInventorySnapshot> {
|
|
117
|
-
const all = (await listEvidenceOverviews(dataDir)).sort(byNewest);
|
|
118
|
-
const window = all.slice(0, EVIDENCE_INVENTORY_MAX_ARTIFACTS);
|
|
119
|
-
const artifacts: EvidenceInventoryArtifact[] = [];
|
|
120
|
-
for (const overview of window) {
|
|
121
|
-
// One unreadable trust file costs that artifact its verdict, never the
|
|
122
|
-
// whole inventory: the bundle itself is still the thing being listed.
|
|
123
|
-
let verdict: TrustVerdict = "unknown";
|
|
124
|
-
let runsCovered = 0;
|
|
125
|
-
let historical = true;
|
|
126
|
-
try {
|
|
127
|
-
const status = await loadEvidenceTrustStatus(dataDir, overview.evidenceId);
|
|
128
|
-
historical = status.projection !== "canonical";
|
|
129
|
-
runsCovered = status.runs.length;
|
|
130
|
-
const verdicts = status.runs.map((run) => trustVerdict(run.status));
|
|
131
|
-
verdict = VERDICT_SEVERITY.find((candidate) => verdicts.includes(candidate)) ?? "unknown";
|
|
132
|
-
} catch {
|
|
133
|
-
verdict = "unknown";
|
|
134
|
-
}
|
|
135
|
-
artifacts.push({
|
|
136
|
-
evidenceId: bounded(overview.evidenceId, IDENTITY_WIDTH),
|
|
137
|
-
sourceKind: overview.source.kind,
|
|
138
|
-
generatedAt: overview.generatedAt,
|
|
139
|
-
startedAt: overview.startedAt,
|
|
140
|
-
endedAt: overview.endedAt,
|
|
141
|
-
runIds: identities(overview.runIds),
|
|
142
|
-
runIdsTruncated: overview.runIds.length > EVIDENCE_INVENTORY_MAX_IDS,
|
|
143
|
-
agentIds: identities(overview.agentIds),
|
|
144
|
-
statuses: identities(overview.statuses),
|
|
145
|
-
tags: overview.tags.filter((tag) => EVIDENCE_TAGS.includes(tag)),
|
|
146
|
-
totals: {
|
|
147
|
-
runs: tally(overview.totals.runs),
|
|
148
|
-
receipts: tally(overview.totals.receipts),
|
|
149
|
-
toolCalls: tally(overview.totals.toolCalls),
|
|
150
|
-
toolErrors: tally(overview.totals.toolErrors),
|
|
151
|
-
blockedToolCalls: tally(overview.totals.blockedToolCalls),
|
|
152
|
-
protectedArtifacts: tally(overview.totals.protectedArtifacts),
|
|
153
|
-
tokens: tally(overview.totals.tokens),
|
|
154
|
-
costUsd: amount(overview.totals.costUsd),
|
|
155
|
-
wallTimeMs: tally(overview.totals.wallTimeMs),
|
|
156
|
-
},
|
|
157
|
-
redactionCount: tally(overview.redactionCount),
|
|
158
|
-
trust: { verdict, runsCovered, historical },
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
return {
|
|
162
|
-
version: 1,
|
|
163
|
-
generatedAt: new Date(now()).toISOString(),
|
|
164
|
-
artifacts,
|
|
165
|
-
truncated: all.length > window.length,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
1
|
+
import { evidenceInventorySnapshot } from "../domains/evidence/inventory.js";
|
|
168
2
|
|
|
169
3
|
/**
|
|
170
4
|
* `clio-coder evidence inventory --json`, and nothing else.
|
package/src/cli/index.ts
CHANGED
|
@@ -71,6 +71,7 @@ Usage:
|
|
|
71
71
|
clio-coder extensions install, list, enable, disable, or remove extension packages
|
|
72
72
|
clio-coder skills list, inspect, validate, or install skills
|
|
73
73
|
clio-coder library list, search, add, or sync agents, prompts, fleets, and skills from catalogs
|
|
74
|
+
clio-coder tasks list, add, hand, finish, or drop project operator tasks
|
|
74
75
|
clio-coder verifiers discover, inspect, author, validate, edit, or dry-run project checks
|
|
75
76
|
clio-coder tools list|status|install|remove <id> pinned external programs Clio can drive
|
|
76
77
|
clio-coder interop inspect --json detected external coding agents and how far each one is wired
|
|
@@ -259,6 +260,7 @@ const COMMAND_HANDLERS = new Map<string, CommandHandler>([
|
|
|
259
260
|
["fleet", async (subArgs) => (await import("./fleet.js")).runFleetCommand(subArgs)],
|
|
260
261
|
["skills", async (subArgs) => (await import("./skills.js")).runSkillsCommand(subArgs)],
|
|
261
262
|
["library", async (subArgs) => (await import("./library.js")).runLibraryCommand(subArgs)],
|
|
263
|
+
["tasks", async (subArgs) => (await import("./tasks.js")).runTasksCommand(subArgs)],
|
|
262
264
|
["verifiers", async (subArgs) => (await import("./verifiers.js")).runVerifiersCommand(subArgs)],
|
|
263
265
|
["docs", async (subArgs) => (await import("./docs.js")).runDocsCommand(subArgs)],
|
|
264
266
|
["share", async (subArgs) => (await import("./share.js")).runShareCommand(subArgs)],
|
package/src/cli/modes/print.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import { getTerminationCoordinator } from "../../core/termination.js";
|
|
13
13
|
import { ToolNames } from "../../core/tool-names.js";
|
|
14
14
|
import { createRunReceiptQuality } from "../../domains/dispatch/receipt-findings.js";
|
|
15
|
-
import { openLedger } from "../../domains/dispatch/state.js";
|
|
15
|
+
import { newRunId, openLedger } from "../../domains/dispatch/state.js";
|
|
16
16
|
import type { RunKind, RunOutcome, RunReceiptDraft, RunStatus, ToolCallStat } from "../../domains/dispatch/types.js";
|
|
17
17
|
import type { AgentMessage, ImageContent } from "../../engine/types.js";
|
|
18
18
|
import type { ChatLoop, ChatLoopEvent } from "../../interactive/chat-loop.js";
|
|
@@ -58,6 +58,8 @@ export interface HeadlessMainAgentOptions {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
interface HeadlessMainAgentResult {
|
|
61
|
+
/** Latest assistant stop, superseded by subsequent continuation messages. */
|
|
62
|
+
outputExhausted: boolean;
|
|
61
63
|
text: string;
|
|
62
64
|
error: string | null;
|
|
63
65
|
/**
|
|
@@ -154,6 +156,7 @@ function resultFromEvent(event: ChatLoopEvent, current: HeadlessMainAgentResult)
|
|
|
154
156
|
if (event.type !== "message_end") return current;
|
|
155
157
|
const message = event.message;
|
|
156
158
|
if (message?.role !== "assistant") return current;
|
|
159
|
+
current = { ...current, outputExhausted: message.stopReason === "length", sawTerminatingToolResult: false };
|
|
157
160
|
const error = assistantError(message);
|
|
158
161
|
if (error) return { ...current, text: "", error };
|
|
159
162
|
const text = assistantText(message).trimEnd();
|
|
@@ -180,8 +183,15 @@ function recordToolEnd(stats: HeadlessMainAgentReceiptStats, event: ChatLoopEven
|
|
|
180
183
|
stat.count += 1;
|
|
181
184
|
const durationMs = durationMsFromEvent(event);
|
|
182
185
|
if (durationMs !== undefined) stat.totalDurationMs += durationMs;
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
// Registry settlement is authoritative; legacy producers only expose isError.
|
|
187
|
+
const outcome = (event as { outcome?: unknown }).outcome;
|
|
188
|
+
if (outcome === "blocked") stat.blocked += 1;
|
|
189
|
+
else if (outcome === "error") stat.errors += 1;
|
|
190
|
+
else if (outcome === "ok") stat.ok += 1;
|
|
191
|
+
else if (outcome === undefined) {
|
|
192
|
+
if (event.isError) stat.errors += 1;
|
|
193
|
+
else stat.ok += 1;
|
|
194
|
+
}
|
|
185
195
|
stats.toolStats.set(tool, stat);
|
|
186
196
|
if (tool === ToolNames.Context) {
|
|
187
197
|
const rawTurnId = (event as { turnId?: unknown }).turnId;
|
|
@@ -267,6 +277,7 @@ interface HeadlessTerminalOutcome {
|
|
|
267
277
|
}
|
|
268
278
|
|
|
269
279
|
async function recordHeadlessMainAgentReceipt(input: {
|
|
280
|
+
runId: string;
|
|
270
281
|
chat: ChatLoop;
|
|
271
282
|
task: string;
|
|
272
283
|
startedAt: string;
|
|
@@ -289,6 +300,7 @@ async function recordHeadlessMainAgentReceipt(input: {
|
|
|
289
300
|
const outcomeDetail = input.terminal.failureMessage;
|
|
290
301
|
const ledger = openLedger();
|
|
291
302
|
const envelope = ledger.create({
|
|
303
|
+
id: input.runId,
|
|
292
304
|
agentId: "main-agent",
|
|
293
305
|
executionRole: "builder",
|
|
294
306
|
requestOrigin: "user",
|
|
@@ -394,10 +406,14 @@ function defaultShutdownHooks(): HeadlessShutdownHooks {
|
|
|
394
406
|
}
|
|
395
407
|
|
|
396
408
|
export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMainAgentOptions): Promise<number> {
|
|
409
|
+
// Children need the authoritative parent before submit can invoke dispatch.
|
|
410
|
+
// The terminal writer reuses this identity whichever settlement path wins.
|
|
411
|
+
const runId = newRunId();
|
|
397
412
|
const mode = options.mode ?? "text";
|
|
398
413
|
const jsonEvents = options.jsonEvents ?? "full";
|
|
399
414
|
const startedAt = new Date().toISOString();
|
|
400
415
|
let result: HeadlessMainAgentResult = {
|
|
416
|
+
outputExhausted: false,
|
|
401
417
|
text: "",
|
|
402
418
|
error: null,
|
|
403
419
|
sawTerminatingToolResult: false,
|
|
@@ -422,6 +438,7 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
|
|
|
422
438
|
if (sealed !== null) return sealed;
|
|
423
439
|
const endedAt = new Date().toISOString();
|
|
424
440
|
sealed = recordHeadlessMainAgentReceipt({
|
|
441
|
+
runId,
|
|
425
442
|
chat,
|
|
426
443
|
task: options.prompt,
|
|
427
444
|
startedAt,
|
|
@@ -526,6 +543,7 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
|
|
|
526
543
|
try {
|
|
527
544
|
if (mode === "json" && jsonEvents === "terminal") writeTerminalTurnStart();
|
|
528
545
|
const submitOptions = {
|
|
546
|
+
hostRun: { runId, lineage: { parentRunId: null, rootRunId: runId, depth: 0, attempt: 0 } },
|
|
529
547
|
...(options.images && options.images.length > 0 ? { images: options.images } : {}),
|
|
530
548
|
...(options.workingContextPaths && options.workingContextPaths.length > 0
|
|
531
549
|
? { workingContextPaths: options.workingContextPaths }
|
|
@@ -573,6 +591,15 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
|
|
|
573
591
|
} else if (result.error) {
|
|
574
592
|
terminal = { exitCode: 1, outcome: "failed", status: "failed", failureMessage: result.error };
|
|
575
593
|
stderrMessage = prefixHeadlessFailure(chat, result.error);
|
|
594
|
+
} else if (result.outputExhausted && !result.sawTerminatingToolResult) {
|
|
595
|
+
// The provider returned normally, but generation exhausted its budget.
|
|
596
|
+
// Earlier chatter and partial prose cannot turn that terminal cause into
|
|
597
|
+
// success. A later assistant message or terminating tool supersedes it.
|
|
598
|
+
const failureMessage =
|
|
599
|
+
"clio-coder run: output token limit reached (stopReason=length); generation incomplete. Consider resuming with a narrower task, lower reasoning effort, or a larger output budget.";
|
|
600
|
+
terminal = { exitCode: 1, outcome: "failed", status: "failed", failureMessage };
|
|
601
|
+
stderrMessage = failureMessage;
|
|
602
|
+
if (mode === "text" && result.text.length > 0) stdoutMessage = result.text;
|
|
576
603
|
} else if (result.text.length === 0 && !result.sawTerminatingToolResult) {
|
|
577
604
|
const failureMessage =
|
|
578
605
|
result.lastNotice !== null
|
|
@@ -611,7 +638,8 @@ export async function runHeadlessMainAgent(chat: ChatLoop, options: HeadlessMain
|
|
|
611
638
|
|
|
612
639
|
if (stderrMessage !== null) {
|
|
613
640
|
process.stderr.write(`${stderrMessage}\n`);
|
|
614
|
-
}
|
|
641
|
+
}
|
|
642
|
+
if (stdoutMessage !== null) {
|
|
615
643
|
writeRawStdout(`${stdoutMessage}\n`);
|
|
616
644
|
}
|
|
617
645
|
await flushRawStdout();
|
package/src/cli/run.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type ClioSettings, readSettings } from "../core/config.js";
|
|
|
2
2
|
import { loadDomains } from "../core/domain-loader.js";
|
|
3
3
|
import { readFileArgsAsync } from "../core/file-references.js";
|
|
4
4
|
import { withRunOverrides } from "../core/run-overrides.js";
|
|
5
|
+
import { readStrictLayeredSettings } from "../core/settings-layers.js";
|
|
5
6
|
import { clioDataDir } from "../core/xdg.js";
|
|
6
7
|
import type { AgentsContract } from "../domains/agents/contract.js";
|
|
7
8
|
import { AgentsDomainModule } from "../domains/agents/index.js";
|
|
@@ -62,7 +63,6 @@ Flags:
|
|
|
62
63
|
--frequency-penalty <N> one-run frequency penalty override
|
|
63
64
|
--repeat-penalty <N> one-run repeat penalty override
|
|
64
65
|
--max-context-tokens <N> one-run context-window override for supported local runtimes
|
|
65
|
-
--kv-cache-mode <mode> one-run KV-cache mode override: f16|f32|none|false|q8_0|q4_0|q4_1|iq4_nl|q5_0|q5_1
|
|
66
66
|
--json stream JSONL events for the main-agent path; dispatch streams events and receipt JSON
|
|
67
67
|
--json-events <mode> main-agent JSON stream mode: full|terminal; implies --json
|
|
68
68
|
--steer-channel <path> read live steering lines from a FIFO or appended regular file
|
|
@@ -102,15 +102,15 @@ function hasDispatchOnlyOptions(parsed: RunCliArgs): boolean {
|
|
|
102
102
|
|
|
103
103
|
/**
|
|
104
104
|
* True when an explicit --target override names a target that is not in
|
|
105
|
-
* settings.targets.
|
|
106
|
-
* resolver
|
|
105
|
+
* effective settings.targets. Include project overlays just as the runtime
|
|
106
|
+
* resolver does (providers.getTarget), so this mirrors its `target-not-found`
|
|
107
107
|
* verdict without booting the providers domain. Unreadable/invalid settings
|
|
108
108
|
* fall through (returns false) so the normal boot path surfaces that error
|
|
109
109
|
* instead of a misleading "target not found".
|
|
110
110
|
*/
|
|
111
|
-
function explicitTargetMissing(targetId: string): boolean {
|
|
111
|
+
export function explicitTargetMissing(targetId: string): boolean {
|
|
112
112
|
try {
|
|
113
|
-
return !
|
|
113
|
+
return !readStrictLayeredSettings(process.cwd()).settings.targets.some((target) => target.id === targetId);
|
|
114
114
|
} catch {
|
|
115
115
|
return false;
|
|
116
116
|
}
|
|
@@ -164,9 +164,9 @@ function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
167
|
+
* Refuse commands the headless prompt path cannot execute. Skill invocations
|
|
168
|
+
* and prompt templates have production expansion paths; interactive commands
|
|
169
|
+
* do not, so accepting them would send their literal text to the model.
|
|
170
170
|
*
|
|
171
171
|
* `parseSlashCommand` is the canonical shape test and the canonical registry
|
|
172
172
|
* walk, so a token that is one word of letters, digits, hyphens, or colons and
|
|
@@ -191,11 +191,14 @@ function explicitSkillPathErrors(skillPaths: ReadonlyArray<string>): string[] {
|
|
|
191
191
|
* closure sits on. Boundaries rule6 in `tests/boundaries/check-boundaries.ts`
|
|
192
192
|
* holds both halves of that.
|
|
193
193
|
*/
|
|
194
|
-
async function
|
|
194
|
+
async function headlessSlashCommandRefusal(task: string): Promise<string | null> {
|
|
195
195
|
if (!task.trim().startsWith("/")) return null;
|
|
196
196
|
const { parseSlashCommand } = await import("../interactive/slash-commands.js");
|
|
197
197
|
const command = parseSlashCommand(task);
|
|
198
|
-
if (command.kind
|
|
198
|
+
if (command.kind === "skill-invocation" || command.kind === "unknown" || command.kind === "empty") return null;
|
|
199
|
+
if (command.kind !== "unknown-command") {
|
|
200
|
+
return "interactive commands are not supported by clio-coder run; use interactive chat or the corresponding CLI command";
|
|
201
|
+
}
|
|
199
202
|
const { loadPromptTemplates } = await import("../domains/resources/index.js");
|
|
200
203
|
const templates = loadPromptTemplates({ cwd: process.cwd() });
|
|
201
204
|
if (templates.items.some((template) => template.name === command.token)) return null;
|
|
@@ -213,7 +216,6 @@ export async function runClioRun(
|
|
|
213
216
|
return withRunOverrides(
|
|
214
217
|
{
|
|
215
218
|
...(parsed.maxContextTokens !== undefined ? { maxContextTokens: parsed.maxContextTokens } : {}),
|
|
216
|
-
...(parsed.kvCacheMode !== undefined ? { kvCacheMode: parsed.kvCacheMode } : {}),
|
|
217
219
|
},
|
|
218
220
|
async () => {
|
|
219
221
|
if (parsed.help) {
|
|
@@ -262,11 +264,9 @@ export async function runClioRun(
|
|
|
262
264
|
if (!assembled) return 2;
|
|
263
265
|
|
|
264
266
|
if (parsed.agentId === undefined) {
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
|
|
268
|
-
// and what docs/guide/extensions-and-sharing.md documents for both surfaces.
|
|
269
|
-
const slashRefusal = await unknownSlashCommandRefusal(assembled.prompt);
|
|
267
|
+
// Reject unknown and unsupported interactive commands before boot;
|
|
268
|
+
// neither has a headless handler that could honor the request.
|
|
269
|
+
const slashRefusal = await headlessSlashCommandRefusal(assembled.prompt);
|
|
270
270
|
if (slashRefusal !== null) {
|
|
271
271
|
process.stderr.write(`clio-coder run: ${slashRefusal}\n`);
|
|
272
272
|
return 2;
|
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
|
}
|