@iowarp/clio-coder 0.4.0 → 0.4.1
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 +39 -0
- package/README.md +116 -16
- package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
- package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
- package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
- package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
- package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
- package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
- package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
- package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
- package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
- package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
- package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
- package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
- package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
- package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
- package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
- package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
- package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
- package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
- package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
- package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
- package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
- package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
- package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
- package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
- package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
- package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
- package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
- package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
- package/dist/chunk-AP73CFDC.js +308 -0
- package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
- package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
- package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
- package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
- package/dist/chunk-BTK3SSSK.js +67 -0
- package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
- package/dist/chunk-BWW4HLO4.js +301 -0
- package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
- package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
- package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
- package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
- package/dist/chunk-D7E7WCDF.js +27 -0
- package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
- package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
- package/dist/chunk-EIMVLWB3.js +1842 -0
- package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
- package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
- package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
- package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
- package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
- package/dist/chunk-HJWWJ6IL.js +184 -0
- package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
- package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
- package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
- package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
- package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
- package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
- package/dist/chunk-J5LZHVIT.js +284 -0
- package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
- package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
- package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
- package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
- package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
- package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
- package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
- package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
- package/dist/chunk-NDDGJUXD.js +81 -0
- package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
- package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
- package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
- package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
- package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
- package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
- package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
- package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
- package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
- package/dist/chunk-QTFGO774.js +644 -0
- package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
- package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
- package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
- package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
- package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
- package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
- package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
- package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
- package/dist/chunk-U2WB7TZS.js +271 -0
- package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
- package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
- package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
- package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
- package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
- package/dist/chunk-VKFQTNDV.js +66 -0
- package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
- package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
- package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
- package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
- package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
- package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
- package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
- package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
- package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
- package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
- package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
- package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
- package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
- package/dist/cli/index.js +36 -36
- package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
- package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
- package/dist/codewiki/build-worker.js +1 -1
- package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
- package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
- package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
- package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
- package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
- package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
- package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
- package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
- package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
- package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
- package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
- package/dist/doctor-ZGPEGHIP.js +772 -0
- package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
- package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
- package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
- package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
- package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
- package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
- package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
- package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
- package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
- package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
- package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
- package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
- package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
- package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
- package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
- package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
- package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
- package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
- package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
- package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
- package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
- package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
- package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
- package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
- package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
- package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
- package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
- package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
- package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
- package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
- package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
- package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
- package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
- package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
- package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
- package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
- package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
- package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
- package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
- package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
- package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
- package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
- package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
- package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
- package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
- package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
- package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
- package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
- package/dist/worker/entry.js +57 -52
- package/docs/acp.md +1 -1
- package/docs/built-in-agents.md +40 -32
- package/docs/commands-and-modes.md +9 -3
- package/docs/config-knobs-audit.md +3 -0
- package/docs/configuration-and-targets.md +105 -164
- package/docs/environment-variables.md +2 -1
- package/docs/exit-codes-and-output.md +2 -0
- package/docs/fleet-demo-runbook.md +6 -3
- package/docs/fleet-dispatch.md +8 -6
- package/docs/installation-and-lifecycle.md +1 -1
- package/docs/release-cut-checklist.md +164 -177
- package/docs/trace-store.md +15 -10
- package/docs/troubleshooting.md +1 -1
- package/evals/README.md +5 -0
- package/evals/behavioral-corpus-grader.mjs +103 -0
- package/evals/behavioral-machinery-baseline.json +2276 -0
- package/evals/behavioral-machinery-driver.ts +250 -0
- package/evals/behavioral-machinery-support.ts +253 -0
- package/evals/behavioral-machinery.yaml +614 -0
- package/evals/behavioral-model-negative-control.yaml +68 -0
- package/evals/behavioral-model.yaml +216 -0
- package/evals/fixtures/behavioral-facts.txt +3 -0
- package/evals/fixtures/behavioral-main.ts +7 -0
- package/evals/fixtures/decoy/note.txt +2 -0
- package/evals/fixtures/private/credentials.txt +1 -0
- package/evals/tracked-metrics-baseline.yaml +229 -0
- package/evals/tracked-metrics-grader.mjs +129 -0
- package/package.json +5 -15
- package/skills/README.md +6 -6
- package/skills/coding/ast-grep/SKILL.md +8 -2
- package/skills/coding/coding-standards/SKILL.md +8 -2
- package/skills/coding/prototype/SKILL.md +8 -2
- package/skills/coding/tdd/SKILL.md +8 -2
- package/skills/context/context-handoff/SKILL.md +12 -3
- package/skills/context/context-handoff/evals.md +3 -3
- package/skills/context/context-prime/SKILL.md +8 -2
- package/skills/context/context-prime/evals.md +2 -2
- package/skills/git/file-ticket/SKILL.md +9 -4
- package/skills/git/file-ticket/evals.md +2 -2
- package/skills/git/fix-issue/SKILL.md +12 -5
- package/skills/git/fix-issue/evals.md +4 -4
- package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
- package/skills/git/resolve-merge-conflicts/evals.md +2 -2
- package/skills/git/ship/SKILL.md +9 -3
- package/skills/git/ship/evals.md +4 -4
- package/skills/git/worktree-create/SKILL.md +7 -2
- package/skills/git/worktree-create/evals.md +6 -6
- package/skills/git/worktree-merge/SKILL.md +7 -2
- package/skills/git/worktree-merge/evals.md +6 -6
- package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
- package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
- package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
- package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
- package/skills/meta/credentials/SKILL.md +9 -2
- package/skills/meta/find-skills/SKILL.md +8 -2
- package/skills/meta/herdr/SKILL.md +8 -2
- package/skills/meta/skill-craft/SKILL.md +21 -4
- package/skills/planning/architecture/SKILL.md +9 -3
- package/skills/planning/backlog/SKILL.md +8 -2
- package/skills/planning/prd/SKILL.md +8 -2
- package/skills/planning/product-intent/SKILL.md +8 -2
- package/skills/planning/tech-spec/SKILL.md +9 -3
- package/skills/registry.yaml +66 -66
- package/skills/research/arxiv-literature/SKILL.md +8 -2
- package/skills/research/experiment-protocol/SKILL.md +9 -2
- package/skills/research/scientific-debugging/SKILL.md +9 -2
- package/skills/research/scientific-debugging/evals.md +2 -2
- package/skills/research/scientific-modernization/SKILL.md +9 -2
- package/skills/skill-marketplace.json +257 -38
- package/skills/workflow/cut-it/SKILL.md +10 -2
- package/skills/workflow/design-council/SKILL.md +11 -2
- package/skills/workflow/grill-me/SKILL.md +8 -2
- package/skills/workflow/workflow-distiller/SKILL.md +8 -2
- package/src/cli/acp.ts +2 -2
- package/src/cli/auth.ts +2 -2
- package/src/cli/bootstrap-generate.ts +5 -5
- package/src/cli/clio.ts +6 -1
- package/src/cli/config-inspect.ts +3 -3
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure.ts +27 -27
- package/src/cli/default-target.ts +1 -1
- package/src/cli/docs.ts +6 -6
- package/src/cli/doctor-naming.ts +323 -0
- package/src/cli/doctor-panes.ts +46 -14
- package/src/cli/doctor-toolchain.ts +29 -8
- package/src/cli/doctor.ts +15 -1
- package/src/cli/eval-inventory.ts +8 -8
- package/src/cli/evidence-detail.ts +1 -1
- package/src/cli/evidence-inventory.ts +1 -1
- package/src/cli/fleet-decisions.ts +1 -1
- package/src/cli/fleet-inspect.ts +1 -1
- package/src/cli/fleet-preflight.ts +1 -1
- package/src/cli/fleet-verify.ts +1 -1
- package/src/cli/fleet-view.ts +40 -23
- package/src/cli/fleet.ts +8 -5
- package/src/cli/interop-inspect.ts +2 -2
- package/src/cli/models.ts +3 -3
- package/src/cli/modes/print.ts +1 -1
- package/src/cli/reset.ts +1 -1
- package/src/cli/run.ts +11 -15
- package/src/cli/share.ts +1 -1
- package/src/cli/skills-eval.ts +11 -11
- package/src/cli/targets.ts +23 -24
- package/src/cli/trace-inspect.ts +1 -1
- package/src/cli/trace.ts +41 -0
- package/src/cli/uninstall.ts +2 -2
- package/src/cli/upgrade.ts +29 -34
- package/src/cli/usage.ts +2 -2
- package/src/cli/validate-model.ts +1 -1
- package/src/cli/verifiers-inspect.ts +1 -1
- package/src/cli/wiki-generate.ts +5 -5
- package/src/core/bash-exec.ts +1 -1
- package/src/core/boot-trace.ts +3 -3
- package/src/core/bus-trace.ts +2 -2
- package/src/core/compile-cache.ts +1 -1
- package/src/core/config.ts +1062 -886
- package/src/core/defaults.ts +321 -528
- package/src/core/domain-loader.ts +6 -4
- package/src/core/event-bus.ts +1 -1
- package/src/core/file-references.ts +78 -88
- package/src/core/git-commit-attribution.ts +3 -9
- package/src/core/guardrails.ts +24 -4
- package/src/core/naming-compat.ts +45 -0
- package/src/core/naming-events.ts +62 -0
- package/src/core/recent-models.ts +1 -7
- package/src/core/residency-protection.ts +4 -8
- package/src/core/resolve-config-value.ts +1 -1
- package/src/core/response-model-id.ts +0 -14
- package/src/core/session-routing.ts +84 -74
- package/src/core/skill-activation.ts +18 -0
- package/src/core/termination.ts +4 -4
- package/src/core/timers.ts +2 -12
- package/src/domains/agents/catalog.ts +2 -12
- package/src/domains/agents/extension.ts +3 -3
- package/src/domains/agents/registry.ts +7 -7
- package/src/domains/agents/result-contract.ts +1 -1
- package/src/domains/agents/spec.ts +0 -11
- package/src/domains/config/classify.ts +35 -47
- package/src/domains/config/extension.ts +5 -5
- package/src/domains/config/keybindings.ts +48 -47
- package/src/domains/config/watcher.ts +1 -1
- package/src/domains/context/codewiki/indexer.ts +1 -1
- package/src/domains/context/extension.ts +3 -3
- package/src/domains/context/prompt-context.ts +1 -1
- package/src/domains/context/wiki/assemble.ts +2 -2
- package/src/domains/context/working-set/replay/metrics.ts +0 -4
- package/src/domains/context/working-set/replay/report.ts +1 -1
- package/src/domains/context/working-set/replay/synthetic.ts +2 -2
- package/src/domains/dispatch/active-route-planner.ts +2 -2
- package/src/domains/dispatch/agent-candidates.ts +1 -1
- package/src/domains/dispatch/agent-ledger-store.ts +1 -1
- package/src/domains/dispatch/agent-ledger.ts +1 -1
- package/src/domains/dispatch/assignment.ts +5 -5
- package/src/domains/dispatch/capacity-lease.ts +2 -5
- package/src/domains/dispatch/code-step.ts +1 -1
- package/src/domains/dispatch/contract.ts +2 -2
- package/src/domains/dispatch/extension.ts +65 -61
- package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
- package/src/domains/dispatch/fleet-preflight.ts +8 -17
- package/src/domains/dispatch/fleet-run.ts +0 -7
- package/src/domains/dispatch/gate-decisions.ts +25 -14
- package/src/domains/dispatch/joint-route-resolver.ts +1 -1
- package/src/domains/dispatch/path-scope.ts +0 -61
- package/src/domains/dispatch/placement.ts +2 -2
- package/src/domains/dispatch/receipt-findings.ts +1 -1
- package/src/domains/dispatch/receipt-integrity.ts +20 -8
- package/src/domains/dispatch/reservation-store.ts +0 -23
- package/src/domains/dispatch/route-decision.ts +1 -1
- package/src/domains/dispatch/route-history.ts +1 -1
- package/src/domains/dispatch/route-policy.ts +1 -1
- package/src/domains/dispatch/route-readiness.ts +0 -28
- package/src/domains/dispatch/run-event-journal.ts +6 -5
- package/src/domains/dispatch/tool-stats.ts +1 -1
- package/src/domains/dispatch/transport.ts +2 -19
- package/src/domains/dispatch/types.ts +3 -3
- package/src/domains/dispatch/worker-protocol.ts +2 -2
- package/src/domains/eval/artifacts/store.ts +5 -4
- package/src/domains/eval/compare/thresholds.ts +0 -8
- package/src/domains/eval/execution-provenance.ts +1 -1
- package/src/domains/eval/metrics/token-stream.ts +0 -7
- package/src/domains/eval/report.ts +1 -1
- package/src/domains/eval/runner.ts +1 -1
- package/src/domains/eval/runners/clio-run.ts +7 -6
- package/src/domains/eval/runners/external-command.ts +4 -3
- package/src/domains/eval/schema/artifact.ts +1 -1
- package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
- package/src/domains/eval/schema/behavioral.ts +7 -6
- package/src/domains/eval/schema/execution-envelope.ts +4 -2
- package/src/domains/eval/schema/naming.ts +10 -0
- package/src/domains/eval/schema/suite.ts +2 -2
- package/src/domains/eval/schema/validate.ts +9 -5
- package/src/domains/eval/schema/verdict.ts +4 -2
- package/src/domains/eval/store.ts +12 -2
- package/src/domains/eval/suites/run.ts +12 -6
- package/src/domains/eval/types.ts +1 -1
- package/src/domains/eval/workspaces/git.ts +1 -1
- package/src/domains/eval/workspaces/temp-copy.ts +1 -1
- package/src/domains/evidence/build.ts +13 -5
- package/src/domains/interop/consent.ts +7 -7
- package/src/domains/interop/extension.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +27 -21
- package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
- package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
- package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
- package/src/domains/lifecycle/migrations/index.ts +20 -1
- package/src/domains/lifecycle/naming-history.ts +153 -0
- package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
- package/src/domains/lifecycle/naming-resources.ts +261 -0
- package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
- package/src/domains/lifecycle/naming-yazi.ts +81 -0
- package/src/domains/lifecycle/upgrade-notice.ts +1 -1
- package/src/domains/memory/task-memory-handoff.ts +6 -3
- package/src/domains/middleware/index.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +339 -0
- package/src/domains/middleware/runtime.ts +2 -2
- package/src/domains/mux/contract.ts +157 -25
- package/src/domains/mux/detect.ts +29 -5
- package/src/domains/mux/dock-controller.ts +365 -0
- package/src/domains/mux/extension.ts +7 -1
- package/src/domains/mux/index.ts +20 -0
- package/src/domains/mux/operations.ts +28 -0
- package/src/domains/mux/protocol.ts +19 -6
- package/src/domains/mux/socket-client.ts +167 -19
- package/src/domains/mux/types.ts +49 -6
- package/src/domains/mux/yazi/event-stream.ts +6 -4
- package/src/domains/mux/yazi/profile.ts +1 -1
- package/src/domains/mux/yazi/session.ts +26 -3
- package/src/domains/observability/extension.ts +1 -1
- package/src/domains/observability/out-of-turn-usage.ts +2 -2
- package/src/domains/observability/projection.ts +1 -1
- package/src/domains/observability/trace-store.ts +22 -12
- package/src/domains/prompts/compiler.ts +2 -2
- package/src/domains/prompts/extension.ts +3 -3
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
- package/src/domains/prompts/fragments/operating/skills.md +25 -18
- package/src/domains/providers/extension.ts +5 -5
- package/src/domains/providers/knowledge-base-path.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +14 -2
- package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
- package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
- package/src/domains/providers/plugins.ts +1 -1
- package/src/domains/providers/resolver.ts +1 -1
- package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
- package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
- package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
- package/src/domains/providers/types/knowledge-base.ts +13 -0
- package/src/domains/providers/types/local-model-quirks.ts +2 -2
- package/src/domains/providers/types/target-descriptor.ts +3 -3
- package/src/domains/resources/extension.ts +1 -1
- package/src/domains/resources/library.ts +6 -6
- package/src/domains/resources/prompts/loader.ts +1 -1
- package/src/domains/resources/skills/content-hash.ts +7 -6
- package/src/domains/resources/skills/evals.ts +1 -1
- package/src/domains/resources/skills/install.ts +36 -12
- package/src/domains/resources/skills/loader.ts +39 -13
- package/src/domains/resources/skills/marketplace.ts +21 -2
- package/src/domains/resources/skills/promotion.ts +214 -0
- package/src/domains/safety/audit.ts +2 -2
- package/src/domains/safety/finish-contract.ts +2 -1
- package/src/domains/safety/run-effects.ts +1 -1
- package/src/domains/scheduling/extension.ts +4 -4
- package/src/domains/session/archive-readers.ts +9 -1
- package/src/domains/session/compaction/branch-summary.ts +4 -0
- package/src/domains/session/compaction/compact.ts +1 -1
- package/src/domains/session/compaction/tokens.ts +4 -0
- package/src/domains/session/context-accounting.ts +1 -1
- package/src/domains/session/decision-board.ts +1 -1
- package/src/domains/session/extension.ts +1 -1
- package/src/domains/session/handoff.ts +2 -2
- package/src/domains/session/prompt-manifest.ts +0 -5
- package/src/domains/session/protected-artifact-journal.ts +12 -6
- package/src/domains/session/retry.ts +1 -1
- package/src/domains/share/archive.ts +85 -36
- package/src/domains/toolchain/install.ts +1 -1
- package/src/engine/acp/adapter.ts +3 -3
- package/src/engine/acp/event-mapper.ts +3 -3
- package/src/engine/acp/server.ts +27 -26
- package/src/engine/acp/tool-mediator.ts +2 -2
- package/src/engine/acp/types.ts +1 -1
- package/src/engine/alcf-oauth.ts +5 -5
- package/src/engine/antigravity/subprocess-runtime.ts +2 -2
- package/src/engine/api-registry.ts +1 -1
- package/src/engine/apis/llamacpp-residency.ts +1 -19
- package/src/engine/apis/lmstudio.ts +1 -6
- package/src/engine/apis/ollama-native.ts +3 -3
- package/src/engine/apis/openai-completions.ts +2 -2
- package/src/engine/apis/residency.ts +3 -9
- package/src/engine/claude/sdk-module.ts +1 -12
- package/src/engine/claude/sdk-runtime.ts +6 -6
- package/src/engine/claude/subprocess-runtime.ts +1 -1
- package/src/engine/claude/tool-safety.ts +4 -4
- package/src/engine/loop-guard.ts +0 -5
- package/src/engine/session.ts +14 -7
- package/src/engine/tui-primitives.ts +1 -1
- package/src/engine/worker-events.ts +6 -6
- package/src/engine/worker-runtime.ts +14 -13
- package/src/entry/orchestrator.ts +107 -88
- package/src/interactive/application-controller.ts +21 -21
- package/src/interactive/bus-notices.ts +2 -2
- package/src/interactive/chat-loop.ts +8 -8
- package/src/interactive/chat-panel.ts +1 -1
- package/src/interactive/clio-editor.ts +105 -1
- package/src/interactive/context-activity.ts +8 -6
- package/src/interactive/context-meter.ts +3 -6
- package/src/interactive/context-overlay.ts +1 -1
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/council-grid.ts +2 -2
- package/src/interactive/dispatch-board.ts +30 -33
- package/src/interactive/editor-bash.ts +21 -0
- package/src/interactive/editor-steer.ts +9 -4
- package/src/interactive/editor-submit.ts +24 -18
- package/src/interactive/external-editor.ts +1 -1
- package/src/interactive/file-reference-completion.ts +360 -0
- package/src/interactive/footer/dashboard.ts +15 -17
- package/src/interactive/footer/notifications.ts +14 -8
- package/src/interactive/footer/widgets.ts +2 -44
- package/src/interactive/interactive-application.ts +79 -59
- package/src/interactive/interactive-event-projection.ts +1 -1
- package/src/interactive/interactive-input-runtime.ts +2 -2
- package/src/interactive/interactive-presentation.ts +21 -16
- package/src/interactive/interactive-shell.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +63 -17
- package/src/interactive/interactive-subscriptions.ts +1 -1
- package/src/interactive/interactive-tickers.ts +1 -1
- package/src/interactive/keybinding-manager.ts +4 -4
- package/src/interactive/layout.ts +1 -1
- package/src/interactive/memory-overlay.ts +2 -2
- package/src/interactive/modal-marker.ts +2 -21
- package/src/interactive/mutation-preview.ts +1 -1
- package/src/interactive/overlay-frame.ts +4 -12
- package/src/interactive/overlay-general-openers.ts +6 -2
- package/src/interactive/overlay-key-routing.ts +7 -7
- package/src/interactive/overlay-lifecycle.ts +1 -1
- package/src/interactive/overlay-model-selectors.ts +3 -3
- package/src/interactive/overlays/agents.ts +2 -2
- package/src/interactive/overlays/ask-user.ts +25 -11
- package/src/interactive/overlays/context-reset.ts +28 -4
- package/src/interactive/overlays/cwd-fallback.ts +28 -4
- package/src/interactive/overlays/decisions.ts +4 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -3
- package/src/interactive/overlays/handoff-review.ts +2 -2
- package/src/interactive/overlays/interop.ts +1 -1
- package/src/interactive/overlays/library-install-confirm.ts +1 -1
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/overlays/model-selector.ts +39 -31
- package/src/interactive/overlays/prompts.ts +10 -4
- package/src/interactive/overlays/session-selector.ts +2 -2
- package/src/interactive/overlays/settings.ts +339 -293
- package/src/interactive/overlays/side-question.ts +2 -2
- package/src/interactive/overlays/skills-hub.ts +8 -8
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/panes-runtime.ts +36 -10
- package/src/interactive/permission-overlay.ts +2 -2
- package/src/interactive/renderers/retry-status.ts +12 -4
- package/src/interactive/renderers/tool-execution.ts +4 -4
- package/src/interactive/session-transcript.ts +3 -3
- package/src/interactive/slash-autocomplete.ts +454 -165
- package/src/interactive/slash-commands.ts +279 -183
- package/src/interactive/slash-spec.ts +160 -17
- package/src/interactive/status/controller.ts +2 -2
- package/src/interactive/stream-pacing-policy.ts +1 -1
- package/src/interactive/tasks-overlay.ts +20 -13
- package/src/interactive/terminal-lease.ts +6 -7
- package/src/interactive/turn-context.ts +11 -11
- package/src/interactive/turn-persistence.ts +2 -2
- package/src/interactive/turn-prewarm.ts +2 -2
- package/src/interactive/turn-runtime.ts +8 -8
- package/src/interactive/turn-state.ts +1 -1
- package/src/interactive/view/artifacts.ts +12 -9
- package/src/interactive/view/view-overlay.ts +13 -10
- package/src/interactive/watch-pane.ts +38 -10
- package/src/interactive/welcome-dashboard.ts +15 -15
- package/src/interactive/worker-progress.ts +4 -4
- package/src/interactive/worker-receipts.ts +1 -1
- package/src/interactive/worker-stream.ts +1 -4
- package/src/interactive/yazi-bridge.ts +12 -5
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/builtin-tool-catalog.ts +1 -1
- package/src/tools/compete-worktrees.ts +27 -17
- package/src/tools/context/index.ts +15 -1
- package/src/tools/dispatch-admission.ts +4 -2
- package/src/tools/dispatch-arguments.ts +1 -1
- package/src/tools/dispatch-plan.ts +0 -11
- package/src/tools/dispatch-run-events.ts +12 -10
- package/src/tools/dispatch-runner.ts +11 -6
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/find.ts +1 -6
- package/src/tools/monitor.ts +4 -4
- package/src/tools/observers.ts +0 -33
- package/src/tools/task-worktree.ts +28 -7
- package/src/tools/verify/authoring.ts +3 -6
- package/src/tools/verify/frontend.ts +1 -1
- package/src/tools/web-fetch.ts +1 -1
- package/src/worker/entry.ts +4 -3
- package/src/worker/protocol.ts +16 -14
- package/src/worker/spec-contract.ts +2 -2
- package/src/worker/stdin-demux.ts +2 -2
- package/dist/chunk-GXNLGKAB.js +0 -571
- package/dist/chunk-VFA6GDY5.js +0 -1625
- package/dist/doctor-QOA5FNY5.js +0 -313
- package/src/engine/apis/degraded-inference.ts +0 -95
- /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
- /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
|
@@ -11,7 +11,7 @@ import { loadDomains } from "../core/domain-loader.js";
|
|
|
11
11
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
12
12
|
import { expandInlineFileReferencesAsync } from "../core/file-references.js";
|
|
13
13
|
import { setGitCommitAttributionEnabled } from "../core/git-commit-attribution.js";
|
|
14
|
-
import { configureGuardrails } from "../core/guardrails.js";
|
|
14
|
+
import { configureGuardrails, guardrailValuesFromSettings } from "../core/guardrails.js";
|
|
15
15
|
import { HEADLESS_PERMISSION_DENIED_REASON } from "../core/headless-permission.js";
|
|
16
16
|
import { rememberRecentModel } from "../core/recent-models.js";
|
|
17
17
|
import { protectedResidencyModels } from "../core/residency-protection.js";
|
|
@@ -85,6 +85,7 @@ import {
|
|
|
85
85
|
} from "../domains/middleware/dispatch-nudge.js";
|
|
86
86
|
import {
|
|
87
87
|
createHookReceiptLog,
|
|
88
|
+
createMarketplaceOfferRegistration,
|
|
88
89
|
createMiddlewareToolChoiceControl,
|
|
89
90
|
createSkillsReminderRegistration,
|
|
90
91
|
type ExtensionHookRoot,
|
|
@@ -128,6 +129,7 @@ import { registerBuiltinRuntimes } from "../domains/providers/runtimes/builtins.
|
|
|
128
129
|
import {
|
|
129
130
|
createResourcesDomainModule,
|
|
130
131
|
discoverMarketplaceSkills,
|
|
132
|
+
installSkill,
|
|
131
133
|
modelVisibleSkills,
|
|
132
134
|
type ResourcesContract,
|
|
133
135
|
} from "../domains/resources/index.js";
|
|
@@ -229,11 +231,11 @@ function bannerConfigurationLine(): string {
|
|
|
229
231
|
}
|
|
230
232
|
// A dangling chat target normalizes to null in the schema, so a deleted
|
|
231
233
|
// target arrives here as no target at all rather than as a name to report.
|
|
232
|
-
const targetId = settings.
|
|
234
|
+
const targetId = settings.chat?.target;
|
|
233
235
|
if (!targetId) {
|
|
234
236
|
return chalk.yellow("no model target configured. Run `clio-coder configure` to add one.");
|
|
235
237
|
}
|
|
236
|
-
const model = settings.
|
|
238
|
+
const model = settings.chat?.model;
|
|
237
239
|
return chalk.dim(`target ${targetId}${model ? ` · model ${model}` : " · no default model"}`);
|
|
238
240
|
}
|
|
239
241
|
|
|
@@ -256,7 +258,7 @@ function printJsonSessionHeader(meta: SessionMeta | null): Record<string, unknow
|
|
|
256
258
|
cwd: meta.cwd,
|
|
257
259
|
target: meta.target,
|
|
258
260
|
model: meta.model,
|
|
259
|
-
|
|
261
|
+
clioCoderVersion: meta.clioCoderVersion,
|
|
260
262
|
};
|
|
261
263
|
}
|
|
262
264
|
|
|
@@ -266,17 +268,17 @@ function applyHeadlessSettingsOverlay(
|
|
|
266
268
|
): ClioSettings {
|
|
267
269
|
const next = structuredClone(settings);
|
|
268
270
|
if (!overrides) return next;
|
|
269
|
-
const previousTarget = next.
|
|
271
|
+
const previousTarget = next.chat.target;
|
|
270
272
|
if (overrides.target !== undefined) {
|
|
271
|
-
next.
|
|
272
|
-
if (overrides.model === undefined && (previousTarget !== overrides.target || !next.
|
|
273
|
+
next.chat.target = overrides.target;
|
|
274
|
+
if (overrides.model === undefined && (previousTarget !== overrides.target || !next.chat.model)) {
|
|
273
275
|
const target = next.targets.find((entry) => entry.id === overrides.target);
|
|
274
|
-
if (target) next.
|
|
276
|
+
if (target) next.chat.model = target.defaultModel ?? null;
|
|
275
277
|
}
|
|
276
278
|
}
|
|
277
|
-
if (overrides.model !== undefined) next.
|
|
278
|
-
if (overrides.thinking !== undefined) next.
|
|
279
|
-
if (overrides.autonomy !== undefined) next.autonomy = overrides.autonomy;
|
|
279
|
+
if (overrides.model !== undefined) next.chat.model = overrides.model;
|
|
280
|
+
if (overrides.thinking !== undefined) next.chat.thinkingLevel = overrides.thinking;
|
|
281
|
+
if (overrides.autonomy !== undefined) next.safety.autonomy = overrides.autonomy;
|
|
280
282
|
return next;
|
|
281
283
|
}
|
|
282
284
|
|
|
@@ -307,9 +309,9 @@ function advanceThinkingLevel(current: ThinkingLevel, available: ReadonlyArray<T
|
|
|
307
309
|
* model all send this placeholder so a local llama.cpp or LM Studio endpoint
|
|
308
310
|
* works without the user inventing a credential.
|
|
309
311
|
*/
|
|
310
|
-
const LOCAL_API_KEY_FALLBACK = "clio-local-target";
|
|
312
|
+
const LOCAL_API_KEY_FALLBACK = "clio-coder-local-target";
|
|
311
313
|
|
|
312
|
-
|
|
314
|
+
async function resolveApiKeyForTarget(
|
|
313
315
|
target: TargetDescriptor,
|
|
314
316
|
providers: ProvidersContract,
|
|
315
317
|
signal?: AbortSignal,
|
|
@@ -347,8 +349,8 @@ function createBackgroundMemoryModelClient(
|
|
|
347
349
|
timeoutMs: number,
|
|
348
350
|
bus: Pick<SafeEventBus, "emit"> | null,
|
|
349
351
|
): BackgroundMemoryRoute | null {
|
|
350
|
-
const targetId = settings.
|
|
351
|
-
const wireModelId = settings.
|
|
352
|
+
const targetId = settings.context.memory.target?.trim();
|
|
353
|
+
const wireModelId = settings.context.memory.model?.trim();
|
|
352
354
|
if (!targetId || !wireModelId) return null;
|
|
353
355
|
// One model cannot both drive the action agent and think its way through a
|
|
354
356
|
// memory step: the memory call would contend with the agent's own decoding on
|
|
@@ -445,8 +447,8 @@ function createBackgroundMemoryModelClient(
|
|
|
445
447
|
*/
|
|
446
448
|
function agentRoleToolWarnings(providers: ProvidersContract, settings: Readonly<ClioSettings>): string[] {
|
|
447
449
|
const roles: ReadonlyArray<{ label: string; target: string | null; model: string | null }> = [
|
|
448
|
-
{ label: "orchestrator", target: settings.
|
|
449
|
-
{ label: "workers.default", target: settings.
|
|
450
|
+
{ label: "orchestrator", target: settings.chat.target, model: settings.chat.model },
|
|
451
|
+
{ label: "workers.default", target: settings.fleet.default.target, model: settings.fleet.default.model },
|
|
450
452
|
];
|
|
451
453
|
const warnings: string[] = [];
|
|
452
454
|
for (const role of roles) {
|
|
@@ -478,12 +480,12 @@ function backgroundSharesReasoningModelWithOrchestrator(
|
|
|
478
480
|
providers: ProvidersContract,
|
|
479
481
|
settings: Readonly<ClioSettings>,
|
|
480
482
|
): boolean {
|
|
481
|
-
const backgroundModel = settings.
|
|
482
|
-
const orchestratorModel = settings.
|
|
483
|
+
const backgroundModel = settings.context.memory.model?.trim();
|
|
484
|
+
const orchestratorModel = settings.chat.model?.trim();
|
|
483
485
|
if (!backgroundModel || backgroundModel !== orchestratorModel) return false;
|
|
484
|
-
if (settings.
|
|
486
|
+
if (settings.context.memory.target?.trim() !== settings.chat.target?.trim()) return false;
|
|
485
487
|
try {
|
|
486
|
-
const status = providers.list().find((entry) => entry.target.id === settings.
|
|
488
|
+
const status = providers.list().find((entry) => entry.target.id === settings.context.memory.target?.trim());
|
|
487
489
|
if (!status) return false;
|
|
488
490
|
return resolveModelCapabilities(status, backgroundModel, providers.knowledgeBase).reasoning === true;
|
|
489
491
|
} catch {
|
|
@@ -493,7 +495,7 @@ function backgroundSharesReasoningModelWithOrchestrator(
|
|
|
493
495
|
}
|
|
494
496
|
}
|
|
495
497
|
|
|
496
|
-
|
|
498
|
+
function synthesizeOrchestratorModel(
|
|
497
499
|
providers: ProvidersContract,
|
|
498
500
|
target: TargetDescriptor,
|
|
499
501
|
wireModelId: string,
|
|
@@ -526,8 +528,8 @@ async function resolveCompactionModel(
|
|
|
526
528
|
settings: ClioSettings,
|
|
527
529
|
providers: ProvidersContract,
|
|
528
530
|
): Promise<CompactionResolution | null> {
|
|
529
|
-
const targetId = settings.
|
|
530
|
-
const wireModelId = settings.
|
|
531
|
+
const targetId = settings.chat?.target ?? null;
|
|
532
|
+
const wireModelId = settings.chat?.model ?? null;
|
|
531
533
|
if (!targetId || !wireModelId) return null;
|
|
532
534
|
const target = resolveTarget(providers, targetId);
|
|
533
535
|
if (!target) return null;
|
|
@@ -607,7 +609,7 @@ function appendProtectedArtifactRegistryEvent(
|
|
|
607
609
|
* subprocess, which makes this the only recording path there is. Returns how
|
|
608
610
|
* many were folded.
|
|
609
611
|
*/
|
|
610
|
-
|
|
612
|
+
function foldDispatchSkillActivations(
|
|
611
613
|
session: SessionContract | undefined,
|
|
612
614
|
payload: { runId?: unknown; skillActivations?: ReadonlyArray<unknown> } | undefined,
|
|
613
615
|
): number {
|
|
@@ -648,7 +650,7 @@ async function runCompactionFlow(
|
|
|
648
650
|
}
|
|
649
651
|
const resolved = await resolveCompactionModel(settings, providers);
|
|
650
652
|
if (!resolved) {
|
|
651
|
-
throw new Error("no model configured; set
|
|
653
|
+
throw new Error("no model configured; set chat.target + chat.model");
|
|
652
654
|
}
|
|
653
655
|
// Summarize only the active branch: after a /tree switch the raw file
|
|
654
656
|
// still holds abandoned sibling turns, and a summary that folds them in
|
|
@@ -704,7 +706,7 @@ async function runCompactionFlow(
|
|
|
704
706
|
* a thrown read/model/persistence failure from the legitimate null no-op that
|
|
705
707
|
* `runCompactionFlow` returns for an empty session or an unavailable cut.
|
|
706
708
|
*/
|
|
707
|
-
|
|
709
|
+
function createProductionAutoCompact(
|
|
708
710
|
session: SessionContract,
|
|
709
711
|
getSettings: () => ClioSettings,
|
|
710
712
|
providers: ProvidersContract,
|
|
@@ -751,11 +753,11 @@ function estimateTokensAfterCompaction(entries: ReadonlyArray<SessionEntry>, res
|
|
|
751
753
|
* ids or target/model refs. Absent scope is a no-op so unconfigured users
|
|
752
754
|
* feel nothing.
|
|
753
755
|
*/
|
|
754
|
-
|
|
756
|
+
function advanceScopedTarget(
|
|
755
757
|
settings: Readonly<ClioSettings>,
|
|
756
758
|
direction: "forward" | "backward",
|
|
757
759
|
): { target: string; model: string | null } | null {
|
|
758
|
-
const scope = settings.
|
|
760
|
+
const scope = settings.chat.modelPicker.cycleSet ?? [];
|
|
759
761
|
if (scope.length === 0) return null;
|
|
760
762
|
const registry = getRuntimeRegistry();
|
|
761
763
|
if (registry.list().length === 0) registerBuiltinRuntimes(registry);
|
|
@@ -767,8 +769,8 @@ export function advanceScopedTarget(
|
|
|
767
769
|
return runtime !== null && isOrchestratorEligibleRuntime(runtime);
|
|
768
770
|
});
|
|
769
771
|
if (filteredScope.length === 0) return null;
|
|
770
|
-
const activeTarget = settings.
|
|
771
|
-
const activeModel = settings.
|
|
772
|
+
const activeTarget = settings.chat.target ?? "";
|
|
773
|
+
const activeModel = settings.chat.model ?? "";
|
|
772
774
|
const activeCombinedRef = activeTarget.length > 0 && activeModel.length > 0 ? `${activeTarget}/${activeModel}` : "";
|
|
773
775
|
const idx = filteredScope.findIndex((entry) => entry === activeCombinedRef || entry === activeTarget);
|
|
774
776
|
const base = idx === -1 ? 0 : idx + (direction === "forward" ? 1 : filteredScope.length - 1);
|
|
@@ -866,7 +868,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
866
868
|
// is why `panes.enabled` is a restart-scoped row: the decision runs once,
|
|
867
869
|
// here. An inactive rung loads nothing: the whole extension, mux domain
|
|
868
870
|
// included, lives behind the dynamic import below.
|
|
869
|
-
const muxEnablement = resolvePanesEnablement(options.panes, options.startupSettings?.panes.enabled);
|
|
871
|
+
const muxEnablement = resolvePanesEnablement(options.panes, options.startupSettings?.interface.panes.enabled);
|
|
870
872
|
const withPanes = muxInteractive && muxEnablement !== "off" ? await import("./with-panes.js") : null;
|
|
871
873
|
|
|
872
874
|
const result = await loadDomains(
|
|
@@ -956,7 +958,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
956
958
|
bootStderr("Clio Coder: --api-key supplied but providers domain unavailable; ignoring.\n");
|
|
957
959
|
} else {
|
|
958
960
|
const settingsNow = applyHeadlessSettingsOverlay(config?.get() ?? readSettings(), options.headless);
|
|
959
|
-
const activeTargetId = settingsNow.
|
|
961
|
+
const activeTargetId = settingsNow.chat?.target;
|
|
960
962
|
const target = resolveTarget(providers, activeTargetId);
|
|
961
963
|
const runtime = target ? providers.getRuntime(target.runtime) : null;
|
|
962
964
|
if (target && runtime) {
|
|
@@ -1076,7 +1078,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1076
1078
|
bus.on(BusChannels.RuntimeNotice, (payload: unknown) => {
|
|
1077
1079
|
const notice = payload as { level?: string; message?: string } | undefined;
|
|
1078
1080
|
if (typeof notice?.message !== "string") return;
|
|
1079
|
-
process.stderr.write(`[clio:runtime] ${notice.level ?? "info"}: ${notice.message}\n`);
|
|
1081
|
+
process.stderr.write(`[clio-coder:runtime] ${notice.level ?? "info"}: ${notice.message}\n`);
|
|
1080
1082
|
});
|
|
1081
1083
|
}
|
|
1082
1084
|
|
|
@@ -1084,12 +1086,12 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1084
1086
|
// resolves settings-first with env as emergency override; install the
|
|
1085
1087
|
// settings section before any guard registration or tool reads it.
|
|
1086
1088
|
const resolvedSettings = config?.get() ?? readSettings();
|
|
1087
|
-
configureGuardrails(resolvedSettings
|
|
1089
|
+
configureGuardrails(guardrailValuesFromSettings(resolvedSettings));
|
|
1088
1090
|
|
|
1089
1091
|
// The run event journal resolves the same way for the same reason: the sink
|
|
1090
1092
|
// sits on the dispatch event path, where reading settings.yaml would be both
|
|
1091
1093
|
// a cost and a throw site, so the composition root installs the value once.
|
|
1092
|
-
configureRunEventJournal(resolvedSettings.
|
|
1094
|
+
configureRunEventJournal(resolvedSettings.fleet.history.journal);
|
|
1093
1095
|
|
|
1094
1096
|
// Guard registrations on the middleware contract, in order: loop guard,
|
|
1095
1097
|
// protected artifacts (last among guards so it absorbs protect_path effects
|
|
@@ -1183,7 +1185,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1183
1185
|
taskMemoryBank.clear();
|
|
1184
1186
|
taskMemorySessionId = currentSessionId;
|
|
1185
1187
|
};
|
|
1186
|
-
const memorySettings = (config?.get() ?? readSettings()).memory
|
|
1188
|
+
const memorySettings = (config?.get() ?? readSettings()).context.memory;
|
|
1187
1189
|
// Bound late: the registration is built here, but the buffer a deferred
|
|
1188
1190
|
// reminder lands in belongs to the chat loop that has not been composed yet.
|
|
1189
1191
|
let deferredMemoryReminderSink: ((message: string) => void) | null = null;
|
|
@@ -1233,12 +1235,12 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1233
1235
|
})
|
|
1234
1236
|
.then((result) => {
|
|
1235
1237
|
for (const error of result.errors) {
|
|
1236
|
-
process.stderr.write(`[clio:memory] proposed record not written for ${error}\n`);
|
|
1238
|
+
process.stderr.write(`[clio-coder:memory] proposed record not written for ${error}\n`);
|
|
1237
1239
|
}
|
|
1238
1240
|
})
|
|
1239
1241
|
.catch((error: unknown) => {
|
|
1240
1242
|
process.stderr.write(
|
|
1241
|
-
`[clio:memory] proposed records not written: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
1243
|
+
`[clio-coder:memory] proposed records not written: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
1242
1244
|
);
|
|
1243
1245
|
});
|
|
1244
1246
|
};
|
|
@@ -1252,14 +1254,21 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1252
1254
|
onDeferredReminder: (message) => deferredMemoryReminderSink?.(message),
|
|
1253
1255
|
getSettings: () => {
|
|
1254
1256
|
ensureTaskMemorySession();
|
|
1255
|
-
|
|
1257
|
+
const memory = effectiveSettingsForDispatch?.().context.memory ?? memorySettings;
|
|
1258
|
+
return {
|
|
1259
|
+
enabled: memory.enabled,
|
|
1260
|
+
everyNTools: memory.cadenceToolCalls,
|
|
1261
|
+
windowSteps: memory.trajectorySteps,
|
|
1262
|
+
maxTokens: memory.maxOutputTokens,
|
|
1263
|
+
timeoutMs: memory.timeoutMs,
|
|
1264
|
+
};
|
|
1256
1265
|
},
|
|
1257
1266
|
getModelClient: () => {
|
|
1258
1267
|
const settings = effectiveSettingsForDispatch?.();
|
|
1259
1268
|
backgroundMemoryRoute =
|
|
1260
1269
|
settings === undefined
|
|
1261
1270
|
? null
|
|
1262
|
-
: createBackgroundMemoryModelClient(providers, settings, settings.memory.
|
|
1271
|
+
: createBackgroundMemoryModelClient(providers, settings, settings.context.memory.timeoutMs, bus);
|
|
1263
1272
|
return backgroundMemoryRoute?.client ?? null;
|
|
1264
1273
|
},
|
|
1265
1274
|
getModelMaxTokens: (configuredMaxTokens) =>
|
|
@@ -1302,10 +1311,10 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1302
1311
|
});
|
|
1303
1312
|
if (!interactive) {
|
|
1304
1313
|
for (const issue of userHooks.fileIssues) {
|
|
1305
|
-
process.stderr.write(`[clio:hooks] ${issue.message}\n`);
|
|
1314
|
+
process.stderr.write(`[clio-coder:hooks] ${issue.message}\n`);
|
|
1306
1315
|
}
|
|
1307
1316
|
for (const issue of userHooks.issues) {
|
|
1308
|
-
process.stderr.write(`[clio:hooks] ${issue.source.sourcePath}#${issue.index}: ${issue.issues.join("; ")}\n`);
|
|
1317
|
+
process.stderr.write(`[clio-coder:hooks] ${issue.source.sourcePath}#${issue.index}: ${issue.issues.join("; ")}\n`);
|
|
1309
1318
|
}
|
|
1310
1319
|
}
|
|
1311
1320
|
termination.onDrain(() => hookReceiptLog.flush());
|
|
@@ -1317,11 +1326,29 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1317
1326
|
// through these two functions so a fallback added to one surface cannot
|
|
1318
1327
|
// silently skip another.
|
|
1319
1328
|
const resolveBaselineAutonomy = (): AutonomyLevel =>
|
|
1320
|
-
effectiveSettingsForDispatch?.().autonomy ??
|
|
1329
|
+
effectiveSettingsForDispatch?.().safety.autonomy ??
|
|
1321
1330
|
options.headless?.autonomy ??
|
|
1322
|
-
(config?.get() ?? readSettings()).autonomy ??
|
|
1331
|
+
(config?.get() ?? readSettings()).safety.autonomy ??
|
|
1323
1332
|
"auto-edit";
|
|
1324
1333
|
const resolveEffectiveAutonomy = (): AutonomyLevel => activeAcpSessionAutonomy ?? resolveBaselineAutonomy();
|
|
1334
|
+
// Marketplace self-promotion: coordinator-only by this wiring (never a
|
|
1335
|
+
// dispatch worker), local matcher, consented installs and full-auto
|
|
1336
|
+
// autonomous installs both pass the own-marketplace source gate inside the
|
|
1337
|
+
// registration. Registered here because it needs the effective-autonomy
|
|
1338
|
+
// resolution defined one line up.
|
|
1339
|
+
if (resources) {
|
|
1340
|
+
middleware.registerHook(
|
|
1341
|
+
createMarketplaceOfferRegistration({
|
|
1342
|
+
listInstalledSkillNames: () => resources.skills(process.cwd()).items.map((skill) => skill.name),
|
|
1343
|
+
listMarketplaceEntries: () => discoverMarketplaceSkills({ cwd: process.cwd() }).skills,
|
|
1344
|
+
getAutonomy: resolveEffectiveAutonomy,
|
|
1345
|
+
installEntry: (entry, scope) => {
|
|
1346
|
+
const installed = installSkill({ source: entry.sourceUrl, scope, name: entry.name, cwd: process.cwd() });
|
|
1347
|
+
return { path: installed.path, sourceUrl: installed.sourceUrl, installedHash: installed.installedHash };
|
|
1348
|
+
},
|
|
1349
|
+
}),
|
|
1350
|
+
);
|
|
1351
|
+
}
|
|
1325
1352
|
const middlewareToolChoice = createMiddlewareToolChoiceControl();
|
|
1326
1353
|
const toolRegistry = createRegistry({
|
|
1327
1354
|
safety,
|
|
@@ -1466,9 +1493,9 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1466
1493
|
// always refusing.
|
|
1467
1494
|
...(panes && mux?.mode !== "none" ? { panes } : {}),
|
|
1468
1495
|
getCostCeilingUsd: () => result.getContract<SchedulingContract>("scheduling")?.ceilingUsd() ?? 0,
|
|
1469
|
-
...(config ? { getWorkerRosters: () => config.get().
|
|
1496
|
+
...(config ? { getWorkerRosters: () => config.get().fleet.rosters } : {}),
|
|
1470
1497
|
getSkillLoaderOptions: () => ({
|
|
1471
|
-
trustProjectCompatRoots: config?.get().
|
|
1498
|
+
trustProjectCompatRoots: config?.get().integrations.projectResources.trustProjectImports === true,
|
|
1472
1499
|
disableDiscovery: options.noSkills === true || options.headless?.noSkills === true,
|
|
1473
1500
|
...(options.skillPaths && options.skillPaths.length > 0
|
|
1474
1501
|
? { explicitSkillPaths: options.skillPaths }
|
|
@@ -1509,7 +1536,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1509
1536
|
sessionStateGeneration += 1;
|
|
1510
1537
|
// Child-process seams read the effective setting from the environment,
|
|
1511
1538
|
// and the session view may override the saved value.
|
|
1512
|
-
setGitCommitAttributionEnabled(getCurrentSettings().
|
|
1539
|
+
setGitCommitAttributionEnabled(getCurrentSettings().integrations.git.commitAttribution);
|
|
1513
1540
|
};
|
|
1514
1541
|
const getCurrentSettings = (): ClioSettings => {
|
|
1515
1542
|
// Recents live in the data dir (core/recent-models.ts), never in
|
|
@@ -1540,15 +1567,11 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1540
1567
|
const unsubscribeCommitAttributionSync = bus.on(BusChannels.ConfigHotReload, () => bumpSessionState());
|
|
1541
1568
|
termination.onDrain(() => unsubscribeCommitAttributionSync());
|
|
1542
1569
|
const getTaskMemorySeedOffer = (): { source: string; count: number } | null => {
|
|
1543
|
-
return taskMemoryHandoffSeedOffer(process.cwd(), getCurrentSettings().memory.
|
|
1570
|
+
return taskMemoryHandoffSeedOffer(process.cwd(), getCurrentSettings().context.memory.enabled);
|
|
1544
1571
|
};
|
|
1545
1572
|
const seedCurrentTaskMemoryFromHandoff = () => {
|
|
1546
1573
|
ensureTaskMemorySession();
|
|
1547
|
-
return seedTaskMemoryFromNewestHandoff(
|
|
1548
|
-
taskMemoryBank,
|
|
1549
|
-
process.cwd(),
|
|
1550
|
-
getCurrentSettings().memory.intervention.enabled,
|
|
1551
|
-
);
|
|
1574
|
+
return seedTaskMemoryFromNewestHandoff(taskMemoryBank, process.cwd(), getCurrentSettings().context.memory.enabled);
|
|
1552
1575
|
};
|
|
1553
1576
|
if (resumedSessionAtBoot) {
|
|
1554
1577
|
const offer = getTaskMemorySeedOffer();
|
|
@@ -1568,7 +1591,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1568
1591
|
// routing change updates the set on the next read.
|
|
1569
1592
|
setProtectedModelsProvider(() => protectedResidencyModels(getCurrentSettings()));
|
|
1570
1593
|
|
|
1571
|
-
const validatedKeybindings = validateKeybindings((config?.get() ?? readSettings()).keybindings ?? {});
|
|
1594
|
+
const validatedKeybindings = validateKeybindings((config?.get() ?? readSettings()).interface.keybindings ?? {});
|
|
1572
1595
|
const invalidBindings = validatedKeybindings.invalid;
|
|
1573
1596
|
if (invalidBindings.length > 0) {
|
|
1574
1597
|
const notice = formatInvalidKeybindingNotice(invalidBindings);
|
|
@@ -1627,10 +1650,10 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1627
1650
|
const readAcpSafeSettings = (): AcpSafeSettingsSnapshot => {
|
|
1628
1651
|
const settings = getCurrentSettings();
|
|
1629
1652
|
return {
|
|
1630
|
-
target: settings.
|
|
1631
|
-
model: settings.
|
|
1632
|
-
thinkingLevel: settings.
|
|
1633
|
-
autonomy: settings.autonomy,
|
|
1653
|
+
target: settings.chat.target,
|
|
1654
|
+
model: settings.chat.model,
|
|
1655
|
+
thinkingLevel: settings.chat.thinkingLevel ?? "off",
|
|
1656
|
+
autonomy: settings.safety.autonomy,
|
|
1634
1657
|
};
|
|
1635
1658
|
};
|
|
1636
1659
|
/**
|
|
@@ -1640,15 +1663,15 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1640
1663
|
*/
|
|
1641
1664
|
const commitAcpSafeSettings = (patch: AcpSafeSettingsPatch): AcpSafeSettingsSnapshot => {
|
|
1642
1665
|
const orchestrator: NonNullable<RoutingPatch["orchestrator"]> = {};
|
|
1643
|
-
if (patch["
|
|
1644
|
-
if (patch["
|
|
1645
|
-
if (patch["
|
|
1646
|
-
orchestrator.thinkingLevel = patch["
|
|
1666
|
+
if (patch["chat.target"] !== undefined) orchestrator.target = patch["chat.target"];
|
|
1667
|
+
if (patch["chat.model"] !== undefined) orchestrator.model = patch["chat.model"];
|
|
1668
|
+
if (patch["chat.thinkingLevel"] !== undefined) {
|
|
1669
|
+
orchestrator.thinkingLevel = patch["chat.thinkingLevel"];
|
|
1647
1670
|
}
|
|
1648
1671
|
const routingPatch: RoutingPatch | null = Object.keys(orchestrator).length > 0 ? { orchestrator } : null;
|
|
1649
1672
|
persistSavedMutation((saved) => {
|
|
1650
1673
|
if (routingPatch !== null) mergeRoutingPatchIntoSettings(saved, routingPatch);
|
|
1651
|
-
if (patch.autonomy !== undefined) saved.autonomy = patch.autonomy;
|
|
1674
|
+
if (patch["safety.autonomy"] !== undefined) saved.safety.autonomy = patch["safety.autonomy"];
|
|
1652
1675
|
});
|
|
1653
1676
|
if (routingPatch !== null) {
|
|
1654
1677
|
applyRoutingPatch(sessionRouting, routingPatch);
|
|
@@ -1747,7 +1770,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1747
1770
|
middleware.registerHook(
|
|
1748
1771
|
createWatchdogRegistration({
|
|
1749
1772
|
firesOnThisSurface: interactive,
|
|
1750
|
-
getSettings: () => (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).
|
|
1773
|
+
getSettings: () => (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).safety.review,
|
|
1751
1774
|
getScope: () => {
|
|
1752
1775
|
const board = taskBoard.snapshot();
|
|
1753
1776
|
if (board === null) return null;
|
|
@@ -1759,7 +1782,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1759
1782
|
dispatch,
|
|
1760
1783
|
bus,
|
|
1761
1784
|
...(agents ? { getAgentRoleFacts: agentRoleFactsResolver((id: string) => agents.getSpec(id)) } : {}),
|
|
1762
|
-
target: (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).
|
|
1785
|
+
target: (effectiveSettingsForDispatch?.() ?? getCurrentSettings()).safety.review.target,
|
|
1763
1786
|
...(deferredWatchdogNoticeSink ? { emitNotice: deferredWatchdogNoticeSink } : {}),
|
|
1764
1787
|
}),
|
|
1765
1788
|
}),
|
|
@@ -1805,7 +1828,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1805
1828
|
try {
|
|
1806
1829
|
const records = loadMemoryRecordsSync(clioDataDir());
|
|
1807
1830
|
const settings = getCurrentSettings();
|
|
1808
|
-
const targetId = session?.current()?.target ?? settings.
|
|
1831
|
+
const targetId = session?.current()?.target ?? settings.chat?.target;
|
|
1809
1832
|
const runtimeId = targetId ? providers.getTarget(targetId)?.runtime : undefined;
|
|
1810
1833
|
return buildMemoryPromptSection(records, {
|
|
1811
1834
|
scopes: ["global", "repo", "runtime"],
|
|
@@ -1821,7 +1844,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1821
1844
|
const meta = session?.current();
|
|
1822
1845
|
if (!meta) throw new Error("task memory handoff requires an active session");
|
|
1823
1846
|
const settings = getCurrentSettings();
|
|
1824
|
-
const targetId = meta.target ?? settings.
|
|
1847
|
+
const targetId = meta.target ?? settings.chat?.target;
|
|
1825
1848
|
const runtimeId = targetId ? providers.getTarget(targetId)?.runtime : undefined;
|
|
1826
1849
|
return renderTaskMemoryHandoffSource(taskMemoryBank.snapshot(), {
|
|
1827
1850
|
sessionId: meta.id,
|
|
@@ -1930,7 +1953,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1930
1953
|
try {
|
|
1931
1954
|
session.appendEntry({
|
|
1932
1955
|
kind: "custom",
|
|
1933
|
-
customType: "clio.routing-notice",
|
|
1956
|
+
customType: "clio-coder.routing-notice",
|
|
1934
1957
|
parentTurnId: null,
|
|
1935
1958
|
data: { kind: notice.kind, level: notice.level, text: notice.text },
|
|
1936
1959
|
});
|
|
@@ -1964,8 +1987,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1964
1987
|
routing: () => {
|
|
1965
1988
|
const settings = getCurrentSettings();
|
|
1966
1989
|
return {
|
|
1967
|
-
target: settings.
|
|
1968
|
-
model: settings.
|
|
1990
|
+
target: settings.chat.target,
|
|
1991
|
+
model: settings.chat.model,
|
|
1969
1992
|
};
|
|
1970
1993
|
},
|
|
1971
1994
|
onActiveSessionAutonomyChange: (level) => {
|
|
@@ -1977,11 +2000,11 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
1977
2000
|
// as a provider's failure body, is kept off the wire and written to
|
|
1978
2001
|
// the unstructured stderr tail instead.
|
|
1979
2002
|
diagnostics: (line) => {
|
|
1980
|
-
process.stderr.write(`[clio:acp] ${line}\n`);
|
|
2003
|
+
process.stderr.write(`[clio-coder:acp] ${line}\n`);
|
|
1981
2004
|
},
|
|
1982
2005
|
permissionTimeoutMs:
|
|
1983
2006
|
options.acp.permissionTimeoutMs ??
|
|
1984
|
-
config?.get().
|
|
2007
|
+
config?.get().integrations.externalAgents.defaults.permissionTimeoutMs ??
|
|
1985
2008
|
DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS,
|
|
1986
2009
|
});
|
|
1987
2010
|
// Same ordering the termination drain hook relies on: an aborted turn's
|
|
@@ -2122,8 +2145,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
2122
2145
|
const settings = getCurrentSettings();
|
|
2123
2146
|
const bank = taskMemoryBank.snapshot();
|
|
2124
2147
|
return {
|
|
2125
|
-
enabled: settings.memory.
|
|
2126
|
-
tier: settings.
|
|
2148
|
+
enabled: settings.context.memory.enabled,
|
|
2149
|
+
tier: settings.context.memory.target && settings.context.memory.model ? "llm" : "rules",
|
|
2127
2150
|
size: taskMemoryBankSize(bank),
|
|
2128
2151
|
lastDecision: memoryIntervention.lastDecision(),
|
|
2129
2152
|
bank,
|
|
@@ -2225,25 +2248,21 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
2225
2248
|
onSetThinkingLevel: (level, scope) => {
|
|
2226
2249
|
const current = getCurrentSettings();
|
|
2227
2250
|
const nextLevel =
|
|
2228
|
-
resolveModelRuntimeCapabilitiesForProviders(
|
|
2229
|
-
|
|
2230
|
-
current.orchestrator.target,
|
|
2231
|
-
current.orchestrator.model,
|
|
2232
|
-
level,
|
|
2233
|
-
)?.thinking.effectiveLevel ?? "off";
|
|
2251
|
+
resolveModelRuntimeCapabilitiesForProviders(providers, current.chat.target, current.chat.model, level)?.thinking
|
|
2252
|
+
.effectiveLevel ?? "off";
|
|
2234
2253
|
applyRoutingAtScope({ orchestrator: { thinkingLevel: nextLevel } }, scope ?? "global");
|
|
2235
2254
|
},
|
|
2236
2255
|
onCycleThinking: () => {
|
|
2237
2256
|
const current = getCurrentSettings();
|
|
2238
2257
|
const thinking = resolveModelRuntimeCapabilitiesForProviders(
|
|
2239
2258
|
providers,
|
|
2240
|
-
current.
|
|
2241
|
-
current.
|
|
2242
|
-
current.
|
|
2259
|
+
current.chat.target,
|
|
2260
|
+
current.chat.model,
|
|
2261
|
+
current.chat.thinkingLevel ?? "off",
|
|
2243
2262
|
)?.thinking;
|
|
2244
2263
|
const effectiveAvailable = thinking?.supportedLevels ?? (["off"] as ThinkingLevel[]);
|
|
2245
2264
|
const nextLevel = advanceThinkingLevel(
|
|
2246
|
-
thinking?.effectiveLevel ?? current.
|
|
2265
|
+
thinking?.effectiveLevel ?? current.chat.thinkingLevel ?? "off",
|
|
2247
2266
|
effectiveAvailable,
|
|
2248
2267
|
);
|
|
2249
2268
|
updateSessionRouting({ orchestrator: { thinkingLevel: nextLevel } });
|
|
@@ -2268,7 +2287,7 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
2268
2287
|
applyRoutingAtScope({ orchestrator: { target, model } }, scope);
|
|
2269
2288
|
// Recents live in the state dir, not settings.yaml, and are how a swap
|
|
2270
2289
|
// stays reachable in the picker. A session-scoped swap still earns one.
|
|
2271
|
-
rememberRecentModel(`${target}/${model}`, getCurrentSettings().
|
|
2290
|
+
rememberRecentModel(`${target}/${model}`, getCurrentSettings().chat.modelPicker.recentLimit);
|
|
2272
2291
|
},
|
|
2273
2292
|
writeSettings: (next) => applySettingsBlob(next),
|
|
2274
2293
|
commitSetting: (id, next, scope) => commitSetting(id, next, scope),
|
|
@@ -2289,8 +2308,8 @@ export async function bootOrchestrator(options: BootOptions = {}): Promise<BootR
|
|
|
2289
2308
|
onNewSession: () => {
|
|
2290
2309
|
const settings = getCurrentSettings();
|
|
2291
2310
|
const input: { cwd: string; target?: string; model?: string } = { cwd: process.cwd() };
|
|
2292
|
-
if (settings.
|
|
2293
|
-
if (settings.
|
|
2311
|
+
if (settings.chat.target) input.target = settings.chat.target;
|
|
2312
|
+
if (settings.chat.model) input.model = settings.chat.model;
|
|
2294
2313
|
session.create(input);
|
|
2295
2314
|
taskBoard.snapshot();
|
|
2296
2315
|
ensureTaskMemorySession();
|
|
@@ -6,32 +6,32 @@ import { isEscapeKey, type OverlayState, overlayOwnsInput } from "./overlay-life
|
|
|
6
6
|
export const APPLICATION_DOUBLE_TAP_MS = 500;
|
|
7
7
|
|
|
8
8
|
const CLOSED_ACTION_ORDER = [
|
|
9
|
-
"clio.notifications.dismiss",
|
|
10
|
-
"clio.tool.expand",
|
|
11
|
-
"clio.tool.expandAll",
|
|
12
|
-
"clio.tool.liveOutput",
|
|
13
|
-
"clio.editor.external",
|
|
14
|
-
"clio.message.followUp",
|
|
15
|
-
"clio.message.interrupt",
|
|
16
|
-
"clio.message.dequeue",
|
|
17
|
-
"clio.thinking.expand",
|
|
18
|
-
"clio.thinking.expandAll",
|
|
9
|
+
"clio-coder.notifications.dismiss",
|
|
10
|
+
"clio-coder.tool.expand",
|
|
11
|
+
"clio-coder.tool.expandAll",
|
|
12
|
+
"clio-coder.tool.liveOutput",
|
|
13
|
+
"clio-coder.editor.external",
|
|
14
|
+
"clio-coder.message.followUp",
|
|
15
|
+
"clio-coder.message.interrupt",
|
|
16
|
+
"clio-coder.message.dequeue",
|
|
17
|
+
"clio-coder.thinking.expand",
|
|
18
|
+
"clio-coder.thinking.expandAll",
|
|
19
19
|
] as const satisfies ReadonlyArray<ClioKeybinding>;
|
|
20
20
|
|
|
21
21
|
const GLOBAL_ACTION_ORDER = [
|
|
22
|
-
"clio.status.toggle",
|
|
23
|
-
"clio.thinking.cycle",
|
|
24
|
-
"clio.session.tree",
|
|
25
|
-
"clio.dispatchBoard.toggle",
|
|
26
|
-
"clio.tasks.open",
|
|
27
|
-
"clio.decisions.open",
|
|
28
|
-
"clio.dispatch.background",
|
|
29
|
-
"clio.model.select",
|
|
22
|
+
"clio-coder.status.toggle",
|
|
23
|
+
"clio-coder.thinking.cycle",
|
|
24
|
+
"clio-coder.session.tree",
|
|
25
|
+
"clio-coder.dispatchBoard.toggle",
|
|
26
|
+
"clio-coder.tasks.open",
|
|
27
|
+
"clio-coder.decisions.open",
|
|
28
|
+
"clio-coder.dispatch.background",
|
|
29
|
+
"clio-coder.model.select",
|
|
30
30
|
// Backward stays ahead of forward so prefix-overlapping user bindings keep
|
|
31
31
|
// the same more-specific-first behavior as the original input listener.
|
|
32
|
-
"clio.model.cycleBackward",
|
|
33
|
-
"clio.model.cycleForward",
|
|
34
|
-
"clio.exit",
|
|
32
|
+
"clio-coder.model.cycleBackward",
|
|
33
|
+
"clio-coder.model.cycleForward",
|
|
34
|
+
"clio-coder.exit",
|
|
35
35
|
] as const satisfies ReadonlyArray<ClioKeybinding>;
|
|
36
36
|
|
|
37
37
|
export type CtrlCAction = "cancel-stream" | "close-overlay" | "clear-editor" | "arm-shutdown" | "shutdown";
|
|
@@ -125,7 +125,7 @@ function workerEscalationAxis(
|
|
|
125
125
|
return null;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
function middlewareBudgetWarningKey(payload: unknown): string | null {
|
|
129
129
|
if (!isMiddlewareHookFailedPayload(payload)) return null;
|
|
130
130
|
if (payload.kind !== "budget_exceeded") return null;
|
|
131
131
|
return `${payload.registrationId}\u0000${payload.hook}`;
|
|
@@ -137,7 +137,7 @@ export function middlewareBudgetWarningKey(payload: unknown): string | null {
|
|
|
137
137
|
* either way; this warn notice is the operator's only interactive signal
|
|
138
138
|
* that a guard or assessor is misbehaving.
|
|
139
139
|
*/
|
|
140
|
-
|
|
140
|
+
function middlewareHookFailedNotice(
|
|
141
141
|
payload: unknown,
|
|
142
142
|
options: MiddlewareHookFailedNoticeOptions = {},
|
|
143
143
|
): BusNotice | null {
|