@iowarp/clio-coder 0.4.7 → 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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +111 -0
- package/CONTRIBUTING.md +83 -74
- package/README.md +69 -47
- package/dist/{acp-W3Y3TRHD.js → acp-ZWZCPS2A.js} +15 -15
- package/dist/{agents-J4ICNLQ3.js → agents-LYSOWZUE.js} +61 -59
- package/dist/assets/codewiki.json +1 -1
- package/dist/assets/web-notices/@hono__node-server-LICENSE +21 -0
- package/dist/assets/web-notices/hono-LICENSE +21 -0
- package/dist/{auth-X2UJUMOC.js → auth-WBQGKWQ5.js} +27 -27
- package/dist/background-BUMOBAQN.js +37 -0
- package/dist/{builtins-XLXWWSRF.js → builtins-ODRJOEDI.js} +7 -7
- package/dist/{chunk-C3G5PNUO.js → chunk-2DRRZ57Q.js} +36 -27
- package/dist/chunk-2JBZYUPY.js +105 -0
- package/dist/chunk-2KUBKL63.js +336 -0
- package/dist/chunk-2VBWFXYE.js +198 -0
- package/dist/{chunk-XZ6UFQ52.js → chunk-2X2R3UTH.js} +25 -15
- package/dist/{chunk-M6Z2V6YU.js → chunk-37LW32LZ.js} +5 -5
- package/dist/{chunk-6LRLOJHQ.js → chunk-3AND2EFU.js} +11 -62
- package/dist/{chunk-FQOOGXBH.js → chunk-3RDHGNU7.js} +101 -33
- package/dist/{chunk-D2T66PDV.js → chunk-3SUDBGEI.js} +41 -208
- package/dist/{chunk-5AJPUR72.js → chunk-3TQN67I2.js} +9 -9
- package/dist/{chunk-LBFQMYS3.js → chunk-3U4BL2EV.js} +5 -3
- package/dist/{chunk-UFYNOQK4.js → chunk-3UQADNG2.js} +7 -7
- package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
- package/dist/{chunk-NO7J45X6.js → chunk-4ATBOFRP.js} +713 -218
- package/dist/{chunk-ECOMVOHP.js → chunk-4DNL43EZ.js} +3 -3
- package/dist/{chunk-WT5TRMO4.js → chunk-4HFJKRGZ.js} +255 -82
- package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
- package/dist/{chunk-WURGVOZJ.js → chunk-5RTEFNBP.js} +18 -14
- package/dist/{config-YXARKGTX.js → chunk-64XJW7NT.js} +24 -268
- package/dist/{chunk-24S3DN22.js → chunk-6TKOFFGE.js} +4 -4
- package/dist/{chunk-YKRJTYNP.js → chunk-6UJ7RDI7.js} +4 -4
- package/dist/{chunk-MZNWZUJM.js → chunk-7FBCRWVT.js} +288 -288
- package/dist/{chunk-UA6W4XFJ.js → chunk-7JSOSVLP.js} +2 -2
- package/dist/chunk-7N3OLLSL.js +637 -0
- package/dist/{chunk-KKEYGFX4.js → chunk-7QQRPB2E.js} +11 -11
- package/dist/{chunk-N37QC5FV.js → chunk-A6DULIMH.js} +21 -9
- package/dist/{fleet-decisions-S3PTZV2D.js → chunk-AB3QXXBC.js} +5 -41
- package/dist/chunk-ACCECAH4.js +49 -0
- package/dist/{chunk-CP3HIR5H.js → chunk-AM6CEP2K.js} +20 -19
- package/dist/chunk-AUHVBIDW.js +19 -0
- package/dist/{chunk-BQQ5MXUC.js → chunk-AY4XE6GN.js} +19 -13
- package/dist/{chunk-ISNCCX42.js → chunk-BBA2TAWV.js} +10 -9
- package/dist/chunk-BFPHMSK7.js +169 -0
- package/dist/{chunk-LVFANMOH.js → chunk-BHJMMCXS.js} +4 -4
- package/dist/{chunk-DO7M3LSX.js → chunk-BMNVVKEW.js} +40 -93
- package/dist/{chunk-VTYHHQ57.js → chunk-CTGZCEI6.js} +2 -2
- package/dist/{chunk-RTLNFZMD.js → chunk-DIAJYJYG.js} +3 -3
- package/dist/chunk-EHZRAB4U.js +63 -0
- package/dist/{chunk-KS7ETA3P.js → chunk-EM2DIQAJ.js} +3 -3
- package/dist/{chunk-MNQN3X6Y.js → chunk-ETF4ROKH.js} +5 -5
- package/dist/{chunk-WN552PKN.js → chunk-F2YM3JY4.js} +744 -1134
- package/dist/{chunk-7EEGBKV4.js → chunk-FEBQWHJT.js} +24 -19
- package/dist/{chunk-4QKAITQT.js → chunk-FPS4R2RN.js} +74 -10
- package/dist/chunk-G5R53COU.js +68 -0
- package/dist/chunk-GHXGMFQ5.js +40 -0
- package/dist/{chunk-GFQ7P2UF.js → chunk-GJDRMBDI.js} +10 -10
- package/dist/{chunk-LZBMXNLP.js → chunk-GM4TY6VN.js} +43 -6
- package/dist/{chunk-NCCQ6DVS.js → chunk-GREYLTZ5.js} +8 -8
- package/dist/{chunk-HOX4YZ2K.js → chunk-H2WSCZZT.js} +19 -3
- package/dist/{chunk-3LXJOICS.js → chunk-H6IUCY6Q.js} +2 -2
- package/dist/{chunk-BO4XV5VX.js → chunk-H72DCH3E.js} +95 -206
- package/dist/{chunk-SEDI5K5B.js → chunk-H7TXJR23.js} +20 -20
- package/dist/chunk-HBJQQTKM.js +40 -0
- package/dist/chunk-HCVKSGNZ.js +990 -0
- package/dist/chunk-HVCAY2FH.js +67 -0
- package/dist/{chunk-34XHRVKG.js → chunk-I47EJPYL.js} +3 -3
- package/dist/{chunk-4N2RZ4TO.js → chunk-IALGWTLO.js} +3 -3
- package/dist/{chunk-IQCNVLO6.js → chunk-IALZJE37.js} +10 -7
- package/dist/{chunk-DLIYANB7.js → chunk-IC7JXLOM.js} +16 -11
- package/dist/{chunk-G4LGUTOE.js → chunk-IOSVTTCD.js} +5 -5
- package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
- package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
- package/dist/{chunk-TN5FW4XY.js → chunk-JIYWMQZ5.js} +12 -9
- package/dist/{chunk-T7QQBNLH.js → chunk-JKU34ACI.js} +10 -8
- package/dist/chunk-JOBN2YQQ.js +176 -0
- package/dist/chunk-JOL2QRLE.js +152 -0
- package/dist/{chunk-GXIWHXDB.js → chunk-JTR3VSV3.js} +3 -3
- package/dist/{chunk-T334FW2H.js → chunk-JU6MAMRJ.js} +7 -7
- package/dist/chunk-JURMQWVJ.js +15 -0
- package/dist/{chunk-CULVKYTK.js → chunk-K3XN4LZ4.js} +5 -5
- package/dist/{chunk-3T4DXWP6.js → chunk-KIVFXGBM.js} +27 -7
- package/dist/chunk-KKRXONXG.js +43 -0
- package/dist/{chunk-YPRSNUTC.js → chunk-KOAHT3N2.js} +2 -2
- package/dist/chunk-KP5BPXR3.js +73 -0
- package/dist/{chunk-UA3W4FGC.js → chunk-KRJQG47M.js} +6 -6
- package/dist/{chunk-GI5RRMAH.js → chunk-KW6OJ7IY.js} +19 -21
- package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
- package/dist/{chunk-MZHXENL7.js → chunk-L4RUTLRL.js} +8 -8
- package/dist/{chunk-P5SC4DLJ.js → chunk-LGTVWPRN.js} +2 -2
- package/dist/{chunk-65BGHOUR.js → chunk-LSQW6KZO.js} +5 -5
- package/dist/{chunk-TZHN5ITX.js → chunk-LWJYOHT3.js} +8 -8
- package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
- package/dist/chunk-MJ4QEJVT.js +185 -0
- package/dist/{chunk-T4TY5GG3.js → chunk-MO65K5CH.js} +5 -5
- package/dist/{chunk-TZ6UVP2H.js → chunk-MTOZEQHL.js} +8 -8
- package/dist/chunk-MZDPF35R.js +45 -0
- package/dist/{chunk-P4DL2LM5.js → chunk-MZKYVIWW.js} +8 -119
- package/dist/{chunk-KAFMW7WM.js → chunk-NBPA5QM6.js} +2 -2
- package/dist/{chunk-EUEXGXXR.js → chunk-NMBEW4PP.js} +5 -5
- package/dist/{chunk-SELG4SUR.js → chunk-NPLLK3HO.js} +72 -89
- package/dist/{chunk-VCRVEDUC.js → chunk-NSYGPIVW.js} +5 -5
- package/dist/{context-7HJEWTTP.js → chunk-NXTV5OI5.js} +36 -90
- package/dist/{chunk-IMOD2YPV.js → chunk-NYDG4QP4.js} +9 -19
- package/dist/{chunk-6CA2BHOR.js → chunk-OA2GDACN.js} +5 -5
- package/dist/{chunk-A67NR5AT.js → chunk-PJI57EC6.js} +14 -11
- package/dist/{chunk-IJMW64DX.js → chunk-PJJBUGMR.js} +50 -50
- package/dist/{chunk-CPXGJI2A.js → chunk-PNJE7JPS.js} +20 -5
- package/dist/chunk-PP23PZEV.js +1347 -0
- package/dist/chunk-PPIFDSBK.js +409 -0
- package/dist/{chunk-T52TPHYC.js → chunk-PTFISXQO.js} +8 -7
- package/dist/{chunk-C6GEXX4L.js → chunk-QB33Z5S7.js} +5 -5
- package/dist/{chunk-VMATUZB6.js → chunk-QGNII5VC.js} +10 -10
- package/dist/{chunk-TLTGZTXI.js → chunk-QI72X67S.js} +104 -27
- package/dist/chunk-QKHZZFKH.js +98 -0
- package/dist/{chunk-PFLOULP3.js → chunk-RDKX2PME.js} +4 -4
- package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
- package/dist/chunk-RPMNIFRY.js +65 -0
- package/dist/{chunk-L3Z5ANCV.js → chunk-RQROVOV3.js} +13 -11
- package/dist/{chunk-6YHPAAZR.js → chunk-S34A7BSP.js} +3 -3
- package/dist/{chunk-5ZSZEYJK.js → chunk-SJETVJHX.js} +2 -2
- package/dist/{chunk-77CZRFTE.js → chunk-SJMNU4ZS.js} +2 -2
- package/dist/chunk-SLLG2G44.js +85 -0
- package/dist/{chunk-GVZFCJHE.js → chunk-SQAZN2V3.js} +48 -22
- package/dist/{chunk-2O2LVQQK.js → chunk-SQBT46OF.js} +2 -2
- package/dist/{chunk-ZGIGW4ZG.js → chunk-TCUOGIL2.js} +5 -5
- package/dist/{chunk-DACXIVVF.js → chunk-TIWPKCVO.js} +5 -5
- package/dist/{chunk-5CMARGPF.js → chunk-UIU7MGZ3.js} +11 -2
- package/dist/chunk-USBBEKHW.js +177 -0
- package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
- package/dist/{chunk-MBJO5VNZ.js → chunk-VPWGADBG.js} +33 -33
- package/dist/{chunk-UUQ5G6EZ.js → chunk-VWFCAK34.js} +6 -6
- package/dist/{chunk-6CB2IL4N.js → chunk-W5RM7YAH.js} +1 -1
- package/dist/{chunk-4MFBBY2Z.js → chunk-W72LLZAV.js} +3 -3
- package/dist/{chunk-4UHVS5T7.js → chunk-WGRDABW7.js} +8 -8
- package/dist/{chunk-XR3XJN2M.js → chunk-WWRV5RJI.js} +4 -4
- package/dist/{chunk-24TOGHPO.js → chunk-X6FLVUM5.js} +4 -4
- package/dist/{chunk-6YA46L5A.js → chunk-XFLSL7BT.js} +2 -2
- package/dist/{chunk-QKWL7SYE.js → chunk-XJZEDCNT.js} +50 -39
- package/dist/{chunk-UWD3JD5X.js → chunk-XLLEL3K7.js} +10 -10
- package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
- package/dist/chunk-XNZWWDC3.js +686 -0
- package/dist/{chunk-WBVKKTUT.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-WB7POC6M.js → chunk-Y3M2T5RO.js} +6 -6
- package/dist/{chunk-RXFPB32E.js → chunk-YJCCMYYT.js} +2 -2
- package/dist/{chunk-EUZRMP4Y.js → chunk-YPQOPFP7.js} +20 -20
- package/dist/{chunk-USZA7GWL.js → chunk-YQ3GFEUY.js} +2 -2
- package/dist/{chunk-BAU36233.js → chunk-YQYINEJI.js} +9 -9
- package/dist/{chunk-CE64C5K5.js → chunk-ZF6CV4WZ.js} +1356 -235
- package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
- package/dist/{chunk-IZYTT3CD.js → chunk-ZKQ63XZ5.js} +16 -39
- package/dist/{chunk-6TAATXXH.js → chunk-ZKVMDNAN.js} +7 -7
- package/dist/chunk-ZST3FRCV.js +132 -0
- package/dist/cli/index.js +50 -38
- package/dist/{clio-L2P7S2R2.js → clio-JUDCLNHC.js} +11 -11
- package/dist/clio-context-tools-FT672MNZ.js +136 -0
- package/dist/{code-nav-B5LNX4KU.js → code-nav-7OVCTP2Z.js} +39 -37
- package/dist/{components-63MMQKUT.js → components-OZXZMDWU.js} +11 -11
- package/dist/config-P3ZQVF63.js +275 -0
- package/dist/config-graph-GKAOBAS5.js +160 -0
- package/dist/{configure-LMVQJ46J.js → configure-25LRYZJG.js} +56 -55
- package/dist/context-72VQV7JX.js +73 -0
- package/dist/{context-YG2LZDYZ.js → context-COWRWXP3.js} +89 -83
- package/dist/{context-XSZKKFBW.js → context-WB3D474G.js} +16 -16
- package/dist/{context-clear-AC5NXHM2.js → context-clear-Y4LYMWC6.js} +88 -82
- package/dist/{context-index-KKTPRV5G.js → context-index-W6A4V7OC.js} +4 -4
- package/dist/{context-map-T7ROR5D5.js → context-map-DKL3QT6D.js} +3 -3
- package/dist/{context-working-set-F4Q4J3NS.js → context-working-set-TMZYVC7A.js} +27 -25
- package/dist/data-tool-KMBWKKWR.js +2987 -0
- package/dist/{detail-H73BEF2N.js → detail-4GLROGY5.js} +89 -83
- package/dist/{dispatch-runner-3RY5FSJC.js → dispatch-runner-TR3LBP5P.js} +113 -107
- package/dist/docs-ZK777W2G.js +101 -0
- package/dist/{doctor-EQYJOGUG.js → doctor-WC4OV2OB.js} +76 -73
- package/dist/{eval-4P7O6CCE.js → eval-FUNWJNUJ.js} +88 -73
- package/dist/{eval-inventory-QOYZERXJ.js → eval-inventory-CX24K2JT.js} +5 -60
- package/dist/evals-L73EBHSU.js +104 -0
- package/dist/{evidence-O76QF7TZ.js → evidence-AVJ2RTHX.js} +99 -93
- package/dist/{evidence-D6GUSYJW.js → evidence-P4NZOAK7.js} +88 -82
- package/dist/evidence-Y55WKYHH.js +246 -0
- package/dist/{evolve-H47BCETS.js → evolve-MAWKRYWF.js} +93 -87
- package/dist/{extensions-NNL3ZOCU.js → extensions-PYQH3H47.js} +14 -13
- package/dist/fleet-M4H2QBWT.js +268 -0
- package/dist/{fleet-KMNS6NOM.js → fleet-ULBXXRDR.js} +146 -138
- package/dist/{fleet-commands-DOWSYCBX.js → fleet-commands-7NNC4JZU.js} +18 -17
- package/dist/fleet-decisions-EHEY7KPU.js +52 -0
- package/dist/{fleet-graph-F2DE2TME.js → fleet-graph-LQ2AHZT3.js} +24 -24
- package/dist/{fleet-inspect-EN2Q6IVB.js → fleet-inspect-5IGBIIYZ.js} +98 -258
- package/dist/{fleet-preflight-FRLETDD3.js → fleet-preflight-UTTNOKMG.js} +9 -4
- package/dist/{fleet-validate-B2XDLS57.js → fleet-validate-YGILJKA6.js} +29 -29
- package/dist/{fleet-verify-4JKUWGJ7.js → fleet-verify-AUWTCDKR.js} +88 -82
- package/dist/{fleet-view-BHJFW26B.js → fleet-view-TGUFCY5A.js} +90 -84
- package/dist/{init-XAT5N5YM.js → init-GFN2Z7NF.js} +111 -104
- package/dist/install-6PIF6F6W.js +19 -0
- package/dist/{interop-FVECHFKG.js → interop-EF5JUWWK.js} +29 -29
- package/dist/{inventory-7KFQGLCV.js → inventory-I6VJDDYF.js} +90 -84
- package/dist/library-3J5IO2OJ.js +75 -0
- package/dist/{library-QAPAO23R.js → library-IJTOFTDS.js} +20 -19
- package/dist/{library-NY2XOT75.js → library-Z3KZSHPE.js} +35 -35
- package/dist/{library-import-5Y6MAS3R.js → library-import-IMKFLDHX.js} +29 -29
- package/dist/{library-inventory-JT6HWITQ.js → library-inventory-CQP5D6GU.js} +21 -21
- package/dist/{library-validation-EQUH25DC.js → library-validation-33UTX7AI.js} +19 -19
- package/dist/mcp-5FWZKUS6.js +26 -0
- package/dist/{memory-DYVTTCP6.js → memory-36CWN67Y.js} +93 -87
- package/dist/{models-MASFJ6Y2.js → models-KQ6PQJJQ.js} +57 -56
- package/dist/{monitor-YMP4NXJJ.js → monitor-XX6ZD6KC.js} +98 -91
- package/dist/{orchestrator-AFQRRTEI.js → orchestrator-SK6HDAOP.js} +1537 -832
- package/dist/{panes-NICTHQCV.js → panes-L27QRXUH.js} +14 -14
- package/dist/{panes-D3Y2KFG5.js → panes-LXZIWNOZ.js} +4 -4
- package/dist/{paths-PSFAUIGO.js → paths-7DJDU4P4.js} +6 -6
- package/dist/{preload-5Q7VXRFJ.js → preload-K2TDYI4Y.js} +88 -82
- package/dist/{reset-7NKZK7JN.js → reset-73VU3XNT.js} +13 -13
- package/dist/{resources-NILSIZAT.js → resources-3BYJYVYL.js} +24 -24
- package/dist/{run-BPZGEBZV.js → run-AR7PY6GW.js} +144 -136
- package/dist/run-script-H2KUDIII.js +41 -0
- package/dist/settings-3VMBMWID.js +72 -0
- package/dist/{share-EZ6ERBMH.js → share-HVWH4FPF.js} +30 -30
- package/dist/{skills-BTVVNYVM.js → skills-5TYEY75Q.js} +30 -30
- package/dist/{skills-eval-UY34MNK7.js → skills-eval-CK3MD63Z.js} +114 -103
- package/dist/{skills-inventory-JDHSIA7I.js → skills-inventory-KSFYG3I6.js} +24 -24
- package/dist/{slash-commands-K4FNQ2AT.js → slash-commands-DMVHML7P.js} +60 -57
- package/dist/{steer-2B3EQGFH.js → steer-XCD6V3EW.js} +4 -4
- package/dist/{support-L2SOL3IE.js → support-JAZL6VBR.js} +7 -7
- package/dist/system-3TDQRMZZ.js +116 -0
- package/dist/{targets-44VKGFLN.js → targets-EZKHAYRN.js} +74 -72
- package/dist/{tasks-3KODKFU7.js → tasks-SNEFHWYW.js} +18 -18
- package/dist/{terminal-lease-LXA7MMPO.js → terminal-lease-BNLFA4OF.js} +8 -7
- package/dist/{tools-3UB7TEVR.js → tools-7IM6BDCE.js} +12 -12
- package/dist/{trace-TAMIU4OJ.js → trace-C3MBGD4S.js} +16 -65
- package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
- package/dist/{uninstall-QYVRPEM4.js → uninstall-WWLOSZ42.js} +35 -10
- package/dist/{upgrade-7PMKM2JH.js → upgrade-ETK2JNSJ.js} +42 -51
- package/dist/{usage-6EQV7EQK.js → usage-S2HOB7BZ.js} +112 -102
- package/dist/{verifiers-JLITWSHU.js → verifiers-QDTEVH7R.js} +26 -24
- package/dist/{verify-T7NAEVIG.js → verify-SUKUK6XM.js} +16 -15
- package/dist/web/client/THIRD_PARTY_LICENSES.md +1809 -0
- package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +1 -0
- package/dist/web/client/assets/arc-Pry-7G1_.js +1 -0
- 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/array-BifhSqXX.js +1 -0
- package/dist/web/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
- package/dist/web/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
- package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +129 -0
- package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +38 -0
- package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
- package/dist/web/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +62 -0
- package/dist/web/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +2 -0
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
- package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +1 -0
- package/dist/web/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
- package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +72 -0
- package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +1 -0
- package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +231 -0
- package/dist/web/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +1 -0
- package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +10 -0
- package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +1 -0
- package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +1 -0
- package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +1 -0
- package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +168 -0
- package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +88 -0
- package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +206 -0
- package/dist/web/client/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
- package/dist/web/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- 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/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
- package/dist/web/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
- package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
- package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +1 -0
- package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +62 -0
- package/dist/web/client/assets/cytoscape.esm-c2aL46s-.js +321 -0
- package/dist/web/client/assets/dagre-C-rnJpZF.js +1 -0
- package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +4 -0
- package/dist/web/client/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +30 -0
- package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +41 -0
- package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +3 -0
- package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +24 -0
- package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +24 -0
- package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
- package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +1 -0
- package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +99 -0
- 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-DjD_AAMj.js +1 -0
- package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +106 -0
- package/dist/web/client/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
- package/dist/web/client/assets/index-Dsi52apB.css +1 -0
- package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +1 -0
- package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +2 -0
- package/dist/web/client/assets/init-C-OQMol4.js +1 -0
- package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +70 -0
- package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +139 -0
- package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +89 -0
- package/dist/web/client/assets/katex-ZlcWpGUi.js +257 -0
- package/dist/web/client/assets/line-BIDAcEtX.js +1 -0
- package/dist/web/client/assets/linear-SzVmGSw4.js +1 -0
- package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +7 -0
- package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +44 -0
- package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +96 -0
- package/dist/web/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
- package/dist/web/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
- package/dist/web/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
- package/dist/web/client/assets/ordinal-BDEzSJ7C.js +1 -0
- package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +1 -0
- package/dist/web/client/assets/path-fybaL0A-.js +1 -0
- package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +1 -0
- package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +1 -0
- package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +39 -0
- package/dist/web/client/assets/prism-bash-D6zCJ74D.js +1 -0
- package/dist/web/client/assets/prism-c-04YixN25.js +1 -0
- package/dist/web/client/assets/prism-clike-DapgWyxx.js +1 -0
- package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
- package/dist/web/client/assets/prism-cpp-C-lJbC-6.js +1 -0
- package/dist/web/client/assets/prism-css-CPgOzxXp.js +1 -0
- package/dist/web/client/assets/prism-diff-BF8m0_mq.js +3 -0
- package/dist/web/client/assets/prism-docker-DkT6yOFj.js +1 -0
- package/dist/web/client/assets/prism-fortran-Be5x3y1V.js +1 -0
- package/dist/web/client/assets/prism-go-C_8qAH5n.js +1 -0
- package/dist/web/client/assets/prism-ini-BESK3y0r.js +1 -0
- package/dist/web/client/assets/prism-javascript-BnO-swvr.js +1 -0
- package/dist/web/client/assets/prism-json-Dp_-W-Hv.js +1 -0
- package/dist/web/client/assets/prism-jsx-D-D0NWtC.js +1 -0
- package/dist/web/client/assets/prism-julia-DIjOgiAV.js +1 -0
- package/dist/web/client/assets/prism-latex-DNMbqcH_.js +1 -0
- package/dist/web/client/assets/prism-makefile-CRKWLQ8l.js +1 -0
- package/dist/web/client/assets/prism-markdown-C0FPJ1Iz.js +1 -0
- package/dist/web/client/assets/prism-markup-Cp04rIa1.js +1 -0
- package/dist/web/client/assets/prism-matlab-D-nk08al.js +1 -0
- package/dist/web/client/assets/prism-python-CfiSVtM6.js +1 -0
- package/dist/web/client/assets/prism-r-QmNGR8LX.js +1 -0
- package/dist/web/client/assets/prism-rust-Bu9N8X3N.js +1 -0
- package/dist/web/client/assets/prism-shell-session-Be4UuYoM.js +1 -0
- package/dist/web/client/assets/prism-sql-CYhVDMEE.js +1 -0
- package/dist/web/client/assets/prism-toml-DKb54GAT.js +1 -0
- package/dist/web/client/assets/prism-tsx-p6J2Kc_4.js +1 -0
- package/dist/web/client/assets/prism-typescript-BMqONzxf.js +1 -0
- package/dist/web/client/assets/prism-yaml-C0JHu8gr.js +1 -0
- package/dist/web/client/assets/purify.es-ChwZkWde.js +3 -0
- package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +7 -0
- package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +1 -0
- package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +1 -0
- 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-CgMS4B6R.js +1 -0
- package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +84 -0
- package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/web/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +40 -0
- package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +162 -0
- package/dist/web/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
- package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +1 -0
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
- package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +1 -0
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
- package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +120 -0
- package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +1 -0
- package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +1 -0
- package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +34 -0
- package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +1 -0
- package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +78 -0
- package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +7 -0
- package/dist/web/client/clio-coder-logo.webp +0 -0
- package/dist/web/client/icon-192.png +0 -0
- package/dist/web/client/icon-512.png +0 -0
- package/dist/web/client/index.html +6 -0
- package/dist/web/client/manifest.webmanifest +15 -0
- package/dist/web/client/offline.css +55 -0
- package/dist/web/client/offline.html +5 -0
- package/dist/web/client/offline.js +27 -0
- package/dist/web/client/sw.js +34 -0
- package/dist/web/ops-worker.js +37 -0
- package/dist/web/reads-worker.js +1726 -0
- package/dist/web/server.js +8499 -0
- package/dist/web-EMGUGGEI.js +13 -0
- package/dist/{web-fetch-W4TNW4Q7.js → web-fetch-6BRRVQON.js} +22 -5
- package/dist/{wiki-generate-T2TJQJUA.js → wiki-generate-XHSJTDOP.js} +120 -113
- package/dist/{with-panes-CHFC7HGI.js → with-panes-Z6BTEHMZ.js} +12 -12
- package/dist/worker/entry.js +113 -99
- package/docs/README.md +28 -27
- package/docs/architecture/acp.md +5 -9
- package/docs/architecture/alcf-provider.md +0 -3
- package/docs/architecture/architecture.md +0 -3
- package/docs/architecture/artifact-placement.md +12 -4
- package/docs/architecture/artifact-versions.md +0 -3
- package/docs/architecture/capacity-and-scheduling.md +0 -3
- package/docs/architecture/context-engine.md +0 -3
- package/docs/architecture/context-working-set.md +0 -3
- package/docs/architecture/dispatch-architecture-rationale.md +0 -3
- package/docs/architecture/dispatch-typed-intent.md +0 -3
- package/docs/architecture/evidence-and-memory.md +0 -3
- package/docs/architecture/library.md +1 -3
- package/docs/architecture/middleware-and-components.md +0 -3
- package/docs/architecture/model-catalog.md +1 -4
- package/docs/architecture/observability.md +0 -3
- package/docs/architecture/pi-boundary.md +6 -9
- package/docs/architecture/prompt-envelope-and-tools.md +37 -30
- package/docs/architecture/provider-adapter-cookbook.md +1 -4
- package/docs/architecture/safety-model.md +19 -9
- package/docs/architecture/session-lifecycle.md +10 -7
- package/docs/architecture/time-conventions.md +0 -3
- package/docs/architecture/trace-store.md +28 -20
- package/docs/architecture/tui-design.md +38 -18
- package/docs/architecture/worker-context.md +1 -3
- package/docs/architecture/worker-dispatch-mechanics.md +1 -4
- package/docs/guide/authoring-plugins.md +1 -3
- package/docs/guide/built-in-agents.md +0 -3
- package/docs/guide/commands-and-modes.md +41 -25
- package/docs/guide/configuration-and-targets.md +204 -9
- package/docs/guide/configuration-reference.md +125 -17
- package/docs/guide/environment-variables.md +2 -8
- package/docs/guide/exit-codes-and-output.md +0 -3
- package/docs/guide/extensions-and-sharing.md +0 -3
- package/docs/guide/fleet-dispatch.md +3 -5
- package/docs/guide/glossary.md +1 -4
- package/docs/guide/harness-extensions.md +0 -2
- package/docs/guide/installation-and-lifecycle.md +3 -6
- package/docs/guide/interop.md +0 -2
- package/docs/guide/panes-and-files.md +0 -3
- package/docs/guide/plugins.md +0 -3
- package/docs/guide/proactive-memory.md +0 -3
- package/docs/guide/resource-library.md +1 -3
- package/docs/guide/skills-marketplace.md +0 -2
- package/docs/guide/tool-usage.md +166 -67
- package/docs/guide/troubleshooting.md +1 -4
- package/docs/history/config-knobs-audit.md +0 -3
- package/docs/history/release-cut-checklist.md +0 -3
- package/docs/process/development-pipeline.md +0 -3
- package/docs/process/documentation-coverage.md +3 -3
- package/docs/process/documentation-guide.md +16 -22
- package/docs/process/eval-runner.md +0 -3
- package/docs/process/evals-internal.md +0 -3
- package/docs/process/evolution.md +0 -3
- package/docs/process/fleet-demo-runbook.md +6 -9
- package/docs/process/git-commit-provenance.md +0 -3
- package/docs/process/performance-methodology.md +1 -4
- package/docs/process/release-cut-checklist.md +114 -221
- package/docs/process/scientific-validation.md +23 -6
- package/docs/process/tool-audit-v0.4.9.md +357 -0
- package/library/registry.yaml +2 -2
- package/library/skills/meta/clio-coder-test/SKILL.md +25 -15
- package/library/skills/meta/clio-coder-test/evals.md +16 -2
- package/library/skills/meta/clio-coder-test/plugin.json +1 -1
- package/library/skills/meta/clio-coder-test/references/test-map.md +19 -18
- package/library/skills/registry.yaml +2 -2
- package/library/skills/skill-marketplace.json +1 -1
- package/package.json +13 -11
- package/src/cli/argv.ts +31 -0
- package/src/cli/clio.ts +17 -13
- package/src/cli/config.ts +4 -0
- package/src/cli/docs.ts +65 -328
- package/src/cli/doctor-panes.ts +1 -1
- package/src/cli/doctor.ts +3 -1
- package/src/cli/index.ts +17 -2
- package/src/cli/mcp.ts +106 -0
- package/src/cli/skills-eval.ts +8 -2
- package/src/cli/trace.ts +4 -65
- package/src/cli/uninstall.ts +26 -0
- package/src/cli/upgrade.ts +34 -38
- package/src/cli/usage.ts +3 -0
- package/src/cli/verifiers.ts +1 -1
- package/src/cli/web.ts +79 -0
- package/src/core/bash-exec.ts +27 -4
- package/src/core/bus-events.ts +3 -4
- package/src/core/config.ts +73 -1
- package/src/core/defaults.ts +10 -1
- package/src/core/domain-loader.ts +37 -28
- 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 +16 -12
- package/src/core/tool-names.ts +33 -12
- package/src/domains/agents/contract.ts +1 -1
- package/src/domains/agents/extension.ts +18 -10
- package/src/domains/config/extension.ts +5 -4
- 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 +206 -26
- 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/index.ts +1 -0
- package/src/domains/dispatch/orphan-recovery.ts +1 -0
- package/src/domains/dispatch/receipt-findings.ts +3 -4
- package/src/domains/dispatch/receipt-integrity.ts +3 -0
- package/src/domains/dispatch/reservation-store.ts +7 -9
- package/src/domains/dispatch/route-facts.ts +1 -1
- package/src/domains/dispatch/state.ts +4 -5
- package/src/domains/dispatch/types.ts +3 -1
- package/src/domains/eval/metrics/tracked.ts +22 -2
- package/src/domains/evidence/build.ts +35 -7
- package/src/domains/extensions/operator-runtime.ts +3 -1
- 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/middleware/hooks.ts +2 -2
- 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/background-memory-usage.ts +3 -0
- package/src/domains/observability/compaction-usage.ts +2 -0
- package/src/domains/observability/contract.ts +7 -3
- package/src/domains/observability/cost.ts +5 -0
- package/src/domains/observability/evidence-index.ts +2 -2
- package/src/domains/observability/extension.ts +1 -0
- package/src/domains/observability/out-of-turn-usage.ts +2 -0
- package/src/domains/observability/projection.ts +10 -0
- package/src/domains/observability/trace-store.ts +65 -5
- package/src/domains/prompts/compiler.ts +41 -23
- package/src/domains/prompts/extension.ts +4 -17
- 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/cache-deployment.ts +147 -0
- package/src/domains/providers/catalog.ts +12 -7
- package/src/domains/providers/extension.ts +27 -5
- package/src/domains/providers/index.ts +6 -1
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
- package/src/domains/providers/plugins.ts +3 -13
- package/src/domains/providers/probe/http.ts +44 -59
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +4 -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/providers/types/target-descriptor.ts +17 -0
- 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 +29 -3
- 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/entries.ts +1 -0
- 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/domains/session/usage.ts +6 -7
- package/src/engine/acp/server.ts +11 -0
- package/src/engine/ai.ts +2 -0
- package/src/engine/apis/openai-completions.ts +17 -4
- package/src/engine/loop-guard.ts +7 -0
- package/src/engine/prewarm.ts +232 -0
- package/src/engine/provider-diagnostics.ts +6 -1
- 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 +38 -18
- package/src/interactive/chat-loop-messages.ts +3 -0
- package/src/interactive/chat-loop-policy.ts +1 -0
- package/src/interactive/chat-loop.ts +10 -12
- 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/prewarm.ts +11 -197
- 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/session-usage-reseed.ts +2 -0
- package/src/interactive/side-question.ts +2 -0
- 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-context.ts +1 -0
- package/src/interactive/turn-persistence.ts +9 -1
- package/src/interactive/turn-prewarm.ts +126 -19
- package/src/interactive/turn-recovery.ts +2 -1
- package/src/interactive/turn-runtime.ts +36 -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 +80 -11
- 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 +106 -8
- 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/src/worker/spec-contract.ts +27 -0
- package/dist/chunk-B6UM3OZC.js +0 -15
- package/dist/chunk-GJ24ODAX.js +0 -196
- package/dist/chunk-HRAKUPIH.js +0 -57
- package/dist/docs-BL7ROUFN.js +0 -292
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Accountability read model. A pure aggregation over the sidecar evidence index
|
|
3
3
|
* (see evidence-index.ts) that yields a rolling first-pass-success rate and a
|
|
4
4
|
* failure-cause tag histogram for the session. This is presentation-grade
|
|
5
|
-
* read-only data: it recomputes nothing, it only folds the rows
|
|
6
|
-
*
|
|
5
|
+
* read-only data: it recomputes nothing, it only folds the rows written
|
|
6
|
+
* when each dispatch run finalized. Those rows are
|
|
7
7
|
* forensic-derived and are the authority for user-visible first-pass-success
|
|
8
8
|
* rates. The receipt summary is the conservative integrity-covered snapshot,
|
|
9
9
|
* so a false receipt summary and a true forensic row is an intentional
|
|
@@ -27,6 +27,7 @@ export interface BackgroundMemoryStepUsage {
|
|
|
27
27
|
output: number;
|
|
28
28
|
cacheRead: number;
|
|
29
29
|
cacheWrite: number;
|
|
30
|
+
cacheWrite1h?: number;
|
|
30
31
|
reasoning: number;
|
|
31
32
|
totalTokens: number;
|
|
32
33
|
costUsd: number;
|
|
@@ -83,6 +84,7 @@ export function backgroundMemoryUsageRow(
|
|
|
83
84
|
output: usage.output,
|
|
84
85
|
cacheRead: usage.cacheRead,
|
|
85
86
|
cacheWrite: usage.cacheWrite,
|
|
87
|
+
...(usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: usage.cacheWrite1h }),
|
|
86
88
|
reasoning: usage.reasoning,
|
|
87
89
|
totalTokens: usage.totalTokens,
|
|
88
90
|
costUsd: usage.costUsd,
|
|
@@ -122,6 +124,7 @@ export function recordBackgroundMemoryStep(input: RecordBackgroundMemoryStepInpu
|
|
|
122
124
|
output: input.usage.output,
|
|
123
125
|
cacheRead: input.usage.cacheRead,
|
|
124
126
|
cacheWrite: input.usage.cacheWrite,
|
|
127
|
+
...(input.usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: input.usage.cacheWrite1h }),
|
|
125
128
|
reasoningTokens: input.usage.reasoning,
|
|
126
129
|
totalTokens: input.usage.totalTokens,
|
|
127
130
|
apiCalls: 1,
|
|
@@ -29,6 +29,7 @@ function observedUsage(call: CompactionCallObservation): OutOfTurnUsage {
|
|
|
29
29
|
output: reading(raw.output),
|
|
30
30
|
cacheRead: reading(raw.cacheRead),
|
|
31
31
|
cacheWrite: reading(raw.cacheWrite),
|
|
32
|
+
...(raw.cacheWrite1h === undefined ? {} : { cacheWrite1h: reading(raw.cacheWrite1h) }),
|
|
32
33
|
reasoning: reasoning !== null && reasoning > 0 ? reasoning : null,
|
|
33
34
|
totalTokens: reading(raw.totalTokens),
|
|
34
35
|
costUsd,
|
|
@@ -72,6 +73,7 @@ export function recordFailedCompactionCalls(
|
|
|
72
73
|
output: usage.output ?? 0,
|
|
73
74
|
cacheRead: usage.cacheRead ?? 0,
|
|
74
75
|
cacheWrite: usage.cacheWrite ?? 0,
|
|
76
|
+
...(typeof usage.cacheWrite1h === "number" ? { cacheWrite1h: usage.cacheWrite1h } : {}),
|
|
75
77
|
reasoningTokens: usage.reasoning ?? 0,
|
|
76
78
|
totalTokens: usage.totalTokens ?? 0,
|
|
77
79
|
apiCalls: 1,
|
|
@@ -76,6 +76,8 @@ export interface ObservabilityRunSummary {
|
|
|
76
76
|
contextWindow?: number;
|
|
77
77
|
lastContextTokens?: number;
|
|
78
78
|
progress?: WorkerProgressSnapshot;
|
|
79
|
+
/** Existing validator identity/conformance, admitted with the verified receipt answer. */
|
|
80
|
+
resultContract?: { kind: string; conformance: string };
|
|
79
81
|
receiptId?: string;
|
|
80
82
|
retry?: { attempt: number; dueAtMs: number; reason: string };
|
|
81
83
|
steerAcknowledgement?: { receivedAtMs: number; chars: number };
|
|
@@ -132,7 +134,9 @@ export interface ObservabilitySnapshot {
|
|
|
132
134
|
/** Runtime readers supplied after dispatch is composed, avoiding a domain dependency cycle. */
|
|
133
135
|
export interface ObservabilityRunReaders {
|
|
134
136
|
dispatchSnapshot?: () => DispatchSnapshot;
|
|
135
|
-
readReceipt?: (
|
|
137
|
+
readReceipt?: (
|
|
138
|
+
runId: string,
|
|
139
|
+
) => { text?: string; trust?: CanonicalTrustStatus; contractKind?: string; contract?: string } | null;
|
|
136
140
|
}
|
|
137
141
|
|
|
138
142
|
/** Run projection controls shared by the contract and the in-memory projection. */
|
|
@@ -160,8 +164,8 @@ export interface ObservabilityContract extends ObservabilityRunProjection {
|
|
|
160
164
|
/**
|
|
161
165
|
* Rolling first-pass-success rate, unverified successes, ungrounded claims,
|
|
162
166
|
* and failure-cause histogram, aggregated
|
|
163
|
-
* from the sidecar evidence index on call.
|
|
164
|
-
*
|
|
167
|
+
* from the sidecar evidence index on call. It folds rows written at dispatch
|
|
168
|
+
* completion and recomputes no evidence.
|
|
165
169
|
*/
|
|
166
170
|
accountability(): AccountabilitySummary;
|
|
167
171
|
/** Latest completed assistant stream throughput for compact footer display. */
|
|
@@ -127,6 +127,7 @@ export interface UsageBreakdown {
|
|
|
127
127
|
output: number;
|
|
128
128
|
cacheRead: number;
|
|
129
129
|
cacheWrite: number;
|
|
130
|
+
cacheWrite1h?: number;
|
|
130
131
|
reasoningTokens: number;
|
|
131
132
|
totalTokens: number;
|
|
132
133
|
apiCalls?: number;
|
|
@@ -151,6 +152,7 @@ export interface CostEntry {
|
|
|
151
152
|
output: number;
|
|
152
153
|
cacheRead: number;
|
|
153
154
|
cacheWrite: number;
|
|
155
|
+
cacheWrite1h?: number;
|
|
154
156
|
reasoningTokens: number;
|
|
155
157
|
apiCalls?: number;
|
|
156
158
|
/** Absent on an ordinary turn's call. */
|
|
@@ -215,6 +217,7 @@ export function createCostTracker(): CostTracker {
|
|
|
215
217
|
output,
|
|
216
218
|
cacheRead,
|
|
217
219
|
cacheWrite,
|
|
220
|
+
...(breakdown?.cacheWrite1h === undefined ? {} : { cacheWrite1h: breakdown.cacheWrite1h }),
|
|
218
221
|
reasoningTokens,
|
|
219
222
|
...(apiCalls !== undefined ? { apiCalls } : {}),
|
|
220
223
|
...(label !== undefined ? { label } : {}),
|
|
@@ -224,6 +227,7 @@ export function createCostTracker(): CostTracker {
|
|
|
224
227
|
totals.output += output;
|
|
225
228
|
totals.cacheRead += cacheRead;
|
|
226
229
|
totals.cacheWrite += cacheWrite;
|
|
230
|
+
if (breakdown?.cacheWrite1h !== undefined) totals.cacheWrite1h = (totals.cacheWrite1h ?? 0) + breakdown.cacheWrite1h;
|
|
227
231
|
totals.reasoningTokens += reasoningTokens;
|
|
228
232
|
totals.totalTokens += tokens;
|
|
229
233
|
return resolvedUsd;
|
|
@@ -247,6 +251,7 @@ export function createCostTracker(): CostTracker {
|
|
|
247
251
|
totals.output = 0;
|
|
248
252
|
totals.cacheRead = 0;
|
|
249
253
|
totals.cacheWrite = 0;
|
|
254
|
+
delete totals.cacheWrite1h;
|
|
250
255
|
totals.reasoningTokens = 0;
|
|
251
256
|
totals.totalTokens = 0;
|
|
252
257
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sidecar evidence index. A compact, append/merge-by-runId ledger written
|
|
3
3
|
* under `<stateDir>/evidence-index.json` whenever a dispatch run completes and
|
|
4
|
-
* the forensic evidence bundle is built (see extension.ts).
|
|
5
|
-
* to surface a rolling first-pass-success rate and a failure-cause histogram in
|
|
4
|
+
* the forensic evidence bundle is built (see extension.ts). The accountability
|
|
5
|
+
* read model uses this to surface a rolling first-pass-success rate and a failure-cause histogram in
|
|
6
6
|
* observability without re-running the heavy `buildEvidence` aggregator.
|
|
7
7
|
*
|
|
8
8
|
* The file is a JSON array kept as a bounded ring (newest rows win, capped at
|
|
@@ -64,6 +64,7 @@ function recordDispatchCost(
|
|
|
64
64
|
output: payload.outputTokenCount ?? 0,
|
|
65
65
|
cacheRead: payload.cacheReadTokenCount ?? 0,
|
|
66
66
|
cacheWrite: payload.cacheWriteTokenCount ?? 0,
|
|
67
|
+
...(payload.cacheWrite1hTokenCount === undefined ? {} : { cacheWrite1h: payload.cacheWrite1hTokenCount }),
|
|
67
68
|
reasoningTokens: payload.reasoningTokenCount ?? 0,
|
|
68
69
|
totalTokens: payload.tokenCount,
|
|
69
70
|
},
|
|
@@ -78,6 +78,7 @@ export interface OutOfTurnUsage {
|
|
|
78
78
|
output: number | null;
|
|
79
79
|
cacheRead: number | null;
|
|
80
80
|
cacheWrite: number | null;
|
|
81
|
+
cacheWrite1h?: number | null;
|
|
81
82
|
reasoning: number | null;
|
|
82
83
|
totalTokens: number | null;
|
|
83
84
|
costUsd: number | null;
|
|
@@ -253,6 +254,7 @@ function asOutOfTurnUsageRow(value: unknown): OutOfTurnUsageRow | null {
|
|
|
253
254
|
output: reading(usage.output),
|
|
254
255
|
cacheRead: reading(usage.cacheRead),
|
|
255
256
|
cacheWrite: reading(usage.cacheWrite),
|
|
257
|
+
...(usage.cacheWrite1h === undefined ? {} : { cacheWrite1h: nullableNumber(usage.cacheWrite1h) }),
|
|
256
258
|
reasoning: reading(usage.reasoning),
|
|
257
259
|
totalTokens: reading(usage.totalTokens),
|
|
258
260
|
costUsd: reading(usage.costUsd),
|
|
@@ -401,6 +401,7 @@ export function createObservabilityProjection(bus: SafeEventBus, deps: Projectio
|
|
|
401
401
|
function applyIdentity(summary: RunEntry, id: Partial<DispatchRunIdentity>): void {
|
|
402
402
|
// A lifecycle update must earn its trust again from the current receipt.
|
|
403
403
|
delete summary.trust;
|
|
404
|
+
delete summary.resultContract;
|
|
404
405
|
if (typeof id.agentId === "string" && id.agentId.length > 0) summary.agentId = id.agentId;
|
|
405
406
|
if (typeof id.targetId === "string" && id.targetId.length > 0) summary.targetId = id.targetId;
|
|
406
407
|
if (typeof id.wireModelId === "string" && id.wireModelId.length > 0) summary.modelId = id.wireModelId;
|
|
@@ -459,11 +460,20 @@ export function createObservabilityProjection(bus: SafeEventBus, deps: Projectio
|
|
|
459
460
|
}
|
|
460
461
|
|
|
461
462
|
function settleFromReceipt(summary: RunEntry): void {
|
|
463
|
+
delete summary.resultContract;
|
|
462
464
|
try {
|
|
463
465
|
const facts = runReaders.readReceipt?.(summary.runId);
|
|
464
466
|
// A failed or retired seal cannot supply the board's terminal answer.
|
|
465
467
|
const text = facts?.trust?.artifactIntegrity.state === "verified" ? facts.text : undefined;
|
|
466
468
|
summary.progressFold.settle(typeof text === "string" && text.trim().length > 0 ? text : undefined);
|
|
469
|
+
if (
|
|
470
|
+
typeof text === "string" &&
|
|
471
|
+
text.trim().length > 0 &&
|
|
472
|
+
typeof facts?.contractKind === "string" &&
|
|
473
|
+
typeof facts.contract === "string"
|
|
474
|
+
) {
|
|
475
|
+
summary.resultContract = { kind: facts.contractKind, conformance: facts.contract };
|
|
476
|
+
}
|
|
467
477
|
if (facts?.trust !== undefined) summary.trust = summarizeTrustStatus(facts.trust);
|
|
468
478
|
} catch {
|
|
469
479
|
summary.progressFold.settle();
|
|
@@ -202,6 +202,7 @@ export interface TraceSpendInput {
|
|
|
202
202
|
outputTokens: number;
|
|
203
203
|
cacheReadTokens: number;
|
|
204
204
|
cacheWriteTokens: number;
|
|
205
|
+
cacheWrite1hTokens?: number;
|
|
205
206
|
reasoningTokens: number;
|
|
206
207
|
totalTokens: number;
|
|
207
208
|
inputCostUsd?: number | null;
|
|
@@ -234,6 +235,7 @@ export interface SessionTurnUsage {
|
|
|
234
235
|
outputTokens: number;
|
|
235
236
|
cacheReadTokens: number;
|
|
236
237
|
cacheWriteTokens: number;
|
|
238
|
+
cacheWrite1hTokens?: number;
|
|
237
239
|
reasoningTokens: number;
|
|
238
240
|
totalTokens: number;
|
|
239
241
|
costUsd?: number | null;
|
|
@@ -363,6 +365,7 @@ export interface TracePhaseRow {
|
|
|
363
365
|
output_tokens: number | null;
|
|
364
366
|
cache_read_tokens: number | null;
|
|
365
367
|
cache_write_tokens: number | null;
|
|
368
|
+
cache_write_1h_tokens?: number | null;
|
|
366
369
|
reasoning_tokens: number | null;
|
|
367
370
|
total_tokens: number | null;
|
|
368
371
|
input_cost_usd: number | null;
|
|
@@ -443,7 +446,7 @@ CREATE TABLE phases (
|
|
|
443
446
|
error TEXT,
|
|
444
447
|
started_at TEXT,
|
|
445
448
|
ended_at TEXT,
|
|
446
|
-
input_tokens INTEGER, output_tokens INTEGER, cache_read_tokens INTEGER, cache_write_tokens INTEGER,
|
|
449
|
+
input_tokens INTEGER, output_tokens INTEGER, cache_read_tokens INTEGER, cache_write_tokens INTEGER, cache_write_1h_tokens INTEGER,
|
|
447
450
|
reasoning_tokens INTEGER, total_tokens INTEGER,
|
|
448
451
|
input_cost_usd REAL, output_cost_usd REAL, cache_read_cost_usd REAL, cache_write_cost_usd REAL,
|
|
449
452
|
total_cost_usd REAL,
|
|
@@ -544,6 +547,13 @@ function ensureRunSourceColumn(db: DatabaseSync): void {
|
|
|
544
547
|
db.prepare("UPDATE runs SET source = 'session' WHERE assignment_id = ?").run(SESSION_TRACE_ASSIGNMENT_ID);
|
|
545
548
|
}
|
|
546
549
|
|
|
550
|
+
/** Missing lifetime detail stays NULL in older traces; it cannot be reconstructed. */
|
|
551
|
+
function ensureCacheWriteLifetimeColumn(db: DatabaseSync): void {
|
|
552
|
+
const columns = db.prepare("PRAGMA table_info(phases)").all() as { name: string }[];
|
|
553
|
+
if (!columns.some((column) => column.name === "cache_write_1h_tokens"))
|
|
554
|
+
db.exec("ALTER TABLE phases ADD COLUMN cache_write_1h_tokens INTEGER;");
|
|
555
|
+
}
|
|
556
|
+
|
|
547
557
|
/**
|
|
548
558
|
* Finalize `running` rows whose recorded owner is on this host and provably
|
|
549
559
|
* dead (pid gone, or alive under a different birth token, i.e. reused). Rows
|
|
@@ -591,6 +601,7 @@ export class TraceStore {
|
|
|
591
601
|
this.transaction(() => {
|
|
592
602
|
ensureProcessOwnerColumns(this.db);
|
|
593
603
|
ensureRunSourceColumn(this.db);
|
|
604
|
+
ensureCacheWriteLifetimeColumn(this.db);
|
|
594
605
|
reconcileAbandonedRuns(this.db);
|
|
595
606
|
});
|
|
596
607
|
}
|
|
@@ -799,7 +810,7 @@ export class TraceStore {
|
|
|
799
810
|
recordSpend(input: TraceSpendInput): void {
|
|
800
811
|
this.transaction(() => {
|
|
801
812
|
this.db
|
|
802
|
-
.prepare(`UPDATE phases SET input_tokens=?, output_tokens=?, cache_read_tokens=?, cache_write_tokens=?,
|
|
813
|
+
.prepare(`UPDATE phases SET input_tokens=?, output_tokens=?, cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?,
|
|
803
814
|
reasoning_tokens=?, total_tokens=?, input_cost_usd=?, output_cost_usd=?, cache_read_cost_usd=?,
|
|
804
815
|
cache_write_cost_usd=?, total_cost_usd=?, context_tokens=?, context_window=? WHERE phase_id=? AND run_id=?`)
|
|
805
816
|
.run(
|
|
@@ -807,6 +818,7 @@ export class TraceStore {
|
|
|
807
818
|
input.outputTokens,
|
|
808
819
|
input.cacheReadTokens,
|
|
809
820
|
input.cacheWriteTokens,
|
|
821
|
+
input.cacheWrite1hTokens ?? null,
|
|
810
822
|
input.reasoningTokens,
|
|
811
823
|
input.totalTokens,
|
|
812
824
|
input.inputCostUsd ?? null,
|
|
@@ -982,7 +994,7 @@ export class TraceStore {
|
|
|
982
994
|
);
|
|
983
995
|
this.db
|
|
984
996
|
.prepare(`UPDATE phases SET status=?, attempt=?, retries=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
|
|
985
|
-
cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
|
|
997
|
+
cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
|
|
986
998
|
WHERE phase_id=?`)
|
|
987
999
|
.run(
|
|
988
1000
|
success ? "success" : "fail",
|
|
@@ -994,6 +1006,7 @@ export class TraceStore {
|
|
|
994
1006
|
input.outputTokenCount ?? null,
|
|
995
1007
|
input.cacheReadTokenCount ?? null,
|
|
996
1008
|
input.cacheWriteTokenCount ?? null,
|
|
1009
|
+
input.cacheWrite1hTokenCount ?? null,
|
|
997
1010
|
input.reasoningTokenCount ?? null,
|
|
998
1011
|
input.tokenCount ?? null,
|
|
999
1012
|
input.costUsd ?? null,
|
|
@@ -1113,7 +1126,7 @@ export class TraceStore {
|
|
|
1113
1126
|
.run(input.status, input.at, usage?.totalTokens ?? null, usage?.costUsd ?? null, input.runId);
|
|
1114
1127
|
this.db
|
|
1115
1128
|
.prepare(`UPDATE phases SET status=?, ended_at=?, error=?, input_tokens=?, output_tokens=?,
|
|
1116
|
-
cache_read_tokens=?, cache_write_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
|
|
1129
|
+
cache_read_tokens=?, cache_write_tokens=?, cache_write_1h_tokens=?, reasoning_tokens=?, total_tokens=?, total_cost_usd=?
|
|
1117
1130
|
WHERE phase_id=?`)
|
|
1118
1131
|
.run(
|
|
1119
1132
|
input.status,
|
|
@@ -1123,6 +1136,7 @@ export class TraceStore {
|
|
|
1123
1136
|
usage?.outputTokens ?? null,
|
|
1124
1137
|
usage?.cacheReadTokens ?? null,
|
|
1125
1138
|
usage?.cacheWriteTokens ?? null,
|
|
1139
|
+
usage?.cacheWrite1hTokens ?? null,
|
|
1126
1140
|
usage?.reasoningTokens ?? null,
|
|
1127
1141
|
usage?.totalTokens ?? null,
|
|
1128
1142
|
usage?.costUsd ?? null,
|
|
@@ -1186,13 +1200,24 @@ function traceDatabaseFootprintBytes(path: string): number {
|
|
|
1186
1200
|
return total;
|
|
1187
1201
|
}
|
|
1188
1202
|
|
|
1203
|
+
export interface TraceRunCursor {
|
|
1204
|
+
startedAt: string;
|
|
1205
|
+
runId: string;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
export interface TraceRunsPageOptions {
|
|
1209
|
+
before?: TraceRunCursor;
|
|
1210
|
+
limit?: number;
|
|
1211
|
+
filter?: { source?: TraceRunRow["source"]; status?: TraceRunRow["status"]; q?: string };
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1189
1214
|
export class TraceReader {
|
|
1190
1215
|
readonly db: DatabaseSync;
|
|
1191
1216
|
/**
|
|
1192
1217
|
* `runs.source` is an additive column (see ensureRunSourceColumn) a
|
|
1193
1218
|
* TraceStore writer backfills in place. A read-only reader can open a
|
|
1194
1219
|
* database no writer has touched since before the column existed — the
|
|
1195
|
-
*
|
|
1220
|
+
* web application opening a dormant install's trace.sqlite fresh is the
|
|
1196
1221
|
* realistic case — and cannot ALTER TABLE to fix that itself, so it
|
|
1197
1222
|
* derives the same value the migration would have written instead.
|
|
1198
1223
|
*/
|
|
@@ -1223,6 +1248,40 @@ export class TraceReader {
|
|
|
1223
1248
|
.all(clampInt(limit, 1, 500)) as unknown as TraceRunRow[];
|
|
1224
1249
|
}
|
|
1225
1250
|
|
|
1251
|
+
/** Stable keyset pagination, including read-only databases predating runs.source. */
|
|
1252
|
+
runsPage({ before, limit = 50, filter = {} }: TraceRunsPageOptions = {}): {
|
|
1253
|
+
runs: TraceRunRow[];
|
|
1254
|
+
nextBefore: TraceRunCursor | null;
|
|
1255
|
+
} {
|
|
1256
|
+
const size = clampInt(limit, 1, 500);
|
|
1257
|
+
const where: string[] = [],
|
|
1258
|
+
args: SQLInputValue[] = [];
|
|
1259
|
+
if (before) {
|
|
1260
|
+
where.push("(started_at < ? OR (started_at = ? AND run_id < ?))");
|
|
1261
|
+
args.push(before.startedAt, before.startedAt, before.runId);
|
|
1262
|
+
}
|
|
1263
|
+
if (filter.source) {
|
|
1264
|
+
where.push("source = ?");
|
|
1265
|
+
args.push(filter.source);
|
|
1266
|
+
}
|
|
1267
|
+
if (filter.status) {
|
|
1268
|
+
where.push("status = ?");
|
|
1269
|
+
args.push(filter.status);
|
|
1270
|
+
}
|
|
1271
|
+
if (filter.q) {
|
|
1272
|
+
where.push("(run_id LIKE ? OR agent LIKE ? OR model LIKE ? OR status LIKE ? OR request LIKE ?)");
|
|
1273
|
+
args.push(...Array<string>(5).fill(`%${filter.q}%`));
|
|
1274
|
+
}
|
|
1275
|
+
const rows = this.db
|
|
1276
|
+
.prepare(
|
|
1277
|
+
`SELECT * FROM (SELECT ${this.runsSourceExpr} FROM runs) ${where.length ? `WHERE ${where.join(" AND ")}` : ""} ORDER BY started_at DESC, run_id DESC LIMIT ?`,
|
|
1278
|
+
)
|
|
1279
|
+
.all(...args, size + 1) as unknown as TraceRunRow[];
|
|
1280
|
+
const runs = rows.slice(0, size),
|
|
1281
|
+
last = runs.at(-1);
|
|
1282
|
+
return { runs, nextBefore: rows.length > size && last ? { startedAt: last.started_at, runId: last.run_id } : null };
|
|
1283
|
+
}
|
|
1284
|
+
|
|
1226
1285
|
run(runId: string): TraceRunRow | null {
|
|
1227
1286
|
return (
|
|
1228
1287
|
(this.db.prepare(`SELECT ${this.runsSourceExpr} FROM runs WHERE run_id=?`).get(runId) as unknown as
|
|
@@ -1567,6 +1626,7 @@ function terminalUsage(input: DispatchCompletedPayload | DispatchFailedPayload):
|
|
|
1567
1626
|
output: input.outputTokenCount ?? 0,
|
|
1568
1627
|
cache_read: input.cacheReadTokenCount ?? 0,
|
|
1569
1628
|
cache_write: input.cacheWriteTokenCount ?? 0,
|
|
1629
|
+
...(input.cacheWrite1hTokenCount === undefined ? {} : { cache_write_1h: input.cacheWrite1hTokenCount }),
|
|
1570
1630
|
reasoning_tokens: input.reasoningTokenCount ?? 0,
|
|
1571
1631
|
total_tokens: input.tokenCount,
|
|
1572
1632
|
};
|
|
@@ -4,7 +4,8 @@ import { normalizePromptHint } from "../../core/prompt-hint.js";
|
|
|
4
4
|
import type { ToolName } from "../../core/tool-names.js";
|
|
5
5
|
import { TOOL_RESULT_TRUST_CONTRACT } from "../../core/untrusted-content.js";
|
|
6
6
|
import { resolveClioDirs } from "../../core/xdg.js";
|
|
7
|
-
import
|
|
7
|
+
import { directSurfaceNames } from "../../tools/surface.js";
|
|
8
|
+
import { type AutonomyLevel, isAutonomyLevel, modelMayActivateSkills } from "../safety/autonomy.js";
|
|
8
9
|
import { ceilChars } from "../session/context-accounting.js";
|
|
9
10
|
import type { FragmentTable, LoadedFragment } from "./fragment-loader.js";
|
|
10
11
|
import { sha256 } from "./hash.js";
|
|
@@ -235,10 +236,9 @@ function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
|
|
|
235
236
|
}
|
|
236
237
|
|
|
237
238
|
/**
|
|
238
|
-
* Whether `context` is on the session's surface. The Skills passage
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
* `context` is there to be called.
|
|
239
|
+
* Whether `context` is on the session's surface. The Skills passage and the
|
|
240
|
+
* Tool Contract's skills clause follow the same rule as dispatch: text that
|
|
241
|
+
* teaches a call to `context` renders only when `context` is there to be called.
|
|
242
242
|
*/
|
|
243
243
|
function sessionHasContext(inputs: SessionPromptInputs): boolean {
|
|
244
244
|
if (inputs.providerSupportsTools === false) return false;
|
|
@@ -290,15 +290,20 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
|
290
290
|
"This target cannot call tools; answer from the visible user request and compact context only.",
|
|
291
291
|
].join("\n");
|
|
292
292
|
}
|
|
293
|
-
const
|
|
293
|
+
const capabilityNames = [
|
|
294
294
|
...new Set((inputs.toolNames ?? []).map((name) => name.trim()).filter((name) => name.length > 0)),
|
|
295
295
|
].sort();
|
|
296
|
+
// A worker's admitted list names capabilities behind the gateway (git,
|
|
297
|
+
// web_fetch, an extension command); the attached schemas are their direct
|
|
298
|
+
// projection, with `gateway` standing in for every capability it reaches.
|
|
299
|
+
const names = directSurfaceNames(capabilityNames).sort();
|
|
296
300
|
const canDispatch = sessionCanDispatch(inputs);
|
|
297
301
|
const canListSkills = sessionHasContext(inputs);
|
|
298
302
|
// Asked twice in one session which tools it had, a live model gave two
|
|
299
303
|
// different answers and invented `web_find`. The authoritative list is one
|
|
300
304
|
// line above; pointing at it beats letting the model recall the schemas.
|
|
301
305
|
const admitted = new Set(names);
|
|
306
|
+
const hasGateway = admitted.has("gateway");
|
|
302
307
|
const inventoryGuidance = [
|
|
303
308
|
"When asked what tools you have, copy the Direct tools line verbatim and call nothing",
|
|
304
309
|
...(canDispatch
|
|
@@ -306,15 +311,23 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
|
306
311
|
"dispatch(list:true) answers a question about agents, the fleet, or which target and model run this session and its workers",
|
|
307
312
|
]
|
|
308
313
|
: []),
|
|
309
|
-
...(canListSkills ? ['context(scope="skills")
|
|
314
|
+
...(canListSkills ? ['context(scope="skills") lists skills for discovery or skill questions'] : []),
|
|
315
|
+
...(hasGateway ? ['gateway(op="find") answers a question about secondary capabilities'] : []),
|
|
310
316
|
].join("; ");
|
|
311
317
|
const capabilityKinds = [
|
|
312
318
|
"direct tools are attached schemas",
|
|
319
|
+
...(hasGateway ? ["secondary capabilities are reached through gateway find, describe, and call"] : []),
|
|
313
320
|
...(canDispatch ? ["fleet agents are workers behind dispatch"] : []),
|
|
314
|
-
...(canListSkills ? ["skills are
|
|
321
|
+
...(canListSkills ? ["skills are workflows reached through context"] : []),
|
|
315
322
|
];
|
|
316
323
|
const orientationTools = ["context", "code_nav", "grep", "read"].filter((name) => admitted.has(name));
|
|
317
|
-
|
|
324
|
+
// git sits behind the gateway, so it validates through gateway(call git)
|
|
325
|
+
// whenever the gateway is attached; a registry that placed it direct still
|
|
326
|
+
// names it plainly.
|
|
327
|
+
const validationTools = [
|
|
328
|
+
...(admitted.has("verify") ? ["verify"] : []),
|
|
329
|
+
...(admitted.has("git") ? ["git diff"] : hasGateway ? ['gateway(op="call", capability="git") diff'] : []),
|
|
330
|
+
];
|
|
318
331
|
const lines = [
|
|
319
332
|
"# Tool Contract",
|
|
320
333
|
TOOL_RESULT_TRUST_CONTRACT,
|
|
@@ -333,17 +346,15 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
|
333
346
|
`For narrow file or symbol orientation, prefer ${orientationTools.join(", ")} instead of assuming source-tree details were preloaded.`,
|
|
334
347
|
]
|
|
335
348
|
: []),
|
|
336
|
-
...(validationTools.length > 0
|
|
337
|
-
|
|
338
|
-
`Validate with ${validationTools.map((name) => (name === "git" ? "git diff" : name)).join(" or ")} before final claims.`,
|
|
339
|
-
]
|
|
340
|
-
: []),
|
|
341
|
-
`When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema and adjust the arguments${canListSkills ? ', or query context(scope="docs") for that tool\'s usage' : ""}.`,
|
|
349
|
+
...(validationTools.length > 0 ? [`Validate with ${validationTools.join(" or ")} before final claims.`] : []),
|
|
350
|
+
`When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema and adjust the arguments${hasGateway ? ', or read that tool\'s usage with gateway(op="call", capability="clio_docs", args={query})' : ""}.`,
|
|
342
351
|
];
|
|
343
352
|
// One hint per tool, sorted by tool name: deterministic bytes regardless
|
|
344
353
|
// of surface or registration order, and removing a tool from the surface
|
|
345
|
-
// removes its hint with no compiler edit.
|
|
346
|
-
|
|
354
|
+
// removes its hint with no compiler edit. A capability reached through the
|
|
355
|
+
// gateway keeps its hint: the guidance is about the capability, not the
|
|
356
|
+
// schema that carries it.
|
|
357
|
+
const hints = canonicalToolPromptHints(inputs.toolPromptHints ?? [], new Set([...capabilityNames, ...names]));
|
|
347
358
|
for (const entry of hints) {
|
|
348
359
|
lines.push(entry.hint);
|
|
349
360
|
}
|
|
@@ -411,7 +422,7 @@ function renderWorkerToolContractBlock(inputs: WorkerPromptInputs): string {
|
|
|
411
422
|
TOOL_RESULT_TRUST_CONTRACT,
|
|
412
423
|
"The attached schemas are this worker's complete canonical tool surface; follow each schema exactly.",
|
|
413
424
|
`Admitted canonical tools: ${names.map((name) => `\`${name}\``).join(", ")}.`,
|
|
414
|
-
"This worker surface is distinct from the parent session's tools, fleet agents, and
|
|
425
|
+
"This worker surface is distinct from the parent session's tools, fleet agents, and skills.",
|
|
415
426
|
"Tool authority is limited to this list. Persona and bound-skill instructions never add tools.",
|
|
416
427
|
"Call tools only for concrete inspection or changes the assigned task requires. If the task requests an exact or tool-free response, answer without calling tools.",
|
|
417
428
|
];
|
|
@@ -578,10 +589,13 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
|
|
|
578
589
|
|
|
579
590
|
let identityBody = identity.body;
|
|
580
591
|
const selfAwareness = identity.id === "identity.clio" ? table.byId.get("identity.self-awareness") : undefined;
|
|
581
|
-
// The routing directive teaches a call
|
|
582
|
-
//
|
|
583
|
-
// the code-outranks-docs rule name no tool and stay unconditional.
|
|
584
|
-
const docsRouting =
|
|
592
|
+
// The routing directive teaches a gateway call, so it renders only when
|
|
593
|
+
// gateway is on the surface and the provider supports tool calls. The paths
|
|
594
|
+
// and the code-outranks-docs rule name no tool and stay unconditional.
|
|
595
|
+
const docsRouting =
|
|
596
|
+
selfAwareness && session.providerSupportsTools !== false && toolSurfaceHasTool(session.toolNames, "gateway")
|
|
597
|
+
? table.byId.get("identity.docs-routing")
|
|
598
|
+
: undefined;
|
|
585
599
|
if (selfAwareness) {
|
|
586
600
|
const packageRoot = resolvePackageRoot();
|
|
587
601
|
// The live home, not the XDG default: an isolated CLIO_CODER_HOME or a
|
|
@@ -602,13 +616,17 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
|
|
|
602
616
|
// about a tool renders only when the tool is there to be called.
|
|
603
617
|
const delegation = sessionCanDispatch(session) ? table.byId.get("operating.delegation") : undefined;
|
|
604
618
|
const skills = sessionHasContext(session) ? table.byId.get("operating.skills") : undefined;
|
|
619
|
+
const skillActivation =
|
|
620
|
+
isAutonomyLevel(autonomyLevel) && modelMayActivateSkills(autonomyLevel)
|
|
621
|
+
? 'Load matching installed skills with context(scope="skills", name="<name>") and continue the task; skill restrictions still apply.'
|
|
622
|
+
: "Suggest matching skills as /skill <name> (in order when several compose), then continue without them; only the operator activates skills.";
|
|
605
623
|
|
|
606
624
|
const legacy = inputs.sectionOrder === "legacy-0.3.8";
|
|
607
625
|
const rendered = new Map<string, string>([
|
|
608
626
|
["identity", identityBody],
|
|
609
627
|
["operating-contract", operatingContract.body],
|
|
610
628
|
["delegation", delegation?.body ?? ""],
|
|
611
|
-
["skills", skills?.body ?? ""],
|
|
629
|
+
["skills", skills?.body.replace("{SKILL_ACTIVATION_POLICY}", skillActivation) ?? ""],
|
|
612
630
|
["safety", renderSafetySection(safety, autonomyLevel)],
|
|
613
631
|
["runtime", renderRuntimeBlock(session)],
|
|
614
632
|
["tool-contract", renderToolContractBlock(session)],
|
|
@@ -205,7 +205,7 @@ export function createPromptsBundle(
|
|
|
205
205
|
|
|
206
206
|
let unsubscribeContextSources: (() => void) | null = null;
|
|
207
207
|
let unsubscribeHotReload: (() => void) | null = null;
|
|
208
|
-
let
|
|
208
|
+
let unsubscribePluginsReload: (() => void) | null = null;
|
|
209
209
|
const extension: DomainExtension = {
|
|
210
210
|
async start() {
|
|
211
211
|
try {
|
|
@@ -226,28 +226,15 @@ export function createPromptsBundle(
|
|
|
226
226
|
if (!diffTouchesFragments(paths)) return;
|
|
227
227
|
reload();
|
|
228
228
|
});
|
|
229
|
-
|
|
230
|
-
// resources domain; a committed generation with new content means
|
|
231
|
-
// the table must be rebuilt from the new roots.
|
|
232
|
-
const onResourceReload = (payload: unknown) => {
|
|
233
|
-
if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
|
|
234
|
-
reload();
|
|
235
|
-
};
|
|
236
|
-
const unsubscribe = [
|
|
237
|
-
context.bus.on(BusChannels.ExtensionsReloaded, onResourceReload),
|
|
238
|
-
context.bus.on(BusChannels.PluginsReloaded, () => reload()),
|
|
239
|
-
];
|
|
240
|
-
unsubscribeExtensionsReload = () => {
|
|
241
|
-
for (const stop of unsubscribe) stop();
|
|
242
|
-
};
|
|
229
|
+
unsubscribePluginsReload = context.bus.on(BusChannels.PluginsReloaded, () => reload());
|
|
243
230
|
},
|
|
244
231
|
async stop() {
|
|
245
232
|
unsubscribeContextSources?.();
|
|
246
233
|
unsubscribeContextSources = null;
|
|
247
234
|
unsubscribeHotReload?.();
|
|
248
235
|
unsubscribeHotReload = null;
|
|
249
|
-
|
|
250
|
-
|
|
236
|
+
unsubscribePluginsReload?.();
|
|
237
|
+
unsubscribePluginsReload = null;
|
|
251
238
|
sessionSourceSnapshots.clear();
|
|
252
239
|
},
|
|
253
240
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: identity.docs-routing
|
|
3
3
|
version: 1
|
|
4
|
-
description:
|
|
4
|
+
description: Questions about Clio herself go through gateway(op="call", capability="clio_docs"); this directive renders only when gateway is on the surface and provider tool calls are available.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Clio documentation routing
|
|
8
8
|
|
|
9
|
-
For a question about Clio herself, call
|
|
9
|
+
For a question about Clio herself, call gateway(op="call", capability="clio_docs", args={query: <the question>}) before answering and before any workspace search, then read the document it names from the installed documentation path above.
|
|
@@ -6,14 +6,16 @@ description: Coordinator skill suggestion discipline; rendered only when context
|
|
|
6
6
|
|
|
7
7
|
# Skills
|
|
8
8
|
|
|
9
|
-
Skills are
|
|
10
|
-
|
|
9
|
+
Skills are workflows for git delivery, planning, coding practice,
|
|
10
|
+
context priming/handoff, research, and plan stress-testing.
|
|
11
11
|
context (scope="skills") lists installed and marketplace skills; never
|
|
12
|
-
guess
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
guess a skill or search the repository for one.
|
|
13
|
+
{SKILL_ACTIVATION_POLICY}
|
|
14
|
+
Only the operator installs marketplace skills; a [Marketplace] reminder
|
|
15
|
+
states its own offer options. When the operator names a skill or asks
|
|
16
|
+
how it works, answer from it. If nothing fits, suggest none.
|
|
17
|
+
|
|
18
|
+
If gateway is on the attached direct-tool surface, use
|
|
19
|
+
gateway(op="call", capability="clio_library", args={}) to read the catalog
|
|
20
|
+
of recipes and installable packages; it activates and installs nothing.
|
|
21
|
+
Without gateway, this catalog route is unavailable.
|