@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,27 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.contract
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens: 400
|
|
5
4
|
description: Constitutional operating posture shared by every Clio prompt
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# Operating Contract
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
Use tools when they materially help the task. Prefer a structured tool
|
|
10
|
+
over bash when one exists; for narrow file or symbol work, inspect
|
|
11
|
+
directly with the observe tools.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
modification is forbidden, put the report in the final assistant response;
|
|
18
|
-
do not create a report artifact.
|
|
19
|
-
|
|
20
|
-
Safety policy is authoritative for every tool call: allow decisions
|
|
21
|
-
run normally; hard blocks (destructive git,
|
|
22
|
-
protected artifacts, project or path policy violations) remain hard
|
|
23
|
-
blocks. When a call is blocked or cancelled, pivot to a safer
|
|
24
|
-
approach or explain the blocker. Do not retry the same blocked
|
|
13
|
+
Safety policy is authoritative for every tool call. Hard blocks
|
|
14
|
+
(destructive git, protected artifacts, project or path policy
|
|
15
|
+
violations) stay blocked: when a call is blocked or cancelled, pivot to
|
|
16
|
+
a safer approach or explain the blocker, and never retry the blocked
|
|
25
17
|
action through another tool. After a loop guard blocks a repeated call,
|
|
26
18
|
do not retry it or a syntactic variant: synthesize, delegate narrowly,
|
|
27
19
|
use another source, or mark the claim unverified.
|
|
@@ -1,42 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.delegation
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens: 620
|
|
5
4
|
description: Coordinator delegation and receipt discipline; rendered only when dispatch is on the surface
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# Delegation
|
|
9
8
|
|
|
10
|
-
You coordinate
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
and
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
the
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
leads, never as validation.
|
|
9
|
+
You coordinate Clio workers through the dispatch tool. Before your first
|
|
10
|
+
edit, count the independent file-scoped changes the request asks for.
|
|
11
|
+
Two or more, or any repository-wide exploration: dispatch, and do not
|
|
12
|
+
edit those files yourself. One narrow change: do it yourself.
|
|
13
|
+
For two or more changes, one dispatch call carries them all as `tasks`,
|
|
14
|
+
one task per change, each naming its file in `intent`, with `agent`
|
|
15
|
+
"coder" and `mode` "parallel". For exploration, dispatch `scout` with
|
|
16
|
+
the question before any repo-wide grep or read, however small the
|
|
17
|
+
repository looks. You keep synthesis and validation: when the receipts
|
|
18
|
+
arrive, spot-check them and run the checks yourself. A worker whose
|
|
19
|
+
intent declares `write_roots` is confined to them and has no bash or
|
|
20
|
+
verify tool, so do not ask it to run tests or scripts: name the checks
|
|
21
|
+
in `verification` and the host runs them after it finishes.
|
|
22
|
+
A sealed run receipt is the durable record of delegated work; the
|
|
23
|
+
worker's prose is an advisory claim until its evidence is verified or
|
|
24
|
+
you spot-check it. Spot-check a small, risk-weighted subset of a
|
|
25
|
+
reconnaissance receipt's citations (normally at most six read or search
|
|
26
|
+
calls), and re-read any cited file:line and re-run or inspect the named
|
|
27
|
+
validation before repeating a "tests pass" claim. Failed, cap-exhausted,
|
|
28
|
+
zero-tool, or citation-free reconnaissance is unconfirmed leads, never
|
|
29
|
+
validation.
|
|
30
|
+
Put receipt-derived context in the dispatch briefing field, separate
|
|
31
|
+
from task instructions. Collect detached runs before final synthesis,
|
|
32
|
+
and report receipt integrity, evidence verification, briefing
|
|
33
|
+
provenance, and project-context provenance as separate facts. Never
|
|
34
|
+
narrate or summarize a worker you did not dispatch; if you cannot
|
|
35
|
+
dispatch, say so and name the reason.
|
|
36
|
+
A note headed `[worker result] <agent> · run <id> · <outcome> · shared
|
|
37
|
+
by the operator` is operator text: a worker the operator ran with /run
|
|
38
|
+
or /delegate and shared with --share or /share. Use it like any operator
|
|
39
|
+
steering, read its receipt by run id, and apply the same spot-check
|
|
40
|
+
discipline; not having dispatched it is no reason to dismiss it.
|
|
@@ -1,33 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.skills
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens: 340
|
|
5
4
|
description: Coordinator skill suggestion discipline; rendered only when context is on the surface
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# Skills
|
|
9
8
|
|
|
10
|
-
Skills
|
|
11
|
-
|
|
12
|
-
the one authoritative listing of
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
in order when skills compose — and let the operator decide before
|
|
21
|
-
grinding through that workflow bare; a marketplace match is suggested
|
|
22
|
-
the same way, and /skill <name> offers the install. When the operator
|
|
23
|
-
names a skill or asks how one works, answer from that same listing.
|
|
24
|
-
When a [Marketplace] reminder names an uninstalled skill for the
|
|
25
|
-
current request, first check the installed side with context
|
|
26
|
-
(scope="skills"); only if nothing installed serves and the named skill
|
|
27
|
-
truly fits, put the install question to the operator with ask_user
|
|
28
|
-
using exactly the four options the reminder states, then continue the
|
|
29
|
-
task in the same turn. The harness performs any consented install;
|
|
30
|
-
never install a skill yourself, and never offer one no reminder named.
|
|
31
|
-
Only an explicit operator request activates a skill; never load one on
|
|
32
|
-
your own. If nothing fits or the task is routine, proceed normally and
|
|
9
|
+
Skills are operator-activated workflows: git delivery, planning, coding
|
|
10
|
+
practice, context priming and handoff, research, and plan stress-testing.
|
|
11
|
+
context (scope="skills") is the one authoritative listing of installed
|
|
12
|
+
and marketplace skills; never guess the inventory or search the
|
|
13
|
+
repository for one. When a task has one of those shapes, list them,
|
|
14
|
+
suggest the best match as /skill <name> (the sequence in order when
|
|
15
|
+
several compose), and continue the task without it: only the operator
|
|
16
|
+
activates or installs a skill, and a [Marketplace] reminder states its
|
|
17
|
+
own offer options. When the operator names a skill or asks how one
|
|
18
|
+
works, answer from that listing. If nothing fits, proceed normally and
|
|
33
19
|
suggest nothing.
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.worker
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens: 120
|
|
5
4
|
description: Assigned-task contract for a bounded fleet worker
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# Assigned Task Contract
|
|
9
8
|
|
|
10
|
-
The assigned task is authoritative
|
|
11
|
-
|
|
12
|
-
Do not invent a different task, source tree, file path, or implementation plan.
|
|
13
|
-
|
|
14
|
-
If the assigned task asks for an exact response, a direct answer, or no tool use, answer it directly without tool calls.
|
|
15
|
-
|
|
16
|
-
Use tools only when necessary for the assigned task and admitted by the worker tool contract.
|
|
9
|
+
The assigned task is authoritative; role guidance is a persona, not a replacement. Do not invent a different task, source tree, file path, or implementation plan.
|
|
@@ -161,7 +161,7 @@ export {
|
|
|
161
161
|
VALID_THINKING_LEVELS,
|
|
162
162
|
} from "./types/capability-flags.js";
|
|
163
163
|
export { type ContextWindowSlots, formatContextWindowSlots } from "./types/context-window-slots.js";
|
|
164
|
-
export { type CostProvenance, normalizeCostProvenance } from "./types/cost-provenance.js";
|
|
164
|
+
export { type CostProvenance, normalizeCostProvenance, resolveCostProvenance } from "./types/cost-provenance.js";
|
|
165
165
|
export type { KnowledgeBase, KnowledgeBaseEntry, KnowledgeBaseHit } from "./types/knowledge-base.js";
|
|
166
166
|
export type {
|
|
167
167
|
ProbeContext,
|
|
@@ -36,7 +36,7 @@ export interface AppliedThinking {
|
|
|
36
36
|
mechanism: ThinkingMechanism;
|
|
37
37
|
effort?: string;
|
|
38
38
|
budgetTokens?: number;
|
|
39
|
-
chatTemplateKwargs?: Record<string, boolean>;
|
|
39
|
+
chatTemplateKwargs?: Record<string, boolean | string | number>;
|
|
40
40
|
noticeKind: AppliedThinkingNoticeKind;
|
|
41
41
|
notice: string;
|
|
42
42
|
}
|
|
@@ -53,7 +53,20 @@ export interface ResolvedRequestCapability {
|
|
|
53
53
|
reasoningEffort?: string;
|
|
54
54
|
budgetTokens?: number;
|
|
55
55
|
budgetEnforcement: ThinkingBudgetEnforcement;
|
|
56
|
-
chatTemplateKwargs?: Record<string, boolean | string>;
|
|
56
|
+
chatTemplateKwargs?: Record<string, boolean | string | number>;
|
|
57
|
+
/**
|
|
58
|
+
* Family-declared chat-template kwargs the runtime cannot carry. LM Studio
|
|
59
|
+
* ignores `chat_template_kwargs` for every family measured, so the keys are
|
|
60
|
+
* named here for the resolution diagnostics instead of riding in
|
|
61
|
+
* `chatTemplateKwargs` only to be deleted at the wire.
|
|
62
|
+
*/
|
|
63
|
+
undeliverableChatTemplateKwargs?: UndeliverableChatTemplateKwargs;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface UndeliverableChatTemplateKwargs {
|
|
67
|
+
keys: string[];
|
|
68
|
+
/** True when the family entry itself marks the block `lmstudio: unsupported`. */
|
|
69
|
+
declaredUnsupported: boolean;
|
|
57
70
|
}
|
|
58
71
|
|
|
59
72
|
export interface ResolvedResponseCapability {
|
|
@@ -335,14 +348,15 @@ function supportedEffortLevels(
|
|
|
335
348
|
): ReadonlyArray<ThinkingLevel> {
|
|
336
349
|
if (harmony) return HARMONY_LEVELS;
|
|
337
350
|
const efforts = quirks?.thinking?.effortByLevel;
|
|
338
|
-
|
|
351
|
+
const byLevelValues = (quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs)?.byLevel?.values;
|
|
352
|
+
if (!efforts && !byLevelValues) return baseLevels;
|
|
339
353
|
const out: ThinkingLevel[] = [];
|
|
340
354
|
if (baseLevels.includes("off")) out.push("off");
|
|
341
|
-
if (efforts
|
|
342
|
-
if (efforts
|
|
343
|
-
if (efforts
|
|
344
|
-
if (efforts
|
|
345
|
-
if (efforts
|
|
355
|
+
if (efforts?.minimal !== undefined || byLevelValues?.minimal !== undefined) out.push("minimal");
|
|
356
|
+
if (efforts?.low !== undefined || byLevelValues?.low !== undefined) out.push("low");
|
|
357
|
+
if (efforts?.medium !== undefined || byLevelValues?.medium !== undefined) out.push("medium");
|
|
358
|
+
if (efforts?.high !== undefined || byLevelValues?.high !== undefined) out.push("high");
|
|
359
|
+
if (efforts?.xhigh !== undefined || byLevelValues?.xhigh !== undefined) out.push("xhigh");
|
|
346
360
|
return out.length > 0 ? out : baseLevels;
|
|
347
361
|
}
|
|
348
362
|
|
|
@@ -525,27 +539,71 @@ function resolveThinkingCapability(
|
|
|
525
539
|
}
|
|
526
540
|
|
|
527
541
|
/**
|
|
528
|
-
* Runtimes whose OpenAI-compatible surface
|
|
529
|
-
* from `reasoning_effort
|
|
530
|
-
*
|
|
531
|
-
*
|
|
532
|
-
*
|
|
533
|
-
*
|
|
534
|
-
*
|
|
542
|
+
* Runtimes whose OpenAI-compatible surface ignores `chat_template_kwargs`
|
|
543
|
+
* and reads every thinking control from `reasoning_effort`. Measured against
|
|
544
|
+
* dynamo (LM Studio) on 2026-08-11 with `nvidia-nemotron-3.5-lightning-30b-a3b`
|
|
545
|
+
* and again on 2026-09-02 across three mechanisms: `enable_thinking: false`
|
|
546
|
+
* left 26 reasoning tokens on qwen3.8-27b (effort-levels), 52 on
|
|
547
|
+
* gemma-4-26b-a4b-it (on-off) and 105 on nemotron-3.5-lightning (on-off),
|
|
548
|
+
* while `reasoning_effort: "none"` produced 0 on each; llama.cpp does the
|
|
549
|
+
* reverse. Sending the wrong spelling reads as "no preference" to the
|
|
550
|
+
* server, so the model keeps reasoning at every dial. The same runtime drops
|
|
551
|
+
* a family's own kwargs (#267) for the same reason, so those are reported as
|
|
552
|
+
* undeliverable rather than merged into the request (#268).
|
|
535
553
|
*/
|
|
536
|
-
const
|
|
554
|
+
const REASONING_EFFORT_ONLY_RUNTIMES: ReadonlySet<string> = new Set(["lmstudio"]);
|
|
537
555
|
|
|
538
556
|
/** `none` is LM Studio's documented off value; on-off models have no finer dial than `low`. */
|
|
539
557
|
function onOffReasoningEffort(thinkingActive: boolean): string {
|
|
540
558
|
return thinkingActive ? "low" : "none";
|
|
541
559
|
}
|
|
542
560
|
|
|
561
|
+
function resolveFamilyChatTemplateKwargs(
|
|
562
|
+
quirks: LocalModelQuirks | undefined,
|
|
563
|
+
effectiveLevel: ThinkingLevel,
|
|
564
|
+
configuredLevel: ThinkingLevel,
|
|
565
|
+
): Record<string, boolean | string | number> | undefined {
|
|
566
|
+
const block = quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs;
|
|
567
|
+
if (!block) return undefined;
|
|
568
|
+
const out: Record<string, boolean | string | number> = {};
|
|
569
|
+
if (block.static) {
|
|
570
|
+
for (const [k, v] of Object.entries(block.static)) {
|
|
571
|
+
out[k] = v;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
if (block.byLevel) {
|
|
575
|
+
const byLevel = block.byLevel;
|
|
576
|
+
const val = byLevel.values[effectiveLevel] ?? byLevel.values[configuredLevel];
|
|
577
|
+
if (val !== undefined) {
|
|
578
|
+
out[byLevel.key] = val;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
function familyKwargsDeclaredUnsupported(quirks: LocalModelQuirks | undefined, runtimeId: string): boolean {
|
|
585
|
+
if (runtimeId !== "lmstudio") return false;
|
|
586
|
+
const block = quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs;
|
|
587
|
+
return block?.lmstudio === "unsupported" || block?.byLevel?.lmstudio === "unsupported";
|
|
588
|
+
}
|
|
589
|
+
|
|
543
590
|
function resolveRequestCapability(
|
|
544
591
|
thinking: ResolvedThinkingCapability,
|
|
545
592
|
parser: ResponseParserKind,
|
|
546
593
|
runtimeId: string,
|
|
594
|
+
quirks?: LocalModelQuirks,
|
|
547
595
|
): ResolvedRequestCapability {
|
|
548
596
|
const request: ResolvedRequestCapability = { budgetEnforcement: thinking.budgetEnforcement };
|
|
597
|
+
const effortOnly = REASONING_EFFORT_ONLY_RUNTIMES.has(runtimeId);
|
|
598
|
+
const familyKwargs = resolveFamilyChatTemplateKwargs(quirks, thinking.effectiveLevel, thinking.configuredLevel);
|
|
599
|
+
if (familyKwargs && effortOnly) {
|
|
600
|
+
request.undeliverableChatTemplateKwargs = {
|
|
601
|
+
keys: Object.keys(familyKwargs),
|
|
602
|
+
declaredUnsupported: familyKwargsDeclaredUnsupported(quirks, runtimeId),
|
|
603
|
+
};
|
|
604
|
+
} else if (familyKwargs) {
|
|
605
|
+
request.chatTemplateKwargs = { ...familyKwargs };
|
|
606
|
+
}
|
|
549
607
|
if (thinking.mechanism === "effort-levels" && thinking.effort) {
|
|
550
608
|
request.reasoningEffort = thinking.effort;
|
|
551
609
|
}
|
|
@@ -556,15 +614,21 @@ function resolveRequestCapability(
|
|
|
556
614
|
request.budgetTokens = thinking.budgetTokens;
|
|
557
615
|
}
|
|
558
616
|
if (thinking.mechanism === "on-off" && thinking.chatTemplateKwargs) {
|
|
559
|
-
request.chatTemplateKwargs = { ...thinking.chatTemplateKwargs };
|
|
560
|
-
if (REASONING_EFFORT_ON_OFF_RUNTIMES.has(runtimeId)) {
|
|
561
|
-
request.reasoningEffort = onOffReasoningEffort(thinking.thinkingActive);
|
|
562
|
-
}
|
|
617
|
+
request.chatTemplateKwargs = { ...(request.chatTemplateKwargs ?? {}), ...thinking.chatTemplateKwargs };
|
|
563
618
|
}
|
|
564
619
|
if (parser === "harmony" && thinking.effort) {
|
|
565
620
|
request.reasoningEffort = thinking.effort;
|
|
566
621
|
request.chatTemplateKwargs = { ...(request.chatTemplateKwargs ?? {}), reasoning_effort: thinking.effort };
|
|
567
622
|
}
|
|
623
|
+
// Every mechanism that means "off" has to reach an effort-only runtime as
|
|
624
|
+
// reasoning_effort "none": the template flag above is what llama.cpp reads
|
|
625
|
+
// and what LM Studio drops. An interactive session with thinking "off" had
|
|
626
|
+
// spent 37k reasoning tokens before the effort-levels case reached the
|
|
627
|
+
// wire, and on-off and budget-tokens families reasoned on the same way.
|
|
628
|
+
if (effortOnly && thinking.mechanism !== "none" && thinking.mechanism !== "always-on") {
|
|
629
|
+
if (!thinking.thinkingActive) request.reasoningEffort = onOffReasoningEffort(false);
|
|
630
|
+
else if (thinking.mechanism === "on-off") request.reasoningEffort = onOffReasoningEffort(true);
|
|
631
|
+
}
|
|
568
632
|
return request;
|
|
569
633
|
}
|
|
570
634
|
|
|
@@ -583,7 +647,7 @@ export function resolveModelRuntimeCapabilities(
|
|
|
583
647
|
family,
|
|
584
648
|
capabilities: input.capabilities,
|
|
585
649
|
thinking,
|
|
586
|
-
request: resolveRequestCapability(thinking, parser, input.runtimeId),
|
|
650
|
+
request: resolveRequestCapability(thinking, parser, input.runtimeId, quirks),
|
|
587
651
|
response: {
|
|
588
652
|
parser,
|
|
589
653
|
stripTokenizerSentinels: true,
|