@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
|
@@ -1,126 +1,102 @@
|
|
|
1
1
|
# Clio test harness reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
terminal, the alternate-screen and keyboard-protocol teardown. The three
|
|
104
|
-
suites that need it are `tests/smoke/tui-width-matrix.test.ts`,
|
|
105
|
-
`instant-shell-pty.test.ts`, and `render-trace-pty.test.ts`. Anything else
|
|
106
|
-
belongs on `runCli`.
|
|
107
|
-
|
|
108
|
-
## One-off probes (no test file)
|
|
109
|
-
|
|
110
|
-
To poke at Clio without writing a permanent test, drop a throwaway script in
|
|
111
|
-
your scratch directory and run it with tsx. Delete it when done — never leave
|
|
112
|
-
probes under `tests/`, `scripts/`, or `benchmarks/`.
|
|
113
|
-
|
|
114
|
-
```ts
|
|
115
|
-
// /tmp/probe.ts
|
|
116
|
-
import { makeScratchHome, runCli } from "/abs/path/to/repo/tests/harness/spawn.js";
|
|
117
|
-
const scratch = makeScratchHome();
|
|
118
|
-
await runCli(["doctor", "--fix"], { env: scratch.env });
|
|
119
|
-
const out = await runCli(["skills", "list", "--json", "--all"], { env: scratch.env, cwd: process.cwd() });
|
|
120
|
-
console.log(out.stdout.slice(0, 400));
|
|
121
|
-
scratch.cleanup();
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
npx tsx /tmp/probe.ts
|
|
126
|
-
```
|
|
3
|
+
This reference covers the harness modules that exist in the current tree:
|
|
4
|
+
temporary-state isolation, dispatch fixtures, a loopback OpenAI-compatible
|
|
5
|
+
server, and the ACP stdio smoke driver. Deterministic tests do not contact a
|
|
6
|
+
real model and the repository currently has no shared spawn or PTY harness.
|
|
7
|
+
|
|
8
|
+
## Temporary roots and state isolation
|
|
9
|
+
|
|
10
|
+
The `test:file` and `test` package scripts preload `tests/harness/tmp-root.ts`.
|
|
11
|
+
It creates one guarded root below the system temp directory, points `TMPDIR`
|
|
12
|
+
inside it before test modules load, sweeps abandoned roots only after a bounded
|
|
13
|
+
age, and removes the current root on process exit. `tmp-git-guard.ts` prevents
|
|
14
|
+
a test from creating `.git` at the system or run temp root, where it would alter
|
|
15
|
+
project-boundary discovery for unrelated tests.
|
|
16
|
+
|
|
17
|
+
Use `tests/harness/scratch-env.ts` for Clio-specific state:
|
|
18
|
+
|
|
19
|
+
- `makeScratchHome()` returns a directory, a child-process environment, and a
|
|
20
|
+
cleanup function without mutating `process.env`.
|
|
21
|
+
- `isolateClioEnv()` snapshots and mutates `process.env`, resets the XDG cache,
|
|
22
|
+
and returns a restoring teardown.
|
|
23
|
+
- `newScratchClioHome()` and `clearScratchClioHome()` provide the same
|
|
24
|
+
in-process isolation when a plain directory string is more convenient.
|
|
25
|
+
- `scratchClioEnvVars()` keeps `CLIO_CODER_HOME` and the data, config, state,
|
|
26
|
+
and cache overrides in one root. The child-process form also sets
|
|
27
|
+
`CLIO_CODER_REQUIRE_HOME_PREFIX=1`.
|
|
28
|
+
|
|
29
|
+
In-process environment isolation is a process-wide critical section. Await the
|
|
30
|
+
acquire helper in setup and always invoke its matching restore or clear helper
|
|
31
|
+
in teardown.
|
|
32
|
+
|
|
33
|
+
## Driving the built CLI
|
|
34
|
+
|
|
35
|
+
Every file under `tests/smoke/` spawns `dist/cli/index.js` through a local
|
|
36
|
+
process driver suited to that boundary:
|
|
37
|
+
|
|
38
|
+
- `cli-core.test.ts` captures stdout and stderr with a bounded timeout.
|
|
39
|
+
- `acp-boundary.test.ts` keeps stdin open and frames ACP v1 JSON-RPC messages.
|
|
40
|
+
- `installed-package.test.ts` packs, installs, and launches the installed
|
|
41
|
+
artifact.
|
|
42
|
+
- `process-lifecycle.test.ts` keeps the process live long enough to verify
|
|
43
|
+
signal propagation into a tool child.
|
|
44
|
+
- `real-binary-boot.test.ts` supports interactive setup input and bounded
|
|
45
|
+
shutdown during first-run and migration checks.
|
|
46
|
+
|
|
47
|
+
Build before a focused smoke run. `npm run ci` performs that build in the
|
|
48
|
+
correct order. Keep environment roots under a scratch directory, capture both
|
|
49
|
+
output streams, bound every wait, and terminate a surviving child in teardown.
|
|
50
|
+
Do not import a nonexistent shared `runCli`; copy the closest smoke driver's
|
|
51
|
+
small pattern or extract a helper only when more than one current boundary has
|
|
52
|
+
the same contract.
|
|
53
|
+
|
|
54
|
+
## Loopback provider fixtures
|
|
55
|
+
|
|
56
|
+
`tests/harness/openai-compat-fixture.ts` exports
|
|
57
|
+
`startOpenAICompatFixture()` and `closeServer()`. The fixture listens on an
|
|
58
|
+
ephemeral loopback port, serves `/v1/models` and `/v1/chat/completions`, supports
|
|
59
|
+
streaming text and one scripted tool call, and records request bodies for
|
|
60
|
+
assertions. Its seed helpers write scratch target configurations for
|
|
61
|
+
orchestrator, tool, fleet, bootstrap, and unregistered-runtime cases.
|
|
62
|
+
|
|
63
|
+
The current reusable fixture is used by provider contracts. Smoke files define
|
|
64
|
+
their own minimal loopback servers because their wire behavior differs. In
|
|
65
|
+
either lane, close the server in teardown and assert the request body when the
|
|
66
|
+
test's claim concerns payload fields.
|
|
67
|
+
|
|
68
|
+
## Dispatch contracts
|
|
69
|
+
|
|
70
|
+
`tests/harness/dispatch.ts` provides:
|
|
71
|
+
|
|
72
|
+
- `makeDispatchBundle()` with the real prompt customization path and a fast,
|
|
73
|
+
argument-preserving reproducibility collector.
|
|
74
|
+
- `isolateDispatchState()` and `restoreDispatchState()` for ledger, receipt,
|
|
75
|
+
and environment isolation.
|
|
76
|
+
- `holdEventLoop()` for contracts that await an unref'd production watchdog.
|
|
77
|
+
|
|
78
|
+
`dispatch-stub-context.ts` supplies the minimal domain context used by dispatch
|
|
79
|
+
tests. `receipt.ts` supplies typed envelope and receipt drafts. Prefer these
|
|
80
|
+
fixtures over reconstructing broad domain objects in each test.
|
|
81
|
+
|
|
82
|
+
## ACP over JSON-RPC stdio
|
|
83
|
+
|
|
84
|
+
`tests/smoke/acp-boundary.test.ts` owns the current `AcpClient`. It launches
|
|
85
|
+
`clio-coder acp` with piped stdio, parses one JSON object per line, correlates
|
|
86
|
+
responses by id, collects `session/update` notifications, and handles inbound
|
|
87
|
+
`session/request_permission` calls.
|
|
88
|
+
|
|
89
|
+
The exercised sequence is `initialize`, `session/new`, `session/prompt`, then
|
|
90
|
+
`session/close`. Permission cases answer the inbound request with a selected
|
|
91
|
+
`allow-once` or `reject-once` option and assert both the final tool-call update
|
|
92
|
+
and the filesystem outcome. Keep stdout exclusively for protocol frames;
|
|
93
|
+
diagnostics belong on stderr.
|
|
94
|
+
|
|
95
|
+
## Disposable probes
|
|
96
|
+
|
|
97
|
+
A one-off diagnostic belongs under `/tmp`, not `tests/`, `scripts/`, or an
|
|
98
|
+
invented benchmark tree. Run TypeScript probes with `node --import tsx`, point
|
|
99
|
+
all Clio state variables at a fresh temporary root, and delete the probe after
|
|
100
|
+
recording the result. A result from a loopback fixture is machinery evidence,
|
|
101
|
+
not live-model evidence. Live validation must name the configured target,
|
|
102
|
+
model, runtime, prompt, and serving settings.
|
|
@@ -1,69 +1,96 @@
|
|
|
1
1
|
# Where Clio's tests live
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
The root repository has contract and smoke tests under `tests/`; import
|
|
4
|
+
boundaries run through the lint hygiene checker. Add a test beside the closest
|
|
5
|
+
current behavior, and create a new file only for a genuinely new cluster.
|
|
5
6
|
|
|
6
7
|
## Layout
|
|
7
8
|
|
|
8
|
-
|
|
|
9
|
+
| Lane | Path | Runner | Build needed |
|
|
9
10
|
|---|---|---|---|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
11
|
+
| Contracts | `tests/contracts/*.test.ts` | `npm run test:file -- <file-or-files>` through tsx and the temp-root preload | No; imports `src/` |
|
|
12
|
+
| Smoke | `tests/smoke/*.test.ts` | `npm run test:file -- <file-or-files>` | Yes; spawns `dist/cli/index.js` |
|
|
13
|
+
| Boundaries | `tests/boundaries/check-boundaries.ts` | `npm run lint` through `scripts/check-hygiene.ts` | No |
|
|
14
|
+
| Root full suite | Contract and smoke files | `npm run test` | Yes for current smoke behavior |
|
|
15
|
+
| Trace viewer | `apps/trace-viewer/tests/*.test.mjs` | `npm run test:trace-viewer` | No |
|
|
16
|
+
| Workbench | `apps/workbench/tests/` | `deno task verify` from `apps/workbench` | The command builds the app |
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`clock.ts` (steppable clock), plus dispatch, receipt, and module-graph helpers.
|
|
19
|
-
Everything under `tests/` stubs the model. Real-model runs are
|
|
20
|
-
`benchmarks/internal/` and never run under `npm test`.
|
|
18
|
+
`npm run ci` orders typecheck, lint, skill-pin verification, build, the root
|
|
19
|
+
suite, and trace-viewer tests. `npm run ci:release` adds the release audit. The
|
|
20
|
+
Workbench gate is separate.
|
|
21
21
|
|
|
22
|
-
## Contract
|
|
22
|
+
## Contract files
|
|
23
23
|
|
|
24
|
-
| Area |
|
|
24
|
+
| Area | Current files under `tests/contracts/` |
|
|
25
25
|
|---|---|
|
|
26
|
-
|
|
|
27
|
-
| context bootstrap
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
| skills
|
|
35
|
-
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
26
|
+
| Authentication | `auth-login-write-failure`, `auth-storage-durability` |
|
|
27
|
+
| Context, session, and state | `context-lifecycle`, `memory-scope`, `project-bootstrap`, `session-durability`, `state-file-lock`, `task-board-done`, `working-set-core` |
|
|
28
|
+
| Config, routing, and presentation | `footer-context-window`, `knob-aliases`, `pane-remedies`, `rendering-invariants`, `route-identity-keying`, `settings-migration` |
|
|
29
|
+
| Dispatch, fleet, and workers | `dispatch-admission`, `dispatch-lifecycle`, `dispatch-schema`, `fleet-lifecycle`, `host-verification-batch`, `intent-requirements`, `worker-attestation-surface`, `worker-boundary` |
|
|
30
|
+
| Prompts, engine loop, and middleware | `compact-prompt-contracts`, `engine-lifecycle`, `loop-detector`, `loop-guard-epoch`, `middleware-hooks`, `prompt-cache-correctness`, `prompt-prefix-layout`, `prompt-role-routing`, `prompt-session-snapshot`, `prompt-tool-hints` |
|
|
31
|
+
| Providers and model policy | `gemma-channel-filter`, `llamacpp-router-probe`, `local-model-family-resolution`, `provider-context-boundary`, `provider-transport`, `synthesis-lock`, `thinking-off-wire` |
|
|
32
|
+
| Safety and tools | `bash-exec-settlement`, `rejection-feedback`, `safe-resource-write`, `safety-gates`, `tool-boundaries` |
|
|
33
|
+
| Evidence, eval, and release | `eval-boundary`, `evidence-integrity`, `metering-integrity`, `release-boundary` |
|
|
34
|
+
| Extensions, interop, and skills | `extension-compatibility`, `extension-reload-coordinator`, `extension-reload-slash`, `extension-resources`, `extension-snapshot`, `interop-boundary`, `marketplace-offer`, `skill-install` |
|
|
35
|
+
| Documentation server | `docs-server` |
|
|
36
|
+
|
|
37
|
+
Append `.test.ts` to every stem in the table. Use `rg` over the files before
|
|
38
|
+
choosing a lane; related behavior can span more than one focused contract.
|
|
39
|
+
|
|
40
|
+
## Smoke files
|
|
41
|
+
|
|
42
|
+
| Boundary | File under `tests/smoke/` |
|
|
43
|
+
|---|---|
|
|
44
|
+
| ACP v1 over JSON-RPC stdio, permission requests, and text/image content | `acp-boundary.test.ts` |
|
|
45
|
+
| Core CLI health, local-provider run, receipts, events, and autonomy | `cli-core.test.ts` |
|
|
46
|
+
| `npm pack`, installed resources, and installed codewiki navigation | `installed-package.test.ts` |
|
|
47
|
+
| Signal propagation through a real tool child | `process-lifecycle.test.ts` |
|
|
48
|
+
| Real-binary setup, onboarding, migration, and launch behavior | `real-binary-boot.test.ts` |
|
|
49
|
+
|
|
50
|
+
The smoke files own their child-process helpers. There is no shared
|
|
51
|
+
`tests/harness/spawn.ts` and no PTY smoke lane in the current tree.
|
|
52
|
+
|
|
53
|
+
## Harness and fixture modules
|
|
54
|
+
|
|
55
|
+
| File | Purpose |
|
|
41
56
|
|---|---|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
57
|
+
| `tests/harness/tmp-root.ts` | Preloaded guarded temp root and cleanup for every root test run |
|
|
58
|
+
| `tests/harness/tmp-git-guard.ts` | Prevents accidental `.git` creation in the system or test temp root |
|
|
59
|
+
| `tests/harness/scratch-env.ts` | Child-process and in-process Clio state isolation |
|
|
60
|
+
| `tests/harness/dispatch.ts` | Dispatch bundle, fast reproducibility, isolated state, and event-loop helpers |
|
|
61
|
+
| `tests/harness/dispatch-stub-context.ts` | Minimal domain context for dispatch contracts |
|
|
62
|
+
| `tests/harness/receipt.ts` | Typed run-envelope and receipt fixtures |
|
|
63
|
+
| `tests/harness/openai-compat-fixture.ts` | Loopback OpenAI-compatible server and target seeders |
|
|
64
|
+
|
|
65
|
+
Child fixtures in `tests/fixtures/` are
|
|
66
|
+
`capacity-lease-child.ts`, `codewiki-coordinator-child.ts`, and
|
|
67
|
+
`evidence-index-writer.ts`.
|
|
48
68
|
|
|
49
69
|
## Running a subset
|
|
50
70
|
|
|
51
71
|
```bash
|
|
52
|
-
# all contracts
|
|
53
|
-
npm run test:file --
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
npm run
|
|
72
|
+
# all contracts (the shell expands the file pattern)
|
|
73
|
+
npm run test:file -- tests/contracts/*.test.ts
|
|
74
|
+
|
|
75
|
+
# one contract or smoke file
|
|
76
|
+
npm run test:file -- tests/contracts/skill-install.test.ts
|
|
77
|
+
npm run build
|
|
78
|
+
npm run test:file -- tests/smoke/cli-core.test.ts
|
|
79
|
+
|
|
80
|
+
# only it.only or describe.only within one file
|
|
81
|
+
npm run test:file -- --test-only tests/contracts/skill-install.test.ts
|
|
58
82
|
```
|
|
59
83
|
|
|
60
84
|
## Writing tests
|
|
61
85
|
|
|
62
|
-
- `node:test`
|
|
63
|
-
-
|
|
64
|
-
- `tsconfig.tests.json`
|
|
65
|
-
`exactOptionalPropertyTypes`; narrow
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
86
|
+
- Use `node:test` and `node:assert/strict`.
|
|
87
|
+
- End local TypeScript import specifiers in `.js` for NodeNext resolution.
|
|
88
|
+
- Keep `tsconfig.tests.json` strict, including `noUncheckedIndexedAccess` and
|
|
89
|
+
`exactOptionalPropertyTypes`; narrow indexed values before use.
|
|
90
|
+
- Let the package script preload `tmp-root.ts`. Tests that mutate Clio state or
|
|
91
|
+
`process.env` should use `scratch-env.ts` and restore in teardown.
|
|
92
|
+
- Use a loopback fixture for provider behavior. Do not contact a configured or
|
|
93
|
+
public model from a deterministic test.
|
|
94
|
+
- Build before a focused smoke run. `npm run ci` already builds before testing.
|
|
95
|
+
- Keep a smoke process driver local to the boundary it exercises unless a
|
|
96
|
+
genuinely shared contract appears.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: credentials
|
|
3
|
-
description:
|
|
3
|
+
description: Handles API keys, tokens, and facility credentials (kerberos tickets, globus and scheduler tokens, ssh agents, netrc) before a tool needs one, after an auth error, when a new secret is supplied, or when one may have leaked. Not for provider target configuration; use clio-coder auth and target settings.
|
|
4
4
|
triggers:
|
|
5
5
|
- API key
|
|
6
6
|
- credential missing
|
|
@@ -8,7 +8,7 @@ triggers:
|
|
|
8
8
|
- permission denied
|
|
9
9
|
- add a secret
|
|
10
10
|
- secret leaked
|
|
11
|
-
version: 0.
|
|
11
|
+
version: 0.2.0
|
|
12
12
|
license: Apache-2.0
|
|
13
13
|
allowed-tools:
|
|
14
14
|
- read
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: find-skills
|
|
3
|
-
description:
|
|
3
|
+
description: Finds and installs published skills when the user asks whether a capability exists as a skill, searching with clio-coder skills search and installing only through clio-coder skills install. Not for authoring a new skill; use skill-craft.
|
|
4
4
|
triggers:
|
|
5
5
|
- find a skill
|
|
6
6
|
- is there a skill for this
|
|
7
7
|
- install a skill
|
|
8
8
|
- add an agent skill
|
|
9
9
|
- search the skills marketplace
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.2.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- bash
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: herdr
|
|
3
|
-
description:
|
|
3
|
+
description: Launches, drives, or inspects another agent or command in a Herdr pane, tab, or workspace, including a second Clio Coder instance; requires HERDR_ENV=1. Not for background work a plain shell or dispatch already covers.
|
|
4
4
|
triggers:
|
|
5
5
|
- use Herdr
|
|
6
6
|
- launch an agent in a Herdr pane
|
|
7
7
|
- inspect a Herdr agent
|
|
8
8
|
- start a second Clio Coder instance
|
|
9
9
|
- drive a command in a Herdr workspace
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.2.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- bash
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-craft
|
|
3
|
-
description:
|
|
3
|
+
description: Writes, reviews, or prunes a SKILL.md, judging whether its description, body, and length earn their cost. Not for packaging a workflow that just happened; use workflow-distiller.
|
|
4
4
|
triggers:
|
|
5
5
|
- write a SKILL.md
|
|
6
6
|
- create a new skill
|
|
7
7
|
- improve this skill
|
|
8
8
|
- why isn't this skill firing
|
|
9
9
|
- prune a skill body
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- read
|
|
@@ -36,11 +36,14 @@ tool. Project skills live in `.clio-coder/skills/<name>/`; user skills in the Cl
|
|
|
36
36
|
config dir under `skills/<name>/`. The loader validates on load; check work
|
|
37
37
|
with `clio-coder skills validate`. Frontmatter contract (Agent Skills compatible):
|
|
38
38
|
|
|
39
|
-
- `name`: lowercase-hyphen, ≤64 chars
|
|
39
|
+
- `name`: lowercase-hyphen, ≤64 chars. Catalog convention requires it to match
|
|
40
|
+
the folder; the runtime loader warns on a mismatch and uses the frontmatter
|
|
41
|
+
name.
|
|
40
42
|
- `description`: required, ≤1024 chars; its craft is the section below. Quote
|
|
41
43
|
it when it contains ` #` — an unquoted YAML scalar is truncated there.
|
|
42
|
-
- `version` and `license`: required for catalog publication
|
|
43
|
-
|
|
44
|
+
- `version` and `license`: required for catalog publication. Follow the
|
|
45
|
+
marketplace versioning policy for body, trigger-surface, and sibling-file
|
|
46
|
+
changes; the normalized `SKILL.md` hash handles drift separately.
|
|
44
47
|
- `disable-model-invocation: true`: hides the skill from the agent; only the
|
|
45
48
|
user can activate it.
|
|
46
49
|
- `allowed-tools` / `disallowed-tools`: a *narrowing* declaration, not a
|
|
@@ -50,7 +53,7 @@ with `clio-coder skills validate`. Frontmatter contract (Agent Skills compatible
|
|
|
50
53
|
names only (see skills/README.md, "Claude Code interop").
|
|
51
54
|
- `requires`: `skill:<name>` dependencies; the loader warns when one is
|
|
52
55
|
missing. Reference an installed skill by name instead of restating its job.
|
|
53
|
-
- `clio:`: the reserved publication block (`registry-id`, `source-url`,
|
|
56
|
+
- `clio-coder:`: the reserved publication block (`registry-id`, `source-url`,
|
|
54
57
|
`audit`, `provenance` designed|adapted|imported with `origin` when not
|
|
55
58
|
designed, `eval-status`, optional `model-size` and `agents`). Required for
|
|
56
59
|
catalog skills; approval is judged against it (skills/README.md).
|
|
@@ -66,17 +69,19 @@ but the user must remember it exists: cognitive load. Keep a description only
|
|
|
66
69
|
when the agent must reach the skill on its own or another skill requires it;
|
|
67
70
|
if it only ever fires by hand, set `disable-model-invocation: true`.
|
|
68
71
|
|
|
69
|
-
## Description
|
|
72
|
+
## Description and Triggers
|
|
70
73
|
|
|
71
|
-
|
|
72
|
-
every other skill's
|
|
74
|
+
Two frontmatter fields share the trigger surface, and every word in both
|
|
75
|
+
competes with every other skill's:
|
|
73
76
|
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
use <other-skill>" clause per real boundary.
|
|
79
|
-
|
|
77
|
+
- `triggers`: the phrases a user actually types, one per distinct branch.
|
|
78
|
+
Synonyms restating one branch ("API key", "credential", "token") are
|
|
79
|
+
duplication; keep the strongest.
|
|
80
|
+
- `description`: one lead sentence saying what the skill does, then one
|
|
81
|
+
"Not for X; use <other-skill>" clause per real boundary. It is what the
|
|
82
|
+
agent reads in the `context(scope="skills")` listing on every skill-shaped
|
|
83
|
+
turn, so it carries no trigger list and no identity the body already
|
|
84
|
+
states.
|
|
80
85
|
|
|
81
86
|
## Body: Steps and Reference
|
|
82
87
|
|
|
@@ -113,7 +118,8 @@ Before finishing any skill, pass the body line by line:
|
|
|
113
118
|
or split the skill; a split description must earn its permanent context
|
|
114
119
|
load.
|
|
115
120
|
|
|
116
|
-
Done when: description is
|
|
121
|
+
Done when: the description is one sentence plus routing clauses and the
|
|
122
|
+
triggers carry the phrases, every step has a checkable
|
|
117
123
|
completion criterion, no line fails the relevance/duplication/no-op pass, and
|
|
118
124
|
an `evals.md` records at least one RED-GREEN scenario distinguishing
|
|
119
125
|
with-skill from without.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: architecture
|
|
3
|
-
description:
|
|
3
|
+
description: "Decides the engineering approach for an intent in an interactive session: investigates, proposes two or three genuinely different approaches with trade-offs, recommends, lets the user decide, and writes the decision doc. Not a task-by-task plan; use cut-it. Not a multi-perspective debate; use design-council. Not product intent; use product-intent. Not a typed implementation handoff; use tech-spec."
|
|
4
4
|
triggers:
|
|
5
5
|
- how should we build this
|
|
6
6
|
- pick the stack
|
|
7
7
|
- architecture for this feature
|
|
8
8
|
- decide the engineering approach
|
|
9
9
|
- compare architecture options
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- read
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backlog
|
|
3
|
-
description:
|
|
3
|
+
description: Turns a finished PRD or architecture doc into a ticket backlog of small stories with verifiable acceptance criteria, confirmed, then created as GitHub issues or in another configured tracker. Not for local sprint slicing into a SPRINT.md; use cut-it.
|
|
4
4
|
triggers:
|
|
5
5
|
- create the stories
|
|
6
6
|
- turn this PRD into issues
|
|
7
7
|
- build the backlog
|
|
8
8
|
- decompose this plan into tickets
|
|
9
9
|
- create GitHub issues from this architecture
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- read
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prd
|
|
3
|
-
description:
|
|
3
|
+
description: Turns an idea into a product requirements document through a phase-gated interview, ending in PRD.md plus per-milestone prompt files ready to drive a coding agent. Not for the problem-first product thesis; use product-intent.
|
|
4
4
|
triggers:
|
|
5
5
|
- write a PRD
|
|
6
6
|
- spec this product out
|
|
7
7
|
- define this feature
|
|
8
8
|
- structure this product brain dump
|
|
9
9
|
- create milestone prompts
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- read
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: product-intent
|
|
3
|
-
description:
|
|
3
|
+
description: "Writes a problem-first product document for a greenfield effort: interviews for the problem, evidence, and a falsifiable hypothesis, with zero engineering decisions. Not for engineering decisions; use architecture. Not for turning a locked idea into milestone build prompts; use prd."
|
|
4
4
|
triggers:
|
|
5
5
|
- why are we building this
|
|
6
6
|
- write the product thesis
|
|
7
7
|
- problem-first PRD
|
|
8
8
|
- define a falsifiable product hypothesis
|
|
9
9
|
- greenfield product intent
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.3.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
allowed-tools:
|
|
13
13
|
- read
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tech-spec
|
|
3
|
-
description:
|
|
3
|
+
description: "Writes a typed call-stack architecture handoff: code-shaped contracts plus execution flows, implementation-ready for another engineer. User-invoked only. Not for weighing approaches or deciding the design; use architecture first."
|
|
4
4
|
triggers:
|
|
5
5
|
- write a tech spec
|
|
6
6
|
- typed call-stack handoff
|
|
7
7
|
- code-shaped contracts
|
|
8
8
|
- implementation-ready technical specification
|
|
9
9
|
- specify execution flows
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.2.0
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
disable-model-invocation: true
|
|
13
13
|
allowed-tools:
|