@iowarp/clio-coder 0.3.1 → 0.3.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 +90 -2
- package/CONTRIBUTING.md +23 -23
- package/README.md +284 -613
- package/dist/{acp-FPR54DGL.js → acp-BIYHVZIM.js} +43 -53
- package/dist/{agents-OGPIHPJH.js → agents-YT6SSRIT.js} +43 -26
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-IC3K6NIZ.js → auth-5TWEIYDN.js} +20 -12
- package/dist/{chunk-PV4JUBVJ.js → chunk-2EHAIA3X.js} +40 -21
- package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
- package/dist/chunk-2SFS6XQE.js +122 -0
- package/dist/chunk-2VTFPG5O.js +48 -0
- package/dist/{chunk-MAR7Y6HW.js → chunk-3ZXDFGR5.js} +23 -16
- package/dist/chunk-4BJ5BYCE.js +61 -0
- package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
- package/dist/chunk-4KLWL3UC.js +18 -0
- package/dist/chunk-4VP4KH3K.js +962 -0
- package/dist/chunk-4ZG3XFUR.js +77 -0
- package/dist/chunk-5B2AEOW5.js +5407 -0
- package/dist/{chunk-K2ITRMHZ.js → chunk-5TSRNF4G.js} +6 -138
- package/dist/{chunk-OLBBMFRD.js → chunk-5UUP6MWO.js} +24 -62
- package/dist/chunk-65DEGPJ6.js +52 -0
- package/dist/chunk-6EJMN2Y3.js +17 -0
- package/dist/chunk-6EJV5X2W.js +16405 -0
- package/dist/chunk-6N5PTWMY.js +136 -0
- package/dist/chunk-6XLNIQDB.js +27 -0
- package/dist/{chunk-TEKV33Q5.js → chunk-77VKQEHF.js} +65 -33
- package/dist/chunk-7CR24IG7.js +242 -0
- package/dist/{chunk-M5T5VO65.js → chunk-7EYHLWU7.js} +837 -635
- package/dist/chunk-7MNJORFF.js +22 -0
- package/dist/{chunk-KY56HMHH.js → chunk-A3CYT5EX.js} +125 -31
- package/dist/chunk-AGYYIBLL.js +1069 -0
- package/dist/chunk-AO4RKG4M.js +277 -0
- package/dist/{chunk-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
- package/dist/chunk-ARBGF5F7.js +174 -0
- package/dist/{chunk-673JJUWJ.js → chunk-BMEMKKIT.js} +2 -2
- package/dist/chunk-CBCAPZAA.js +229 -0
- package/dist/chunk-CMZWFGD2.js +352 -0
- package/dist/chunk-ECH6PKUQ.js +39 -0
- package/dist/chunk-ED4KHGC3.js +143 -0
- package/dist/chunk-EKMEHE4H.js +340 -0
- package/dist/{chunk-RPTR2H26.js → chunk-EPVUXGXG.js} +21 -15
- package/dist/chunk-FCSXB6T2.js +338 -0
- package/dist/chunk-FJ3H4MN5.js +48 -0
- package/dist/chunk-FQ4SKYE4.js +29 -0
- package/dist/chunk-G2DE3C7R.js +644 -0
- package/dist/chunk-G4BMMOKF.js +182 -0
- package/dist/{chunk-ZPY3JZ5E.js → chunk-GGXXDWE4.js} +183 -1233
- package/dist/chunk-HC4CLZ2Y.js +68 -0
- package/dist/{chunk-LU4TK2PR.js → chunk-HFSBBKSQ.js} +5 -56
- package/dist/{chunk-PIUMUEMV.js → chunk-HKIYEGME.js} +10 -6
- package/dist/chunk-I4HZDVNP.js +73 -0
- package/dist/{chunk-4QKXUHSR.js → chunk-IGLFWIYI.js} +70 -20
- package/dist/chunk-IKCO5N3L.js +162 -0
- package/dist/chunk-IR4CFBFN.js +56 -0
- package/dist/{chunk-PFEFKVGL.js → chunk-J5HN4RYU.js} +13 -11
- package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
- package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
- package/dist/chunk-KJ5LWLOE.js +1077 -0
- package/dist/chunk-LBMZMYH2.js +285 -0
- package/dist/{chunk-G34LV2PF.js → chunk-LBNRH5WM.js} +84 -170
- package/dist/{chunk-H6F6BYOH.js → chunk-LZSJBIVT.js} +7003 -7434
- package/dist/{chunk-HQQID6OA.js → chunk-M6SHUN7Q.js} +5 -5
- package/dist/chunk-MAW544W2.js +1882 -0
- package/dist/chunk-MBS4V7ZP.js +217 -0
- package/dist/{chunk-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
- package/dist/chunk-MNA4JGU4.js +255 -0
- package/dist/chunk-MQSRRFWA.js +3428 -0
- package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
- package/dist/chunk-OAO4GE4M.js +619 -0
- package/dist/chunk-OHHN2SO4.js +5135 -0
- package/dist/chunk-OKGUZO2U.js +34 -0
- package/dist/{chunk-GAEBEQVI.js → chunk-OOJYHWRB.js} +32 -346
- package/dist/{chunk-Q5WJOSJ7.js → chunk-OQ33BKR3.js} +2 -1
- package/dist/chunk-OQE5J4C6.js +73 -0
- package/dist/{chunk-KKNLWXI6.js → chunk-ORBHGJC5.js} +8 -8
- package/dist/chunk-POHLU5DW.js +1186 -0
- package/dist/chunk-QKMUKYO7.js +4961 -0
- package/dist/{chunk-ASND7OZK.js → chunk-QTYWRVRA.js} +13 -13
- package/dist/{chunk-EYOKLTMF.js → chunk-SRF2PJNW.js} +17 -3
- package/dist/chunk-SST6Z5JA.js +80 -0
- package/dist/chunk-STBPMHSX.js +2456 -0
- package/dist/chunk-T6YILFSB.js +80 -0
- package/dist/chunk-TZTZS7QK.js +227 -0
- package/dist/chunk-UOV2BYIW.js +107 -0
- package/dist/{chunk-Q3RUPKEJ.js → chunk-V4RXGQ5Q.js} +58 -189
- package/dist/chunk-VAKQQHWR.js +434 -0
- package/dist/chunk-VG7TBQIY.js +128 -0
- package/dist/chunk-VJWL6YS5.js +244 -0
- package/dist/chunk-WEH5XRJQ.js +32 -0
- package/dist/chunk-WMSVI4G2.js +2095 -0
- package/dist/chunk-WVO7V2QY.js +797 -0
- package/dist/chunk-X4RCMKVQ.js +641 -0
- package/dist/chunk-X75S7HFS.js +374 -0
- package/dist/chunk-XN3L4EYL.js +46 -0
- package/dist/{chunk-RDLVBZEO.js → chunk-YCWGATWI.js} +6 -4
- package/dist/chunk-YHZX5GEU.js +193 -0
- package/dist/chunk-YXLYO42X.js +91 -0
- package/dist/{chunk-NMOX6HFD.js → chunk-ZDOOVTXZ.js} +29 -77
- package/dist/chunk-ZI647VB5.js +37 -0
- package/dist/{chunk-C4PTHK7P.js → chunk-ZWLZP4ZT.js} +5 -5
- package/dist/cli/index.js +62 -54
- package/dist/clio-4LY5K2AC.js +25 -0
- package/dist/code-nav-7AX6FYE6.js +600 -0
- package/dist/codewiki/build-worker.js +66 -0
- package/dist/compile-cache-CVJMMODC.js +18 -0
- package/dist/{components-DMAOEKFB.js → components-KELWS457.js} +11 -6
- package/dist/{config-IRUQ7SE4.js → config-GTLUW2PR.js} +92 -55
- package/dist/configure-R6A64DHX.js +42 -0
- package/dist/context-5VKGUVJJ.js +866 -0
- package/dist/{context-3KWFLHJG.js → context-JFZEJ7W5.js} +15 -13
- package/dist/{context-5RADCKTR.js → context-RW5HC47S.js} +71 -35
- package/dist/{context-clear-7TSNPAAI.js → context-clear-6ZHBAZZT.js} +54 -28
- package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
- package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
- package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
- package/dist/{doctor-UC5NAJYQ.js → doctor-KI767GSN.js} +27 -17
- package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
- package/dist/{evidence-YEGUW4L3.js → evidence-UA6AWDQQ.js} +46 -26
- package/dist/{evolve-TXARCTPG.js → evolve-QNTFGV6Z.js} +45 -25
- package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
- package/dist/{fleet-6G3DHNYE.js → fleet-Q7UOMUSG.js} +163 -54
- package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
- package/dist/{init-KZ5QTF6M.js → init-WBB65ZHQ.js} +69 -32
- package/dist/{memory-73ESV5YC.js → memory-MD3O64RI.js} +48 -27
- package/dist/{models-A4PVNWJK.js → models-BZU34YWD.js} +39 -25
- package/dist/monitor-MEQA5C3I.js +661 -0
- package/dist/{chunk-FCIH3BIZ.js → orchestrator-CGFKEP27.js} +11832 -8687
- package/dist/{paths-C4H6IV77.js → paths-UXLN5YYZ.js} +10 -5
- package/dist/{preload-6WVMHX3A.js → preload-P6DGH2PZ.js} +2 -2
- package/dist/{reset-BGW6OGMV.js → reset-L2FQEE3E.js} +16 -10
- package/dist/{run-YTPEYQOH.js → run-IV4Q6RLN.js} +101 -61
- package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
- package/dist/{skills-2V6RA3OQ.js → skills-LQEKRDTN.js} +34 -14
- package/dist/{skills-eval-S2TVJO4F.js → skills-eval-3DC4HEWS.js} +70 -34
- package/dist/steer-GGWFUJUD.js +77 -0
- package/dist/{targets-TYXLPB23.js → targets-C4SSGQOB.js} +43 -27
- package/dist/terminal-lease-IT5JW2NR.js +395 -0
- package/dist/{trace-GGOJ6Q6Z.js → trace-PNCASAXC.js} +41 -16
- package/dist/{chunk-N6F52NLF.js → tree-sitter-HGKH6LG4.js} +28 -2306
- package/dist/{uninstall-LLLT4F4W.js → uninstall-FZCQCDKC.js} +10 -5
- package/dist/{upgrade-33G2LMM5.js → upgrade-7TT7SQ3G.js} +45 -25
- package/dist/{usage-ZAFSXKKG.js → usage-GV4PKT3M.js} +62 -31
- package/dist/verify-G6V4D2G7.js +716 -0
- package/dist/web-fetch-2YHJ3KTG.js +638 -0
- package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-DQF6Z66B.js} +74 -34
- package/dist/worker/entry.js +221 -36
- package/dist/workspace-G4ZWUIPR.js +22 -0
- package/docs/README.md +22 -17
- package/docs/acp.md +168 -16
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +136 -7
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +114 -71
- package/docs/config-knobs-audit.md +1 -3
- package/docs/configuration-and-targets.md +174 -46
- package/docs/context-engine.md +29 -6
- package/docs/development-pipeline.md +26 -1
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +2 -2
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +13 -5
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +6 -2
- package/docs/evolution.md +2 -2
- package/docs/exit-codes-and-output.md +15 -9
- package/docs/extensions-and-sharing.md +9 -9
- package/docs/fleet-dispatch.md +7 -5
- package/docs/git-commit-provenance.md +120 -0
- package/docs/glossary.md +1 -1
- package/docs/installation-and-lifecycle.md +34 -27
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +45 -14
- package/docs/observability.md +8 -5
- package/docs/performance-methodology.md +491 -0
- package/docs/pi-boundary.md +72 -0
- package/docs/proactive-memory.md +3 -3
- package/docs/prompt-envelope-and-tools.md +24 -3
- package/docs/provider-adapter-cookbook.md +57 -4
- package/docs/release-cut-checklist.md +129 -115
- package/docs/safety-model.md +9 -5
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +55 -12
- package/docs/skills-marketplace.md +12 -8
- package/docs/time-conventions.md +1 -1
- package/docs/tool-usage.md +3 -3
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +10 -7
- package/docs/tui-design.md +47 -10
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +19 -22
- package/skills/coding/ast-grep/SKILL.md +136 -0
- package/skills/coding/ast-grep/evals.md +56 -0
- package/skills/coding/ast-grep/references/rule_reference.md +297 -0
- package/skills/coding/coding-standards/SKILL.md +113 -0
- package/skills/coding/coding-standards/evals.md +34 -0
- package/skills/coding/prototype/SKILL.md +86 -0
- package/skills/coding/prototype/evals.md +42 -0
- package/skills/coding/prototype/references/LOGIC.md +67 -0
- package/skills/coding/prototype/references/UI.md +112 -0
- package/skills/coding/tdd/SKILL.md +101 -0
- package/skills/coding/tdd/evals.md +41 -0
- package/skills/coding/tdd/references/mocking.md +59 -0
- package/skills/coding/tdd/references/tests.md +77 -0
- package/skills/context/context-handoff/SKILL.md +126 -0
- package/skills/context/context-handoff/evals.md +57 -0
- package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
- package/skills/context/context-prime/SKILL.md +95 -0
- package/skills/context/context-prime/evals.md +54 -0
- package/skills/meta/clio-dev/SKILL.md +91 -0
- package/skills/meta/clio-dev/evals.md +45 -0
- package/skills/meta/clio-test/SKILL.md +130 -0
- package/skills/meta/clio-test/evals.md +43 -0
- package/skills/meta/clio-test/references/harness.md +97 -0
- package/skills/meta/clio-test/references/test-map.md +59 -0
- package/skills/meta/credentials/SKILL.md +125 -0
- package/skills/meta/credentials/evals.md +104 -0
- package/skills/meta/find-skills/SKILL.md +72 -0
- package/skills/meta/find-skills/evals.md +47 -0
- package/skills/meta/herdr/SKILL.md +127 -0
- package/skills/meta/herdr/evals.md +38 -0
- package/skills/meta/skill-craft/SKILL.md +102 -0
- package/skills/meta/skill-craft/evals.md +41 -0
- package/skills/planning/architecture/SKILL.md +129 -0
- package/skills/planning/architecture/evals.md +36 -0
- package/skills/planning/backlog/SKILL.md +90 -0
- package/skills/planning/backlog/evals.md +43 -0
- package/skills/planning/prd/SKILL.md +82 -0
- package/skills/planning/prd/evals.md +49 -0
- package/skills/planning/product-intent/SKILL.md +112 -0
- package/skills/planning/product-intent/evals.md +36 -0
- package/skills/planning/tech-spec/SKILL.md +115 -0
- package/skills/planning/tech-spec/evals.md +47 -0
- package/skills/registry.yaml +136 -0
- package/skills/research/arxiv-literature/SKILL.md +104 -0
- package/skills/research/arxiv-literature/evals.md +58 -0
- package/skills/research/experiment-protocol/SKILL.md +122 -0
- package/skills/research/experiment-protocol/evals.md +91 -0
- package/skills/research/scientific-debugging/SKILL.md +119 -0
- package/skills/research/scientific-debugging/evals.md +138 -0
- package/skills/research/scientific-modernization/SKILL.md +138 -0
- package/skills/research/scientific-modernization/evals.md +84 -0
- package/skills/workflow/design-council/SKILL.md +139 -0
- package/skills/workflow/design-council/evals.md +97 -0
- package/skills/workflow/grill-me/SKILL.md +186 -0
- package/skills/workflow/grill-me/evals.md +78 -0
- package/skills/workflow/workflow-distiller/SKILL.md +136 -0
- package/skills/workflow/workflow-distiller/evals.md +107 -0
- package/src/cli/acp.ts +31 -4
- package/src/cli/clio.ts +68 -6
- package/src/cli/config-inspect.ts +28 -22
- package/src/cli/configure.ts +47 -9
- package/src/cli/context-clear.ts +2 -2
- package/src/cli/context-index.ts +21 -23
- package/src/cli/context.ts +13 -8
- package/src/cli/default-target.ts +9 -17
- package/src/cli/docs.ts +11 -5
- package/src/cli/evidence.ts +4 -1
- package/src/cli/extensions.ts +10 -1
- package/src/cli/fleet.ts +47 -6
- package/src/cli/index.ts +55 -26
- package/src/cli/memory.ts +3 -1
- package/src/cli/models.ts +1 -1
- package/src/cli/modes/json-stream.ts +37 -1
- package/src/cli/modes/print.ts +24 -9
- package/src/cli/run.ts +2 -2
- package/src/cli/skills-eval.ts +23 -8
- package/src/cli/skills.ts +19 -4
- package/src/cli/targets.ts +4 -0
- package/src/cli/text-layout.ts +15 -5
- package/src/cli/trace.ts +62 -14
- package/src/cli/upgrade.ts +18 -2
- package/src/cli/usage.ts +10 -3
- package/src/cli/wiki-generate.ts +2 -1
- package/src/core/agent-environment.ts +7 -0
- package/src/core/bash-exec.ts +72 -1
- package/src/core/boot-trace.ts +9 -4
- package/src/core/bus-events.ts +20 -4
- package/src/core/commit-attribution.ts +157 -0
- package/src/core/compile-cache.ts +159 -0
- package/src/core/config.ts +131 -2
- package/src/core/defaults.ts +39 -5
- package/src/core/domain-loader.ts +12 -5
- package/src/core/git-commit-attribution.ts +362 -0
- package/src/core/incomplete-installation.ts +45 -0
- package/src/core/response-schema.ts +1 -1
- package/src/core/safe-exec.ts +13 -1
- package/src/core/settings-layers.ts +155 -21
- package/src/core/skill-activation.ts +1 -1
- package/src/core/startup-timer.ts +3 -3
- package/src/core/state-file-lock.ts +13 -1
- package/src/core/termination.ts +78 -5
- package/src/domains/config/classify.ts +15 -3
- package/src/domains/config/extension.ts +19 -13
- package/src/domains/config/index.ts +10 -0
- package/src/domains/config/keybindings.ts +42 -6
- package/src/domains/context/bootstrap-prompt.ts +1 -1
- package/src/domains/context/bootstrap.ts +111 -18
- package/src/domains/context/clear.ts +16 -11
- package/src/domains/context/clio-md.ts +111 -9
- package/src/domains/context/codewiki/artifact.ts +400 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
- package/src/domains/context/codewiki/build-worker.ts +54 -0
- package/src/domains/context/codewiki/coordinator.ts +182 -0
- package/src/domains/context/codewiki/indexer.ts +59 -144
- package/src/domains/context/codewiki/paths.ts +67 -0
- package/src/domains/context/codewiki/schema.ts +80 -0
- package/src/domains/context/codewiki/tree-sitter.ts +1 -1
- package/src/domains/context/contract.ts +11 -5
- package/src/domains/context/extension.ts +94 -143
- package/src/domains/context/fingerprint.ts +3 -1
- package/src/domains/context/index.ts +12 -22
- package/src/domains/context/project-metadata.ts +19 -0
- package/src/domains/context/prompt-context.ts +9 -10
- package/src/domains/context/refresh.ts +29 -21
- package/src/domains/context/runtime.ts +17 -0
- package/src/domains/context/wiki/generate.ts +39 -34
- package/src/domains/context/wiki/plan.ts +1 -1
- package/src/domains/context/wiki/prompts.ts +21 -8
- package/src/domains/dispatch/code-step.ts +20 -1
- package/src/domains/dispatch/extension.ts +158 -21
- package/src/domains/dispatch/failure-classification.ts +6 -0
- package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
- package/src/domains/dispatch/orphan-recovery.ts +50 -8
- package/src/domains/dispatch/receipt-integrity.ts +5 -0
- package/src/domains/dispatch/state.ts +31 -6
- package/src/domains/dispatch/transport.ts +2 -1
- package/src/domains/dispatch/types.ts +14 -0
- package/src/domains/dispatch/worker-spawn.ts +21 -2
- package/src/domains/eval/metrics/context.ts +1 -1
- package/src/domains/eval/types.ts +0 -1
- package/src/domains/evidence/build.ts +41 -1
- package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
- package/src/domains/lifecycle/migrations/index.ts +24 -4
- package/src/domains/middleware/hooks-io.ts +12 -0
- package/src/domains/middleware/skills-reminder.ts +30 -15
- package/src/domains/prompts/compiler.ts +142 -84
- package/src/domains/prompts/contract.ts +18 -2
- package/src/domains/prompts/extension.ts +39 -7
- package/src/domains/prompts/fragment-loader.ts +0 -1
- package/src/domains/prompts/fragments/identity/clio.md +2 -4
- package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +1 -45
- package/src/domains/prompts/fragments/operating/contract.md +4 -50
- package/src/domains/prompts/fragments/operating/delegation.md +42 -0
- package/src/domains/prompts/fragments/operating/skills.md +26 -0
- package/src/domains/prompts/fragments/operating/worker.md +16 -0
- package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
- package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
- package/src/domains/prompts/fragments/safety/read-only.md +4 -4
- package/src/domains/prompts/fragments/safety/suggest.md +2 -2
- package/src/domains/prompts/fragments/wiki/page.md +10 -0
- package/src/domains/prompts/fragments/wiki/plan.md +10 -0
- package/src/domains/prompts/preload.ts +3 -3
- package/src/domains/providers/auth/api-key.ts +1 -1
- package/src/domains/providers/auth/backend-file.ts +20 -10
- package/src/domains/providers/auth/backend-memory.ts +59 -4
- package/src/domains/providers/auth/boot-status.ts +65 -0
- package/src/domains/providers/auth/oauth.ts +2 -1
- package/src/domains/providers/auth/storage.ts +97 -38
- package/src/domains/providers/capabilities.ts +12 -4
- package/src/domains/providers/contract.ts +15 -4
- package/src/domains/providers/extension.ts +18 -6
- package/src/domains/providers/model-runtime-capabilities.ts +15 -4
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +118 -35
- package/src/domains/providers/plugins.ts +5 -3
- package/src/domains/providers/probe/fingerprint.ts +25 -5
- package/src/domains/providers/registry.ts +31 -10
- package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +6 -7
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
- package/src/domains/providers/support.ts +6 -3
- package/src/domains/providers/types/local-model-quirks.ts +7 -9
- package/src/domains/providers/types/runtime-descriptor.ts +12 -1
- package/src/domains/providers/types/target-descriptor.ts +22 -0
- package/src/domains/resources/contract.ts +0 -1
- package/src/domains/resources/extension.ts +1 -3
- package/src/domains/resources/loader.ts +3 -4
- package/src/domains/resources/prompts/loader.ts +16 -2
- package/src/domains/resources/prompts/substitute.ts +1 -65
- package/src/domains/resources/skills/content-hash.ts +2 -0
- package/src/domains/resources/skills/install.ts +17 -0
- package/src/domains/resources/skills/loader.ts +17 -10
- package/src/domains/resources/skills/marketplace.ts +55 -9
- package/src/domains/safety/action-classifier.ts +4 -2
- package/src/domains/safety/audit.ts +8 -2
- package/src/domains/safety/extension.ts +1 -1
- package/src/domains/session/compaction/branch-summary.ts +3 -2
- package/src/domains/session/compaction/cut-point.ts +2 -1
- package/src/domains/session/compaction/tokens.ts +2 -1
- package/src/domains/session/context-ledger.ts +14 -0
- package/src/domains/session/contract.ts +15 -0
- package/src/domains/session/decision-board.ts +190 -0
- package/src/domains/session/entries.ts +66 -3
- package/src/domains/session/extension.ts +93 -12
- package/src/domains/session/retry.ts +10 -18
- package/src/domains/session/session-artifacts.ts +107 -0
- package/src/domains/session/task-board.ts +207 -13
- package/src/domains/session/tree/active-path.ts +44 -5
- package/src/domains/session/tree/fork.ts +26 -27
- package/src/domains/session/tree/preview.ts +2 -2
- package/src/domains/session/workspace/git-probe.ts +17 -11
- package/src/domains/user-tasks/store.ts +297 -0
- package/src/engine/acp/errors.ts +96 -0
- package/src/engine/acp/server.ts +1728 -146
- package/src/engine/acp/transport.ts +135 -14
- package/src/engine/acp/types.ts +26 -0
- package/src/engine/agent.ts +3 -3
- package/src/engine/ai.ts +32 -27
- package/src/engine/alcf-oauth.ts +26 -19
- package/src/engine/api-registry.ts +223 -0
- package/src/engine/apis/index.ts +3 -7
- package/src/engine/apis/llamacpp-residency.ts +49 -9
- package/src/engine/apis/lmstudio-residency.ts +5 -21
- package/src/engine/apis/lmstudio.ts +243 -0
- package/src/engine/apis/ollama-native.ts +24 -3
- package/src/engine/apis/openai-completions.ts +170 -91
- package/src/engine/apis/residency.ts +139 -3
- package/src/engine/apis/types.ts +16 -0
- package/src/engine/env-api-keys.ts +98 -0
- package/src/engine/gemma-channel-filter.ts +223 -0
- package/src/engine/instrumented-tui.ts +192 -0
- package/src/engine/messages.ts +14 -0
- package/src/engine/models.ts +42 -0
- package/src/engine/oauth.ts +16 -12
- package/src/engine/prompt-templates.ts +1 -0
- package/src/engine/provider-payload.ts +16 -59
- package/src/engine/strip-tokenizer-sentinels.ts +1 -1
- package/src/engine/truncate.ts +9 -0
- package/src/engine/tui.ts +17 -9
- package/src/engine/types.ts +3 -6
- package/src/engine/worker-runtime-capabilities.ts +5 -0
- package/src/engine/worker-runtime.ts +1 -1
- package/src/engine/worker-tools.ts +9 -4
- package/src/entry/boot-options.ts +50 -0
- package/src/entry/orchestrator.ts +288 -150
- package/src/interactive/application-controller.ts +89 -2
- package/src/interactive/chat-loop.ts +266 -41
- package/src/interactive/chat-panel.ts +173 -47
- package/src/interactive/chat-renderer.ts +262 -72
- package/src/interactive/clio-editor.ts +3 -8
- package/src/interactive/command-fallbacks.ts +2 -2
- package/src/interactive/context-overlay.ts +27 -1
- package/src/interactive/editor-submit.ts +228 -24
- package/src/interactive/export-html/ansi-to-html.ts +161 -0
- package/src/interactive/export-html/index.ts +51 -0
- package/src/interactive/export-html/template.ts +45 -0
- package/src/interactive/export-html/tool-renderer.ts +54 -0
- package/src/interactive/footer/dashboard.ts +4 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/widgets.ts +20 -2
- package/src/interactive/footer-panel.ts +2 -2
- package/src/interactive/format-time.ts +14 -2
- package/src/interactive/interactive-application.ts +201 -17
- package/src/interactive/interactive-event-projection.ts +6 -1
- package/src/interactive/interactive-input-runtime.ts +50 -4
- package/src/interactive/interactive-presentation.ts +151 -19
- package/src/interactive/interactive-shell.ts +268 -14
- package/src/interactive/interactive-slash-runtime.ts +176 -114
- package/src/interactive/interactive-tickers.ts +38 -7
- package/src/interactive/keybinding-manager.ts +1 -1
- package/src/interactive/layout.ts +40 -3
- package/src/interactive/overlay-frame.ts +1 -1
- package/src/interactive/overlay-general-openers.ts +58 -1
- package/src/interactive/overlay-key-routing.ts +3 -0
- package/src/interactive/overlay-lifecycle.ts +13 -0
- package/src/interactive/overlay-permission-lifecycle.ts +2 -1
- package/src/interactive/overlay-session-lifecycle.ts +69 -12
- package/src/interactive/overlays/decisions.ts +300 -0
- package/src/interactive/overlays/help-reference.ts +15 -10
- package/src/interactive/overlays/model-selector.ts +34 -16
- package/src/interactive/overlays/session-selector.ts +18 -0
- package/src/interactive/overlays/settings.ts +105 -17
- package/src/interactive/overlays/skills-hub.ts +4 -4
- package/src/interactive/overlays/tree-selector.ts +41 -6
- package/src/interactive/render-trace.ts +499 -90
- package/src/interactive/renderers/compaction-summary.ts +2 -2
- package/src/interactive/renderers/diff.ts +115 -104
- package/src/interactive/renderers/mermaid.ts +53 -0
- package/src/interactive/renderers/tool-execution.ts +386 -133
- package/src/interactive/renderers/worker-entry.ts +20 -4
- package/src/interactive/session-switch-settlement.ts +10 -0
- package/src/interactive/slash-autocomplete.ts +6 -114
- package/src/interactive/slash-commands.ts +135 -47
- package/src/interactive/slash-spec.ts +9 -38
- package/src/interactive/status/controller.ts +5 -1
- package/src/interactive/stdout-backpressure.ts +99 -0
- package/src/interactive/stream-pacer.ts +530 -0
- package/src/interactive/stream-pacing-policy.ts +66 -0
- package/src/interactive/tasks-overlay.ts +368 -14
- package/src/interactive/terminal-lease.ts +485 -0
- package/src/interactive/theme/tokens.ts +1 -1
- package/src/interactive/turn-context.ts +4 -3
- package/src/interactive/turn-persistence.ts +30 -13
- package/src/interactive/turn-queues.ts +12 -0
- package/src/interactive/turn-recovery.ts +25 -8
- package/src/interactive/turn-runtime.ts +79 -12
- package/src/interactive/turn-state.ts +10 -0
- package/src/interactive/view/artifacts.ts +114 -4
- package/src/interactive/view/view-overlay.ts +3 -0
- package/src/interactive/welcome-dashboard.ts +17 -16
- package/src/interactive/worker-receipts.ts +52 -3
- package/src/interactive/worker-stream.ts +5 -1
- package/src/tools/agent-tools.ts +23 -3
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +23 -13
- package/src/tools/bash.ts +30 -2
- package/src/tools/bootstrap.ts +34 -431
- package/src/tools/builtin-tool-catalog.ts +265 -0
- package/src/tools/codewiki/code-nav-surface.ts +29 -0
- package/src/tools/codewiki/code-nav.ts +8 -22
- package/src/tools/codewiki/shared.ts +41 -38
- package/src/tools/context/docs-engine.ts +14 -3
- package/src/tools/context/index.ts +107 -28
- package/src/tools/context/surface.ts +19 -0
- package/src/tools/core-bootstrap.ts +168 -0
- package/src/tools/credential-present.ts +5 -5
- package/src/tools/dispatch-admission.ts +533 -0
- package/src/tools/dispatch-background.ts +54 -0
- package/src/tools/dispatch-event-text.ts +6 -0
- package/src/tools/dispatch-plan.ts +9 -4
- package/src/tools/dispatch-run-events.ts +238 -0
- package/src/tools/dispatch-runner.ts +2370 -0
- package/src/tools/dispatch-scout-admission.ts +295 -0
- package/src/tools/dispatch-types.ts +77 -0
- package/src/tools/dispatch.ts +67 -3161
- package/src/tools/find.ts +4 -2
- package/src/tools/grep.ts +2 -2
- package/src/tools/lazy-tool.ts +60 -0
- package/src/tools/ledger.ts +3 -3
- package/src/tools/monitor-surface.ts +36 -0
- package/src/tools/monitor.ts +2 -32
- package/src/tools/observers.ts +2 -2
- package/src/tools/registry.ts +39 -27
- package/src/tools/safe-exec.ts +2 -2
- package/src/tools/steer-surface.ts +17 -0
- package/src/tools/steer.ts +2 -13
- package/src/tools/tasks.ts +108 -11
- package/src/tools/truncate.ts +25 -184
- package/src/tools/verify/frontend.ts +3 -1
- package/src/tools/verify/index.ts +3 -38
- package/src/tools/verify/surface.ts +46 -0
- package/src/tools/web-fetch-surface.ts +23 -0
- package/src/tools/web-fetch.ts +2 -20
- package/src/tools/write.ts +7 -2
- package/src/worker/entry.ts +39 -2
- package/src/worker/spec-contract.ts +26 -5
- package/dist/chunk-7SS2CTV2.js +0 -61361
- package/dist/chunk-DKGKUHFA.js +0 -924
- package/dist/chunk-GEP36Y4X.js +0 -12796
- package/dist/chunk-XYWBQRDM.js +0 -137
- package/dist/clio-BZVGEUFJ.js +0 -58
- package/dist/configure-S7S6F6CL.js +0 -32
- package/docs/html/agents_blueprint.html +0 -936
- package/docs/html/alcf_blueprint.html +0 -324
- package/docs/html/architecture_blueprint.html +0 -850
- package/docs/html/commands_blueprint.html +0 -939
- package/docs/html/config_knobs_audit_blueprint.html +0 -178
- package/docs/html/configuration_blueprint.html +0 -1080
- package/docs/html/context_blueprint.html +0 -603
- package/docs/html/documentation_blueprint.html +0 -832
- package/docs/html/environment_blueprint.html +0 -404
- package/docs/html/eval_blueprint.html +0 -743
- package/docs/html/evals_internal_blueprint.html +0 -190
- package/docs/html/evolution_blueprint.html +0 -674
- package/docs/html/extensions_blueprint.html +0 -2065
- package/docs/html/fleet_dispatch_blueprint.html +0 -286
- package/docs/html/index.html +0 -919
- package/docs/html/lifecycle_blueprint.html +0 -723
- package/docs/html/memory_blueprint.html +0 -699
- package/docs/html/middleware_blueprint.html +0 -664
- package/docs/html/models_blueprint.html +0 -2366
- package/docs/html/observability_blueprint.html +0 -683
- package/docs/html/provider_adapter_blueprint.html +0 -245
- package/docs/html/safety_blueprint.html +0 -1386
- package/docs/html/shared.css +0 -571
- package/docs/html/shared.js +0 -143
- package/docs/html/skills_blueprint.html +0 -671
- package/docs/html/soak_blueprint.html +0 -182
- package/docs/html/tool_usage_blueprint.html +0 -350
- package/docs/html/tools_blueprint.html +0 -2249
- package/docs/html/trace_blueprint.html +0 -235
- package/docs/html/tui_design_blueprint.html +0 -374
- package/docs/html/validation_blueprint.html +0 -961
- package/docs/html/worker_dispatch_blueprint.html +0 -231
- package/src/core/release.ts +0 -2
- package/src/domains/providers/runtimes/common/lmstudio-logger.ts +0 -32
- package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +0 -491
- package/src/engine/apis/lmstudio-native.ts +0 -1438
- package/src/engine/apis/thinking-replay.ts +0 -11
- package/src/tools/string-enum.ts +0 -15
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Sources:
|
|
2
2
|
# https://huggingface.co/Qwen/Qwen3.6-35B-A3B
|
|
3
3
|
# https://huggingface.co/Qwen/Qwen3.6-27B
|
|
4
|
+
# https://huggingface.co/Qwen/Qwen3.8-27B
|
|
4
5
|
# https://huggingface.co/google/gemma-4-26B-A4B
|
|
5
6
|
# https://huggingface.co/LilaRest/gemma-4-31B-it-NVFP4-turbo
|
|
6
7
|
# https://huggingface.co/Jackrong/Gemopus-4-31B-it-GGUF
|
|
@@ -17,13 +18,12 @@
|
|
|
17
18
|
#
|
|
18
19
|
# Thinking semantics for these local families: the chain-of-thought is emitted
|
|
19
20
|
# by the model's chat template (Qwen-style <think> blocks, Gemma 4 thinking
|
|
20
|
-
# template, Nemotron reasoning template). LM Studio's
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# it
|
|
25
|
-
#
|
|
26
|
-
# and TUI footer, and surfaced to the user truthfully rather than hidden.
|
|
21
|
+
# template, Nemotron reasoning template). LM Studio's OpenAI-compatible HTTP
|
|
22
|
+
# surface uses reasoning_effort as its sole thinking control; llama.cpp support
|
|
23
|
+
# depends on the active template and reasoning parser. If a model emits thought
|
|
24
|
+
# despite the requested level, Clio captures it in a ThinkingContent block,
|
|
25
|
+
# counts it separately on receipts and the TUI footer, and surfaces it rather
|
|
26
|
+
# than hiding what the server returned.
|
|
27
27
|
- family: openai-gpt-oss
|
|
28
28
|
matchPatterns:
|
|
29
29
|
- openai/gpt-oss
|
|
@@ -164,8 +164,8 @@
|
|
|
164
164
|
"24gb": "Use a 4-bit quant with reduced load context for evaluation. Prefer the 32GB tier for sustained Clio writes."
|
|
165
165
|
"32gb": "Primary strong local model for multimodal main-agent work. Keep openai-compat available for tool-call fallback."
|
|
166
166
|
runtimePreference:
|
|
167
|
-
|
|
168
|
-
openaiCompat: "
|
|
167
|
+
lmstudio: "Use LM Studio per-model load settings unless this target carries explicit lmstudio.load overrides."
|
|
168
|
+
openaiCompat: "Use for a generic gateway that fronts the same OpenAI-compatible chat surface."
|
|
169
169
|
llamaCpp: "OpenAI-compatible chat completions with --jinja."
|
|
170
170
|
llamaCpp:
|
|
171
171
|
ctxSize: 819200
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
Reasoning is template-driven; thinking blocks emit through the qwen
|
|
185
185
|
chat template. Preserve thinking across coding-task turns when the
|
|
186
186
|
chain matters; otherwise let the budget cap output growth.
|
|
187
|
-
serving: "Use qwen3_coder tool parsing when served through OpenAI-compatible HTTP. LM Studio
|
|
187
|
+
serving: "Use qwen3_coder tool parsing when served through OpenAI-compatible HTTP. LM Studio uses the same OpenAI-compatible tool surface."
|
|
188
188
|
|
|
189
189
|
- family: qwen3.6-35b-a3b
|
|
190
190
|
matchPatterns:
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
gpuTiers:
|
|
225
225
|
"32gb": "Main-agent candidate on 32GB targets when Nemotron Omni is unavailable or tool behavior is better for text-only work."
|
|
226
226
|
runtimePreference:
|
|
227
|
-
|
|
227
|
+
lmstudio: "Usable for text and vision through LM Studio's OpenAI-compatible chat surface."
|
|
228
228
|
openaiCompat: "Preferred local gateway path for tool-call stress tests."
|
|
229
229
|
llamaCpp: "OpenAI-compatible chat completions with --jinja. Local llama.cpp profile emits reasoning_content without a separate --reasoning flag."
|
|
230
230
|
llamaCpp:
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
gpuTiers:
|
|
347
347
|
"32gb": "Fits at f16 KV with parallel=1 and ctx=262144 (Q4_K_XL weights ~19.5 GB plus ~32 GB KV)."
|
|
348
348
|
runtimePreference:
|
|
349
|
-
|
|
349
|
+
lmstudio: "Primary LM Studio path through OpenAI-compatible chat and native REST model management."
|
|
350
350
|
openaiCompat: "Verified parity for tool calls; reasoning_content surfaces and completion_tokens_details.reasoning_tokens is reported."
|
|
351
351
|
thinking:
|
|
352
352
|
mechanism: budget-tokens
|
|
@@ -360,6 +360,91 @@
|
|
|
360
360
|
turns when the workflow is iterative; the budget caps runaway chains.
|
|
361
361
|
serving: "Official Qwen card recommends max output 32768 tokens for standard queries (81920 only for math/code competitions). Coding sampler is the precise variant; preserve thinking blocks across turns for iterative workflows."
|
|
362
362
|
|
|
363
|
+
- family: qwen3.8-27b
|
|
364
|
+
matchPatterns:
|
|
365
|
+
- qwen3.8-27b
|
|
366
|
+
- qwen3_8-27b
|
|
367
|
+
- qwen3-8-27b
|
|
368
|
+
capabilities:
|
|
369
|
+
chat: true
|
|
370
|
+
tools: true
|
|
371
|
+
toolCallFormat: qwen
|
|
372
|
+
reasoning: true
|
|
373
|
+
thinkingFormat: qwen-chat-template
|
|
374
|
+
structuredOutputs: json-schema
|
|
375
|
+
vision: true
|
|
376
|
+
audio: false
|
|
377
|
+
embeddings: false
|
|
378
|
+
rerank: false
|
|
379
|
+
fim: false
|
|
380
|
+
contextWindow: 262144
|
|
381
|
+
maxTokens: 131072
|
|
382
|
+
quirks:
|
|
383
|
+
kvCache:
|
|
384
|
+
kQuant: q8_0
|
|
385
|
+
vQuant: q8_0
|
|
386
|
+
sampling:
|
|
387
|
+
thinking:
|
|
388
|
+
temperature: 1.0
|
|
389
|
+
topP: 0.95
|
|
390
|
+
topK: 20
|
|
391
|
+
minP: 0.0
|
|
392
|
+
presencePenalty: 0.0
|
|
393
|
+
repetitionPenalty: 1.0
|
|
394
|
+
maxTokens: 32768
|
|
395
|
+
instruct:
|
|
396
|
+
temperature: 0.7
|
|
397
|
+
topP: 0.80
|
|
398
|
+
topK: 20
|
|
399
|
+
minP: 0.0
|
|
400
|
+
presencePenalty: 1.5
|
|
401
|
+
repetitionPenalty: 1.0
|
|
402
|
+
maxTokens: 32768
|
|
403
|
+
gpuTiers:
|
|
404
|
+
"24gb-rocm": "24 GB ROCm class: IQ4_NL uses about 17.3 GB and UD-Q4_K_XL uses about 19.5 GB. Serve ctx=131072 with q8_0/q8_0 KV, parallel=2, and draft-mtp speculative decoding."
|
|
405
|
+
"32gb-cuda": "32 GB CUDA class: Q6_K uses about 23.8 GB. Serve ctx=131072 with parallel=4 because the full 262144-token context is VRAM-bound."
|
|
406
|
+
"128gb-unified-vulkan": "128 GB unified-memory Vulkan class: IQ4_NL uses about 17.3 GB and fits ctx=262144 with parallel=4. Vulkan backends show much slower prefill than ROCm/CUDA on this family; prefer ROCm where available."
|
|
407
|
+
runtimePreference:
|
|
408
|
+
llamaCpp: "Primary verified path. OpenAI-compatible chat completions with --jinja, --reasoning on, --reasoning-effort medium as server defaults; reasoning_content and tool_calls both confirmed to parse correctly. A request can override to off with chat_template_kwargs.enable_thinking:false, or to a different active level with reasoning_effort in {low, medium, xhigh} (never minimal/high/max on the wire; the stock template raises a fatal jinja exception on those and Clio's landed capability resolver already clamps to this set)."
|
|
409
|
+
lmstudioOpenaiCompat: "Clio sends reasoning_effort over LM Studio's OpenAI-compatible HTTP port and omits chat_template_kwargs because LM Studio does not use that field for this model. With no override, LM Studio defaults this model to thinking off, unlike raw llama.cpp's template default of thinking on/xhigh. reasoning_effort:'none' explicitly disables it."
|
|
410
|
+
lmstudioNative: "Clio's LM Studio runtime uses the OpenAI-compatible HTTP chat adapter with native REST model discovery and residency management."
|
|
411
|
+
llamaCpp:
|
|
412
|
+
ctxSize: 131072
|
|
413
|
+
cacheTypeK: q8_0
|
|
414
|
+
cacheTypeV: q8_0
|
|
415
|
+
flashAttn: true
|
|
416
|
+
nGpuLayers: 99
|
|
417
|
+
parallel: 2
|
|
418
|
+
batchSize: 1024
|
|
419
|
+
ubatchSize: 256
|
|
420
|
+
mmproj: true
|
|
421
|
+
reasoning: "on"
|
|
422
|
+
reasoningEffort: medium
|
|
423
|
+
specType: draft-mtp
|
|
424
|
+
specDraftNMax: 1
|
|
425
|
+
thinking:
|
|
426
|
+
mechanism: effort-levels
|
|
427
|
+
effortByLevel:
|
|
428
|
+
low: low
|
|
429
|
+
medium: medium
|
|
430
|
+
high: xhigh
|
|
431
|
+
xhigh: xhigh
|
|
432
|
+
guidance: |
|
|
433
|
+
Official Qwen3.8-27B chat template (chat_template.jinja) validates
|
|
434
|
+
reasoning_effort against exactly {xhigh, medium, low} and raises a
|
|
435
|
+
fatal jinja exception (hard 500, not a graceful fallback) on anything
|
|
436
|
+
else, including minimal/high/max. The 27B card gives no /think or
|
|
437
|
+
/no_think soft switch for this model; unlike Qwen3, that idiom has no
|
|
438
|
+
effect here. Off must go through chat_template_kwargs.enable_thinking:
|
|
439
|
+
false, never through reasoning_effort. preserve_thinking should stay
|
|
440
|
+
on for an agentic harness (the template's own recommendation for
|
|
441
|
+
agent scenarios; improves KV cache reuse). llama.cpp's own
|
|
442
|
+
reasoning_effort:"none" also disables reasoning at the server layer
|
|
443
|
+
and is a separate mechanism from the template's enable_thinking flag;
|
|
444
|
+
both were verified independently on llama.cpp and on LM Studio's HTTP
|
|
445
|
+
port.
|
|
446
|
+
serving: "Qwen3.8-27B (unsloth/Qwen3.8-27B-GGUF), hybrid qwen3_5 architecture: 3 linear-attention (Gated DeltaNet) layers per 1 full-attention layer, so only 16 of 64 layers hold a conventional KV cache. Native ctx 262144, extensible to 1M via YaRN (out of scope for the hardware classes above; leave rope at default). Tool calls use an XML <tool_call><function=...> form in the stock template; llama.cpp's qwen3_coder parser converts this to standard tool_calls JSON, verified live on ROCm, CUDA, and Vulkan backends. Only messages[0] may be a system message and only system/user/assistant/tool roles are accepted; a second system message or a developer role raises a template error."
|
|
447
|
+
|
|
363
448
|
- family: gemma-4-31b-it-nvfp4-turbo
|
|
364
449
|
matchPatterns:
|
|
365
450
|
- gemma-4-31b-it-nvfp4-turbo
|
|
@@ -404,25 +489,23 @@
|
|
|
404
489
|
leakageNote: |
|
|
405
490
|
LM Studio's gemma4 chat template emits chain-of-thought as plain text
|
|
406
491
|
bracketed by literal '<|channel>thought\n' and '<channel|>' markers
|
|
407
|
-
rather than
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
tokens are accounted via the chars/4 estimator.
|
|
492
|
+
rather than structured reasoning fragments. The OpenAI-compatible path
|
|
493
|
+
currently exposes those markers as the server streams them; filtering
|
|
494
|
+
this family remains a follow-up.
|
|
411
495
|
gpuTiers:
|
|
412
496
|
"48gb": "Fits at f16 KV when parallel=1 and ctx=122880; drop to q8_0 KV at parallel=4."
|
|
413
497
|
"80gb": "Comfortable at f16 KV with parallel=1 and ctx=122880."
|
|
414
498
|
runtimePreference:
|
|
415
|
-
|
|
416
|
-
openaiCompat: "
|
|
499
|
+
lmstudio: "Pin parallel=1 in the LM Studio per-model preset to give a single agent the full 122880 context."
|
|
500
|
+
openaiCompat: "LM Studio chat uses this surface; visible text may contain the raw channel markers."
|
|
417
501
|
thinking:
|
|
418
502
|
mechanism: on-off
|
|
419
503
|
guidance: |
|
|
420
504
|
Gemma 4 chat template exposes thinking only as on or off; intermediate
|
|
421
505
|
levels coerce to on. NVFP4 quantization can corrupt JSON tool-call
|
|
422
506
|
output under aggressive sampling, so the instruct profile pins
|
|
423
|
-
temperature at 0.7.
|
|
424
|
-
channel
|
|
425
|
-
leak into visible text.
|
|
507
|
+
temperature at 0.7. LM Studio's OpenAI-compatible stream currently
|
|
508
|
+
exposes channel markers when the server does not classify them.
|
|
426
509
|
serving: "LilaRest publishes no per-model sampler; values inherit the gemma family default per the official Google Gemma 4 31B card. KV cache budget at f16, ctx=122880 is roughly 57 GB on top of ~21 GB of NVFP4 weights."
|
|
427
510
|
|
|
428
511
|
# The qat/UD-Q4_K_XL/MTP build is the long-context llama.cpp gemma profile and is a
|
|
@@ -547,15 +630,15 @@
|
|
|
547
630
|
"48gb": "Fits at f16 KV with parallel=1; q8_0 KV recommended at parallel=4."
|
|
548
631
|
"80gb": "Comfortable at f16 KV with parallel=1 and ctx=122880."
|
|
549
632
|
runtimePreference:
|
|
550
|
-
|
|
633
|
+
lmstudio: "LM Studio's OpenAI-compatible stream may expose this family's channel markers as visible text."
|
|
551
634
|
openaiCompat: "Fallback; reasoning_content is absent from the openai-compat reasoning probe for this family."
|
|
552
635
|
thinking:
|
|
553
636
|
mechanism: always-on
|
|
554
637
|
guidance: |
|
|
555
638
|
Distilled traces emit unconditionally. The thinking level setting is
|
|
556
639
|
ignored at the API surface; chain-of-thought arrives whether or not
|
|
557
|
-
Clio asks for it.
|
|
558
|
-
|
|
640
|
+
Clio asks for it. Channel-marker filtering remains a follow-up for the
|
|
641
|
+
OpenAI-compatible LM Studio path.
|
|
559
642
|
serving: "Distilled from Claude 4.6 Opus reasoning traces onto Google Gemma 4 31B; sampler matches the gemopus card values."
|
|
560
643
|
|
|
561
644
|
- family: qwopus3.6-27b-v1-preview
|
|
@@ -598,7 +681,7 @@
|
|
|
598
681
|
gpuTiers:
|
|
599
682
|
"32gb": "Fits at f16 KV with parallel=1 and ctx=262144 thanks to the Q4_K_M weights (~16.5 GB)."
|
|
600
683
|
runtimePreference:
|
|
601
|
-
|
|
684
|
+
lmstudio: "Primary LM Studio path; thinking is read from the OpenAI-compatible reasoning stream."
|
|
602
685
|
openaiCompat: "Verified for tool-call extraction parity; reasoning_content surfaces."
|
|
603
686
|
thinking:
|
|
604
687
|
mechanism: budget-tokens
|
|
@@ -730,7 +813,7 @@
|
|
|
730
813
|
maxTokens: 32768
|
|
731
814
|
runtimePreference:
|
|
732
815
|
llamaCpp: "A local llama.cpp router serves it with --jinja and enable_thinking false; coder sampler temperature 0.2, top_p 0.9, top_k 20."
|
|
733
|
-
|
|
816
|
+
lmstudio: "Dense 27B Coder-MTP; configure MTP in LM Studio's per-model load settings."
|
|
734
817
|
thinking:
|
|
735
818
|
mechanism: none
|
|
736
819
|
guidance: |
|
|
@@ -812,8 +895,8 @@
|
|
|
812
895
|
gpuTiers:
|
|
813
896
|
"32gb": "Main-agent candidate for 32 GB and larger local systems when Gemma behavior is preferred."
|
|
814
897
|
runtimePreference:
|
|
815
|
-
|
|
816
|
-
openaiCompat: "
|
|
898
|
+
lmstudio: "Use for already-loaded LM Studio sessions and multimodal checks."
|
|
899
|
+
openaiCompat: "LM Studio chat uses this OpenAI-compatible surface."
|
|
817
900
|
llamaCpp: "OpenAI-compatible chat completions with --jinja, --reasoning on, and the matching mmproj."
|
|
818
901
|
llamaCpp:
|
|
819
902
|
ctxSize: 262144
|
|
@@ -862,8 +945,8 @@
|
|
|
862
945
|
gpuTiers:
|
|
863
946
|
"32gb": "Preferred local worker model when a text-only worker is enough."
|
|
864
947
|
runtimePreference:
|
|
865
|
-
|
|
866
|
-
openaiCompat: "
|
|
948
|
+
lmstudio: "Use when LM Studio's OpenAI-compatible tool extraction is verified for the loaded template."
|
|
949
|
+
openaiCompat: "Use for a generic gateway that fronts the same OpenAI-compatible chat surface."
|
|
867
950
|
anthropicCompat: "Do not select for the current llama.cpp target profile; /v1/messages returned 404 while /v1/models and OpenAI-compatible chat worked."
|
|
868
951
|
llamaCpp: "OpenAI-compatible chat completions with --jinja. Recommended local profile disables thinking in chat_template_kwargs."
|
|
869
952
|
llamaCpp:
|
|
@@ -922,8 +1005,8 @@
|
|
|
922
1005
|
gpuTiers:
|
|
923
1006
|
"32gb": "Distilled Opus-style reasoning at Qwen3.5 35B A3B scale. Use as a strong local main agent when GPU room is available."
|
|
924
1007
|
runtimePreference:
|
|
925
|
-
|
|
926
|
-
openaiCompat: "
|
|
1008
|
+
lmstudio: "Verified usable on LM Studio when loaded with the Qwen-style preset."
|
|
1009
|
+
openaiCompat: "LM Studio chat uses this OpenAI-compatible surface."
|
|
927
1010
|
llamaCpp: "OpenAI-compatible chat completions with --jinja. Match qwen3 reasoning parser flags upstream."
|
|
928
1011
|
thinking:
|
|
929
1012
|
mechanism: budget-tokens
|
|
@@ -973,8 +1056,8 @@
|
|
|
973
1056
|
gpuTiers:
|
|
974
1057
|
"16gb": "Use this as the local 16GB emulation target. It keeps the output cap below the 32GB-class MoE defaults."
|
|
975
1058
|
runtimePreference:
|
|
976
|
-
|
|
977
|
-
openaiCompat: "
|
|
1059
|
+
lmstudio: "Primary local laptop path. Verified through LM Studio /api/v1/models with 262144 loaded context, flash attention, GPU KV offload, and trained_for_tool_use."
|
|
1060
|
+
openaiCompat: "LM Studio chat uses this surface for reasoning and tool calls."
|
|
978
1061
|
anthropicCompat: "LM Studio's Anthropic Messages surface streams simple text with the server root URL as baseUrl; keep as a protocol fallback until tool and reasoning behavior are proven."
|
|
979
1062
|
thinking:
|
|
980
1063
|
# Measured 2026-08-11 against LM Studio on this exact model: baseline 56
|
|
@@ -990,4 +1073,4 @@
|
|
|
990
1073
|
Clio shows the level as forced. Output cap is tighter than the
|
|
991
1074
|
32GB-class MoE families because this is the 16GB emulation target;
|
|
992
1075
|
budget for a reasoning preamble ahead of every answer.
|
|
993
|
-
serving: "LM Studio reports trained_for_tool_use for the local qwopus3.5-9b-v3 target.
|
|
1076
|
+
serving: "LM Studio reports trained_for_tool_use for the local qwopus3.5-9b-v3 target. Configure residency through LM Studio or explicit lmstudio.load settings."
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import { join } from "node:path";
|
|
16
16
|
|
|
17
17
|
import { clioConfigDir } from "../../core/xdg.js";
|
|
18
|
+
import { activateExternalPluginApiBridge } from "../../engine/api-registry.js";
|
|
18
19
|
import type { RuntimeRegistry } from "./registry.js";
|
|
19
20
|
|
|
20
21
|
interface PluginSettings {
|
|
@@ -35,8 +36,9 @@ export async function loadPluginRuntimes(
|
|
|
35
36
|
const loaded: string[] = [];
|
|
36
37
|
|
|
37
38
|
const pluginDir = join(clioConfigDir(), "runtimes");
|
|
39
|
+
const packages = extractPluginPackages(settings);
|
|
38
40
|
try {
|
|
39
|
-
const ids = await registry.loadFromDir(pluginDir);
|
|
41
|
+
const ids = await registry.loadFromDir(pluginDir, activateExternalPluginApiBridge);
|
|
40
42
|
loaded.push(...ids);
|
|
41
43
|
} catch (err) {
|
|
42
44
|
process.stderr.write(
|
|
@@ -44,9 +46,9 @@ export async function loadPluginRuntimes(
|
|
|
44
46
|
);
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
for (const packageName of
|
|
49
|
+
for (const packageName of packages) {
|
|
48
50
|
try {
|
|
49
|
-
const ids = await registry.loadFromPackage(packageName);
|
|
51
|
+
const ids = await registry.loadFromPackage(packageName, activateExternalPluginApiBridge);
|
|
50
52
|
loaded.push(...ids);
|
|
51
53
|
} catch (err) {
|
|
52
54
|
process.stderr.write(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface NativeRuntimeFingerprint {
|
|
2
|
-
runtimeId: "lmstudio
|
|
2
|
+
runtimeId: "lmstudio" | "ollama-native";
|
|
3
3
|
displayName: string;
|
|
4
4
|
}
|
|
5
5
|
|
|
@@ -23,11 +23,31 @@ async function fetchWithTimeout(url: string, timeoutMs: number): Promise<Respons
|
|
|
23
23
|
* resident-model lifecycle.
|
|
24
24
|
*/
|
|
25
25
|
export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeRuntimeFingerprint | null> {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
26
|
+
const normalized = baseUrl.replace(/^ws:/u, "http:").replace(/^wss:/u, "https:");
|
|
27
|
+
const trimmed = normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
|
|
28
|
+
const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750);
|
|
29
|
+
if (greeting?.ok) {
|
|
30
|
+
try {
|
|
31
|
+
const data = (await greeting.json()) as { lmstudio?: unknown };
|
|
32
|
+
if (data.lmstudio === true) return { runtimeId: "lmstudio", displayName: "LM Studio" };
|
|
33
|
+
} catch {
|
|
34
|
+
// The exact JSON body is the fingerprint.
|
|
35
|
+
}
|
|
36
|
+
}
|
|
29
37
|
const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750);
|
|
30
|
-
if (lmStudioV0?.ok)
|
|
38
|
+
if (lmStudioV0?.ok) {
|
|
39
|
+
try {
|
|
40
|
+
const data = (await lmStudioV0.json()) as { data?: unknown };
|
|
41
|
+
if (
|
|
42
|
+
Array.isArray(data.data) &&
|
|
43
|
+
data.data.some((entry) => typeof entry === "object" && entry !== null && "compatibility_type" in entry)
|
|
44
|
+
) {
|
|
45
|
+
return { runtimeId: "lmstudio", displayName: "LM Studio" };
|
|
46
|
+
}
|
|
47
|
+
} catch {
|
|
48
|
+
// A malformed v0 body is not an LM Studio fingerprint.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
31
51
|
const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750);
|
|
32
52
|
if (ollama?.ok) {
|
|
33
53
|
try {
|
|
@@ -11,30 +11,36 @@ export interface RuntimeRegistry {
|
|
|
11
11
|
register(desc: RuntimeDescriptor): void;
|
|
12
12
|
get(id: string): RuntimeDescriptor | null;
|
|
13
13
|
list(): ReadonlyArray<RuntimeDescriptor>;
|
|
14
|
-
loadFromDir(dir: string): Promise<ReadonlyArray<string>>;
|
|
15
|
-
loadFromPackage(packageName: string): Promise<ReadonlyArray<string>>;
|
|
14
|
+
loadFromDir(dir: string, beforeImport?: () => Promise<void>): Promise<ReadonlyArray<string>>;
|
|
15
|
+
loadFromPackage(packageName: string, beforeImport?: () => Promise<void>): Promise<ReadonlyArray<string>>;
|
|
16
16
|
clear(): void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function createRuntimeRegistry(): RuntimeRegistry {
|
|
20
20
|
const byId = new Map<string, RuntimeDescriptor>();
|
|
21
|
+
const canonical = new Set<string>();
|
|
21
22
|
|
|
22
23
|
const register = (desc: RuntimeDescriptor): void => {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const ids = [desc.id, ...(desc.aliases ?? [])];
|
|
25
|
+
const conflict = ids.find((id) => byId.has(id));
|
|
26
|
+
if (conflict) {
|
|
27
|
+
throw new Error(`runtime id '${conflict}' already registered`);
|
|
25
28
|
}
|
|
26
|
-
byId.set(
|
|
29
|
+
for (const id of ids) byId.set(id, desc);
|
|
30
|
+
canonical.add(desc.id);
|
|
27
31
|
};
|
|
28
32
|
|
|
29
33
|
const get = (id: string): RuntimeDescriptor | null => byId.get(id) ?? null;
|
|
30
34
|
|
|
31
|
-
const list = (): ReadonlyArray<RuntimeDescriptor> =>
|
|
35
|
+
const list = (): ReadonlyArray<RuntimeDescriptor> =>
|
|
36
|
+
Array.from(canonical, (id) => byId.get(id)).filter((entry): entry is RuntimeDescriptor => entry !== undefined);
|
|
32
37
|
|
|
33
38
|
const clear = (): void => {
|
|
34
39
|
byId.clear();
|
|
40
|
+
canonical.clear();
|
|
35
41
|
};
|
|
36
42
|
|
|
37
|
-
const loadFromDir = async (dir: string): Promise<ReadonlyArray<string>> => {
|
|
43
|
+
const loadFromDir = async (dir: string, beforeImport?: () => Promise<void>): Promise<ReadonlyArray<string>> => {
|
|
38
44
|
let entries: string[];
|
|
39
45
|
try {
|
|
40
46
|
const stat = statSync(dir);
|
|
@@ -47,7 +53,7 @@ export function createRuntimeRegistry(): RuntimeRegistry {
|
|
|
47
53
|
for (const name of entries) {
|
|
48
54
|
if (!name.endsWith(".js")) continue;
|
|
49
55
|
const full = join(dir, name);
|
|
50
|
-
const desc = await importDescriptor(full, pathToFileURL(full).href);
|
|
56
|
+
const desc = await importDescriptor(full, pathToFileURL(full).href, beforeImport);
|
|
51
57
|
if (desc === null) continue;
|
|
52
58
|
try {
|
|
53
59
|
register(desc);
|
|
@@ -59,9 +65,13 @@ export function createRuntimeRegistry(): RuntimeRegistry {
|
|
|
59
65
|
return loaded;
|
|
60
66
|
};
|
|
61
67
|
|
|
62
|
-
const loadFromPackage = async (
|
|
68
|
+
const loadFromPackage = async (
|
|
69
|
+
packageName: string,
|
|
70
|
+
beforeImport?: () => Promise<void>,
|
|
71
|
+
): Promise<ReadonlyArray<string>> => {
|
|
63
72
|
let mod: unknown;
|
|
64
73
|
try {
|
|
74
|
+
await beforeImport?.();
|
|
65
75
|
mod = await import(packageName);
|
|
66
76
|
} catch (err) {
|
|
67
77
|
process.stderr.write(`[providers] runtime package ${packageName} failed to import: ${describeError(err)}\n`);
|
|
@@ -101,9 +111,14 @@ export function getRuntimeRegistry(): RuntimeRegistry {
|
|
|
101
111
|
return singleton;
|
|
102
112
|
}
|
|
103
113
|
|
|
104
|
-
async function importDescriptor(
|
|
114
|
+
async function importDescriptor(
|
|
115
|
+
file: string,
|
|
116
|
+
href: string,
|
|
117
|
+
beforeImport?: () => Promise<void>,
|
|
118
|
+
): Promise<RuntimeDescriptor | null> {
|
|
105
119
|
let mod: unknown;
|
|
106
120
|
try {
|
|
121
|
+
await beforeImport?.();
|
|
107
122
|
mod = await import(href);
|
|
108
123
|
} catch (err) {
|
|
109
124
|
process.stderr.write(`[providers] runtime plugin ${file} failed to import: ${describeError(err)}\n`);
|
|
@@ -130,6 +145,12 @@ function validateRuntimeDescriptor(value: unknown): RuntimeDescriptorValidation
|
|
|
130
145
|
if (typeof v.id !== "string" || v.id.trim().length === 0) {
|
|
131
146
|
return { ok: false, reason: "id must be a non-empty string" };
|
|
132
147
|
}
|
|
148
|
+
if (
|
|
149
|
+
v.aliases !== undefined &&
|
|
150
|
+
(!Array.isArray(v.aliases) || v.aliases.some((alias) => typeof alias !== "string" || alias.trim().length === 0))
|
|
151
|
+
) {
|
|
152
|
+
return { ok: false, reason: "aliases must be non-empty strings when present" };
|
|
153
|
+
}
|
|
133
154
|
if (typeof v.displayName !== "string" || v.displayName.trim().length === 0) {
|
|
134
155
|
return { ok: false, reason: "displayName must be a non-empty string" };
|
|
135
156
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-only runtime metadata used before the providers domain is hydrated.
|
|
3
|
+
*
|
|
4
|
+
* Keep this module data-only. Importing full runtime descriptors here pulls
|
|
5
|
+
* every probe, provider adapter, and completion implementation in front of the
|
|
6
|
+
* first interactive frame. `builtin-runtime-boot-manifest.test.ts` compares
|
|
7
|
+
* this projection with the canonical descriptors so the cheap copy cannot
|
|
8
|
+
* silently drift.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { RuntimeAuth, RuntimeKind, RuntimeTier } from "../types/runtime-descriptor.js";
|
|
12
|
+
|
|
13
|
+
export interface RuntimeBootMetadata {
|
|
14
|
+
id: string;
|
|
15
|
+
aliases?: ReadonlyArray<string>;
|
|
16
|
+
kind: RuntimeKind;
|
|
17
|
+
tier?: RuntimeTier;
|
|
18
|
+
auth: RuntimeAuth;
|
|
19
|
+
credentialsEnvVar?: string;
|
|
20
|
+
oauthProviderId?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const BUILTIN_RUNTIME_BOOT_MANIFEST: ReadonlyArray<RuntimeBootMetadata> = [
|
|
24
|
+
{ id: "alcf", kind: "http", tier: "cloud", auth: "oauth" },
|
|
25
|
+
{ id: "anthropic", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "ANTHROPIC_API_KEY" },
|
|
26
|
+
{ id: "anthropic-max", kind: "http", tier: "cloud", auth: "oauth", oauthProviderId: "anthropic" },
|
|
27
|
+
{ id: "bedrock", kind: "http", tier: "cloud", auth: "aws-sdk" },
|
|
28
|
+
{ id: "deepseek", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "DEEPSEEK_API_KEY" },
|
|
29
|
+
{ id: "google", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "GOOGLE_API_KEY" },
|
|
30
|
+
{ id: "groq", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "GROQ_API_KEY" },
|
|
31
|
+
{ id: "mistral", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "MISTRAL_API_KEY" },
|
|
32
|
+
{ id: "openai", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "OPENAI_API_KEY" },
|
|
33
|
+
{ id: "openai-codex", kind: "http", tier: "cloud", auth: "oauth" },
|
|
34
|
+
{ id: "openrouter", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "OPENROUTER_API_KEY" },
|
|
35
|
+
{ id: "lemonade-anthropic", kind: "http", tier: "local-native", auth: "api-key" },
|
|
36
|
+
{ id: "lemonade", kind: "http", tier: "local-native", auth: "api-key" },
|
|
37
|
+
{ id: "llamacpp", kind: "http", tier: "local-native", auth: "api-key" },
|
|
38
|
+
{ id: "llamacpp-anthropic", kind: "http", tier: "local-native", auth: "api-key" },
|
|
39
|
+
{ id: "llamacpp-completion", kind: "http", tier: "local-native", auth: "api-key" },
|
|
40
|
+
{ id: "llamacpp-embed", kind: "http", tier: "local-native", auth: "api-key" },
|
|
41
|
+
{ id: "llamacpp-rerank", kind: "http", tier: "local-native", auth: "api-key" },
|
|
42
|
+
{ id: "lmstudio", aliases: ["lmstudio-native"], kind: "http", tier: "local-native", auth: "api-key" },
|
|
43
|
+
{ id: "ollama-native", kind: "http", tier: "local-native", auth: "none" },
|
|
44
|
+
{ id: "anthropic-compat", kind: "http", tier: "protocol", auth: "api-key" },
|
|
45
|
+
{ id: "openai-compat", kind: "http", tier: "protocol", auth: "api-key" },
|
|
46
|
+
{ id: "sglang", kind: "http", tier: "local-native", auth: "api-key" },
|
|
47
|
+
{ id: "vllm", kind: "http", tier: "local-native", auth: "api-key" },
|
|
48
|
+
{ id: "claude-code", kind: "subprocess", tier: "subscription", auth: "claude-cli" },
|
|
49
|
+
{ id: "claude-sdk", kind: "sdk", tier: "subscription", auth: "claude-cli" },
|
|
50
|
+
{ id: "antigravity-code", kind: "subprocess", tier: "subscription", auth: "none" },
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
export function findBuiltinRuntimeBootMetadata(id: string): RuntimeBootMetadata | null {
|
|
54
|
+
return BUILTIN_RUNTIME_BOOT_MANIFEST.find((runtime) => runtime.id === id || runtime.aliases?.includes(id)) ?? null;
|
|
55
|
+
}
|
|
@@ -31,7 +31,7 @@ import llamacppAnthropic from "./local-native/llamacpp-anthropic.js";
|
|
|
31
31
|
import llamacppCompletion from "./local-native/llamacpp-completion.js";
|
|
32
32
|
import llamacppEmbed from "./local-native/llamacpp-embed.js";
|
|
33
33
|
import llamacppRerank from "./local-native/llamacpp-rerank.js";
|
|
34
|
-
import
|
|
34
|
+
import lmstudio from "./local-native/lmstudio.js";
|
|
35
35
|
import ollamaNative from "./local-native/ollama-native.js";
|
|
36
36
|
import sglang from "./local-native/sglang.js";
|
|
37
37
|
import vllm from "./local-native/vllm.js";
|
|
@@ -57,7 +57,7 @@ const BUILTIN_RUNTIMES: ReadonlyArray<RuntimeDescriptor> = [
|
|
|
57
57
|
llamacppCompletion,
|
|
58
58
|
llamacppEmbed,
|
|
59
59
|
llamacppRerank,
|
|
60
|
-
|
|
60
|
+
lmstudio,
|
|
61
61
|
ollamaNative,
|
|
62
62
|
anthropicCompat,
|
|
63
63
|
openaiCompat,
|