@iowarp/clio-coder 0.3.9 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/NOTICE +33 -0
- package/README.md +7 -2
- package/dist/{acp-7LOELQFP.js → acp-G5WJBNCT.js} +13 -12
- package/dist/{agents-FIBG2SHA.js → agents-FMV2Q5G4.js} +39 -36
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-OI4LIH2I.js → auth-3IDSJEIK.js} +16 -15
- package/dist/{builtins-AD25UL3C.js → builtins-XCZWXSC7.js} +3 -3
- package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
- package/dist/{chunk-56KB5IJP.js → chunk-2OQE55CK.js} +3 -3
- package/dist/{chunk-N3PBVRTZ.js → chunk-32KWKNSF.js} +9 -7
- package/dist/{chunk-VKBMFOYV.js → chunk-36EJLSQQ.js} +23 -27
- package/dist/{chunk-465CC7FK.js → chunk-3BT2XMV4.js} +16 -13
- package/dist/{chunk-NQ6UCCOD.js → chunk-3URVFKWK.js} +7 -7
- package/dist/{chunk-WIE7ZOSW.js → chunk-3XML7CDN.js} +2 -2
- package/dist/chunk-42FMPA75.js +101 -0
- package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
- package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
- package/dist/{chunk-JEQQR47K.js → chunk-6DB53AJS.js} +168 -9
- package/dist/{chunk-KV2AOLDF.js → chunk-76ONBSIA.js} +5 -25
- package/dist/{chunk-FALJGAWU.js → chunk-7MCTRUCE.js} +2 -2
- package/dist/{chunk-5T7RBWN2.js → chunk-AB44T6BB.js} +5 -5
- package/dist/chunk-B7OBL7PK.js +1405 -0
- package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
- package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
- package/dist/{chunk-O6I4CIEU.js → chunk-BKFJHQCA.js} +6 -6
- package/dist/chunk-BKFM6EJV.js +462 -0
- package/dist/chunk-BMS5RKQY.js +27 -0
- package/dist/{chunk-MV2VUEJC.js → chunk-BPKCPIL7.js} +2 -2
- package/dist/{chunk-TEO2TLVN.js → chunk-BUMFYQFY.js} +964 -1120
- package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
- package/dist/chunk-C2LTL2W6.js +2447 -0
- package/dist/{chunk-EBOC7MT3.js → chunk-CODPRO7Q.js} +8 -8
- package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
- package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
- package/dist/{chunk-MIX5N5AC.js → chunk-DQITNCXG.js} +394 -154
- package/dist/{chunk-S4COXYBG.js → chunk-DYJP44XW.js} +129 -106
- package/dist/{chunk-N5XKWMDW.js → chunk-F4CKPOEQ.js} +6 -6
- package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
- package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
- package/dist/{chunk-7C6RYZGQ.js → chunk-GKF55TAZ.js} +3 -3
- package/dist/{chunk-B5XRQOLB.js → chunk-GR5G2PVF.js} +9 -8
- package/dist/{chunk-XDOQXGFO.js → chunk-GXNLGKAB.js} +64 -8
- package/dist/chunk-HHV2GANA.js +88 -0
- package/dist/{chunk-774ILSRL.js → chunk-HI63TFOG.js} +4 -3
- package/dist/{chunk-R7LNVMCS.js → chunk-HJJTYUHX.js} +64 -72
- package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
- package/dist/{chunk-CA42X6KT.js → chunk-HWHKMHUA.js} +6 -6
- package/dist/chunk-HZHHCK24.js +1631 -0
- package/dist/{chunk-HJB5IUKP.js → chunk-I5VEOC6I.js} +12 -12
- package/dist/chunk-IBEBSCYA.js +564 -0
- package/dist/chunk-IQ7KR472.js +362 -0
- package/dist/{chunk-4H6ULJ3H.js → chunk-J4W7KFM7.js} +921 -990
- package/dist/{chunk-4LJX2PUC.js → chunk-JDG2WCRO.js} +5 -5
- package/dist/{chunk-NZU6YDNV.js → chunk-K5C3NCBD.js} +4 -4
- package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
- package/dist/{chunk-NNNWO6F2.js → chunk-KFZI4NIL.js} +93 -3
- package/dist/chunk-KMVISBZR.js +132 -0
- package/dist/{chunk-BVDVID7E.js → chunk-LDQ2ZF2M.js} +2 -2
- package/dist/{chunk-OEDBCISO.js → chunk-LQ3DZAMX.js} +2 -2
- package/dist/{chunk-PZ4I4JE2.js → chunk-LY4S7GJC.js} +124 -116
- package/dist/{chunk-3DUR4WUA.js → chunk-MLKNTWH2.js} +19 -19
- package/dist/chunk-NEKRRTYW.js +56 -0
- package/dist/{chunk-5DQRIYDZ.js → chunk-NHCZP4K7.js} +2 -2
- package/dist/chunk-NHLBIGRH.js +1506 -0
- package/dist/chunk-NQQH3YT7.js +302 -0
- package/dist/chunk-NYS75XW5.js +15 -0
- package/dist/{chunk-TD7UE2L5.js → chunk-O4XIVISU.js} +7 -7
- package/dist/{chunk-WXCJ7VME.js → chunk-O6TL7WWY.js} +6 -6
- package/dist/chunk-OQBA45DZ.js +97 -0
- package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
- package/dist/chunk-PMZCIOCJ.js +25 -0
- package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
- package/dist/{chunk-HKO36JWF.js → chunk-QBJA7R7N.js} +31 -3
- package/dist/chunk-QDC3K2U3.js +262 -0
- package/dist/{chunk-5HFBWUMU.js → chunk-QLFS5GO2.js} +4 -4
- package/dist/{chunk-GAYUJ7LE.js → chunk-QLL7ILRG.js} +41 -32
- package/dist/{chunk-LXPJXFM5.js → chunk-QREDIESB.js} +7 -7
- package/dist/chunk-QSNYB6ZV.js +195 -0
- package/dist/chunk-R346GLFC.js +31 -0
- package/dist/{chunk-VPTUJU4P.js → chunk-SJ5ZKQ4S.js} +2 -2
- package/dist/{chunk-QQ7EKM72.js → chunk-SP2RXXYO.js} +6 -54
- package/dist/chunk-SUCTJL45.js +45 -0
- package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
- package/dist/chunk-T56WDKA5.js +183 -0
- package/dist/chunk-TVHHYFHE.js +255 -0
- package/dist/{chunk-IHKBWSXF.js → chunk-TZ3SGWZZ.js} +2 -2
- package/dist/{chunk-ECUO3KDP.js → chunk-U77AMWDL.js} +47 -7
- package/dist/{chunk-3UUY7R3Z.js → chunk-ULC6OTWO.js} +7 -7
- package/dist/{chunk-AEYBF3TB.js → chunk-UM7N4G5A.js} +2 -2
- package/dist/{chunk-3V5AYSEQ.js → chunk-UXMFQ54G.js} +43 -36
- package/dist/{chunk-YW7UVM5V.js → chunk-V5DHCITQ.js} +34 -1
- package/dist/{chunk-47CMYGET.js → chunk-VAZSBTKF.js} +2 -2
- package/dist/{chunk-3MRC2YSQ.js → chunk-VEO4AP2K.js} +2 -2
- package/dist/{chunk-PNY46YEY.js → chunk-VFA6GDY5.js} +47 -3
- package/dist/chunk-VO67MWHC.js +75 -0
- package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
- package/dist/{chunk-AD7Y7STJ.js → chunk-VYMXRQI6.js} +36 -22
- package/dist/{chunk-T3Z6VAAF.js → chunk-W5VSYASO.js} +19 -17
- package/dist/{chunk-5PVQ4SRS.js → chunk-WZR7K7ZX.js} +7 -123
- package/dist/{chunk-DG4M6ZUE.js → chunk-X3YGUTOB.js} +4 -4
- package/dist/chunk-X75E3D2N.js +686 -0
- package/dist/{chunk-P3JGPQFL.js → chunk-YDFRH54B.js} +4 -4
- package/dist/chunk-YJX4SHTD.js +40 -0
- package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
- package/dist/{chunk-YSEHGPCT.js → chunk-Z2RR6MAK.js} +3 -3
- package/dist/{chunk-HCBCAYZU.js → chunk-Z4TXYIEG.js} +5 -5
- package/dist/cli/index.js +47 -36
- package/dist/{clio-LT5V7SSZ.js → clio-2JXHBBY5.js} +7 -7
- package/dist/{code-nav-LMW275PA.js → code-nav-3YYRMYNF.js} +6 -6
- package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
- package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
- package/dist/{config-RXS5T3JT.js → config-QZPCMYSO.js} +58 -50
- package/dist/{configure-2WYWSCSD.js → configure-TEGEBYCA.js} +21 -19
- package/dist/{context-I3BTOTCS.js → context-AV7OEZ4D.js} +11 -11
- package/dist/{context-MVOORGMF.js → context-E6H5RNMC.js} +49 -41
- package/dist/{context-PALKKQYL.js → context-GSXUE4CT.js} +25 -23
- package/dist/{context-clear-N2WOYZ2K.js → context-clear-SHIBYK6T.js} +48 -40
- package/dist/{context-working-set-MIEVECVZ.js → context-working-set-5ZGKPGZQ.js} +11 -10
- package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-EFMJT4LD.js} +88 -60
- package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
- package/dist/doctor-QOA5FNY5.js +313 -0
- package/dist/{eval-IJ5VEZDJ.js → eval-TFBYQH4H.js} +66 -64
- package/dist/eval-inventory-SXH7PDKX.js +316 -0
- package/dist/{evidence-L5APPXNV.js → evidence-ERGESKGN.js} +198 -44
- package/dist/{evolve-RGNKFJ52.js → evolve-VDXTSYCJ.js} +46 -38
- package/dist/{extensions-7WYWUX5A.js → extensions-7BGBHN57.js} +6 -6
- package/dist/{fleet-6CNVBZZP.js → fleet-2RRVDF2V.js} +189 -101
- package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-VJ726XIA.js} +10 -10
- package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
- package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-JF5QOATM.js} +16 -15
- package/dist/fleet-inspect-VLY4S7QM.js +442 -0
- package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-AIZUEJOY.js} +6 -5
- package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-AJRPDMDV.js} +20 -18
- package/dist/fleet-verify-JFEL2L3H.js +175 -0
- package/dist/fleet-view-ZCON35AG.js +102 -0
- package/dist/{init-VBN2ACVA.js → init-DN2WWLFE.js} +64 -56
- package/dist/install-XGLBQY5E.js +13 -0
- package/dist/interop-OZBKXAYL.js +114 -0
- package/dist/{library-JHGUMLY2.js → library-YWZG7IMW.js} +19 -18
- package/dist/{memory-K4OQIYWG.js → memory-I4C4HMLW.js} +48 -40
- package/dist/{models-2NCZUWDD.js → models-CEYXJBO6.js} +30 -28
- package/dist/{monitor-MMVTJABD.js → monitor-NZ6GCI3P.js} +53 -47
- package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-GCGQ4N5I.js} +6311 -7145
- package/dist/panes-HMABYVO4.js +58 -0
- package/dist/panes-KY6W3V2E.js +103 -0
- package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
- package/dist/{reset-DD5JGOY3.js → reset-DQ6FGCSH.js} +13 -11
- package/dist/resources-BB3MVJMD.js +111 -0
- package/dist/{run-QEGNX7FL.js → run-H2GQDUER.js} +113 -82
- package/dist/{share-JKD3BQMW.js → share-GTJN6A5O.js} +18 -17
- package/dist/{skills-LMQIKDOZ.js → skills-L55TEW6R.js} +31 -24
- package/dist/{skills-eval-I7X2774U.js → skills-eval-XVXPH2JI.js} +61 -52
- package/dist/skills-inventory-S4MXPJFV.js +126 -0
- package/dist/slash-commands-ZSGASKJC.js +77 -0
- package/dist/{steer-CF5TDANS.js → steer-RZGSCY4R.js} +3 -3
- package/dist/{support-I7LOJLIF.js → support-PKEUNNQL.js} +4 -4
- package/dist/{targets-RUSR6B5Z.js → targets-NCPZ644J.js} +31 -29
- package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-44SV3YCN.js} +4 -4
- package/dist/tools-DAF3DI3C.js +27 -0
- package/dist/{trace-ODOQIVIW.js → trace-FYVW2MQA.js} +149 -7
- package/dist/tui-primitives-2AKXQNZK.js +13 -0
- package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
- package/dist/{upgrade-XANW3FXB.js → upgrade-3XPP6OQL.js} +26 -24
- package/dist/{usage-4H7ZRXQT.js → usage-3NLHGTU2.js} +57 -49
- package/dist/{verifiers-UZXNBZEB.js → verifiers-SSQONKRT.js} +171 -12
- package/dist/{verify-BVKWTNDL.js → verify-3U6J7FZI.js} +9 -9
- package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
- package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-CEHYGPGQ.js} +67 -59
- package/dist/with-panes-MKB46MPQ.js +782 -0
- package/dist/worker/entry.js +101 -66
- package/docs/README.md +3 -2
- package/docs/acp.md +24 -3
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-versions.md +4 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +43 -5
- package/docs/commands-and-modes.md +31 -2
- package/docs/configuration-and-targets.md +40 -10
- package/docs/context-engine.md +1 -1
- package/docs/development-pipeline.md +19 -0
- package/docs/dispatch-typed-intent.md +385 -0
- package/docs/documentation-coverage.md +2 -2
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +1 -0
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +2 -2
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +1 -1
- package/docs/extensions-and-sharing.md +25 -1
- package/docs/fleet-dispatch.md +22 -1
- package/docs/installation-and-lifecycle.md +15 -2
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +10 -1
- package/docs/observability.md +3 -3
- package/docs/proactive-memory.md +1 -1
- package/docs/prompt-envelope-and-tools.md +1 -1
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/safety-model.md +2 -2
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +18 -8
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +4 -2
- package/src/cli/acp.ts +6 -2
- package/src/cli/argv.ts +25 -0
- package/src/cli/configure.ts +23 -21
- package/src/cli/doctor-panes.ts +124 -0
- package/src/cli/doctor-toolchain.ts +57 -0
- package/src/cli/doctor.ts +20 -1
- package/src/cli/eval-inventory.ts +436 -0
- package/src/cli/eval.ts +13 -0
- package/src/cli/evidence-detail.ts +88 -0
- package/src/cli/evidence-inventory.ts +183 -0
- package/src/cli/evidence.ts +30 -5
- package/src/cli/fleet-decisions.ts +69 -0
- package/src/cli/fleet-inspect.ts +334 -0
- package/src/cli/fleet-verify.ts +133 -0
- package/src/cli/fleet-view.ts +810 -0
- package/src/cli/fleet.ts +148 -37
- package/src/cli/index.ts +14 -2
- package/src/cli/interop-inspect.ts +128 -0
- package/src/cli/interop.ts +34 -0
- package/src/cli/panes.ts +35 -0
- package/src/cli/reset.ts +5 -2
- package/src/cli/run.ts +58 -0
- package/src/cli/skills-inventory.ts +185 -0
- package/src/cli/skills.ts +16 -13
- package/src/cli/tools.ts +321 -0
- package/src/cli/trace-inspect.ts +252 -0
- package/src/cli/trace.ts +23 -2
- package/src/cli/verifiers-inspect.ts +347 -0
- package/src/cli/verifiers.ts +9 -0
- package/src/core/bus-events.ts +4 -0
- package/src/core/config.ts +49 -0
- package/src/core/defaults.ts +93 -7
- package/src/core/response-schema.ts +44 -4
- package/src/core/theme-token-hex.ts +43 -0
- package/src/core/tool-names.ts +2 -1
- package/src/core/xdg.ts +1 -1
- package/src/domains/agents/fleets/build-review.md +0 -3
- package/src/domains/agents/fleets/build-test.md +0 -3
- package/src/domains/agents/result-contract-filesystem.ts +32 -0
- package/src/domains/agents/result-contract.ts +164 -35
- package/src/domains/config/classify.ts +3 -0
- package/src/domains/dispatch/admission-error.ts +9 -0
- package/src/domains/dispatch/admission.ts +22 -21
- package/src/domains/dispatch/capacity-lease.ts +21 -1
- package/src/domains/dispatch/council-topology.ts +398 -0
- package/src/domains/dispatch/extension.ts +222 -50
- package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
- package/src/domains/dispatch/fleet-plan.ts +7 -2
- package/src/domains/dispatch/fleet-run.ts +64 -1
- package/src/domains/dispatch/gate-decisions.ts +11 -1
- package/src/domains/dispatch/gate-role-prompts.ts +9 -0
- package/src/domains/dispatch/gate-topology.ts +289 -0
- package/src/domains/dispatch/index.ts +19 -0
- package/src/domains/dispatch/intent-compatibility.ts +330 -0
- package/src/domains/dispatch/intent.ts +85 -1
- package/src/domains/dispatch/reservation-store.ts +24 -4
- package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
- package/src/domains/dispatch/run-event-journal.ts +598 -0
- package/src/domains/dispatch/state.ts +45 -1
- package/src/domains/dispatch/types.ts +13 -0
- package/src/domains/dispatch/validation.ts +33 -8
- package/src/domains/eval/compare/compare.ts +3 -16
- package/src/domains/eval/inventory.ts +113 -0
- package/src/domains/eval/schema/serving.ts +31 -0
- package/src/domains/evidence/store.ts +6 -0
- package/src/domains/memory/index.ts +0 -1
- package/src/domains/memory/task-memory-policy.ts +6 -10
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/memory-intervention.ts +33 -21
- package/src/domains/mux/contract.ts +434 -0
- package/src/domains/mux/detect.ts +158 -0
- package/src/domains/mux/extension.ts +47 -0
- package/src/domains/mux/index.ts +96 -0
- package/src/domains/mux/manifest.ts +6 -0
- package/src/domains/mux/operations.ts +164 -0
- package/src/domains/mux/pane-registry.ts +90 -0
- package/src/domains/mux/protocol.ts +49 -0
- package/src/domains/mux/socket-client.ts +816 -0
- package/src/domains/mux/types.ts +222 -0
- package/src/domains/mux/viewer-command.ts +59 -0
- package/src/domains/mux/yazi/assets/init.lua +2 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
- package/src/domains/mux/yazi/assets/yazi.toml +17 -0
- package/src/domains/mux/yazi/event-stream.ts +180 -0
- package/src/domains/mux/yazi/profile.ts +299 -0
- package/src/domains/mux/yazi/session.ts +228 -0
- package/src/domains/mux/yazi/theme.ts +30 -0
- package/src/domains/observability/cost.ts +21 -0
- package/src/domains/observability/index.ts +2 -0
- package/src/domains/observability/trace-store.ts +42 -0
- package/src/domains/providers/endpoint-capacity.ts +154 -22
- package/src/domains/providers/endpoint-slots-store.ts +189 -0
- package/src/domains/providers/extension.ts +20 -3
- package/src/domains/providers/index.ts +22 -0
- package/src/domains/providers/model-runtime-capabilities.ts +32 -0
- package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
- package/src/domains/providers/support.ts +1 -0
- package/src/domains/providers/target-model-cache.ts +124 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/loader.ts +33 -0
- package/src/domains/safety/action-classifier.ts +6 -0
- package/src/domains/toolchain/archive.ts +175 -0
- package/src/domains/toolchain/contract.ts +28 -0
- package/src/domains/toolchain/extension.ts +47 -0
- package/src/domains/toolchain/index.ts +39 -0
- package/src/domains/toolchain/install.ts +327 -0
- package/src/domains/toolchain/manifest.ts +8 -0
- package/src/domains/toolchain/paths.ts +34 -0
- package/src/domains/toolchain/registry.ts +265 -0
- package/src/domains/toolchain/remove.ts +218 -0
- package/src/domains/toolchain/resolve.ts +182 -0
- package/src/domains/toolchain/types.ts +113 -0
- package/src/domains/toolchain/version.ts +88 -0
- package/src/engine/acp/server.ts +413 -70
- package/src/engine/acp/types.ts +19 -1
- package/src/engine/claude/sdk-module.ts +98 -0
- package/src/engine/claude/sdk-runtime.ts +19 -11
- package/src/engine/tui-primitives.ts +21 -0
- package/src/engine/tui.ts +1 -0
- package/src/engine/worker-runtime.ts +2 -13
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +103 -5
- package/src/entry/panes-activation.ts +31 -0
- package/src/entry/with-panes.ts +20 -0
- package/src/interactive/context-overlay.ts +1 -0
- package/src/interactive/cost-overlay.ts +2 -0
- package/src/interactive/council-grid.ts +1 -3
- package/src/interactive/council.ts +11 -0
- package/src/interactive/dispatch-board.ts +26 -16
- package/src/interactive/interactive-application.ts +153 -6
- package/src/interactive/interactive-input-runtime.ts +7 -0
- package/src/interactive/interactive-slash-runtime.ts +36 -6
- package/src/interactive/memory-overlay.ts +1 -0
- package/src/interactive/modal-marker.ts +170 -0
- package/src/interactive/mux-bridge.ts +214 -0
- package/src/interactive/overlay-frame.ts +58 -2
- package/src/interactive/overlay-general-openers.ts +1 -0
- package/src/interactive/overlay-key-routing.ts +14 -3
- package/src/interactive/overlay-lifecycle.ts +19 -3
- package/src/interactive/overlay-model-selectors.ts +40 -3
- package/src/interactive/overlay-permission-lifecycle.ts +90 -22
- package/src/interactive/overlay-transitions.ts +18 -4
- package/src/interactive/overlays/agents.ts +1 -0
- package/src/interactive/overlays/ask-user.ts +136 -30
- package/src/interactive/overlays/auth-dialog.ts +1 -0
- package/src/interactive/overlays/context-reset.ts +1 -0
- package/src/interactive/overlays/cwd-fallback.ts +1 -0
- package/src/interactive/overlays/decisions.ts +11 -11
- package/src/interactive/overlays/extensions.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +1 -0
- package/src/interactive/overlays/handoff-review.ts +1 -0
- package/src/interactive/overlays/help-reference.ts +2 -0
- package/src/interactive/overlays/interop.ts +1 -0
- package/src/interactive/overlays/library-install-confirm.ts +1 -0
- package/src/interactive/overlays/library-tabs.ts +28 -0
- package/src/interactive/overlays/list-overlay.ts +10 -1
- package/src/interactive/overlays/message-picker.ts +1 -0
- package/src/interactive/overlays/model-scope.ts +86 -0
- package/src/interactive/overlays/model-selector.ts +1 -0
- package/src/interactive/overlays/prompts.ts +1 -0
- package/src/interactive/overlays/session-selector.ts +1 -0
- package/src/interactive/overlays/settings-sections.ts +30 -0
- package/src/interactive/overlays/settings.ts +579 -44
- package/src/interactive/overlays/side-question.ts +1 -0
- package/src/interactive/overlays/skills-hub.ts +3 -11
- package/src/interactive/overlays/tree-selector.ts +1 -0
- package/src/interactive/pane-policy.ts +46 -0
- package/src/interactive/panes-runtime.ts +292 -0
- package/src/interactive/renderers/compaction-summary.ts +29 -0
- package/src/interactive/renderers/worker-entry.ts +122 -14
- package/src/interactive/slash-commands.ts +251 -15
- package/src/interactive/tasks-overlay.ts +1 -0
- package/src/interactive/theme/tokens.ts +3 -14
- package/src/interactive/turn-context.ts +47 -2
- package/src/interactive/view/artifacts.ts +109 -1
- package/src/interactive/view/view-overlay.ts +1 -0
- package/src/interactive/watch-pane.ts +152 -0
- package/src/interactive/worker-progress.ts +7 -1
- package/src/interactive/worker-receipts.ts +19 -1
- package/src/interactive/worker-stream.ts +5 -0
- package/src/interactive/yazi-bridge.ts +444 -0
- package/src/tools/bootstrap.ts +26 -2
- package/src/tools/builtin-tool-catalog.ts +15 -0
- package/src/tools/compete-worktrees.ts +83 -2
- package/src/tools/core-bootstrap.ts +2 -1
- package/src/tools/dispatch-admission.ts +14 -3
- package/src/tools/dispatch-arguments.ts +20 -20
- package/src/tools/dispatch-run-events.ts +134 -19
- package/src/tools/dispatch-runner.ts +29 -7
- package/src/tools/dispatch-types.ts +15 -3
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/executables.ts +17 -14
- package/src/tools/observation.ts +54 -4
- package/src/tools/panes-surface.ts +38 -0
- package/src/tools/panes.ts +112 -0
- package/src/tools/policy.ts +10 -1
- package/src/tools/presentation.ts +1 -0
- package/dist/chunk-D73KXYPF.js +0 -37
- package/dist/chunk-MLOK6ZOS.js +0 -2888
- package/dist/chunk-YKOFT37S.js +0 -279
- package/dist/doctor-TWBWFK5V.js +0 -165
package/dist/worker/entry.js
CHANGED
|
@@ -16,28 +16,32 @@ import {
|
|
|
16
16
|
resolveDeliveryTools,
|
|
17
17
|
sanitizeLockedSynthesisMessage,
|
|
18
18
|
workerLoopBlockBudget
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-HJJTYUHX.js";
|
|
20
20
|
import "../chunk-K7VKOLQQ.js";
|
|
21
21
|
import {
|
|
22
22
|
createMiddlewareContractFromSnapshot,
|
|
23
23
|
createMiddlewareToolChoiceControl,
|
|
24
24
|
shouldRequestStalledTurnContinuation
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-QLL7ILRG.js";
|
|
26
26
|
import {
|
|
27
27
|
CONFIRMED_SCOPE,
|
|
28
28
|
READONLY_SCOPE,
|
|
29
29
|
WORKSPACE_SCOPE,
|
|
30
30
|
isSubset
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-5PSMVOLM.js";
|
|
32
32
|
import {
|
|
33
33
|
createLoopState,
|
|
34
34
|
observe
|
|
35
35
|
} from "../chunk-UOV2BYIW.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-BMS5RKQY.js";
|
|
37
|
+
import "../chunk-QSNYB6ZV.js";
|
|
38
|
+
import "../chunk-QDC3K2U3.js";
|
|
39
|
+
import "../chunk-YPI3QQCF.js";
|
|
40
|
+
import "../chunk-HWHKMHUA.js";
|
|
41
|
+
import "../chunk-LQ3DZAMX.js";
|
|
42
|
+
import "../chunk-NHCZP4K7.js";
|
|
43
|
+
import "../chunk-36EJLSQQ.js";
|
|
44
|
+
import "../chunk-BKFJHQCA.js";
|
|
41
45
|
import "../chunk-VG7TBQIY.js";
|
|
42
46
|
import {
|
|
43
47
|
DEFAULT_ESCALATION_FALLBACK,
|
|
@@ -46,43 +50,36 @@ import {
|
|
|
46
50
|
claudeToolsOutsideProfile,
|
|
47
51
|
coerceToolInput,
|
|
48
52
|
createRunEffectsRecorder,
|
|
49
|
-
describeCallTarget,
|
|
50
53
|
emitClaudeToolPermissionDecision,
|
|
51
54
|
isClaudeCodeSessionId,
|
|
55
|
+
nodeResultContractFilesystem,
|
|
52
56
|
parseWorkerSpec,
|
|
53
57
|
runtimeSpeaksResponseSchemaDialect,
|
|
54
58
|
startAntigravityWorkerRun,
|
|
55
59
|
startClaudeCodeWorkerRun,
|
|
56
60
|
validateRehydratedWorkerRuntime
|
|
57
|
-
} from "../chunk-
|
|
58
|
-
import "../chunk-
|
|
61
|
+
} from "../chunk-J4W7KFM7.js";
|
|
62
|
+
import "../chunk-SJ5ZKQ4S.js";
|
|
59
63
|
import "../chunk-2JDWVJND.js";
|
|
60
|
-
import "../chunk-
|
|
61
|
-
import "../chunk-7C6RYZGQ.js";
|
|
64
|
+
import "../chunk-GKF55TAZ.js";
|
|
62
65
|
import {
|
|
63
66
|
createSafetyPolicyEngine
|
|
64
|
-
} from "../chunk-
|
|
65
|
-
import "../chunk-A2NJGIB3.js";
|
|
66
|
-
import "../chunk-OQE5J4C6.js";
|
|
67
|
-
import {
|
|
68
|
-
RESULT_CONTRACT_REPAIR_LIMIT,
|
|
69
|
-
classify,
|
|
70
|
-
parseWorkerResultContract,
|
|
71
|
-
resultContractRepairMessages,
|
|
72
|
-
validateResultContract
|
|
73
|
-
} from "../chunk-S4COXYBG.js";
|
|
67
|
+
} from "../chunk-32KWKNSF.js";
|
|
74
68
|
import {
|
|
75
|
-
|
|
76
|
-
} from "../chunk-
|
|
69
|
+
describeCallTarget
|
|
70
|
+
} from "../chunk-TVHHYFHE.js";
|
|
71
|
+
import "../chunk-42FMPA75.js";
|
|
72
|
+
import "../chunk-H7IXIC72.js";
|
|
73
|
+
import "../chunk-5LXZXPKX.js";
|
|
74
|
+
import "../chunk-OQE5J4C6.js";
|
|
77
75
|
import {
|
|
78
76
|
DEFAULT_AUTONOMY_LEVEL,
|
|
79
77
|
agentSkillToolPolicy
|
|
80
78
|
} from "../chunk-RAPCMZL4.js";
|
|
81
|
-
import "../chunk-
|
|
82
|
-
import "../chunk-ODFEOB4F.js";
|
|
79
|
+
import "../chunk-CY6FY24N.js";
|
|
83
80
|
import "../chunk-OZNBF4L3.js";
|
|
84
81
|
import "../chunk-4BJ5BYCE.js";
|
|
85
|
-
import "../chunk-
|
|
82
|
+
import "../chunk-6XLNIQDB.js";
|
|
86
83
|
import {
|
|
87
84
|
UNKNOWN_RESOURCE,
|
|
88
85
|
WORKER_PROTOCOL_VERSION,
|
|
@@ -100,13 +97,24 @@ import {
|
|
|
100
97
|
} from "../chunk-CMZWFGD2.js";
|
|
101
98
|
import {
|
|
102
99
|
deleteInjectedCompileCacheFrom
|
|
103
|
-
} from "../chunk-
|
|
104
|
-
import "../chunk-
|
|
105
|
-
import
|
|
100
|
+
} from "../chunk-PQEFIJ36.js";
|
|
101
|
+
import "../chunk-HHV2GANA.js";
|
|
102
|
+
import {
|
|
103
|
+
RESULT_CONTRACT_REPAIR_LIMIT,
|
|
104
|
+
classify,
|
|
105
|
+
parseWorkerResultContract,
|
|
106
|
+
resultContractRepairMessages,
|
|
107
|
+
validateResultContract
|
|
108
|
+
} from "../chunk-DYJP44XW.js";
|
|
109
|
+
import {
|
|
110
|
+
protectedArtifactMutationBlockReason
|
|
111
|
+
} from "../chunk-GCSMB2KY.js";
|
|
112
|
+
import "../chunk-UL3WSD3F.js";
|
|
113
|
+
import "../chunk-ECH6PKUQ.js";
|
|
106
114
|
import "../chunk-5B2AEOW5.js";
|
|
107
115
|
import {
|
|
108
116
|
ToolNames
|
|
109
|
-
} from "../chunk-
|
|
117
|
+
} from "../chunk-K6BSR66V.js";
|
|
110
118
|
import "../chunk-65DEGPJ6.js";
|
|
111
119
|
import {
|
|
112
120
|
FileKnowledgeBase,
|
|
@@ -118,23 +126,24 @@ import {
|
|
|
118
126
|
setGlobalDefaultMaxOutputTokens,
|
|
119
127
|
setProtectedModelsProvider,
|
|
120
128
|
setResidencyNoticeSink
|
|
121
|
-
} from "../chunk-
|
|
129
|
+
} from "../chunk-DQITNCXG.js";
|
|
122
130
|
import "../chunk-CFGTUFWB.js";
|
|
123
|
-
import "../chunk-
|
|
124
|
-
import "../chunk-
|
|
131
|
+
import "../chunk-P3FOHJT4.js";
|
|
132
|
+
import "../chunk-UM7N4G5A.js";
|
|
133
|
+
import "../chunk-ZGVHUX3M.js";
|
|
134
|
+
import "../chunk-HLW2MRKE.js";
|
|
135
|
+
import "../chunk-76ONBSIA.js";
|
|
136
|
+
import "../chunk-R346GLFC.js";
|
|
125
137
|
import "../chunk-IHXBNWMM.js";
|
|
126
|
-
import {
|
|
127
|
-
setGitCommitAttributionEnabled,
|
|
128
|
-
withManagedGitCommitAttributionEnvironment
|
|
129
|
-
} from "../chunk-B5CSFE7B.js";
|
|
130
138
|
import {
|
|
131
139
|
readSettings,
|
|
132
140
|
validateSettingsFile
|
|
133
|
-
} from "../chunk-
|
|
141
|
+
} from "../chunk-VFA6GDY5.js";
|
|
142
|
+
import {
|
|
143
|
+
setGitCommitAttributionEnabled,
|
|
144
|
+
withManagedGitCommitAttributionEnvironment
|
|
145
|
+
} from "../chunk-BBVJUZHB.js";
|
|
134
146
|
import "../chunk-FQ4SKYE4.js";
|
|
135
|
-
import "../chunk-ZGVHUX3M.js";
|
|
136
|
-
import "../chunk-RKRLDWD3.js";
|
|
137
|
-
import "../chunk-KV2AOLDF.js";
|
|
138
147
|
import {
|
|
139
148
|
AI_AGENT_NAME
|
|
140
149
|
} from "../chunk-6EJMN2Y3.js";
|
|
@@ -143,21 +152,21 @@ import {
|
|
|
143
152
|
} from "../chunk-IWHMRKLL.js";
|
|
144
153
|
import {
|
|
145
154
|
registerBuiltinRuntimes
|
|
146
|
-
} from "../chunk-
|
|
147
|
-
import "../chunk-
|
|
155
|
+
} from "../chunk-6DB53AJS.js";
|
|
156
|
+
import "../chunk-GXNLGKAB.js";
|
|
148
157
|
import "../chunk-LL4KHSZI.js";
|
|
149
158
|
import {
|
|
150
159
|
configureGuardrails,
|
|
151
160
|
isWorkerToolCallCapExceededReason,
|
|
152
161
|
isWorkerToolCallCapSynthesisReason
|
|
153
162
|
} from "../chunk-4ZG3XFUR.js";
|
|
154
|
-
import "../chunk-
|
|
155
|
-
import "../chunk-
|
|
163
|
+
import "../chunk-HI63TFOG.js";
|
|
164
|
+
import "../chunk-BBVYXMFO.js";
|
|
156
165
|
import "../chunk-SST6Z5JA.js";
|
|
157
166
|
import "../chunk-IKCO5N3L.js";
|
|
158
167
|
import "../chunk-3I7MS7N2.js";
|
|
159
168
|
import "../chunk-APJ265NV.js";
|
|
160
|
-
import "../chunk-
|
|
169
|
+
import "../chunk-BYP5D4HI.js";
|
|
161
170
|
import "../chunk-WEPFGWHJ.js";
|
|
162
171
|
import {
|
|
163
172
|
getRuntimeRegistry
|
|
@@ -176,14 +185,10 @@ init_esm_shims();
|
|
|
176
185
|
|
|
177
186
|
// src/engine/worker-runtime.ts
|
|
178
187
|
init_esm_shims();
|
|
179
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
180
188
|
import path from "node:path";
|
|
181
189
|
|
|
182
190
|
// src/engine/claude/sdk-runtime.ts
|
|
183
191
|
init_esm_shims();
|
|
184
|
-
import {
|
|
185
|
-
query
|
|
186
|
-
} from "@anthropic-ai/claude-agent-sdk";
|
|
187
192
|
|
|
188
193
|
// src/engine/worker-tools.ts
|
|
189
194
|
init_esm_shims();
|
|
@@ -305,6 +310,46 @@ function attestedToolSignature(input) {
|
|
|
305
310
|
);
|
|
306
311
|
}
|
|
307
312
|
|
|
313
|
+
// src/engine/claude/sdk-module.ts
|
|
314
|
+
init_esm_shims();
|
|
315
|
+
var CLAUDE_AGENT_SDK_PACKAGE = "@anthropic-ai/claude-agent-sdk";
|
|
316
|
+
var CLAUDE_AGENT_SDK_VERSION = "0.3.186";
|
|
317
|
+
var CLAUDE_AGENT_SDK_INSTALL_COMMAND = `npm install ${CLAUDE_AGENT_SDK_PACKAGE}@${CLAUDE_AGENT_SDK_VERSION}`;
|
|
318
|
+
var ClaudeAgentSdkUnavailableError = class extends Error {
|
|
319
|
+
code = "CLAUDE_AGENT_SDK_UNAVAILABLE";
|
|
320
|
+
packageName = CLAUDE_AGENT_SDK_PACKAGE;
|
|
321
|
+
installCommand = CLAUDE_AGENT_SDK_INSTALL_COMMAND;
|
|
322
|
+
constructor(cause) {
|
|
323
|
+
super(
|
|
324
|
+
`The claude-sdk runtime needs the optional package ${CLAUDE_AGENT_SDK_PACKAGE}, which is not installed. Install it with \`${CLAUDE_AGENT_SDK_INSTALL_COMMAND}\` (or reinstall clio-coder without \`--omit=optional\`), then select the target again. Every other runtime works without it.`,
|
|
325
|
+
cause === void 0 ? void 0 : { cause }
|
|
326
|
+
);
|
|
327
|
+
this.name = "ClaudeAgentSdkUnavailableError";
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
var MISSING_MODULE_CODES = /* @__PURE__ */ new Set([
|
|
331
|
+
"ERR_MODULE_NOT_FOUND",
|
|
332
|
+
"MODULE_NOT_FOUND",
|
|
333
|
+
"ERR_PACKAGE_PATH_NOT_EXPORTED"
|
|
334
|
+
]);
|
|
335
|
+
function isMissingModuleError(error) {
|
|
336
|
+
const code = error?.code;
|
|
337
|
+
return typeof code === "string" && MISSING_MODULE_CODES.has(code);
|
|
338
|
+
}
|
|
339
|
+
var realLoader = async () => await import("@anthropic-ai/claude-agent-sdk");
|
|
340
|
+
var loader = realLoader;
|
|
341
|
+
var cached = null;
|
|
342
|
+
async function loadClaudeAgentSdk() {
|
|
343
|
+
if (cached) return cached;
|
|
344
|
+
try {
|
|
345
|
+
cached = await loader();
|
|
346
|
+
return cached;
|
|
347
|
+
} catch (error) {
|
|
348
|
+
if (isMissingModuleError(error)) throw new ClaudeAgentSdkUnavailableError(error);
|
|
349
|
+
throw error;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
308
353
|
// src/engine/claude/sdk-runtime.ts
|
|
309
354
|
var DEFAULT_CLAUDE_TOOLS = { type: "preset", preset: "claude_code" };
|
|
310
355
|
function sdkUserTextMessage(text, shouldQuery) {
|
|
@@ -597,8 +642,8 @@ function decideToolUse(input, toolCallId, toolName, toolInput) {
|
|
|
597
642
|
});
|
|
598
643
|
}
|
|
599
644
|
function decideClaudeSdkToolUseOnce(handled, toolUseID, decide) {
|
|
600
|
-
const
|
|
601
|
-
if (
|
|
645
|
+
const cached2 = toolUseID ? handled.get(toolUseID) : void 0;
|
|
646
|
+
if (cached2) return cached2;
|
|
602
647
|
const decision = decide();
|
|
603
648
|
if (toolUseID) handled.set(toolUseID, decision);
|
|
604
649
|
return decision;
|
|
@@ -740,6 +785,7 @@ function startClaudeSdkWorkerRun(input, emit) {
|
|
|
740
785
|
let responseId;
|
|
741
786
|
emit({ type: "agent_start" });
|
|
742
787
|
try {
|
|
788
|
+
const { query } = await loadClaudeAgentSdk();
|
|
743
789
|
queryHandle = query({ prompt: buildClaudeSdkPrompt(input), options });
|
|
744
790
|
for await (const sdkMessage of queryHandle) {
|
|
745
791
|
if (sdkMessage.type === "system" && sdkMessage.subtype === "init") {
|
|
@@ -869,18 +915,7 @@ function terminalContractViolation(contract, message, cwd, observedReadRanges, o
|
|
|
869
915
|
// Repair rounds judge shape and grounding only. Network posture belongs to
|
|
870
916
|
// the orchestrator's sealed validation, which runs again on the receipt.
|
|
871
917
|
networkAllowed: true,
|
|
872
|
-
filesystem:
|
|
873
|
-
readFile(filePath) {
|
|
874
|
-
try {
|
|
875
|
-
return readFileSync(filePath, "utf8");
|
|
876
|
-
} catch {
|
|
877
|
-
return null;
|
|
878
|
-
}
|
|
879
|
-
},
|
|
880
|
-
pathExists(filePath) {
|
|
881
|
-
return existsSync(filePath);
|
|
882
|
-
}
|
|
883
|
-
}
|
|
918
|
+
filesystem: nodeResultContractFilesystem()
|
|
884
919
|
});
|
|
885
920
|
return validation.conformance === "pass" ? null : validation.reason ?? "invalid result";
|
|
886
921
|
}
|
package/docs/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Clio Coder Documentation
|
|
6
6
|
|
|
7
|
-
These pages document `v0.
|
|
7
|
+
These pages document `v0.4.0` of Clio Coder, an open-source coding orchestrator within the [IOWarp](https://iowarp.ai) scientific computing platform, created by the [Gnosis Research Center](https://grc.iit.edu) at the [Illinois Institute of Technology](https://www.iit.edu).
|
|
8
8
|
|
|
9
9
|
They are source-aligned guides: when prose and source disagree, prefer the
|
|
10
10
|
current source, tests, and `CHANGELOG.md`.
|
|
@@ -23,6 +23,7 @@ current source, tests, and `CHANGELOG.md`.
|
|
|
23
23
|
| Safety posture, default-deny Bash, project policy, damage-control rules, and typed validation | [safety-model.md](safety-model.md) ([Interactive Blueprint](html/safety_blueprint.html)) |
|
|
24
24
|
| Source layout, compile-time boundaries, domain loading, and runtime data flow | [architecture.md](architecture.md) ([Interactive Blueprint](html/architecture_blueprint.html)) |
|
|
25
25
|
| Why the dispatch domain is not split, which invariants cross the obvious seams, and why direct subpath imports are permitted | [dispatch-architecture-rationale.md](dispatch-architecture-rationale.md) ([Interactive Blueprint](html/dispatch_rationale_blueprint.html)) |
|
|
26
|
+
| Typed dispatch intent: the producer and persisted-contract compatibility tables, refusal reason codes, and the legacy-inference retirement criterion | [dispatch-typed-intent.md](dispatch-typed-intent.md) |
|
|
26
27
|
| Prompt envelope reuse, provider tool delivery, and bounded tool results | [prompt-envelope-and-tools.md](prompt-envelope-and-tools.md) ([Interactive Blueprints: prompt_envelope](html/prompt_envelope_blueprint.html), [tools](html/tools_blueprint.html)) |
|
|
27
28
|
| In-depth reference for all 20 worker tools: parameters, typical payloads, and error examples | [tool-usage.md](tool-usage.md) ([Interactive Blueprint](html/tool_usage_blueprint.html)) |
|
|
28
29
|
| Developer guide to implementing custom model runtimes and inference server integrations | [provider-adapter-cookbook.md](provider-adapter-cookbook.md) ([Interactive Blueprint](html/provider_adapter_blueprint.html)) |
|
|
@@ -84,7 +85,7 @@ under `src/`, run `npm run build` again or keep `npm run dev` running.
|
|
|
84
85
|
## Release Notes
|
|
85
86
|
|
|
86
87
|
The release entry point is [../README.md](../README.md); detailed release
|
|
87
|
-
history lives in [../CHANGELOG.md](../CHANGELOG.md). For v0.
|
|
88
|
+
history lives in [../CHANGELOG.md](../CHANGELOG.md). For v0.4.0 the supported
|
|
88
89
|
install paths are `npm install -g @iowarp/clio-coder` and a source checkout
|
|
89
90
|
through `npm run install:local`, the deterministic release gate is
|
|
90
91
|
`npm run ci:release`, and live model smoke validation is local/manual and
|
package/docs/acp.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent Client Protocol (ACP) Server
|
|
2
2
|
|
|
3
|
-
This document defines the architecture, transport protocols, tool mediation layers, permission handling, and error taxonomy for Clio Coder's Agent Client Protocol (ACP) server implementation in `v0.
|
|
3
|
+
This document defines the architecture, transport protocols, tool mediation layers, permission handling, and error taxonomy for Clio Coder's Agent Client Protocol (ACP) server implementation in `v0.4.0`.
|
|
4
4
|
|
|
5
5
|
Source implementations: `src/engine/acp/` and `src/cli/acp.ts`.
|
|
6
6
|
|
|
@@ -11,7 +11,11 @@ Source implementations: `src/engine/acp/` and `src/cli/acp.ts`.
|
|
|
11
11
|
Clio Coder provides a native ACP server via the `clio-coder acp` command. The server implements the open Agent Client Protocol specification (ACP v1 / schema 0.4.5) over standard I/O JSON-RPC 2.0 transport (`src/engine/acp/transport.ts`).
|
|
12
12
|
|
|
13
13
|
The ACP server allows external IDEs, editors (such as Zed), and automated orchestration engines to drive Clio Coder sessions over a structured protocol.
|
|
14
|
-
|
|
14
|
+
The source tree includes the `apps/workbench` localhost desktop client. Its ACP
|
|
15
|
+
adapter supports session browsing and deletion, safe settings, target probes,
|
|
16
|
+
usage, recovery, evaluation inventory, routing and dispatch inspection, toolchain
|
|
17
|
+
status, agent attribution, and the live fleet event strip. The workbench is a
|
|
18
|
+
source application and is not included in the published CLI package.
|
|
15
19
|
|
|
16
20
|
```mermaid
|
|
17
21
|
graph LR
|
|
@@ -31,6 +35,10 @@ The server is invoked via:
|
|
|
31
35
|
clio-coder acp [--cwd PATH] [--permission-timeout MS]
|
|
32
36
|
```
|
|
33
37
|
|
|
38
|
+
`clio-coder --acp [--cwd PATH] [--permission-timeout MS]` is an exact alias;
|
|
39
|
+
both spellings reach the same command dispatcher, option parser, stdout guard,
|
|
40
|
+
and server boot path.
|
|
41
|
+
|
|
34
42
|
- `--cwd PATH`: Workspace root the server boots in. The path is resolved and then canonicalized with `fs.realpath`, so a symlinked launch root, a trailing slash, and a `/.` suffix all name the same workspace. Clio changes into that canonical path before it reads settings, builds project context, or opens a session ledger, so a session opens at that root. A path that does not exist or that the process cannot enter exits 2 without starting the server. The canonical path is the server's workspace identity for its whole life: `session/new` must carry a `cwd` that canonicalizes to the same path, and nothing after boot ever changes the process directory.
|
|
35
43
|
- `--permission-timeout MS`: The server-side fail-safe ceiling for one mediated permission request, as a whole number from 1 through Node's maximum schedulable timer delay (`2147483647`) milliseconds. Values outside that range are refused before the protocol server starts. If the timer wins, the approval expires, the active turn is aborted, every parked call for that turn is settled only so execution can unwind, and `session/prompt` fails with `permission_expired`. Expiry is audited as `expired`, never as a human denial, and no denial result is fed into a continuing model loop. The flag overrides `delegation.defaults.permissionTimeoutMs` for this server only, which itself defaults to `DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS = 120000` (`src/core/defaults.ts:149`). A client may enforce a shorter operator-facing policy by sending ordinary `session/cancel`.
|
|
36
44
|
|
|
@@ -59,7 +67,7 @@ These are every method the server answers (`src/engine/acp/server.ts`). Anything
|
|
|
59
67
|
| `clio-coder/targets/list` | Client → Server | Lists bounded, credential-free target/model summaries from configuration and the in-memory cache without network traffic. |
|
|
60
68
|
| `clio-coder/targets/probe` | Client → Server | Explicitly probes one configured target through the provider domain and returns only a closed health result. |
|
|
61
69
|
| `session/request_permission` | Server → Client | Requests permission from the client for a gated tool operation. |
|
|
62
|
-
| `clio-coder/event` | Server → Client | Sends a versioned extension event only to a client that opted into a recognized kind. The
|
|
70
|
+
| `clio-coder/event` | Server → Client | Sends a versioned extension event only to a client that opted into a recognized kind. The v1 allowlist is `safety.loopBlocked` plus `dispatch.enqueued`, `dispatch.started`, `dispatch.progress`, `dispatch.completed`, and `dispatch.failed`. |
|
|
63
71
|
|
|
64
72
|
`agentCapabilities.loadSession` is `true`. All non-standard methods are advertised only under `agentCapabilities._meta`; a strict generic ACP v1 client sees the standard new/load/prompt/cancel/permission surface, ignores namespaced result metadata, and receives no non-standard notification unless it explicitly opts into a recognized event kind.
|
|
65
73
|
|
|
@@ -263,6 +271,19 @@ name only the protocol it was reached through, so its header reads `◇ codex
|
|
|
263
271
|
token usage, the count of mediated tool calls in place of a token count; a peer
|
|
264
272
|
that does report usage gets the same `tok` unit a local worker does.
|
|
265
273
|
|
|
274
|
+
### Typed intent on a delegated dispatch
|
|
275
|
+
|
|
276
|
+
A dispatch to a delegation agent accepts typed intent and renders the declared
|
|
277
|
+
scope into the plan approval artifact, so an operator sees what the peer was
|
|
278
|
+
told to work on before it starts. The declaration grants nothing on this
|
|
279
|
+
transport: the peer runs its own tool surface and Clio mediates no per-tool
|
|
280
|
+
call, so a resolved write boundary would be a claim nothing enforces and is
|
|
281
|
+
refused outright rather than accepted and left unenforced. Declare `read_roots`
|
|
282
|
+
and `relevant_paths` to bound what the peer is asked to look at; run the writing
|
|
283
|
+
half of the work on a native or `claude-sdk` worker. The compatibility rules and
|
|
284
|
+
reason codes are the same as for any other producer; see
|
|
285
|
+
[dispatch-typed-intent.md](dispatch-typed-intent.md).
|
|
286
|
+
|
|
266
287
|
---
|
|
267
288
|
|
|
268
289
|
## 8. Error Taxonomy
|
package/docs/alcf-provider.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ALCF Inference Provider
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive target configurator and Globus OAuth flow diagram is located at [docs/html/alcf_blueprint.html](html/alcf_blueprint.html) (Version: 0.
|
|
4
|
+
> **Interactive Spec Available:** An interactive target configurator and Globus OAuth flow diagram is located at [docs/html/alcf_blueprint.html](html/alcf_blueprint.html) (Version: 0.4.0).
|
|
5
5
|
|
|
6
6
|
Clio can use Argonne's ALCF inference gateway as an OpenAI-compatible target
|
|
7
7
|
backed by Globus OAuth. The runtime id is `alcf`; each configured target points
|
package/docs/architecture.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Clio Coder Architecture and Boundaries
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/architecture_blueprint.html](html/architecture_blueprint.html) (Version: 0.
|
|
4
|
+
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/architecture_blueprint.html](html/architecture_blueprint.html) (Version: 0.4.0).
|
|
5
5
|
|
|
6
6
|
Clio Coder is an experimental, terminal-first coding harness for the CLIO ecosystem. CLIO stands for Context Layer for Input/Output; the project is named for the Greek muse of history and developed by the Gnosis Research Center at Illinois Tech. Its architecture favors small, auditable subsystems over a single monolithic agent loop: CLI entry points, the interactive TUI, provider/runtime code, worker subprocesses, tools, and feature domains are kept separate so local-model support and scientific-software workflows can evolve without collapsing safety boundaries.
|
|
7
7
|
|
|
8
|
-
This page is source-code aligned for the current `v0.
|
|
8
|
+
This page is source-code aligned for the current `v0.4.0` development line.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Artifact Versions & Serialization Contracts
|
|
2
2
|
|
|
3
|
-
This document is the canonical registry of all versioned file formats, serialized data structures, integrity digests, and migration rules across Clio Coder in `v0.
|
|
3
|
+
This document is the canonical registry of all versioned file formats, serialized data structures, integrity digests, and migration rules across Clio Coder in `v0.4.0`.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -11,6 +11,9 @@ Clio Coder strictly versions every persistent or network-transported data struct
|
|
|
11
11
|
| Artifact / Subsystem | Current Version | Symbol / Type & Source Location | Persisted Path / Wire Location | Schema Semantics & Version Differences | Mismatch Handling |
|
|
12
12
|
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
13
13
|
| **Run Receipt** | `20` | `RUN_RECEIPT_INTEGRITY_VERSION = 20`<br>`src/domains/dispatch/receipt-integrity.ts:13` | `<stateDir>/receipts/<runId>.json` | Cryptographically sealed run record. Version 20 adds `pathProvenance` on dispatch intent and the resolved `pathScope`, over the v19 base of provenance fields, routing intent, quality labels, `validationGrounding`, `capabilityMismatch`, council provenance, and fleet gate provenance. | Fail-closed. A receipt below v20 is reported as retired rather than invalid, is never read as evidence, and is never migrated; a malformed or tampered v20 receipt fails verification. |
|
|
14
|
+
| **Dispatch Intent** | `2` | `DISPATCH_INTENT_VERSION = 2`, `DISPATCH_INTENT_SUPPORTED_VERSIONS = [2]`<br>`src/domains/dispatch/intent-compatibility.ts` | Inside the resolved dispatch plan artifact, the `JobSpec`/`DispatchRequest`, and the sealed run receipt | Typed model- and producer-declared scope: `read_roots`, `write_roots`, `relevant_paths`, `expected_outputs`, and declared-id `verification`, plus the `pathProvenance` binding every policy-bearing path to the field that declared it. Version 2 adds `pathProvenance` over the v1 path-and-output shape. | Fail-closed, never migrated. The supported set is a membership list, not a range: any other version is refused with `intent_version_unsupported` and the caller restates the fields on a fresh dispatch call. Omitted intent is accepted through the separately tracked legacy inference path; contradictory intent is a terminal refusal. See [dispatch-typed-intent.md](dispatch-typed-intent.md). |
|
|
15
|
+
| **Dispatch Path Scope Provenance** | `1` | `version: 1` in `interface DispatchPathScopeProvenance`<br>`src/domains/dispatch/path-scope.ts` | `pathScope` on the sealed run receipt | Resolved policy-bearing paths with per-field provenance (`declared`/`derived`/`inferred`), source, and confidence. Never carries the task or briefing prose an inferred path came from. | Sealed inside the receipt integrity digest; shares the receipt's fail-closed policy. |
|
|
16
|
+
| **Resolved Dispatch Plan Artifact** | `3` | `version: 3` in `interface ResolvedDispatchPlanArtifact`<br>`src/tools/dispatch-plan.ts:122` | Trusted admission-time tool argument, rendered and hashed into the plan approval | Pinned agent/target/model/node per task plus the sealed `intent` and admission-resolved `resolvedVerification`. The rendered artifact carries `intent_sha256` for a declared task and the full inferred scope table for a legacy one. | Fail-closed. Any version but 3 parses as `null`, as does any task whose `intent` is not a normalized v2 intent; the call falls back to unresolved admission rather than executing a half-understood plan. |
|
|
14
17
|
| **Session Ledger** | `3` | `CURRENT_SESSION_FORMAT_VERSION = 3`<br>`src/engine/session.ts:66` | `<stateDir>/sessions/<cwdHash>/<sessionId>/` (`meta.json`, `current.jsonl`, `tree.json`) | Append-only ledger format with UUIDv7 turn IDs, session header line, and tree graph linkage. | Automated migration via `src/domains/session/migrations/` on `/resume`. Earlier unmigratable versions rejected. |
|
|
15
18
|
| **Worker Spec** | `3` | `WORKER_SPEC_VERSION = 3`<br>`src/worker/spec-contract.ts:22` | Subprocess `stdin` control plane JSON payload | Worker invocation parameters, tool surface profile, and execution bounds. | Fail-closed preflight rejection before worker activation. |
|
|
16
19
|
| **Worker Runtime Descriptor** | `2` | `WORKER_RUNTIME_DESCRIPTOR_VERSION = 2`<br>`src/worker/spec-contract.ts:23` | Worker attestation descriptor payload | Attestation descriptor for worker runtime environment and hardware facts. | Attestation mismatch causes immediate process termination. |
|
package/docs/built-in-agents.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Clio Coder dispatches focused fleet agents from Markdown recipes. Recipes are data files, not hidden code plugins: YAML frontmatter declares identity, mode, tools, optional target/model hints, and thinking level; the Markdown body is the agent instruction text.
|
|
4
4
|
|
|
5
5
|
> [!TIP]
|
|
6
|
-
> **Interactive Spec Available:** An interactive dashboard for the agent registry and dispatch admission check gates is located at [docs/html/agents_blueprint.html](html/agents_blueprint.html) (Version: 0.
|
|
6
|
+
> **Interactive Spec Available:** An interactive dashboard for the agent registry and dispatch admission check gates is located at [docs/html/agents_blueprint.html](html/agents_blueprint.html) (Version: 0.4.0).
|
|
7
7
|
|
|
8
8
|
The source of truth is `src/domains/agents/**`. Clio's agent dispatch engine and execution boundaries are built upon the [@earendil-works/pi-agent-core](https://www.npmjs.com/package/@earendil-works/pi-agent-core) library.
|
|
9
9
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Capacity Leases & Fleet Scheduling
|
|
2
2
|
|
|
3
|
-
This document specifies the multi-process capacity leasing protocols, node scheduling models, cross-process transaction locks, and failure recovery mechanics implemented in Clio Coder `v0.
|
|
3
|
+
This document specifies the multi-process capacity leasing protocols, node scheduling models, cross-process transaction locks, and failure recovery mechanics implemented in Clio Coder `v0.4.0`.
|
|
4
4
|
|
|
5
5
|
Source implementations: `src/domains/scheduling/` and `src/domains/dispatch/capacity-lease.ts`.
|
|
6
6
|
|
|
@@ -25,12 +25,34 @@ graph TD
|
|
|
25
25
|
| :--- | :--- | :--- |
|
|
26
26
|
| Global | All dispatches using the state directory. | `budget.concurrency: auto` remains four. |
|
|
27
27
|
| Node | The local node or one configured fleet node. | The configured node limit applies. An unset local node cap remains unbounded. |
|
|
28
|
-
| Inference endpoint | A normalized scheme, host, port, and base path. | A target's `maxConcurrentRequests` override wins,
|
|
28
|
+
| Inference endpoint | A normalized scheme, host, port, and base path. | A target's `maxConcurrentRequests` override wins, then a probe in this process, then a persisted probe from an earlier process, then one slot for other local-native targets. vLLM and SGLang remain unbounded. |
|
|
29
29
|
|
|
30
30
|
The conventional final `/v1` mount and a trailing slash normalize to the same endpoint. Host aliases are not collapsed because Clio cannot prove they address the same server. For example, `http://localhost:8080/` and `http://127.0.0.1:8080/v1` remain distinct, while two target descriptors that use the same normalized URL share one endpoint limit.
|
|
31
31
|
|
|
32
32
|
llama.cpp discovery reads `total_slots` from cached probe results. A router can expose the selected worker's value from `/props?model=<id>` even when router `/props` has no slot count. The selected model's `/v1/models` argv supplies a `--parallel` fallback. LM Studio defaults to one slot when its REST response supplies no concurrency fact. Ollama defaults to one unless `OLLAMA_NUM_PARALLEL` is visible to the local process.
|
|
33
33
|
|
|
34
|
+
The endpoint set is resolved from the configured targets as well as the probed statuses, so it is the same set a second after boot as it is a minute later. An endpoint that resolves to no limit is not checked at all, and "not checked" is not a conservative answer.
|
|
35
|
+
|
|
36
|
+
### Persisted Slot Discovery
|
|
37
|
+
|
|
38
|
+
A probe learns a fact about a server, not about the process that asked, so a discovered slot count is written to disk and read back as a prior by the next process.
|
|
39
|
+
|
|
40
|
+
- **Path**: `<stateDir>/endpoint-slots.json` (`src/domains/providers/endpoint-slots-store.ts:endpointSlotsPath()`)
|
|
41
|
+
- **Version**: `version: 1`, one record per canonical endpoint key
|
|
42
|
+
- **Transaction lock**: `<stateDir>/endpoint-slots.json.lock` (`withStateFileLock`)
|
|
43
|
+
- **Staleness bound**: 24 hours, overridable per process with `CLIO_CODER_ENDPOINT_SLOTS_TTL_MS`
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
export interface DiscoveredEndpointSlots {
|
|
47
|
+
endpointKey: string; // Canonical inference endpoint identifier
|
|
48
|
+
runtimeId: string; // Runtime that observed the count
|
|
49
|
+
slots: number; // Discovered parallel slot count
|
|
50
|
+
observedAt: string; // ISO-8601 observation timestamp
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Three things bound what a record may claim. A record older than the staleness bound is ignored and pruned by the next write, so a server restarted with a smaller `--parallel` cannot keep over-admitting against yesterday's number. A record written by a different runtime for the same host and port is ignored, because a different inference server is a different scheduler. A probe in this process always wins over the record, and `maxConcurrentRequests` wins over both. A well-formed record that fails any of these checks falls back to the conservative default rather than to a guess.
|
|
55
|
+
|
|
34
56
|
### State Storage & Format
|
|
35
57
|
|
|
36
58
|
All capacity state is stored in a single durable JSON file:
|
|
@@ -72,13 +94,29 @@ export interface CapacityLease {
|
|
|
72
94
|
|
|
73
95
|
The orchestrator's active model stream is registered in memory against the same endpoint key, so its own turn consumes one endpoint slot before a worker is admitted. This foreground count is not written to `dispatch-admission.json`; process exit releases it. Durable leases and held reservation members carry `endpointKey`, and held members count their peak per wave for the endpoint just as they do for a node.
|
|
74
96
|
|
|
75
|
-
Execution-plan waves also honor the endpoint bound. A plan with four available worker positions targeting one two-slot server packs at most two of them into a wave, or one when the orchestrator already holds the other slot. Endpoint saturation is refused rather than queued, because an endpoint-specific request queue would hold a dispatch open behind a stream whose length nobody knows. The refusal names the endpoint, both slot counts, why one slot is already gone, and the
|
|
97
|
+
Execution-plan waves also honor the endpoint bound. A plan with four available worker positions targeting one two-slot server packs at most two of them into a wave, or one when the orchestrator already holds the other slot. Endpoint saturation is refused rather than queued, because an endpoint-specific request queue would hold a dispatch open behind a stream whose length nobody knows. The refusal names the endpoint, both slot counts, why one slot is already gone, and the moves that actually free capacity:
|
|
76
98
|
|
|
77
99
|
```text
|
|
78
|
-
dispatch: admission denied: endpoint '192.168.86.141:8080' capacity reached (1/1 slots): the
|
|
100
|
+
dispatch: admission denied: endpoint '192.168.86.141:8080' capacity reached (1/1 slots): 1 foreground stream holds the slot; reduce the same-wave worker count, set this target's maxConcurrentRequests to the slot count the server was started with, collect in-flight runs, or point workers at a second server
|
|
79
101
|
```
|
|
80
102
|
|
|
81
|
-
That is
|
|
103
|
+
That remedy is shared by all three paths that can refuse for this reason: lease acquisition (`src/domains/dispatch/capacity-lease.ts`), the admission gate (`src/domains/dispatch/admission.ts`), and reservation preflight (`src/domains/dispatch/reservation-store.ts`). The `1/1` above is the common local case rather than an example: a llama.cpp router started with `--parallel 1` discovers one slot, so any dispatch raised while the orchestrator is streaming is refused before a worker process starts.
|
|
104
|
+
|
|
105
|
+
### What `/council` Needs on a Single-GPU Setup
|
|
106
|
+
|
|
107
|
+
A council seats two to five members and runs the whole roster in one wave, so it needs at least two endpoint slots at once, plus a third if the orchestrator's own turn is streaming to the same server. It cannot answer a capacity denial by dispatching fewer members, which is why its denial says so instead of offering that move:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
dispatch: admission denied: endpoint 'mini:8080' capacity exceeded (2/1 slots): no active lease, held reservation, or foreground stream currently holds a slot; a council runs its whole roster in one wave and cannot go below 2 members, so set this target's maxConcurrentRequests to the slot count the server was started with, collect in-flight runs, or point workers at a second server
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
On a single-GPU box there are three ways to make `/council` work, in order of preference:
|
|
114
|
+
|
|
115
|
+
1. Start the server with enough slots and let discovery find them. `llama-server --parallel 4` is discovered as four slots and persisted, so every later process sees four without re-probing.
|
|
116
|
+
2. Set `maxConcurrentRequests` on the target when the server's real concurrency is higher than what it advertises. It overrides every discovered value.
|
|
117
|
+
3. Point some roster members at a second server. Members on different endpoints do not compete for the same slots.
|
|
118
|
+
|
|
119
|
+
A server genuinely started with one slot cannot run a council, and admitting one anyway would put two workers plus the orchestrator through a scheduler with room for one. The denial is the correct outcome; the fix is on the server or in the roster.
|
|
82
120
|
|
|
83
121
|
### Constants & Operational Bounds
|
|
84
122
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Commands and Modes
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/commands_blueprint.html](html/commands_blueprint.html) (Version: 0.
|
|
4
|
+
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/commands_blueprint.html](html/commands_blueprint.html) (Version: 0.4.0).
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Clio Coder is a terminal-first alpha harness. This page keeps the command
|
|
@@ -46,11 +46,18 @@ For process exit codes, stdout deliverable guarantees, and machine-readable JSON
|
|
|
46
46
|
| `clio-coder auth login [target-or-runtime] [--api-key <value>]` | Add credentials through the supported flow. |
|
|
47
47
|
| `clio-coder auth logout [target-or-runtime]` | Remove stored credentials. |
|
|
48
48
|
| `clio-coder doctor [--fix] [--json]` | Diagnose state; with `--fix`, create missing structure and templates, repair credential permissions, and refresh install metadata. Settings remain strict and are not migrated. |
|
|
49
|
+
| `clio-coder tools list [--json]` | List the pinned external tool registry and whether each program resolves from `PATH`, Clio's vendored data directory, or nowhere. |
|
|
50
|
+
| `clio-coder tools status <id> [--json] [--reset-profile]` | Inspect one registered tool. `--reset-profile` applies only to yazi's generated profile. |
|
|
51
|
+
| `clio-coder tools install <id> [--force] [--json]` | Download the platform asset, verify every declared checksum, and atomically vendor it. |
|
|
52
|
+
| `clio-coder tools remove <id>\|--all [--json]` | Remove Clio-vendored copies without touching a program found on `PATH`. |
|
|
53
|
+
| `clio-coder panes install` | Alias for `clio-coder tools install herdr`. |
|
|
49
54
|
| `clio-coder reset [--state\|--data\|--cache\|--auth\|--config\|--all] [--dry-run] [--force]` | Reset selected Clio Coder state. `--state` is the default level. |
|
|
50
55
|
| `clio-coder uninstall [--dry-run] [--remove-binary] [--force]` | Remove Clio Coder state and print uninstall guidance. |
|
|
51
56
|
| `clio-coder upgrade [--dry-run] [--channel=<latest\|beta\|dev>] [--skip-migrations]` | Refresh state metadata, apply migrations, and update npm installs when applicable. |
|
|
52
57
|
| `clio-coder agents [--json] [--all]` | List discovered agent specs. |
|
|
53
|
-
| `clio-coder fleet list\|run\|status\|drain\|resume` | List
|
|
58
|
+
| `clio-coder fleet list\|run\|status\|drain\|resume` | List fleet contracts, run one, show dispatch state, or control admission. `drain` denies new execution starts for up to one hour and preserves running work; `resume` reopens admission immediately. `run <name>` takes `[--var k=v ...]` and `[--json]`; `status`, `drain`, and `resume` each take `[--json]`. |
|
|
59
|
+
| `clio-coder fleet view <runId\|fleetRootId> [--follow]` | Read the append-only run journal after verifying receipt trust. A fleet root prints its durable step index. `--follow` requires an interactive terminal and one run id. |
|
|
60
|
+
| `clio-coder fleet view --watch <selection-file>` | Follow the run id currently named by the selection file and retarget when it changes. This is the operator-pulled watch surface used by the pane integration. |
|
|
54
61
|
| `clio-coder dev components [list] [--json]` | List behavior-affecting harness components. |
|
|
55
62
|
| `clio-coder dev components snapshot --out <path>` | Write a component snapshot JSON file. |
|
|
56
63
|
| `clio-coder dev components diff --from <a> --to <b> [--json]` | Compare component snapshots. |
|
|
@@ -105,6 +112,15 @@ For process exit codes, stdout deliverable guarantees, and machine-readable JSON
|
|
|
105
112
|
| `--tool-profile <name>` | Restrict dispatched-agent tools: `minimal-local`, `science-local`, or `full-agent`. |
|
|
106
113
|
| `--require <capability>` | Require a target capability for dispatch. Repeatable. |
|
|
107
114
|
| `--steer-channel <path>` | Read live steering lines from a FIFO or an appended regular file to steer the active run. |
|
|
115
|
+
| `--with-panes` | Activate guest pane integration for this invocation when Clio is already inside a reachable herdr session. It overrides `panes.enabled`. |
|
|
116
|
+
| `--no-panes` | Disable pane integration for this invocation. It overrides `panes.enabled`. |
|
|
117
|
+
|
|
118
|
+
`--with-panes` is an explicit first-class launch mode, not permission to start a
|
|
119
|
+
pane server. Clio confirms `HERDR_ENV=1`, connects to an existing socket, and
|
|
120
|
+
pings it before registering pane tools. The fleet watch pane runs
|
|
121
|
+
`fleet view --watch` against a selection file. Clio writes only the selected run
|
|
122
|
+
id, while the viewer reads journals itself, so dispatch remains independent of
|
|
123
|
+
the pane host and a second terminal can use the same journal surface directly.
|
|
108
124
|
|
|
109
125
|
### Headless Session Continuity
|
|
110
126
|
|
|
@@ -164,6 +180,7 @@ The registry table below lists the available interactive slash commands. On a ba
|
|
|
164
180
|
| `/tasks` | `/tasks add <text> \| /tasks hand <id> \| /tasks done <id> \| /tasks drop <id>` | Show the session board or manage project operator tasks |
|
|
165
181
|
| `/memory` | `/memory seed` | Inspect, promote, or seed task memory |
|
|
166
182
|
| `/view` | `/view [filter] \| /view verify <runId>` | Browse session artifacts and verify receipts |
|
|
183
|
+
| `/panes` | `/panes show <run-or-agent> \| /panes open <preset-or-argv> \| /panes close [target]` | Inspect the pane layer, watch a live run in a pane, or open a utility pane |
|
|
167
184
|
| `/thinking` | `/thinking [level]` | Set the chat thinking level, or open Settings → Orchestrator |
|
|
168
185
|
| `/output` | `/output [verbosity]` | Set transcript detail (minimal, default, verbose), or open Settings → Terminal |
|
|
169
186
|
| `/model` | `/model [pattern]` | Open model selector or set a model |
|
|
@@ -195,6 +212,14 @@ There are no slash-command aliases. `/context compact`, `/quit`, `/model`,
|
|
|
195
212
|
spellings stay errors that name `/help` instead of guessing which operation the
|
|
196
213
|
operator intended.
|
|
197
214
|
|
|
215
|
+
`/model` never changes routing on its own. Both spellings, the picker and
|
|
216
|
+
`/model <pattern>`, resolve the swap and then ask where it lands: `Apply this
|
|
217
|
+
session`, `Apply and save globally`, or `Cancel`. Session is the default and
|
|
218
|
+
touches no file, so a mid-conversation experiment dies with the session that
|
|
219
|
+
made it; global is the same write the settings center performs, and it is the
|
|
220
|
+
only one a later launch inherits. Cancel leaves the model where it was. A
|
|
221
|
+
thinking level named in the pattern follows the same choice.
|
|
222
|
+
|
|
198
223
|
`/btw <question>` runs one model round beside the session and renders the answer
|
|
199
224
|
in an overlay. It sends the same compiled message history the next turn would
|
|
200
225
|
send, as read-only input, under a short system instruction saying this is a side
|
|
@@ -277,6 +302,10 @@ it is never sent to the model. That covers spellings removed outright, such as
|
|
|
277
302
|
behavior where an unrecognized spelling reached the model as prose and was answered
|
|
278
303
|
conversationally, which left the operator believing a command had run when nothing had.
|
|
279
304
|
|
|
305
|
+
A headless `clio-coder run "/typo"` refuses the same way. The verdict is reached
|
|
306
|
+
before boot, so no session is opened and no turn is spent; the diagnostic names
|
|
307
|
+
the token on stderr and the run exits `2`, the usage-error code.
|
|
308
|
+
|
|
280
309
|
Command-shaped means one word of letters, digits, hyphens, or colons after the slash, so
|
|
281
310
|
paths such as `/home/user/notes.md` still reach the model unchanged. One word
|
|
282
311
|
followed by prose is treated as a command, because `/status please` and `/tmp is
|