@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
package/docs/guide/tool-usage.md
CHANGED
|
@@ -1,20 +1,44 @@
|
|
|
1
1
|
# Tool Usage Reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> [Tool Usage Reference visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/tool_usage_blueprint.html).
|
|
5
|
-
|
|
6
|
-
This is the deep usage reference behind the deliberately terse tool descriptions in the prompt envelope. Toolkit v2 keeps rich guidance out of tool descriptions and puts it here, where `context(scope="docs", query=...)` retrieves it section by section. Each tool below has its own self-contained `##` section covering the argument surface, defaults, truncation and continuation behavior, and concrete calls. Source of truth is `src/tools/`.
|
|
3
|
+
This is the deep usage reference behind the deliberately terse tool descriptions in the prompt envelope. Toolkit v2 keeps rich guidance out of tool descriptions and puts it here, where `gateway(op="call", capability="clio_docs", args={query: ...})` retrieves it section by section. Each tool below has its own self-contained `##` section covering the argument surface, defaults, truncation and continuation behavior, and concrete calls. Source of truth is `src/tools/`.
|
|
7
4
|
|
|
8
5
|
In the current source tree, `src/tools/agent-tools.ts` serves as the single agent-tool adapter across both orchestrator and worker runtimes. Both surfaces resolve their executable tools through the exact same `effectiveToolNames` narrowing, ensuring that attested tool schemas never drift from the tools available at runtime. Tools are keyed strictly by the `ToolName` union with no alias table. Argument leniency for weak-model callers is provided exclusively by per-tool `prepareArguments` normalizers declared on `ToolSpec`.
|
|
9
6
|
|
|
7
|
+
## gateway: discover and call secondary capabilities
|
|
8
|
+
|
|
9
|
+
One direct tool exposes `op="find"|"describe"|"call"`, optional `query`, `capability`, and `args`. Source: `src/tools/gateway/index.ts`. `find` filters names and descriptions case-insensitively and returns at most 300 capability rows within a 32 KiB observation allowance, with `name`, `kind` (`builtin`, `extension`, `mcp`), description, and action class. `describe` returns the full description, wire parameter schema, and authority notes. `call` validates `args` and invokes the capability through the registry under its own authority. Direct tools cannot be called through the gateway.
|
|
10
|
+
|
|
11
|
+
| Placement | Capabilities |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| Direct | read, write, edit, bash, grep, find, ls, context, code_nav, verify, run_script, gateway |
|
|
14
|
+
| Direct, subject to dependency wiring | dispatch, monitor, steer, tasks, ledger, panes, limitation, decide, ask_user |
|
|
15
|
+
| Gateway | artifact, web_read, web_fetch, git, evidence, credential_present, clio_docs, clio_library, data |
|
|
16
|
+
| Gateway, when installed or trusted | `extension_<id>__<name>`, `mcp_<id>__<tool>` |
|
|
17
|
+
|
|
18
|
+
Placement is defined by `src/tools/surface.ts`. The gateway does not grant additional permission. Inner admission preserves safety policy, skill restrictions, approvals, action class, cancellation, result shaping, and evidence. The outer call is counted once; `details.capability` lets ledger consumers recover the underlying tool. A gateway artifact preserves its terminal result and completes the turn. Native workers whose recipe names a gateway capability attach and attest `gateway`, while the admitted capability list still limits find, describe, and call. Worker registries do not receive an MCP source in this release.
|
|
19
|
+
|
|
20
|
+
Trusted local stdio MCP servers connect lazily. `find` discovers trusted servers; `describe` or `call` connects only the owning server. Untrusted project servers are listed with the `clio-coder mcp trust <id>` or `/mcp trust <id>` remedy and are never launched. Cancelling discovery closes the shared connection, fails other waiters, and does not restart it silently during that session. See [MCP configuration](configuration-reference.md#local-stdio-mcp-configuration-and-trust).
|
|
21
|
+
|
|
22
|
+
When server IDs contain `__`, the longest declared server prefix owns the capability name, regardless of discovery order or trust status. For servers `a` and `a__b`, `mcp_a__b__echo` belongs to `a__b`; server `a` cannot register its own `b__echo` tool under that name and reports it as unregistrable. Rename the conflicting server or tool to expose both.
|
|
23
|
+
|
|
24
|
+
MCP call results require a content array, an optional boolean `isError`, and an optional object `structuredContent`; malformed envelopes fail as protocol errors. One MCP call result is bounded to 16 KiB (16,384 bytes) in the model context envelope; larger results are stored as external artifacts and replaced with a preview and pointer.
|
|
25
|
+
|
|
26
|
+
Results with an empty content array and structured content render that object as bounded JSON text for the model, with truncation reported explicitly. Numeric source tokens are preserved, including large integers, long decimals, overflowing exponents, and negative zero. Evidence retains normalized `structuredContentJson` with those tokens under the incoming-line cap; in the JSON-safe `structuredContent` object, numbers that do not round-trip through JavaScript use `{"$literal":"<source token>"}`. Whitespace and object-key formatting are normalized; this is not a byte-for-byte wire archive.
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
gateway(op="find", query="data")
|
|
30
|
+
gateway(op="describe", capability="data")
|
|
31
|
+
gateway(op="call", capability="data", args={op: "inspect", path: "results.csv"})
|
|
32
|
+
```
|
|
33
|
+
|
|
10
34
|
## Observation envelope: truncation notices, offload, next hints, and the turn budget
|
|
11
35
|
|
|
12
|
-
The
|
|
13
|
-
context) share one result envelope, implemented in `src/tools/observation.ts`.
|
|
36
|
+
The envelope-backed OBSERVE tools (`read`, `grep`, `find`, `ls`, `code_nav`,
|
|
37
|
+
`context`, `clio_docs`, `clio_library`, and `data`) and `gateway` find listings share one result envelope, implemented in `src/tools/observation.ts`.
|
|
14
38
|
The OBSERVE policy plane also contains `credential_present`, whose deliberately
|
|
15
39
|
minimal result does not use that envelope.
|
|
16
40
|
|
|
17
|
-
Per-call byte caps: read 50KB (`safety.limits.readBytesPerCall`), grep 16KB for mode=content and 8KB for mode=files/count, find 8KB, ls 8KB, code_nav 16KB,
|
|
41
|
+
Per-call byte caps: read 50KB (`safety.limits.readBytesPerCall`), grep 16KB for mode=content and 8KB for mode=files/count, find 8KB, ls 8KB, code_nav 16KB, `clio_docs` and `clio_library` 16KB, `context` 50KB for skills/workspace, `data` 32KiB, and `gateway` find 32KiB.
|
|
18
42
|
|
|
19
43
|
Truncated text results append exactly one notice line:
|
|
20
44
|
|
|
@@ -26,9 +50,9 @@ Segments that do not apply are omitted. `<total>` renders as `N+` when the searc
|
|
|
26
50
|
|
|
27
51
|
Offload: when the byte cap cut content that was already collected, the complete rendering is written to `<clio-coder state dir>/scratch/<sessionId>/<sha256 of the captured text>.txt` and the notice's `full:` segment names the path. Read it with `read` using offset/limit. Tools offload only when the byte cap cut collected content; a bare item-limit truncation continues via `next` and does not offload. `read` never offloads, because the source file is directly re-addressable via `offset`.
|
|
28
52
|
|
|
29
|
-
JSON-format results (code_nav, context
|
|
53
|
+
JSON-format results (including code_nav, context workspace, clio_docs, data, and gateway find) never get an appended notice. An oversize JSON payload is replaced whole by the parseable stub `{"error":"result exceeded <cap>","offloadPath":"...","next":"..."}` so the model never receives JSON cut mid-document. Empty results are also valid JSON with empty arrays and `next` populated.
|
|
30
54
|
|
|
31
|
-
Turn budget: all
|
|
55
|
+
Turn budget: all envelope-backed tools draw from one shared pool of 192KB per turn (`safety.limits.observationBytesPerTurn`, keyed on `sessionId:turnId`). When the remaining pool shrinks a call below its self cap, a note is appended naming the bytes already used. When the pool is exhausted, the call short-circuits with `[observation budget exhausted for this turn before <tool> ...]` instead of paying for a search whose output cannot be returned. Use narrower arguments or continue in a follow-up turn.
|
|
32
56
|
|
|
33
57
|
## read: page through a file with offset, limit, and tail
|
|
34
58
|
|
|
@@ -40,10 +64,11 @@ Arguments:
|
|
|
40
64
|
- `offset` (optional). 1-indexed start line; default 1.
|
|
41
65
|
- `limit` (optional). Max lines to return.
|
|
42
66
|
- `tail` (optional). Return the last N lines (jump to EOF). Overrides offset/limit.
|
|
67
|
+
- `line_numbers` (optional boolean). Prefix text with source line numbers; default false.
|
|
43
68
|
|
|
44
|
-
Each call is capped at 2000 lines or `safety.limits.readBytesPerCall`, whichever hits first; the per-turn observation budget can shrink it further.
|
|
69
|
+
Each call is capped at 2000 lines or `safety.limits.readBytesPerCall`, whichever hits first; the per-turn observation budget can shrink it further. Text files of any size are read through bounded windows. Exact line counting stops at a 32 MiB file-size budget; larger files report an unknown total (`N+`). Images retain a 20 MB (20000000 bytes) ceiling and require model vision support. NUL bytes and invalid UTF-8 in the inspected bytes are refused with zero-based byte offsets instead of being decoded as text. A bounded read does not validate unread regions. A missing file errors with a hint to locate it via code_nav, find, or ls.
|
|
45
70
|
|
|
46
|
-
Continuation: a truncated result's notice carries `next: offset=<first unshown line>`. read does not offload; the file itself is the continuation source. If a single line exceeds the byte cap, the result is that line's UTF-8 prefix plus an explanatory note suggesting grep with a narrower pattern or edit with exact surrounding text. An `offset` beyond EOF
|
|
71
|
+
Continuation: a truncated result's notice carries `next: offset=<first unshown line>`. read does not offload; the file itself is the continuation source. If a single line exceeds the byte cap, the result is that line's UTF-8 prefix plus an explanatory note suggesting grep with a narrower pattern or edit with exact surrounding text. An `offset` beyond EOF reports the observed end. When the total is unknown, tail continuation can widen to `tail=2N`; with a known total it can use an exact offset/limit window. `tail` with `line_numbers=true` is refused above the line-count budget because absolute line numbers are unknown. `details.file` records bytes and mtime, and `details.fileChange` reports observed identity changes during reading. A file identity is an observation, not a snapshot or lock against external writers.
|
|
47
72
|
|
|
48
73
|
Reach for read when you know the path and need contents. Use grep first to find where something lives, then read the cited region with offset/limit instead of paging a large file from the top. Use `tail` for logs and build output where the interesting lines are at the end.
|
|
49
74
|
|
|
@@ -62,9 +87,13 @@ Arguments:
|
|
|
62
87
|
- `path` (required).
|
|
63
88
|
- `edits` (required). Array of `{oldText, newText}` objects. Each `oldText` must match exactly one region of the original file, and regions must not overlap.
|
|
64
89
|
|
|
65
|
-
|
|
90
|
+
For files at most 1 MiB, matching runs a cascade: exact substring match first, then a fuzzy match that normalizes Unicode punctuation, non-breaking spaces, and trailing whitespace, then an indentation-relaxed match that compares lines with leading whitespace stripped and re-applies the file's actual indentation to `newText`. If `oldText` matches more than once the call errors and asks for more surrounding context; if it matches nowhere the call errors telling you the text must match exactly including whitespace and newlines; if the result would be byte-identical the call errors with "No changes made".
|
|
66
91
|
|
|
67
|
-
|
|
92
|
+
Files above 1 MiB require exact matching and do not use fuzzy or indentation fallback. The editor refuses NUL and invalid UTF-8 with zero-based byte offsets, mixed LF/CRLF endings, and bare CR endings. It preserves a BOM and uniform LF or CRLF. It still holds the source and replacement in memory; it is not a streaming transformation.
|
|
93
|
+
|
|
94
|
+
Edit and write serialize same-target mutations and publish atomically through a temporary file in the real target directory, file fsync, and rename. Symlink paths retain their link and update the real target; existing mode bits are preserved. Directories are refused. Ownership, ACLs, extended attributes, and old timestamps are not copied. External writers are not locked: the last rename wins, and an earlier read is not an edit precondition. Failure before rename leaves the target unpublished; a directory-fsync failure after rename reports successful publication with a durability warning. Shared-filesystem durability depends on its rename/fsync guarantees.
|
|
95
|
+
|
|
96
|
+
Success returns replacement counts and a validation nudge with `details.paths`, `details.file = {before: {bytes, mtimeMs} | null, after: {bytes, mtimeMs}}`, and a diff with `firstChangedLine` when eligible. If either version exceeds 1 MiB, diff construction is skipped with an explicit notice.
|
|
68
97
|
|
|
69
98
|
Argument tolerance: `edits` sent as a JSON string is parsed, and a legacy top-level `{oldText, newText}` pair is folded into `edits`.
|
|
70
99
|
|
|
@@ -87,9 +116,9 @@ Arguments:
|
|
|
87
116
|
- `path` (required).
|
|
88
117
|
- `content` (required). The full file contents.
|
|
89
118
|
|
|
90
|
-
Success reports the byte count written. If the previous content ended with a newline and the new content does not, the result appends a note so the dropped trailing newline is visible. Writes
|
|
119
|
+
Success reports the byte count written. If the previous content ended with a newline and the new content does not, the result appends a note so the dropped trailing newline is visible. Writes use the same atomic publisher, symlink-target behavior, mode preservation, mutation queue, external-writer limitations, and `details.file` before/after identities as edit. A diff is generated only when both versions are at most 1 MiB; otherwise the result names the skipped diff. Reading the previous content for comparison is bounded to 1 MiB plus one overflow byte.
|
|
91
120
|
|
|
92
|
-
Use write for new files or full regeneration. Use edit for surgical changes to an existing file; write replaces everything
|
|
121
|
+
Use write for new files or full regeneration. Use edit for surgical changes to an existing file; write replaces everything, with a bounded diff when eligible.
|
|
93
122
|
|
|
94
123
|
```text
|
|
95
124
|
write(path="src/tools/new-tool.ts", content="import { Type } from \"typebox\";\n...")
|
|
@@ -113,7 +142,7 @@ The default `bounded` policy keeps a tail-biased model excerpt under the 16KB re
|
|
|
113
142
|
|
|
114
143
|
Presentation is independent from model context. The operator-facing display remains folded and tail-biased under every policy. When the display or selected context omits captured content, the terminal result writes one per-session scratch artifact and names it in the result. Live updates use the selected policy, remain bounded, and never write per-update artifacts. Every terminal result records requested and applied context modes, captured/displayed/context bytes, truncation or downgrade state, and any offload path. Exit code, signal, timeout, abort, and output-cap facts survive every policy. Scratch retrieval may contain the raw retained output; the deterministic `summary` projection is the redacted surface.
|
|
115
144
|
|
|
116
|
-
A command producing more than
|
|
145
|
+
A command producing more than 16 MiB of combined stdout/stderr is stopped with an error. The cap result distinguishes raw observed bytes from retained bytes and states where the partial output went: inline, a named offload, or explicitly discarded bytes when retention was cut or failed. Observed bytes count data received through settlement, not hypothetical output from an uninterrupted command. The diagnostic survives summary and metadata-only dispositions. Use `run_script` for disk-streamed output beyond this cap. UTF-8 decoding spans process chunks, and a code point split by the hard byte cap is discarded rather than replaced with an invalid character. Raw NUL bytes are removed from model context under every policy, which leaves multi-byte code points and ANSI escape sequences whole; the operator presentation and the scratch artifact keep the captured bytes, and the result still records the omission and its retrieval path. A timeout, abort, output cap, or nonzero exit preserves captured diagnostics and appends a status line such as `bash: command timed out after <ms>ms` or `bash: command failed (exit N)` before canonical shaping.
|
|
117
146
|
|
|
118
147
|
Reach for bash for builds, git, package managers, and anything without a dedicated tool. Prefer the dedicated tools over their shell equivalents: grep/find/read/ls get envelope truncation, exact continuation hints, and the shared ignore policy that `cat`, shell `grep`, and shell `find` do not. Prefer `verify` over bash for declared package scripts and project-catalog entries, since verify produces typed evidence.
|
|
119
148
|
|
|
@@ -125,6 +154,61 @@ bash(command="npm run test", timeout_ms=600000, output_policy="summary")
|
|
|
125
154
|
bash(command="make artifact", output_policy="metadata-only")
|
|
126
155
|
```
|
|
127
156
|
|
|
157
|
+
## run_script: stream a scientific processing step to disk
|
|
158
|
+
|
|
159
|
+
Runs one workspace script on the existing safe-exec substrate, with separate stdout/stderr logs and a provenance manifest. Sources: `src/tools/run-script.ts`, `src/core/run-records.ts`, `src/core/safe-exec.ts`. Execute class; sequential. Its `safetyCall` projects the interpreter vector and cwd to Bash admission, so the interpreter allowlist does not bypass execution policy or create a sandbox.
|
|
160
|
+
|
|
161
|
+
Arguments:
|
|
162
|
+
|
|
163
|
+
- `interpreter` (required). A PATH-resolved name: `python3`, `python`, `node`, `bash`, `sh`, `Rscript`, `julia`, `perl`, `ruby`, or `octave`. Interpreter paths are refused.
|
|
164
|
+
- `script` (required). A regular file inside the workspace; canonical path containment rejects symlink escapes.
|
|
165
|
+
- `args` and `interpreter_args` (optional string arrays). At most 64 entries each, 4096 UTF-8 bytes per entry, without NUL. Interpreter arguments precede the script. Omission supplies `-u` for Python and no flags for the other interpreters; explicit `[]` suppresses that default.
|
|
166
|
+
- `cwd` (optional). Workspace-relative working directory, default root; canonical containment applies.
|
|
167
|
+
- `timeout_ms` (optional). Default 600000. Must be a positive integer; values above 21600000 clamp to that six-hour maximum. Zero, negatives, and fractions are refused.
|
|
168
|
+
- `inputs` and `outputs` (optional). Up to 64 workspace-relative declared references each. These are provenance only and do not restrict what the process can read or write.
|
|
169
|
+
- `env` (optional string map). Up to 32 declared keys matching `[A-Z_][A-Z0-9_]*`, each value at most 4096 bytes. The child receives the safe-exec environment plus these entries. The manifest records declared keys and secret-shaped `redactedKeys`, never environment values. Arguments and script output remain literal records; do not put secrets there expecting environment redaction.
|
|
170
|
+
|
|
171
|
+
Logs stream to `.clio-coder/runs/<runId>/stdout.log` and `stderr.log`, avoiding Bash's 16 MiB in-memory output ceiling. Disk usage is not capped by the bounded model view. Progress is throttled to 250 ms with 2 KiB tails per stream; terminal tails retain 8 KiB each. `run.json` records script identity, resolved interpreter, exact argv, cwd, timeout, timing, environment keys, input identities, and outputs marked `created`, `modified`, `unchanged`, or `absent`. Hashing regular files is bounded at 64 MiB; `sha256: null` carries `hashOmitted: too-large|cancelled|unreadable`. No dependency installation or automatic retry occurs.
|
|
172
|
+
|
|
173
|
+
Terminal outcomes are `succeeded`, `failed`, `timed-out`, `aborted`, `spawn-failed`, `cleanup-incomplete`, and `pipe-drain-incomplete`. Every unsuccessful outcome returns an error with retained logs and observed partial outputs. `exitCode` is effective execution status; `leaderExit` preserves the actual leader code/signal (or null if not observed). Cleanup or drain failure turns leader code 0 into effective code 1. Cancellation after the leader exited can retain `exitCode=0` with `aborted=true`; inspect the outcome and flags as well as the code. Neither a leader's zero exit nor a declared output's existence establishes a valid scientific result; run `verify` separately.
|
|
174
|
+
|
|
175
|
+
On POSIX the runner cleans the original process group after leader exit as well as on timeout/cancellation: TERM, a 3000 ms grace, KILL, then at most 1000 ms to observe group disappearance. `cleanup.incomplete` means members survived that bound. Independently, a 1000 ms deadline after leader exit bounds pipe draining; `pipeDrainIncomplete` means logs may be incomplete even when the original group is gone. Cancellation remains active until settlement. Escaped processes are not contained or signalled, and outputs may still change. A probe or signal returning ESRCH permanently closes group ownership; later timers and cancellation cannot reopen it. The residual probe-to-signal PGID-reuse race is accepted, not eliminated. Windows uses direct-child cleanup rather than claiming POSIX process-group containment.
|
|
176
|
+
|
|
177
|
+
After a run, retention keeps the newest 100 completed records, preserves active runs, and considers manifest-less directories orphaned after 24 hours. Metadata reads are bounded and nonregular entries are explicitly skipped. See [run record placement](../architecture/artifact-placement.md#script-run-records-and-retention).
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
run_script(interpreter="python3", script="scripts/analyze.py", args=["inputs.csv", "out/stats.json"], inputs=["inputs.csv"], outputs=["out/stats.json"], timeout_ms=600000)
|
|
181
|
+
verify(check="compare-stats")
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## data: inspect structured files through the gateway
|
|
185
|
+
|
|
186
|
+
Read-only `inspect`, `select`, and `validate` for CSV, TSV, JSON, and JSONL. Sources: `src/tools/gateway/data-tool.ts`, `src/tools/data/`. Required arguments are `op` and `path`; `format` can select `csv|tsv|json|jsonl` explicitly. Inspection never rewrites a file or installs a parser.
|
|
187
|
+
|
|
188
|
+
| Argument | Meaning |
|
|
189
|
+
| --- | --- |
|
|
190
|
+
| `delimiter`, `header` | CSV/TSV delimiter override and header `auto` (default), true, or false. Delimiter detection considers comma, tab, semicolon, and pipe. |
|
|
191
|
+
| `sample_rows` | Inspection preview, default 10, maximum 1000. |
|
|
192
|
+
| `max_rows` | Inspection/validation scan bound, default 100000; null requests a whole-file scan. |
|
|
193
|
+
| `offset`, `limit` | Selection window, zero-based offset, default 50 results, maximum 1000. |
|
|
194
|
+
| `columns` | CSV/TSV projection by header names or zero-based indices. |
|
|
195
|
+
| `pointer` | JSON RFC 6901 pointer; empty string selects the document. |
|
|
196
|
+
|
|
197
|
+
Inspection reports schema/types, dimensions or counts, and a bounded sample. Selection returns rows, records, or a JSON value. Validation reports format validity only for the portion actually scanned; a bounded partial verdict is not whole-file validation. `rowCount: null` means the scan stopped early. JSON syntax faults carry location diagnostics; duplicate-key reporting and bounded tracking are explicit rather than silently certifying uniqueness.
|
|
198
|
+
|
|
199
|
+
Every result reports `view = {exact, sampled, converted}`. `sampled=true` identifies a scan that stopped before EOF. `exact=false, sampled=false` means the scan completed but a selected value was cut to budget, with `$summary` or `$truncated` markers. Inspection samples are previews: a cut sample does not invalidate exact full-scan counts. `converted` stays false for these readers. Format validation proves neither physical meaning nor a transformation's correctness.
|
|
200
|
+
|
|
201
|
+
CSV values remain source strings. Empty cells and sentinels (`NA`, `N/A`, `NaN`, `null`, `NULL`, `None`, `-`) are counted separately and never silently converted to zero or null. Numeric issues are `unsafe-integer`, `excess-digits`, `inexact`, `overflow`, `underflow`, or `oversized-literal`. JSON numbers that cannot be represented honestly use `$literal` and `precision` instead of rounded values. Source ordering and explicit missing-value tokens are retained; units receive no inferred conversion. Numeric extrema with precision issues are labelled approximate.
|
|
202
|
+
|
|
203
|
+
Readers stream with bounded captures. CSV fields are limited to 1048576 characters and records to 16777216; JSONL lines to 1048576 characters; JSON nesting to 1024. JSON captures bound keys, strings, duplicate tracking, and precision samples, with omissions reported. The gateway data result uses a 32 KiB observation cap and the shared turn budget; an oversize JSON rendering uses the envelope's parseable offload stub. Binary/NUL content, invalid UTF-8 (with byte offset), invalid syntax, unsupported formats, absent pointers, and unknown columns produce actionable failures. HDF5, NetCDF, and Parquet require `run_script` with an operator-provided library. Publish transformed data through an explicit script or atomic file mutation, then validate the output's schema, precision, missing values, and scientific invariants.
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
gateway(op="call", capability="data", args={op: "inspect", path: "results.csv", max_rows: null})
|
|
207
|
+
gateway(op="call", capability="data", args={op: "select", path: "results.csv", columns: ["time", "mass"], offset: 100, limit: 20})
|
|
208
|
+
gateway(op="call", capability="data", args={op: "select", path: "results.json", pointer: "/runs/0"})
|
|
209
|
+
gateway(op="call", capability="data", args={op: "validate", path: "results.jsonl", max_rows: null})
|
|
210
|
+
```
|
|
211
|
+
|
|
128
212
|
## grep: search file contents with ripgrep
|
|
129
213
|
|
|
130
214
|
Content search over a directory or single file, backed by ripgrep with a bounded pure-Node fallback when rg is not on PATH. Source: `src/tools/grep.ts`.
|
|
@@ -141,13 +225,13 @@ Arguments:
|
|
|
141
225
|
- `limit` (optional). Max matches; default 100.
|
|
142
226
|
- `include_ignored` (optional boolean).
|
|
143
227
|
|
|
144
|
-
Visibility follows the shared ignore policy (`src/tools/ignore-policy.ts`): `.gitignore` is honored natively, `.clio-coder`/`.fallow`/`.git` are always excluded, and a fixed generated-dirs list (`node_modules`, `dist`, `build`, `coverage`, `target`, `.venv`, `.next`, `.cache`, `.pytest_cache`, `.turbo`) is force-excluded even when a project forgot to gitignore it. `include_ignored=true` lifts the gitignore and generated layers together; the clio-internal layer always stands. Pointing `path` directly inside an excluded directory searches it.
|
|
228
|
+
Visibility follows the shared ignore policy (`src/tools/ignore-policy.ts`): `.gitignore` is honored natively, `.clio-coder`/`.fallow`/`.git` are always excluded, and a fixed generated-dirs list (`node_modules`, `dist`, `build`, `coverage`, `target`, `.venv`, `.next`, `.cache`, `.pytest_cache`, `.turbo`) is force-excluded even when a project forgot to gitignore it. `include_ignored=true` lifts the gitignore and generated layers together; the clio-internal layer always stands. Pointing `path` directly inside an excluded directory searches it. Native rg/fd honor `.gitignore`; the pure-Node fallbacks use only the generated-directory and internal exclusions and do not parse `.gitignore`. Their results disclose this difference, so native and fallback visibility need not agree.
|
|
145
229
|
|
|
146
|
-
Rendering: match lines print as `path:line: text`, context lines as `path-line- text`. Lines longer than 500 characters are cut with a note suggesting read for the full line.
|
|
230
|
+
Rendering: match lines print as `path:line: text`, context lines as `path-line- text`. Lines longer than 500 characters are cut with a note suggesting read for the full line. A complete empty search reports no matches; an incomplete empty search says so explicitly.
|
|
147
231
|
|
|
148
|
-
Truncation: hitting the match limit gives `next: limit=<2x>` with the total rendered as `N+`. Hitting the byte cap (16KB content, 8KB files/count) offloads the full rendering and, in content mode, suggests `next: mode=files`.
|
|
232
|
+
Truncation: hitting the match limit gives `next: limit=<2x>` with the total rendered as `N+`. Hitting the byte cap (16KB content, 8KB files/count) offloads the full rendering and, in content mode, suggests `next: mode=files`. At 30 seconds the search stops and returns collected matches with an incompleteness notice. Narrow the pattern, path, or glob to continue.
|
|
149
233
|
|
|
150
|
-
|
|
234
|
+
Native and fallback results include `details.search = {complete, reason?, skipped: {count, samples, unknown?}}`. Reasons are `timeout`, `errors`, `limit`, or `cancelled`. Counts describe observed skips, samples are bounded and protected-path filtered, and `unknown=true` means diagnostic coverage could not be determined. Recoverable native errors retain matches; invalid patterns still error. The asynchronous fallback counts unreadable, oversized (over 20 MB (20000000 bytes)), and binary skips and yields during traversal.
|
|
151
235
|
|
|
152
236
|
Reach for grep to find where something lives; use mode=files to map breadth cheaply before reading, and mode=count to size a rename or sweep.
|
|
153
237
|
|
|
@@ -174,7 +258,7 @@ Results are relative to the search directory, with a `/` suffix on directories.
|
|
|
174
258
|
|
|
175
259
|
`order="mtime"` never walks the whole tree: it collects a bounded candidate set of `max(4 * limit, 2000)` paths, stats only those, sorts newest first, and slices to `limit`. `details.candidates = {cap, collected, capHit, note?}` records the bound; when the cap was hit the ordering is approximate and `next: order=path` is suggested.
|
|
176
260
|
|
|
177
|
-
Truncation: hitting the result limit gives `next: limit=<2x>` with the total rendered as `N+`; the 8KB byte cap offloads the full path list.
|
|
261
|
+
Truncation: hitting the result limit gives `next: limit=<2x>` with the total rendered as `N+`; the 8KB byte cap offloads the full path list. A complete empty result says `No visible files found matching pattern`; incomplete searches say `Search incomplete`. Searches stop after 30 seconds and retain partial results with the same `details.search` contract as grep. Native fd keeps its own glob ranges and smart-case semantics; fallback glob matching is not a promise of complete fd parity. Neither traversal follows symlinked directories. Fallback traversal counts those skips; native fd reports `details.symlinkDirectories.counted=false` and a rendered notice because it does not count them.
|
|
178
262
|
|
|
179
263
|
Reach for find when you know the file's name or shape; use `order="mtime"` with a small limit to answer "what changed recently". When you know contents but not names, use `grep mode=files` instead.
|
|
180
264
|
|
|
@@ -194,7 +278,7 @@ Arguments:
|
|
|
194
278
|
- `path` (optional). Default `.`.
|
|
195
279
|
- `limit` (optional). Max entries; default 500.
|
|
196
280
|
|
|
197
|
-
Entries are sorted alphabetically case-insensitively, directories carry a `/` suffix, and dotfiles are included. ls reads the directory raw and applies no ignore policy, so `node_modules/` and `.git/` appear if present.
|
|
281
|
+
Entries are sorted alphabetically case-insensitively, directories carry a `/` suffix, and dotfiles are included. ls reads the directory raw and applies no ignore policy, so `node_modules/` and `.git/` appear if present. Symlinks render as `name@ -> target`, or `name@ (broken)` for broken links. Entries that cannot be inspected remain visible with an error marker, and `details.skipped` counts failures with bounded samples. Asynchronous enumeration retains only the requested alphabetical prefix in an O(limit) heap and stats selected entries; `details.selection` reports that bounded selection. Case-insensitive ties preserve enumeration order. Finding the alphabetical prefix still requires enumerating the directory. An empty directory returns `(empty directory)`.
|
|
198
282
|
|
|
199
283
|
Truncation: hitting the entry limit gives `next: limit=<2x>`; the 8KB byte cap offloads the full listing. Reach for ls to orient in one directory; use find for recursive matching.
|
|
200
284
|
|
|
@@ -226,8 +310,8 @@ Returns a JSON presence summary mapping containing:
|
|
|
226
310
|
- `fileMissing`: True if the file path was specified but does not exist.
|
|
227
311
|
|
|
228
312
|
```text
|
|
229
|
-
|
|
230
|
-
|
|
313
|
+
gateway(op="call", capability="credential_present", args={name: "OPENAI_API_KEY"})
|
|
314
|
+
gateway(op="call", capability="credential_present", args={name: "MY_SECRET_KEY", source: "file", file: ".env"})
|
|
231
315
|
```
|
|
232
316
|
|
|
233
317
|
## dispatch: run bounded tasks on fleet agents
|
|
@@ -342,9 +426,16 @@ checks:
|
|
|
342
426
|
tags: [scientific, performance]
|
|
343
427
|
```
|
|
344
428
|
|
|
345
|
-
Every check has a `kind`, absent or `command` by default. A version 1 file still loads and every check there is `kind: command`; the kind fields require `version: 2`. `kind: command` reads the exit code. `kind: numeric-compare` runs the command, parses its stdout as a JSON object of `string -> number | number[]`, and judges it against `reference` (a repository-relative JSON file of the same shape) under `tolerance`, which names at least one of `relative`, `absolute`, or `ulp`; a value
|
|
429
|
+
Every check has a `kind`, absent or `command` by default. A version 1 file still loads and every check there is `kind: command`; the kind fields require `version: 2`. `kind: command` reads the exit code. `kind: numeric-compare` runs the command, parses its stdout as a JSON object of `string -> number | number[]`, and judges it against `reference` (a repository-relative JSON file of the same shape) under `tolerance`, which names at least one of `relative`, `absolute`, or `ulp`; a value uses `tolerance.combine: all|any` (default `all`) to require all named bounds or at least one. Missing keys and array-length mismatches fail independently of combination. `tolerance.nonFinite: fail|match` defaults to `fail`; `match` accepts NaN paired with NaN and same-signed infinities. `ulp` must be an integer at most `Number.MAX_SAFE_INTEGER` (9007199254740991). This is a conjunction/disjunction of individual bounds, not an additive absolute-plus-relative formula. `kind: perf-budget` runs the command and judges the wall time the harness measured against either `budget: {wallTimeMs, tolerance?: {relative}}` or `baseline`, a repository-relative versioned JSON baseline that `clio-coder verifiers baseline <id>` records from one clean run, with an optional `tolerance: {relative}` of headroom over it. Exactly one of `budget` and `baseline` is present. A command that exits non-zero, times out, or is aborted fails before any judgement. Both kinds record a structured `report` on the `verify` result details and on the host-verification check of a dispatch receipt (per-key worst deviation and the failed tolerance, or measured time, effective budget, and ratio); a failing judgement is a check failure, not a new evidence category.
|
|
346
430
|
|
|
347
|
-
|
|
431
|
+
|
|
432
|
+
Judged command capture and numeric reference reads have a 32 MiB ceiling. Output-cap, execution, timeout, or abort failures prevent judgement; partial JSON never earns a pass. Reports record effective `combine`, `nonFinite`, and a readable `rule`; numeric provenance includes `reference` (source, path when supplied, SHA-256, bytes) and `actual` (SHA-256, bytes of the extracted payload). Non-finite report numbers serialize as `"NaN"`, `"Infinity"`, or `"-Infinity"`, never JSON null. These report spellings do not extend the input JSON grammar. Relative deviation against zero is zero for equality and undefined for a nonzero actual, so an absolute bound with `combine: any` can admit near-zero values.
|
|
433
|
+
|
|
434
|
+
Each declared check carries `judgement = {execution, validation, scientificValidity}`. Execution reports `succeeded`, `failed`, `timed-out`, `aborted`, or `output-capped`; validation is `passed`, `failed`, `exit-code` (ordinary command checks), or `not-run`. `scientificValidity` remains `"not established by this check"`. A tolerance pass does not establish the physical validity of a model.
|
|
435
|
+
|
|
436
|
+
New performance baselines are version 2 and record `wallTimeMs`, `check`, `recordedAt`, and `environment` (`hostname`, `platform`, `arch`, `cpuModel`, `cpuCount`, `totalMemoryBytes`, `nodeVersion`). Version 1 still loads without an environment. Reports retain baseline path/hash/bytes and compare baseline/current environments in `environment.differing`; differences are informational and do not change the declared time-budget verdict.
|
|
437
|
+
|
|
438
|
+
Version 2 keeps version 1's strictness. The root version/checks and core check fields (`id`, `description`, `command`, `cwd`, `timeoutMs`, `tags`) are required; kind-specific fields follow the contracts above. Unknown fields and duplicate IDs fail. A project ID uses lowercase letters, digits, `.`, `_`, `:`, or `-`, begins with a letter or digit, and is at most 64 UTF-8 bytes. `frontend` is reserved. Descriptions are trimmed single-line text capped at 512 bytes. `command` is a nonempty argv array with at most 64 entries and 4096 bytes per entry. A shell command string is invalid, and explicit shell executables such as `sh`, `bash`, `pwsh`, and `cmd` are rejected. `cwd` is a repository-relative existing directory capped at 512 bytes; absolute paths, `..` escapes, and symbolic-link escapes fail. `timeoutMs` is a positive integer capped at 900000. A check may carry at most 16 distinct lowercase tags of at most 32 bytes each. The whole file is capped at 262144 bytes and may contain at most 128 checks. YAML aliases are disabled.
|
|
348
439
|
|
|
349
440
|
Provider IDs share one namespace. If a catalog ID collides with a discovered package script, listing and execution fail and identify both source files. Catalog parsing also fails closed before any package or project check runs.
|
|
350
441
|
|
|
@@ -422,48 +513,48 @@ Commands map directly to git subprocess execution:
|
|
|
422
513
|
- `op="log"` runs `git log --oneline -n <limit>` listing recent commit shas and subjects.
|
|
423
514
|
|
|
424
515
|
```text
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
516
|
+
gateway(op="call", capability="git", args={op: "status"})
|
|
517
|
+
gateway(op="call", capability="git", args={op: "diff", stat: true})
|
|
518
|
+
gateway(op="call", capability="git", args={op: "diff", path: "src/tools/safe-exec.ts"})
|
|
519
|
+
gateway(op="call", capability="git", args={op: "log", limit: 10})
|
|
429
520
|
```
|
|
430
521
|
|
|
431
|
-
## context: workspace
|
|
522
|
+
## context: workspace, skill activation, and recall
|
|
432
523
|
|
|
433
|
-
|
|
524
|
+
Direct OBSERVE retrieval of the working environment. Source: `src/tools/context/index.ts`.
|
|
434
525
|
|
|
435
|
-
Arguments
|
|
526
|
+
Arguments are `scope` (`workspace`, `skills`, or `recall`), `name` and `include_tree` for skills, and `ref`, `offset`, and `limit` for recall. `query` can narrow recall. Workspace returns the cached session git/project snapshot and requires a bound session. Skills list or activate installed skills; read-only and suggest activation require an explicit operator request, and recipe-bound workers can load only their declared skills. Recall retrieves evicted observations without changing the eviction marker. Workspace and skills use a 50KB cap.
|
|
527
|
+
|
|
528
|
+
```text
|
|
529
|
+
context(scope="workspace")
|
|
530
|
+
context(scope="skills", name="context-prime", include_tree=true)
|
|
531
|
+
context(scope="recall", ref="<turnId>", offset=0)
|
|
532
|
+
```
|
|
436
533
|
|
|
437
|
-
|
|
438
|
-
- `query` (scope=docs). Question or terms; omit to list the corpus (files plus doc/section counts) instead of searching. At scope=library, name, owner, or description terms.
|
|
439
|
-
- `limit` (scope=docs). Max sections; default 5, max 12. At scope=library, max rows; default 20, max 50.
|
|
440
|
-
- `name` (scope=skills). Skill to load; omit to list.
|
|
441
|
-
- `kind` (scope=library). One of `skill`, `agent`, `prompt`, `fleet`, or `plugin`.
|
|
442
|
-
- `ref` (scope=library). An exact `kind:name` package reference, a resource key, or a bare runtime name.
|
|
443
|
-
- `offset` (scope=library, scope=recall). Zero-based; follow the reported `nextOffset`.
|
|
444
|
-
- `include_tree` (scope=skills, boolean). List up to 50 files under the skill's base_dir.
|
|
534
|
+
## clio_docs: retrieve bundled documentation through the gateway
|
|
445
535
|
|
|
446
|
-
`
|
|
536
|
+
Source: `src/tools/gateway/clio-context-tools.ts` and `src/tools/context/docs-engine.ts`. Arguments: `query` (omit for the corpus), `limit` (default 5, max 12).
|
|
447
537
|
|
|
448
|
-
`
|
|
538
|
+
`clio_docs` runs deterministic, offline retrieval over Clio's recursively
|
|
449
539
|
bundled Markdown tree under `docs/` plus README.md, CHANGELOG.md, and
|
|
450
540
|
CLIO-CODER.md, indexed as heading-delimited sections with light stemming, Clio
|
|
451
541
|
vocabulary aliases, phrase boosts, and BM25-style body scoring. The JSON payload carries `corpus`, the expanded `terms`, and ranked `results` with `file`, `heading`, `breadcrumb`, `anchor`, `lines`, `snippet`, `score`, `coverage`, `matchedTerms`, and `signals`, plus an `omitted` count. Follow the `followUp` guidance: read the cited file and line range when you need the full section. Empty results are still valid JSON with `next` populated (the closest vocabulary expansion, or `query=overview`). 16KB cap; an oversize payload is replaced by the parseable JSON stub. The old `docs_search` `file` filter was dropped in the consolidation. Omitting `query` returns the corpus listing (the file set plus doc and section counts, the same `corpus` shape a search carries) so the model can pick a term without wasting a round on a `requires query` error.
|
|
452
542
|
|
|
453
|
-
|
|
543
|
+
```text
|
|
544
|
+
gateway(op="call", capability="clio_docs", args={query: "dispatch receipts evidence", limit: 8})
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
## clio_library: inspect the recipe catalog through the gateway
|
|
548
|
+
|
|
549
|
+
Source: `src/tools/gateway/clio-context-tools.ts` and `src/tools/context/library.ts`. Arguments: `query`, `kind` (`skill`, `agent`, `prompt`, `fleet`, `plugin`), `ref`, `limit` (default 20, max 50), and zero-based `offset`.
|
|
454
550
|
|
|
455
|
-
`
|
|
551
|
+
`clio_library` is the read-only recipe catalog, backed by the same bounded inventory `clio-coder library recipes --json` reads, and it activates, installs, registers and pins nothing. Rows are tagged and never mixed up with one another. A `resource` row is a recipe that actually loaded: its runtime name (skill frontmatter name, agent recipe id, prompt path with colons, fleet contract name), owning package or `core`/`user`/`project`/`compat` source class, scope, origin evidence, format, and the invocation that works. A `hint` row is a catalog claim about one member of a package: it names the owning package, that owner's installed copy states, and the member's own state (`not-installed` when the owner is not installed, `unknown` when the owner is installed and the member did not turn up), and it never carries an invocation because nothing loaded it. A `package` row is the install target itself with its version, origin, installed copies, and bounded `provides` hints; a package with no hints reports its contents as unknown until inspection rather than empty.
|
|
456
552
|
|
|
457
553
|
The model view is the model audience: internal and shadow agents, untrusted, invalid, shadowed and manual-only resources are not listed. `kind="plugin"` returns plugin-kind install targets only; any recipe kind returns the loaded resources of that kind plus the installable owners that provide it, so an Agents or Prompts query finds the owning bundle before it is installed and without fetching its source. `ref` may match one exact resource key, several same-named records across kinds (the payload says so and each row carries its `key`), or a package, which opens that package's members. A run started with `--no-skills` lists no skill rows, because nothing in it can load one. Instruction bodies and absolute recipe paths are never returned. 16KB cap: the page is fitted to the remaining budget before it is rendered, so `limit` is an upper bound and `nextOffset` carries the remainder; `total` counts what the inventory returned and is flagged `totalIsLowerBound` when the inventory hit its own record cap. Worker registries have no library projection of their own and get a clean unavailable error.
|
|
458
554
|
|
|
459
555
|
```text
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
context(scope="skills")
|
|
463
|
-
context(scope="skills", name="context-prime", include_tree=true)
|
|
464
|
-
context(scope="library", kind="agent", query="materials")
|
|
465
|
-
context(scope="library", ref="plugin:materio")
|
|
466
|
-
context(scope="library", limit=20, offset=20)
|
|
556
|
+
gateway(op="call", capability="clio_library", args={kind: "agent", query: "materials"})
|
|
557
|
+
gateway(op="call", capability="clio_library", args={ref: "plugin:materio"})
|
|
467
558
|
```
|
|
468
559
|
|
|
469
560
|
## code_nav: navigate the codewiki index
|
|
@@ -501,7 +592,7 @@ code_nav(mode="entries")
|
|
|
501
592
|
code_nav(mode="wiki")
|
|
502
593
|
```
|
|
503
594
|
|
|
504
|
-
## web_fetch:
|
|
595
|
+
## web_read and web_fetch: read web pages or make full HTTP requests
|
|
505
596
|
|
|
506
597
|
Fetches content from an http(s) URL. HTML content is automatically cleaned and converted to readable Markdown. Source: `src/tools/web-fetch.ts`. Read class; parallel.
|
|
507
598
|
|
|
@@ -523,9 +614,15 @@ Specialized behaviors:
|
|
|
523
614
|
- **Binary formats**: Non-text, binary, or unsupported content types are rejected.
|
|
524
615
|
|
|
525
616
|
```text
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
617
|
+
gateway(op="call", capability="web_fetch", args={url: "https://arxiv.org/abs/2303.17564"})
|
|
618
|
+
gateway(op="call", capability="web_fetch", args={url: "https://github.com/iowarp/clio-coder/tree/main/docs"})
|
|
619
|
+
gateway(op="call", capability="web_fetch", args={url: "https://example.com", format: "raw"})
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
`web_read` is the gateway GET-only projection with `url`, `timeout_ms`, `max_bytes`, and `format`; it accepts no method, headers, or body and is read class. Use `web_fetch` for full requests, including authentication headers; non-GET methods or a body retain outward-action classification. Both share the existing fetcher, private-network policy, binary refusal, and read cap.
|
|
623
|
+
|
|
624
|
+
```text
|
|
625
|
+
gateway(op="call", capability="web_read", args={url: "https://example.com"})
|
|
529
626
|
```
|
|
530
627
|
|
|
531
628
|
## monitor: inspect dispatched runs
|
|
@@ -584,14 +681,16 @@ Declares and tracks the agent's own working plan. Source: `src/tools/tasks.ts`.
|
|
|
584
681
|
|
|
585
682
|
Arguments:
|
|
586
683
|
|
|
587
|
-
- `action` (required). `plan`, `add`, `start`, `done`, `block`, `drop`, or `list`.
|
|
684
|
+
- `action` (required). `plan`, `add`, `pick`, `start`, `done`, `block`, `drop`, or `list`.
|
|
588
685
|
- `title` (required for `plan`). The board title.
|
|
589
686
|
- `tasks` (required for `plan` and `add`). Task titles as an array of strings.
|
|
590
|
-
- `id` (required for `start`, `done`, `block`, `drop`). A task id like `t2
|
|
591
|
-
- `note` (
|
|
687
|
+
- `id` (required for `pick`, `start`, `done`, `block`, `drop`). A task id like `t2`, or an operator task id like `u2` for pick.
|
|
688
|
+
- `note` (required for `done` and `block`). Evidence of completion on done, a blocking reason on block, or an optional reason on drop.
|
|
592
689
|
|
|
593
690
|
`action="plan"` declares a titled board and replaces any prior board; tasks get sequential ids `t1..tN` and start pending. `start` marks one task active and parks any other active task back to pending, so the board always names exactly one current focus. `done` completes a task; its `note` is recorded on the session ledger as passed validation evidence, so a completed task carries its receipt rather than a bare status flip. `block` requires a reason and is the honest state for work waiting on the operator; blocked tasks never trigger the turn-end nudge. `drop` cancels a task; ids are never reused. Every action returns the whole rendered board, so the current state always sits in the latest tool result.
|
|
594
691
|
|
|
692
|
+
`pick` links a selected operator task to the session board. Calls can reconcile the Clio-owned operator inbox, and linked done updates its durable status. A self-authored plan is not operator authorization.
|
|
693
|
+
|
|
595
694
|
Every mutation persists a full-snapshot `taskLedger` entry in the session ledger: the board replays from the JSONL alone, survives `/resume` and `/fork`, costs nothing at compaction, and feeds the footer tasks row plus the `/tasks` overlay. When a tool-calling turn settles while pending or active tasks remain, the `nudge.open-tasks` middleware carries the turn onward once with the open-task list; record the honest state (`done` with evidence, `block` with a reason, or `drop`) instead of stopping with a stale board.
|
|
596
695
|
|
|
597
696
|
Dispatched runs link to the live board through the ledger's `activeRunIds` field: the orchestrator attaches a run when its worker process goes live and detaches it when the run finalizes, so a snapshot records which fleet runs were serving the board. The linkage is process-live, so a refold after `/resume` or `/fork` restores it empty (the runs ended with the process that dispatched them). Claude SDK/CLI workers map their `TodoWrite` calls onto this tool, so a Claude worker's todo list lands on the same board rather than writing a separate artifact.
|
|
@@ -676,9 +775,9 @@ Arguments:
|
|
|
676
775
|
`list` returns the bounded newest-first inventory: provenance, tags, totals, and a worst-run trust verdict per bundle. `inspect` returns the bundle overview, the per-run trust axes and verdict, the gate decisions, and the findings. `run` resolves `run-<runId>` and builds the bundle when it is absent; a run with no ledger row is reported absent with `artifactAbsent: true` in the details. Results are capped at 16KB, and a truncated result stays valid JSON with a `preview`. Provenance requires this tool and Verifier may use it.
|
|
677
776
|
|
|
678
777
|
```text
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
778
|
+
gateway(op="call", capability="evidence", args={mode: "list"})
|
|
779
|
+
gateway(op="call", capability="evidence", args={mode: "inspect", id: "run-r-42"})
|
|
780
|
+
gateway(op="call", capability="evidence", args={mode: "run", runId: "r-42"})
|
|
682
781
|
```
|
|
683
782
|
|
|
684
783
|
## limitation: record what a turn could not verify
|
|
@@ -746,7 +845,7 @@ ask_user(action="complete", summary="Operator selected SQLite.", decisions=[{key
|
|
|
746
845
|
|
|
747
846
|
## artifact: plans, reviews, and reports
|
|
748
847
|
|
|
749
|
-
Terminal document writers
|
|
848
|
+
Terminal document writers reached through `gateway(op="call", capability="artifact", args={...})`. Atomic publication uses the same publisher as write and reports any post-publication durability warning. Source: `src/tools/artifact.ts`.
|
|
750
849
|
|
|
751
850
|
Arguments:
|
|
752
851
|
|
|
@@ -755,14 +854,14 @@ Arguments:
|
|
|
755
854
|
- `title` (optional). Document title.
|
|
756
855
|
- `path` (optional). Override the default path under `.clio-coder/artifacts/`.
|
|
757
856
|
|
|
758
|
-
`kind=plan|review|report` writes a Markdown document to `.clio-coder/artifacts/PLAN.md`, `REVIEW.md`, or `REPORT.md` by default, so a turn nobody asked a file from never litters the working tree; `path` may override the destination but must stay inside the workspace. See [artifact-placement.md](../architecture/artifact-placement.md) for the full contract. When `content` does not already start with `#`, a non-empty `title` is prepended as an H1. These kinds are TERMINAL: writing the artifact completes the turn and the harness skips the follow-up model call, so the artifact body itself is the answer. Put everything the reader needs in `content`; there is no closing message after the write.
|
|
857
|
+
`kind=plan|review|report` writes a Markdown document to `.clio-coder/artifacts/PLAN.md`, `REVIEW.md`, or `REPORT.md` by default, so a turn nobody asked a file from never litters the working tree; `path` may override the destination but must stay inside the workspace. See [artifact-placement.md](../architecture/artifact-placement.md) for the full contract. When `content` does not already start with `#`, a non-empty `title` is prepended as an H1. The gateway preserves `terminate`, `details.kind`, and `details.paths`. These kinds are TERMINAL: writing the artifact completes the turn and the harness skips the follow-up model call, so the artifact body itself is the answer. Put everything the reader needs in `content`; there is no closing message after the write.
|
|
759
858
|
|
|
760
859
|
Skills are not artifacts. A skill is a `SKILL.md` folder, and the active skill trees (`.clio-coder/skills/`, `.clio-coder/plugins/`, `.clio-coder/extensions/`, and their user-scope counterparts) are operator-owned: model-side writes and deletes there are refused, reads are not. Draft a skill somewhere else in the workspace, check it with `clio-coder library validate <path>`, and leave installation to the operator through `clio-coder library install` or `/library`. The `skill-craft` shipped skill documents the format and craft rules.
|
|
761
860
|
|
|
762
861
|
```text
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
862
|
+
gateway(op="call", capability="artifact", args={kind: "plan", content: "# Migration plan\n\n## Step 1 ..."})
|
|
863
|
+
gateway(op="call", capability="artifact", args={kind: "report", title: "Benchmark results", path: "docs/reports/bench.md", content: "..."})
|
|
864
|
+
gateway(op="call", capability="artifact", args={kind: "review", content: "# Review: toolkit-v2\n\n## Findings ..."})
|
|
766
865
|
```
|
|
767
866
|
|
|
768
867
|
## Headless declared verifier commands
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Troubleshooting & Error Remediation
|
|
2
2
|
|
|
3
|
-
> **Visual blueprint:** The source checkout includes the complete
|
|
4
|
-
> [Troubleshooting & Error Remediation visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/troubleshooting_blueprint.html).
|
|
5
|
-
|
|
6
3
|
This guide provides concrete, actionable remediation procedures for
|
|
7
4
|
operational errors, permission denials, target connection failures, and system
|
|
8
5
|
diagnostics in the current source tree.
|
|
@@ -122,7 +119,7 @@ of the same records, for the case where nobody armed the trace first.
|
|
|
122
119
|
|
|
123
120
|
When encountering unexpected system behavior:
|
|
124
121
|
|
|
125
|
-
1. **System Health Check**: Run `clio-coder doctor` (or `clio-coder doctor --fix` to
|
|
122
|
+
1. **System Health Check**: Run `clio-coder doctor` (or `clio-coder doctor --fix` to repair directory structure, credential permissions, and record fleet preflight results).
|
|
126
123
|
2. **Target Connectivity Probe**: Run `clio-coder targets --probe` to verify authentication and reachability for all configured LLM providers.
|
|
127
124
|
3. **Trace Store Inspection**: Run `clio-coder trace runs` and `clio-coder trace tail <runId>` to inspect event logs, durations, and tool outputs.
|
|
128
125
|
4. **Receipt Validation**: Run `clio-coder evidence inspect <evidenceId>` or `/view verify <runId>` to check cryptographic integrity and execution telemetry. Build the evidence id first with `clio-coder evidence build --run <runId>`.
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Config Knobs Audit (Historical Appendix)
|
|
2
2
|
|
|
3
|
-
> **Visual blueprint:** The source checkout includes the complete
|
|
4
|
-
> [Config Knobs Audit (Historical Appendix) visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/config_knobs_audit_blueprint.html).
|
|
5
|
-
|
|
6
3
|
> [!IMPORTANT]
|
|
7
4
|
> This document is a historical record of the point-in-time configuration knob audit conducted on 2026-07-03.
|
|
8
5
|
> It details the pre-consolidation state of the codebase before the `v0.2.9` release.
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# v0.4.1 Release-Cut Checklist
|
|
2
2
|
|
|
3
|
-
> **Visual blueprint:** The source checkout includes the complete
|
|
4
|
-
> [v0.4.1 Release-Cut Checklist visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/release_cut_checklist_blueprint.html).
|
|
5
|
-
|
|
6
3
|
> [!IMPORTANT]
|
|
7
4
|
> Historical release record. v0.4.1 has been published, and this checklist is
|
|
8
5
|
> retained to explain how that release was cut. It is not the procedure for
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Development Pipeline
|
|
2
2
|
|
|
3
|
-
> **Visual blueprint:** The source checkout includes the complete
|
|
4
|
-
> [Development Pipeline visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/development_pipeline_blueprint.html).
|
|
5
|
-
|
|
6
3
|
How a change to Clio Coder moves from "we noticed something" to a published
|
|
7
4
|
release. This is the process the maintainers follow and the process Clio
|
|
8
5
|
herself follows when dogfooding: every stage is a marketplace skill, so any
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Documentation coverage and source-alignment audit
|
|
2
2
|
|
|
3
|
-
> **Visual blueprint:** The source checkout includes the complete
|
|
4
|
-
> [Documentation coverage and source-alignment audit visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/documentation_coverage_blueprint.html).
|
|
5
|
-
|
|
6
3
|
This is the page-level audit for Clio Coder 0.4.2. The source comparison is
|
|
7
4
|
pinned to commit `ff56ea3e`. A disagreement means that a current factual claim,
|
|
8
5
|
default, identifier, path, schema, or command differs from the implementation at
|
|
9
6
|
that commit. Historical records are evaluated as dated evidence and are not
|
|
10
7
|
treated as current operator guidance.
|
|
11
8
|
|
|
9
|
+
The HTML coverage below is historical. The current application renders the
|
|
10
|
+
Markdown source directly; the parallel HTML tree has been retired.
|
|
11
|
+
|
|
12
12
|
## Headline
|
|
13
13
|
|
|
14
14
|
- Markdown pages audited: **51**.
|