@iowarp/clio-coder 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +153 -0
- package/CONTRIBUTING.md +25 -15
- package/README.md +340 -27
- package/dist/{acp-H2NGRPWO.js → acp-H3CU2HBQ.js} +25 -25
- package/dist/{agents-TL5LLUQP.js → agents-IXQQZ7BD.js} +77 -75
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-E5SW4HMS.js → auth-R7KYF7N3.js} +38 -39
- package/dist/builtins-CRFDQUVP.js +22 -0
- package/dist/{chunk-7DRAWPTZ.js → chunk-22PQ4TX4.js} +4 -4
- package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
- package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
- package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
- package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
- package/dist/{chunk-5TSRNF4G.js → chunk-3T4DXWP6.js} +170 -12
- package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
- package/dist/{chunk-XIVNBFZS.js → chunk-4SVIVOMC.js} +208 -39
- package/dist/{chunk-NMJXSHBJ.js → chunk-5A6XR3RJ.js} +44 -19
- package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
- package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
- package/dist/chunk-5DDOTTG4.js +402 -0
- package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
- package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
- package/dist/{chunk-PUVDKJ2Y.js → chunk-5VTJP36Q.js} +5 -7
- package/dist/{chunk-JGRC33J2.js → chunk-5ZMXGW7P.js} +90 -9
- package/dist/chunk-5ZSZEYJK.js +119 -0
- package/dist/chunk-633EXGZA.js +44 -0
- package/dist/{chunk-IWT4SF4R.js → chunk-6CDNRHWH.js} +361 -89
- package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
- package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
- package/dist/{chunk-INY6HTFL.js → chunk-6SYEGZI3.js} +12 -12
- package/dist/{chunk-SKHCAU7K.js → chunk-6YA46L5A.js} +5 -4
- package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
- package/dist/{chunk-L47TF46W.js → chunk-7HBHHVCK.js} +24 -3
- package/dist/{chunk-DWUOQKRU.js → chunk-7TKWWPD7.js} +5 -4
- package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
- package/dist/chunk-7WUZEB2M.js +165 -0
- package/dist/{chunk-6PTFB5VS.js → chunk-7YJWEF2L.js} +59 -28
- package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
- package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
- package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
- package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
- package/dist/chunk-B6UM3OZC.js +15 -0
- package/dist/{chunk-MCEPRMZW.js → chunk-BBV5TKE6.js} +5 -5
- package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
- package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
- package/dist/{chunk-42FMPA75.js → chunk-CBSKDFWL.js} +3 -3
- package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
- package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
- package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
- package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
- package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
- package/dist/{chunk-WCXUNS7U.js → chunk-DIMRLNIC.js} +35 -66
- package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
- package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
- package/dist/{chunk-2UG5F4C5.js → chunk-DRD2A54W.js} +116 -52
- package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
- package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
- package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
- package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
- package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
- package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
- package/dist/chunk-ECOMVOHP.js +139 -0
- package/dist/chunk-EFSEIZE6.js +56 -0
- package/dist/{chunk-IJNZMHLA.js → chunk-EHCPSZJF.js} +4 -4
- package/dist/{chunk-K6BSR66V.js → chunk-EHOSNVVM.js} +6 -2
- package/dist/{chunk-RRNP2ANY.js → chunk-EQEJJ53P.js} +10 -10
- package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
- package/dist/{chunk-JKKCYP3C.js → chunk-F34AR6O3.js} +21 -15
- package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
- package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
- package/dist/{chunk-MWUZBSAQ.js → chunk-FSTIBAGM.js} +358 -63
- package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
- package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
- package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
- package/dist/{chunk-JSC3U7TI.js → chunk-GJ24ODAX.js} +5 -5
- package/dist/{chunk-B4VEBZKF.js → chunk-GNQRWTMY.js} +139 -52
- package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
- package/dist/chunk-GXCCHKN6.js +59 -0
- package/dist/{chunk-V2ANDPVT.js → chunk-HGSLRG33.js} +170 -8
- package/dist/{chunk-LLDJM5XK.js → chunk-HHVJNVUJ.js} +6 -6
- package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
- package/dist/{chunk-VA5FNYMT.js → chunk-HR3HPQ76.js} +42 -5
- package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
- package/dist/{chunk-OML5D5V5.js → chunk-I7VLWRK2.js} +8 -8
- package/dist/{chunk-VW6DOEDG.js → chunk-ICO4TQ2F.js} +16 -5
- package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
- package/dist/{chunk-WBKFA554.js → chunk-ILJ7DWGE.js} +9 -9
- package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
- package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
- package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
- package/dist/{chunk-EKCHAPYA.js → chunk-K2HL3GBL.js} +4 -4
- package/dist/{chunk-N2Z7HLVY.js → chunk-K6RDB7IA.js} +28 -28
- package/dist/{chunk-TM6LQDI3.js → chunk-KDWLXVMN.js} +85 -335
- package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
- package/dist/{chunk-RSJ25QSL.js → chunk-KF6GFW6O.js} +217 -50
- package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
- package/dist/chunk-KPRLAMP4.js +32 -0
- package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
- package/dist/{chunk-IUE3Y34X.js → chunk-KTFSFCVN.js} +20 -9
- package/dist/{chunk-7E7I3WLS.js → chunk-KYKNBD4Y.js} +36 -34
- package/dist/chunk-L4N3DWNW.js +539 -0
- package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
- package/dist/{chunk-JIEGK6UF.js → chunk-LTR5QCLS.js} +51 -7
- package/dist/chunk-LUL5Z66S.js +221 -0
- package/dist/chunk-LVFANMOH.js +466 -0
- package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
- package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
- package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
- package/dist/{chunk-I7ZPNEJM.js → chunk-M6TAYK66.js} +8 -8
- package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
- package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
- package/dist/chunk-MDU3C27C.js +674 -0
- package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
- package/dist/{chunk-4UVU7BJ5.js → chunk-NC4KV7EL.js} +6 -6
- package/dist/{chunk-JEQ3XTHC.js → chunk-NF3BK5WR.js} +5 -5
- package/dist/chunk-NTK3WTHM.js +141 -0
- package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
- package/dist/{chunk-UPZU6GE4.js → chunk-NY6IWDVU.js} +6 -6
- package/dist/chunk-O2RQ7LCK.js +283 -0
- package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
- package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
- package/dist/{chunk-WRBAGUNF.js → chunk-ODUTYZIU.js} +5 -5
- package/dist/{chunk-E3TPLWFX.js → chunk-ONRTXOZY.js} +4 -4
- package/dist/{chunk-B4OAX3SI.js → chunk-OQM5IVJY.js} +118 -225
- package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
- package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
- package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
- package/dist/{chunk-64I3JVYM.js → chunk-PWWSIB2A.js} +5 -5
- package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
- package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
- package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
- package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
- package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
- package/dist/chunk-R6MAYTMS.js +108 -0
- package/dist/{chunk-MUW2BDDH.js → chunk-R6MICQYU.js} +6 -6
- package/dist/{chunk-JDAY6FIL.js → chunk-RLTT5GVY.js} +132 -17
- package/dist/{chunk-ZWPRK62N.js → chunk-RXIOCVBZ.js} +24 -6
- package/dist/{chunk-NIQJ66N4.js → chunk-S32UQ5GL.js} +62 -35
- package/dist/{chunk-AX2THNSA.js → chunk-SBZX6ARC.js} +12 -12
- package/dist/{chunk-TXOTCRLG.js → chunk-SD7SHNDW.js} +2 -2
- package/dist/{chunk-AF4YM7Z4.js → chunk-SDWNDICN.js} +10284 -3756
- package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
- package/dist/chunk-SL2RDHKO.js +19 -0
- package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-SRZOW5L2.js} +46 -14
- package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
- package/dist/chunk-T52TPHYC.js +318 -0
- package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
- package/dist/{chunk-LDJG7DW3.js → chunk-T7FDXNRU.js} +13 -13
- package/dist/{chunk-XPWWI35G.js → chunk-TEG3RYVZ.js} +59 -41
- package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
- package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
- package/dist/{chunk-PAJQJ7BS.js → chunk-TZ7MFRG4.js} +1263 -835
- package/dist/{chunk-GI7YYQ3F.js → chunk-U2JOLB7O.js} +415 -83
- package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
- package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
- package/dist/{chunk-CE5AX47J.js → chunk-U7H5WRG5.js} +5 -5
- package/dist/{chunk-G76U63X4.js → chunk-U7VQ4NI4.js} +22 -22
- package/dist/{chunk-7ZYNNDKC.js → chunk-UFYNOQK4.js} +7 -7
- package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
- package/dist/{chunk-QWGDJJYJ.js → chunk-UL36QJX6.js} +14 -14
- package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
- package/dist/{chunk-HEQY7ZFI.js → chunk-URBGEOH3.js} +5 -5
- package/dist/chunk-USZA7GWL.js +341 -0
- package/dist/{chunk-W6RRQCPQ.js → chunk-UTUNT5QL.js} +48 -579
- package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
- package/dist/{chunk-F5JHEYZM.js → chunk-UXAC2FX4.js} +73 -41
- package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
- package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
- package/dist/chunk-VLPTKCKT.js +396 -0
- package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
- package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
- package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
- package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
- package/dist/{chunk-2UH2KFUP.js → chunk-WFKDPU7U.js} +4 -4
- package/dist/{chunk-ZDN3Y73Y.js → chunk-WJIMKGD6.js} +9 -51
- package/dist/{chunk-YQWYVTMC.js → chunk-WLMSOT73.js} +59 -12
- package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
- package/dist/chunk-WXA2CFJO.js +23 -0
- package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
- package/dist/{chunk-2APPQIER.js → chunk-XXBQKW32.js} +11 -11
- package/dist/{chunk-2VIKGWFZ.js → chunk-YEJIG7LN.js} +332 -332
- package/dist/chunk-YGDMBK7O.js +567 -0
- package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
- package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
- package/dist/{chunk-54CBCGIR.js → chunk-ZMZQEBKI.js} +136 -81
- package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
- package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
- package/dist/cli/index.js +45 -44
- package/dist/clio-5I2IBFYL.js +26 -0
- package/dist/{code-nav-MDZNQS33.js → code-nav-YXIAEZVS.js} +48 -32
- package/dist/codewiki/build-worker.js +76 -29
- package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
- package/dist/{components-UCUQ4QXW.js → components-TNIKXCBH.js} +13 -14
- package/dist/{config-SVM5P5YI.js → config-Y2JDJ3JJ.js} +210 -119
- package/dist/configure-SML6UBZ5.js +55 -0
- package/dist/{context-2OHRKS42.js → context-P5YSEO55.js} +125 -115
- package/dist/{context-VNCR7KAG.js → context-QQ53HSGJ.js} +91 -62
- package/dist/{context-E3VC7RX5.js → context-S2EEC3EJ.js} +62 -31
- package/dist/context-clear-TMEQCOTH.js +183 -0
- package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
- package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
- package/dist/{context-working-set-VDS25HXZ.js → context-working-set-CNLSQN5K.js} +31 -31
- package/dist/detail-5572VLBO.js +114 -0
- package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-FRHD6P2O.js} +214 -126
- package/dist/{docs-PD3EXDKU.js → docs-BL7ROUFN.js} +5 -7
- package/dist/{doctor-WNNVO6FY.js → doctor-N3LCM2LG.js} +89 -66
- package/dist/{eval-7G7SGAYO.js → eval-BUU3ZOUZ.js} +493 -197
- package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
- package/dist/evidence-DTGEN456.js +224 -0
- package/dist/{evidence-VD6736FQ.js → evidence-SQ5DNFEN.js} +114 -195
- package/dist/{evolve-AL3NGVRL.js → evolve-IJNUFZDS.js} +107 -88
- package/dist/{extensions-MOVJ32NM.js → extensions-YVRHX6ZI.js} +16 -17
- package/dist/{fleet-QZHUMAGI.js → fleet-ZNNVSYFO.js} +147 -141
- package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-5YE7NPJL.js} +27 -23
- package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-3SBSCTCW.js} +16 -15
- package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-6HHPWF5T.js} +39 -38
- package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-JEYMGCGC.js} +107 -87
- package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
- package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-QRSHIIDE.js} +10 -10
- package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-4PM4GDDL.js} +46 -42
- package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-NJDTHTO3.js} +105 -85
- package/dist/fleet-view-UP2BWQQY.js +117 -0
- package/dist/{init-J477LKZH.js → init-S3GZQ5ZF.js} +123 -117
- package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
- package/dist/{interop-3FCM6XLG.js → interop-YOTGXFJM.js} +25 -26
- package/dist/inventory-K2OZ36YJ.js +117 -0
- package/dist/{library-QUQEIUG6.js → library-GJI6W6OK.js} +45 -45
- package/dist/{memory-SGGSEP65.js → memory-OQOXQGYD.js} +107 -90
- package/dist/{models-HEKUAXXK.js → models-3IK2Y5WE.js} +64 -65
- package/dist/{monitor-HKU57TYQ.js → monitor-FTJLTKCQ.js} +136 -101
- package/dist/{orchestrator-VDFAEFAI.js → orchestrator-N47O7SFD.js} +1442 -1671
- package/dist/{panes-DN2SSFOH.js → panes-7BTYH3XQ.js} +8 -8
- package/dist/{panes-TALGNPZT.js → panes-WPOMEMRH.js} +22 -23
- package/dist/{paths-NBMFAIEZ.js → paths-J3KN7UAO.js} +12 -13
- package/dist/preload-65U34NG6.js +115 -0
- package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
- package/dist/{reset-EAJFFJVB.js → reset-MUVQDLNL.js} +20 -21
- package/dist/{resources-OVKSEFVE.js → resources-LM76COAO.js} +41 -40
- package/dist/{run-7DP7ZF2J.js → run-3VFZQ33N.js} +168 -166
- package/dist/{share-WML67FT3.js → share-4JUB4BL7.js} +43 -43
- package/dist/{skills-SG662R2K.js → skills-S36AAJHU.js} +47 -47
- package/dist/{skills-eval-VVZEUU46.js → skills-eval-G6T57L7M.js} +127 -104
- package/dist/{skills-inventory-I2E23GET.js → skills-inventory-WLM46PJH.js} +41 -40
- package/dist/slash-commands-GBARG3Y7.js +91 -0
- package/dist/{steer-2LQOMCPB.js → steer-S7D7IKPU.js} +7 -7
- package/dist/{support-CC2UJBJ6.js → support-5VAEC32W.js} +14 -14
- package/dist/{targets-4QC3HIEW.js → targets-N5REUETU.js} +147 -98
- package/dist/tasks-6BVY5YZF.js +36 -0
- package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-57UEOJKS.js} +12 -11
- package/dist/tools-6OCQ6SVB.js +28 -0
- package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
- package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
- package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
- package/dist/{uninstall-5PEVOE5B.js → uninstall-FXYMFFRT.js} +19 -20
- package/dist/{upgrade-M4WXY6KN.js → upgrade-4HD5HAIV.js} +49 -45
- package/dist/{usage-N7ZNVLEM.js → usage-4GWM2WWP.js} +143 -103
- package/dist/{verifiers-DJTP4XX6.js → verifiers-GSKWKWVG.js} +162 -28
- package/dist/verify-3AS3ULCY.js +30 -0
- package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-MQN4FH3X.js} +169 -18
- package/dist/wiki-generate-7BV7XWIY.js +614 -0
- package/dist/{with-panes-4GCGSL7J.js → with-panes-OFTNAR4Y.js} +34 -20
- package/dist/worker/entry.js +99 -85
- package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
- package/docs/README.md +10 -8
- package/docs/architecture/acp.md +27 -0
- package/docs/architecture/architecture.md +5 -5
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/context-engine.md +44 -59
- package/docs/architecture/context-working-set.md +7 -9
- package/docs/architecture/dispatch-architecture-rationale.md +1 -1
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +11 -1
- package/docs/architecture/observability.md +7 -1
- package/docs/architecture/pi-boundary.md +37 -7
- package/docs/architecture/prompt-envelope-and-tools.md +22 -12
- package/docs/architecture/safety-model.md +10 -17
- package/docs/architecture/session-lifecycle.md +4 -4
- package/docs/architecture/tui-design.md +1 -1
- package/docs/architecture/worker-dispatch-mechanics.md +4 -0
- package/docs/guide/built-in-agents.md +8 -8
- package/docs/guide/commands-and-modes.md +66 -38
- package/docs/guide/configuration-and-targets.md +10 -3
- package/docs/guide/configuration-reference.md +23 -8
- package/docs/guide/environment-variables.md +8 -4
- package/docs/guide/fleet-dispatch.md +12 -0
- package/docs/guide/installation-and-lifecycle.md +35 -9
- package/docs/guide/proactive-memory.md +1 -1
- package/docs/guide/skills-marketplace.md +11 -3
- package/docs/guide/tool-usage.md +87 -5
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +15 -10
- package/docs/process/documentation-guide.md +2 -2
- package/docs/process/eval-runner.md +15 -0
- package/docs/process/evals-internal.md +1 -1
- package/docs/process/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/README.md +4 -0
- package/evals/behavioral-corpus-grader.mjs +147 -14
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- package/evals/behavioral-model-negative-control.yaml +1 -0
- package/evals/behavioral-model.yaml +266 -1
- package/evals/fixtures/docs-retrieval.json +102 -0
- package/evals/fixtures/scalar-decision.json +17 -0
- package/evals/fixtures/scout-citation-pipeline.json +55 -0
- package/evals/fixtures/source-explanation.json +74 -0
- package/evals/fixtures/tool-arguments.json +18 -0
- package/evals/fixtures/tool-surface/read.txt +4 -0
- package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
- package/evals/no-edit-memory-grader.mjs +149 -0
- package/evals/scalar-decision-grader.py +41 -0
- package/evals/scalar-decision-machinery.ts +145 -0
- package/evals/source-explanation-grader.mjs +118 -0
- package/evals/tool-surface-grader.mjs +53 -0
- package/evals/tool-surface-model.yaml +274 -0
- package/package.json +14 -14
- package/skills/README.md +6 -6
- package/skills/coding/coding-standards/SKILL.md +14 -4
- package/skills/context/context-handoff/SKILL.md +3 -3
- package/skills/context/context-prime/SKILL.md +3 -3
- package/skills/planning/architecture/SKILL.md +5 -5
- package/skills/planning/backlog/SKILL.md +4 -4
- package/skills/planning/prd/SKILL.md +4 -3
- package/skills/planning/product-intent/SKILL.md +8 -8
- package/skills/planning/tech-spec/SKILL.md +4 -4
- package/skills/registry.yaml +33 -33
- package/skills/research/arxiv-literature/SKILL.md +3 -3
- package/skills/research/experiment-protocol/SKILL.md +3 -3
- package/skills/research/scientific-debugging/SKILL.md +3 -2
- package/skills/research/scientific-modernization/SKILL.md +3 -3
- package/skills/skill-marketplace.json +17 -17
- package/skills/workflow/cut-it/SKILL.md +3 -4
- package/skills/workflow/design-council/SKILL.md +5 -10
- package/skills/workflow/grill-me/SKILL.md +14 -15
- package/skills/workflow/workflow-distiller/SKILL.md +4 -4
- package/src/cli/args.ts +0 -8
- package/src/cli/bootstrap-generate.ts +6 -0
- package/src/cli/config-inspect.ts +24 -7
- package/src/cli/config-trust.ts +62 -0
- package/src/cli/config.ts +8 -0
- package/src/cli/configure.ts +2 -1
- package/src/cli/context-map.ts +75 -14
- package/src/cli/context.ts +46 -17
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/eval.ts +17 -3
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +2 -0
- package/src/cli/modes/print.ts +32 -4
- package/src/cli/run.ts +16 -16
- package/src/cli/skills-eval.ts +10 -8
- package/src/cli/steer-channel.ts +31 -18
- package/src/cli/targets.ts +84 -32
- package/src/cli/tasks.ts +93 -0
- package/src/cli/upgrade.ts +19 -11
- package/src/cli/usage.ts +30 -0
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +240 -96
- package/src/core/bash-exec.ts +43 -15
- package/src/core/bus-events.ts +15 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/config.ts +33 -14
- package/src/core/defaults.ts +5 -4
- package/src/core/file-references.ts +11 -1
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/incomplete-installation.ts +3 -1
- package/src/core/run-overrides.ts +0 -5
- package/src/core/settings-layers.ts +21 -5
- package/src/core/skill-activation.ts +3 -0
- package/src/core/termination.ts +26 -9
- package/src/core/tool-names.ts +5 -2
- package/src/core/untrusted-content.ts +16 -0
- package/src/core/workspace-trust.ts +179 -0
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +5 -3
- package/src/domains/agents/builtins/context-bootstrap.md +3 -1
- package/src/domains/agents/builtins/documenter.md +8 -5
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/researcher.md +1 -0
- package/src/domains/agents/builtins/scout.md +7 -1
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/agents/result-contract.ts +199 -26
- package/src/domains/context/bootstrap-prompt.ts +11 -9
- package/src/domains/context/bootstrap.ts +74 -39
- package/src/domains/context/clio-md.ts +88 -26
- package/src/domains/context/codewiki/build-operation.ts +121 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
- package/src/domains/context/codewiki/build-worker.ts +3 -35
- package/src/domains/context/codewiki/coordinator.ts +36 -6
- package/src/domains/context/codewiki/indexer.ts +59 -19
- package/src/domains/context/contract.ts +6 -2
- package/src/domains/context/extension.ts +97 -11
- package/src/domains/context/fingerprint.ts +39 -34
- package/src/domains/context/index.ts +7 -1
- package/src/domains/context/prompt-context.ts +55 -14
- package/src/domains/context/refresh.ts +12 -57
- package/src/domains/context/wiki/assemble.ts +14 -10
- package/src/domains/context/wiki/evidence.ts +209 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +207 -67
- package/src/domains/context/wiki/meta.ts +10 -2
- package/src/domains/context/wiki/plan-store.ts +70 -14
- package/src/domains/context/wiki/plan.ts +71 -14
- package/src/domains/context/wiki/prompts.ts +85 -1
- package/src/domains/context/wiki/source-content.ts +106 -0
- package/src/domains/context/wiki/staleness.ts +33 -22
- package/src/domains/context/working-set/contract.ts +8 -2
- package/src/domains/context/working-set/engine.ts +17 -4
- package/src/domains/context/working-set/fold.ts +15 -2
- package/src/domains/context/working-set/marker.ts +2 -1
- package/src/domains/context/working-set/project.ts +18 -7
- package/src/domains/context/working-set/recall.ts +82 -56
- package/src/domains/dispatch/active-route-planner.ts +10 -3
- package/src/domains/dispatch/admission-queue.ts +19 -7
- package/src/domains/dispatch/admission.ts +3 -3
- package/src/domains/dispatch/budget-envelope.ts +47 -82
- package/src/domains/dispatch/capacity-lease.ts +57 -19
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +41 -9
- package/src/domains/dispatch/event-pump.ts +28 -7
- package/src/domains/dispatch/execution-role.ts +49 -2
- package/src/domains/dispatch/execution-scheduler.ts +4 -0
- package/src/domains/dispatch/extension.ts +240 -132
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +21 -0
- package/src/domains/dispatch/gate-role-prompts.ts +4 -2
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/parallel-writers.ts +34 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +13 -37
- package/src/domains/dispatch/route-approval.ts +3 -3
- package/src/domains/dispatch/route-observer.ts +4 -2
- package/src/domains/dispatch/route-quality.ts +6 -1
- package/src/domains/dispatch/state.ts +15 -2
- package/src/domains/dispatch/types.ts +21 -5
- package/src/domains/dispatch/worker-spawn.ts +58 -21
- package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
- package/src/domains/eval/compare/behavioral.ts +81 -14
- package/src/domains/eval/compare/compare.ts +15 -5
- package/src/domains/eval/compare/envelope.ts +12 -5
- package/src/domains/eval/metrics/context.ts +24 -1
- package/src/domains/eval/metrics/tracked.ts +4 -28
- package/src/domains/eval/reports/comparison.ts +9 -9
- package/src/domains/eval/runners/clio-run.ts +17 -10
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- package/src/domains/eval/schema/suite.ts +2 -0
- package/src/domains/eval/schema/validate.ts +1 -0
- package/src/domains/eval/suites/run.ts +189 -13
- package/src/domains/eval/verifiers/integrity.ts +39 -0
- package/src/domains/eval/verifiers/patch.ts +58 -2
- package/src/domains/eval/workspaces/temp-copy.ts +3 -0
- package/src/domains/evidence/build.ts +106 -17
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- package/src/domains/interop/registry.ts +2 -2
- package/src/domains/middleware/hooks-io.ts +45 -26
- package/src/domains/middleware/hooks.ts +6 -0
- package/src/domains/middleware/injection-screen.ts +23 -0
- package/src/domains/middleware/marketplace-offer.ts +20 -1
- package/src/domains/middleware/rules.ts +5 -1
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/middleware/stalled-turn.ts +18 -3
- package/src/domains/middleware/task-board-reminder.ts +4 -2
- package/src/domains/middleware/task-nudge.ts +4 -1
- package/src/domains/mux/contract.ts +34 -1
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/mux/dock-controller.ts +8 -1
- package/src/domains/mux/index.ts +1 -0
- package/src/domains/mux/socket-client.ts +13 -3
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/contract.ts +54 -9
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +9 -5
- package/src/domains/observability/projection.ts +423 -53
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- package/src/domains/prompts/compiler.ts +10 -2
- package/src/domains/prompts/contract.ts +7 -4
- package/src/domains/prompts/extension.ts +28 -64
- package/src/domains/prompts/fragments/identity/clio.md +23 -0
- package/src/domains/prompts/fragments/operating/contract.md +12 -0
- package/src/domains/prompts/fragments/operating/delegation.md +5 -0
- package/src/domains/prompts/fragments/wiki/page.md +36 -15
- package/src/domains/prompts/fragments/wiki/plan.md +4 -4
- package/src/domains/prompts/preload-prefix.ts +31 -0
- package/src/domains/prompts/preload.ts +135 -61
- package/src/domains/providers/auth/backend-file.ts +15 -11
- package/src/domains/providers/auth/storage.ts +3 -5
- package/src/domains/providers/catalog.ts +18 -3
- package/src/domains/providers/model-discovery.ts +1 -4
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
- package/src/domains/providers/runtime-resolution.ts +11 -9
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/runtime-descriptor.ts +1 -1
- package/src/domains/resources/skills/promotion.ts +8 -1
- package/src/domains/safety/action-classifier.ts +16 -0
- package/src/domains/safety/autonomy.ts +10 -1
- package/src/domains/safety/contract.ts +5 -1
- package/src/domains/safety/default-path-policy.ts +13 -0
- package/src/domains/safety/extension.ts +11 -2
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +20 -1
- package/src/domains/safety/policy-engine.ts +211 -34
- package/src/domains/safety/project-policy.ts +7 -2
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/safety/workspace-trust.ts +43 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/compaction/compact.ts +384 -21
- package/src/domains/session/compaction/cut-point.ts +42 -5
- package/src/domains/session/compaction/tokens.ts +9 -1
- package/src/domains/session/decision-board.ts +137 -28
- package/src/domains/session/entries.ts +213 -11
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/prompt-manifest.ts +47 -8
- package/src/domains/session/task-board.ts +32 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/handoff.ts +16 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +60 -10
- package/src/engine/acp/server.ts +22 -4
- package/src/engine/acp/transport.ts +55 -9
- package/src/engine/acp/types.ts +9 -0
- package/src/engine/antigravity/subprocess-runtime.ts +20 -4
- package/src/engine/api-registry.ts +19 -2
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/apis/openai-completions.ts +13 -6
- package/src/engine/apis/output-budget.ts +26 -10
- package/src/engine/claude/sdk-runtime.ts +4 -3
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/env-api-keys.ts +2 -1
- package/src/engine/external-subprocess.ts +26 -7
- package/src/engine/loop-guard.ts +19 -2
- package/src/engine/provider-diagnostics.ts +129 -0
- package/src/engine/provider-payload.ts +3 -1
- package/src/engine/worker-runtime.ts +13 -2
- package/src/engine/worker-tools.ts +5 -1
- package/src/entry/extension-reload.ts +1 -0
- package/src/entry/orchestrator.ts +64 -17
- package/src/interactive/chat-loop-messages.ts +12 -4
- package/src/interactive/chat-loop.ts +115 -45
- package/src/interactive/chat-renderer.ts +60 -0
- package/src/interactive/context-recall-command.ts +2 -1
- package/src/interactive/dispatch-board.ts +58 -714
- package/src/interactive/editor-submit.ts +13 -0
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +11 -4
- package/src/interactive/interactive-event-projection.ts +7 -1
- package/src/interactive/interactive-presentation.ts +63 -12
- package/src/interactive/interactive-slash-runtime.ts +4 -1
- package/src/interactive/layout.ts +2 -1
- package/src/interactive/model-session-replay.ts +2 -2
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlay-frame.ts +1 -0
- package/src/interactive/overlay-general-openers.ts +3 -1
- package/src/interactive/overlay-session-lifecycle.ts +6 -0
- package/src/interactive/overlays/ask-user.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +3 -3
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/renderers/tool-execution.ts +17 -1
- package/src/interactive/renderers/worker-entry.ts +25 -10
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +31 -43
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/turn-context.ts +221 -53
- package/src/interactive/turn-middleware.ts +3 -1
- package/src/interactive/turn-persistence.ts +3 -0
- package/src/interactive/turn-runtime.ts +11 -2
- package/src/interactive/turn-state.ts +10 -9
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/watch-pane.ts +18 -4
- package/src/interactive/worker-stream.ts +14 -10
- package/src/tools/agent-tools.ts +6 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +40 -2
- package/src/tools/codewiki/code-nav.ts +4 -10
- package/src/tools/compete-judge-task.ts +71 -0
- package/src/tools/compete-worktrees.ts +41 -1
- package/src/tools/context/index.ts +32 -7
- package/src/tools/context/surface.ts +15 -4
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +33 -1
- package/src/tools/dispatch-arguments.ts +38 -1
- package/src/tools/dispatch-plan.ts +12 -9
- package/src/tools/dispatch-runner.ts +63 -33
- package/src/tools/dispatch-schema.ts +30 -23
- package/src/tools/dispatch-scout-admission.ts +10 -44
- package/src/tools/dispatch-scout.ts +2 -3
- package/src/tools/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/find.ts +13 -4
- package/src/tools/grep.ts +13 -1
- package/src/tools/limitation.ts +76 -0
- package/src/tools/ls.ts +7 -1
- package/src/tools/monitor.ts +26 -11
- package/src/tools/network-policy.ts +11 -24
- package/src/tools/observation.ts +39 -2
- package/src/tools/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/read.ts +112 -15
- package/src/tools/registry.ts +55 -18
- package/src/tools/result-shaping.ts +127 -7
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +40 -5
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/frontend.ts +67 -30
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +303 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- package/src/tools/web-fetch-network.ts +179 -0
- package/src/tools/web-fetch-surface.ts +2 -1
- package/src/tools/web-fetch.ts +15 -13
- package/src/tools/worker-evidence.ts +27 -0
- package/src/worker/spec-contract.ts +12 -8
- package/dist/builtins-IA7V7FUC.js +0 -22
- package/dist/chunk-2WZ546HR.js +0 -792
- package/dist/chunk-5PSMVOLM.js +0 -56
- package/dist/chunk-7DICMOS6.js +0 -313
- package/dist/chunk-BEPZRGGU.js +0 -1560
- package/dist/chunk-JVCV3ICN.js +0 -47
- package/dist/chunk-KK4JZPBQ.js +0 -3982
- package/dist/chunk-MNJGS2IN.js +0 -33
- package/dist/chunk-NDINPTJ4.js +0 -641
- package/dist/chunk-O5CVSAG5.js +0 -122
- package/dist/chunk-OQE5J4C6.js +0 -73
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-UUVG37B4.js +0 -244
- package/dist/chunk-VPKWYKEY.js +0 -169
- package/dist/chunk-Y3CBHOR6.js +0 -228
- package/dist/clio-CMMK4KRR.js +0 -25
- package/dist/configure-LE3IK2TJ.js +0 -56
- package/dist/context-clear-BW4O37TG.js +0 -176
- package/dist/fleet-view-SWBR3VGQ.js +0 -97
- package/dist/preload-P6DGH2PZ.js +0 -13
- package/dist/slash-commands-S7MBJDQK.js +0 -83
- package/dist/tools-TFGJICCU.js +0 -29
- package/dist/verify-RWE4PPEK.js +0 -27
- package/dist/wiki-generate-C7IQOXSP.js +0 -469
|
@@ -1,82 +1,156 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* inspect`, the context-window overlay) use it to make the cliff visible.
|
|
6
|
-
*/
|
|
1
|
+
import type { ProjectPromptContext } from "../context/contract.js";
|
|
2
|
+
import { renderProjectContextFragment } from "../context/index.js";
|
|
3
|
+
import { sha256 } from "./hash.js";
|
|
4
|
+
import { safePrefixOffsets, sourceLineCount } from "./preload-prefix.js";
|
|
7
5
|
|
|
6
|
+
/** Historical limits, measured in UTF-16 code units and rendered lines. */
|
|
8
7
|
export const FULL_PROJECT_CONTEXT_MAX_CHARS = 8000;
|
|
9
8
|
export const FULL_PROJECT_CONTEXT_MAX_LINES = 220;
|
|
10
|
-
|
|
11
|
-
/** Fraction of a limit at which a full preload is flagged as near the cliff. */
|
|
12
|
-
const NEAR_LIMIT_FRACTION = 0.9;
|
|
13
|
-
|
|
14
|
-
export type ProjectPreloadMode = "full" | "synopsis" | "none";
|
|
9
|
+
export type ProjectPreloadMode = "full" | "partial" | "synopsis" | "none";
|
|
15
10
|
export type ProjectPreloadReason = "size" | "lines" | "no-clio-md";
|
|
16
|
-
|
|
11
|
+
export interface ProjectPreloadSource {
|
|
12
|
+
path: string;
|
|
13
|
+
contentHash: string;
|
|
14
|
+
availableChars: number;
|
|
15
|
+
availableLines: number;
|
|
16
|
+
includedChars: number;
|
|
17
|
+
includedLines: number;
|
|
18
|
+
includedRange: [number, number] | null;
|
|
19
|
+
omittedRange: [number, number] | null;
|
|
20
|
+
omissionReason: "budget" | null;
|
|
21
|
+
}
|
|
17
22
|
export interface ProjectPreloadClass {
|
|
18
23
|
mode: ProjectPreloadMode;
|
|
19
|
-
/**
|
|
24
|
+
/** Available rendered UTF-16 code units; retained for historical readers. */
|
|
20
25
|
chars: number;
|
|
21
|
-
/**
|
|
26
|
+
/** Available rendered lines, including the final split segment. */
|
|
22
27
|
lines: number;
|
|
23
|
-
/** Which limit forced the synopsis; null for full or none. */
|
|
24
28
|
reason: ProjectPreloadReason | null;
|
|
25
|
-
/** True when a full preload is within 10% of either limit. */
|
|
26
29
|
nearLimit: boolean;
|
|
27
|
-
/** Human line, e.g. "full (5.2kB, 130 lines)" or "synopsis (reason: size)". */
|
|
28
30
|
label: string;
|
|
31
|
+
/** Additive snapshot accounting; absent in historical full/synopsis records. */
|
|
32
|
+
includedChars?: number;
|
|
33
|
+
includedLines?: number;
|
|
34
|
+
sources?: ProjectPreloadSource[];
|
|
35
|
+
omittedSupportFragments?: number;
|
|
36
|
+
providerSupportsTools?: boolean | null;
|
|
29
37
|
}
|
|
38
|
+
const renderedLines = (text: string): number => (text.length === 0 ? 0 : text.split("\n").length);
|
|
30
39
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
function coverage(path: string, source: string, included: string): ProjectPreloadSource {
|
|
41
|
+
const availableLines = sourceLineCount(source);
|
|
42
|
+
const includedLines = sourceLineCount(included);
|
|
43
|
+
return {
|
|
44
|
+
path,
|
|
45
|
+
contentHash: sha256(source),
|
|
46
|
+
availableChars: source.length,
|
|
47
|
+
availableLines,
|
|
48
|
+
includedChars: included.length,
|
|
49
|
+
includedLines,
|
|
50
|
+
includedRange: includedLines === 0 ? null : [1, includedLines],
|
|
51
|
+
omittedRange: included.length === source.length ? null : [includedLines + 1, availableLines],
|
|
52
|
+
omissionReason: included.length === source.length ? null : "budget",
|
|
53
|
+
};
|
|
40
54
|
}
|
|
41
55
|
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
/** One selector owns delivered text and reporting; it never re-parses authored markers. */
|
|
57
|
+
export function selectProjectPreload(
|
|
58
|
+
context: ProjectPromptContext,
|
|
59
|
+
providerSupportsTools: boolean | null = null,
|
|
60
|
+
options: { maxChars?: number; externalReadTools?: boolean } = {},
|
|
61
|
+
): { text: string; classification: ProjectPreloadClass } {
|
|
62
|
+
const maxChars = options.maxChars ?? FULL_PROJECT_CONTEXT_MAX_CHARS;
|
|
63
|
+
const fits = (text: string): boolean =>
|
|
64
|
+
text.length <= maxChars && renderedLines(text) <= FULL_PROJECT_CONTEXT_MAX_LINES;
|
|
65
|
+
const chars = context.text.length;
|
|
66
|
+
const lines = renderedLines(context.text);
|
|
67
|
+
const classify = (
|
|
68
|
+
text: string,
|
|
69
|
+
mode: ProjectPreloadMode,
|
|
70
|
+
sources: ProjectPreloadSource[],
|
|
71
|
+
omittedSupportFragments: number,
|
|
72
|
+
): ProjectPreloadClass => {
|
|
73
|
+
const includedChars = text.length;
|
|
74
|
+
const includedLines = renderedLines(text);
|
|
75
|
+
const incomplete = sources.filter((source) => source.omissionReason !== null).length;
|
|
62
76
|
return {
|
|
63
|
-
mode
|
|
77
|
+
mode,
|
|
64
78
|
chars,
|
|
65
79
|
lines,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
80
|
+
includedChars,
|
|
81
|
+
includedLines,
|
|
82
|
+
sources,
|
|
83
|
+
omittedSupportFragments,
|
|
84
|
+
providerSupportsTools,
|
|
85
|
+
reason: mode !== "partial" ? null : chars > maxChars ? "size" : "lines",
|
|
86
|
+
nearLimit: mode === "full" && (chars > maxChars * 0.9 || lines > FULL_PROJECT_CONTEXT_MAX_LINES * 0.9),
|
|
87
|
+
label: `${mode} (included ${includedChars}/${chars} UTF-16 units, ${includedLines}/${lines} rendered lines; ${incomplete} of ${sources.length} handbook sources incomplete${providerSupportsTools === null ? "; tool capability unknown" : ""})`,
|
|
69
88
|
};
|
|
70
|
-
}
|
|
71
|
-
const nearLimit =
|
|
72
|
-
chars > FULL_PROJECT_CONTEXT_MAX_CHARS * NEAR_LIMIT_FRACTION ||
|
|
73
|
-
lines > FULL_PROJECT_CONTEXT_MAX_LINES * NEAR_LIMIT_FRACTION;
|
|
74
|
-
return {
|
|
75
|
-
mode: "full",
|
|
76
|
-
chars,
|
|
77
|
-
lines,
|
|
78
|
-
reason: null,
|
|
79
|
-
nearLimit,
|
|
80
|
-
label: `full (${formatKb(chars)}, ${lines} lines)`,
|
|
81
89
|
};
|
|
90
|
+
if (fits(context.text)) {
|
|
91
|
+
const sources = context.handbookSources.map(({ path, source }) => coverage(path, source, source));
|
|
92
|
+
return {
|
|
93
|
+
text: context.text,
|
|
94
|
+
classification: classify(context.text, context.text.length === 0 ? "none" : "full", sources, 0),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const retrieval =
|
|
98
|
+
providerSupportsTools === false
|
|
99
|
+
? "Remaining source text is unavailable to this target and cannot be recovered with tools in this session. Paths are source references."
|
|
100
|
+
: options.externalReadTools
|
|
101
|
+
? "External read tools are unknown. If available and permitted, read the listed omitted physical lines with your file-reading tool. Otherwise report the missing guidance to the parent. Reads use current disk content, which may differ from the captured source."
|
|
102
|
+
: `${providerSupportsTools === null ? "If tools are available, read" : "Read"} each omitted suffix with read({path: ABSOLUTE_PATH, offset: FIRST_OMITTED_LINE, limit: 200}); continue as needed. Reads use current disk content, which may differ from the captured source.`;
|
|
103
|
+
const header = [
|
|
104
|
+
"<project-preload>",
|
|
105
|
+
"Incomplete authored prefixes/excerpts: omitted guidance is not known from this preload. Read the selected sources before relying on project guidance.",
|
|
106
|
+
retrieval,
|
|
107
|
+
];
|
|
108
|
+
const totals = context.handbookSources.map(({ source }) => sourceLineCount(source));
|
|
109
|
+
const sourceRecord = (path: string, included: string, omitted: string): string =>
|
|
110
|
+
`${JSON.stringify(path)}: included physical lines ${included}; omitted physical lines ${omitted}.`;
|
|
111
|
+
const reservedRecords = context.handbookSources.map(({ path }, index) =>
|
|
112
|
+
sourceRecord(path, `none/${totals[index]}-${totals[index]}`, `none/${totals[index]}-${totals[index]} (budget)`),
|
|
113
|
+
);
|
|
114
|
+
const notice = (records: string[], omitted: number): string =>
|
|
115
|
+
[...header, ...records, `Support fragments omitted: ${omitted}.`, "</project-preload>"].join("\n");
|
|
116
|
+
const reservedNotice = notice(reservedRecords, context.supportFragments.length);
|
|
117
|
+
if (!fits(reservedNotice))
|
|
118
|
+
throw new Error(`project preload metadata-budget overflow for ${context.handbookSources.length} handbook sources`);
|
|
119
|
+
const excerpts = context.handbookSources.map(() => "");
|
|
120
|
+
const fragments = context.handbookSources.map(() => "");
|
|
121
|
+
const assemble = (metadata: string, support: readonly string[] = []): string =>
|
|
122
|
+
[metadata, ...fragments.filter(Boolean), ...support].join("\n\n");
|
|
123
|
+
// Allocate nearest first, while fragments retain the original ancestor-first order.
|
|
124
|
+
for (let index = context.handbookSources.length - 1; index >= 0; index--) {
|
|
125
|
+
const entry = context.handbookSources[index];
|
|
126
|
+
if (!entry) continue;
|
|
127
|
+
const { path, source } = entry;
|
|
128
|
+
for (const offset of safePrefixOffsets(source, maxChars).slice(1)) {
|
|
129
|
+
const previous = fragments[index] ?? "";
|
|
130
|
+
fragments[index] = renderProjectContextFragment(source.slice(0, offset), path);
|
|
131
|
+
if (!fits(assemble(reservedNotice))) {
|
|
132
|
+
fragments[index] = previous;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
excerpts[index] = source.slice(0, offset);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const support: string[] = [];
|
|
139
|
+
for (const fragment of context.supportFragments) {
|
|
140
|
+
if (fits(assemble(reservedNotice, [...support, fragment]))) support.push(fragment);
|
|
141
|
+
}
|
|
142
|
+
const sources = context.handbookSources.map(({ path, source }, index) =>
|
|
143
|
+
coverage(path, source, excerpts[index] ?? ""),
|
|
144
|
+
);
|
|
145
|
+
const records = sources.map((source) =>
|
|
146
|
+
sourceRecord(
|
|
147
|
+
source.path,
|
|
148
|
+
source.includedRange?.join("-") ?? "none",
|
|
149
|
+
source.omittedRange ? `${source.omittedRange.join("-")} (budget)` : "none",
|
|
150
|
+
),
|
|
151
|
+
);
|
|
152
|
+
const omitted = context.supportFragments.length - support.length;
|
|
153
|
+
const text = assemble(notice(records, omitted), support);
|
|
154
|
+
if (!fits(text)) throw new Error("project preload budget postcondition failed");
|
|
155
|
+
return { text, classification: classify(text, "partial", sources, omitted) };
|
|
82
156
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { chmodSync,
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { safeResourceWrite } from "../../../core/safe-resource-write.js";
|
|
5
5
|
import { withStateFileLock, withStateFileLockSync } from "../../../core/state-file-lock.js";
|
|
6
|
-
import {
|
|
6
|
+
import { resolveClioDirs } from "../../../core/xdg.js";
|
|
7
7
|
import type { AuthOperationOptions } from "../../../engine/types.js";
|
|
8
8
|
|
|
9
9
|
import type { AuthStorageBackend, LockResult } from "./storage.js";
|
|
@@ -20,7 +20,7 @@ function atomicWriteSecret(absPath: string, contents: string): void {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export function authStoragePath(): string {
|
|
23
|
-
return join(
|
|
23
|
+
return join(resolveClioDirs().config, "credentials.yaml");
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export class FileAuthStorageBackend implements AuthStorageBackend {
|
|
@@ -34,18 +34,23 @@ export class FileAuthStorageBackend implements AuthStorageBackend {
|
|
|
34
34
|
mkdirSync(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
// Writers publish complete files with an atomic rename, so a reader sees
|
|
38
|
+
// either the prior or next committed snapshot without creating a lockfile or
|
|
39
|
+
// initializing a missing home. Read-modify-write operations still take the
|
|
40
|
+
// exclusive lock below and read again inside it before merging changes.
|
|
41
|
+
read(): string | undefined {
|
|
42
|
+
try {
|
|
43
|
+
return readFileSync(this.path, "utf8");
|
|
44
|
+
} catch (error) {
|
|
45
|
+
if ((error as NodeJS.ErrnoException).code === "ENOENT") return undefined;
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
withLock<T>(fn: (current: string | undefined) => LockResult<T>): T {
|
|
45
51
|
this.ensureParentDir();
|
|
46
|
-
this.ensureFileExists();
|
|
47
52
|
return withStateFileLockSync(this.path, () => {
|
|
48
|
-
const current =
|
|
53
|
+
const current = this.read();
|
|
49
54
|
const { result, next } = fn(current);
|
|
50
55
|
if (next !== undefined) {
|
|
51
56
|
atomicWriteSecret(this.path, next);
|
|
@@ -60,7 +65,6 @@ export class FileAuthStorageBackend implements AuthStorageBackend {
|
|
|
60
65
|
): Promise<T> {
|
|
61
66
|
options?.signal?.throwIfAborted();
|
|
62
67
|
this.ensureParentDir();
|
|
63
|
-
this.ensureFileExists();
|
|
64
68
|
return withStateFileLock(
|
|
65
69
|
this.path,
|
|
66
70
|
async () => {
|
|
@@ -38,6 +38,8 @@ export interface LockResult<T> {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export interface AuthStorageBackend {
|
|
41
|
+
/** A committed snapshot without creating storage or acquiring a write lock. */
|
|
42
|
+
read?(): string | undefined;
|
|
41
43
|
withLock<T>(fn: (current: string | undefined) => LockResult<T>): T;
|
|
42
44
|
withLockAsync<T>(
|
|
43
45
|
fn: (current: string | undefined) => Promise<LockResult<T>>,
|
|
@@ -305,11 +307,7 @@ export class AuthStorage {
|
|
|
305
307
|
|
|
306
308
|
reload(): void {
|
|
307
309
|
try {
|
|
308
|
-
|
|
309
|
-
this.backend.withLock((current) => {
|
|
310
|
-
content = current;
|
|
311
|
-
return { result: undefined };
|
|
312
|
-
});
|
|
310
|
+
const content = this.backend.read ? this.backend.read() : this.backend.withLock((current) => ({ result: current }));
|
|
313
311
|
const read = readStorageData(content);
|
|
314
312
|
this.data = read.data;
|
|
315
313
|
this.damage = read.damage;
|
|
@@ -122,6 +122,8 @@ export interface CatalogBackedSynthesisInput {
|
|
|
122
122
|
runtimeId: string;
|
|
123
123
|
provider: string;
|
|
124
124
|
api: Api;
|
|
125
|
+
/** Use the catalog transport and its endpoint when no explicit target URL is configured. */
|
|
126
|
+
preferCatalogTransport?: boolean;
|
|
125
127
|
defaultBaseUrl: string;
|
|
126
128
|
defaultHeaders?: Record<string, string>;
|
|
127
129
|
}
|
|
@@ -134,15 +136,28 @@ export function synthesizeCatalogBackedModel(input: CatalogBackedSynthesisInput)
|
|
|
134
136
|
null,
|
|
135
137
|
input.target.capabilities ?? null,
|
|
136
138
|
);
|
|
139
|
+
const api = input.preferCatalogTransport && input.target.url === undefined ? (builtin?.api ?? input.api) : input.api;
|
|
140
|
+
// A catalog endpoint, compatibility flags, and effort map describe one API.
|
|
141
|
+
// Explicit endpoints keep the runtime's API contract, even when a catalog
|
|
142
|
+
// model has moved to another transport (for example OpenRouter Claude).
|
|
143
|
+
const sameTransport = builtin?.api === api;
|
|
144
|
+
const catalogFields = { ...builtin };
|
|
145
|
+
if (input.preferCatalogTransport && !sameTransport) {
|
|
146
|
+
delete catalogFields.compat;
|
|
147
|
+
delete catalogFields.thinkingLevelMap;
|
|
148
|
+
}
|
|
137
149
|
const pricing = input.target.pricing;
|
|
138
150
|
const targetHeaders = input.target.auth?.headers;
|
|
139
151
|
const model: Model<Api> = {
|
|
140
|
-
...
|
|
152
|
+
...catalogFields,
|
|
141
153
|
id: input.wireModelId,
|
|
142
154
|
name: `${input.wireModelId} (${input.target.id})`,
|
|
143
|
-
api
|
|
155
|
+
api,
|
|
144
156
|
provider: input.provider,
|
|
145
|
-
baseUrl:
|
|
157
|
+
baseUrl:
|
|
158
|
+
input.target.url ??
|
|
159
|
+
(input.preferCatalogTransport && !sameTransport ? undefined : builtin?.baseUrl) ??
|
|
160
|
+
input.defaultBaseUrl,
|
|
146
161
|
reasoning: caps.reasoning,
|
|
147
162
|
input: caps.vision ? (builtin?.input.includes("image") ? builtin.input : ["text", "image"]) : ["text"],
|
|
148
163
|
cost: {
|
|
@@ -76,10 +76,7 @@ export function modelResidencyForStatus(status: DiscoveryStatus | null | undefin
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
export function hasLiveModelCatalog(status: TargetStatus): boolean {
|
|
79
|
-
|
|
80
|
-
// Unit-test and plugin mocks from before `discoveredModelsSource` still use
|
|
81
|
-
// `discoveredModels` to mean "this came from discovery".
|
|
82
|
-
return status.discoveredModelsSource === undefined && status.discoveredModels.length > 0;
|
|
79
|
+
return status.discoveredModelsSource === "probe" || status.discoveredModelsSource === "cache";
|
|
83
80
|
}
|
|
84
81
|
|
|
85
82
|
/**
|
|
@@ -1715,15 +1715,16 @@
|
|
|
1715
1715
|
card's dial is reasoning strength with levels low, medium, high, and
|
|
1716
1716
|
xhigh, set through the system prompt as "Reasoning strength: <value>",
|
|
1717
1717
|
and the router passes it as chat_template_kwargs.reasoning_strength
|
|
1718
|
-
pinned to xhigh. There is no off level on that scale,
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1718
|
+
pinned to xhigh. There is no off level on that scale, so the family
|
|
1719
|
+
stays always-on: encoding it as on-off would put an enable_thinking
|
|
1720
|
+
flag on the wire that this template does not read while the TUI showed
|
|
1721
|
+
a working off/on dial, which is the failure qwopus3.5-9b-v3 above was
|
|
1722
|
+
reclassified to stop. The strength dial itself is driven per request:
|
|
1723
|
+
thinking.chatTemplateKwargs.byLevel below maps Clio's thinking level to
|
|
1724
|
+
chat_template_kwargs.reasoning_strength on llama.cpp, and LM Studio,
|
|
1725
|
+
which drops chat_template_kwargs, reports that kwarg as undeliverable
|
|
1726
|
+
instead of sending it. No per-level output has been measured yet, so
|
|
1727
|
+
the always-on classification above stands until one is.
|
|
1727
1728
|
|
|
1728
1729
|
Sampler provenance: temperature 1.0, top_p 0.95 and top_k 64 are the
|
|
1729
1730
|
card's Best Practices values and the router preset uses the same three.
|
|
@@ -1743,7 +1744,7 @@
|
|
|
1743
1744
|
gpuTiers:
|
|
1744
1745
|
"32gb": "Agent-role target on a 32 GB card: UD-Q4_K_XL weights, q8_0 KV at ctx=131072, parallel=1, with the Q8_0 perception encoder and the DFlash drafter both resident."
|
|
1745
1746
|
runtimePreference:
|
|
1746
|
-
llamaCpp: "OpenAI-compatible chat completions with --jinja.
|
|
1747
|
+
llamaCpp: "OpenAI-compatible chat completions with --jinja. Clio drives the reasoning budget per request through chat_template_kwargs.reasoning_strength, mapped from the thinking level by thinking.chatTemplateKwargs.byLevel; a --chat-template-kwargs launch value is only the server default for requests that send none."
|
|
1747
1748
|
openaiCompat: "Use when a gateway fronts the same llama.cpp chat-completions surface. Expect a reasoning trace on every response whatever the configured thinking level says."
|
|
1748
1749
|
llamaCpp:
|
|
1749
1750
|
ctxSize: 131072
|
|
@@ -1762,7 +1763,7 @@
|
|
|
1762
1763
|
mechanism: always-on
|
|
1763
1764
|
chatTemplateKwargs:
|
|
1764
1765
|
byLevel:
|
|
1765
|
-
# Card: reasoning strength low|medium|high|xhigh (scratchpad/catalog/models/unsloth-Muse-Glimmer-30B.md:35). The per-family kwarg key the note above
|
|
1766
|
+
# Card: reasoning strength low|medium|high|xhigh (scratchpad/catalog/models/unsloth-Muse-Glimmer-30B.md:35). The per-family kwarg key the note above describes.
|
|
1766
1767
|
key: reasoning_strength
|
|
1767
1768
|
values:
|
|
1768
1769
|
low: low
|
|
@@ -1774,9 +1775,10 @@
|
|
|
1774
1775
|
guidance: |
|
|
1775
1776
|
Muse Glimmer reasons on every turn and its strength scale has no off
|
|
1776
1777
|
level, so Clio shows the dial as forced and budgets for a reasoning
|
|
1777
|
-
preamble ahead of every answer.
|
|
1778
|
-
|
|
1779
|
-
|
|
1778
|
+
preamble ahead of every answer. The thinking level still sets how much
|
|
1779
|
+
it thinks: on llama.cpp Clio sends reasoning_strength (low, medium,
|
|
1780
|
+
high, xhigh) as a chat-template kwarg per request. LM Studio drops that
|
|
1781
|
+
kwarg, so there the strength stays at the server's own default.
|
|
1780
1782
|
serving: "Meta Superintelligence Lab Muse-Glimmer-30B, a dense 29.6B causal transformer with a ~1.8B ViT-G/14 perception encoder, interleaved local and global attention with a 2048 sliding window, and a DFlash block-diffusion drafter that proposes 16 tokens per forward pass. Card context length is 131072. Input is text plus image; the mini router additionally tags video, which the card does not claim, so the catalog follows the card."
|
|
1781
1783
|
|
|
1782
1784
|
# ThinkingCap is a brevity finetune of Qwen3.6-27B and not the base model, so it
|
|
@@ -665,14 +665,16 @@ function positiveWindow(value: number | null | undefined): number | undefined {
|
|
|
665
665
|
* (live model hint > knowledge base > catalog > runtime default > 8192).
|
|
666
666
|
* - `desired`: what Clio wants for coding. Local-native tiers still get a
|
|
667
667
|
* 128k recommendation, but this is advisory only.
|
|
668
|
-
* - `effective`:
|
|
669
|
-
* loaded > probe >
|
|
670
|
-
*
|
|
668
|
+
* - `effective`: the configured target limit, capped by a known loaded window;
|
|
669
|
+
* otherwise loaded > probe > model-specific knowledge > runtime descriptor
|
|
670
|
+
* default. Clio no longer invents a 128k effective
|
|
671
671
|
* window for unknown local models; providers must probe it or users must
|
|
672
672
|
* configure an explicit override.
|
|
673
673
|
*
|
|
674
|
-
*
|
|
675
|
-
*
|
|
674
|
+
* A loaded window prevents configuration from overstating what the backend can
|
|
675
|
+
* serve this turn. An operator can also configure a smaller limit, including
|
|
676
|
+
* when a gateway advertises training capacity instead of serving capacity.
|
|
677
|
+
* A model whose weights
|
|
676
678
|
* allow 262k but which is open at 100k fails at 100k, so planning against the
|
|
677
679
|
* declared number means autocompact never fires in time.
|
|
678
680
|
*
|
|
@@ -718,18 +720,18 @@ export function resolveContextWindowDetails(
|
|
|
718
720
|
const overrideWindow = positiveWindow(target.capabilities?.contextWindow);
|
|
719
721
|
let effective: number;
|
|
720
722
|
let source: ContextWindowSource;
|
|
721
|
-
if (loadedWindow !== undefined) {
|
|
723
|
+
if (loadedWindow !== undefined && (overrideWindow === undefined || loadedWindow <= overrideWindow)) {
|
|
722
724
|
effective = loadedWindow;
|
|
723
725
|
source = "loaded";
|
|
726
|
+
} else if (overrideWindow !== undefined) {
|
|
727
|
+
effective = overrideWindow;
|
|
728
|
+
source = "target-override";
|
|
724
729
|
} else if (probeWindow !== undefined) {
|
|
725
730
|
effective = probeWindow;
|
|
726
731
|
// Not "loaded": a probed window is what the target reported for the
|
|
727
732
|
// model, and only a runtime that names its resident instance's window
|
|
728
733
|
// has said anything about what is serving right now.
|
|
729
734
|
source = "probe";
|
|
730
|
-
} else if (overrideWindow !== undefined) {
|
|
731
|
-
effective = overrideWindow;
|
|
732
|
-
source = "target-override";
|
|
733
735
|
} else if (modelDeclared !== undefined) {
|
|
734
736
|
effective = modelDeclared;
|
|
735
737
|
source = modelDeclaredSource;
|
|
@@ -23,6 +23,15 @@ const claudeCodeRuntime: RuntimeDescriptor = {
|
|
|
23
23
|
headlessCommand: "claude -p --output-format stream-json",
|
|
24
24
|
outputParser: "claude-code-stream-json",
|
|
25
25
|
defaultCapabilities: claudeCodeCapabilities,
|
|
26
|
+
// The Claude CLI runs its own tool loop. Clio observes only the stream, so a
|
|
27
|
+
// declared per-tool budget is recorded as external-one-shot, never enforced.
|
|
28
|
+
externalAgentLoop: {
|
|
29
|
+
tools: "externally-governed-unobserved",
|
|
30
|
+
network: "externally-governed-unobserved",
|
|
31
|
+
budget: "external-one-shot",
|
|
32
|
+
generatingRetry: "allowed",
|
|
33
|
+
modelCatalog: "static",
|
|
34
|
+
},
|
|
26
35
|
synthesizeModel(target: TargetDescriptor, wireModelId: string, kb: KnowledgeBaseHit | null): Model<Api> {
|
|
27
36
|
return synthesizeClaudeDelegatedModel({
|
|
28
37
|
target,
|
|
@@ -82,6 +82,7 @@ const openrouterRuntime: RuntimeDescriptor = {
|
|
|
82
82
|
displayName: "OpenRouter",
|
|
83
83
|
kind: "http",
|
|
84
84
|
tier: "cloud",
|
|
85
|
+
// Runtime fallback and explicit-URL contract; dispatch uses each synthesized model.api.
|
|
85
86
|
apiFamily: "openai-completions",
|
|
86
87
|
auth: "api-key",
|
|
87
88
|
credentialsEnvVar: "OPENROUTER_API_KEY",
|
|
@@ -101,6 +102,7 @@ const openrouterRuntime: RuntimeDescriptor = {
|
|
|
101
102
|
defaultCapabilities,
|
|
102
103
|
runtimeId: "openrouter",
|
|
103
104
|
api: "openai-completions",
|
|
105
|
+
preferCatalogTransport: true,
|
|
104
106
|
provider: "openrouter",
|
|
105
107
|
defaultBaseUrl: OPENROUTER_BASE_URL,
|
|
106
108
|
defaultHeaders: OPENROUTER_HEADERS,
|
|
@@ -95,7 +95,7 @@ export function supportGroupLabel(group: ProviderSupportGroup): string {
|
|
|
95
95
|
|
|
96
96
|
function classifyGroup(runtime: RuntimeDescriptor): ProviderSupportGroup {
|
|
97
97
|
if (runtime.id === "openai-codex") return "featured";
|
|
98
|
-
if (runtime.externalAgentLoop !== undefined) return "external-worker";
|
|
98
|
+
if (runtime.externalAgentLoop !== undefined && runtime.auth !== "claude-cli") return "external-worker";
|
|
99
99
|
if (runtime.id === "alcf") return "cloud-api";
|
|
100
100
|
if (runtime.auth === "oauth" || runtime.auth === "claude-cli") return "subscription";
|
|
101
101
|
if (catalogProviderForRuntime(runtime.id) || (runtime.auth === "api-key" && !runtime.probe)) {
|
|
@@ -171,7 +171,7 @@ export interface RuntimeDescriptor {
|
|
|
171
171
|
tools: "externally-governed-unobserved";
|
|
172
172
|
network: "externally-governed-unobserved";
|
|
173
173
|
budget: "external-one-shot";
|
|
174
|
-
generatingRetry: "forbidden";
|
|
174
|
+
generatingRetry: "forbidden" | "allowed";
|
|
175
175
|
modelCatalog: "live-authoritative" | "static";
|
|
176
176
|
};
|
|
177
177
|
/**
|
|
@@ -109,6 +109,8 @@ export function scorePromotionEntry(userText: string, entry: MarketplaceSkill):
|
|
|
109
109
|
|
|
110
110
|
/**
|
|
111
111
|
* The uninstalled marketplace entries that match the request, best first.
|
|
112
|
+
* Authored trigger hits precede token fallbacks, even when incidental
|
|
113
|
+
* description overlap ties or exceeds the trigger's numeric score.
|
|
112
114
|
* `excludedNames` carries installed skills plus every decline scope the
|
|
113
115
|
* caller tracks; the matcher itself is stateless.
|
|
114
116
|
*/
|
|
@@ -123,7 +125,12 @@ export function matchMarketplaceSkills(
|
|
|
123
125
|
const match = scorePromotionEntry(userText, entry);
|
|
124
126
|
if (match) matches.push(match);
|
|
125
127
|
}
|
|
126
|
-
return matches.sort(
|
|
128
|
+
return matches.sort(
|
|
129
|
+
(a, b) =>
|
|
130
|
+
Number(b.matchedTrigger !== undefined) - Number(a.matchedTrigger !== undefined) ||
|
|
131
|
+
b.score - a.score ||
|
|
132
|
+
a.entry.name.localeCompare(b.entry.name),
|
|
133
|
+
);
|
|
127
134
|
}
|
|
128
135
|
|
|
129
136
|
/**
|
|
@@ -84,6 +84,7 @@ function isUnderPrefix(abs: string, prefix: string): boolean {
|
|
|
84
84
|
|
|
85
85
|
function baseClassify(tool: string): ActionClass | null {
|
|
86
86
|
switch (tool) {
|
|
87
|
+
case ToolNames.Evidence:
|
|
87
88
|
case ToolNames.Read:
|
|
88
89
|
case ToolNames.Grep:
|
|
89
90
|
case ToolNames.Find:
|
|
@@ -110,6 +111,12 @@ function baseClassify(tool: string): ActionClass | null {
|
|
|
110
111
|
// or survives the session, so it is reversible, local, and never gated
|
|
111
112
|
// behind a confirmation.
|
|
112
113
|
case ToolNames.Panes:
|
|
114
|
+
// limitation appends a typed receipt to the session ledger and touches
|
|
115
|
+
// nothing else, so it is never gated behind a confirmation.
|
|
116
|
+
case ToolNames.Limitation:
|
|
117
|
+
// decide appends the model's own design decision to the session
|
|
118
|
+
// decision board. One ledger append, no workspace effect, never gated.
|
|
119
|
+
case ToolNames.Decide:
|
|
113
120
|
return "read";
|
|
114
121
|
case ToolNames.Write:
|
|
115
122
|
case ToolNames.Edit:
|
|
@@ -203,7 +210,16 @@ function extractWritePath(tool: string, args: Record<string, unknown> | undefine
|
|
|
203
210
|
return tool === ToolNames.Artifact ? artifactDefaultPath(args?.kind) : null;
|
|
204
211
|
}
|
|
205
212
|
|
|
213
|
+
/** Shared by classification and registry exposure; an empty body still sends data. */
|
|
214
|
+
export function webFetchIsOutward(args: Record<string, unknown> | undefined): boolean {
|
|
215
|
+
const method = typeof args?.method === "string" && args.method.length > 0 ? args.method.toUpperCase() : "GET";
|
|
216
|
+
return (method !== "GET" && method !== "HEAD") || args?.body !== undefined;
|
|
217
|
+
}
|
|
218
|
+
|
|
206
219
|
export function classify(call: ClassifierCall): Classification {
|
|
220
|
+
if (call.tool === ToolNames.WebFetch && webFetchIsOutward(call.args)) {
|
|
221
|
+
return { actionClass: "write", reasons: ["web-fetch:outward"] };
|
|
222
|
+
}
|
|
207
223
|
const base = baseClassify(call.tool);
|
|
208
224
|
if (base === null) {
|
|
209
225
|
return { actionClass: "unknown", reasons: [`unknown tool: ${call.tool}`] };
|
|
@@ -139,7 +139,16 @@ export function autonomyDenyRejection(level: AutonomyLevel, tool: string, action
|
|
|
139
139
|
detail:
|
|
140
140
|
`Clio is at autonomy ${level}: ${actionClass} actions are denied without prompting. ` +
|
|
141
141
|
"Describe the change you would make instead, so the operator can apply it or raise the autonomy level.",
|
|
142
|
-
hints: [
|
|
142
|
+
hints: [
|
|
143
|
+
...(level === "read-only" && actionClass === "execute"
|
|
144
|
+
? [
|
|
145
|
+
"For independent permitted inspection, use the native read, grep, find, or ls tools when available. " +
|
|
146
|
+
"Do not use them to reproduce the denied execution or write; each call still follows its safety policy.",
|
|
147
|
+
]
|
|
148
|
+
: []),
|
|
149
|
+
"Propose the exact edit or command as text.",
|
|
150
|
+
"The operator can change the level in interactive /settings or start a new headless run with clio-coder run --autonomy <level>.",
|
|
151
|
+
],
|
|
143
152
|
};
|
|
144
153
|
}
|
|
145
154
|
|
|
@@ -49,7 +49,11 @@ export interface SafetyContract {
|
|
|
49
49
|
isSubset(worker: ScopeSpec, orchestrator: ScopeSpec): boolean;
|
|
50
50
|
|
|
51
51
|
/** Immutable safety policy metadata for receipts, audit, and replay. */
|
|
52
|
-
readonly policy?: {
|
|
52
|
+
readonly policy?: {
|
|
53
|
+
metadata(posture?: string): SafetyPolicyMetadata;
|
|
54
|
+
/** Pure search-result filter using the same compiled policy as admission. */
|
|
55
|
+
allowsObservationPath?(path: string): boolean;
|
|
56
|
+
};
|
|
53
57
|
|
|
54
58
|
/**
|
|
55
59
|
* Shared audit sink. `recordCount` is for diagnostics; `recordToolCall` is
|
|
@@ -67,8 +67,10 @@ export const DEFAULT_DAMAGE_CONTROL_PATH_POLICY: PathPolicyInput = {
|
|
|
67
67
|
// widen its own permissions in two tool calls. Both are authored by the
|
|
68
68
|
// operator through the CLI (`clio-coder verifiers author` lands nothing
|
|
69
69
|
// before `--yes`), so model-side writes and deletes are refused.
|
|
70
|
+
// Skills also refuse model-side writes and deletes; installs go through `clio-coder skills install`.
|
|
70
71
|
".clio-coder/safety.yaml",
|
|
71
72
|
".clio-coder/verifiers.yaml",
|
|
73
|
+
".clio-coder/skills/",
|
|
72
74
|
"/etc/",
|
|
73
75
|
"/usr/",
|
|
74
76
|
"/bin/",
|
|
@@ -123,3 +125,14 @@ export function mergePathPolicyInputs(base: PathPolicyInput, override: PathPolic
|
|
|
123
125
|
noDeletePaths: [...(base.noDeletePaths ?? []), ...(override.noDeletePaths ?? [])],
|
|
124
126
|
};
|
|
125
127
|
}
|
|
128
|
+
|
|
129
|
+
/** Operator and host authority survives every project-local exemption. */
|
|
130
|
+
export const OPERATOR_PATH_POLICY: PathPolicyInput = {
|
|
131
|
+
zeroAccessPaths: DEFAULT_DAMAGE_CONTROL_PATH_POLICY.zeroAccessPaths?.filter((entry) => entry.startsWith("~/")) ?? [],
|
|
132
|
+
readOnlyPaths:
|
|
133
|
+
DEFAULT_DAMAGE_CONTROL_PATH_POLICY.readOnlyPaths?.filter(
|
|
134
|
+
(entry) => entry.startsWith("~/") || entry.startsWith("/") || entry.startsWith(".clio-coder/"),
|
|
135
|
+
) ?? [],
|
|
136
|
+
noWritePaths: DEFAULT_DAMAGE_CONTROL_PATH_POLICY.noWritePaths ?? [],
|
|
137
|
+
noDeletePaths: DEFAULT_DAMAGE_CONTROL_PATH_POLICY.noDeletePaths?.filter((entry) => entry.startsWith("~/")) ?? [],
|
|
138
|
+
};
|