@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
|
@@ -25,6 +25,8 @@ import {
|
|
|
25
25
|
} from "./transcript-detail.js";
|
|
26
26
|
|
|
27
27
|
const EDITOR_BASH_TIMEOUT_MS = 300_000;
|
|
28
|
+
/** Existing bash TERM-to-KILL grace (5s), plus settlement and session append. */
|
|
29
|
+
export const EDITOR_BASH_SHUTDOWN_MS = 6000;
|
|
28
30
|
|
|
29
31
|
/**
|
|
30
32
|
* Command shapes whose text is put back in the editor after the parser rejects
|
|
@@ -125,18 +127,22 @@ export interface EditorSubmitController {
|
|
|
125
127
|
restoreQueuedFollowUpsToEditor(): void;
|
|
126
128
|
hasActiveEditorBash(): boolean;
|
|
127
129
|
cancelActiveEditorBash(): boolean;
|
|
130
|
+
/** Stop shell admission, cancel the owned command, and await its persisted result. */
|
|
131
|
+
shutdownEditorBash(): Promise<void>;
|
|
128
132
|
}
|
|
129
133
|
|
|
130
134
|
type EditorSteerSubmission = "unhandled" | "accepted" | "rejected";
|
|
131
135
|
|
|
132
136
|
/** Owns editor submission and the one local bash process attached to it. */
|
|
133
137
|
export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubmitController {
|
|
138
|
+
let shuttingDown = false;
|
|
134
139
|
let activeEditorBash: AbortController | null = null;
|
|
135
140
|
let activeEditorBashSettlement: Promise<void> | null = null;
|
|
136
141
|
|
|
137
142
|
const runEditorBash = (text: string): boolean => {
|
|
138
143
|
const parsed = parseEditorBashCommand(text);
|
|
139
144
|
if (!parsed) return false;
|
|
145
|
+
if (shuttingDown) return true;
|
|
140
146
|
if (deps.chat.isStreaming()) {
|
|
141
147
|
deps.io.stderr("[bash] response in progress. Press Esc to cancel the active run before running a local command.\n");
|
|
142
148
|
return true;
|
|
@@ -394,12 +400,14 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
394
400
|
const literalText = unguardPastedEditorOperator(text);
|
|
395
401
|
const trimmed = literalText.trim();
|
|
396
402
|
if (trimmed.length === 0) return;
|
|
403
|
+
if (shuttingDown) throw new Error("editor is shutting down");
|
|
397
404
|
signal?.throwIfAborted();
|
|
398
405
|
deps.collapseLaunchpadBeforeSubmit?.();
|
|
399
406
|
if (parseEditorBashCommand(text)) {
|
|
400
407
|
while (deps.chat.isStreaming()) await awaitWithAbort(deps.chat.whenSettled(), signal);
|
|
401
408
|
while (activeEditorBashSettlement) await awaitWithAbort(activeEditorBashSettlement, signal);
|
|
402
409
|
signal?.throwIfAborted();
|
|
410
|
+
if (shuttingDown) throw new Error("editor is shutting down");
|
|
403
411
|
deps.editor.addToHistory(literalText);
|
|
404
412
|
runEditorBash(text);
|
|
405
413
|
deps.ui.requestRender();
|
|
@@ -529,6 +537,11 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
529
537
|
interruptFromEditor,
|
|
530
538
|
restoreQueuedFollowUpsToEditor,
|
|
531
539
|
hasActiveEditorBash: () => activeEditorBash !== null,
|
|
540
|
+
shutdownEditorBash: async () => {
|
|
541
|
+
shuttingDown = true;
|
|
542
|
+
activeEditorBash?.abort();
|
|
543
|
+
await activeEditorBashSettlement;
|
|
544
|
+
},
|
|
532
545
|
cancelActiveEditorBash: () => {
|
|
533
546
|
if (!activeEditorBash) return false;
|
|
534
547
|
activeEditorBash.abort();
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
} from "../domains/dispatch/execution-role.js";
|
|
39
39
|
import { compileFleetExecutionPlan } from "../domains/dispatch/fleet-plan.js";
|
|
40
40
|
import { preflightWriteBoundaries } from "../domains/dispatch/write-boundary-enforcer.js";
|
|
41
|
+
import { formatUsd } from "./footer/widgets.js";
|
|
41
42
|
|
|
42
43
|
/** Where a step would run, as the dispatch domain resolves it today. */
|
|
43
44
|
export interface FleetRunPreviewRoute {
|
|
@@ -263,7 +264,7 @@ export function compileFleetRunPreview(input: FleetRunPreviewInput): FleetRunPre
|
|
|
263
264
|
};
|
|
264
265
|
if (input.budget) {
|
|
265
266
|
if (input.budget.verdict === "over" || input.budget.verdict === "at") {
|
|
266
|
-
diagnostics.push(`budget ceiling crossed:
|
|
267
|
+
diagnostics.push(`budget ceiling crossed: ${formatUsd(budget.currentUsd)} / ${formatUsd(budget.ceilingUsd)}`);
|
|
267
268
|
} else if (contract.budgetUsd !== null) {
|
|
268
269
|
const remaining = budget.ceilingUsd - budget.currentUsd;
|
|
269
270
|
if (contract.budgetUsd > remaining) {
|
|
@@ -3,6 +3,7 @@ import type { ClioSettings } from "../core/config.js";
|
|
|
3
3
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
4
4
|
import { expandInlineFileReferencesAsync } from "../core/file-references.js";
|
|
5
5
|
import type { PendingSkillRequest } from "../core/skill-activation.js";
|
|
6
|
+
import { getTerminationCoordinator } from "../core/termination.js";
|
|
6
7
|
import { clioStateDir } from "../core/xdg.js";
|
|
7
8
|
import type { AgentsContract } from "../domains/agents/contract.js";
|
|
8
9
|
import type { ClioKeybinding } from "../domains/config/keybindings.js";
|
|
@@ -33,7 +34,7 @@ import { emitCommandNotice } from "./command-fallbacks.js";
|
|
|
33
34
|
import { appendNotice } from "./command-output.js";
|
|
34
35
|
import { dispatchCouncilThroughRegistry } from "./council-dispatch.js";
|
|
35
36
|
import { createDispatchSteering } from "./dispatch-steering.js";
|
|
36
|
-
import { createEditorSubmitController } from "./editor-submit.js";
|
|
37
|
+
import { createEditorSubmitController, EDITOR_BASH_SHUTDOWN_MS } from "./editor-submit.js";
|
|
37
38
|
import { createInteractiveDesktopNotifications } from "./footer/notifications.js";
|
|
38
39
|
import { createInteractiveEventProjection } from "./interactive-event-projection.js";
|
|
39
40
|
import { createInteractiveInputRuntime } from "./interactive-input-runtime.js";
|
|
@@ -228,8 +229,8 @@ export interface InteractiveDeps {
|
|
|
228
229
|
onNewSession?: () => void;
|
|
229
230
|
/**
|
|
230
231
|
* Fork from a parent assistant turn picked in /fork. Default wiring
|
|
231
|
-
* delegates to session.fork(parentTurnId); the override exists so
|
|
232
|
-
*
|
|
232
|
+
* delegates to session.fork(parentTurnId); the override exists so a
|
|
233
|
+
* host can layer telemetry or settings merging on top.
|
|
233
234
|
*/
|
|
234
235
|
onForkSession?: (parentTurnId: string) => void;
|
|
235
236
|
/**
|
|
@@ -583,9 +584,11 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
583
584
|
: {}),
|
|
584
585
|
...(deps.getSettings ? { getSettings: deps.getSettings } : {}),
|
|
585
586
|
...(deps.resources ? { resources: deps.resources } : {}),
|
|
587
|
+
...(deps.agents ? { agents: deps.agents } : {}),
|
|
586
588
|
...(deps.session ? { session: deps.session } : {}),
|
|
587
589
|
...(deps.getSessionId ? { getSessionId: deps.getSessionId } : {}),
|
|
588
590
|
...(deps.getTaskBoard ? { getTaskBoard: deps.getTaskBoard } : {}),
|
|
591
|
+
...(deps.userTasks ? { userTasks: deps.userTasks } : {}),
|
|
589
592
|
...(deps.getTaskMemoryStatus ? { getTaskMemoryStatus: deps.getTaskMemoryStatus } : {}),
|
|
590
593
|
...(deps.getTaskMemorySeedOffer ? { getTaskMemorySeedOffer: deps.getTaskMemorySeedOffer } : {}),
|
|
591
594
|
...(deps.getContextState ? { getContextState: deps.getContextState } : {}),
|
|
@@ -700,6 +703,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
700
703
|
io,
|
|
701
704
|
bus: deps.bus,
|
|
702
705
|
dispatch: deps.dispatch,
|
|
706
|
+
...(deps.getDecisionBoard ? { getDecisionBoard: deps.getDecisionBoard } : {}),
|
|
703
707
|
...(deps.session ? { session: deps.session } : {}),
|
|
704
708
|
providers: deps.providers,
|
|
705
709
|
chat: deps.chat,
|
|
@@ -803,6 +807,9 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
803
807
|
expandSubmit: (text) => expandInteractiveSubmitAsync(text, deps.resources),
|
|
804
808
|
notify,
|
|
805
809
|
});
|
|
810
|
+
// The lease drains the terminal; operator shell ownership outlives that
|
|
811
|
+
// surface and must settle before the session domain stops, on every exit.
|
|
812
|
+
getTerminationCoordinator().onDrain(() => editorSubmit.shutdownEditorBash(), { timeoutMs: EDITOR_BASH_SHUTDOWN_MS });
|
|
806
813
|
editor.onSubmit = editorSubmit.submitEditorText;
|
|
807
814
|
|
|
808
815
|
const interactiveTickers = createInteractiveTickers({
|
|
@@ -1110,7 +1117,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
1110
1117
|
steerSelectedDispatch,
|
|
1111
1118
|
cancelSelectedDispatch,
|
|
1112
1119
|
cancelActiveEditorBash: () => editorSubmit.cancelActiveEditorBash(),
|
|
1113
|
-
isStreaming: () => deps.chat.isStreaming(),
|
|
1120
|
+
isStreaming: () => deps.chat.isStreaming() || deps.chat.turnPreparation().phase === "compacting",
|
|
1114
1121
|
cancelActiveRun,
|
|
1115
1122
|
editor,
|
|
1116
1123
|
editorSubmit,
|
|
@@ -251,9 +251,10 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
|
|
|
251
251
|
typeof event.tokensBefore === "number" &&
|
|
252
252
|
typeof event.tokensAfter === "number"
|
|
253
253
|
) {
|
|
254
|
+
const outcome = event.tokensAfter < event.tokensBefore ? "Reclaimed context" : "Context updated";
|
|
254
255
|
deps.notify(
|
|
255
256
|
"info",
|
|
256
|
-
`[Compaction]
|
|
257
|
+
`[Compaction] ${outcome}: ${event.tokensBefore} -> ${event.tokensAfter} tokens (${event.stage})`,
|
|
257
258
|
"compaction-notice",
|
|
258
259
|
);
|
|
259
260
|
}
|
|
@@ -388,6 +389,11 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
|
|
|
388
389
|
|
|
389
390
|
const seenMiddlewareBudgetWarnings = new Set<string>();
|
|
390
391
|
remainingUnsubscribers.push(
|
|
392
|
+
deps.bus.on(BusChannels.ExtensionsLoadIssue, (payload) => {
|
|
393
|
+
if (typeof payload?.message !== "string" || payload.message.trim().length === 0) return;
|
|
394
|
+
deps.appendTranscriptNotice("warn", payload.message);
|
|
395
|
+
deps.requestRender();
|
|
396
|
+
}),
|
|
391
397
|
deps.bus.on(BusChannels.MiddlewareHookFailed, (payload) => {
|
|
392
398
|
const notice = middlewareHookFailedSessionNotice(payload, seenMiddlewareBudgetWarnings);
|
|
393
399
|
if (notice === null) return;
|
|
@@ -2,6 +2,8 @@ import { performance } from "node:perf_hooks";
|
|
|
2
2
|
import type { ClioSettings } from "../core/config.js";
|
|
3
3
|
import { DEFAULT_SETTINGS } from "../core/defaults.js";
|
|
4
4
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
5
|
+
import type { AgentsContract } from "../domains/agents/contract.js";
|
|
6
|
+
import { isUserVisibleAgent } from "../domains/agents/spec.js";
|
|
5
7
|
import type { ContextState } from "../domains/context/index.js";
|
|
6
8
|
import type { DispatchContract } from "../domains/dispatch/contract.js";
|
|
7
9
|
import type { TaskMemoryOperatorStatus } from "../domains/memory/index.js";
|
|
@@ -12,9 +14,9 @@ import type {
|
|
|
12
14
|
} from "../domains/observability/index.js";
|
|
13
15
|
import { type ProvidersContract, resolveModelRuntimeCapabilitiesForProviders } from "../domains/providers/index.js";
|
|
14
16
|
import type { ResourcesContract } from "../domains/resources/index.js";
|
|
15
|
-
import { getMarketplaceSkills } from "../domains/resources/skills/marketplace.js";
|
|
16
17
|
import { ceilChars, contentChars } from "../domains/session/context-accounting.js";
|
|
17
18
|
import type { SessionContract, TaskBoardSnapshot } from "../domains/session/index.js";
|
|
19
|
+
import type { UserTasksStore } from "../domains/user-tasks/store.js";
|
|
18
20
|
import type { Component, TUI } from "../engine/tui.js";
|
|
19
21
|
import type { ChatLoop, ChatLoopEvent } from "./chat-loop.js";
|
|
20
22
|
import { type ChatPanel, createChatPanel } from "./chat-panel.js";
|
|
@@ -88,9 +90,11 @@ export interface InteractivePresentationDeps {
|
|
|
88
90
|
bootPending?: Component;
|
|
89
91
|
getSettings?: () => Readonly<ClioSettings>;
|
|
90
92
|
resources?: Pick<ResourcesContract, "skills">;
|
|
93
|
+
agents?: Pick<AgentsContract, "listSpecs">;
|
|
91
94
|
session?: Pick<SessionContract, "current">;
|
|
92
95
|
getSessionId?: () => string | null;
|
|
93
96
|
getTaskBoard?: () => TaskBoardSnapshot | null;
|
|
97
|
+
userTasks?: Pick<UserTasksStore, "snapshot">;
|
|
94
98
|
getTaskMemoryStatus?: () => TaskMemoryOperatorStatus;
|
|
95
99
|
getTaskMemorySeedOffer?: () => { source: string; count: number } | null;
|
|
96
100
|
getContextState?: (cwd?: string) => ContextState;
|
|
@@ -248,13 +252,11 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
248
252
|
bus: deps.bus,
|
|
249
253
|
...(deps.getSettings ? { getSettings: deps.getSettings } : {}),
|
|
250
254
|
});
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
(runId) => readWorkerReceiptFacts(runId),
|
|
257
|
-
);
|
|
255
|
+
const unbindRunReaders = deps.observability.bindRunReaders({
|
|
256
|
+
dispatchSnapshot: () => deps.dispatch.snapshot(),
|
|
257
|
+
readReceipt: (runId) => readWorkerReceiptFacts(runId),
|
|
258
|
+
});
|
|
259
|
+
const dispatchBoardStore = factories.createDispatchBoardStore(deps.observability);
|
|
258
260
|
const contextActivityStore = factories.createContextActivityStore(deps.bus);
|
|
259
261
|
|
|
260
262
|
const footerToolCounts = new Map<string, number>();
|
|
@@ -434,10 +436,58 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
434
436
|
const editor = deps.editor ?? factories.createEditor(deps.tui, editorChrome);
|
|
435
437
|
editor.focused = true;
|
|
436
438
|
const autocomplete: AutocompleteProvider = factories.createAutocomplete({
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
439
|
+
completionSources: {
|
|
440
|
+
agents: async () =>
|
|
441
|
+
(deps.agents?.listSpecs() ?? []).filter(isUserVisibleAgent).map((agent) => ({
|
|
442
|
+
id: agent.id,
|
|
443
|
+
value: agent.id,
|
|
444
|
+
label: agent.id,
|
|
445
|
+
description: agent.description,
|
|
446
|
+
})),
|
|
447
|
+
targets: async () =>
|
|
448
|
+
deps.providers.list().map(({ target, reason }) => ({
|
|
449
|
+
id: target.id,
|
|
450
|
+
value: target.id,
|
|
451
|
+
label: target.id,
|
|
452
|
+
description: reason,
|
|
453
|
+
})),
|
|
454
|
+
models: async () =>
|
|
455
|
+
deps.providers.list().flatMap(({ target, discoveredModels, discoveredModelLabels }) =>
|
|
456
|
+
[
|
|
457
|
+
...new Set([
|
|
458
|
+
...(target.defaultModel ? [target.defaultModel] : []),
|
|
459
|
+
...(target.wireModels ?? []),
|
|
460
|
+
...discoveredModels,
|
|
461
|
+
]),
|
|
462
|
+
].map((model) => ({
|
|
463
|
+
id: `${target.id}/${model}`,
|
|
464
|
+
value: model,
|
|
465
|
+
label: discoveredModelLabels?.[model] ?? model,
|
|
466
|
+
description: target.id,
|
|
467
|
+
})),
|
|
468
|
+
),
|
|
469
|
+
skills: async () =>
|
|
470
|
+
(deps.resources?.skills(getCwd()).items ?? []).map((skill) => ({
|
|
471
|
+
id: skill.name,
|
|
472
|
+
value: skill.name,
|
|
473
|
+
label: skill.name,
|
|
474
|
+
description: skill.description,
|
|
475
|
+
})),
|
|
476
|
+
tasks: async ({ subcommand }) =>
|
|
477
|
+
(deps.userTasks?.snapshot() ?? [])
|
|
478
|
+
.filter((task) =>
|
|
479
|
+
subcommand === "hand"
|
|
480
|
+
? task.status === "open"
|
|
481
|
+
: task.status === "open" || task.status === "handed" || task.status === "picked",
|
|
482
|
+
)
|
|
483
|
+
.map((task) => ({
|
|
484
|
+
id: task.id,
|
|
485
|
+
value: task.id,
|
|
486
|
+
label: task.title,
|
|
487
|
+
description: task.status,
|
|
488
|
+
})),
|
|
489
|
+
// Other slots remain empty when this presentation has no read-only catalog for them.
|
|
490
|
+
},
|
|
441
491
|
});
|
|
442
492
|
editor.setAutocompleteProvider(autocomplete);
|
|
443
493
|
|
|
@@ -539,6 +589,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
539
589
|
unsubscribeObservability();
|
|
540
590
|
contextActivityStore.unsubscribe();
|
|
541
591
|
dispatchBoardStore.unsubscribe();
|
|
592
|
+
unbindRunReaders();
|
|
542
593
|
};
|
|
543
594
|
const disposeStatus = (): void => {
|
|
544
595
|
if (statusDisposed) return;
|
|
@@ -24,6 +24,7 @@ import type { SessionContract, SessionEntry } from "../domains/session/index.js"
|
|
|
24
24
|
import { foldTaskBoard } from "../domains/session/task-board.js";
|
|
25
25
|
import { filterEntriesToActivePath } from "../domains/session/tree/active-path.js";
|
|
26
26
|
import type { ShareContract } from "../domains/share/index.js";
|
|
27
|
+
import type { UserTaskAcceptance } from "../domains/user-tasks/acceptance.js";
|
|
27
28
|
import type { UserTasksStore } from "../domains/user-tasks/store.js";
|
|
28
29
|
import { stripTerminalSequences } from "../engine/tui.js";
|
|
29
30
|
import type { ImageContent } from "../engine/types.js";
|
|
@@ -74,6 +75,7 @@ export interface InteractiveSlashRuntimeDeps {
|
|
|
74
75
|
io: RunIo;
|
|
75
76
|
bus: SafeEventBus;
|
|
76
77
|
dispatch: DispatchContract;
|
|
78
|
+
getDecisionBoard?: SlashCommandContext["getDecisionBoard"];
|
|
77
79
|
providers: ProvidersContract;
|
|
78
80
|
chat: SlashChat;
|
|
79
81
|
chatPanel: SlashChatPanel;
|
|
@@ -379,6 +381,7 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
379
381
|
});
|
|
380
382
|
},
|
|
381
383
|
dispatch: deps.dispatch,
|
|
384
|
+
...(deps.getDecisionBoard ? { getDecisionBoard: deps.getDecisionBoard } : {}),
|
|
382
385
|
bus: deps.bus,
|
|
383
386
|
...(deps.agents
|
|
384
387
|
? { getAgentRoleFacts: agentRoleFactsResolver((agentId: string) => deps.agents?.getSpec(agentId) ?? null) }
|
|
@@ -432,7 +435,7 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
432
435
|
...(userTasks
|
|
433
436
|
? {
|
|
434
437
|
userTasks: {
|
|
435
|
-
add: (title: string) => userTasks.add(title),
|
|
438
|
+
add: (title: string, acceptance?: UserTaskAcceptance) => userTasks.add(title, undefined, acceptance),
|
|
436
439
|
hand: (id: string) => userTasks.hand(id, deps.chat.getSessionId() ?? undefined),
|
|
437
440
|
done: (id: string) => userTasks.done(id),
|
|
438
441
|
drop: (id: string) => userTasks.drop(id),
|
|
@@ -33,7 +33,8 @@ function buildFullscreenLayout(
|
|
|
33
33
|
primary: true,
|
|
34
34
|
overscroll: "chain",
|
|
35
35
|
scrollbar: options.fullscreenScrollbar ?? "auto",
|
|
36
|
-
|
|
36
|
+
scrollbarTrackStyle: (text) => theme.fg("frame", text),
|
|
37
|
+
scrollbarThumbStyle: () => theme.fg("frameStrong", GLYPH.barFull),
|
|
37
38
|
});
|
|
38
39
|
const dock = new VStack();
|
|
39
40
|
if (parts.pending) dock.addChild(parts.pending, { shrink: 1, minSize: 0 });
|
|
@@ -16,6 +16,6 @@ export function buildModelReplayAgentMessagesFromTurns(
|
|
|
16
16
|
options: RehydrateChatPanelOptions = {},
|
|
17
17
|
): AgentMessage[] {
|
|
18
18
|
const activeLeafTurnId = options.activeLeafTurnId ?? options.uptoTurnId;
|
|
19
|
-
const projected = projectWorkingSet(entries, foldWorkingSet(entries, activeLeafTurnId));
|
|
20
|
-
return buildReplayAgentMessagesFromTurns(projected, options);
|
|
19
|
+
const projected = projectWorkingSet(entries, foldWorkingSet(entries, activeLeafTurnId), activeLeafTurnId);
|
|
20
|
+
return buildReplayAgentMessagesFromTurns(projected, { ...options, skillContextEntries: entries });
|
|
21
21
|
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import type { OracleResult } from "../domains/agents/index.js";
|
|
16
|
+
import { decisionRationale } from "../domains/session/decision-board.js";
|
|
16
17
|
import type { DecisionLedgerEntry } from "../domains/session/entries.js";
|
|
17
18
|
import type { TaskBoardTask } from "../domains/session/task-board.js";
|
|
18
19
|
|
|
@@ -89,12 +90,14 @@ function clamp(text: string, maxBytes: number): { text: string; truncated: boole
|
|
|
89
90
|
|
|
90
91
|
/** One decision line. Superseded decisions carry their correction so a reversal is visible. */
|
|
91
92
|
function decisionLine(decision: DecisionLedgerEntry["decisions"][number]): string {
|
|
93
|
+
const argument = decisionRationale(decision);
|
|
94
|
+
const details = argument ? `\n ${argument}` : "";
|
|
92
95
|
const label = decision.label ? ` (${decision.label})` : "";
|
|
93
96
|
if (decision.status === "superseded") {
|
|
94
97
|
const correction = decision.correction ? `; corrected to ${decision.correction}` : "";
|
|
95
|
-
return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]`;
|
|
98
|
+
return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]${details}`;
|
|
96
99
|
}
|
|
97
|
-
return `- ${decision.key}${label}: ${decision.value}`;
|
|
100
|
+
return `- ${decision.key}${label}: ${decision.value}${details}`;
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
function taskLine(task: TaskBoardTask): string {
|
|
@@ -527,6 +527,7 @@ export function showClioOverlayFrame(
|
|
|
527
527
|
unfocus: (unfocusOptions?: OverlayUnfocusOptions): void =>
|
|
528
528
|
unfocusOptions ? handle.unfocus(unfocusOptions) : handle.unfocus(),
|
|
529
529
|
isFocused: (): boolean => handle.isFocused(),
|
|
530
|
+
getBounds: () => handle.getBounds(),
|
|
530
531
|
};
|
|
531
532
|
}
|
|
532
533
|
|
|
@@ -19,6 +19,7 @@ import type { SessionMeta } from "../domains/session/index.js";
|
|
|
19
19
|
import { foldSessionArtifacts } from "../domains/session/session-artifacts.js";
|
|
20
20
|
import { foldSessionTaskHistory } from "../domains/session/task-board.js";
|
|
21
21
|
import { filterEntriesToActivePath } from "../domains/session/tree/active-path.js";
|
|
22
|
+
import { formatUserTaskHandoff } from "../domains/user-tasks/handoff.js";
|
|
22
23
|
import type { UserTasksStore } from "../domains/user-tasks/store.js";
|
|
23
24
|
import type { TUI } from "../engine/tui.js";
|
|
24
25
|
import { type OpenContextOverlayOptions, openContextOverlay } from "./context-overlay.js";
|
|
@@ -40,7 +41,7 @@ import {
|
|
|
40
41
|
import { formatDecisionCorrectionTurn, openDecisionsOverlay } from "./overlays/decisions.js";
|
|
41
42
|
import { openFleetRunApprovalOverlay } from "./overlays/fleet-run-approval.js";
|
|
42
43
|
import { openSideQuestionOverlay } from "./overlays/side-question.js";
|
|
43
|
-
import {
|
|
44
|
+
import type { ContextClearCommandOptions } from "./slash-commands.js";
|
|
44
45
|
import { openTasksOverlay } from "./tasks-overlay.js";
|
|
45
46
|
import { type ArtifactProviderDeps, createDefaultArtifactProviders } from "./view/artifacts.js";
|
|
46
47
|
import { openViewOverlay } from "./view/view-overlay.js";
|
|
@@ -487,6 +488,7 @@ export function createOverlayGeneralOpeners(deps: OverlayGeneralOpenersDeps): Ov
|
|
|
487
488
|
fleetRootId,
|
|
488
489
|
dispatch: deps.dispatch,
|
|
489
490
|
agents: { getSpec: (agentId) => agents.getSpec(agentId) },
|
|
491
|
+
...(deps.getDecisionBoard ? { getDecisionBoard: deps.getDecisionBoard } : {}),
|
|
490
492
|
attributionEnabled: deps.getSettings?.().integrations.git.commitAttribution ?? true,
|
|
491
493
|
vars: preview.vars,
|
|
492
494
|
onStepDispatched: (event) => {
|
|
@@ -304,6 +304,12 @@ export function createOverlaySessionLifecycle(deps: OverlaySessionLifecycleDeps)
|
|
|
304
304
|
}
|
|
305
305
|
deps.resetTranscript();
|
|
306
306
|
replayFork(forkedSessionId, parentTurnId, session);
|
|
307
|
+
emitCommandNotice(
|
|
308
|
+
deps.getSlashNotice(),
|
|
309
|
+
"info",
|
|
310
|
+
"fork",
|
|
311
|
+
"Conversation forked. Workspace files were not rewound; existing edits remain.",
|
|
312
|
+
);
|
|
307
313
|
} catch (error) {
|
|
308
314
|
deps.stderr(`[/fork] fork failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
309
315
|
}
|
|
@@ -1270,6 +1270,7 @@ export function openAskUserOverlay(tui: TUI, deps: OpenAskUserOverlayDeps): AskU
|
|
|
1270
1270
|
focus: () => handle?.focus(),
|
|
1271
1271
|
unfocus: (options) => (options ? handle?.unfocus(options) : handle?.unfocus()),
|
|
1272
1272
|
isFocused: () => handle?.isFocused() ?? false,
|
|
1273
|
+
getBounds: () => handle?.getBounds(),
|
|
1273
1274
|
ask: (questions, presentation) => view.begin(questions, presentation),
|
|
1274
1275
|
cancel: () => view.cancel(),
|
|
1275
1276
|
close,
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
wrapTextWithAnsi,
|
|
22
22
|
} from "../../engine/tui.js";
|
|
23
23
|
import type { FleetRunPreview, FleetRunPreviewStep } from "../fleet-run-preview.js";
|
|
24
|
+
import { formatUsd } from "../footer/widgets.js";
|
|
24
25
|
import { buildResponsiveHint, FocusBox, showClioOverlayFrame } from "../overlay-frame.js";
|
|
25
26
|
import { clioTheme, rule } from "../theme/index.js";
|
|
26
27
|
|
|
@@ -83,12 +84,12 @@ function formatFleetRunPreviewStep(step: FleetRunPreviewStep): string {
|
|
|
83
84
|
return `agent ${step.stepId}${loop} · ${step.agentId ?? "?"} · ${route}${node}${declaredRoute}${gate}${dynamicPlan} · ${step.scope} · ${formatWriteBoundary(step.writes)}`;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
function formatBudgetLine(preview: FleetRunPreview): string {
|
|
87
|
+
export function formatBudgetLine(preview: FleetRunPreview): string {
|
|
87
88
|
const contract =
|
|
88
89
|
preview.budget.contractUsd === null
|
|
89
90
|
? "contract declares no ceiling"
|
|
90
91
|
: `contract ceiling $${preview.budget.contractUsd.toFixed(2)}`;
|
|
91
|
-
return `budget: admitted under $${preview.budget.ceilingUsd.toFixed(2)} session ceiling,
|
|
92
|
+
return `budget: admitted under $${preview.budget.ceilingUsd.toFixed(2)} session ceiling, ${formatUsd(preview.budget.currentUsd)} spent, ${contract}`;
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
/**
|
|
@@ -25,8 +25,8 @@ const PREVIEW_WIDTH = 60;
|
|
|
25
25
|
* calls onFork(parentTurnId); the caller wires that through
|
|
26
26
|
* SessionContract.fork(parentTurnId).
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
28
|
+
* Scope: current-session turns only. A multi-session picker is not
|
|
29
|
+
* implemented; it would need TreeSnapshot to carry a payload preview field.
|
|
30
30
|
*/
|
|
31
31
|
export interface OpenMessagePickerOverlayDeps {
|
|
32
32
|
session: SessionContract;
|
|
@@ -150,7 +150,7 @@ export function openMessagePickerOverlay(tui: TUI, deps: OpenMessagePickerOverla
|
|
|
150
150
|
anchor: "center",
|
|
151
151
|
width: MESSAGE_PICKER_OVERLAY_WIDTH,
|
|
152
152
|
markerId: "message-picker",
|
|
153
|
-
title: "Fork",
|
|
153
|
+
title: "Fork conversation; workspace files stay unchanged",
|
|
154
154
|
footerHint: rows.length > 0 ? buildHint([{ key: "Enter", verb: "select" }]) : buildHint([]),
|
|
155
155
|
});
|
|
156
156
|
}
|
|
@@ -600,10 +600,10 @@ const SETTINGS_VALUE_HELP_BY_ID: Partial<Record<EditableSettingId, Record<string
|
|
|
600
600
|
false: "context is only compacted when you run /context compact",
|
|
601
601
|
},
|
|
602
602
|
// `embedded` is a declared rung with no implementation behind it yet; it
|
|
603
|
-
//
|
|
603
|
+
// refuses until Clio can own a pane host, and the hint says so.
|
|
604
604
|
"panes.enabled": {
|
|
605
605
|
auto: "detect a herdr session and join it as a guest; no pane host, no panes",
|
|
606
|
-
embedded: "not implemented yet;
|
|
606
|
+
embedded: "not implemented yet; use auto or guest",
|
|
607
607
|
off: "never detect or open a pane",
|
|
608
608
|
},
|
|
609
609
|
"retry.enabled": {
|
|
@@ -16,14 +16,14 @@ export const TREE_OVERLAY_WIDTH = 88;
|
|
|
16
16
|
const VISIBLE_ROWS = 16;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* /tree navigator overlay.
|
|
19
|
+
* /tree navigator overlay. Behaviors:
|
|
20
20
|
* - One row per node, indented two spaces per branch level (not per message)
|
|
21
21
|
* - Shift+T toggles operator-local timestamps on/off
|
|
22
22
|
* - `e` enters label edit submode (Enter commits, Esc cancels)
|
|
23
23
|
* - Enter on a row switches the active append point to that turn id
|
|
24
24
|
* - Esc closes the overlay
|
|
25
25
|
*
|
|
26
|
-
* Cwd-toggle (`p`) and sort-order (`s`)
|
|
26
|
+
* Cwd-toggle (`p`) and sort-order (`s`) are not implemented.
|
|
27
27
|
*
|
|
28
28
|
* The overlay queries `session.tree()` on open and after any mutation so
|
|
29
29
|
* label edits are reflected without a close/reopen cycle.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Renderer for BranchSummary session entries
|
|
2
|
+
* Renderer for BranchSummary session entries.
|
|
3
3
|
*
|
|
4
4
|
* A branchSummary entry is produced when a fork inherits a compacted parent
|
|
5
5
|
* context: the new session opens with a single summary block standing in for
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* two surfaces stay byte-identical.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
import { trustStateWord } from "../../domains/evidence/trust-projection.js";
|
|
15
16
|
import { sanitizeCallTargetText } from "../../domains/safety/call-target.js";
|
|
16
17
|
import { redactSecretString, redactToolArgs } from "../../domains/safety/redaction.js";
|
|
17
18
|
import { formatSize } from "../../engine/truncate.js";
|
|
@@ -320,7 +321,22 @@ function outcomeSummary(finished: ToolExecutionFinished): string | null {
|
|
|
320
321
|
if (finished.toolName === "dispatch") {
|
|
321
322
|
const receipts = numberField(details, "receiptCount");
|
|
322
323
|
const failed = numberField(details, "failedCount") ?? 0;
|
|
323
|
-
if (receipts !== null)
|
|
324
|
+
if (receipts !== null) {
|
|
325
|
+
const runs = Array.isArray(details?.runs) ? details.runs.slice(0, receipts) : [];
|
|
326
|
+
const qualityCounts = new Map<string, number>();
|
|
327
|
+
for (const run of runs) {
|
|
328
|
+
const trust = isPlainObject(run) && isPlainObject(run.trust) ? run.trust : null;
|
|
329
|
+
const axes = isPlainObject(trust?.axes) ? trust.axes : null;
|
|
330
|
+
const word = trustStateWord("validationGrounding", stringField(axes, "validationGrounding") ?? "unknown");
|
|
331
|
+
qualityCounts.set(word, (qualityCounts.get(word) ?? 0) + 1);
|
|
332
|
+
}
|
|
333
|
+
if (runs.length < receipts) {
|
|
334
|
+
const unknown = trustStateWord("validationGrounding", "unknown");
|
|
335
|
+
qualityCounts.set(unknown, (qualityCounts.get(unknown) ?? 0) + receipts - runs.length);
|
|
336
|
+
}
|
|
337
|
+
const quality = [...qualityCounts].map(([word, count]) => `${count} ${word}`).join(", ");
|
|
338
|
+
return `${receipts} task${receipts === 1 ? "" : "s"} -> ${receipts - failed} execution ok${failed > 0 ? `, ${failed} execution failed` : ""}${quality ? `; quality: ${quality}` : ""}`;
|
|
339
|
+
}
|
|
324
340
|
return null;
|
|
325
341
|
}
|
|
326
342
|
if (finished.toolName === "tasks") {
|
|
@@ -11,17 +11,20 @@
|
|
|
11
11
|
* ◇ coder · node-a/example-coder-model · run 2mkas6s
|
|
12
12
|
* │ Hello! I'm the coder worker.
|
|
13
13
|
* │ ⚙ read · artifact
|
|
14
|
-
* └ ✓ ok · 4.8k tok · 9.6s · contract pass
|
|
14
|
+
* └ ✓ execution ok · 4.8k tok · 9.6s · contract pass
|
|
15
|
+
* │ quality: grounded
|
|
15
16
|
*
|
|
16
|
-
* Folded (the default for a run the model asked for)
|
|
17
|
-
*
|
|
17
|
+
* Folded (the default for a run the model asked for) keeps identity and
|
|
18
|
+
* execution on a tool-style subline, followed by the settled quality fact:
|
|
18
19
|
*
|
|
19
|
-
* ◆ scout · node-b/example-scout-model · run 3nc18jo ✓ · 41s (Ctrl+O)
|
|
20
|
+
* ◆ scout · node-b/example-scout-model · run 3nc18jo ✓ execution ok · 41s (Ctrl+O)
|
|
21
|
+
* │ quality: validation failed
|
|
20
22
|
*
|
|
21
23
|
* Pure: no I/O, no module-level mutable state beyond the shared theme handle.
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
26
|
import { parseJsonObjectPayload } from "../../core/json-payload.js";
|
|
27
|
+
import { trustStateWord } from "../../domains/evidence/trust-projection.js";
|
|
25
28
|
import { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "../../engine/tui.js";
|
|
26
29
|
import { formatFooterTokens } from "../footer-panel.js";
|
|
27
30
|
import { type ClioToken, clioTheme, fitUnits, formatCompactMs, GLYPH } from "../theme/index.js";
|
|
@@ -80,14 +83,14 @@ function headerLine(entry: WorkerEntryState, width: number): string {
|
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
86
|
+
* Execution outcome, explicitly named on successful folded and expanded rows
|
|
87
|
+
* so the separate quality line cannot be mistaken for process status.
|
|
85
88
|
* Abandoned names itself rather than falling through to its `stalled`
|
|
86
89
|
* outcome code, so it reads as a ledger-side finding instead of the ordinary
|
|
87
90
|
* heartbeat-timeout `stalled` a sealed receipt reports.
|
|
88
91
|
*/
|
|
89
92
|
function outcomeUnit(receipt: WorkerReceiptSummary, word: boolean): string {
|
|
90
|
-
if (receipt.outcome === "succeeded") return theme.fg("success",
|
|
93
|
+
if (receipt.outcome === "succeeded") return theme.fg("success", `${GLYPH.ok} execution ok`);
|
|
91
94
|
if (receipt.outcome === "canceled") return theme.fg("dim", `${GLYPH.cancelled} canceled`);
|
|
92
95
|
if (receipt.abandonedDetail !== undefined) return theme.fg("error", word ? `${GLYPH.error} abandoned` : GLYPH.error);
|
|
93
96
|
return theme.fg("error", `${GLYPH.error} ${receipt.outcomeCode ?? receipt.outcome}`);
|
|
@@ -397,8 +400,12 @@ function foldedLine(entry: WorkerEntryState, width: number, expandKey: string |
|
|
|
397
400
|
entry.receipt?.durationMs === undefined ? "" : dim(`${SEPARATOR}${formatCompactMs(entry.receipt.durationMs)}`);
|
|
398
401
|
const hint = expandKey === undefined || expandKey.length === 0 ? "" : dim(` (${expandKey})`);
|
|
399
402
|
const full = ` ${status}${elapsed}${hint}`;
|
|
400
|
-
|
|
401
|
-
|
|
403
|
+
let tail = visibleWidth(identity) + visibleWidth(full) <= width ? full : ` ${status}${hint}`;
|
|
404
|
+
// Reserve one identity cell. The optional hint yields before execution
|
|
405
|
+
// status when the suffix alone would exhaust the header's width.
|
|
406
|
+
if (visibleWidth(tail) >= width) tail = ` ${status}`;
|
|
407
|
+
const header = `${truncateToWidth(identity, Math.max(1, width - visibleWidth(tail)), GLYPH.ellipsis, false)}${tail}`;
|
|
408
|
+
return truncateToWidth(header, width, GLYPH.ellipsis, false);
|
|
402
409
|
}
|
|
403
410
|
|
|
404
411
|
export function renderWorkerEntryLines(
|
|
@@ -407,7 +414,14 @@ export function renderWorkerEntryLines(
|
|
|
407
414
|
options: WorkerEntryRenderOptions,
|
|
408
415
|
): string[] {
|
|
409
416
|
const safeWidth = Math.max(1, Math.floor(width));
|
|
410
|
-
|
|
417
|
+
const quality = isPending(entry)
|
|
418
|
+
? []
|
|
419
|
+
: railLines(
|
|
420
|
+
`quality: ${trustStateWord("validationGrounding", entry.receipt?.trust?.validationGrounding.state ?? "unknown")}`,
|
|
421
|
+
"muted",
|
|
422
|
+
safeWidth,
|
|
423
|
+
);
|
|
424
|
+
if (options.folded) return [foldedLine(entry, safeWidth, options.expandKey), ...quality];
|
|
411
425
|
const tools = toolLine(entry, safeWidth);
|
|
412
426
|
return [
|
|
413
427
|
headerLine(entry, safeWidth),
|
|
@@ -416,5 +430,6 @@ export function renderWorkerEntryLines(
|
|
|
416
430
|
...(tools === null ? [] : [tools]),
|
|
417
431
|
...failureLines(entry, safeWidth),
|
|
418
432
|
footerLine(entry, safeWidth),
|
|
433
|
+
...quality,
|
|
419
434
|
];
|
|
420
435
|
}
|