@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.3
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/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/actions/generate-media.d.ts +59 -0
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts +23 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -0
- package/dist/actions/transcription-control.d.ts +29 -0
- package/dist/actions/transcription-control.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
- package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.d.ts +18 -0
- package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
- package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/types.d.ts +338 -0
- package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
- package/dist/backends/apple-foundation.d.ts +56 -0
- package/dist/backends/apple-foundation.d.ts.map +1 -0
- package/dist/index.d.ts +8 -37
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38979 -430
- package/dist/index.js.map +217 -0
- package/dist/local-inference-routes.d.ts +47 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts +21 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/routes/compat-helpers.d.ts +18 -0
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts +62 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +42040 -0
- package/dist/routes/index.js.map +236 -0
- package/dist/routes/live-diarization-route.d.ts +33 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts +4 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts +16 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/dist/routes/local-inference-tts-route.d.ts +7 -0
- package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
- package/dist/routes/native-pcm-turn-route.d.ts +3 -0
- package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
- package/dist/routes/transcript-audio-store.d.ts +15 -0
- package/dist/routes/transcript-audio-store.d.ts.map +1 -0
- package/dist/routes/transcripts-routes.d.ts +44 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts +62 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts +62 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts +77 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts +16 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +38768 -0
- package/dist/runtime/index.js.map +217 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/dist/runtime/voice-entity-binding.d.ts +113 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/dist/services/active-model.d.ts +310 -0
- package/dist/services/active-model.d.ts.map +1 -0
- package/dist/services/asr-provenance.d.ts +5 -0
- package/dist/services/asr-provenance.d.ts.map +1 -0
- package/dist/services/assignments.d.ts +84 -0
- package/dist/services/assignments.d.ts.map +1 -0
- package/dist/services/backend-selector.d.ts +55 -0
- package/dist/services/backend-selector.d.ts.map +1 -0
- package/dist/services/backend.d.ts +440 -0
- package/dist/services/backend.d.ts.map +1 -0
- package/dist/services/bionic-host-loader.d.ts +67 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts +34 -0
- package/dist/services/bundled-models.d.ts.map +1 -0
- package/dist/services/cache-bridge.d.ts +206 -0
- package/dist/services/cache-bridge.d.ts.map +1 -0
- package/dist/services/catalog.d.ts +10 -0
- package/dist/services/catalog.d.ts.map +1 -0
- package/dist/services/checkpoint-client.d.ts +109 -0
- package/dist/services/checkpoint-client.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.d.ts +217 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/cloud-fallback.d.ts +102 -0
- package/dist/services/cloud-fallback.d.ts.map +1 -0
- package/dist/services/context-fit.d.ts +36 -0
- package/dist/services/context-fit.d.ts.map +1 -0
- package/dist/services/conversation-registry.d.ts +142 -0
- package/dist/services/conversation-registry.d.ts.map +1 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts +188 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts +149 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/dist/services/device-tier.d.ts +133 -0
- package/dist/services/device-tier.d.ts.map +1 -0
- package/dist/services/downloader.d.ts +94 -0
- package/dist/services/downloader.d.ts.map +1 -0
- package/dist/services/engine.d.ts +579 -0
- package/dist/services/engine.d.ts.map +1 -0
- package/dist/services/ensure-local-artifacts.d.ts +82 -0
- package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
- package/dist/services/external-scanner.d.ts +17 -0
- package/dist/services/external-scanner.d.ts.map +1 -0
- package/dist/services/ffi-llm-mock.d.ts +90 -0
- package/dist/services/ffi-llm-mock.d.ts.map +1 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
- package/dist/services/ffi-streaming-backend.d.ts +201 -0
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/dist/services/ffi-streaming-runner.d.ts +146 -0
- package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
- package/dist/services/gpu-autotune.d.ts +150 -0
- package/dist/services/gpu-autotune.d.ts.map +1 -0
- package/dist/services/gpu-detect.d.ts +56 -0
- package/dist/services/gpu-detect.d.ts.map +1 -0
- package/dist/services/handler-registry.d.ts +72 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts +63 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts +14 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts +118 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts +16 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts +58 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts +74 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts +181 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts +181 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +31 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +39453 -0
- package/dist/services/index.js.map +227 -0
- package/dist/services/inference-capabilities.d.ts +132 -0
- package/dist/services/inference-capabilities.d.ts.map +1 -0
- package/dist/services/inference-telemetry.d.ts +59 -0
- package/dist/services/inference-telemetry.d.ts.map +1 -0
- package/dist/services/ios-llama-streaming.d.ts +119 -0
- package/dist/services/ios-llama-streaming.d.ts.map +1 -0
- package/dist/services/kv-spill.d.ts +189 -0
- package/dist/services/kv-spill.d.ts.map +1 -0
- package/dist/services/latency-trace.d.ts +346 -0
- package/dist/services/latency-trace.d.ts.map +1 -0
- package/dist/services/lib-target.d.ts +55 -0
- package/dist/services/lib-target.d.ts.map +1 -0
- package/dist/services/live-signals.d.ts +86 -0
- package/dist/services/live-signals.d.ts.map +1 -0
- package/dist/services/llama-server-metrics.d.ts +114 -0
- package/dist/services/llama-server-metrics.d.ts.map +1 -0
- package/dist/services/llm-streaming-binding.d.ts +96 -0
- package/dist/services/llm-streaming-binding.d.ts.map +1 -0
- package/dist/services/load-args.d.ts +82 -0
- package/dist/services/load-args.d.ts.map +1 -0
- package/dist/services/manifest/index.d.ts +4 -0
- package/dist/services/manifest/index.d.ts.map +1 -0
- package/dist/services/manifest/schema.d.ts +903 -0
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/dist/services/manifest/types.d.ts +32 -0
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts +66 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/dist/services/memory-arbiter.d.ts +348 -0
- package/dist/services/memory-arbiter.d.ts.map +1 -0
- package/dist/services/memory-benchmark.d.ts +76 -0
- package/dist/services/memory-benchmark.d.ts.map +1 -0
- package/dist/services/memory-monitor.d.ts +128 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts +130 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts +13 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts +127 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts +6 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts +124 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts +38 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts +110 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts +9 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts +111 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/dist/services/registry.d.ts +33 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/router-handler.d.ts +92 -0
- package/dist/services/router-handler.d.ts.map +1 -0
- package/dist/services/routing-policy.d.ts +92 -0
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts +8 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts +98 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/dist/services/service.d.ts +128 -0
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts +72 -0
- package/dist/services/session-pool.d.ts.map +1 -0
- package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
- package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/dist/services/structured-output/index.d.ts +2 -0
- package/dist/services/structured-output/index.d.ts.map +1 -0
- package/dist/services/structured-output.d.ts +311 -0
- package/dist/services/structured-output.d.ts.map +1 -0
- package/dist/services/system-memory.d.ts +33 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/dist/services/types.d.ts +19 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts +34 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts +8 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts +115 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts +99 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts +47 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts +71 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/dist/services/vision/index.d.ts +95 -0
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts +73 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/dist/services/vision/types.d.ts +162 -0
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts +18 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/dist/services/vision-embedding-cache.d.ts +98 -0
- package/dist/services/vision-embedding-cache.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
- package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts +112 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-manager.d.ts +199 -0
- package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-policy.d.ts +178 -0
- package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
- package/dist/services/voice/corpus-augment.d.ts +111 -0
- package/dist/services/voice/corpus-augment.d.ts.map +1 -0
- package/dist/services/voice/corpus-generator.d.ts +134 -0
- package/dist/services/voice/corpus-generator.d.ts.map +1 -0
- package/dist/services/voice/diarization-error-rate.d.ts +40 -0
- package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
- package/dist/services/voice/e2e-harness.d.ts +297 -0
- package/dist/services/voice/e2e-harness.d.ts.map +1 -0
- package/dist/services/voice/eager-context-builder.d.ts +170 -0
- package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
- package/dist/services/voice/echo-delay.d.ts +67 -0
- package/dist/services/voice/echo-delay.d.ts.map +1 -0
- package/dist/services/voice/echo-metrics.d.ts +7 -0
- package/dist/services/voice/echo-metrics.d.ts.map +1 -0
- package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
- package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/embedding-server.d.ts +37 -0
- package/dist/services/voice/embedding-server.d.ts.map +1 -0
- package/dist/services/voice/embedding.d.ts +132 -0
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts +68 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/dist/services/voice/engine-bridge.d.ts +762 -0
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier.d.ts +211 -0
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/dist/services/voice/errors.d.ts +20 -0
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/dist/services/voice/expressive-tags.d.ts +158 -0
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/dist/services/voice/ffi-bindings.d.ts +696 -0
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts +181 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/index.d.ts +96 -0
- package/dist/services/voice/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/index.d.ts +24 -0
- package/dist/services/voice/kokoro/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/dist/services/voice/kokoro/types.d.ts +82 -0
- package/dist/services/voice/kokoro/types.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts +30 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
- package/dist/services/voice/lifecycle.d.ts +135 -0
- package/dist/services/voice/lifecycle.d.ts.map +1 -0
- package/dist/services/voice/live-diarization-session.d.ts +196 -0
- package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
- package/dist/services/voice/metric-math.d.ts +10 -0
- package/dist/services/voice/metric-math.d.ts.map +1 -0
- package/dist/services/voice/mic-source.d.ts +136 -0
- package/dist/services/voice/mic-source.d.ts.map +1 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
- package/dist/services/voice/optimistic-policy.d.ts +109 -0
- package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
- package/dist/services/voice/optimistic-rollback.d.ts +151 -0
- package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
- package/dist/services/voice/partial-stabilizer.d.ts +73 -0
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts +76 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts +62 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts +151 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts +216 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts +123 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts +248 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts +40 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts +24 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/dist/services/voice/scheduler.d.ts +146 -0
- package/dist/services/voice/scheduler.d.ts.map +1 -0
- package/dist/services/voice/self-voice-imprint.d.ts +33 -0
- package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
- package/dist/services/voice/shared-resources.d.ts +204 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts +75 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts +37 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts +83 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
- package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
- package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
- package/dist/services/voice/system-audio-sink.d.ts +73 -0
- package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
- package/dist/services/voice/transcriber.d.ts +244 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts +37 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/dist/services/voice/transcript-service.d.ts +60 -0
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/dist/services/voice/transcript-store.d.ts +64 -0
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts +183 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/dist/services/voice/types.d.ts +643 -0
- package/dist/services/voice/types.d.ts.map +1 -0
- package/dist/services/voice/vad.d.ts +283 -0
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts +241 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
- package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
- package/dist/services/voice/voice-preset-format.d.ts +158 -0
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-routes.d.ts +83 -0
- package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/dist/services/voice/voice-scenario.d.ts +131 -0
- package/dist/services/voice/voice-scenario.d.ts.map +1 -0
- package/dist/services/voice/voice-state-machine.d.ts +364 -0
- package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
- package/dist/services/voice/voice-workbench-report.d.ts +117 -0
- package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
- package/dist/services/voice/wake-word-ggml.d.ts +100 -0
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/dist/services/voice/wake-word.d.ts +255 -0
- package/dist/services/voice/wake-word.d.ts.map +1 -0
- package/dist/services/voice/wav-codec.d.ts +11 -0
- package/dist/services/voice/wav-codec.d.ts.map +1 -0
- package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
- package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
- package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
- package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
- package/dist/services/voice/workbench-logic-services.d.ts +36 -0
- package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-real-services.d.ts +17 -0
- package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-scenarios.d.ts +24 -0
- package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/dist/services/voice-model-updater.d.ts +240 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -0
- package/dist/services/voice-prewarm.d.ts +3 -0
- package/dist/services/voice-prewarm.d.ts.map +1 -0
- package/dist/voice-workbench.d.ts +18 -0
- package/dist/voice-workbench.d.ts.map +1 -0
- package/dist/voice-workbench.js +5259 -0
- package/dist/voice-workbench.js.map +34 -0
- package/package.json +101 -15
- package/registry-entry.json +137 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/actions/transcription-control.test.ts +100 -0
- package/src/actions/transcription-control.ts +127 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +831 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.ts +62 -0
- package/src/local-inference-routes.test.ts +390 -0
- package/src/local-inference-routes.ts +1625 -0
- package/src/provider.ts +1111 -0
- package/src/routes/compat-helpers.ts +275 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.ts +61 -0
- package/src/routes/live-diarization-route.test.ts +347 -0
- package/src/routes/live-diarization-route.ts +198 -0
- package/src/routes/local-inference-asr-route.test.ts +246 -0
- package/src/routes/local-inference-asr-route.ts +166 -0
- package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
- package/src/routes/local-inference-asr-transcribe.ts +97 -0
- package/src/routes/local-inference-compat-routes.test.ts +485 -0
- package/src/routes/local-inference-compat-routes.ts +775 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.test.ts +195 -0
- package/src/routes/transcripts-routes.ts +191 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
- package/src/runtime/ensure-local-inference-handler.ts +1640 -0
- package/src/runtime/index.ts +36 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
- package/src/runtime/mobile-local-inference-gate.ts +99 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
- package/src/runtime/voice-entity-binding.ts +368 -0
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.ts +1416 -0
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +106 -0
- package/src/services/assignments.ts +278 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +791 -0
- package/src/services/bionic-host-loader.test.ts +226 -0
- package/src/services/bionic-host-loader.ts +252 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.test.ts +259 -0
- package/src/services/catalog.ts +33 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.test.ts +458 -0
- package/src/services/device-tier.ts +502 -0
- package/src/services/downloader.test.ts +888 -0
- package/src/services/downloader.ts +1039 -0
- package/src/services/engine-direct-bundle.test.ts +90 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.ts +2096 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +445 -0
- package/src/services/ffi-streaming-backend.ts +418 -0
- package/src/services/ffi-streaming-runner.test.ts +220 -0
- package/src/services/ffi-streaming-runner.ts +407 -0
- package/src/services/ffi-unload-ordering.test.ts +166 -0
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.test.ts +236 -0
- package/src/services/hardware.ts +438 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/backend-selector.ts +277 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.ts +715 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.ts +229 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +357 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/lib-target.test.ts +145 -0
- package/src/services/lib-target.ts +102 -0
- package/src/services/live-signals.test.ts +132 -0
- package/src/services/live-signals.ts +177 -0
- package/src/services/llama-server-metrics.test.ts +168 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
- package/src/services/manifest/index.ts +72 -0
- package/src/services/manifest/manifest.test.ts +791 -0
- package/src/services/manifest/schema.ts +761 -0
- package/src/services/manifest/types.ts +61 -0
- package/src/services/manifest/validator.ts +633 -0
- package/src/services/memory-arbiter.test.ts +558 -0
- package/src/services/memory-arbiter.ts +991 -0
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +232 -0
- package/src/services/memory-monitor.ts +309 -0
- package/src/services/memory-pressure.ts +414 -0
- package/src/services/mtp-doctor.ts +86 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +164 -0
- package/src/services/ram-budget.ts +309 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/recommendation.ts +671 -0
- package/src/services/registry.ts +157 -0
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +426 -0
- package/src/services/routing-policy.test.ts +352 -0
- package/src/services/routing-policy.ts +367 -0
- package/src/services/routing-preferences.ts +17 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +750 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/system-memory.test.ts +47 -0
- package/src/services/system-memory.ts +67 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/types.ts +59 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.ts +163 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +133 -0
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
- package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
- package/src/services/voice/asr-timed.real.test.ts +139 -0
- package/src/services/voice/audio-frame-consumer.test.ts +669 -0
- package/src/services/voice/audio-frame-consumer.ts +651 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +335 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/corpus-augment.test.ts +276 -0
- package/src/services/voice/corpus-augment.ts +451 -0
- package/src/services/voice/corpus-generator.test.ts +201 -0
- package/src/services/voice/corpus-generator.ts +413 -0
- package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
- package/src/services/voice/diarization-error-rate.test.ts +100 -0
- package/src/services/voice/diarization-error-rate.ts +249 -0
- package/src/services/voice/e2e-harness.der.test.ts +94 -0
- package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
- package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +902 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/echo-delay.test.ts +118 -0
- package/src/services/voice/echo-delay.ts +135 -0
- package/src/services/voice/echo-metrics.test.ts +17 -0
- package/src/services/voice/echo-metrics.ts +20 -0
- package/src/services/voice/echo-reference-buffer.test.ts +86 -0
- package/src/services/voice/echo-reference-buffer.ts +165 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.test.ts +131 -0
- package/src/services/voice/embedding.ts +242 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2343 -0
- package/src/services/voice/eot-classifier-ggml.ts +569 -0
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +422 -0
- package/src/services/voice/errors.ts +34 -0
- package/src/services/voice/expressive-tags.asr.test.ts +77 -0
- package/src/services/voice/expressive-tags.test.ts +102 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.test.ts +735 -0
- package/src/services/voice/ffi-bindings.ts +3387 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.ts +139 -0
- package/src/services/voice/index.ts +502 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.ts +64 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +622 -0
- package/src/services/voice/metric-math.test.ts +61 -0
- package/src/services/voice/metric-math.ts +25 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
- package/src/services/voice/nlms-echo-canceller.ts +317 -0
- package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.ts +504 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/real-audio-decode.test.ts +148 -0
- package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
- package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
- package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
- package/src/services/voice/ring-buffer.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/self-voice-imprint.test.ts +59 -0
- package/src/services/voice/self-voice-imprint.ts +102 -0
- package/src/services/voice/shared-resources.ts +343 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/transcript-knowledge.test.ts +68 -0
- package/src/services/voice/transcript-knowledge.ts +75 -0
- package/src/services/voice/transcript-service.test.ts +195 -0
- package/src/services/voice/transcript-service.ts +205 -0
- package/src/services/voice/transcript-store.test.ts +189 -0
- package/src/services/voice/transcript-store.ts +164 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.test.ts +498 -0
- package/src/services/voice/vad.ts +832 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.test.ts +415 -0
- package/src/services/voice/voice-budget.ts +635 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
- package/src/services/voice/voice-preload-predictor.test.ts +130 -0
- package/src/services/voice/voice-preload-predictor.ts +113 -0
- package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
- package/src/services/voice/voice-preset-format.test.ts +75 -0
- package/src/services/voice/voice-preset-format.ts +713 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +280 -0
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +367 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.ts +319 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
- package/src/services/voice/wav-codec.test.ts +32 -0
- package/src/services/voice/wav-codec.ts +101 -0
- package/src/services/voice/workbench-entrypoint.test.ts +55 -0
- package/src/services/voice/workbench-entrypoint.ts +88 -0
- package/src/services/voice/workbench-headless-runner.test.ts +162 -0
- package/src/services/voice/workbench-headless-runner.ts +396 -0
- package/src/services/voice/workbench-logic-services.test.ts +225 -0
- package/src/services/voice/workbench-logic-services.ts +184 -0
- package/src/services/voice/workbench-real-services.ts +629 -0
- package/src/services/voice/workbench-scenarios.ts +407 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/src/voice-workbench.ts +71 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a model's RAM budget and decide whether it fits the host.
|
|
3
|
+
*
|
|
4
|
+
* For installed Eliza-1 tiers WITH a published `eliza-1.manifest.json`
|
|
5
|
+
* on disk we prefer the manifest's `ramBudgetMb.{min, recommended}`
|
|
6
|
+
* block — that's what packages/inference/AGENTS.md §3 + §6 designate
|
|
7
|
+
* as the source of truth for per-bundle memory expectations. For every
|
|
8
|
+
* other model (non-Eliza-1, uninstalled tiers, or Eliza-1 bundles that
|
|
9
|
+
* predate the manifest publish) we fall back to the catalog scalar
|
|
10
|
+
* `model.minRamGb` for the floor and synthesize a `recommendedMb` from
|
|
11
|
+
* the floor plus the bundle's per-token KV-cache footprint at its default
|
|
12
|
+
* context window — the same `KvGeometry` figure `kv-spill.ts` uses. That
|
|
13
|
+
* fixes the degenerate `minMb == recommendedMb` catalog case: a long
|
|
14
|
+
* session grows into the KV cache, so "boots" and "runs comfortably" are
|
|
15
|
+
* genuinely different lines.
|
|
16
|
+
*
|
|
17
|
+
* The manifest read is best-effort: a missing or malformed manifest
|
|
18
|
+
* never throws — recommendation runs at runtime and a broken manifest
|
|
19
|
+
* must not crash the dashboard. Build-time gates live in the publish
|
|
20
|
+
* script (packages/training/scripts/manifest/eliza1_manifest.py) and
|
|
21
|
+
* the validator (`./manifest/validator.ts`).
|
|
22
|
+
*
|
|
23
|
+
* This module is the single source of truth for the "does model X fit a
|
|
24
|
+
* host with N MB usable RAM" decision (`assessRamFit`). Both the Model
|
|
25
|
+
* Hub recommender (`recommendation.ts`) and the model-load admission gate
|
|
26
|
+
* (`active-model.ts`) call it — neither re-derives the math.
|
|
27
|
+
*/
|
|
28
|
+
import { type Eliza1Manifest } from "./manifest";
|
|
29
|
+
import type { CatalogModel, InstalledModel, RamBudget } from "./types";
|
|
30
|
+
export declare function ramHeadroomReserveMb(): number;
|
|
31
|
+
export type { RamBudget } from "./types.js";
|
|
32
|
+
/**
|
|
33
|
+
* Loader contract — keeps the helper testable without touching disk.
|
|
34
|
+
* Production callers pass `defaultManifestLoader`; tests inject a fake loader.
|
|
35
|
+
*/
|
|
36
|
+
export type ManifestLoader = (modelId: string, installed: InstalledModel | undefined) => Eliza1Manifest | null;
|
|
37
|
+
/** Test-only: drop memoized manifests so fixtures with reused SHAs don't leak. */
|
|
38
|
+
export declare function __resetManifestCacheForTests(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Production manifest loader — reads `eliza-1.manifest.json` from the
|
|
41
|
+
* installed bundle's directory. Two candidate paths are probed:
|
|
42
|
+
*
|
|
43
|
+
* 1. `dirname(dirname(model.path))` — the canonical bundle root when
|
|
44
|
+
* the GGUF lives in a `text/` subdir per AGENTS.md §2.
|
|
45
|
+
* 2. `dirname(model.path)` — flat layout used by some test fixtures
|
|
46
|
+
* and pre-bundle installs.
|
|
47
|
+
*
|
|
48
|
+
* Returns `null` for any failure: missing file, JSON parse error,
|
|
49
|
+
* manifest validation error, or tier mismatch.
|
|
50
|
+
*/
|
|
51
|
+
export declare function defaultManifestLoader(modelId: string, installed: InstalledModel | undefined): Eliza1Manifest | null;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a `RamBudget` for `model`, optionally consulting the on-disk
|
|
54
|
+
* manifest of an installed Eliza-1 bundle.
|
|
55
|
+
*
|
|
56
|
+
* `installed` and `manifestLoader` are both optional — passing neither
|
|
57
|
+
* always returns the catalog-scalar fallback. The recommendation engine
|
|
58
|
+
* passes both at call sites where it has the installed-models list.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveRamBudget(model: CatalogModel, installed?: InstalledModel, manifestLoader?: ManifestLoader): RamBudget;
|
|
61
|
+
export interface RamFitOptions {
|
|
62
|
+
installed?: InstalledModel;
|
|
63
|
+
manifestLoader?: ManifestLoader;
|
|
64
|
+
/**
|
|
65
|
+
* Override the headroom reserved for the OS/runtime. Defaults to
|
|
66
|
+
* `ramHeadroomReserveMb()`. Pass 0 to assess against raw memory (the
|
|
67
|
+
* recommender does this — it works in "effective memory available to
|
|
68
|
+
* the model" terms, where the OS reserve is already discounted).
|
|
69
|
+
*/
|
|
70
|
+
reserveMb?: number;
|
|
71
|
+
}
|
|
72
|
+
export type RamFitLevel = "fits" | "tight" | "wontfit";
|
|
73
|
+
export interface RamFitDecision {
|
|
74
|
+
level: RamFitLevel;
|
|
75
|
+
/** True for `fits` and `tight`; false only for `wontfit`. */
|
|
76
|
+
fits: boolean;
|
|
77
|
+
budget: RamBudget;
|
|
78
|
+
/** Memory after subtracting the headroom reserve, in MB. */
|
|
79
|
+
usableMb: number;
|
|
80
|
+
/** Headroom reserve applied, in MB. */
|
|
81
|
+
reserveMb: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The one fit decision. `hostRamMb` is the memory being assessed against,
|
|
85
|
+
* in megabytes (`os.totalmem() / 2**20`, or the probe's `totalRamGb * 1024`,
|
|
86
|
+
* or — for the recommender on a GPU host — the effective model-available
|
|
87
|
+
* memory in MB).
|
|
88
|
+
*
|
|
89
|
+
* - `wontfit` : usable RAM (host minus headroom) is below the bundle's
|
|
90
|
+
* boot floor (`budget.minMb`). A load MUST be refused.
|
|
91
|
+
* - `tight` : boots, but usable RAM is below the recommended budget —
|
|
92
|
+
* a long session will swap or stutter under load.
|
|
93
|
+
* - `fits` : comfortable headroom.
|
|
94
|
+
*/
|
|
95
|
+
export declare function assessRamFit(model: CatalogModel, hostRamMb: number, options?: RamFitOptions): RamFitDecision;
|
|
96
|
+
/**
|
|
97
|
+
* Given a catalog entry, pick the variant of the same model "line" (same
|
|
98
|
+
* param count and display-name stem — e.g. `eliza-1-27b` / `eliza-1-27b-256k`)
|
|
99
|
+
* with the largest context window that still fits a
|
|
100
|
+
* host with `hostRamMb` of RAM. Returns `model` itself when it's already
|
|
101
|
+
* the best fit (or the only variant), or `null` when not even `model` fits
|
|
102
|
+
* — callers turn that into a refusal.
|
|
103
|
+
*
|
|
104
|
+
* Variants are matched by `(params, displayNameStem)` where the stem is the
|
|
105
|
+
* display name with any trailing `-<ctx>` suffix (`-256k`, `-1m`, `-128k`)
|
|
106
|
+
* stripped. This keeps `eliza-1-27b*` together without conflating `9b` and
|
|
107
|
+
* `27b`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function pickFittingContextVariant(model: CatalogModel, hostRamMb: number, options?: RamFitOptions, catalog?: ReadonlyArray<CatalogModel>): CatalogModel | null;
|
|
110
|
+
//# sourceMappingURL=ram-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ram-budget.d.ts","sourceRoot":"","sources":["../../src/services/ram-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAoBvE,wBAAgB,oBAAoB,IAAI,MAAM,CAO7C;AAED,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GAAG,SAAS,KACjC,cAAc,GAAG,IAAI,CAAC;AAmB3B,kFAAkF;AAClF,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,cAAc,GAAG,SAAS,GACnC,cAAc,GAAG,IAAI,CAyCvB;AAkBD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,YAAY,EACnB,SAAS,CAAC,EAAE,cAAc,EAC1B,cAAc,GAAE,cAAsC,GACpD,SAAS,CAiBX;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,WAAW,CAAC;IACnB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GACzB,cAAc,CAmBhB;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,EAC3B,OAAO,GAAE,aAAa,CAAC,YAAY,CAAiB,GAClD,YAAY,GAAG,IAAI,CAkBrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ActiveModelState, CatalogModel, DownloadJob, InstalledModel, LocalInferenceReadiness, ModelAssignments } from "./types";
|
|
2
|
+
export declare function buildTextGenerationReadiness(input: {
|
|
3
|
+
assignments: ModelAssignments;
|
|
4
|
+
installed: InstalledModel[];
|
|
5
|
+
active: ActiveModelState;
|
|
6
|
+
downloads: DownloadJob[];
|
|
7
|
+
catalog?: CatalogModel[];
|
|
8
|
+
}): LocalInferenceReadiness;
|
|
9
|
+
//# sourceMappingURL=readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/services/readiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EAEX,cAAc,EAEd,uBAAuB,EAEvB,gBAAgB,EAEhB,MAAM,SAAS,CAAC;AA8LjB,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IACnD,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB,GAAG,uBAAuB,CA4B1B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { type Eliza1DeviceCaps } from "./manifest";
|
|
2
|
+
import { type ManifestLoader } from "./ram-budget";
|
|
3
|
+
import type { CatalogModel, CatalogQuantizationVariant, HardwareFitLevel, HardwareProbe, InstalledModel, TextGenerationSlot } from "./types";
|
|
4
|
+
export type RecommendationPlatformClass = "mobile" | "apple-silicon" | "linux-gpu" | "linux-cpu" | "desktop-gpu" | "desktop-cpu";
|
|
5
|
+
export interface RecommendedModelSelection {
|
|
6
|
+
slot: TextGenerationSlot;
|
|
7
|
+
platformClass: RecommendationPlatformClass;
|
|
8
|
+
model: CatalogModel | null;
|
|
9
|
+
fit: HardwareFitLevel | null;
|
|
10
|
+
reason: string;
|
|
11
|
+
alternatives: CatalogModel[];
|
|
12
|
+
}
|
|
13
|
+
export declare function classifyRecommendationPlatform(hardware: HardwareProbe): RecommendationPlatformClass;
|
|
14
|
+
export declare function catalogDownloadSizeGb(model: CatalogModel, catalog?: CatalogModel[]): number;
|
|
15
|
+
export declare function catalogDownloadSizeBytes(model: CatalogModel, catalog?: CatalogModel[]): number;
|
|
16
|
+
export declare function selectBestQuantizationVariant(model: CatalogModel): CatalogQuantizationVariant | null;
|
|
17
|
+
export declare function assessCatalogModelFit(hardware: HardwareProbe, model: CatalogModel, catalog?: CatalogModel[], options?: {
|
|
18
|
+
installed?: InstalledModel;
|
|
19
|
+
manifestLoader?: ManifestLoader;
|
|
20
|
+
}): HardwareFitLevel;
|
|
21
|
+
export interface RecommendationOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Kernels actually advertised by the installed llama-server binary
|
|
24
|
+
* (parsed from CAPABILITIES.json next to it). When provided, models
|
|
25
|
+
* declaring `requiresKernel` not satisfied by this map are filtered
|
|
26
|
+
* out so we don't recommend a model the user can't actually run on
|
|
27
|
+
* this binary. Pass null/omit when no probe is available — recommender
|
|
28
|
+
* trusts the catalog and the dispatcher's load-time check.
|
|
29
|
+
*/
|
|
30
|
+
binaryKernels?: Partial<Record<string, boolean>> | null;
|
|
31
|
+
/**
|
|
32
|
+
* Models the user has already installed. When an Eliza-1 tier in this
|
|
33
|
+
* list has a published `eliza-1.manifest.json` next to its bundle,
|
|
34
|
+
* the recommender consults `manifest.ramBudgetMb` instead of the
|
|
35
|
+
* catalog's coarse `minRamGb` scalar. See `./ram-budget.ts`.
|
|
36
|
+
*/
|
|
37
|
+
installed?: ReadonlyArray<InstalledModel>;
|
|
38
|
+
/**
|
|
39
|
+
* Test-only override for the manifest reader. Production callers leave
|
|
40
|
+
* this unset and the helper reads `eliza-1.manifest.json` from disk.
|
|
41
|
+
*/
|
|
42
|
+
manifestLoader?: ManifestLoader;
|
|
43
|
+
}
|
|
44
|
+
export declare function selectRecommendedModelForSlot(slot: TextGenerationSlot, hardware: HardwareProbe, catalog?: CatalogModel[], options?: RecommendationOptions): RecommendedModelSelection;
|
|
45
|
+
/**
|
|
46
|
+
* Project a `HardwareProbe` onto the `Eliza1DeviceCaps` shape the manifest
|
|
47
|
+
* validator's `canSetAsDefault` consumes. CPU is always available; a probed
|
|
48
|
+
* GPU contributes exactly its one backend (`cuda` / `metal` / `vulkan`). RAM
|
|
49
|
+
* is the device total, in MB — `canSetAsDefault` compares against the
|
|
50
|
+
* manifest's `ramBudgetMb.min` floor, not the headroom-discounted figure the
|
|
51
|
+
* ladder uses, because the floor is "will it boot at all".
|
|
52
|
+
*/
|
|
53
|
+
export declare function deviceCapsFromProbe(hardware: HardwareProbe): Eliza1DeviceCaps;
|
|
54
|
+
export type BundleDefaultEligibility = {
|
|
55
|
+
canBeDefault: true;
|
|
56
|
+
} | {
|
|
57
|
+
canBeDefault: false;
|
|
58
|
+
reason: "no-manifest" | "not-default-eligible" | "ram-below-floor" | "kernels-unverified-on-device" | "not-verified-on-device";
|
|
59
|
+
detail: string;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* True iff this installed Eliza-1 bundle may be offered as the recommended
|
|
63
|
+
* default on this device. The full set of conditions (any one failing →
|
|
64
|
+
* not default):
|
|
65
|
+
*
|
|
66
|
+
* - the bundle ships a validated `eliza-1.manifest.json`,
|
|
67
|
+
* - the manifest is contract-valid (every required kernel declared, every
|
|
68
|
+
* required eval green for a strict release, lineage/files consistent —
|
|
69
|
+
* enforced by `canSetAsDefault` → `collectContractErrors`),
|
|
70
|
+
* - the device exposes at least one backend the manifest verified `pass` on
|
|
71
|
+
* out of the tier's supported set,
|
|
72
|
+
* - the device RAM meets the manifest's `ramBudgetMb.min` floor,
|
|
73
|
+
* - the bundle has passed the one-time on-device verify pass
|
|
74
|
+
* (`InstalledModel.bundleVerifiedAt` is set) — a materialized-but-unverified
|
|
75
|
+
* bundle is never auto-selected, per AGENTS.md §7.
|
|
76
|
+
*
|
|
77
|
+
* `manifest.defaultEligible: true` is NOT required at the gate level — a
|
|
78
|
+
* `base-v1-candidate` bundle that passes every above condition is allowed
|
|
79
|
+
* to fill an empty default slot. The recommender prefers a strict release
|
|
80
|
+
* (`defaultEligible: true`) over a candidate when both are installed.
|
|
81
|
+
*/
|
|
82
|
+
export declare function canBundleBeDefaultOnDevice(installed: InstalledModel, hardware: HardwareProbe, options?: {
|
|
83
|
+
manifestLoader?: ManifestLoader;
|
|
84
|
+
}): BundleDefaultEligibility;
|
|
85
|
+
export declare function selectRecommendedModels(hardware: HardwareProbe, catalog?: CatalogModel[], options?: RecommendationOptions): Record<TextGenerationSlot, RecommendedModelSelection>;
|
|
86
|
+
/**
|
|
87
|
+
* Pick the model the engine should auto-load on first run when no user
|
|
88
|
+
* preference exists. Always resolves to an Eliza-1 default-eligible
|
|
89
|
+
* tier — never a non-Eliza catalog entry, never a HF-search result.
|
|
90
|
+
*
|
|
91
|
+
* Resolution order:
|
|
92
|
+
* 1. `FIRST_RUN_DEFAULT_MODEL_ID` when present in the catalog, in the
|
|
93
|
+
* default-eligible set, and not marked `publishStatus: "pending"`.
|
|
94
|
+
* 2. The first default-eligible, non-pending chat entry in the catalog
|
|
95
|
+
* as a fallback when the preferred id is missing or its HF bundle
|
|
96
|
+
* isn't published yet (elizaOS/eliza#7629). The fall-through walks
|
|
97
|
+
* the catalog in order, so the maintainer can keep
|
|
98
|
+
* `FIRST_RUN_DEFAULT_MODEL_ID` pointed at the *intended* default
|
|
99
|
+
* while the publish pipeline catches up.
|
|
100
|
+
* 3. If every default-eligible tier is pending, last-resort to ANY
|
|
101
|
+
* default-eligible tier — the device download path will fail
|
|
102
|
+
* cleanly with a 404 rather than silently picking a private
|
|
103
|
+
* non-Eliza model.
|
|
104
|
+
*
|
|
105
|
+
* Returns null only when no default-eligible entry exists at all —
|
|
106
|
+
* which means the catalog is misconfigured and the caller should
|
|
107
|
+
* surface a hard error rather than degrade silently.
|
|
108
|
+
*/
|
|
109
|
+
export declare function recommendForFirstRun(catalog?: CatalogModel[]): CatalogModel | null;
|
|
110
|
+
export declare function chooseSmallerFallbackModel(currentModelId: string, hardware: HardwareProbe, slot?: TextGenerationSlot, catalog?: CatalogModel[], options?: RecommendationOptions): CatalogModel | null;
|
|
111
|
+
//# sourceMappingURL=recommendation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../src/services/recommendation.ts"],"names":[],"mappings":"AAOA,OAAO,EAGN,KAAK,gBAAgB,EAGrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACX,YAAY,EACZ,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAOjB,MAAM,MAAM,2BAA2B,GACpC,QAAQ,GACR,eAAe,GACf,WAAW,GACX,WAAW,GACX,aAAa,GACb,aAAa,CAAC;AAEjB,MAAM,WAAW,yBAAyB;IACzC,IAAI,EAAE,kBAAkB,CAAC;IACzB,aAAa,EAAE,2BAA2B,CAAC;IAC3C,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,EAAE,CAAC;CAC7B;AAiDD,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,aAAa,GACrB,2BAA2B,CAgB7B;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,YAAY,EAAkB,GACrC,MAAM,CAGR;AAED,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,YAAY,EAAkB,GACrC,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAC5C,KAAK,EAAE,YAAY,GACjB,0BAA0B,GAAG,IAAI,CAWnC;AA0CD,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,YAAY,EAAkB,EACvC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,cAAc,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CAAO,GAC3E,gBAAgB,CAiBlB;AAuHD,MAAM,WAAW,qBAAqB;IACrC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IACxD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC1C;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CAChC;AAwBD,wBAAgB,6BAA6B,CAC5C,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAY,EAAkB,EACvC,OAAO,GAAE,qBAA0B,GACjC,yBAAyB,CA+C3B;AAyBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,gBAAgB,CAa7E;AAED,MAAM,MAAM,wBAAwB,GACjC;IAAE,YAAY,EAAE,IAAI,CAAA;CAAE,GACtB;IACA,YAAY,EAAE,KAAK,CAAC;IACpB,MAAM,EACH,aAAa,GACb,sBAAsB,GACtB,iBAAiB,GACjB,8BAA8B,GAC9B,wBAAwB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CACd,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,cAAc,CAAA;CAAO,GAC/C,wBAAwB,CAqD1B;AAED,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAY,EAAkB,EACvC,OAAO,GAAE,qBAA0B,GACjC,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAevD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,GAAE,YAAY,EAAkB,GACrC,YAAY,GAAG,IAAI,CAuBrB;AAED,wBAAgB,0BAA0B,CACzC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,aAAa,EACvB,IAAI,GAAE,kBAAiC,EACvC,OAAO,GAAE,YAAY,EAAkB,EACvC,OAAO,GAAE,qBAA0B,GACjC,YAAY,GAAG,IAAI,CA0BrB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* On-disk registry of installed models.
|
|
3
|
+
*
|
|
4
|
+
* The default registry contains only Eliza-owned downloads
|
|
5
|
+
* (source: "eliza-download") written on successful completion by the
|
|
6
|
+
* curated bundle downloader. External scans are developer-only diagnostics
|
|
7
|
+
* behind `ELIZA_LOCAL_INFERENCE_ENABLE_EXTERNAL_SCAN=1`; they never enter
|
|
8
|
+
* first-run, setup, or normal Settings surfaces.
|
|
9
|
+
*/
|
|
10
|
+
import { type InstalledModel } from "./types";
|
|
11
|
+
/**
|
|
12
|
+
* Return models currently usable by the curated local-inference path.
|
|
13
|
+
*
|
|
14
|
+
* Normal product behavior is Eliza-1 only. The external scan remains available
|
|
15
|
+
* only to developers who explicitly opt into the old arbitrary-GGUF diagnostic
|
|
16
|
+
* path with `ELIZA_LOCAL_INFERENCE_ENABLE_EXTERNAL_SCAN=1`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function listInstalledModels(): Promise<InstalledModel[]>;
|
|
19
|
+
/** Add or update a Eliza-owned entry. External entries are rejected. */
|
|
20
|
+
export declare function upsertElizaModel(model: InstalledModel): Promise<void>;
|
|
21
|
+
/** Mark an existing Eliza-owned model as most-recently-used. */
|
|
22
|
+
export declare function touchElizaModel(id: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Delete a Eliza-owned model from the registry and from disk.
|
|
25
|
+
*
|
|
26
|
+
* Refuses if the model was discovered from another tool — Eliza must not
|
|
27
|
+
* touch files it doesn't own. Callers surface that refusal as a 4xx.
|
|
28
|
+
*/
|
|
29
|
+
export declare function removeElizaModel(id: string): Promise<{
|
|
30
|
+
removed: boolean;
|
|
31
|
+
reason?: "external" | "not-found";
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,SAAS,CAAC;AAyChE;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiBrE;AAED,wEAAwE;AACxE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3E;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/D;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;CAClC,CAAC,CA6BD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Top-priority router handler.
|
|
3
|
+
*
|
|
4
|
+
* Registers a model handler for every `AgentModelSlot` at priority
|
|
5
|
+
* `Number.MAX_SAFE_INTEGER`, which guarantees the runtime dispatches to
|
|
6
|
+
* us first. At dispatch time we:
|
|
7
|
+
*
|
|
8
|
+
* 1. Read the user's per-slot policy + preferred-provider choice from
|
|
9
|
+
* `routing-preferences.ts`.
|
|
10
|
+
* 2. Ask the `policyEngine` to pick a provider from the handler
|
|
11
|
+
* registry's current set (excluding ourselves).
|
|
12
|
+
* 3. Invoke that provider's original handler directly — bypassing
|
|
13
|
+
* `runtime.useModel` which would recurse into us.
|
|
14
|
+
* 4. Record the observed latency so later "fastest" picks have data.
|
|
15
|
+
* 5. On handler failure: retry the next eligible provider in priority
|
|
16
|
+
* order until exhausted (except in `manual` mode with an explicit
|
|
17
|
+
* preferred provider — that throws verbatim).
|
|
18
|
+
*
|
|
19
|
+
* If no other handler exists we throw a clear error rather than return
|
|
20
|
+
* garbage — the caller is meant to see "no provider configured" so they
|
|
21
|
+
* know to set one up.
|
|
22
|
+
*
|
|
23
|
+
* Because the router sits at the top of the priority stack, the user's
|
|
24
|
+
* preference is always authoritative regardless of what plugins register
|
|
25
|
+
* at lower priorities. This is the mechanism that unifies cloud + local
|
|
26
|
+
* + device-bridge routing from one settings panel.
|
|
27
|
+
*
|
|
28
|
+
* ## TTS routing precedence (`TEXT_TO_SPEECH` slot)
|
|
29
|
+
*
|
|
30
|
+
* The default per-slot policy is `prefer-local` (see
|
|
31
|
+
* `DEFAULT_ROUTING_POLICY` in `routing-preferences.ts`), which the
|
|
32
|
+
* policyEngine implements by short-circuiting to whichever candidate
|
|
33
|
+
* has provider `eliza-local-inference` / `capacitor-llama` /
|
|
34
|
+
* `eliza-device-bridge`. So even though `plugin-elizacloud` registers
|
|
35
|
+
* its TTS handler at plugin priority 50 (higher than the default 0 of
|
|
36
|
+
* direct providers like ElevenLabs / OpenAI / Groq / Edge-TTS), the
|
|
37
|
+
* router prefers local first when local is registered AND
|
|
38
|
+
* `local-inference` has a TTS-capable handler.
|
|
39
|
+
*
|
|
40
|
+
* Documented routing precedence for `TEXT_TO_SPEECH`:
|
|
41
|
+
*
|
|
42
|
+
* 1. **Local (`eliza-local-inference`)** — tier-aware Eliza-1 voice,
|
|
43
|
+
* using the ordered `ELIZA_1_VOICE_BACKENDS` policy in
|
|
44
|
+
* `@elizaos/shared/local-inference/catalog` (OmniVoice first where
|
|
45
|
+
* bundled, Kokoro fallback where bundled). Always preferred when
|
|
46
|
+
* available.
|
|
47
|
+
* 2. **Eliza Cloud (`elizacloud`)** — managed cloud proxy. Picked when
|
|
48
|
+
* local is unavailable. Throws `CloudTtsUnavailableError` when
|
|
49
|
+
* cloud isn't connected, which the loop above catches and falls
|
|
50
|
+
* through to step 3.
|
|
51
|
+
* 3. **ElevenLabs (`elevenlabs`)** — direct API key path.
|
|
52
|
+
* 4. **OpenAI (`openai`)** — direct API key path.
|
|
53
|
+
* 5. **Groq (`groq`)** — direct API key path.
|
|
54
|
+
* 6. **Edge-TTS (`edge-tts`)** — free Microsoft Edge endpoint, no key.
|
|
55
|
+
*
|
|
56
|
+
* Same precedence applies to `TRANSCRIPTION`, with the local side using
|
|
57
|
+
* the fused Gemma ASR path when the active bundle stages eligible ASR
|
|
58
|
+
* artifacts (no whisper.cpp fallback).
|
|
59
|
+
*
|
|
60
|
+
* Users can override this per slot via the routing-preferences settings
|
|
61
|
+
* panel (`prefer-local` ↔ `manual` + explicit `preferredProvider`).
|
|
62
|
+
*/
|
|
63
|
+
import type { AgentRuntime } from "@elizaos/core";
|
|
64
|
+
import type { HandlerRegistration } from "./handler-registry";
|
|
65
|
+
import { type AgentModelSlot } from "./types";
|
|
66
|
+
export declare const ROUTER_PROVIDER = "eliza-router";
|
|
67
|
+
declare function modelTypeToSlot(modelType: string): AgentModelSlot | null;
|
|
68
|
+
export declare function filterUnavailableLocalInferenceCandidates(candidates: HandlerRegistration[], localInferenceAvailable: boolean, forceLocalInference: boolean): HandlerRegistration[];
|
|
69
|
+
export declare function filterUnavailableLocalInference(slot: AgentModelSlot, policy: string, preferredProvider: string | null, candidates: HandlerRegistration[]): Promise<HandlerRegistration[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Install the router as the top-priority handler for every slot.
|
|
72
|
+
*
|
|
73
|
+
* Idempotent per-runtime via the handler-registry's "last write wins"
|
|
74
|
+
* behaviour — re-registering our handlers just refreshes them in place.
|
|
75
|
+
* Called from `ensure-local-inference-handler.ts` after `handlerRegistry`
|
|
76
|
+
* has been installed on the runtime.
|
|
77
|
+
*/
|
|
78
|
+
export interface RouterInstallOptions {
|
|
79
|
+
skipSlots?: readonly AgentModelSlot[];
|
|
80
|
+
}
|
|
81
|
+
export declare function installRouterHandler(runtime: AgentRuntime, options?: RouterInstallOptions): void;
|
|
82
|
+
/** Public helper — useful for diagnostics endpoints. */
|
|
83
|
+
export declare function describeCurrentRouting(): Array<{
|
|
84
|
+
slot: AgentModelSlot;
|
|
85
|
+
modelType: string;
|
|
86
|
+
candidates: Array<{
|
|
87
|
+
provider: string;
|
|
88
|
+
priority: number;
|
|
89
|
+
}>;
|
|
90
|
+
}>;
|
|
91
|
+
export { modelTypeToSlot };
|
|
92
|
+
//# sourceMappingURL=router-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-handler.d.ts","sourceRoot":"","sources":["../../src/services/router-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AASjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAU9D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAEjE,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAiE9C,iBAAS,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAKjE;AA8CD,wBAAgB,yCAAyC,CACxD,UAAU,EAAE,mBAAmB,EAAE,EACjC,uBAAuB,EAAE,OAAO,EAChC,mBAAmB,EAAE,OAAO,GAC1B,mBAAmB,EAAE,CAQvB;AAED,wBAAsB,+BAA+B,CACpD,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,EAAE,mBAAmB,EAAE,GAC/B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA4BhC;AAmHD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACpC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACtC;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,oBAAyB,GAChC,IAAI,CAuBN;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,IAAI,KAAK,CAAC;IAC/C,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH,CAAC,CAWD;AAID,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy engine + latency + cost tracking for cross-provider routing.
|
|
3
|
+
*
|
|
4
|
+
* The policy engine sits on top of the `handlerRegistry` and, given a
|
|
5
|
+
* model type and a user-selected policy, decides which provider's handler
|
|
6
|
+
* should serve the next request. The router-handler (registered at top
|
|
7
|
+
* priority) calls `pickProvider` to make that decision.
|
|
8
|
+
*
|
|
9
|
+
* Policies:
|
|
10
|
+
* - manual — honour `preferredProvider`; when no pref set, fall
|
|
11
|
+
* through to the runtime's native priority order
|
|
12
|
+
* (highest registered priority wins).
|
|
13
|
+
* - auto — capability-driven: consult the device-tier assessment AND
|
|
14
|
+
* the live device signals (thermal + decode throughput). Route
|
|
15
|
+
* local only when the device can comfortably run the slot's
|
|
16
|
+
* modality (text → `canRunLocalLm`, voice → `canRunLocalVoice`)
|
|
17
|
+
* AND it is not currently throttled / below the TPS budget.
|
|
18
|
+
* Otherwise pick the highest-priority cloud provider.
|
|
19
|
+
* - cheapest — pick the provider with the lowest per-token cost.
|
|
20
|
+
* - fastest — pick the provider with the lowest tracked p50 latency
|
|
21
|
+
* (needs at least a few samples; falls back to native).
|
|
22
|
+
* - prefer-local — try local first; if it fails or has no handler,
|
|
23
|
+
* fall through to the next-best non-local. A device that
|
|
24
|
+
* cannot run the slot's modality softly demotes the local
|
|
25
|
+
* pick so an unusable on-device path isn't forced.
|
|
26
|
+
* - local-only — always on-device: never returns a cloud provider. When no
|
|
27
|
+
* local handler is registered, returns `null` so the caller
|
|
28
|
+
* surfaces "no local provider" instead of silently routing
|
|
29
|
+
* to a paid API.
|
|
30
|
+
* - cloud-only — always off-device: never returns a local provider. Returns
|
|
31
|
+
* `null` when only local handlers exist.
|
|
32
|
+
* - round-robin — distribute load evenly across eligible providers.
|
|
33
|
+
*
|
|
34
|
+
* Latency is tracked in a ring buffer per provider per model type. Cost
|
|
35
|
+
* is a static table of published per-million-token rates; local providers
|
|
36
|
+
* are $0. Neither is exact — the goal is "good enough to discriminate"
|
|
37
|
+
* rather than dollar-accurate billing.
|
|
38
|
+
*/
|
|
39
|
+
import type { DeviceTierAssessment } from "./device-tier";
|
|
40
|
+
import type { HandlerRegistration } from "./handler-registry";
|
|
41
|
+
import type { LiveDeviceSignals } from "./live-signals";
|
|
42
|
+
import type { RoutingPolicy } from "./routing-preferences";
|
|
43
|
+
import type { AgentModelSlot } from "./types";
|
|
44
|
+
declare class PolicyEngine {
|
|
45
|
+
private stats;
|
|
46
|
+
private statsFor;
|
|
47
|
+
recordLatency(provider: string, modelType: string, durationMs: number): void;
|
|
48
|
+
recordPick(provider: string, modelType: string): void;
|
|
49
|
+
p50(provider: string, modelType: string): number | null;
|
|
50
|
+
lastPicked(provider: string, modelType: string): number | null;
|
|
51
|
+
costOf(provider: string): number | null;
|
|
52
|
+
/**
|
|
53
|
+
* Pick a provider for this (modelType, policy) given the registry.
|
|
54
|
+
* Returns the HandlerRegistration whose handler the router-handler
|
|
55
|
+
* should dispatch to, or null if no eligible handler exists.
|
|
56
|
+
*
|
|
57
|
+
* `preferredProvider` is only honoured for policy === "manual".
|
|
58
|
+
*/
|
|
59
|
+
pickProvider(args: {
|
|
60
|
+
modelType: string;
|
|
61
|
+
policy: RoutingPolicy;
|
|
62
|
+
preferredProvider: string | null;
|
|
63
|
+
candidates: HandlerRegistration[];
|
|
64
|
+
/** Provider ID of the router itself — always excluded from candidates. */
|
|
65
|
+
selfProvider: string;
|
|
66
|
+
/**
|
|
67
|
+
* The agent slot being routed. Drives the per-modality `auto` gate:
|
|
68
|
+
* voice slots (`TEXT_TO_SPEECH` / `TRANSCRIPTION`) check
|
|
69
|
+
* `canRunLocalVoice`; every other slot checks `canRunLocalLm`.
|
|
70
|
+
*/
|
|
71
|
+
slot?: AgentModelSlot;
|
|
72
|
+
/**
|
|
73
|
+
* Static device-capability assessment from `classifyDeviceTier()`.
|
|
74
|
+
* Consulted by `auto` (per-modality gate) and used as a soft hint by
|
|
75
|
+
* `prefer-local`. Null when the host hasn't probed hardware yet — `auto`
|
|
76
|
+
* then falls back to cloud.
|
|
77
|
+
*/
|
|
78
|
+
deviceTier?: DeviceTierAssessment | null;
|
|
79
|
+
/**
|
|
80
|
+
* Live device signals (thermal + decode throughput). When the device is
|
|
81
|
+
* currently throttled or below the TPS budget, `auto` demotes a local
|
|
82
|
+
* pick to cloud even if the static tier favoured local. Null = no live
|
|
83
|
+
* demotion (the static decision stands).
|
|
84
|
+
*/
|
|
85
|
+
liveSignals?: LiveDeviceSignals | null;
|
|
86
|
+
}): HandlerRegistration | null;
|
|
87
|
+
/** For tests and diagnostics. */
|
|
88
|
+
snapshot(): Record<string, Record<string, number | null>>;
|
|
89
|
+
}
|
|
90
|
+
export declare const policyEngine: PolicyEngine;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=routing-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-policy.d.ts","sourceRoot":"","sources":["../../src/services/routing-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAkI9C,cAAM,YAAY;IACjB,OAAO,CAAC,KAAK,CAAmD;IAEhE,OAAO,CAAC,QAAQ;IAShB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAU5E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQvC;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,aAAa,CAAC;QACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,UAAU,EAAE,mBAAmB,EAAE,CAAC;QAClC,0EAA0E;QAC1E,YAAY,EAAE,MAAM,CAAC;QACrB;;;;WAIG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB;;;;;WAKG;QACH,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;QACzC;;;;;WAKG;QACH,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;KACvC,GAAG,mBAAmB,GAAG,IAAI;IAsG9B,iCAAiC;IACjC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAWzD;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-export of the shared routing-preferences module. The canonical
|
|
3
|
+
* implementation lives in `@elizaos/shared/local-inference` because both
|
|
4
|
+
* the server (`@elizaos/app-core`) and the UI client (`@elizaos/ui`)
|
|
5
|
+
* read/write the same routing.json with identical semantics.
|
|
6
|
+
*/
|
|
7
|
+
export { DEFAULT_ROUTING_POLICY, isRoutingPolicy, ROUTING_POLICIES, type RoutingPolicy, type RoutingPreferences, readRoutingPreferences, setPolicy, setPreferredProvider, writeRoutingPreferences, } from "@elizaos/shared/local-inference/routing-preferences";
|
|
8
|
+
//# sourceMappingURL=routing-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-preferences.d.ts","sourceRoot":"","sources":["../../src/services/routing-preferences.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACN,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,uBAAuB,GACvB,MAAM,qDAAqD,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inference runtime-target detection.
|
|
3
|
+
*
|
|
4
|
+
* The local-inference subsystem has one shipping operational shape:
|
|
5
|
+
*
|
|
6
|
+
* - `"ffi"` — in-process bun:ffi streaming bindings against the
|
|
7
|
+
* `libelizainference` (fused omnivoice + llama.cpp)
|
|
8
|
+
* shared library. Lives in `voice/ffi-bindings.ts` and
|
|
9
|
+
* `ffi-streaming-runner.ts`. This is mandatory on
|
|
10
|
+
* desktop and mobile so all generation runs in the
|
|
11
|
+
* app's own address space.
|
|
12
|
+
* - `"native-bridge"`— delegate to a Capacitor / JNI-side native runtime
|
|
13
|
+
* plugin (e.g. a Swift / Kotlin host wrapping
|
|
14
|
+
* llama.cpp directly). Reserved for builds where the
|
|
15
|
+
* FFI layer cannot be used (e.g. a build that disables
|
|
16
|
+
* `bun:ffi`); only the env-override path selects it.
|
|
17
|
+
*
|
|
18
|
+
* This module is the single source of truth for the platform → runtime
|
|
19
|
+
* mapping.
|
|
20
|
+
*
|
|
21
|
+
* Detection inputs (in priority order):
|
|
22
|
+
* 1. `ELIZA_INFERENCE_MODE` env var. Values: `ffi` / `native-bridge`.
|
|
23
|
+
* Wins over every heuristic so operators can force a branch from a CI
|
|
24
|
+
* shell or a debug build without recompiling.
|
|
25
|
+
* 2. Capacitor native marker — when `globalThis.Capacitor.isNativePlatform()`
|
|
26
|
+
* returns `true`, we are inside a Capacitor shell on iOS or Android.
|
|
27
|
+
* Force `"ffi"` regardless of Node's `process.platform`.
|
|
28
|
+
* 3. `process.platform` — all recognised and unknown platforms map to
|
|
29
|
+
* `"ffi"` unless explicitly overridden to `"native-bridge"`.
|
|
30
|
+
*
|
|
31
|
+
* The function is pure: same inputs → same answer. All inputs are explicit
|
|
32
|
+
* arguments so tests can replay the decision offline without poking the live
|
|
33
|
+
* `process` / `globalThis`.
|
|
34
|
+
*
|
|
35
|
+
* NOTE: this module does NOT decide whether the FFI library is actually
|
|
36
|
+
* loaded or whether the FFI symbols are present. `backend-selector.ts`
|
|
37
|
+
* handles that (with a hard throw if the mobile build is missing the
|
|
38
|
+
* streaming-LLM symbols). The two work together:
|
|
39
|
+
*
|
|
40
|
+
* inferenceRuntimeMode() === "ffi" → use `ffi-streaming-runner.ts`
|
|
41
|
+
* inferenceRuntimeMode() === "native-bridge"→ use the Capacitor plugin shim
|
|
42
|
+
*/
|
|
43
|
+
export type InferenceRuntimeMode = "ffi" | "native-bridge";
|
|
44
|
+
/**
|
|
45
|
+
* Node's `process.platform` values, narrowed to the set we care about.
|
|
46
|
+
* `unknown` covers exotic platforms (aix, freebsd, …) without baking them
|
|
47
|
+
* into the public API of this module.
|
|
48
|
+
*/
|
|
49
|
+
export type SupportedHostPlatform = "darwin" | "linux" | "win32" | "ios" | "android" | "unknown";
|
|
50
|
+
export interface InferenceRuntimeModeInput {
|
|
51
|
+
/**
|
|
52
|
+
* Raw `process.platform` value (or a synthetic one in tests). Optional —
|
|
53
|
+
* defaults to the live `process.platform`. Anything other than the
|
|
54
|
+
* recognised set is treated as `"unknown"` and routed to `"ffi"`
|
|
55
|
+
* unless an env override selects the native bridge.
|
|
56
|
+
*/
|
|
57
|
+
platform?: SupportedHostPlatform | NodeJS.Platform;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the JS runtime is currently embedded inside a Capacitor
|
|
60
|
+
* native shell. Defaults to inspecting `globalThis.Capacitor`. Tests
|
|
61
|
+
* pass `false` to keep the env-var / platform branches deterministic.
|
|
62
|
+
*/
|
|
63
|
+
isCapacitorNative?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Environment-variable bag. Defaults to `process.env`. The function
|
|
66
|
+
* reads `ELIZA_INFERENCE_MODE` for the override.
|
|
67
|
+
*/
|
|
68
|
+
env?: NodeJS.ProcessEnv;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Read and normalise the `ELIZA_INFERENCE_MODE` env override. Returns `null`
|
|
72
|
+
* when unset or unrecognised.
|
|
73
|
+
*/
|
|
74
|
+
export declare function readRuntimeModeEnvOverride(env?: NodeJS.ProcessEnv): InferenceRuntimeMode | null;
|
|
75
|
+
/**
|
|
76
|
+
* Synchronous Capacitor probe. Reads `globalThis.Capacitor.isNativePlatform()`
|
|
77
|
+
* defensively — neither the property nor the call site is guaranteed to
|
|
78
|
+
* exist in every build (desktop, plain Node tests, web-only Vite dev).
|
|
79
|
+
*
|
|
80
|
+
* Surfaces no errors: any failure means "not native". The throw-on-bad-build
|
|
81
|
+
* policy belongs to the backend-selector, not to platform detection.
|
|
82
|
+
*/
|
|
83
|
+
export declare function isCapacitorNativeRuntime(global?: typeof globalThis): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Decide which inference runtime mode the host should use. Pure: caller
|
|
86
|
+
* controls every input. See file header for the decision rules.
|
|
87
|
+
*/
|
|
88
|
+
export declare function inferenceRuntimeMode(input?: InferenceRuntimeModeInput): InferenceRuntimeMode;
|
|
89
|
+
/**
|
|
90
|
+
* Convenience wrapper for the `backend-selector.ts` boundary: maps the
|
|
91
|
+
* runtime mode onto the `"desktop" | "mobile"` slot the selector expects.
|
|
92
|
+
*
|
|
93
|
+
* `native-bridge` is treated as `"mobile"` because in every shipping
|
|
94
|
+
* configuration where we'd pick it the host has already classified itself
|
|
95
|
+
* as a mobile device (Capacitor shell that opted out of `bun:ffi`).
|
|
96
|
+
*/
|
|
97
|
+
export declare function inferencePlatformClass(mode?: InferenceRuntimeMode): "desktop" | "mobile";
|
|
98
|
+
//# sourceMappingURL=runtime-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-target.d.ts","sourceRoot":"","sources":["../../src/services/runtime-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,eAAe,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC9B,QAAQ,GACR,OAAO,GACP,OAAO,GACP,KAAK,GACL,SAAS,GACT,SAAS,CAAC;AAEb,MAAM,WAAW,yBAAyB;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,oBAAoB,GAAG,IAAI,CAa7B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,GAAE,OAAO,UAAuB,GACpC,OAAO,CAST;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,GAAE,yBAA8B,GACnC,oBAAoB,CAYtB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,GAAE,oBAA6C,GACjD,SAAS,GAAG,QAAQ,CAEtB"}
|