@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,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimistic-generation policy — Wave 3 W3-9.
|
|
3
|
+
*
|
|
4
|
+
* Decides whether the LM should fire optimistically the moment the turn
|
|
5
|
+
* detector crosses the EOT threshold (before the audio buffer is fully
|
|
6
|
+
* drained), or wait for the full hangover. Per the user spec:
|
|
7
|
+
*
|
|
8
|
+
* > "We want to optimize to start running and checking basically the
|
|
9
|
+
* second there is no audio / voice detected, and then we start
|
|
10
|
+
* optimistically processing, and if the user starts talking again we
|
|
11
|
+
* kill and add to the conversation and start reprocessing."
|
|
12
|
+
*
|
|
13
|
+
* Default heuristic:
|
|
14
|
+
* - Plugged-in (or power state unknown): optimistic = true.
|
|
15
|
+
* - On battery: optimistic = false (the extra forward pass burns
|
|
16
|
+
* joules every false-positive EOT).
|
|
17
|
+
*
|
|
18
|
+
* Callers (notably `VoiceStateMachine`) read `shouldStartOptimisticLm()`
|
|
19
|
+
* each time they consider firing the speculative drafter. The policy can be
|
|
20
|
+
* mutated at runtime via `setOptimisticOverride()` so a Settings UI toggle
|
|
21
|
+
* or a per-session env var can pin the value without restarting the engine.
|
|
22
|
+
*/
|
|
23
|
+
/** Power-source signal. `unknown` is treated as "plugged in" for the
|
|
24
|
+
* default policy (a desktop without battery telemetry). */
|
|
25
|
+
export type PowerSourceState = "plugged-in" | "battery" | "unknown";
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the current power-source state.
|
|
28
|
+
*
|
|
29
|
+
* Production callers (engine bridge) prime the optimistic policy with this
|
|
30
|
+
* once at session start. There is no canonical power-source accessor in
|
|
31
|
+
* `device-tier.ts` (the hardware probe records RAM / GPU / cores but no
|
|
32
|
+
* battery telemetry), so this resolver consults two cheap signals:
|
|
33
|
+
*
|
|
34
|
+
* 1. `ELIZA_VOICE_POWER_SOURCE` env var (`"plugged-in" | "battery" |
|
|
35
|
+
* "unknown"`). Wins outright when set — operators / Settings can pin
|
|
36
|
+
* the policy without restarting the engine.
|
|
37
|
+
* 2. Linux `/sys/class/power_supply` AC online status when available
|
|
38
|
+
* synchronously. Returns `"plugged-in"` when any AC adapter reports
|
|
39
|
+
* `online`, `"battery"` when only batteries are present and none
|
|
40
|
+
* report online, `"unknown"` otherwise.
|
|
41
|
+
*
|
|
42
|
+
* macOS / Windows / mobile go through `"unknown"` here — the desktop probe
|
|
43
|
+
* surfaces those via the Electrobun side and Settings overrides it through
|
|
44
|
+
* (1). The default heuristic (`unknown → enabled`) treats those as
|
|
45
|
+
* plugged-in for the optimistic gate, which is the right default for
|
|
46
|
+
* desktop / dev (battery-aware mobile builds set the override explicitly).
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolvePowerSourceState(): PowerSourceState;
|
|
49
|
+
export interface OptimisticPolicyOptions {
|
|
50
|
+
/**
|
|
51
|
+
* Default value when no override is set. Resolved from the device tier
|
|
52
|
+
* at construction time (per the user spec: true on plugged-in,
|
|
53
|
+
* false on battery). Defaults to `true` when no power signal is given.
|
|
54
|
+
*/
|
|
55
|
+
defaultEnabled?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* The threshold the turn detector's EOT probability must clear before
|
|
58
|
+
* the optimistic LM start fires. Mirrors `EOT_TENTATIVE_THRESHOLD`
|
|
59
|
+
* (the existing default) but is configurable per-policy so tier-aware
|
|
60
|
+
* deployments can tighten it on slower devices.
|
|
61
|
+
*/
|
|
62
|
+
eotThreshold?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface ResolveOptimisticPolicyArgs {
|
|
65
|
+
powerSource?: PowerSourceState;
|
|
66
|
+
/**
|
|
67
|
+
* Explicit override. When set, wins over both the default and the
|
|
68
|
+
* power-source heuristic. Sourced from `voice.optimisticGenerationOnEot`
|
|
69
|
+
* in user settings (Wave 3C).
|
|
70
|
+
*/
|
|
71
|
+
override?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export declare const DEFAULT_OPTIMISTIC_EOT_THRESHOLD = 0.6;
|
|
74
|
+
/**
|
|
75
|
+
* Pure resolver. Takes the power source + an optional override and returns
|
|
76
|
+
* whether optimistic LM start should fire.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveOptimisticPolicyEnabled(args: ResolveOptimisticPolicyArgs): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Mutable runtime policy. The voice state machine asks
|
|
81
|
+
* `policy.shouldStartOptimisticLm(eotProb)` before firing the drafter.
|
|
82
|
+
*
|
|
83
|
+
* Reasoning for a class rather than a free function: at runtime we need
|
|
84
|
+
* the override + the power source to be hot-swappable from Settings or a
|
|
85
|
+
* device-event listener (battery state change) without re-plumbing the
|
|
86
|
+
* machine.
|
|
87
|
+
*/
|
|
88
|
+
export declare class OptimisticGenerationPolicy {
|
|
89
|
+
private overrideValue;
|
|
90
|
+
private powerSource;
|
|
91
|
+
private readonly defaultEnabled;
|
|
92
|
+
private readonly eotThreshold;
|
|
93
|
+
constructor(opts?: OptimisticPolicyOptions);
|
|
94
|
+
/** Update the power source (called by the device-tier observer). */
|
|
95
|
+
setPowerSource(state: PowerSourceState): void;
|
|
96
|
+
/** Set / clear the user override. */
|
|
97
|
+
setOverride(value: boolean | undefined): void;
|
|
98
|
+
/** Resolve "should we be optimistic right now?". */
|
|
99
|
+
enabled(): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Combined gate: the policy must be enabled AND the EOT probability
|
|
102
|
+
* must clear the policy's threshold. This is the canonical check the
|
|
103
|
+
* voice state machine calls before firing the drafter on a partial
|
|
104
|
+
* transcript.
|
|
105
|
+
*/
|
|
106
|
+
shouldStartOptimisticLm(eotProb: number): boolean;
|
|
107
|
+
get threshold(): number;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=optimistic-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimistic-policy.d.ts","sourceRoot":"","sources":["../../../src/services/voice/optimistic-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;4DAC4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,CAyC1D;AAED,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC3C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,2BAA2B,GAC/B,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,IAAI,GAAE,uBAA4B;IAM9C,oEAAoE;IACpE,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI7C,qCAAqC;IACrC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAI7C,oDAAoD;IACpD,OAAO,IAAI,OAAO;IAWlB;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKjD,IAAI,SAAS,IAAI,MAAM,CAEtB;CACD"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimistic-decode-with-rollback controller for the voice loop.
|
|
3
|
+
*
|
|
4
|
+
* IDLE
|
|
5
|
+
* │ speech-start
|
|
6
|
+
* ▼
|
|
7
|
+
* LISTENING
|
|
8
|
+
* │ speech-pause
|
|
9
|
+
* ▼
|
|
10
|
+
* PAUSE_TENTATIVE ── speech-active (within rollback window) ──▶ LISTENING
|
|
11
|
+
* │ ▲
|
|
12
|
+
* │ speech-end (or pause > rollback window) │
|
|
13
|
+
* ▼ │
|
|
14
|
+
* DRAFT_RESPONSE ──── speech-active (within rollback window) ──────┘
|
|
15
|
+
* │ (restore checkpoint, abort drafter)
|
|
16
|
+
* │ commit
|
|
17
|
+
* ▼
|
|
18
|
+
* COMMITTED → IDLE
|
|
19
|
+
*
|
|
20
|
+
* On `speech-pause` we snapshot the slot's KV state (`C1-<turn-id>`) and
|
|
21
|
+
* speculatively start the drafter against the partial transcript so that
|
|
22
|
+
* when the user IS done, the response is already underway. If they resume
|
|
23
|
+
* within the rollback window (~2× pause hangover), we restore the snapshot
|
|
24
|
+
* and abort the speculative draft — net cost is one checkpoint write/read.
|
|
25
|
+
*
|
|
26
|
+
* This module deliberately does NOT modify `turn-controller.ts`,
|
|
27
|
+
* `vad.ts`, `scheduler.ts`, `phrase-chunker.ts`, `barge-in.ts`, `pipeline.ts`,
|
|
28
|
+
* `pipeline-impls.ts`, or `transcriber.ts` — those are owned elsewhere.
|
|
29
|
+
* Instead, the turn controller composes this controller after the upstream
|
|
30
|
+
* llama.cpp merge lands and the feature flag flips.
|
|
31
|
+
*/
|
|
32
|
+
import type { CheckpointClient, CheckpointHandle } from "../checkpoint-client";
|
|
33
|
+
import type { VadEventSource } from "./types";
|
|
34
|
+
/**
|
|
35
|
+
* State of the optimistic-rollback controller. Mirrors the comment-block
|
|
36
|
+
* state machine above; exported so tests and telemetry can assert on it.
|
|
37
|
+
*/
|
|
38
|
+
export type OptimisticRollbackState = "idle" | "listening" | "pause-tentative" | "draft-response" | "committed";
|
|
39
|
+
/**
|
|
40
|
+
* Telemetry event stream. Stays narrow — the controller emits exactly four
|
|
41
|
+
* lifecycle events per turn (save, restore-or-commit, draft-start,
|
|
42
|
+
* draft-abort). Consumers wire these into the existing voice-bench
|
|
43
|
+
* trajectory captures.
|
|
44
|
+
*/
|
|
45
|
+
export interface OptimisticRollbackTelemetry {
|
|
46
|
+
onCheckpointSaved?: (handle: CheckpointHandle, turnId: string) => void;
|
|
47
|
+
onCheckpointRestored?: (handle: CheckpointHandle, turnId: string) => void;
|
|
48
|
+
onSpeculativeDraftStarted?: (turnId: string) => void;
|
|
49
|
+
onSpeculativeDraftAborted?: (turnId: string, reason: AbortReason) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Fired when the controller silently swallows an error from the
|
|
52
|
+
* checkpoint client — surfacing it via telemetry rather than rethrowing
|
|
53
|
+
* keeps a failing checkpoint endpoint from breaking the voice loop. The
|
|
54
|
+
* caller decides whether to flip the feature flag off.
|
|
55
|
+
*/
|
|
56
|
+
onCheckpointError?: (op: "save" | "restore" | "cancel", error: unknown, turnId: string) => void;
|
|
57
|
+
}
|
|
58
|
+
export type AbortReason = "resumed" | "committed" | "shutdown";
|
|
59
|
+
/**
|
|
60
|
+
* Speculative drafter handle. The voice turn controller hands one of these
|
|
61
|
+
* in when starting the drafter so this module can abort it without
|
|
62
|
+
* importing the drafter's internals. `abort()` MUST be idempotent — the
|
|
63
|
+
* controller may call it again on shutdown.
|
|
64
|
+
*/
|
|
65
|
+
export interface SpeculativeDraftHandle {
|
|
66
|
+
abort(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Caller-supplied drafter starter. Returns a handle the controller can
|
|
70
|
+
* abort. Called on entry to `pause-tentative`. The promise must resolve
|
|
71
|
+
* synchronously (or near-synchronously) — the speculative draft runs in
|
|
72
|
+
* the background.
|
|
73
|
+
*/
|
|
74
|
+
export type StartSpeculativeDraft = (partialTranscript: string, turnId: string) => SpeculativeDraftHandle;
|
|
75
|
+
/**
|
|
76
|
+
* Caller-supplied source for the partial transcript captured at the
|
|
77
|
+
* `speech-pause` instant. Kept as a function so the controller doesn't
|
|
78
|
+
* have to hold a reference to the transcriber.
|
|
79
|
+
*/
|
|
80
|
+
export type ReadPartialTranscript = () => string;
|
|
81
|
+
export interface OptimisticRollbackControllerOptions {
|
|
82
|
+
/** The slot id the voice loop is pinned to for this turn. */
|
|
83
|
+
slotId: number;
|
|
84
|
+
/**
|
|
85
|
+
* Per-process feature flag. Defaults to `false` — flip on once the
|
|
86
|
+
* upstream `--ctx-checkpoints` merge lands AND the rollout plan in
|
|
87
|
+
* `docs/eliza-1-optimistic-rollback.md` reaches the desired bucket.
|
|
88
|
+
* Forwards every VAD event to the wrapped state machine when off but
|
|
89
|
+
* never makes a checkpoint REST call.
|
|
90
|
+
*/
|
|
91
|
+
enableOptimisticRollback?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* VAD pause hangover (ms). Default 100 ms (lowered from 220ms; further
|
|
94
|
+
* reduction gated on semantic EOT classifier V2) — matches the voice
|
|
95
|
+
* loop's standard hangover. The rollback window is `2 ×` this value.
|
|
96
|
+
*/
|
|
97
|
+
pauseHangoverMs?: number;
|
|
98
|
+
/** Source of VAD events; usually `VadDetector`. */
|
|
99
|
+
vadSource: VadEventSource;
|
|
100
|
+
client: CheckpointClient;
|
|
101
|
+
startSpeculativeDraft: StartSpeculativeDraft;
|
|
102
|
+
readPartialTranscript: ReadPartialTranscript;
|
|
103
|
+
telemetry?: OptimisticRollbackTelemetry;
|
|
104
|
+
/**
|
|
105
|
+
* Wall-clock function. Injected for tests; defaults to `Date.now`. The
|
|
106
|
+
* controller uses this to enforce the rollback window — if a
|
|
107
|
+
* `speech-active` arrives more than `2 × pauseHangoverMs` after the
|
|
108
|
+
* `speech-pause`, the controller commits rather than restores.
|
|
109
|
+
*/
|
|
110
|
+
now?: () => number;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Optimistic-rollback controller. Subscribes to a `VadEventSource` and
|
|
114
|
+
* drives the checkpoint REST client + a caller-supplied speculative
|
|
115
|
+
* drafter. Idempotent `dispose()` for clean shutdown.
|
|
116
|
+
*/
|
|
117
|
+
export declare class OptimisticRollbackController {
|
|
118
|
+
private state;
|
|
119
|
+
private currentTurnId;
|
|
120
|
+
private pauseTimestampMs;
|
|
121
|
+
private currentCheckpoint;
|
|
122
|
+
private currentDraft;
|
|
123
|
+
private readonly unsubscribe;
|
|
124
|
+
private readonly enabled;
|
|
125
|
+
private readonly pauseHangoverMs;
|
|
126
|
+
private readonly slotId;
|
|
127
|
+
private readonly client;
|
|
128
|
+
private readonly startSpeculativeDraft;
|
|
129
|
+
private readonly readPartialTranscript;
|
|
130
|
+
private readonly telemetry;
|
|
131
|
+
private readonly now;
|
|
132
|
+
private disposed;
|
|
133
|
+
constructor(opts: OptimisticRollbackControllerOptions);
|
|
134
|
+
/** Current state — read-only view for tests / telemetry. */
|
|
135
|
+
getState(): OptimisticRollbackState;
|
|
136
|
+
/**
|
|
137
|
+
* Detach from the VAD source and abort any in-flight speculative draft.
|
|
138
|
+
* Safe to call multiple times.
|
|
139
|
+
*/
|
|
140
|
+
dispose(): void;
|
|
141
|
+
private handleVadEvent;
|
|
142
|
+
private transitionToListening;
|
|
143
|
+
private handleSpeechPause;
|
|
144
|
+
private startDraftIfStillPaused;
|
|
145
|
+
private handleSpeechActive;
|
|
146
|
+
private handleSpeechEnd;
|
|
147
|
+
private rollback;
|
|
148
|
+
private commit;
|
|
149
|
+
private turnIdString;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=optimistic-rollback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimistic-rollback.d.ts","sourceRoot":"","sources":["../../../src/services/voice/optimistic-rollback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,SAAS,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAChC,MAAM,GACN,WAAW,GACX,iBAAiB,GACjB,gBAAgB,GAChB,WAAW,CAAC;AAEf;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC3C,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,yBAAyB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,yBAAyB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1E;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CACnB,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,EACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,KACV,IAAI,CAAC;CACV;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CACnC,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,KACV,sBAAsB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC;AAEjD,MAAM,WAAW,mCAAmC;IACnD,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAOD;;;;GAIG;AACH,qBAAa,4BAA4B;IACxC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,mCAAmC;IAcrD,4DAA4D;IAC5D,QAAQ,IAAI,uBAAuB;IAInC;;;OAGG;IACH,OAAO,IAAI,IAAI;IA+Bf,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,YAAY;CAGpB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2 — LocalAgreement-n streaming-ASR partial stabilizer.
|
|
3
|
+
*
|
|
4
|
+
* Streaming ASR (the fused Gemma ASR build running on partial windows)
|
|
5
|
+
* emits a fresh partial transcript on every
|
|
6
|
+
* audio frame. Each partial can revise tokens the previous partial
|
|
7
|
+
* already showed — "the cat sa" → "the cat sat" → "the cat sat on" is
|
|
8
|
+
* fine, but "the cat sa" → "the cap sat" rewrites earlier text. Handing
|
|
9
|
+
* a TTS chunker every revision causes audible stutter when the agent's
|
|
10
|
+
* drafter starts speaking text the verifier later rejects.
|
|
11
|
+
*
|
|
12
|
+
* The LocalAgreement-n trick: only commit a prefix to downstream once it
|
|
13
|
+
* has appeared identically in `n` consecutive partials. Below that
|
|
14
|
+
* threshold the text is "pending" — visible to UI for confirmation
|
|
15
|
+
* latency, but never sent to the drafter / phrase chunker. n=2 is the
|
|
16
|
+
* sweet spot for voice — large enough to suppress single-frame ASR
|
|
17
|
+
* jitter, small enough that the stable prefix tracks the speaker
|
|
18
|
+
* within ~one extra frame.
|
|
19
|
+
*
|
|
20
|
+
* Wiring: the streaming-ASR adapter calls `feed(partial)` per frame; the
|
|
21
|
+
* `stable` portion is what flows into `splitTranscriptToTokens` and the
|
|
22
|
+
* drafter. `pending` is suffix-only, fed to UI for visual feedback. The
|
|
23
|
+
* stabilizer is feature-flagged off until the streaming-ASR backend is
|
|
24
|
+
* wired (see `voice/pipeline.ts`'s `usePartialStabilizer`).
|
|
25
|
+
*
|
|
26
|
+
* No `any`, no fallbacks: a malformed partial (e.g. an empty string)
|
|
27
|
+
* collapses the stable prefix to whatever the agreement window still
|
|
28
|
+
* supports — this is correctness, not a swallow.
|
|
29
|
+
*/
|
|
30
|
+
export interface PartialStabilizerOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Number of consecutive identical partials a token has to appear in
|
|
33
|
+
* before it migrates from `pending` → `stable`. Default 2 (the
|
|
34
|
+
* LocalAgreement-2 setting that the streaming-ASR literature finds
|
|
35
|
+
* close to optimal for English voice input).
|
|
36
|
+
*/
|
|
37
|
+
agreementCount?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface StabilizerOutput {
|
|
40
|
+
/** The agreed-on prefix — safe to hand the drafter / phrase chunker. */
|
|
41
|
+
stable: string;
|
|
42
|
+
/**
|
|
43
|
+
* The suffix still awaiting `n` matching partials — surface in UI but
|
|
44
|
+
* do not commit. Concatenating `stable + pending` reconstructs the
|
|
45
|
+
* latest raw partial.
|
|
46
|
+
*/
|
|
47
|
+
pending: string;
|
|
48
|
+
}
|
|
49
|
+
export declare class PartialStabilizer {
|
|
50
|
+
private readonly agreementCount;
|
|
51
|
+
/**
|
|
52
|
+
* The most recent partials, oldest first. We only need the last
|
|
53
|
+
* `agreementCount` entries — the agreed prefix is the intersection of
|
|
54
|
+
* all of them. Length 0 before any feed.
|
|
55
|
+
*/
|
|
56
|
+
private history;
|
|
57
|
+
/** The longest committed stable prefix so far. Monotonically grows. */
|
|
58
|
+
private committed;
|
|
59
|
+
constructor(options?: PartialStabilizerOptions);
|
|
60
|
+
/**
|
|
61
|
+
* Feed the latest streaming-ASR partial. Returns the stable / pending
|
|
62
|
+
* split. The stable prefix is monotonically non-decreasing across calls
|
|
63
|
+
* — once a span has been agreed `n` times it stays committed even if a
|
|
64
|
+
* later partial briefly disagrees (the ASR will catch up; rolling back
|
|
65
|
+
* would cause downstream stutter).
|
|
66
|
+
*/
|
|
67
|
+
feed(partial: string): StabilizerOutput;
|
|
68
|
+
/** The current committed stable prefix (read-only view). */
|
|
69
|
+
stable(): string;
|
|
70
|
+
/** Clear all history. Call at utterance boundaries. */
|
|
71
|
+
reset(): void;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=partial-stabilizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial-stabilizer.d.ts","sourceRoot":"","sources":["../../../src/services/voice/partial-stabilizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,WAAW,wBAAwB;IACxC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAChC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAgBD,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAgB;IAC/B,uEAAuE;IACvE,OAAO,CAAC,SAAS,CAAM;gBAEX,OAAO,GAAE,wBAA6B;IAUlD;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAoCvC,4DAA4D;IAC5D,MAAM,IAAI,MAAM;IAIhB,uDAAuD;IACvD,KAAK,IAAI,IAAI;CAIb"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phoneme tokenizer interface used by the IPA-mode phrase chunker.
|
|
3
|
+
*
|
|
4
|
+
* The chunker consumes a stream of accepted text tokens and re-emits them
|
|
5
|
+
* as sub-phrase chunks at phoneme boundaries. This lets TTS start
|
|
6
|
+
* synthesizing partial phrases earlier than the punctuation-only mode, at
|
|
7
|
+
* the cost of slightly less prosody coherence per chunk.
|
|
8
|
+
*
|
|
9
|
+
* The default tokenizer is synchronous because the chunker runs in the
|
|
10
|
+
* accepted-token hot path. Full espeak-ng / phonemizer integrations can
|
|
11
|
+
* implement this interface by resolving their native or package dependency
|
|
12
|
+
* before constructing the scheduler.
|
|
13
|
+
*/
|
|
14
|
+
export interface Phoneme {
|
|
15
|
+
/** IPA symbol(s) for this phoneme. */
|
|
16
|
+
ipa: string;
|
|
17
|
+
/** Index of the source `TextToken` this phoneme came from. Used by the
|
|
18
|
+
* chunker to map sub-phrases back to token-index ranges so that the
|
|
19
|
+
* rollback queue can still drop the right audio on a verifier reject. */
|
|
20
|
+
sourceTokenIndex: number;
|
|
21
|
+
}
|
|
22
|
+
export interface PhonemeTokenizer {
|
|
23
|
+
/** Stable tokenizer name, used for logging and cache keys. */
|
|
24
|
+
readonly name: string;
|
|
25
|
+
/** Relative quality signal for telemetry and debugging. */
|
|
26
|
+
readonly quality: "ipa" | "approximate";
|
|
27
|
+
/**
|
|
28
|
+
* Tokenize a single text token's text into phonemes. The chunker calls
|
|
29
|
+
* this once per accepted token; the tokenizer returns the phonemes for
|
|
30
|
+
* that token only. Returning an empty array is legal (e.g. whitespace
|
|
31
|
+
* tokens) and is treated as "no phoneme boundary added by this token".
|
|
32
|
+
*/
|
|
33
|
+
tokenize(text: string, sourceTokenIndex: number): readonly Phoneme[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Synchronous English IPA approximation for phrase chunking.
|
|
37
|
+
*
|
|
38
|
+
* This is not a pronunciation dictionary; it is a deterministic tokenizer
|
|
39
|
+
* whose output is close enough for boundary counting and rollback range
|
|
40
|
+
* mapping. Deployments that need accent-accurate phonemization can inject a
|
|
41
|
+
* higher-quality `PhonemeTokenizer` built around espeak-ng or phonemizer.
|
|
42
|
+
*/
|
|
43
|
+
export declare class RuleBasedEnglishPhonemeTokenizer implements PhonemeTokenizer {
|
|
44
|
+
readonly name = "RuleBasedEnglishPhonemeTokenizer";
|
|
45
|
+
readonly quality: "approximate";
|
|
46
|
+
tokenize(text: string, sourceTokenIndex: number): readonly Phoneme[];
|
|
47
|
+
}
|
|
48
|
+
export declare function createDefaultPhonemeTokenizer(): PhonemeTokenizer;
|
|
49
|
+
//# sourceMappingURL=phoneme-tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phoneme-tokenizer.d.ts","sourceRoot":"","sources":["../../../src/services/voice/phoneme-tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,OAAO;IACvB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ;;8EAE0E;IAC1E,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,aAAa,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,CAAC;CACrE;AA2FD;;;;;;;GAOG;AACH,qBAAa,gCAAiC,YAAW,gBAAgB;IACxE,QAAQ,CAAC,IAAI,sCAAsC;IACnD,QAAQ,CAAC,OAAO,EAAG,aAAa,CAAU;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE;CAepE;AAED,wBAAgB,6BAA6B,IAAI,gBAAgB,CAEhE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface CachedPhraseAudio {
|
|
2
|
+
text: string;
|
|
3
|
+
pcm: Float32Array;
|
|
4
|
+
sampleRate: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Canonical seed list for the voice phrase cache: short openers, fillers, and
|
|
8
|
+
* acknowledgements the assistant emits constantly. Pre-synthesizing these and
|
|
9
|
+
* holding their PCM in `PhraseCache` removes the TTS forward pass from the
|
|
10
|
+
* critical path for the most common first utterances — `dispatchPhrase` hits
|
|
11
|
+
* the cache and writes audio to the ring buffer on the same tick.
|
|
12
|
+
*
|
|
13
|
+
* Used by:
|
|
14
|
+
* - the preset generator (`scripts/voice-preset/build-default-voice-preset.mjs`),
|
|
15
|
+
* which synthesizes these against a real OmniVoice TTS backend and writes
|
|
16
|
+
* the PCM into `cache/voice-preset-default.bin` — the seeded source of truth.
|
|
17
|
+
* - `EngineVoiceBridge.start()` indirectly: the bundle's preset ships these
|
|
18
|
+
* phrases with their PCM, which `PhraseCache.seed(...)` loads at startup.
|
|
19
|
+
* - the idle-time auto-prewarm hook (`EngineVoiceBridge.prewarmIdlePhrases`),
|
|
20
|
+
* which only runs when a real TTS backend is present — never against the
|
|
21
|
+
* silent backend (caching zeros is not a phrase cache).
|
|
22
|
+
* - the first-audio filler (`FIRST_AUDIO_FILLERS` is a subset).
|
|
23
|
+
*
|
|
24
|
+
* Entries are kept here in canonical form (lowercase, single-spaced, trimmed)
|
|
25
|
+
* so the preset generator and the runtime agree byte-for-byte on the keys.
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_PHRASE_CACHE_SEED: ReadonlyArray<string>;
|
|
28
|
+
/**
|
|
29
|
+
* The subset of `DEFAULT_PHRASE_CACHE_SEED` suitable to play the instant VAD
|
|
30
|
+
* fires `speech-start`, masking first-token latency (AGENTS.md §4 / H4). Kept
|
|
31
|
+
* short and uncommitted — anything that takes a stance ("of course") is
|
|
32
|
+
* excluded so the filler never contradicts the eventual reply. The first
|
|
33
|
+
* entry found in the phrase cache wins.
|
|
34
|
+
*/
|
|
35
|
+
export declare const FIRST_AUDIO_FILLERS: ReadonlyArray<string>;
|
|
36
|
+
export interface PhraseCacheOptions {
|
|
37
|
+
/** Maximum distinct phrase texts retained. Older non-accessed entries
|
|
38
|
+
* are evicted first. */
|
|
39
|
+
maxEntries?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Opportunistic live-cache guardrail. Voice mode primarily benefits from
|
|
42
|
+
* cached acknowledgements and first sentence fragments; longer text is less
|
|
43
|
+
* likely to repeat and can evict useful hot phrases.
|
|
44
|
+
*/
|
|
45
|
+
maxEstimatedTokensPerEntry?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Guardrail for live opportunistic caching. Long-form direct TTS can be
|
|
48
|
+
* megabytes of PCM and is not a good phrase-cache resident.
|
|
49
|
+
*/
|
|
50
|
+
maxPcmSamplesPerEntry?: number;
|
|
51
|
+
}
|
|
52
|
+
export declare function canonicalizePhraseText(text: string): string;
|
|
53
|
+
export declare function estimatePhraseTokenCount(text: string): number;
|
|
54
|
+
export declare class PhraseCache {
|
|
55
|
+
private readonly entries;
|
|
56
|
+
private readonly maxEntries;
|
|
57
|
+
private readonly maxEstimatedTokensPerEntry;
|
|
58
|
+
private readonly maxPcmSamplesPerEntry;
|
|
59
|
+
constructor(opts?: PhraseCacheOptions);
|
|
60
|
+
put(entry: CachedPhraseAudio): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Pre-populate the cache from a voice-preset seed list. Texts are stored
|
|
63
|
+
* verbatim — callers (the format reader) are responsible for canonicalizing
|
|
64
|
+
* before serialization, but we re-canonicalize on insert to be safe.
|
|
65
|
+
*/
|
|
66
|
+
seed(entries: ReadonlyArray<{
|
|
67
|
+
text: string;
|
|
68
|
+
pcm: Float32Array;
|
|
69
|
+
sampleRate: number;
|
|
70
|
+
}>): void;
|
|
71
|
+
get(text: string): CachedPhraseAudio | undefined;
|
|
72
|
+
has(text: string): boolean;
|
|
73
|
+
size(): number;
|
|
74
|
+
private evictOverflow;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=phrase-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase-cache.d.ts","sourceRoot":"","sources":["../../../src/services/voice/phrase-cache.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,YAAY,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC,MAAM,CAwB3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAMrD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC;4BACwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7D;AAMD,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAEnC,IAAI,GAAE,kBAAuB;IAoBzC,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAetC;;;;OAIG;IACH,IAAI,CACH,OAAO,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,YAAY,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACnB,CAAC,GACA,IAAI;IAUP,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAShD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,aAAa;CAOrB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { PhonemeTokenizer } from "./phoneme-tokenizer";
|
|
2
|
+
import type { AcceptedToken, Phrase, PhraseChunkerConfig, TextToken } from "./types";
|
|
3
|
+
/** Wall-clock source the chunker uses. Tests inject a deterministic clock. */
|
|
4
|
+
export type ClockMs = () => number;
|
|
5
|
+
export declare class PhraseChunker {
|
|
6
|
+
private buffer;
|
|
7
|
+
private nextPhraseId;
|
|
8
|
+
private readonly terminators;
|
|
9
|
+
private readonly chunkOn;
|
|
10
|
+
private readonly phonemesPerChunk;
|
|
11
|
+
private readonly maxTokensPerPhrase;
|
|
12
|
+
private readonly tokenizer;
|
|
13
|
+
private phonemeCount;
|
|
14
|
+
/**
|
|
15
|
+
* T3 — time-budget flush. `firstTokenAtMs` is captured on the first
|
|
16
|
+
* `push()` after an empty buffer; once `clock() - firstTokenAtMs >=
|
|
17
|
+
* maxAccumulationMs` the chunker force-flushes even without a
|
|
18
|
+
* punctuation / phoneme / cap boundary. `maxAccumulationMs <= 0`
|
|
19
|
+
* disables the time budget.
|
|
20
|
+
*/
|
|
21
|
+
private readonly maxAccumulationMs;
|
|
22
|
+
/** Shorter budget applied only while no phrase has flushed yet this reply. */
|
|
23
|
+
private readonly firstPhraseMaxAccumulationMs;
|
|
24
|
+
private readonly clock;
|
|
25
|
+
private firstTokenAtMs;
|
|
26
|
+
/** Phrases emitted since the last {@link reset}; gates the first-phrase budget. */
|
|
27
|
+
private phrasesEmitted;
|
|
28
|
+
constructor(config: PhraseChunkerConfig, tokenizer?: PhonemeTokenizer | null, clock?: ClockMs);
|
|
29
|
+
push(token: AcceptedToken): Phrase | null;
|
|
30
|
+
/** Active time budget: the shorter first-phrase budget until the reply's
|
|
31
|
+
* first phrase has flushed, then the full budget. */
|
|
32
|
+
private currentBudgetMs;
|
|
33
|
+
/**
|
|
34
|
+
* T3 — caller-driven check. Returns a phrase when the time budget has
|
|
35
|
+
* elapsed for the current buffer, otherwise null. The scheduler polls
|
|
36
|
+
* this from a `setTimeout` so even a producer that goes silent before
|
|
37
|
+
* pushing the next token still gets its in-flight phrase flushed.
|
|
38
|
+
*/
|
|
39
|
+
flushIfTimeBudgetExceeded(): Phrase | null;
|
|
40
|
+
/**
|
|
41
|
+
* T3 — milliseconds remaining until the time budget elapses for the
|
|
42
|
+
* current buffer. Negative when the budget has already been exceeded;
|
|
43
|
+
* `Number.POSITIVE_INFINITY` when the buffer is empty or the budget is
|
|
44
|
+
* disabled. Callers compute their flush timer off this.
|
|
45
|
+
*/
|
|
46
|
+
msUntilTimeBudget(): number;
|
|
47
|
+
flushPending(): Phrase | null;
|
|
48
|
+
/**
|
|
49
|
+
* Drop buffered tokens that have not flushed whose token index is ≥
|
|
50
|
+
* `fromIndex`. Used by the pipeline's rollback path: when the target
|
|
51
|
+
* verifier rejects a draft tail, any draft tokens still sitting in the
|
|
52
|
+
* chunker's buffer before phrase packing MUST be discarded so
|
|
53
|
+
* the verifier's correction does not get glued onto stale text.
|
|
54
|
+
* Phonemes are recounted from scratch over what remains.
|
|
55
|
+
*/
|
|
56
|
+
dropPendingFrom(fromIndex: number): void;
|
|
57
|
+
reset(): void;
|
|
58
|
+
private endsWithTerminator;
|
|
59
|
+
private flushAs;
|
|
60
|
+
}
|
|
61
|
+
export declare function chunkTokens(tokens: TextToken[], config: PhraseChunkerConfig, acceptedAt?: number, tokenizer?: PhonemeTokenizer | null): Phrase[];
|
|
62
|
+
//# sourceMappingURL=phrase-chunker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase-chunker.d.ts","sourceRoot":"","sources":["../../../src/services/voice/phrase-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EACX,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,SAAS,EACT,MAAM,SAAS,CAAC;AA8DjB,8EAA8E;AAC9E,MAAM,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;AAInC,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,YAAY,CAAK;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAS;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,cAAc,CAAK;IAC3B,mFAAmF;IACnF,OAAO,CAAC,cAAc,CAAK;gBAG1B,MAAM,EAAE,mBAAmB,EAC3B,SAAS,GAAE,gBAAgB,GAAG,IAAW,EACzC,KAAK,GAAE,OAAuB;IAgC/B,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;IAmCzC;yDACqD;IACrD,OAAO,CAAC,eAAe;IAMvB;;;;;OAKG;IACH,yBAAyB,IAAI,MAAM,GAAG,IAAI;IAU1C;;;;;OAKG;IACH,iBAAiB,IAAI,MAAM;IAO3B,YAAY,IAAI,MAAM,GAAG,IAAI;IAK7B;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAexC,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,OAAO;CAkBf;AAED,wBAAgB,WAAW,CAC1B,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,SAAI,EACd,SAAS,GAAE,gBAAgB,GAAG,IAAW,GACvC,MAAM,EAAE,CAUV"}
|