@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,229 @@
|
|
|
1
|
+
export type { LocalInferenceLoader } from "./active-model";
|
|
2
|
+
export {
|
|
3
|
+
assertVoiceBundleFitsHost,
|
|
4
|
+
VoiceBundleDoesNotFitError,
|
|
5
|
+
} from "./active-model";
|
|
6
|
+
export {
|
|
7
|
+
type BackendDecision,
|
|
8
|
+
BackendDispatcher,
|
|
9
|
+
type BackendId,
|
|
10
|
+
type BackendOverride,
|
|
11
|
+
type BackendPlan,
|
|
12
|
+
decideBackend,
|
|
13
|
+
ELIZA_LLM_BACKEND_ENV,
|
|
14
|
+
type GenerateArgs as BackendGenerateArgs,
|
|
15
|
+
type GenerateResult,
|
|
16
|
+
type LocalInferenceBackend,
|
|
17
|
+
litertBackendSupported,
|
|
18
|
+
readBackendOverride,
|
|
19
|
+
resolveCatalogForPlan,
|
|
20
|
+
} from "./backend";
|
|
21
|
+
export {
|
|
22
|
+
ELIZA_1_PLACEHOLDER_IDS,
|
|
23
|
+
FIRST_RUN_DEFAULT_MODEL_ID,
|
|
24
|
+
findCatalogModel,
|
|
25
|
+
MODEL_CATALOG,
|
|
26
|
+
} from "./catalog";
|
|
27
|
+
export {
|
|
28
|
+
type CloudCandidate,
|
|
29
|
+
type CloudFallbackOptions,
|
|
30
|
+
classifyLocalError,
|
|
31
|
+
type FallbackReason,
|
|
32
|
+
findCloudCandidate,
|
|
33
|
+
type LocalGenerateOutcome,
|
|
34
|
+
makeCloudFallbackHandler,
|
|
35
|
+
} from "./cloud-fallback";
|
|
36
|
+
export {
|
|
37
|
+
computeRuntimeContextFit,
|
|
38
|
+
type RuntimeContextFit,
|
|
39
|
+
type RuntimeContextFitInput,
|
|
40
|
+
} from "./context-fit";
|
|
41
|
+
export {
|
|
42
|
+
buildDeviceResourceMetricsDevPayload,
|
|
43
|
+
type DeviceBridgeStatus,
|
|
44
|
+
type DeviceGenerationMetrics,
|
|
45
|
+
type DeviceResourceMetricsDevPayload,
|
|
46
|
+
deviceBridge,
|
|
47
|
+
} from "./device-bridge";
|
|
48
|
+
export {
|
|
49
|
+
type BatterySummary,
|
|
50
|
+
DeviceResourceMetrics,
|
|
51
|
+
type DeviceResourceSummary,
|
|
52
|
+
type DeviceThermalState,
|
|
53
|
+
type GenerationObservation,
|
|
54
|
+
type LowPowerSummary,
|
|
55
|
+
type ResourceSample,
|
|
56
|
+
type RssSummary,
|
|
57
|
+
type ThermalSummary,
|
|
58
|
+
type ThermalTransition,
|
|
59
|
+
} from "./device-resource-metrics";
|
|
60
|
+
export {
|
|
61
|
+
classifyDeviceTier,
|
|
62
|
+
DEVICE_TIER_ORDER,
|
|
63
|
+
DEVICE_TIER_THRESHOLDS,
|
|
64
|
+
type DeviceTier,
|
|
65
|
+
type DeviceTierAssessment,
|
|
66
|
+
effectiveModelMemoryGb,
|
|
67
|
+
type RecommendedMode,
|
|
68
|
+
TIER_WARNING_COPY,
|
|
69
|
+
totalRamMb,
|
|
70
|
+
} from "./device-tier";
|
|
71
|
+
export {
|
|
72
|
+
LocalInferenceEngine,
|
|
73
|
+
localInferenceEngine,
|
|
74
|
+
resolveIdleUnloadMs,
|
|
75
|
+
resolveMaxConcurrentSpeculativeResponses,
|
|
76
|
+
} from "./engine";
|
|
77
|
+
export {
|
|
78
|
+
type HandlerRegistration,
|
|
79
|
+
handlerRegistry,
|
|
80
|
+
type PublicRegistration,
|
|
81
|
+
toPublicRegistration,
|
|
82
|
+
} from "./handler-registry";
|
|
83
|
+
export { assessFit, probeHardware } from "./hardware";
|
|
84
|
+
export {
|
|
85
|
+
createImageDescriptionRuntime,
|
|
86
|
+
type ImageDescriptionRuntime,
|
|
87
|
+
type ImageDescriptionRuntimeOptions,
|
|
88
|
+
} from "./image-description-runtime";
|
|
89
|
+
export {
|
|
90
|
+
type CapabilityProbes,
|
|
91
|
+
defaultsForNoBinding,
|
|
92
|
+
type InferenceCapabilities,
|
|
93
|
+
probeCapabilities,
|
|
94
|
+
type ResourceSnapshot,
|
|
95
|
+
type ThermalState,
|
|
96
|
+
type ThermalThrottleDecision,
|
|
97
|
+
thermalThrottleDecision,
|
|
98
|
+
} from "./inference-capabilities";
|
|
99
|
+
export {
|
|
100
|
+
InferenceTelemetry,
|
|
101
|
+
inferenceTelemetry,
|
|
102
|
+
type TelemetryTags,
|
|
103
|
+
} from "./inference-telemetry";
|
|
104
|
+
export {
|
|
105
|
+
estimateQuantizedKvBytesPerToken,
|
|
106
|
+
KV_SPILL_MIN_CONTEXT,
|
|
107
|
+
type KvGeometry,
|
|
108
|
+
type KvRestoreClass,
|
|
109
|
+
type KvSpillPlan,
|
|
110
|
+
KvSpillUnsupportedError,
|
|
111
|
+
planKvSpill,
|
|
112
|
+
} from "./kv-spill";
|
|
113
|
+
export {
|
|
114
|
+
buildVoiceLatencyDevPayload,
|
|
115
|
+
EndToEndLatencyTracer,
|
|
116
|
+
endVoiceLatencyTurn,
|
|
117
|
+
type HistogramSummary,
|
|
118
|
+
LATENCY_DERIVED_KEYS,
|
|
119
|
+
type LatencyCheckpoint,
|
|
120
|
+
type LatencyDerived,
|
|
121
|
+
type LatencyDerivedKey,
|
|
122
|
+
type LatencyTrace,
|
|
123
|
+
markVoiceLatency,
|
|
124
|
+
type TracerOptions,
|
|
125
|
+
VOICE_CHECKPOINTS,
|
|
126
|
+
type VoiceCheckpoint,
|
|
127
|
+
type VoiceLatencyDevPayload,
|
|
128
|
+
voiceLatencyTracer,
|
|
129
|
+
} from "./latency-trace";
|
|
130
|
+
export * from "./manifest/index";
|
|
131
|
+
export {
|
|
132
|
+
type ArbiterCapability,
|
|
133
|
+
type ArbiterEvent,
|
|
134
|
+
type ArbiterEventListener,
|
|
135
|
+
type ArbiterHandle,
|
|
136
|
+
type CapabilityRegistration,
|
|
137
|
+
getMemoryArbiter,
|
|
138
|
+
MemoryArbiter,
|
|
139
|
+
type MemoryArbiterOptions,
|
|
140
|
+
setMemoryArbiter,
|
|
141
|
+
tryGetMemoryArbiter,
|
|
142
|
+
} from "./memory-arbiter";
|
|
143
|
+
export {
|
|
144
|
+
buildMemoryBenchmarkPlan,
|
|
145
|
+
buildMemoryBenchmarkReport,
|
|
146
|
+
type MemoryBenchmarkLoadResult,
|
|
147
|
+
type MemoryBenchmarkModelPlan,
|
|
148
|
+
type MemoryBenchmarkOptions,
|
|
149
|
+
type MemoryBenchmarkReport,
|
|
150
|
+
runMemoryBenchmark,
|
|
151
|
+
summarizeMemoryBenchmark,
|
|
152
|
+
} from "./memory-benchmark";
|
|
153
|
+
export {
|
|
154
|
+
type CapacitorPressureSource,
|
|
155
|
+
capacitorPressureSource,
|
|
156
|
+
compositePressureSource,
|
|
157
|
+
type MemoryPressureEvent,
|
|
158
|
+
type MemoryPressureLevel,
|
|
159
|
+
type MemoryPressureListener,
|
|
160
|
+
type MemoryPressureSource,
|
|
161
|
+
nodeOsPressureSource,
|
|
162
|
+
} from "./memory-pressure";
|
|
163
|
+
export {
|
|
164
|
+
type MtpDoctorCheck,
|
|
165
|
+
type MtpDoctorCheckStatus,
|
|
166
|
+
type MtpDoctorReport,
|
|
167
|
+
runMtpDoctor,
|
|
168
|
+
} from "./mtp-doctor";
|
|
169
|
+
export {
|
|
170
|
+
buildPlanActionsSkeleton,
|
|
171
|
+
buildPlannerGuidedDecode,
|
|
172
|
+
type PlannerAction,
|
|
173
|
+
type PlannerGuidedDecode,
|
|
174
|
+
planActionParameterSchema,
|
|
175
|
+
} from "./planner-skeleton";
|
|
176
|
+
export { buildTextGenerationReadiness } from "./readiness";
|
|
177
|
+
export {
|
|
178
|
+
assessCatalogModelFit,
|
|
179
|
+
type BundleDefaultEligibility,
|
|
180
|
+
canBundleBeDefaultOnDevice,
|
|
181
|
+
catalogDownloadSizeBytes,
|
|
182
|
+
catalogDownloadSizeGb,
|
|
183
|
+
chooseSmallerFallbackModel,
|
|
184
|
+
classifyRecommendationPlatform,
|
|
185
|
+
deviceCapsFromProbe,
|
|
186
|
+
type RecommendationPlatformClass,
|
|
187
|
+
type RecommendedModelSelection,
|
|
188
|
+
recommendForFirstRun,
|
|
189
|
+
selectBestQuantizationVariant,
|
|
190
|
+
selectRecommendedModelForSlot,
|
|
191
|
+
selectRecommendedModels,
|
|
192
|
+
} from "./recommendation";
|
|
193
|
+
export {
|
|
194
|
+
type InferenceRuntimeMode,
|
|
195
|
+
type InferenceRuntimeModeInput,
|
|
196
|
+
inferencePlatformClass,
|
|
197
|
+
inferenceRuntimeMode,
|
|
198
|
+
isCapacitorNativeRuntime,
|
|
199
|
+
readRuntimeModeEnvOverride,
|
|
200
|
+
type SupportedHostPlatform,
|
|
201
|
+
} from "./runtime-target";
|
|
202
|
+
export { LocalInferenceService, localInferenceService } from "./service";
|
|
203
|
+
export type {
|
|
204
|
+
ActiveModelState,
|
|
205
|
+
CatalogModel,
|
|
206
|
+
DownloadEvent,
|
|
207
|
+
DownloadJob,
|
|
208
|
+
DownloadState,
|
|
209
|
+
HardwareFitLevel,
|
|
210
|
+
HardwareProbe,
|
|
211
|
+
InstalledModel,
|
|
212
|
+
LocalInferenceDownloadStatus,
|
|
213
|
+
LocalInferenceReadiness,
|
|
214
|
+
LocalInferenceSlotReadiness,
|
|
215
|
+
LocalRuntimeAcceleration,
|
|
216
|
+
LocalRuntimeBackend,
|
|
217
|
+
LocalRuntimeKernel,
|
|
218
|
+
LocalRuntimeOptimizations,
|
|
219
|
+
ModelBucket,
|
|
220
|
+
ModelCategory,
|
|
221
|
+
ModelHubSnapshot,
|
|
222
|
+
TextGenerationSlot,
|
|
223
|
+
} from "./types";
|
|
224
|
+
export {
|
|
225
|
+
VisionEmbeddingCache,
|
|
226
|
+
type VisionEmbeddingCacheConfig,
|
|
227
|
+
type VisionEmbeddingEntry,
|
|
228
|
+
} from "./vision-embedding-cache";
|
|
229
|
+
export * from "./voice/index";
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
defaultsForNoBinding,
|
|
4
|
+
probeCapabilities,
|
|
5
|
+
thermalThrottleDecision,
|
|
6
|
+
} from "./inference-capabilities";
|
|
7
|
+
|
|
8
|
+
describe("thermalThrottleDecision", () => {
|
|
9
|
+
it("does not throttle a cool device", () => {
|
|
10
|
+
const d = thermalThrottleDecision({ thermalState: "nominal" });
|
|
11
|
+
expect(d.throttleSpeculativeDecode).toBe(false);
|
|
12
|
+
expect(d.reduceLoad).toBe(false);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("throttles speculative decode at serious and sheds load at critical", () => {
|
|
16
|
+
const serious = thermalThrottleDecision({ thermalState: "serious" });
|
|
17
|
+
expect(serious.throttleSpeculativeDecode).toBe(true);
|
|
18
|
+
expect(serious.reduceLoad).toBe(false);
|
|
19
|
+
|
|
20
|
+
const critical = thermalThrottleDecision({ thermalState: "critical" });
|
|
21
|
+
expect(critical.throttleSpeculativeDecode).toBe(true);
|
|
22
|
+
expect(critical.reduceLoad).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("throttles under low-power mode even when cool", () => {
|
|
26
|
+
const d = thermalThrottleDecision({
|
|
27
|
+
thermalState: "nominal",
|
|
28
|
+
lowPowerMode: true,
|
|
29
|
+
});
|
|
30
|
+
expect(d.throttleSpeculativeDecode).toBe(true);
|
|
31
|
+
expect(d.reduceLoad).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("does not throttle on an unknown thermal state without a low-power signal", () => {
|
|
35
|
+
const d = thermalThrottleDecision({ thermalState: "unknown" });
|
|
36
|
+
expect(d.throttleSpeculativeDecode).toBe(false);
|
|
37
|
+
expect(d.reduceLoad).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("still honours low-power mode when thermal state is unknown", () => {
|
|
41
|
+
const d = thermalThrottleDecision({
|
|
42
|
+
thermalState: "unknown",
|
|
43
|
+
lowPowerMode: true,
|
|
44
|
+
});
|
|
45
|
+
expect(d.throttleSpeculativeDecode).toBe(true);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
describe("probeCapabilities thermal gating (regression)", () => {
|
|
50
|
+
const probes = {
|
|
51
|
+
llmStreamSupported: () => true,
|
|
52
|
+
ttsStreamSupported: () => false,
|
|
53
|
+
mtpResident: () => true,
|
|
54
|
+
mmprojResident: () => false,
|
|
55
|
+
platform: () => "ios" as const,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
it("keeps MTP on while cool but disables it under serious heat", () => {
|
|
59
|
+
expect(
|
|
60
|
+
probeCapabilities({ ...probes, thermalState: () => "fair" }).mtpSupported,
|
|
61
|
+
).toBe(true);
|
|
62
|
+
expect(
|
|
63
|
+
probeCapabilities({ ...probes, thermalState: () => "serious" })
|
|
64
|
+
.mtpSupported,
|
|
65
|
+
).toBe(false);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("defaultsForNoBinding reports a safe all-off struct", () => {
|
|
69
|
+
const d = defaultsForNoBinding();
|
|
70
|
+
expect(d.streamingLlm).toBe(false);
|
|
71
|
+
expect(d.mtpSupported).toBe(false);
|
|
72
|
+
expect(d.thermalState).toBe("nominal");
|
|
73
|
+
expect(d.platform).toBe("unknown");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inference capability detection.
|
|
3
|
+
*
|
|
4
|
+
* Centralises "what does this device's local-inference stack expose"
|
|
5
|
+
* into one struct the runtime can read at startup. The shape mirrors
|
|
6
|
+
* the per-platform binding probes (Android + iOS + desktop FFI) so the
|
|
7
|
+
* runtime doesn't have to import each platform's adapter just to
|
|
8
|
+
* surface the bits.
|
|
9
|
+
*
|
|
10
|
+
* Consumed by:
|
|
11
|
+
* - the AOSP local-inference bootstrap, to choose the in-process FFI
|
|
12
|
+
* streaming path,
|
|
13
|
+
* - the desktop voice lifecycle service, to decide whether to wire the
|
|
14
|
+
* FFI streaming runner factory,
|
|
15
|
+
* - UI surfaces (model picker, voice toggle) that hide options the
|
|
16
|
+
* loaded build cannot honour.
|
|
17
|
+
*
|
|
18
|
+
* Naming:
|
|
19
|
+
* - `streamingLlm` — `eliza_inference_llm_stream_*` symbols are
|
|
20
|
+
* resolved and the build reports `_supported() === 1`.
|
|
21
|
+
* - `mtpSupported` — native MTP speculative decoding can actually run.
|
|
22
|
+
* - `omnivoiceStreaming` — `eliza_inference_tts_synthesize_stream` is
|
|
23
|
+
* present and supported.
|
|
24
|
+
* - `mmprojSupported` — the build carries the multi-modal projector
|
|
25
|
+
* and the device has the headroom to keep it resident.
|
|
26
|
+
* - `thermalState` — best-effort current thermal snapshot from the
|
|
27
|
+
* platform (`ProcessInfo.thermalState` on iOS,
|
|
28
|
+
* `PowerManager.getCurrentThermalStatus` on Android).
|
|
29
|
+
*
|
|
30
|
+
* All fields are read-only snapshots; the runtime re-probes on resume.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
export type ThermalState = "nominal" | "fair" | "serious" | "critical";
|
|
34
|
+
|
|
35
|
+
export interface InferenceCapabilities {
|
|
36
|
+
streamingLlm: boolean;
|
|
37
|
+
mtpSupported: boolean;
|
|
38
|
+
omnivoiceStreaming: boolean;
|
|
39
|
+
mmprojSupported: boolean;
|
|
40
|
+
thermalState: ThermalState;
|
|
41
|
+
/** Platform tag for diagnostics + routing. */
|
|
42
|
+
platform: "android" | "ios" | "desktop" | "unknown";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Minimal probe surface — what the caller hands in. */
|
|
46
|
+
export interface CapabilityProbes {
|
|
47
|
+
/** True only when `eliza_inference_llm_stream_supported()` returns 1. */
|
|
48
|
+
llmStreamSupported(): boolean;
|
|
49
|
+
/** True only when `eliza_inference_tts_stream_supported()` returns 1. */
|
|
50
|
+
ttsStreamSupported(): boolean;
|
|
51
|
+
/** True only when the native MTP path is available for the loaded model. */
|
|
52
|
+
mtpResident(): boolean;
|
|
53
|
+
/** True only when the mmproj weights are present in the bundle. */
|
|
54
|
+
mmprojResident(): boolean;
|
|
55
|
+
/** Current thermal snapshot. May return `nominal` on platforms without a thermal API. */
|
|
56
|
+
thermalState(): ThermalState;
|
|
57
|
+
/** Platform tag. */
|
|
58
|
+
platform(): "android" | "ios" | "desktop" | "unknown";
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Build a capability struct from a set of probes.
|
|
63
|
+
*
|
|
64
|
+
* Policy decisions encoded here:
|
|
65
|
+
* - Native MTP only fires when `llmStreamSupported` and the thermal state is
|
|
66
|
+
* at most `fair`.
|
|
67
|
+
* - mmproj is gated entirely on the bundle carrying it. Devices
|
|
68
|
+
* short on RAM can still load the chat model — they just lose the
|
|
69
|
+
* vision path; the picker UI uses this bit to grey out vision
|
|
70
|
+
* uploads.
|
|
71
|
+
* - omnivoice streaming is gated entirely on the FFI build: the JS
|
|
72
|
+
* side has no fallback path for streaming TTS, only for batch.
|
|
73
|
+
*/
|
|
74
|
+
export function probeCapabilities(
|
|
75
|
+
probes: CapabilityProbes,
|
|
76
|
+
): InferenceCapabilities {
|
|
77
|
+
const streamingLlm = probes.llmStreamSupported();
|
|
78
|
+
const omnivoiceStreaming = probes.ttsStreamSupported();
|
|
79
|
+
const mtpResident = probes.mtpResident();
|
|
80
|
+
const mmprojResident = probes.mmprojResident();
|
|
81
|
+
const thermalState = probes.thermalState();
|
|
82
|
+
const platform = probes.platform();
|
|
83
|
+
|
|
84
|
+
const thermalBlocksMtp =
|
|
85
|
+
thermalState === "serious" || thermalState === "critical";
|
|
86
|
+
|
|
87
|
+
const mtpSupported = streamingLlm && mtpResident && !thermalBlocksMtp;
|
|
88
|
+
|
|
89
|
+
return {
|
|
90
|
+
streamingLlm,
|
|
91
|
+
mtpSupported,
|
|
92
|
+
omnivoiceStreaming,
|
|
93
|
+
mmprojSupported: mmprojResident,
|
|
94
|
+
thermalState,
|
|
95
|
+
platform,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Defaults probe: every flag off, platform `unknown`, thermal `nominal`.
|
|
101
|
+
* Used by the runtime when no FFI binding could be loaded (cloud-only
|
|
102
|
+
* fallback path). Surfaces as a single struct the UI can render
|
|
103
|
+
* without branching on "no probe registered".
|
|
104
|
+
*/
|
|
105
|
+
export function defaultsForNoBinding(): InferenceCapabilities {
|
|
106
|
+
return {
|
|
107
|
+
streamingLlm: false,
|
|
108
|
+
mtpSupported: false,
|
|
109
|
+
omnivoiceStreaming: false,
|
|
110
|
+
mmprojSupported: false,
|
|
111
|
+
thermalState: "nominal",
|
|
112
|
+
platform: "unknown",
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Sampled resource snapshot + thermal-throttle decision
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* A live, *sampled* device-resource snapshot from the native probe
|
|
122
|
+
* (iOS `getResourceSnapshot`, Android `ResourceProbe.getResourceSnapshot`) — as
|
|
123
|
+
* opposed to the one-shot `InferenceCapabilities` probe. The Mobile Resource
|
|
124
|
+
* Workbench (issue #8800) samples these on an interval across a sustained
|
|
125
|
+
* workload to build a thermal/RSS/battery timeline. Every numeric field is
|
|
126
|
+
* `null` when the platform could not measure it — never a fabricated zero.
|
|
127
|
+
*/
|
|
128
|
+
export interface ResourceSnapshot {
|
|
129
|
+
/** Current thermal state; `"unknown"` on platforms without a thermal API. */
|
|
130
|
+
thermalState: ThermalState | "unknown";
|
|
131
|
+
/** Whether the OS low-power / battery-saver mode is engaged, or null. */
|
|
132
|
+
lowPowerMode: boolean | null;
|
|
133
|
+
/** Process resident set size in MB, or null. */
|
|
134
|
+
residentMemoryMb: number | null;
|
|
135
|
+
/** Device-wide available RAM in MB, or null. */
|
|
136
|
+
availableRamMb: number | null;
|
|
137
|
+
/** Cumulative process CPU time in ms, or null. */
|
|
138
|
+
cpuTimeMs: number | null;
|
|
139
|
+
/** Battery level 0..100, or null. */
|
|
140
|
+
batteryLevelPct: number | null;
|
|
141
|
+
/** Sample timestamp in ms (epoch). */
|
|
142
|
+
capturedAtMs: number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface ThermalThrottleDecision {
|
|
146
|
+
/**
|
|
147
|
+
* Whether speculative decoding (MTP) should be disabled for the next step.
|
|
148
|
+
* MTP burns extra compute for a latency win; under heat that trade flips.
|
|
149
|
+
*/
|
|
150
|
+
throttleSpeculativeDecode: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Whether to proactively shed load (shrink batch / context, pause warmups)
|
|
153
|
+
* because the device is at the top of the thermal range.
|
|
154
|
+
*/
|
|
155
|
+
reduceLoad: boolean;
|
|
156
|
+
reason: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const THROTTLE_SEVERITY: Record<ThermalState, number> = {
|
|
160
|
+
nominal: 0,
|
|
161
|
+
fair: 1,
|
|
162
|
+
serious: 2,
|
|
163
|
+
critical: 3,
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Decide whether to throttle on-device inference for the current thermal /
|
|
168
|
+
* power state. Pure and synchronous so the streaming path can call it per token
|
|
169
|
+
* (the `ProcessInfo.thermalState` throttle hook the iOS streaming bridge still
|
|
170
|
+
* lists as a TODO) and the workbench can assert the policy without a device.
|
|
171
|
+
*
|
|
172
|
+
* - `serious` / `critical` thermal → stop speculative decoding (matches the
|
|
173
|
+
* existing one-shot MTP gate in `probeCapabilities`).
|
|
174
|
+
* - `critical` thermal → additionally shed load.
|
|
175
|
+
* - low-power mode → stop speculative decoding (honour the user's power intent).
|
|
176
|
+
* - `unknown` thermal with no low-power signal → do not throttle (don't
|
|
177
|
+
* penalise a device that simply lacks a thermal API).
|
|
178
|
+
*/
|
|
179
|
+
export function thermalThrottleDecision(input: {
|
|
180
|
+
thermalState: ThermalState | "unknown";
|
|
181
|
+
lowPowerMode?: boolean | null;
|
|
182
|
+
}): ThermalThrottleDecision {
|
|
183
|
+
const lowPower = input.lowPowerMode === true;
|
|
184
|
+
if (input.thermalState === "unknown") {
|
|
185
|
+
return {
|
|
186
|
+
throttleSpeculativeDecode: lowPower,
|
|
187
|
+
reduceLoad: false,
|
|
188
|
+
reason: lowPower
|
|
189
|
+
? "low-power mode (thermal state unknown)"
|
|
190
|
+
: "thermal state unknown — no throttle",
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const severity = THROTTLE_SEVERITY[input.thermalState];
|
|
194
|
+
const thermalThrottles = severity >= THROTTLE_SEVERITY.serious;
|
|
195
|
+
const reduceLoad = severity >= THROTTLE_SEVERITY.critical;
|
|
196
|
+
const throttleSpeculativeDecode = thermalThrottles || lowPower;
|
|
197
|
+
let reason: string;
|
|
198
|
+
if (reduceLoad) reason = `thermal ${input.thermalState} — shed load`;
|
|
199
|
+
else if (thermalThrottles)
|
|
200
|
+
reason = `thermal ${input.thermalState} — throttle speculative decode`;
|
|
201
|
+
else if (lowPower) reason = "low-power mode — throttle speculative decode";
|
|
202
|
+
else reason = `thermal ${input.thermalState} — nominal, no throttle`;
|
|
203
|
+
return { throttleSpeculativeDecode, reduceLoad, reason };
|
|
204
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight structured-metrics sink for local-inference telemetry.
|
|
3
|
+
*
|
|
4
|
+
* This module is intentionally small: it is a logger-backed histogram with a
|
|
5
|
+
* stable, call-site-friendly `record(name, value, tags?)` API so individual
|
|
6
|
+
* backends (FFI runtime, voice scheduler, …) can emit point-in-time
|
|
7
|
+
* observations without importing a heavy metrics framework.
|
|
8
|
+
*
|
|
9
|
+
* Design constraints
|
|
10
|
+
* ------------------
|
|
11
|
+
* - No external dependencies beyond `@elizaos/core` logger (already a dep).
|
|
12
|
+
* - `record()` is synchronous and must never throw into the call site.
|
|
13
|
+
* - Each named metric keeps a bounded ring of recent samples (default 256) for
|
|
14
|
+
* in-process p50/p95 queries via `summary(name)`. This mirrors the
|
|
15
|
+
* `BoundedHistogram` pattern already used by `latency-trace.ts`.
|
|
16
|
+
* - The module exports a process-wide singleton (`inferenceTelemetry`) that
|
|
17
|
+
* all backends share, plus the class for test injection.
|
|
18
|
+
*
|
|
19
|
+
* Metric names used today
|
|
20
|
+
* -----------------------
|
|
21
|
+
* inference.ttfa_ms — time from fetch() to first HTTP chunk (L5)
|
|
22
|
+
* inference.first_token_ms — time from fetch() to first decoded token (L5)
|
|
23
|
+
* tts.chunk_size_ms — duration of one PCM chunk in ms (T2)
|
|
24
|
+
* tts.chunk_size_bytes — byte size of one PCM chunk (T2)
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import { logger } from "@elizaos/core";
|
|
28
|
+
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Bounded histogram (copied structure from latency-trace.ts — same project)
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
|
|
33
|
+
interface HistogramSummary {
|
|
34
|
+
count: number;
|
|
35
|
+
p50: number | null;
|
|
36
|
+
p95: number | null;
|
|
37
|
+
mean: number | null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
class BoundedRing {
|
|
41
|
+
private readonly buf: number[];
|
|
42
|
+
private head = 0;
|
|
43
|
+
private filled = 0;
|
|
44
|
+
|
|
45
|
+
constructor(private readonly cap: number) {
|
|
46
|
+
this.buf = new Array<number>(cap).fill(0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
push(v: number): void {
|
|
50
|
+
if (!Number.isFinite(v)) return;
|
|
51
|
+
this.buf[this.head] = v;
|
|
52
|
+
this.head = (this.head + 1) % this.cap;
|
|
53
|
+
if (this.filled < this.cap) this.filled += 1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
summary(): HistogramSummary {
|
|
57
|
+
if (this.filled === 0)
|
|
58
|
+
return { count: 0, p50: null, p95: null, mean: null };
|
|
59
|
+
const slice = this.buf.slice(0, this.filled).sort((a, b) => a - b);
|
|
60
|
+
const pct = (q: number): number => {
|
|
61
|
+
const rank = Math.ceil((q / 100) * slice.length);
|
|
62
|
+
return slice[Math.min(slice.length - 1, Math.max(0, rank - 1))] as number;
|
|
63
|
+
};
|
|
64
|
+
const sum = slice.reduce((a, b) => a + b, 0);
|
|
65
|
+
return {
|
|
66
|
+
count: this.filled,
|
|
67
|
+
p50: pct(50),
|
|
68
|
+
p95: pct(95),
|
|
69
|
+
mean: sum / this.filled,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Public API
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
|
|
78
|
+
export type TelemetryTags = Record<string, string | number | boolean>;
|
|
79
|
+
|
|
80
|
+
export class InferenceTelemetry {
|
|
81
|
+
private readonly rings = new Map<string, BoundedRing>();
|
|
82
|
+
private readonly capacity: number;
|
|
83
|
+
|
|
84
|
+
constructor(capacity = 256) {
|
|
85
|
+
this.capacity = capacity;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Record a scalar observation. Never throws — telemetry must be
|
|
90
|
+
* instrumentation, never a fault path.
|
|
91
|
+
*
|
|
92
|
+
* @param name Dot-separated metric name, e.g. `"inference.ttfa_ms"`.
|
|
93
|
+
* @param value Numeric value (non-finite values are silently dropped).
|
|
94
|
+
* @param tags Optional key/value labels emitted in the log line.
|
|
95
|
+
*/
|
|
96
|
+
record(name: string, value: number, tags?: TelemetryTags): void {
|
|
97
|
+
try {
|
|
98
|
+
let ring = this.rings.get(name);
|
|
99
|
+
if (!ring) {
|
|
100
|
+
ring = new BoundedRing(this.capacity);
|
|
101
|
+
this.rings.set(name, ring);
|
|
102
|
+
}
|
|
103
|
+
ring.push(value);
|
|
104
|
+
const tagStr = tags
|
|
105
|
+
? " " +
|
|
106
|
+
Object.entries(tags)
|
|
107
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
108
|
+
.join(" ")
|
|
109
|
+
: "";
|
|
110
|
+
logger.debug(`[InferenceTelemetry] ${name}=${value}${tagStr}`);
|
|
111
|
+
} catch {
|
|
112
|
+
// Swallow — telemetry must never surface as a runtime error.
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Summary statistics for a named metric over the retained ring of samples.
|
|
118
|
+
* Returns `{ count: 0, ... }` when the metric has never been recorded.
|
|
119
|
+
*/
|
|
120
|
+
summary(name: string): HistogramSummary {
|
|
121
|
+
return (
|
|
122
|
+
this.rings.get(name)?.summary() ?? {
|
|
123
|
+
count: 0,
|
|
124
|
+
p50: null,
|
|
125
|
+
p95: null,
|
|
126
|
+
mean: null,
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Names of all metrics that have received at least one sample. */
|
|
132
|
+
metricNames(): string[] {
|
|
133
|
+
return [...this.rings.keys()];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Reset all retained samples. Useful in tests. */
|
|
137
|
+
reset(): void {
|
|
138
|
+
this.rings.clear();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Process-wide singleton used by FFI runtime and voice scheduler. */
|
|
143
|
+
export const inferenceTelemetry = new InferenceTelemetry();
|