@iowarp/clio-coder 0.3.9 → 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 +92 -0
- package/NOTICE +33 -0
- package/README.md +121 -16
- package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
- package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
- package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
- package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
- package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
- package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
- package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
- package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
- package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
- package/dist/chunk-42FMPA75.js +101 -0
- package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
- package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
- package/dist/chunk-5YHDIDBP.js +97 -0
- package/dist/chunk-6CCS4G3W.js +1529 -0
- package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
- package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
- package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
- package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
- package/dist/chunk-6NJQITNH.js +1412 -0
- package/dist/chunk-6VC4OV3Z.js +365 -0
- package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
- package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
- package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
- package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
- package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
- package/dist/chunk-7RY5VZPH.js +573 -0
- package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
- package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
- package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
- package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
- package/dist/chunk-AP73CFDC.js +308 -0
- package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
- package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
- package/dist/chunk-BJGUKIG4.js +302 -0
- package/dist/chunk-BMS5RKQY.js +27 -0
- package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
- 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-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
- package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
- package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
- package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
- package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
- package/dist/chunk-D4CJV46V.js +462 -0
- package/dist/chunk-D7E7WCDF.js +27 -0
- package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
- package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
- package/dist/chunk-EIMVLWB3.js +1842 -0
- package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
- package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
- package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
- package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
- package/dist/chunk-GIZNH63R.js +40 -0
- package/dist/chunk-GPPB3JBE.js +688 -0
- package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
- package/dist/chunk-HHV2GANA.js +88 -0
- package/dist/chunk-HJWWJ6IL.js +184 -0
- package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
- package/dist/chunk-HRQMFLJP.js +75 -0
- package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
- package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
- package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
- package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
- package/dist/chunk-J4HBWF6Y.js +2635 -0
- package/dist/chunk-J5LZHVIT.js +284 -0
- package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
- package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
- package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
- package/dist/chunk-K6BF4U2H.js +1785 -0
- package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
- package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
- package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
- package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
- package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
- package/dist/chunk-NDDGJUXD.js +81 -0
- package/dist/chunk-NEKRRTYW.js +56 -0
- package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
- package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
- package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
- package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
- package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
- package/dist/chunk-PMZCIOCJ.js +25 -0
- package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
- package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
- package/dist/chunk-QDC3K2U3.js +262 -0
- package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
- package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
- package/dist/chunk-QSNYB6ZV.js +195 -0
- package/dist/chunk-QTFGO774.js +644 -0
- package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
- package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
- package/dist/chunk-R346GLFC.js +31 -0
- package/dist/chunk-RKSR6VSF.js +132 -0
- package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
- package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
- package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
- package/dist/chunk-T56WDKA5.js +183 -0
- package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
- package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
- package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
- package/dist/chunk-TVHHYFHE.js +255 -0
- package/dist/chunk-U2WB7TZS.js +271 -0
- package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
- package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
- package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
- package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
- package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
- package/dist/chunk-VKFQTNDV.js +66 -0
- package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
- package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
- package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
- package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
- package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
- package/dist/chunk-WR6U3OVP.js +45 -0
- package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
- package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
- package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
- package/dist/chunk-YAKGTXEV.js +17 -0
- package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
- package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
- package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
- package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
- package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
- package/dist/cli/index.js +48 -37
- package/dist/clio-IT3G3VQH.js +25 -0
- package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
- package/dist/codewiki/build-worker.js +1 -1
- package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
- package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
- package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
- package/dist/configure-FL7Y3KJF.js +54 -0
- package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
- package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
- package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
- package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
- package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
- package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
- package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
- package/dist/doctor-ZGPEGHIP.js +772 -0
- package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
- package/dist/eval-inventory-HBWSWQOK.js +315 -0
- package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
- package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
- package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
- package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
- package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
- package/dist/fleet-decisions-OTHB6KRL.js +157 -0
- package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
- package/dist/fleet-inspect-SS6YMDCK.js +445 -0
- package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
- package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
- package/dist/fleet-verify-QD5M7E7Q.js +178 -0
- package/dist/fleet-view-WAMJYNDT.js +94 -0
- package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
- package/dist/install-NKNG7KD4.js +13 -0
- package/dist/interop-34TVO25M.js +116 -0
- package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
- package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
- package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
- package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
- package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
- package/dist/panes-7STHOAUJ.js +103 -0
- package/dist/panes-SHAUIRXY.js +60 -0
- package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
- package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
- package/dist/resources-74GKTLSF.js +115 -0
- package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
- package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
- package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
- package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
- package/dist/skills-inventory-J357J34F.js +129 -0
- package/dist/slash-commands-JZZCQA32.js +79 -0
- package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
- package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
- package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
- package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
- package/dist/tools-MKNWVPBH.js +29 -0
- package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
- package/dist/tui-primitives-K5PASC3O.js +17 -0
- package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
- package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
- package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
- package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
- package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
- package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
- package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
- package/dist/with-panes-OBOBFIIR.js +818 -0
- package/dist/worker/entry.js +131 -91
- package/docs/README.md +3 -2
- package/docs/acp.md +25 -4
- 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 +40 -32
- package/docs/capacity-and-scheduling.md +43 -5
- package/docs/commands-and-modes.md +39 -4
- package/docs/config-knobs-audit.md +3 -0
- package/docs/configuration-and-targets.md +138 -167
- 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 +3 -1
- 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 +3 -1
- package/docs/extensions-and-sharing.md +25 -1
- package/docs/fleet-demo-runbook.md +6 -3
- package/docs/fleet-dispatch.md +30 -7
- package/docs/installation-and-lifecycle.md +16 -3
- 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/release-cut-checklist.md +164 -177
- 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 +16 -11
- package/docs/troubleshooting.md +2 -2
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.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 +8 -16
- 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 +8 -4
- package/src/cli/argv.ts +25 -0
- 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 +50 -48
- 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 +156 -0
- package/src/cli/doctor-toolchain.ts +78 -0
- package/src/cli/doctor.ts +34 -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-preflight.ts +1 -1
- package/src/cli/fleet-verify.ts +133 -0
- package/src/cli/fleet-view.ts +827 -0
- package/src/cli/fleet.ts +154 -40
- 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/models.ts +3 -3
- package/src/cli/modes/print.ts +1 -1
- package/src/cli/panes.ts +35 -0
- package/src/cli/reset.ts +6 -3
- package/src/cli/run.ts +67 -13
- package/src/cli/share.ts +1 -1
- package/src/cli/skills-eval.ts +11 -11
- package/src/cli/skills-inventory.ts +185 -0
- package/src/cli/skills.ts +16 -13
- package/src/cli/targets.ts +23 -24
- package/src/cli/tools.ts +321 -0
- package/src/cli/trace-inspect.ts +252 -0
- package/src/cli/trace.ts +64 -2
- 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 +347 -0
- package/src/cli/verifiers.ts +9 -0
- 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-events.ts +4 -0
- package/src/core/bus-trace.ts +2 -2
- package/src/core/compile-cache.ts +1 -1
- package/src/core/config.ts +1070 -845
- package/src/core/defaults.ts +342 -463
- 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/response-schema.ts +44 -4
- 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/theme-token-hex.ts +43 -0
- package/src/core/timers.ts +2 -12
- package/src/core/tool-names.ts +2 -1
- package/src/core/xdg.ts +1 -1
- package/src/domains/agents/catalog.ts +2 -12
- package/src/domains/agents/extension.ts +3 -3
- package/src/domains/agents/fleets/build-review.md +0 -3
- package/src/domains/agents/fleets/build-test.md +0 -3
- package/src/domains/agents/registry.ts +7 -7
- package/src/domains/agents/result-contract-filesystem.ts +32 -0
- package/src/domains/agents/result-contract.ts +165 -36
- package/src/domains/agents/spec.ts +0 -11
- package/src/domains/config/classify.ts +37 -46
- 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/admission-error.ts +9 -0
- package/src/domains/dispatch/admission.ts +22 -21
- 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 +23 -6
- package/src/domains/dispatch/code-step.ts +1 -1
- package/src/domains/dispatch/contract.ts +2 -2
- package/src/domains/dispatch/council-topology.ts +398 -0
- package/src/domains/dispatch/extension.ts +287 -111
- package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
- package/src/domains/dispatch/fleet-plan.ts +7 -2
- package/src/domains/dispatch/fleet-preflight.ts +8 -17
- package/src/domains/dispatch/fleet-run.ts +59 -3
- package/src/domains/dispatch/gate-decisions.ts +36 -15
- 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/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 +24 -27
- 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-bridge.ts +149 -0
- package/src/domains/dispatch/run-event-journal.ts +599 -0
- package/src/domains/dispatch/state.ts +45 -1
- package/src/domains/dispatch/tool-stats.ts +1 -1
- package/src/domains/dispatch/transport.ts +2 -19
- package/src/domains/dispatch/types.ts +16 -3
- package/src/domains/dispatch/validation.ts +33 -8
- package/src/domains/dispatch/worker-protocol.ts +2 -2
- package/src/domains/eval/artifacts/store.ts +5 -4
- package/src/domains/eval/compare/compare.ts +3 -16
- package/src/domains/eval/compare/thresholds.ts +0 -8
- package/src/domains/eval/execution-provenance.ts +1 -1
- package/src/domains/eval/inventory.ts +113 -0
- 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/serving.ts +31 -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/evidence/store.ts +6 -0
- 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/index.ts +0 -1
- package/src/domains/memory/task-memory-handoff.ts +6 -3
- package/src/domains/memory/task-memory-policy.ts +6 -10
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +339 -0
- package/src/domains/middleware/memory-intervention.ts +33 -21
- package/src/domains/middleware/runtime.ts +2 -2
- package/src/domains/mux/contract.ts +566 -0
- package/src/domains/mux/detect.ts +182 -0
- package/src/domains/mux/dock-controller.ts +365 -0
- package/src/domains/mux/extension.ts +53 -0
- package/src/domains/mux/index.ts +116 -0
- package/src/domains/mux/manifest.ts +6 -0
- package/src/domains/mux/operations.ts +192 -0
- package/src/domains/mux/pane-registry.ts +90 -0
- package/src/domains/mux/protocol.ts +62 -0
- package/src/domains/mux/socket-client.ts +964 -0
- package/src/domains/mux/types.ts +265 -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 +182 -0
- package/src/domains/mux/yazi/profile.ts +299 -0
- package/src/domains/mux/yazi/session.ts +251 -0
- package/src/domains/mux/yazi/theme.ts +30 -0
- package/src/domains/observability/cost.ts +21 -0
- package/src/domains/observability/extension.ts +1 -1
- package/src/domains/observability/index.ts +2 -0
- 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 +63 -11
- 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/endpoint-capacity.ts +154 -22
- package/src/domains/providers/endpoint-slots-store.ts +189 -0
- package/src/domains/providers/extension.ts +25 -8
- package/src/domains/providers/index.ts +22 -0
- package/src/domains/providers/knowledge-base-path.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +46 -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/boot-manifest.ts +1 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -0
- 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 +285 -0
- package/src/domains/providers/support.ts +1 -0
- package/src/domains/providers/target-model-cache.ts +124 -0
- 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/index.ts +3 -0
- 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 +72 -13
- package/src/domains/resources/skills/marketplace.ts +21 -2
- package/src/domains/resources/skills/promotion.ts +214 -0
- package/src/domains/safety/action-classifier.ts +6 -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/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/adapter.ts +3 -3
- package/src/engine/acp/event-mapper.ts +3 -3
- package/src/engine/acp/server.ts +440 -96
- package/src/engine/acp/tool-mediator.ts +2 -2
- package/src/engine/acp/types.ts +20 -2
- 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 +87 -0
- package/src/engine/claude/sdk-runtime.ts +25 -17
- 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 +21 -0
- package/src/engine/tui.ts +1 -0
- package/src/engine/worker-events.ts +6 -6
- package/src/engine/worker-runtime.ts +16 -26
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +207 -90
- package/src/entry/panes-activation.ts +31 -0
- package/src/entry/with-panes.ts +20 -0
- 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 +2 -1
- package/src/interactive/cost-overlay.ts +3 -1
- package/src/interactive/council-grid.ts +3 -5
- package/src/interactive/council.ts +11 -0
- package/src/interactive/dispatch-board.ts +56 -49
- 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 +229 -62
- package/src/interactive/interactive-event-projection.ts +1 -1
- package/src/interactive/interactive-input-runtime.ts +9 -2
- package/src/interactive/interactive-presentation.ts +21 -16
- package/src/interactive/interactive-shell.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +99 -23
- 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 +3 -2
- package/src/interactive/modal-marker.ts +151 -0
- package/src/interactive/mutation-preview.ts +1 -1
- package/src/interactive/mux-bridge.ts +214 -0
- package/src/interactive/overlay-frame.ts +62 -14
- package/src/interactive/overlay-general-openers.ts +7 -2
- package/src/interactive/overlay-key-routing.ts +21 -10
- package/src/interactive/overlay-lifecycle.ts +20 -4
- package/src/interactive/overlay-model-selectors.ts +43 -6
- package/src/interactive/overlay-permission-lifecycle.ts +90 -22
- package/src/interactive/overlay-transitions.ts +18 -4
- package/src/interactive/overlays/agents.ts +3 -2
- package/src/interactive/overlays/ask-user.ts +161 -41
- package/src/interactive/overlays/auth-dialog.ts +1 -0
- package/src/interactive/overlays/context-reset.ts +29 -4
- package/src/interactive/overlays/cwd-fallback.ts +29 -4
- package/src/interactive/overlays/decisions.ts +15 -13
- package/src/interactive/overlays/extensions.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +4 -3
- package/src/interactive/overlays/handoff-review.ts +3 -2
- package/src/interactive/overlays/help-reference.ts +2 -0
- package/src/interactive/overlays/interop.ts +2 -1
- package/src/interactive/overlays/library-install-confirm.ts +2 -1
- 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 +2 -1
- package/src/interactive/overlays/model-scope.ts +86 -0
- package/src/interactive/overlays/model-selector.ts +40 -31
- package/src/interactive/overlays/prompts.ts +11 -4
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +30 -0
- package/src/interactive/overlays/settings.ts +849 -268
- package/src/interactive/overlays/side-question.ts +3 -2
- package/src/interactive/overlays/skills-hub.ts +11 -19
- package/src/interactive/overlays/tree-selector.ts +3 -2
- package/src/interactive/pane-policy.ts +46 -0
- package/src/interactive/panes-runtime.ts +318 -0
- package/src/interactive/permission-overlay.ts +2 -2
- package/src/interactive/renderers/compaction-summary.ts +29 -0
- package/src/interactive/renderers/retry-status.ts +12 -4
- package/src/interactive/renderers/tool-execution.ts +4 -4
- package/src/interactive/renderers/worker-entry.ts +122 -14
- package/src/interactive/session-transcript.ts +3 -3
- package/src/interactive/slash-autocomplete.ts +454 -165
- package/src/interactive/slash-commands.ts +521 -189
- 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 +21 -13
- package/src/interactive/terminal-lease.ts +6 -7
- package/src/interactive/theme/tokens.ts +3 -14
- package/src/interactive/turn-context.ts +58 -13
- 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 +120 -9
- package/src/interactive/view/view-overlay.ts +14 -10
- package/src/interactive/watch-pane.ts +180 -0
- package/src/interactive/welcome-dashboard.ts +15 -15
- package/src/interactive/worker-progress.ts +11 -5
- package/src/interactive/worker-receipts.ts +20 -2
- package/src/interactive/worker-stream.ts +6 -4
- package/src/interactive/yazi-bridge.ts +451 -0
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +26 -2
- package/src/tools/builtin-tool-catalog.ts +16 -1
- package/src/tools/compete-worktrees.ts +108 -17
- package/src/tools/context/index.ts +15 -1
- package/src/tools/core-bootstrap.ts +2 -1
- package/src/tools/dispatch-admission.ts +18 -5
- package/src/tools/dispatch-arguments.ts +21 -21
- package/src/tools/dispatch-plan.ts +0 -11
- package/src/tools/dispatch-run-events.ts +145 -28
- package/src/tools/dispatch-runner.ts +40 -13
- package/src/tools/dispatch-types.ts +15 -3
- package/src/tools/dispatch.ts +2 -2
- package/src/tools/executables.ts +17 -14
- package/src/tools/find.ts +1 -6
- package/src/tools/monitor.ts +4 -4
- package/src/tools/observation.ts +54 -4
- package/src/tools/observers.ts +0 -33
- 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/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-D73KXYPF.js +0 -37
- package/dist/chunk-MLOK6ZOS.js +0 -2888
- package/dist/chunk-PNY46YEY.js +0 -1581
- package/dist/chunk-XDOQXGFO.js +0 -515
- package/dist/chunk-YKOFT37S.js +0 -279
- package/dist/clio-LT5V7SSZ.js +0 -26
- package/dist/configure-2WYWSCSD.js +0 -49
- package/dist/doctor-TWBWFK5V.js +0 -165
- 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
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import type { ClioSettings } from "./config.js";
|
|
20
20
|
|
|
21
|
-
type SessionThinkingLevel = ClioSettings["
|
|
21
|
+
type SessionThinkingLevel = ClioSettings["chat"]["thinkingLevel"];
|
|
22
22
|
|
|
23
23
|
export interface SessionRoutingTarget {
|
|
24
24
|
target: string | null;
|
|
@@ -28,7 +28,7 @@ export interface SessionRoutingTarget {
|
|
|
28
28
|
|
|
29
29
|
export interface SessionRoutingState {
|
|
30
30
|
orchestrator: SessionRoutingTarget;
|
|
31
|
-
background: SessionRoutingTarget
|
|
31
|
+
background: Pick<SessionRoutingTarget, "target" | "model">;
|
|
32
32
|
workersDefault: SessionRoutingTarget;
|
|
33
33
|
scope: string[];
|
|
34
34
|
}
|
|
@@ -40,7 +40,7 @@ export interface SessionRoutingState {
|
|
|
40
40
|
*/
|
|
41
41
|
export interface RoutingPatch {
|
|
42
42
|
orchestrator?: Partial<SessionRoutingTarget>;
|
|
43
|
-
background?: Partial<SessionRoutingTarget
|
|
43
|
+
background?: Partial<Pick<SessionRoutingTarget, "target" | "model">>;
|
|
44
44
|
workersDefault?: Partial<SessionRoutingTarget>;
|
|
45
45
|
scope?: string[];
|
|
46
46
|
}
|
|
@@ -59,10 +59,10 @@ function targetFrom(source: {
|
|
|
59
59
|
|
|
60
60
|
export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutingState {
|
|
61
61
|
return {
|
|
62
|
-
orchestrator: targetFrom(saved.
|
|
63
|
-
background:
|
|
64
|
-
workersDefault: targetFrom(saved.
|
|
65
|
-
scope: [...
|
|
62
|
+
orchestrator: targetFrom(saved.chat),
|
|
63
|
+
background: { target: saved.context.memory.target, model: saved.context.memory.model },
|
|
64
|
+
workersDefault: targetFrom(saved.fleet.default),
|
|
65
|
+
scope: [...saved.chat.modelPicker.cycleSet],
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -73,16 +73,15 @@ export function seedSessionRouting(saved: Readonly<ClioSettings>): SessionRoutin
|
|
|
73
73
|
*/
|
|
74
74
|
export function applySessionRouting(saved: Readonly<ClioSettings>, routing: SessionRoutingState): ClioSettings {
|
|
75
75
|
const view = structuredClone(saved) as ClioSettings;
|
|
76
|
-
view.
|
|
77
|
-
view.
|
|
78
|
-
view.
|
|
79
|
-
view.
|
|
80
|
-
view.
|
|
81
|
-
view.
|
|
82
|
-
view.
|
|
83
|
-
view.
|
|
84
|
-
view.
|
|
85
|
-
view.scope = [...routing.scope];
|
|
76
|
+
view.chat.target = routing.orchestrator.target;
|
|
77
|
+
view.chat.model = routing.orchestrator.model;
|
|
78
|
+
view.chat.thinkingLevel = routing.orchestrator.thinkingLevel;
|
|
79
|
+
view.context.memory.target = routing.background.target;
|
|
80
|
+
view.context.memory.model = routing.background.model;
|
|
81
|
+
view.fleet.default.target = routing.workersDefault.target;
|
|
82
|
+
view.fleet.default.model = routing.workersDefault.model;
|
|
83
|
+
view.fleet.default.thinkingLevel = routing.workersDefault.thinkingLevel;
|
|
84
|
+
view.chat.modelPicker.cycleSet = [...routing.scope];
|
|
86
85
|
return view;
|
|
87
86
|
}
|
|
88
87
|
|
|
@@ -107,14 +106,21 @@ export type SessionOverrides = Map<string, unknown>;
|
|
|
107
106
|
|
|
108
107
|
/** True for the dotted paths owned by the session routing state (never overrides). */
|
|
109
108
|
export function isRoutingPath(path: string): boolean {
|
|
110
|
-
return (
|
|
111
|
-
path === "scope" ||
|
|
112
|
-
path.startsWith("orchestrator.") ||
|
|
113
|
-
path.startsWith("background.") ||
|
|
114
|
-
path.startsWith("workers.default.")
|
|
115
|
-
);
|
|
109
|
+
return ROUTING_PATHS.has(path);
|
|
116
110
|
}
|
|
117
111
|
|
|
112
|
+
const ROUTING_PATHS = new Set<string>([
|
|
113
|
+
"chat.target",
|
|
114
|
+
"chat.model",
|
|
115
|
+
"chat.thinkingLevel",
|
|
116
|
+
"context.memory.target",
|
|
117
|
+
"context.memory.model",
|
|
118
|
+
"fleet.default.target",
|
|
119
|
+
"fleet.default.model",
|
|
120
|
+
"fleet.default.thinkingLevel",
|
|
121
|
+
"chat.modelPicker.cycleSet",
|
|
122
|
+
]);
|
|
123
|
+
|
|
118
124
|
/** Read a leaf from a settings blob by dotted object path. Missing ⇒ undefined. */
|
|
119
125
|
export function getAtPath(source: Readonly<ClioSettings>, path: string): unknown {
|
|
120
126
|
let cursor: unknown = source;
|
|
@@ -159,10 +165,10 @@ export function applyOverrides(base: Readonly<ClioSettings>, overrides: SessionO
|
|
|
159
165
|
|
|
160
166
|
/** Write-through of a routing patch onto a (cloned) saved-settings blob. */
|
|
161
167
|
export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: RoutingPatch): void {
|
|
162
|
-
if (patch.orchestrator) Object.assign(settings.
|
|
163
|
-
if (patch.background) Object.assign(settings.
|
|
164
|
-
if (patch.workersDefault) Object.assign(settings.
|
|
165
|
-
if (patch.scope) settings.
|
|
168
|
+
if (patch.orchestrator) Object.assign(settings.chat, patch.orchestrator);
|
|
169
|
+
if (patch.background) Object.assign(settings.context.memory, patch.background);
|
|
170
|
+
if (patch.workersDefault) Object.assign(settings.fleet.default, patch.workersDefault);
|
|
171
|
+
if (patch.scope) settings.chat.modelPicker.cycleSet = [...patch.scope];
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
/**
|
|
@@ -176,26 +182,24 @@ export function mergeRoutingPatchIntoSettings(settings: ClioSettings, patch: Rou
|
|
|
176
182
|
*/
|
|
177
183
|
export function routingPatchForId(path: string, settings: Readonly<ClioSettings>): RoutingPatch | null {
|
|
178
184
|
switch (path) {
|
|
179
|
-
case "
|
|
180
|
-
return { orchestrator: { target: settings.
|
|
181
|
-
case "
|
|
182
|
-
return { orchestrator: { model: settings.
|
|
183
|
-
case "
|
|
184
|
-
return { orchestrator: { thinkingLevel: settings.
|
|
185
|
-
case "
|
|
186
|
-
return { background: { target: settings.
|
|
187
|
-
case "
|
|
188
|
-
return { background: { model: settings.
|
|
189
|
-
case "
|
|
190
|
-
return {
|
|
191
|
-
case "
|
|
192
|
-
return { workersDefault: {
|
|
193
|
-
case "
|
|
194
|
-
return { workersDefault: {
|
|
195
|
-
case "
|
|
196
|
-
return {
|
|
197
|
-
case "scope":
|
|
198
|
-
return { scope: [...(settings.scope ?? [])] };
|
|
185
|
+
case "chat.target":
|
|
186
|
+
return { orchestrator: { target: settings.chat.target, model: settings.chat.model } };
|
|
187
|
+
case "chat.model":
|
|
188
|
+
return { orchestrator: { model: settings.chat.model } };
|
|
189
|
+
case "chat.thinkingLevel":
|
|
190
|
+
return { orchestrator: { thinkingLevel: settings.chat.thinkingLevel } };
|
|
191
|
+
case "context.memory.target":
|
|
192
|
+
return { background: { target: settings.context.memory.target, model: settings.context.memory.model } };
|
|
193
|
+
case "context.memory.model":
|
|
194
|
+
return { background: { model: settings.context.memory.model } };
|
|
195
|
+
case "fleet.default.target":
|
|
196
|
+
return { workersDefault: { target: settings.fleet.default.target, model: settings.fleet.default.model } };
|
|
197
|
+
case "fleet.default.model":
|
|
198
|
+
return { workersDefault: { model: settings.fleet.default.model } };
|
|
199
|
+
case "fleet.default.thinkingLevel":
|
|
200
|
+
return { workersDefault: { thinkingLevel: settings.fleet.default.thinkingLevel } };
|
|
201
|
+
case "chat.modelPicker.cycleSet":
|
|
202
|
+
return { scope: [...settings.chat.modelPicker.cycleSet] };
|
|
199
203
|
default:
|
|
200
204
|
return null;
|
|
201
205
|
}
|
|
@@ -224,13 +228,17 @@ function scopeEquals(a: ReadonlyArray<string>, b: ReadonlyArray<string>): boolea
|
|
|
224
228
|
*/
|
|
225
229
|
export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSettings>): RoutingPatch | null {
|
|
226
230
|
const patch: RoutingPatch = {};
|
|
227
|
-
const orchestrator = diffTarget(prev.
|
|
231
|
+
const orchestrator = diffTarget(prev.chat, next.chat);
|
|
228
232
|
if (orchestrator) patch.orchestrator = orchestrator;
|
|
229
|
-
const background = diffTarget(
|
|
233
|
+
const background = diffTarget(
|
|
234
|
+
{ ...prev.context.memory, thinkingLevel: "off" },
|
|
235
|
+
{ ...next.context.memory, thinkingLevel: "off" },
|
|
236
|
+
);
|
|
230
237
|
if (background) patch.background = background;
|
|
231
|
-
const workersDefault = diffTarget(prev.
|
|
238
|
+
const workersDefault = diffTarget(prev.fleet.default, next.fleet.default);
|
|
232
239
|
if (workersDefault) patch.workersDefault = workersDefault;
|
|
233
|
-
if (!scopeEquals(prev.
|
|
240
|
+
if (!scopeEquals(prev.chat.modelPicker.cycleSet, next.chat.modelPicker.cycleSet))
|
|
241
|
+
patch.scope = [...next.chat.modelPicker.cycleSet];
|
|
234
242
|
return Object.keys(patch).length > 0 ? patch : null;
|
|
235
243
|
}
|
|
236
244
|
|
|
@@ -241,16 +249,15 @@ export function diffRouting(prev: Readonly<ClioSettings>, next: Readonly<ClioSet
|
|
|
241
249
|
* saved routing defaults with this session's live routing.
|
|
242
250
|
*/
|
|
243
251
|
export function restoreRoutingFields(target: ClioSettings, source: Readonly<ClioSettings>): void {
|
|
244
|
-
target.
|
|
245
|
-
target.
|
|
246
|
-
target.
|
|
247
|
-
target.
|
|
248
|
-
target.
|
|
249
|
-
target.
|
|
250
|
-
target.
|
|
251
|
-
target.
|
|
252
|
-
target.
|
|
253
|
-
target.scope = [...(source.scope ?? [])];
|
|
252
|
+
target.chat.target = source.chat.target;
|
|
253
|
+
target.chat.model = source.chat.model;
|
|
254
|
+
target.chat.thinkingLevel = source.chat.thinkingLevel;
|
|
255
|
+
target.context.memory.target = source.context.memory.target;
|
|
256
|
+
target.context.memory.model = source.context.memory.model;
|
|
257
|
+
target.fleet.default.target = source.fleet.default.target;
|
|
258
|
+
target.fleet.default.model = source.fleet.default.model;
|
|
259
|
+
target.fleet.default.thinkingLevel = source.fleet.default.thinkingLevel;
|
|
260
|
+
target.chat.modelPicker.cycleSet = [...source.chat.modelPicker.cycleSet];
|
|
254
261
|
}
|
|
255
262
|
|
|
256
263
|
const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
@@ -258,20 +265,23 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
|
258
265
|
label: string;
|
|
259
266
|
read: (settings: Readonly<ClioSettings>) => unknown;
|
|
260
267
|
}> = [
|
|
261
|
-
{ field: "
|
|
262
|
-
{ field: "
|
|
263
|
-
{ field: "
|
|
264
|
-
{ field: "
|
|
265
|
-
{ field: "
|
|
266
|
-
{ field: "
|
|
267
|
-
{ field: "
|
|
268
|
-
{ field: "workers.default.model", label: "fleet model", read: (s) => s.workers.default.model ?? null },
|
|
268
|
+
{ field: "chat.target", label: "chat target", read: (s) => s.chat.target ?? null },
|
|
269
|
+
{ field: "chat.model", label: "chat model", read: (s) => s.chat.model ?? null },
|
|
270
|
+
{ field: "chat.thinkingLevel", label: "chat thinking", read: (s) => s.chat.thinkingLevel ?? "off" },
|
|
271
|
+
{ field: "context.memory.target", label: "memory target", read: (s) => s.context.memory.target ?? null },
|
|
272
|
+
{ field: "context.memory.model", label: "memory model", read: (s) => s.context.memory.model ?? null },
|
|
273
|
+
{ field: "fleet.default.target", label: "fleet target", read: (s) => s.fleet.default.target ?? null },
|
|
274
|
+
{ field: "fleet.default.model", label: "fleet model", read: (s) => s.fleet.default.model ?? null },
|
|
269
275
|
{
|
|
270
|
-
field: "
|
|
276
|
+
field: "fleet.default.thinkingLevel",
|
|
271
277
|
label: "fleet thinking",
|
|
272
|
-
read: (s) => s.
|
|
278
|
+
read: (s) => s.fleet.default.thinkingLevel ?? "off",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
field: "chat.modelPicker.cycleSet",
|
|
282
|
+
label: "Alt+J/Alt+K cycle set",
|
|
283
|
+
read: (s) => s.chat.modelPicker.cycleSet.join(","),
|
|
273
284
|
},
|
|
274
|
-
{ field: "scope", label: "Alt+J/Alt+K scope", read: (s) => (s.scope ?? []).join(",") },
|
|
275
285
|
];
|
|
276
286
|
|
|
277
287
|
/**
|
|
@@ -282,7 +292,7 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
|
|
|
282
292
|
* writer — a second session, the CLI, or a manual edit — moved the defaults
|
|
283
293
|
* out from under this session.
|
|
284
294
|
*/
|
|
285
|
-
|
|
295
|
+
function externalRoutingDivergence(
|
|
286
296
|
changedPaths: ReadonlyArray<string>,
|
|
287
297
|
saved: Readonly<ClioSettings>,
|
|
288
298
|
effective: Readonly<ClioSettings>,
|
|
@@ -325,7 +335,7 @@ export function routingChangeNotices(
|
|
|
325
335
|
text: `settings.yaml changed (${diverged.join(", ")}). This session keeps its routing; new sessions use the saved defaults.${hint}`,
|
|
326
336
|
});
|
|
327
337
|
}
|
|
328
|
-
const activeTarget = effective.
|
|
338
|
+
const activeTarget = effective.chat.target;
|
|
329
339
|
const targetsTouched = changedPaths.some((path) => path === "targets" || path.startsWith("targets."));
|
|
330
340
|
if (activeTarget && targetsTouched && !saved.targets.some((entry) => entry.id === activeTarget)) {
|
|
331
341
|
const hint = options?.commandHints ? " (/model)" : "";
|
|
@@ -19,6 +19,24 @@ export const SKILL_SUGGESTION_ANCHOR = "Suggested skill: /skill <name>";
|
|
|
19
19
|
*/
|
|
20
20
|
export const SKILL_SUGGESTION_PREFIX = SKILL_SUGGESTION_ANCHOR.slice(0, SKILL_SUGGESTION_ANCHOR.indexOf("<name>"));
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* The four fixed answer labels of a marketplace install offer. Every surface
|
|
24
|
+
* that teaches or reads the offer (the marketplace-offer middleware, the
|
|
25
|
+
* skills fragment, the context listing footer) cites these exact strings, so
|
|
26
|
+
* the after_tool observer that records declines and runs consented installs
|
|
27
|
+
* recognizes the operator's choice by label identity, never by paraphrase.
|
|
28
|
+
*/
|
|
29
|
+
export const SKILL_INSTALL_OFFER_OPTION_PROJECT = "Install for this project";
|
|
30
|
+
export const SKILL_INSTALL_OFFER_OPTION_USER = "Install globally";
|
|
31
|
+
export const SKILL_INSTALL_OFFER_OPTION_NOT_NOW = "Not now";
|
|
32
|
+
export const SKILL_INSTALL_OFFER_OPTION_NEVER = "Never offer this skill";
|
|
33
|
+
export const SKILL_INSTALL_OFFER_OPTIONS = [
|
|
34
|
+
SKILL_INSTALL_OFFER_OPTION_PROJECT,
|
|
35
|
+
SKILL_INSTALL_OFFER_OPTION_USER,
|
|
36
|
+
SKILL_INSTALL_OFFER_OPTION_NOT_NOW,
|
|
37
|
+
SKILL_INSTALL_OFFER_OPTION_NEVER,
|
|
38
|
+
] as const;
|
|
39
|
+
|
|
22
40
|
export interface PendingSkillRequest {
|
|
23
41
|
name: string;
|
|
24
42
|
args: string;
|
package/src/core/termination.ts
CHANGED
|
@@ -37,7 +37,7 @@ const SIGNAL_EXIT_CODES: Partial<Record<NodeJS.Signals, number>> = {
|
|
|
37
37
|
* Break `text` into lines no wider than `width` columns, at spaces where
|
|
38
38
|
* possible and mid-word when a single token is wider than the terminal.
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
function wrapToWidth(text: string, width: number): string[] {
|
|
41
41
|
if (!Number.isFinite(width) || width < 1) return [text];
|
|
42
42
|
const lines: string[] = [];
|
|
43
43
|
let current = "";
|
|
@@ -156,7 +156,7 @@ class TerminationCoordinator {
|
|
|
156
156
|
const log = (msg: string): void => {
|
|
157
157
|
if (!debug) return;
|
|
158
158
|
const ms = Number(process.hrtime.bigint() - mark) / 1e6;
|
|
159
|
-
process.stderr.write(`[clio:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
|
|
159
|
+
process.stderr.write(`[clio-coder:shutdown] +${ms.toFixed(1)}ms ${msg}\n`);
|
|
160
160
|
};
|
|
161
161
|
|
|
162
162
|
this.phase = "draining";
|
|
@@ -193,12 +193,12 @@ class TerminationCoordinator {
|
|
|
193
193
|
const t0 = process.hrtime.bigint();
|
|
194
194
|
const completed = await runWithBudget(hook, budgetMs, (err) => {
|
|
195
195
|
const message = err instanceof Error ? err.message : String(err);
|
|
196
|
-
writeShutdownNotice(`[clio:termination] ${phase}[${i}] failed: ${message}`);
|
|
196
|
+
writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] failed: ${message}`);
|
|
197
197
|
if (err instanceof Error && err.stack) log(err.stack);
|
|
198
198
|
});
|
|
199
199
|
const dt = Number(process.hrtime.bigint() - t0) / 1e6;
|
|
200
200
|
if (!completed) {
|
|
201
|
-
writeShutdownNotice(`[clio:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
|
|
201
|
+
writeShutdownNotice(`[clio-coder:termination] ${phase}[${i}] exceeded ${budgetMs}ms budget; shutdown continues`);
|
|
202
202
|
}
|
|
203
203
|
log(` ${phase}[${i}] ${dt.toFixed(1)}ms${completed ? "" : " (timed out)"}`);
|
|
204
204
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Semantic colors shared by Clio's terminal surfaces and generated companion profiles. */
|
|
2
|
+
export type ClioToken =
|
|
3
|
+
| "accent"
|
|
4
|
+
| "accentDeep"
|
|
5
|
+
| "action"
|
|
6
|
+
| "success"
|
|
7
|
+
| "warning"
|
|
8
|
+
| "error"
|
|
9
|
+
| "info"
|
|
10
|
+
| "reason"
|
|
11
|
+
| "dim"
|
|
12
|
+
| "muted"
|
|
13
|
+
| "title"
|
|
14
|
+
| "frame"
|
|
15
|
+
| "frameStrong";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The palette's lowercase hex projection.
|
|
19
|
+
*
|
|
20
|
+
* Keep this leaf free of interactive imports. Generated companion profiles
|
|
21
|
+
* need the color vocabulary without becoming a second reacher of the terminal
|
|
22
|
+
* renderer and splitting the instant shell's Stage 0 chunk.
|
|
23
|
+
*/
|
|
24
|
+
const TOKEN_HEX: Readonly<Record<ClioToken, `#${string}`>> = {
|
|
25
|
+
accent: "#46e5d0",
|
|
26
|
+
accentDeep: "#1fb7a6",
|
|
27
|
+
action: "#ff7e29",
|
|
28
|
+
success: "#57e389",
|
|
29
|
+
warning: "#ffb454",
|
|
30
|
+
error: "#ff5c66",
|
|
31
|
+
info: "#5ba8ff",
|
|
32
|
+
reason: "#9d8cff",
|
|
33
|
+
dim: "#6a7a85",
|
|
34
|
+
muted: "#8a99a4",
|
|
35
|
+
title: "#46e5d0",
|
|
36
|
+
frame: "#2f5d5a",
|
|
37
|
+
frameStrong: "#2aab9e",
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** The canonical lowercase `#rrggbb` value for one Clio theme token. */
|
|
41
|
+
export function tokenHex(token: ClioToken): `#${string}` {
|
|
42
|
+
return TOKEN_HEX[token];
|
|
43
|
+
}
|
package/src/core/timers.ts
CHANGED
|
@@ -14,8 +14,6 @@ export function sleep(ms: number): Promise<void> {
|
|
|
14
14
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
let negativeDurations = 0;
|
|
18
|
-
|
|
19
17
|
/**
|
|
20
18
|
* Elapsed between two reads of the same clock, signed.
|
|
21
19
|
*
|
|
@@ -23,16 +21,8 @@ let negativeDurations = 0;
|
|
|
23
21
|
* an NTP correction, a resume, or a duration derived across two hosts — and it
|
|
24
22
|
* is a bug in the caller, not a value to be silently swallowed. Clamping with
|
|
25
23
|
* `Math.max(0, …)` hides that, so the clamp belongs at the render boundary and
|
|
26
|
-
* nothing else.
|
|
27
|
-
* because the TUI owns that stream and this sits on hot measurement paths.
|
|
24
|
+
* nothing else.
|
|
28
25
|
*/
|
|
29
26
|
export function rawDurationMs(start: number, end: number): number {
|
|
30
|
-
|
|
31
|
-
if (elapsed < 0) negativeDurations += 1;
|
|
32
|
-
return elapsed;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/** How many negative durations this process has produced since it started. */
|
|
36
|
-
export function negativeDurationCount(): number {
|
|
37
|
-
return negativeDurations;
|
|
27
|
+
return end - start;
|
|
38
28
|
}
|
package/src/core/tool-names.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* OBSERVE read, grep, find, ls, code_nav, context, credential_present
|
|
8
8
|
* MUTATE write, edit
|
|
9
9
|
* EXECUTE bash, git, verify
|
|
10
|
-
* ORCHESTRATE dispatch, monitor, steer, tasks
|
|
10
|
+
* ORCHESTRATE dispatch, monitor, steer, tasks, panes
|
|
11
11
|
* RETRIEVE web_fetch
|
|
12
12
|
* INTERACT ask_user
|
|
13
13
|
* ARTIFACT artifact
|
|
@@ -35,6 +35,7 @@ export const ToolNames = {
|
|
|
35
35
|
Steer: "steer",
|
|
36
36
|
Tasks: "tasks",
|
|
37
37
|
Ledger: "ledger",
|
|
38
|
+
Panes: "panes",
|
|
38
39
|
// RETRIEVE
|
|
39
40
|
WebFetch: "web_fetch",
|
|
40
41
|
// INTERACT
|
package/src/core/xdg.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { join } from "node:path";
|
|
|
20
20
|
*
|
|
21
21
|
* Role contents: config holds user-authored files (settings, credentials,
|
|
22
22
|
* agents, skills, prompts, extensions, runtimes); data holds durable artifacts
|
|
23
|
-
* (memory, evidence, evals); state holds machine-produced session state
|
|
23
|
+
* (memory, evidence, evals, vendored tools); state holds machine-produced session state
|
|
24
24
|
* (sessions, audit, receipts, runs.json, recent-models.json, install.json,
|
|
25
25
|
* interviews, scratch); cache holds disposable derived files.
|
|
26
26
|
*/
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type AgentSpec, isUserVisibleAgent, normalizeAgentSpec } from "./spec.js";
|
|
1
|
+
import { type AgentSpec, isUserVisibleAgent } from "./spec.js";
|
|
3
2
|
|
|
4
3
|
const DEFAULT_DISPATCH_AGENT_ID = "coder";
|
|
5
4
|
|
|
@@ -20,10 +19,6 @@ export interface AgentCatalogSections {
|
|
|
20
19
|
volatile: string;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
function renderAgentCatalogSections(recipes: ReadonlyArray<AgentRecipe>): AgentCatalogSections {
|
|
24
|
-
return renderAgentCatalogSectionsFromSpecs(recipes.map(normalizeAgentSpec));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
22
|
/** Keeps one roster line short enough that the whole fleet block stays near its token budget. */
|
|
28
23
|
const FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
|
|
29
24
|
|
|
@@ -129,7 +124,7 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
|
|
|
129
124
|
/**
|
|
130
125
|
* Spec-based roster used when the caller already holds normalized specs.
|
|
131
126
|
* `AgentsContract.listSpecs()` includes ACP delegation agents synthesized from
|
|
132
|
-
* settings.
|
|
127
|
+
* settings.integrations.externalAgents.entries[], which never exist as recipe files; rendering
|
|
133
128
|
* from specs keeps those dispatchable targets discoverable in the fleet block.
|
|
134
129
|
*/
|
|
135
130
|
export function renderAgentCatalogSectionsFromSpecs(input: ReadonlyArray<AgentSpec>): AgentCatalogSections {
|
|
@@ -178,8 +173,3 @@ function formatSpecLine(spec: AgentSpec, suffix: string): string {
|
|
|
178
173
|
const budget = `, budget=${spec.budget.toolCalls}/${spec.budget.readReserve}${maximum}/${spec.budget.synthesis ? "synthesize" : "stop"}`;
|
|
179
174
|
return `- ${spec.name} [${spec.id}] (${spec.audience}, ${spec.category}, ${spec.capabilityClass}, ${spec.latencyClass}, ${spec.source}${tags}${skills}${budget})${suffix}`;
|
|
180
175
|
}
|
|
181
|
-
|
|
182
|
-
export function renderAgentCatalog(recipes: ReadonlyArray<AgentRecipe>): string {
|
|
183
|
-
const sections = renderAgentCatalogSections(recipes);
|
|
184
|
-
return [sections.stable, sections.volatile].filter((part) => part.trim().length > 0).join("\n\n");
|
|
185
|
-
}
|
|
@@ -15,7 +15,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
15
15
|
const nextDiagnostics: AgentRecipeDiagnostic[] = [];
|
|
16
16
|
const merged = discoverAgentRecipes(process.cwd(), nextDiagnostics);
|
|
17
17
|
const config = _context.getContract<ConfigContract>("config");
|
|
18
|
-
assertAgentIdNamespace(merged, config?.get()?.
|
|
18
|
+
assertAgentIdNamespace(merged, config?.get()?.integrations.externalAgents?.entries ?? []);
|
|
19
19
|
recipes = merged;
|
|
20
20
|
specs = recipes.map(normalizeAgentSpec);
|
|
21
21
|
diagnostics = nextDiagnostics;
|
|
@@ -40,7 +40,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
40
40
|
},
|
|
41
41
|
listSpecs() {
|
|
42
42
|
const config = _context.getContract<ConfigContract>("config");
|
|
43
|
-
const delegationAgents = config?.get()?.
|
|
43
|
+
const delegationAgents = config?.get()?.integrations.externalAgents?.entries ?? [];
|
|
44
44
|
const delegationSpecs = delegationAgents.map((agent) => ({
|
|
45
45
|
version: 1 as const,
|
|
46
46
|
id: agent.id,
|
|
@@ -67,7 +67,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
67
67
|
const found = specs.find((r) => r.id === id);
|
|
68
68
|
if (found) return found;
|
|
69
69
|
const config = _context.getContract<ConfigContract>("config");
|
|
70
|
-
const agent = config?.get()?.
|
|
70
|
+
const agent = config?.get()?.integrations.externalAgents?.entries?.find((entry) => entry.id === id);
|
|
71
71
|
if (agent) {
|
|
72
72
|
return {
|
|
73
73
|
version: 1 as const,
|
|
@@ -29,6 +29,3 @@ task above. Nothing you write here persuades it.
|
|
|
29
29
|
|
|
30
30
|
If it fails you, you receive its failed checks as input data and get exactly one
|
|
31
31
|
revision. Close the findings it reported and nothing else.
|
|
32
|
-
|
|
33
|
-
Answer with your `mutation-report`. Include `commitMessage`: one imperative
|
|
34
|
-
subject line describing this change, as you would write it in the log.
|
|
@@ -30,6 +30,3 @@ If the suite comes back red you will receive its output as input data. Repair
|
|
|
30
30
|
exactly what it reported. Do not restate the failure, do not weaken or delete a
|
|
31
31
|
test to make it pass, and do not widen the change beyond the repair. You get at
|
|
32
32
|
most two repair attempts before the run fails with the suite still red.
|
|
33
|
-
|
|
34
|
-
Answer with your `mutation-report`. Include `commitMessage`: one imperative
|
|
35
|
-
subject line describing this change, as you would write it in the log.
|
|
@@ -94,7 +94,7 @@ export function loadRecipesFromDir(
|
|
|
94
94
|
if (source.source === "builtin") throw error;
|
|
95
95
|
const message = error instanceof Error ? error.message : String(error);
|
|
96
96
|
diagnostics.push({ source: source.source, filepath, message });
|
|
97
|
-
process.stderr.write(`[clio:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
|
|
97
|
+
process.stderr.write(`[clio-coder:agents] quarantine path=${filepath} source=${source.source} reason=${message}\n`);
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -102,7 +102,7 @@ export function loadRecipesFromDir(
|
|
|
102
102
|
return recipes;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe>>): ReadonlyArray<AgentRecipe> {
|
|
106
106
|
const byId = new Map<string, AgentRecipe>();
|
|
107
107
|
const builtinById = new Map<string, AgentRecipe>();
|
|
108
108
|
for (const group of sources) {
|
|
@@ -113,23 +113,23 @@ export function mergeRecipes(...sources: ReadonlyArray<ReadonlyArray<AgentRecipe
|
|
|
113
113
|
for (const group of sources) {
|
|
114
114
|
for (const recipe of group) {
|
|
115
115
|
if (recipe.source !== "builtin" && RESERVED_CUSTOM_AGENT_IDS.has(recipe.id)) {
|
|
116
|
-
process.stderr.write(`[clio:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
|
|
116
|
+
process.stderr.write(`[clio-coder:agents] ignore id=${recipe.id} by=${recipe.source} reason=reserved-agent-id\n`);
|
|
117
117
|
continue;
|
|
118
118
|
}
|
|
119
119
|
const builtin = builtinById.get(recipe.id);
|
|
120
120
|
if (recipe.source === "extension" && builtin) {
|
|
121
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
|
|
121
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin\n`);
|
|
122
122
|
continue;
|
|
123
123
|
}
|
|
124
124
|
if (recipe.source === "user" && builtin && isShadowAgent(normalizeAgentSpec(builtin))) {
|
|
125
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
|
|
125
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow\n`);
|
|
126
126
|
continue;
|
|
127
127
|
}
|
|
128
128
|
if (recipe.source === "project" && builtin) {
|
|
129
|
-
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
|
|
129
|
+
process.stderr.write(`[clio-coder:agents] ignore override id=${recipe.id} by=project reason=reserved-builtin\n`);
|
|
130
130
|
continue;
|
|
131
131
|
}
|
|
132
|
-
if (byId.has(recipe.id)) process.stderr.write(`[clio:agents] override id=${recipe.id} by=${recipe.source}\n`);
|
|
132
|
+
if (byId.has(recipe.id)) process.stderr.write(`[clio-coder:agents] override id=${recipe.id} by=${recipe.source}\n`);
|
|
133
133
|
byId.set(recipe.id, recipe);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one live-disk implementation of `ResultContractFilesystem`.
|
|
3
|
+
*
|
|
4
|
+
* `result-contract.ts` takes filesystem access as an argument so the validators
|
|
5
|
+
* stay deterministic and testable without touching a disk. That leaves every
|
|
6
|
+
* caller to supply the same three accessors, and the worker and the
|
|
7
|
+
* orchestrator had each written their own copy. A capability added to the
|
|
8
|
+
* interface then lands in one of them and not the other, which is how a Scout
|
|
9
|
+
* citation could ground inside the worker's repair rounds and fail the
|
|
10
|
+
* orchestrator's sealed revalidation of the identical result. One factory, both
|
|
11
|
+
* callers, no drift.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
14
|
+
import type { ResultContractFilesystem } from "./result-contract.js";
|
|
15
|
+
|
|
16
|
+
export function nodeResultContractFilesystem(): ResultContractFilesystem {
|
|
17
|
+
return {
|
|
18
|
+
readFile(filePath) {
|
|
19
|
+
try {
|
|
20
|
+
return readFileSync(filePath, "utf8");
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
pathExists(filePath) {
|
|
26
|
+
return existsSync(filePath);
|
|
27
|
+
},
|
|
28
|
+
isDirectory(filePath) {
|
|
29
|
+
return statSync(filePath, { throwIfNoEntry: false })?.isDirectory() === true;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|