@iowarp/clio-coder 0.4.8 → 0.4.9
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 +82 -0
- package/README.md +7 -6
- package/dist/{acp-JWPQZM2D.js → acp-ZWZCPS2A.js} +13 -13
- package/dist/{agents-4GCDIRVX.js → agents-LYSOWZUE.js} +53 -52
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-SYAKTDQE.js → auth-WBQGKWQ5.js} +27 -27
- package/dist/{background-OW67WMYR.js → background-BUMOBAQN.js} +4 -4
- package/dist/{builtins-TKS63VNV.js → builtins-ODRJOEDI.js} +7 -7
- package/dist/{chunk-JLBVCROW.js → chunk-2DRRZ57Q.js} +33 -24
- package/dist/chunk-2JBZYUPY.js +105 -0
- package/dist/chunk-2KUBKL63.js +336 -0
- package/dist/{chunk-K45LHSCI.js → chunk-2VBWFXYE.js} +7 -3
- package/dist/{chunk-XTLJDC2X.js → chunk-2X2R3UTH.js} +23 -18
- package/dist/{chunk-5HULHKT2.js → chunk-37LW32LZ.js} +5 -5
- package/dist/{chunk-W7KNI3F5.js → chunk-3AND2EFU.js} +5 -5
- package/dist/{chunk-36XSBPXL.js → chunk-3RDHGNU7.js} +95 -27
- package/dist/{chunk-BIY22UUK.js → chunk-3SUDBGEI.js} +11 -10
- package/dist/{chunk-3IQOZRQ6.js → chunk-3TQN67I2.js} +7 -7
- package/dist/{chunk-KWJXCL2X.js → chunk-3U4BL2EV.js} +3 -3
- package/dist/{chunk-RBES4TCZ.js → chunk-3UQADNG2.js} +3 -3
- package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
- package/dist/{chunk-MWMW53WW.js → chunk-4ATBOFRP.js} +649 -193
- package/dist/{chunk-QGIC5SX5.js → chunk-4DNL43EZ.js} +3 -3
- package/dist/{chunk-GVU4CXPJ.js → chunk-4HFJKRGZ.js} +113 -54
- package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
- package/dist/{chunk-LZDLYSUN.js → chunk-5RTEFNBP.js} +3 -3
- package/dist/{chunk-HMGAKB7E.js → chunk-64XJW7NT.js} +15 -15
- package/dist/{chunk-EXKUF426.js → chunk-7FBCRWVT.js} +280 -280
- package/dist/{chunk-K3W6BF5C.js → chunk-7JSOSVLP.js} +2 -2
- package/dist/{chunk-WFTSK7N3.js → chunk-7N3OLLSL.js} +4 -4
- package/dist/{chunk-JRA6OBHY.js → chunk-A6DULIMH.js} +17 -5
- package/dist/{chunk-R5NRX5N4.js → chunk-AB3QXXBC.js} +2 -2
- package/dist/chunk-ACCECAH4.js +49 -0
- package/dist/{chunk-GJBJHJNY.js → chunk-AM6CEP2K.js} +5 -5
- package/dist/{chunk-MUXNDNMZ.js → chunk-AY4XE6GN.js} +19 -13
- package/dist/{chunk-MATCRH3M.js → chunk-BBA2TAWV.js} +9 -9
- package/dist/{chunk-PMUUAABD.js → chunk-BMNVVKEW.js} +9 -9
- package/dist/{chunk-TOPICHGR.js → chunk-CTGZCEI6.js} +2 -2
- package/dist/{chunk-L75H5B3B.js → chunk-DIAJYJYG.js} +2 -2
- package/dist/{chunk-JIMWEYWO.js → chunk-EHZRAB4U.js} +2 -2
- package/dist/{chunk-YXANQGCX.js → chunk-EM2DIQAJ.js} +6 -6
- package/dist/{chunk-JCVIL6TY.js → chunk-ETF4ROKH.js} +4 -4
- package/dist/{chunk-5W4FRA5Q.js → chunk-F2YM3JY4.js} +483 -253
- package/dist/{chunk-YGIV24MF.js → chunk-FEBQWHJT.js} +21 -16
- package/dist/{chunk-PGEFOTJB.js → chunk-FPS4R2RN.js} +5 -4
- package/dist/{chunk-XC5POIL4.js → chunk-G5R53COU.js} +1 -1
- package/dist/chunk-GHXGMFQ5.js +40 -0
- package/dist/{chunk-QLKCCC2J.js → chunk-GJDRMBDI.js} +14 -14
- package/dist/{chunk-2ZWLMA3T.js → chunk-GREYLTZ5.js} +7 -7
- package/dist/{chunk-YXFKLMX2.js → chunk-H2WSCZZT.js} +22 -6
- package/dist/{chunk-FNVPQQYT.js → chunk-H6IUCY6Q.js} +2 -2
- package/dist/{chunk-5C2OQHLR.js → chunk-H72DCH3E.js} +92 -203
- package/dist/{chunk-JYKUMHCQ.js → chunk-H7TXJR23.js} +21 -21
- package/dist/chunk-HBJQQTKM.js +40 -0
- package/dist/chunk-HCVKSGNZ.js +990 -0
- package/dist/{chunk-ARRUMZ7X.js → chunk-I47EJPYL.js} +3 -3
- package/dist/{chunk-YKIIWURD.js → chunk-IALGWTLO.js} +3 -3
- package/dist/{chunk-FB3KTE2J.js → chunk-IALZJE37.js} +4 -4
- package/dist/{chunk-RAUOKUZV.js → chunk-IC7JXLOM.js} +15 -10
- package/dist/{chunk-LLCGGVSW.js → chunk-IOSVTTCD.js} +7 -7
- package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
- package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
- package/dist/{chunk-UDAK6GR2.js → chunk-JIYWMQZ5.js} +2 -2
- package/dist/{chunk-O3HSB2YL.js → chunk-JKU34ACI.js} +2 -2
- package/dist/{chunk-6X7VOCDY.js → chunk-JTR3VSV3.js} +3 -3
- package/dist/{chunk-O2QJDRWP.js → chunk-JU6MAMRJ.js} +4 -4
- package/dist/chunk-JURMQWVJ.js +15 -0
- package/dist/{chunk-STC6CWUZ.js → chunk-K3XN4LZ4.js} +5 -5
- package/dist/{chunk-ATB3Q7YO.js → chunk-KIVFXGBM.js} +27 -2
- package/dist/{chunk-WJWNZXRM.js → chunk-KOAHT3N2.js} +2 -2
- package/dist/chunk-KP5BPXR3.js +73 -0
- package/dist/{chunk-K53E2PTW.js → chunk-KRJQG47M.js} +3 -3
- package/dist/{chunk-IILXVWJY.js → chunk-KW6OJ7IY.js} +19 -21
- package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
- package/dist/{chunk-2U2U5POA.js → chunk-L4RUTLRL.js} +5 -5
- package/dist/{chunk-QYSAZMSH.js → chunk-LGTVWPRN.js} +2 -2
- package/dist/{chunk-KGP3UQGJ.js → chunk-LSQW6KZO.js} +5 -5
- package/dist/{chunk-P4JS3MH5.js → chunk-LWJYOHT3.js} +8 -8
- package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
- package/dist/{chunk-5D2FNBMG.js → chunk-MJ4QEJVT.js} +2 -2
- package/dist/{chunk-RM3XJX7P.js → chunk-MO65K5CH.js} +5 -5
- package/dist/{chunk-H5DPSUBB.js → chunk-MTOZEQHL.js} +3 -3
- package/dist/{chunk-6R5MBXBJ.js → chunk-NBPA5QM6.js} +2 -2
- package/dist/{chunk-H77XBUBM.js → chunk-NMBEW4PP.js} +3 -3
- package/dist/{chunk-QWUSS2QP.js → chunk-NPLLK3HO.js} +67 -87
- package/dist/{chunk-K5UJD6MM.js → chunk-NSYGPIVW.js} +5 -5
- package/dist/{context-EZZPT2ZV.js → chunk-NXTV5OI5.js} +30 -84
- package/dist/{chunk-F7Y6QTPL.js → chunk-NYDG4QP4.js} +4 -4
- package/dist/{chunk-PFZJMXIY.js → chunk-OA2GDACN.js} +2 -2
- package/dist/{chunk-Q32C6AWI.js → chunk-PJI57EC6.js} +4 -4
- package/dist/{chunk-EFXMQYI6.js → chunk-PJJBUGMR.js} +52 -52
- package/dist/{chunk-ICYIUNO4.js → chunk-PNJE7JPS.js} +18 -3
- package/dist/chunk-PP23PZEV.js +1347 -0
- package/dist/chunk-PPIFDSBK.js +409 -0
- package/dist/{chunk-RFULVPBX.js → chunk-PTFISXQO.js} +6 -5
- package/dist/{chunk-JV25I7ID.js → chunk-QB33Z5S7.js} +5 -5
- package/dist/{chunk-D55WO5J7.js → chunk-QGNII5VC.js} +8 -8
- package/dist/{chunk-RKFNU5UA.js → chunk-QI72X67S.js} +104 -27
- package/dist/chunk-QKHZZFKH.js +98 -0
- package/dist/{chunk-5UG6EZI3.js → chunk-RDKX2PME.js} +4 -4
- package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
- package/dist/{chunk-BE4I3UJ2.js → chunk-RQROVOV3.js} +15 -13
- package/dist/{chunk-TEHVMHOK.js → chunk-S34A7BSP.js} +3 -3
- package/dist/{chunk-4P6M2TTE.js → chunk-SJETVJHX.js} +2 -2
- package/dist/{chunk-OPC4DQD6.js → chunk-SJMNU4ZS.js} +2 -2
- package/dist/{chunk-2JSCCEKO.js → chunk-SLLG2G44.js} +2 -2
- package/dist/{chunk-EPYATQMG.js → chunk-SQAZN2V3.js} +42 -16
- package/dist/{chunk-E2NSPYLC.js → chunk-SQBT46OF.js} +5 -5
- package/dist/{chunk-WTZVSMQZ.js → chunk-TCUOGIL2.js} +5 -5
- package/dist/{chunk-RRZFRIJP.js → chunk-TIWPKCVO.js} +5 -5
- package/dist/{chunk-QLAGXTTV.js → chunk-UIU7MGZ3.js} +5 -1
- package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
- package/dist/{chunk-PJ5H5B7A.js → chunk-VPWGADBG.js} +18 -18
- package/dist/{chunk-GEYX2NZ5.js → chunk-VWFCAK34.js} +6 -6
- package/dist/{chunk-44U2OUSM.js → chunk-W72LLZAV.js} +2 -2
- package/dist/{chunk-ORRNGQDV.js → chunk-WGRDABW7.js} +4 -4
- package/dist/{chunk-RNLAPBJL.js → chunk-XFLSL7BT.js} +2 -2
- package/dist/{chunk-2SXGG2IV.js → chunk-XJZEDCNT.js} +6 -6
- package/dist/{chunk-UB33F3YW.js → chunk-XLLEL3K7.js} +5 -5
- package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
- package/dist/{chunk-WS4FOGLY.js → chunk-XNZWWDC3.js} +2 -2
- package/dist/{chunk-P7GTE4FX.js → chunk-XRECG65F.js} +2 -2
- package/dist/chunk-XTQ7MEJG.js +457 -0
- package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
- package/dist/{chunk-OEMFEL26.js → chunk-Y3M2T5RO.js} +3 -3
- package/dist/{chunk-HP7KJ5O2.js → chunk-YPQOPFP7.js} +6 -6
- package/dist/{chunk-MEHBW2SP.js → chunk-YQYINEJI.js} +6 -6
- package/dist/{chunk-RXI7K4J5.js → chunk-ZF6CV4WZ.js} +1338 -217
- package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
- package/dist/{chunk-526ABLHD.js → chunk-ZKQ63XZ5.js} +12 -35
- package/dist/{chunk-PAQVETLA.js → chunk-ZKVMDNAN.js} +5 -5
- package/dist/cli/index.js +47 -37
- package/dist/{clio-BPBAPZGA.js → clio-JUDCLNHC.js} +7 -7
- package/dist/clio-context-tools-FT672MNZ.js +136 -0
- package/dist/{code-nav-KBQ3RIFK.js → code-nav-7OVCTP2Z.js} +28 -26
- package/dist/{components-6DKAXWFN.js → components-OZXZMDWU.js} +5 -5
- package/dist/{config-FWL5JK2H.js → config-P3ZQVF63.js} +80 -75
- package/dist/{config-graph-ACDB26L2.js → config-graph-GKAOBAS5.js} +74 -70
- package/dist/{configure-ZIZ4YV62.js → configure-25LRYZJG.js} +45 -44
- package/dist/context-72VQV7JX.js +73 -0
- package/dist/{context-VIL5MFRH.js → context-COWRWXP3.js} +74 -70
- package/dist/{context-Z3GOBHDK.js → context-WB3D474G.js} +12 -12
- package/dist/{context-clear-ZPB3L7MN.js → context-clear-Y4LYMWC6.js} +70 -66
- package/dist/{context-working-set-2GLBVF7L.js → context-working-set-TMZYVC7A.js} +15 -14
- package/dist/data-tool-KMBWKKWR.js +2987 -0
- package/dist/{detail-VSBWYSGZ.js → detail-4GLROGY5.js} +71 -67
- package/dist/{dispatch-runner-EEEHGKX4.js → dispatch-runner-TR3LBP5P.js} +92 -88
- package/dist/{docs-VMMWFVHL.js → docs-ZK777W2G.js} +3 -3
- package/dist/{doctor-V5L4IQGP.js → doctor-WC4OV2OB.js} +61 -59
- package/dist/{eval-VJYJ2BV3.js → eval-FUNWJNUJ.js} +45 -45
- package/dist/{evals-J2H5V6DD.js → evals-L73EBHSU.js} +4 -4
- package/dist/{evidence-Y35YSXH6.js → evidence-AVJ2RTHX.js} +80 -76
- package/dist/{evidence-POWAEBEW.js → evidence-P4NZOAK7.js} +70 -66
- package/dist/{evidence-XCCCLS36.js → evidence-Y55WKYHH.js} +79 -75
- package/dist/{evolve-GPG72VB6.js → evolve-MAWKRYWF.js} +75 -71
- package/dist/{extensions-YIZ7W3DA.js → extensions-PYQH3H47.js} +8 -8
- package/dist/{fleet-2MDCQ2VK.js → fleet-M4H2QBWT.js} +84 -80
- package/dist/{fleet-W2AF3TOJ.js → fleet-ULBXXRDR.js} +123 -119
- package/dist/{fleet-commands-WS56G26H.js → fleet-commands-7NNC4JZU.js} +17 -16
- package/dist/{fleet-decisions-MYGZ3JW7.js → fleet-decisions-EHEY7KPU.js} +9 -9
- package/dist/{fleet-graph-ELTBXBAV.js → fleet-graph-LQ2AHZT3.js} +15 -15
- package/dist/{fleet-inspect-45IK73L4.js → fleet-inspect-5IGBIIYZ.js} +76 -72
- package/dist/{fleet-preflight-T5NCZKHE.js → fleet-preflight-UTTNOKMG.js} +7 -2
- package/dist/{fleet-validate-VG4JBLA4.js → fleet-validate-YGILJKA6.js} +20 -20
- package/dist/{fleet-verify-VTSABAYO.js → fleet-verify-AUWTCDKR.js} +70 -66
- package/dist/{fleet-view-XC7WMKSS.js → fleet-view-TGUFCY5A.js} +73 -69
- package/dist/{init-VTJNNTIP.js → init-GFN2Z7NF.js} +94 -90
- package/dist/{interop-IU6BNA7C.js → interop-EF5JUWWK.js} +21 -21
- package/dist/{inventory-QPQUTUUZ.js → inventory-I6VJDDYF.js} +73 -69
- package/dist/{library-Q3NWL5CM.js → library-3J5IO2OJ.js} +13 -13
- package/dist/{library-LF7DLU6S.js → library-IJTOFTDS.js} +16 -15
- package/dist/{library-HUTAS57T.js → library-Z3KZSHPE.js} +27 -27
- package/dist/{library-import-PPW4YUC5.js → library-import-IMKFLDHX.js} +21 -21
- package/dist/{library-inventory-DIRVFRZU.js → library-inventory-CQP5D6GU.js} +13 -13
- package/dist/{library-validation-XHUZ3INE.js → library-validation-33UTX7AI.js} +11 -11
- package/dist/mcp-5FWZKUS6.js +26 -0
- package/dist/{memory-Z2LSKNV6.js → memory-36CWN67Y.js} +75 -71
- package/dist/{models-3FTREYPY.js → models-KQ6PQJJQ.js} +49 -49
- package/dist/{monitor-HF2MQRB3.js → monitor-XX6ZD6KC.js} +83 -79
- package/dist/{orchestrator-UYPA6W4S.js → orchestrator-SK6HDAOP.js} +1337 -772
- package/dist/{panes-736XB73K.js → panes-L27QRXUH.js} +12 -12
- package/dist/{panes-C4P3PIWT.js → panes-LXZIWNOZ.js} +4 -4
- package/dist/{paths-JQ4QYIYB.js → paths-7DJDU4P4.js} +5 -5
- package/dist/{preload-XSLRYH3Y.js → preload-K2TDYI4Y.js} +70 -66
- package/dist/{reset-V7QSPZYE.js → reset-73VU3XNT.js} +10 -10
- package/dist/{resources-OJGDFHYT.js → resources-3BYJYVYL.js} +16 -16
- package/dist/{run-T354SMDW.js → run-AR7PY6GW.js} +132 -128
- package/dist/run-script-H2KUDIII.js +41 -0
- package/dist/{settings-MWZXO6RV.js → settings-3VMBMWID.js} +4 -4
- package/dist/{share-Y5ZKJPND.js → share-HVWH4FPF.js} +21 -21
- package/dist/{skills-4GLZC4LN.js → skills-5TYEY75Q.js} +22 -22
- package/dist/{skills-eval-L5T7GODM.js → skills-eval-CK3MD63Z.js} +96 -87
- package/dist/{skills-inventory-LASKXEZI.js → skills-inventory-KSFYG3I6.js} +16 -16
- package/dist/{slash-commands-OIMRU36D.js → slash-commands-DMVHML7P.js} +47 -44
- package/dist/{steer-KMAM2Y2C.js → steer-XCD6V3EW.js} +4 -4
- package/dist/{support-AWC3XKPX.js → support-JAZL6VBR.js} +7 -7
- package/dist/{system-CD75NYBU.js → system-3TDQRMZZ.js} +26 -26
- package/dist/{targets-VSZX2J2S.js → targets-EZKHAYRN.js} +66 -65
- package/dist/{tasks-AN567LYH.js → tasks-SNEFHWYW.js} +12 -12
- package/dist/{terminal-lease-6KTWNHVY.js → terminal-lease-BNLFA4OF.js} +8 -7
- package/dist/{tools-AGRK3V5J.js → tools-7IM6BDCE.js} +12 -12
- package/dist/{trace-P4MQZD33.js → trace-C3MBGD4S.js} +8 -8
- package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
- package/dist/{uninstall-BRUTEPIC.js → uninstall-WWLOSZ42.js} +10 -10
- package/dist/{upgrade-SBCGHQGJ.js → upgrade-ETK2JNSJ.js} +37 -47
- package/dist/{usage-BIDVTO6V.js → usage-S2HOB7BZ.js} +93 -89
- package/dist/{verifiers-LTGCAMXS.js → verifiers-QDTEVH7R.js} +24 -22
- package/dist/{verify-OZU4LLNP.js → verify-SUKUK6XM.js} +15 -14
- package/dist/web/client/assets/{abnfDiagram-VCTEODGH-C5wfoHm3.js → abnfDiagram-VCTEODGH-BznNOe_I.js} +1 -1
- package/dist/web/client/assets/{arc-oH91sfLl.js → arc-Pry-7G1_.js} +1 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
- package/dist/web/client/assets/{blockDiagram-I7D4REHJ-wi0_CYHL.js → blockDiagram-I7D4REHJ-prINbpbM.js} +1 -1
- package/dist/web/client/assets/{c4Diagram-7LVT6UL2-DV7NYc2W.js → c4Diagram-7LVT6UL2-DkVRKtyU.js} +1 -1
- package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
- package/dist/web/client/assets/{chunk-4HAMMTFA-Bhsegh3F.js → chunk-4HAMMTFA-CV0Z1ApC.js} +1 -1
- package/dist/web/client/assets/{chunk-75Z2AOVW-RQCckcQG.js → chunk-75Z2AOVW-D34Nohxq.js} +1 -1
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
- package/dist/web/client/assets/{chunk-F27PBJKO-BcNqv2x1.js → chunk-F27PBJKO-CmRojxkG.js} +1 -1
- package/dist/web/client/assets/{chunk-GMAD6QVW-Bq8JWiZT.js → chunk-GMAD6QVW-ClYZmc73.js} +1 -1
- package/dist/web/client/assets/{chunk-GVQU2GXP-DbchrAeJ.js → chunk-GVQU2GXP-B2BiHFt-.js} +1 -1
- package/dist/web/client/assets/{chunk-IMKFNOWR-DrpvjocK.js → chunk-IMKFNOWR-BGApZ8nP.js} +1 -1
- package/dist/web/client/assets/{chunk-L3NEJ4N5-DHLmTnCe.js → chunk-L3NEJ4N5-DIzCgpkY.js} +1 -1
- package/dist/web/client/assets/{chunk-OSK3NFVY-CsRbtN9n.js → chunk-OSK3NFVY-BPT-yePv.js} +1 -1
- package/dist/web/client/assets/{chunk-P2QGCYS3-aqPbxoMh.js → chunk-P2QGCYS3-BC1WTc2t.js} +1 -1
- package/dist/web/client/assets/{chunk-POPQ4Y6H-Dl5vw0h0.js → chunk-POPQ4Y6H-BSjzBmZU.js} +1 -1
- package/dist/web/client/assets/{chunk-PWAF6VOD-D7OBRSdO.js → chunk-PWAF6VOD-BIjLs86Z.js} +1 -1
- package/dist/web/client/assets/{chunk-SHT3W25Y-CdKCIwuB.js → chunk-SHT3W25Y-CduDz2cm.js} +1 -1
- package/dist/web/client/assets/{chunk-SVP7TREG-B94Nu_1-.js → chunk-SVP7TREG-XUn4pPAP.js} +1 -1
- package/dist/web/client/assets/{chunk-TICWLB2K-jjRQI_hk.js → chunk-TICWLB2K-DcBy2DKy.js} +1 -1
- package/dist/web/client/assets/{chunk-XXDRQBXY-azkbKE37.js → chunk-XXDRQBXY-DqAYeljN.js} +1 -1
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
- package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
- package/dist/web/client/assets/{cynefin-OW5HDTMX--i9RDU5f.js → cynefin-OW5HDTMX-BecPbyM6.js} +1 -1
- package/dist/web/client/assets/{cynefinDiagram-5FMLGOSQ-cRcvyBdp.js → cynefinDiagram-5FMLGOSQ-BzMzFwyT.js} +1 -1
- package/dist/web/client/assets/{dagre-GXQ25YYZ-C9mZmAPe.js → dagre-GXQ25YYZ-CAWJmRMG.js} +1 -1
- package/dist/web/client/assets/{diagram-S7CK7UJ4-Oj_zlLDY.js → diagram-S7CK7UJ4--lp0ALmn.js} +1 -1
- package/dist/web/client/assets/{diagram-UQ7AKVKN-BWKbbfcR.js → diagram-UQ7AKVKN-gKUnsjcj.js} +1 -1
- package/dist/web/client/assets/{diagram-VSXAHHWV-C3N3f7DO.js → diagram-VSXAHHWV-BoN5D1Gh.js} +1 -1
- package/dist/web/client/assets/{diagram-VX7I27RA-CtDKDAWe.js → diagram-VX7I27RA-BMtuswQ6.js} +1 -1
- package/dist/web/client/assets/{diagram-Z3DM3KII-B8bkBRCz.js → diagram-Z3DM3KII-DtU8LXrA.js} +1 -1
- package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
- package/dist/web/client/assets/{ebnfDiagram-PWID7BFC-CskW-Whx.js → ebnfDiagram-PWID7BFC-DDcnv9BH.js} +1 -1
- package/dist/web/client/assets/{erDiagram-RLTQ6QDP-C-83cgCW.js → erDiagram-RLTQ6QDP-DvRb4iDL.js} +1 -1
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
- package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
- package/dist/web/client/assets/{gitGraph-4MIJSDKK-B40cQtBE.js → gitGraph-4MIJSDKK-DjD_AAMj.js} +1 -1
- package/dist/web/client/assets/{gitGraphDiagram-WWUBYQGX-CH-7P7Di.js → gitGraphDiagram-WWUBYQGX-CDyN9n2u.js} +1 -1
- package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
- package/dist/web/client/assets/{info-A6RAGUB7-eCCE9D_Q.js → info-A6RAGUB7-C_XK8Hq0.js} +1 -1
- package/dist/web/client/assets/{infoDiagram-27XIBGKW-DRnvqMjM.js → infoDiagram-27XIBGKW-DIe4tJ1i.js} +1 -1
- package/dist/web/client/assets/{ishikawaDiagram-5VMMS53U-DBA_55wp.js → ishikawaDiagram-5VMMS53U-CVl5unKI.js} +1 -1
- package/dist/web/client/assets/{journeyDiagram-3NMN7TZE-C-ewpNl7.js → journeyDiagram-3NMN7TZE-CPEB1Vt8.js} +1 -1
- package/dist/web/client/assets/{kanban-definition-UXKFOSKX-B1taGsu0.js → kanban-definition-UXKFOSKX-j-9WXjYQ.js} +1 -1
- package/dist/web/client/assets/{line-lZ0kyxDI.js → line-BIDAcEtX.js} +1 -1
- package/dist/web/client/assets/{linear-DIc8FgZj.js → linear-SzVmGSw4.js} +1 -1
- package/dist/web/client/assets/{mermaid-parser.core-SXolxpXw.js → mermaid-parser.core-Ux4vssh0.js} +3 -3
- package/dist/web/client/assets/{mermaid.core-DXgQtkNg.js → mermaid.core-CDuwVKeh.js} +4 -4
- package/dist/web/client/assets/{mindmap-definition-YA3MSWOX-DXJas9K7.js → mindmap-definition-YA3MSWOX-5MlQEeQ6.js} +1 -1
- package/dist/web/client/assets/{packet-AYTQ26CC-OqVl_07o.js → packet-AYTQ26CC-DRO66c9Q.js} +1 -1
- package/dist/web/client/assets/{pegDiagram-XKGWAZYB-CPE_zdfN.js → pegDiagram-XKGWAZYB-BakZnSjM.js} +1 -1
- package/dist/web/client/assets/{pie-WAS4IAKB-DAxnMBLe.js → pie-WAS4IAKB-BEzcmhz8.js} +1 -1
- package/dist/web/client/assets/{pieDiagram-E7YTZNPT-Uwjpufxv.js → pieDiagram-E7YTZNPT-DpmqgoPt.js} +1 -1
- package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
- package/dist/web/client/assets/{quadrantDiagram-AXDQQJYC-Bjs4yjgs.js → quadrantDiagram-AXDQQJYC-DuMPwwV2.js} +1 -1
- package/dist/web/client/assets/{radar-RG4KPBEZ-CuCKjHM3.js → radar-RG4KPBEZ-Djm3oXl5.js} +1 -1
- package/dist/web/client/assets/{railroad-74A4TZTK-CnQK-Cc1.js → railroad-74A4TZTK-Cpvkwsao.js} +1 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
- package/dist/web/client/assets/{railroadDiagram-O6MQD6OU-BDDIPNLL.js → railroadDiagram-O6MQD6OU-CgMS4B6R.js} +1 -1
- package/dist/web/client/assets/{requirementDiagram-BXWQKSXE-B5Ydyxc1.js → requirementDiagram-BXWQKSXE-CX5eoNdN.js} +1 -1
- package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/web/client/assets/{sankeyDiagram-P5KCCOFB-Bw2Qym75.js → sankeyDiagram-P5KCCOFB-CODBX2N3.js} +1 -1
- package/dist/web/client/assets/{sequenceDiagram-WJ2MYXX4-BZf36nO0.js → sequenceDiagram-WJ2MYXX4-eUhhF8OR.js} +1 -1
- package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
- package/dist/web/client/assets/{stateDiagram-D77RDMKH-DnH6JRkp.js → stateDiagram-D77RDMKH-vR6l0NC2.js} +1 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
- package/dist/web/client/assets/{swimlanes-42K2YHIH-D9PZmtZg.js → swimlanes-42K2YHIH-v9Tw_zX7.js} +1 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
- package/dist/web/client/assets/{timeline-definition-24CTP7MA-CrkZZBo7.js → timeline-definition-24CTP7MA-DxianbhU.js} +1 -1
- package/dist/web/client/assets/{treeView-Q6P3EWNA-C9zDShoC.js → treeView-Q6P3EWNA-DLxnZb9R.js} +1 -1
- package/dist/web/client/assets/{treemap-WGGIJYW6-B-plj9yK.js → treemap-WGGIJYW6-I7UnZ6xJ.js} +1 -1
- package/dist/web/client/assets/{vennDiagram-4TSXK5OY-VeOdaphN.js → vennDiagram-4TSXK5OY-Ar7M8Mrj.js} +1 -1
- package/dist/web/client/assets/{wardley-WFR3VGLG-Wl1P_m6L.js → wardley-WFR3VGLG-B8ZSHeDu.js} +1 -1
- package/dist/web/client/assets/{wardleyDiagram-VM6X3IG4-B85-R9t2.js → wardleyDiagram-VM6X3IG4-Qks2FmIn.js} +1 -1
- package/dist/web/client/assets/{xychartDiagram-S5SC5T6Z-BrD8OW8m.js → xychartDiagram-S5SC5T6Z-BBBjRtiE.js} +1 -1
- package/dist/web/client/index.html +3 -1
- package/dist/web/reads-worker.js +17 -17
- package/dist/web/server.js +25 -25
- package/dist/{web-EU6ATJWA.js → web-EMGUGGEI.js} +3 -3
- package/dist/{web-fetch-U22Q7HV4.js → web-fetch-6BRRVQON.js} +22 -5
- package/dist/{wiki-generate-LZRLFG6I.js → wiki-generate-XHSJTDOP.js} +104 -100
- package/dist/{with-panes-X5CZOGML.js → with-panes-Z6BTEHMZ.js} +11 -11
- package/dist/worker/entry.js +101 -87
- package/docs/README.md +1 -1
- package/docs/architecture/artifact-placement.md +12 -1
- package/docs/architecture/library.md +1 -1
- package/docs/architecture/prompt-envelope-and-tools.md +37 -27
- package/docs/architecture/safety-model.md +19 -6
- package/docs/architecture/session-lifecycle.md +10 -4
- package/docs/architecture/tui-design.md +37 -14
- package/docs/guide/commands-and-modes.md +39 -19
- package/docs/guide/configuration-and-targets.md +7 -5
- package/docs/guide/configuration-reference.md +116 -13
- package/docs/guide/environment-variables.md +2 -5
- package/docs/guide/fleet-dispatch.md +3 -2
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +2 -2
- package/docs/guide/resource-library.md +1 -1
- package/docs/guide/tool-usage.md +166 -64
- package/docs/guide/troubleshooting.md +1 -1
- package/docs/process/documentation-guide.md +1 -0
- package/docs/process/fleet-demo-runbook.md +6 -6
- package/docs/process/scientific-validation.md +22 -2
- package/docs/process/tool-audit-v0.4.9.md +357 -0
- package/package.json +1 -1
- package/src/cli/argv.ts +31 -0
- package/src/cli/clio.ts +17 -13
- package/src/cli/config.ts +4 -0
- package/src/cli/doctor-panes.ts +1 -1
- package/src/cli/doctor.ts +3 -1
- package/src/cli/index.ts +14 -1
- package/src/cli/mcp.ts +106 -0
- package/src/cli/skills-eval.ts +8 -2
- package/src/cli/upgrade.ts +34 -38
- package/src/cli/verifiers.ts +1 -1
- package/src/core/bash-exec.ts +27 -4
- package/src/core/config.ts +2 -1
- package/src/core/defaults.ts +10 -1
- package/src/core/event-bus.ts +1 -1
- package/src/core/run-records.ts +438 -0
- package/src/core/safe-exec.ts +506 -56
- package/src/core/skill-activation.ts +5 -3
- package/src/core/termination.ts +3 -3
- package/src/core/tool-names.ts +33 -12
- package/src/domains/context/clio-md.ts +1 -1
- package/src/domains/context/worker/pressure.ts +6 -2
- package/src/domains/context/working-set/path-index.ts +7 -2
- package/src/domains/dispatch/code-step.ts +7 -2
- package/src/domains/dispatch/contract.ts +7 -0
- package/src/domains/dispatch/execution-role.ts +3 -3
- package/src/domains/dispatch/execution-scheduler.ts +204 -79
- package/src/domains/dispatch/extension.ts +131 -14
- package/src/domains/dispatch/fleet-preflight.ts +18 -3
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/gate-decisions.ts +3 -3
- package/src/domains/dispatch/heartbeat.ts +1 -1
- package/src/domains/dispatch/host-verification.ts +16 -14
- package/src/domains/dispatch/receipt-findings.ts +3 -4
- package/src/domains/dispatch/reservation-store.ts +7 -9
- package/src/domains/dispatch/route-facts.ts +1 -1
- package/src/domains/dispatch/state.ts +3 -3
- package/src/domains/dispatch/types.ts +1 -1
- package/src/domains/evidence/build.ts +35 -7
- package/src/domains/gateway/mcp/client.ts +923 -0
- package/src/domains/gateway/mcp/config.ts +456 -0
- package/src/domains/gateway/mcp/index.ts +88 -0
- package/src/domains/gateway/mcp/protocol.ts +273 -0
- package/src/domains/gateway/mcp/trust.ts +263 -0
- package/src/domains/lifecycle/doctor.ts +17 -3
- package/src/domains/mux/contract.ts +5 -9
- package/src/domains/mux/detect.ts +1 -1
- package/src/domains/mux/extension.ts +1 -1
- package/src/domains/mux/protocol.ts +5 -7
- package/src/domains/mux/socket-client.ts +3 -3
- package/src/domains/observability/accountability.ts +2 -2
- package/src/domains/observability/contract.ts +7 -3
- package/src/domains/observability/evidence-index.ts +2 -2
- package/src/domains/observability/projection.ts +10 -0
- package/src/domains/prompts/compiler.ts +41 -23
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
- package/src/domains/prompts/fragments/operating/skills.md +12 -10
- package/src/domains/providers/index.ts +5 -1
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
- package/src/domains/providers/probe/http.ts +44 -59
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
- package/src/domains/safety/action-classifier.ts +17 -1
- package/src/domains/safety/call-target.ts +14 -0
- package/src/domains/safety/contract.ts +1 -1
- package/src/domains/safety/finish-contract.ts +9 -3
- package/src/domains/safety/loop-detector.ts +1 -1
- package/src/domains/safety/policy-engine.ts +7 -0
- package/src/domains/safety/protected-artifacts.ts +3 -4
- package/src/domains/safety/rejection-feedback.ts +1 -1
- package/src/domains/safety/scope.ts +2 -3
- package/src/domains/safety/validation-contract.ts +3 -2
- package/src/domains/scheduling/budget.ts +5 -3
- package/src/domains/scheduling/contract.ts +2 -1
- package/src/domains/scheduling/extension.ts +3 -3
- package/src/domains/session/compaction/branch-summary.ts +1 -1
- package/src/domains/session/compaction/compact.ts +25 -2
- package/src/domains/session/compaction/cut-point.ts +1 -1
- package/src/domains/session/compaction/tokens.ts +5 -10
- package/src/domains/session/contract.ts +1 -1
- package/src/domains/session/cwd-fallback.ts +2 -2
- package/src/domains/session/handoff.ts +5 -1
- package/src/domains/session/history.ts +6 -0
- package/src/domains/session/manager.ts +14 -7
- package/src/domains/session/retry.ts +2 -1
- package/src/domains/session/session-artifacts.ts +12 -7
- package/src/domains/session/task-board.ts +2 -3
- package/src/engine/apis/openai-completions.ts +8 -0
- package/src/engine/loop-guard.ts +7 -0
- package/src/engine/provider-error-body.ts +65 -0
- package/src/engine/session.ts +118 -29
- package/src/engine/worker-runtime.ts +3 -0
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +18 -2
- package/src/interactive/chat-loop-policy.ts +1 -0
- package/src/interactive/chat-loop.ts +8 -4
- package/src/interactive/chat-panel.ts +23 -9
- package/src/interactive/chat-renderer.ts +33 -11
- package/src/interactive/clio-editor.ts +13 -5
- package/src/interactive/dispatch-board.ts +70 -30
- package/src/interactive/editor-submit.ts +30 -25
- package/src/interactive/footer/widgets.ts +12 -9
- package/src/interactive/interactive-presentation.ts +2 -3
- package/src/interactive/mux-bridge.ts +3 -7
- package/src/interactive/overlay-general-openers.ts +14 -7
- package/src/interactive/overlays/cwd-fallback.ts +1 -1
- package/src/interactive/overlays/library-model.ts +114 -35
- package/src/interactive/overlays/library.ts +52 -5
- package/src/interactive/overlays/list-overlay.ts +4 -1
- package/src/interactive/overlays/session-selector.ts +28 -23
- package/src/interactive/overlays/settings.ts +20 -1
- package/src/interactive/overlays/tree-selector.ts +47 -10
- package/src/interactive/panes-runtime.ts +1 -1
- package/src/interactive/renderers/compaction-summary.ts +1 -1
- package/src/interactive/renderers/provider-error.ts +118 -0
- package/src/interactive/renderers/retry-status.ts +59 -23
- package/src/interactive/renderers/tool-execution.ts +67 -7
- package/src/interactive/renderers/worker-answer.ts +198 -0
- package/src/interactive/renderers/worker-entry.ts +57 -163
- package/src/interactive/slash-commands.ts +26 -1
- package/src/interactive/slash-spec.ts +2 -2
- package/src/interactive/theme/labels.ts +66 -30
- package/src/interactive/turn-persistence.ts +6 -1
- package/src/interactive/turn-recovery.ts +2 -1
- package/src/interactive/turn-runtime.ts +22 -5
- package/src/interactive/view/artifacts.ts +3 -2
- package/src/interactive/view/view-overlay.ts +96 -20
- package/src/tools/agent-tools.ts +21 -7
- package/src/tools/artifact.ts +16 -8
- package/src/tools/bash.ts +90 -11
- package/src/tools/bootstrap.ts +42 -4
- package/src/tools/builtin-tool-catalog.ts +72 -7
- package/src/tools/context/index.ts +27 -31
- package/src/tools/context/library.ts +3 -1
- package/src/tools/context/surface.ts +12 -26
- package/src/tools/core-bootstrap.ts +72 -1
- package/src/tools/data/csv.ts +1189 -0
- package/src/tools/data/index.ts +308 -0
- package/src/tools/data/json.ts +1799 -0
- package/src/tools/data/jsonl.ts +561 -0
- package/src/tools/data/shared.ts +452 -0
- package/src/tools/edit-diff.ts +0 -7
- package/src/tools/edit.ts +115 -18
- package/src/tools/file-mutation-queue.ts +114 -4
- package/src/tools/find.ts +108 -29
- package/src/tools/gateway/caps.ts +11 -0
- package/src/tools/gateway/clio-context-surface.ts +41 -0
- package/src/tools/gateway/clio-context-tools.ts +77 -0
- package/src/tools/gateway/data-surface.ts +138 -0
- package/src/tools/gateway/data-tool.ts +201 -0
- package/src/tools/gateway/index.ts +342 -0
- package/src/tools/gateway/mcp-capabilities.ts +469 -0
- package/src/tools/grep.ts +88 -33
- package/src/tools/harness-extensions.ts +3 -0
- package/src/tools/ignore-policy.ts +7 -5
- package/src/tools/ls.ts +111 -20
- package/src/tools/policy.ts +35 -13
- package/src/tools/presentation.ts +6 -0
- package/src/tools/read.ts +634 -156
- package/src/tools/registry.ts +94 -6
- package/src/tools/run-script.ts +997 -0
- package/src/tools/spawn-hygiene.ts +157 -5
- package/src/tools/surface.ts +163 -0
- package/src/tools/verify/authoring.ts +8 -3
- package/src/tools/verify/catalog.ts +14 -1
- package/src/tools/verify/numeric.ts +367 -59
- package/src/tools/verify/perf.ts +171 -9
- package/src/tools/verify/scripts.ts +178 -26
- package/src/tools/web-fetch-surface.ts +22 -0
- package/src/tools/web-fetch.ts +26 -1
- package/src/tools/write.ts +45 -19
- package/dist/chunk-B6UM3OZC.js +0 -15
- package/dist/chunk-GJ24ODAX.js +0 -196
- package/dist/chunk-LZCCBLRC.js +0 -57
- package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +0 -36
- package/dist/web/client/assets/channel-CiUWbHN9.js +0 -1
- package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +0 -125
- package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +0 -1
- package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +0 -1
- package/dist/web/client/assets/dist-D0_q-A2b.js +0 -1
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +0 -1
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +0 -292
- package/dist/web/client/assets/index-FSIC94pi.js +0 -83
- package/dist/web/client/assets/prism-core-BngLtbUd.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +0 -1
- package/dist/web/client/assets/src-yeptRXpt.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-CBZlPFky.js +0 -8
package/src/cli/mcp.ts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MCP_TRUST_ACTION_CLASSES,
|
|
3
|
+
type McpTrustActionClass,
|
|
4
|
+
type McpTrustOptions,
|
|
5
|
+
resolveMcpServers,
|
|
6
|
+
trustMcpServer,
|
|
7
|
+
untrustMcpServer,
|
|
8
|
+
} from "../domains/gateway/mcp/index.js";
|
|
9
|
+
import { printError } from "./shared.js";
|
|
10
|
+
|
|
11
|
+
const HELP = `clio-coder mcp <command>
|
|
12
|
+
|
|
13
|
+
Commands:
|
|
14
|
+
clio-coder mcp list [--json]
|
|
15
|
+
clio-coder mcp trust <id> [--action-class <class>] [--json]
|
|
16
|
+
clio-coder mcp untrust <id> [--json]
|
|
17
|
+
|
|
18
|
+
Action classes: ${MCP_TRUST_ACTION_CLASSES.join(", ")}
|
|
19
|
+
|
|
20
|
+
JSON responses (--json):
|
|
21
|
+
list: {servers: [...], diagnostics: [...], trustDiagnostics: [...]}
|
|
22
|
+
Each server includes its declaration and trust {status, actionClass, reason?}.
|
|
23
|
+
trust: {ok: true, record: {projectRoot, id, digest, actionClass, trustedAt}}
|
|
24
|
+
untrust: {ok: true, removed: boolean}
|
|
25
|
+
errors: {ok: false, message: string}
|
|
26
|
+
Exit codes: 0 success; 1 operational failure; 2 invalid usage.
|
|
27
|
+
List retains its response shape on failure and exits 1 when config or trust
|
|
28
|
+
diagnostics are present. Mutation errors return the error shape with a
|
|
29
|
+
one-line reason. --help prints this text even when --json is supplied.
|
|
30
|
+
`;
|
|
31
|
+
|
|
32
|
+
export interface McpCommandOutput {
|
|
33
|
+
code: number;
|
|
34
|
+
text: string;
|
|
35
|
+
data: unknown;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Shared operator outcomes for the CLI and slash command. */
|
|
39
|
+
export function mcpCommandOutput(
|
|
40
|
+
argv: ReadonlyArray<string>,
|
|
41
|
+
options: McpTrustOptions = { cwd: process.cwd() },
|
|
42
|
+
): McpCommandOutput {
|
|
43
|
+
const fail = (code: number, message: string): McpCommandOutput => {
|
|
44
|
+
const text = message.replace(/[\r\n]+/gu, " ");
|
|
45
|
+
return { code, text, data: { ok: false, message: text } };
|
|
46
|
+
};
|
|
47
|
+
try {
|
|
48
|
+
const [command, id, ...rest] = argv;
|
|
49
|
+
if (command === "list" && id === undefined) {
|
|
50
|
+
const result = resolveMcpServers(options);
|
|
51
|
+
const lines = result.servers.map(
|
|
52
|
+
(server) =>
|
|
53
|
+
`${server.id} scope=${server.scope} command=${JSON.stringify([server.command, ...server.args])} cwd=${JSON.stringify(server.cwd)} trust=${server.trust.status}${"reason" in server.trust ? ` (${server.trust.reason})` : ""} actionClass=${server.trust.actionClass}`,
|
|
54
|
+
);
|
|
55
|
+
lines.push(...result.diagnostics.map((entry) => `${entry.path}: ${entry.message}`), ...result.trustDiagnostics);
|
|
56
|
+
return {
|
|
57
|
+
code: result.diagnostics.length || result.trustDiagnostics.length ? 1 : 0,
|
|
58
|
+
text: lines.join("\n") || "mcp: none",
|
|
59
|
+
data: result,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if ((command !== "trust" && command !== "untrust") || !id)
|
|
63
|
+
return fail(2, "usage: clio-coder mcp list | trust <id> [--action-class <class>] | untrust <id>");
|
|
64
|
+
let actionClass: McpTrustActionClass | undefined;
|
|
65
|
+
if (rest.length) {
|
|
66
|
+
if (
|
|
67
|
+
command !== "trust" ||
|
|
68
|
+
rest.length !== 2 ||
|
|
69
|
+
rest[0] !== "--action-class" ||
|
|
70
|
+
!MCP_TRUST_ACTION_CLASSES.includes(rest[1] as McpTrustActionClass)
|
|
71
|
+
)
|
|
72
|
+
return fail(2, `--action-class must be one of ${MCP_TRUST_ACTION_CLASSES.join(", ")} and applies only to trust`);
|
|
73
|
+
actionClass = rest[1] as McpTrustActionClass;
|
|
74
|
+
}
|
|
75
|
+
if (command === "trust") {
|
|
76
|
+
const result = trustMcpServer({ ...options, id, ...(actionClass ? { actionClass } : {}) });
|
|
77
|
+
return result.ok
|
|
78
|
+
? { code: 0, text: `mcp: trusted ${id} ${JSON.stringify(result.record)}`, data: result }
|
|
79
|
+
: fail(1, result.message);
|
|
80
|
+
}
|
|
81
|
+
const resolved = resolveMcpServers(options);
|
|
82
|
+
const server = resolved.servers.find((entry) => entry.id === id);
|
|
83
|
+
if (!server) return fail(1, `no declared MCP server with id '${id}'`);
|
|
84
|
+
if (server.scope === "user")
|
|
85
|
+
return fail(1, `server '${id}' is a user-scope declaration; it is trusted by authorship`);
|
|
86
|
+
const result = untrustMcpServer({ ...options, id });
|
|
87
|
+
return result.ok
|
|
88
|
+
? { code: 0, text: `mcp: untrusted ${id} (record ${result.removed ? "removed" : "already absent"})`, data: result }
|
|
89
|
+
: fail(1, result.message);
|
|
90
|
+
} catch (error) {
|
|
91
|
+
return fail(1, error instanceof Error ? error.message : String(error));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function runMcpCommand(argv: ReadonlyArray<string>): number {
|
|
96
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
97
|
+
process.stdout.write(HELP);
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
const json = argv.includes("--json");
|
|
101
|
+
const result = mcpCommandOutput(argv.filter((arg) => arg !== "--json"));
|
|
102
|
+
if (json) process.stdout.write(`${JSON.stringify(result.data, null, 2)}\n`);
|
|
103
|
+
else if (result.code && argv[0] !== "list") printError(result.text);
|
|
104
|
+
else process.stdout.write(`${result.text}\n`);
|
|
105
|
+
return result.code;
|
|
106
|
+
}
|
package/src/cli/skills-eval.ts
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
type SkillEvalScenario,
|
|
27
27
|
} from "../domains/resources/index.js";
|
|
28
28
|
import { NO_NETWORK_TOOLS_ENV } from "../tools/network-policy.js";
|
|
29
|
+
import { effectiveToolCall } from "../tools/surface.js";
|
|
29
30
|
import { formatColumns, printError } from "./shared.js";
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -845,9 +846,14 @@ function parseRunStdout(stdout: string): { sessionId: string | null; transcript:
|
|
|
845
846
|
continue;
|
|
846
847
|
}
|
|
847
848
|
if (event.type === "tool_execution_start") {
|
|
848
|
-
const
|
|
849
|
-
const
|
|
849
|
+
const recordedTool = readString(event.toolName) ?? readString(event.tool) ?? "tool";
|
|
850
|
+
const recordedArgs = event.args ?? event.arguments ?? event.input;
|
|
850
851
|
const callId = readString(event.toolCallId);
|
|
852
|
+
// A gateway call is judged as the capability it reached: an artifact
|
|
853
|
+
// written through the gateway is still the terminal answer.
|
|
854
|
+
const effective = effectiveToolCall(recordedTool, recordedArgs);
|
|
855
|
+
const tool = effective.toolName;
|
|
856
|
+
const args = effective.viaGateway ? effective.args : recordedArgs;
|
|
851
857
|
if (callId !== null && loadsSkillBody(tool, args)) skillBodyCallIds.add(callId);
|
|
852
858
|
lines.push(`TOOL ${tool} args=${preview(args)}`);
|
|
853
859
|
// Terminating tools end the turn with no assistant text; their content
|
package/src/cli/upgrade.ts
CHANGED
|
@@ -86,24 +86,10 @@ function parseUpgradeArgs(argv: ReadonlyArray<string>): UpgradeOptions {
|
|
|
86
86
|
* the installed version is the newest one.
|
|
87
87
|
*/
|
|
88
88
|
type RegistryLookup =
|
|
89
|
-
| { asked: false; reason: "source checkout" | "
|
|
89
|
+
| { asked: false; reason: "source checkout" | "post-install checks" }
|
|
90
90
|
| { asked: true; version: string | null };
|
|
91
91
|
|
|
92
|
-
function
|
|
93
|
-
if (process.env.NODE_ENV !== "test") return undefined;
|
|
94
|
-
return process.env[name];
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
async function lookUpAvailableVersion(
|
|
98
|
-
channel: Channel,
|
|
99
|
-
method: "source" | "npm",
|
|
100
|
-
noNetwork: boolean,
|
|
101
|
-
): Promise<RegistryLookup> {
|
|
102
|
-
const seam = testSeam("CLIO_CODER_TEST_UPGRADE_AVAILABLE");
|
|
103
|
-
// `unreachable` stands in for a registry that answered nothing, which is the
|
|
104
|
-
// only way to reach that branch without a network in the test.
|
|
105
|
-
if (seam) return { asked: true, version: seam === "unreachable" ? null : seam };
|
|
106
|
-
if (noNetwork) return { asked: false, reason: "network checks are disabled" };
|
|
92
|
+
async function lookUpAvailableVersion(channel: Channel, method: "source" | "npm"): Promise<RegistryLookup> {
|
|
107
93
|
if (method === "source") return { asked: false, reason: "source checkout" };
|
|
108
94
|
try {
|
|
109
95
|
const res = await fetch(`https://registry.npmjs.org/@iowarp/clio-coder/${channel}`, {
|
|
@@ -149,16 +135,10 @@ async function runChild(command: string, args: ReadonlyArray<string>, label: str
|
|
|
149
135
|
}
|
|
150
136
|
|
|
151
137
|
async function runNpmInstall(channel: Channel): Promise<void> {
|
|
152
|
-
if (testSeam("CLIO_CODER_TEST_UPGRADE_FAIL") === "npm") {
|
|
153
|
-
throw new Error("npm ERR! 404 Not Found (mock failure)");
|
|
154
|
-
}
|
|
155
138
|
await runChild("npm", ["install", "-g", `@iowarp/clio-coder@${channel}`], "npm install");
|
|
156
139
|
}
|
|
157
140
|
|
|
158
141
|
async function runDoctorFixAfterInstall(): Promise<void> {
|
|
159
|
-
if (testSeam("CLIO_CODER_TEST_UPGRADE_FAIL") === "doctor") {
|
|
160
|
-
throw new Error("mock doctor fix failure");
|
|
161
|
-
}
|
|
162
142
|
await runChild("clio-coder", ["doctor", "--fix"], "clio-coder doctor --fix");
|
|
163
143
|
}
|
|
164
144
|
|
|
@@ -168,7 +148,29 @@ async function runPostInstallUpgrade(opts: UpgradeOptions): Promise<void> {
|
|
|
168
148
|
await runChild("clio-coder", args, "clio-coder upgrade --post-install");
|
|
169
149
|
}
|
|
170
150
|
|
|
171
|
-
export
|
|
151
|
+
export interface UpgradeDependencies {
|
|
152
|
+
detectInstallMethod: typeof detectInstallMethod;
|
|
153
|
+
lookUpAvailableVersion: typeof lookUpAvailableVersion;
|
|
154
|
+
runNpmInstall: typeof runNpmInstall;
|
|
155
|
+
runDoctorFixAfterInstall: typeof runDoctorFixAfterInstall;
|
|
156
|
+
runPostInstallUpgrade: typeof runPostInstallUpgrade;
|
|
157
|
+
runPending: typeof runPending;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const DEFAULT_DEPENDENCIES: UpgradeDependencies = {
|
|
161
|
+
detectInstallMethod,
|
|
162
|
+
lookUpAvailableVersion,
|
|
163
|
+
runNpmInstall,
|
|
164
|
+
runDoctorFixAfterInstall,
|
|
165
|
+
runPostInstallUpgrade,
|
|
166
|
+
runPending,
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
export async function runUpgradeCommand(
|
|
170
|
+
argv: ReadonlyArray<string>,
|
|
171
|
+
dependencies: Partial<UpgradeDependencies> = {},
|
|
172
|
+
): Promise<number> {
|
|
173
|
+
const deps = { ...DEFAULT_DEPENDENCIES, ...dependencies };
|
|
172
174
|
let opts: UpgradeOptions;
|
|
173
175
|
try {
|
|
174
176
|
opts = parseUpgradeArgs(argv);
|
|
@@ -186,14 +188,13 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
186
188
|
|
|
187
189
|
const before = getVersionInfo().clio;
|
|
188
190
|
const stateDir = resolveClioDirs().state;
|
|
189
|
-
const method = detectInstallMethod();
|
|
191
|
+
const method = deps.detectInstallMethod();
|
|
190
192
|
const methodLabel = method === "source" ? "source checkout" : opts.postInstall ? "package install" : "npm global";
|
|
191
193
|
presenter.setMethod(methodLabel);
|
|
192
194
|
|
|
193
|
-
const noNetwork = Boolean(testSeam("CLIO_CODER_TEST_UPGRADE_NO_NETWORK"));
|
|
194
195
|
const lookup: RegistryLookup = opts.postInstall
|
|
195
196
|
? { asked: false, reason: "post-install checks" }
|
|
196
|
-
: await lookUpAvailableVersion(opts.channel, method
|
|
197
|
+
: await deps.lookUpAvailableVersion(opts.channel, method);
|
|
197
198
|
const availableVersion = lookup.asked ? lookup.version : null;
|
|
198
199
|
|
|
199
200
|
presenter.step(`Installation method: ${methodLabel}`);
|
|
@@ -223,8 +224,8 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
223
224
|
// "Already current" is a claim about a version that was compared. A lookup
|
|
224
225
|
// that was made and came back empty has compared nothing, so it does not get
|
|
225
226
|
// to make it: the run falls through and attempts the install, which is what
|
|
226
|
-
// the operator asked for. A lookup that was never owed
|
|
227
|
-
//
|
|
227
|
+
// the operator asked for. A lookup that was never owed for a checkout or
|
|
228
|
+
// post-install checks leaves the recorded state version to decide.
|
|
228
229
|
const versionIsCurrent =
|
|
229
230
|
(lookup.asked ? lookup.version === before : true) && (recorded === null || recorded === before);
|
|
230
231
|
const hasPendingMigrations = pendingMigrationIds.length > 0;
|
|
@@ -260,11 +261,9 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
260
261
|
presenter.note("Running post-install checks with the active clio-coder binary.");
|
|
261
262
|
} else if (method === "source") {
|
|
262
263
|
presenter.note("Source checkout: no npm install to run.");
|
|
263
|
-
} else if (noNetwork) {
|
|
264
|
-
presenter.note("CLIO_CODER_TEST_UPGRADE_NO_NETWORK is set; skipping npm install.");
|
|
265
264
|
} else {
|
|
266
265
|
try {
|
|
267
|
-
await runNpmInstall(opts.channel);
|
|
266
|
+
await deps.runNpmInstall(opts.channel);
|
|
268
267
|
presenter.completedStep(`Installed @iowarp/clio-coder@${opts.channel}`);
|
|
269
268
|
} catch (err) {
|
|
270
269
|
presenter.fail("npm install failed", err instanceof Error ? err.message : String(err));
|
|
@@ -276,7 +275,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
276
275
|
return 1;
|
|
277
276
|
}
|
|
278
277
|
try {
|
|
279
|
-
await runPostInstallUpgrade(opts);
|
|
278
|
+
await deps.runPostInstallUpgrade(opts);
|
|
280
279
|
presenter.done("Done");
|
|
281
280
|
return 0;
|
|
282
281
|
} catch (err) {
|
|
@@ -293,10 +292,7 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
293
292
|
} else {
|
|
294
293
|
let result: Awaited<ReturnType<typeof runPending>>;
|
|
295
294
|
try {
|
|
296
|
-
|
|
297
|
-
throw new Error("mock migration failure in 2026-09-01-settings-v2");
|
|
298
|
-
}
|
|
299
|
-
result = await runPending(stateDir);
|
|
295
|
+
result = await deps.runPending(stateDir);
|
|
300
296
|
} catch (err) {
|
|
301
297
|
presenter.fail("migration failed", err instanceof Error ? err.message : String(err));
|
|
302
298
|
presenter.commandAdvice(
|
|
@@ -312,13 +308,13 @@ export async function runUpgradeCommand(argv: ReadonlyArray<string>): Promise<nu
|
|
|
312
308
|
else for (const id of applied) presenter.completedStep(`Applied migration ${id}`);
|
|
313
309
|
}
|
|
314
310
|
|
|
315
|
-
if (method === "source"
|
|
311
|
+
if (method === "source") {
|
|
316
312
|
const refresh = describeRefresh();
|
|
317
313
|
initializeClioHome();
|
|
318
314
|
presenter.completedStep(`Refreshed ${refresh}`);
|
|
319
315
|
} else {
|
|
320
316
|
try {
|
|
321
|
-
await runDoctorFixAfterInstall();
|
|
317
|
+
await deps.runDoctorFixAfterInstall();
|
|
322
318
|
presenter.completedStep("Checked the install with clio-coder doctor --fix");
|
|
323
319
|
} catch (err) {
|
|
324
320
|
presenter.fail("doctor fix failed", err instanceof Error ? err.message : String(err));
|
package/src/cli/verifiers.ts
CHANGED
|
@@ -38,7 +38,7 @@ Fields:
|
|
|
38
38
|
--tags <a,b> comma-separated catalog tags
|
|
39
39
|
--kind <kind> command (default), numeric-compare, or perf-budget
|
|
40
40
|
--reference <path> numeric-compare: repository-relative reference JSON of string -> number | number[]
|
|
41
|
-
--tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"
|
|
41
|
+
--tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"?,"combine"?:all|any,"nonFinite"?:fail|match}, at least one numeric bound;
|
|
42
42
|
perf-budget with --baseline: {"relative"} headroom over the baseline
|
|
43
43
|
--budget-ms <number> perf-budget: wall-time bound in milliseconds
|
|
44
44
|
--budget-relative <r> perf-budget with --budget-ms: fractional headroom over the bound
|
package/src/core/bash-exec.ts
CHANGED
|
@@ -21,7 +21,14 @@ export const BASH_HARD_CAP_BYTES = 16 * 1024 * 1024;
|
|
|
21
21
|
|
|
22
22
|
const CLIO_CONTROL_ENV_KEYS = ["CLIO_CODER_INTERACTIVE", "BASH_ENV", "ENV"] as const;
|
|
23
23
|
|
|
24
|
-
export interface
|
|
24
|
+
export interface BashStreamByteCounts {
|
|
25
|
+
observedStdoutBytes: number;
|
|
26
|
+
observedStderrBytes: number;
|
|
27
|
+
retainedStdoutBytes: number;
|
|
28
|
+
retainedStderrBytes: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface BashCommandResult extends Partial<BashStreamByteCounts> {
|
|
25
32
|
error: NodeJS.ErrnoException | null;
|
|
26
33
|
stdout: string;
|
|
27
34
|
stderr: string;
|
|
@@ -60,6 +67,8 @@ export interface BashProgressScheduler {
|
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
export interface BashOutputProgressController {
|
|
70
|
+
/** Raw stream byte counts, independent of UTF-8 decoding and capture clipping. */
|
|
71
|
+
byteCounts(): BashStreamByteCounts;
|
|
63
72
|
/** Emit the initial empty cumulative snapshot, when a callback is configured. */
|
|
64
73
|
start(): void;
|
|
65
74
|
/** Accept one stream chunk. Returns true only when this chunk reaches the hard cap. */
|
|
@@ -90,6 +99,12 @@ export function createBashOutputProgressController(
|
|
|
90
99
|
const stdoutDecoder = new StringDecoder("utf8");
|
|
91
100
|
const stderrDecoder = new StringDecoder("utf8");
|
|
92
101
|
let decodersFinished = false;
|
|
102
|
+
const counts: BashStreamByteCounts = {
|
|
103
|
+
observedStdoutBytes: 0,
|
|
104
|
+
observedStderrBytes: 0,
|
|
105
|
+
retainedStdoutBytes: 0,
|
|
106
|
+
retainedStderrBytes: 0,
|
|
107
|
+
};
|
|
93
108
|
let outputBytes = 0;
|
|
94
109
|
let outputCapped = false;
|
|
95
110
|
let updateTimer: unknown = null;
|
|
@@ -144,16 +159,22 @@ export function createBashOutputProgressController(
|
|
|
144
159
|
};
|
|
145
160
|
|
|
146
161
|
return {
|
|
162
|
+
byteCounts: () => ({ ...counts }),
|
|
147
163
|
start(): void {
|
|
148
164
|
if (phase !== "active" || onUpdate === undefined) return;
|
|
149
165
|
updateDirty = true;
|
|
150
166
|
emitUpdate();
|
|
151
167
|
},
|
|
152
168
|
append(target, chunk): boolean {
|
|
153
|
-
if (phase !== "active"
|
|
169
|
+
if (phase !== "active") return false;
|
|
170
|
+
if (target === "stdout") counts.observedStdoutBytes += chunk.byteLength;
|
|
171
|
+
else counts.observedStderrBytes += chunk.byteLength;
|
|
172
|
+
if (outputCapped) return false;
|
|
154
173
|
const remaining = BASH_HARD_CAP_BYTES - outputBytes;
|
|
155
174
|
const accepted = chunk.byteLength <= remaining ? chunk : chunk.subarray(0, Math.max(0, remaining));
|
|
156
175
|
outputBytes += accepted.byteLength;
|
|
176
|
+
if (target === "stdout") counts.retainedStdoutBytes += accepted.byteLength;
|
|
177
|
+
else counts.retainedStderrBytes += accepted.byteLength;
|
|
157
178
|
if (accepted.byteLength > 0) {
|
|
158
179
|
const decoded = target === "stdout" ? stdoutDecoder.write(accepted) : stderrDecoder.write(accepted);
|
|
159
180
|
if (target === "stdout") stdout += decoded;
|
|
@@ -213,7 +234,7 @@ function parseNullDelimitedEnv(raw: string): NodeJS.ProcessEnv | null {
|
|
|
213
234
|
}
|
|
214
235
|
|
|
215
236
|
function captureLoginEnv(): Promise<NodeJS.ProcessEnv | null> {
|
|
216
|
-
return new Promise((resolve) => {
|
|
237
|
+
return new Promise<NodeJS.ProcessEnv | null>((resolve) => {
|
|
217
238
|
let stdout = "";
|
|
218
239
|
let settled = false;
|
|
219
240
|
const finish = (value: NodeJS.ProcessEnv | null): void => {
|
|
@@ -266,7 +287,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
|
|
|
266
287
|
enabled: gitCommitAttributionEnabled(process.env),
|
|
267
288
|
});
|
|
268
289
|
reportCommitAttributionDiagnostic(attribution.diagnostic);
|
|
269
|
-
return new Promise((resolve) => {
|
|
290
|
+
return new Promise<BashCommandResult>((resolve) => {
|
|
270
291
|
const timeout = clampTimerDelayMs(options.timeoutMs ?? 300_000);
|
|
271
292
|
let aborted = false;
|
|
272
293
|
let timedOut = false;
|
|
@@ -377,6 +398,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
|
|
|
377
398
|
resolveAfterCancellation({
|
|
378
399
|
error: error as NodeJS.ErrnoException,
|
|
379
400
|
...finalOutput,
|
|
401
|
+
...output.byteCounts(),
|
|
380
402
|
exitCode: null,
|
|
381
403
|
signal: null,
|
|
382
404
|
aborted,
|
|
@@ -401,6 +423,7 @@ export async function runBashCommand(command: string, options: RunBashCommandOpt
|
|
|
401
423
|
resolveAfterCancellation({
|
|
402
424
|
error,
|
|
403
425
|
...finalOutput,
|
|
426
|
+
...output.byteCounts(),
|
|
404
427
|
exitCode: code,
|
|
405
428
|
signal: signalName,
|
|
406
429
|
aborted,
|
package/src/core/config.ts
CHANGED
|
@@ -1309,12 +1309,13 @@ export function validateSettings(raw: unknown): SettingsValidationResult {
|
|
|
1309
1309
|
"baseDelayMs",
|
|
1310
1310
|
"maxDelayMs",
|
|
1311
1311
|
"streamStallMs",
|
|
1312
|
+
"firstTokenStallMs",
|
|
1312
1313
|
]);
|
|
1313
1314
|
if ("enabled" in chat.retry) {
|
|
1314
1315
|
const parsed = expectBoolean(issues, "chat.retry.enabled", chat.retry.enabled);
|
|
1315
1316
|
if (parsed !== undefined) settings.chat.retry.enabled = parsed;
|
|
1316
1317
|
}
|
|
1317
|
-
for (const key of ["maxRetries", "baseDelayMs", "maxDelayMs", "streamStallMs"] as const) {
|
|
1318
|
+
for (const key of ["maxRetries", "baseDelayMs", "maxDelayMs", "streamStallMs", "firstTokenStallMs"] as const) {
|
|
1318
1319
|
if (!(key in chat.retry)) continue;
|
|
1319
1320
|
const parsed = expectInteger(issues, `chat.retry.${key}`, chat.retry[key], { min: 0 });
|
|
1320
1321
|
if (parsed !== undefined) settings.chat.retry[key] = parsed;
|
package/src/core/defaults.ts
CHANGED
|
@@ -217,6 +217,13 @@ export interface RetrySettings {
|
|
|
217
217
|
maxDelayMs: number;
|
|
218
218
|
/** Silence on an in-flight stream past this many ms is treated as a wedged backend: abort and retry. */
|
|
219
219
|
streamStallMs: number;
|
|
220
|
+
/**
|
|
221
|
+
* Silence allowed before a call's first token. A local server that slept
|
|
222
|
+
* reloads the model and prefills cold before it can emit anything, so this
|
|
223
|
+
* window is longer than the mid-stream one. 0 never aborts a call that has
|
|
224
|
+
* not started streaming.
|
|
225
|
+
*/
|
|
226
|
+
firstTokenStallMs: number;
|
|
220
227
|
}
|
|
221
228
|
|
|
222
229
|
export const OUTPUT_STYLES = ["compact", "standard", "detailed"] as const;
|
|
@@ -391,7 +398,7 @@ export interface FleetSettings extends FleetRouteSettings {
|
|
|
391
398
|
history: FleetHistorySettings;
|
|
392
399
|
}
|
|
393
400
|
|
|
394
|
-
/** Roles whose authority is narrow enough for
|
|
401
|
+
/** Roles whose authority is narrow enough for active joint routing. */
|
|
395
402
|
export const ACTIVE_ROUTING_ROLES = ["researcher", "verifier", "reviewer", "judge"] as const;
|
|
396
403
|
export type ActiveRoutingRole = (typeof ACTIVE_ROUTING_ROLES)[number];
|
|
397
404
|
|
|
@@ -485,6 +492,7 @@ export const DEFAULT_SETTINGS = {
|
|
|
485
492
|
baseDelayMs: 2000,
|
|
486
493
|
maxDelayMs: 60000,
|
|
487
494
|
streamStallMs: 180000,
|
|
495
|
+
firstTokenStallMs: 600000,
|
|
488
496
|
} as RetrySettings,
|
|
489
497
|
} as ChatSettings,
|
|
490
498
|
fleet: {
|
|
@@ -620,6 +628,7 @@ chat:
|
|
|
620
628
|
baseDelayMs: 2000
|
|
621
629
|
maxDelayMs: 60000
|
|
622
630
|
streamStallMs: 180000
|
|
631
|
+
firstTokenStallMs: 600000
|
|
623
632
|
|
|
624
633
|
fleet:
|
|
625
634
|
default:
|
package/src/core/event-bus.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type { BusChannel, BusPayloadMap } from "./bus-events.js";
|
|
|
14
14
|
* settling, so side effects that must happen before the next emit() must be
|
|
15
15
|
* completed synchronously.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
17
|
+
* Domain listeners register here; violate the invariant and
|
|
18
18
|
* shutdown.* ordering or banner timing will drift.
|
|
19
19
|
*/
|
|
20
20
|
export type SafeEventListener<C extends BusChannel = BusChannel> = (payload: BusPayloadMap[C]) => void | Promise<void>;
|