@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
|
@@ -105,6 +105,15 @@ export interface ResultContractFilesystem {
|
|
|
105
105
|
* calling an unreadable path fabricated.
|
|
106
106
|
*/
|
|
107
107
|
pathExists?(path: string): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Whether this location is a directory. Optional for the same reason as
|
|
110
|
+
* `pathExists`: a contract that only needs a file's bytes never asks. A
|
|
111
|
+
* Scout citation does, because a survey task cites directories, and a
|
|
112
|
+
* directory has no bytes to read and no line to ground. Absent means the
|
|
113
|
+
* distinction is unobservable here, so an unreadable location stays
|
|
114
|
+
* unreadable rather than being assumed to be a directory.
|
|
115
|
+
*/
|
|
116
|
+
isDirectory?(path: string): boolean;
|
|
108
117
|
}
|
|
109
118
|
|
|
110
119
|
/**
|
|
@@ -792,6 +801,41 @@ function parseChecks(value: unknown): VerifierCheck[] | null {
|
|
|
792
801
|
|
|
793
802
|
type ScoutCitationEvidence = ScoutCitation & { contentDigest: string };
|
|
794
803
|
|
|
804
|
+
/**
|
|
805
|
+
* Where a citation lands relative to the workspace root, after the written form
|
|
806
|
+
* is normalized away.
|
|
807
|
+
*
|
|
808
|
+
* A model writes the same location six ways: `src`, `./src`, `src/`, `./src/`,
|
|
809
|
+
* and for the root itself `.` or `./`. `path.resolve` collapses every one of
|
|
810
|
+
* them, so the containment question is answered on the resolved pair and never
|
|
811
|
+
* on the string the model typed.
|
|
812
|
+
*
|
|
813
|
+
* The root is the case that broke. `path.relative(cwd, cwd)` is the empty
|
|
814
|
+
* string, and the check read empty as "not inside", which is exactly backwards:
|
|
815
|
+
* the workspace root is the one path guaranteed to be contained. A
|
|
816
|
+
* directory-survey Scout cites `.` because that is what it surveyed, and four
|
|
817
|
+
* runs died `result_contract_exhausted` on evidence that never left the
|
|
818
|
+
* workspace. Containment is unchanged for a real escape, which still resolves
|
|
819
|
+
* to a `..` segment or an absolute path outside the root.
|
|
820
|
+
*/
|
|
821
|
+
function citationWithinWorkspace(cwd: string, citedPath: string): boolean {
|
|
822
|
+
const relative = path.relative(cwd, citedPath);
|
|
823
|
+
if (relative === "") return true;
|
|
824
|
+
return !(relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative));
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* A directory citation carries no bytes and no line, so its evidence digest is
|
|
829
|
+
* bound to the location instead. Prefixed so it can never collide with the
|
|
830
|
+
* content digest of a file that happens to hold the same text.
|
|
831
|
+
*/
|
|
832
|
+
function directoryCitationDigest(cwd: string, citedPath: string): string {
|
|
833
|
+
const relative = path.relative(cwd, citedPath);
|
|
834
|
+
return createHash("sha256")
|
|
835
|
+
.update(`directory:${relative === "" ? "." : relative}`, "utf8")
|
|
836
|
+
.digest("hex");
|
|
837
|
+
}
|
|
838
|
+
|
|
795
839
|
/** One citation against the workspace and, where known, against this run's own reads. */
|
|
796
840
|
function validateScoutCitation(
|
|
797
841
|
input: ResultContractValidationInput,
|
|
@@ -799,10 +843,17 @@ function validateScoutCitation(
|
|
|
799
843
|
): { ok: true; evidence: ScoutCitationEvidence } | { ok: false; reason: string } {
|
|
800
844
|
const cwd = path.resolve(input.cwd);
|
|
801
845
|
const citedPath = path.resolve(cwd, citation.path);
|
|
802
|
-
|
|
803
|
-
if (relative === "" || relative.startsWith(`..${path.sep}`) || relative === ".." || path.isAbsolute(relative)) {
|
|
846
|
+
if (!citationWithinWorkspace(cwd, citedPath)) {
|
|
804
847
|
return { ok: false, reason: `Scout citation path escapes the workspace: ${citation.path}` };
|
|
805
848
|
}
|
|
849
|
+
// A directory is a legal reconnaissance location. Existence is the whole
|
|
850
|
+
// check available: there is no content to digest, no line count to bound the
|
|
851
|
+
// cited line against, and no read span to ground it in, because a survey
|
|
852
|
+
// lists a directory rather than reading it. Requiring a live read here would
|
|
853
|
+
// reject the correct answer to every directory-survey task.
|
|
854
|
+
if (input.filesystem.isDirectory?.(citedPath) === true) {
|
|
855
|
+
return { ok: true, evidence: { ...citation, contentDigest: directoryCitationDigest(cwd, citedPath) } };
|
|
856
|
+
}
|
|
806
857
|
const content = input.filesystem.readFile(citedPath);
|
|
807
858
|
if (content === null) return { ok: false, reason: `Scout citation cannot be read: ${citation.path}` };
|
|
808
859
|
const lineCount = content.split(/\r\n|\r|\n/u).length;
|
|
@@ -888,14 +939,57 @@ function groundDegradedScout(
|
|
|
888
939
|
|
|
889
940
|
function validateVerifier(contract: ResultContract, output: string | null): ResultContractValidation {
|
|
890
941
|
const parsed = parseJson(output);
|
|
891
|
-
if (!parsed.ok) return failure(contract, "fail", parsed.reason);
|
|
942
|
+
if (!parsed.ok) return failure(contract, "fail", `Verifier result payload failed: ${parsed.reason}`);
|
|
892
943
|
const value = parsed.value;
|
|
893
|
-
|
|
894
|
-
|
|
944
|
+
const unknown = Object.keys(value).filter((key) => key !== "verdict" && key !== "checks");
|
|
945
|
+
if (unknown.length > 0) {
|
|
946
|
+
return failure(
|
|
947
|
+
contract,
|
|
948
|
+
"fail",
|
|
949
|
+
`Verifier result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are verdict and checks`,
|
|
950
|
+
);
|
|
895
951
|
}
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
952
|
+
if (value.verdict !== "pass" && value.verdict !== "fail") {
|
|
953
|
+
return failure(contract, "fail", 'Verifier field "verdict" must be one of: pass | fail');
|
|
954
|
+
}
|
|
955
|
+
if (!Array.isArray(value.checks) || value.checks.length === 0) {
|
|
956
|
+
return failure(
|
|
957
|
+
contract,
|
|
958
|
+
"fail",
|
|
959
|
+
'Verifier field "checks" must be a non-empty array of {name, passed, evidence}; each checks[].passed value must be one of: true | false',
|
|
960
|
+
);
|
|
961
|
+
}
|
|
962
|
+
const checks: VerifierCheck[] = [];
|
|
963
|
+
for (const [index, raw] of value.checks.entries()) {
|
|
964
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
965
|
+
return failure(contract, "fail", `Verifier field "checks[${index}]" must be an object`);
|
|
966
|
+
}
|
|
967
|
+
const check = raw as Record<string, unknown>;
|
|
968
|
+
const checkUnknown = Object.keys(check).filter((key) => key !== "name" && key !== "passed" && key !== "evidence");
|
|
969
|
+
if (checkUnknown.length > 0) {
|
|
970
|
+
return failure(
|
|
971
|
+
contract,
|
|
972
|
+
"fail",
|
|
973
|
+
`Verifier field "checks[${index}].${checkUnknown[0]}" is not legal; legal check fields are name, passed, and evidence`,
|
|
974
|
+
);
|
|
975
|
+
}
|
|
976
|
+
if (!string(check.name)) {
|
|
977
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].name" must be a non-empty string`);
|
|
978
|
+
}
|
|
979
|
+
if (typeof check.passed !== "boolean") {
|
|
980
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].passed" must be one of: true | false`);
|
|
981
|
+
}
|
|
982
|
+
if (!string(check.evidence)) {
|
|
983
|
+
return failure(contract, "fail", `Verifier field "checks[${index}].evidence" must be a non-empty string`);
|
|
984
|
+
}
|
|
985
|
+
checks.push({ name: check.name, passed: check.passed, evidence: check.evidence });
|
|
986
|
+
}
|
|
987
|
+
if ((value.verdict === "pass") !== checks.every((check) => check.passed)) {
|
|
988
|
+
return failure(
|
|
989
|
+
contract,
|
|
990
|
+
"fail",
|
|
991
|
+
'Verifier field "verdict" must agree with every checks[].passed value; verdict legal values are pass | fail and checks[].passed legal values are true | false',
|
|
992
|
+
);
|
|
899
993
|
}
|
|
900
994
|
const verifier: VerifierResult = { verdict: value.verdict, checks };
|
|
901
995
|
return success(contract, value.verdict, verifier, { verifier });
|
|
@@ -1086,23 +1180,39 @@ export function resultContractAuthorship(contract: ResultContract, output: strin
|
|
|
1086
1180
|
|
|
1087
1181
|
function validateDebugger(contract: ResultContract, output: string | null): ResultContractValidation {
|
|
1088
1182
|
const parsed = parseJson(output);
|
|
1089
|
-
if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
|
|
1183
|
+
if (!parsed.ok) return failure(contract, "unmeasured", `Debugger result payload failed: ${parsed.reason}`);
|
|
1090
1184
|
const value = parsed.value;
|
|
1185
|
+
const unknown = Object.keys(value).filter(
|
|
1186
|
+
(key) => key !== "diagnosis" && key !== "reproduction" && key !== "evidence",
|
|
1187
|
+
);
|
|
1188
|
+
if (unknown.length > 0) {
|
|
1189
|
+
return failure(
|
|
1190
|
+
contract,
|
|
1191
|
+
"unmeasured",
|
|
1192
|
+
`Debugger result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are diagnosis, reproduction, and evidence`,
|
|
1193
|
+
);
|
|
1194
|
+
}
|
|
1195
|
+
if (!string(value.diagnosis)) {
|
|
1196
|
+
return failure(contract, "unmeasured", 'Debugger field "diagnosis" must be a non-empty string');
|
|
1197
|
+
}
|
|
1091
1198
|
if (
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
value.reproduction !== "not-reproduced" &&
|
|
1096
|
-
value.reproduction !== "unknown") ||
|
|
1097
|
-
!Array.isArray(value.evidence) ||
|
|
1098
|
-
value.evidence.some((entry) => !string(entry))
|
|
1199
|
+
value.reproduction !== "reproduced" &&
|
|
1200
|
+
value.reproduction !== "not-reproduced" &&
|
|
1201
|
+
value.reproduction !== "unknown"
|
|
1099
1202
|
) {
|
|
1100
1203
|
return failure(
|
|
1101
1204
|
contract,
|
|
1102
1205
|
"unmeasured",
|
|
1103
|
-
|
|
1206
|
+
'Debugger field "reproduction" must be one of: reproduced | not-reproduced | unknown',
|
|
1104
1207
|
);
|
|
1105
1208
|
}
|
|
1209
|
+
if (!Array.isArray(value.evidence)) {
|
|
1210
|
+
return failure(contract, "unmeasured", 'Debugger field "evidence" must be an array of strings');
|
|
1211
|
+
}
|
|
1212
|
+
const malformedEvidence = value.evidence.findIndex((entry) => !string(entry));
|
|
1213
|
+
if (malformedEvidence >= 0) {
|
|
1214
|
+
return failure(contract, "unmeasured", `Debugger field "evidence[${malformedEvidence}]" must be a non-empty string`);
|
|
1215
|
+
}
|
|
1106
1216
|
return success(contract, "unmeasured", value);
|
|
1107
1217
|
}
|
|
1108
1218
|
|
|
@@ -1112,29 +1222,47 @@ function validateResearch(
|
|
|
1112
1222
|
networkAllowed: boolean,
|
|
1113
1223
|
): ResultContractValidation {
|
|
1114
1224
|
const parsed = parseJson(output);
|
|
1115
|
-
if (!parsed.ok) return failure(contract, "unmeasured", parsed.reason);
|
|
1225
|
+
if (!parsed.ok) return failure(contract, "unmeasured", `Research result payload failed: ${parsed.reason}`);
|
|
1116
1226
|
const value = parsed.value;
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
(value.source !== "local" && value.source !== "external") ||
|
|
1120
|
-
!Array.isArray(value.findings)
|
|
1121
|
-
) {
|
|
1227
|
+
const unknown = Object.keys(value).filter((key) => key !== "source" && key !== "findings");
|
|
1228
|
+
if (unknown.length > 0) {
|
|
1122
1229
|
return failure(
|
|
1123
1230
|
contract,
|
|
1124
1231
|
"unmeasured",
|
|
1125
|
-
|
|
1232
|
+
`Research result field${unknown.length === 1 ? "" : "s"} ${unknown.join(", ")} ${unknown.length === 1 ? "is" : "are"} not legal; legal top-level fields are source and findings`,
|
|
1126
1233
|
);
|
|
1127
1234
|
}
|
|
1235
|
+
if (value.source !== "local" && value.source !== "external") {
|
|
1236
|
+
return failure(contract, "unmeasured", 'Research field "source" must be one of: local | external');
|
|
1237
|
+
}
|
|
1238
|
+
if (!Array.isArray(value.findings)) {
|
|
1239
|
+
return failure(contract, "unmeasured", 'Research field "findings" must be an array of {claim, evidence} objects');
|
|
1240
|
+
}
|
|
1128
1241
|
if (value.source === "external" && !networkAllowed) {
|
|
1129
|
-
return failure(
|
|
1242
|
+
return failure(
|
|
1243
|
+
contract,
|
|
1244
|
+
"unmeasured",
|
|
1245
|
+
'Research field "source" is external but the run has no allowed network posture; legal values are local | external, and use local for workspace-only evidence',
|
|
1246
|
+
);
|
|
1130
1247
|
}
|
|
1131
|
-
for (const finding of value.findings) {
|
|
1248
|
+
for (const [index, finding] of value.findings.entries()) {
|
|
1132
1249
|
if (finding === null || typeof finding !== "object" || Array.isArray(finding)) {
|
|
1133
|
-
return failure(contract, "unmeasured",
|
|
1250
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}]" must be an object`);
|
|
1134
1251
|
}
|
|
1135
1252
|
const record = finding as Record<string, unknown>;
|
|
1136
|
-
|
|
1137
|
-
|
|
1253
|
+
const findingUnknown = Object.keys(record).filter((key) => key !== "claim" && key !== "evidence");
|
|
1254
|
+
if (findingUnknown.length > 0) {
|
|
1255
|
+
return failure(
|
|
1256
|
+
contract,
|
|
1257
|
+
"unmeasured",
|
|
1258
|
+
`Research field "findings[${index}].${findingUnknown[0]}" is not legal; legal finding fields are claim and evidence`,
|
|
1259
|
+
);
|
|
1260
|
+
}
|
|
1261
|
+
if (!string(record.claim)) {
|
|
1262
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}].claim" must be a non-empty string`);
|
|
1263
|
+
}
|
|
1264
|
+
if (!string(record.evidence)) {
|
|
1265
|
+
return failure(contract, "unmeasured", `Research field "findings[${index}].evidence" must be a non-empty string`);
|
|
1138
1266
|
}
|
|
1139
1267
|
}
|
|
1140
1268
|
return success(contract, "unmeasured", value);
|
|
@@ -1415,10 +1543,11 @@ export const RESULT_CONTRACT_ANCHOR_LIMIT = 12;
|
|
|
1415
1543
|
|
|
1416
1544
|
/**
|
|
1417
1545
|
* The exact terminal shape each contract accepts, quoted to the model verbatim.
|
|
1418
|
-
* This is the one place a contract's wire example is written; agent recipes
|
|
1419
|
-
* repair rounds
|
|
1546
|
+
* This is the one place a contract's wire example is written; agent recipes,
|
|
1547
|
+
* repair rounds, and a fleet node's own answer directive all cite it, so a
|
|
1548
|
+
* prompt cannot drift from its validator.
|
|
1420
1549
|
*/
|
|
1421
|
-
function resultContractShape(contract: ResultContract): string {
|
|
1550
|
+
export function resultContractShape(contract: ResultContract): string {
|
|
1422
1551
|
switch (contract.kind) {
|
|
1423
1552
|
case "architect-plan":
|
|
1424
1553
|
return `a plan artifact written to ${contract.path}, then optionally {"commitMessage":"...","summary":"..."} describing it`;
|
|
@@ -1428,15 +1557,15 @@ function resultContractShape(contract: ResultContract): string {
|
|
|
1428
1557
|
// run already failed twice, so it is told the cheaper exit as well.
|
|
1429
1558
|
return '{"findings":[{"claim":"what you observed","path":"src/file.ts","line":1}],"needsSplit":false,"proposedSubtasks":[]} or {"findings":[],"needsSplit":true,"proposedSubtasks":[{"id":"inspect","task":"Inspect the boundary","dependencies":[],"expectedResultContract":"scout-report","requestedAuthority":"read-only"}]} or, if you cannot produce a citation you are sure of, at least {"findings":[{"claim":"what you observed"}]}, which is accepted as an ungrounded lead rather than losing the run';
|
|
1430
1559
|
case "verifier-report":
|
|
1431
|
-
return '{"verdict":"pass","checks":[{"name":"npm run typecheck","passed":true,"evidence":"exit 0"}]}';
|
|
1560
|
+
return 'one of {"verdict":"pass","checks":[{"name":"npm run typecheck","passed":true,"evidence":"exit 0"}]} or {"verdict":"fail","checks":[{"name":"npm run typecheck","passed":false,"evidence":"exit 1"}]}; verdict legal values are pass | fail and checks[].passed legal values are true | false';
|
|
1432
1561
|
case "council-report":
|
|
1433
1562
|
return '{"members":[{"label":"alpha","runId":"run-1","round":1,"answer":"..."}],"synthesis":{"kind":"none"}}';
|
|
1434
1563
|
case "council-ballot":
|
|
1435
1564
|
return COUNCIL_BALLOT_SHAPE;
|
|
1436
1565
|
case "debugger-report":
|
|
1437
|
-
return '{"diagnosis":"...","reproduction":"reproduced","evidence":["..."]}';
|
|
1566
|
+
return 'one of {"diagnosis":"...","reproduction":"reproduced","evidence":["..."]}, {"diagnosis":"...","reproduction":"not-reproduced","evidence":["..."]}, or {"diagnosis":"...","reproduction":"unknown","evidence":["..."]}; reproduction legal values are reproduced | not-reproduced | unknown';
|
|
1438
1567
|
case "research-report":
|
|
1439
|
-
return '{"source":"local","findings":[{"claim":"...","evidence":"..."}]}';
|
|
1568
|
+
return 'one of {"source":"local","findings":[{"claim":"...","evidence":"..."}]} or {"source":"external","findings":[{"claim":"...","evidence":"..."}]}; source legal values are local | external';
|
|
1440
1569
|
case "mutation-report":
|
|
1441
1570
|
return '{"mutatedPaths":["src/file.ts"],"validations":[{"name":"npm test","passed":true,"evidence":"exit 0"}],"commitMessage":"optional: the commit message for this change","summary":"optional: one line"}';
|
|
1442
1571
|
case "provenance-report":
|
|
@@ -1472,7 +1601,7 @@ export interface ResultContractRepairInput {
|
|
|
1472
1601
|
* One repair directive. It states the validator's reason and exact shape. Tool
|
|
1473
1602
|
* use remains closed unless dispatch preauthorized a larger revision phase.
|
|
1474
1603
|
*/
|
|
1475
|
-
|
|
1604
|
+
function resultContractRepairMessage(input: ResultContractRepairInput): string {
|
|
1476
1605
|
const last = input.attempt >= RESULT_CONTRACT_REPAIR_LIMIT;
|
|
1477
1606
|
const lines = [
|
|
1478
1607
|
last
|
|
@@ -137,17 +137,6 @@ export function isAgentProduct(value: unknown): value is AgentProduct {
|
|
|
137
137
|
return includes(AGENT_PRODUCTS, value);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
/**
|
|
141
|
-
* Default tier per capability class. Reproduces the historical dispatch
|
|
142
|
-
* allowlist byte-for-byte: workers that act on the workspace get the bounded
|
|
143
|
-
* projection; read-only, orchestration, and internal classes get none.
|
|
144
|
-
*/
|
|
145
|
-
export function defaultProjectContextTier(capability: AgentCapabilityClass): AgentProjectContextTier {
|
|
146
|
-
return capability === "workspace-edit" || capability === "verification" || capability === "artifact-write"
|
|
147
|
-
? "bounded"
|
|
148
|
-
: "none";
|
|
149
|
-
}
|
|
150
|
-
|
|
151
140
|
function actionClassesForTools(tools: ReadonlyArray<ToolName>): ReadonlySet<ActionClass> {
|
|
152
141
|
const actions = new Set<ActionClass>();
|
|
153
142
|
for (const tool of tools) actions.add(classify({ tool }).actionClass);
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { ClioSettings } from "../../core/config.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Classifies a settings change into one of three buckets
|
|
5
|
-
* - hotReload
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
8
|
-
* next turn starts.
|
|
9
|
-
* - restartRequired : provider credentials, active provider list, runtime enable/disable,
|
|
10
|
-
* engine settings. Needs a restart nudge.
|
|
4
|
+
* Classifies a version-2 settings change into one of three effect buckets:
|
|
5
|
+
* - hotReload: a live reader observes the value without rebuilding runtime state.
|
|
6
|
+
* - nextTurn: the next request, dispatch, or explicit open observes the value.
|
|
7
|
+
* - restartRequired: process or pane-host setup must be rebuilt.
|
|
11
8
|
*
|
|
12
9
|
* Output is an exhaustive per-bucket list. A single patch can touch multiple buckets;
|
|
13
10
|
* the caller emits the event(s) for every non-empty bucket.
|
|
@@ -22,56 +19,50 @@ export interface ConfigDiff {
|
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
const HOT_RELOAD_FIELDS = new Set<string>([
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
22
|
+
"interface.keybindings",
|
|
23
|
+
"safety.autonomy",
|
|
24
|
+
"chat.modelPicker",
|
|
25
|
+
"interface.smoothStreaming",
|
|
26
|
+
"interface.panes.notifications",
|
|
27
|
+
"integrations.git.commitAttribution",
|
|
28
|
+
// The bridge reads these on every explicit open; no mux re-detection is
|
|
29
|
+
// needed because the host capability rung remains `panes.enabled`.
|
|
30
|
+
"interface.panes.files",
|
|
31
31
|
// The watchdog registration reads its settings live on every trigger, so
|
|
32
32
|
// enabling it, retargeting it, or changing its cadence takes effect on the
|
|
33
33
|
// next turn boundary without a restart or a session-routing patch.
|
|
34
|
-
"
|
|
34
|
+
"safety.review",
|
|
35
35
|
]);
|
|
36
36
|
|
|
37
37
|
const NEXT_TURN_FIELDS = new Set<string>([
|
|
38
|
-
"identity",
|
|
39
38
|
"targets",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"workers.agentBindings",
|
|
52
|
-
"workers.maxRetries",
|
|
53
|
-
"workers.onPermission",
|
|
54
|
-
"fleet",
|
|
55
|
-
"routing",
|
|
56
|
-
"scope",
|
|
57
|
-
"budget.sessionCeilingUsd",
|
|
58
|
-
"defaults",
|
|
59
|
-
"terminal",
|
|
60
|
-
"skills",
|
|
61
|
-
"delegation",
|
|
62
|
-
"compaction",
|
|
39
|
+
"chat",
|
|
40
|
+
"fleet.default",
|
|
41
|
+
"fleet.profiles",
|
|
42
|
+
"fleet.rosters",
|
|
43
|
+
"fleet.agentProfiles",
|
|
44
|
+
"fleet.adaptiveRouting",
|
|
45
|
+
"fleet.nodes",
|
|
46
|
+
"fleet.permissions",
|
|
47
|
+
"fleet.retry",
|
|
48
|
+
"fleet.limits",
|
|
49
|
+
"fleet.history",
|
|
63
50
|
"context",
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
"
|
|
51
|
+
"safety.limits",
|
|
52
|
+
"interface.outputDetail",
|
|
53
|
+
"interface.terminalProgress",
|
|
54
|
+
"interface.desktopNotifications",
|
|
55
|
+
"integrations.projectResources",
|
|
56
|
+
"integrations.externalAgents",
|
|
57
|
+
"integrations.library",
|
|
68
58
|
]);
|
|
69
59
|
|
|
70
60
|
const RESTART_REQUIRED_FIELDS = new Set<string>([
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
61
|
+
"fleet.concurrency",
|
|
62
|
+
"interface.mode",
|
|
63
|
+
"interface.fullscreenScrollbar",
|
|
64
|
+
"interface.panes.enabled",
|
|
65
|
+
"integrations.runtimePlugins",
|
|
75
66
|
]);
|
|
76
67
|
|
|
77
68
|
function matchesPrefix(path: string, fields: Set<string>): boolean {
|
|
@@ -29,7 +29,7 @@ export function createConfigBundle(
|
|
|
29
29
|
|
|
30
30
|
function assertAgentNamespace(settings: Readonly<ClioSettings>): void {
|
|
31
31
|
const agents = context.getContract<NativeAgentNamespace>("agents");
|
|
32
|
-
if (agents) assertAgentIdNamespace(agents.list(), settings.
|
|
32
|
+
if (agents) assertAgentIdNamespace(agents.list(), settings.integrations.externalAgents.entries);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
function dispatch(kind: ChangeKind, payload: ConfigChangePayload): void {
|
|
@@ -45,7 +45,7 @@ export function createConfigBundle(
|
|
|
45
45
|
try {
|
|
46
46
|
listener(payload);
|
|
47
47
|
} catch (err) {
|
|
48
|
-
console.error(`[clio:config] listener for ${kind} threw:`, err);
|
|
48
|
+
console.error(`[clio-coder:config] listener for ${kind} threw:`, err);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -84,7 +84,7 @@ export function createConfigBundle(
|
|
|
84
84
|
}
|
|
85
85
|
publishReloadFailure(null);
|
|
86
86
|
snapshot = next;
|
|
87
|
-
setGitCommitAttributionEnabled(next.
|
|
87
|
+
setGitCommitAttributionEnabled(next.integrations.git.commitAttribution);
|
|
88
88
|
if (!prev) return;
|
|
89
89
|
const diff = diffSettings(prev, next);
|
|
90
90
|
if (diff.hotReload.length > 0) dispatch("hotReload", { diff, settings: next });
|
|
@@ -96,7 +96,7 @@ export function createConfigBundle(
|
|
|
96
96
|
async start() {
|
|
97
97
|
if (initialSettings) snapshot = structuredClone(initialSettings);
|
|
98
98
|
else snapshot = readStrictLayeredSettings(process.cwd()).settings;
|
|
99
|
-
setGitCommitAttributionEnabled(snapshot.
|
|
99
|
+
setGitCommitAttributionEnabled(snapshot.integrations.git.commitAttribution);
|
|
100
100
|
watcher = startConfigWatcher(() => onWatcherFire());
|
|
101
101
|
},
|
|
102
102
|
async stop() {
|
|
@@ -124,7 +124,7 @@ export function createConfigBundle(
|
|
|
124
124
|
// a route may name a target supplied only by this workspace.
|
|
125
125
|
const normalized = updateLayeredSettings(process.cwd(), mutate);
|
|
126
126
|
snapshot = normalized;
|
|
127
|
-
setGitCommitAttributionEnabled(normalized.
|
|
127
|
+
setGitCommitAttributionEnabled(normalized.integrations.git.commitAttribution);
|
|
128
128
|
const diff = diffSettings(previous, normalized);
|
|
129
129
|
if (diff.hotReload.length > 0) dispatch("hotReload", { diff, settings: normalized });
|
|
130
130
|
if (diff.nextTurn.length > 0) dispatch("nextTurn", { diff, settings: normalized });
|