@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
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixed machine-readable projection of this project's verification checks.
|
|
3
|
+
*
|
|
4
|
+
* `verifiers discover` renders an authoring preview and `verifiers validate`
|
|
5
|
+
* prints one sentence, so neither is a transport a GUI host can invoke. This
|
|
6
|
+
* command takes no identifier and no flag beyond `--json`, writes nothing, and
|
|
7
|
+
* runs no check: `verifiers dry-run` executes the production verify path and is
|
|
8
|
+
* a deliberate operator action, not something a browser refresh should trigger.
|
|
9
|
+
*
|
|
10
|
+
* What crosses is the shape of the check plane: which checks exist, where each
|
|
11
|
+
* was declared, which toolchain it drives, whether its argv is fixed, and
|
|
12
|
+
* whether the project catalog parses at all.
|
|
13
|
+
*
|
|
14
|
+
* What does not cross is the argv itself. A catalog check's `command` is an
|
|
15
|
+
* exact argument vector whose entries the schema permits to be absolute paths,
|
|
16
|
+
* so no width of projection makes it safe, and the executable is therefore
|
|
17
|
+
* classified against a closed set of toolchains rather than quoted. That is the
|
|
18
|
+
* same call trace event payloads and process command lines got: count and
|
|
19
|
+
* classify instead of projecting less. The declared `cwd`, the source file
|
|
20
|
+
* path, and every discovery diagnostic stay host-side for the same reason.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { isProjectVerifierCheckId } from "../core/verification-scripts.js";
|
|
24
|
+
import {
|
|
25
|
+
type AuthoringCheck,
|
|
26
|
+
discoverVerifierAuthoring,
|
|
27
|
+
type VerifierProposalAuthority,
|
|
28
|
+
type VerifierSignalKind,
|
|
29
|
+
} from "../tools/verify/authoring.js";
|
|
30
|
+
import { loadProjectVerifierCatalog, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH } from "../tools/verify/catalog.js";
|
|
31
|
+
|
|
32
|
+
/** Wire bound on the emitted check list, independent of the catalog's own 128-check cap. */
|
|
33
|
+
export const MAX_VERIFIERS_INSPECT_CHECKS = 64;
|
|
34
|
+
|
|
35
|
+
const TAG_PATTERN = /^[a-z0-9][a-z0-9._-]*$/;
|
|
36
|
+
const REJECTION_LOCATION_PATTERN = /^(root|checks\[\d{1,3}\])(\.[a-zA-Z]{1,32}(\[\d{1,3}\])?)?$/;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Where a check was declared, and therefore how much of it the operator wrote.
|
|
40
|
+
*
|
|
41
|
+
* The domain's own `AuthoringCheck.state` also carries `manual`, which only the
|
|
42
|
+
* interactive authoring flow mints. Discovery cannot produce it, so it is not in
|
|
43
|
+
* this set: carrying a value this read can never emit would state a distinction
|
|
44
|
+
* it never establishes.
|
|
45
|
+
*/
|
|
46
|
+
export const VERIFIER_ORIGINS = ["package-script", "catalog", "proposed"] as const;
|
|
47
|
+
export type VerifierOrigin = (typeof VERIFIER_ORIGINS)[number];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The toolchain a check drives, classified from `command[0]`.
|
|
51
|
+
*
|
|
52
|
+
* The catalog schema already guarantees the executable is a single token and
|
|
53
|
+
* refuses every shell, so this is a classification over a constrained value
|
|
54
|
+
* rather than a redaction of an arbitrary one. `other` is a real answer: the
|
|
55
|
+
* operator still learns a check exists and how it is bound, just not which
|
|
56
|
+
* program outside this list it starts.
|
|
57
|
+
*/
|
|
58
|
+
export const VERIFIER_RUNNERS = [
|
|
59
|
+
"npm",
|
|
60
|
+
"pnpm",
|
|
61
|
+
"yarn",
|
|
62
|
+
"bun",
|
|
63
|
+
"deno",
|
|
64
|
+
"node",
|
|
65
|
+
"cargo",
|
|
66
|
+
"go",
|
|
67
|
+
"make",
|
|
68
|
+
"just",
|
|
69
|
+
"cmake",
|
|
70
|
+
"ctest",
|
|
71
|
+
"ninja",
|
|
72
|
+
"python",
|
|
73
|
+
"pytest",
|
|
74
|
+
"uv",
|
|
75
|
+
"tox",
|
|
76
|
+
"nox",
|
|
77
|
+
"dotnet",
|
|
78
|
+
"gradle",
|
|
79
|
+
"maven",
|
|
80
|
+
"rake",
|
|
81
|
+
"swift",
|
|
82
|
+
"other",
|
|
83
|
+
] as const;
|
|
84
|
+
export type VerifierRunner = (typeof VERIFIER_RUNNERS)[number];
|
|
85
|
+
|
|
86
|
+
const RUNNER_ALIASES = new Map<string, VerifierRunner>([
|
|
87
|
+
["python3", "python"],
|
|
88
|
+
["python2", "python"],
|
|
89
|
+
["py", "python"],
|
|
90
|
+
["mvn", "maven"],
|
|
91
|
+
["gradlew", "gradle"],
|
|
92
|
+
["mvnw", "maven"],
|
|
93
|
+
["npx", "npm"],
|
|
94
|
+
["pnpx", "pnpm"],
|
|
95
|
+
["go-test", "go"],
|
|
96
|
+
]);
|
|
97
|
+
|
|
98
|
+
/** Why discovery could not enumerate the check plane at all. */
|
|
99
|
+
export const VERIFIER_BLOCKS = ["catalog-rejected", "id-collision", "unclassified"] as const;
|
|
100
|
+
export type VerifierBlock = (typeof VERIFIER_BLOCKS)[number];
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Why the production parser refused the project catalog.
|
|
104
|
+
*
|
|
105
|
+
* The parser's diagnostics quote the offending value, the workspace path, and
|
|
106
|
+
* the schema cap that was passed, so the sentence itself never crosses. The
|
|
107
|
+
* classification says what went wrong and `rejectedAt` says where, which is the
|
|
108
|
+
* pair an operator needs to find the line without being handed its contents.
|
|
109
|
+
*/
|
|
110
|
+
export const VERIFIER_REJECTIONS = [
|
|
111
|
+
"unreadable",
|
|
112
|
+
"invalid-yaml",
|
|
113
|
+
"unsupported-version",
|
|
114
|
+
"unknown-field",
|
|
115
|
+
"missing-field",
|
|
116
|
+
"duplicate-id",
|
|
117
|
+
"shell-command",
|
|
118
|
+
"too-large",
|
|
119
|
+
"invalid-cwd",
|
|
120
|
+
"invalid-value",
|
|
121
|
+
"unclassified",
|
|
122
|
+
] as const;
|
|
123
|
+
export type VerifierRejection = (typeof VERIFIER_REJECTIONS)[number];
|
|
124
|
+
|
|
125
|
+
export interface VerifiersInspectCheck {
|
|
126
|
+
readonly id: string;
|
|
127
|
+
readonly description: string;
|
|
128
|
+
readonly origin: VerifierOrigin;
|
|
129
|
+
/** The declaration the harness read this check out of. */
|
|
130
|
+
readonly signal: VerifierSignalKind;
|
|
131
|
+
readonly authority: VerifierProposalAuthority;
|
|
132
|
+
/** The toolchain `command[0]` starts. The arguments themselves stay host-side. */
|
|
133
|
+
readonly runner: VerifierRunner;
|
|
134
|
+
/** How many arguments follow the executable, so an operator can see a bare invocation from a long one. */
|
|
135
|
+
readonly argumentCount: number;
|
|
136
|
+
/** True when the check runs at the repository root. A subdirectory's name does not cross. */
|
|
137
|
+
readonly runsAtRepositoryRoot: boolean;
|
|
138
|
+
/**
|
|
139
|
+
* True when verify fixes argv, cwd, and timeout through safe-exec.
|
|
140
|
+
*
|
|
141
|
+
* A package-script check runs npm with the declared script name and may
|
|
142
|
+
* accept explicit extra argv, so it is the one origin whose effective
|
|
143
|
+
* command is not pinned by the declaration. That is a trust difference and
|
|
144
|
+
* the reason this is reported rather than left to be inferred.
|
|
145
|
+
*/
|
|
146
|
+
readonly argvFixed: boolean;
|
|
147
|
+
readonly timeoutMs: number;
|
|
148
|
+
readonly tags: readonly string[];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface VerifiersInspectSnapshot {
|
|
152
|
+
readonly version: 1;
|
|
153
|
+
readonly generatedAt: string;
|
|
154
|
+
/** Whether the project catalog file exists at all. Its path stays host-side. */
|
|
155
|
+
readonly catalogPresent: boolean;
|
|
156
|
+
/** Whether the production parser accepted it; null when there is nothing to parse. */
|
|
157
|
+
readonly catalogValid: boolean | null;
|
|
158
|
+
readonly rejection: VerifierRejection | null;
|
|
159
|
+
/** The schema location the rejection named, such as `checks[3].command[0]`. */
|
|
160
|
+
readonly rejectedAt: string | null;
|
|
161
|
+
/** Whether the check plane could be enumerated. */
|
|
162
|
+
readonly discovery: "complete" | "blocked";
|
|
163
|
+
readonly blockedBy: VerifierBlock | null;
|
|
164
|
+
readonly checks: readonly VerifiersInspectCheck[];
|
|
165
|
+
readonly checksTruncated: boolean;
|
|
166
|
+
/** How many discovery diagnostics were raised. Each one quotes a path, so the text stays host-side. */
|
|
167
|
+
readonly diagnosticCount: number;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* A codepoint scan rather than a regex, because the whole point is the control
|
|
172
|
+
* range and a character class over it is exactly what a linter refuses.
|
|
173
|
+
*/
|
|
174
|
+
function hasControlCharacter(value: string): boolean {
|
|
175
|
+
for (const character of value) {
|
|
176
|
+
const code = character.codePointAt(0) ?? 0;
|
|
177
|
+
if (code <= 0x1f || code === 0x7f) return true;
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function runnerOf(executable: string | undefined): VerifierRunner {
|
|
183
|
+
if (executable === undefined) return "other";
|
|
184
|
+
const separator = Math.max(executable.lastIndexOf("/"), executable.lastIndexOf("\\"));
|
|
185
|
+
const base = executable
|
|
186
|
+
.slice(separator + 1)
|
|
187
|
+
.toLowerCase()
|
|
188
|
+
.replace(/\.(exe|cmd|bat|ps1)$/u, "");
|
|
189
|
+
const alias = RUNNER_ALIASES.get(base);
|
|
190
|
+
if (alias !== undefined) return alias;
|
|
191
|
+
return (VERIFIER_RUNNERS as ReadonlyArray<string>).includes(base) ? (base as VerifierRunner) : "other";
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function rejectionMessage(reason: string): string {
|
|
195
|
+
const prefix = `${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}: `;
|
|
196
|
+
return reason.startsWith(prefix) ? reason.slice(prefix.length) : reason;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function rejectionLocation(message: string): string | null {
|
|
200
|
+
const match = /^(?:root|checks\[\d{1,3}\])(?:\.[a-zA-Z]{1,32}(?:\[\d{1,3}\])?)?/u.exec(message);
|
|
201
|
+
const candidate = match?.[0];
|
|
202
|
+
if (candidate === undefined) return null;
|
|
203
|
+
return REJECTION_LOCATION_PATTERN.test(candidate) ? candidate : null;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Classify the parser's sentence instead of quoting it.
|
|
208
|
+
*
|
|
209
|
+
* The order is the discriminating one, not the declaration one: a cap failure
|
|
210
|
+
* is a cap failure wherever it happened, and the cwd bucket is guarded on the
|
|
211
|
+
* location so a NUL byte in an argv entry does not read as a bad directory.
|
|
212
|
+
*/
|
|
213
|
+
function classifyRejection(reason: string): { rejection: VerifierRejection; rejectedAt: string | null } {
|
|
214
|
+
const message = rejectionMessage(reason);
|
|
215
|
+
const rejectedAt = rejectionLocation(message);
|
|
216
|
+
const has = (fragment: string): boolean => message.includes(fragment);
|
|
217
|
+
const rejection: VerifierRejection = has("invalid YAML")
|
|
218
|
+
? "invalid-yaml"
|
|
219
|
+
: has("cannot read catalog") || has("must be a regular file") || has("must resolve inside the workspace root")
|
|
220
|
+
? "unreadable"
|
|
221
|
+
: has("unsupported version")
|
|
222
|
+
? "unsupported-version"
|
|
223
|
+
: has("has unknown field(s)")
|
|
224
|
+
? "unknown-field"
|
|
225
|
+
: has(" is required")
|
|
226
|
+
? "missing-field"
|
|
227
|
+
: has("duplicates '") || has("contains duplicate tag")
|
|
228
|
+
? "duplicate-id"
|
|
229
|
+
: has("may not invoke shell executable") ||
|
|
230
|
+
has("must be one executable token") ||
|
|
231
|
+
has("shell command strings are not allowed")
|
|
232
|
+
? "shell-command"
|
|
233
|
+
: has("exceeds the")
|
|
234
|
+
? "too-large"
|
|
235
|
+
: rejectedAt?.endsWith(".cwd") === true
|
|
236
|
+
? "invalid-cwd"
|
|
237
|
+
: has("must be") || has("must match") || has("must not contain") || has("uses reserved")
|
|
238
|
+
? "invalid-value"
|
|
239
|
+
: "unclassified";
|
|
240
|
+
return { rejection, rejectedAt };
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function classifyBlock(reason: string): VerifierBlock {
|
|
244
|
+
if (reason.includes(`${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}: `)) return "catalog-rejected";
|
|
245
|
+
if (reason.includes("duplicate declared check id ")) return "id-collision";
|
|
246
|
+
return "unclassified";
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Re-enforce the shapes the catalog schema already guarantees.
|
|
251
|
+
*
|
|
252
|
+
* The ids and tags reaching here came through the production parser, so this is
|
|
253
|
+
* belt and braces rather than the first line of defence. It is worth the lines
|
|
254
|
+
* because a package.json script name is not held to the catalog's id rule, and
|
|
255
|
+
* because whatever wrote the declaration, the strings that cross carry no path,
|
|
256
|
+
* quote, space, or control byte.
|
|
257
|
+
*/
|
|
258
|
+
function projectCheck(check: AuthoringCheck): VerifiersInspectCheck | null {
|
|
259
|
+
// `manual` is only minted inside the interactive authoring flow, so a check
|
|
260
|
+
// carrying it here means this read was handed a draft rather than a discovery.
|
|
261
|
+
if (check.state === "manual") return null;
|
|
262
|
+
if (!isProjectVerifierCheckId(check.id) || check.id.length > 64) return null;
|
|
263
|
+
if (check.description.trim() !== check.description || check.description.length === 0) return null;
|
|
264
|
+
if (hasControlCharacter(check.description) || check.description.length > 512) return null;
|
|
265
|
+
const tags = check.tags.filter((tag) => TAG_PATTERN.test(tag) && tag.length <= 32);
|
|
266
|
+
if (tags.length !== check.tags.length) return null;
|
|
267
|
+
const origin: VerifierOrigin =
|
|
268
|
+
check.state === "active" ? "package-script" : check.state === "existing" ? "catalog" : "proposed";
|
|
269
|
+
return {
|
|
270
|
+
id: check.id,
|
|
271
|
+
description: check.description,
|
|
272
|
+
origin,
|
|
273
|
+
signal: check.provenance.kind,
|
|
274
|
+
authority: check.provenance.authority,
|
|
275
|
+
runner: runnerOf(check.command[0]),
|
|
276
|
+
argumentCount: Math.max(check.command.length - 1, 0),
|
|
277
|
+
runsAtRepositoryRoot: check.cwd === ".",
|
|
278
|
+
argvFixed: origin !== "package-script",
|
|
279
|
+
timeoutMs: check.timeoutMs,
|
|
280
|
+
tags,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const ORIGIN_RANK: Record<VerifierOrigin, number> = { "package-script": 0, catalog: 1, proposed: 2 };
|
|
285
|
+
|
|
286
|
+
function verifiersInspectSnapshot(
|
|
287
|
+
now: () => number = Date.now,
|
|
288
|
+
workspaceRoot: string = process.cwd(),
|
|
289
|
+
): VerifiersInspectSnapshot {
|
|
290
|
+
const generatedAt = new Date(now()).toISOString();
|
|
291
|
+
// The catalog is loaded on its own rather than inferred from discovery,
|
|
292
|
+
// because discovery also fails on an id collision between package.json and
|
|
293
|
+
// the catalog, and "your catalog is broken" and "two declarations claim the
|
|
294
|
+
// same id" are different operator states with different repairs.
|
|
295
|
+
const catalog = loadProjectVerifierCatalog(workspaceRoot);
|
|
296
|
+
const catalogPresent = catalog.ok ? catalog.source !== null : true;
|
|
297
|
+
const classified = catalog.ok ? null : classifyRejection(catalog.reason);
|
|
298
|
+
const discovery = discoverVerifierAuthoring(workspaceRoot);
|
|
299
|
+
const base = {
|
|
300
|
+
version: 1,
|
|
301
|
+
generatedAt,
|
|
302
|
+
catalogPresent,
|
|
303
|
+
catalogValid: catalog.ok ? (catalog.source === null ? null : true) : false,
|
|
304
|
+
rejection: classified?.rejection ?? null,
|
|
305
|
+
rejectedAt: classified?.rejectedAt ?? null,
|
|
306
|
+
} as const;
|
|
307
|
+
if (!discovery.ok) {
|
|
308
|
+
return {
|
|
309
|
+
...base,
|
|
310
|
+
discovery: "blocked",
|
|
311
|
+
blockedBy: classifyBlock(discovery.reason),
|
|
312
|
+
checks: [],
|
|
313
|
+
checksTruncated: false,
|
|
314
|
+
diagnosticCount: 0,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
const projected = [...discovery.activeChecks, ...discovery.existingChecks, ...discovery.proposals]
|
|
318
|
+
.map(projectCheck)
|
|
319
|
+
.filter((check): check is VerifiersInspectCheck => check !== null)
|
|
320
|
+
.sort((left, right) =>
|
|
321
|
+
ORIGIN_RANK[left.origin] !== ORIGIN_RANK[right.origin]
|
|
322
|
+
? ORIGIN_RANK[left.origin] - ORIGIN_RANK[right.origin]
|
|
323
|
+
: left.id < right.id
|
|
324
|
+
? -1
|
|
325
|
+
: left.id > right.id
|
|
326
|
+
? 1
|
|
327
|
+
: 0,
|
|
328
|
+
);
|
|
329
|
+
const checks = projected.slice(0, MAX_VERIFIERS_INSPECT_CHECKS);
|
|
330
|
+
return {
|
|
331
|
+
...base,
|
|
332
|
+
discovery: "complete",
|
|
333
|
+
blockedBy: null,
|
|
334
|
+
checks,
|
|
335
|
+
checksTruncated: checks.length < projected.length,
|
|
336
|
+
diagnosticCount: discovery.diagnostics.length,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export function runVerifiersInspect(args: ReadonlyArray<string>): number {
|
|
341
|
+
if (args.length !== 1 || args[0] !== "--json") {
|
|
342
|
+
process.stderr.write("clio-coder verifiers inspect: usage: clio-coder verifiers inspect --json\n");
|
|
343
|
+
return 2;
|
|
344
|
+
}
|
|
345
|
+
process.stdout.write(`${JSON.stringify(verifiersInspectSnapshot(), null, 2)}\n`);
|
|
346
|
+
return 0;
|
|
347
|
+
}
|
package/src/cli/verifiers.ts
CHANGED
|
@@ -9,11 +9,13 @@ import {
|
|
|
9
9
|
import { loadProjectVerifierCatalog, PROJECT_VERIFIER_CATALOG_RELATIVE_PATH } from "../tools/verify/catalog.js";
|
|
10
10
|
import { verifyTool } from "../tools/verify/index.js";
|
|
11
11
|
import { printError, printOk } from "./argv.js";
|
|
12
|
+
import { runVerifiersInspect } from "./verifiers-inspect.js";
|
|
12
13
|
|
|
13
14
|
const HELP = `Project verifier authoring
|
|
14
15
|
|
|
15
16
|
Usage:
|
|
16
17
|
clio-coder verifiers discover
|
|
18
|
+
clio-coder verifiers inspect --json
|
|
17
19
|
clio-coder verifiers author [--exclude <id>] [--rename <old>=<new>] [--dry-run <id>] [--yes]
|
|
18
20
|
clio-coder verifiers validate
|
|
19
21
|
clio-coder verifiers dry-run <id>
|
|
@@ -30,6 +32,10 @@ Fields:
|
|
|
30
32
|
Discovery and every preview are read-only. Mutating commands write only with
|
|
31
33
|
--yes after printing the exact argv, cwd, timeout, tags, source provenance, and
|
|
32
34
|
effective execution authority. dry-run invokes the production verify path.
|
|
35
|
+
|
|
36
|
+
inspect is the fixed machine-readable read a GUI host may run. It takes no other
|
|
37
|
+
argument, runs no check, and carries no argv, cwd, source path, or diagnostic
|
|
38
|
+
text: the toolchain each check drives is classified, and the arguments stay here.
|
|
33
39
|
`;
|
|
34
40
|
|
|
35
41
|
const VALUE_OPTIONS = new Set([
|
|
@@ -282,6 +288,9 @@ function validateCommand(): number {
|
|
|
282
288
|
}
|
|
283
289
|
|
|
284
290
|
export async function runVerifiersCommand(argv: string[]): Promise<number> {
|
|
291
|
+
// Routed before the authoring parser so the fixed read stays exactly fixed. No
|
|
292
|
+
// authoring flag can reach it, and no flag it does not name can be spent on it.
|
|
293
|
+
if (argv[0] === "inspect") return runVerifiersInspect(argv.slice(1));
|
|
285
294
|
const parsed = parseAuthoringArgs(argv);
|
|
286
295
|
if (parsed.error !== undefined) {
|
|
287
296
|
printError(parsed.error);
|
package/src/cli/wiki-generate.ts
CHANGED
|
@@ -149,7 +149,7 @@ async function drainDispatchEvents(
|
|
|
149
149
|
let firstBlockReason: string | null = null;
|
|
150
150
|
// Every event is consumed so finalization cannot block on an unread iterator.
|
|
151
151
|
for await (const event of events) {
|
|
152
|
-
if (!isRecord(event) || event.type !== "
|
|
152
|
+
if (!isRecord(event) || event.type !== "clio_coder_tool_finish") continue;
|
|
153
153
|
const tool = eventPayloadString(event, "tool");
|
|
154
154
|
if (!tool) continue;
|
|
155
155
|
const outcome = eventPayloadString(event, "outcome") ?? "done";
|
|
@@ -190,7 +190,7 @@ interface WikiDispatchOutcome {
|
|
|
190
190
|
* throws: a failed page must not take down the pages around it, and whatever
|
|
191
191
|
* the run wrote before it stopped is already on disk.
|
|
192
192
|
*/
|
|
193
|
-
|
|
193
|
+
async function runWikiDispatch(input: {
|
|
194
194
|
dispatch: DispatchContract;
|
|
195
195
|
cwd: string;
|
|
196
196
|
outputDir: string;
|
|
@@ -371,7 +371,7 @@ async function runPagePhase(
|
|
|
371
371
|
return next;
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
|
|
374
|
+
async function generateWikiWithDocumenter(
|
|
375
375
|
dispatch: DispatchContract,
|
|
376
376
|
input: WikiGenerateInput,
|
|
377
377
|
route: WikiModelRoute = {},
|
|
@@ -472,11 +472,11 @@ export async function resolveDocumenterModelId(route: WikiModelRoute = {}): Prom
|
|
|
472
472
|
const providers = loaded.getContract<ProvidersContract>("providers");
|
|
473
473
|
if (!config || !providers) return UNRESOLVED_DOCUMENTER_MODEL;
|
|
474
474
|
const settings = config.get();
|
|
475
|
-
const workers = settings.
|
|
475
|
+
const workers = settings.fleet;
|
|
476
476
|
// Keyed on the dispatched agent id and nothing else, because that is what
|
|
477
477
|
// `placement.ts` reads. Falling back to another agent's binding here would
|
|
478
478
|
// record a model in wiki metadata that no dispatch ever ran.
|
|
479
|
-
const bindingProfileName = workers?.
|
|
479
|
+
const bindingProfileName = workers?.agentProfiles?.[WIKI_AGENT_ID];
|
|
480
480
|
const profile = bindingProfileName ? workers?.profiles?.[bindingProfileName] : undefined;
|
|
481
481
|
const targetId = route.target ?? profile?.target ?? workers?.default?.target ?? settings.targets?.[0]?.id ?? null;
|
|
482
482
|
if (!targetId) return UNRESOLVED_DOCUMENTER_MODEL;
|
package/src/core/bash-exec.ts
CHANGED
|
@@ -75,7 +75,7 @@ const LOGIN_ENV_CAPTURE_TIMEOUT_MS = 10_000;
|
|
|
75
75
|
let loginEnvCapture: Promise<NodeJS.ProcessEnv | null> | null = null;
|
|
76
76
|
|
|
77
77
|
/** NUL-delimited `env -0` output to an env map; null when unusable (no PATH). */
|
|
78
|
-
|
|
78
|
+
function parseNullDelimitedEnv(raw: string): NodeJS.ProcessEnv | null {
|
|
79
79
|
const env: NodeJS.ProcessEnv = {};
|
|
80
80
|
for (const entry of raw.split("\0")) {
|
|
81
81
|
if (entry.length === 0) continue;
|
package/src/core/boot-trace.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
const BOOT_TRACE_ENV = "CLIO_CODER_TRACE_BOOT";
|
|
17
17
|
|
|
18
18
|
/** True when boot tracing is enabled for this process. */
|
|
19
|
-
|
|
19
|
+
function isBootTraceEnabled(): boolean {
|
|
20
20
|
return process.env[BOOT_TRACE_ENV] === "1";
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -24,11 +24,11 @@ export function isBootTraceEnabled(): boolean {
|
|
|
24
24
|
export function formatBootTrace(phase: string, detail?: string): string | null {
|
|
25
25
|
if (!isBootTraceEnabled()) return null;
|
|
26
26
|
const suffix = detail !== undefined && detail.length > 0 ? ` (${detail})` : "";
|
|
27
|
-
return `[clio:boot] +${performance.now().toFixed(1)}ms ${phase}${suffix}\n`;
|
|
27
|
+
return `[clio-coder:boot] +${performance.now().toFixed(1)}ms ${phase}${suffix}\n`;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
* Stamp a boot phase marker to stderr, e.g. `[clio:boot] +742.1ms cli entry`.
|
|
31
|
+
* Stamp a boot phase marker to stderr, e.g. `[clio-coder:boot] +742.1ms cli entry`.
|
|
32
32
|
* `detail` appends a parenthetical (module counts, ids). No-op unless
|
|
33
33
|
* `CLIO_CODER_TRACE_BOOT=1`. Never throws: a diagnostic must not affect boot.
|
|
34
34
|
*/
|
package/src/core/bus-events.ts
CHANGED
|
@@ -468,6 +468,8 @@ export interface PermissionRequestedPayload {
|
|
|
468
468
|
/** Sanitized one-line preview of the call's object (command, path, or compact args). */
|
|
469
469
|
target?: string | undefined;
|
|
470
470
|
timeoutMs?: number | undefined;
|
|
471
|
+
/** Admitted timeout fallback, so the operator surface can name what an expired ask became. */
|
|
472
|
+
fallback?: "deny" | "fail" | undefined;
|
|
471
473
|
escalation?: boolean | undefined;
|
|
472
474
|
}
|
|
473
475
|
|
|
@@ -486,6 +488,8 @@ export interface PermissionResolvedPayload {
|
|
|
486
488
|
actionClass?: string | undefined;
|
|
487
489
|
reason?: string | undefined;
|
|
488
490
|
requestedBy?: string | undefined;
|
|
491
|
+
/** Effective fallback applied to an expired worker escalation. */
|
|
492
|
+
fallback?: "deny" | "fail" | undefined;
|
|
489
493
|
at?: number | undefined;
|
|
490
494
|
}
|
|
491
495
|
|
package/src/core/bus-trace.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* orchestrator-wide observability, not a domain concern. Add channels to the
|
|
12
12
|
* `TRACED_CHANNELS` list if a future front needs to observe them.
|
|
13
13
|
*
|
|
14
|
-
* Ordering invariant: the first `[clio:bus] shutdown.requested` line must
|
|
14
|
+
* Ordering invariant: the first `[clio-coder:bus] shutdown.requested` line must
|
|
15
15
|
* never reach stderr before the `Clio Coder: received <SIGNAL>, shutting down...`
|
|
16
16
|
* notice written by termination.installSignalHandlers in
|
|
17
17
|
* src/core/termination.ts. Future edits to termination.ts must preserve that
|
|
@@ -47,7 +47,7 @@ export function installBusTracer(): void {
|
|
|
47
47
|
const bus = getSharedBus();
|
|
48
48
|
for (const channel of TRACED_CHANNELS) {
|
|
49
49
|
bus.on(channel, (payload) => {
|
|
50
|
-
process.stderr.write(`[clio:bus] ${channel}${traceSuffix(payload)}\n`);
|
|
50
|
+
process.stderr.write(`[clio-coder:bus] ${channel}${traceSuffix(payload)}\n`);
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -65,7 +65,7 @@ export interface CompileCacheHandle {
|
|
|
65
65
|
* exercise the settle semantics without flipping the real process-global
|
|
66
66
|
* cache.
|
|
67
67
|
*/
|
|
68
|
-
|
|
68
|
+
function createCompileCache(
|
|
69
69
|
enableFn: typeof enableCompileCache = enableCompileCache,
|
|
70
70
|
rootExists: (dir: string) => boolean = existsSync,
|
|
71
71
|
): CompileCacheHandle {
|