@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concrete implementations of the `VoicePipeline` seams (`pipeline.ts`).
|
|
3
|
+
*
|
|
4
|
+
* `pipeline.ts` defines two interfaces — `DraftProposer`, `TargetVerifier`
|
|
5
|
+
* — plus the ASR contract (it consumes the live `StreamingTranscriber`
|
|
6
|
+
* from `voice/types.ts` directly) and an overlapped scheduler that drives
|
|
7
|
+
* the fused mic→speech graph from `packages/inference/AGENTS.md` §4. This
|
|
8
|
+
* module fills those interfaces against the live runtime:
|
|
9
|
+
*
|
|
10
|
+
* - `MissingAsrTranscriber` — a `StreamingTranscriber` that hard-fails
|
|
11
|
+
* when no ASR backend is available (AGENTS.md §3 — no silent cloud
|
|
12
|
+
* fallback). The bridge's `resolveTranscriber()` returns this instead
|
|
13
|
+
* of throwing eagerly so the failure surfaces at turn time.
|
|
14
|
+
* - `MtpDraftProposer` — proposes a small MTP draft window from the
|
|
15
|
+
* running in-process llama.cpp runtime; honours `cancel.cancelled`
|
|
16
|
+
* between kernel ticks.
|
|
17
|
+
* - `MtpTargetVerifier` — verifies against the text model's KV cache
|
|
18
|
+
* and consumes exact verifier accept/reject events when the runtime
|
|
19
|
+
* emits them.
|
|
20
|
+
*
|
|
21
|
+
* Hard-fail discipline (AGENTS.md §3 + §9): a missing fused ASR region in
|
|
22
|
+
* voice mode is a thrown `VoiceStartupError`, never a silent cloud
|
|
23
|
+
* fallback, never log-and-continue.
|
|
24
|
+
*
|
|
25
|
+
* Why a separate file from `pipeline.ts`: `pipeline.ts` stays
|
|
26
|
+
* dependency-light (it is the streaming contract, importable by text-only
|
|
27
|
+
* callers). The runtime wiring lives here so
|
|
28
|
+
* the contract module does not drag it in.
|
|
29
|
+
*/
|
|
30
|
+
import type { GenerateArgs } from "../backend";
|
|
31
|
+
import { type DraftProposer, type TargetVerifier } from "./pipeline";
|
|
32
|
+
import type { PcmFrame, StreamingTranscriber, TextToken, TranscriptUpdate, VerifierStreamEvent } from "./types";
|
|
33
|
+
/**
|
|
34
|
+
* A `StreamingTranscriber` that hard-fails: used when no ASR backend is
|
|
35
|
+
* available (no fused streaming decoder, no fused batch decoder, no
|
|
36
|
+
* bundled ASR region) but a voice turn was requested. AGENTS.md §3 —
|
|
37
|
+
* missing required voice backend in voice mode is a thrown
|
|
38
|
+
* `VoiceStartupError`, never a silent fallback. The bridge returns this
|
|
39
|
+
* from `resolveTranscriber()` so the failure surfaces when the pipeline
|
|
40
|
+
* actually feeds audio rather than at bridge construction.
|
|
41
|
+
*/
|
|
42
|
+
export declare class MissingAsrTranscriber implements StreamingTranscriber {
|
|
43
|
+
private readonly reason;
|
|
44
|
+
constructor(reason: string);
|
|
45
|
+
feed(_frame: PcmFrame): void;
|
|
46
|
+
flush(): Promise<TranscriptUpdate>;
|
|
47
|
+
on(): () => void;
|
|
48
|
+
dispose(): void;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Minimal surface of the running MTP text runtime the draft/verify
|
|
52
|
+
* adapters need. Kept structural so tests can pass a fake without
|
|
53
|
+
* standing up a real runtime.
|
|
54
|
+
*/
|
|
55
|
+
export interface MtpTextRunner {
|
|
56
|
+
/** True when MTP speculative decoding is enabled. */
|
|
57
|
+
hasDrafter(): boolean;
|
|
58
|
+
generateWithVerifierEvents(args: GenerateArgs & {
|
|
59
|
+
onVerifierEvent: (event: VerifierStreamEvent) => void | Promise<void>;
|
|
60
|
+
}): Promise<{
|
|
61
|
+
text: string;
|
|
62
|
+
}>;
|
|
63
|
+
}
|
|
64
|
+
/** Adapt a local-inference backend onto `MtpTextRunner`. */
|
|
65
|
+
export declare function mtpTextRunner(runner: {
|
|
66
|
+
mtpEnabled(): boolean;
|
|
67
|
+
generateWithUsage(args: GenerateArgs & {
|
|
68
|
+
onVerifierEvent: (event: VerifierStreamEvent) => void | Promise<void>;
|
|
69
|
+
}): Promise<{
|
|
70
|
+
text: string;
|
|
71
|
+
}>;
|
|
72
|
+
}): MtpTextRunner;
|
|
73
|
+
/**
|
|
74
|
+
* `DraftProposer` over native MTP. The runtime draft window already bounds
|
|
75
|
+
* proposals; this adapter additionally
|
|
76
|
+
* clamps to the pipeline's `maxDraft` and stops early on
|
|
77
|
+
* `cancel.cancelled`. GPU dispatch is N=1 (the fork's voice profile
|
|
78
|
+
* disables command-buffer batching — ledger §2 "Keep voice dispatch
|
|
79
|
+
* unbatched") so a barge-in lands at the next kernel boundary.
|
|
80
|
+
*
|
|
81
|
+
* Until the fork exposes a "draft only, return the proposed tokens"
|
|
82
|
+
* endpoint, the proposer issues a short low-temperature completion
|
|
83
|
+
* (`maxTokens = maxDraft`) and treats the produced tokens as the draft
|
|
84
|
+
* window. The verifier then re-checks them against the target's KV — the
|
|
85
|
+
* standard speculative-decoding contract, just with the draft sourced
|
|
86
|
+
* from the same server.
|
|
87
|
+
*/
|
|
88
|
+
export declare class MtpDraftProposer implements DraftProposer {
|
|
89
|
+
private readonly runner;
|
|
90
|
+
constructor(runner: MtpTextRunner);
|
|
91
|
+
propose(args: {
|
|
92
|
+
prefix: ReadonlyArray<TextToken>;
|
|
93
|
+
maxDraft: number;
|
|
94
|
+
cancel: {
|
|
95
|
+
cancelled: boolean;
|
|
96
|
+
};
|
|
97
|
+
}): Promise<TextToken[]>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `TargetVerifier` over the text model via MTP. Runs one
|
|
101
|
+
* autoregressive verify step against the runtime KV cache: it sends the
|
|
102
|
+
* accepted prefix and reads back the model's own continuation. The
|
|
103
|
+
* leading tokens that match the supplied `draft` are "accepted from
|
|
104
|
+
* draft"; the first mismatch is the correction; the model's `done` /
|
|
105
|
+
* stop is propagated.
|
|
106
|
+
*
|
|
107
|
+
* When the native fork emits exact verifier reject ranges, the
|
|
108
|
+
* `onVerifierEvent` callback already carries `kind: "reject"` events with
|
|
109
|
+
* the rejected token positions — this adapter records both and trusts the
|
|
110
|
+
* server's accept/reject split rather than re-deriving it.
|
|
111
|
+
*/
|
|
112
|
+
export declare class MtpTargetVerifier implements TargetVerifier {
|
|
113
|
+
private readonly runner;
|
|
114
|
+
private readonly maxStep;
|
|
115
|
+
constructor(runner: MtpTextRunner, opts?: {
|
|
116
|
+
maxStep?: number;
|
|
117
|
+
});
|
|
118
|
+
verify(args: {
|
|
119
|
+
prefix: ReadonlyArray<TextToken>;
|
|
120
|
+
draft: ReadonlyArray<TextToken>;
|
|
121
|
+
cancel: {
|
|
122
|
+
cancelled: boolean;
|
|
123
|
+
};
|
|
124
|
+
}): Promise<{
|
|
125
|
+
accepted: TextToken[];
|
|
126
|
+
done: boolean;
|
|
127
|
+
}>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Bridge a `{cancelled: boolean}` flag (the pipeline's cancellation
|
|
131
|
+
* primitive — checked between kernel ticks) onto an `AbortSignal` so the
|
|
132
|
+
* local generation aborts when a barge-in fires.
|
|
133
|
+
*
|
|
134
|
+
* L6 — event-driven cancellation. The cancel token may expose an
|
|
135
|
+
* `onCancel(listener)` hook (set by the scheduler / pipeline when it
|
|
136
|
+
* wires the token up); when present, we fire `controller.abort()`
|
|
137
|
+
* synchronously from that hook and skip polling entirely. When the
|
|
138
|
+
* token is the plain `{cancelled: boolean}` POJO with no hook, we fall
|
|
139
|
+
* back to a coarse poll so a barge-in still lands in bounded time —
|
|
140
|
+
* but the hook-driven path is what voice barge-ins use in production.
|
|
141
|
+
*/
|
|
142
|
+
export interface CancelTokenWithSignal {
|
|
143
|
+
cancelled: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Optional hook the token's owner fires synchronously when `cancelled`
|
|
146
|
+
* flips from false to true. The listener returns nothing; calling it
|
|
147
|
+
* after `cancelled` has already been set is a harmless no-op.
|
|
148
|
+
*/
|
|
149
|
+
onCancel?: (listener: () => void) => () => void;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=pipeline-impls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-impls.d.ts","sourceRoot":"","sources":["../../../src/services/voice/pipeline-impls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EACN,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACX,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,SAAS,CAAC;AAMjB;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,YAAW,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAC3C,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAGtB,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAGxC,EAAE,IAAI,MAAM,IAAI;IAGhB,OAAO,IAAI,IAAI;CACf;AAMD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC7B,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC;IACtB,0BAA0B,CACzB,IAAI,EAAE,YAAY,GAAG;QACpB,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtE,GACC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7B;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACrC,UAAU,IAAI,OAAO,CAAC;IACtB,iBAAiB,CAChB,IAAI,EAAE,YAAY,GAAG;QACpB,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtE,GACC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7B,GAAG,aAAa,CAUhB;AAaD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,EAAE,aAAa;IAI3B,OAAO,CAAC,IAAI,EAAE;QACnB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CA6BxB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa,EAAE,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;IAK5D,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CA2CrD;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAChD"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipelined parallel-generation scheduler — the fused mic→speech graph
|
|
3
|
+
* from `packages/inference/AGENTS.md` §4:
|
|
4
|
+
*
|
|
5
|
+
* mic / file → ASR → text tokens
|
|
6
|
+
* ↓
|
|
7
|
+
* scheduler ──→ MTP drafter (proposes N tokens)
|
|
8
|
+
* ∥ (overlap, not sequential)
|
|
9
|
+
* target verifier (text model)
|
|
10
|
+
* ↓
|
|
11
|
+
* accepted tokens → phrase chunker
|
|
12
|
+
* ↓ ↘
|
|
13
|
+
* speaker preset (cached) rollback queue
|
|
14
|
+
* ↓ ↙
|
|
15
|
+
* OmniVoice TTS ←── on-reject: cancel chunk
|
|
16
|
+
* ↓
|
|
17
|
+
* PCM ring buffer → audio out
|
|
18
|
+
*
|
|
19
|
+
* The headline contract: **the moment ASR emits its last token, the
|
|
20
|
+
* MTP drafter starts drafting AND the target starts verifying — they
|
|
21
|
+
* overlap.** Drafter speculation N tokens ahead happens concurrently
|
|
22
|
+
* with the target verifying the previous window; accepted tokens are
|
|
23
|
+
* handed to the phrase chunker within the same scheduler tick.
|
|
24
|
+
*
|
|
25
|
+
* GPU command buffers stay N=1 (no command-buffer batching for voice)
|
|
26
|
+
* so a barge-in cancel lands at the next kernel boundary, not after a
|
|
27
|
+
* batch flush.
|
|
28
|
+
*
|
|
29
|
+
* Why this lives next to `VoiceScheduler` and not inside it: the
|
|
30
|
+
* scheduler owns the *audio* side (chunker → TTS → ring buffer →
|
|
31
|
+
* rollback → barge-in). This module owns the *text-generation* side
|
|
32
|
+
* (audio source → ASR → drafter∥verifier loop) and feeds accepted /
|
|
33
|
+
* rejected ranges into the scheduler. Keeping them separate keeps the
|
|
34
|
+
* scheduler usable from text-only callers (which reach the same nodes
|
|
35
|
+
* via the same scheduler — AGENTS.md §4) without an ASR/drafter
|
|
36
|
+
* dependency.
|
|
37
|
+
*/
|
|
38
|
+
import { PartialStabilizer } from "./partial-stabilizer";
|
|
39
|
+
import type { VoiceScheduler } from "./scheduler";
|
|
40
|
+
import type { StreamingTranscriber, TextToken, TranscriptionAudio, VerifierStreamEvent } from "./types";
|
|
41
|
+
/**
|
|
42
|
+
* Split a transcript string into contiguous text tokens. The fused ASR
|
|
43
|
+
* tokenizer is shared with the text backbone (AGENTS.md §1 — zero
|
|
44
|
+
* re-tokenization), so the pipeline only needs *contiguous* token
|
|
45
|
+
* indices, not the model's exact subword boundaries; whitespace-aware
|
|
46
|
+
* word chunking is the closest stable approximation when only surface
|
|
47
|
+
* text is available. Empty input yields no tokens.
|
|
48
|
+
*
|
|
49
|
+
* `tokenIds`, when supplied, are the text-model vocabulary ids the fused
|
|
50
|
+
* ASR decoder emitted for `transcript`. When the lengths line up they are
|
|
51
|
+
* attached as `TextToken.id` so a downstream in-process handoff can skip
|
|
52
|
+
* re-tokenization; otherwise (mismatch — the surface split disagrees with
|
|
53
|
+
* the decoder's subword boundaries) the ids are dropped and only the
|
|
54
|
+
* word-chunk approximation is returned.
|
|
55
|
+
*/
|
|
56
|
+
export declare function splitTranscriptToTokens(transcript: string, startIndex?: number, tokenIds?: ReadonlyArray<number>): TextToken[];
|
|
57
|
+
/**
|
|
58
|
+
* MTP drafter. `propose` returns up to `maxDraft` candidate
|
|
59
|
+
* continuation tokens given the accepted prefix. N=1 command buffers —
|
|
60
|
+
* the implementation MUST keep its GPU dispatch short enough to cancel
|
|
61
|
+
* at the next kernel boundary (no command-buffer batching for voice).
|
|
62
|
+
* Honours `cancel.cancelled` between kernel ticks.
|
|
63
|
+
*/
|
|
64
|
+
export interface DraftProposer {
|
|
65
|
+
propose(args: {
|
|
66
|
+
prefix: ReadonlyArray<TextToken>;
|
|
67
|
+
maxDraft: number;
|
|
68
|
+
cancel: {
|
|
69
|
+
cancelled: boolean;
|
|
70
|
+
};
|
|
71
|
+
}): Promise<TextToken[]>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Target verifier (the text model). Given the accepted prefix plus a
|
|
75
|
+
* draft window, returns which leading draft tokens are accepted and the
|
|
76
|
+
* one corrected token at the first divergence (if any). When the draft
|
|
77
|
+
* is empty, the verifier still produces one token (plain autoregressive
|
|
78
|
+
* step). Honours `cancel.cancelled` between kernel ticks.
|
|
79
|
+
*/
|
|
80
|
+
export interface TargetVerifier {
|
|
81
|
+
verify(args: {
|
|
82
|
+
prefix: ReadonlyArray<TextToken>;
|
|
83
|
+
draft: ReadonlyArray<TextToken>;
|
|
84
|
+
cancel: {
|
|
85
|
+
cancelled: boolean;
|
|
86
|
+
};
|
|
87
|
+
}): Promise<{
|
|
88
|
+
accepted: TextToken[];
|
|
89
|
+
/** Set when the verifier reached the natural end of generation. */
|
|
90
|
+
done: boolean;
|
|
91
|
+
}>;
|
|
92
|
+
}
|
|
93
|
+
export interface VoicePipelineDeps {
|
|
94
|
+
scheduler: VoiceScheduler;
|
|
95
|
+
/**
|
|
96
|
+
* The live frame-fed ASR adapter (`voice/transcriber.ts` — fused
|
|
97
|
+
* `eliza_inference_asr_stream_*`, the fused batch adapter, or
|
|
98
|
+
* `MissingAsrTranscriber` deferring a hard failure). The pipeline drives
|
|
99
|
+
* it as a batch: it feeds the whole (VAD-gated) utterance buffer as one
|
|
100
|
+
* frame, `flush()`es to finalize, then splits the final transcript into
|
|
101
|
+
* contiguous text tokens (`splitTranscriptToTokens`). One `StreamingTranscriber`
|
|
102
|
+
* contract — there is no separate batch ASR interface.
|
|
103
|
+
*/
|
|
104
|
+
transcriber: StreamingTranscriber;
|
|
105
|
+
drafter: DraftProposer;
|
|
106
|
+
verifier: TargetVerifier;
|
|
107
|
+
}
|
|
108
|
+
export interface VoicePipelineConfig {
|
|
109
|
+
/**
|
|
110
|
+
* Max tokens MTP drafts per round. Per-tier; small (≤8) so a
|
|
111
|
+
* rollback is cheap. The drafter and verifier overlap one round: while
|
|
112
|
+
* the verifier checks round k, the drafter speculates round k+1.
|
|
113
|
+
*/
|
|
114
|
+
maxDraftTokens: number;
|
|
115
|
+
/**
|
|
116
|
+
* Hard cap on generated tokens per turn (safety stop). The verifier's
|
|
117
|
+
* `done` flag is the normal stop; this bounds a runaway model.
|
|
118
|
+
*/
|
|
119
|
+
maxGeneratedTokens?: number;
|
|
120
|
+
/**
|
|
121
|
+
* A2 — when true, run streaming-ASR partials through a LocalAgreement-n
|
|
122
|
+
* stabilizer (`PartialStabilizer`) before splitting them into tokens
|
|
123
|
+
* and feeding the drafter. Off by default until the streaming-ASR
|
|
124
|
+
* fast path lands and validates the latency/quality trade. The
|
|
125
|
+
* `StreamingTranscriber.flush()`-driven batch path is unaffected (the
|
|
126
|
+
* stabilizer is a no-op on a single final partial).
|
|
127
|
+
*/
|
|
128
|
+
usePartialStabilizer?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* A2 — agreement count `n` for `PartialStabilizer` when enabled.
|
|
131
|
+
* Ignored when `usePartialStabilizer` is false. Default 2.
|
|
132
|
+
*/
|
|
133
|
+
partialStabilizerAgreementCount?: number;
|
|
134
|
+
}
|
|
135
|
+
export interface VoicePipelineEvents {
|
|
136
|
+
/** Fired once, the instant ASR emits its final token (= drafter+verifier kick-off). */
|
|
137
|
+
onAsrComplete?(tokens: ReadonlyArray<TextToken>): void;
|
|
138
|
+
/**
|
|
139
|
+
* Fired exactly once per turn, right after the ASR phase finishes and
|
|
140
|
+
* before the first drafter/verifier round. ASR → text → TTS are
|
|
141
|
+
* sequential within a turn (AGENTS.md §4), so the idle ASR-model pages
|
|
142
|
+
* can be dropped now — wire this to `MmapRegionHandle.evictPages()`
|
|
143
|
+
* (`madvise(MADV_DONTNEED)` on POSIX) for the ASR region to claw back
|
|
144
|
+
* ~1 GB of peak RSS while TTS decodes. The pages page back in
|
|
145
|
+
* transparently on the next turn's `feed()`; a host that prefers to
|
|
146
|
+
* keep ASR resident simply doesn't supply this hook. May be async; the
|
|
147
|
+
* pipeline does not block on it (a slow trim must not delay first audio).
|
|
148
|
+
*/
|
|
149
|
+
onAsrPhaseComplete?(): void | Promise<void>;
|
|
150
|
+
/** Fired with each verifier accept/reject event before it hits the scheduler. */
|
|
151
|
+
onVerifierEvent?(event: VerifierStreamEvent): void;
|
|
152
|
+
/** Fired when the loop exits (verifier `done`, token cap, or barge-in cancel). */
|
|
153
|
+
onComplete?(reason: "done" | "token-cap" | "cancelled"): void;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* One pipeline per active voice turn. Construct, call `run(audio)`,
|
|
157
|
+
* await the returned promise (or call `cancel()` for barge-in). The
|
|
158
|
+
* scheduler's barge-in controller also cancels an in-flight run — wire
|
|
159
|
+
* `bridge.triggerBargeIn()` and this run's `cancel()` to the same VAD
|
|
160
|
+
* signal so both the audio side (ring buffer drain) and the text side
|
|
161
|
+
* (stop drafting/verifying) abort together.
|
|
162
|
+
*/
|
|
163
|
+
export declare class VoicePipeline {
|
|
164
|
+
private readonly scheduler;
|
|
165
|
+
private readonly transcriber;
|
|
166
|
+
private readonly drafter;
|
|
167
|
+
private readonly verifier;
|
|
168
|
+
private readonly maxDraftTokens;
|
|
169
|
+
private readonly maxGeneratedTokens;
|
|
170
|
+
private readonly events;
|
|
171
|
+
/**
|
|
172
|
+
* A2 — when `config.usePartialStabilizer === true`, this is the active
|
|
173
|
+
* `PartialStabilizer` instance. Streaming-ASR consumers feed partials
|
|
174
|
+
* through it; the batch path in `transcribeAll()` collapses on a single
|
|
175
|
+
* final partial so the stabilizer is a no-op there. Exposed via
|
|
176
|
+
* `getPartialStabilizer()` so the streaming-ASR adapter (separate agent)
|
|
177
|
+
* can plug straight in once it ships.
|
|
178
|
+
*/
|
|
179
|
+
private readonly partialStabilizer;
|
|
180
|
+
private active;
|
|
181
|
+
constructor(deps: VoicePipelineDeps, config: VoicePipelineConfig, events?: VoicePipelineEvents);
|
|
182
|
+
/** True while a turn is in flight. */
|
|
183
|
+
isRunning(): boolean;
|
|
184
|
+
/**
|
|
185
|
+
* A2 — the active `PartialStabilizer` when the pipeline was built with
|
|
186
|
+
* `usePartialStabilizer: true`, otherwise null. The streaming-ASR
|
|
187
|
+
* adapter (separate agent) feeds partials into this instance and
|
|
188
|
+
* forwards the `stable` portion downstream. Returning null when the
|
|
189
|
+
* feature flag is off lets the adapter skip the work entirely.
|
|
190
|
+
*/
|
|
191
|
+
getPartialStabilizer(): PartialStabilizer | null;
|
|
192
|
+
/**
|
|
193
|
+
* Run one mic→speech turn. ASR streams first; the instant its last
|
|
194
|
+
* token lands, the drafter and verifier kick off concurrently and
|
|
195
|
+
* accepted tokens flow into the scheduler's chunker on the same tick.
|
|
196
|
+
* Resolves with the exit reason. Throws if a turn is already running.
|
|
197
|
+
*/
|
|
198
|
+
run(audio: TranscriptionAudio): Promise<"done" | "token-cap" | "cancelled">;
|
|
199
|
+
/**
|
|
200
|
+
* Barge-in: cancel the in-flight turn. Stops ASR, stops the
|
|
201
|
+
* drafter/verifier loop at the next kernel boundary, and triggers the
|
|
202
|
+
* scheduler's barge-in (ring buffer drain + chunker flush + in-flight
|
|
203
|
+
* TTS cancel). No-op when no turn is running.
|
|
204
|
+
*/
|
|
205
|
+
cancel(): void;
|
|
206
|
+
private execute;
|
|
207
|
+
/**
|
|
208
|
+
* Feed the whole utterance buffer to the live transcriber, finalize,
|
|
209
|
+
* and return the final transcript as contiguous text tokens. The
|
|
210
|
+
* transcriber is disposed afterwards (it is one per turn). A barge-in
|
|
211
|
+
* cancel checked before `flush()` short-circuits to an empty list.
|
|
212
|
+
*/
|
|
213
|
+
private transcribeAll;
|
|
214
|
+
private finish;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/services/voice/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAGX,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAC9B,SAAS,EAAE,CAoBb;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,IAAI,EAAE;QACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC;QACX,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtB,mEAAmE;QACnE,IAAI,EAAE,OAAO,CAAC;KACd,CAAC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B;;;;;;;;OAQG;IACH,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IACnC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IACnC,uFAAuF;IACvF,aAAa,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACvD;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,iFAAiF;IACjF,eAAe,CAAC,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnD,kFAAkF;IAClF,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;CAC9D;AASD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,MAAM,CAA4B;gBAGzC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,GAAE,mBAAwB;IA2BjC,sCAAsC;IACtC,SAAS,IAAI,OAAO;IAIpB;;;;;;OAMG;IACH,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAIhD;;;;;OAKG;IACG,GAAG,CACR,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAgB9C;;;;;OAKG;IACH,MAAM,IAAI,IAAI;YAKA,OAAO;IAuJrB;;;;;OAKG;YACW,aAAa;IAoB3B,OAAO,CAAC,MAAM;CAMd"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimistic prefill client (C7) — implements `/v1/prefill` against the
|
|
3
|
+
* llama.cpp REST API in three phases:
|
|
4
|
+
*
|
|
5
|
+
* Phase 1 — `slot/save`: snapshot the pre-user-message KV state so a
|
|
6
|
+
* rollback can restore it if speech continues (SPEECH_ACTIVE_REBOUND).
|
|
7
|
+
*
|
|
8
|
+
* Phase 2 — `POST /completion` with stream=false + cache_prompt=true:
|
|
9
|
+
* run the model's prefill over `partialText` without sampling any
|
|
10
|
+
* output tokens. This warms the KV cache so the subsequent real
|
|
11
|
+
* generation can skip one full prefill RTT.
|
|
12
|
+
*
|
|
13
|
+
* Phase 3 — `slot/save` again: snapshot the post-prefill KV state under a
|
|
14
|
+
* separate name. The voice state machine passes this handle to the
|
|
15
|
+
* verifier so generation resumes from the prefilled position.
|
|
16
|
+
*
|
|
17
|
+
* The upstream `/v1/prefill` endpoint is absent — the fork PR that
|
|
18
|
+
* adds it is tracked in `docs/eliza-1-optimistic-rollback.md`. Until it
|
|
19
|
+
* lands, phases 1–3 are emulated via the existing slot-save REST path. When
|
|
20
|
+
* the upstream endpoint ships the body of `prefillOptimistic` switches to a
|
|
21
|
+
* single REST call — callers see no signature change.
|
|
22
|
+
*
|
|
23
|
+
* Upstream endpoint contract: replace phases 2+3 with a single
|
|
24
|
+
* `POST /v1/prefill { slotId, partialText, eotProb }` once llama.cpp exposes
|
|
25
|
+
* it. That call must run the model prefill against `slotId`, save the resulting
|
|
26
|
+
* KV checkpoint, and return `{ handle, eotProb }`.
|
|
27
|
+
*/
|
|
28
|
+
import type { CheckpointHandle, CheckpointManagerLike } from "./checkpoint-manager";
|
|
29
|
+
import type { ContextPartial } from "./eager-context-builder";
|
|
30
|
+
/**
|
|
31
|
+
* Input contract for the optimistic prefill call. `partialText` is the
|
|
32
|
+
* current partial transcript; `eotProb` is the caller's estimate that the
|
|
33
|
+
* user has stopped speaking (from VAD hangover progress or the EOT classifier).
|
|
34
|
+
*/
|
|
35
|
+
export interface PrefillOptimisticArgs {
|
|
36
|
+
/** Base URL of the llama-server (`http://host:port`). */
|
|
37
|
+
baseUrl: string;
|
|
38
|
+
/** Slot id pinning this conversation. */
|
|
39
|
+
slotId: string;
|
|
40
|
+
/** Partial transcript to prefill against. Non-empty. */
|
|
41
|
+
partialText: string;
|
|
42
|
+
/**
|
|
43
|
+
* Probability the partial is end-of-turn (0..1). Today recorded as
|
|
44
|
+
* telemetry only; once `/v1/prefill` lands the server uses it to decide
|
|
45
|
+
* whether to also kick the drafter inline.
|
|
46
|
+
*/
|
|
47
|
+
eotProb: number;
|
|
48
|
+
/**
|
|
49
|
+
* Deterministic context from `EagerContextBuilder` (C3). Used to build the
|
|
50
|
+
* system prompt passed to the prefill `/completion` call so the KV cache
|
|
51
|
+
* covers both the system prompt and the partial transcript. Optional — when
|
|
52
|
+
* absent, only the partial transcript is prefilled.
|
|
53
|
+
*/
|
|
54
|
+
context?: ContextPartial;
|
|
55
|
+
}
|
|
56
|
+
export interface PrefillOptimisticResult {
|
|
57
|
+
/**
|
|
58
|
+
* Handle to the POST-prefill KV snapshot. Pass to
|
|
59
|
+
* `CheckpointManager.restoreCheckpoint` on SPEECH_END so the verifier
|
|
60
|
+
* resumes from the prefilled position.
|
|
61
|
+
*/
|
|
62
|
+
checkpointHandle: CheckpointHandle;
|
|
63
|
+
/**
|
|
64
|
+
* Approximate token count of the prefilled text. Derived from a rough
|
|
65
|
+
* whitespace tokenizer since the REST emulation path doesn't return a token count;
|
|
66
|
+
* once the upstream endpoint lands, the server returns the real count.
|
|
67
|
+
*/
|
|
68
|
+
tokenCount: number;
|
|
69
|
+
/**
|
|
70
|
+
* Wall-clock milliseconds the prefill round-trip took (phases 1–3).
|
|
71
|
+
*/
|
|
72
|
+
prefillMs: number;
|
|
73
|
+
/**
|
|
74
|
+
* Backend label. `slot-save-emulation` = pre-upstream emulation path;
|
|
75
|
+
* `prefill-v1` = native `/v1/prefill` endpoint.
|
|
76
|
+
*/
|
|
77
|
+
backend: "slot-save-emulation" | "prefill-v1";
|
|
78
|
+
/**
|
|
79
|
+
* End-of-turn probability echoed back from the server. Today equals the
|
|
80
|
+
* caller's `eotProb` (the emulation path has nothing to refine it with); once the
|
|
81
|
+
* upstream endpoint lands, the server returns its own model estimate.
|
|
82
|
+
*/
|
|
83
|
+
eotProb: number;
|
|
84
|
+
}
|
|
85
|
+
export interface PrefillOptimisticOptions {
|
|
86
|
+
checkpointManager: CheckpointManagerLike;
|
|
87
|
+
/**
|
|
88
|
+
* Name to use for the PRE-prefill snapshot (C1 — used by the rollback path
|
|
89
|
+
* on SPEECH_ACTIVE_REBOUND). Defaults to `pre-prefill`.
|
|
90
|
+
*/
|
|
91
|
+
preCheckpointName?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Name to use for the POST-prefill snapshot (the one the verifier starts
|
|
94
|
+
* from on SPEECH_END). Defaults to `post-prefill`.
|
|
95
|
+
*/
|
|
96
|
+
postCheckpointName?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Optional fetch implementation for tests. Defaults to global `fetch`.
|
|
99
|
+
*/
|
|
100
|
+
fetchImpl?: typeof fetch;
|
|
101
|
+
/**
|
|
102
|
+
* Request timeout for the `/completion` prefill call (ms). Default 5 000 ms.
|
|
103
|
+
* The call is a no-sample prefill-only pass, so it should complete in
|
|
104
|
+
* O(transcript_tokens / throughput) — typically well under 1 s for short
|
|
105
|
+
* partials.
|
|
106
|
+
*/
|
|
107
|
+
prefillTimeoutMs?: number;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Run the three-phase optimistic prefill and return a checkpoint handle for
|
|
111
|
+
* the post-prefill KV state.
|
|
112
|
+
*
|
|
113
|
+
* Voice state machine wiring:
|
|
114
|
+
* - Call on `PAUSE_TENTATIVE` entry with `eotProb` from the EOT classifier.
|
|
115
|
+
* - On `SPEECH_ACTIVE_REBOUND` (within rollback window): restore to the
|
|
116
|
+
* PRE-prefill checkpoint (C1 saved in phase 1) via the checkpoint manager.
|
|
117
|
+
* The post-prefill handle returned here is no longer needed.
|
|
118
|
+
* - On `SPEECH_END`: pass `result.checkpointHandle` to the verifier so it
|
|
119
|
+
* can resume generation from the prefilled KV state, saving one full
|
|
120
|
+
* prefill RTT.
|
|
121
|
+
*/
|
|
122
|
+
export declare function prefillOptimistic(args: PrefillOptimisticArgs, opts: PrefillOptimisticOptions): Promise<PrefillOptimisticResult>;
|
|
123
|
+
//# sourceMappingURL=prefill-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefill-client.d.ts","sourceRoot":"","sources":["../../../src/services/voice/prefill-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,qBAAqB,GAAG,YAAY,CAAC;IAC9C;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACxC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,wBAAwB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAoDlC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prefix-preserving TTS rollback queue for barge-in handling.
|
|
3
|
+
*
|
|
4
|
+
* When the user barges in mid-response, the naive approach drops ALL
|
|
5
|
+
* in-flight audio chunks. This queue does better: it tags each audio
|
|
6
|
+
* chunk with the token range it covers, and on barge-in retains chunks
|
|
7
|
+
* whose token range ends at or before the divergence point (the last
|
|
8
|
+
* committed token index when the barge-in fires).
|
|
9
|
+
*
|
|
10
|
+
* If the new user utterance continues the topic, audio up to the
|
|
11
|
+
* divergence point plays smoothly. Chunks for tokens past the divergence
|
|
12
|
+
* are dropped.
|
|
13
|
+
*
|
|
14
|
+
* Data model:
|
|
15
|
+
*
|
|
16
|
+
* TaggedAudioChunk — a PCM buffer paired with [start, end] token indices
|
|
17
|
+
* (inclusive) and its duration in milliseconds.
|
|
18
|
+
*
|
|
19
|
+
* PrefixPreservingQueue — ordered queue of TaggedAudioChunk. On barge-in
|
|
20
|
+
* with a given divergencePoint:
|
|
21
|
+
* keep when chunk.tokenRange[1] <= divergencePoint
|
|
22
|
+
* drop when chunk.tokenRange[0] > divergencePoint
|
|
23
|
+
* trim when chunk straddles the point (tokenRange[0] <= point
|
|
24
|
+
* but tokenRange[1] > point) — kept whole; the scheduler
|
|
25
|
+
* treats sub-phrase granularity as a best-effort approximation.
|
|
26
|
+
*
|
|
27
|
+
* The old `handleBargeIn` path (ring-buffer drain + full stop) remains
|
|
28
|
+
* active as a fallback when the queue is not wired (e.g. the backend
|
|
29
|
+
* emits chunks without token-range tags). When the queue IS wired, the
|
|
30
|
+
* scheduler calls `rollbackAt(divergencePoint)` instead of a plain drain,
|
|
31
|
+
* and replays the retained prefix into the sink before resuming.
|
|
32
|
+
*/
|
|
33
|
+
export interface TaggedAudioChunk {
|
|
34
|
+
pcm: Float32Array;
|
|
35
|
+
/**
|
|
36
|
+
* Inclusive token-index range the audio chunk covers.
|
|
37
|
+
* [start, end] where start <= end. Both values are in the
|
|
38
|
+
* scheduler's token-index space (same as `Phrase.fromIndex` /
|
|
39
|
+
* `Phrase.toIndex`).
|
|
40
|
+
*/
|
|
41
|
+
tokenRange: [number, number];
|
|
42
|
+
/**
|
|
43
|
+
* Wall-clock duration of this chunk in milliseconds, computed from
|
|
44
|
+
* `pcm.length / sampleRate * 1000`. Stored here so the queue can
|
|
45
|
+
* report total retained duration to telemetry without knowing the
|
|
46
|
+
* sample rate.
|
|
47
|
+
*/
|
|
48
|
+
durationMs: number;
|
|
49
|
+
}
|
|
50
|
+
export interface RollbackResult {
|
|
51
|
+
/** Chunks retained (token range ends at or before divergencePoint). */
|
|
52
|
+
retained: TaggedAudioChunk[];
|
|
53
|
+
/** Chunks dropped (token range starts after divergencePoint). */
|
|
54
|
+
dropped: TaggedAudioChunk[];
|
|
55
|
+
/**
|
|
56
|
+
* Chunks that straddled the divergence point
|
|
57
|
+
* (started at or before, ended after) — kept in `retained` at phrase
|
|
58
|
+
* granularity. Callers can inspect this for telemetry.
|
|
59
|
+
*/
|
|
60
|
+
straddled: TaggedAudioChunk[];
|
|
61
|
+
/** Sum of retained chunk durations in milliseconds. */
|
|
62
|
+
retainedDurationMs: number;
|
|
63
|
+
/** Sum of dropped chunk durations in milliseconds. */
|
|
64
|
+
droppedDurationMs: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Prefix-preserving audio chunk queue.
|
|
68
|
+
*
|
|
69
|
+
* Usage:
|
|
70
|
+
* 1. On each audio chunk arriving from the TTS backend, call `enqueue`.
|
|
71
|
+
* 2. On barge-in, call `rollbackAt(divergencePoint)` — returns the
|
|
72
|
+
* partition of retained vs dropped chunks. The caller replays the
|
|
73
|
+
* retained prefix into the audio sink and discards the rest.
|
|
74
|
+
* 3. Call `clear()` to reset (e.g. on a new turn).
|
|
75
|
+
*
|
|
76
|
+
* Thread-safety: single-threaded JS — no locking needed.
|
|
77
|
+
*/
|
|
78
|
+
export declare class PrefixPreservingQueue {
|
|
79
|
+
private readonly chunks;
|
|
80
|
+
/** Number of chunks currently in the queue. */
|
|
81
|
+
get size(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Add a tagged audio chunk to the tail of the queue. Chunks MUST be
|
|
84
|
+
* enqueued in token-range order (ascending `tokenRange[0]`) — the queue
|
|
85
|
+
* does not sort. Violations produce unspecified rollback behaviour.
|
|
86
|
+
*/
|
|
87
|
+
enqueue(chunk: TaggedAudioChunk): void;
|
|
88
|
+
/**
|
|
89
|
+
* Partition the queue at `divergencePoint` (the last committed token
|
|
90
|
+
* index). Clears the queue and returns the three-way split.
|
|
91
|
+
*
|
|
92
|
+
* Decision per chunk:
|
|
93
|
+
* chunk.tokenRange[1] <= divergencePoint → retained (prefix)
|
|
94
|
+
* chunk.tokenRange[0] > divergencePoint → dropped (post-divergence)
|
|
95
|
+
* otherwise (straddle) → retained (best-effort)
|
|
96
|
+
*
|
|
97
|
+
* After this call the queue is empty. Callers should replay `retained`
|
|
98
|
+
* into the audio sink.
|
|
99
|
+
*/
|
|
100
|
+
rollbackAt(divergencePoint: number): RollbackResult;
|
|
101
|
+
/**
|
|
102
|
+
* Drop all queued chunks without replaying any of them. Used by the
|
|
103
|
+
* hard-stop / full-cancel path as a fallback when the new utterance
|
|
104
|
+
* does not continue the topic.
|
|
105
|
+
*/
|
|
106
|
+
clear(): TaggedAudioChunk[];
|
|
107
|
+
/**
|
|
108
|
+
* Peek at the current queue without modifying it (snapshot for
|
|
109
|
+
* telemetry / tests).
|
|
110
|
+
*/
|
|
111
|
+
snapshot(): ReadonlyArray<TaggedAudioChunk>;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=prefix-preserving-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefix-preserving-queue.d.ts","sourceRoot":"","sources":["../../../src/services/voice/prefix-preserving-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,YAAY,CAAC;IAClB;;;;;OAKG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,iEAAiE;IACjE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B;;;;OAIG;IACH,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,+CAA+C;IAC/C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAItC;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc;IAmCnD;;;;OAIG;IACH,KAAK,IAAI,gBAAgB,EAAE;IAK3B;;;OAGG;IACH,QAAQ,IAAI,aAAa,CAAC,gBAAgB,CAAC;CAG3C"}
|