@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,38 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
import { ToolNames } from "../core/tool-names.js";
|
|
3
|
+
import { PANES_PRESET_IDS } from "../domains/mux/operations.js";
|
|
4
|
+
import { StringEnum } from "../engine/ai.js";
|
|
5
|
+
import type { ToolSurface } from "./lazy-tool.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The model's door to the pane layer.
|
|
9
|
+
*
|
|
10
|
+
* There is no argv field, and there never will be. Arbitrary argv is
|
|
11
|
+
* operator-only through `/panes open`, which is what keeps this tool out of
|
|
12
|
+
* shell-escape territory (spec 4.8, risk register "tool misuse"). `preset` is a
|
|
13
|
+
* closed enum, so an argv string cannot arrive spelled as a preset name either.
|
|
14
|
+
*/
|
|
15
|
+
export const panesToolSurface = {
|
|
16
|
+
name: ToolNames.Panes,
|
|
17
|
+
description:
|
|
18
|
+
"Look at, focus, and manage the terminal panes Clio owns beside this session. Use show to bring a dispatched run's live viewer pane to the front when the operator asks to see an agent (\"show me the tester\"). open starts one of the fixed utility presets; there is no way to run an arbitrary command. close removes a pane Clio created. list reports the current inventory and the pane layer's health.",
|
|
19
|
+
parameters: Type.Object({
|
|
20
|
+
action: StringEnum(["show", "open", "close", "list"], {
|
|
21
|
+
description:
|
|
22
|
+
"show focuses a run's viewer pane; open starts a preset utility pane; close removes a Clio-owned pane; list reports the inventory.",
|
|
23
|
+
}),
|
|
24
|
+
target: Type.Optional(
|
|
25
|
+
Type.String({
|
|
26
|
+
description:
|
|
27
|
+
'action=show: an agent id or run id prefix, most recent match wins. action=close: a pane id, a pane label, an agent id, or "all".',
|
|
28
|
+
}),
|
|
29
|
+
),
|
|
30
|
+
preset: Type.Optional(
|
|
31
|
+
StringEnum([...PANES_PRESET_IDS], {
|
|
32
|
+
description: "action=open: which fixed utility pane to start.",
|
|
33
|
+
}),
|
|
34
|
+
),
|
|
35
|
+
}),
|
|
36
|
+
baseActionClass: "read",
|
|
37
|
+
executionMode: "sequential",
|
|
38
|
+
} satisfies ToolSurface;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { PanesOperations } from "../domains/mux/operations.js";
|
|
2
|
+
import { PANES_PRESET_IDS } from "../domains/mux/operations.js";
|
|
3
|
+
import { panesToolSurface } from "./panes-surface.js";
|
|
4
|
+
import type { ToolResult, ToolSpec } from "./registry.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The `panes` tool: the model's read-class door to the pane layer.
|
|
8
|
+
*
|
|
9
|
+
* It is registered only when the mux answered detection, so its presence in the
|
|
10
|
+
* prompt is itself the statement that panes exist in this session. Every action
|
|
11
|
+
* routes through the same `PanesOperations` the `/panes` slash command drives,
|
|
12
|
+
* so the two surfaces cannot describe the same pane differently.
|
|
13
|
+
*
|
|
14
|
+
* The one asymmetry with the operator's surface is deliberate: `open` accepts a
|
|
15
|
+
* preset and nothing else. A caller that fabricates an `argv` field gets a
|
|
16
|
+
* refusal rather than a shell.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export interface PanesToolDeps {
|
|
20
|
+
panes: PanesOperations;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function describeInventory(deps: PanesToolDeps): ToolResult {
|
|
24
|
+
const status = deps.panes.status();
|
|
25
|
+
const header = `panes mode=${status.mode} ${status.available ? "available" : "unavailable"}; notifications=${status.settings.notifications}`;
|
|
26
|
+
const rows = status.panes.map((pane) => `- ${pane.paneId} ${pane.purpose} ${pane.label}`);
|
|
27
|
+
return {
|
|
28
|
+
kind: "ok",
|
|
29
|
+
output: [header, ...(rows.length > 0 ? rows : ["- no Clio-owned panes"])].join("\n"),
|
|
30
|
+
details: { action: "list", mode: status.mode, available: status.available, panes: status.panes },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function createPanesTool(deps: PanesToolDeps): ToolSpec {
|
|
35
|
+
return {
|
|
36
|
+
...panesToolSurface,
|
|
37
|
+
async run(args): Promise<ToolResult> {
|
|
38
|
+
const action = typeof args.action === "string" ? args.action : "";
|
|
39
|
+
// An argv field never reaches the operations layer. Refusing loudly is
|
|
40
|
+
// better than ignoring it, because a model that believed it opened a
|
|
41
|
+
// command pane would report work it did not do.
|
|
42
|
+
if ("argv" in args) {
|
|
43
|
+
return {
|
|
44
|
+
kind: "error",
|
|
45
|
+
message:
|
|
46
|
+
"panes: argv panes are operator-only; use action=open with a preset, or ask the operator to run /panes open <command>",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const target = typeof args.target === "string" ? args.target.trim() : "";
|
|
50
|
+
if (action === "list") return describeInventory(deps);
|
|
51
|
+
if (action === "show") {
|
|
52
|
+
if (target.length === 0) return { kind: "error", message: "panes: action=show requires target" };
|
|
53
|
+
const result = await deps.panes.show(target);
|
|
54
|
+
if (result.status === "watching") {
|
|
55
|
+
return {
|
|
56
|
+
kind: "ok",
|
|
57
|
+
output: `the watch pane is now rendering ${result.agentId} (run ${result.runId}).`,
|
|
58
|
+
details: { action: "show", runId: result.runId, agentId: result.agentId },
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (result.status === "not-found") {
|
|
62
|
+
const known = result.candidates.length > 0 ? ` Live runs: ${result.candidates.join(", ")}.` : "";
|
|
63
|
+
return { kind: "error", message: `panes: no live run matches '${result.target}'.${known}` };
|
|
64
|
+
}
|
|
65
|
+
return { kind: "error", message: `panes: ${result.reason}` };
|
|
66
|
+
}
|
|
67
|
+
if (action === "open") {
|
|
68
|
+
const preset = typeof args.preset === "string" ? args.preset : "";
|
|
69
|
+
if (!(PANES_PRESET_IDS as ReadonlyArray<string>).includes(preset)) {
|
|
70
|
+
return {
|
|
71
|
+
kind: "error",
|
|
72
|
+
message: `panes: action=open requires preset, one of ${PANES_PRESET_IDS.join(", ")}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const result = await deps.panes.open({ preset });
|
|
76
|
+
if (result.status === "opened") {
|
|
77
|
+
return {
|
|
78
|
+
kind: "ok",
|
|
79
|
+
output:
|
|
80
|
+
result.paneId === null
|
|
81
|
+
? `completed the ${result.label} chooser.`
|
|
82
|
+
: `opened the ${result.label} pane (${result.paneId}).`,
|
|
83
|
+
details: { action: "open", preset, paneId: result.paneId },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (result.status === "missing-binary") {
|
|
87
|
+
return {
|
|
88
|
+
kind: "error",
|
|
89
|
+
message: `panes: ${result.detail}`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return { kind: "error", message: `panes: ${result.reason}` };
|
|
93
|
+
}
|
|
94
|
+
if (action === "close") {
|
|
95
|
+
if (target.length === 0) return { kind: "error", message: "panes: action=close requires target" };
|
|
96
|
+
const result = await deps.panes.close(target);
|
|
97
|
+
if (result.status === "closed") {
|
|
98
|
+
return {
|
|
99
|
+
kind: "ok",
|
|
100
|
+
output: `closed ${result.closed} pane(s)${result.labels.length > 0 ? `: ${result.labels.join(", ")}` : ""}.`,
|
|
101
|
+
details: { action: "close", closed: result.closed },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (result.status === "not-found") {
|
|
105
|
+
return { kind: "error", message: `panes: no Clio-owned pane matches '${result.target}'` };
|
|
106
|
+
}
|
|
107
|
+
return { kind: "error", message: `panes: ${result.reason}` };
|
|
108
|
+
}
|
|
109
|
+
return { kind: "error", message: `panes: action must be show, open, close, or list; got '${action}'` };
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
package/src/tools/policy.ts
CHANGED
|
@@ -49,6 +49,10 @@ export const TOOL_PLANES: Readonly<Record<BuiltinToolName, PlaneExpectation>> =
|
|
|
49
49
|
// review the board depends on. Sequential so two posts in one batch do not
|
|
50
50
|
// interleave against the local post cap.
|
|
51
51
|
[ToolNames.Ledger]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
|
|
52
|
+
// panes projects Clio's own runs onto a pane host and opens preset utility
|
|
53
|
+
// panes. It mutates no workspace, so it stays read class; sequential because
|
|
54
|
+
// two pane operations in one batch would race the same pane registry.
|
|
55
|
+
[ToolNames.Panes]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
|
|
52
56
|
[ToolNames.WebFetch]: { plane: "retrieve", actionClass: "read", executionMode: "parallel" },
|
|
53
57
|
[ToolNames.AskUser]: { plane: "interact", actionClass: "read", executionMode: "sequential" },
|
|
54
58
|
[ToolNames.Artifact]: { plane: "artifact", actionClass: "write", executionMode: "sequential" },
|
|
@@ -75,6 +79,8 @@ const OBSERVE_ENVELOPE_SELF_CAPS: ReadonlyArray<[BuiltinToolName, () => number]>
|
|
|
75
79
|
const SESSION_BOUND_TOOLS = new Set<ToolName>([]);
|
|
76
80
|
const DISPATCH_BOUND_TOOLS = new Set<ToolName>([ToolNames.Dispatch, ToolNames.Monitor, ToolNames.Steer]);
|
|
77
81
|
const INTERACTIVE_BOUND_TOOLS = new Set<ToolName>([ToolNames.AskUser]);
|
|
82
|
+
/** Registered only when a pane host answered detection and the mux is live. */
|
|
83
|
+
const PANES_BOUND_TOOLS = new Set<ToolName>([ToolNames.Panes]);
|
|
78
84
|
/** The RETRIEVE plane, omitted wholesale by a hermetic run (tools/network-policy.ts). */
|
|
79
85
|
const NETWORK_BOUND_TOOLS = new Set<ToolName>([ToolNames.WebFetch]);
|
|
80
86
|
|
|
@@ -82,8 +88,9 @@ export interface BuiltinToolPolicyOptions {
|
|
|
82
88
|
includeSessionTools?: boolean;
|
|
83
89
|
includeDispatchTools?: boolean;
|
|
84
90
|
includeInteractiveTools?: boolean;
|
|
91
|
+
includePanesTools?: boolean;
|
|
85
92
|
/**
|
|
86
|
-
* Unlike the other
|
|
93
|
+
* Unlike the other four, this defaults to true: every registry registers
|
|
87
94
|
* the network plane unless a run explicitly asked to be hermetic, so an
|
|
88
95
|
* unset option must keep demanding it.
|
|
89
96
|
*/
|
|
@@ -132,12 +139,14 @@ function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: Buil
|
|
|
132
139
|
const includeSessionTools = options.includeSessionTools ?? false;
|
|
133
140
|
const includeDispatchTools = options.includeDispatchTools ?? false;
|
|
134
141
|
const includeInteractiveTools = options.includeInteractiveTools ?? false;
|
|
142
|
+
const includePanesTools = options.includePanesTools ?? false;
|
|
135
143
|
const includeNetworkTools = options.includeNetworkTools ?? true;
|
|
136
144
|
const required = new Set<ToolName>(Object.values(ToolNames));
|
|
137
145
|
for (const tool of [...required]) {
|
|
138
146
|
if (!includeSessionTools && SESSION_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
139
147
|
if (!includeDispatchTools && DISPATCH_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
140
148
|
if (!includeInteractiveTools && INTERACTIVE_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
149
|
+
if (!includePanesTools && PANES_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
141
150
|
if (!includeNetworkTools && NETWORK_BOUND_TOOLS.has(tool)) required.delete(tool);
|
|
142
151
|
}
|
|
143
152
|
for (const tool of required) {
|
|
@@ -67,6 +67,7 @@ export const TOOL_PRESENTATION: Readonly<Record<string, ToolPresentationPolicy>>
|
|
|
67
67
|
[ToolNames.Steer]: FOLDED,
|
|
68
68
|
[ToolNames.Tasks]: FOLDED,
|
|
69
69
|
[ToolNames.Ledger]: FOLDED,
|
|
70
|
+
[ToolNames.Panes]: FOLDED,
|
|
70
71
|
[ToolNames.WebFetch]: FOLDED,
|
|
71
72
|
[ToolNames.AskUser]: FOLDED,
|
|
72
73
|
[ToolNames.Artifact]: FOLDED,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
2
|
import { createHash, randomBytes } from "node:crypto";
|
|
3
|
-
import { existsSync, mkdirSync, realpathSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
5
5
|
|
|
6
6
|
export type TaskWorktreeApply = "merge" | "preserve";
|
|
@@ -25,7 +25,9 @@ export interface TaskWorktreeReceipt {
|
|
|
25
25
|
|
|
26
26
|
const SAFE_RUN_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u;
|
|
27
27
|
const OWNER_FILE_SUFFIX = ".task-owner.json";
|
|
28
|
-
const
|
|
28
|
+
const TASK_WORKTREE_KIND = "clio-coder-task-worktree";
|
|
29
|
+
const LEGACY_TASK_WORKTREE_KIND = "clio-task-worktree";
|
|
30
|
+
const COMMIT_IDENTITY = "clio-coder-task";
|
|
29
31
|
|
|
30
32
|
function gitBytes(root: string, args: string[]): Buffer {
|
|
31
33
|
return execFileSync("git", ["-C", root, ...args], {
|
|
@@ -160,7 +162,7 @@ export function createTaskWorktree(root: string, runId: string, base?: string):
|
|
|
160
162
|
const resolvedBase = base ?? git(canonical, ["rev-parse", "HEAD"]);
|
|
161
163
|
const parent = join(canonical, ".clio-coder", "worktrees");
|
|
162
164
|
const path = join(parent, runId);
|
|
163
|
-
const branch = `clio/task/${runId}`;
|
|
165
|
+
const branch = `clio-coder/task/${runId}`;
|
|
164
166
|
mkdirSync(parent, { recursive: true });
|
|
165
167
|
if (!isCanonicalWorktreePathInside(parent, path))
|
|
166
168
|
throw new Error(`task worktree path escapes its parent for run ${runId}`);
|
|
@@ -168,7 +170,7 @@ export function createTaskWorktree(root: string, runId: string, base?: string):
|
|
|
168
170
|
const ownerToken = randomBytes(16).toString("hex");
|
|
169
171
|
writeFileSync(
|
|
170
172
|
`${path}${OWNER_FILE_SUFFIX}`,
|
|
171
|
-
`${JSON.stringify({ version: 1, kind:
|
|
173
|
+
`${JSON.stringify({ version: 1, kind: TASK_WORKTREE_KIND, root: canonical, runId, branch, base: resolvedBase, ownerToken }, null, 2)}\n`,
|
|
172
174
|
{ encoding: "utf8", flag: "wx" },
|
|
173
175
|
);
|
|
174
176
|
return { root: canonical, runId, path, branch, base: resolvedBase, ownerToken };
|
|
@@ -182,11 +184,30 @@ function assertOwnership(worktree: TaskWorktree): void {
|
|
|
182
184
|
) {
|
|
183
185
|
throw new Error(`task worktree ${worktree.runId} has an invalid ownership path`);
|
|
184
186
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
+
const ownerPath = `${worktree.path}${OWNER_FILE_SUFFIX}`;
|
|
188
|
+
if (!existsSync(ownerPath)) throw new Error(`task worktree ${worktree.runId} has no ownership file`);
|
|
189
|
+
let marker: Record<string, unknown>;
|
|
190
|
+
try {
|
|
191
|
+
const value = JSON.parse(readFileSync(ownerPath, "utf8")) as unknown;
|
|
192
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("not an object");
|
|
193
|
+
marker = value as Record<string, unknown>;
|
|
194
|
+
} catch {
|
|
195
|
+
throw new Error(`task worktree ${worktree.runId} has an invalid ownership file`);
|
|
196
|
+
}
|
|
197
|
+
if (
|
|
198
|
+
marker.version !== 1 ||
|
|
199
|
+
(marker.kind !== TASK_WORKTREE_KIND && marker.kind !== LEGACY_TASK_WORKTREE_KIND) ||
|
|
200
|
+
marker.root !== worktree.root ||
|
|
201
|
+
marker.runId !== worktree.runId ||
|
|
202
|
+
marker.branch !== worktree.branch ||
|
|
203
|
+
marker.base !== worktree.base ||
|
|
204
|
+
marker.ownerToken !== worktree.ownerToken
|
|
205
|
+
) {
|
|
206
|
+
throw new Error(`task worktree ${worktree.runId} ownership facts do not match`);
|
|
207
|
+
}
|
|
187
208
|
}
|
|
188
209
|
|
|
189
|
-
function commitTaskWorktree(worktree: TaskWorktree, message = `Clio task ${worktree.runId}`): boolean {
|
|
210
|
+
function commitTaskWorktree(worktree: TaskWorktree, message = `Clio Coder task ${worktree.runId}`): boolean {
|
|
190
211
|
assertOwnership(worktree);
|
|
191
212
|
return commitWorktreePath(worktree.path, COMMIT_IDENTITY, message);
|
|
192
213
|
}
|
|
@@ -234,7 +234,7 @@ function boundedId(base: string, suffix = ""): string {
|
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
/** Allocate the same stable suffix for the same ordered set of occupied IDs. */
|
|
237
|
-
|
|
237
|
+
function deterministicVerifierId(preferredId: string, occupied: ReadonlySet<string>): string {
|
|
238
238
|
const base = boundedId(slug(preferredId, "check"));
|
|
239
239
|
if (!occupied.has(base) && base !== "frontend") return base;
|
|
240
240
|
for (let index = 2; index <= PROJECT_VERIFIER_CATALOG_CAPS.checks + 2; index += 1) {
|
|
@@ -892,7 +892,7 @@ function serializeVerifierDraft(draft: VerifierDraft): string {
|
|
|
892
892
|
}
|
|
893
893
|
|
|
894
894
|
/** Validate with the same production parser used by verify(). */
|
|
895
|
-
|
|
895
|
+
function validateVerifierDraft(draft: VerifierDraft): VerifierDraftValidation {
|
|
896
896
|
const text = serializeVerifierDraft(draft);
|
|
897
897
|
const parsed = parseProjectVerifierCatalogText(text, draft.workspaceRoot, draft.catalogPath);
|
|
898
898
|
if (!parsed.ok) return { ok: false, reason: parsed.reason, text };
|
|
@@ -944,10 +944,7 @@ function cloneDraft(draft: VerifierDraft): VerifierDraft {
|
|
|
944
944
|
}
|
|
945
945
|
|
|
946
946
|
/** Apply edits to a copy so a collision or schema failure leaves the prior draft intact. */
|
|
947
|
-
|
|
948
|
-
draft: VerifierDraft,
|
|
949
|
-
revisions: ReadonlyArray<VerifierRevision>,
|
|
950
|
-
): VerifierRevisionResult {
|
|
947
|
+
function reviseVerifierDraft(draft: VerifierDraft, revisions: ReadonlyArray<VerifierRevision>): VerifierRevisionResult {
|
|
951
948
|
const next = cloneDraft(draft);
|
|
952
949
|
const diagnostics: string[] = [];
|
|
953
950
|
for (const revision of revisions) {
|
|
@@ -447,7 +447,7 @@ async function checkModuleJavaScript(
|
|
|
447
447
|
label: string,
|
|
448
448
|
options: ValidationOptions,
|
|
449
449
|
): Promise<string | null> {
|
|
450
|
-
const dir = mkdtempSync(path.join(tmpdir(), "clio-frontend-check-"));
|
|
450
|
+
const dir = mkdtempSync(path.join(tmpdir(), "clio-coder-frontend-check-"));
|
|
451
451
|
const file = path.join(dir, "module.mjs");
|
|
452
452
|
try {
|
|
453
453
|
writeFileSync(file, source, "utf8");
|
package/src/tools/web-fetch.ts
CHANGED
package/src/worker/entry.ts
CHANGED
|
@@ -122,7 +122,7 @@ async function main(): Promise<number> {
|
|
|
122
122
|
setResidencyNoticeSink((notice) => {
|
|
123
123
|
process.stderr.write(`[worker] residency ${notice.kind}: ${notice.message}\n`);
|
|
124
124
|
if (notice.kind === "will-not-fit") {
|
|
125
|
-
emitEvent({ type: "
|
|
125
|
+
emitEvent({ type: "clio_coder_run_outcome", payload: { outcomeCode: "vram_capacity_fit_failure" } });
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
128
|
const demux = createWorkerStdinDemux();
|
|
@@ -227,12 +227,13 @@ async function main(): Promise<number> {
|
|
|
227
227
|
const handle = startWorkerRun(input, (event) => emitEvent(projectWorkerEventForStdout(event)));
|
|
228
228
|
// The demux buffers lines that landed before the runtime handle existed.
|
|
229
229
|
// Single-shot subprocesses expose no steer method, and an SDK query can race
|
|
230
|
-
// completion. The runtime emits the receipt-bearing
|
|
230
|
+
// completion. The runtime emits the receipt-bearing clio_coder_steer_received event
|
|
231
231
|
// only after it accepts the message; rejected input is diagnostic-only.
|
|
232
232
|
demux.onSteer(
|
|
233
233
|
createOrderedSteerHandler(
|
|
234
234
|
(text) => handle.steer?.(text) ?? false,
|
|
235
|
-
({ text, sequence }) =>
|
|
235
|
+
({ text, sequence }) =>
|
|
236
|
+
emitEvent({ type: "clio_coder_steer_received", payload: { chars: text.trim().length, sequence } }),
|
|
236
237
|
(reason) => process.stderr.write(`[worker] dropped steer: ${reason}\n`),
|
|
237
238
|
),
|
|
238
239
|
);
|
package/src/worker/protocol.ts
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { createHash } from "node:crypto";
|
|
25
|
+
import { normalizeClioCoderEventRecord } from "../core/naming-events.js";
|
|
25
26
|
|
|
26
27
|
/** Current wire protocol. A peer announcing anything else is not executed. */
|
|
27
28
|
export const WORKER_PROTOCOL_VERSION = 1;
|
|
@@ -291,7 +292,7 @@ const HEX_64 = /^[0-9a-f]{64}$/;
|
|
|
291
292
|
* always present and never leaks absence as an empty string.
|
|
292
293
|
*/
|
|
293
294
|
export function endpointIdentityHash(url: string | undefined): string {
|
|
294
|
-
if (url === undefined || url.trim().length === 0) return sha256Hex("clio.endpoint:none");
|
|
295
|
+
if (url === undefined || url.trim().length === 0) return sha256Hex("clio-coder.endpoint:none");
|
|
295
296
|
const raw = url.trim();
|
|
296
297
|
let canonical: string;
|
|
297
298
|
try {
|
|
@@ -301,17 +302,17 @@ export function endpointIdentityHash(url: string | undefined): string {
|
|
|
301
302
|
} catch {
|
|
302
303
|
canonical = raw.replace(/\/+$/u, "");
|
|
303
304
|
}
|
|
304
|
-
return sha256Hex(`clio.endpoint:${canonical}`);
|
|
305
|
+
return sha256Hex(`clio-coder.endpoint:${canonical}`);
|
|
305
306
|
}
|
|
306
307
|
|
|
307
308
|
/** Digest of one WorkerSpec document, computed identically on both ends. */
|
|
308
309
|
export function workerSpecDigest(spec: unknown): string {
|
|
309
|
-
return sha256Hex(`clio.workerSpec:${canonicalJson(spec)}`);
|
|
310
|
+
return sha256Hex(`clio-coder.workerSpec:${canonicalJson(spec)}`);
|
|
310
311
|
}
|
|
311
312
|
|
|
312
313
|
/** Stable signature of the effective tool surface a worker will expose. */
|
|
313
314
|
export function toolSignatureOf(names: ReadonlyArray<string>): string {
|
|
314
|
-
return sha256Hex(`clio.tools:${[...names].sort().join(",")}`);
|
|
315
|
+
return sha256Hex(`clio-coder.tools:${[...names].sort().join(",")}`);
|
|
315
316
|
}
|
|
316
317
|
|
|
317
318
|
/**
|
|
@@ -365,7 +366,8 @@ function parseJsonObject(line: string, maxBytes: number, lane: string): FramePar
|
|
|
365
366
|
|
|
366
367
|
/** Parse one bulk stdout line under the bulk ceiling. */
|
|
367
368
|
export function parseBulkFrame(line: string): FrameParseResult<Record<string, unknown>> {
|
|
368
|
-
|
|
369
|
+
const parsed = parseJsonObject(line, WORKER_BULK_FRAME_MAX_BYTES, "bulk");
|
|
370
|
+
return parsed.ok ? { ok: true, value: normalizeClioCoderEventRecord(parsed.value) } : parsed;
|
|
369
371
|
}
|
|
370
372
|
|
|
371
373
|
/** True when a raw stderr line belongs to the structured control lane. */
|
|
@@ -507,15 +509,15 @@ export function parseControlFrame(line: string): FrameParseResult<WorkerControlF
|
|
|
507
509
|
*/
|
|
508
510
|
const RECEIPT_BEARING_BULK_TYPES = new Set([
|
|
509
511
|
"message_end",
|
|
510
|
-
"
|
|
511
|
-
"
|
|
512
|
-
"
|
|
513
|
-
"
|
|
514
|
-
"
|
|
515
|
-
"
|
|
516
|
-
"
|
|
517
|
-
"
|
|
518
|
-
"
|
|
512
|
+
"clio_coder_run_outcome",
|
|
513
|
+
"clio_coder_permission_escalated",
|
|
514
|
+
"clio_coder_permission_resolved",
|
|
515
|
+
"clio_coder_steer_received",
|
|
516
|
+
"clio_coder_tool_activity",
|
|
517
|
+
"clio_coder_skill_activation",
|
|
518
|
+
"clio_coder_safety_decision",
|
|
519
|
+
"clio_coder_verification",
|
|
520
|
+
"clio_coder_usage",
|
|
519
521
|
"tool_execution_end",
|
|
520
522
|
"spawn_error",
|
|
521
523
|
]);
|
|
@@ -143,7 +143,7 @@ interface WorkerSpecFields {
|
|
|
143
143
|
* Non-stall posture for permission-requiring tool calls. "deny" converts
|
|
144
144
|
* the call into a structured tool denial and the run continues; "fail"
|
|
145
145
|
* aborts the run, which then exits with WORKER_EXIT_PERMISSION_REQUIRED;
|
|
146
|
-
* "escalate" parks the call, emits
|
|
146
|
+
* "escalate" parks the call, emits clio_coder_permission_escalated, and waits for
|
|
147
147
|
* an operator permission_decision on stdin (falling back to the configured
|
|
148
148
|
* deny/fail on timeout). Default "deny".
|
|
149
149
|
*/
|
|
@@ -229,7 +229,7 @@ const TOOL_PROFILE_NAMES = [
|
|
|
229
229
|
"council-read-only",
|
|
230
230
|
] as const satisfies ReadonlyArray<ToolProfileName>;
|
|
231
231
|
const WORKER_PRODUCTS = ["orientation"] as const satisfies ReadonlyArray<AgentProduct>;
|
|
232
|
-
const TARGET_LIFECYCLES = ["user-managed", "clio-managed"] as const;
|
|
232
|
+
const TARGET_LIFECYCLES = ["user-managed", "clio-coder-managed"] as const;
|
|
233
233
|
const RESIDENCY_ROLES = ["chat", "memory", "worker", "target-default"] as const satisfies ReadonlyArray<ResidencyRole>;
|
|
234
234
|
const MIDDLEWARE_HOOKS = ["before_tool", "after_tool", "turn_start", "turn_end", "on_compaction"] as const;
|
|
235
235
|
const MIDDLEWARE_EFFECT_KINDS = [
|
|
@@ -13,7 +13,7 @@ export interface WorkerStdinDemux {
|
|
|
13
13
|
/**
|
|
14
14
|
* Register the handler for post-spec steer lines
|
|
15
15
|
* (`{"type":"steer","text":"...","sequence":1}`). The sequence is assigned by
|
|
16
|
-
* the parent and is what lets `
|
|
16
|
+
* the parent and is what lets `clio_coder_steer_received` acknowledge one exact
|
|
17
17
|
* receipt entry, so a line without a positive integer sequence is dropped
|
|
18
18
|
* rather than delivered unattributed. Steers that arrive before registration
|
|
19
19
|
* are buffered in order and flushed to the handler. Single handler; a second
|
|
@@ -54,7 +54,7 @@ export interface WorkerSteerMessage {
|
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* Preserve stdin order while a runtime accepts guidance asynchronously.
|
|
57
|
-
* `
|
|
57
|
+
* `clio_coder_steer_received` echoes the parent-assigned sequence, so an
|
|
58
58
|
* acknowledgement closes out one exact receipt entry. Ordering still matters
|
|
59
59
|
* for the runtime itself: a later steer must never reach it ahead of an earlier
|
|
60
60
|
* pending one, or the guidance arrives out of the order the operator sent it.
|
package/dist/chunk-D73KXYPF.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
durableAssistantTextFromEvent
|
|
4
|
-
} from "./chunk-TEO2TLVN.js";
|
|
5
|
-
import {
|
|
6
|
-
responseModelIdObservationFromRecord
|
|
7
|
-
} from "./chunk-LXPJXFM5.js";
|
|
8
|
-
import {
|
|
9
|
-
init_esm_shims
|
|
10
|
-
} from "./chunk-3R73A4XB.js";
|
|
11
|
-
|
|
12
|
-
// src/tools/dispatch-event-text.ts
|
|
13
|
-
init_esm_shims();
|
|
14
|
-
function assistantTextFromEvent(event) {
|
|
15
|
-
return durableAssistantTextFromEvent(event).trim();
|
|
16
|
-
}
|
|
17
|
-
function receiptResponseModelIdObservationLabel(receipt) {
|
|
18
|
-
const responses = receipt.upstreamResponses ?? [];
|
|
19
|
-
if (responses.length === 0) return null;
|
|
20
|
-
const labels = responses.map((response) => {
|
|
21
|
-
const observation = responseModelIdObservationFromRecord(
|
|
22
|
-
response,
|
|
23
|
-
"legacy-difference-only"
|
|
24
|
-
);
|
|
25
|
-
if (observation.state === "reported") return `reported:${observation.reportedModelId}`;
|
|
26
|
-
if (observation.state === "not-reported") return "not-reported";
|
|
27
|
-
if (observation.state === "not-observed") return "not-observed";
|
|
28
|
-
return `legacy-difference-only:${observation.differingModelId ?? "none"}`;
|
|
29
|
-
});
|
|
30
|
-
return `response_model_id_observation=${labels.join(",")}`;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export {
|
|
34
|
-
assistantTextFromEvent,
|
|
35
|
-
receiptResponseModelIdObservationLabel
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=chunk-D73KXYPF.js.map
|