@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,761 @@
|
|
|
1
|
+
// Eliza-1 manifest schema (`eliza-1.manifest.json`).
|
|
2
|
+
//
|
|
3
|
+
// Source of truth in this checkout: this file (the schema) and the sibling
|
|
4
|
+
// `eliza-1.manifest.v1.json` JSON Schema. The upstream elizaOS source has
|
|
5
|
+
// a longer prose specification under `packages/inference/AGENTS.md` (§6
|
|
6
|
+
// manifest, §3 mandatory kernels, §2 bundle/tier matrix); that file does
|
|
7
|
+
// not exist in the eliza checkout — when editing the schema, treat the
|
|
8
|
+
// Zod definitions below as canonical and consult R5-versioning.md §1 for
|
|
9
|
+
// the latest gap analysis between bundle and per-sub-model versioning.
|
|
10
|
+
//
|
|
11
|
+
// Coupling notes:
|
|
12
|
+
// - The kernel names here are *manifest-level* capabilities (what the bundle
|
|
13
|
+
// advertises), not the lower-level llama.cpp kernel handles in `../types.ts`
|
|
14
|
+
// (`turbo3` / `turbo4` / `turbo3_tcq` / `qjl_full`). The two
|
|
15
|
+
// layers map but are not the same enum.
|
|
16
|
+
// - The schema URL `https://elizaos.ai/schemas/eliza-1.manifest.v1.json` is
|
|
17
|
+
// exported as a JSON Schema sibling file in this directory.
|
|
18
|
+
// - Eliza-1 speculative decoding is native llama.cpp MTP. Post-cutover (#9033)
|
|
19
|
+
// every Gemma 4 tier is SEPARATE-DRAFTER: it ships a dedicated drafter GGUF at
|
|
20
|
+
// `mtp/drafter-<tier>.gguf` in `files.mtp` (loaded `-md … --spec-type
|
|
21
|
+
// draft-mtp`), with its own `lineage.drafter`, and declares top-level
|
|
22
|
+
// `mtp: "separate-drafter"`. (The legacy embedded-draft-head shape carried the
|
|
23
|
+
// draft head inside the primary text GGUF with `files.mtp` empty; no shipped
|
|
24
|
+
// Gemma tier uses it.) AGENTS.md §1/§3 require MTP on every tier.
|
|
25
|
+
// - Per-sub-model versioning (kokoro, omnivoice, turn-detector, voice-emotion,
|
|
26
|
+
// diarizer, speaker-encoder, vad, wakeword, embedding, asr) lives in
|
|
27
|
+
// `packages/shared/src/local-inference/voice-models.ts` and the matching
|
|
28
|
+
// `models/voice/CHANGELOG.md`. The bundle manifest below ships the *current*
|
|
29
|
+
// per-tier set of files; the voice-models module ships the *history* the
|
|
30
|
+
// auto-updater walks.
|
|
31
|
+
|
|
32
|
+
import type { LocalRuntimeKernel } from "@elizaos/shared";
|
|
33
|
+
import z from "zod";
|
|
34
|
+
|
|
35
|
+
export const ELIZA_1_MANIFEST_SCHEMA_VERSION = "1" as const;
|
|
36
|
+
export const ELIZA_1_MANIFEST_SCHEMA_URL =
|
|
37
|
+
"https://elizaos.ai/schemas/eliza-1.manifest.v1.json" as const;
|
|
38
|
+
|
|
39
|
+
// The shared Eliza-1 tokenizer (Gemma 4 SentencePiece, 262144-entry vocab),
|
|
40
|
+
// exported so runtime code can assert it. The cutover (#9033) moved eliza-1 to
|
|
41
|
+
// Gemma 4 bases, whose tokenizer family the bundle builder stamps as "gemma4".
|
|
42
|
+
export const ELIZA_1_TOKENIZER_FAMILY = "gemma4" as const;
|
|
43
|
+
export const ELIZA_1_TOKENIZER_VOCAB_SIZE = 262_144 as const;
|
|
44
|
+
|
|
45
|
+
// MTP (speculative-decode) bundle mode. Gemma 4 uses a SEPARATE drafter GGUF
|
|
46
|
+
// (`mtp/drafter-<tier>.gguf`, loaded `-md … --spec-type draft-mtp`); the older
|
|
47
|
+
// embedded-draft-head shape carried the draft head inside the primary text
|
|
48
|
+
// GGUF. AGENTS.md §1/§3 require MTP on every tier.
|
|
49
|
+
export const ELIZA_1_MTP_MODES = [
|
|
50
|
+
"separate-drafter",
|
|
51
|
+
"embedded-draft-head",
|
|
52
|
+
] as const;
|
|
53
|
+
export type Eliza1MtpMode = (typeof ELIZA_1_MTP_MODES)[number];
|
|
54
|
+
|
|
55
|
+
// Tiers — size-ordered across the active Eliza-1 bundles. 2b is the
|
|
56
|
+
// smallest/entry tier.
|
|
57
|
+
export const ELIZA_1_TIERS = ["2b", "4b", "9b", "27b", "27b-256k"] as const;
|
|
58
|
+
export type Eliza1Tier = (typeof ELIZA_1_TIERS)[number];
|
|
59
|
+
|
|
60
|
+
// Manifest-level kernel capability names. Per AGENTS.md §3:
|
|
61
|
+
// `turboquant_q3`, `turboquant_q4`, `qjl`, `polarquant` are
|
|
62
|
+
// the named optimizations the bundle declares. `turbo3_tcq` is required
|
|
63
|
+
// for any long-context text variant. The C-level llama.cpp kernel handles in
|
|
64
|
+
// `../types.ts` are an implementation detail of the runtime; the manifest
|
|
65
|
+
// speaks in terms of the optimization, not the .metal/.comp file.
|
|
66
|
+
//
|
|
67
|
+
// The relationship to the runtime-side `LocalRuntimeKernel` enum (the
|
|
68
|
+
// llama.cpp-handle layer, declared in `@elizaos/shared/local-inference/types`)
|
|
69
|
+
// is made explicit by `ELIZA1_TO_RUNTIME_KERNEL` / `RUNTIME_TO_ELIZA1_KERNEL`
|
|
70
|
+
// below — that is the single source of truth for the manifest↔runtime kernel
|
|
71
|
+
// bridge.
|
|
72
|
+
export const ELIZA_1_KERNELS = [
|
|
73
|
+
"turboquant_q3",
|
|
74
|
+
"turboquant_q4",
|
|
75
|
+
"qjl",
|
|
76
|
+
"polarquant",
|
|
77
|
+
"turbo3_tcq",
|
|
78
|
+
] as const;
|
|
79
|
+
export type Eliza1Kernel = (typeof ELIZA_1_KERNELS)[number];
|
|
80
|
+
export type Eliza1RequiredRuntimeKernel = Exclude<
|
|
81
|
+
LocalRuntimeKernel,
|
|
82
|
+
"openvino"
|
|
83
|
+
>;
|
|
84
|
+
|
|
85
|
+
// Manifest-kernel ↔ runtime-kernel bridge.
|
|
86
|
+
//
|
|
87
|
+
// `Eliza1Kernel` (this module, the bundle-manifest layer) names the *named
|
|
88
|
+
// optimization* a bundle advertises; `LocalRuntimeKernel`
|
|
89
|
+
// (`@elizaos/shared/local-inference/types`, the llama.cpp-handle layer) names
|
|
90
|
+
// the *fork kernel handle* the binary must expose. They overlap but are not the
|
|
91
|
+
// same enum:
|
|
92
|
+
//
|
|
93
|
+
// turboquant_q3 ↔ turbo3 (Q3 KV-cache quant kernel)
|
|
94
|
+
// turboquant_q4 ↔ turbo4 (Q4 KV-cache quant kernel)
|
|
95
|
+
// qjl ↔ qjl_full (QuIP#-JL fused-attention kernel)
|
|
96
|
+
// polarquant ↔ polarquant (same name on both layers)
|
|
97
|
+
// turbo3_tcq ↔ turbo3_tcq (same name on both layers)
|
|
98
|
+
//
|
|
99
|
+
// Every Eliza-1 custom-kernel member is covered (both are total maps over the
|
|
100
|
+
// custom W4-B kernel set). `openvino` is a runtime backend capability,
|
|
101
|
+
// not an Eliza-1 bundle optimization, so it intentionally stays outside this
|
|
102
|
+
// bridge. When code needs to translate between the catalog's custom
|
|
103
|
+
// `requiresKernel` entries and the manifest's `kernels.required:
|
|
104
|
+
// Eliza1Kernel[]`, route it through these.
|
|
105
|
+
export const ELIZA1_TO_RUNTIME_KERNEL: Readonly<
|
|
106
|
+
Record<Eliza1Kernel, Eliza1RequiredRuntimeKernel>
|
|
107
|
+
> = {
|
|
108
|
+
turboquant_q3: "turbo3",
|
|
109
|
+
turboquant_q4: "turbo4",
|
|
110
|
+
qjl: "qjl_full",
|
|
111
|
+
polarquant: "polarquant",
|
|
112
|
+
turbo3_tcq: "turbo3_tcq",
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export const RUNTIME_TO_ELIZA1_KERNEL: Readonly<
|
|
116
|
+
Record<Eliza1RequiredRuntimeKernel, Eliza1Kernel>
|
|
117
|
+
> = {
|
|
118
|
+
turbo3: "turboquant_q3",
|
|
119
|
+
turbo4: "turboquant_q4",
|
|
120
|
+
qjl_full: "qjl",
|
|
121
|
+
polarquant: "polarquant",
|
|
122
|
+
turbo3_tcq: "turbo3_tcq",
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export const ELIZA_1_BACKENDS = [
|
|
126
|
+
"metal",
|
|
127
|
+
"vulkan",
|
|
128
|
+
"cuda",
|
|
129
|
+
"rocm",
|
|
130
|
+
"cpu",
|
|
131
|
+
] as const;
|
|
132
|
+
export type Eliza1Backend = (typeof ELIZA_1_BACKENDS)[number];
|
|
133
|
+
|
|
134
|
+
// Required-kernel set per tier. Mirrors the active Gemma 4 Eliza-1 release
|
|
135
|
+
// policy:
|
|
136
|
+
// - Every tier requires only the geometry-agnostic GGUF weight-quant
|
|
137
|
+
// (`turboquant_q4`). Weight quant operates on (out_features, in_features)
|
|
138
|
+
// matmul tensors and is independent of attention head geometry, so it
|
|
139
|
+
// applies to Gemma's dense MQA backbone unchanged.
|
|
140
|
+
// - The KV-cache kernels (`qjl`, `polarquant`, `turbo3_tcq`, and the
|
|
141
|
+
// `turbo3`/`turbo4` runtime handles) are 128-element FWHT-group kernels
|
|
142
|
+
// that are head_dim-coupled. They do NOT match Gemma's MQA geometry
|
|
143
|
+
// (n_head_kv=1) with dual head dims (512 global / 256 SWA), so Gemma 4
|
|
144
|
+
// ships stock q8_0 KV and these kernels are OPTIONAL, never required.
|
|
145
|
+
// They stay compiled into the shared lib for legacy non-Gemma tiers and the
|
|
146
|
+
// shared OmniVoice/ASR FFI symbols, but no Gemma tier declares them
|
|
147
|
+
// required.
|
|
148
|
+
export const REQUIRED_KERNELS_BY_TIER: Readonly<
|
|
149
|
+
Record<Eliza1Tier, ReadonlyArray<Eliza1Kernel>>
|
|
150
|
+
> = {
|
|
151
|
+
"2b": ["turboquant_q4"],
|
|
152
|
+
"4b": ["turboquant_q4"],
|
|
153
|
+
"9b": ["turboquant_q4"],
|
|
154
|
+
"27b": ["turboquant_q4"],
|
|
155
|
+
"27b-256k": ["turboquant_q4"],
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// KV-cache kernels that remain available but are NOT required for any Gemma 4
|
|
159
|
+
// tier (head_dim=128/FWHT-group coupled; Gemma uses stock q8_0 KV). Surfaced
|
|
160
|
+
// as the optional kernel set for every tier.
|
|
161
|
+
export const OPTIONAL_KERNELS_BY_TIER: Readonly<
|
|
162
|
+
Record<Eliza1Tier, ReadonlyArray<Eliza1Kernel>>
|
|
163
|
+
> = {
|
|
164
|
+
"2b": ["qjl", "polarquant", "turbo3_tcq"],
|
|
165
|
+
"4b": ["qjl", "polarquant", "turbo3_tcq"],
|
|
166
|
+
"9b": ["qjl", "polarquant", "turbo3_tcq"],
|
|
167
|
+
"27b": ["qjl", "polarquant", "turbo3_tcq"],
|
|
168
|
+
"27b-256k": ["qjl", "polarquant", "turbo3_tcq"],
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// Backends each tier is expected to support on shipped hardware.
|
|
172
|
+
export const SUPPORTED_BACKENDS_BY_TIER: Readonly<
|
|
173
|
+
Record<Eliza1Tier, ReadonlyArray<Eliza1Backend>>
|
|
174
|
+
> = {
|
|
175
|
+
"2b": ["metal", "vulkan", "cpu"],
|
|
176
|
+
"4b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
177
|
+
"9b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
178
|
+
"27b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
179
|
+
"27b-256k": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
// Zod definitions
|
|
184
|
+
// ---------------------------------------------------------------------------
|
|
185
|
+
|
|
186
|
+
const sha256 = z
|
|
187
|
+
.string()
|
|
188
|
+
.regex(/^[a-f0-9]{64}$/, "sha256 must be 64 lowercase hex chars");
|
|
189
|
+
|
|
190
|
+
const lineageEntry = z.object({
|
|
191
|
+
base: z.string().min(1),
|
|
192
|
+
license: z.string().min(1),
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
export const Eliza1LineageSchema = z.object({
|
|
196
|
+
text: lineageEntry,
|
|
197
|
+
voice: lineageEntry,
|
|
198
|
+
drafter: lineageEntry.optional(),
|
|
199
|
+
// Wave-6 (2026-05-10): manifest now records lineage for every shipped
|
|
200
|
+
// component so license/dataset provenance is auditable per component.
|
|
201
|
+
// All optional — a tier may omit ASR/embedding/vision/vad/wakeword by
|
|
202
|
+
// leaving the corresponding `files.*` slot empty AND the lineage
|
|
203
|
+
// entry undefined. The validator enforces lineage-vs-files consistency.
|
|
204
|
+
asr: lineageEntry.optional(),
|
|
205
|
+
embedding: lineageEntry.optional(),
|
|
206
|
+
imagegen: lineageEntry.optional(),
|
|
207
|
+
vision: lineageEntry.optional(),
|
|
208
|
+
vad: lineageEntry.optional(),
|
|
209
|
+
wakeword: lineageEntry.optional(),
|
|
210
|
+
// Voice Wave 2 (2026-05-14): semantic end-of-turn detector lineage. When
|
|
211
|
+
// `files.turn` ships the bundled `livekit/turn-detector` ONNX (the
|
|
212
|
+
// ≤1.7B-tier `v1.2.2-en` SmolLM2 distill or the ≥4B-tier `v0.4.1-intl`
|
|
213
|
+
// multilingual detector), this records the upstream repo + license. Apache-2.0
|
|
214
|
+
// fallback path is `latishab/turnsense`.
|
|
215
|
+
turn: lineageEntry.optional(),
|
|
216
|
+
// Voice Wave 2 (2026-05-14): acoustic-prosody emotion classifier lineage.
|
|
217
|
+
// When `files.emotion` ships the bundled Wav2Small student GGUF (72K
|
|
218
|
+
// params), this records the audeering teacher repo + license as
|
|
219
|
+
// research-only attribution (the audeering teacher is CC-BY-NC-SA-4.0
|
|
220
|
+
// and NEVER bundled — only the Apache-2.0 student is shipped, distilled
|
|
221
|
+
// via `packages/training/scripts/emotion/distill_wav2small.py`). The
|
|
222
|
+
// SamLowe/roberta-base-go_emotions text classifier may optionally also
|
|
223
|
+
// ship under this slot when the operator enables the text-classifier
|
|
224
|
+
// shadow path; see R3-emotion.md §2.
|
|
225
|
+
emotion: lineageEntry.optional(),
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Runtime class a text artifact is served by. Defaults to GGUF/llama.cpp when
|
|
229
|
+
// absent, so every existing manifest round-trips unchanged.
|
|
230
|
+
// - `llama-cpp` — a `.gguf` served by the fused libelizainference llama.cpp
|
|
231
|
+
// path (the default).
|
|
232
|
+
// - `litert-lm` — a `.litertlm` single-file bundle served by the in-process
|
|
233
|
+
// LiteRT-LM backend (Android NPU / GPU delegate). The C-side
|
|
234
|
+
// `llm_backend_select` probes `<bundleRoot>/text/*.litertlm` and routes to
|
|
235
|
+
// it; the TS loader passes `ELIZA_LLM_BACKEND=litert-lm` when this entry is
|
|
236
|
+
// selected. See `tools/omnivoice/src/backends/litert-backend.cpp`.
|
|
237
|
+
export const ELIZA_1_TEXT_RUNTIME_CLASSES = ["llama-cpp", "litert-lm"] as const;
|
|
238
|
+
export type Eliza1TextRuntimeClass =
|
|
239
|
+
(typeof ELIZA_1_TEXT_RUNTIME_CLASSES)[number];
|
|
240
|
+
export const Eliza1TextRuntimeClassEnumSchema = z.enum(
|
|
241
|
+
ELIZA_1_TEXT_RUNTIME_CLASSES,
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
export const Eliza1FileEntrySchema = z.object({
|
|
245
|
+
path: z.string().min(1),
|
|
246
|
+
sha256,
|
|
247
|
+
// text files declare their context length so the runtime can pick the
|
|
248
|
+
// largest variant that fits the device's RAM budget. Other file kinds
|
|
249
|
+
// never have ctx.
|
|
250
|
+
ctx: z.number().int().min(131072, "must be at least 128k").optional(),
|
|
251
|
+
// Optional runtime-class discriminator on a `files.text` entry. Absent ⇒
|
|
252
|
+
// `llama-cpp` (GGUF, the default). A `.litertlm` text artifact declares
|
|
253
|
+
// `runtimeClass: "litert-lm"` so the loader can route it to the LiteRT-LM
|
|
254
|
+
// backend without re-deriving the runtime from the filename.
|
|
255
|
+
runtimeClass: Eliza1TextRuntimeClassEnumSchema.optional(),
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* A platform-targeted native-lib file in the bundle's `lib[]` set. The fused
|
|
260
|
+
* `libelizainference` ships as a SET (the fused lib + its ggml/llama/mtmd
|
|
261
|
+
* sibling backends), one set per platform `target`. The downloader fetches ONLY
|
|
262
|
+
* the entries whose `target` matches the host (see `../lib-target.ts`
|
|
263
|
+
* `resolveHostLibTargets`) into `<bundleRoot>/lib/`, where the desktop FFI
|
|
264
|
+
* runtime resolves them with no env wiring via `resolveFusedLibraryPath`
|
|
265
|
+
* (path #2 — bundle-local lib). `target` is free-form (e.g. "win-x64-cpu",
|
|
266
|
+
* "linux-x64-cuda", "darwin-arm64-metal") so new targets need no schema bump;
|
|
267
|
+
* `name` overrides the staged filename (defaults to the basename of `path`).
|
|
268
|
+
*/
|
|
269
|
+
export const Eliza1LibFileEntrySchema = z.object({
|
|
270
|
+
path: z.string().min(1),
|
|
271
|
+
sha256,
|
|
272
|
+
target: z.string().min(1),
|
|
273
|
+
name: z.string().min(1).optional(),
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
export const Eliza1FilesSchema = z.object({
|
|
277
|
+
text: z.array(Eliza1FileEntrySchema).min(1),
|
|
278
|
+
voice: z.array(Eliza1FileEntrySchema).min(1),
|
|
279
|
+
asr: z.array(Eliza1FileEntrySchema),
|
|
280
|
+
vision: z.array(Eliza1FileEntrySchema),
|
|
281
|
+
mtp: z.array(Eliza1FileEntrySchema),
|
|
282
|
+
cache: z.array(Eliza1FileEntrySchema).min(1),
|
|
283
|
+
// Wave-6 (2026-05-10): the omni bundle ships a per-bundle dedicated
|
|
284
|
+
// embedding model on non-lite tiers, a Silero-VAD GGUF, and an optional
|
|
285
|
+
// openWakeWord GGUF (the combined GGUF carries the mel filterbank + speech
|
|
286
|
+
// embedding model + every per-phrase head). All three are optional in the
|
|
287
|
+
// schema — the 2b entry tier intentionally omits the dedicated embedding
|
|
288
|
+
// (pools from text backbone) and a tier may ship without wake-word support.
|
|
289
|
+
//
|
|
290
|
+
// Schema-level optionality: empty array = "this bundle does not
|
|
291
|
+
// ship this component"; the validator enforces tier-specific
|
|
292
|
+
// consistency rules (e.g. 4b-and-up MUST ship `embedding[]`).
|
|
293
|
+
embedding: z.array(Eliza1FileEntrySchema).optional(),
|
|
294
|
+
// Optional image-generation artifacts. Most Eliza-1 base bundles do not
|
|
295
|
+
// carry diffusion weights; those are documented in
|
|
296
|
+
// packages/chip/ELIZA_1_BUNDLE_EXTRAS.json and downloaded on first use. When an
|
|
297
|
+
// additional bundle ships local image-gen weights inline, list them here
|
|
298
|
+
// and provide matching `lineage.imagegen`.
|
|
299
|
+
imagegen: z.array(Eliza1FileEntrySchema).optional(),
|
|
300
|
+
vad: z.array(Eliza1FileEntrySchema).optional(),
|
|
301
|
+
wakeword: z.array(Eliza1FileEntrySchema).optional(),
|
|
302
|
+
// Voice Wave 2 (2026-05-14): bundled semantic turn detector. Optional —
|
|
303
|
+
// when omitted, the runtime falls back to `HeuristicEotClassifier` (the
|
|
304
|
+
// deterministic punctuation/conjunction baseline). When present, the
|
|
305
|
+
// runtime loads the model via the GGUF-backed LiveKit turn detector
|
|
306
|
+
// (`eot-classifier-ggml.ts`) and pre-warms it at voice-session start.
|
|
307
|
+
// Tier mapping is data-driven (see
|
|
308
|
+
// `stage_turn_detector` in
|
|
309
|
+
// `packages/training/scripts/manifest/stage_eliza1_bundle_assets.py`):
|
|
310
|
+
// 2b ships the EN-only SmolLM2-135M distill; 4b/9b/27b ship the
|
|
311
|
+
// multilingual detector.
|
|
312
|
+
turn: z.array(Eliza1FileEntrySchema).optional(),
|
|
313
|
+
// Eliza-1 EOT LoRA adapter — optional, complements `turn`. When
|
|
314
|
+
// present, the runtime layers this adapter onto the in-process
|
|
315
|
+
// drafter at voice-session start (`voice/eliza1-eot-scorer.ts`) so
|
|
316
|
+
// P(`<end_of_turn>`) calibration matches a fine-tuned EOT head without
|
|
317
|
+
// shipping a second base model. When both `turn` and `eotLoraAdapter`
|
|
318
|
+
// are present the operator picks via `ELIZA_VOICE_EOT_BACKEND` or
|
|
319
|
+
// `startVoiceSession({ useEliza1Eot })`. Training recipe:
|
|
320
|
+
// `packages/training/scripts/turn_detector/configs/turn_detector_eliza1_drafter.yaml`.
|
|
321
|
+
eotLoraAdapter: z.array(Eliza1FileEntrySchema).optional(),
|
|
322
|
+
// Voice Wave 2 (2026-05-14): bundled acoustic-prosody emotion classifier
|
|
323
|
+
// (Wav2Small student, GGUF). Optional — when omitted, the runtime falls
|
|
324
|
+
// back to the lexicon + audio-prosody heuristic path inside
|
|
325
|
+
// `attributeVoiceEmotion()` (no acoustic-model evidence row). When present,
|
|
326
|
+
// the runtime loads the GGUF via `VoiceEmotionClassifier`, runs it on
|
|
327
|
+
// `isFinal` transcript snapshots, and fuses the output with the Stage-1
|
|
328
|
+
// text-emotion field via the single fusion point in `emotion-attribution.ts`.
|
|
329
|
+
// All tiers ship the same Wav2Small student (the on-device budget is
|
|
330
|
+
// dominated by the LM, not this small head); a 2b entry bundle may still
|
|
331
|
+
// choose to omit it to save the cold-start cost.
|
|
332
|
+
emotion: z.array(Eliza1FileEntrySchema).optional(),
|
|
333
|
+
// Fused libelizainference native-lib SET, per platform target (#9105 /
|
|
334
|
+
// local-inference bundle delivery). Optional — when present the downloader
|
|
335
|
+
// stages the host-matching target's files into `<bundleRoot>/lib/`, which the
|
|
336
|
+
// desktop FFI runtime resolves with no env wiring (`resolveFusedLibraryPath`
|
|
337
|
+
// path #2). CPU baseline is always safe (GGML_CPU is built into the fused
|
|
338
|
+
// lib); GPU targets (`…-cuda` / `…-metal`) are opt-in. This is the bundle
|
|
339
|
+
// path that makes local inference work in a compiled desktop app without a
|
|
340
|
+
// separate lib download; absent ⇒ the runtime falls back to a host-staged
|
|
341
|
+
// `<stateDir>/local-inference/lib` (dev) and otherwise to cloud.
|
|
342
|
+
lib: z.array(Eliza1LibFileEntrySchema).optional(),
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
export const Eliza1KernelEnumSchema = z.enum(ELIZA_1_KERNELS);
|
|
346
|
+
export const Eliza1BackendEnumSchema = z.enum(ELIZA_1_BACKENDS);
|
|
347
|
+
export const Eliza1TierEnumSchema = z.enum(ELIZA_1_TIERS);
|
|
348
|
+
|
|
349
|
+
export const Eliza1VerifiedBackendStatusSchema = z.object({
|
|
350
|
+
status: z.enum(["pass", "fail", "skipped"]),
|
|
351
|
+
atCommit: z.string().min(1),
|
|
352
|
+
report: z.string().min(1),
|
|
353
|
+
// Optional provenance for a "pass" recorded on a single device class — e.g.
|
|
354
|
+
// the runtime Vulkan dispatch smoke that ran on one Intel-ANV GPU. `caveat`
|
|
355
|
+
// names what device coverage is still missing so the recommendation engine
|
|
356
|
+
// and release docs do not over-claim.
|
|
357
|
+
device: z.string().min(1).optional(),
|
|
358
|
+
caveat: z.string().min(1).optional(),
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
// Recipe-level kernel layout pins, folded in from the quantization recipes'
|
|
362
|
+
// `kernel_manifest` sidecar fragments
|
|
363
|
+
// (packages/training/scripts/quantization/_kernel_manifest.py). Keyed by the
|
|
364
|
+
// *recipe* kernel-target name (`turbo3` / `turbo4` / `turbo3_tcq` / `qjl1_256` /
|
|
365
|
+
// `polar_q4`) — NOT the manifest-level capability names in `ELIZA_1_KERNELS`.
|
|
366
|
+
// The runtime/downloader can verify the encoded blocks match the kernels it
|
|
367
|
+
// ships; the publish orchestrator already validates the sidecars exist.
|
|
368
|
+
export const Eliza1RecipeKernelPinsSchema = z.object({
|
|
369
|
+
blockLayoutVersion: z.string().min(1),
|
|
370
|
+
codebookHash: z.string().min(1),
|
|
371
|
+
perBlockTolerance: z.number().positive(),
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
// Generic speculative-decode capability metadata (drafter-agnostic). Covers
|
|
375
|
+
// Gemma 4's separate-drafter MTP, an embedded draft head, or an EAGLE3 head —
|
|
376
|
+
// the shape only records the capability/spec-type/draft model, never the
|
|
377
|
+
// specific drafter family. `specType` names the runtime spec method (e.g.
|
|
378
|
+
// `draft-mtp`, `draft-eagle3`); `model` names the drafter/head artifact.
|
|
379
|
+
export const Eliza1SpecDecodeKernelSchema = z
|
|
380
|
+
.object({
|
|
381
|
+
enabled: z.boolean().optional(),
|
|
382
|
+
capability: z.string().min(1).optional(),
|
|
383
|
+
specType: z.string().min(1).optional(),
|
|
384
|
+
model: z.string().min(1).optional(),
|
|
385
|
+
maxDraftTokens: z.number().int().positive().optional(),
|
|
386
|
+
failure: z.string().min(1).optional(),
|
|
387
|
+
})
|
|
388
|
+
.passthrough();
|
|
389
|
+
|
|
390
|
+
export const Eliza1KernelsSchema = z.object({
|
|
391
|
+
required: z.array(Eliza1KernelEnumSchema).min(1),
|
|
392
|
+
optional: z.array(Eliza1KernelEnumSchema),
|
|
393
|
+
verifiedBackends: z.object({
|
|
394
|
+
metal: Eliza1VerifiedBackendStatusSchema,
|
|
395
|
+
vulkan: Eliza1VerifiedBackendStatusSchema,
|
|
396
|
+
cuda: Eliza1VerifiedBackendStatusSchema,
|
|
397
|
+
rocm: Eliza1VerifiedBackendStatusSchema,
|
|
398
|
+
cpu: Eliza1VerifiedBackendStatusSchema,
|
|
399
|
+
}),
|
|
400
|
+
recipeManifest: z.record(z.string(), Eliza1RecipeKernelPinsSchema).optional(),
|
|
401
|
+
// Optional speculative-decode capability metadata (canonical key).
|
|
402
|
+
specDecode: Eliza1SpecDecodeKernelSchema.optional(),
|
|
403
|
+
// Back-compat alias accepted for one release: pre-cutover manifests emit
|
|
404
|
+
// the same capability object under `eagle3`. New producers stamp
|
|
405
|
+
// `specDecode`; the validator reads `specDecode ?? eagle3`.
|
|
406
|
+
eagle3: Eliza1SpecDecodeKernelSchema.optional(),
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
// Wave-6: voice surface declares which expressive features the bundled
|
|
410
|
+
// TTS supports. Today these are tag-driven inline in the input text;
|
|
411
|
+
// presence of `singing` or `emotion-tags` here lets the runtime expose
|
|
412
|
+
// the relevant API surface and lets the planner emit tags inline.
|
|
413
|
+
export const ELIZA_1_VOICE_CAPABILITIES = [
|
|
414
|
+
"tts",
|
|
415
|
+
"emotion-tags",
|
|
416
|
+
"singing",
|
|
417
|
+
] as const;
|
|
418
|
+
export const ELIZA_1_VOICE_MANIFEST_VERSION = "1";
|
|
419
|
+
export const VOICE_PRESET_CACHE_PATH = "cache/voice-preset-default.bin";
|
|
420
|
+
export type Eliza1VoiceCapability = (typeof ELIZA_1_VOICE_CAPABILITIES)[number];
|
|
421
|
+
|
|
422
|
+
export const Eliza1VoiceSchema = z.object({
|
|
423
|
+
version: z.string().min(1),
|
|
424
|
+
frozen: z.literal(true),
|
|
425
|
+
cache: z.object({
|
|
426
|
+
speakerPreset: z.string().min(1),
|
|
427
|
+
phraseCacheSeed: z.string().min(1),
|
|
428
|
+
}),
|
|
429
|
+
capabilities: z.array(z.enum(ELIZA_1_VOICE_CAPABILITIES)).default(["tts"]),
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
// Generic speculative-decode eval metadata (drafter-agnostic): records the
|
|
433
|
+
// accepted/drafted acceptance rate and the spec-decode-on ÷ baseline speedup
|
|
434
|
+
// for whatever drafter the bundle ships (MTP separate drafter, EAGLE3 head, …).
|
|
435
|
+
const Eliza1SpecDecodeEvalSchema = z
|
|
436
|
+
.object({
|
|
437
|
+
/** accepted/drafted; null or absent when not measured. */
|
|
438
|
+
acceptanceRate: z.number().min(0).max(1).nullable().optional(),
|
|
439
|
+
/** spec-decode-on tok/s ÷ baseline tok/s; null or absent when not measured. */
|
|
440
|
+
speedup: z.number().nonnegative().nullable().optional(),
|
|
441
|
+
/** Preferred spelling for pass/fail status. */
|
|
442
|
+
passed: z.boolean().optional(),
|
|
443
|
+
/** Back-compat spelling accepted for manifest producers that emit `pass`. */
|
|
444
|
+
pass: z.boolean().optional(),
|
|
445
|
+
/** Human-readable reason when the spec-decode eval was not run or failed. */
|
|
446
|
+
failure: z.string().min(1).optional(),
|
|
447
|
+
})
|
|
448
|
+
.superRefine((specDecode, ctx) => {
|
|
449
|
+
if (
|
|
450
|
+
specDecode.pass !== undefined &&
|
|
451
|
+
specDecode.passed !== undefined &&
|
|
452
|
+
specDecode.pass !== specDecode.passed
|
|
453
|
+
) {
|
|
454
|
+
ctx.addIssue({
|
|
455
|
+
code: "custom",
|
|
456
|
+
message: "pass and passed must agree when both are present",
|
|
457
|
+
path: ["pass"],
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
const passed = specDecode.passed ?? specDecode.pass;
|
|
461
|
+
if (
|
|
462
|
+
passed === true &&
|
|
463
|
+
(specDecode.acceptanceRate == null || specDecode.speedup == null)
|
|
464
|
+
) {
|
|
465
|
+
ctx.addIssue({
|
|
466
|
+
code: "custom",
|
|
467
|
+
message: "passed=true requires measured acceptanceRate and speedup",
|
|
468
|
+
path: ["passed"],
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
export const Eliza1EvalsSchema = z.object({
|
|
474
|
+
textEval: z.object({
|
|
475
|
+
score: z.number().min(0).max(1),
|
|
476
|
+
passed: z.boolean(),
|
|
477
|
+
}),
|
|
478
|
+
voiceRtf: z.object({
|
|
479
|
+
rtf: z.number().nonnegative(),
|
|
480
|
+
passed: z.boolean(),
|
|
481
|
+
}),
|
|
482
|
+
e2eLoopOk: z.boolean(),
|
|
483
|
+
thirtyTurnOk: z.boolean(),
|
|
484
|
+
// Wave-6 additions — all optional so a tier can publish without
|
|
485
|
+
// an ASR / embedding component declared. `expressive` covers the
|
|
486
|
+
// singing/emotion-tag eval gates from `eliza1_gates.yaml`. The
|
|
487
|
+
// validator refuses defaultEligible=true if any declared component's
|
|
488
|
+
// gate is missing OR fails.
|
|
489
|
+
asrWer: z
|
|
490
|
+
.object({
|
|
491
|
+
wer: z.number().nonnegative(),
|
|
492
|
+
passed: z.boolean(),
|
|
493
|
+
})
|
|
494
|
+
.optional(),
|
|
495
|
+
embedMteb: z
|
|
496
|
+
.object({
|
|
497
|
+
score: z.number().min(0).max(1),
|
|
498
|
+
passed: z.boolean(),
|
|
499
|
+
})
|
|
500
|
+
.optional(),
|
|
501
|
+
vadLatencyMs: z
|
|
502
|
+
.object({
|
|
503
|
+
median: z.number().nonnegative(),
|
|
504
|
+
boundaryMs: z.number().nonnegative().optional(),
|
|
505
|
+
endpointMs: z.number().nonnegative().optional(),
|
|
506
|
+
falseBargeInRate: z.number().min(0).max(1).optional(),
|
|
507
|
+
passed: z.boolean(),
|
|
508
|
+
})
|
|
509
|
+
.optional(),
|
|
510
|
+
expressive: z
|
|
511
|
+
.object({
|
|
512
|
+
tagFaithfulness: z.number().min(0).max(1),
|
|
513
|
+
mosExpressive: z.number().nonnegative(),
|
|
514
|
+
tagLeakage: z.number().nonnegative(),
|
|
515
|
+
passed: z.boolean(),
|
|
516
|
+
})
|
|
517
|
+
.optional(),
|
|
518
|
+
mtp: z
|
|
519
|
+
.object({
|
|
520
|
+
acceptanceRate: z.number().min(0).max(1).nullable(),
|
|
521
|
+
speedup: z.number().nonnegative().nullable(),
|
|
522
|
+
passed: z.boolean(),
|
|
523
|
+
})
|
|
524
|
+
.optional(),
|
|
525
|
+
// Optional speculative-decode bench metadata (canonical key).
|
|
526
|
+
specDecode: Eliza1SpecDecodeEvalSchema.optional(),
|
|
527
|
+
// Back-compat alias accepted for one release: pre-cutover manifests emit
|
|
528
|
+
// the same bench object under `eagle3`. The validator reads
|
|
529
|
+
// `specDecode ?? eagle3`.
|
|
530
|
+
eagle3: Eliza1SpecDecodeEvalSchema.optional(),
|
|
531
|
+
// Voice Wave 2 (2026-05-14): semantic end-of-turn detector eval gates.
|
|
532
|
+
// Required when `files.turn` is non-empty (validator enforces). Thresholds
|
|
533
|
+
// applied by `eval_turn_detector.py` in `packages/training/scripts/turn_detector/`:
|
|
534
|
+
// f1 ≥ TURN_DETECTOR_F1_THRESHOLD (0.85)
|
|
535
|
+
// meanLatencyMs ≤ TURN_DETECTOR_MEAN_LATENCY_MS_LIMIT (30 ms)
|
|
536
|
+
// `passed` is precomputed by the eval script per the constants above so
|
|
537
|
+
// the validator stays a single source of truth; constants are exported
|
|
538
|
+
// from this module for the script + tests to consume.
|
|
539
|
+
turnDetector: z
|
|
540
|
+
.object({
|
|
541
|
+
f1: z.number().min(0).max(1),
|
|
542
|
+
meanLatencyMs: z.number().nonnegative(),
|
|
543
|
+
passed: z.boolean(),
|
|
544
|
+
// Which detector backend the eval was run against. Optional for
|
|
545
|
+
// back-compat with bundles staged before the eliza-1 EOT path;
|
|
546
|
+
// when absent, consumers should assume `livekit`.
|
|
547
|
+
kind: z.enum(["livekit", "turnsense", "eliza-1-drafter"]).optional(),
|
|
548
|
+
})
|
|
549
|
+
.optional(),
|
|
550
|
+
// Voice Wave 2 (2026-05-14): acoustic-emotion classifier eval gates.
|
|
551
|
+
// Required when `files.emotion` is non-empty (validator enforces).
|
|
552
|
+
// Thresholds applied by the bench harness under
|
|
553
|
+
// `packages/benchmarks/voice-emotion/`:
|
|
554
|
+
// macroF1Meld ≥ EMOTION_CLASSIFIER_MELD_F1_THRESHOLD (0.35)
|
|
555
|
+
// macroF1Iemocap ≥ EMOTION_CLASSIFIER_IEMOCAP_F1_THRESHOLD (0.60)
|
|
556
|
+
// The MELD threshold is intentionally low — 7-class conversational SER
|
|
557
|
+
// macro-F1 is 0.40-0.50 even for strong models on MELD; we set the gate so
|
|
558
|
+
// a real improvement does not get refused (R3-emotion §6 risk).
|
|
559
|
+
emotionClassifier: z
|
|
560
|
+
.object({
|
|
561
|
+
macroF1Meld: z.number().min(0).max(1),
|
|
562
|
+
macroF1Iemocap: z.number().min(0).max(1),
|
|
563
|
+
/** Mean per-clip inference latency on CPU. */
|
|
564
|
+
meanLatencyMs: z.number().nonnegative(),
|
|
565
|
+
passed: z.boolean(),
|
|
566
|
+
})
|
|
567
|
+
.optional(),
|
|
568
|
+
});
|
|
569
|
+
|
|
570
|
+
/** Eval-gate threshold: minimum acceptable F1 on the EOU benchmark. */
|
|
571
|
+
export const TURN_DETECTOR_F1_THRESHOLD = 0.85 as const;
|
|
572
|
+
|
|
573
|
+
/** Eval-gate threshold: maximum acceptable mean inference latency (ms). */
|
|
574
|
+
export const TURN_DETECTOR_MEAN_LATENCY_MS_LIMIT = 30 as const;
|
|
575
|
+
|
|
576
|
+
/** Eval-gate threshold: minimum macro-F1 on MELD test (7-class). */
|
|
577
|
+
export const EMOTION_CLASSIFIER_MELD_F1_THRESHOLD = 0.35 as const;
|
|
578
|
+
|
|
579
|
+
/** Eval-gate threshold: minimum macro-F1 on IEMOCAP test (4-class). */
|
|
580
|
+
export const EMOTION_CLASSIFIER_IEMOCAP_F1_THRESHOLD = 0.6 as const;
|
|
581
|
+
|
|
582
|
+
/** Eval-gate threshold: maximum mean CPU inference latency (ms) per window. */
|
|
583
|
+
export const EMOTION_CLASSIFIER_MEAN_LATENCY_MS_LIMIT = 30 as const;
|
|
584
|
+
|
|
585
|
+
export const Eliza1RamBudgetSchema = z
|
|
586
|
+
.object({
|
|
587
|
+
min: z.number().int().positive(),
|
|
588
|
+
recommended: z.number().int().positive(),
|
|
589
|
+
})
|
|
590
|
+
.refine((r) => r.recommended >= r.min, {
|
|
591
|
+
message: "ramBudgetMb.recommended must be >= ramBudgetMb.min",
|
|
592
|
+
});
|
|
593
|
+
|
|
594
|
+
// Release-state vocabulary. `base-v1` is the v1 product: the upstream BASE
|
|
595
|
+
// models — GGUF-converted via the elizaOS/llama.cpp fork and fully
|
|
596
|
+
// Eliza-optimized (every quant/kernel trick in inference/AGENTS.md §3) —
|
|
597
|
+
// but NOT fine-tuned (fine-tuning ships in v2). `base-v1-candidate` is the
|
|
598
|
+
// in-progress state of a base-v1 bundle before every release-blocking
|
|
599
|
+
// gate (real fork-built bytes, every supported-backend kernel verify,
|
|
600
|
+
// every required platform-dispatch report, the runnable-on-base evals)
|
|
601
|
+
// has gone green. It is publishable to HuggingFace as a download target
|
|
602
|
+
// and is installable on a device whose backend it verified, but is not
|
|
603
|
+
// the strict release — its `defaultEligible` stays `false` at publish
|
|
604
|
+
// time. `finetuned-v2` is the v2 state; `local-standin` is a non-publishable
|
|
605
|
+
// staging shape; `upload-candidate` / `final` are the historical
|
|
606
|
+
// fine-tuned-v1 publish states retained for forward-compat. Mirrors
|
|
607
|
+
// `ELIZA_1_RELEASE_STATES` in
|
|
608
|
+
// `packages/training/scripts/manifest/eliza1_manifest.py`.
|
|
609
|
+
export const ELIZA_1_RELEASE_STATES = [
|
|
610
|
+
"local-standin",
|
|
611
|
+
"base-v1-candidate",
|
|
612
|
+
"base-v1",
|
|
613
|
+
"finetuned-v2",
|
|
614
|
+
"upload-candidate",
|
|
615
|
+
"final",
|
|
616
|
+
] as const;
|
|
617
|
+
export type Eliza1ReleaseState = (typeof ELIZA_1_RELEASE_STATES)[number];
|
|
618
|
+
|
|
619
|
+
// Release-channel vocabulary recorded on a published manifest.
|
|
620
|
+
// `recommended` is the fine-tuned Eliza-1 (ships in v2) — the channel a
|
|
621
|
+
// device may auto-promote to the strict default. `base-v1` is the
|
|
622
|
+
// upstream-base + kernel-optimized release: every quant/kernel trick
|
|
623
|
+
// applied, but the text weights are the upstream base GGUFs (not the
|
|
624
|
+
// fine-tuned Eliza-1). A `base-v1`-channel manifest MUST be
|
|
625
|
+
// `defaultEligible: false` at publish time. The on-device gate
|
|
626
|
+
// (`canSetAsDefault`) still promotes a contract-valid `base-v1` bundle to
|
|
627
|
+
// the fallback default when no `recommended` channel bundle is installed —
|
|
628
|
+
// see `validator.ts`. Mirrors `ELIZA_1_RELEASE_CHANNELS` (Python side).
|
|
629
|
+
export const ELIZA_1_RELEASE_CHANNELS = ["recommended", "base-v1"] as const;
|
|
630
|
+
export type Eliza1ReleaseChannel = (typeof ELIZA_1_RELEASE_CHANNELS)[number];
|
|
631
|
+
|
|
632
|
+
// Provenance slots — the bundle components whose upstream source repo a
|
|
633
|
+
// `base-v1` manifest must record. Mirrors `ELIZA_1_PROVENANCE_SLOTS`
|
|
634
|
+
// (Python side).
|
|
635
|
+
export const ELIZA_1_PROVENANCE_SLOTS = [
|
|
636
|
+
"text",
|
|
637
|
+
"voice",
|
|
638
|
+
"asr",
|
|
639
|
+
"vad",
|
|
640
|
+
"embedding",
|
|
641
|
+
"imagegen",
|
|
642
|
+
"vision",
|
|
643
|
+
"drafter",
|
|
644
|
+
] as const;
|
|
645
|
+
export type Eliza1ProvenanceSlot = (typeof ELIZA_1_PROVENANCE_SLOTS)[number];
|
|
646
|
+
|
|
647
|
+
const eliza1SourceModelEntry = z.object({
|
|
648
|
+
/** Upstream HuggingFace repo this component is converted from. */
|
|
649
|
+
repo: z.string().min(1),
|
|
650
|
+
/** Specific file in the upstream repo, when the source is one file. */
|
|
651
|
+
file: z.string().min(1).optional(),
|
|
652
|
+
/** The converter / recipe path used (e.g. `<fork>/convert_hf_to_gguf.py`). */
|
|
653
|
+
convertedVia: z.string().min(1).optional(),
|
|
654
|
+
/** Free-text provenance note. */
|
|
655
|
+
note: z.string().min(1).optional(),
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
// `provenance` — optional manifest block. Required on a `base-v1` bundle so
|
|
659
|
+
// the "base, not fine-tuned" plan is auditable: which upstream repo each
|
|
660
|
+
// shipped component is converted from, and whether v1 fine-tuning was
|
|
661
|
+
// applied (always `false` for the base-v1 release). The contract validator
|
|
662
|
+
// enforces per-component coverage for `base-v1`.
|
|
663
|
+
export const Eliza1ProvenanceSchema = z.object({
|
|
664
|
+
releaseState: z.enum(ELIZA_1_RELEASE_STATES),
|
|
665
|
+
finetuned: z.boolean(),
|
|
666
|
+
sourceModels: z.record(
|
|
667
|
+
z.enum(ELIZA_1_PROVENANCE_SLOTS),
|
|
668
|
+
eliza1SourceModelEntry,
|
|
669
|
+
),
|
|
670
|
+
});
|
|
671
|
+
|
|
672
|
+
// Gemma 4 cutover (schemaVersion 2): the shared tokenizer identity the
|
|
673
|
+
// publish-side builder stamps onto every bundle. The contract validator pins
|
|
674
|
+
// `family` to `ELIZA_1_TOKENIZER_FAMILY` and `vocabSize` to
|
|
675
|
+
// `ELIZA_1_TOKENIZER_VOCAB_SIZE` when this block is present.
|
|
676
|
+
export const Eliza1TokenizerSchema = z.object({
|
|
677
|
+
family: z.string().min(1),
|
|
678
|
+
vocabSize: z.number().int().positive(),
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
export const Eliza1ManifestSchema = z
|
|
682
|
+
.object({
|
|
683
|
+
$schema: z.literal(ELIZA_1_MANIFEST_SCHEMA_URL).optional(),
|
|
684
|
+
id: z.string().min(1),
|
|
685
|
+
tier: Eliza1TierEnumSchema,
|
|
686
|
+
version: z
|
|
687
|
+
.string()
|
|
688
|
+
.regex(
|
|
689
|
+
/^\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?$/,
|
|
690
|
+
"version must be semver (e.g. 1.0.0)",
|
|
691
|
+
),
|
|
692
|
+
publishedAt: z.string().datetime(),
|
|
693
|
+
lineage: Eliza1LineageSchema,
|
|
694
|
+
files: Eliza1FilesSchema,
|
|
695
|
+
kernels: Eliza1KernelsSchema,
|
|
696
|
+
evals: Eliza1EvalsSchema,
|
|
697
|
+
ramBudgetMb: Eliza1RamBudgetSchema,
|
|
698
|
+
// Wave-6: optional. Default = `{ capabilities: ["tts"] }` (base TTS only,
|
|
699
|
+
// no emotion tags, no singing). Bundles that ship the omnivoice-singing
|
|
700
|
+
// weights advertise `["tts","emotion-tags","singing"]`.
|
|
701
|
+
voice: Eliza1VoiceSchema.optional(),
|
|
702
|
+
// Optional. Present on `base-v1` bundles (the upstream base models,
|
|
703
|
+
// GGUF-converted + fully optimized, NOT fine-tuned). Records the
|
|
704
|
+
// release state, the not-fine-tuned flag, and the upstream source repo
|
|
705
|
+
// per shipped component. The contract validator requires per-component
|
|
706
|
+
// coverage when `releaseState === "base-v1"`.
|
|
707
|
+
provenance: Eliza1ProvenanceSchema.optional(),
|
|
708
|
+
// Optional. Defaults to `"recommended"` semantically when unset (the
|
|
709
|
+
// fine-tuned Eliza-1 — the channel allowed to auto-promote to the
|
|
710
|
+
// strict device default). A `"base-v1"`-channel manifest is the
|
|
711
|
+
// upstream-base + kernel-optimized release; it MUST be
|
|
712
|
+
// `defaultEligible: false` at publish time. The on-device gate
|
|
713
|
+
// (`canSetAsDefault`) still allows a contract-valid `base-v1` bundle
|
|
714
|
+
// to fill an empty default slot when no `recommended` channel bundle
|
|
715
|
+
// is installed; the recommender prefers `defaultEligible: true` over
|
|
716
|
+
// candidates whenever both are available.
|
|
717
|
+
releaseChannel: z.enum(ELIZA_1_RELEASE_CHANNELS).optional(),
|
|
718
|
+
defaultEligible: z.boolean(),
|
|
719
|
+
// Optional. Quant metadata emitted by the publish-side manifest
|
|
720
|
+
// builder. May be either a free-text tag (`"Q3_K_S"`, `"Q4_K_M"`) or a
|
|
721
|
+
// structured object describing the optimization recipe (PolarQuant +
|
|
722
|
+
// QJL block layout, per-layer outlier counts, etc.). Not consumed by
|
|
723
|
+
// the runtime validator — declared here so a manifest carrying it is
|
|
724
|
+
// accepted instead of being stripped or rejected. The schema is
|
|
725
|
+
// intentionally permissive: the publish-side tool is the source of
|
|
726
|
+
// truth for the shape, and the runtime only needs the manifest to
|
|
727
|
+
// round-trip cleanly.
|
|
728
|
+
textQuant: z
|
|
729
|
+
.union([z.string().min(1), z.record(z.string(), z.unknown())])
|
|
730
|
+
.optional(),
|
|
731
|
+
// Gemma 4 cutover (schemaVersion 2) identity fields, stamped by the
|
|
732
|
+
// publish-side bundle builder. Optional so legacy v1 (pre-cutover)
|
|
733
|
+
// manifests still round-trip; the contract validator enforces their
|
|
734
|
+
// values when present.
|
|
735
|
+
schemaVersion: z.union([z.literal("2"), z.literal(2)]).optional(),
|
|
736
|
+
tokenizer: Eliza1TokenizerSchema.optional(),
|
|
737
|
+
kv: z.string().min(1).optional(),
|
|
738
|
+
mtp: z.enum(ELIZA_1_MTP_MODES).optional(),
|
|
739
|
+
})
|
|
740
|
+
// The id MUST encode the tier so catalogs can derive tier from id without
|
|
741
|
+
// re-reading the manifest. Example: `id: "eliza-1-9b"`.
|
|
742
|
+
.refine(
|
|
743
|
+
(m) =>
|
|
744
|
+
m.id === `eliza-1-${m.tier}` || m.id.startsWith(`eliza-1-${m.tier}-`),
|
|
745
|
+
{
|
|
746
|
+
message: "id must start with `eliza-1-<tier>`",
|
|
747
|
+
path: ["id"],
|
|
748
|
+
},
|
|
749
|
+
)
|
|
750
|
+
// A `base-v1`-channel manifest is the upstream-base release. At publish
|
|
751
|
+
// time it MUST be `defaultEligible: false` — the on-device gate
|
|
752
|
+
// (`canSetAsDefault`) is the one that allows it to fill an empty default
|
|
753
|
+
// slot when no `recommended` bundle is installed. Mirrors
|
|
754
|
+
// inference/AGENTS.md §6 and the Python manifest builder.
|
|
755
|
+
.refine(
|
|
756
|
+
(m) => m.releaseChannel !== "base-v1" || m.defaultEligible === false,
|
|
757
|
+
{
|
|
758
|
+
message: "releaseChannel=base-v1 requires defaultEligible: false",
|
|
759
|
+
path: ["defaultEligible"],
|
|
760
|
+
},
|
|
761
|
+
);
|