@iowarp/clio-coder 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +116 -2
- package/CONTRIBUTING.md +39 -24
- package/NOTICE +16 -0
- package/README.md +343 -403
- package/dist/{acp-WNAYYF4F.js → acp-UVEVWSDL.js} +25 -24
- package/dist/{agents-3OKXHLOI.js → agents-VWY37DTK.js} +78 -77
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-VKNNMGPU.js → auth-PCV2XQDV.js} +38 -38
- package/dist/builtins-PD652MTK.js +22 -0
- package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
- package/dist/{chunk-NRO2BJRH.js → chunk-24T2YZ7A.js} +10686 -4464
- package/dist/{chunk-Y55JBDO5.js → chunk-2AKYFREM.js} +38 -23
- package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
- package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
- package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
- package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
- package/dist/{chunk-UXCU4E3T.js → chunk-3BJGMT2D.js} +35 -14
- package/dist/{chunk-5ICU3EUH.js → chunk-3HQVBIKD.js} +5 -5
- package/dist/{chunk-GWZNEVM2.js → chunk-3JLFK5MW.js} +9 -9
- package/dist/{chunk-XXYSBZIQ.js → chunk-3O2ZAUGQ.js} +4 -4
- package/dist/{chunk-GX5WYQO4.js → chunk-3QKXHCGS.js} +8 -8
- package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
- package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
- package/dist/{chunk-OEJSLEPW.js → chunk-3WBALRQH.js} +337 -337
- package/dist/{chunk-ELWDPP3Y.js → chunk-4DU2TVI4.js} +8 -8
- package/dist/{chunk-JSD46VO2.js → chunk-4U4TKZFR.js} +43 -36
- package/dist/{chunk-FEAXX7B6.js → chunk-4VMV6OS6.js} +4 -4
- package/dist/{chunk-2ZSONWVL.js → chunk-536HXRFE.js} +13 -13
- package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
- package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
- package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
- package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
- package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
- package/dist/{chunk-Q4WO54TA.js → chunk-5QRX7SLS.js} +11 -11
- package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
- package/dist/chunk-5ZSZEYJK.js +119 -0
- package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
- package/dist/{chunk-DT3LWJOB.js → chunk-6HAO6X5B.js} +24 -6
- package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
- package/dist/{chunk-K6T2ZAMZ.js → chunk-6OII3LOK.js} +6 -6
- package/dist/{chunk-36CT5VVL.js → chunk-6RYDAVQT.js} +138 -89
- package/dist/{chunk-I7XBWTYH.js → chunk-6VRRJT7L.js} +5 -5
- package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
- package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
- package/dist/{chunk-NAI6ZFCY.js → chunk-7JSSKXG2.js} +122 -11
- package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
- package/dist/chunk-7WUZEB2M.js +165 -0
- package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
- package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
- package/dist/{chunk-IXIY2H4R.js → chunk-ACCKVSHU.js} +5 -5
- package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
- package/dist/{chunk-JEIYHLOR.js → chunk-B3MOMLJ4.js} +12 -12
- package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
- package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
- package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
- package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
- package/dist/{chunk-23L32XTI.js → chunk-BLTEAUCB.js} +68 -39
- package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
- package/dist/{chunk-XULDXHTN.js → chunk-BT7HGDOX.js} +105 -53
- package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
- package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
- package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
- package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
- package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
- package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
- package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
- package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
- package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
- package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
- package/dist/{chunk-6UINWWS6.js → chunk-DXLUVUD4.js} +16 -16
- package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
- package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
- package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
- package/dist/{chunk-JT2RFCC5.js → chunk-E7RF4KBO.js} +5 -5
- package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
- package/dist/chunk-ECOMVOHP.js +139 -0
- package/dist/chunk-EFSEIZE6.js +56 -0
- package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
- package/dist/chunk-EM2WNQS2.js +93 -0
- package/dist/{chunk-57XXR6DR.js → chunk-F5Z7EWMN.js} +967 -246
- package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
- package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
- package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
- package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
- package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
- package/dist/{chunk-EXLD33WO.js → chunk-GLYBJ4RQ.js} +24 -9
- package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
- package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
- package/dist/{chunk-FFUPXJC4.js → chunk-HPTJF6DG.js} +32 -56
- package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
- package/dist/{chunk-CUSRQKPU.js → chunk-HZ2T2YED.js} +299 -89
- package/dist/{chunk-YD5GIKET.js → chunk-HZFBVU5X.js} +49 -580
- package/dist/{chunk-6QOTUPRG.js → chunk-I2K2NCZQ.js} +65 -17
- package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
- package/dist/{chunk-I2DWJ4GM.js → chunk-IGLVVNEG.js} +54 -42
- package/dist/{chunk-6Q3CYFD3.js → chunk-IKRWLEDA.js} +186 -35
- package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
- package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
- package/dist/{chunk-2DSOYNFC.js → chunk-JMPL7NUB.js} +7 -7
- package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
- package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
- package/dist/{chunk-54X7T7DK.js → chunk-KAFMW7WM.js} +72 -81
- package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
- package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
- package/dist/chunk-KPRLAMP4.js +32 -0
- package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
- package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
- package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
- package/dist/{chunk-JQLNNIKT.js → chunk-LIN2K3EL.js} +6 -6
- package/dist/{chunk-2STGEDFV.js → chunk-LK2FN5JY.js} +2 -2
- package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
- package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
- package/dist/chunk-LUL5Z66S.js +221 -0
- package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
- package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
- package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
- package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
- package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
- package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
- package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
- package/dist/{chunk-4WR7VSYB.js → chunk-N2OKBREN.js} +23 -9
- package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
- package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
- package/dist/{chunk-4M6Z5QVF.js → chunk-NNWJYUNO.js} +11 -11
- package/dist/chunk-NTK3WTHM.js +141 -0
- package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
- package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
- package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
- package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
- package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
- package/dist/{chunk-75W7L2E2.js → chunk-P5JMBPDJ.js} +1052 -171
- package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
- package/dist/{chunk-S6PYF2XF.js → chunk-P6M7RKMI.js} +4 -4
- package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
- package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
- package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
- package/dist/{chunk-DXKJURES.js → chunk-PZN2LQY6.js} +14 -11
- package/dist/{chunk-N56KALIC.js → chunk-Q7NNUHQV.js} +62 -35
- package/dist/{chunk-RQCKCSRL.js → chunk-QCOV5DFY.js} +22 -22
- package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
- package/dist/{chunk-NEKRRTYW.js → chunk-QJMRYTCX.js} +8 -8
- package/dist/{chunk-YNFKXPEC.js → chunk-QNWRHOMF.js} +35 -66
- package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
- package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
- package/dist/{chunk-72YIHOZQ.js → chunk-QXFBABFJ.js} +10 -10
- package/dist/chunk-R2CT5YDO.js +66 -0
- package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
- package/dist/{chunk-IGLP3ODT.js → chunk-RGZNQ5CT.js} +15 -15
- package/dist/chunk-SD7SHNDW.js +15 -0
- package/dist/chunk-SL2RDHKO.js +19 -0
- package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
- package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
- package/dist/{chunk-UEPWCCTY.js → chunk-SXQKNKRA.js} +12 -12
- package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
- package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
- package/dist/{chunk-5636DCO5.js → chunk-TJFDL26W.js} +59 -12
- package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
- package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
- package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
- package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
- package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
- package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
- package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
- package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
- package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
- package/dist/chunk-USZA7GWL.js +341 -0
- package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
- package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
- package/dist/{chunk-7UGL4MB5.js → chunk-VAHLPXPY.js} +10 -10
- package/dist/{chunk-25QBEXRS.js → chunk-VANN3GDP.js} +7 -26
- package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
- package/dist/{chunk-QUFRYSWI.js → chunk-VHMX7SXF.js} +129 -48
- package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
- package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
- package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
- package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
- package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
- package/dist/{chunk-USR47QNF.js → chunk-WKUYQBCG.js} +14 -14
- package/dist/{chunk-GHS5EBTQ.js → chunk-WNGF5AJX.js} +36 -22
- package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
- package/dist/{chunk-6OSVSQL5.js → chunk-WV6TDAPN.js} +41 -23
- package/dist/chunk-WXA2CFJO.js +23 -0
- package/dist/{chunk-2ASED4PZ.js → chunk-X3BI7HTV.js} +26 -26
- package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
- package/dist/{chunk-RZDWV63N.js → chunk-XWMSPJYN.js} +6 -6
- package/dist/chunk-YGDMBK7O.js +567 -0
- package/dist/{chunk-6PAZTBPA.js → chunk-YPRSNUTC.js} +15 -6
- package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
- package/dist/{chunk-LTIKRKFL.js → chunk-ZS43Y2FT.js} +4 -4
- package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
- package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
- package/dist/cli/index.js +44 -44
- package/dist/clio-QQCMTUZE.js +26 -0
- package/dist/{code-nav-IJR2DBPR.js → code-nav-GUPM6766.js} +48 -32
- package/dist/codewiki/build-worker.js +76 -29
- package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
- package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
- package/dist/{config-IUA6OYNS.js → config-IIM7YOD3.js} +211 -124
- package/dist/configure-4ZM5HWJX.js +73 -0
- package/dist/{context-BOYF5EJM.js → context-44BZLJ3J.js} +62 -31
- package/dist/{context-4MPR7WKB.js → context-AIDVQKMW.js} +126 -121
- package/dist/{context-2DKHWH2T.js → context-OL5P3HEP.js} +92 -62
- package/dist/context-clear-OQV76MYP.js +184 -0
- package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
- package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
- package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-ZUW3EGLS.js} +32 -31
- package/dist/detail-UXPWRANG.js +115 -0
- package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-P3ZW6G77.js} +192 -116
- package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
- package/dist/{doctor-DKICC2SN.js → doctor-JJVGPZWT.js} +59 -58
- package/dist/{eval-OQOQUDHK.js → eval-V2RTN3UH.js} +476 -170
- package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
- package/dist/evidence-35PYWGSO.js +225 -0
- package/dist/{evidence-4DQ25GUQ.js → evidence-CIGGKI6J.js} +111 -94
- package/dist/{evolve-GSS52E5J.js → evolve-33SM3NJP.js} +108 -91
- package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
- package/dist/{fleet-Q37YHHAQ.js → fleet-LFO7SIPC.js} +147 -146
- package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-RLK72GU3.js} +27 -26
- package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
- package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-JZIBCGMW.js} +39 -38
- package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-2L5YGGZJ.js} +108 -91
- package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
- package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
- package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-LIAVKDUU.js} +46 -42
- package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-JIK3OQZR.js} +106 -89
- package/dist/fleet-view-IWHYGQKK.js +118 -0
- package/dist/{init-PXEXQSBF.js → init-NJEDOTQW.js} +124 -123
- package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
- package/dist/{interop-ZG5T62U3.js → interop-RVCAYECG.js} +25 -25
- package/dist/inventory-74UL7UHU.js +118 -0
- package/dist/{library-B2W4N74O.js → library-CTKZA7K3.js} +45 -44
- package/dist/{memory-YCANYS5A.js → memory-I76I5VUH.js} +108 -93
- package/dist/{models-GERTU3YI.js → models-D4YDIQZQ.js} +64 -62
- package/dist/{monitor-CPNIUULB.js → monitor-NKVD55HX.js} +137 -107
- package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-I6OATVPK.js} +1715 -1687
- package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
- package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
- package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
- package/dist/preload-EJAWJEIO.js +116 -0
- package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
- package/dist/{reset-TNWTB5LU.js → reset-4XMQKDNZ.js} +22 -20
- package/dist/{resources-4PXNMD5G.js → resources-TVYVXK3Q.js} +41 -40
- package/dist/{run-D6XJ34CN.js → run-OWQNNSJU.js} +164 -157
- package/dist/{share-2NWMJJEE.js → share-NPZZMUXG.js} +43 -42
- package/dist/{skills-KR7WON5G.js → skills-OXFEAWMT.js} +47 -46
- package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-J5TCKSJA.js} +128 -107
- package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-7II4DM57.js} +41 -40
- package/dist/slash-commands-MDSDSWYF.js +92 -0
- package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
- package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
- package/dist/{targets-OMH2XCSN.js → targets-KILZEOCE.js} +161 -94
- package/dist/tasks-R6P6OV22.js +36 -0
- package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-LZCG2KN3.js} +12 -11
- package/dist/tools-6OCQ6SVB.js +28 -0
- package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
- package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
- package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
- package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
- package/dist/{upgrade-MS72RJEP.js → upgrade-D2OZH6IQ.js} +42 -41
- package/dist/{usage-NHG6MCJM.js → usage-PIASNUS4.js} +137 -105
- package/dist/{verifiers-7AUNVXDY.js → verifiers-LTHUY2PX.js} +28 -27
- package/dist/verify-HYF7KBVE.js +30 -0
- package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
- package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
- package/dist/wiki-generate-RK7JQ5NP.js +615 -0
- package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
- package/dist/worker/entry.js +108 -95
- package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
- package/docs/README.md +7 -6
- package/docs/architecture/acp.md +10 -0
- package/docs/architecture/architecture.md +5 -5
- package/docs/architecture/context-engine.md +45 -60
- package/docs/architecture/context-working-set.md +7 -9
- package/docs/architecture/dispatch-architecture-rationale.md +1 -1
- package/docs/architecture/evidence-and-memory.md +10 -0
- package/docs/architecture/pi-boundary.md +37 -7
- package/docs/architecture/prompt-envelope-and-tools.md +7 -7
- package/docs/architecture/session-lifecycle.md +4 -4
- package/docs/architecture/tui-design.md +45 -30
- package/docs/architecture/worker-dispatch-mechanics.md +4 -0
- package/docs/guide/commands-and-modes.md +75 -61
- package/docs/guide/configuration-and-targets.md +126 -26
- package/docs/guide/configuration-reference.md +22 -7
- package/docs/guide/environment-variables.md +6 -2
- package/docs/guide/fleet-dispatch.md +13 -6
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +79 -20
- package/docs/guide/proactive-memory.md +1 -1
- package/docs/guide/skills-marketplace.md +11 -3
- package/docs/guide/tool-usage.md +9 -2
- package/docs/process/development-pipeline.md +11 -11
- package/docs/process/documentation-coverage.md +1 -1
- package/docs/process/documentation-guide.md +2 -2
- package/docs/process/eval-runner.md +15 -0
- package/docs/process/evals-internal.md +1 -1
- package/docs/process/release-cut-checklist.md +24 -12
- package/evals/README.md +4 -0
- package/evals/behavioral-corpus-grader.mjs +147 -14
- package/evals/behavioral-model-negative-control.yaml +1 -0
- package/evals/behavioral-model.yaml +266 -1
- package/evals/fixtures/docs-retrieval.json +102 -0
- package/evals/fixtures/scalar-decision.json +17 -0
- package/evals/fixtures/scout-citation-pipeline.json +55 -0
- package/evals/fixtures/source-explanation.json +74 -0
- package/evals/fixtures/tool-arguments.json +18 -0
- package/evals/fixtures/tool-surface/read.txt +4 -0
- package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
- package/evals/no-edit-memory-grader.mjs +149 -0
- package/evals/scalar-decision-grader.py +41 -0
- package/evals/scalar-decision-machinery.ts +145 -0
- package/evals/source-explanation-grader.mjs +118 -0
- package/evals/tool-surface-grader.mjs +53 -0
- package/evals/tool-surface-model.yaml +274 -0
- package/package.json +14 -14
- package/skills/README.md +6 -6
- package/skills/registry.yaml +1 -1
- package/skills/skill-marketplace.json +1 -1
- package/src/cli/ask.ts +10 -10
- package/src/cli/bootstrap-generate.ts +6 -0
- package/src/cli/config-inspect.ts +24 -7
- package/src/cli/config-trust.ts +62 -0
- package/src/cli/config.ts +8 -0
- package/src/cli/configure-editor.ts +51 -0
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure-oauth.ts +1 -1
- package/src/cli/configure-onboarding.ts +232 -96
- package/src/cli/configure-prompts.ts +76 -0
- package/src/cli/configure-quick.ts +274 -0
- package/src/cli/configure-target.ts +14 -2
- package/src/cli/configure.ts +413 -174
- package/src/cli/context-map.ts +75 -14
- package/src/cli/context.ts +46 -17
- package/src/cli/eval.ts +17 -3
- package/src/cli/modes/print.ts +32 -4
- package/src/cli/oauth-manual-input.ts +1 -1
- package/src/cli/reset.ts +2 -0
- package/src/cli/run.ts +16 -14
- package/src/cli/select.ts +35 -4
- package/src/cli/skills-eval.ts +10 -8
- package/src/cli/steer-channel.ts +31 -18
- package/src/cli/targets.ts +83 -31
- package/src/cli/tasks.ts +10 -1
- package/src/cli/upgrade.ts +11 -8
- package/src/cli/usage.ts +24 -0
- package/src/cli/wiki-generate.ts +239 -96
- package/src/core/bash-exec.ts +43 -15
- package/src/core/bus-events.ts +15 -0
- package/src/core/config.ts +39 -15
- package/src/core/defaults.ts +38 -15
- package/src/{interactive → core}/external-editor.ts +4 -4
- package/src/core/file-references.ts +11 -1
- package/src/core/incomplete-installation.ts +3 -1
- package/src/core/settings-layers.ts +21 -5
- package/src/core/termination.ts +26 -9
- package/src/core/untrusted-content.ts +16 -0
- package/src/core/workspace-trust.ts +179 -0
- package/src/domains/agents/builtins/coder.md +4 -2
- package/src/domains/agents/builtins/context-bootstrap.md +3 -1
- package/src/domains/agents/builtins/documenter.md +7 -4
- package/src/domains/agents/builtins/researcher.md +1 -0
- package/src/domains/agents/builtins/scout.md +7 -1
- package/src/domains/agents/result-contract.ts +199 -26
- package/src/domains/config/classify.ts +1 -1
- package/src/domains/config/keybindings.ts +3 -31
- package/src/domains/context/bootstrap-prompt.ts +11 -9
- package/src/domains/context/bootstrap.ts +74 -39
- package/src/domains/context/clio-md.ts +88 -26
- package/src/domains/context/codewiki/build-operation.ts +121 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
- package/src/domains/context/codewiki/build-worker.ts +3 -35
- package/src/domains/context/codewiki/coordinator.ts +36 -6
- package/src/domains/context/codewiki/indexer.ts +59 -19
- package/src/domains/context/contract.ts +6 -2
- package/src/domains/context/extension.ts +72 -10
- package/src/domains/context/fingerprint.ts +39 -34
- package/src/domains/context/index.ts +7 -1
- package/src/domains/context/prompt-context.ts +55 -14
- package/src/domains/context/refresh.ts +9 -57
- package/src/domains/context/wiki/assemble.ts +14 -10
- package/src/domains/context/wiki/evidence.ts +209 -0
- package/src/domains/context/wiki/generate.ts +201 -67
- package/src/domains/context/wiki/meta.ts +10 -2
- package/src/domains/context/wiki/plan-store.ts +70 -14
- package/src/domains/context/wiki/plan.ts +71 -14
- package/src/domains/context/wiki/prompts.ts +42 -1
- package/src/domains/context/wiki/source-content.ts +106 -0
- package/src/domains/context/wiki/staleness.ts +33 -22
- package/src/domains/context/working-set/contract.ts +8 -2
- package/src/domains/context/working-set/engine.ts +17 -4
- package/src/domains/context/working-set/fold.ts +15 -2
- package/src/domains/context/working-set/marker.ts +2 -1
- package/src/domains/context/working-set/project.ts +18 -7
- package/src/domains/context/working-set/recall.ts +82 -56
- package/src/domains/dispatch/active-route-planner.ts +6 -3
- package/src/domains/dispatch/admission-queue.ts +19 -7
- package/src/domains/dispatch/admission.ts +3 -3
- package/src/domains/dispatch/budget-envelope.ts +47 -82
- package/src/domains/dispatch/capacity-lease.ts +57 -19
- package/src/domains/dispatch/contract.ts +10 -2
- package/src/domains/dispatch/event-pump.ts +28 -7
- package/src/domains/dispatch/execution-role.ts +49 -2
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +190 -105
- package/src/domains/dispatch/fleet-run.ts +20 -0
- package/src/domains/dispatch/gate-role-prompts.ts +4 -2
- package/src/domains/dispatch/parallel-writers.ts +34 -0
- package/src/domains/dispatch/reservation-store.ts +8 -34
- package/src/domains/dispatch/route-approval.ts +3 -3
- package/src/domains/dispatch/route-observer.ts +4 -2
- package/src/domains/dispatch/route-quality.ts +6 -1
- package/src/domains/dispatch/types.ts +4 -3
- package/src/domains/dispatch/worker-spawn.ts +58 -21
- package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
- package/src/domains/eval/compare/behavioral.ts +81 -14
- package/src/domains/eval/compare/compare.ts +15 -5
- package/src/domains/eval/compare/envelope.ts +12 -5
- package/src/domains/eval/metrics/context.ts +24 -1
- package/src/domains/eval/metrics/tracked.ts +4 -28
- package/src/domains/eval/reports/comparison.ts +9 -9
- package/src/domains/eval/runners/clio-run.ts +5 -1
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +1 -0
- package/src/domains/eval/suites/run.ts +189 -13
- package/src/domains/eval/verifiers/integrity.ts +39 -0
- package/src/domains/eval/verifiers/patch.ts +58 -2
- package/src/domains/eval/workspaces/temp-copy.ts +3 -0
- package/src/domains/evidence/build.ts +4 -2
- package/src/domains/interop/registry.ts +2 -2
- package/src/domains/middleware/hooks-io.ts +45 -26
- package/src/domains/middleware/hooks.ts +6 -0
- package/src/domains/middleware/injection-screen.ts +23 -0
- package/src/domains/middleware/rules.ts +5 -1
- package/src/domains/middleware/stalled-turn.ts +18 -3
- package/src/domains/middleware/task-board-reminder.ts +4 -2
- package/src/domains/middleware/task-nudge.ts +4 -1
- package/src/domains/mux/contract.ts +34 -1
- package/src/domains/mux/dock-controller.ts +8 -1
- package/src/domains/mux/index.ts +1 -0
- package/src/domains/mux/socket-client.ts +13 -3
- package/src/domains/observability/contract.ts +2 -2
- package/src/domains/observability/projection.ts +30 -9
- package/src/domains/prompts/compiler.ts +10 -2
- package/src/domains/prompts/contract.ts +7 -4
- package/src/domains/prompts/extension.ts +28 -64
- package/src/domains/prompts/fragments/identity/clio.md +23 -0
- package/src/domains/prompts/fragments/operating/contract.md +10 -0
- package/src/domains/prompts/fragments/operating/delegation.md +5 -0
- package/src/domains/prompts/fragments/wiki/page.md +28 -15
- package/src/domains/prompts/fragments/wiki/plan.md +4 -4
- package/src/domains/prompts/preload-prefix.ts +31 -0
- package/src/domains/prompts/preload.ts +135 -61
- package/src/domains/providers/auth/backend-file.ts +15 -11
- package/src/domains/providers/auth/storage.ts +3 -5
- package/src/domains/providers/catalog.ts +18 -3
- package/src/domains/providers/probe/fingerprint.ts +13 -6
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtime-resolution.ts +11 -9
- package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
- package/src/domains/resources/skills/promotion.ts +8 -1
- package/src/domains/safety/action-classifier.ts +9 -0
- package/src/domains/safety/autonomy.ts +10 -1
- package/src/domains/safety/contract.ts +5 -1
- package/src/domains/safety/default-path-policy.ts +11 -0
- package/src/domains/safety/extension.ts +11 -2
- package/src/domains/safety/policy-engine.ts +189 -32
- package/src/domains/safety/project-policy.ts +7 -2
- package/src/domains/safety/workspace-trust.ts +43 -0
- package/src/domains/session/compaction/compact.ts +384 -21
- package/src/domains/session/compaction/cut-point.ts +42 -5
- package/src/domains/session/compaction/tokens.ts +9 -1
- package/src/domains/session/decision-board.ts +43 -33
- package/src/domains/session/entries.ts +169 -4
- package/src/domains/session/prompt-manifest.ts +47 -8
- package/src/domains/session/task-board.ts +21 -3
- package/src/domains/user-tasks/handoff.ts +16 -0
- package/src/engine/acp/adapter.ts +44 -12
- package/src/engine/acp/server.ts +1 -0
- package/src/engine/acp/transport.ts +2 -1
- package/src/engine/acp/types.ts +6 -1
- package/src/engine/antigravity/subprocess-runtime.ts +20 -4
- package/src/engine/api-registry.ts +19 -2
- package/src/engine/apis/openai-completions.ts +13 -6
- package/src/engine/apis/output-budget.ts +26 -10
- package/src/engine/claude/sdk-runtime.ts +4 -3
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/external-subprocess.ts +14 -3
- package/src/engine/loop-guard.ts +19 -2
- package/src/engine/provider-diagnostics.ts +129 -0
- package/src/engine/provider-payload.ts +3 -1
- package/src/engine/worker-runtime.ts +13 -2
- package/src/engine/worker-tools.ts +5 -1
- package/src/entry/extension-reload.ts +1 -0
- package/src/entry/orchestrator.ts +53 -15
- package/src/interactive/application-controller.ts +1 -31
- package/src/interactive/chat-loop-messages.ts +12 -4
- package/src/interactive/chat-loop.ts +115 -45
- package/src/interactive/chat-panel.ts +163 -637
- package/src/interactive/chat-renderer.ts +73 -30
- package/src/interactive/context-recall-command.ts +2 -1
- package/src/interactive/dispatch-board.ts +18 -5
- package/src/interactive/editor-submit.ts +21 -31
- package/src/interactive/footer/dashboard.ts +8 -3
- package/src/interactive/footer/widgets.ts +50 -91
- package/src/interactive/interactive-application.ts +24 -44
- package/src/interactive/interactive-event-projection.ts +9 -45
- package/src/interactive/interactive-input-runtime.ts +3 -28
- package/src/interactive/interactive-presentation.ts +45 -16
- package/src/interactive/interactive-slash-runtime.ts +5 -40
- package/src/interactive/layout.ts +31 -5
- package/src/interactive/model-session-replay.ts +2 -2
- package/src/interactive/overlay-frame.ts +1 -0
- package/src/interactive/overlay-general-openers.ts +5 -1
- package/src/interactive/overlay-lifecycle.ts +1 -0
- package/src/interactive/overlay-session-lifecycle.ts +7 -1
- package/src/interactive/overlays/ask-user.ts +1 -0
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/overlays/settings.ts +9 -8
- package/src/interactive/renderers/preview.ts +16 -0
- package/src/interactive/renderers/tool-execution.ts +84 -161
- package/src/interactive/renderers/worker-entry.ts +74 -43
- package/src/interactive/slash-autocomplete.ts +1 -6
- package/src/interactive/slash-commands.ts +16 -46
- package/src/interactive/status/controller.ts +0 -5
- package/src/interactive/status/state-machine.ts +44 -26
- package/src/interactive/status/types.ts +3 -0
- package/src/interactive/status/verbs.ts +13 -12
- package/src/interactive/transcript-detail.ts +50 -112
- package/src/interactive/turn-context.ts +221 -53
- package/src/interactive/turn-middleware.ts +3 -1
- package/src/interactive/turn-persistence.ts +3 -0
- package/src/interactive/turn-runtime.ts +11 -2
- package/src/interactive/turn-state.ts +10 -9
- package/src/interactive/view/artifacts.ts +4 -0
- package/src/interactive/view/view-overlay.ts +44 -34
- package/src/interactive/watch-pane.ts +18 -4
- package/src/interactive/worker-stream.ts +7 -7
- package/src/tools/agent-tools.ts +6 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/builtin-tool-catalog.ts +9 -2
- package/src/tools/codewiki/code-nav.ts +4 -10
- package/src/tools/compete-judge-task.ts +71 -0
- package/src/tools/compete-worktrees.ts +34 -0
- package/src/tools/context/index.ts +32 -7
- package/src/tools/context/surface.ts +15 -4
- package/src/tools/decide.ts +1 -1
- package/src/tools/dispatch-admission.ts +12 -1
- package/src/tools/dispatch-arguments.ts +38 -1
- package/src/tools/dispatch-plan.ts +7 -7
- package/src/tools/dispatch-runner.ts +48 -32
- package/src/tools/dispatch-schema.ts +30 -23
- package/src/tools/dispatch-scout-admission.ts +10 -44
- package/src/tools/dispatch-scout.ts +2 -3
- package/src/tools/find.ts +13 -4
- package/src/tools/grep.ts +13 -1
- package/src/tools/ls.ts +7 -1
- package/src/tools/monitor.ts +26 -11
- package/src/tools/network-policy.ts +11 -24
- package/src/tools/observation.ts +39 -2
- package/src/tools/presentation.ts +1 -1
- package/src/tools/read.ts +112 -15
- package/src/tools/registry.ts +55 -18
- package/src/tools/result-shaping.ts +110 -2
- package/src/tools/tasks.ts +33 -7
- package/src/tools/verify/frontend.ts +67 -30
- package/src/tools/verify/numeric.ts +10 -5
- package/src/tools/web-fetch-network.ts +179 -0
- package/src/tools/web-fetch-surface.ts +2 -1
- package/src/tools/web-fetch.ts +15 -13
- package/src/tools/worker-evidence.ts +27 -0
- package/src/worker/spec-contract.ts +12 -8
- package/dist/builtins-WGALA46I.js +0 -22
- package/dist/chunk-2WZ546HR.js +0 -792
- package/dist/chunk-5PSMVOLM.js +0 -56
- package/dist/chunk-EL24TAU4.js +0 -1560
- package/dist/chunk-IZXGRF7P.js +0 -4048
- package/dist/chunk-JVCV3ICN.js +0 -47
- package/dist/chunk-MNJGS2IN.js +0 -33
- package/dist/chunk-O5CVSAG5.js +0 -122
- package/dist/chunk-ODGTEFFI.js +0 -50
- package/dist/chunk-OQE5J4C6.js +0 -73
- package/dist/chunk-UUVG37B4.js +0 -244
- package/dist/chunk-V6HJFQZE.js +0 -228
- package/dist/clio-QLICPCF5.js +0 -25
- package/dist/configure-VEPX4NMX.js +0 -55
- package/dist/context-clear-S4ZJCQUX.js +0 -182
- package/dist/detail-A7JAVSIG.js +0 -98
- package/dist/evidence-4F5USFKH.js +0 -208
- package/dist/fleet-view-MN2VG4MR.js +0 -101
- package/dist/inventory-C26CFDRR.js +0 -101
- package/dist/preload-P6DGH2PZ.js +0 -13
- package/dist/slash-commands-ZXPJD64J.js +0 -92
- package/dist/tasks-IPAGMEIX.js +0 -36
- package/dist/tools-EFFEAIDP.js +0 -28
- package/dist/verify-FWYGPKMR.js +0 -29
- package/dist/wiki-generate-743CIGJW.js +0 -476
|
@@ -16,7 +16,8 @@ import { type ProvidersContract, resolveModelRuntimeCapabilitiesForProviders } f
|
|
|
16
16
|
import type { ResourcesContract } from "../domains/resources/index.js";
|
|
17
17
|
import { ceilChars, contentChars } from "../domains/session/context-accounting.js";
|
|
18
18
|
import type { SessionContract, TaskBoardSnapshot } from "../domains/session/index.js";
|
|
19
|
-
import type {
|
|
19
|
+
import type { UserTasksStore } from "../domains/user-tasks/store.js";
|
|
20
|
+
import type { Component, ScrollView, TUI } from "../engine/tui.js";
|
|
20
21
|
import type { ChatLoop, ChatLoopEvent } from "./chat-loop.js";
|
|
21
22
|
import { type ChatPanel, createChatPanel } from "./chat-panel.js";
|
|
22
23
|
import { type CoalescingChatRenderer, createCoalescingChatRenderer } from "./chat-renderer.js";
|
|
@@ -32,7 +33,7 @@ import { createNotificationCenter, type NotificationCenter } from "./footer/noti
|
|
|
32
33
|
import { getActiveRenderTrace } from "./interactive-shell.js";
|
|
33
34
|
import type { InteractiveNoticeLevel } from "./interactive-subscriptions.js";
|
|
34
35
|
import { type ClioKeybindingManager, createKeybindingManager } from "./keybinding-manager.js";
|
|
35
|
-
import { buildLayout } from "./layout.js";
|
|
36
|
+
import { buildLayout, preserveTranscriptScroll } from "./layout.js";
|
|
36
37
|
import type { SessionTranscript } from "./session-transcript.js";
|
|
37
38
|
import { createSlashCommandAutocompleteProvider } from "./slash-autocomplete.js";
|
|
38
39
|
import { parseSlashCommand, type RunIo } from "./slash-commands.js";
|
|
@@ -93,6 +94,7 @@ export interface InteractivePresentationDeps {
|
|
|
93
94
|
session?: Pick<SessionContract, "current">;
|
|
94
95
|
getSessionId?: () => string | null;
|
|
95
96
|
getTaskBoard?: () => TaskBoardSnapshot | null;
|
|
97
|
+
userTasks?: Pick<UserTasksStore, "snapshot">;
|
|
96
98
|
getTaskMemoryStatus?: () => TaskMemoryOperatorStatus;
|
|
97
99
|
getTaskMemorySeedOffer?: () => { source: string; count: number } | null;
|
|
98
100
|
getContextState?: (cwd?: string) => ContextState;
|
|
@@ -144,6 +146,8 @@ export interface InteractivePresentation {
|
|
|
144
146
|
chatRenderer: CoalescingChatRenderer;
|
|
145
147
|
io: RunIo;
|
|
146
148
|
root: Component;
|
|
149
|
+
changeOutputStyle(mutation: () => void): void;
|
|
150
|
+
setLocalBashRunning(running: boolean): void;
|
|
147
151
|
getObservabilitySnapshot(): ObservabilitySnapshot;
|
|
148
152
|
/** Fold one raw chat event into the ephemeral throughput shown only while this turn is active. */
|
|
149
153
|
recordChatEvent(event: ChatLoopEvent): void;
|
|
@@ -231,11 +235,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
231
235
|
});
|
|
232
236
|
const renderTrace = getActiveRenderTrace();
|
|
233
237
|
const chatPanel = factories.createChatPanel({
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
return typeof first === "string" && first.length > 0 ? first : undefined;
|
|
237
|
-
},
|
|
238
|
-
getOutputVerbosity: () => deps.getSettings?.().interface.outputDetail ?? "default",
|
|
238
|
+
getOutputStyle: () => deps.getSettings?.().interface.outputDetail ?? "standard",
|
|
239
|
+
getTerminalRows: () => process.stdout.rows ?? 40,
|
|
239
240
|
...(renderTrace ? { onRenderMetrics: (metrics) => renderTrace.recordPanelRender(metrics) } : {}),
|
|
240
241
|
});
|
|
241
242
|
const followUpQueuePanel = factories.createFollowUpQueuePanel({
|
|
@@ -357,10 +358,21 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
357
358
|
);
|
|
358
359
|
};
|
|
359
360
|
|
|
361
|
+
let localBashStartedAt: number | null = null;
|
|
360
362
|
const footerDeps: FooterDashboardDeps = {
|
|
361
363
|
providers: deps.providers,
|
|
362
364
|
...(deps.getSettings ? { getSettings: deps.getSettings } : {}),
|
|
363
|
-
getAgentStatus: () =>
|
|
365
|
+
getAgentStatus: () => {
|
|
366
|
+
const status = statusController.current();
|
|
367
|
+
if (localBashStartedAt === null || (status.phase !== "idle" && status.phase !== "ended")) return status;
|
|
368
|
+
return {
|
|
369
|
+
...status,
|
|
370
|
+
phase: "tool_running",
|
|
371
|
+
since: localBashStartedAt,
|
|
372
|
+
toolStartedAt: localBashStartedAt,
|
|
373
|
+
tool: { toolName: "bash", toolPreview: "local shell" },
|
|
374
|
+
};
|
|
375
|
+
},
|
|
364
376
|
getTerminalColumns: () => deps.terminal.columns,
|
|
365
377
|
getSessionTokens: () => observabilitySnapshot.session.tokens,
|
|
366
378
|
getTokenThroughput: () =>
|
|
@@ -471,13 +483,19 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
471
483
|
label: skill.name,
|
|
472
484
|
description: skill.description,
|
|
473
485
|
})),
|
|
474
|
-
tasks: async () =>
|
|
475
|
-
(deps.
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
486
|
+
tasks: async ({ subcommand }) =>
|
|
487
|
+
(deps.userTasks?.snapshot() ?? [])
|
|
488
|
+
.filter((task) =>
|
|
489
|
+
subcommand === "hand"
|
|
490
|
+
? task.status === "open"
|
|
491
|
+
: task.status === "open" || task.status === "handed" || task.status === "picked",
|
|
492
|
+
)
|
|
493
|
+
.map((task) => ({
|
|
494
|
+
id: task.id,
|
|
495
|
+
value: task.id,
|
|
496
|
+
label: task.title,
|
|
497
|
+
description: task.status,
|
|
498
|
+
})),
|
|
481
499
|
// Other slots remain empty when this presentation has no read-only catalog for them.
|
|
482
500
|
},
|
|
483
501
|
});
|
|
@@ -525,6 +543,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
525
543
|
},
|
|
526
544
|
}
|
|
527
545
|
: followUpQueuePanel;
|
|
546
|
+
let transcriptView: ScrollView | undefined;
|
|
528
547
|
const root = factories.buildLayout(
|
|
529
548
|
{
|
|
530
549
|
banner,
|
|
@@ -536,6 +555,9 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
536
555
|
{
|
|
537
556
|
mode: settings.interface?.mode ?? "regular",
|
|
538
557
|
fullscreenScrollbar: settings.interface?.fullscreenScrollbar ?? "auto",
|
|
558
|
+
onTranscript: (view) => {
|
|
559
|
+
transcriptView = view;
|
|
560
|
+
},
|
|
539
561
|
},
|
|
540
562
|
);
|
|
541
563
|
deps.mount?.(root, editor);
|
|
@@ -545,7 +567,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
545
567
|
deps.clearScheduledInterval ??
|
|
546
568
|
((handle: PresentationTickerHandle): void => clearInterval(handle as ReturnType<typeof setInterval>));
|
|
547
569
|
const footerTicker = scheduleInterval(() => {
|
|
548
|
-
const statusActive = statusController.current().phase !== "idle";
|
|
570
|
+
const statusActive = statusController.current().phase !== "idle" || localBashStartedAt !== null;
|
|
549
571
|
if (!deps.chat.isStreaming() && !statusActive && !footer.isExpanded()) return;
|
|
550
572
|
footer.refresh();
|
|
551
573
|
requestRender();
|
|
@@ -610,6 +632,13 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
610
632
|
chatRenderer,
|
|
611
633
|
io,
|
|
612
634
|
root,
|
|
635
|
+
setLocalBashRunning(running) {
|
|
636
|
+
localBashStartedAt = running ? Date.now() : null;
|
|
637
|
+
footer.refresh();
|
|
638
|
+
requestRender();
|
|
639
|
+
},
|
|
640
|
+
changeOutputStyle: (mutation) =>
|
|
641
|
+
chatRenderer.mutate(() => preserveTranscriptScroll(transcriptView, deps.terminal.columns, mutation), "output-style"),
|
|
613
642
|
getObservabilitySnapshot: () => observabilitySnapshot,
|
|
614
643
|
recordChatEvent,
|
|
615
644
|
recordToolStart: (toolCallId, toolName) => {
|
|
@@ -64,7 +64,7 @@ export interface InteractiveSlashSubmitExpansion {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
type SlashChat = Pick<ChatLoop, "clearSkillSurface" | "getSessionId" | "isStreaming" | "submit">;
|
|
67
|
-
type SlashChatPanel = Pick<ChatPanel, "appendReplayBlock" | "appendUser"
|
|
67
|
+
type SlashChatPanel = Pick<ChatPanel, "appendReplayBlock" | "appendUser">;
|
|
68
68
|
type UserTurnStatus = import("./chat-panel.js").UserTurnStatus;
|
|
69
69
|
type SlashResources = Pick<ResourcesContract, "prompts" | "expandPromptTemplate" | "reload">;
|
|
70
70
|
type SlashExtensions = Pick<ExtensionsContract, "list">;
|
|
@@ -75,6 +75,7 @@ export interface InteractiveSlashRuntimeDeps {
|
|
|
75
75
|
io: RunIo;
|
|
76
76
|
bus: SafeEventBus;
|
|
77
77
|
dispatch: DispatchContract;
|
|
78
|
+
getDecisionBoard?: SlashCommandContext["getDecisionBoard"];
|
|
78
79
|
providers: ProvidersContract;
|
|
79
80
|
chat: SlashChat;
|
|
80
81
|
chatPanel: SlashChatPanel;
|
|
@@ -177,7 +178,6 @@ export interface InteractiveSlashRuntime {
|
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
/** Owns slash-command context construction and its asynchronous command state. */
|
|
180
|
-
const OUTPUT_VERBOSITIES: ReadonlyArray<ClioSettings["interface"]["outputDetail"]> = ["minimal", "default", "verbose"];
|
|
181
181
|
|
|
182
182
|
/** Thinking capability of the active orchestrator target and model, or null when unresolved. */
|
|
183
183
|
export function resolveThinkingCapability(
|
|
@@ -380,6 +380,7 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
380
380
|
});
|
|
381
381
|
},
|
|
382
382
|
dispatch: deps.dispatch,
|
|
383
|
+
...(deps.getDecisionBoard ? { getDecisionBoard: deps.getDecisionBoard } : {}),
|
|
383
384
|
bus: deps.bus,
|
|
384
385
|
...(deps.agents
|
|
385
386
|
? { getAgentRoleFacts: agentRoleFactsResolver((agentId: string) => deps.agents?.getSpec(agentId) ?? null) }
|
|
@@ -464,7 +465,7 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
464
465
|
if (!match) {
|
|
465
466
|
return { status: "unsupported", level, supported: supported.map(labelFor) };
|
|
466
467
|
}
|
|
467
|
-
// Session scope, like
|
|
468
|
+
// Session scope, like Alt+O: onSetThinkingLevel writes the level
|
|
468
469
|
// through to settings.yaml as the new default, which a slash command
|
|
469
470
|
// has no mandate to do.
|
|
470
471
|
if (deps.commitSetting) {
|
|
@@ -506,42 +507,6 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
506
507
|
if (selected) dispatchSlashCommand({ kind: "thinking-set", level: selected.value }, context);
|
|
507
508
|
});
|
|
508
509
|
},
|
|
509
|
-
setOutputVerbosity: (verbosity) => {
|
|
510
|
-
if (!deps.getSettings || !(deps.commitSetting || deps.writeSettings)) return { status: "unavailable" };
|
|
511
|
-
const requested = verbosity.trim().toLowerCase();
|
|
512
|
-
const match = OUTPUT_VERBOSITIES.find((candidate) => candidate === requested);
|
|
513
|
-
if (!match) return { status: "unsupported", verbosity, supported: OUTPUT_VERBOSITIES };
|
|
514
|
-
const next = structuredClone(deps.getSettings()) as ClioSettings;
|
|
515
|
-
next.interface.outputDetail = match;
|
|
516
|
-
// Session scope: /output changes this session and leaves settings.yaml
|
|
517
|
-
// alone. Saving it as the default is what Settings → Terminal is for.
|
|
518
|
-
if (deps.commitSetting) deps.commitSetting("interface.outputDetail", next, "session");
|
|
519
|
-
else deps.writeSettings?.(next);
|
|
520
|
-
// `/output` is also the explicit reset action for transcript folds. Do
|
|
521
|
-
// this even when the requested level already matches the current one;
|
|
522
|
-
// the render-time change detector cannot observe a same-value command.
|
|
523
|
-
deps.chatPanel.clearFoldOverrides();
|
|
524
|
-
deps.refreshFooter();
|
|
525
|
-
return { status: "applied", verbosity: match };
|
|
526
|
-
},
|
|
527
|
-
openOutputPicker: () => {
|
|
528
|
-
void deps
|
|
529
|
-
.openAskUser([
|
|
530
|
-
{
|
|
531
|
-
question: "Choose transcript detail for this session.",
|
|
532
|
-
header: "Output",
|
|
533
|
-
options: OUTPUT_VERBOSITIES.map((value) => ({
|
|
534
|
-
label: `${value[0]?.toUpperCase()}${value.slice(1)}`,
|
|
535
|
-
})),
|
|
536
|
-
},
|
|
537
|
-
])
|
|
538
|
-
.then((result) => {
|
|
539
|
-
if (result.cancelled) return;
|
|
540
|
-
const answer = result.answers[0]?.answer.toLowerCase();
|
|
541
|
-
const selected = OUTPUT_VERBOSITIES.find((value) => value === answer);
|
|
542
|
-
if (selected) dispatchSlashCommand({ kind: "output-set", verbosity: selected }, context);
|
|
543
|
-
});
|
|
544
|
-
},
|
|
545
510
|
openModel: deps.openModel,
|
|
546
511
|
providers: deps.providers,
|
|
547
512
|
applyModelRef: (ref) => {
|
|
@@ -593,7 +558,7 @@ export function createInteractiveSlashRuntime(deps: InteractiveSlashRuntimeDeps)
|
|
|
593
558
|
// operator overrides, and rendered at a stable width. HTML converts
|
|
594
559
|
// the resulting ANSI presentation to inline styles; Markdown keeps the
|
|
595
560
|
// prior plain-text fenced transcript.
|
|
596
|
-
const exportPanel = createChatPanel({ unboundedToolBodies: true,
|
|
561
|
+
const exportPanel = createChatPanel({ unboundedToolBodies: true, getOutputStyle: () => "detailed" });
|
|
597
562
|
// Scoped to the leaf the session is on, the same way /resume replays
|
|
598
563
|
// (issue #107): with a /tree pin persisted and not yet extended, the
|
|
599
564
|
// file still holds the abandoned branch after the pin, and an unscoped
|
|
@@ -13,6 +13,7 @@ export interface LayoutParts {
|
|
|
13
13
|
export interface LayoutOptions {
|
|
14
14
|
mode?: TuiMode;
|
|
15
15
|
fullscreenScrollbar?: ScrollViewScrollbar;
|
|
16
|
+
onTranscript?: (view: ScrollView) => void;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export interface FullscreenLayout {
|
|
@@ -20,10 +21,7 @@ export interface FullscreenLayout {
|
|
|
20
21
|
transcript: ScrollView;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
function buildFullscreenLayout(
|
|
24
|
-
parts: LayoutParts,
|
|
25
|
-
options: Pick<LayoutOptions, "fullscreenScrollbar"> = {},
|
|
26
|
-
): FullscreenLayout {
|
|
24
|
+
function buildFullscreenLayout(parts: LayoutParts, options: LayoutOptions = {}): FullscreenLayout {
|
|
27
25
|
const document = new Container();
|
|
28
26
|
document.addChild(parts.banner);
|
|
29
27
|
document.addChild(parts.chat);
|
|
@@ -33,8 +31,10 @@ function buildFullscreenLayout(
|
|
|
33
31
|
primary: true,
|
|
34
32
|
overscroll: "chain",
|
|
35
33
|
scrollbar: options.fullscreenScrollbar ?? "auto",
|
|
36
|
-
|
|
34
|
+
scrollbarTrackStyle: (text) => theme.fg("frame", text),
|
|
35
|
+
scrollbarThumbStyle: () => theme.fg("frameStrong", GLYPH.barFull),
|
|
37
36
|
});
|
|
37
|
+
options.onTranscript?.(transcript);
|
|
38
38
|
const dock = new VStack();
|
|
39
39
|
if (parts.pending) dock.addChild(parts.pending, { shrink: 1, minSize: 0 });
|
|
40
40
|
dock.addChild(parts.editor, { shrink: 1, minSize: 3 });
|
|
@@ -55,3 +55,29 @@ export function buildLayout(parts: LayoutParts, options: LayoutOptions = {}): Co
|
|
|
55
55
|
root.addChild(parts.footer);
|
|
56
56
|
return root;
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
/** Keep the nearest surviving text at the viewport when a preset changes row counts. */
|
|
60
|
+
export function preserveTranscriptScroll(view: ScrollView | undefined, width: number, mutation: () => void): void {
|
|
61
|
+
if (!view || view.isFollowingEnd) {
|
|
62
|
+
mutation();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const top = view.scrollTop;
|
|
66
|
+
const before = view.render(width);
|
|
67
|
+
mutation();
|
|
68
|
+
const after = view.render(width);
|
|
69
|
+
for (let row = top; row < Math.min(before.length, top + view.viewportHeight); row++) {
|
|
70
|
+
const anchor = before[row];
|
|
71
|
+
if (!anchor?.trim()) continue;
|
|
72
|
+
let match = -1;
|
|
73
|
+
for (let index = 0; index < after.length; index++) {
|
|
74
|
+
if (after[index] === anchor && (match < 0 || Math.abs(index - row) < Math.abs(match - row))) match = index;
|
|
75
|
+
}
|
|
76
|
+
if (match >= 0) {
|
|
77
|
+
view.updateLayout(after.length, view.viewportHeight, () => {});
|
|
78
|
+
view.scrollTo(Math.max(0, match - (row - top)), { disableFollow: true });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
view.scrollTo(top, { disableFollow: true });
|
|
83
|
+
}
|
|
@@ -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
|
}
|
|
@@ -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,12 +41,13 @@ 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";
|
|
47
48
|
|
|
48
49
|
export interface OverlayGeneralOpenersDeps {
|
|
50
|
+
readTranscript?: ArtifactProviderDeps["readTranscript"];
|
|
49
51
|
tui: TUI;
|
|
50
52
|
transitions: OverlayTransitions;
|
|
51
53
|
observability: ObservabilityContract;
|
|
@@ -318,6 +320,7 @@ export function createOverlayGeneralOpeners(deps: OverlayGeneralOpenersDeps): Ov
|
|
|
318
320
|
dispatch: deps.dispatch,
|
|
319
321
|
sessionMeta: deps.getSessionMeta(),
|
|
320
322
|
readSessionEntries: deps.readSessionEntries,
|
|
323
|
+
readTranscript: deps.readTranscript,
|
|
321
324
|
}),
|
|
322
325
|
...(initialFilter ? { initialFilter } : {}),
|
|
323
326
|
notice: deps.notify,
|
|
@@ -487,6 +490,7 @@ export function createOverlayGeneralOpeners(deps: OverlayGeneralOpenersDeps): Ov
|
|
|
487
490
|
fleetRootId,
|
|
488
491
|
dispatch: deps.dispatch,
|
|
489
492
|
agents: { getSpec: (agentId) => agents.getSpec(agentId) },
|
|
493
|
+
...(deps.getDecisionBoard ? { getDecisionBoard: deps.getDecisionBoard } : {}),
|
|
490
494
|
attributionEnabled: deps.getSettings?.().integrations.git.commitAttribution ?? true,
|
|
491
495
|
vars: preview.vars,
|
|
492
496
|
onStepDispatched: (event) => {
|
|
@@ -399,6 +399,7 @@ export function createOverlayLifecycle(deps: OverlayLifecycleRuntimeDeps): Overl
|
|
|
399
399
|
|
|
400
400
|
const scheduling = deps.app.scheduling;
|
|
401
401
|
const overlayGeneralOpeners = createOverlayGeneralOpeners({
|
|
402
|
+
readTranscript: () => chatPanel.inspectionArtifacts(),
|
|
402
403
|
tui,
|
|
403
404
|
transitions: overlayTransitions,
|
|
404
405
|
observability: deps.app.observability,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { editTextExternally, resolveExternalEditor } from "../core/external-editor.js";
|
|
1
2
|
import { resolveSessionCwd } from "../domains/session/cwd-fallback.js";
|
|
2
3
|
import type { DecisionLedgerEntry } from "../domains/session/entries.js";
|
|
3
4
|
import {
|
|
@@ -18,7 +19,6 @@ import type { ChatLoop } from "./chat-loop.js";
|
|
|
18
19
|
import type { ChatPanel } from "./chat-panel.js";
|
|
19
20
|
import { rehydrateChatPanelFromTurns } from "./chat-renderer.js";
|
|
20
21
|
import { emitCommandNotice } from "./command-fallbacks.js";
|
|
21
|
-
import { editTextExternally, resolveExternalEditor } from "./external-editor.js";
|
|
22
22
|
import type { InteractiveNoticeLevel } from "./interactive-subscriptions.js";
|
|
23
23
|
import { buildModelReplayAgentMessagesFromTurns } from "./model-session-replay.js";
|
|
24
24
|
import type { OverlayTransitions } from "./overlay-transitions.js";
|
|
@@ -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,
|
|
@@ -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
|
}
|
|
@@ -229,7 +229,7 @@ export const SETTINGS_LABELS_BY_ID = {
|
|
|
229
229
|
"retry.maxDelayMs": "Max delay (ms)",
|
|
230
230
|
"retry.streamStallMs": "Stream stall timeout (ms)",
|
|
231
231
|
"terminal.showTerminalProgress": "Terminal progress badges",
|
|
232
|
-
"terminal.outputVerbosity": "Output
|
|
232
|
+
"terminal.outputVerbosity": "Output style",
|
|
233
233
|
"terminal.tuiMode": "TUI mode",
|
|
234
234
|
"terminal.fullscreenScrollbar": "Fullscreen scrollbar",
|
|
235
235
|
"terminal.smoothStreaming": "Smooth streaming",
|
|
@@ -514,7 +514,8 @@ const SETTINGS_HELP_BY_ID: Partial<Record<EditableSettingId, string>> = {
|
|
|
514
514
|
"Written by the confirm flow, not by hand, because confirming a remote here would be the record confirming itself. Sync refuses with library_remote_unconfirmed until this equals library.remote. Default: blank.",
|
|
515
515
|
"library.sync":
|
|
516
516
|
"Off means `clio-coder library sync` and `push` refuse before touching the network, whatever the remote says. Legal values: true, false · default: false.",
|
|
517
|
-
"budget.concurrency":
|
|
517
|
+
"budget.concurrency":
|
|
518
|
+
"auto allows four local workers. A fixed number caps how many workers run at once; the default is one.",
|
|
518
519
|
"skills.trustProjectCompatRoots":
|
|
519
520
|
"Project roots like .claude/skills and .codex/skills are untrusted by default; enabling exposes them to the model.",
|
|
520
521
|
"attribution.gitCommits":
|
|
@@ -550,7 +551,7 @@ const SETTINGS_HELP_BY_ID: Partial<Record<EditableSettingId, string>> = {
|
|
|
550
551
|
"watchdog.cadenceToolCalls":
|
|
551
552
|
"Mid-turn firing is how scope drift becomes visible before the turn ends. Leave blank and the watchdog fires at turn end only.",
|
|
552
553
|
keybindings:
|
|
553
|
-
"
|
|
554
|
+
"Alt+O cycles Output style: Compact, Standard, Detailed. Use /view for full reasoning and action details. Shift+Tab changes model thinking effort.",
|
|
554
555
|
};
|
|
555
556
|
|
|
556
557
|
/** Per-value meaning, surfaced for the current value of an enum knob. */
|
|
@@ -623,9 +624,9 @@ const SETTINGS_VALUE_HELP_BY_ID: Partial<Record<EditableSettingId, Record<string
|
|
|
623
624
|
false: "no terminal progress badges",
|
|
624
625
|
},
|
|
625
626
|
"terminal.outputVerbosity": {
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
627
|
+
compact: "quiet action summaries, answers, and visible failures",
|
|
628
|
+
standard: "short reasoning and change previews, clear action outcomes",
|
|
629
|
+
detailed: "larger bounded previews; full content is available in /view",
|
|
629
630
|
},
|
|
630
631
|
"terminal.tuiMode": {
|
|
631
632
|
regular: "preserve terminal scrollback and render the composer below the transcript",
|
|
@@ -1923,7 +1924,7 @@ function buildSettingItems(settings: Readonly<ClioSettings>, options?: BuildSett
|
|
|
1923
1924
|
values: ["false", "true"],
|
|
1924
1925
|
}),
|
|
1925
1926
|
settingItem("terminal.outputVerbosity", terminal.outputDetail, {
|
|
1926
|
-
values: ["
|
|
1927
|
+
values: ["compact", "standard", "detailed"],
|
|
1927
1928
|
}),
|
|
1928
1929
|
settingItem("terminal.tuiMode", terminal.mode, {
|
|
1929
1930
|
values: ["regular", "fullscreen"],
|
|
@@ -2555,7 +2556,7 @@ function applySettingChange(settings: ClioSettings, id: string, value: string):
|
|
|
2555
2556
|
if (value === "true" || value === "false") settings.interface.terminalProgress = value === "true";
|
|
2556
2557
|
return;
|
|
2557
2558
|
case "terminal.outputVerbosity":
|
|
2558
|
-
if (value === "
|
|
2559
|
+
if (value === "compact" || value === "standard" || value === "detailed") settings.interface.outputDetail = value;
|
|
2559
2560
|
return;
|
|
2560
2561
|
case "terminal.tuiMode":
|
|
2561
2562
|
if (value === "regular" || value === "fullscreen") settings.interface.mode = value;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { truncateToWidth } from "../../engine/tui.js";
|
|
2
|
+
import { clioTheme } from "../theme/index.js";
|
|
3
|
+
|
|
4
|
+
/** Count terminal rows after wrapping, including the inspection hint. */
|
|
5
|
+
export function previewRows(rows: readonly string[], limit: number, width: number, tail = false): string[] {
|
|
6
|
+
if (rows.length <= limit) return [...rows];
|
|
7
|
+
if (limit <= 0) return [];
|
|
8
|
+
const count = Math.max(0, limit - 1);
|
|
9
|
+
const hint = clioTheme().fg("dim", truncateToWidth(`… ${rows.length - count} rows · /view`, Math.max(1, width)));
|
|
10
|
+
return tail ? [hint, ...rows.slice(rows.length - count)] : [...rows.slice(0, count), hint];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Leave room for the composer and action identity in a short terminal. */
|
|
14
|
+
export function previewBudget(limit: number, terminalRows = 40): number {
|
|
15
|
+
return Math.min(limit, Math.max(2, Math.floor((terminalRows - 8) / 2)));
|
|
16
|
+
}
|