@iowarp/clio-coder 0.4.3 → 0.4.4
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 +63 -0
- package/README.md +1 -1
- package/dist/{acp-H2NGRPWO.js → acp-WNAYYF4F.js} +4 -5
- package/dist/{agents-TL5LLUQP.js → agents-3OKXHLOI.js} +33 -31
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-E5SW4HMS.js → auth-VKNNMGPU.js} +10 -11
- package/dist/{builtins-IA7V7FUC.js → builtins-WGALA46I.js} +4 -4
- package/dist/{chunk-F5JHEYZM.js → chunk-23L32XTI.js} +10 -7
- package/dist/{chunk-DWUOQKRU.js → chunk-25QBEXRS.js} +2 -2
- package/dist/{chunk-LLDJM5XK.js → chunk-26QSH3EJ.js} +2 -2
- package/dist/{chunk-N2Z7HLVY.js → chunk-2ASED4PZ.js} +10 -10
- package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
- package/dist/chunk-2DSOYNFC.js +108 -0
- package/dist/{chunk-LDJG7DW3.js → chunk-2ZSONWVL.js} +4 -4
- package/dist/{chunk-GI7YYQ3F.js → chunk-36CT5VVL.js} +324 -41
- package/dist/{chunk-4UVU7BJ5.js → chunk-3GY4F45V.js} +2 -2
- package/dist/{chunk-PUVDKJ2Y.js → chunk-3ODX73FK.js} +3 -5
- package/dist/{chunk-IUE3Y34X.js → chunk-3UNOLWNZ.js} +2 -2
- package/dist/{chunk-6PTFB5VS.js → chunk-3UUXNFEX.js} +8 -4
- package/dist/{chunk-2APPQIER.js → chunk-4M6Z5QVF.js} +4 -4
- package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
- package/dist/{chunk-JGRC33J2.js → chunk-54X7T7DK.js} +12 -3
- package/dist/{chunk-YQWYVTMC.js → chunk-5636DCO5.js} +4 -4
- package/dist/{chunk-7E7I3WLS.js → chunk-57XXR6DR.js} +23 -22
- package/dist/{chunk-7ZYNNDKC.js → chunk-5TUB6SLS.js} +2 -2
- package/dist/{chunk-VW6DOEDG.js → chunk-6OSVSQL5.js} +11 -2
- package/dist/{chunk-L47TF46W.js → chunk-6PAZTBPA.js} +14 -2
- package/dist/{chunk-XIVNBFZS.js → chunk-6Q3CYFD3.js} +34 -16
- package/dist/{chunk-RSJ25QSL.js → chunk-6QOTUPRG.js} +155 -36
- package/dist/{chunk-JKKCYP3C.js → chunk-6UINWWS6.js} +10 -4
- package/dist/{chunk-WBKFA554.js → chunk-72YIHOZQ.js} +2 -2
- package/dist/{chunk-PAJQJ7BS.js → chunk-75W7L2E2.js} +246 -697
- package/dist/{chunk-RRNP2ANY.js → chunk-7UGL4MB5.js} +4 -4
- package/dist/{chunk-EKCHAPYA.js → chunk-AUPNRN7C.js} +2 -2
- package/dist/{chunk-ZDN3Y73Y.js → chunk-BJVFZO5U.js} +6 -48
- package/dist/{chunk-IWT4SF4R.js → chunk-CUSRQKPU.js} +64 -2
- package/dist/{chunk-SKHCAU7K.js → chunk-DQOVN6KV.js} +3 -2
- package/dist/{chunk-ZWPRK62N.js → chunk-DT3LWJOB.js} +4 -4
- package/dist/chunk-DXKJURES.js +671 -0
- package/dist/{chunk-BEPZRGGU.js → chunk-EL24TAU4.js} +2 -2
- package/dist/{chunk-OML5D5V5.js → chunk-ELWDPP3Y.js} +5 -5
- package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
- package/dist/chunk-EXLD33WO.js +381 -0
- package/dist/{chunk-IJNZMHLA.js → chunk-FEAXX7B6.js} +2 -2
- package/dist/{chunk-TM6LQDI3.js → chunk-FFUPXJC4.js} +74 -323
- package/dist/chunk-GX5WYQO4.js +59 -0
- package/dist/chunk-I2DWJ4GM.js +390 -0
- package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
- package/dist/chunk-IRXAATOX.js +539 -0
- package/dist/chunk-IXIY2H4R.js +44 -0
- package/dist/{chunk-KK4JZPBQ.js → chunk-IZXGRF7P.js} +76 -10
- package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
- package/dist/{chunk-INY6HTFL.js → chunk-JEIYHLOR.js} +2 -2
- package/dist/{chunk-MUW2BDDH.js → chunk-JQLNNIKT.js} +2 -2
- package/dist/{chunk-XPWWI35G.js → chunk-JSD46VO2.js} +19 -8
- package/dist/{chunk-VA5FNYMT.js → chunk-JT2RFCC5.js} +39 -2
- package/dist/{chunk-V2ANDPVT.js → chunk-K6T2ZAMZ.js} +168 -6
- package/dist/{chunk-B4OAX3SI.js → chunk-KFV5L5SK.js} +13 -6
- package/dist/{chunk-JEQ3XTHC.js → chunk-LLXSDWXS.js} +2 -2
- package/dist/{chunk-E3TPLWFX.js → chunk-LTIKRKFL.js} +3 -3
- package/dist/{chunk-NIQJ66N4.js → chunk-N56KALIC.js} +17 -17
- package/dist/{chunk-JDAY6FIL.js → chunk-NAI6ZFCY.js} +13 -9
- package/dist/{chunk-AF4YM7Z4.js → chunk-NRO2BJRH.js} +2490 -2182
- package/dist/{chunk-WRBAGUNF.js → chunk-NXIMQY5W.js} +2 -2
- package/dist/{chunk-I7ZPNEJM.js → chunk-NXYCB2VD.js} +5 -5
- package/dist/chunk-ODGTEFFI.js +50 -0
- package/dist/{chunk-2VIKGWFZ.js → chunk-OEJSLEPW.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
- package/dist/{chunk-54CBCGIR.js → chunk-Q4WO54TA.js} +132 -77
- package/dist/{chunk-B4VEBZKF.js → chunk-QUFRYSWI.js} +12 -6
- package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
- package/dist/{chunk-HEQY7ZFI.js → chunk-RAY4OVGZ.js} +2 -2
- package/dist/{chunk-G76U63X4.js → chunk-RQCKCSRL.js} +7 -7
- package/dist/{chunk-64I3JVYM.js → chunk-RXTN6AKH.js} +2 -2
- package/dist/{chunk-UPZU6GE4.js → chunk-RZDWV63N.js} +3 -3
- package/dist/{chunk-2UH2KFUP.js → chunk-S6PYF2XF.js} +2 -2
- package/dist/{chunk-JSC3U7TI.js → chunk-TOIVGRUX.js} +2 -2
- package/dist/{chunk-7DRAWPTZ.js → chunk-TQAHXW6Y.js} +1 -1
- package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
- package/dist/{chunk-AX2THNSA.js → chunk-UEPWCCTY.js} +4 -4
- package/dist/{chunk-QWGDJJYJ.js → chunk-USR47QNF.js} +4 -4
- package/dist/{chunk-Y3CBHOR6.js → chunk-V6HJFQZE.js} +2 -2
- package/dist/chunk-V76WTFTW.js +318 -0
- package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
- package/dist/{chunk-2UG5F4C5.js → chunk-XULDXHTN.js} +24 -12
- package/dist/chunk-XXYSBZIQ.js +283 -0
- package/dist/{chunk-MWUZBSAQ.js → chunk-Y55JBDO5.js} +331 -51
- package/dist/{chunk-W6RRQCPQ.js → chunk-YD5GIKET.js} +4 -4
- package/dist/{chunk-CE5AX47J.js → chunk-YECAMM3D.js} +2 -2
- package/dist/{chunk-WCXUNS7U.js → chunk-YNFKXPEC.js} +6 -6
- package/dist/cli/index.js +36 -35
- package/dist/{clio-CMMK4KRR.js → clio-QLICPCF5.js} +2 -2
- package/dist/{code-nav-MDZNQS33.js → code-nav-IJR2DBPR.js} +6 -6
- package/dist/{components-UCUQ4QXW.js → components-2TGAI2RC.js} +3 -4
- package/dist/{config-SVM5P5YI.js → config-IUA6OYNS.js} +52 -47
- package/dist/{configure-LE3IK2TJ.js → configure-VEPX4NMX.js} +14 -15
- package/dist/{context-VNCR7KAG.js → context-2DKHWH2T.js} +23 -23
- package/dist/{context-2OHRKS42.js → context-4MPR7WKB.js} +48 -42
- package/dist/{context-E3VC7RX5.js → context-BOYF5EJM.js} +11 -11
- package/dist/{context-clear-BW4O37TG.js → context-clear-S4ZJCQUX.js} +48 -42
- package/dist/{context-working-set-VDS25HXZ.js → context-working-set-3I3FYX6Y.js} +8 -8
- package/dist/detail-A7JAVSIG.js +98 -0
- package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-RJ5I2F2O.js} +71 -58
- package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
- package/dist/{doctor-WNNVO6FY.js → doctor-DKICC2SN.js} +54 -31
- package/dist/{eval-7G7SGAYO.js → eval-OQOQUDHK.js} +47 -56
- package/dist/{evidence-VD6736FQ.js → evidence-4DQ25GUQ.js} +53 -150
- package/dist/evidence-4F5USFKH.js +208 -0
- package/dist/{evolve-AL3NGVRL.js → evolve-GSS52E5J.js} +44 -41
- package/dist/{extensions-MOVJ32NM.js → extensions-G7MFLYHT.js} +4 -5
- package/dist/{fleet-QZHUMAGI.js → fleet-Q37YHHAQ.js} +74 -68
- package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-G7E4N7SM.js} +14 -11
- package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-O7M6QBA2.js} +6 -6
- package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-TOUBW6OW.js} +13 -13
- package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-SW33JJNI.js} +43 -39
- package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-CV2655TW.js} +2 -3
- package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-KESZX2YH.js} +16 -16
- package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-UQPMTVE3.js} +42 -38
- package/dist/{fleet-view-SWBR3VGQ.js → fleet-view-MN2VG4MR.js} +43 -39
- package/dist/{init-J477LKZH.js → init-PXEXQSBF.js} +60 -54
- package/dist/{interop-3FCM6XLG.js → interop-ZG5T62U3.js} +6 -7
- package/dist/inventory-C26CFDRR.js +101 -0
- package/dist/{library-QUQEIUG6.js → library-B2W4N74O.js} +16 -17
- package/dist/{memory-SGGSEP65.js → memory-YCANYS5A.js} +45 -42
- package/dist/{models-HEKUAXXK.js → models-GERTU3YI.js} +20 -22
- package/dist/{monitor-HKU57TYQ.js → monitor-CPNIUULB.js} +50 -44
- package/dist/{orchestrator-VDFAEFAI.js → orchestrator-J4BSH4WQ.js} +491 -1182
- package/dist/{panes-DN2SSFOH.js → panes-BOHAEGYC.js} +3 -3
- package/dist/{panes-TALGNPZT.js → panes-NXSLDQZ2.js} +5 -6
- package/dist/{paths-NBMFAIEZ.js → paths-VSUWNC22.js} +3 -4
- package/dist/{reset-EAJFFJVB.js → reset-TNWTB5LU.js} +5 -6
- package/dist/{resources-OVKSEFVE.js → resources-4PXNMD5G.js} +14 -14
- package/dist/{run-7DP7ZF2J.js → run-D6XJ34CN.js} +79 -83
- package/dist/{share-WML67FT3.js → share-2NWMJJEE.js} +14 -15
- package/dist/{skills-SG662R2K.js → skills-KR7WON5G.js} +18 -19
- package/dist/{skills-eval-VVZEUU46.js → skills-eval-O2ZNOLDS.js} +49 -46
- package/dist/{skills-inventory-I2E23GET.js → skills-inventory-ZZOUBK7O.js} +14 -14
- package/dist/{slash-commands-S7MBJDQK.js → slash-commands-ZXPJD64J.js} +32 -23
- package/dist/{steer-2LQOMCPB.js → steer-XA25PSCS.js} +3 -3
- package/dist/{support-CC2UJBJ6.js → support-7EMVWYG2.js} +2 -2
- package/dist/{targets-4QC3HIEW.js → targets-OMH2XCSN.js} +25 -27
- package/dist/tasks-IPAGMEIX.js +36 -0
- package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-C2J3JYRE.js} +4 -4
- package/dist/{tools-TFGJICCU.js → tools-EFFEAIDP.js} +5 -6
- package/dist/{uninstall-5PEVOE5B.js → uninstall-HALS6BLF.js} +7 -8
- package/dist/{upgrade-M4WXY6KN.js → upgrade-MS72RJEP.js} +14 -11
- package/dist/{usage-N7ZNVLEM.js → usage-NHG6MCJM.js} +60 -51
- package/dist/{verifiers-DJTP4XX6.js → verifiers-7AUNVXDY.js} +150 -17
- package/dist/{verify-RWE4PPEK.js → verify-FWYGPKMR.js} +12 -10
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
- package/dist/{wiki-generate-C7IQOXSP.js → wiki-generate-743CIGJW.js} +63 -56
- package/dist/{with-panes-4GCGSL7J.js → with-panes-BDQEWBRT.js} +2 -2
- package/dist/worker/entry.js +36 -33
- package/docs/README.md +3 -2
- package/docs/architecture/acp.md +17 -0
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +1 -1
- package/docs/architecture/observability.md +7 -1
- package/docs/architecture/prompt-envelope-and-tools.md +15 -5
- package/docs/architecture/safety-model.md +10 -17
- package/docs/architecture/tui-design.md +1 -1
- package/docs/guide/built-in-agents.md +8 -8
- package/docs/guide/commands-and-modes.md +17 -2
- package/docs/guide/configuration-and-targets.md +3 -1
- package/docs/guide/configuration-reference.md +10 -5
- package/docs/guide/environment-variables.md +2 -2
- package/docs/guide/tool-usage.md +78 -3
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +6 -1
- package/docs/process/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- package/package.json +1 -1
- package/skills/coding/coding-standards/SKILL.md +14 -4
- package/skills/context/context-handoff/SKILL.md +3 -3
- package/skills/context/context-prime/SKILL.md +3 -3
- package/skills/planning/architecture/SKILL.md +5 -5
- package/skills/planning/backlog/SKILL.md +4 -4
- package/skills/planning/prd/SKILL.md +4 -3
- package/skills/planning/product-intent/SKILL.md +8 -8
- package/skills/planning/tech-spec/SKILL.md +4 -4
- package/skills/registry.yaml +32 -32
- package/skills/research/arxiv-literature/SKILL.md +3 -3
- package/skills/research/experiment-protocol/SKILL.md +3 -3
- package/skills/research/scientific-debugging/SKILL.md +3 -2
- package/skills/research/scientific-modernization/SKILL.md +3 -3
- package/skills/skill-marketplace.json +16 -16
- package/skills/workflow/cut-it/SKILL.md +3 -4
- package/skills/workflow/design-council/SKILL.md +5 -10
- package/skills/workflow/grill-me/SKILL.md +14 -15
- package/skills/workflow/workflow-distiller/SKILL.md +4 -4
- package/src/cli/args.ts +0 -8
- package/src/cli/configure.ts +2 -1
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +2 -0
- package/src/cli/run.ts +0 -2
- package/src/cli/targets.ts +1 -1
- package/src/cli/tasks.ts +84 -0
- package/src/cli/upgrade.ts +10 -5
- package/src/cli/usage.ts +6 -0
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +1 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/run-overrides.ts +0 -5
- package/src/core/skill-activation.ts +3 -0
- package/src/core/tool-names.ts +5 -2
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/context/extension.ts +31 -7
- package/src/domains/context/refresh.ts +3 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +6 -0
- package/src/domains/context/wiki/prompts.ts +43 -0
- package/src/domains/dispatch/active-route-planner.ts +4 -0
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +31 -7
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +50 -27
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +5 -3
- package/src/domains/dispatch/state.ts +15 -2
- package/src/domains/dispatch/types.ts +17 -2
- package/src/domains/eval/runners/clio-run.ts +12 -9
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- package/src/domains/evidence/build.ts +102 -15
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +20 -1
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/contract.ts +52 -7
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +9 -5
- package/src/domains/observability/projection.ts +394 -45
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- package/src/domains/prompts/fragments/operating/contract.md +2 -0
- package/src/domains/prompts/fragments/wiki/page.md +8 -0
- package/src/domains/providers/model-discovery.ts +1 -4
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/support.ts +1 -1
- package/src/domains/providers/types/runtime-descriptor.ts +1 -1
- package/src/domains/safety/action-classifier.ts +7 -0
- package/src/domains/safety/default-path-policy.ts +2 -0
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +20 -1
- package/src/domains/safety/policy-engine.ts +26 -6
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/decision-board.ts +101 -2
- package/src/domains/session/entries.ts +44 -7
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/task-board.ts +14 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +24 -6
- package/src/engine/acp/server.ts +21 -4
- package/src/engine/acp/transport.ts +53 -8
- package/src/engine/acp/types.ts +4 -0
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/external-subprocess.ts +12 -4
- package/src/entry/orchestrator.ts +11 -2
- package/src/interactive/dispatch-board.ts +46 -717
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +3 -2
- package/src/interactive/interactive-presentation.ts +55 -12
- package/src/interactive/interactive-slash-runtime.ts +2 -1
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +2 -2
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +25 -39
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/worker-stream.ts +7 -3
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +31 -0
- package/src/tools/compete-worktrees.ts +7 -1
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +21 -0
- package/src/tools/dispatch-plan.ts +5 -2
- package/src/tools/dispatch-runner.ts +15 -1
- package/src/tools/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/limitation.ts +76 -0
- package/src/tools/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/registry.ts +1 -1
- package/src/tools/result-shaping.ts +17 -5
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +10 -1
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +298 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- package/dist/chunk-7DICMOS6.js +0 -313
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-VPKWYKEY.js +0 -169
|
@@ -1715,15 +1715,16 @@
|
|
|
1715
1715
|
card's dial is reasoning strength with levels low, medium, high, and
|
|
1716
1716
|
xhigh, set through the system prompt as "Reasoning strength: <value>",
|
|
1717
1717
|
and the router passes it as chat_template_kwargs.reasoning_strength
|
|
1718
|
-
pinned to xhigh. There is no off level on that scale,
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1718
|
+
pinned to xhigh. There is no off level on that scale, so the family
|
|
1719
|
+
stays always-on: encoding it as on-off would put an enable_thinking
|
|
1720
|
+
flag on the wire that this template does not read while the TUI showed
|
|
1721
|
+
a working off/on dial, which is the failure qwopus3.5-9b-v3 above was
|
|
1722
|
+
reclassified to stop. The strength dial itself is driven per request:
|
|
1723
|
+
thinking.chatTemplateKwargs.byLevel below maps Clio's thinking level to
|
|
1724
|
+
chat_template_kwargs.reasoning_strength on llama.cpp, and LM Studio,
|
|
1725
|
+
which drops chat_template_kwargs, reports that kwarg as undeliverable
|
|
1726
|
+
instead of sending it. No per-level output has been measured yet, so
|
|
1727
|
+
the always-on classification above stands until one is.
|
|
1727
1728
|
|
|
1728
1729
|
Sampler provenance: temperature 1.0, top_p 0.95 and top_k 64 are the
|
|
1729
1730
|
card's Best Practices values and the router preset uses the same three.
|
|
@@ -1743,7 +1744,7 @@
|
|
|
1743
1744
|
gpuTiers:
|
|
1744
1745
|
"32gb": "Agent-role target on a 32 GB card: UD-Q4_K_XL weights, q8_0 KV at ctx=131072, parallel=1, with the Q8_0 perception encoder and the DFlash drafter both resident."
|
|
1745
1746
|
runtimePreference:
|
|
1746
|
-
llamaCpp: "OpenAI-compatible chat completions with --jinja.
|
|
1747
|
+
llamaCpp: "OpenAI-compatible chat completions with --jinja. Clio drives the reasoning budget per request through chat_template_kwargs.reasoning_strength, mapped from the thinking level by thinking.chatTemplateKwargs.byLevel; a --chat-template-kwargs launch value is only the server default for requests that send none."
|
|
1747
1748
|
openaiCompat: "Use when a gateway fronts the same llama.cpp chat-completions surface. Expect a reasoning trace on every response whatever the configured thinking level says."
|
|
1748
1749
|
llamaCpp:
|
|
1749
1750
|
ctxSize: 131072
|
|
@@ -1762,7 +1763,7 @@
|
|
|
1762
1763
|
mechanism: always-on
|
|
1763
1764
|
chatTemplateKwargs:
|
|
1764
1765
|
byLevel:
|
|
1765
|
-
# Card: reasoning strength low|medium|high|xhigh (scratchpad/catalog/models/unsloth-Muse-Glimmer-30B.md:35). The per-family kwarg key the note above
|
|
1766
|
+
# Card: reasoning strength low|medium|high|xhigh (scratchpad/catalog/models/unsloth-Muse-Glimmer-30B.md:35). The per-family kwarg key the note above describes.
|
|
1766
1767
|
key: reasoning_strength
|
|
1767
1768
|
values:
|
|
1768
1769
|
low: low
|
|
@@ -1774,9 +1775,10 @@
|
|
|
1774
1775
|
guidance: |
|
|
1775
1776
|
Muse Glimmer reasons on every turn and its strength scale has no off
|
|
1776
1777
|
level, so Clio shows the dial as forced and budgets for a reasoning
|
|
1777
|
-
preamble ahead of every answer.
|
|
1778
|
-
|
|
1779
|
-
|
|
1778
|
+
preamble ahead of every answer. The thinking level still sets how much
|
|
1779
|
+
it thinks: on llama.cpp Clio sends reasoning_strength (low, medium,
|
|
1780
|
+
high, xhigh) as a chat-template kwarg per request. LM Studio drops that
|
|
1781
|
+
kwarg, so there the strength stays at the server's own default.
|
|
1780
1782
|
serving: "Meta Superintelligence Lab Muse-Glimmer-30B, a dense 29.6B causal transformer with a ~1.8B ViT-G/14 perception encoder, interleaved local and global attention with a 2048 sliding window, and a DFlash block-diffusion drafter that proposes 16 tokens per forward pass. Card context length is 131072. Input is text plus image; the mini router additionally tags video, which the card does not claim, so the catalog follows the card."
|
|
1781
1783
|
|
|
1782
1784
|
# ThinkingCap is a brevity finetune of Qwen3.6-27B and not the base model, so it
|
|
@@ -23,6 +23,15 @@ const claudeCodeRuntime: RuntimeDescriptor = {
|
|
|
23
23
|
headlessCommand: "claude -p --output-format stream-json",
|
|
24
24
|
outputParser: "claude-code-stream-json",
|
|
25
25
|
defaultCapabilities: claudeCodeCapabilities,
|
|
26
|
+
// The Claude CLI runs its own tool loop. Clio observes only the stream, so a
|
|
27
|
+
// declared per-tool budget is recorded as external-one-shot, never enforced.
|
|
28
|
+
externalAgentLoop: {
|
|
29
|
+
tools: "externally-governed-unobserved",
|
|
30
|
+
network: "externally-governed-unobserved",
|
|
31
|
+
budget: "external-one-shot",
|
|
32
|
+
generatingRetry: "allowed",
|
|
33
|
+
modelCatalog: "static",
|
|
34
|
+
},
|
|
26
35
|
synthesizeModel(target: TargetDescriptor, wireModelId: string, kb: KnowledgeBaseHit | null): Model<Api> {
|
|
27
36
|
return synthesizeClaudeDelegatedModel({
|
|
28
37
|
target,
|
|
@@ -95,7 +95,7 @@ export function supportGroupLabel(group: ProviderSupportGroup): string {
|
|
|
95
95
|
|
|
96
96
|
function classifyGroup(runtime: RuntimeDescriptor): ProviderSupportGroup {
|
|
97
97
|
if (runtime.id === "openai-codex") return "featured";
|
|
98
|
-
if (runtime.externalAgentLoop !== undefined) return "external-worker";
|
|
98
|
+
if (runtime.externalAgentLoop !== undefined && runtime.auth !== "claude-cli") return "external-worker";
|
|
99
99
|
if (runtime.id === "alcf") return "cloud-api";
|
|
100
100
|
if (runtime.auth === "oauth" || runtime.auth === "claude-cli") return "subscription";
|
|
101
101
|
if (catalogProviderForRuntime(runtime.id) || (runtime.auth === "api-key" && !runtime.probe)) {
|
|
@@ -171,7 +171,7 @@ export interface RuntimeDescriptor {
|
|
|
171
171
|
tools: "externally-governed-unobserved";
|
|
172
172
|
network: "externally-governed-unobserved";
|
|
173
173
|
budget: "external-one-shot";
|
|
174
|
-
generatingRetry: "forbidden";
|
|
174
|
+
generatingRetry: "forbidden" | "allowed";
|
|
175
175
|
modelCatalog: "live-authoritative" | "static";
|
|
176
176
|
};
|
|
177
177
|
/**
|
|
@@ -84,6 +84,7 @@ function isUnderPrefix(abs: string, prefix: string): boolean {
|
|
|
84
84
|
|
|
85
85
|
function baseClassify(tool: string): ActionClass | null {
|
|
86
86
|
switch (tool) {
|
|
87
|
+
case ToolNames.Evidence:
|
|
87
88
|
case ToolNames.Read:
|
|
88
89
|
case ToolNames.Grep:
|
|
89
90
|
case ToolNames.Find:
|
|
@@ -110,6 +111,12 @@ function baseClassify(tool: string): ActionClass | null {
|
|
|
110
111
|
// or survives the session, so it is reversible, local, and never gated
|
|
111
112
|
// behind a confirmation.
|
|
112
113
|
case ToolNames.Panes:
|
|
114
|
+
// limitation appends a typed receipt to the session ledger and touches
|
|
115
|
+
// nothing else, so it is never gated behind a confirmation.
|
|
116
|
+
case ToolNames.Limitation:
|
|
117
|
+
// decide appends the model's own design decision to the session
|
|
118
|
+
// decision board. One ledger append, no workspace effect, never gated.
|
|
119
|
+
case ToolNames.Decide:
|
|
113
120
|
return "read";
|
|
114
121
|
case ToolNames.Write:
|
|
115
122
|
case ToolNames.Edit:
|
|
@@ -67,8 +67,10 @@ export const DEFAULT_DAMAGE_CONTROL_PATH_POLICY: PathPolicyInput = {
|
|
|
67
67
|
// widen its own permissions in two tool calls. Both are authored by the
|
|
68
68
|
// operator through the CLI (`clio-coder verifiers author` lands nothing
|
|
69
69
|
// before `--yes`), so model-side writes and deletes are refused.
|
|
70
|
+
// Skills also refuse model-side writes and deletes; installs go through `clio-coder skills install`.
|
|
70
71
|
".clio-coder/safety.yaml",
|
|
71
72
|
".clio-coder/verifiers.yaml",
|
|
73
|
+
".clio-coder/skills/",
|
|
72
74
|
"/etc/",
|
|
73
75
|
"/usr/",
|
|
74
76
|
"/bin/",
|
|
@@ -4,16 +4,22 @@
|
|
|
4
4
|
* The chat-loop fires `turn_end` with the final assistant text and this
|
|
5
5
|
* registration emits an advisory `inject_reminder` (severity "warn") when the
|
|
6
6
|
* turn mutated workspace state but recorded no validation evidence and no
|
|
7
|
-
*
|
|
8
|
-
* the assistant's text. The chat-loop's generic effect application renders the
|
|
7
|
+
* `limitation` receipt. The trigger is the observed mutation, not the wording
|
|
8
|
+
* of the assistant's text, and the text never enters the assessment. The chat-loop's generic effect application renders the
|
|
9
9
|
* notice, persists the session entry, and flushes the reminder into the next
|
|
10
10
|
* model request. Every decision is also written to the audit ledger.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { VERIFICATION_SCRIPT_FAMILY_HINT } from "../../core/verification-scripts.js";
|
|
14
14
|
import type { MiddlewareEffect, MiddlewareHookInput, MiddlewareHookRegistration } from "../middleware/index.js";
|
|
15
|
+
import type { UserTaskAcceptance } from "../user-tasks/acceptance.js";
|
|
15
16
|
import type { CompletionContractAuditInput } from "./audit.js";
|
|
16
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
assessFinishContract,
|
|
19
|
+
DEFAULT_RECENT_ENTRY_LIMIT,
|
|
20
|
+
type FinishContractAssessment,
|
|
21
|
+
recentEntries,
|
|
22
|
+
} from "./finish-contract.js";
|
|
17
23
|
import type { Rigor } from "./rigor.js";
|
|
18
24
|
|
|
19
25
|
export const FINISH_CONTRACT_REGISTRATION_ID = "assessor.finish-contract";
|
|
@@ -21,15 +27,15 @@ export const FINISH_CONTRACT_REGISTRATION_ID = "assessor.finish-contract";
|
|
|
21
27
|
/**
|
|
22
28
|
* High-rigor re-prompt directive. Injected dynamically via effects (never added
|
|
23
29
|
* to the static system prompt) so the prompt prefix stays byte-stable. It tells
|
|
24
|
-
* the model to validate with a verification-family command or to
|
|
25
|
-
*
|
|
30
|
+
* the model to validate with a verification-family command or to record a
|
|
31
|
+
* `limitation` receipt before claiming done. The command hint mirrors the
|
|
26
32
|
* vocabulary `detectValidationCommand` and `isVerificationScriptName` accept.
|
|
27
33
|
*/
|
|
28
34
|
export const HIGH_RIGOR_REVALIDATION_MESSAGE =
|
|
29
35
|
`[Clio Coder] high-rigor finish gate: this completion claim has no validation evidence. ` +
|
|
30
36
|
`Before claiming done, run a verification command (the ${VERIFICATION_SCRIPT_FAMILY_HINT} family, ` +
|
|
31
|
-
`e.g. "npm run test", "npm run lint", "npm run build") or
|
|
32
|
-
`and
|
|
37
|
+
`e.g. "npm run test", "npm run lint", "npm run build") or call the limitation tool with the scope ` +
|
|
38
|
+
`and reason of what could not be verified. Do not end the turn until you have validated or recorded the limitation.`;
|
|
33
39
|
|
|
34
40
|
export interface CreateFinishContractRegistrationOptions {
|
|
35
41
|
/**
|
|
@@ -45,6 +51,7 @@ export interface CreateFinishContractRegistrationOptions {
|
|
|
45
51
|
* limitation instead of merely warning.
|
|
46
52
|
*/
|
|
47
53
|
resolveRigor?: () => Rigor;
|
|
54
|
+
readActiveAcceptance?: (window: ReadonlyArray<unknown>) => UserTaskAcceptance | undefined;
|
|
48
55
|
/**
|
|
49
56
|
* Record the contract's decision to the audit ledger. Optional; when wired
|
|
50
57
|
* (production passes the safety audit sink), every turn_end decision — each
|
|
@@ -59,7 +66,7 @@ export function createFinishContractRegistration(
|
|
|
59
66
|
): MiddlewareHookRegistration {
|
|
60
67
|
return {
|
|
61
68
|
id: FINISH_CONTRACT_REGISTRATION_ID,
|
|
62
|
-
description: "advise when a turn mutated files without validation evidence or
|
|
69
|
+
description: "advise when a turn mutated files without validation evidence or a limitation receipt",
|
|
63
70
|
hooks: ["turn_end"],
|
|
64
71
|
evaluate(input: MiddlewareHookInput, context): ReadonlyArray<MiddlewareEffect> {
|
|
65
72
|
if (input.hook !== "turn_end") return [];
|
|
@@ -70,8 +77,9 @@ export function createFinishContractRegistration(
|
|
|
70
77
|
// finalAssistantStopMessage.
|
|
71
78
|
const stopReason = input.metadata?.stopReason;
|
|
72
79
|
if (stopReason !== undefined && stopReason !== "stop") return [];
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
// An empty final text is not a completion claim. The assessor reads
|
|
81
|
+
// only ledger receipts, so the text is otherwise unused here.
|
|
82
|
+
if ((input.text?.trim() ?? "").length === 0) return [];
|
|
75
83
|
let entries: ReadonlyArray<unknown> | null;
|
|
76
84
|
try {
|
|
77
85
|
entries = options.readSessionEntries();
|
|
@@ -79,21 +87,28 @@ export function createFinishContractRegistration(
|
|
|
79
87
|
return [];
|
|
80
88
|
}
|
|
81
89
|
if (entries === null) return [];
|
|
90
|
+
const rigor = options.resolveRigor?.() ?? "normal";
|
|
91
|
+
const activeAcceptance =
|
|
92
|
+
rigor === "high"
|
|
93
|
+
? options.readActiveAcceptance?.(recentEntries(entries, input.turnId ?? null, DEFAULT_RECENT_ENTRY_LIMIT))
|
|
94
|
+
: undefined;
|
|
82
95
|
const assessment = assessFinishContract({
|
|
83
|
-
assistantText,
|
|
84
96
|
sessionEntries: entries,
|
|
97
|
+
workspaceRoot: process.cwd(),
|
|
98
|
+
rigor,
|
|
99
|
+
...(activeAcceptance ? { activeAcceptance } : {}),
|
|
85
100
|
assistantTurnId: input.turnId ?? null,
|
|
86
101
|
});
|
|
87
|
-
const rigor = options.resolveRigor?.() ?? "normal";
|
|
88
102
|
recordDecision(options, input.turnId ?? null, assessment, rigor);
|
|
89
103
|
if (assessment.kind !== "engage") return [];
|
|
90
104
|
if (rigor === "high") {
|
|
91
105
|
// Withhold the completion and force a re-prompt: a continuation
|
|
92
106
|
// request carries the turn onward, and the paired reminder gives
|
|
93
107
|
// the directive its own visible system-reminder line.
|
|
108
|
+
const message = activeAcceptance?.verification.length ? assessment.message : HIGH_RIGOR_REVALIDATION_MESSAGE;
|
|
94
109
|
return [
|
|
95
|
-
{ kind: "request_continuation", message
|
|
96
|
-
{ kind: "inject_reminder", message
|
|
110
|
+
{ kind: "request_continuation", message },
|
|
111
|
+
{ kind: "inject_reminder", message, severity: "warn" },
|
|
97
112
|
];
|
|
98
113
|
}
|
|
99
114
|
return [{ kind: "inject_reminder", message: assessment.message, severity: "warn" }];
|