@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 @@
|
|
|
1
|
+
{"version":3,"file":"engine-bridge.d.ts","sourceRoot":"","sources":["../../../src/services/voice/engine-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveKit turn-detector — GGUF-backed binding (J1.d).
|
|
3
|
+
*
|
|
4
|
+
* The text-side turn-completion classifier formats the latest partial
|
|
5
|
+
* user transcript with the Gemma chat template, strips the trailing
|
|
6
|
+
* `<end_of_turn>`, and reads `P(<end_of_turn>)` from the next-token
|
|
7
|
+
* distribution. The upstream `livekit/turn-detector` ships an ONNX
|
|
8
|
+
* graph; this binding consumes the **GGUF** export published at
|
|
9
|
+
* `elizaos/eliza-1` under `voice/turn-detector/onnx/turn-detector-en-q8.gguf`
|
|
10
|
+
* (and the multilingual variant at
|
|
11
|
+
* `voice/turn/intl/turn-detector-intl-q8.gguf`), running through the
|
|
12
|
+
* canonical fork wrapper `capacitor-llama` (per
|
|
13
|
+
* `plugins/plugin-local-inference/native/AGENTS.md` §1 — the npm
|
|
14
|
+
* `capacitor-llama` dep is the elizaOS fork's republish, binding to the
|
|
15
|
+
* fork's `libllama`).
|
|
16
|
+
*
|
|
17
|
+
* Why this exists: per I1's single-runtime audit
|
|
18
|
+
* (`.swarm/impl/I1-single-runtime.md` §B), the turn-detector was the
|
|
19
|
+
* cheapest of the four remaining ONNX surfaces to retire — the GGUF
|
|
20
|
+
* artifact was already published by H4 (see commit history), and the
|
|
21
|
+
* detector's architecture (a small decoder + classification head on the
|
|
22
|
+
* `<end_of_turn>` logit) is already implemented in the fork. The work is
|
|
23
|
+
* wiring, not porting.
|
|
24
|
+
*
|
|
25
|
+
* No silent fallback (AGENTS.md §3): when `capacitor-llama` is
|
|
26
|
+
* unavailable, the GGUF is missing, or the model load fails, this
|
|
27
|
+
* class throws `EotGgmlUnavailableError` with a structured code. The
|
|
28
|
+
* resolver above this binding picks `HeuristicEotClassifier` or the
|
|
29
|
+
* legacy ONNX path; the binding itself never fabricates a probability.
|
|
30
|
+
*
|
|
31
|
+
* Tokenizer ownership: the GGUF carries its own tokenizer (BPE +
|
|
32
|
+
* special tokens, including `<end_of_turn>`); this binding does NOT
|
|
33
|
+
* import `@huggingface/transformers`. The `apply_chat_template`
|
|
34
|
+
* formatting is re-implemented here using the same template upstream
|
|
35
|
+
* uses (single-turn user message wrapped in `<start_of_turn>user\n... \n`)
|
|
36
|
+
* — see `applyGemmaUserTemplate` below.
|
|
37
|
+
*
|
|
38
|
+
* --- Planned LoRA hot-swap path ---
|
|
39
|
+
*
|
|
40
|
+
* The LiveKit GGUF is a separate 66 MB (EN) or 396 MB (intl) resident
|
|
41
|
+
* model. The chat target model (eliza-1-{2b,4b}) is already
|
|
42
|
+
* loaded for conversation — its next-token distribution after the
|
|
43
|
+
* chat-template-formatted partial transcript provides exactly the
|
|
44
|
+
* same `P(<end_of_turn>)` signal. A LoRA adapter (rank 8, ~5-10 MB)
|
|
45
|
+
* trained on `(transcript, eot_label)` pairs can shape that signal
|
|
46
|
+
* to match or beat the LiveKit baseline.
|
|
47
|
+
*
|
|
48
|
+
* The training pipeline lives at
|
|
49
|
+
* `packages/training/scripts/voice/eot/RUNBOOK.md`. The publish gates
|
|
50
|
+
* (AUROC ≥ 0.85, ECE ≤ 0.05, p95 ≤ 50 ms) are in
|
|
51
|
+
* `packages/training/benchmarks/eot_gates.md`.
|
|
52
|
+
*
|
|
53
|
+
* Integration sketch (deferred — implement when an adapter ships):
|
|
54
|
+
*
|
|
55
|
+
* 1. Bundle ships `voice/eot-lora/eliza-1-<tier>-eot-lora.bin`
|
|
56
|
+
* alongside the chat target GGUF, with a manifest sidecar binding
|
|
57
|
+
* the adapter to the target's SHA256 (refuse to load if mismatched).
|
|
58
|
+
* 2. Runtime detects the adapter via the bundle catalog. When present
|
|
59
|
+
* AND the chat target is already loaded, the EOT resolver prefers
|
|
60
|
+
* LoRA hot-swap over standing up the LiveKit GGUF process.
|
|
61
|
+
* 3. The hot-swap path uses llama.cpp's `--lora` flag on the chat
|
|
62
|
+
* target. A single forward pass against the chat-template-formatted
|
|
63
|
+
* transcript yields the next-token logits; read `<end_of_turn>`'s
|
|
64
|
+
* probability and return it.
|
|
65
|
+
* 4. Fail-closed: if adapter load fails or the SHA binding mismatches,
|
|
66
|
+
* throw `EotGgmlUnavailableError("model-load-failed", ...)`. No
|
|
67
|
+
* silent fallback to the un-adapted target (the un-adapted logits
|
|
68
|
+
* would be the chat-model's own prior, not a calibrated EOT
|
|
69
|
+
* classifier).
|
|
70
|
+
*
|
|
71
|
+
* Until that lands, this binding remains the canonical EOT path.
|
|
72
|
+
*/
|
|
73
|
+
import type { EotClassifier, VoiceTurnSignal } from "./eot-classifier";
|
|
74
|
+
/** Raised when the GGUF binding cannot be loaded or scored. */
|
|
75
|
+
export declare class EotGgmlUnavailableError extends Error {
|
|
76
|
+
readonly code: "native-missing" | "model-missing" | "model-load-failed" | "tokenizer-missing-end-of-turn" | "evaluate-failed" | "invalid-input";
|
|
77
|
+
constructor(code: EotGgmlUnavailableError["code"], message: string);
|
|
78
|
+
}
|
|
79
|
+
/** HF mono-repo holding every voice sub-model. */
|
|
80
|
+
export declare const LIVEKIT_TURN_DETECTOR_HF_REPO = "elizaos/eliza-1";
|
|
81
|
+
/** Canonical English GGUF asset path inside the bundle. */
|
|
82
|
+
export declare const DEFAULT_LIVEKIT_TURN_DETECTOR_GGUF_EN = "voice/turn-detector/onnx/turn-detector-en-q8.gguf";
|
|
83
|
+
/** Canonical multilingual GGUF asset path inside the bundle. */
|
|
84
|
+
export declare const DEFAULT_LIVEKIT_TURN_DETECTOR_GGUF_INTL = "voice/turn/intl/turn-detector-intl-q8.gguf";
|
|
85
|
+
/** Special-token literal the detector reads the probability of. */
|
|
86
|
+
export declare const LIVEKIT_END_OF_TURN_TOKEN = "<end_of_turn>";
|
|
87
|
+
/**
|
|
88
|
+
* Default on-disk location for the staged GGUF. The bundle downloader
|
|
89
|
+
* materializes assets under `<stateDir>/local-inference/models/...`; this
|
|
90
|
+
* matches the bundle downloader's staged-asset path layout.
|
|
91
|
+
*/
|
|
92
|
+
export declare const DEFAULT_LIVEKIT_TURN_DETECTOR_GGML_DIR: string;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve which GGUF variant a given Eliza-1 tier should bundle.
|
|
95
|
+
* Mirrors `turnDetectorRevisionForTier` in `eot-classifier.ts` —
|
|
96
|
+
* mobile tiers get the English-only ~40 MB Q8 GGUF, desktop tiers
|
|
97
|
+
* get the multilingual ~280 MB Q8 GGUF.
|
|
98
|
+
*
|
|
99
|
+
* Accepts both bare tier ids (`"4b"`) and prefixed catalog ids
|
|
100
|
+
* (`"eliza-1-4b"`).
|
|
101
|
+
*/
|
|
102
|
+
export declare function turnDetectorGgufForTier(tierId: string): {
|
|
103
|
+
hfPath: string;
|
|
104
|
+
variant: "en" | "intl";
|
|
105
|
+
};
|
|
106
|
+
export interface LiveKitGgmlTurnDetectorOptions {
|
|
107
|
+
/** Absolute path to the GGUF file. Required. */
|
|
108
|
+
ggufPath: string;
|
|
109
|
+
/**
|
|
110
|
+
* Upstream revision tag for telemetry only (`"v1.2.2-en"` /
|
|
111
|
+
* `"v0.4.1-intl"`). Does not affect inference.
|
|
112
|
+
*/
|
|
113
|
+
revision?: string;
|
|
114
|
+
/** Max history tokens after Gemma-template wrapping. Default: 128. */
|
|
115
|
+
maxHistoryTokens?: number;
|
|
116
|
+
/** Optional model label for telemetry. */
|
|
117
|
+
model?: string;
|
|
118
|
+
/** Optional thread count for the context. Default: 2. */
|
|
119
|
+
threads?: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Local GGUF-backed LiveKit turn-detector. Uses a `capacitor-llama`
|
|
123
|
+
* evaluation of the decoder, reading `P(<end_of_turn>)` from the next-token
|
|
124
|
+
* distribution after the truncated user-template prefix.
|
|
125
|
+
*
|
|
126
|
+
* One detector instance owns one `LlamaModel` + one `LlamaContext` +
|
|
127
|
+
* one `LlamaSequence`. `score()` resets the sequence between calls —
|
|
128
|
+
* the detector is intentionally stateless (no carried context across
|
|
129
|
+
* different user transcripts).
|
|
130
|
+
*/
|
|
131
|
+
export declare class LiveKitGgmlTurnDetector implements EotClassifier {
|
|
132
|
+
readonly ggufPath: string;
|
|
133
|
+
private readonly maxHistoryTokens;
|
|
134
|
+
private readonly model;
|
|
135
|
+
private readonly revision;
|
|
136
|
+
private readonly threads;
|
|
137
|
+
private ready;
|
|
138
|
+
constructor(opts: LiveKitGgmlTurnDetectorOptions);
|
|
139
|
+
score(partialTranscript: string): Promise<number>;
|
|
140
|
+
signal(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
141
|
+
/** Release the underlying GGUF + context. Idempotent. */
|
|
142
|
+
dispose(): Promise<void>;
|
|
143
|
+
private load;
|
|
144
|
+
private loadInner;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve a `LiveKitGgmlTurnDetector` against the bundle's on-disk
|
|
148
|
+
* staging directory. Search order:
|
|
149
|
+
*
|
|
150
|
+
* 1. Explicit `opts.ggufPath`.
|
|
151
|
+
* 2. `ELIZA_TURN_DETECTOR_GGUF` env var.
|
|
152
|
+
* 3. `<modelDir>/<en GGUF name>` (the canonical layout for the
|
|
153
|
+
* bundle's English variant).
|
|
154
|
+
* 4. `<modelDir>/<intl GGUF name>` (multilingual).
|
|
155
|
+
*
|
|
156
|
+
* Returns `null` if no GGUF is found alongside the directory — the
|
|
157
|
+
* caller falls back to `HeuristicEotClassifier`.
|
|
158
|
+
*/
|
|
159
|
+
export declare function createBundledLiveKitGgmlTurnDetector(opts?: {
|
|
160
|
+
ggufPath?: string;
|
|
161
|
+
modelDir?: string;
|
|
162
|
+
revision?: string;
|
|
163
|
+
maxHistoryTokens?: number;
|
|
164
|
+
threads?: number;
|
|
165
|
+
}): Promise<LiveKitGgmlTurnDetector | null>;
|
|
166
|
+
/**
|
|
167
|
+
* Apply the single-turn user Gemma chat template, omitting the trailing
|
|
168
|
+
* `<end_of_turn>` so the detector head scores it as the next token.
|
|
169
|
+
*
|
|
170
|
+
* Upstream `livekit/turn-detector` formats:
|
|
171
|
+
*
|
|
172
|
+
* <start_of_turn>user\n{transcript}<end_of_turn>\n
|
|
173
|
+
*
|
|
174
|
+
* The detector strips the trailing `<end_of_turn>\n` and reads
|
|
175
|
+
* `P(<end_of_turn>)` after the user content. We emit the prefix exactly,
|
|
176
|
+
* stopping where the `<end_of_turn>` would go.
|
|
177
|
+
*/
|
|
178
|
+
export declare function applyGemmaUserTemplate(transcript: string): string;
|
|
179
|
+
//# sourceMappingURL=eot-classifier-ggml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eot-classifier-ggml.d.ts","sourceRoot":"","sources":["../../../src/services/voice/eot-classifier-ggml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOvE,+DAA+D;AAC/D,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,EACV,gBAAgB,GAChB,eAAe,GACf,mBAAmB,GACnB,+BAA+B,GAC/B,iBAAiB,GACjB,eAAe,CAAC;gBACP,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAKlE;AAMD,kDAAkD;AAClD,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAE/D,2DAA2D;AAC3D,eAAO,MAAM,qCAAqC,sDACE,CAAC;AAErD,gEAAgE;AAChE,eAAO,MAAM,uCAAuC,+CACP,CAAC;AAE9C,mEAAmE;AACnE,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,QAMlD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;CACvB,CAcA;AAqGD,MAAM,WAAW,8BAA8B;IAC9C,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,KAAK,CAKI;gBAEL,IAAI,EAAE,8BAA8B;IAkB1C,KAAK,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD,MAAM,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8DjE,yDAAyD;IACnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,IAAI;YAUE,SAAS;CA8DvB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,oCAAoC,CACzD,IAAI,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CACZ,GACJ,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAsCzC;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic end-of-turn (EOT) classifier — Tier 3 of the three-tier VAD.
|
|
3
|
+
*
|
|
4
|
+
* Tier 1: RMS energy gate (~10 ms)
|
|
5
|
+
* Tier 2: Silero VAD (~32 ms hop)
|
|
6
|
+
* Tier 3: Semantic EOT classifier — P(turn_complete | transcript_so_far)
|
|
7
|
+
*
|
|
8
|
+
* The classifier operates on the partial transcript text emitted by streaming
|
|
9
|
+
* ASR, not on audio. It returns P(done) ∈ [0, 1]. The voice state machine
|
|
10
|
+
* uses it to:
|
|
11
|
+
*
|
|
12
|
+
* P(done) ≥ 0.9 AND silence ≥ 50 ms → commit immediately, skip hangover
|
|
13
|
+
* P(done) ≥ 0.6 AND silence ≥ 20 ms → enter PAUSE_TENTATIVE early (start drafter)
|
|
14
|
+
* P(done) < 0.4 → extend hangover by 50 ms (mid-clause)
|
|
15
|
+
*
|
|
16
|
+
* Three implementations ship:
|
|
17
|
+
*
|
|
18
|
+
* `HeuristicEotClassifier` — deterministic, zero-latency, no model load.
|
|
19
|
+
* This is the baseline; it is always available.
|
|
20
|
+
*
|
|
21
|
+
* `RemoteEotClassifier` — fail-closed HTTP adapter for a real model server.
|
|
22
|
+
* It throws on network/parse errors so callers never mistake a synthetic
|
|
23
|
+
* fallback for a measured turn signal.
|
|
24
|
+
*
|
|
25
|
+
* `Eliza1EotClassifier` — uses the already-loaded text model to compute
|
|
26
|
+
* P(`<|im_end|>` | partial transcript). Zero additional model weights.
|
|
27
|
+
*
|
|
28
|
+
* The GGUF-backed LiveKit detector lives in `eot-classifier-ggml.ts`.
|
|
29
|
+
*
|
|
30
|
+
* Cancellation contract (handshake with VoiceTurnController / R11): the
|
|
31
|
+
* classifier emits a `VoiceTurnSignal` per partial transcript. It NEVER
|
|
32
|
+
* aborts a turn directly — `signal()` is data, not a cancellation. The
|
|
33
|
+
* controller layer above consumes the signal and decides whether to
|
|
34
|
+
* suppress (via `BargeInCancelToken.signal` with reason `"turn-suppressed"`).
|
|
35
|
+
*/
|
|
36
|
+
import type { Eliza1EotScoreResult, Eliza1EotScorerOptions } from "./eliza1-eot-scorer";
|
|
37
|
+
import { Eliza1EotScorer } from "./eliza1-eot-scorer";
|
|
38
|
+
import { FfiEotScorer, type FfiEotScorerOptions } from "./fused-eot-scorer";
|
|
39
|
+
export type VoiceNextSpeaker = "agent" | "user" | "unknown";
|
|
40
|
+
export interface VoiceTurnSignal {
|
|
41
|
+
/** P(user turn complete | transcript/history). */
|
|
42
|
+
endOfTurnProbability: number;
|
|
43
|
+
/**
|
|
44
|
+
* The best turn-taking read from this signal. Text-only EOU models infer
|
|
45
|
+
* this from end-of-turn probability; audio/prosody models can set it
|
|
46
|
+
* directly.
|
|
47
|
+
*/
|
|
48
|
+
nextSpeaker: VoiceNextSpeaker;
|
|
49
|
+
/** Whether the agent should begin a response now. */
|
|
50
|
+
agentShouldSpeak: boolean | null;
|
|
51
|
+
/** Implementation/source name for telemetry and trace records. */
|
|
52
|
+
source: "heuristic" | "livekit-turn-detector" | "eliza-1-drafter" | "remote" | "custom";
|
|
53
|
+
/** Optional model/version identifier for telemetry. */
|
|
54
|
+
model?: string;
|
|
55
|
+
/** Text actually scored after normalization/template truncation. */
|
|
56
|
+
transcript: string;
|
|
57
|
+
/** Wall-clock model latency, excluding caller queueing. */
|
|
58
|
+
latencyMs?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* End-of-turn classifier interface. Both implementations satisfy this contract
|
|
62
|
+
* so callers are backend-agnostic.
|
|
63
|
+
*/
|
|
64
|
+
export interface EotClassifier {
|
|
65
|
+
/** Return P(turn_complete) ∈ [0, 1] for `partialTranscript`. */
|
|
66
|
+
score(partialTranscript: string): Promise<number>;
|
|
67
|
+
/** Return the structured turn signal when the implementation can provide it. */
|
|
68
|
+
signal?(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
69
|
+
}
|
|
70
|
+
export declare function clampProbability(value: number): number;
|
|
71
|
+
export declare function turnSignalFromProbability(args: {
|
|
72
|
+
probability: number;
|
|
73
|
+
transcript: string;
|
|
74
|
+
source: VoiceTurnSignal["source"];
|
|
75
|
+
model?: string;
|
|
76
|
+
latencyMs?: number;
|
|
77
|
+
}): VoiceTurnSignal;
|
|
78
|
+
/**
|
|
79
|
+
* Rules-of-thumb EOT classifier. Delegates to the single canonical heuristic in
|
|
80
|
+
* `@elizaos/shared/voice-eot` — the SAME scorer the UI shell capture path
|
|
81
|
+
* (`packages/ui/src/voice/end-of-turn.ts`) uses, so the two surfaces can never
|
|
82
|
+
* drift. The rules fire in priority order; the first match wins:
|
|
83
|
+
*
|
|
84
|
+
* Priority Signal P(done)
|
|
85
|
+
* -------- ------------------------------------------- -------
|
|
86
|
+
* 1 Trailing ellipsis ("…" / "..") 0.20
|
|
87
|
+
* 2 Sentence-final punctuation (. ! ?) 0.95
|
|
88
|
+
* 3 Question-tag words ("right?", "yeah", …) 0.85
|
|
89
|
+
* 4 Trailing conjunction (and/but/or/because/…) 0.15
|
|
90
|
+
* 5 Last word is a preposition or article 0.20
|
|
91
|
+
* 6 Short utterance (< 3 words, no trail-off) 0.70
|
|
92
|
+
* 7 No signal 0.50
|
|
93
|
+
*/
|
|
94
|
+
export declare class HeuristicEotClassifier implements EotClassifier {
|
|
95
|
+
score(partialTranscript: string): Promise<number>;
|
|
96
|
+
signal(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Resolve which upstream revision a given Eliza-1 tier should bundle.
|
|
100
|
+
* Mobile/small tiers (`2b`, the entry tier) get the English-only variant;
|
|
101
|
+
* desktop/server tiers (`4b`+) get the multilingual variant.
|
|
102
|
+
*
|
|
103
|
+
* Accepts both bare tier ids (`"4b"`) and prefixed catalog ids
|
|
104
|
+
* (`"eliza-1-4b"`).
|
|
105
|
+
*/
|
|
106
|
+
export declare const LIVEKIT_TURN_DETECTOR_EN_REVISION = "v1.2.2-en";
|
|
107
|
+
export declare const LIVEKIT_TURN_DETECTOR_INTL_REVISION = "v0.4.1-intl";
|
|
108
|
+
export declare function turnDetectorRevisionForTier(tierId: string): typeof LIVEKIT_TURN_DETECTOR_EN_REVISION | typeof LIVEKIT_TURN_DETECTOR_INTL_REVISION;
|
|
109
|
+
export interface RemoteEotClassifierOptions {
|
|
110
|
+
/**
|
|
111
|
+
* HTTP endpoint to POST the partial transcript to. Expected to return JSON
|
|
112
|
+
* with a `p_done` field: `{ "p_done": 0.92 }`.
|
|
113
|
+
*
|
|
114
|
+
* Example: LiveKit turn-detector inference endpoint or a custom model server.
|
|
115
|
+
*/
|
|
116
|
+
endpoint: string;
|
|
117
|
+
/**
|
|
118
|
+
* Timeout in milliseconds for each HTTP request. Default 200 ms — the
|
|
119
|
+
* classifier must be faster than the silence hangover it's trying to beat.
|
|
120
|
+
*/
|
|
121
|
+
timeoutMs?: number;
|
|
122
|
+
/** Optional model label for telemetry. */
|
|
123
|
+
model?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Remote EOT classifier. POSTs `{ transcript: string }` to `endpoint`
|
|
127
|
+
* and expects `{ p_done: number }` back.
|
|
128
|
+
*
|
|
129
|
+
* Intended to be wired to a real LiveKit turn-detector HTTP API or a custom
|
|
130
|
+
* model inference server. This adapter fails closed: no fallback score is
|
|
131
|
+
* manufactured on network or parse errors.
|
|
132
|
+
*/
|
|
133
|
+
export declare class RemoteEotClassifier implements EotClassifier {
|
|
134
|
+
private readonly endpoint;
|
|
135
|
+
private readonly timeoutMs;
|
|
136
|
+
private readonly model;
|
|
137
|
+
constructor(opts: RemoteEotClassifierOptions);
|
|
138
|
+
score(partialTranscript: string): Promise<number>;
|
|
139
|
+
signal(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
140
|
+
}
|
|
141
|
+
/** P(done) ≥ this AND silence ≥ EOT_COMMIT_SILENCE_MS → commit immediately. */
|
|
142
|
+
export declare const EOT_COMMIT_THRESHOLD = 0.9;
|
|
143
|
+
/** P(done) ≥ this AND silence ≥ EOT_TENTATIVE_SILENCE_MS → enter PAUSE_TENTATIVE early. */
|
|
144
|
+
export declare const EOT_TENTATIVE_THRESHOLD = 0.6;
|
|
145
|
+
/** P(done) < this → extend hangover by EOT_HANGOVER_EXTENSION_MS. */
|
|
146
|
+
export declare const EOT_MID_CLAUSE_THRESHOLD = 0.4;
|
|
147
|
+
/** Minimum silence (ms) required alongside P ≥ EOT_COMMIT_THRESHOLD to commit. */
|
|
148
|
+
export declare const EOT_COMMIT_SILENCE_MS = 50;
|
|
149
|
+
/** Minimum silence (ms) required alongside P ≥ EOT_TENTATIVE_THRESHOLD to start drafter. */
|
|
150
|
+
export declare const EOT_TENTATIVE_SILENCE_MS = 20;
|
|
151
|
+
/** How many ms to add to the pause hangover when P < EOT_MID_CLAUSE_THRESHOLD. */
|
|
152
|
+
export declare const EOT_HANGOVER_EXTENSION_MS = 50;
|
|
153
|
+
export type { Eliza1EotScoreResult, Eliza1EotScorerOptions };
|
|
154
|
+
/**
|
|
155
|
+
* Eliza-1 EOT classifier. Reuses the already-loaded text model (typically
|
|
156
|
+
* the eliza-1 drafter — same model MTP keeps warm for speculative
|
|
157
|
+
* decoding) to compute P(`<|im_end|>` | partial transcript). Optionally
|
|
158
|
+
* loads a fine-tuned EOT LoRA adapter on top of the base weights — see
|
|
159
|
+
* `packages/training/scripts/turn_detector/` for the training recipe.
|
|
160
|
+
*
|
|
161
|
+
* Unlike the GGUF-backed `LiveKitGgmlTurnDetector`, this classifier ships
|
|
162
|
+
* zero additional model weights — it leans on what's already in RAM.
|
|
163
|
+
*/
|
|
164
|
+
export declare class Eliza1EotClassifier implements EotClassifier {
|
|
165
|
+
private readonly scorer;
|
|
166
|
+
constructor(options: Eliza1EotScorerOptions | {
|
|
167
|
+
scorer: Eliza1EotScorer;
|
|
168
|
+
});
|
|
169
|
+
score(partialTranscript: string): Promise<number>;
|
|
170
|
+
signal(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
171
|
+
dispose(): Promise<void>;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Above this heuristic confidence the heuristic's high-precision syntactic
|
|
175
|
+
* verdict is trusted outright and the model forward pass is skipped. Sentence-
|
|
176
|
+
* final punctuation, question tags, trailing conjunctions, and dangling
|
|
177
|
+
* prepositions all clear this bar (P ≤ 0.2 or ≥ 0.8 → confidence ≥ 0.6); short
|
|
178
|
+
* utterances and the no-signal case fall below it and defer to the model.
|
|
179
|
+
*/
|
|
180
|
+
export declare const COMPOSITE_HEURISTIC_CONFIDENCE_CUTOFF = 0.6;
|
|
181
|
+
/**
|
|
182
|
+
* End-of-turn classifier that blends the fused semantic scorer
|
|
183
|
+
* (P(`<|im_end|>`) over the loaded text model) with the heuristic syntactic
|
|
184
|
+
* rules. The heuristic is NOT a fallback — it is a tuned co-signal: when it is
|
|
185
|
+
* confident (clear punctuation / mid-clause conjunction / dangling preposition)
|
|
186
|
+
* its verdict wins outright and the model pass is skipped; in the ambiguous
|
|
187
|
+
* middle (short utterance, no syntactic cue) the model's semantic judgment
|
|
188
|
+
* dominates, blended by the heuristic's residual confidence. Acoustic
|
|
189
|
+
* silence/VAD timing lives a tier below this (the VAD), so this layer is the
|
|
190
|
+
* pure text-completion read.
|
|
191
|
+
*/
|
|
192
|
+
export declare class CompositeEotClassifier implements EotClassifier {
|
|
193
|
+
private readonly model;
|
|
194
|
+
private readonly heuristic;
|
|
195
|
+
private readonly confidenceCutoff;
|
|
196
|
+
constructor(options: {
|
|
197
|
+
model: FfiEotScorer;
|
|
198
|
+
heuristic?: HeuristicEotClassifier;
|
|
199
|
+
confidenceCutoff?: number;
|
|
200
|
+
});
|
|
201
|
+
private blend;
|
|
202
|
+
score(partialTranscript: string): Promise<number>;
|
|
203
|
+
signal(partialTranscript: string): Promise<VoiceTurnSignal>;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Build a composite EOT classifier backed by the fused FFI scorer, or null when
|
|
207
|
+
* the loaded fused build does not wire the v11 EOT symbol (a pre-v11 library) —
|
|
208
|
+
* the caller then falls back to a heuristic-only classifier.
|
|
209
|
+
*/
|
|
210
|
+
export declare function tryBuildFusedEotClassifier(options: FfiEotScorerOptions): CompositeEotClassifier | null;
|
|
211
|
+
//# sourceMappingURL=eot-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eot-classifier.d.ts","sourceRoot":"","sources":["../../../src/services/voice/eot-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured voice-startup failure.
|
|
3
|
+
*
|
|
4
|
+
* Per `packages/inference/AGENTS.md` §3 + §9 (no defensive code, no
|
|
5
|
+
* log-and-continue), the engine MUST throw one of these when voice mode
|
|
6
|
+
* is requested but cannot start (missing FFI, missing speaker preset,
|
|
7
|
+
* missing fused build, missing required region, manifest mismatch). The
|
|
8
|
+
* runtime then refuses to activate the model — never silently degrades to
|
|
9
|
+
* text-only.
|
|
10
|
+
*
|
|
11
|
+
* Lives in its own module (rather than `engine-bridge.ts`) so the voice
|
|
12
|
+
* sub-modules — `pipeline-impls.ts`, `vad.ts`, `embedding.ts` — can throw
|
|
13
|
+
* it without importing the bridge (which imports them in turn, which
|
|
14
|
+
* would be a cycle).
|
|
15
|
+
*/
|
|
16
|
+
export declare class VoiceStartupError extends Error {
|
|
17
|
+
readonly code: "missing-ffi" | "missing-speaker-preset" | "missing-bundle-root" | "missing-asr-model" | "missing-fused-build" | "blocked-asr-provenance" | "missing-turn-detector" | "already-started" | "not-started" | "invalid-options";
|
|
18
|
+
constructor(code: VoiceStartupError["code"], message: string);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/services/voice/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EACV,aAAa,GACb,wBAAwB,GACxB,qBAAqB,GACrB,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,uBAAuB,GACvB,iBAAiB,GACjB,aAAa,GACb,iBAAiB,CAAC;gBAET,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK5D"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expressive (emotion / singing) inline-tag handling for the voice path.
|
|
3
|
+
*
|
|
4
|
+
* The canonical schema is the **omnivoice-singing inline-tag vocabulary,
|
|
5
|
+
* verbatim** (no SSML, no new format — it is exactly what the fine-tuned
|
|
6
|
+
* `omnivoice-singing` GGUF understands when the tags appear inline in the
|
|
7
|
+
* text passed to `eliza_inference_tts_synthesize` / `/v1/audio/speech`):
|
|
8
|
+
*
|
|
9
|
+
* emotion tags [happy] [sad] [angry] [nervous] [calm] [excited] [whisper]
|
|
10
|
+
* singing tag [singing]
|
|
11
|
+
* preserved [laughter] [sigh] (non-verbals — passed through, not
|
|
12
|
+
* consumed as a scope-setting tag)
|
|
13
|
+
*
|
|
14
|
+
* Tags are *inline* and *scoped*: a tag applies from where it appears to the
|
|
15
|
+
* next tag (or end of text). Mid-sentence shifts are allowed
|
|
16
|
+
* (`"that's [excited] amazing"`). `parseExpressiveTags` segments the text by
|
|
17
|
+
* tag boundaries so the chunker / TTS backend can carry the in-scope emotion
|
|
18
|
+
* with each phrase.
|
|
19
|
+
*
|
|
20
|
+
* Two consumers:
|
|
21
|
+
* - the *singing* TTS GGUF: it parses the tags itself, so the bridge passes
|
|
22
|
+
* the tag-bearing text through (`segment.text` keeps `[happy]` etc. — see
|
|
23
|
+
* `makeTextToSpeechHandler`, which deliberately does NOT strip them).
|
|
24
|
+
* - a *base* TTS GGUF (no `emotion-tags` / `singing` capability): the tags
|
|
25
|
+
* would otherwise be spoken literally, so `stripExpressiveTags` removes
|
|
26
|
+
* them before synthesis. (The model shouldn't have emitted them when the
|
|
27
|
+
* bundle lacks the capability — but defense in depth.)
|
|
28
|
+
*
|
|
29
|
+
* Coordinates with:
|
|
30
|
+
* - `manifest/schema.ts` → `ELIZA_1_VOICE_CAPABILITIES` (`emotion-tags` /
|
|
31
|
+
* `singing` gate whether the prompt instructs the model to emit tags).
|
|
32
|
+
* - WS-4's Stage-1 envelope `emotion` enum field (one-line field-evaluator
|
|
33
|
+
* registration there) — `EXPRESSIVE_EMOTION_ENUM` is the shared value set.
|
|
34
|
+
* - WS-3's `voice_emotion` fine-tune corpus task — both forms (inline tags +
|
|
35
|
+
* the `emotion` field) are populated on voice-mode rows.
|
|
36
|
+
*/
|
|
37
|
+
/** Emotion tags that set the affect scope for the text that follows. */
|
|
38
|
+
export declare const EXPRESSIVE_EMOTION_TAGS: readonly ["happy", "sad", "angry", "nervous", "calm", "excited", "whisper"];
|
|
39
|
+
export type ExpressiveEmotion = (typeof EXPRESSIVE_EMOTION_TAGS)[number];
|
|
40
|
+
/**
|
|
41
|
+
* The Stage-1 envelope `emotion` enum value set (decision #2 in
|
|
42
|
+
* `.swarm/IMPLEMENTATION_PLAN.md` §1 — the optional field-evaluator WS-4 wires
|
|
43
|
+
* registers exactly this enum). `none` is the default / "no expressive cue"
|
|
44
|
+
* value so the field is always present and structured-decode can singleton-fill
|
|
45
|
+
* it. `whisper` is included because it travels the same inline-tag channel even
|
|
46
|
+
* though it is a delivery style rather than an affect.
|
|
47
|
+
*/
|
|
48
|
+
export declare const EXPRESSIVE_EMOTION_ENUM: readonly ["none", "happy", "sad", "angry", "nervous", "calm", "excited", "whisper"];
|
|
49
|
+
export type ExpressiveEmotionEnum = (typeof EXPRESSIVE_EMOTION_ENUM)[number];
|
|
50
|
+
/** The singing tag — a style flag, not an affect; orthogonal to emotion. */
|
|
51
|
+
export declare const EXPRESSIVE_SINGING_TAG: "singing";
|
|
52
|
+
/**
|
|
53
|
+
* Preserved non-verbals — these are *rendered* as sound effects by the TTS,
|
|
54
|
+
* not consumed as scope-setting tags. They pass straight through the bridge.
|
|
55
|
+
*/
|
|
56
|
+
export declare const EXPRESSIVE_NONVERBAL_TAGS: readonly ["laughter", "sigh"];
|
|
57
|
+
export type ExpressiveNonverbal = (typeof EXPRESSIVE_NONVERBAL_TAGS)[number];
|
|
58
|
+
/**
|
|
59
|
+
* The full inline-tag vocabulary (emotion + singing + preserved non-verbals),
|
|
60
|
+
* verbatim — the union the `omnivoice-singing` GGUF understands. Use this for
|
|
61
|
+
* the prompt clause and the `tagLeakage` check.
|
|
62
|
+
*/
|
|
63
|
+
export declare const EXPRESSIVE_TAGS: readonly ["happy", "sad", "angry", "nervous", "calm", "excited", "whisper", "singing", "laughter", "sigh"];
|
|
64
|
+
export type ExpressiveTag = (typeof EXPRESSIVE_TAGS)[number];
|
|
65
|
+
/** `true` iff `tag` (without brackets, case-insensitive) is a legal expressive tag. */
|
|
66
|
+
export declare function isExpressiveTag(tag: string): tag is ExpressiveTag;
|
|
67
|
+
/** `true` iff `value` is a legal `emotion` enum value (incl. `"none"`). */
|
|
68
|
+
export declare function isExpressiveEmotionEnum(value: string): value is ExpressiveEmotionEnum;
|
|
69
|
+
/** One scoped segment of an expressive `replyText`. */
|
|
70
|
+
export interface ExpressiveSegment {
|
|
71
|
+
/**
|
|
72
|
+
* The segment text. For the singing-GGUF path this *keeps* the leading
|
|
73
|
+
* scope-setting emotion/singing tag and any inline non-verbals (the GGUF
|
|
74
|
+
* parses them); for a base-TTS path use `cleanText` / `stripExpressiveTags`.
|
|
75
|
+
*/
|
|
76
|
+
text: string;
|
|
77
|
+
/** The segment text with every recognized expressive tag removed. */
|
|
78
|
+
cleanText: string;
|
|
79
|
+
/** The emotion in scope for this segment (`null` = no emotion cue). */
|
|
80
|
+
emotion: ExpressiveEmotion | null;
|
|
81
|
+
/** Whether `[singing]` is in scope for this segment. */
|
|
82
|
+
singing: boolean;
|
|
83
|
+
/** Preserved non-verbals that appeared inside this segment, in order. */
|
|
84
|
+
nonverbals: ExpressiveNonverbal[];
|
|
85
|
+
}
|
|
86
|
+
export interface ParsedExpressiveText {
|
|
87
|
+
/** The whole `replyText` with every recognized expressive tag removed. */
|
|
88
|
+
cleanText: string;
|
|
89
|
+
/** The text split at every emotion/singing scope boundary. */
|
|
90
|
+
segments: ExpressiveSegment[];
|
|
91
|
+
/** The dominant (first scope-setting) emotion across the text, or `null`. */
|
|
92
|
+
dominantEmotion: ExpressiveEmotion | null;
|
|
93
|
+
/** `true` iff any `[singing]` tag appeared. */
|
|
94
|
+
anySinging: boolean;
|
|
95
|
+
/** `true` iff any recognized expressive tag appeared. */
|
|
96
|
+
hasTags: boolean;
|
|
97
|
+
/** Literal `[token]` occurrences that look like a tag but aren't in the
|
|
98
|
+
* vocabulary (e.g. a hallucinated `[grumpy]`) — recorded, not silently
|
|
99
|
+
* dropped, so the `tagLeakage` check can flag them. */
|
|
100
|
+
unknownTags: string[];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse a `replyText` into expressive segments. A scope-setting tag is an
|
|
104
|
+
* emotion tag or `[singing]`; a `[laughter]` / `[sigh]` is a non-verbal that
|
|
105
|
+
* is recorded on the current segment but does not start a new one. The
|
|
106
|
+
* segment text retains the scope tag (for the singing-GGUF pass-through) and
|
|
107
|
+
* `cleanText` is the same text with all expressive tags removed.
|
|
108
|
+
*
|
|
109
|
+
* Empty / whitespace-only segments between two adjacent scope tags are
|
|
110
|
+
* dropped (a leading `[happy][whisper]hi` → one segment, scope = whisper).
|
|
111
|
+
*/
|
|
112
|
+
export declare function parseExpressiveTags(replyText: string): ParsedExpressiveText;
|
|
113
|
+
/** Strip every recognized expressive tag (emotion / singing / non-verbal)
|
|
114
|
+
* from `text`. Used on a base-TTS path so a literal `[happy]` never reaches
|
|
115
|
+
* the audio. Unknown bracket tokens (`[grumpy]`) are left as-is — they are
|
|
116
|
+
* the model's text, not a tag we recognise. */
|
|
117
|
+
export declare function stripExpressiveTags(text: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Map the dominant emotion (or `null`) to the Stage-1 envelope `emotion` enum
|
|
120
|
+
* value (`null` → `"none"`). Inverse: `EXPRESSIVE_EMOTION_ENUM` minus `"none"`.
|
|
121
|
+
*/
|
|
122
|
+
export declare function emotionToEnum(emotion: ExpressiveEmotion | null): ExpressiveEmotionEnum;
|
|
123
|
+
/** Map the Stage-1 envelope `emotion` enum value back to an emotion (or `null`). */
|
|
124
|
+
export declare function enumToEmotion(value: ExpressiveEmotionEnum | string | null | undefined): ExpressiveEmotion | null;
|
|
125
|
+
/**
|
|
126
|
+
* Candidate labels a connector or explicitly emotion-aware ASR adapter may
|
|
127
|
+
* surface as structured metadata. The local fused ASR path must not be treated
|
|
128
|
+
* as model-native emotion recognition unless that backend explicitly advertises
|
|
129
|
+
* such a field; callers should record heuristic attribution separately.
|
|
130
|
+
*/
|
|
131
|
+
export declare const ASR_EMOTION_LABELS: readonly ["surprise", "calm", "happiness", "sadness", "disgust", "anger", "fear"];
|
|
132
|
+
export type AsrEmotionLabel = (typeof ASR_EMOTION_LABELS)[number];
|
|
133
|
+
/**
|
|
134
|
+
* Explicit mapping from an ASR-perceived emotion label to the tag vocab the
|
|
135
|
+
* generator emits. `whisper` / `singing` are delivery styles, not affects, and
|
|
136
|
+
* are excluded from the fidelity score (scored separately as "style preserved"
|
|
137
|
+
* via the `instruct` round-trip). Labels with no clean tag analogue map to
|
|
138
|
+
* `null` (counted as "no agreement" rather than forced).
|
|
139
|
+
*/
|
|
140
|
+
export declare const ASR_LABEL_TO_EMOTION_TAG: Readonly<Record<AsrEmotionLabel, ExpressiveEmotion | null>>;
|
|
141
|
+
/** Normalize an arbitrary ASR-emitted emotion string (any casing, possibly an
|
|
142
|
+
* adjective form) to an `AsrEmotionLabel` if it matches, else `null`. */
|
|
143
|
+
export declare function normalizeAsrEmotionLabel(raw: string | null | undefined): AsrEmotionLabel | null;
|
|
144
|
+
/** Map an ASR-perceived emotion (raw string) straight to the tag vocab, via
|
|
145
|
+
* `normalizeAsrEmotionLabel` + `ASR_LABEL_TO_EMOTION_TAG`. `null` when it
|
|
146
|
+
* doesn't map. */
|
|
147
|
+
export declare function asrEmotionToTag(raw: string | null | undefined): ExpressiveEmotion | null;
|
|
148
|
+
/**
|
|
149
|
+
* The clause appended to the voice-mode response instruction telling the model
|
|
150
|
+
* it MAY annotate `replyText` with inline expressive tags. Only emit this when
|
|
151
|
+
* `manifest.voice.capabilities` includes `emotion-tags` (don't instruct the
|
|
152
|
+
* model to emit tags a base-TTS bundle will speak literally). `singingAllowed`
|
|
153
|
+
* controls whether `[singing]` is offered (gate on the `singing` capability).
|
|
154
|
+
*/
|
|
155
|
+
export declare function expressiveTagPromptClause(opts?: {
|
|
156
|
+
singingAllowed?: boolean;
|
|
157
|
+
}): string;
|
|
158
|
+
//# sourceMappingURL=expressive-tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressive-tags.d.ts","sourceRoot":"","sources":["../../../src/services/voice/expressive-tags.ts"],"names":[],"mappings":"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"}
|