@iowarp/clio-coder 0.3.8 → 0.3.9
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 +49 -0
- package/README.md +7 -3
- package/dist/{acp-U67UHUK2.js → acp-7LOELQFP.js} +6 -6
- package/dist/{agents-YU6SGALZ.js → agents-FIBG2SHA.js} +27 -25
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-5ZPJOIVG.js → auth-OI4LIH2I.js} +11 -12
- package/dist/{builtins-C6JMZVV6.js → builtins-AD25UL3C.js} +5 -5
- package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
- package/dist/chunk-3DPEIQKN.js +113 -0
- package/dist/{chunk-4SPRNWDE.js → chunk-3DUR4WUA.js} +15 -15
- package/dist/{chunk-VHN4MY6O.js → chunk-3MRC2YSQ.js} +2 -2
- package/dist/{chunk-5DHKRSMQ.js → chunk-3UUY7R3Z.js} +11 -7
- package/dist/{chunk-IGWKHNIQ.js → chunk-3V5AYSEQ.js} +8 -8
- package/dist/{chunk-FHJEP5SW.js → chunk-465CC7FK.js} +8 -5
- package/dist/{chunk-5WIGXA4T.js → chunk-47CMYGET.js} +111 -4
- package/dist/{chunk-A3WNZD3P.js → chunk-4H6ULJ3H.js} +67 -21
- package/dist/{chunk-TB5666IT.js → chunk-4LJX2PUC.js} +3 -3
- package/dist/{chunk-XWSF374K.js → chunk-56KB5IJP.js} +2 -2
- package/dist/{chunk-SPULKLCF.js → chunk-5DQRIYDZ.js} +2 -2
- package/dist/{chunk-2HEJ2F35.js → chunk-5HFBWUMU.js} +20 -8
- package/dist/{chunk-WNIJTQQK.js → chunk-5PVQ4SRS.js} +78 -6
- package/dist/{chunk-DYIM5TJT.js → chunk-5QKCQQ3E.js} +262 -6
- package/dist/{chunk-TYPGUK6W.js → chunk-5T7RBWN2.js} +111 -5
- package/dist/{chunk-IIZWH4XA.js → chunk-774ILSRL.js} +2 -2
- package/dist/chunk-7C6RYZGQ.js +391 -0
- package/dist/{chunk-TANS5ZJS.js → chunk-AD7Y7STJ.js} +3 -3
- package/dist/{chunk-RWSI4YD7.js → chunk-AEYBF3TB.js} +33 -12
- package/dist/{chunk-DGSYXYMX.js → chunk-AMKHQW3C.js} +2 -2
- package/dist/{chunk-VWZOAB7K.js → chunk-B5XRQOLB.js} +7 -7
- package/dist/{chunk-WXY7KU3G.js → chunk-BVDVID7E.js} +2 -2
- package/dist/{chunk-PMDBGQSJ.js → chunk-CA42X6KT.js} +2 -2
- package/dist/{chunk-HLE42MG7.js → chunk-D73KXYPF.js} +3 -3
- package/dist/{chunk-5Q2VVUKB.js → chunk-DG4M6ZUE.js} +3 -3
- package/dist/{chunk-ME6CCNFO.js → chunk-EBOC7MT3.js} +6 -6
- package/dist/{chunk-MXKJU4JB.js → chunk-ECUO3KDP.js} +48 -7
- package/dist/{chunk-26LEYJZH.js → chunk-FALJGAWU.js} +2 -2
- package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
- package/dist/{chunk-7RGZWPB6.js → chunk-GAYUJ7LE.js} +67 -13
- package/dist/{chunk-VCBR6CU7.js → chunk-HAY4ZE2P.js} +2 -2
- package/dist/{chunk-FBVTI2TJ.js → chunk-HCBCAYZU.js} +11 -130
- package/dist/{chunk-WSB3FPX7.js → chunk-HJB5IUKP.js} +32 -136
- package/dist/{chunk-J3YUBZWY.js → chunk-HKO36JWF.js} +33 -5
- package/dist/{chunk-E77JEWSD.js → chunk-HPCTNZM2.js} +6 -36
- package/dist/{chunk-FJ3H4MN5.js → chunk-IHKBWSXF.js} +2 -2
- package/dist/{chunk-NMPKI6XL.js → chunk-JEQQR47K.js} +37 -18
- package/dist/{chunk-3BINW3FP.js → chunk-KV2AOLDF.js} +24 -4
- package/dist/{chunk-YS5VLNH5.js → chunk-LXPJXFM5.js} +7 -7
- package/dist/{chunk-7RFXX52T.js → chunk-MIX5N5AC.js} +271 -41
- package/dist/{chunk-K4XHGFR5.js → chunk-MLOK6ZOS.js} +1297 -218
- package/dist/{chunk-ZNLWCMVZ.js → chunk-MV2VUEJC.js} +2 -2
- package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
- package/dist/{chunk-5H3GB5BO.js → chunk-N3PBVRTZ.js} +4 -382
- package/dist/{chunk-2HFZQUHL.js → chunk-N5XKWMDW.js} +17 -7
- package/dist/{chunk-5C3AQNDW.js → chunk-NNNWO6F2.js} +124 -36
- package/dist/{chunk-GU2UIAFZ.js → chunk-NQ6UCCOD.js} +3 -3
- package/dist/{chunk-N22QMJKY.js → chunk-NZU6YDNV.js} +4 -4
- package/dist/{chunk-ZVJ5BLO2.js → chunk-O6I4CIEU.js} +151 -13
- package/dist/{chunk-XN3L4EYL.js → chunk-OEDBCISO.js} +2 -2
- package/dist/{chunk-VAWNZU7Z.js → chunk-P3JGPQFL.js} +2 -2
- package/dist/{chunk-IJ7RPIYJ.js → chunk-PNY46YEY.js} +20 -3
- package/dist/{chunk-U6MBIEMB.js → chunk-PZ4I4JE2.js} +56 -35
- package/dist/{chunk-GPIEI3LY.js → chunk-QQ7EKM72.js} +2 -2
- package/dist/{chunk-WLFILSD5.js → chunk-R7LNVMCS.js} +66 -28
- package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
- package/dist/chunk-RKKLTLYB.js +45 -0
- package/dist/{chunk-TT36MB5S.js → chunk-RKRLDWD3.js} +3 -1
- package/dist/{chunk-TTHACPOM.js → chunk-S4COXYBG.js} +456 -18
- package/dist/{chunk-WWCZ5F23.js → chunk-T3Z6VAAF.js} +69 -10
- package/dist/{chunk-GN57SG4G.js → chunk-TD7UE2L5.js} +9 -7
- package/dist/{chunk-TLQJPP24.js → chunk-TEO2TLVN.js} +523 -322
- package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
- package/dist/{chunk-KTYTFRMB.js → chunk-VKBMFOYV.js} +17 -15
- package/dist/{chunk-PT7HYKEM.js → chunk-VO2LKSTM.js} +2 -2
- package/dist/{chunk-P43ETTHK.js → chunk-VPTUJU4P.js} +2 -2
- package/dist/{chunk-WEH5XRJQ.js → chunk-WIE7ZOSW.js} +2 -2
- package/dist/{chunk-EMYUUSFG.js → chunk-WXCJ7VME.js} +5 -5
- package/dist/{chunk-4DGYLA73.js → chunk-XDOQXGFO.js} +22 -7
- package/dist/{chunk-JOZYP4GM.js → chunk-YKOFT37S.js} +5 -5
- package/dist/chunk-YSEHGPCT.js +127 -0
- package/dist/{chunk-HFSBBKSQ.js → chunk-YW7UVM5V.js} +138 -3
- package/dist/cli/index.js +27 -27
- package/dist/{clio-QVTYJ57A.js → clio-LT5V7SSZ.js} +6 -6
- package/dist/{code-nav-FGGFIE7L.js → code-nav-LMW275PA.js} +4 -4
- package/dist/{config-LW5IJFQN.js → config-RXS5T3JT.js} +71 -43
- package/dist/{configure-7XIZCOU4.js → configure-2WYWSCSD.js} +14 -15
- package/dist/{context-Y6Y7QPR6.js → context-I3BTOTCS.js} +12 -12
- package/dist/{context-L3WL3X7K.js → context-MVOORGMF.js} +34 -33
- package/dist/{context-N52ZA626.js → context-PALKKQYL.js} +20 -20
- package/dist/{context-clear-MBQRLSDQ.js → context-clear-N2WOYZ2K.js} +34 -33
- package/dist/{context-index-HVMFQHK3.js → context-index-HNG3MOME.js} +2 -2
- package/dist/{context-working-set-GS6DSO7F.js → context-working-set-MIEVECVZ.js} +10 -11
- package/dist/{dispatch-runner-22ZCNOM3.js → dispatch-runner-VVA4SRRH.js} +34 -33
- package/dist/doctor-TWBWFK5V.js +165 -0
- package/dist/{eval-BEC2WHDA.js → eval-IJ5VEZDJ.js} +2016 -142
- package/dist/{evidence-REJUMSKM.js → evidence-L5APPXNV.js} +29 -28
- package/dist/{evolve-PY5ZBA5K.js → evolve-RGNKFJ52.js} +29 -28
- package/dist/{extensions-HVKU65YU.js → extensions-7WYWUX5A.js} +9 -3
- package/dist/{fleet-7WZEWRFA.js → fleet-6CNVBZZP.js} +87 -55
- package/dist/{fleet-commands-UVHWM76J.js → fleet-commands-L2SXSYEI.js} +6 -6
- package/dist/{fleet-graph-6ULH7PES.js → fleet-graph-2J3OOIPO.js} +14 -12
- package/dist/{fleet-preflight-J53T6CCE.js → fleet-preflight-CZRJ4JP5.js} +3 -4
- package/dist/{fleet-validate-72PC4SLA.js → fleet-validate-C5RI6DP7.js} +16 -15
- package/dist/{init-OG3TPGQG.js → init-VBN2ACVA.js} +50 -48
- package/dist/{library-CNTMPLRF.js → library-JHGUMLY2.js} +13 -11
- package/dist/{memory-6IS7F275.js → memory-K4OQIYWG.js} +31 -30
- package/dist/{models-ENRJDA5W.js → models-2NCZUWDD.js} +23 -22
- package/dist/{monitor-XLDVO7TN.js → monitor-MMVTJABD.js} +35 -34
- package/dist/{orchestrator-6KSPYRHA.js → orchestrator-ZKBPCHW6.js} +1627 -294
- package/dist/{reset-RZ4ER727.js → reset-DD5JGOY3.js} +3 -3
- package/dist/{run-Y2CNK5RU.js → run-QEGNX7FL.js} +56 -55
- package/dist/{share-A55GYP6Z.js → share-JKD3BQMW.js} +13 -11
- package/dist/{skills-ALC5J6AT.js → skills-LMQIKDOZ.js} +14 -12
- package/dist/{skills-eval-JPBEBYQU.js → skills-eval-I7X2774U.js} +34 -32
- package/dist/{steer-GGWFUJUD.js → steer-CF5TDANS.js} +3 -3
- package/dist/{support-MIETYA5E.js → support-I7LOJLIF.js} +4 -4
- package/dist/{targets-VGNXIR3S.js → targets-RUSR6B5Z.js} +58 -32
- package/dist/{terminal-lease-WOBR64YA.js → terminal-lease-QYVORFR4.js} +6 -4
- package/dist/{trace-PNCASAXC.js → trace-ODOQIVIW.js} +61 -6
- package/dist/{upgrade-FUSUAGHR.js → upgrade-XANW3FXB.js} +17 -16
- package/dist/{usage-N4MKVHKD.js → usage-4H7ZRXQT.js} +88 -44
- package/dist/{verifiers-YAWOJ3H2.js → verifiers-UZXNBZEB.js} +6 -6
- package/dist/{verify-LTDHYBGY.js → verify-BVKWTNDL.js} +5 -5
- package/dist/{wiki-generate-6M7GHTBJ.js → wiki-generate-MY7WV2QI.js} +49 -47
- package/dist/worker/entry.js +29 -33
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +1 -1
- package/docs/artifact-versions.md +6 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +23 -2
- package/docs/commands-and-modes.md +1 -1
- package/docs/configuration-and-targets.md +30 -3
- package/docs/context-engine.md +63 -4
- package/docs/documentation-coverage.md +3 -3
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +2 -0
- package/docs/eval-runner.md +262 -11
- package/docs/evals-internal.md +72 -2
- package/docs/evidence-and-memory.md +11 -10
- package/docs/evolution.md +1 -1
- package/docs/extensions-and-sharing.md +3 -1
- package/docs/fleet-dispatch.md +4 -4
- package/docs/installation-and-lifecycle.md +1 -1
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +1 -1
- package/docs/observability.md +53 -2
- package/docs/proactive-memory.md +127 -14
- package/docs/prompt-envelope-and-tools.md +19 -1
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +19 -3
- package/docs/safety-model.md +1 -1
- package/docs/scientific-validation.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +1 -1
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +87 -0
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +2 -1
- package/src/cli/agents.ts +1 -1
- package/src/cli/config-inspect.ts +33 -6
- package/src/cli/config.ts +1 -1
- package/src/cli/doctor-state-size.ts +82 -0
- package/src/cli/doctor.ts +3 -1
- package/src/cli/eval.ts +80 -16
- package/src/cli/extensions.ts +5 -1
- package/src/cli/fleet.ts +32 -3
- package/src/cli/targets.ts +44 -13
- package/src/cli/trace.ts +63 -4
- package/src/cli/usage.ts +63 -14
- package/src/core/bus-events.ts +29 -1
- package/src/core/cache-telemetry.ts +42 -0
- package/src/core/config.ts +18 -0
- package/src/core/defaults.ts +36 -6
- package/src/core/endpoint-key.ts +27 -0
- package/src/core/residency-target-key.ts +25 -0
- package/src/core/response-schema.ts +36 -2
- package/src/domains/config/classify.ts +3 -0
- package/src/domains/context/codewiki/coordinator.ts +12 -4
- package/src/domains/dispatch/admission.ts +40 -3
- package/src/domains/dispatch/capacity-lease.ts +98 -9
- package/src/domains/dispatch/contract.ts +11 -0
- package/src/domains/dispatch/execution-plan.ts +44 -4
- package/src/domains/dispatch/extension.ts +166 -42
- package/src/domains/dispatch/fleet-run.ts +23 -3
- package/src/domains/dispatch/heartbeat.ts +32 -8
- package/src/domains/dispatch/index.ts +3 -0
- package/src/domains/dispatch/orphan-recovery.ts +5 -0
- package/src/domains/dispatch/reservation-store.ts +116 -8
- package/src/domains/dispatch/state.ts +4 -0
- package/src/domains/dispatch/worker-spawn.ts +25 -11
- package/src/domains/dispatch/write-boundary-enforcer.ts +20 -3
- package/src/domains/dispatch/write-boundary.ts +62 -1
- package/src/domains/eval/artifacts/store.ts +62 -0
- package/src/domains/eval/compare/behavioral.ts +224 -0
- package/src/domains/eval/compare/compare.ts +355 -2
- package/src/domains/eval/compare/envelope.ts +128 -0
- package/src/domains/eval/compare/gates.ts +24 -6
- package/src/domains/eval/compare/thresholds.ts +30 -3
- package/src/domains/eval/execution-provenance.ts +240 -0
- package/src/domains/eval/metrics/aggregate.ts +136 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
- package/src/domains/eval/metrics/tracked.ts +413 -0
- package/src/domains/eval/provenance.ts +117 -0
- package/src/domains/eval/reports/comparison.ts +128 -0
- package/src/domains/eval/reports/junit.ts +17 -3
- package/src/domains/eval/reports/markdown.ts +3 -3
- package/src/domains/eval/reports/text.ts +14 -0
- package/src/domains/eval/run-compare.ts +20 -0
- package/src/domains/eval/runners/clio-run.ts +127 -0
- package/src/domains/eval/runners/external-command.ts +28 -3
- package/src/domains/eval/schema/adapter.ts +111 -0
- package/src/domains/eval/schema/artifact.ts +20 -0
- package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
- package/src/domains/eval/schema/behavioral.ts +520 -0
- package/src/domains/eval/schema/execution-envelope.ts +194 -0
- package/src/domains/eval/schema/serving.ts +74 -0
- package/src/domains/eval/schema/suite.ts +38 -8
- package/src/domains/eval/schema/validate.ts +58 -3
- package/src/domains/eval/schema/verdict.ts +237 -0
- package/src/domains/eval/suites/resolve.ts +2 -0
- package/src/domains/eval/suites/run.ts +264 -33
- package/src/domains/eval/verifiers/command.ts +2 -1
- package/src/domains/eval/workspaces/temp-copy.ts +145 -13
- package/src/domains/evidence/build.ts +2 -13
- package/src/domains/evidence/eval.ts +2 -12
- package/src/domains/evidence/findings-markdown.ts +33 -0
- package/src/domains/evidence/run-trust.ts +7 -113
- package/src/domains/evidence/trust-projection.ts +2 -2
- package/src/domains/extensions/compatibility.ts +285 -0
- package/src/domains/extensions/discovery.ts +38 -3
- package/src/domains/extensions/resources.ts +1 -1
- package/src/domains/extensions/state.ts +12 -3
- package/src/domains/extensions/types.ts +2 -0
- package/src/domains/lifecycle/doctor.ts +69 -1
- package/src/domains/memory/index.ts +14 -0
- package/src/domains/memory/task-bank-promotion.ts +64 -0
- package/src/domains/memory/task-memory-policy.ts +77 -8
- package/src/domains/memory/task-memory-spend.ts +131 -0
- package/src/domains/memory/task-memory-status.ts +7 -0
- package/src/domains/memory/task-memory-telemetry.ts +2 -0
- package/src/domains/middleware/index.ts +1 -0
- package/src/domains/middleware/memory-intervention.ts +69 -5
- package/src/domains/middleware/memory-step-endpoint.ts +71 -0
- package/src/domains/observability/background-memory-usage.ts +140 -0
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/index.ts +7 -0
- package/src/domains/observability/out-of-turn-usage.ts +51 -2
- package/src/domains/observability/trace-store.ts +192 -2
- package/src/domains/prompts/compiler.ts +100 -13
- package/src/domains/providers/endpoint-capacity.ts +96 -0
- package/src/domains/providers/index.ts +10 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
- package/src/domains/providers/runtime-resolution.ts +8 -1
- package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/target-descriptor.ts +2 -0
- package/src/domains/resources/prompts/loader.ts +95 -33
- package/src/domains/safety/call-target.ts +52 -0
- package/src/domains/safety/run-effects.ts +35 -4
- package/src/domains/session/context-accounting.ts +52 -1
- package/src/domains/session/context-ledger.ts +37 -13
- package/src/domains/session/index.ts +6 -0
- package/src/domains/session/prompt-cache.ts +140 -0
- package/src/domains/session/prompt-manifest.ts +42 -0
- package/src/engine/acp/adapter.ts +18 -3
- package/src/engine/ai.ts +35 -0
- package/src/engine/apis/llamacpp-residency.ts +55 -3
- package/src/engine/apis/lmstudio.ts +25 -5
- package/src/engine/apis/ollama-native.ts +2 -1
- package/src/engine/apis/openai-completions.ts +80 -17
- package/src/engine/apis/residency-lock.ts +3 -1
- package/src/engine/apis/residency.ts +34 -1
- package/src/engine/provider-payload.ts +29 -1
- package/src/entry/orchestrator.ts +176 -30
- package/src/interactive/chat-loop-messages.ts +26 -7
- package/src/interactive/chat-loop.ts +318 -41
- package/src/interactive/chat-panel.ts +62 -8
- package/src/interactive/clio-editor.ts +45 -8
- package/src/interactive/context-activity.ts +5 -1
- package/src/interactive/context-meter.ts +1 -1
- package/src/interactive/context-overlay.ts +40 -10
- package/src/interactive/cost-overlay.ts +64 -6
- package/src/interactive/dispatch-board.ts +84 -12
- package/src/interactive/fleet-run-preview.ts +41 -15
- package/src/interactive/handoff-round.ts +41 -2
- package/src/interactive/interactive-application.ts +24 -1
- package/src/interactive/interactive-input-runtime.ts +8 -0
- package/src/interactive/interactive-presentation.ts +4 -0
- package/src/interactive/interactive-shell.ts +20 -17
- package/src/interactive/interactive-slash-runtime.ts +27 -4
- package/src/interactive/memory-overlay.ts +8 -0
- package/src/interactive/mutation-preview.ts +295 -0
- package/src/interactive/overlay-general-openers.ts +16 -0
- package/src/interactive/overlay-key-routing.ts +38 -0
- package/src/interactive/overlay-lifecycle.ts +38 -5
- package/src/interactive/overlay-permission-lifecycle.ts +22 -2
- package/src/interactive/overlay-session-lifecycle.ts +73 -9
- package/src/interactive/overlays/ask-user.ts +91 -19
- package/src/interactive/overlays/help-reference.ts +4 -0
- package/src/interactive/overlays/prompts.ts +11 -1
- package/src/interactive/overlays/settings.ts +35 -1
- package/src/interactive/permission-hint.ts +34 -2
- package/src/interactive/permission-overlay.ts +159 -9
- package/src/interactive/prewarm.ts +197 -0
- package/src/interactive/render-trace.ts +162 -15
- package/src/interactive/renderers/tool-execution.ts +4 -0
- package/src/interactive/side-question.ts +58 -1
- package/src/interactive/status/controller.ts +11 -0
- package/src/interactive/status/state-machine.ts +54 -2
- package/src/interactive/status/types.ts +7 -0
- package/src/interactive/terminal-lease.ts +2 -0
- package/src/interactive/turn-context.ts +299 -31
- package/src/interactive/turn-persistence.ts +14 -4
- package/src/interactive/turn-prewarm.ts +364 -0
- package/src/interactive/turn-queues.ts +7 -4
- package/src/interactive/turn-runtime.ts +8 -1
- package/src/interactive/turn-state.ts +23 -0
- package/src/interactive/view/view-overlay.ts +28 -3
- package/src/tools/ask-user.ts +43 -2
- package/src/tools/dispatch-plan.ts +17 -9
- package/src/tools/dispatch-scout.ts +1 -1
- package/src/tools/registry.ts +16 -0
- package/dist/chunk-AOCYTWAV.js +0 -449
- package/dist/chunk-HWUFFB6L.js +0 -83
- package/dist/chunk-R346GLFC.js +0 -31
- package/dist/doctor-M7YEDGAE.js +0 -91
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
probeWorkspace
|
|
7
7
|
} from "./chunk-HVDIIIQW.js";
|
|
8
|
-
import {
|
|
9
|
-
isSessionEntry,
|
|
10
|
-
isSessionHeader
|
|
11
|
-
} from "./chunk-GOXNB3AO.js";
|
|
12
8
|
import {
|
|
13
9
|
protectArtifact
|
|
14
10
|
} from "./chunk-MV3K5QF2.js";
|
|
11
|
+
import {
|
|
12
|
+
isSessionEntry,
|
|
13
|
+
isSessionHeader
|
|
14
|
+
} from "./chunk-RAPCMZL4.js";
|
|
15
15
|
import {
|
|
16
16
|
stripTokenizerSentinels
|
|
17
17
|
} from "./chunk-CFGTUFWB.js";
|
|
18
18
|
import {
|
|
19
19
|
BusChannels
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RKRLDWD3.js";
|
|
21
21
|
import {
|
|
22
22
|
CURRENT_SESSION_FORMAT_VERSION,
|
|
23
23
|
appendSessionFileEntry,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
readSessionMeta,
|
|
30
30
|
resumeSession,
|
|
31
31
|
sessionPaths
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-KV2AOLDF.js";
|
|
33
33
|
import {
|
|
34
34
|
clioStateDir,
|
|
35
35
|
stateRootRemoved
|
|
@@ -1475,4 +1475,4 @@ export {
|
|
|
1475
1475
|
ledgerUsageCalls,
|
|
1476
1476
|
SessionDomainModule
|
|
1477
1477
|
};
|
|
1478
|
-
//# sourceMappingURL=chunk-
|
|
1478
|
+
//# sourceMappingURL=chunk-LXPJXFM5.js.map
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
ceilChars,
|
|
11
11
|
estimateAgentMessageTokens,
|
|
12
12
|
toolSchemaChars
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AEYBF3TB.js";
|
|
14
14
|
import {
|
|
15
15
|
readSettings
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-PNY46YEY.js";
|
|
17
17
|
import {
|
|
18
18
|
sleep
|
|
19
19
|
} from "./chunk-FQ4SKYE4.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-ZGVHUX3M.js";
|
|
23
23
|
import {
|
|
24
24
|
BusChannels
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-RKRLDWD3.js";
|
|
26
26
|
import {
|
|
27
27
|
CLIO_CONTEXT_WINDOW_WARN_BELOW,
|
|
28
28
|
CLIO_MIN_CONTEXT_WINDOW,
|
|
@@ -34,10 +34,10 @@ import {
|
|
|
34
34
|
registerBuiltinRuntimes,
|
|
35
35
|
requestLmStudioJson,
|
|
36
36
|
resolveLmStudioInstance
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-JEQQR47K.js";
|
|
38
38
|
import {
|
|
39
39
|
listKnownModelsForRuntime
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-774ILSRL.js";
|
|
41
41
|
import {
|
|
42
42
|
authNotRequiredStatus,
|
|
43
43
|
openAuthStorage,
|
|
@@ -65,18 +65,100 @@ import {
|
|
|
65
65
|
getCatalogModelForRuntime,
|
|
66
66
|
mergeCapabilities,
|
|
67
67
|
resolveCostProvenance
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-VO2LKSTM.js";
|
|
69
69
|
import {
|
|
70
70
|
activateExternalPluginApiBridge,
|
|
71
71
|
calculateEngineCost,
|
|
72
72
|
ensurePiAiRegistered,
|
|
73
73
|
registerEngineApiProvider
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-UOSL25KY.js";
|
|
75
75
|
import {
|
|
76
76
|
__toESM,
|
|
77
77
|
init_esm_shims
|
|
78
78
|
} from "./chunk-3R73A4XB.js";
|
|
79
79
|
|
|
80
|
+
// src/domains/providers/endpoint-capacity.ts
|
|
81
|
+
init_esm_shims();
|
|
82
|
+
|
|
83
|
+
// src/core/endpoint-key.ts
|
|
84
|
+
init_esm_shims();
|
|
85
|
+
function canonicalEndpointUrl(raw) {
|
|
86
|
+
if (!raw?.trim()) return null;
|
|
87
|
+
try {
|
|
88
|
+
const url = new URL(raw.trim().replace(/^ws:/u, "http:").replace(/^wss:/u, "https:"));
|
|
89
|
+
url.protocol = url.protocol.toLowerCase();
|
|
90
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return null;
|
|
91
|
+
url.hostname = url.hostname.toLowerCase();
|
|
92
|
+
url.username = "";
|
|
93
|
+
url.password = "";
|
|
94
|
+
url.hash = "";
|
|
95
|
+
url.search = "";
|
|
96
|
+
let path = url.pathname.replace(/\/{2,}/gu, "/").replace(/\/$/u, "");
|
|
97
|
+
if (path.endsWith("/v1")) path = path.slice(0, -3);
|
|
98
|
+
url.pathname = path || "/";
|
|
99
|
+
return url.toString().replace(/\/$/u, "");
|
|
100
|
+
} catch {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// src/domains/providers/endpoint-capacity.ts
|
|
106
|
+
var UNBOUNDED_LOCAL_NATIVE_RUNTIMES = /* @__PURE__ */ new Set(["vllm", "sglang"]);
|
|
107
|
+
function canonicalEndpointKey(value) {
|
|
108
|
+
return canonicalEndpointUrl(typeof value === "string" ? value : value.url);
|
|
109
|
+
}
|
|
110
|
+
function endpointLabel(endpointKey) {
|
|
111
|
+
try {
|
|
112
|
+
const url = new URL(endpointKey);
|
|
113
|
+
return `${url.host}${url.pathname === "/" ? "" : url.pathname}`;
|
|
114
|
+
} catch {
|
|
115
|
+
return endpointKey;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function positiveInteger(value) {
|
|
119
|
+
return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : void 0;
|
|
120
|
+
}
|
|
121
|
+
function endpointCapacityForStatus(status) {
|
|
122
|
+
const key = canonicalEndpointKey(status.target);
|
|
123
|
+
if (key === null) return null;
|
|
124
|
+
const override = positiveInteger(status.target.maxConcurrentRequests);
|
|
125
|
+
if (override !== void 0) return { key, label: endpointLabel(key), limit: override, source: "override" };
|
|
126
|
+
const discovered = positiveInteger(status.probeCapabilities?.parallelSlots);
|
|
127
|
+
if (discovered !== void 0) return { key, label: endpointLabel(key), limit: discovered, source: "discovered" };
|
|
128
|
+
if (status.runtime?.tier !== "local-native" || UNBOUNDED_LOCAL_NATIVE_RUNTIMES.has(status.runtime.id)) return null;
|
|
129
|
+
return { key, label: endpointLabel(key), limit: 1, source: "local-native-default" };
|
|
130
|
+
}
|
|
131
|
+
function sourceRank(source) {
|
|
132
|
+
return source === "override" ? 2 : source === "discovered" ? 1 : 0;
|
|
133
|
+
}
|
|
134
|
+
function endpointCapacitiesForStatuses(statuses) {
|
|
135
|
+
const capacities = {};
|
|
136
|
+
for (const status of statuses) {
|
|
137
|
+
const candidate = endpointCapacityForStatus(status);
|
|
138
|
+
if (candidate === null) continue;
|
|
139
|
+
const current = capacities[candidate.key];
|
|
140
|
+
if (current === void 0 || sourceRank(candidate.source) > sourceRank(current.source) || sourceRank(candidate.source) === sourceRank(current.source) && candidate.limit < current.limit) {
|
|
141
|
+
capacities[candidate.key] = candidate;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return capacities;
|
|
145
|
+
}
|
|
146
|
+
var foregroundStreams = /* @__PURE__ */ new Map();
|
|
147
|
+
function registerForegroundStream(endpointKey) {
|
|
148
|
+
foregroundStreams.set(endpointKey, (foregroundStreams.get(endpointKey) ?? 0) + 1);
|
|
149
|
+
let held = true;
|
|
150
|
+
return () => {
|
|
151
|
+
if (!held) return;
|
|
152
|
+
held = false;
|
|
153
|
+
const next = (foregroundStreams.get(endpointKey) ?? 1) - 1;
|
|
154
|
+
if (next <= 0) foregroundStreams.delete(endpointKey);
|
|
155
|
+
else foregroundStreams.set(endpointKey, next);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function foregroundStreamUsage() {
|
|
159
|
+
return Object.fromEntries(foregroundStreams);
|
|
160
|
+
}
|
|
161
|
+
|
|
80
162
|
// src/engine/apis/residency.ts
|
|
81
163
|
init_esm_shims();
|
|
82
164
|
|
|
@@ -85,7 +167,8 @@ init_esm_shims();
|
|
|
85
167
|
import { join } from "node:path";
|
|
86
168
|
var LOCK_WAIT_MS = 12e4;
|
|
87
169
|
function lockTargetFor(targetKey) {
|
|
88
|
-
|
|
170
|
+
const key = canonicalEndpointKey(targetKey) ?? targetKey;
|
|
171
|
+
return join(clioStatePath(), "residency-locks", key.replace(/[^a-zA-Z0-9._-]+/g, "_"));
|
|
89
172
|
}
|
|
90
173
|
async function withResidencyLock(targetKey, fn) {
|
|
91
174
|
return withStateFileLock(lockTargetFor(targetKey), fn, {
|
|
@@ -114,6 +197,9 @@ function emitResidencyNotice(notice) {
|
|
|
114
197
|
} catch {
|
|
115
198
|
}
|
|
116
199
|
}
|
|
200
|
+
function emitResidencyMutation(mutation) {
|
|
201
|
+
getSharedBus().emit(BusChannels.ResidencyMutation, { ...mutation, at: Date.now() });
|
|
202
|
+
}
|
|
117
203
|
var protectedModelsProvider = null;
|
|
118
204
|
function setProtectedModelsProvider(provider) {
|
|
119
205
|
protectedModelsProvider = provider;
|
|
@@ -344,6 +430,13 @@ async function restoreEvictedModels(adapter, evicted, loadError) {
|
|
|
344
430
|
try {
|
|
345
431
|
await adapter.reloadEvicted(entry.modelId);
|
|
346
432
|
restored.push(entry.modelId);
|
|
433
|
+
emitResidencyMutation({
|
|
434
|
+
targetKey: adapter.targetKey,
|
|
435
|
+
targetId: adapter.targetId,
|
|
436
|
+
runtimeId: adapter.runtimeId,
|
|
437
|
+
model: entry.modelId,
|
|
438
|
+
operation: "load"
|
|
439
|
+
});
|
|
347
440
|
} catch {
|
|
348
441
|
failed.push(entry.modelId);
|
|
349
442
|
}
|
|
@@ -460,12 +553,28 @@ async function reconcileResidency(adapter) {
|
|
|
460
553
|
await adapter.unload(entry.modelId);
|
|
461
554
|
forgetClioLoaded(adapter.targetKey, entry.modelId);
|
|
462
555
|
evicted.push(entry);
|
|
556
|
+
emitResidencyMutation({
|
|
557
|
+
targetKey: adapter.targetKey,
|
|
558
|
+
targetId: adapter.targetId,
|
|
559
|
+
runtimeId: adapter.runtimeId,
|
|
560
|
+
model: entry.modelId,
|
|
561
|
+
operation: "evict"
|
|
562
|
+
});
|
|
463
563
|
} catch {
|
|
464
564
|
}
|
|
465
565
|
}
|
|
466
566
|
if (!adapter.load) return;
|
|
467
567
|
try {
|
|
468
568
|
await adapter.load(adapter.keepModelId);
|
|
569
|
+
if (!plan.keepResident) {
|
|
570
|
+
emitResidencyMutation({
|
|
571
|
+
targetKey: adapter.targetKey,
|
|
572
|
+
targetId: adapter.targetId,
|
|
573
|
+
runtimeId: adapter.runtimeId,
|
|
574
|
+
model: adapter.keepModelId,
|
|
575
|
+
operation: "load"
|
|
576
|
+
});
|
|
577
|
+
}
|
|
469
578
|
} catch (error) {
|
|
470
579
|
await restoreEvictedModels(adapter, evicted, error);
|
|
471
580
|
throw error;
|
|
@@ -1477,7 +1586,7 @@ function resolveRuntimeTarget(providers, input) {
|
|
|
1477
1586
|
const capabilityResolution = modelCapabilitiesFor(providers, status, wireModelId);
|
|
1478
1587
|
const capabilities = { ...capabilityResolution.capabilities };
|
|
1479
1588
|
const probedContextWindow = probeCapabilitiesForModel(status, wireModelId)?.contextWindow ?? null;
|
|
1480
|
-
const loadedContextWindow = loadedContextWindowForModel(status, wireModelId);
|
|
1589
|
+
const loadedContextWindow = loadedContextWindowForModel(status, wireModelId) ?? input.knownLoadedContextWindow ?? null;
|
|
1481
1590
|
const contextWindowDetails = resolveContextWindowDetails(
|
|
1482
1591
|
target,
|
|
1483
1592
|
runtime,
|
|
@@ -1705,6 +1814,12 @@ function resolveContextWindowDetails(target, runtime, wireModelId, knowledgeBase
|
|
|
1705
1814
|
};
|
|
1706
1815
|
}
|
|
1707
1816
|
|
|
1817
|
+
// src/domains/providers/types/cost-provenance.ts
|
|
1818
|
+
init_esm_shims();
|
|
1819
|
+
function normalizeCostProvenance(value) {
|
|
1820
|
+
return value ?? "unknown";
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1708
1823
|
// src/domains/providers/index.ts
|
|
1709
1824
|
init_esm_shims();
|
|
1710
1825
|
|
|
@@ -1722,6 +1837,18 @@ import {
|
|
|
1722
1837
|
Ollama
|
|
1723
1838
|
} from "ollama";
|
|
1724
1839
|
|
|
1840
|
+
// src/core/residency-target-key.ts
|
|
1841
|
+
init_esm_shims();
|
|
1842
|
+
var RESIDENCY_RUNTIME_IDS = /* @__PURE__ */ new Set([
|
|
1843
|
+
"llamacpp",
|
|
1844
|
+
"lmstudio",
|
|
1845
|
+
"ollama-native"
|
|
1846
|
+
]);
|
|
1847
|
+
function residencyTargetKey(runtimeId, baseUrl) {
|
|
1848
|
+
if (!RESIDENCY_RUNTIME_IDS.has(runtimeId) || typeof baseUrl !== "string") return null;
|
|
1849
|
+
return canonicalEndpointUrl(baseUrl) ?? baseUrl;
|
|
1850
|
+
}
|
|
1851
|
+
|
|
1725
1852
|
// src/engine/gemma-channel-filter.ts
|
|
1726
1853
|
init_esm_shims();
|
|
1727
1854
|
import { createAssistantMessageEventStream } from "@earendil-works/pi-ai";
|
|
@@ -1991,7 +2118,7 @@ async function reconcileOllamaResidency(model, headers) {
|
|
|
1991
2118
|
if (!baseUrl) return;
|
|
1992
2119
|
const metadata2 = model.clio;
|
|
1993
2120
|
const adapter = {
|
|
1994
|
-
targetKey:
|
|
2121
|
+
targetKey: residencyTargetKey("ollama-native", baseUrl),
|
|
1995
2122
|
targetId: ollamaTargetId(model),
|
|
1996
2123
|
runtimeId: "ollama-native",
|
|
1997
2124
|
keepModelId: model.id,
|
|
@@ -2559,6 +2686,26 @@ async function fetchRouterModels(input, fetchImpl) {
|
|
|
2559
2686
|
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
2560
2687
|
return parseRouterModels(await response.json());
|
|
2561
2688
|
}
|
|
2689
|
+
var RouterModelPostError = class extends Error {
|
|
2690
|
+
constructor(url, status, responseBody) {
|
|
2691
|
+
super(`llama.cpp router rejected ${url}: HTTP ${status}; response: ${responseBody}`);
|
|
2692
|
+
this.url = url;
|
|
2693
|
+
this.status = status;
|
|
2694
|
+
this.responseBody = responseBody;
|
|
2695
|
+
this.name = "RouterModelPostError";
|
|
2696
|
+
}
|
|
2697
|
+
url;
|
|
2698
|
+
status;
|
|
2699
|
+
responseBody;
|
|
2700
|
+
};
|
|
2701
|
+
async function routerErrorBody(response) {
|
|
2702
|
+
try {
|
|
2703
|
+
const body = (await response.text()).trim();
|
|
2704
|
+
return body.length > 0 ? body : "<empty body>";
|
|
2705
|
+
} catch (error) {
|
|
2706
|
+
return `<unreadable body: ${error instanceof Error ? error.message : String(error)}>`;
|
|
2707
|
+
}
|
|
2708
|
+
}
|
|
2562
2709
|
async function postRouterModel(fetchImpl, url, modelId) {
|
|
2563
2710
|
const response = await fetchImpl(url, {
|
|
2564
2711
|
method: "POST",
|
|
@@ -2567,7 +2714,27 @@ async function postRouterModel(fetchImpl, url, modelId) {
|
|
|
2567
2714
|
signal: AbortSignal.timeout(LOAD_TIMEOUT_MS)
|
|
2568
2715
|
});
|
|
2569
2716
|
if (response.ok) return;
|
|
2570
|
-
throw new
|
|
2717
|
+
throw new RouterModelPostError(url, response.status, await routerErrorBody(response));
|
|
2718
|
+
}
|
|
2719
|
+
function alreadyRunningResponse(body) {
|
|
2720
|
+
return body.toLowerCase().includes("already running");
|
|
2721
|
+
}
|
|
2722
|
+
async function postRouterLoad(input, fetchImpl, modelId) {
|
|
2723
|
+
try {
|
|
2724
|
+
await postRouterModel(fetchImpl, loadUrl(input.baseUrl), modelId);
|
|
2725
|
+
} catch (error) {
|
|
2726
|
+
if (!(error instanceof RouterModelPostError)) throw error;
|
|
2727
|
+
let model;
|
|
2728
|
+
try {
|
|
2729
|
+
model = (await fetchRouterModels(input, fetchImpl)).find((entry) => entry.id === modelId);
|
|
2730
|
+
} catch {
|
|
2731
|
+
if (alreadyRunningResponse(error.responseBody)) return;
|
|
2732
|
+
throw error;
|
|
2733
|
+
}
|
|
2734
|
+
if (alreadyRunningResponse(error.responseBody)) return;
|
|
2735
|
+
if (model !== void 0 && model.state !== "unloaded" && model.state !== "failed") return;
|
|
2736
|
+
throw error;
|
|
2737
|
+
}
|
|
2571
2738
|
}
|
|
2572
2739
|
async function waitForLoaded(input, fetchImpl, modelId) {
|
|
2573
2740
|
const started = performance.now();
|
|
@@ -2582,7 +2749,7 @@ async function waitForLoaded(input, fetchImpl, modelId) {
|
|
|
2582
2749
|
}
|
|
2583
2750
|
async function ensureModelLoaded(input, fetchImpl, modelId, knownState) {
|
|
2584
2751
|
if (knownState === "loaded" || knownState === "sleeping") return;
|
|
2585
|
-
if (knownState !== "loading") await
|
|
2752
|
+
if (knownState !== "loading") await postRouterLoad(input, fetchImpl, modelId);
|
|
2586
2753
|
await waitForLoaded(input, fetchImpl, modelId);
|
|
2587
2754
|
}
|
|
2588
2755
|
async function restoreDisplacedPinned(input, fetchImpl, before) {
|
|
@@ -2609,7 +2776,7 @@ async function ensureLlamaCppResidency(input) {
|
|
|
2609
2776
|
const fetchImpl = input.fetchImpl ?? fetch;
|
|
2610
2777
|
let snapshot = [];
|
|
2611
2778
|
const adapter = {
|
|
2612
|
-
targetKey:
|
|
2779
|
+
targetKey: residencyTargetKey("llamacpp", input.baseUrl),
|
|
2613
2780
|
targetId: input.targetId,
|
|
2614
2781
|
runtimeId: input.runtimeId,
|
|
2615
2782
|
keepModelId: input.keepModelId,
|
|
@@ -2809,7 +2976,7 @@ async function ensureLmStudioResidency(model, options = {}) {
|
|
|
2809
2976
|
(entry) => entry.loadedInstances.map((instance) => ({ modelKey: entry.key, identifier: instance.id, instance }))
|
|
2810
2977
|
);
|
|
2811
2978
|
const managed = residencyManagedFor(info.lifecycle);
|
|
2812
|
-
const targetKey =
|
|
2979
|
+
const targetKey = residencyTargetKey("lmstudio", target.url ?? model.baseUrl);
|
|
2813
2980
|
const contextLength = target.lmstudio?.load?.contextLength;
|
|
2814
2981
|
const plan = await reconcileResidency({
|
|
2815
2982
|
targetKey,
|
|
@@ -2852,17 +3019,36 @@ async function ensureLmStudioResidency(model, options = {}) {
|
|
|
2852
3019
|
});
|
|
2853
3020
|
}
|
|
2854
3021
|
}
|
|
3022
|
+
const loadAndReport = async () => {
|
|
3023
|
+
const instanceId = await loadOwnedInstance(target, targetKey, body, options.apiKey, options.signal);
|
|
3024
|
+
emitResidencyMutation({
|
|
3025
|
+
targetKey,
|
|
3026
|
+
targetId: info.targetId,
|
|
3027
|
+
runtimeId: "lmstudio",
|
|
3028
|
+
model: modelKey,
|
|
3029
|
+
operation: "load"
|
|
3030
|
+
});
|
|
3031
|
+
return instanceId ?? model.id;
|
|
3032
|
+
};
|
|
2855
3033
|
try {
|
|
2856
|
-
return await
|
|
3034
|
+
return await loadAndReport();
|
|
2857
3035
|
} catch (error) {
|
|
2858
3036
|
if (plan.decision === "observe" || plan.fallbackEvict.length === 0) throw error;
|
|
2859
3037
|
return withResidencyLock(targetKey, async () => {
|
|
2860
3038
|
for (const candidate of plan.fallbackEvict) {
|
|
2861
3039
|
for (const entry of instances.filter((resident) => resident.modelKey === candidate.modelId)) {
|
|
2862
|
-
await unloadOwnedInstance(target, targetKey, entry.identifier, options.apiKey, options.signal)
|
|
3040
|
+
if (await unloadOwnedInstance(target, targetKey, entry.identifier, options.apiKey, options.signal)) {
|
|
3041
|
+
emitResidencyMutation({
|
|
3042
|
+
targetKey,
|
|
3043
|
+
targetId: info.targetId,
|
|
3044
|
+
runtimeId: "lmstudio",
|
|
3045
|
+
model: candidate.modelId,
|
|
3046
|
+
operation: "evict"
|
|
3047
|
+
});
|
|
3048
|
+
}
|
|
2863
3049
|
}
|
|
2864
3050
|
}
|
|
2865
|
-
return
|
|
3051
|
+
return loadAndReport();
|
|
2866
3052
|
});
|
|
2867
3053
|
}
|
|
2868
3054
|
}
|
|
@@ -2884,8 +3070,36 @@ function pickSamplingProfile2(quirks, thinkingActive) {
|
|
|
2884
3070
|
function isPlainRecord(value) {
|
|
2885
3071
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
2886
3072
|
}
|
|
2887
|
-
function
|
|
2888
|
-
|
|
3073
|
+
function nonnegativeFiniteNumber(value) {
|
|
3074
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
|
|
3075
|
+
}
|
|
3076
|
+
function backendCompletionTimings(value, source) {
|
|
3077
|
+
if (!isPlainRecord(value)) return null;
|
|
3078
|
+
const promptN = nonnegativeFiniteNumber(value.prompt_n);
|
|
3079
|
+
const predictedN = nonnegativeFiniteNumber(value.predicted_n);
|
|
3080
|
+
const promptMs = nonnegativeFiniteNumber(value.prompt_ms);
|
|
3081
|
+
const predictedMs = nonnegativeFiniteNumber(value.predicted_ms);
|
|
3082
|
+
if (promptN === null || predictedN === null || promptMs === null || predictedMs === null) return null;
|
|
3083
|
+
const cacheN = nonnegativeFiniteNumber(value.cache_n);
|
|
3084
|
+
return {
|
|
3085
|
+
promptTokens: promptN + (cacheN ?? 0),
|
|
3086
|
+
cachedTokens: cacheN,
|
|
3087
|
+
predictedTokens: predictedN,
|
|
3088
|
+
promptMs,
|
|
3089
|
+
predictedMs,
|
|
3090
|
+
source
|
|
3091
|
+
};
|
|
3092
|
+
}
|
|
3093
|
+
function backendTimingsSourceForModel(model) {
|
|
3094
|
+
const metadata2 = model.clio;
|
|
3095
|
+
if (model.provider === "llamacpp" && metadata2?.runtimeId === "llamacpp") return "llamacpp-timings";
|
|
3096
|
+
if (model.provider === "lmstudio" && metadata2?.runtimeId === "lmstudio") return "lmstudio-timings";
|
|
3097
|
+
return null;
|
|
3098
|
+
}
|
|
3099
|
+
function captureCanStopEarly(capture) {
|
|
3100
|
+
return capture.modelIdDone && capture.backendTimingsSource === null;
|
|
3101
|
+
}
|
|
3102
|
+
function observeResponseMetadataLine(line, capture) {
|
|
2889
3103
|
const normalized = line.endsWith("\r") ? line.slice(0, -1) : line;
|
|
2890
3104
|
if (!normalized.startsWith("data:")) return;
|
|
2891
3105
|
const data = normalized.slice("data:".length).trimStart();
|
|
@@ -2893,23 +3107,29 @@ function observeResponseModelIdLine(line, capture) {
|
|
|
2893
3107
|
try {
|
|
2894
3108
|
const payload = JSON.parse(data);
|
|
2895
3109
|
if (!isPlainRecord(payload)) return;
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
3110
|
+
if (!capture.modelIdDone) {
|
|
3111
|
+
const model = payload.model;
|
|
3112
|
+
if (typeof model === "string" && model.trim().length > 0) {
|
|
3113
|
+
capture.reportedModelId = model.trim();
|
|
3114
|
+
capture.modelIdDone = true;
|
|
3115
|
+
}
|
|
3116
|
+
}
|
|
3117
|
+
if (capture.backendTimingsSource !== null) {
|
|
3118
|
+
const timings = backendCompletionTimings(payload.timings, capture.backendTimingsSource);
|
|
3119
|
+
if (timings !== null) capture.backendTimings = timings;
|
|
2900
3120
|
}
|
|
2901
3121
|
} catch {
|
|
2902
3122
|
}
|
|
2903
3123
|
}
|
|
2904
3124
|
function observeResponseModelIdBytes(chunk, capture, flush = false) {
|
|
2905
|
-
if (
|
|
3125
|
+
if (!capture.decoder) return;
|
|
2906
3126
|
capture.buffer += chunk ? capture.decoder.decode(chunk, { stream: !flush }) : capture.decoder.decode();
|
|
2907
3127
|
let newline = capture.buffer.indexOf("\n");
|
|
2908
3128
|
while (newline >= 0) {
|
|
2909
3129
|
const line = capture.buffer.slice(0, newline);
|
|
2910
3130
|
capture.buffer = capture.buffer.slice(newline + 1);
|
|
2911
|
-
|
|
2912
|
-
if (capture
|
|
3131
|
+
observeResponseMetadataLine(line, capture);
|
|
3132
|
+
if (captureCanStopEarly(capture)) {
|
|
2913
3133
|
capture.buffer = "";
|
|
2914
3134
|
capture.decoder = null;
|
|
2915
3135
|
return;
|
|
@@ -2917,10 +3137,10 @@ function observeResponseModelIdBytes(chunk, capture, flush = false) {
|
|
|
2917
3137
|
newline = capture.buffer.indexOf("\n");
|
|
2918
3138
|
}
|
|
2919
3139
|
if (flush && capture.buffer.length > 0) {
|
|
2920
|
-
|
|
3140
|
+
observeResponseMetadataLine(capture.buffer, capture);
|
|
2921
3141
|
capture.buffer = "";
|
|
2922
3142
|
}
|
|
2923
|
-
if (capture
|
|
3143
|
+
if (captureCanStopEarly(capture) || flush) capture.decoder = null;
|
|
2924
3144
|
}
|
|
2925
3145
|
function captureResponseModelId(response, capture) {
|
|
2926
3146
|
if (!response.body || !response.headers.get("content-type")?.toLowerCase().includes("text/event-stream")) {
|
|
@@ -2930,12 +3150,12 @@ function captureResponseModelId(response, capture) {
|
|
|
2930
3150
|
new TransformStream({
|
|
2931
3151
|
transform(chunk, controller) {
|
|
2932
3152
|
capture.observed = true;
|
|
2933
|
-
|
|
3153
|
+
observeResponseModelIdBytes(chunk, capture);
|
|
2934
3154
|
controller.enqueue(chunk);
|
|
2935
3155
|
},
|
|
2936
3156
|
flush() {
|
|
2937
3157
|
capture.observed = true;
|
|
2938
|
-
|
|
3158
|
+
observeResponseModelIdBytes(void 0, capture, true);
|
|
2939
3159
|
}
|
|
2940
3160
|
})
|
|
2941
3161
|
);
|
|
@@ -2945,11 +3165,13 @@ function captureResponseModelId(response, capture) {
|
|
|
2945
3165
|
headers: response.headers
|
|
2946
3166
|
});
|
|
2947
3167
|
}
|
|
2948
|
-
function withResponseModelIdCapture(options, sourceFactory) {
|
|
3168
|
+
function withResponseModelIdCapture(model, options, sourceFactory) {
|
|
2949
3169
|
const capture = {
|
|
2950
3170
|
reportedModelId: null,
|
|
2951
3171
|
observed: false,
|
|
2952
|
-
|
|
3172
|
+
modelIdDone: false,
|
|
3173
|
+
backendTimings: null,
|
|
3174
|
+
backendTimingsSource: backendTimingsSourceForModel(model),
|
|
2953
3175
|
buffer: "",
|
|
2954
3176
|
decoder: new TextDecoder()
|
|
2955
3177
|
};
|
|
@@ -2964,8 +3186,13 @@ function withResponseModelIdCapture(options, sourceFactory) {
|
|
|
2964
3186
|
try {
|
|
2965
3187
|
for await (const event of source) {
|
|
2966
3188
|
const observation = capture.observed ? capture.reportedModelId === null ? { state: "not-reported" } : { state: "reported", reportedModelId: capture.reportedModelId } : { state: "not-observed" };
|
|
2967
|
-
if (event.type === "done")
|
|
2968
|
-
|
|
3189
|
+
if (event.type === "done") {
|
|
3190
|
+
event.message.responseModelIdObservation = observation;
|
|
3191
|
+
if (capture.backendTimings !== null) event.message.backendTimings = capture.backendTimings;
|
|
3192
|
+
} else if (event.type === "error") {
|
|
3193
|
+
event.error.responseModelIdObservation = observation;
|
|
3194
|
+
if (capture.backendTimings !== null) event.error.backendTimings = capture.backendTimings;
|
|
3195
|
+
}
|
|
2969
3196
|
annotated.push(event);
|
|
2970
3197
|
}
|
|
2971
3198
|
annotated.end();
|
|
@@ -3460,6 +3687,7 @@ var openAICompletionsApiProvider = {
|
|
|
3460
3687
|
stripNeverReasoningFromStream(
|
|
3461
3688
|
filterGemmaChannelStream(
|
|
3462
3689
|
withResponseModelIdCapture(
|
|
3690
|
+
model,
|
|
3463
3691
|
withRemainingContextBudget(model, effectiveContext, withSamplers),
|
|
3464
3692
|
(capturedOptions) => withLocalResidency(
|
|
3465
3693
|
model,
|
|
@@ -3491,6 +3719,7 @@ var openAICompletionsApiProvider = {
|
|
|
3491
3719
|
stripNeverReasoningFromStream(
|
|
3492
3720
|
filterGemmaChannelStream(
|
|
3493
3721
|
withResponseModelIdCapture(
|
|
3722
|
+
model,
|
|
3494
3723
|
withRemainingContextBudget(model, effectiveContext, withSamplers),
|
|
3495
3724
|
(capturedOptions) => withLocalResidency(
|
|
3496
3725
|
model,
|
|
@@ -4283,12 +4512,6 @@ function resolveModelReference(rawPattern, providers) {
|
|
|
4283
4512
|
return buildResult(base, pickFirst(partial), thinkingLevel);
|
|
4284
4513
|
}
|
|
4285
4514
|
|
|
4286
|
-
// src/domains/providers/types/cost-provenance.ts
|
|
4287
|
-
init_esm_shims();
|
|
4288
|
-
function normalizeCostProvenance(value) {
|
|
4289
|
-
return value ?? "unknown";
|
|
4290
|
-
}
|
|
4291
|
-
|
|
4292
4515
|
// src/domains/providers/index.ts
|
|
4293
4516
|
var ProvidersDomainModule = {
|
|
4294
4517
|
manifest: ProvidersManifest,
|
|
@@ -4296,8 +4519,15 @@ var ProvidersDomainModule = {
|
|
|
4296
4519
|
};
|
|
4297
4520
|
|
|
4298
4521
|
export {
|
|
4522
|
+
residencyTargetKey,
|
|
4299
4523
|
setGlobalDefaultMaxOutputTokens,
|
|
4300
4524
|
resolveReservedOutputTokens,
|
|
4525
|
+
canonicalEndpointKey,
|
|
4526
|
+
endpointLabel,
|
|
4527
|
+
endpointCapacityForStatus,
|
|
4528
|
+
endpointCapacitiesForStatuses,
|
|
4529
|
+
registerForegroundStream,
|
|
4530
|
+
foregroundStreamUsage,
|
|
4301
4531
|
setResidencyNoticeSink,
|
|
4302
4532
|
setProtectedModelsProvider,
|
|
4303
4533
|
withRunOverrides,
|
|
@@ -4330,4 +4560,4 @@ export {
|
|
|
4330
4560
|
normalizeCostProvenance,
|
|
4331
4561
|
ProvidersDomainModule
|
|
4332
4562
|
};
|
|
4333
|
-
//# sourceMappingURL=chunk-
|
|
4563
|
+
//# sourceMappingURL=chunk-MIX5N5AC.js.map
|