@iowarp/clio-coder 0.3.0 → 0.3.1
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 +33 -0
- package/README.md +50 -53
- package/dist/acp-FPR54DGL.js +138 -0
- package/dist/{agents-Q4MYPMUW.js → agents-OGPIHPJH.js} +33 -25
- package/dist/assets/codewiki.json +1 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/LICENSE +21 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/cgmanifest.json +16 -0
- package/dist/assets/grammars/notices/tree-sitter-wasms/LICENSE +24 -0
- package/dist/assets/grammars/tree-sitter-c-sharp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-c.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-cpp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-go.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-java.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-python.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-ruby.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter.wasm +0 -0
- package/dist/{auth-O6HYIJ6J.js → auth-IC3K6NIZ.js} +22 -15
- package/dist/{chunk-KKKPTZLM.js → chunk-2STGEDFV.js} +8 -1
- package/dist/chunk-3I7MS7N2.js +40 -0
- package/dist/chunk-3R73A4XB.js +69 -0
- package/dist/{chunk-26BZQOAD.js → chunk-474KN5II.js} +86 -115
- package/dist/{chunk-NI4DEJMC.js → chunk-4QKXUHSR.js} +26 -3
- package/dist/{chunk-X3BR7HWV.js → chunk-5WIGXA4T.js} +7 -1
- package/dist/{chunk-TFSSEXL6.js → chunk-673JJUWJ.js} +14 -4
- package/dist/{chunk-GNGDQYDU.js → chunk-7SS2CTV2.js} +27922 -1249
- package/dist/{chunk-7RBKDI66.js → chunk-ASND7OZK.js} +104 -12
- package/dist/{chunk-X3NE4WVW.js → chunk-BNAZZHFG.js} +7 -1
- package/dist/{chunk-RQDWMVRB.js → chunk-BSU2YIWB.js} +9 -3
- package/dist/{chunk-CLJ5HLUD.js → chunk-C4PTHK7P.js} +24 -5
- package/dist/{chunk-QV47YRF4.js → chunk-CGKSTWHD.js} +7 -1
- package/dist/{chunk-BYEU76JP.js → chunk-DKGKUHFA.js} +34 -9
- package/dist/chunk-EYOKLTMF.js +170 -0
- package/dist/{chunk-PS4PFJQP.js → chunk-FCIH3BIZ.js} +15258 -14130
- package/dist/{chunk-2J63S4SF.js → chunk-FST4FYJB.js} +82 -14
- package/dist/{chunk-3DANZDGR.js → chunk-G34LV2PF.js} +34 -9
- package/dist/{chunk-BBUH4VAA.js → chunk-GAEBEQVI.js} +34 -21
- package/dist/chunk-GB6QRBXN.js +8543 -0
- package/dist/chunk-GEP36Y4X.js +12796 -0
- package/dist/{chunk-TKHQ4DGZ.js → chunk-H6F6BYOH.js} +496 -121
- package/dist/{chunk-UGYAX5YI.js → chunk-HQQID6OA.js} +10 -5
- package/dist/chunk-IHXBNWMM.js +137 -0
- package/dist/{chunk-ME6DNWIU.js → chunk-IS3ONKU3.js} +7 -1
- package/dist/{chunk-DXQNI4PC.js → chunk-IWHMRKLL.js} +8 -1
- package/dist/chunk-K2ITRMHZ.js +642 -0
- package/dist/{chunk-KBR4MZZR.js → chunk-K5XEMXTI.js} +7 -1
- package/dist/{chunk-AMFR5YA3.js → chunk-KKNLWXI6.js} +24 -10
- package/dist/{chunk-JWHCJDCI.js → chunk-KY56HMHH.js} +145 -61
- package/dist/{chunk-E3NYWENM.js → chunk-LU4TK2PR.js} +52 -7
- package/dist/{chunk-UWIJNAOB.js → chunk-M5T5VO65.js} +109 -42
- package/dist/{chunk-JPOWPFCU.js → chunk-MAR7Y6HW.js} +38 -16
- package/dist/chunk-N6F52NLF.js +6951 -0
- package/dist/{chunk-UHTSULZS.js → chunk-NMOX6HFD.js} +20 -7
- package/dist/{chunk-WD6AJM35.js → chunk-OLBBMFRD.js} +30 -13
- package/dist/{chunk-VOO7NYPP.js → chunk-PFEFKVGL.js} +22 -6
- package/dist/{chunk-6CWDTGUC.js → chunk-PIUMUEMV.js} +7 -1
- package/dist/chunk-PV4JUBVJ.js +462 -0
- package/dist/{chunk-527KG6XR.js → chunk-Q3RUPKEJ.js} +22 -4
- package/dist/{chunk-D5YD55AR.js → chunk-Q5WJOSJ7.js} +11 -1
- package/dist/{chunk-5N2FG33Q.js → chunk-R346GLFC.js} +7 -1
- package/dist/{chunk-4UQA7NCT.js → chunk-R5KLMSBV.js} +7 -2
- package/dist/{chunk-PIDUD6M2.js → chunk-RDLVBZEO.js} +11 -6
- package/dist/{chunk-O4EJEDHO.js → chunk-RPTR2H26.js} +40 -31
- package/dist/{chunk-HBU5MTAM.js → chunk-SVNXH4L2.js} +7 -1
- package/dist/{chunk-XNISANGE.js → chunk-TEKV33Q5.js} +122 -57
- package/dist/chunk-TXOTCRLG.js +15 -0
- package/dist/{chunk-VPAWTYLY.js → chunk-WEPFGWHJ.js} +7 -1
- package/dist/{chunk-HMYNFFY4.js → chunk-XPLRXC72.js} +7 -2
- package/dist/{chunk-UU3R62TT.js → chunk-XYWBQRDM.js} +13 -4
- package/dist/{chunk-7BHLZB3A.js → chunk-ZPY3JZ5E.js} +32 -10
- package/dist/cli/index.js +39 -33
- package/dist/clio-BZVGEUFJ.js +58 -0
- package/dist/{components-JVHMUBEB.js → components-DMAOEKFB.js} +26 -9
- package/dist/{config-ZFCDBMDC.js → config-IRUQ7SE4.js} +42 -31
- package/dist/configure-S7S6F6CL.js +32 -0
- package/dist/{context-CDXTP2MP.js → context-3KWFLHJG.js} +17 -11
- package/dist/{context-E3KIFVXI.js → context-5RADCKTR.js} +33 -28
- package/dist/{context-clear-3F4PLXOS.js → context-clear-7TSNPAAI.js} +36 -28
- package/dist/{context-index-Q7YSYTR3.js → context-index-W4RLWOQH.js} +10 -4
- package/dist/{docs-YIETIWZI.js → docs-5AWSPS37.js} +16 -10
- package/dist/doctor-UC5NAJYQ.js +77 -0
- package/dist/{eval-B3KZZESM.js → eval-U6TJHRLX.js} +77 -24
- package/dist/{evidence-V67CHM35.js → evidence-YEGUW4L3.js} +34 -26
- package/dist/{evolve-YDZSUQYA.js → evolve-TXARCTPG.js} +39 -26
- package/dist/{extensions-SRG7XCAH.js → extensions-OZFJ3A3G.js} +13 -7
- package/dist/{fleet-CA2CRTVG.js → fleet-6G3DHNYE.js} +45 -37
- package/dist/fleet-preflight-DSNT37JK.js +23 -0
- package/dist/{init-2OZDJE2D.js → init-KZ5QTF6M.js} +42 -34
- package/dist/{memory-3PIQQAKX.js → memory-73ESV5YC.js} +35 -27
- package/dist/{models-DY35XI7Y.js → models-A4PVNWJK.js} +34 -23
- package/dist/{paths-5OMXW7Z4.js → paths-C4H6IV77.js} +12 -6
- package/dist/preload-6WVMHX3A.js +13 -0
- package/dist/{reset-PIFYNOS3.js → reset-BGW6OGMV.js} +17 -11
- package/dist/{run-3VSPP24F.js → run-YTPEYQOH.js} +60 -48
- package/dist/{share-D36RQCXM.js → share-YIFFV4NQ.js} +16 -10
- package/dist/{skills-F2MRLELY.js → skills-2V6RA3OQ.js} +18 -11
- package/dist/{skills-eval-E2ZTW4PL.js → skills-eval-S2TVJO4F.js} +45 -36
- package/dist/{targets-DZMEZAH4.js → targets-TYXLPB23.js} +61 -59
- package/dist/{trace-7NYCUI2J.js → trace-GGOJ6Q6Z.js} +9 -3
- package/dist/{uninstall-AD3JWHBB.js → uninstall-LLLT4F4W.js} +14 -8
- package/dist/{upgrade-WYYBKGDY.js → upgrade-33G2LMM5.js} +45 -23
- package/dist/{usage-ULIDAGFF.js → usage-ZAFSXKKG.js} +35 -27
- package/dist/version-KGEG7EPO.js +21 -0
- package/dist/{wiki-generate-PKFIX6OB.js → wiki-generate-NUQCVOQ3.js} +55 -45
- package/dist/worker/entry.js +101 -43
- package/docs/README.md +12 -9
- package/docs/acp.md +28 -5
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +23 -2
- package/docs/artifact-placement.md +101 -0
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +4 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +125 -41
- package/docs/configuration-and-targets.md +88 -18
- package/docs/context-engine.md +6 -2
- package/docs/development-pipeline.md +77 -0
- package/docs/documentation-coverage.md +4 -4
- package/docs/documentation-guide.md +3 -3
- package/docs/environment-variables.md +2 -1
- package/docs/eval-runner.md +3 -3
- package/docs/evals-internal.md +2 -2
- package/docs/evidence-and-memory.md +6 -2
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +1 -1
- package/docs/extensions-and-sharing.md +18 -11
- package/docs/fleet-demo-runbook.md +22 -23
- package/docs/fleet-dispatch.md +111 -12
- package/docs/glossary.md +107 -15
- package/docs/html/agents_blueprint.html +3 -3
- package/docs/html/alcf_blueprint.html +3 -3
- package/docs/html/architecture_blueprint.html +3 -3
- package/docs/html/commands_blueprint.html +187 -42
- package/docs/html/configuration_blueprint.html +7 -7
- package/docs/html/context_blueprint.html +3 -3
- package/docs/html/documentation_blueprint.html +1 -1
- package/docs/html/environment_blueprint.html +3 -3
- package/docs/html/eval_blueprint.html +4 -4
- package/docs/html/evals_internal_blueprint.html +3 -3
- package/docs/html/evolution_blueprint.html +3 -3
- package/docs/html/extensions_blueprint.html +3 -3
- package/docs/html/fleet_dispatch_blueprint.html +8 -8
- package/docs/html/index.html +5 -5
- package/docs/html/lifecycle_blueprint.html +4 -4
- package/docs/html/memory_blueprint.html +3 -3
- package/docs/html/middleware_blueprint.html +3 -3
- package/docs/html/models_blueprint.html +2 -2
- package/docs/html/observability_blueprint.html +2 -2
- package/docs/html/provider_adapter_blueprint.html +3 -3
- package/docs/html/safety_blueprint.html +3 -3
- package/docs/html/skills_blueprint.html +2 -2
- package/docs/html/soak_blueprint.html +3 -3
- package/docs/html/tool_usage_blueprint.html +4 -4
- package/docs/html/tools_blueprint.html +2 -2
- package/docs/html/trace_blueprint.html +3 -3
- package/docs/html/tui_design_blueprint.html +100 -40
- package/docs/html/validation_blueprint.html +1 -1
- package/docs/html/worker_dispatch_blueprint.html +3 -3
- package/docs/installation-and-lifecycle.md +62 -11
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +2 -2
- package/docs/observability.md +3 -3
- package/docs/proactive-memory.md +12 -12
- package/docs/prompt-envelope-and-tools.md +2 -2
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +4 -0
- package/docs/safety-model.md +21 -5
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +2 -2
- package/docs/skills-marketplace.md +1 -1
- package/docs/time-conventions.md +101 -0
- package/docs/tool-usage.md +5 -4
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +83 -27
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +16 -16
- package/skills/README.md +5 -6
- package/skills/git/file-ticket/SKILL.md +107 -0
- package/skills/git/file-ticket/evals.md +54 -0
- package/skills/git/fix-issue/SKILL.md +106 -0
- package/skills/git/fix-issue/evals.md +71 -0
- package/skills/git/ship/SKILL.md +92 -0
- package/skills/git/ship/evals.md +72 -0
- package/skills/skill-marketplace.json +12 -20
- package/src/cli/acp.ts +88 -0
- package/src/cli/agents.ts +60 -0
- package/src/cli/args.ts +280 -0
- package/src/cli/argv.ts +170 -0
- package/src/cli/ask.ts +34 -0
- package/src/cli/auth.ts +468 -0
- package/src/cli/bootstrap-generate.ts +498 -0
- package/src/cli/clio.ts +34 -0
- package/src/cli/components.ts +195 -0
- package/src/cli/config-inspect.ts +330 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/configure-interop.ts +67 -0
- package/src/cli/configure-layout.ts +172 -0
- package/src/cli/configure.ts +1487 -0
- package/src/cli/context-clear.ts +76 -0
- package/src/cli/context-index.ts +102 -0
- package/src/cli/context.ts +316 -0
- package/src/cli/default-target.ts +63 -0
- package/src/cli/docs.ts +340 -0
- package/src/cli/doctor.ts +54 -0
- package/src/cli/eval.ts +315 -0
- package/src/cli/evidence.ts +222 -0
- package/src/cli/evolve.ts +219 -0
- package/src/cli/extensions.ts +205 -0
- package/src/cli/fleet.ts +827 -0
- package/src/cli/index.ts +309 -0
- package/src/cli/init.ts +219 -0
- package/src/cli/initial-message.ts +47 -0
- package/src/cli/internal-dispatch.ts +55 -0
- package/src/cli/memory.ts +180 -0
- package/src/cli/models.ts +257 -0
- package/src/cli/modes/json-stream.ts +85 -0
- package/src/cli/modes/jsonl.ts +9 -0
- package/src/cli/modes/print.ts +589 -0
- package/src/cli/oauth-manual-input.ts +72 -0
- package/src/cli/oauth-select.ts +36 -0
- package/src/cli/output-guard.ts +48 -0
- package/src/cli/paths.ts +44 -0
- package/src/cli/provider-target.ts +113 -0
- package/src/cli/removal.ts +72 -0
- package/src/cli/reset.ts +253 -0
- package/src/cli/run.ts +497 -0
- package/src/cli/share.ts +243 -0
- package/src/cli/shared.ts +60 -0
- package/src/cli/skills-eval.ts +1225 -0
- package/src/cli/skills.ts +470 -0
- package/src/cli/steer-channel.ts +86 -0
- package/src/cli/targets.ts +1150 -0
- package/src/cli/text-layout.ts +102 -0
- package/src/cli/trace.ts +274 -0
- package/src/cli/uninstall.ts +405 -0
- package/src/cli/upgrade.ts +270 -0
- package/src/cli/usage.ts +869 -0
- package/src/cli/validate-model.ts +28 -0
- package/src/cli/version.ts +7 -0
- package/src/cli/wiki-generate.ts +509 -0
- package/src/core/artifact-paths.ts +43 -0
- package/src/core/bash-exec.ts +242 -0
- package/src/core/boot-trace.ts +37 -0
- package/src/core/bus-events.ts +728 -0
- package/src/core/bus-trace.ts +53 -0
- package/src/core/c-header-language.ts +265 -0
- package/src/core/clio-repo.ts +78 -0
- package/src/core/config.ts +1593 -0
- package/src/core/context-floor.ts +33 -0
- package/src/core/defaults.ts +625 -0
- package/src/core/domain-loader.ts +170 -0
- package/src/core/event-bus.ts +94 -0
- package/src/core/file-references.ts +282 -0
- package/src/core/guardrails.ts +185 -0
- package/src/core/headless-permission.ts +21 -0
- package/src/core/init.ts +223 -0
- package/src/core/json-payload.ts +58 -0
- package/src/core/package-root.ts +54 -0
- package/src/core/path-canonical.ts +37 -0
- package/src/core/process-identity.ts +41 -0
- package/src/core/recent-models.ts +91 -0
- package/src/core/release.ts +2 -0
- package/src/core/residency-protection.ts +56 -0
- package/src/core/resolve-config-value.ts +88 -0
- package/src/core/response-schema.ts +279 -0
- package/src/core/run-overrides.ts +77 -0
- package/src/core/safe-exec.ts +193 -0
- package/src/core/safe-id.ts +37 -0
- package/src/core/safe-resource-write.ts +162 -0
- package/src/core/session-routing.ts +339 -0
- package/src/core/settings-layers.ts +220 -0
- package/src/core/shared-bus.ts +8 -0
- package/src/core/shell-quote.ts +26 -0
- package/src/core/skill-activation.ts +190 -0
- package/src/core/startup-timer.ts +37 -0
- package/src/core/state-file-lock.ts +207 -0
- package/src/core/termination.ts +202 -0
- package/src/core/timers.ts +38 -0
- package/src/core/tool-names.ts +65 -0
- package/src/core/verification-scripts.ts +13 -0
- package/src/core/workspace-files.ts +492 -0
- package/src/core/xdg.ts +177 -0
- package/src/domains/agents/builtins/architect.md +4 -4
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +3 -3
- 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 +1 -1
- package/src/domains/agents/builtins/verifier.md +1 -1
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +172 -0
- package/src/domains/agents/contract.ts +16 -0
- package/src/domains/agents/extension.ts +110 -0
- package/src/domains/agents/fleet-commands.ts +154 -0
- package/src/domains/agents/fleet-contract.ts +797 -0
- package/src/domains/agents/frontmatter.ts +40 -0
- package/src/domains/agents/index.ts +102 -0
- package/src/domains/agents/manifest.ts +6 -0
- package/src/domains/agents/recipe-schema.ts +202 -0
- package/src/domains/agents/recipe.ts +125 -0
- package/src/domains/agents/registry.ts +111 -0
- package/src/domains/agents/result-contract.ts +1265 -0
- package/src/domains/agents/spec.ts +371 -0
- package/src/domains/agents/write-boundary.ts +109 -0
- package/src/domains/components/diff.ts +99 -0
- package/src/domains/components/hash.ts +21 -0
- package/src/domains/components/index.ts +3 -0
- package/src/domains/components/scan.ts +304 -0
- package/src/domains/components/snapshot.ts +108 -0
- package/src/domains/components/types.ts +82 -0
- package/src/domains/config/agent-namespace.ts +13 -0
- package/src/domains/config/classify.ts +94 -0
- package/src/domains/config/contract.ts +22 -0
- package/src/domains/config/extension.ts +136 -0
- package/src/domains/config/index.ts +13 -0
- package/src/domains/config/keybindings.ts +164 -0
- package/src/domains/config/manifest.ts +6 -0
- package/src/domains/config/watcher.ts +41 -0
- package/src/domains/context/adoption.ts +880 -0
- package/src/domains/context/bootstrap-prompt.ts +273 -0
- package/src/domains/context/bootstrap.ts +1409 -0
- package/src/domains/context/clear.ts +86 -0
- package/src/domains/context/clio-md.ts +327 -0
- package/src/domains/context/codewiki/cmake.ts +356 -0
- package/src/domains/context/codewiki/cooperative.ts +46 -0
- package/src/domains/context/codewiki/digest.ts +135 -0
- package/src/domains/context/codewiki/grammar-assets.ts +33 -0
- package/src/domains/context/codewiki/indexer.ts +1614 -0
- package/src/domains/context/codewiki/tree-sitter.ts +771 -0
- package/src/domains/context/contract.ts +62 -0
- package/src/domains/context/excluded-dirs.ts +1 -0
- package/src/domains/context/extension.ts +407 -0
- package/src/domains/context/fingerprint.ts +196 -0
- package/src/domains/context/index.ts +164 -0
- package/src/domains/context/init-options.ts +69 -0
- package/src/domains/context/manifest.ts +6 -0
- package/src/domains/context/operator-profile.ts +157 -0
- package/src/domains/context/project-metadata.ts +510 -0
- package/src/domains/context/project-rules.ts +227 -0
- package/src/domains/context/prompt-context.ts +62 -0
- package/src/domains/context/refresh.ts +170 -0
- package/src/domains/context/sibling-files.ts +10 -0
- package/src/domains/context/state.ts +237 -0
- package/src/domains/context/wiki/assemble.ts +303 -0
- package/src/domains/context/wiki/frontmatter.ts +210 -0
- package/src/domains/context/wiki/generate.ts +590 -0
- package/src/domains/context/wiki/layout.ts +111 -0
- package/src/domains/context/wiki/meta.ts +221 -0
- package/src/domains/context/wiki/plan-store.ts +217 -0
- package/src/domains/context/wiki/plan.ts +250 -0
- package/src/domains/context/wiki/prompts.ts +270 -0
- package/src/domains/context/wiki/staleness.ts +198 -0
- package/src/domains/dispatch/active-route-planner.ts +168 -0
- package/src/domains/dispatch/admission-queue.ts +150 -0
- package/src/domains/dispatch/admission.ts +334 -0
- package/src/domains/dispatch/agent-candidates.ts +307 -0
- package/src/domains/dispatch/agent-ledger-hub.ts +71 -0
- package/src/domains/dispatch/agent-ledger-store.ts +257 -0
- package/src/domains/dispatch/agent-ledger.ts +212 -0
- package/src/domains/dispatch/agent-plan-adapter.ts +85 -0
- package/src/domains/dispatch/assignment-events.ts +132 -0
- package/src/domains/dispatch/assignment-reconcile.ts +76 -0
- package/src/domains/dispatch/assignment-store.ts +162 -0
- package/src/domains/dispatch/assignment.ts +278 -0
- package/src/domains/dispatch/backoff.ts +59 -0
- package/src/domains/dispatch/batch-store.ts +134 -0
- package/src/domains/dispatch/batch-tracker.ts +66 -0
- package/src/domains/dispatch/capability-match.ts +155 -0
- package/src/domains/dispatch/capacity-lease.ts +413 -0
- package/src/domains/dispatch/code-step-store.ts +52 -0
- package/src/domains/dispatch/code-step.ts +368 -0
- package/src/domains/dispatch/contract.ts +278 -0
- package/src/domains/dispatch/dedup.ts +133 -0
- package/src/domains/dispatch/event-pump.ts +251 -0
- package/src/domains/dispatch/execution-handoff.ts +29 -0
- package/src/domains/dispatch/execution-plan.ts +328 -0
- package/src/domains/dispatch/execution-role.ts +277 -0
- package/src/domains/dispatch/execution-scheduler.ts +583 -0
- package/src/domains/dispatch/extension.ts +5869 -0
- package/src/domains/dispatch/failure-classification.ts +141 -0
- package/src/domains/dispatch/fleet-plan.ts +225 -0
- package/src/domains/dispatch/fleet-preflight.ts +394 -0
- package/src/domains/dispatch/gate-decisions.ts +1040 -0
- package/src/domains/dispatch/gate-role-prompts.ts +58 -0
- package/src/domains/dispatch/heartbeat.ts +27 -0
- package/src/domains/dispatch/index.ts +137 -0
- package/src/domains/dispatch/joint-route-adapter.ts +114 -0
- package/src/domains/dispatch/joint-route-resolver.ts +283 -0
- package/src/domains/dispatch/manifest.ts +6 -0
- package/src/domains/dispatch/orphan-recovery.ts +224 -0
- package/src/domains/dispatch/outcome.ts +109 -0
- package/src/domains/dispatch/phase-timing.ts +47 -0
- package/src/domains/dispatch/placement.ts +202 -0
- package/src/domains/dispatch/receipt-findings.ts +255 -0
- package/src/domains/dispatch/receipt-integrity.ts +378 -0
- package/src/domains/dispatch/recovery-candidates.ts +74 -0
- package/src/domains/dispatch/reproducibility.ts +48 -0
- package/src/domains/dispatch/reservation-store.ts +501 -0
- package/src/domains/dispatch/route-approval.ts +177 -0
- package/src/domains/dispatch/route-candidates.ts +57 -0
- package/src/domains/dispatch/route-decision.ts +1079 -0
- package/src/domains/dispatch/route-facts.ts +187 -0
- package/src/domains/dispatch/route-history.ts +238 -0
- package/src/domains/dispatch/route-observer.ts +488 -0
- package/src/domains/dispatch/route-policy.ts +327 -0
- package/src/domains/dispatch/route-quality.ts +256 -0
- package/src/domains/dispatch/route-readiness.ts +120 -0
- package/src/domains/dispatch/routing-intent.ts +287 -0
- package/src/domains/dispatch/run-identity.ts +56 -0
- package/src/domains/dispatch/scout-transition.ts +130 -0
- package/src/domains/dispatch/state.ts +277 -0
- package/src/domains/dispatch/tool-stats.ts +132 -0
- package/src/domains/dispatch/transport.ts +209 -0
- package/src/domains/dispatch/types.ts +785 -0
- package/src/domains/dispatch/validation-grounding.ts +154 -0
- package/src/domains/dispatch/validation.ts +721 -0
- package/src/domains/dispatch/worker-protocol.ts +275 -0
- package/src/domains/dispatch/worker-spawn.ts +566 -0
- package/src/domains/dispatch/write-boundary-enforcer.ts +97 -0
- package/src/domains/dispatch/write-boundary.ts +426 -0
- package/src/domains/eval/artifacts/redact.ts +42 -0
- package/src/domains/eval/artifacts/store.ts +173 -0
- package/src/domains/eval/compare/compare.ts +33 -0
- package/src/domains/eval/compare/gates.ts +66 -0
- package/src/domains/eval/compare/thresholds.ts +92 -0
- package/src/domains/eval/harness-metrics.ts +62 -0
- package/src/domains/eval/index.ts +66 -0
- package/src/domains/eval/metrics/chaos-stream.ts +93 -0
- package/src/domains/eval/metrics/context.ts +34 -0
- package/src/domains/eval/metrics/coverage.ts +21 -0
- package/src/domains/eval/metrics/evidence.ts +182 -0
- package/src/domains/eval/metrics/fleet-loop-stream.ts +196 -0
- package/src/domains/eval/metrics/invariants.ts +736 -0
- package/src/domains/eval/metrics/latency.ts +4 -0
- package/src/domains/eval/metrics/token-stream.ts +139 -0
- package/src/domains/eval/metrics/tokens.ts +51 -0
- package/src/domains/eval/metrics/tool-calls.ts +7 -0
- package/src/domains/eval/proactive-memory.ts +279 -0
- package/src/domains/eval/provenance.ts +35 -0
- package/src/domains/eval/report.ts +234 -0
- package/src/domains/eval/reports/json.ts +5 -0
- package/src/domains/eval/reports/junit.ts +23 -0
- package/src/domains/eval/reports/markdown.ts +20 -0
- package/src/domains/eval/reports/swe-jsonl.ts +16 -0
- package/src/domains/eval/reports/text.ts +25 -0
- package/src/domains/eval/run-compare.ts +274 -0
- package/src/domains/eval/runner.ts +244 -0
- package/src/domains/eval/runners/clio-run.ts +148 -0
- package/src/domains/eval/runners/context-index.ts +56 -0
- package/src/domains/eval/runners/context-init.ts +203 -0
- package/src/domains/eval/runners/external-command.ts +350 -0
- package/src/domains/eval/runtime-paths.ts +171 -0
- package/src/domains/eval/schema/artifact.ts +75 -0
- package/src/domains/eval/schema/suite.ts +235 -0
- package/src/domains/eval/schema/validate.ts +339 -0
- package/src/domains/eval/store.ts +392 -0
- package/src/domains/eval/suites/load.ts +74 -0
- package/src/domains/eval/suites/matrix.ts +19 -0
- package/src/domains/eval/suites/resolve.ts +44 -0
- package/src/domains/eval/suites/run.ts +325 -0
- package/src/domains/eval/task-file.ts +186 -0
- package/src/domains/eval/types.ts +141 -0
- package/src/domains/eval/verifiers/command.ts +27 -0
- package/src/domains/eval/verifiers/file-exists.ts +6 -0
- package/src/domains/eval/verifiers/patch.ts +22 -0
- package/src/domains/eval/workspaces/git.ts +41 -0
- package/src/domains/eval/workspaces/local.ts +17 -0
- package/src/domains/eval/workspaces/temp-copy.ts +29 -0
- package/src/domains/evidence/build.ts +1714 -0
- package/src/domains/evidence/eval.ts +605 -0
- package/src/domains/evidence/failure-attribution.ts +54 -0
- package/src/domains/evidence/finish-contract-map.ts +42 -0
- package/src/domains/evidence/index.ts +55 -0
- package/src/domains/evidence/provenance.ts +200 -0
- package/src/domains/evidence/redact.ts +81 -0
- package/src/domains/evidence/store.ts +291 -0
- package/src/domains/evidence/types.ts +325 -0
- package/src/domains/evolution/SELF_EDIT_GATE.md +91 -0
- package/src/domains/evolution/index.ts +26 -0
- package/src/domains/evolution/manifest.ts +154 -0
- package/src/domains/evolution/validate.ts +304 -0
- package/src/domains/extensions/contract.ts +22 -0
- package/src/domains/extensions/discovery.ts +193 -0
- package/src/domains/extensions/extension.ts +46 -0
- package/src/domains/extensions/index.ts +34 -0
- package/src/domains/extensions/manager.ts +30 -0
- package/src/domains/extensions/manifest.ts +6 -0
- package/src/domains/extensions/resources.ts +38 -0
- package/src/domains/extensions/state.ts +224 -0
- package/src/domains/extensions/types.ts +83 -0
- package/src/domains/interop/consent.ts +185 -0
- package/src/domains/interop/contract.ts +29 -0
- package/src/domains/interop/detect.ts +173 -0
- package/src/domains/interop/extension.ts +59 -0
- package/src/domains/interop/index.ts +34 -0
- package/src/domains/interop/manifest.ts +6 -0
- package/src/domains/interop/registry.ts +139 -0
- package/src/domains/interop/state.ts +92 -0
- package/src/domains/interop/types.ts +109 -0
- package/src/domains/lifecycle/contract.ts +11 -0
- package/src/domains/lifecycle/doctor.ts +536 -0
- package/src/domains/lifecycle/extension.ts +23 -0
- package/src/domains/lifecycle/index.ts +21 -0
- package/src/domains/lifecycle/install-method.ts +51 -0
- package/src/domains/lifecycle/manifest.ts +6 -0
- package/src/domains/lifecycle/migrations/index.ts +94 -0
- package/src/domains/lifecycle/state.ts +93 -0
- package/src/domains/lifecycle/upgrade-notice.ts +35 -0
- package/src/domains/lifecycle/version.ts +35 -0
- package/src/domains/memory/index.ts +128 -0
- package/src/domains/memory/operations.ts +143 -0
- package/src/domains/memory/prompt-section.ts +86 -0
- package/src/domains/memory/proposal.ts +180 -0
- package/src/domains/memory/store.ts +163 -0
- package/src/domains/memory/task-bank.ts +229 -0
- package/src/domains/memory/task-memory-handoff.ts +222 -0
- package/src/domains/memory/task-memory-policy.ts +602 -0
- package/src/domains/memory/task-memory-status.ts +58 -0
- package/src/domains/memory/task-memory-telemetry.ts +346 -0
- package/src/domains/memory/task-memory-trace.ts +89 -0
- package/src/domains/memory/types.ts +74 -0
- package/src/domains/memory/validate.ts +297 -0
- package/src/domains/middleware/budget.ts +216 -0
- package/src/domains/middleware/contract.ts +35 -0
- package/src/domains/middleware/dispatch-nudge.ts +469 -0
- package/src/domains/middleware/extension.ts +129 -0
- package/src/domains/middleware/hook-receipts.ts +70 -0
- package/src/domains/middleware/hooks-io.ts +174 -0
- package/src/domains/middleware/hooks.ts +432 -0
- package/src/domains/middleware/index.ts +154 -0
- package/src/domains/middleware/manifest.ts +6 -0
- package/src/domains/middleware/memory-intervention.ts +701 -0
- package/src/domains/middleware/rules.ts +42 -0
- package/src/domains/middleware/runtime.ts +333 -0
- package/src/domains/middleware/skills-reminder.ts +187 -0
- package/src/domains/middleware/snapshot.ts +71 -0
- package/src/domains/middleware/stalled-turn.ts +71 -0
- package/src/domains/middleware/task-board-reminder.ts +87 -0
- package/src/domains/middleware/task-nudge.ts +77 -0
- package/src/domains/middleware/tool-choice-control.ts +42 -0
- package/src/domains/middleware/types.ts +131 -0
- package/src/domains/middleware/validate.ts +329 -0
- package/src/domains/observability/accountability.ts +67 -0
- package/src/domains/observability/contract.ts +168 -0
- package/src/domains/observability/cost.ts +206 -0
- package/src/domains/observability/evidence-index.ts +123 -0
- package/src/domains/observability/extension.ts +281 -0
- package/src/domains/observability/index.ts +78 -0
- package/src/domains/observability/manifest.ts +10 -0
- package/src/domains/observability/metrics.ts +37 -0
- package/src/domains/observability/projection.ts +477 -0
- package/src/domains/observability/telemetry.ts +89 -0
- package/src/domains/observability/trace-store.ts +1454 -0
- package/src/domains/prompts/compiler.ts +556 -0
- package/src/domains/prompts/contract.ts +30 -0
- package/src/domains/prompts/extension.ts +304 -0
- package/src/domains/prompts/fragment-loader.ts +139 -0
- package/src/domains/prompts/fragments/identity/clio.md +3 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +63 -0
- package/src/domains/prompts/fragments/operating/contract.md +10 -1
- package/src/domains/prompts/hash.ts +73 -0
- package/src/domains/prompts/index.ts +32 -0
- package/src/domains/prompts/manifest.ts +8 -0
- package/src/domains/prompts/memory-intervention.ts +57 -0
- package/src/domains/prompts/preload.ts +82 -0
- package/src/domains/providers/auth/api-key.ts +47 -0
- package/src/domains/providers/auth/backend-file.ts +69 -0
- package/src/domains/providers/auth/backend-memory.ts +17 -0
- package/src/domains/providers/auth/index.ts +37 -0
- package/src/domains/providers/auth/oauth.ts +36 -0
- package/src/domains/providers/auth/storage.ts +667 -0
- package/src/domains/providers/capabilities.ts +50 -0
- package/src/domains/providers/catalog.ts +162 -0
- package/src/domains/providers/contract.ts +151 -0
- package/src/domains/providers/credentials.ts +20 -0
- package/src/domains/providers/eligibility.ts +24 -0
- package/src/domains/providers/errors.ts +64 -0
- package/src/domains/providers/extension.ts +536 -0
- package/src/domains/providers/index.ts +142 -0
- package/src/domains/providers/knowledge-base-path.ts +102 -0
- package/src/domains/providers/manifest.ts +6 -0
- package/src/domains/providers/model-capabilities.ts +136 -0
- package/src/domains/providers/model-discovery.ts +144 -0
- package/src/domains/providers/model-family.ts +32 -0
- package/src/domains/providers/model-runtime-capabilities.ts +712 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +2 -2
- package/src/domains/providers/plugins.ts +59 -0
- package/src/domains/providers/probe/fingerprint.ts +44 -0
- package/src/domains/providers/probe/http.ts +114 -0
- package/src/domains/providers/probe/reasoning.ts +111 -0
- package/src/domains/providers/registry.ts +166 -0
- package/src/domains/providers/resolver.ts +156 -0
- package/src/domains/providers/runtime-resolution.ts +720 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +90 -0
- package/src/domains/providers/runtimes/builtins.ts +78 -0
- package/src/domains/providers/runtimes/claude/claude-code.ts +38 -0
- package/src/domains/providers/runtimes/claude/claude-sdk.ts +38 -0
- package/src/domains/providers/runtimes/claude/common.ts +55 -0
- package/src/domains/providers/runtimes/cloud/alcf.ts +171 -0
- package/src/domains/providers/runtimes/cloud/anthropic-max.ts +71 -0
- package/src/domains/providers/runtimes/cloud/anthropic.ts +43 -0
- package/src/domains/providers/runtimes/cloud/bedrock.ts +35 -0
- package/src/domains/providers/runtimes/cloud/deepseek.ts +50 -0
- package/src/domains/providers/runtimes/cloud/google.ts +41 -0
- package/src/domains/providers/runtimes/cloud/groq.ts +46 -0
- package/src/domains/providers/runtimes/cloud/mistral.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openai-codex.ts +49 -0
- package/src/domains/providers/runtimes/cloud/openai.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +111 -0
- package/src/domains/providers/runtimes/common/lmstudio-logger.ts +32 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +165 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +474 -0
- package/src/domains/providers/runtimes/local-native/lemonade-anthropic.ts +27 -0
- package/src/domains/providers/runtimes/local-native/lemonade-openai.ts +26 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +88 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +207 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +180 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +126 -0
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +98 -0
- package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +491 -0
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +117 -0
- package/src/domains/providers/runtimes/local-native/sglang.ts +26 -0
- package/src/domains/providers/runtimes/local-native/vllm.ts +27 -0
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +104 -0
- package/src/domains/providers/runtimes/protocol/anthropic-messages.ts +28 -0
- package/src/domains/providers/runtimes/protocol/bedrock.ts +26 -0
- package/src/domains/providers/runtimes/protocol/google.ts +27 -0
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +145 -0
- package/src/domains/providers/support.ts +238 -0
- package/src/domains/providers/thinking-control-policy.ts +85 -0
- package/src/domains/providers/types/capability-flags.ts +114 -0
- package/src/domains/providers/types/cost-provenance.ts +7 -0
- package/src/domains/providers/types/inference.ts +41 -0
- package/src/domains/providers/types/knowledge-base.ts +156 -0
- package/src/domains/providers/types/local-model-quirks.ts +218 -0
- package/src/domains/providers/types/runtime-descriptor.ts +170 -0
- package/src/domains/providers/types/target-descriptor.ts +38 -0
- package/src/domains/resources/collision.ts +92 -0
- package/src/domains/resources/common-loader.ts +140 -0
- package/src/domains/resources/contract.ts +25 -0
- package/src/domains/resources/extension.ts +61 -0
- package/src/domains/resources/index.ts +74 -0
- package/src/domains/resources/loader.ts +86 -0
- package/src/domains/resources/manifest.ts +6 -0
- package/src/domains/resources/prompts/loader.ts +232 -0
- package/src/domains/resources/prompts/substitute.ts +65 -0
- package/src/domains/resources/skills/content-hash.ts +105 -0
- package/src/domains/resources/skills/evals.ts +175 -0
- package/src/domains/resources/skills/install.ts +410 -0
- package/src/domains/resources/skills/loader.ts +978 -0
- package/src/domains/resources/skills/marketplace.ts +255 -0
- package/src/domains/resources/skills/provenance-pin.ts +115 -0
- package/src/domains/safety/action-classifier.ts +268 -0
- package/src/domains/safety/approval-axis.ts +23 -0
- package/src/domains/safety/audit.ts +487 -0
- package/src/domains/safety/autonomy.ts +174 -0
- package/src/domains/safety/call-target.ts +59 -0
- package/src/domains/safety/contract.ts +65 -0
- package/src/domains/safety/damage-control.ts +44 -0
- package/src/domains/safety/default-path-policy.ts +117 -0
- package/src/domains/safety/extension.ts +383 -0
- package/src/domains/safety/finish-contract-registration.ts +128 -0
- package/src/domains/safety/finish-contract.ts +554 -0
- package/src/domains/safety/index.ts +44 -0
- package/src/domains/safety/loop-detector.ts +143 -0
- package/src/domains/safety/manifest.ts +6 -0
- package/src/domains/safety/path-policy.ts +164 -0
- package/src/domains/safety/policy-engine.ts +994 -0
- package/src/domains/safety/project-policy.ts +391 -0
- package/src/domains/safety/protected-artifacts-registration.ts +189 -0
- package/src/domains/safety/protected-artifacts.ts +993 -0
- package/src/domains/safety/rejection-feedback.ts +102 -0
- package/src/domains/safety/rigor.ts +72 -0
- package/src/domains/safety/rule-compiler.ts +48 -0
- package/src/domains/safety/rule-pack-loader.ts +92 -0
- package/src/domains/safety/run-effects.ts +197 -0
- package/src/domains/safety/scope.ts +61 -0
- package/src/domains/scheduling/budget.ts +35 -0
- package/src/domains/scheduling/cluster.ts +175 -0
- package/src/domains/scheduling/contract.ts +30 -0
- package/src/domains/scheduling/extension.ts +91 -0
- package/src/domains/scheduling/index.ts +12 -0
- package/src/domains/scheduling/manifest.ts +6 -0
- package/src/domains/session/archive-readers.ts +208 -0
- package/src/domains/session/checkpoint.ts +38 -0
- package/src/domains/session/compaction/auto.ts +89 -0
- package/src/domains/session/compaction/branch-summary.ts +186 -0
- package/src/domains/session/compaction/compact.ts +493 -0
- package/src/domains/session/compaction/cut-point.ts +171 -0
- package/src/domains/session/compaction/defaults.ts +34 -0
- package/src/domains/session/compaction/mask-observations.ts +265 -0
- package/src/domains/session/compaction/session-entries.ts +18 -0
- package/src/domains/session/compaction/tokens.ts +147 -0
- package/src/domains/session/context-accounting.ts +583 -0
- package/src/domains/session/context-ledger.ts +348 -0
- package/src/domains/session/contract.ts +144 -0
- package/src/domains/session/cwd-fallback.ts +65 -0
- package/src/domains/session/entries.ts +509 -0
- package/src/domains/session/extension.ts +322 -0
- package/src/domains/session/history.ts +172 -0
- package/src/domains/session/index.ts +84 -0
- package/src/domains/session/manager.ts +128 -0
- package/src/domains/session/manifest.ts +6 -0
- package/src/domains/session/migrations/index.ts +27 -0
- package/src/domains/session/prompt-manifest.ts +173 -0
- package/src/domains/session/protected-artifact-journal.ts +241 -0
- package/src/domains/session/protected-artifacts.ts +90 -0
- package/src/domains/session/retry.ts +238 -0
- package/src/domains/session/task-board.ts +375 -0
- package/src/domains/session/tree/active-path.ts +98 -0
- package/src/domains/session/tree/fork.ts +160 -0
- package/src/domains/session/tree/manager.ts +128 -0
- package/src/domains/session/tree/navigator.ts +177 -0
- package/src/domains/session/tree/preview.ts +259 -0
- package/src/domains/session/usage.ts +148 -0
- package/src/domains/session/workspace/git-probe.ts +161 -0
- package/src/domains/session/workspace/index.ts +4 -0
- package/src/domains/session/workspace/project-type.ts +217 -0
- package/src/domains/session/workspace/snapshot.ts +74 -0
- package/src/domains/share/archive.ts +684 -0
- package/src/domains/share/contract.ts +9 -0
- package/src/domains/share/extension.ts +26 -0
- package/src/domains/share/index.ts +28 -0
- package/src/domains/share/manifest.ts +6 -0
- package/src/engine/acp/adapter.ts +397 -0
- package/src/engine/acp/errors.ts +32 -0
- package/src/engine/acp/event-mapper.ts +154 -0
- package/src/engine/acp/server.ts +656 -0
- package/src/engine/acp/tool-mediator.ts +686 -0
- package/src/engine/acp/transport.ts +654 -0
- package/src/engine/acp/types.ts +170 -0
- package/src/engine/agent.ts +29 -0
- package/src/engine/ai.ts +202 -0
- package/src/engine/alcf-oauth.ts +198 -0
- package/src/engine/antigravity/subprocess-runtime.ts +205 -0
- package/src/engine/apis/degraded-inference.ts +95 -0
- package/src/engine/apis/index.ts +20 -0
- package/src/engine/apis/llamacpp-residency.ts +252 -0
- package/src/engine/apis/lmstudio-native.ts +1438 -0
- package/src/engine/apis/lmstudio-residency.ts +92 -0
- package/src/engine/apis/ollama-native.ts +507 -0
- package/src/engine/apis/openai-completions.ts +716 -0
- package/src/engine/apis/output-budget.ts +99 -0
- package/src/engine/apis/residency-lock.ts +29 -0
- package/src/engine/apis/residency.ts +640 -0
- package/src/engine/apis/resident-models.ts +42 -0
- package/src/engine/apis/sampling-overrides.ts +38 -0
- package/src/engine/apis/thinking-replay.ts +11 -0
- package/src/engine/claude/sdk-runtime.ts +685 -0
- package/src/engine/claude/session-id.ts +5 -0
- package/src/engine/claude/subprocess-runtime.ts +316 -0
- package/src/engine/claude/tool-safety.ts +400 -0
- package/src/engine/external-subprocess.ts +23 -0
- package/src/engine/harmony-response.ts +165 -0
- package/src/engine/loop-guard.ts +1127 -0
- package/src/engine/oauth.ts +192 -0
- package/src/engine/pi-mono-names.ts +13 -0
- package/src/engine/provider-payload.ts +315 -0
- package/src/engine/select-list.ts +53 -0
- package/src/engine/session.ts +834 -0
- package/src/engine/strip-tokenizer-sentinels.ts +125 -0
- package/src/engine/tui.ts +103 -0
- package/src/engine/types.ts +66 -0
- package/src/engine/worker-events.ts +100 -0
- package/src/engine/worker-runtime.ts +1022 -0
- package/src/engine/worker-tools.ts +203 -0
- package/src/entry/orchestrator.ts +1873 -0
- package/src/interactive/application-controller.ts +346 -0
- package/src/interactive/bus-notices.ts +265 -0
- package/src/interactive/chat-loop-messages.ts +626 -0
- package/src/interactive/chat-loop-policy.ts +18 -0
- package/src/interactive/chat-loop.ts +865 -0
- package/src/interactive/chat-panel.ts +1694 -0
- package/src/interactive/chat-renderer.ts +1038 -0
- package/src/interactive/clio-editor.ts +166 -0
- package/src/interactive/command-fallbacks.ts +23 -0
- package/src/interactive/command-output.ts +85 -0
- package/src/interactive/context-activity.ts +203 -0
- package/src/interactive/context-meter.ts +223 -0
- package/src/interactive/context-overlay.ts +220 -0
- package/src/interactive/cost-overlay.ts +279 -0
- package/src/interactive/dispatch-board.ts +1319 -0
- package/src/interactive/dispatch-steering.ts +86 -0
- package/src/interactive/editor-bash.ts +46 -0
- package/src/interactive/editor-steer.ts +51 -0
- package/src/interactive/editor-submit.ts +303 -0
- package/src/interactive/external-editor.ts +67 -0
- package/src/interactive/follow-up-queue-panel.ts +75 -0
- package/src/interactive/footer/dashboard.ts +534 -0
- package/src/interactive/footer/notifications.ts +275 -0
- package/src/interactive/footer/widgets.ts +1246 -0
- package/src/interactive/footer-panel.ts +187 -0
- package/src/interactive/format-time.ts +85 -0
- package/src/interactive/index.ts +11 -0
- package/src/interactive/interactive-application.ts +755 -0
- package/src/interactive/interactive-event-projection.ts +380 -0
- package/src/interactive/interactive-input-runtime.ts +261 -0
- package/src/interactive/interactive-presentation.ts +452 -0
- package/src/interactive/interactive-shell.ts +134 -0
- package/src/interactive/interactive-slash-runtime.ts +492 -0
- package/src/interactive/interactive-subscriptions.ts +111 -0
- package/src/interactive/interactive-tickers.ts +152 -0
- package/src/interactive/keybinding-manager.ts +496 -0
- package/src/interactive/layout.ts +20 -0
- package/src/interactive/leader-key.ts +143 -0
- package/src/interactive/loop-guard-interrupt.ts +101 -0
- package/src/interactive/memory-overlay.ts +280 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +110 -0
- package/src/interactive/overlay-auth-lifecycle.ts +308 -0
- package/src/interactive/overlay-frame.ts +502 -0
- package/src/interactive/overlay-general-openers.ts +217 -0
- package/src/interactive/overlay-key-routing.ts +213 -0
- package/src/interactive/overlay-lifecycle.ts +413 -0
- package/src/interactive/overlay-model-selectors.ts +127 -0
- package/src/interactive/overlay-permission-lifecycle.ts +344 -0
- package/src/interactive/overlay-resource-openers.ts +112 -0
- package/src/interactive/overlay-session-lifecycle.ts +270 -0
- package/src/interactive/overlay-transitions.ts +57 -0
- package/src/interactive/overlays/agents.ts +69 -0
- package/src/interactive/overlays/ask-user.ts +921 -0
- package/src/interactive/overlays/auth-dialog.ts +221 -0
- package/src/interactive/overlays/context-reset.ts +108 -0
- package/src/interactive/overlays/cwd-fallback.ts +141 -0
- package/src/interactive/overlays/extensions.ts +54 -0
- package/src/interactive/overlays/help-reference.ts +140 -0
- package/src/interactive/overlays/interop.ts +139 -0
- package/src/interactive/overlays/keybinding-detail.ts +90 -0
- package/src/interactive/overlays/list-overlay.ts +606 -0
- package/src/interactive/overlays/message-picker.ts +155 -0
- package/src/interactive/overlays/model-selector.ts +1091 -0
- package/src/interactive/overlays/prompts.ts +72 -0
- package/src/interactive/overlays/session-selector-search.ts +31 -0
- package/src/interactive/overlays/session-selector.ts +266 -0
- package/src/interactive/overlays/settings.ts +3363 -0
- package/src/interactive/overlays/skills-hub.ts +237 -0
- package/src/interactive/overlays/tree-selector.ts +387 -0
- package/src/interactive/permission-overlay.ts +170 -0
- package/src/interactive/render-trace.ts +125 -0
- package/src/interactive/renderers/branch-summary.ts +86 -0
- package/src/interactive/renderers/code-ink.ts +420 -0
- package/src/interactive/renderers/compaction-summary.ts +112 -0
- package/src/interactive/renderers/diff.ts +126 -0
- package/src/interactive/renderers/notice.ts +28 -0
- package/src/interactive/renderers/retry-status.ts +31 -0
- package/src/interactive/renderers/structured.ts +89 -0
- package/src/interactive/renderers/tool-execution.ts +1104 -0
- package/src/interactive/renderers/worker-entry.ts +264 -0
- package/src/interactive/session-last-turn.ts +186 -0
- package/src/interactive/session-transcript.ts +105 -0
- package/src/interactive/session-usage-reseed.ts +74 -0
- package/src/interactive/slash-autocomplete.ts +364 -0
- package/src/interactive/slash-commands.ts +1319 -0
- package/src/interactive/slash-spec.ts +453 -0
- package/src/interactive/status/controller.ts +256 -0
- package/src/interactive/status/index.ts +23 -0
- package/src/interactive/status/state-machine.ts +530 -0
- package/src/interactive/status/summary.ts +170 -0
- package/src/interactive/status/types.ts +121 -0
- package/src/interactive/status/verbs.ts +163 -0
- package/src/interactive/status/watchdog.ts +24 -0
- package/src/interactive/tasks-overlay.ts +186 -0
- package/src/interactive/theme/components.ts +55 -0
- package/src/interactive/theme/glyphs.ts +70 -0
- package/src/interactive/theme/index.ts +15 -0
- package/src/interactive/theme/labels.ts +88 -0
- package/src/interactive/theme/rules.ts +138 -0
- package/src/interactive/theme/segments.ts +88 -0
- package/src/interactive/theme/tokens.ts +121 -0
- package/src/interactive/thinking-level-policy.ts +6 -0
- package/src/interactive/tool-prose-loop.ts +122 -0
- package/src/interactive/tool-prose-registration.ts +48 -0
- package/src/interactive/turn-context.ts +854 -0
- package/src/interactive/turn-middleware.ts +283 -0
- package/src/interactive/turn-persistence.ts +441 -0
- package/src/interactive/turn-queues.ts +169 -0
- package/src/interactive/turn-recovery.ts +306 -0
- package/src/interactive/turn-runtime.ts +802 -0
- package/src/interactive/turn-state.ts +123 -0
- package/src/interactive/view/artifacts.ts +1342 -0
- package/src/interactive/view/view-overlay.ts +732 -0
- package/src/interactive/welcome-dashboard.ts +536 -0
- package/src/interactive/worker-receipts.ts +94 -0
- package/src/interactive/worker-replay.ts +111 -0
- package/src/interactive/worker-share.ts +100 -0
- package/src/interactive/worker-stream.ts +442 -0
- package/src/interactive/workspace-facts.ts +141 -0
- package/src/tools/agent-tools.ts +382 -0
- package/src/tools/artifact.ts +103 -0
- package/src/tools/ask-user.ts +656 -0
- package/src/tools/bash.ts +176 -0
- package/src/tools/bootstrap.ts +474 -0
- package/src/tools/codewiki/code-nav.ts +563 -0
- package/src/tools/codewiki/shared.ts +115 -0
- package/src/tools/compete-worktrees.ts +898 -0
- package/src/tools/context/docs-engine.ts +619 -0
- package/src/tools/context/index.ts +435 -0
- package/src/tools/credential-present.ts +151 -0
- package/src/tools/dispatch-arguments.ts +228 -0
- package/src/tools/dispatch-plan.ts +741 -0
- package/src/tools/dispatch-scout.ts +461 -0
- package/src/tools/dispatch.ts +3338 -0
- package/src/tools/edit-diff.ts +534 -0
- package/src/tools/edit.ts +128 -0
- package/src/tools/executables.ts +22 -0
- package/src/tools/file-mutation-queue.ts +35 -0
- package/src/tools/find.ts +292 -0
- package/src/tools/grep.ts +495 -0
- package/src/tools/ignore-policy.ts +169 -0
- package/src/tools/ledger.ts +206 -0
- package/src/tools/ls.ts +110 -0
- package/src/tools/monitor.ts +797 -0
- package/src/tools/network-policy.ts +29 -0
- package/src/tools/observation.ts +421 -0
- package/src/tools/observers.ts +99 -0
- package/src/tools/path-utils.ts +79 -0
- package/src/tools/policy.ts +154 -0
- package/src/tools/profiles.ts +108 -0
- package/src/tools/read.ts +173 -0
- package/src/tools/registry.ts +1157 -0
- package/src/tools/result-shaping.ts +204 -0
- package/src/tools/safe-exec.ts +128 -0
- package/src/tools/spawn-hygiene.ts +182 -0
- package/src/tools/steer.ts +88 -0
- package/src/tools/string-enum.ts +15 -0
- package/src/tools/tasks.ts +168 -0
- package/src/tools/truncate-utf8.ts +17 -0
- package/src/tools/truncate.ts +202 -0
- package/src/tools/verify/frontend.ts +685 -0
- package/src/tools/verify/index.ts +66 -0
- package/src/tools/verify/scripts.ts +108 -0
- package/src/tools/web-fetch.ts +777 -0
- package/src/tools/worker-evidence.ts +215 -0
- package/src/tools/write.ts +52 -0
- package/src/utils/exif-orientation.ts +192 -0
- package/src/utils/git.ts +24 -0
- package/src/utils/image-resize.ts +148 -0
- package/src/utils/photon.ts +103 -0
- package/src/worker/control-lane.ts +22 -0
- package/src/worker/entry.ts +257 -0
- package/src/worker/event-projection.ts +56 -0
- package/src/worker/heartbeat.ts +24 -0
- package/src/worker/ledger-mirror.ts +95 -0
- package/src/worker/ndjson.ts +40 -0
- package/src/worker/protocol.ts +529 -0
- package/src/worker/resource-facts.ts +79 -0
- package/src/worker/runtime-registry.ts +12 -0
- package/src/worker/spec-contract.ts +654 -0
- package/src/worker/stdin-demux.ts +316 -0
- package/dist/acp-UMLFVA3F.js +0 -92
- package/dist/chunk-262G75JS.js +0 -35
- package/dist/chunk-5LDRNKX2.js +0 -1063
- package/dist/chunk-67MTHP2E.js +0 -135
- package/dist/chunk-GOTUR54M.js +0 -9
- package/dist/chunk-TPOCL34A.js +0 -2876
- package/dist/chunk-XV4ZJ6ZM.js +0 -3177
- package/dist/clio-KIQ5SNDS.js +0 -53
- package/dist/configure-G4E3A2PG.js +0 -27
- package/dist/doctor-M5HJJZOL.js +0 -61
- package/dist/domains/agents/builtins/architect.md +0 -33
- package/dist/domains/agents/builtins/coder.md +0 -31
- package/dist/domains/agents/builtins/context-bootstrap.md +0 -38
- package/dist/domains/agents/builtins/debugger.md +0 -30
- package/dist/domains/agents/builtins/documenter.md +0 -31
- package/dist/domains/agents/builtins/git-master.md +0 -30
- package/dist/domains/agents/builtins/provenance.md +0 -30
- package/dist/domains/agents/builtins/researcher.md +0 -71
- package/dist/domains/agents/builtins/scout.md +0 -42
- package/dist/domains/agents/builtins/tester.md +0 -31
- package/dist/domains/agents/builtins/verifier.md +0 -30
- package/dist/domains/agents/builtins/wiki-writer.md +0 -41
- package/dist/fleet-preflight-CLIAX7YR.js +0 -21
- package/dist/preload-KZVHET2B.js +0 -11
- package/dist/version-ROZ6CZKH.js +0 -16
- package/skills/git/commit-crafting/SKILL.md +0 -79
- package/skills/git/commit-crafting/evals.md +0 -92
- package/skills/git/create-pr/SKILL.md +0 -116
- package/skills/git/create-pr/evals.md +0 -114
- package/skills/git/investigate-issue/SKILL.md +0 -139
- package/skills/git/investigate-issue/evals.md +0 -94
- package/skills/git/review-changes/SKILL.md +0 -103
- package/skills/git/review-changes/evals.md +0 -85
|
@@ -1,30 +1,38 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
1
2
|
import {
|
|
2
3
|
BusChannels,
|
|
3
4
|
getSharedBus
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-Q5WJOSJ7.js";
|
|
5
6
|
import {
|
|
6
7
|
readSettings,
|
|
7
8
|
sleep
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KY56HMHH.js";
|
|
9
10
|
import {
|
|
10
11
|
authNotRequiredStatus,
|
|
11
12
|
openAuthStorage,
|
|
12
13
|
registerClioOAuthProviders,
|
|
14
|
+
require_dist,
|
|
13
15
|
resolveAuthTarget,
|
|
14
16
|
resolveRuntimeAuthTarget,
|
|
15
|
-
targetRequiresAuth
|
|
16
|
-
|
|
17
|
+
targetRequiresAuth,
|
|
18
|
+
withStateFileLock
|
|
19
|
+
} from "./chunk-GB6QRBXN.js";
|
|
17
20
|
import {
|
|
18
21
|
cwdHash,
|
|
19
22
|
sessionPaths
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-HQQID6OA.js";
|
|
21
24
|
import {
|
|
22
25
|
clioConfigDir,
|
|
23
26
|
clioStatePath,
|
|
24
27
|
resolveClioDirs
|
|
25
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-BNAZZHFG.js";
|
|
29
|
+
import {
|
|
30
|
+
__toESM,
|
|
31
|
+
init_esm_shims
|
|
32
|
+
} from "./chunk-3R73A4XB.js";
|
|
26
33
|
|
|
27
34
|
// src/core/run-overrides.ts
|
|
35
|
+
init_esm_shims();
|
|
28
36
|
var RUN_OVERRIDES_ENV = "CLIO_CODER_RUN_OVERRIDES";
|
|
29
37
|
function runOverrides(env = process.env) {
|
|
30
38
|
const raw = env[RUN_OVERRIDES_ENV]?.trim();
|
|
@@ -68,7 +76,11 @@ async function withRunOverrides(overrides, fn) {
|
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
|
|
79
|
+
// src/domains/providers/catalog.ts
|
|
80
|
+
init_esm_shims();
|
|
81
|
+
|
|
71
82
|
// src/engine/ai.ts
|
|
83
|
+
init_esm_shims();
|
|
72
84
|
import {
|
|
73
85
|
fauxAssistantMessage,
|
|
74
86
|
fauxToolCall,
|
|
@@ -192,6 +204,7 @@ function registerFauxFromEnv() {
|
|
|
192
204
|
}
|
|
193
205
|
|
|
194
206
|
// src/domains/providers/capabilities.ts
|
|
207
|
+
init_esm_shims();
|
|
195
208
|
function mergeCapabilities(base, kb, probe, userOverride) {
|
|
196
209
|
const merged = { ...base };
|
|
197
210
|
applyLayer(merged, probe);
|
|
@@ -325,7 +338,11 @@ function synthesizeCatalogBackedModel(input) {
|
|
|
325
338
|
return model;
|
|
326
339
|
}
|
|
327
340
|
|
|
341
|
+
// src/domains/providers/types/capability-flags.ts
|
|
342
|
+
init_esm_shims();
|
|
343
|
+
|
|
328
344
|
// src/domains/providers/model-family.ts
|
|
345
|
+
init_esm_shims();
|
|
329
346
|
function normalizeModelIdForFamily(modelId) {
|
|
330
347
|
return (modelId ?? "").trim().toLowerCase().replace(/_/g, "-");
|
|
331
348
|
}
|
|
@@ -412,7 +429,11 @@ function availableThinkingLevels(caps, options) {
|
|
|
412
429
|
return THINKING_LEVELS_WITHOUT_XHIGH;
|
|
413
430
|
}
|
|
414
431
|
|
|
432
|
+
// src/domains/providers/model-capabilities.ts
|
|
433
|
+
init_esm_shims();
|
|
434
|
+
|
|
415
435
|
// src/domains/providers/types/local-model-quirks.ts
|
|
436
|
+
init_esm_shims();
|
|
416
437
|
var KV_CACHE_QUANTS = ["f32", "f16", "q8_0", "q4_0", "q4_1", "iq4_nl", "q5_0", "q5_1"];
|
|
417
438
|
function isRecord(value) {
|
|
418
439
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
@@ -597,61 +618,25 @@ function resolveModelCapabilities(status, wireModelId, knowledgeBase, options) {
|
|
|
597
618
|
);
|
|
598
619
|
}
|
|
599
620
|
|
|
621
|
+
// src/engine/apis/residency.ts
|
|
622
|
+
init_esm_shims();
|
|
623
|
+
|
|
600
624
|
// src/engine/apis/residency-lock.ts
|
|
601
|
-
|
|
625
|
+
init_esm_shims();
|
|
602
626
|
import { join } from "node:path";
|
|
603
|
-
var LOCK_STALE_MS = 13e4;
|
|
604
627
|
var LOCK_WAIT_MS = 12e4;
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
const name = targetKey.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
608
|
-
return join(clioStatePath(), "residency-locks", `${name}.lock`);
|
|
609
|
-
}
|
|
610
|
-
function tryAcquire(lockPath) {
|
|
611
|
-
try {
|
|
612
|
-
writeFileSync(lockPath, `${JSON.stringify({ pid: process.pid, at: (/* @__PURE__ */ new Date()).toISOString() })}
|
|
613
|
-
`, {
|
|
614
|
-
encoding: "utf8",
|
|
615
|
-
flag: "wx",
|
|
616
|
-
mode: 420
|
|
617
|
-
});
|
|
618
|
-
return true;
|
|
619
|
-
} catch (err) {
|
|
620
|
-
if (err.code !== "EEXIST") throw err;
|
|
621
|
-
}
|
|
622
|
-
try {
|
|
623
|
-
if (Date.now() - statSync(lockPath).mtimeMs > LOCK_STALE_MS) rmSync(lockPath, { force: true });
|
|
624
|
-
} catch {
|
|
625
|
-
}
|
|
626
|
-
return false;
|
|
628
|
+
function lockTargetFor(targetKey) {
|
|
629
|
+
return join(clioStatePath(), "residency-locks", targetKey.replace(/[^a-zA-Z0-9._-]+/g, "_"));
|
|
627
630
|
}
|
|
628
631
|
async function withResidencyLock(targetKey, fn) {
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
const deadline = Date.now() + LOCK_WAIT_MS;
|
|
634
|
-
held = tryAcquire(lockPath);
|
|
635
|
-
while (!held && Date.now() < deadline) {
|
|
636
|
-
await sleep(LOCK_POLL_MS);
|
|
637
|
-
held = tryAcquire(lockPath);
|
|
638
|
-
}
|
|
639
|
-
} catch {
|
|
640
|
-
held = false;
|
|
641
|
-
}
|
|
642
|
-
try {
|
|
643
|
-
return await fn();
|
|
644
|
-
} finally {
|
|
645
|
-
if (held) {
|
|
646
|
-
try {
|
|
647
|
-
rmSync(lockPath, { force: true });
|
|
648
|
-
} catch {
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
}
|
|
632
|
+
return withStateFileLock(lockTargetFor(targetKey), fn, {
|
|
633
|
+
timeoutMs: LOCK_WAIT_MS,
|
|
634
|
+
onAcquireFailure: "run-unlocked"
|
|
635
|
+
});
|
|
652
636
|
}
|
|
653
637
|
|
|
654
638
|
// src/engine/apis/resident-models.ts
|
|
639
|
+
init_esm_shims();
|
|
655
640
|
function residentMatchesKeep(entry, keepModelId) {
|
|
656
641
|
return entry.modelId === keepModelId || (entry.aliasIds?.includes(keepModelId) ?? false);
|
|
657
642
|
}
|
|
@@ -674,13 +659,19 @@ var protectedModelsProvider = null;
|
|
|
674
659
|
function setProtectedModelsProvider(provider) {
|
|
675
660
|
protectedModelsProvider = provider;
|
|
676
661
|
}
|
|
677
|
-
function
|
|
662
|
+
function configProtectedRoles() {
|
|
663
|
+
const roles = /* @__PURE__ */ new Map();
|
|
678
664
|
try {
|
|
679
|
-
const
|
|
680
|
-
|
|
665
|
+
for (const entry of protectedModelsProvider?.() ?? []) {
|
|
666
|
+
const modelId = (typeof entry === "string" ? entry : entry.modelId).trim();
|
|
667
|
+
if (modelId.length === 0) continue;
|
|
668
|
+
const role = typeof entry === "string" ? void 0 : entry.role;
|
|
669
|
+
if (!roles.has(modelId) || roles.get(modelId) === void 0) roles.set(modelId, role);
|
|
670
|
+
}
|
|
681
671
|
} catch {
|
|
682
|
-
return /* @__PURE__ */ new
|
|
672
|
+
return /* @__PURE__ */ new Map();
|
|
683
673
|
}
|
|
674
|
+
return roles;
|
|
684
675
|
}
|
|
685
676
|
function residentTagProtected(tags) {
|
|
686
677
|
if (!tags) return false;
|
|
@@ -724,14 +715,21 @@ function makeNotice(facts, kind, level, message, detail) {
|
|
|
724
715
|
function clioLoadedFirst(entries) {
|
|
725
716
|
return [...entries.filter((entry) => entry.loadedByClio), ...entries.filter((entry) => !entry.loadedByClio)];
|
|
726
717
|
}
|
|
718
|
+
function describeRole(role) {
|
|
719
|
+
if (role === "chat") return "the chat model";
|
|
720
|
+
if (role === "memory") return "the memory model";
|
|
721
|
+
if (role === "worker") return "a worker model";
|
|
722
|
+
if (role === "target-default") return "a target default model";
|
|
723
|
+
return "a configured model";
|
|
724
|
+
}
|
|
727
725
|
function evictionNotice(facts, entry) {
|
|
728
726
|
if (entry.protection === "config") {
|
|
729
727
|
return makeNotice(
|
|
730
728
|
facts,
|
|
731
729
|
"swap",
|
|
732
730
|
"warning",
|
|
733
|
-
`evicting '${entry.modelId}' from '${facts.targetId}' to make room for '${facts.keepModelId}' even though settings still reference it: every slot is taken and no unprotected resident is left. Another profile pointed at it will reload it.`,
|
|
734
|
-
{ swappedOut: entry.modelId, configProtected: true }
|
|
731
|
+
`evicting '${entry.modelId}' from '${facts.targetId}' to make room for '${facts.keepModelId}' even though settings still reference it as ${describeRole(entry.role)}: every slot is taken and no unprotected resident is left. Another profile pointed at it will reload it.`,
|
|
732
|
+
{ swappedOut: entry.modelId, configProtected: true, ...entry.role ? { role: entry.role } : {} }
|
|
735
733
|
);
|
|
736
734
|
}
|
|
737
735
|
if (entry.loadedByClio) {
|
|
@@ -787,7 +785,7 @@ function decideResidency(facts) {
|
|
|
787
785
|
}
|
|
788
786
|
if (keepResident) {
|
|
789
787
|
if (others.length > 0) {
|
|
790
|
-
const names = others.map((entry) => entry.modelId).join(", ");
|
|
788
|
+
const names = others.map((entry) => entry.role ? `${entry.modelId} (${entry.role})` : entry.modelId).join(", ");
|
|
791
789
|
if (facts.capacity !== void 0 && facts.resident.length > facts.capacity) {
|
|
792
790
|
notices.push(
|
|
793
791
|
makeNotice(
|
|
@@ -814,10 +812,11 @@ function decideResidency(facts) {
|
|
|
814
812
|
}
|
|
815
813
|
const tierUnprotected = clioLoadedFirst(others.filter((entry) => entry.protection === void 0));
|
|
816
814
|
const tierConfig = clioLoadedFirst(others.filter((entry) => entry.protection === "config"));
|
|
815
|
+
const configEvictable = facts.keepTagProtected !== true;
|
|
817
816
|
let evict = [];
|
|
818
817
|
let fallbackEvict = [];
|
|
819
818
|
if (facts.strategy === "jit") {
|
|
820
|
-
fallbackEvict = [...tierUnprotected, ...tierConfig];
|
|
819
|
+
fallbackEvict = configEvictable ? [...tierUnprotected, ...tierConfig] : tierUnprotected;
|
|
821
820
|
} else if (facts.strategy === "scheduler") {
|
|
822
821
|
evict = tierUnprotected.filter((entry) => entry.loadedByClio);
|
|
823
822
|
} else if (facts.capacity === void 0) {
|
|
@@ -825,7 +824,26 @@ function decideResidency(facts) {
|
|
|
825
824
|
} else {
|
|
826
825
|
const slotsNeeded = facts.resident.length + 1 - facts.capacity;
|
|
827
826
|
if (slotsNeeded > 0) {
|
|
828
|
-
const candidates = [...tierUnprotected, ...tierConfig];
|
|
827
|
+
const candidates = configEvictable ? [...tierUnprotected, ...tierConfig] : tierUnprotected;
|
|
828
|
+
if (candidates.length < slotsNeeded && !configEvictable && tierUnprotected.length + tierConfig.length >= slotsNeeded) {
|
|
829
|
+
const blocked = tierConfig.slice(0, slotsNeeded - tierUnprotected.length);
|
|
830
|
+
const names = blocked.map((entry) => `'${entry.modelId}' (${describeRole(entry.role)})`).join(", ");
|
|
831
|
+
notices.push(
|
|
832
|
+
makeNotice(
|
|
833
|
+
facts,
|
|
834
|
+
"will-not-fit",
|
|
835
|
+
"error",
|
|
836
|
+
`cannot load pinned '${facts.keepModelId}' on '${facts.targetId}': it would evict ${names} that settings still reference, and a pinned model is never evicted, so the configured model could not return. Unload one manually, unpin '${facts.keepModelId}' on the server, or raise the server's max instances.`,
|
|
837
|
+
{
|
|
838
|
+
residentCount: facts.resident.length,
|
|
839
|
+
maxInstances: facts.capacity,
|
|
840
|
+
configProtected: true,
|
|
841
|
+
...blocked[0]?.role ? { role: blocked[0].role } : {}
|
|
842
|
+
}
|
|
843
|
+
)
|
|
844
|
+
);
|
|
845
|
+
return { decision: "decline", evict: [], fallbackEvict: [], keepResident, notices };
|
|
846
|
+
}
|
|
829
847
|
if (candidates.length < slotsNeeded) {
|
|
830
848
|
notices.push(
|
|
831
849
|
makeNotice(
|
|
@@ -881,14 +899,24 @@ async function reconcileResidency(adapter) {
|
|
|
881
899
|
capacity = void 0;
|
|
882
900
|
}
|
|
883
901
|
}
|
|
884
|
-
|
|
902
|
+
let keepTagProtected = false;
|
|
903
|
+
if (adapter.keepModelTags) {
|
|
904
|
+
try {
|
|
905
|
+
keepTagProtected = residentTagProtected(await adapter.keepModelTags());
|
|
906
|
+
} catch {
|
|
907
|
+
keepTagProtected = false;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
const protectedRoles = configProtectedRoles();
|
|
885
911
|
const classified = resident.map((entry) => {
|
|
886
|
-
const
|
|
887
|
-
const protection = residentTagProtected(entry.tags) ? "tag" :
|
|
912
|
+
const configId = [entry.modelId, ...entry.aliasIds ?? []].find((id) => protectedRoles.has(id));
|
|
913
|
+
const protection = residentTagProtected(entry.tags) ? "tag" : configId !== void 0 ? "config" : void 0;
|
|
914
|
+
const role = configId === void 0 ? void 0 : protectedRoles.get(configId);
|
|
888
915
|
return {
|
|
889
916
|
...entry,
|
|
890
917
|
loadedByClio: isClioLoaded(adapter.targetKey, entry),
|
|
891
|
-
...protection ? { protection } : {}
|
|
918
|
+
...protection ? { protection } : {},
|
|
919
|
+
...role ? { role } : {}
|
|
892
920
|
};
|
|
893
921
|
});
|
|
894
922
|
const facts = {
|
|
@@ -899,6 +927,7 @@ async function reconcileResidency(adapter) {
|
|
|
899
927
|
managed: adapter.managed,
|
|
900
928
|
strategy: adapter.strategy,
|
|
901
929
|
...capacity !== void 0 ? { capacity } : {},
|
|
930
|
+
...keepTagProtected ? { keepTagProtected } : {},
|
|
902
931
|
...adapter.contextLength !== void 0 ? { contextLength: adapter.contextLength } : {},
|
|
903
932
|
...adapter.modelMaxContext !== void 0 ? { modelMaxContext: adapter.modelMaxContext } : {}
|
|
904
933
|
};
|
|
@@ -941,13 +970,18 @@ function residencyManagedFor(lifecycle, env = process.env) {
|
|
|
941
970
|
}
|
|
942
971
|
|
|
943
972
|
// src/engine/apis/lmstudio-native.ts
|
|
973
|
+
init_esm_shims();
|
|
944
974
|
import { randomUUID } from "node:crypto";
|
|
945
975
|
import { createAssistantMessageEventStream as createAssistantMessageEventStream2 } from "@earendil-works/pi-ai";
|
|
946
976
|
import {
|
|
947
977
|
LMStudioClient
|
|
948
978
|
} from "@lmstudio/sdk";
|
|
949
979
|
|
|
980
|
+
// src/domains/providers/model-runtime-capabilities.ts
|
|
981
|
+
init_esm_shims();
|
|
982
|
+
|
|
950
983
|
// src/domains/providers/thinking-control-policy.ts
|
|
984
|
+
init_esm_shims();
|
|
951
985
|
var ANTHROPIC_MIN_THINKING_BUDGET = 1024;
|
|
952
986
|
var ANTHROPIC_VISIBLE_OUTPUT_RESERVE = 1024;
|
|
953
987
|
var ANTHROPIC_DEFAULT_THINKING_BUDGETS = {
|
|
@@ -1426,6 +1460,7 @@ function resolveTargetRuntimeCapabilities(target, runtime, wireModelId, capabili
|
|
|
1426
1460
|
}
|
|
1427
1461
|
|
|
1428
1462
|
// src/domains/providers/runtimes/common/lmstudio-logger.ts
|
|
1463
|
+
init_esm_shims();
|
|
1429
1464
|
function formatMessage(message) {
|
|
1430
1465
|
if (message instanceof Error) return message.stack ?? message.message;
|
|
1431
1466
|
if (typeof message === "string") return message;
|
|
@@ -1448,10 +1483,12 @@ var lmStudioQuietLogger = {
|
|
|
1448
1483
|
};
|
|
1449
1484
|
|
|
1450
1485
|
// src/domains/session/context-accounting.ts
|
|
1486
|
+
init_esm_shims();
|
|
1451
1487
|
import { appendFileSync, existsSync, readFileSync } from "node:fs";
|
|
1452
1488
|
import { dirname, join as join2 } from "node:path";
|
|
1453
1489
|
|
|
1454
1490
|
// src/domains/session/compaction/auto.ts
|
|
1491
|
+
init_esm_shims();
|
|
1455
1492
|
var DEFAULT_COMPACTION_THRESHOLD = 0.8;
|
|
1456
1493
|
function shouldCompact(contextTokens, threshold, contextWindow) {
|
|
1457
1494
|
const base = {
|
|
@@ -1496,6 +1533,7 @@ var AutoCompactionTrigger = class {
|
|
|
1496
1533
|
};
|
|
1497
1534
|
|
|
1498
1535
|
// src/domains/session/context-ledger.ts
|
|
1536
|
+
init_esm_shims();
|
|
1499
1537
|
var SEGMENT_CATEGORY = {
|
|
1500
1538
|
identity: "system",
|
|
1501
1539
|
"operating-contract": "system",
|
|
@@ -1625,6 +1663,7 @@ function buildContextLedger(input) {
|
|
|
1625
1663
|
provider: input.provider ?? null,
|
|
1626
1664
|
model: input.model ?? null,
|
|
1627
1665
|
contextWindow: window,
|
|
1666
|
+
contextWindowSource: input.contextWindowSource ?? null,
|
|
1628
1667
|
usedTokens,
|
|
1629
1668
|
reserveTokens,
|
|
1630
1669
|
freeTokens,
|
|
@@ -2023,6 +2062,7 @@ function reconcileSnapshot(snapshot, usage) {
|
|
|
2023
2062
|
}
|
|
2024
2063
|
|
|
2025
2064
|
// src/engine/harmony-response.ts
|
|
2065
|
+
init_esm_shims();
|
|
2026
2066
|
var START = "<|start|>";
|
|
2027
2067
|
var CHANNEL = "<|channel|>";
|
|
2028
2068
|
var CONSTRAIN = "<|constrain|>";
|
|
@@ -2141,6 +2181,7 @@ function harmonyPrefixTailLength(value) {
|
|
|
2141
2181
|
}
|
|
2142
2182
|
|
|
2143
2183
|
// src/engine/strip-tokenizer-sentinels.ts
|
|
2184
|
+
init_esm_shims();
|
|
2144
2185
|
var KNOWN_SENTINELS = [
|
|
2145
2186
|
"<|endoftext|>",
|
|
2146
2187
|
"<|im_start|>",
|
|
@@ -2196,13 +2237,85 @@ function createSentinelStripper() {
|
|
|
2196
2237
|
};
|
|
2197
2238
|
}
|
|
2198
2239
|
|
|
2240
|
+
// src/engine/apis/degraded-inference.ts
|
|
2241
|
+
init_esm_shims();
|
|
2242
|
+
var DEGRADED_GRACE_MS = 3e4;
|
|
2243
|
+
var DEGRADED_FLOOR_TOKENS_PER_SECOND = 2;
|
|
2244
|
+
function defaultTimer(fn, ms) {
|
|
2245
|
+
const handle = setInterval(fn, ms);
|
|
2246
|
+
handle.unref?.();
|
|
2247
|
+
return { cancel: () => clearInterval(handle) };
|
|
2248
|
+
}
|
|
2249
|
+
function startDegradedInferenceWatchdog(options) {
|
|
2250
|
+
const now = options.now ?? Date.now;
|
|
2251
|
+
const graceMs = options.graceMs ?? DEGRADED_GRACE_MS;
|
|
2252
|
+
const floor = options.floorTokensPerSecond ?? DEGRADED_FLOOR_TOKENS_PER_SECOND;
|
|
2253
|
+
const pollMs = options.pollMs ?? 5e3;
|
|
2254
|
+
const startedAt = now();
|
|
2255
|
+
let tokens = 0;
|
|
2256
|
+
let reported = false;
|
|
2257
|
+
let stopped = false;
|
|
2258
|
+
const check = () => {
|
|
2259
|
+
if (reported || stopped) return;
|
|
2260
|
+
const elapsedMs = now() - startedAt;
|
|
2261
|
+
if (elapsedMs < graceMs) return;
|
|
2262
|
+
const tokensPerSecond = tokens / (elapsedMs / 1e3);
|
|
2263
|
+
if (tokensPerSecond >= floor) return;
|
|
2264
|
+
reported = true;
|
|
2265
|
+
timer.cancel();
|
|
2266
|
+
try {
|
|
2267
|
+
options.onDegraded({ elapsedMs, tokens, tokensPerSecond });
|
|
2268
|
+
} catch {
|
|
2269
|
+
}
|
|
2270
|
+
};
|
|
2271
|
+
const timer = (options.setTimer ?? defaultTimer)(check, pollMs);
|
|
2272
|
+
return {
|
|
2273
|
+
addTokens: (count) => {
|
|
2274
|
+
if (Number.isFinite(count) && count > 0) tokens += count;
|
|
2275
|
+
},
|
|
2276
|
+
check,
|
|
2277
|
+
stop: () => {
|
|
2278
|
+
if (stopped) return;
|
|
2279
|
+
stopped = true;
|
|
2280
|
+
timer.cancel();
|
|
2281
|
+
}
|
|
2282
|
+
};
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
// src/engine/apis/lmstudio-residency.ts
|
|
2286
|
+
init_esm_shims();
|
|
2287
|
+
var CO_RESIDENT_CONTEXT_CEILING = 131072;
|
|
2288
|
+
function coResidentContextCeiling(env = process.env) {
|
|
2289
|
+
const raw = (env.CLIO_CODER_LMSTUDIO_CORESIDENT_CONTEXT ?? "").trim().toLowerCase();
|
|
2290
|
+
if (raw.length === 0) return CO_RESIDENT_CONTEXT_CEILING;
|
|
2291
|
+
if (raw === "off" || raw === "0" || raw === "false") return void 0;
|
|
2292
|
+
const parsed = Number.parseInt(raw, 10);
|
|
2293
|
+
if (!Number.isFinite(parsed) || parsed <= 0) return CO_RESIDENT_CONTEXT_CEILING;
|
|
2294
|
+
return parsed;
|
|
2295
|
+
}
|
|
2296
|
+
function fitLoadContextLength(input) {
|
|
2297
|
+
const neighbours = [...new Set(input.resident.filter((e) => e.modelKey !== input.keepModelId).map((e) => e.modelKey))];
|
|
2298
|
+
const ceiling = input.ceiling;
|
|
2299
|
+
if (neighbours.length === 0 || ceiling === void 0 || input.requested <= ceiling) {
|
|
2300
|
+
return { contextLength: input.requested, neighbours };
|
|
2301
|
+
}
|
|
2302
|
+
return { contextLength: ceiling, clampedFrom: input.requested, neighbours };
|
|
2303
|
+
}
|
|
2304
|
+
function duplicateInstances(resident, keepModelId) {
|
|
2305
|
+
const instances = resident.filter((entry) => entry.modelKey === keepModelId);
|
|
2306
|
+
return instances.slice(1);
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2199
2309
|
// src/engine/apis/openai-completions.ts
|
|
2310
|
+
init_esm_shims();
|
|
2200
2311
|
import {
|
|
2201
2312
|
createAssistantMessageEventStream
|
|
2202
2313
|
} from "@earendil-works/pi-ai";
|
|
2203
2314
|
import { streamOpenAICompletions, streamSimpleOpenAICompletions } from "@earendil-works/pi-ai/compat";
|
|
2204
2315
|
|
|
2205
2316
|
// src/engine/apis/llamacpp-residency.ts
|
|
2317
|
+
init_esm_shims();
|
|
2318
|
+
import { performance } from "node:perf_hooks";
|
|
2206
2319
|
var LOAD_TIMEOUT_MS = 12e4;
|
|
2207
2320
|
var POLL_INTERVAL_MS = 500;
|
|
2208
2321
|
function isRecord3(value) {
|
|
@@ -2278,8 +2391,8 @@ async function postRouterModel(fetchImpl, url2, modelId) {
|
|
|
2278
2391
|
throw new Error(`llama.cpp router rejected ${url2}: HTTP ${response.status}`);
|
|
2279
2392
|
}
|
|
2280
2393
|
async function waitForLoaded(input, fetchImpl, modelId) {
|
|
2281
|
-
const started =
|
|
2282
|
-
while (
|
|
2394
|
+
const started = performance.now();
|
|
2395
|
+
while (performance.now() - started < LOAD_TIMEOUT_MS) {
|
|
2283
2396
|
const models = await fetchRouterModels(input, fetchImpl);
|
|
2284
2397
|
const model = models.find((entry) => entry.id === modelId);
|
|
2285
2398
|
if (model?.state === "loaded") return;
|
|
@@ -2330,6 +2443,7 @@ async function ensureLlamaCppResidency(input) {
|
|
|
2330
2443
|
return models.filter(residentModel).map((entry) => ({ modelId: entry.id, tags: entry.tags }));
|
|
2331
2444
|
},
|
|
2332
2445
|
capacity: async () => (await fetchRouterProps(input, fetchImpl)).maxInstances,
|
|
2446
|
+
keepModelTags: async () => snapshot.find((entry) => entry.id === input.keepModelId)?.tags,
|
|
2333
2447
|
unload: (modelId) => postRouterModel(fetchImpl, unloadUrl(input.baseUrl), modelId),
|
|
2334
2448
|
load: async (modelId) => {
|
|
2335
2449
|
const state = snapshot.find((entry) => entry.id === modelId)?.state;
|
|
@@ -2344,7 +2458,11 @@ async function ensureLlamaCppResidency(input) {
|
|
|
2344
2458
|
await reconcileResidency(adapter);
|
|
2345
2459
|
}
|
|
2346
2460
|
|
|
2461
|
+
// src/engine/apis/output-budget.ts
|
|
2462
|
+
init_esm_shims();
|
|
2463
|
+
|
|
2347
2464
|
// src/core/context-floor.ts
|
|
2465
|
+
init_esm_shims();
|
|
2348
2466
|
var CLIO_MIN_CONTEXT_WINDOW = 131072;
|
|
2349
2467
|
var CLIO_MIN_MAX_OUTPUT_TOKENS = 32768;
|
|
2350
2468
|
var CLIO_CONTEXT_WINDOW_WARN_BELOW = 128e3;
|
|
@@ -2382,6 +2500,7 @@ function remainingContextMaxTokens(model, context, options, limits) {
|
|
|
2382
2500
|
}
|
|
2383
2501
|
|
|
2384
2502
|
// src/engine/apis/sampling-overrides.ts
|
|
2503
|
+
init_esm_shims();
|
|
2385
2504
|
function numberField(record, key) {
|
|
2386
2505
|
const value = record[key];
|
|
2387
2506
|
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
@@ -2907,6 +3026,7 @@ var openAICompletionsApiProvider = {
|
|
|
2907
3026
|
};
|
|
2908
3027
|
|
|
2909
3028
|
// src/engine/apis/thinking-replay.ts
|
|
3029
|
+
init_esm_shims();
|
|
2910
3030
|
function formatThinkingForReplay(thinking, opts) {
|
|
2911
3031
|
if (opts.harmony) {
|
|
2912
3032
|
return `<think>
|
|
@@ -2934,6 +3054,17 @@ function normalizeHttpBaseUrl(url2) {
|
|
|
2934
3054
|
if (trimmed.startsWith("wss://")) return `https://${trimmed.slice("wss://".length)}`;
|
|
2935
3055
|
return `http://${trimmed}`;
|
|
2936
3056
|
}
|
|
3057
|
+
function residentModelInfos(entries) {
|
|
3058
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
3059
|
+
for (const entry of entries) {
|
|
3060
|
+
if (byKey.has(entry.modelKey)) continue;
|
|
3061
|
+
byKey.set(entry.modelKey, {
|
|
3062
|
+
modelId: entry.modelKey,
|
|
3063
|
+
...entry.sizeBytes !== void 0 ? { sizeBytes: entry.sizeBytes } : {}
|
|
3064
|
+
});
|
|
3065
|
+
}
|
|
3066
|
+
return [...byKey.values()];
|
|
3067
|
+
}
|
|
2937
3068
|
function toolToLmStudio(tool) {
|
|
2938
3069
|
const fn = {
|
|
2939
3070
|
name: tool.name,
|
|
@@ -3117,9 +3248,9 @@ function thinkingLevelFromHintOrModel(hints, model) {
|
|
|
3117
3248
|
return model.reasoning === true ? "medium" : "off";
|
|
3118
3249
|
}
|
|
3119
3250
|
var VALID_ENV_KV_CACHE_QUANTS = new Set(KV_CACHE_QUANTS);
|
|
3120
|
-
function loadModelConfig(model) {
|
|
3251
|
+
function loadModelConfig(model, overrides) {
|
|
3121
3252
|
const config = {
|
|
3122
|
-
contextLength: automaticLoadContextLength(model),
|
|
3253
|
+
contextLength: overrides?.contextLength ?? automaticLoadContextLength(model),
|
|
3123
3254
|
flashAttention: true,
|
|
3124
3255
|
gpu: { ratio: "max" },
|
|
3125
3256
|
gpuStrictVramCap: true,
|
|
@@ -3227,9 +3358,23 @@ function runtimeMetadata2(model) {
|
|
|
3227
3358
|
gateway: metadata?.gateway ?? false
|
|
3228
3359
|
};
|
|
3229
3360
|
}
|
|
3361
|
+
var CONNECT_FAILURE_RE = /\b(ENETUNREACH|EHOSTUNREACH|ECONNREFUSED|ETIMEDOUT|ENOTFOUND|ECONNRESET|EAI_AGAIN)\b/;
|
|
3362
|
+
function isConnectFailure(err, cause) {
|
|
3363
|
+
const code = typeof err === "object" && err !== null ? err.code : void 0;
|
|
3364
|
+
if (typeof code === "string" && CONNECT_FAILURE_RE.test(code)) return true;
|
|
3365
|
+
return CONNECT_FAILURE_RE.test(cause);
|
|
3366
|
+
}
|
|
3230
3367
|
function describeLoadFailure(baseUrl, model, loadConfig, requestedMaxTokens, err) {
|
|
3231
3368
|
const metadata = runtimeMetadata2(model);
|
|
3232
3369
|
const cause = err instanceof Error ? err.message : String(err);
|
|
3370
|
+
if (isConnectFailure(err, cause)) {
|
|
3371
|
+
return [
|
|
3372
|
+
`LM Studio at ${baseUrl} did not answer for target '${metadata.targetId}' model '${model.id}'.`,
|
|
3373
|
+
"The connection failed before a load was attempted, so this is reachability rather than model sizing.",
|
|
3374
|
+
"Check that the server is running and that this host can reach it, then retry.",
|
|
3375
|
+
`SDK error: ${cause}`
|
|
3376
|
+
].join(" ");
|
|
3377
|
+
}
|
|
3233
3378
|
const context = loadConfig?.contextLength ?? model.contextWindow;
|
|
3234
3379
|
const output = requestedMaxTokens === false || requestedMaxTokens === void 0 ? model.maxTokens : requestedMaxTokens;
|
|
3235
3380
|
return [
|
|
@@ -3263,7 +3408,7 @@ function toOpenAICompletionsModel(model) {
|
|
|
3263
3408
|
};
|
|
3264
3409
|
return projected;
|
|
3265
3410
|
}
|
|
3266
|
-
async function pumpOpenAICompletions(stream2, model, context, options, hints, maxTokens) {
|
|
3411
|
+
async function pumpOpenAICompletions(stream2, model, context, options, hints, maxTokens, onGeneratedChars) {
|
|
3267
3412
|
const simple = {
|
|
3268
3413
|
...options ?? {},
|
|
3269
3414
|
maxTokens,
|
|
@@ -3278,6 +3423,9 @@ async function pumpOpenAICompletions(stream2, model, context, options, hints, ma
|
|
|
3278
3423
|
context,
|
|
3279
3424
|
simple
|
|
3280
3425
|
)) {
|
|
3426
|
+
if (onGeneratedChars && (event.type === "text_delta" || event.type === "thinking_delta")) {
|
|
3427
|
+
onGeneratedChars(event.delta.length);
|
|
3428
|
+
}
|
|
3281
3429
|
stream2.push(event);
|
|
3282
3430
|
}
|
|
3283
3431
|
stream2.end();
|
|
@@ -3290,10 +3438,16 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3290
3438
|
api: model.api,
|
|
3291
3439
|
provider: model.provider,
|
|
3292
3440
|
model: model.id,
|
|
3441
|
+
// `cacheRead` is deliberately absent. LM Studio reports no cached-token
|
|
3442
|
+
// stat on either surface: the SDK's PredictionStats has no such field and
|
|
3443
|
+
// its OpenAI-compat `usage` carries no `prompt_tokens_details`. Reporting 0
|
|
3444
|
+
// reads as "measured no reuse" when the truth is "not measured", which is
|
|
3445
|
+
// how #55 mistook a working prompt cache for a broken one. Undefined until
|
|
3446
|
+
// a response actually carries the stat; consumers already treat it as
|
|
3447
|
+
// optional.
|
|
3293
3448
|
usage: {
|
|
3294
3449
|
input: 0,
|
|
3295
3450
|
output: 0,
|
|
3296
|
-
cacheRead: 0,
|
|
3297
3451
|
cacheWrite: 0,
|
|
3298
3452
|
totalTokens: 0,
|
|
3299
3453
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }
|
|
@@ -3318,6 +3472,7 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3318
3472
|
};
|
|
3319
3473
|
if (signal && !signal.aborted) signal.addEventListener("abort", onAbort, { once: true });
|
|
3320
3474
|
else if (aborted) abortControllerOnce();
|
|
3475
|
+
let degradedWatchdog = null;
|
|
3321
3476
|
(async () => {
|
|
3322
3477
|
try {
|
|
3323
3478
|
if (aborted) throw new Error("Request was aborted");
|
|
@@ -3331,11 +3486,11 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3331
3486
|
const loadedContextWindow = await deps.discoverLoadedContext(baseUrl, model.id, controller.signal);
|
|
3332
3487
|
const budgetLimits = loadedContextWindow !== void 0 ? { contextWindow: loadedContextWindow } : void 0;
|
|
3333
3488
|
const requestedMaxTokens = remainingContextMaxTokens(model, context, options, budgetLimits);
|
|
3334
|
-
const
|
|
3335
|
-
const
|
|
3489
|
+
const requestedLoadContext = loadModelConfig(model).contextLength ?? model.contextWindow;
|
|
3490
|
+
const targetKey = `lmstudio-native|${baseUrl}`;
|
|
3336
3491
|
let loadedEntries = [];
|
|
3337
3492
|
const plan = await deps.reconcile({
|
|
3338
|
-
targetKey
|
|
3493
|
+
targetKey,
|
|
3339
3494
|
targetId: metadata.targetId,
|
|
3340
3495
|
runtimeId: "lmstudio-native",
|
|
3341
3496
|
keepModelId: model.id,
|
|
@@ -3345,17 +3500,69 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3345
3500
|
...model.contextWindow > 0 ? { modelMaxContext: model.contextWindow } : {},
|
|
3346
3501
|
listResident: async () => {
|
|
3347
3502
|
loadedEntries = await client.llm.listLoaded();
|
|
3348
|
-
return loadedEntries
|
|
3503
|
+
return residentModelInfos(loadedEntries);
|
|
3349
3504
|
},
|
|
3350
3505
|
unload: async (id) => {
|
|
3351
|
-
|
|
3506
|
+
for (const entry of loadedEntries.filter((handle) => handle.modelKey === id)) await entry.unload();
|
|
3352
3507
|
}
|
|
3353
3508
|
});
|
|
3354
3509
|
const observeOnly = plan.decision === "observe";
|
|
3355
|
-
const
|
|
3356
|
-
const
|
|
3357
|
-
|
|
3358
|
-
|
|
3510
|
+
const residencyLock = deps.lock ?? withResidencyLock;
|
|
3511
|
+
const duplicates = observeOnly ? [] : duplicateInstances(loadedEntries, model.id);
|
|
3512
|
+
if (duplicates.length > 0) {
|
|
3513
|
+
emitResidencyNotice({
|
|
3514
|
+
kind: "co-resident",
|
|
3515
|
+
level: "warning",
|
|
3516
|
+
targetId: metadata.targetId,
|
|
3517
|
+
runtimeId: "lmstudio-native",
|
|
3518
|
+
model: model.id,
|
|
3519
|
+
message: `'${metadata.targetId}' holds ${duplicates.length + 1} instances of '${model.id}'; releasing ${duplicates.length} duplicate instance(s) so one copy serves every request.`,
|
|
3520
|
+
detail: { duplicateInstances: duplicates.length }
|
|
3521
|
+
});
|
|
3522
|
+
await residencyLock(targetKey, async () => {
|
|
3523
|
+
for (const duplicate of duplicates) {
|
|
3524
|
+
try {
|
|
3525
|
+
await duplicate.unload();
|
|
3526
|
+
} catch {
|
|
3527
|
+
}
|
|
3528
|
+
}
|
|
3529
|
+
});
|
|
3530
|
+
loadedEntries = loadedEntries.filter((entry) => !duplicates.includes(entry));
|
|
3531
|
+
}
|
|
3532
|
+
const fit = fitLoadContextLength({
|
|
3533
|
+
requested: requestedLoadContext,
|
|
3534
|
+
resident: loadedEntries,
|
|
3535
|
+
keepModelId: model.id,
|
|
3536
|
+
ceiling: coResidentContextCeiling()
|
|
3537
|
+
});
|
|
3538
|
+
if (!observeOnly && !plan.keepResident && fit.clampedFrom !== void 0) {
|
|
3539
|
+
emitResidencyNotice({
|
|
3540
|
+
kind: "stress",
|
|
3541
|
+
level: "warning",
|
|
3542
|
+
targetId: metadata.targetId,
|
|
3543
|
+
runtimeId: "lmstudio-native",
|
|
3544
|
+
model: model.id,
|
|
3545
|
+
message: `loading '${model.id}' on '${metadata.targetId}' alongside ${fit.neighbours.join(", ")}: context clamped ${fit.clampedFrom} -> ${fit.contextLength} tokens to keep the KV cache in GPU memory. Unload the co-resident model or raise CLIO_CODER_LMSTUDIO_CORESIDENT_CONTEXT for the full window.`,
|
|
3546
|
+
detail: {
|
|
3547
|
+
requestedContext: fit.clampedFrom,
|
|
3548
|
+
loadContext: fit.contextLength,
|
|
3549
|
+
residentCount: fit.neighbours.length + 1
|
|
3550
|
+
}
|
|
3551
|
+
});
|
|
3552
|
+
}
|
|
3553
|
+
const loadConfig = loadModelConfig(model, { contextLength: fit.contextLength });
|
|
3554
|
+
const modelOpenConfig = observeOnly || plan.keepResident ? void 0 : loadConfig;
|
|
3555
|
+
if (plan.keepResident && loadedEntries.length > 0 && loadedContextWindow !== void 0 && loadedContextWindow < requestedLoadContext) {
|
|
3556
|
+
emitResidencyNotice({
|
|
3557
|
+
kind: "co-resident",
|
|
3558
|
+
level: "info",
|
|
3559
|
+
targetId: metadata.targetId,
|
|
3560
|
+
runtimeId: "lmstudio-native",
|
|
3561
|
+
model: model.id,
|
|
3562
|
+
message: `'${model.id}' is resident on '${metadata.targetId}' with a ${loadedContextWindow}-token window, below the ${requestedLoadContext} Clio would load; reusing the loaded instance and budgeting against ${loadedContextWindow}. Unload it in LM Studio to have Clio reload it larger.`,
|
|
3563
|
+
detail: { loadedContext: loadedContextWindow, requestedContext: requestedLoadContext }
|
|
3564
|
+
});
|
|
3565
|
+
}
|
|
3359
3566
|
const modelOpenOpts = {
|
|
3360
3567
|
signal: controller.signal,
|
|
3361
3568
|
verbose
|
|
@@ -3378,9 +3585,8 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3378
3585
|
llm = await client.llm.model(model.id, modelOpenOpts);
|
|
3379
3586
|
} catch (err) {
|
|
3380
3587
|
if (observeOnly || plan.fallbackEvict.length === 0) failWillNotFit(err);
|
|
3381
|
-
const lock = deps.lock ?? withResidencyLock;
|
|
3382
3588
|
try {
|
|
3383
|
-
llm = await
|
|
3589
|
+
llm = await residencyLock(targetKey, async () => {
|
|
3384
3590
|
for (const entry of plan.fallbackEvict) {
|
|
3385
3591
|
emitResidencyNotice({
|
|
3386
3592
|
kind: "swap",
|
|
@@ -3392,7 +3598,9 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3392
3598
|
detail: { swappedOut: entry.modelId }
|
|
3393
3599
|
});
|
|
3394
3600
|
try {
|
|
3395
|
-
|
|
3601
|
+
for (const handle of loadedEntries.filter((held) => held.modelKey === entry.modelId)) {
|
|
3602
|
+
await handle.unload();
|
|
3603
|
+
}
|
|
3396
3604
|
} catch {
|
|
3397
3605
|
}
|
|
3398
3606
|
}
|
|
@@ -3402,9 +3610,36 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3402
3610
|
failWillNotFit(retryErr);
|
|
3403
3611
|
}
|
|
3404
3612
|
}
|
|
3613
|
+
const residentList = [.../* @__PURE__ */ new Set([model.id, ...loadedEntries.map((entry) => entry.modelKey)])].join(", ");
|
|
3614
|
+
degradedWatchdog = startDegradedInferenceWatchdog({
|
|
3615
|
+
onDegraded: (report) => {
|
|
3616
|
+
emitResidencyNotice({
|
|
3617
|
+
kind: "degraded",
|
|
3618
|
+
level: "warning",
|
|
3619
|
+
targetId: metadata.targetId,
|
|
3620
|
+
runtimeId: "lmstudio-native",
|
|
3621
|
+
model: model.id,
|
|
3622
|
+
message: `'${model.id}' on '${metadata.targetId}' has generated ${report.tokens} tokens in ${Math.round(report.elapsedMs / 1e3)}s (${report.tokensPerSecond.toFixed(2)} tok/s); inference is running far below GPU speed, which is what a spill to CPU looks like. Resident there: ${residentList}. Unload a co-resident model or lower the context window.`,
|
|
3623
|
+
detail: {
|
|
3624
|
+
tokens: report.tokens,
|
|
3625
|
+
elapsedMs: report.elapsedMs,
|
|
3626
|
+
tokensPerSecond: Number(report.tokensPerSecond.toFixed(2)),
|
|
3627
|
+
residents: residentList
|
|
3628
|
+
}
|
|
3629
|
+
});
|
|
3630
|
+
}
|
|
3631
|
+
});
|
|
3405
3632
|
if (!sdkPredictionEnabled()) {
|
|
3406
3633
|
predictionDone = true;
|
|
3407
|
-
await pumpOpenAICompletions(
|
|
3634
|
+
await pumpOpenAICompletions(
|
|
3635
|
+
stream2,
|
|
3636
|
+
model,
|
|
3637
|
+
context,
|
|
3638
|
+
options,
|
|
3639
|
+
hints,
|
|
3640
|
+
requestedMaxTokens,
|
|
3641
|
+
(chars) => degradedWatchdog?.addTokens(ceilChars(chars))
|
|
3642
|
+
);
|
|
3408
3643
|
return;
|
|
3409
3644
|
}
|
|
3410
3645
|
stream2.push({ type: "start", partial: output });
|
|
@@ -3585,6 +3820,7 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3585
3820
|
signal: controller.signal,
|
|
3586
3821
|
onPredictionFragment: (fragment) => {
|
|
3587
3822
|
if (!fragment.content) return;
|
|
3823
|
+
degradedWatchdog?.addTokens(fragment.tokensCount ?? ceilChars(fragment.content.length));
|
|
3588
3824
|
if (fragment.reasoningType === "reasoningStartTag" || fragment.reasoningType === "reasoningEndTag") {
|
|
3589
3825
|
reasoningTokensAccum += fragment.tokensCount ?? 0;
|
|
3590
3826
|
return;
|
|
@@ -3678,13 +3914,16 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3678
3914
|
flushNonReasoningPending();
|
|
3679
3915
|
closeActiveText();
|
|
3680
3916
|
closeActiveThinking();
|
|
3681
|
-
|
|
3917
|
+
const reportedCache = asRecord(result.stats).cachedTokensCount;
|
|
3918
|
+
const cacheRead = typeof reportedCache === "number" && reportedCache >= 0 ? reportedCache : void 0;
|
|
3919
|
+
output.usage.input = Math.max(0, (result.stats.promptTokensCount ?? 0) - (cacheRead ?? 0));
|
|
3682
3920
|
output.usage.output = result.stats.predictedTokensCount ?? 0;
|
|
3921
|
+
output.usage.cacheRead = cacheRead;
|
|
3683
3922
|
output.usage.totalTokens = result.stats.totalTokensCount ?? output.usage.input + output.usage.output;
|
|
3684
3923
|
if (reasoningTokensAccum > 0) {
|
|
3685
3924
|
output.usage.reasoningTokens = reasoningTokensAccum;
|
|
3686
3925
|
}
|
|
3687
|
-
calculateEngineCost(model, output.usage);
|
|
3926
|
+
output.usage.cost = calculateEngineCost(model, { ...output.usage, cacheRead: cacheRead ?? 0 });
|
|
3688
3927
|
if (aborted) throw new Error("Request was aborted");
|
|
3689
3928
|
if (toolExtractionError) throw toolExtractionError;
|
|
3690
3929
|
const hadToolCall = output.content.some((block) => block.type === "toolCall");
|
|
@@ -3702,6 +3941,7 @@ function runStream(model, context, options, deps = defaultRunDeps, hints = {}) {
|
|
|
3702
3941
|
stream2.push({ type: "error", reason: output.stopReason, error: output });
|
|
3703
3942
|
stream2.end();
|
|
3704
3943
|
} finally {
|
|
3944
|
+
degradedWatchdog?.stop();
|
|
3705
3945
|
if (signal) signal.removeEventListener("abort", onAbort);
|
|
3706
3946
|
}
|
|
3707
3947
|
})();
|
|
@@ -3745,7 +3985,8 @@ var lmstudioNativeApiProvider = {
|
|
|
3745
3985
|
};
|
|
3746
3986
|
|
|
3747
3987
|
// src/domains/providers/registry.ts
|
|
3748
|
-
|
|
3988
|
+
init_esm_shims();
|
|
3989
|
+
import { readdirSync, statSync } from "node:fs";
|
|
3749
3990
|
import { join as join3 } from "node:path";
|
|
3750
3991
|
import { pathToFileURL } from "node:url";
|
|
3751
3992
|
var RUNTIME_KINDS = ["http", "sdk", "subprocess"];
|
|
@@ -3766,7 +4007,7 @@ function createRuntimeRegistry() {
|
|
|
3766
4007
|
const loadFromDir = async (dir) => {
|
|
3767
4008
|
let entries;
|
|
3768
4009
|
try {
|
|
3769
|
-
const stat =
|
|
4010
|
+
const stat = statSync(dir);
|
|
3770
4011
|
if (!stat.isDirectory()) return [];
|
|
3771
4012
|
entries = readdirSync(dir);
|
|
3772
4013
|
} catch {
|
|
@@ -3889,6 +4130,7 @@ function describeError(err) {
|
|
|
3889
4130
|
}
|
|
3890
4131
|
|
|
3891
4132
|
// src/domains/providers/credentials.ts
|
|
4133
|
+
init_esm_shims();
|
|
3892
4134
|
function credentialsPresent() {
|
|
3893
4135
|
const present = /* @__PURE__ */ new Set();
|
|
3894
4136
|
const registry = getRuntimeRegistry();
|
|
@@ -3905,7 +4147,11 @@ function credentialsPresent() {
|
|
|
3905
4147
|
return present;
|
|
3906
4148
|
}
|
|
3907
4149
|
|
|
4150
|
+
// src/domains/providers/runtimes/builtins.ts
|
|
4151
|
+
init_esm_shims();
|
|
4152
|
+
|
|
3908
4153
|
// src/domains/providers/runtimes/antigravity/antigravity-code.ts
|
|
4154
|
+
init_esm_shims();
|
|
3909
4155
|
var ANTIGRAVITY_AUTH_NOTICE = "Uses your existing Antigravity (`agy`) login. Clio stores no Antigravity credentials. agy runs its own agent harness as a subprocess; Clio maps autonomy levels onto its CLI flags but cannot mediate individual agy tool calls.";
|
|
3910
4156
|
var ANTIGRAVITY_MODELS = [
|
|
3911
4157
|
"Gemini 3.5 Flash (High)",
|
|
@@ -3962,7 +4208,11 @@ var antigravityCodeRuntime = {
|
|
|
3962
4208
|
};
|
|
3963
4209
|
var antigravity_code_default = antigravityCodeRuntime;
|
|
3964
4210
|
|
|
4211
|
+
// src/domains/providers/runtimes/claude/claude-code.ts
|
|
4212
|
+
init_esm_shims();
|
|
4213
|
+
|
|
3965
4214
|
// src/domains/providers/runtimes/claude/common.ts
|
|
4215
|
+
init_esm_shims();
|
|
3966
4216
|
var CLAUDE_CODE_AUTH_NOTICE = "Uses your existing Claude Code login from the installed `claude` command. Clio stores no Claude Code credentials.";
|
|
3967
4217
|
var CLAUDE_CODE_MODELS = [
|
|
3968
4218
|
"sonnet",
|
|
@@ -4028,6 +4278,7 @@ var claudeCodeRuntime = {
|
|
|
4028
4278
|
var claude_code_default = claudeCodeRuntime;
|
|
4029
4279
|
|
|
4030
4280
|
// src/domains/providers/runtimes/claude/claude-sdk.ts
|
|
4281
|
+
init_esm_shims();
|
|
4031
4282
|
var claudeSdkRuntime = {
|
|
4032
4283
|
id: "claude-sdk",
|
|
4033
4284
|
displayName: "Claude Agent SDK",
|
|
@@ -4054,8 +4305,12 @@ var claudeSdkRuntime = {
|
|
|
4054
4305
|
};
|
|
4055
4306
|
var claude_sdk_default = claudeSdkRuntime;
|
|
4056
4307
|
|
|
4308
|
+
// src/domains/providers/runtimes/cloud/alcf.ts
|
|
4309
|
+
init_esm_shims();
|
|
4310
|
+
|
|
4057
4311
|
// src/domains/providers/probe/http.ts
|
|
4058
|
-
|
|
4312
|
+
init_esm_shims();
|
|
4313
|
+
import { performance as performance2 } from "node:perf_hooks";
|
|
4059
4314
|
async function probeHttp(opts) {
|
|
4060
4315
|
const { response, latencyMs, error } = await runFetch(opts);
|
|
4061
4316
|
if (response === null) return { ok: false, error: error ?? "unknown transport error", latencyMs };
|
|
@@ -4105,12 +4360,12 @@ async function runFetch(opts) {
|
|
|
4105
4360
|
};
|
|
4106
4361
|
if (opts.headers) init.headers = opts.headers;
|
|
4107
4362
|
if (opts.body !== void 0) init.body = opts.body;
|
|
4108
|
-
const started =
|
|
4363
|
+
const started = performance2.now();
|
|
4109
4364
|
try {
|
|
4110
4365
|
const response = await fetch(opts.url, init);
|
|
4111
|
-
return { response, latencyMs: Math.round(
|
|
4366
|
+
return { response, latencyMs: Math.round(performance2.now() - started) };
|
|
4112
4367
|
} catch (err) {
|
|
4113
|
-
const latencyMs = Math.round(
|
|
4368
|
+
const latencyMs = Math.round(performance2.now() - started);
|
|
4114
4369
|
if (timedOut) {
|
|
4115
4370
|
return { response: null, latencyMs, error: `timeout after ${opts.timeoutMs}ms` };
|
|
4116
4371
|
}
|
|
@@ -4134,6 +4389,7 @@ function describeError2(err) {
|
|
|
4134
4389
|
}
|
|
4135
4390
|
|
|
4136
4391
|
// src/domains/providers/runtimes/common/local-synth.ts
|
|
4392
|
+
init_esm_shims();
|
|
4137
4393
|
function targetLifecycle(target) {
|
|
4138
4394
|
return target.lifecycle;
|
|
4139
4395
|
}
|
|
@@ -4227,8 +4483,12 @@ function targetRootUrl(target) {
|
|
|
4227
4483
|
return target.url ? stripRedundantV1(stripTrailingSlash(target.url)) : null;
|
|
4228
4484
|
}
|
|
4229
4485
|
|
|
4486
|
+
// src/domains/providers/runtimes/protocol/openai-compat.ts
|
|
4487
|
+
init_esm_shims();
|
|
4488
|
+
|
|
4230
4489
|
// src/domains/providers/probe/reasoning.ts
|
|
4231
|
-
|
|
4490
|
+
init_esm_shims();
|
|
4491
|
+
import { performance as performance3 } from "node:perf_hooks";
|
|
4232
4492
|
var PROMPT = "What is 2+2? Think briefly, then answer.";
|
|
4233
4493
|
function nonEmptyString(value) {
|
|
4234
4494
|
return typeof value === "string" && value.trim().length > 0;
|
|
@@ -4267,7 +4527,7 @@ async function probeOpenAICompatReasoning(opts) {
|
|
|
4267
4527
|
reasoning_effort: "low"
|
|
4268
4528
|
});
|
|
4269
4529
|
const url2 = `${trimTrailingSlash(opts.baseUrl)}/v1/chat/completions`;
|
|
4270
|
-
const started =
|
|
4530
|
+
const started = performance3.now();
|
|
4271
4531
|
try {
|
|
4272
4532
|
const response = await fetch(url2, {
|
|
4273
4533
|
method: "POST",
|
|
@@ -4275,7 +4535,7 @@ async function probeOpenAICompatReasoning(opts) {
|
|
|
4275
4535
|
body,
|
|
4276
4536
|
signal: controller.signal
|
|
4277
4537
|
});
|
|
4278
|
-
const latencyMs = Math.round(
|
|
4538
|
+
const latencyMs = Math.round(performance3.now() - started);
|
|
4279
4539
|
if (!response.ok) {
|
|
4280
4540
|
return { reasoning: false, latencyMs, error: `HTTP ${response.status}: ${response.statusText}` };
|
|
4281
4541
|
}
|
|
@@ -4284,7 +4544,7 @@ async function probeOpenAICompatReasoning(opts) {
|
|
|
4284
4544
|
if (field) return { reasoning: true, field, latencyMs };
|
|
4285
4545
|
return { reasoning: false, latencyMs };
|
|
4286
4546
|
} catch (err) {
|
|
4287
|
-
const latencyMs = Math.round(
|
|
4547
|
+
const latencyMs = Math.round(performance3.now() - started);
|
|
4288
4548
|
if (timedOut) return { reasoning: false, latencyMs, error: `timeout after ${opts.timeoutMs}ms` };
|
|
4289
4549
|
if (opts.signal?.aborted) return { reasoning: false, latencyMs, error: "aborted by caller" };
|
|
4290
4550
|
return { reasoning: false, latencyMs, error: err instanceof Error ? err.message : String(err) };
|
|
@@ -4295,6 +4555,7 @@ async function probeOpenAICompatReasoning(opts) {
|
|
|
4295
4555
|
}
|
|
4296
4556
|
|
|
4297
4557
|
// src/domains/providers/runtimes/common/probe-helpers.ts
|
|
4558
|
+
init_esm_shims();
|
|
4298
4559
|
async function probeUrl(url2, ctx, method = "GET") {
|
|
4299
4560
|
const base = { url: url2, timeoutMs: ctx.httpTimeoutMs, method };
|
|
4300
4561
|
return ctx.signal ? probeHttp({ ...base, signal: ctx.signal }) : probeHttp(base);
|
|
@@ -4335,8 +4596,11 @@ async function probeOpenAIModelCatalog(base, ctx, modelsPath = "/v1/models") {
|
|
|
4335
4596
|
...capabilitiesFromOpenAIModelEntry(row)
|
|
4336
4597
|
};
|
|
4337
4598
|
if (Object.keys(caps).length > 0) modelCapabilities[row.id] = caps;
|
|
4338
|
-
const
|
|
4339
|
-
|
|
4599
|
+
const loadedContext = loadedContextFromEntry(row) ?? (detailRow ? loadedContextFromEntry(detailRow) : void 0);
|
|
4600
|
+
const state = modelStateFromOpenAIModelEntry(row) ?? (detailRow ? modelStateFromOpenAIModelEntry(detailRow) : void 0) ?? // A reported loaded context is itself the residency answer: nothing
|
|
4601
|
+
// serves a window for a model it has not loaded.
|
|
4602
|
+
(loadedContext !== void 0 ? { state: "loaded" } : void 0);
|
|
4603
|
+
if (state) modelStates[row.id] = loadedContext === void 0 ? state : { ...state, contextLength: loadedContext };
|
|
4340
4604
|
}
|
|
4341
4605
|
return { models, modelCapabilities, modelStates };
|
|
4342
4606
|
}
|
|
@@ -4413,6 +4677,10 @@ function modelStateFromOpenAIModelEntry(row) {
|
|
|
4413
4677
|
if (loaded === false) return { state: "unloaded" };
|
|
4414
4678
|
return void 0;
|
|
4415
4679
|
}
|
|
4680
|
+
function loadedContextFromEntry(row) {
|
|
4681
|
+
const reported = firstPositiveNumber(row, ["loaded_context_length", "loadedContextLength"]);
|
|
4682
|
+
return reported === void 0 ? void 0 : Math.floor(reported);
|
|
4683
|
+
}
|
|
4416
4684
|
function statusArgsFromEntry(row) {
|
|
4417
4685
|
const status = nestedRecord(row, "status");
|
|
4418
4686
|
return argsFromStatus(status);
|
|
@@ -4835,7 +5103,11 @@ var alcfRuntime = {
|
|
|
4835
5103
|
};
|
|
4836
5104
|
var alcf_default = alcfRuntime;
|
|
4837
5105
|
|
|
5106
|
+
// src/domains/providers/runtimes/cloud/anthropic.ts
|
|
5107
|
+
init_esm_shims();
|
|
5108
|
+
|
|
4838
5109
|
// src/domains/providers/runtimes/protocol/anthropic-messages.ts
|
|
5110
|
+
init_esm_shims();
|
|
4839
5111
|
function synthesizeAnthropicMessagesModel(input) {
|
|
4840
5112
|
return synthesizeCatalogBackedModel({
|
|
4841
5113
|
target: input.target,
|
|
@@ -4887,6 +5159,7 @@ var anthropicRuntime = {
|
|
|
4887
5159
|
var anthropic_default = anthropicRuntime;
|
|
4888
5160
|
|
|
4889
5161
|
// src/domains/providers/runtimes/cloud/anthropic-max.ts
|
|
5162
|
+
init_esm_shims();
|
|
4890
5163
|
var defaultCapabilities4 = {
|
|
4891
5164
|
chat: true,
|
|
4892
5165
|
tools: true,
|
|
@@ -4929,7 +5202,11 @@ var anthropicMaxRuntime = {
|
|
|
4929
5202
|
};
|
|
4930
5203
|
var anthropic_max_default = anthropicMaxRuntime;
|
|
4931
5204
|
|
|
5205
|
+
// src/domains/providers/runtimes/cloud/bedrock.ts
|
|
5206
|
+
init_esm_shims();
|
|
5207
|
+
|
|
4932
5208
|
// src/domains/providers/runtimes/protocol/bedrock.ts
|
|
5209
|
+
init_esm_shims();
|
|
4933
5210
|
function synthesizeBedrockModel(input) {
|
|
4934
5211
|
return synthesizeCatalogBackedModel({
|
|
4935
5212
|
target: input.target,
|
|
@@ -4973,6 +5250,7 @@ var bedrockRuntime = {
|
|
|
4973
5250
|
var bedrock_default = bedrockRuntime;
|
|
4974
5251
|
|
|
4975
5252
|
// src/domains/providers/runtimes/cloud/deepseek.ts
|
|
5253
|
+
init_esm_shims();
|
|
4976
5254
|
var defaultCapabilities6 = {
|
|
4977
5255
|
chat: true,
|
|
4978
5256
|
tools: true,
|
|
@@ -5014,7 +5292,11 @@ var deepseekRuntime = {
|
|
|
5014
5292
|
};
|
|
5015
5293
|
var deepseek_default = deepseekRuntime;
|
|
5016
5294
|
|
|
5295
|
+
// src/domains/providers/runtimes/cloud/google.ts
|
|
5296
|
+
init_esm_shims();
|
|
5297
|
+
|
|
5017
5298
|
// src/domains/providers/runtimes/protocol/google.ts
|
|
5299
|
+
init_esm_shims();
|
|
5018
5300
|
function synthesizeGoogleModel(input) {
|
|
5019
5301
|
return synthesizeCatalogBackedModel({
|
|
5020
5302
|
target: input.target,
|
|
@@ -5064,6 +5346,7 @@ var googleRuntime = {
|
|
|
5064
5346
|
var google_default = googleRuntime;
|
|
5065
5347
|
|
|
5066
5348
|
// src/domains/providers/runtimes/cloud/groq.ts
|
|
5349
|
+
init_esm_shims();
|
|
5067
5350
|
var defaultCapabilities8 = {
|
|
5068
5351
|
chat: true,
|
|
5069
5352
|
tools: true,
|
|
@@ -5102,6 +5385,7 @@ var groqRuntime = {
|
|
|
5102
5385
|
var groq_default = groqRuntime;
|
|
5103
5386
|
|
|
5104
5387
|
// src/domains/providers/runtimes/cloud/mistral.ts
|
|
5388
|
+
init_esm_shims();
|
|
5105
5389
|
var defaultCapabilities9 = {
|
|
5106
5390
|
chat: true,
|
|
5107
5391
|
tools: true,
|
|
@@ -5140,6 +5424,7 @@ var mistralRuntime = {
|
|
|
5140
5424
|
var mistral_default = mistralRuntime;
|
|
5141
5425
|
|
|
5142
5426
|
// src/domains/providers/runtimes/cloud/openai.ts
|
|
5427
|
+
init_esm_shims();
|
|
5143
5428
|
var defaultCapabilities10 = {
|
|
5144
5429
|
chat: true,
|
|
5145
5430
|
tools: true,
|
|
@@ -5178,6 +5463,7 @@ var openaiRuntime = {
|
|
|
5178
5463
|
var openai_default = openaiRuntime;
|
|
5179
5464
|
|
|
5180
5465
|
// src/domains/providers/runtimes/cloud/openai-codex.ts
|
|
5466
|
+
init_esm_shims();
|
|
5181
5467
|
var defaultCapabilities11 = {
|
|
5182
5468
|
chat: true,
|
|
5183
5469
|
tools: true,
|
|
@@ -5219,6 +5505,7 @@ var openaiCodexRuntime = {
|
|
|
5219
5505
|
var openai_codex_default = openaiCodexRuntime;
|
|
5220
5506
|
|
|
5221
5507
|
// src/domains/providers/runtimes/cloud/openrouter.ts
|
|
5508
|
+
init_esm_shims();
|
|
5222
5509
|
var OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
5223
5510
|
var OPENROUTER_HEADERS = {
|
|
5224
5511
|
"HTTP-Referer": "https://github.com/iowarp/clio-coder",
|
|
@@ -5306,7 +5593,11 @@ var openrouterRuntime = {
|
|
|
5306
5593
|
};
|
|
5307
5594
|
var openrouter_default = openrouterRuntime;
|
|
5308
5595
|
|
|
5596
|
+
// src/domains/providers/runtimes/local-native/lemonade-anthropic.ts
|
|
5597
|
+
init_esm_shims();
|
|
5598
|
+
|
|
5309
5599
|
// src/domains/providers/runtimes/protocol/anthropic-compat.ts
|
|
5600
|
+
init_esm_shims();
|
|
5310
5601
|
function synthesizeAnthropicCompatModel(input) {
|
|
5311
5602
|
return synthLocalModel({
|
|
5312
5603
|
target: input.target,
|
|
@@ -5398,6 +5689,7 @@ var lemonade_anthropic_default = makeAnthropicCompatRuntime({
|
|
|
5398
5689
|
});
|
|
5399
5690
|
|
|
5400
5691
|
// src/domains/providers/runtimes/local-native/lemonade-openai.ts
|
|
5692
|
+
init_esm_shims();
|
|
5401
5693
|
var defaultCapabilities15 = {
|
|
5402
5694
|
chat: true,
|
|
5403
5695
|
tools: true,
|
|
@@ -5421,6 +5713,7 @@ var lemonade_openai_default = makeOpenAICompatRuntime({
|
|
|
5421
5713
|
});
|
|
5422
5714
|
|
|
5423
5715
|
// src/domains/providers/runtimes/local-native/llamacpp.ts
|
|
5716
|
+
init_esm_shims();
|
|
5424
5717
|
var defaultCapabilities16 = {
|
|
5425
5718
|
chat: true,
|
|
5426
5719
|
tools: true,
|
|
@@ -5494,6 +5787,7 @@ var llamacppRuntime = {
|
|
|
5494
5787
|
var llamacpp_default = llamacppRuntime;
|
|
5495
5788
|
|
|
5496
5789
|
// src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts
|
|
5790
|
+
init_esm_shims();
|
|
5497
5791
|
var defaultCapabilities17 = {
|
|
5498
5792
|
chat: true,
|
|
5499
5793
|
tools: true,
|
|
@@ -5563,6 +5857,7 @@ var llamacppAnthropicRuntime = {
|
|
|
5563
5857
|
var llamacpp_anthropic_default = llamacppAnthropicRuntime;
|
|
5564
5858
|
|
|
5565
5859
|
// src/domains/providers/runtimes/local-native/llamacpp-completion.ts
|
|
5860
|
+
init_esm_shims();
|
|
5566
5861
|
var defaultCapabilities18 = {
|
|
5567
5862
|
chat: false,
|
|
5568
5863
|
tools: false,
|
|
@@ -5732,6 +6027,7 @@ var llamacppCompletionRuntime = {
|
|
|
5732
6027
|
var llamacpp_completion_default = llamacppCompletionRuntime;
|
|
5733
6028
|
|
|
5734
6029
|
// src/domains/providers/runtimes/local-native/llamacpp-embed.ts
|
|
6030
|
+
init_esm_shims();
|
|
5735
6031
|
var defaultCapabilities19 = {
|
|
5736
6032
|
chat: false,
|
|
5737
6033
|
tools: false,
|
|
@@ -5880,6 +6176,7 @@ var llamacppEmbedRuntime = {
|
|
|
5880
6176
|
var llamacpp_embed_default = llamacppEmbedRuntime;
|
|
5881
6177
|
|
|
5882
6178
|
// src/domains/providers/runtimes/local-native/llamacpp-rerank.ts
|
|
6179
|
+
init_esm_shims();
|
|
5883
6180
|
var defaultCapabilities20 = {
|
|
5884
6181
|
chat: false,
|
|
5885
6182
|
tools: false,
|
|
@@ -5978,6 +6275,8 @@ var llamacppRerankRuntime = {
|
|
|
5978
6275
|
var llamacpp_rerank_default = llamacppRerankRuntime;
|
|
5979
6276
|
|
|
5980
6277
|
// src/domains/providers/runtimes/local-native/lmstudio-native.ts
|
|
6278
|
+
init_esm_shims();
|
|
6279
|
+
import { performance as performance4 } from "node:perf_hooks";
|
|
5981
6280
|
import { LMStudioClient as LMStudioClient2 } from "@lmstudio/sdk";
|
|
5982
6281
|
var defaultCapabilities21 = {
|
|
5983
6282
|
...EMPTY_CAPABILITIES,
|
|
@@ -6125,6 +6424,31 @@ function summaryFromV0(entry) {
|
|
|
6125
6424
|
}
|
|
6126
6425
|
return summary;
|
|
6127
6426
|
}
|
|
6427
|
+
function foldDuplicateSummaries(entries) {
|
|
6428
|
+
const byId = /* @__PURE__ */ new Map();
|
|
6429
|
+
for (const entry of entries) {
|
|
6430
|
+
const previous = byId.get(entry.id);
|
|
6431
|
+
byId.set(entry.id, previous ? mergeSummaries(previous, entry) : entry);
|
|
6432
|
+
}
|
|
6433
|
+
return [...byId.values()];
|
|
6434
|
+
}
|
|
6435
|
+
function mergeSummaries(first, second) {
|
|
6436
|
+
const [primary, secondary] = second.loaded === true && first.loaded !== true ? [second, first] : [first, second];
|
|
6437
|
+
const merged = { id: primary.id };
|
|
6438
|
+
const loaded = primary.loaded ?? secondary.loaded;
|
|
6439
|
+
if (loaded !== void 0) merged.loaded = loaded;
|
|
6440
|
+
const loadedContextLength = primary.loadedContextLength ?? secondary.loadedContextLength;
|
|
6441
|
+
if (loadedContextLength !== void 0) merged.loadedContextLength = loadedContextLength;
|
|
6442
|
+
const maxContextLength = primary.maxContextLength ?? secondary.maxContextLength;
|
|
6443
|
+
if (maxContextLength !== void 0) merged.maxContextLength = maxContextLength;
|
|
6444
|
+
const vision = primary.vision ?? secondary.vision;
|
|
6445
|
+
if (vision !== void 0) merged.vision = vision;
|
|
6446
|
+
const tools = primary.tools ?? secondary.tools;
|
|
6447
|
+
if (tools !== void 0) merged.tools = tools;
|
|
6448
|
+
const reasoning = primary.reasoning ?? secondary.reasoning;
|
|
6449
|
+
if (reasoning !== void 0) merged.reasoning = reasoning;
|
|
6450
|
+
return merged;
|
|
6451
|
+
}
|
|
6128
6452
|
function selectCapabilityEntry(entries, target) {
|
|
6129
6453
|
const configured = target.defaultModel?.trim();
|
|
6130
6454
|
if (configured) {
|
|
@@ -6155,7 +6479,9 @@ function modelStatesFromSummaries(entries) {
|
|
|
6155
6479
|
const out = {};
|
|
6156
6480
|
for (const entry of entries) {
|
|
6157
6481
|
if (entry.loaded === void 0) continue;
|
|
6158
|
-
|
|
6482
|
+
const status = { state: entry.loaded ? "loaded" : "unloaded" };
|
|
6483
|
+
if (entry.loaded && entry.loadedContextLength !== void 0) status.contextLength = entry.loadedContextLength;
|
|
6484
|
+
out[entry.id] = status;
|
|
6159
6485
|
}
|
|
6160
6486
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
6161
6487
|
}
|
|
@@ -6184,8 +6510,11 @@ async function probeApiV1Models(target, ctx, headers) {
|
|
|
6184
6510
|
if (headers) opts.headers = headers;
|
|
6185
6511
|
const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
|
|
6186
6512
|
if (!result.ok) return result;
|
|
6187
|
-
|
|
6188
|
-
|
|
6513
|
+
return probeResultFromV1Models(result.data, target, result.latencyMs);
|
|
6514
|
+
}
|
|
6515
|
+
function probeResultFromV1Models(data, target, latencyMs) {
|
|
6516
|
+
const entries = v1ModelEntries(data).map(summaryFromV1).filter((entry) => entry !== null);
|
|
6517
|
+
return probeResultFromSummaries(entries, target, latencyMs);
|
|
6189
6518
|
}
|
|
6190
6519
|
async function probeApiV0Models(target, ctx, headers) {
|
|
6191
6520
|
const opts = {
|
|
@@ -6198,7 +6527,8 @@ async function probeApiV0Models(target, ctx, headers) {
|
|
|
6198
6527
|
const entries = v0ModelEntries(result.data).map(summaryFromV0).filter((entry) => entry !== null);
|
|
6199
6528
|
return probeResultFromSummaries(entries, target, result.latencyMs);
|
|
6200
6529
|
}
|
|
6201
|
-
function probeResultFromSummaries(
|
|
6530
|
+
function probeResultFromSummaries(rows, target, latencyMs) {
|
|
6531
|
+
const entries = foldDuplicateSummaries(rows);
|
|
6202
6532
|
const models = entries.map((entry) => entry.id);
|
|
6203
6533
|
const capabilityEntry = selectCapabilityEntry(entries, target);
|
|
6204
6534
|
const discoveredCapabilities = capabilitiesFromModelEntry(capabilityEntry);
|
|
@@ -6226,13 +6556,13 @@ var lmstudioNativeRuntime = {
|
|
|
6226
6556
|
const built = buildClient(target, ctx);
|
|
6227
6557
|
if ("error" in built) return { ok: false, error: built.error };
|
|
6228
6558
|
const client = built;
|
|
6229
|
-
const started =
|
|
6559
|
+
const started = performance4.now();
|
|
6230
6560
|
try {
|
|
6231
6561
|
const [version, apiModels] = await Promise.all([
|
|
6232
6562
|
withTimeout(client.system.getLMStudioVersion(), ctx.httpTimeoutMs, ctx.signal),
|
|
6233
6563
|
probeApiModels(target, ctx)
|
|
6234
6564
|
]);
|
|
6235
|
-
const latencyMs =
|
|
6565
|
+
const latencyMs = Math.round(performance4.now() - started);
|
|
6236
6566
|
const result = { ok: true, latencyMs, serverVersion: version.version };
|
|
6237
6567
|
if (apiModels.ok) {
|
|
6238
6568
|
if (apiModels.models) result.models = apiModels.models;
|
|
@@ -6245,7 +6575,7 @@ var lmstudioNativeRuntime = {
|
|
|
6245
6575
|
} catch (err) {
|
|
6246
6576
|
return {
|
|
6247
6577
|
ok: false,
|
|
6248
|
-
latencyMs:
|
|
6578
|
+
latencyMs: Math.round(performance4.now() - started),
|
|
6249
6579
|
error: err instanceof Error ? err.message : String(err)
|
|
6250
6580
|
};
|
|
6251
6581
|
}
|
|
@@ -6311,6 +6641,7 @@ var lmstudioNativeRuntime = {
|
|
|
6311
6641
|
var lmstudio_native_default = lmstudioNativeRuntime;
|
|
6312
6642
|
|
|
6313
6643
|
// src/domains/providers/runtimes/local-native/ollama-native.ts
|
|
6644
|
+
init_esm_shims();
|
|
6314
6645
|
var defaultCapabilities22 = {
|
|
6315
6646
|
chat: true,
|
|
6316
6647
|
tools: true,
|
|
@@ -6392,6 +6723,7 @@ var ollamaNativeRuntime = {
|
|
|
6392
6723
|
var ollama_native_default = ollamaNativeRuntime;
|
|
6393
6724
|
|
|
6394
6725
|
// src/domains/providers/runtimes/local-native/sglang.ts
|
|
6726
|
+
init_esm_shims();
|
|
6395
6727
|
var defaultCapabilities23 = {
|
|
6396
6728
|
chat: true,
|
|
6397
6729
|
tools: true,
|
|
@@ -6415,6 +6747,7 @@ var sglang_default = makeOpenAICompatRuntime({
|
|
|
6415
6747
|
});
|
|
6416
6748
|
|
|
6417
6749
|
// src/domains/providers/runtimes/local-native/vllm.ts
|
|
6750
|
+
init_esm_shims();
|
|
6418
6751
|
var defaultCapabilities24 = {
|
|
6419
6752
|
chat: true,
|
|
6420
6753
|
tools: true,
|
|
@@ -6476,6 +6809,7 @@ function registerBuiltinRuntimes(registry) {
|
|
|
6476
6809
|
}
|
|
6477
6810
|
|
|
6478
6811
|
// src/domains/providers/eligibility.ts
|
|
6812
|
+
init_esm_shims();
|
|
6479
6813
|
function isTargetEligibleRuntime(runtime) {
|
|
6480
6814
|
return runtime.kind === "http" || runtime.id === "claude-sdk" || runtime.id === "claude-code" || runtime.id === "antigravity-code";
|
|
6481
6815
|
}
|
|
@@ -6487,6 +6821,7 @@ function isDispatchEligibleRuntime(runtime) {
|
|
|
6487
6821
|
}
|
|
6488
6822
|
|
|
6489
6823
|
// src/domains/providers/support.ts
|
|
6824
|
+
init_esm_shims();
|
|
6490
6825
|
var SUMMARY_BY_RUNTIME_ID = {
|
|
6491
6826
|
alcf: "ALCF inference gateway (Sophia/Metis) via Globus",
|
|
6492
6827
|
anthropic: "Anthropic API",
|
|
@@ -6617,6 +6952,7 @@ function resolveProviderReference(input, settings, getRuntime) {
|
|
|
6617
6952
|
}
|
|
6618
6953
|
|
|
6619
6954
|
// src/domains/providers/model-discovery.ts
|
|
6955
|
+
init_esm_shims();
|
|
6620
6956
|
function uniqueModels(ids) {
|
|
6621
6957
|
const seen = /* @__PURE__ */ new Set();
|
|
6622
6958
|
const out = [];
|
|
@@ -6628,8 +6964,22 @@ function uniqueModels(ids) {
|
|
|
6628
6964
|
}
|
|
6629
6965
|
return out;
|
|
6630
6966
|
}
|
|
6631
|
-
function
|
|
6632
|
-
|
|
6967
|
+
function loadedContextWindowForModel(status, modelId) {
|
|
6968
|
+
const reported = status?.discoveredModelStates?.[modelId]?.contextLength;
|
|
6969
|
+
return typeof reported === "number" && Number.isFinite(reported) && reported > 0 ? reported : null;
|
|
6970
|
+
}
|
|
6971
|
+
function modelResidencyForStatus(status, modelId) {
|
|
6972
|
+
if (loadedContextWindowForModel(status, modelId) !== null) return "resident";
|
|
6973
|
+
switch (status?.discoveredModelStates?.[modelId]?.state) {
|
|
6974
|
+
case "loaded":
|
|
6975
|
+
return "resident";
|
|
6976
|
+
case "loading":
|
|
6977
|
+
return "loading";
|
|
6978
|
+
case "unloaded":
|
|
6979
|
+
return "absent";
|
|
6980
|
+
default:
|
|
6981
|
+
return "unknown";
|
|
6982
|
+
}
|
|
6633
6983
|
}
|
|
6634
6984
|
function hasLiveModelCatalog(status) {
|
|
6635
6985
|
if (status.discoveredModelsSource === "probe" || status.discoveredModelsSource === "cache") return true;
|
|
@@ -6691,10 +7041,18 @@ function canonicalizeWireModelId(status, requested) {
|
|
|
6691
7041
|
return matches.length === 1 ? matches[0] ?? requested : requested;
|
|
6692
7042
|
}
|
|
6693
7043
|
|
|
7044
|
+
// src/domains/providers/index.ts
|
|
7045
|
+
init_esm_shims();
|
|
7046
|
+
|
|
7047
|
+
// src/domains/providers/extension.ts
|
|
7048
|
+
init_esm_shims();
|
|
7049
|
+
|
|
6694
7050
|
// src/engine/apis/index.ts
|
|
7051
|
+
init_esm_shims();
|
|
6695
7052
|
import { registerApiProvider } from "@earendil-works/pi-ai/compat";
|
|
6696
7053
|
|
|
6697
7054
|
// src/engine/apis/ollama-native.ts
|
|
7055
|
+
init_esm_shims();
|
|
6698
7056
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
6699
7057
|
import { createAssistantMessageEventStream as createAssistantMessageEventStream3 } from "@earendil-works/pi-ai";
|
|
6700
7058
|
import {
|
|
@@ -7072,14 +7430,15 @@ function registerClioApiProviders() {
|
|
|
7072
7430
|
}
|
|
7073
7431
|
|
|
7074
7432
|
// src/domains/providers/knowledge-base-path.ts
|
|
7075
|
-
|
|
7433
|
+
init_esm_shims();
|
|
7434
|
+
import { existsSync as existsSync2, statSync as statSync2 } from "node:fs";
|
|
7076
7435
|
import { delimiter, dirname as dirname2, join as join4 } from "node:path";
|
|
7077
7436
|
import { fileURLToPath } from "node:url";
|
|
7078
7437
|
var MODEL_CATALOG_OVERLAY_DIR = "model-catalog.d";
|
|
7079
7438
|
var MODEL_CATALOG_DIRS_ENV = "CLIO_CODER_MODEL_CATALOG_DIRS";
|
|
7080
7439
|
function isDirectory(path) {
|
|
7081
7440
|
try {
|
|
7082
|
-
return
|
|
7441
|
+
return statSync2(path).isDirectory();
|
|
7083
7442
|
} catch {
|
|
7084
7443
|
return false;
|
|
7085
7444
|
}
|
|
@@ -7148,6 +7507,7 @@ function resolveProviderKnowledgeBaseRoots(importMetaUrl, options = {}) {
|
|
|
7148
7507
|
}
|
|
7149
7508
|
|
|
7150
7509
|
// src/domains/providers/plugins.ts
|
|
7510
|
+
init_esm_shims();
|
|
7151
7511
|
import { join as join5 } from "node:path";
|
|
7152
7512
|
function extractPluginPackages(settings) {
|
|
7153
7513
|
if (!settings || typeof settings !== "object") return [];
|
|
@@ -7182,9 +7542,10 @@ async function loadPluginRuntimes(registry, settings) {
|
|
|
7182
7542
|
}
|
|
7183
7543
|
|
|
7184
7544
|
// src/domains/providers/types/knowledge-base.ts
|
|
7185
|
-
|
|
7545
|
+
init_esm_shims();
|
|
7546
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
7547
|
+
import { readdirSync as readdirSync2, readFileSync as readFileSync2, statSync as statSync3 } from "node:fs";
|
|
7186
7548
|
import { join as join6 } from "node:path";
|
|
7187
|
-
import { parse as parseYaml } from "yaml";
|
|
7188
7549
|
var FileKnowledgeBase = class {
|
|
7189
7550
|
roots;
|
|
7190
7551
|
loaded = [];
|
|
@@ -7199,7 +7560,7 @@ var FileKnowledgeBase = class {
|
|
|
7199
7560
|
for (const file of files) {
|
|
7200
7561
|
const name = root.label ? `${root.label}:${file.name}` : file.name;
|
|
7201
7562
|
const raw = readFileSync2(file.path, "utf8");
|
|
7202
|
-
const parsed =
|
|
7563
|
+
const parsed = (0, import_yaml.parse)(raw);
|
|
7203
7564
|
if (!Array.isArray(parsed)) {
|
|
7204
7565
|
throw new Error(`knowledge base file ${name} must be a YAML list of KnowledgeBaseEntry`);
|
|
7205
7566
|
}
|
|
@@ -7238,7 +7599,7 @@ function normalizeRoots(root) {
|
|
|
7238
7599
|
if (dir.length === 0 || seen.has(dir)) continue;
|
|
7239
7600
|
let isRootDir = false;
|
|
7240
7601
|
try {
|
|
7241
|
-
isRootDir =
|
|
7602
|
+
isRootDir = statSync3(dir).isDirectory();
|
|
7242
7603
|
} catch (err) {
|
|
7243
7604
|
if (raw.optional === true) continue;
|
|
7244
7605
|
throw err;
|
|
@@ -7705,12 +8066,14 @@ function createProvidersBundle(context) {
|
|
|
7705
8066
|
}
|
|
7706
8067
|
|
|
7707
8068
|
// src/domains/providers/manifest.ts
|
|
8069
|
+
init_esm_shims();
|
|
7708
8070
|
var ProvidersManifest = {
|
|
7709
8071
|
name: "providers",
|
|
7710
8072
|
dependsOn: ["config"]
|
|
7711
8073
|
};
|
|
7712
8074
|
|
|
7713
8075
|
// src/domains/providers/resolver.ts
|
|
8076
|
+
init_esm_shims();
|
|
7714
8077
|
var GLOB_CHARS = /[*?[]/;
|
|
7715
8078
|
function isThinkingLevel(token) {
|
|
7716
8079
|
return VALID_THINKING_LEVELS.includes(token);
|
|
@@ -7809,6 +8172,7 @@ function resolveModelReference(rawPattern, providers) {
|
|
|
7809
8172
|
}
|
|
7810
8173
|
|
|
7811
8174
|
// src/domains/providers/runtime-resolution.ts
|
|
8175
|
+
init_esm_shims();
|
|
7812
8176
|
function diagnostic(severity, code, message) {
|
|
7813
8177
|
return { severity, code, message };
|
|
7814
8178
|
}
|
|
@@ -7993,12 +8357,14 @@ function resolveRuntimeTarget(providers, input) {
|
|
|
7993
8357
|
const capabilityResolution = modelCapabilitiesFor(providers, status, wireModelId);
|
|
7994
8358
|
const capabilities = { ...capabilityResolution.capabilities };
|
|
7995
8359
|
const probedContextWindow = probeCapabilitiesForModel(status, wireModelId)?.contextWindow ?? null;
|
|
8360
|
+
const loadedContextWindow = loadedContextWindowForModel(status, wireModelId);
|
|
7996
8361
|
const contextWindowDetails = resolveContextWindowDetails(
|
|
7997
8362
|
target,
|
|
7998
8363
|
runtime,
|
|
7999
8364
|
wireModelId,
|
|
8000
8365
|
providers.knowledgeBase,
|
|
8001
|
-
probedContextWindow
|
|
8366
|
+
probedContextWindow,
|
|
8367
|
+
loadedContextWindow
|
|
8002
8368
|
);
|
|
8003
8369
|
capabilities.contextWindow = contextWindowDetails.effectiveContextWindow;
|
|
8004
8370
|
if (contextWindowDetails.warning) {
|
|
@@ -8075,6 +8441,10 @@ function refineRuntimeTargetWithModelHints(target, model, knowledgeBase) {
|
|
|
8075
8441
|
target.wireModelId,
|
|
8076
8442
|
knowledgeBase ?? null,
|
|
8077
8443
|
target.contextWindowDetails.probedContextWindow,
|
|
8444
|
+
// A synthesized model hint carries the model's declared window, never the
|
|
8445
|
+
// one the backend has open. Re-resolving without the loaded number would
|
|
8446
|
+
// hand the planner the declared window back on the first refinement.
|
|
8447
|
+
target.contextWindowDetails.loadedContextWindow,
|
|
8078
8448
|
modelHintContextWindow
|
|
8079
8449
|
);
|
|
8080
8450
|
capabilities.contextWindow = contextWindowDetails.effectiveContextWindow;
|
|
@@ -8139,7 +8509,7 @@ var FALLBACK_CONTEXT_WINDOW = CLIO_MIN_CONTEXT_WINDOW;
|
|
|
8139
8509
|
function positiveWindow2(value) {
|
|
8140
8510
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
|
|
8141
8511
|
}
|
|
8142
|
-
function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase, probedContextWindow, modelHintContextWindow) {
|
|
8512
|
+
function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase, probedContextWindow, loadedContextWindow = null, modelHintContextWindow) {
|
|
8143
8513
|
const catalogModel = getCatalogModelForRuntime(runtime.id, wireModelId);
|
|
8144
8514
|
const kbHit = knowledgeBase?.lookup(wireModelId) ?? null;
|
|
8145
8515
|
let modelDeclared;
|
|
@@ -8160,13 +8530,17 @@ function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase
|
|
|
8160
8530
|
const runtimeDefault = positiveWindow2(runtime.defaultCapabilities?.contextWindow);
|
|
8161
8531
|
const declaredContextWindow = modelDeclared ?? runtimeDefault ?? FALLBACK_CONTEXT_WINDOW;
|
|
8162
8532
|
const desired = Math.max(declaredContextWindow, DESIRED_CONTEXT_WINDOW);
|
|
8533
|
+
const loadedWindow = positiveWindow2(loadedContextWindow);
|
|
8163
8534
|
const probeWindow = positiveWindow2(probedContextWindow);
|
|
8164
8535
|
const overrideWindow = positiveWindow2(target.capabilities?.contextWindow);
|
|
8165
8536
|
let effective;
|
|
8166
8537
|
let source;
|
|
8167
|
-
if (
|
|
8538
|
+
if (loadedWindow !== void 0) {
|
|
8539
|
+
effective = loadedWindow;
|
|
8540
|
+
source = "loaded";
|
|
8541
|
+
} else if (probeWindow !== void 0) {
|
|
8168
8542
|
effective = probeWindow;
|
|
8169
|
-
source =
|
|
8543
|
+
source = "probe";
|
|
8170
8544
|
} else if (overrideWindow !== void 0) {
|
|
8171
8545
|
effective = overrideWindow;
|
|
8172
8546
|
source = "target-override";
|
|
@@ -8193,7 +8567,7 @@ function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase
|
|
|
8193
8567
|
return {
|
|
8194
8568
|
declaredContextWindow,
|
|
8195
8569
|
probedContextWindow,
|
|
8196
|
-
loadedContextWindow:
|
|
8570
|
+
loadedContextWindow: loadedWindow ?? null,
|
|
8197
8571
|
desiredContextWindow: desired,
|
|
8198
8572
|
effectiveContextWindow: effective,
|
|
8199
8573
|
contextWindowSource: source,
|
|
@@ -8203,6 +8577,7 @@ function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase
|
|
|
8203
8577
|
}
|
|
8204
8578
|
|
|
8205
8579
|
// src/domains/providers/types/cost-provenance.ts
|
|
8580
|
+
init_esm_shims();
|
|
8206
8581
|
function normalizeCostProvenance(value) {
|
|
8207
8582
|
return value ?? "unknown";
|
|
8208
8583
|
}
|
|
@@ -8274,7 +8649,7 @@ export {
|
|
|
8274
8649
|
listProviderSupportEntries,
|
|
8275
8650
|
configuredTargetsForRuntime,
|
|
8276
8651
|
resolveProviderReference,
|
|
8277
|
-
|
|
8652
|
+
modelResidencyForStatus,
|
|
8278
8653
|
modelCandidatesForStatus,
|
|
8279
8654
|
modelIdsForStatus,
|
|
8280
8655
|
canonicalizeWireModelId,
|
|
@@ -8287,4 +8662,4 @@ export {
|
|
|
8287
8662
|
normalizeCostProvenance,
|
|
8288
8663
|
ProvidersDomainModule
|
|
8289
8664
|
};
|
|
8290
|
-
//# sourceMappingURL=chunk-
|
|
8665
|
+
//# sourceMappingURL=chunk-H6F6BYOH.js.map
|