@iowarp/clio-coder 0.4.1 → 0.4.2
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/CONTRIBUTING.md +59 -36
- package/README.md +404 -472
- package/SECURITY.md +2 -1
- package/dist/{acp-ZILU3AUO.js → acp-TMDQZDIG.js} +7 -7
- package/dist/{agents-HYWGBGQR.js → agents-5N5NG3XG.js} +28 -28
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-N3QT7CBO.js → auth-Z5CCBXKQ.js} +8 -9
- package/dist/{builtins-UJLMOVOV.js → builtins-K6TNDT24.js} +4 -4
- package/dist/{chunk-GVQJ5CCZ.js → chunk-2HFQNRV3.js} +7 -7
- package/dist/{chunk-QMXC4JB7.js → chunk-2NHR3NAY.js} +163 -1401
- package/dist/chunk-2X4RYJTJ.js +39 -0
- package/dist/{chunk-Y45G3AXC.js → chunk-2Z2IKEXI.js} +6 -10
- package/dist/{chunk-EIMVLWB3.js → chunk-34BHNEE3.js} +7 -3
- package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
- package/dist/chunk-3EBYEESD.js +314 -0
- package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
- package/dist/{chunk-AP73CFDC.js → chunk-3KIPBMUA.js} +2 -2
- package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
- package/dist/{chunk-VEGN6WIQ.js → chunk-462T4EGZ.js} +2 -2
- package/dist/{chunk-AFKWHWXF.js → chunk-4JDLP6ZS.js} +33 -16
- package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
- package/dist/{chunk-AKB4GYDL.js → chunk-54ODD65L.js} +5 -5
- package/dist/{chunk-BBTJOK6Y.js → chunk-5KW52TEP.js} +3 -3
- package/dist/{chunk-6CCS4G3W.js → chunk-5PFYMY2V.js} +2 -2
- package/dist/chunk-77QIVUZB.js +1334 -0
- package/dist/{chunk-7OBGU7UB.js → chunk-7BHIY2MW.js} +7 -13
- package/dist/{chunk-3QSOM6PA.js → chunk-AZ4WMN4W.js} +2 -2
- package/dist/{chunk-6NJQITNH.js → chunk-B74PXLU7.js} +6 -3
- package/dist/{chunk-R23Z6K6I.js → chunk-B7HM5Z7T.js} +15 -15
- package/dist/{chunk-R32CLGZ6.js → chunk-BO7Y52RY.js} +81 -20
- package/dist/{chunk-UEDMSP56.js → chunk-BYMNWQ7O.js} +123 -148
- package/dist/{chunk-ZJLUDYFY.js → chunk-CRFOIAX3.js} +4 -4
- package/dist/{chunk-2NM363SV.js → chunk-CYZW7JHJ.js} +7 -7
- package/dist/{chunk-6HMJX2VU.js → chunk-DYHAXKHD.js} +38 -10
- package/dist/{chunk-THYWACCR.js → chunk-DZAW46HP.js} +3 -3
- package/dist/{chunk-FYUN5KZ3.js → chunk-DZEK6CJN.js} +17 -17
- package/dist/{chunk-3I5NY75V.js → chunk-E7GT7O5N.js} +5 -5
- package/dist/{chunk-VKFQTNDV.js → chunk-F2I26BDK.js} +4 -4
- package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
- package/dist/{chunk-IXJT6DCX.js → chunk-FVDGR2ZL.js} +3 -3
- package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
- package/dist/{chunk-7EPLI7VL.js → chunk-HIICAHCJ.js} +2 -2
- package/dist/{chunk-E67WX76H.js → chunk-HKMD33FO.js} +29 -80
- package/dist/chunk-HLAFFSEK.js +360 -0
- package/dist/{chunk-UAPGZHYC.js → chunk-I64IFBLB.js} +9 -2
- package/dist/{chunk-XKA2ICR3.js → chunk-I66ZTYNP.js} +440 -175
- package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
- package/dist/{chunk-PVAMAVBB.js → chunk-IDNA72AH.js} +102 -2
- package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
- package/dist/{chunk-2VG7KLYV.js → chunk-IKSLQ4XV.js} +5460 -3241
- package/dist/{chunk-QKIFBZKT.js → chunk-IMXMHHMQ.js} +166 -25
- package/dist/{chunk-74YWRRU5.js → chunk-JBCS7CRR.js} +2 -2
- package/dist/{chunk-BDPT6GTK.js → chunk-JWJGP5DQ.js} +2 -2
- package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
- package/dist/chunk-KPXDY6QF.js +47 -0
- package/dist/{chunk-ABLSQ6JX.js → chunk-LJID3DYZ.js} +7 -1
- package/dist/{chunk-VKRH2TCS.js → chunk-M2DAX4F6.js} +2 -2
- package/dist/{chunk-6I5ILFOF.js → chunk-M2WXEHER.js} +2 -2
- package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
- package/dist/{chunk-N5UK64DP.js → chunk-MCMZMDAC.js} +2 -2
- package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
- package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
- package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
- package/dist/{chunk-HUAS7ITX.js → chunk-O3YUNJZ2.js} +13 -21
- package/dist/{chunk-MA3H6DM5.js → chunk-P75RZCJW.js} +25 -3
- package/dist/{chunk-IG7BCQBA.js → chunk-PGF63K6I.js} +2 -2
- package/dist/chunk-PJX3WQUQ.js +42 -0
- package/dist/{chunk-6DWBAZ5U.js → chunk-Q4XWMHX6.js} +4 -6
- package/dist/{chunk-OJTRZGR3.js → chunk-QQLGQY2A.js} +8 -8
- package/dist/{chunk-J4HBWF6Y.js → chunk-RLYRBIYQ.js} +115 -20
- package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
- package/dist/{chunk-C537JADH.js → chunk-SSEYRH53.js} +6 -7
- package/dist/chunk-SZAA6XDG.js +30 -0
- package/dist/{chunk-MOPSG2X7.js → chunk-TPEQIQIE.js} +6 -6
- package/dist/{chunk-JA5QWE4Z.js → chunk-UBRFI4HS.js} +1879 -1650
- package/dist/{chunk-BTGG6BG2.js → chunk-UH347SHR.js} +154 -15
- package/dist/{chunk-5YHDIDBP.js → chunk-UH632ZYL.js} +2 -2
- package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
- package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
- package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
- package/dist/{chunk-UXN6JT4W.js → chunk-W4YEMFBX.js} +2 -2
- package/dist/{chunk-TD3PGPQA.js → chunk-W6NIE6OW.js} +2 -2
- package/dist/{chunk-TVH4ONAM.js → chunk-X7IARSHT.js} +3 -3
- package/dist/{chunk-PJJ6MY27.js → chunk-XE3PCIXH.js} +3 -3
- package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
- package/dist/{chunk-SCYB3HA4.js → chunk-XOXV5GKE.js} +51 -16
- package/dist/{chunk-QTFGO774.js → chunk-XQRY4DTA.js} +24 -11
- package/dist/{chunk-BJGUKIG4.js → chunk-YJISEZKC.js} +2 -2
- package/dist/{chunk-GPPB3JBE.js → chunk-ZGNYYXQ6.js} +2 -2
- package/dist/{chunk-SINK3QR6.js → chunk-ZNT2M6TG.js} +7 -7
- package/dist/{chunk-7RY5VZPH.js → chunk-ZW4HH5JJ.js} +6 -6
- package/dist/cli/index.js +33 -32
- package/dist/{clio-IT3G3VQH.js → clio-7VB377CC.js} +7 -7
- package/dist/{code-nav-RK6S7F6E.js → code-nav-YVLCYA7V.js} +85 -17
- package/dist/{config-3QZRWZJF.js → config-4HVOS65E.js} +88 -43
- package/dist/{configure-FL7Y3KJF.js → configure-PIWO7B24.js} +10 -10
- package/dist/{context-5HE7ODYK.js → context-IYEHL3WQ.js} +33 -31
- package/dist/{context-XNHL75JV.js → context-KQYIWPWT.js} +47 -34
- package/dist/{context-KYQFRVDC.js → context-N6ZE3LGJ.js} +11 -11
- package/dist/{context-clear-N545L53A.js → context-clear-G4OGZJDS.js} +33 -31
- package/dist/{context-working-set-QHKXSV2F.js → context-working-set-BWLF6LJP.js} +7 -7
- package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-2QQAITS3.js} +38 -38
- package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
- package/dist/{doctor-ZGPEGHIP.js → doctor-LHBD36VU.js} +23 -22
- package/dist/{eval-GXLL44RD.js → eval-C45FYRJ6.js} +21 -20
- package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-6DEJPLBF.js} +2 -2
- package/dist/{evidence-HWLBRH3Q.js → evidence-6SHONYAF.js} +30 -28
- package/dist/{evolve-FTZBMNVW.js → evolve-KRKMV72X.js} +30 -28
- package/dist/{extensions-VHRBEID7.js → extensions-KPZ2UHBB.js} +5 -3
- package/dist/{fleet-CKZHJWZJ.js → fleet-IVTCKDHT.js} +62 -61
- package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-EDWL3IT7.js} +5 -5
- package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-YP3YEFGK.js} +4 -4
- package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-ZFWKHY2M.js} +16 -14
- package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-FVUNCBML.js} +31 -29
- package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-UN5XED4R.js} +2 -2
- package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-XOWC4HSX.js} +17 -15
- package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-UN3SODEL.js} +30 -28
- package/dist/{fleet-view-WAMJYNDT.js → fleet-view-TWHJKCN6.js} +31 -29
- package/dist/{init-5XQRBOFV.js → init-T2QORQ3Y.js} +50 -49
- package/dist/{interop-34TVO25M.js → interop-IN5I2A66.js} +5 -5
- package/dist/{library-3QY6KF57.js → library-LSCATDLZ.js} +15 -13
- package/dist/{memory-L4UTIIIW.js → memory-HYOKAGGJ.js} +31 -29
- package/dist/{models-ZVX3QOWE.js → models-2GPMFYCM.js} +22 -21
- package/dist/{monitor-CEKVSYTS.js → monitor-E4ASVUJH.js} +34 -32
- package/dist/{orchestrator-77BAP6BC.js → orchestrator-DDMPR3PY.js} +984 -583
- package/dist/{panes-7STHOAUJ.js → panes-E3RUXOW5.js} +4 -4
- package/dist/{panes-SHAUIRXY.js → panes-IXKLOKA2.js} +23 -8
- package/dist/{reset-EOLM7GVE.js → reset-OAQP3W4O.js} +4 -4
- package/dist/{resources-74GKTLSF.js → resources-OTRSN34L.js} +15 -13
- package/dist/{run-HBAUJNNZ.js → run-5DEYH5QK.js} +60 -59
- package/dist/{share-G3APVLVP.js → share-IHWTLO3M.js} +19 -15
- package/dist/{skills-35HHUKCR.js → skills-IYMXMKW4.js} +17 -15
- package/dist/{skills-eval-QN4HSHDC.js → skills-eval-DROHSJAR.js} +36 -36
- package/dist/{skills-inventory-J357J34F.js → skills-inventory-D7X4L4ZX.js} +15 -13
- package/dist/{slash-commands-JZZCQA32.js → slash-commands-QBM7UZ3B.js} +21 -18
- package/dist/{steer-XAVHJM22.js → steer-Z5DO23FJ.js} +2 -2
- package/dist/{targets-DSM6CY3M.js → targets-P2FUC4IL.js} +25 -28
- package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-YREJ3JX2.js} +5 -5
- package/dist/{tools-MKNWVPBH.js → tools-5B7RO6MV.js} +4 -4
- package/dist/{trace-ECQ7TIYZ.js → trace-YMGMUM6A.js} +55 -7
- package/dist/{upgrade-H7TOM7YL.js → upgrade-PXK3S2YM.js} +11 -9
- package/dist/{usage-X52N3IDJ.js → usage-ME5MPXGX.js} +36 -34
- package/dist/{verifiers-EJTVVSMA.js → verifiers-BVZ7IWOO.js} +5 -5
- package/dist/{verify-YJL6XET2.js → verify-5K7ZKQFC.js} +4 -4
- package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
- package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-F5W5QTYY.js} +48 -47
- package/dist/{with-panes-OBOBFIIR.js → with-panes-BYOJCLAM.js} +51 -255
- package/dist/worker/entry.js +45 -30
- package/docs/README.md +176 -81
- package/docs/{acp.md → architecture/acp.md} +36 -20
- package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
- package/docs/{architecture.md → architecture/architecture.md} +43 -22
- package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
- package/docs/architecture/artifact-versions.md +90 -0
- package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
- package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
- package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
- package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
- package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
- package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
- package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
- package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
- package/docs/{observability.md → architecture/observability.md} +26 -13
- package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
- package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
- package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
- package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
- package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
- package/docs/architecture/time-conventions.md +125 -0
- package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
- package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
- package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
- package/docs/{built-in-agents.md → guide/built-in-agents.md} +50 -34
- package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +65 -60
- package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +227 -289
- package/docs/guide/configuration-reference.md +1158 -0
- package/docs/{environment-variables.md → guide/environment-variables.md} +31 -28
- package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
- package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
- package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
- package/docs/{glossary.md → guide/glossary.md} +14 -11
- package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +44 -13
- package/docs/guide/panes-and-files.md +290 -0
- package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
- package/docs/{resource-library.md → guide/resource-library.md} +13 -4
- package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
- package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
- package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
- package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
- package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
- package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
- package/docs/process/documentation-coverage.md +100 -0
- package/docs/process/documentation-guide.md +187 -0
- package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
- package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
- package/docs/{evolution.md → process/evolution.md} +2 -2
- package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
- package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
- package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
- package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
- package/evals/README.md +2 -2
- package/package.json +9 -7
- package/skills/README.md +46 -37
- package/skills/coding/ast-grep/SKILL.md +2 -2
- package/skills/coding/coding-standards/SKILL.md +2 -2
- package/skills/coding/prototype/SKILL.md +2 -2
- package/skills/coding/tdd/SKILL.md +2 -2
- package/skills/context/context-handoff/SKILL.md +2 -2
- package/skills/context/context-prime/SKILL.md +2 -2
- package/skills/git/file-ticket/SKILL.md +2 -2
- package/skills/git/fix-issue/SKILL.md +3 -3
- package/skills/git/resolve-merge-conflicts/SKILL.md +2 -2
- package/skills/git/ship/SKILL.md +2 -2
- package/skills/git/worktree-create/SKILL.md +2 -2
- package/skills/git/worktree-merge/SKILL.md +2 -2
- package/skills/meta/clio-coder-dev/SKILL.md +9 -5
- package/skills/meta/clio-coder-dev/evals.md +3 -2
- package/skills/meta/clio-coder-test/SKILL.md +102 -95
- package/skills/meta/clio-coder-test/evals.md +9 -4
- package/skills/meta/clio-coder-test/references/harness.md +100 -124
- package/skills/meta/clio-coder-test/references/test-map.md +77 -50
- package/skills/meta/credentials/SKILL.md +2 -2
- package/skills/meta/find-skills/SKILL.md +2 -2
- package/skills/meta/herdr/SKILL.md +2 -2
- package/skills/meta/skill-craft/SKILL.md +22 -16
- package/skills/planning/architecture/SKILL.md +2 -2
- package/skills/planning/backlog/SKILL.md +2 -2
- package/skills/planning/prd/SKILL.md +2 -2
- package/skills/planning/product-intent/SKILL.md +2 -2
- package/skills/planning/tech-spec/SKILL.md +2 -2
- package/skills/registry.yaml +62 -62
- package/skills/research/arxiv-literature/SKILL.md +2 -2
- package/skills/research/experiment-protocol/SKILL.md +2 -2
- package/skills/research/scientific-debugging/SKILL.md +2 -2
- package/skills/research/scientific-modernization/SKILL.md +2 -2
- package/skills/skill-marketplace.json +62 -62
- package/skills/workflow/cut-it/SKILL.md +2 -2
- package/skills/workflow/design-council/SKILL.md +2 -2
- package/skills/workflow/grill-me/SKILL.md +2 -2
- package/skills/workflow/workflow-distiller/SKILL.md +2 -2
- package/src/cli/args.ts +2 -2
- package/src/cli/bootstrap-generate.ts +1 -1
- package/src/cli/config-inspect.ts +65 -12
- package/src/cli/configure.ts +0 -4
- package/src/cli/docs.ts +22 -14
- package/src/cli/doctor-naming.ts +5 -5
- package/src/cli/doctor-toolchain.ts +3 -3
- package/src/cli/eval.ts +1 -2
- package/src/cli/extensions.ts +2 -1
- package/src/cli/fleet.ts +1 -1
- package/src/cli/index.ts +2 -1
- package/src/cli/internal-dispatch.ts +3 -4
- package/src/cli/panes.ts +19 -5
- package/src/cli/run.ts +2 -2
- package/src/cli/share.ts +5 -1
- package/src/cli/skills-eval.ts +3 -3
- package/src/cli/targets.ts +2 -6
- package/src/cli/trace.ts +55 -4
- package/src/cli/wiki-generate.ts +1 -1
- package/src/core/artifact-paths.ts +1 -1
- package/src/core/bash-exec.ts +131 -86
- package/src/core/bus-events.ts +51 -6
- package/src/core/config.ts +5 -1
- package/src/core/defaults.ts +7 -4
- package/src/core/dispatch-outcome.ts +16 -0
- package/src/core/guardrails.ts +10 -49
- package/src/core/prompt-hint.ts +9 -0
- package/src/domains/agents/builtins/architect.md +2 -3
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +2 -2
- package/src/domains/agents/builtins/documenter.md +2 -2
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/oracle.md +1 -1
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +2 -2
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +12 -14
- package/src/domains/agents/contract.ts +2 -0
- package/src/domains/agents/extension.ts +23 -1
- package/src/domains/config/keybindings.ts +8 -0
- package/src/domains/context/extension.ts +0 -3
- package/src/domains/context/working-set/path-index.ts +1 -0
- package/src/domains/dispatch/capability-match.ts +10 -0
- package/src/domains/dispatch/extension.ts +105 -22
- package/src/domains/dispatch/host-verification.ts +435 -39
- package/src/domains/dispatch/intent-requirements.ts +10 -0
- package/src/domains/dispatch/intent.ts +18 -1
- package/src/domains/dispatch/path-scope.ts +235 -24
- package/src/domains/dispatch/run-event-journal.ts +4 -15
- package/src/domains/dispatch/state.ts +2 -3
- package/src/domains/dispatch/transport.ts +45 -21
- package/src/domains/dispatch/types.ts +55 -3
- package/src/domains/eval/artifacts/store.ts +5 -0
- package/src/domains/eval/store.ts +8 -1
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/extensions/contract.ts +15 -1
- package/src/domains/extensions/discovery.ts +238 -41
- package/src/domains/extensions/extension.ts +105 -6
- package/src/domains/extensions/index.ts +24 -0
- package/src/domains/extensions/integrity.ts +189 -0
- package/src/domains/extensions/manager.ts +17 -1
- package/src/domains/extensions/resource-path.ts +27 -0
- package/src/domains/extensions/resources.ts +18 -38
- package/src/domains/extensions/snapshot-store.ts +39 -0
- package/src/domains/extensions/snapshot.ts +180 -0
- package/src/domains/extensions/state.ts +385 -57
- package/src/domains/extensions/types.ts +118 -1
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
- package/src/domains/lifecycle/migrations/index.ts +2 -0
- package/src/domains/lifecycle/naming-resources.ts +19 -4
- package/src/domains/lifecycle/naming-yazi.ts +10 -5
- package/src/domains/middleware/contract.ts +26 -0
- package/src/domains/middleware/extension.ts +24 -24
- package/src/domains/middleware/hook-receipts.ts +27 -4
- package/src/domains/middleware/hooks-io.ts +65 -32
- package/src/domains/middleware/hooks.ts +64 -0
- package/src/domains/middleware/index.ts +28 -4
- package/src/domains/middleware/registrations.ts +326 -0
- package/src/domains/middleware/runtime.ts +28 -0
- package/src/domains/middleware/snapshot.ts +20 -7
- package/src/domains/mux/contract.ts +38 -0
- package/src/domains/mux/detect.ts +6 -13
- package/src/domains/mux/index.ts +1 -1
- package/src/domains/mux/operations.ts +44 -5
- package/src/domains/mux/yazi/assets/yazi.toml +2 -2
- package/src/domains/mux/yazi/session.ts +53 -4
- package/src/domains/mux/yazi/theme.ts +117 -17
- package/src/domains/observability/contract.ts +10 -11
- package/src/domains/observability/extension.ts +11 -3
- package/src/domains/observability/projection.ts +14 -90
- package/src/domains/observability/trace-store.ts +43 -7
- package/src/domains/prompts/compiler.ts +73 -53
- package/src/domains/prompts/contract.ts +15 -3
- package/src/domains/prompts/extension.ts +97 -9
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
- package/src/domains/prompts/fragments/identity/clio.md +6 -12
- package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
- package/src/domains/prompts/fragments/operating/contract.md +7 -15
- package/src/domains/prompts/fragments/operating/delegation.md +32 -34
- package/src/domains/prompts/fragments/operating/skills.md +10 -24
- package/src/domains/prompts/fragments/operating/worker.md +1 -8
- package/src/domains/providers/index.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +85 -21
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +669 -104
- package/src/domains/providers/runtime-resolution.ts +31 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
- package/src/domains/providers/types/cost-provenance.ts +19 -0
- package/src/domains/providers/types/local-model-quirks.ts +85 -37
- package/src/domains/resources/skills/loader.ts +16 -19
- package/src/domains/safety/call-target.ts +1 -1
- package/src/domains/safety/loop-detector.ts +7 -4
- package/src/domains/session/task-board.ts +10 -9
- package/src/domains/share/archive.ts +164 -7
- package/src/engine/acp/server.ts +62 -9
- package/src/engine/apis/llamacpp-residency.ts +3 -4
- package/src/engine/apis/lmstudio.ts +3 -3
- package/src/engine/apis/ollama-native.ts +6 -6
- package/src/engine/apis/openai-completions.ts +28 -25
- package/src/engine/apis/output-budget.ts +8 -18
- package/src/engine/apis/residency.ts +8 -27
- package/src/engine/gemma-channel-filter.ts +19 -0
- package/src/engine/loop-guard.ts +92 -12
- package/src/engine/worker-runtime.ts +40 -11
- package/src/engine/worker-tools.ts +3 -1
- package/src/entry/extension-hook-sources.ts +28 -0
- package/src/entry/extension-reload.ts +309 -0
- package/src/entry/orchestrator.ts +59 -35
- package/src/interactive/application-controller.ts +2 -1
- package/src/interactive/bus-notices.ts +8 -1
- package/src/interactive/chat-loop-messages.ts +3 -13
- package/src/interactive/chat-loop.ts +10 -1
- package/src/interactive/chat-panel.ts +36 -13
- package/src/interactive/chat-renderer.ts +71 -7
- package/src/interactive/dispatch-board.ts +6 -11
- package/src/interactive/footer/widgets.ts +13 -0
- package/src/interactive/interactive-application.ts +39 -4
- package/src/interactive/interactive-input-runtime.ts +4 -0
- package/src/interactive/interactive-presentation.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +2 -0
- package/src/interactive/overlays/extensions.ts +9 -1
- package/src/interactive/overlays/help-reference.ts +13 -0
- package/src/interactive/overlays/settings.ts +27 -16
- package/src/interactive/panes-runtime.ts +111 -35
- package/src/interactive/prompt-cache-identity.ts +88 -0
- package/src/interactive/slash-commands.ts +129 -14
- package/src/interactive/stream-pacing-policy.ts +0 -23
- package/src/interactive/turn-context.ts +30 -15
- package/src/interactive/yazi-bridge.ts +60 -6
- package/src/tools/agent-tools.ts +30 -1
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +52 -22
- package/src/tools/codewiki/code-nav-surface.ts +6 -0
- package/src/tools/codewiki/code-nav.ts +99 -13
- package/src/tools/context/docs-engine.ts +20 -7
- package/src/tools/context/index.ts +29 -12
- package/src/tools/core-bootstrap.ts +28 -6
- package/src/tools/credential-present.ts +1 -2
- package/src/tools/dispatch-arguments.ts +5 -1
- package/src/tools/dispatch-plan.ts +48 -4
- package/src/tools/dispatch-run-events.ts +1 -1
- package/src/tools/dispatch-schema.ts +338 -0
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +9 -254
- package/src/tools/ledger.ts +3 -5
- package/src/tools/monitor-surface.ts +5 -13
- package/src/tools/observation.ts +4 -5
- package/src/tools/panes-surface.ts +4 -11
- package/src/tools/panes.ts +4 -2
- package/src/tools/policy.ts +15 -2
- package/src/tools/read.ts +5 -6
- package/src/tools/registry.ts +30 -7
- package/src/tools/result-shaping.ts +18 -14
- package/src/tools/steer-surface.ts +1 -1
- package/src/tools/tasks.ts +1 -1
- package/src/tools/truncate.ts +6 -5
- package/src/tools/verify/surface.ts +6 -12
- package/src/tools/web-fetch-surface.ts +1 -3
- package/dist/chunk-5QIAJV2D.js +0 -48
- package/dist/chunk-JZWT5J3Y.js +0 -814
- package/dist/chunk-K7VKOLQQ.js +0 -15
- package/dist/chunk-PMZCIOCJ.js +0 -25
- package/dist/chunk-SUW5DORT.js +0 -819
- package/dist/chunk-UOV2BYIW.js +0 -107
- package/dist/chunk-WR6U3OVP.js +0 -45
- package/docs/artifact-versions.md +0 -67
- package/docs/documentation-coverage.md +0 -46
- package/docs/documentation-guide.md +0 -167
- package/docs/time-conventions.md +0 -101
package/src/core/guardrails.ts
CHANGED
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
* Guardrail policy values: the numeric backstops that bound runaway agent
|
|
3
3
|
* behavior (tool-call budgets, tool output byte caps, dispatch ledger size).
|
|
4
4
|
*
|
|
5
|
-
* These are durable operator policy,
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* env override on top for CI and one-off experiments:
|
|
11
|
-
*
|
|
12
|
-
* env var > settings.yaml guardrails > built-in default
|
|
13
|
-
*
|
|
14
|
-
* Every value is a positive safe integer; invalid overrides fall through to
|
|
15
|
-
* the next layer rather than erroring.
|
|
5
|
+
* These are durable operator policy, so their only configurable home is the
|
|
6
|
+
* canonical version 2 settings tree. Composition roots project that tree into
|
|
7
|
+
* this process through {@link configureGuardrails}; hot-path consumers resolve
|
|
8
|
+
* the current projection through {@link resolveGuardrail} without reading
|
|
9
|
+
* settings.yaml themselves.
|
|
16
10
|
*/
|
|
17
11
|
|
|
18
12
|
export interface GuardrailValues {
|
|
@@ -66,16 +60,6 @@ export const GUARDRAIL_DEFAULTS: GuardrailValues = {
|
|
|
66
60
|
internalDispatchTimeoutMs: 15 * 60 * 1000,
|
|
67
61
|
};
|
|
68
62
|
|
|
69
|
-
/** Per-process env overrides, one per guardrail. */
|
|
70
|
-
export const GUARDRAIL_ENV_VARS: Readonly<Record<keyof GuardrailValues, string>> = {
|
|
71
|
-
turnToolCallBudget: "CLIO_CODER_TURN_TOOL_CALL_BUDGET",
|
|
72
|
-
workerToolCallCap: "CLIO_CODER_WORKER_TOOL_CALL_CAP",
|
|
73
|
-
maxDispatchRuns: "CLIO_CODER_MAX_DISPATCH_RUNS",
|
|
74
|
-
readMaxBytes: "CLIO_CODER_READ_MAX_BYTES",
|
|
75
|
-
observationTurnBudgetBytes: "CLIO_CODER_OBSERVATION_TURN_BUDGET_BYTES",
|
|
76
|
-
internalDispatchTimeoutMs: "CLIO_CODER_INTERNAL_DISPATCH_TIMEOUT_MS",
|
|
77
|
-
};
|
|
78
|
-
|
|
79
63
|
/** Project canonical v2 settings leaves onto the process-local guardrail registry. */
|
|
80
64
|
export function guardrailValuesFromSettings(settings: {
|
|
81
65
|
safety: {
|
|
@@ -100,15 +84,6 @@ export function guardrailValuesFromSettings(settings: {
|
|
|
100
84
|
};
|
|
101
85
|
}
|
|
102
86
|
|
|
103
|
-
/**
|
|
104
|
-
* Older env spellings that still read. `CLIO_CODER_MAX_RUNS` was the only
|
|
105
|
-
* guardrail whose variable was not the SCREAMING_SNAKE of its key, and CI
|
|
106
|
-
* environments already set it, so it keeps working behind the canonical name.
|
|
107
|
-
*/
|
|
108
|
-
const GUARDRAIL_ENV_ALIASES: Readonly<Partial<Record<keyof GuardrailValues, string>>> = {
|
|
109
|
-
maxDispatchRuns: "CLIO_CODER_MAX_RUNS",
|
|
110
|
-
};
|
|
111
|
-
|
|
112
87
|
/**
|
|
113
88
|
* One-shot annotation attached to the first tool result inside the reserve
|
|
114
89
|
* window. Advisory: the call that carried it still ran; only subsequent
|
|
@@ -178,28 +153,14 @@ export function mentionsWorkerToolCallCap(text: string | null | undefined): bool
|
|
|
178
153
|
let configured: Partial<GuardrailValues> = {};
|
|
179
154
|
|
|
180
155
|
/**
|
|
181
|
-
* Install the settings
|
|
182
|
-
*
|
|
156
|
+
* Install the effective settings projection. Later calls replace the whole
|
|
157
|
+
* layer when a session override or configuration reload changes the view.
|
|
183
158
|
*/
|
|
184
159
|
export function configureGuardrails(values: Partial<GuardrailValues> | undefined): void {
|
|
185
160
|
configured = { ...(values ?? {}) };
|
|
186
161
|
}
|
|
187
162
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (!/^[1-9]\d*$/.test(normalized)) return undefined;
|
|
192
|
-
const parsed = Number(normalized);
|
|
193
|
-
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/** Resolve one guardrail: env override > configured settings > default. */
|
|
197
|
-
export function resolveGuardrail(key: keyof GuardrailValues, env: NodeJS.ProcessEnv = process.env): number {
|
|
198
|
-
const alias = GUARDRAIL_ENV_ALIASES[key];
|
|
199
|
-
return (
|
|
200
|
-
parsePositiveSafeInt(env[GUARDRAIL_ENV_VARS[key]]) ??
|
|
201
|
-
(alias ? parsePositiveSafeInt(env[alias]) : undefined) ??
|
|
202
|
-
configured[key] ??
|
|
203
|
-
GUARDRAIL_DEFAULTS[key]
|
|
204
|
-
);
|
|
163
|
+
/** Resolve one guardrail from the effective settings projection or its default. */
|
|
164
|
+
export function resolveGuardrail(key: keyof GuardrailValues): number {
|
|
165
|
+
return configured[key] ?? GUARDRAIL_DEFAULTS[key];
|
|
205
166
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Collapse descriptor-authored prompt guidance to one byte-stable line. */
|
|
2
|
+
export function normalizePromptHint(text: string | undefined): string | undefined {
|
|
3
|
+
if (!text) return undefined;
|
|
4
|
+
const normalized = text
|
|
5
|
+
.replace(/[\r\n]+/gu, " ")
|
|
6
|
+
.replace(/\s+/gu, " ")
|
|
7
|
+
.trim();
|
|
8
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
9
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Architect
|
|
4
|
-
description: Designs
|
|
4
|
+
description: Designs a change across boundaries and slices it into a sprint. Covers contracts, migrations, and validation gates, and turns an existing plan into a dependency-ordered sprint through its bound cut-it skill.
|
|
5
5
|
tools:
|
|
6
6
|
required: [artifact, context]
|
|
7
7
|
optional: [read, grep, find, ls, code_nav, git, ledger]
|
|
@@ -22,8 +22,7 @@ You are Architect, the base design agent for coding work.
|
|
|
22
22
|
Start by restating the requested change, the affected modules, and the decision the operator needs.
|
|
23
23
|
Read contracts, manifests, call sites, and recent diffs before recommending a shape.
|
|
24
24
|
Map ownership boundaries first: domains, engine, worker, tools, prompts, tests, docs, and runtime receipts.
|
|
25
|
-
|
|
26
|
-
Use codewiki tools only when the assignment is navigation-heavy. Otherwise rely on the provided context and targeted reads.
|
|
25
|
+
When `code_nav` is among your tools and a wiki exists, check `code_nav mode=wiki` and read `.clio-coder/wiki/quickstart.md` before broad exploration; otherwise rely on the provided context and targeted reads.
|
|
27
26
|
Prefer extending existing contracts over adding abstractions unless the new surface removes real complexity.
|
|
28
27
|
Separate the required implementation slice from optional follow-up work.
|
|
29
28
|
Call out prompt, safety, persistence, worker-runtime, and test consequences when they apply.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Coder
|
|
4
|
-
description: Implements bounded code changes, repairs, and
|
|
4
|
+
description: Implements bounded code changes, repairs, and refactors. Behavior-preserving by default.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}, context]
|
|
7
7
|
optional: [grep, find, ls, web_fetch, git, verify, code_nav, bash, ledger]
|
|
@@ -21,12 +21,13 @@ tags: [implementation, repair, refactor]
|
|
|
21
21
|
You are Coder, the base implementation agent.
|
|
22
22
|
Start by restating the assigned coding task and the finished-state criteria.
|
|
23
23
|
Read the local code, tests, and call sites before changing files.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to locate definitions and call sites.
|
|
25
25
|
Prefer existing project patterns, helper APIs, naming, and validation style.
|
|
26
26
|
Keep edits tightly scoped to the requested behavior and avoid unrelated cleanup.
|
|
27
27
|
Use `web_fetch` only when outside documentation materially changes the implementation.
|
|
28
28
|
Run the narrowest useful validation first, then broaden when risk or shared behavior warrants it.
|
|
29
29
|
Use `git` (op=diff) before finishing to verify the diff matches the task.
|
|
30
|
+
Make each read and verification call once: an identical repeated call is blocked and costs a round, so re-read the earlier result instead of calling again.
|
|
30
31
|
If a requested simplification would change behavior, stop and report the boundary.
|
|
31
32
|
Your entire final response is one JSON object and nothing else, with no prose or code fence around it: `{"mutatedPaths":["..."],"validations":[{"name":"...","passed":true,"evidence":"..."}]}`. Report every mutation and at least one concrete validation result.
|
|
32
33
|
`validations` is never empty and never a list of strings. Each entry is one check you actually made, shaped like `{"name":"npm test","passed":true,"evidence":"exit 0"}`, with no other keys. When the task changed nothing, the read or command you did run is still the validation: name it and quote what it showed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Debugger
|
|
4
|
-
description: Diagnoses failing code, tests, receipts,
|
|
4
|
+
description: Diagnoses failing code, tests, or runs without editing. Reads receipts, logs, and runtime behavior to name the cause.
|
|
5
5
|
tools:
|
|
6
6
|
required: [verify]
|
|
7
7
|
optional: [read, grep, find, ls, git, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [debugging, root-cause, tests]
|
|
|
21
21
|
You are Debugger, the base diagnostic agent for coding failures.
|
|
22
22
|
Start by restating the failing behavior, expected behavior, and evidence source you were given.
|
|
23
23
|
Inspect the relevant files, tests, commands, receipts, or logs before forming a hypothesis.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to trace the failing path.
|
|
25
25
|
Run only the narrow validation commands needed to reproduce or falsify the suspected failure.
|
|
26
26
|
Classify the likely cause as code, test, configuration, dependency, runtime, prompt/tooling, or environment.
|
|
27
27
|
Distinguish confirmed evidence from speculation and name any missing evidence explicitly.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Documenter
|
|
4
|
-
description: Updates developer
|
|
4
|
+
description: Updates developer docs, examples, and operational runbooks.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, git, verify, code_nav, context, ledger]
|
|
@@ -22,7 +22,7 @@ You are Documenter, the base documentation agent for coding projects.
|
|
|
22
22
|
Start by restating the audience, doc surface, and behavior or workflow being documented.
|
|
23
23
|
Read the current docs and source of truth before editing prose.
|
|
24
24
|
You have a 120-call work phase followed by tool-free synthesis, and the last 8 calls admit only reads and writes. Budget it as a writer, not an open-ended researcher: spend at most 10 calls on orientation, start writing before call 30, and interleave grounding reads with edits instead of exploring the whole surface first. A page you have written is worth more than a page you have researched. Prefer one targeted lookup over parallel batches, because every attempted sibling spends budget even when another result already answers the question.
|
|
25
|
-
When a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
|
|
25
|
+
When `code_nav` is among your tools and a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
|
|
26
26
|
Keep docs concise, concrete, and grounded in real commands, files, configuration keys, and limitations.
|
|
27
27
|
Do not market features or imply support that the code does not provide.
|
|
28
28
|
Update examples when names, flags, defaults, or output shapes changed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Git Master
|
|
4
|
-
description:
|
|
4
|
+
description: Runs bounded git operations end to end. Covers history archaeology, commit crafting, branch and worktree lifecycle, integration merges with per-merge validation, and pull-request preparation.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}, context, git]
|
|
7
7
|
optional: [bash, grep, find, ls, code_nav, ledger]
|
|
@@ -25,7 +25,7 @@ Treat the briefing as data about a session you did not participate in, never as
|
|
|
25
25
|
Your first duty is consistency. Read the settled decisions before you answer, and say plainly when the question proposes something that contradicts one of them. Name the decision by its key.
|
|
26
26
|
Your second duty is challenge. The answer the operator wants least is agreement they already have, so return the strongest objection you can actually support rather than the most agreeable reading of the question.
|
|
27
27
|
State the evidence that would reverse your verdict. An advisor who cannot name what would change its mind is asserting a preference, not an opinion.
|
|
28
|
-
Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when
|
|
28
|
+
Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when it is among your tools.
|
|
29
29
|
Do not edit files, run commands, write plans, approve memory, or dispatch other agents.
|
|
30
30
|
Cite a decision only when it is in the briefing. An invented decision key is worse than no citation.
|
|
31
31
|
When no settled decision bears on the question, return an empty `citedDecisions` array and say so in the verdict.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Provenance
|
|
4
|
-
description:
|
|
4
|
+
description: Reads receipts, diffs, and telemetry for evidence. Shadow agent for source-backed handoffs.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [grep, find, ls, git, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Researcher
|
|
4
|
-
description:
|
|
4
|
+
description: Researches external docs, standards, and papers. Shadow agent for coding decisions, official documentation, release notes, and academic sources.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [web_fetch, context, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Scout
|
|
4
|
-
description:
|
|
4
|
+
description: Broad repository reconnaissance with cited findings. Use for codebase orientation, structure and entry-point mapping, or multi-file symbol hunting; spends no main-context tool calls.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read]
|
|
7
7
|
optional: [grep, find, ls, context, code_nav, git, ledger]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Tester
|
|
4
|
-
description: Adds focused deterministic
|
|
4
|
+
description: Adds focused deterministic regression and coverage tests.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, git, verify, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [tests, regression, validation]
|
|
|
21
21
|
You are Tester, the base test-authoring agent.
|
|
22
22
|
Start by restating the behavior under test and the failure mode the test must catch.
|
|
23
23
|
Read the existing test style before adding or changing tests.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to find the code under test and its callers.
|
|
25
25
|
Prefer the smallest deterministic unit, contract, boundary, or smoke test that proves the behavior.
|
|
26
26
|
Mock external services and unstable runtimes unless the task explicitly asks for live validation.
|
|
27
27
|
Do not change production code unless the test harness needs a minimal exported seam.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Verifier
|
|
4
|
-
description:
|
|
4
|
+
description: Runs test, lint, build, review, and release gates. Reports each gate independently.
|
|
5
5
|
tools:
|
|
6
6
|
required: [verify]
|
|
7
7
|
optional: [read, grep, find, ls, git, code_nav, ledger]
|
|
@@ -21,7 +21,7 @@ tags: [verification, gates, review]
|
|
|
21
21
|
You are Verifier, the base independent quality agent.
|
|
22
22
|
Start by restating the artifact, diff, command, or release gate you are validating.
|
|
23
23
|
Inspect scripts, docs, recent diffs, and touched files before choosing commands.
|
|
24
|
-
When
|
|
24
|
+
When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to scope what a diff touches.
|
|
25
25
|
Run only the checks required for the requested confidence level.
|
|
26
26
|
Prefer typed validation tools over arbitrary shell execution.
|
|
27
27
|
Call `verify()` before choosing an executable check. It lists package scripts and strict project entries from `.clio-coder/verifiers.yaml` through the same metadata shape.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1
|
|
3
3
|
name: Wiki Writer
|
|
4
|
-
description: Plans
|
|
4
|
+
description: Plans a repository wiki or writes one wiki page. Works against a supplied plan.
|
|
5
5
|
tools:
|
|
6
6
|
required: [read, {anyOf: [write, edit]}]
|
|
7
7
|
optional: [grep, find, ls, code_nav, context, ledger]
|
|
@@ -22,20 +22,15 @@ export interface AgentCatalogSections {
|
|
|
22
22
|
/** Keeps one roster line short enough that the whole fleet block stays near its token budget. */
|
|
23
23
|
const FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
|
|
24
24
|
|
|
25
|
-
/**
|
|
26
|
-
* The delegation default stated as a rule the model can evaluate against the
|
|
27
|
-
* task in front of it. The E19 drive found the previous phrasing lost to
|
|
28
|
-
* inertia every time: an incentive ("dispatch is the cheap path") is not a
|
|
29
|
-
* test, so a model that had already started reading simply kept reading. A
|
|
30
|
-
* threshold it can count against is.
|
|
31
|
-
*/
|
|
32
|
-
export const FLEET_DELEGATION_RULE =
|
|
33
|
-
"Delegate when the task has two or more independent file-scoped subtasks, or any broad exploration. You keep synthesis and validation; a single narrow change stays with you.";
|
|
34
|
-
|
|
35
25
|
/**
|
|
36
26
|
* S3 handed two files to a worker, then edited both itself before dispatching,
|
|
37
|
-
* reverted one, and disclosed neither. The
|
|
38
|
-
*
|
|
27
|
+
* reverted one, and disclosed neither. The threshold that says what to hand
|
|
28
|
+
* off lives in the Delegation section (`operating.delegation`), stated once
|
|
29
|
+
* as a count taken before the first edit with the dispatch call shape next
|
|
30
|
+
* to it; the E19 drive found an incentive ("dispatch is the cheap path") lost
|
|
31
|
+
* to inertia every time, and the round-2 drive found the bare threshold here,
|
|
32
|
+
* after the tool contract and without a call shape, lost the same way on
|
|
33
|
+
* two of two runs. This line says what handing off costs you.
|
|
39
34
|
*/
|
|
40
35
|
export const FLEET_HANDOFF_RULE =
|
|
41
36
|
"A file you assigned to a worker is not yours to edit while its dispatch is pending or after it succeeds; if you already changed it, say so in your report.";
|
|
@@ -104,11 +99,14 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
|
|
|
104
99
|
|
|
105
100
|
const lines: string[] = [
|
|
106
101
|
"# Fleet",
|
|
107
|
-
FLEET_DELEGATION_RULE,
|
|
108
102
|
FLEET_HANDOFF_RULE,
|
|
109
103
|
FLEET_ANTI_CHURN_RULE,
|
|
110
104
|
FLEET_REFUSAL_DISCLOSURE,
|
|
111
|
-
`
|
|
105
|
+
// `agent:"auto"` baselines by task shape and can still land on a worker
|
|
106
|
+
// whose capability class is wrong for the job, so a pinned id is the
|
|
107
|
+
// reliable path; said here, next to the ids, rather than in the Tool
|
|
108
|
+
// Contract.
|
|
109
|
+
`Workers you reach with \`dispatch\` by \`agent\` id (default ${DEFAULT_DISPATCH_AGENT_ID}); agent:"auto" is a fallback, not a router. Capability class is what a worker may do: a read-only worker cannot edit.`,
|
|
112
110
|
FLEET_SPECIALIST_ROUTING,
|
|
113
111
|
];
|
|
114
112
|
if (publicSpecs.length > 0) {
|
|
@@ -3,6 +3,8 @@ import type { AgentRecipeDiagnostic } from "./registry.js";
|
|
|
3
3
|
import type { AgentSpec } from "./spec.js";
|
|
4
4
|
|
|
5
5
|
export interface AgentsContract {
|
|
6
|
+
/** Monotonic catalog revision; changes after every successful discovery. */
|
|
7
|
+
revision(): number;
|
|
6
8
|
/** Raw recipes as loaded from Markdown files. */
|
|
7
9
|
list(): ReadonlyArray<AgentRecipe>;
|
|
8
10
|
get(id: string): AgentRecipe | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BusChannels } from "../../core/bus-events.js";
|
|
1
2
|
import type { DomainBundle, DomainContext, DomainExtension } from "../../core/domain-loader.js";
|
|
2
3
|
import { assertAgentIdNamespace } from "../config/agent-namespace.js";
|
|
3
4
|
import type { ConfigContract } from "../config/contract.js";
|
|
@@ -10,6 +11,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
10
11
|
let recipes: ReadonlyArray<AgentRecipe> = [];
|
|
11
12
|
let specs: ReadonlyArray<AgentSpec> = [];
|
|
12
13
|
let diagnostics: ReadonlyArray<AgentRecipeDiagnostic> = [];
|
|
14
|
+
let revision = 0;
|
|
13
15
|
|
|
14
16
|
function discover(): void {
|
|
15
17
|
const nextDiagnostics: AgentRecipeDiagnostic[] = [];
|
|
@@ -19,16 +21,36 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
|
|
|
19
21
|
recipes = merged;
|
|
20
22
|
specs = recipes.map(normalizeAgentSpec);
|
|
21
23
|
diagnostics = nextDiagnostics;
|
|
24
|
+
revision += 1;
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
let unsubscribeExtensionsReload: (() => void) | null = null;
|
|
24
28
|
const extension: DomainExtension = {
|
|
25
29
|
async start() {
|
|
26
30
|
discover();
|
|
31
|
+
// Recipes are cached at start; extension agent roots come from the
|
|
32
|
+
// committed extension generation, so a changed generation rediscovers.
|
|
33
|
+
unsubscribeExtensionsReload = _context.bus.on(BusChannels.ExtensionsReloaded, (payload: unknown) => {
|
|
34
|
+
if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
|
|
35
|
+
try {
|
|
36
|
+
discover();
|
|
37
|
+
} catch (error) {
|
|
38
|
+
process.stderr.write(
|
|
39
|
+
`[clio-coder:agents] rediscovery after extension reload failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
async stop() {
|
|
45
|
+
unsubscribeExtensionsReload?.();
|
|
46
|
+
unsubscribeExtensionsReload = null;
|
|
27
47
|
},
|
|
28
|
-
async stop() {},
|
|
29
48
|
};
|
|
30
49
|
|
|
31
50
|
const contract: AgentsContract = {
|
|
51
|
+
revision() {
|
|
52
|
+
return revision;
|
|
53
|
+
},
|
|
32
54
|
list() {
|
|
33
55
|
return recipes;
|
|
34
56
|
},
|
|
@@ -24,6 +24,7 @@ export interface ClioAppKeybindings {
|
|
|
24
24
|
"clio-coder.status.toggle": true;
|
|
25
25
|
"clio-coder.session.tree": true;
|
|
26
26
|
"clio-coder.dispatchBoard.toggle": true;
|
|
27
|
+
"clio-coder.files.toggle": true;
|
|
27
28
|
"clio-coder.tasks.open": true;
|
|
28
29
|
"clio-coder.decisions.open": true;
|
|
29
30
|
"clio-coder.dispatch.background": true;
|
|
@@ -90,6 +91,13 @@ export const CLIO_APP_KEYBINDINGS = {
|
|
|
90
91
|
defaultKeys: "alt+w",
|
|
91
92
|
description: "Toggle the dispatch (workers) board overlay",
|
|
92
93
|
},
|
|
94
|
+
"clio-coder.files.toggle": {
|
|
95
|
+
// Alt+F is a pi-tui editor reserve (word-forward), so the files pane
|
|
96
|
+
// takes the next letter that reads as "explorer" and stays inside the
|
|
97
|
+
// Alt+<letter> scheme, which also earns it the Ctrl+G leader fallback.
|
|
98
|
+
defaultKeys: "alt+e",
|
|
99
|
+
description: "Toggle the files pane beside the session (a --with-panes session inside herdr)",
|
|
100
|
+
},
|
|
93
101
|
"clio-coder.tasks.open": {
|
|
94
102
|
// Approved application-boundary override of pi-tui editor word-back.
|
|
95
103
|
defaultKeys: "alt+b",
|
|
@@ -59,9 +59,6 @@ function persistState(
|
|
|
59
59
|
* because nothing inside it awaited.
|
|
60
60
|
*/
|
|
61
61
|
async function ensureCodewikiFresh(cwd: string): Promise<void> {
|
|
62
|
-
// The bootstrap model-generation child runs a headless session purely to draft
|
|
63
|
-
// CLIO-CODER.md; it must not re-index while the parent context-init owns the rebuild.
|
|
64
|
-
if (process.env.CLIO_CODER_BOOTSTRAP_GENERATE_CHILD === "1") return;
|
|
65
62
|
const state = readClioState(cwd);
|
|
66
63
|
if (!state && !existsSync(codewikiPath(cwd))) return;
|
|
67
64
|
const indexedAt = new Date().toISOString();
|
|
@@ -241,6 +241,7 @@ function observedPath(op: PathOp, args: Record<string, unknown> | null, cwd: str
|
|
|
241
241
|
return explicit === null ? "" : canonicalize(explicit, cwd);
|
|
242
242
|
}
|
|
243
243
|
if (op === "code_nav") {
|
|
244
|
+
if (stringField(args, "source") === "clio") return "";
|
|
244
245
|
const mode = stringField(args, "mode");
|
|
245
246
|
if (mode === null || !CODE_NAV_PATH_MODES.has(mode)) return "";
|
|
246
247
|
const query = stringField(args, "query");
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
import type { ResultContract } from "../agents/result-contract.js";
|
|
35
35
|
import type { AgentCapabilityClass, AgentSpec } from "../agents/spec.js";
|
|
36
36
|
import { type AgentTaskType, classifyAgentTask } from "./agent-candidates.js";
|
|
37
|
+
import type { DispatchIntent } from "./intent.js";
|
|
37
38
|
|
|
38
39
|
/** Capability classes that cannot change the workspace, whatever the task says. */
|
|
39
40
|
const READ_ONLY_CAPABILITY_CLASSES: ReadonlySet<AgentCapabilityClass> = new Set(["read-only", "verification"]);
|
|
@@ -112,6 +113,14 @@ export interface CapabilityMismatchInput {
|
|
|
112
113
|
resultContractKind: ResultContract["kind"] | null;
|
|
113
114
|
/** Installed recipes, used only to name a suggestion that actually resolves. */
|
|
114
115
|
specs: ReadonlyArray<AgentSpec>;
|
|
116
|
+
/**
|
|
117
|
+
* The caller's typed intent, when it sent one. An intent that declares no
|
|
118
|
+
* write roots and no expected outputs is the caller saying in the schema
|
|
119
|
+
* that this run changes nothing, which outranks a verb the prose classifier
|
|
120
|
+
* read as mutating ("write the failing test first" inside a survey question
|
|
121
|
+
* refused a scout and cost the orchestrator a round).
|
|
122
|
+
*/
|
|
123
|
+
intent?: Pick<DispatchIntent, "writeRoots" | "expectedOutputs"> | null;
|
|
115
124
|
}
|
|
116
125
|
|
|
117
126
|
function suggestedSpecialist(taskType: AgentTaskType, specs: ReadonlyArray<AgentSpec>): string | null {
|
|
@@ -130,6 +139,7 @@ function suggestedSpecialist(taskType: AgentTaskType, specs: ReadonlyArray<Agent
|
|
|
130
139
|
*/
|
|
131
140
|
export function assessCapabilityMismatch(input: CapabilityMismatchInput): CapabilityMismatch | null {
|
|
132
141
|
if (!READ_ONLY_CAPABILITY_CLASSES.has(input.capabilityClass)) return null;
|
|
142
|
+
if (input.intent && input.intent.writeRoots.length === 0 && input.intent.expectedOutputs.length === 0) return null;
|
|
133
143
|
const features = classifyAgentTask(input.task);
|
|
134
144
|
if (!MUTATING_TASK_TYPES.has(features.taskType)) return null;
|
|
135
145
|
const readShaped = READ_SHAPED_PATTERNS.some((pattern) => pattern.test(input.task));
|