@elizaos/plugin-local-inference 2.0.3-beta.2 → 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/README.md +84 -10
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -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.map +1 -0
- package/dist/index.js +39647 -0
- package/dist/index.js.map +217 -0
- package/{src → dist}/local-inference-routes.d.ts +9 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts.map +1 -0
- package/{src → dist}/routes/compat-helpers.d.ts +1 -1
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/{src → dist}/routes/index.d.ts +1 -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/{src → dist}/routes/live-diarization-route.d.ts +7 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/routes/transcripts-routes.d.ts +8 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/{src → dist}/runtime/ensure-local-inference-handler.d.ts +8 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/{src → dist}/runtime/index.d.ts +1 -1
- 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/{src → dist}/runtime/voice-entity-binding.d.ts +10 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/{src → dist}/services/active-model.d.ts +28 -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/{src → dist}/services/assignments.d.ts +16 -3
- 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/{src → dist}/services/backend.d.ts +110 -16
- package/dist/services/backend.d.ts.map +1 -0
- package/{src → dist}/services/bionic-host-loader.d.ts +21 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts.map +1 -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.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.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.map +1 -0
- package/{src → dist}/services/desktop-fused-ffi-backend-runtime.d.ts +22 -6
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/{src → dist}/services/device-tier.d.ts +19 -1
- package/dist/services/device-tier.d.ts.map +1 -0
- package/{src → dist}/services/downloader.d.ts +16 -4
- package/dist/services/downloader.d.ts.map +1 -0
- package/{src → dist}/services/engine.d.ts +43 -4
- 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.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/{src → dist}/services/ffi-streaming-backend.d.ts +28 -7
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/{src → dist}/services/ffi-streaming-runner.d.ts +24 -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.map +1 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/{src → dist}/services/imagegen/sd-cpp.d.ts +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/{src → dist}/services/index.d.ts +3 -1
- 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.map +1 -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.map +1 -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.map +1 -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/{src → dist}/services/manifest/schema.d.ts +196 -6
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/{src → dist}/services/manifest/types.d.ts +3 -1
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/{src → dist}/services/memory-arbiter.d.ts +33 -3
- 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/{src → dist}/services/memory-monitor.d.ts +6 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/{src → dist}/services/registry.d.ts +11 -13
- package/dist/services/registry.d.ts.map +1 -0
- package/{src → dist}/services/router-handler.d.ts +2 -2
- package/dist/services/router-handler.d.ts.map +1 -0
- package/{src → dist}/services/routing-policy.d.ts +32 -9
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/{src → dist}/services/service.d.ts +1 -1
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts.map +1 -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.map +1 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/{src → dist}/services/types.d.ts +1 -1
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/{src → dist}/services/vision/index.d.ts +1 -1
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/{src → dist}/services/vision/types.d.ts +13 -4
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/{src → dist}/services/vision-embedding-cache.d.ts +1 -1
- 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/{src → dist}/services/voice/audio-frame-consumer.d.ts +82 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -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.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/{src → dist}/services/voice/eliza1-eot-scorer.d.ts +8 -8
- 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/{src → dist}/services/voice/embedding.d.ts +2 -3
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/{src → dist}/services/voice/engine-bridge.d.ts +8 -5
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/{src → dist}/services/voice/eot-classifier-ggml.d.ts +22 -22
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/{src → dist}/services/voice/eot-classifier.d.ts +9 -12
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/{src → dist}/services/voice/errors.d.ts +1 -1
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/{src → dist}/services/voice/expressive-tags.d.ts +5 -5
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/{src → dist}/services/voice/ffi-bindings.d.ts +26 -4
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/{src → dist}/services/voice/fused-eot-scorer.d.ts +6 -6
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/{src → dist}/services/voice/index.d.ts +8 -3
- 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/{src → dist}/services/voice/kokoro/kokoro-backend.d.ts +15 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/{src → dist}/services/voice/kokoro/kokoro-engine-discovery.d.ts +1 -1
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/{src → dist}/services/voice/kokoro/kokoro-ffi-runtime.d.ts +3 -3
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/services/voice/kokoro/pick-runtime.d.ts +1 -1
- 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.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -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/{src → dist}/services/voice/mic-source.d.ts +1 -1
- 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.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/{src → dist}/services/voice/partial-stabilizer.d.ts +1 -1
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -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/{src → dist}/services/voice/shared-resources.d.ts +14 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/services/voice/transcriber.d.ts +4 -4
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/{src → dist}/services/voice/transcript-service.d.ts +20 -1
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/{src → dist}/services/voice/transcript-store.d.ts +12 -1
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/{src → dist}/services/voice/types.d.ts +6 -6
- package/dist/services/voice/types.d.ts.map +1 -0
- package/{src → dist}/services/voice/vad.d.ts +6 -5
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -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/{src → dist}/services/voice/voice-preset-format.d.ts +2 -2
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -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.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/{src → dist}/services/voice/wake-word-ggml.d.ts +8 -9
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -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.map +1 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -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 +28 -9
- package/registry-entry.json +137 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +1 -1
- package/src/adapters/capacitor-llama/index.ts +28 -4
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +2 -2
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +1 -1
- package/src/local-inference-routes.test.ts +57 -11
- package/src/local-inference-routes.ts +90 -8
- package/src/provider.ts +32 -3
- package/src/routes/compat-helpers.ts +2 -1
- package/src/routes/index.ts +1 -0
- package/src/routes/live-diarization-route.test.ts +134 -0
- package/src/routes/live-diarization-route.ts +79 -3
- package/src/routes/local-inference-asr-route.test.ts +43 -2
- package/src/routes/local-inference-asr-route.ts +7 -4
- package/src/routes/local-inference-asr-transcribe.test.ts +4 -4
- package/src/routes/local-inference-asr-transcribe.ts +1 -1
- package/src/routes/local-inference-compat-routes.test.ts +3 -3
- package/src/routes/local-inference-compat-routes.ts +23 -56
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcripts-routes.test.ts +51 -0
- package/src/routes/transcripts-routes.ts +35 -3
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +203 -5
- package/src/runtime/ensure-local-inference-handler.ts +203 -11
- package/src/runtime/index.ts +4 -1
- package/src/runtime/mobile-local-inference-gate.test.ts +85 -2
- package/src/runtime/mobile-local-inference-gate.ts +60 -5
- package/src/runtime/voice-entity-binding.transcript.test.ts +29 -0
- package/src/runtime/voice-entity-binding.ts +46 -6
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +2 -2
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model.ts +211 -8
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +26 -0
- package/src/services/assignments.ts +52 -4
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +198 -19
- package/src/services/bionic-host-loader.test.ts +94 -1
- package/src/services/bionic-host-loader.ts +72 -0
- package/src/services/cache-bridge.test.ts +7 -7
- package/src/services/catalog.test.ts +32 -11
- package/src/services/catalog.ts +6 -0
- package/src/services/cloud-fallback.ts +1 -1
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +99 -7
- package/src/services/device-tier.test.ts +89 -2
- package/src/services/device-tier.ts +103 -11
- package/src/services/downloader.test.ts +199 -58
- package/src/services/downloader.ts +141 -27
- package/src/services/engine-direct-bundle.test.ts +38 -6
- package/src/services/engine.ts +291 -104
- package/src/services/ensure-local-artifacts.ts +1 -1
- package/src/services/ffi-llm-streaming-abi.ts +6 -3
- package/src/services/ffi-streaming-backend.ts +44 -8
- package/src/services/ffi-streaming-runner.test.ts +163 -3
- package/src/services/ffi-streaming-runner.ts +54 -1
- package/src/services/ffi-unload-ordering.test.ts +5 -1
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/hardware.test.ts +7 -2
- package/src/services/hardware.ts +28 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/sd-cpp.ts +6 -9
- package/src/services/index.ts +18 -0
- package/src/services/ios-llama-streaming.ts +1 -1
- package/src/services/kv-spill.ts +6 -5
- 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/manifest/eliza-1.manifest.v1.json +84 -2
- package/src/services/manifest/index.ts +6 -0
- package/src/services/manifest/manifest.test.ts +156 -54
- package/src/services/manifest/schema.ts +160 -52
- package/src/services/manifest/types.ts +6 -0
- package/src/services/manifest/validator.ts +91 -25
- package/src/services/memory-arbiter.test.ts +139 -0
- package/src/services/memory-arbiter.ts +81 -15
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +24 -0
- package/src/services/memory-monitor.ts +12 -0
- package/src/services/mtp-doctor.ts +10 -2
- package/src/services/network-policy.ts +5 -5
- package/src/services/ram-budget-cache.test.ts +2 -1
- package/src/services/ram-budget.ts +0 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/registry.ts +25 -19
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.ts +43 -24
- package/src/services/routing-policy.test.ts +211 -23
- package/src/services/routing-policy.ts +92 -22
- package/src/services/service.test.ts +3 -3
- package/src/services/service.ts +22 -7
- package/src/services/transcription-priority.test.ts +2 -2
- package/src/services/types.ts +4 -0
- package/src/services/verify-on-device.test.ts +2 -2
- package/src/services/vision/hash.ts +1 -1
- package/src/services/vision/index.ts +2 -2
- package/src/services/vision/llama-server.ts +1 -1
- package/src/services/vision/types.ts +13 -4
- package/src/services/vision-embedding-cache.ts +1 -1
- package/src/services/voice/VOICE_WORKBENCH.md +71 -26
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +72 -2
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +29 -29
- package/src/services/voice/__tests__/streaming-asr.test.ts +1 -1
- 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 +6 -8
- package/src/services/voice/audio-frame-consumer.test.ts +327 -1
- package/src/services/voice/audio-frame-consumer.ts +165 -5
- package/src/services/voice/barge-in.ts +2 -3
- 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 +2 -2
- package/src/services/voice/e2e-harness.ts +175 -16
- 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 +22 -22
- package/src/services/voice/embedding.ts +2 -3
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.ts +151 -110
- package/src/services/voice/eot-classifier-ggml.ts +42 -39
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +11 -122
- package/src/services/voice/errors.ts +2 -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 +8 -8
- package/src/services/voice/ffi-bindings.test.ts +10 -3
- package/src/services/voice/ffi-bindings.ts +177 -15
- package/src/services/voice/fused-eot-scorer.ts +17 -13
- package/src/services/voice/index.ts +33 -12
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +112 -1
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +88 -3
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +37 -201
- package/src/services/voice/kokoro/kokoro-backend.ts +16 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +1 -1
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +3 -3
- package/src/services/voice/kokoro/pick-runtime.ts +1 -1
- package/src/services/voice/kokoro/runtime-selection.ts +28 -201
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +335 -2
- 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.ts +1 -1
- 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/partial-stabilizer.ts +1 -1
- package/src/services/voice/pipeline.ts +3 -4
- 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/samantha-preset-regenerator.wav.test.ts +90 -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 +23 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +85 -22
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.ts +4 -4
- package/src/services/voice/transcript-service.test.ts +58 -0
- package/src/services/voice/transcript-service.ts +64 -0
- package/src/services/voice/transcript-store.test.ts +36 -0
- package/src/services/voice/transcript-store.ts +32 -0
- package/src/services/voice/types.ts +7 -7
- package/src/services/voice/vad.test.ts +33 -15
- package/src/services/voice/vad.ts +25 -20
- package/src/services/voice/voice-budget.test.ts +0 -3
- package/src/services/voice/voice-budget.ts +6 -6
- package/src/services/voice/voice-duet.test.ts +1 -1
- 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 +17 -4
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +133 -7
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-workbench-report.ts +58 -17
- package/src/services/voice/wake-word-ggml.ts +12 -13
- 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-prewarm.ts +1 -1
- package/src/voice-workbench.ts +71 -0
- package/src/actions/generate-media.d.ts.map +0 -1
- package/src/actions/identify-speaker.d.ts.map +0 -1
- package/src/actions/transcription-control.d.ts.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/local-inference-routes.d.ts.map +0 -1
- package/src/provider.d.ts.map +0 -1
- package/src/routes/compat-helpers.d.ts.map +0 -1
- package/src/routes/family-member-route.d.ts.map +0 -1
- package/src/routes/index.d.ts.map +0 -1
- package/src/routes/live-diarization-route.d.ts.map +0 -1
- package/src/routes/local-inference-asr-route.d.ts.map +0 -1
- package/src/routes/local-inference-asr-transcribe.d.ts.map +0 -1
- package/src/routes/local-inference-compat-routes.d.ts.map +0 -1
- package/src/routes/local-inference-tts-route.d.ts.map +0 -1
- package/src/routes/transcript-audio-store.d.ts.map +0 -1
- package/src/routes/transcripts-routes.d.ts.map +0 -1
- package/src/routes/voice-first-run-routes.d.ts.map +0 -1
- package/src/routes/voice-models-routes.d.ts.map +0 -1
- package/src/routes/voice-profile-plugin-routes.d.ts.map +0 -1
- package/src/routes/voice-profiles-management-routes.d.ts.map +0 -1
- package/src/routes/voice-speaker-profile-routes.d.ts.map +0 -1
- package/src/runtime/embedding-manager-support.d.ts.map +0 -1
- package/src/runtime/embedding-presets.d.ts.map +0 -1
- package/src/runtime/embedding-warmup-policy.d.ts.map +0 -1
- package/src/runtime/ensure-local-inference-handler.d.ts.map +0 -1
- package/src/runtime/index.d.ts.map +0 -1
- package/src/runtime/mobile-local-inference-gate.d.ts +0 -31
- package/src/runtime/mobile-local-inference-gate.d.ts.map +0 -1
- package/src/runtime/voice-entity-binding.d.ts.map +0 -1
- package/src/services/active-model.d.ts.map +0 -1
- package/src/services/assignments.d.ts.map +0 -1
- package/src/services/backend.d.ts.map +0 -1
- package/src/services/bionic-host-loader.d.ts.map +0 -1
- package/src/services/bundled-models.d.ts.map +0 -1
- package/src/services/cache-bridge.d.ts.map +0 -1
- package/src/services/catalog.d.ts +0 -10
- package/src/services/catalog.d.ts.map +0 -1
- package/src/services/checkpoint-client.d.ts.map +0 -1
- package/src/services/cloud-fallback.d.ts.map +0 -1
- package/src/services/conversation-registry.d.ts.map +0 -1
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +0 -1
- package/src/services/device-bridge.d.ts.map +0 -1
- package/src/services/device-resource-metrics.d.ts.map +0 -1
- package/src/services/device-tier.d.ts.map +0 -1
- package/src/services/downloader.d.ts.map +0 -1
- package/src/services/engine.d.ts.map +0 -1
- package/src/services/external-scanner.d.ts.map +0 -1
- package/src/services/ffi-streaming-backend.d.ts.map +0 -1
- package/src/services/ffi-streaming-runner.d.ts.map +0 -1
- package/src/services/gpu-detect.d.ts.map +0 -1
- package/src/services/handler-registry.d.ts.map +0 -1
- package/src/services/hardware.d.ts.map +0 -1
- package/src/services/hf-search.d.ts +0 -26
- package/src/services/hf-search.d.ts.map +0 -1
- package/src/services/hf-search.test.ts +0 -69
- package/src/services/hf-search.ts +0 -420
- package/src/services/image-description-runtime.d.ts.map +0 -1
- package/src/services/imagegen/aosp-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/backend-selector.d.ts.map +0 -1
- package/src/services/imagegen/coreml-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/errors.d.ts.map +0 -1
- package/src/services/imagegen/index.d.ts.map +0 -1
- package/src/services/imagegen/mflux.d.ts.map +0 -1
- package/src/services/imagegen/sd-cpp.d.ts.map +0 -1
- package/src/services/imagegen/tensorrt-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/types.d.ts.map +0 -1
- package/src/services/index.d.ts.map +0 -1
- package/src/services/inference-capabilities.d.ts.map +0 -1
- package/src/services/inference-telemetry.d.ts.map +0 -1
- package/src/services/kv-spill.d.ts.map +0 -1
- package/src/services/latency-trace.d.ts.map +0 -1
- package/src/services/llm-streaming-binding.d.ts.map +0 -1
- package/src/services/load-args.d.ts.map +0 -1
- package/src/services/manifest/index.d.ts +0 -4
- package/src/services/manifest/index.d.ts.map +0 -1
- package/src/services/manifest/schema.d.ts.map +0 -1
- package/src/services/manifest/types.d.ts.map +0 -1
- package/src/services/manifest/validator.d.ts.map +0 -1
- package/src/services/memory-arbiter.d.ts.map +0 -1
- package/src/services/memory-monitor.d.ts.map +0 -1
- package/src/services/memory-pressure.d.ts.map +0 -1
- package/src/services/mtp-doctor.d.ts.map +0 -1
- package/src/services/network-policy.d.ts.map +0 -1
- package/src/services/paths.d.ts.map +0 -1
- package/src/services/planner-skeleton.d.ts.map +0 -1
- package/src/services/providers.d.ts.map +0 -1
- package/src/services/ram-budget.d.ts.map +0 -1
- package/src/services/readiness.d.ts.map +0 -1
- package/src/services/recommendation.d.ts.map +0 -1
- package/src/services/registry.d.ts.map +0 -1
- package/src/services/router-handler.d.ts.map +0 -1
- package/src/services/routing-policy.d.ts.map +0 -1
- package/src/services/routing-preferences.d.ts.map +0 -1
- package/src/services/runtime-target.d.ts.map +0 -1
- package/src/services/service.d.ts.map +0 -1
- package/src/services/session-pool.d.ts.map +0 -1
- package/src/services/structured-output/deterministic-repair.d.ts.map +0 -1
- package/src/services/structured-output.d.ts.map +0 -1
- package/src/services/system-memory.d.ts.map +0 -1
- package/src/services/types.d.ts.map +0 -1
- package/src/services/verify-on-device.d.ts.map +0 -1
- package/src/services/verify.d.ts.map +0 -1
- package/src/services/vision/aosp-unavailable.d.ts.map +0 -1
- package/src/services/vision/capacitor-llama.d.ts.map +0 -1
- package/src/services/vision/cloud-fallback.d.ts.map +0 -1
- package/src/services/vision/hash.d.ts.map +0 -1
- package/src/services/vision/index.d.ts.map +0 -1
- package/src/services/vision/llama-server.d.ts.map +0 -1
- package/src/services/vision/types.d.ts.map +0 -1
- package/src/services/vision/vast-fallback.d.ts.map +0 -1
- package/src/services/vision-embedding-cache.d.ts.map +0 -1
- package/src/services/voice/audio-frame-consumer.d.ts.map +0 -1
- package/src/services/voice/barge-in.d.ts.map +0 -1
- package/src/services/voice/cancellation-coordinator.d.ts.map +0 -1
- package/src/services/voice/checkpoint-manager.d.ts.map +0 -1
- package/src/services/voice/eager-context-builder.d.ts.map +0 -1
- package/src/services/voice/eliza1-eot-scorer.d.ts.map +0 -1
- package/src/services/voice/embedding.d.ts.map +0 -1
- package/src/services/voice/emotion-attribution.d.ts.map +0 -1
- package/src/services/voice/engine-bridge.d.ts.map +0 -1
- package/src/services/voice/eot-classifier-ggml.d.ts.map +0 -1
- package/src/services/voice/eot-classifier.d.ts.map +0 -1
- package/src/services/voice/errors.d.ts.map +0 -1
- package/src/services/voice/expressive-tags.d.ts.map +0 -1
- package/src/services/voice/ffi-bindings.d.ts.map +0 -1
- package/src/services/voice/first-line-cache.d.ts.map +0 -1
- package/src/services/voice/fused-eot-scorer.d.ts.map +0 -1
- package/src/services/voice/index.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-backend.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/phonemizer.d.ts.map +0 -1
- package/src/services/voice/kokoro/pick-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/runtime-selection.d.ts +0 -92
- package/src/services/voice/kokoro/runtime-selection.d.ts.map +0 -1
- package/src/services/voice/kokoro/types.d.ts.map +0 -1
- package/src/services/voice/kokoro/voice-presets.d.ts.map +0 -1
- package/src/services/voice/kokoro/voices.d.ts.map +0 -1
- package/src/services/voice/lifecycle.d.ts.map +0 -1
- package/src/services/voice/live-diarization-session.d.ts +0 -96
- package/src/services/voice/live-diarization-session.d.ts.map +0 -1
- package/src/services/voice/mic-source.d.ts.map +0 -1
- package/src/services/voice/optimistic-policy.d.ts.map +0 -1
- package/src/services/voice/partial-stabilizer.d.ts.map +0 -1
- package/src/services/voice/phoneme-tokenizer.d.ts.map +0 -1
- package/src/services/voice/phrase-cache.d.ts.map +0 -1
- package/src/services/voice/phrase-chunker.d.ts.map +0 -1
- package/src/services/voice/pipeline-impls.d.ts.map +0 -1
- package/src/services/voice/pipeline.d.ts.map +0 -1
- package/src/services/voice/prefill-client.d.ts.map +0 -1
- package/src/services/voice/prefix-preserving-queue.d.ts.map +0 -1
- package/src/services/voice/profile-store.d.ts.map +0 -1
- package/src/services/voice/ring-buffer.d.ts.map +0 -1
- package/src/services/voice/rollback-queue.d.ts.map +0 -1
- package/src/services/voice/samantha-preset-placeholder.d.ts.map +0 -1
- package/src/services/voice/samantha-preset-regenerator.d.ts.map +0 -1
- package/src/services/voice/scheduler.d.ts.map +0 -1
- package/src/services/voice/shared-resources.d.ts.map +0 -1
- package/src/services/voice/speaker/attribution-pipeline.d.ts.map +0 -1
- package/src/services/voice/speaker/diarizer-fused.d.ts.map +0 -1
- package/src/services/voice/speaker/diarizer.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder-fused.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder-ggml.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder.d.ts.map +0 -1
- package/src/services/voice/speaker-imprint.d.ts.map +0 -1
- package/src/services/voice/speaker-preset-cache.d.ts.map +0 -1
- package/src/services/voice/system-audio-sink.d.ts.map +0 -1
- package/src/services/voice/transcriber.d.ts.map +0 -1
- package/src/services/voice/transcript-knowledge.d.ts.map +0 -1
- package/src/services/voice/transcript-service.d.ts.map +0 -1
- package/src/services/voice/transcript-store.d.ts.map +0 -1
- package/src/services/voice/turn-controller.d.ts.map +0 -1
- package/src/services/voice/types.d.ts.map +0 -1
- package/src/services/voice/vad.d.ts.map +0 -1
- package/src/services/voice/voice-budget.d.ts.map +0 -1
- package/src/services/voice/voice-emotion-classifier.d.ts.map +0 -1
- package/src/services/voice/voice-preset-format.d.ts.map +0 -1
- package/src/services/voice/voice-profile-artifact.d.ts.map +0 -1
- package/src/services/voice/voice-profile-routes.d.ts.map +0 -1
- package/src/services/voice/voice-settings.d.ts +0 -82
- package/src/services/voice/voice-settings.d.ts.map +0 -1
- package/src/services/voice/voice-settings.ts +0 -172
- package/src/services/voice/voice-state-machine.d.ts.map +0 -1
- package/src/services/voice/wake-word-ggml.d.ts.map +0 -1
- package/src/services/voice/wake-word.d.ts.map +0 -1
- package/src/services/voice/wrap-with-first-line-cache.d.ts.map +0 -1
- package/src/services/voice-model-updater.d.ts.map +0 -1
- package/src/services/voice-prewarm.d.ts.map +0 -1
- /package/{src → dist}/actions/generate-media.d.ts +0 -0
- /package/{src → dist}/actions/identify-speaker.d.ts +0 -0
- /package/{src → dist}/actions/transcription-control.d.ts +0 -0
- /package/{src → dist}/index.d.ts +0 -0
- /package/{src → dist}/provider.d.ts +0 -0
- /package/{src → dist}/routes/family-member-route.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-asr-route.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-asr-transcribe.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-compat-routes.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-tts-route.d.ts +0 -0
- /package/{src → dist}/routes/transcript-audio-store.d.ts +0 -0
- /package/{src → dist}/routes/voice-first-run-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-models-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-profile-plugin-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-profiles-management-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-speaker-profile-routes.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-manager-support.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-presets.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-warmup-policy.d.ts +0 -0
- /package/{src → dist}/services/bundled-models.d.ts +0 -0
- /package/{src → dist}/services/cache-bridge.d.ts +0 -0
- /package/{src → dist}/services/checkpoint-client.d.ts +0 -0
- /package/{src → dist}/services/cloud-fallback.d.ts +0 -0
- /package/{src → dist}/services/conversation-registry.d.ts +0 -0
- /package/{src → dist}/services/device-bridge.d.ts +0 -0
- /package/{src → dist}/services/device-resource-metrics.d.ts +0 -0
- /package/{src → dist}/services/external-scanner.d.ts +0 -0
- /package/{src → dist}/services/gpu-detect.d.ts +0 -0
- /package/{src → dist}/services/handler-registry.d.ts +0 -0
- /package/{src → dist}/services/hardware.d.ts +0 -0
- /package/{src → dist}/services/image-description-runtime.d.ts +0 -0
- /package/{src → dist}/services/imagegen/aosp-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/backend-selector.d.ts +0 -0
- /package/{src → dist}/services/imagegen/coreml-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/errors.d.ts +0 -0
- /package/{src → dist}/services/imagegen/index.d.ts +0 -0
- /package/{src → dist}/services/imagegen/mflux.d.ts +0 -0
- /package/{src → dist}/services/imagegen/tensorrt-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/types.d.ts +0 -0
- /package/{src → dist}/services/inference-capabilities.d.ts +0 -0
- /package/{src → dist}/services/inference-telemetry.d.ts +0 -0
- /package/{src → dist}/services/kv-spill.d.ts +0 -0
- /package/{src → dist}/services/latency-trace.d.ts +0 -0
- /package/{src → dist}/services/llm-streaming-binding.d.ts +0 -0
- /package/{src → dist}/services/load-args.d.ts +0 -0
- /package/{src → dist}/services/manifest/validator.d.ts +0 -0
- /package/{src → dist}/services/memory-pressure.d.ts +0 -0
- /package/{src → dist}/services/mtp-doctor.d.ts +0 -0
- /package/{src → dist}/services/network-policy.d.ts +0 -0
- /package/{src → dist}/services/paths.d.ts +0 -0
- /package/{src → dist}/services/planner-skeleton.d.ts +0 -0
- /package/{src → dist}/services/providers.d.ts +0 -0
- /package/{src → dist}/services/ram-budget.d.ts +0 -0
- /package/{src → dist}/services/readiness.d.ts +0 -0
- /package/{src → dist}/services/recommendation.d.ts +0 -0
- /package/{src → dist}/services/routing-preferences.d.ts +0 -0
- /package/{src → dist}/services/runtime-target.d.ts +0 -0
- /package/{src → dist}/services/session-pool.d.ts +0 -0
- /package/{src → dist}/services/structured-output/deterministic-repair.d.ts +0 -0
- /package/{src → dist}/services/structured-output.d.ts +0 -0
- /package/{src → dist}/services/system-memory.d.ts +0 -0
- /package/{src → dist}/services/verify-on-device.d.ts +0 -0
- /package/{src → dist}/services/verify.d.ts +0 -0
- /package/{src → dist}/services/vision/aosp-unavailable.d.ts +0 -0
- /package/{src → dist}/services/vision/capacitor-llama.d.ts +0 -0
- /package/{src → dist}/services/vision/cloud-fallback.d.ts +0 -0
- /package/{src → dist}/services/vision/hash.d.ts +0 -0
- /package/{src → dist}/services/vision/llama-server.d.ts +0 -0
- /package/{src → dist}/services/vision/vast-fallback.d.ts +0 -0
- /package/{src → dist}/services/voice/barge-in.d.ts +0 -0
- /package/{src → dist}/services/voice/cancellation-coordinator.d.ts +0 -0
- /package/{src → dist}/services/voice/checkpoint-manager.d.ts +0 -0
- /package/{src → dist}/services/voice/eager-context-builder.d.ts +0 -0
- /package/{src → dist}/services/voice/emotion-attribution.d.ts +0 -0
- /package/{src → dist}/services/voice/first-line-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/kokoro-runtime.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/phonemizer.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/types.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/voice-presets.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/voices.d.ts +0 -0
- /package/{src → dist}/services/voice/lifecycle.d.ts +0 -0
- /package/{src → dist}/services/voice/optimistic-policy.d.ts +0 -0
- /package/{src → dist}/services/voice/phoneme-tokenizer.d.ts +0 -0
- /package/{src → dist}/services/voice/phrase-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/phrase-chunker.d.ts +0 -0
- /package/{src → dist}/services/voice/pipeline-impls.d.ts +0 -0
- /package/{src → dist}/services/voice/pipeline.d.ts +0 -0
- /package/{src → dist}/services/voice/prefill-client.d.ts +0 -0
- /package/{src → dist}/services/voice/prefix-preserving-queue.d.ts +0 -0
- /package/{src → dist}/services/voice/profile-store.d.ts +0 -0
- /package/{src → dist}/services/voice/ring-buffer.d.ts +0 -0
- /package/{src → dist}/services/voice/rollback-queue.d.ts +0 -0
- /package/{src → dist}/services/voice/samantha-preset-placeholder.d.ts +0 -0
- /package/{src → dist}/services/voice/samantha-preset-regenerator.d.ts +0 -0
- /package/{src → dist}/services/voice/scheduler.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/attribution-pipeline.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/diarizer-fused.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/diarizer.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder-fused.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder-ggml.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker-imprint.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker-preset-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/system-audio-sink.d.ts +0 -0
- /package/{src → dist}/services/voice/transcript-knowledge.d.ts +0 -0
- /package/{src → dist}/services/voice/turn-controller.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-budget.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-emotion-classifier.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-profile-artifact.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-profile-routes.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-state-machine.d.ts +0 -0
- /package/{src → dist}/services/voice/wake-word.d.ts +0 -0
- /package/{src → dist}/services/voice/wrap-with-first-line-cache.d.ts +0 -0
- /package/{src → dist}/services/voice-model-updater.d.ts +0 -0
- /package/{src → dist}/services/voice-prewarm.d.ts +0 -0
|
@@ -59,6 +59,12 @@ function fakeRuntime(opts: {
|
|
|
59
59
|
async getMemoryById(id) {
|
|
60
60
|
return rows.get(id) ?? null;
|
|
61
61
|
},
|
|
62
|
+
async updateMemory(memory) {
|
|
63
|
+
const existing = rows.get(memory.id);
|
|
64
|
+
if (!existing) return false;
|
|
65
|
+
rows.set(memory.id, { ...existing, ...memory });
|
|
66
|
+
return true;
|
|
67
|
+
},
|
|
62
68
|
async deleteMemory(id) {
|
|
63
69
|
rows.delete(id);
|
|
64
70
|
},
|
|
@@ -134,4 +140,56 @@ describe("TranscriptService", () => {
|
|
|
134
140
|
expect(rt.rows.has(t.id)).toBe(false);
|
|
135
141
|
expect(rt.rows.has(docId)).toBe(false);
|
|
136
142
|
});
|
|
143
|
+
|
|
144
|
+
it("applies an edit, re-derives metadata, and re-mirrors to knowledge", async () => {
|
|
145
|
+
const rt = fakeRuntime({ withDocuments: true });
|
|
146
|
+
const svc = new TranscriptService(rt);
|
|
147
|
+
const t = makeTranscript();
|
|
148
|
+
await svc.create(input(t));
|
|
149
|
+
const firstDocId = "dddddddd-0000-0000-0000-000000000001";
|
|
150
|
+
rt.rows.set(firstDocId, { id: firstDocId } as Memory); // the create mirror row
|
|
151
|
+
rt.addDocument.mockClear();
|
|
152
|
+
rt.addDocument.mockResolvedValueOnce({
|
|
153
|
+
storedDocumentMemoryId: "dddddddd-0000-0000-0000-000000000002" as UUID,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
const updated = await svc.update(t.id as UUID, {
|
|
157
|
+
worldId: WORLD,
|
|
158
|
+
roomId: ROOM,
|
|
159
|
+
entityId: ENTITY,
|
|
160
|
+
patch: {
|
|
161
|
+
title: "Edited title",
|
|
162
|
+
segments: [
|
|
163
|
+
{ ...t.segments[0], text: "corrected words here", words: [] },
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
expect(updated?.title).toBe("Edited title");
|
|
169
|
+
expect(updated?.editedAt).toBeGreaterThan(0);
|
|
170
|
+
expect(updated?.segments[0].text).toBe("corrected words here");
|
|
171
|
+
// Re-mirrored: the stale doc was removed and a fresh one created + linked.
|
|
172
|
+
expect(rt.rows.has(firstDocId)).toBe(false);
|
|
173
|
+
expect(rt.addDocument).toHaveBeenCalledTimes(1);
|
|
174
|
+
expect(updated?.knowledgeDocumentId).toBe(
|
|
175
|
+
"dddddddd-0000-0000-0000-000000000002",
|
|
176
|
+
);
|
|
177
|
+
// The store now round-trips the edited record.
|
|
178
|
+
expect((await svc.get(t.id as UUID))?.title).toBe("Edited title");
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("returns null when updating a transcript that does not exist", async () => {
|
|
182
|
+
const rt = fakeRuntime({ withDocuments: true });
|
|
183
|
+
const svc = new TranscriptService(rt);
|
|
184
|
+
const result = await svc.update(
|
|
185
|
+
"99999999-0000-0000-0000-000000000000" as UUID,
|
|
186
|
+
{
|
|
187
|
+
worldId: WORLD,
|
|
188
|
+
roomId: ROOM,
|
|
189
|
+
entityId: ENTITY,
|
|
190
|
+
patch: { title: "nope" },
|
|
191
|
+
},
|
|
192
|
+
);
|
|
193
|
+
expect(result).toBeNull();
|
|
194
|
+
});
|
|
137
195
|
});
|
|
@@ -11,8 +11,13 @@ import { logger, type UUID } from "@elizaos/core";
|
|
|
11
11
|
import type {
|
|
12
12
|
Transcript,
|
|
13
13
|
TranscriptScope,
|
|
14
|
+
TranscriptSegment,
|
|
14
15
|
TranscriptSummary,
|
|
15
16
|
} from "@elizaos/shared/transcripts";
|
|
17
|
+
import {
|
|
18
|
+
transcriptDurationMs,
|
|
19
|
+
transcriptSpeakerCount,
|
|
20
|
+
} from "@elizaos/shared/transcripts";
|
|
16
21
|
import { transcriptKnowledgePayload } from "./transcript-knowledge";
|
|
17
22
|
import {
|
|
18
23
|
TranscriptStore,
|
|
@@ -48,6 +53,15 @@ export interface CreateTranscriptInput {
|
|
|
48
53
|
transcript: Transcript;
|
|
49
54
|
}
|
|
50
55
|
|
|
56
|
+
export interface UpdateTranscriptInput {
|
|
57
|
+
/** Ids the knowledge re-mirror is attributed to (default to the agent ctx). */
|
|
58
|
+
worldId: UUID;
|
|
59
|
+
roomId: UUID;
|
|
60
|
+
entityId: UUID;
|
|
61
|
+
/** The user edit: a new title and/or replacement segments. */
|
|
62
|
+
patch: { title?: string; segments?: TranscriptSegment[] };
|
|
63
|
+
}
|
|
64
|
+
|
|
51
65
|
export class TranscriptService {
|
|
52
66
|
private readonly store: TranscriptStore;
|
|
53
67
|
|
|
@@ -78,6 +92,56 @@ export class TranscriptService {
|
|
|
78
92
|
return this.store.get(id);
|
|
79
93
|
}
|
|
80
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Apply a user edit to a transcript record (title and/or segment text) and
|
|
97
|
+
* persist it, re-mirroring the new text into the knowledge index so search
|
|
98
|
+
* reflects the correction. Returns the updated record, or null if no record
|
|
99
|
+
* with that id exists. Timing/speaker metadata is re-derived from the edited
|
|
100
|
+
* segments; the knowledge mirror is replaced (old doc removed best-effort).
|
|
101
|
+
*/
|
|
102
|
+
async update(
|
|
103
|
+
id: UUID,
|
|
104
|
+
input: UpdateTranscriptInput,
|
|
105
|
+
): Promise<Transcript | null> {
|
|
106
|
+
const existing = await this.store.get(id);
|
|
107
|
+
if (!existing) return null;
|
|
108
|
+
|
|
109
|
+
const segments = input.patch.segments ?? existing.segments;
|
|
110
|
+
const next: Transcript = {
|
|
111
|
+
...existing,
|
|
112
|
+
title: input.patch.title?.trim() || existing.title,
|
|
113
|
+
segments,
|
|
114
|
+
durationMs: transcriptDurationMs(segments),
|
|
115
|
+
speakerCount: transcriptSpeakerCount(segments),
|
|
116
|
+
editedAt: Date.now(),
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Replace the knowledge mirror so search reflects the corrected text.
|
|
120
|
+
if (existing.knowledgeDocumentId) {
|
|
121
|
+
try {
|
|
122
|
+
await this.runtime.deleteMemory(existing.knowledgeDocumentId as UUID);
|
|
123
|
+
} catch (err) {
|
|
124
|
+
logger.warn(
|
|
125
|
+
{
|
|
126
|
+
transcriptId: id,
|
|
127
|
+
knowledgeDocumentId: existing.knowledgeDocumentId,
|
|
128
|
+
error: err instanceof Error ? err.message : String(err),
|
|
129
|
+
},
|
|
130
|
+
"[TranscriptService] failed to remove stale knowledge mirror on update",
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const knowledgeDocumentId = await this.mirrorToKnowledge(
|
|
135
|
+
input.worldId,
|
|
136
|
+
input.roomId,
|
|
137
|
+
input.entityId,
|
|
138
|
+
next,
|
|
139
|
+
);
|
|
140
|
+
next.knowledgeDocumentId = knowledgeDocumentId;
|
|
141
|
+
|
|
142
|
+
return this.store.update(next);
|
|
143
|
+
}
|
|
144
|
+
|
|
81
145
|
/** Delete the record + its knowledge mirror (mirror removal best-effort). */
|
|
82
146
|
async delete(id: UUID): Promise<void> {
|
|
83
147
|
const existing = await this.store.get(id);
|
|
@@ -60,6 +60,12 @@ function fakeRuntime(): TranscriptStoreRuntime & { rows: Map<string, Memory> } {
|
|
|
60
60
|
async getMemoryById(id) {
|
|
61
61
|
return rows.get(id) ?? null;
|
|
62
62
|
},
|
|
63
|
+
async updateMemory(memory) {
|
|
64
|
+
const existing = rows.get(memory.id);
|
|
65
|
+
if (!existing) return false;
|
|
66
|
+
rows.set(memory.id, { ...existing, ...memory });
|
|
67
|
+
return true;
|
|
68
|
+
},
|
|
63
69
|
async deleteMemory(id) {
|
|
64
70
|
rows.delete(id);
|
|
65
71
|
},
|
|
@@ -147,6 +153,36 @@ describe("TranscriptStore", () => {
|
|
|
147
153
|
expect(await store.get(t.id as UUID)).toBeNull();
|
|
148
154
|
});
|
|
149
155
|
|
|
156
|
+
it("updates a record in place and re-derives the preview + metadata", async () => {
|
|
157
|
+
const rt = fakeRuntime();
|
|
158
|
+
const store = new TranscriptStore(rt);
|
|
159
|
+
const t = makeTranscript();
|
|
160
|
+
await store.create({ roomId: ROOM, entityId: ENTITY, transcript: t });
|
|
161
|
+
|
|
162
|
+
const edited: Transcript = {
|
|
163
|
+
...t,
|
|
164
|
+
title: "Standup (edited)",
|
|
165
|
+
segments: [{ ...t.segments[0], text: "hello edited world", words: [] }],
|
|
166
|
+
editedAt: 5000,
|
|
167
|
+
};
|
|
168
|
+
const returned = await store.update(edited);
|
|
169
|
+
expect(returned).toEqual(edited);
|
|
170
|
+
|
|
171
|
+
// Same row id, overwritten content + re-derived preview text.
|
|
172
|
+
const row = rt.rows.get(t.id) as Memory;
|
|
173
|
+
expect(rt.rows.size).toBe(1);
|
|
174
|
+
expect(row.content.text).toBe("hello edited world");
|
|
175
|
+
expect(row.metadata?.transcriptId).toBe(t.id);
|
|
176
|
+
// store.get round-trips the edited record exactly.
|
|
177
|
+
expect(await store.get(t.id as UUID)).toEqual(edited);
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
it("throws when updating a record that does not exist", async () => {
|
|
181
|
+
const rt = fakeRuntime();
|
|
182
|
+
const store = new TranscriptStore(rt);
|
|
183
|
+
await expect(store.update(makeTranscript())).rejects.toThrow(/not found/);
|
|
184
|
+
});
|
|
185
|
+
|
|
150
186
|
it("exposes the partition name", () => {
|
|
151
187
|
expect(TRANSCRIPTS_TABLE).toBe("transcripts");
|
|
152
188
|
});
|
|
@@ -42,6 +42,9 @@ export interface TranscriptStoreRuntime {
|
|
|
42
42
|
orderDirection?: "asc" | "desc";
|
|
43
43
|
}): Promise<Memory[]>;
|
|
44
44
|
getMemoryById(id: UUID): Promise<Memory | null>;
|
|
45
|
+
updateMemory(
|
|
46
|
+
memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata },
|
|
47
|
+
): Promise<boolean>;
|
|
45
48
|
deleteMemory(id: UUID): Promise<void>;
|
|
46
49
|
}
|
|
47
50
|
|
|
@@ -125,6 +128,35 @@ export class TranscriptStore {
|
|
|
125
128
|
return row ? rowToTranscript(row) : null;
|
|
126
129
|
}
|
|
127
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Overwrite an existing transcript record in place (same id/row) — used when
|
|
133
|
+
* the user edits the transcript text. Re-derives the preview text body and
|
|
134
|
+
* the timing/speaker metadata from the updated record so generic memory
|
|
135
|
+
* consumers and the list stay consistent. Returns the record as stored.
|
|
136
|
+
*/
|
|
137
|
+
async update(transcript: Transcript): Promise<Transcript> {
|
|
138
|
+
const ok = await this.runtime.updateMemory({
|
|
139
|
+
id: transcript.id as UUID,
|
|
140
|
+
content: {
|
|
141
|
+
text: transcriptPreview(transcript.segments),
|
|
142
|
+
transcript: JSON.stringify(transcript),
|
|
143
|
+
},
|
|
144
|
+
metadata: {
|
|
145
|
+
type: "custom",
|
|
146
|
+
source: TRANSCRIPT_METADATA_TYPE,
|
|
147
|
+
timestamp: transcript.createdAt,
|
|
148
|
+
transcriptId: transcript.id,
|
|
149
|
+
durationMs: transcript.durationMs,
|
|
150
|
+
speakerCount: transcript.speakerCount,
|
|
151
|
+
status: transcript.status,
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
if (!ok) {
|
|
155
|
+
throw new Error(`transcript ${transcript.id} not found`);
|
|
156
|
+
}
|
|
157
|
+
return transcript;
|
|
158
|
+
}
|
|
159
|
+
|
|
128
160
|
/** Delete a transcript record (the knowledge mirror is removed separately). */
|
|
129
161
|
async delete(id: UUID): Promise<void> {
|
|
130
162
|
await this.runtime.deleteMemory(id);
|
|
@@ -3,10 +3,10 @@ export interface TextToken {
|
|
|
3
3
|
text: string;
|
|
4
4
|
/**
|
|
5
5
|
* Text-model vocabulary token id, when the producer knows it. ASR
|
|
6
|
-
* (fused
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* (fused Gemma ASR) and the text backbone share the Gemma tokenizer, so an
|
|
7
|
+
* ASR-emitted token id is the same id the text model would assign — a
|
|
8
|
+
* downstream in-process handoff can inject `id` directly into the text KV
|
|
9
|
+
* cache without detokenize →
|
|
10
10
|
* retokenize. Absent for producers that only have surface text (the
|
|
11
11
|
* word-chunk approximation in `splitTranscriptToTokens`).
|
|
12
12
|
*/
|
|
@@ -258,7 +258,7 @@ export interface VoiceTurnMetadata {
|
|
|
258
258
|
* VAD gating + barge-in word-confirm (`voice/vad.ts`, `voice/barge-in.ts`),
|
|
259
259
|
* the turn controller / speculative-on-pause path, and the overlapped
|
|
260
260
|
* `VoicePipeline` (`voice/pipeline.ts`). The `StreamingTranscriber` below
|
|
261
|
-
* is the single ASR contract; the two fused adapters (fused
|
|
261
|
+
* is the single ASR contract; the two fused adapters (fused Gemma ASR
|
|
262
262
|
* streaming and fused batch, both via libelizainference) implement it in
|
|
263
263
|
* `voice/transcriber.ts`. It consumes the canonical `PcmFrame` (defined
|
|
264
264
|
* below in the audio front-end section) off a `MicSource` and is gated by
|
|
@@ -284,7 +284,7 @@ export interface TranscriptUpdate {
|
|
|
284
284
|
turn?: VoiceTurnMetadata;
|
|
285
285
|
/**
|
|
286
286
|
* Text-model token ids for `partial`, when the backend can supply them
|
|
287
|
-
* cheaply (fused
|
|
287
|
+
* cheaply (fused Gemma ASR shares the text vocabulary). Absent when the
|
|
288
288
|
* decoder reports surface text only (re-tokenization is the LLM stage's
|
|
289
289
|
* job there).
|
|
290
290
|
*/
|
|
@@ -682,7 +682,7 @@ export type VoiceSchedulerTelemetryListener = (
|
|
|
682
682
|
// ---------------------------------------------------------------------------
|
|
683
683
|
|
|
684
684
|
/** Minimal VAD model contract consumed by the fused `GgmlSileroVad` and the
|
|
685
|
-
* optional injected
|
|
685
|
+
* optional injected external adapter. */
|
|
686
686
|
export interface VadLike {
|
|
687
687
|
readonly windowSamples: number;
|
|
688
688
|
readonly sampleRate: number;
|
|
@@ -324,11 +324,11 @@ describe("VadDetector", () => {
|
|
|
324
324
|
});
|
|
325
325
|
|
|
326
326
|
describe("GgmlSileroVad", () => {
|
|
327
|
-
it("documents the auto provider order: optional
|
|
327
|
+
it("documents the auto provider order: optional external VAD adapter → fused native Silero", () => {
|
|
328
328
|
// Fused `silero-ggml` (the one libelizainference handle) is the sole
|
|
329
|
-
// on-device VAD runtime; the optional injected `
|
|
329
|
+
// on-device VAD runtime; the optional injected `external-vad` adapter is
|
|
330
330
|
// tried first only when a caller supplies one.
|
|
331
|
-
expect(vadProviderOrder()).toEqual(["
|
|
331
|
+
expect(vadProviderOrder()).toEqual(["external-vad", "silero-ggml"]);
|
|
332
332
|
expect(vadProviderOrder("silero-ggml")).toEqual(["silero-ggml"]);
|
|
333
333
|
});
|
|
334
334
|
|
|
@@ -336,8 +336,8 @@ describe("GgmlSileroVad", () => {
|
|
|
336
336
|
expect(NativeSileroVad).toBe(GgmlSileroVad);
|
|
337
337
|
});
|
|
338
338
|
|
|
339
|
-
it("prefers a supplied
|
|
340
|
-
const
|
|
339
|
+
it("prefers a supplied external VAD adapter over the native provider", async () => {
|
|
340
|
+
const externalVad = new ScriptedSilero([
|
|
341
341
|
0.01, 0.9, 0.9, 0.02, 0.02, 0.02, 0.02, 0.02,
|
|
342
342
|
]);
|
|
343
343
|
const ffi = fakeFfi("x", {
|
|
@@ -345,20 +345,20 @@ describe("GgmlSileroVad", () => {
|
|
|
345
345
|
vadProbs: [0.01],
|
|
346
346
|
});
|
|
347
347
|
const resolved = await resolveVadProvider({
|
|
348
|
-
|
|
348
|
+
externalVad: {
|
|
349
349
|
isAvailable: () => true,
|
|
350
|
-
loadVad: async () =>
|
|
350
|
+
loadVad: async () => externalVad,
|
|
351
351
|
},
|
|
352
352
|
ffi,
|
|
353
353
|
ctx: 1n,
|
|
354
354
|
});
|
|
355
355
|
|
|
356
|
-
expect(resolved.id).toBe("
|
|
357
|
-
expect(resolved.vad).toBe(
|
|
356
|
+
expect(resolved.id).toBe("external-vad");
|
|
357
|
+
expect(resolved.vad).toBe(externalVad);
|
|
358
358
|
|
|
359
359
|
const det = await createVadDetector({
|
|
360
|
-
|
|
361
|
-
loadVad: async () =>
|
|
360
|
+
externalVad: {
|
|
361
|
+
loadVad: async () => externalVad,
|
|
362
362
|
},
|
|
363
363
|
ffi,
|
|
364
364
|
ctx: 1n,
|
|
@@ -388,15 +388,15 @@ describe("GgmlSileroVad", () => {
|
|
|
388
388
|
});
|
|
389
389
|
|
|
390
390
|
it("createSileroVadDetector goes through the unified resolver", async () => {
|
|
391
|
-
// The
|
|
391
|
+
// The external adapter short-circuits resolution before any
|
|
392
392
|
// FFI / model-file checks run, which exercises the unified resolver
|
|
393
393
|
// end-to-end without needing a libelizainference build.
|
|
394
|
-
const
|
|
394
|
+
const externalVad = new ScriptedSilero([
|
|
395
395
|
0.01, 0.9, 0.9, 0.02, 0.02, 0.02, 0.02, 0.02,
|
|
396
396
|
]);
|
|
397
397
|
const det = await createSileroVadDetector({
|
|
398
|
-
|
|
399
|
-
loadVad: async () =>
|
|
398
|
+
externalVad: {
|
|
399
|
+
loadVad: async () => externalVad,
|
|
400
400
|
},
|
|
401
401
|
config: {
|
|
402
402
|
onsetThreshold: 0.5,
|
|
@@ -477,4 +477,22 @@ describe("GgmlSileroVad", () => {
|
|
|
477
477
|
rmSync(dir, { recursive: true, force: true });
|
|
478
478
|
}
|
|
479
479
|
});
|
|
480
|
+
|
|
481
|
+
it("accepts the bundled silero-vad-v5.gguf alias used by published bundles", async () => {
|
|
482
|
+
const dir = mkdtempSync(path.join(os.tmpdir(), "fused-vad-gguf-"));
|
|
483
|
+
try {
|
|
484
|
+
const gguf = path.join(dir, "vad", "silero-vad-v5.gguf");
|
|
485
|
+
mkdirSync(path.dirname(gguf), { recursive: true });
|
|
486
|
+
writeFileSync(gguf, "");
|
|
487
|
+
const ffi = fakeFfi("x", { vadSupported: true, vadProbs: [0.1] });
|
|
488
|
+
const resolved = await resolveVadProvider({
|
|
489
|
+
ffi,
|
|
490
|
+
ctx: 1n,
|
|
491
|
+
bundleRoot: dir,
|
|
492
|
+
});
|
|
493
|
+
expect(resolved.id).toBe("silero-ggml");
|
|
494
|
+
} finally {
|
|
495
|
+
rmSync(dir, { recursive: true, force: true });
|
|
496
|
+
}
|
|
497
|
+
});
|
|
480
498
|
});
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* acoustic activity right now".
|
|
10
10
|
*
|
|
11
11
|
* Tier 2 — a model VAD provider. Resolver order is an optional injected
|
|
12
|
-
*
|
|
12
|
+
* external VAD adapter when supplied, otherwise the fused
|
|
13
13
|
* `libelizainference` Silero v5 VAD ABI (`eliza_inference_vad_*`,
|
|
14
14
|
* backend id `silero-ggml`). 512-sample windows at 16 kHz (32 ms
|
|
15
15
|
* hop), one speech probability per window. This is the
|
|
@@ -61,9 +61,13 @@ export class VadUnavailableError extends Error {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
/** Relative
|
|
65
|
-
* bundle. The file is read by `libelizainference`'s native VAD ABI. */
|
|
64
|
+
/** Relative paths of the fused Silero v5 model inside an Eliza-1 bundle. */
|
|
66
65
|
const SILERO_VAD_GGML_REL_PATH = path.join("vad", "silero-vad-v5.1.2.ggml.bin");
|
|
66
|
+
const SILERO_VAD_GGUF_REL_PATH = path.join("vad", "silero-vad-v5.gguf");
|
|
67
|
+
const SILERO_VAD_REL_PATHS = [
|
|
68
|
+
SILERO_VAD_GGML_REL_PATH,
|
|
69
|
+
SILERO_VAD_GGUF_REL_PATH,
|
|
70
|
+
] as const;
|
|
67
71
|
|
|
68
72
|
/**
|
|
69
73
|
* Resolve the fused-libelizainference Silero GGML VAD model on disk. An
|
|
@@ -71,7 +75,8 @@ const SILERO_VAD_GGML_REL_PATH = path.join("vad", "silero-vad-v5.1.2.ggml.bin");
|
|
|
71
75
|
* result is `null` (no silent substitution of a different model). When
|
|
72
76
|
* `modelPath` is not given the search order is:
|
|
73
77
|
* 1. `<bundleRoot>/vad/silero-vad-v5.1.2.ggml.bin`
|
|
74
|
-
* 2. `<
|
|
78
|
+
* 2. `<bundleRoot>/vad/silero-vad-v5.gguf`
|
|
79
|
+
* 3. `<state-dir>/local-inference/vad/<same filenames>`
|
|
75
80
|
* 3. `$ELIZA_VAD_MODEL_PATH`
|
|
76
81
|
* Returns `null` when none exist.
|
|
77
82
|
*/
|
|
@@ -83,10 +88,10 @@ export function resolveSileroVadPath(opts: {
|
|
|
83
88
|
return existsSync(opts.modelPath) ? path.resolve(opts.modelPath) : null;
|
|
84
89
|
}
|
|
85
90
|
const candidates: Array<string | undefined> = [
|
|
86
|
-
|
|
87
|
-
? path.join(opts.bundleRoot,
|
|
88
|
-
|
|
89
|
-
path.join(localInferenceRoot(),
|
|
91
|
+
...SILERO_VAD_REL_PATHS.map((rel) =>
|
|
92
|
+
opts.bundleRoot ? path.join(opts.bundleRoot, rel) : undefined,
|
|
93
|
+
),
|
|
94
|
+
...SILERO_VAD_REL_PATHS.map((rel) => path.join(localInferenceRoot(), rel)),
|
|
90
95
|
process.env.ELIZA_VAD_MODEL_PATH?.trim() || undefined,
|
|
91
96
|
];
|
|
92
97
|
for (const c of candidates) {
|
|
@@ -371,10 +376,10 @@ export type { VadLike } from "./types.js";
|
|
|
371
376
|
|
|
372
377
|
import type { VadLike } from "./types.js";
|
|
373
378
|
|
|
374
|
-
export type VadProviderId = "
|
|
379
|
+
export type VadProviderId = "external-vad" | "silero-ggml";
|
|
375
380
|
export type VadProviderPreference = "auto" | VadProviderId;
|
|
376
381
|
|
|
377
|
-
export interface
|
|
382
|
+
export interface ExternalVadAdapter {
|
|
378
383
|
isAvailable?(): boolean | Promise<boolean>;
|
|
379
384
|
loadVad(opts: { sampleRate: number }): Promise<VadLike>;
|
|
380
385
|
}
|
|
@@ -389,7 +394,7 @@ export interface CreateVadDetectorOptions {
|
|
|
389
394
|
bundleRoot?: string;
|
|
390
395
|
ffi?: ElizaInferenceFfi | null;
|
|
391
396
|
ctx?: ElizaInferenceContextHandle | (() => ElizaInferenceContextHandle);
|
|
392
|
-
|
|
397
|
+
externalVad?: ExternalVadAdapter | null;
|
|
393
398
|
config?: VadDetectorConfig;
|
|
394
399
|
prefer?: VadProviderPreference;
|
|
395
400
|
}
|
|
@@ -399,10 +404,10 @@ export function vadProviderOrder(
|
|
|
399
404
|
): VadProviderId[] {
|
|
400
405
|
if (prefer !== "auto") return [prefer];
|
|
401
406
|
// `silero-ggml` is the fused `libelizainference` VAD ABI — the sole
|
|
402
|
-
// on-device VAD runtime. The optional injected `
|
|
407
|
+
// on-device VAD runtime. The optional injected `external-vad` adapter is
|
|
403
408
|
// tried first only when a caller supplies one; otherwise the fused engine
|
|
404
409
|
// is the single path, and an unavailable fused VAD fails fast.
|
|
405
|
-
return ["
|
|
410
|
+
return ["external-vad", "silero-ggml"];
|
|
406
411
|
}
|
|
407
412
|
|
|
408
413
|
export async function resolveVadProvider(
|
|
@@ -414,20 +419,20 @@ export async function resolveVadProvider(
|
|
|
414
419
|
|
|
415
420
|
for (const provider of vadProviderOrder(opts.prefer)) {
|
|
416
421
|
switch (provider) {
|
|
417
|
-
case "
|
|
422
|
+
case "external-vad": {
|
|
418
423
|
tried.push(provider);
|
|
419
|
-
if (!opts.
|
|
420
|
-
reasons.push("
|
|
424
|
+
if (!opts.externalVad) {
|
|
425
|
+
reasons.push("external-vad: no adapter supplied");
|
|
421
426
|
break;
|
|
422
427
|
}
|
|
423
|
-
const available = (await opts.
|
|
428
|
+
const available = (await opts.externalVad.isAvailable?.()) ?? true;
|
|
424
429
|
if (!available) {
|
|
425
|
-
reasons.push("
|
|
430
|
+
reasons.push("external-vad: adapter reported unavailable");
|
|
426
431
|
break;
|
|
427
432
|
}
|
|
428
433
|
return {
|
|
429
434
|
id: provider,
|
|
430
|
-
vad: await opts.
|
|
435
|
+
vad: await opts.externalVad.loadVad({ sampleRate }),
|
|
431
436
|
};
|
|
432
437
|
}
|
|
433
438
|
case "silero-ggml": {
|
|
@@ -454,7 +459,7 @@ export async function resolveVadProvider(
|
|
|
454
459
|
if (!modelPath) {
|
|
455
460
|
throw new VadUnavailableError(
|
|
456
461
|
"model-missing",
|
|
457
|
-
`[voice] Fused Silero v5 GGML VAD model not found. Looked for ${
|
|
462
|
+
`[voice] Fused Silero v5 GGML/GGUF VAD model not found. Looked for ${SILERO_VAD_REL_PATHS.join(" or ")} in the Eliza-1 bundle and under ${localInferenceRoot()}, or set ELIZA_VAD_MODEL_PATH.`,
|
|
458
463
|
);
|
|
459
464
|
}
|
|
460
465
|
return {
|
|
@@ -366,9 +366,6 @@ describe("pickVoiceTierSlot", () => {
|
|
|
366
366
|
expect(
|
|
367
367
|
pickVoiceTierSlot({ textModelId: "eliza-1-2b", deviceTier: "GOOD" }),
|
|
368
368
|
).toBe("desktop-2b");
|
|
369
|
-
expect(
|
|
370
|
-
pickVoiceTierSlot({ textModelId: "eliza-1-1_7b", deviceTier: "GOOD" }),
|
|
371
|
-
).toBe("desktop-2b");
|
|
372
369
|
});
|
|
373
370
|
|
|
374
371
|
it("falls through to desktop-2b (the entry tier) for small / unknown ids", () => {
|
|
@@ -237,11 +237,11 @@ export interface VoiceEnsembleBudget {
|
|
|
237
237
|
* the largest co-resident knob is the LM itself.
|
|
238
238
|
*/
|
|
239
239
|
export type VoiceTierSlot =
|
|
240
|
-
| "mobile-2b" // mobile profile: kokoro-q8 + turnsense + ASR
|
|
240
|
+
| "mobile-2b" // mobile profile: kokoro-q8 + turnsense + entry ASR + LM-2B (entry tier), no dedicated embedding
|
|
241
241
|
| "desktop-2b" // 2b LM (entry tier) + full voice stack + embedding
|
|
242
242
|
| "desktop-4b" // 4b LM + full voice stack + embedding
|
|
243
|
-
| "workstation-9b" // 9b LM + omnivoice-Q8 + ASR
|
|
244
|
-
| "workstation-27b"; // 27b LM + omnivoice-Q8 + ASR
|
|
243
|
+
| "workstation-9b" // 9b LM + omnivoice-Q8 + entry ASR + embedding
|
|
244
|
+
| "workstation-27b"; // 27b LM + omnivoice-Q8 + large ASR + embedding
|
|
245
245
|
|
|
246
246
|
const _MB = 1; // alias for readability inside the table
|
|
247
247
|
const _GB = 1024;
|
|
@@ -256,7 +256,7 @@ export const VOICE_ENSEMBLE_BUDGETS: Readonly<
|
|
|
256
256
|
lmKvMb: 0.075 * _GB,
|
|
257
257
|
drafterMb: 0.5 * _GB,
|
|
258
258
|
ttsMb: 0.08 * _GB, // kokoro-q8 ONNX
|
|
259
|
-
asrMb: 0.4 * _GB, //
|
|
259
|
+
asrMb: 0.4 * _GB, // entry Gemma-compatible ASR placeholder budget
|
|
260
260
|
asrMmprojMb: 0.2 * _GB,
|
|
261
261
|
embeddingMb: 0, // pools from the text backbone on the 2b entry tier
|
|
262
262
|
vadMb: 2 * _MB, // silero-vad documented baseline
|
|
@@ -293,7 +293,7 @@ export const VOICE_ENSEMBLE_BUDGETS: Readonly<
|
|
|
293
293
|
embeddingMb: 0.4 * _GB,
|
|
294
294
|
vadMb: 2 * _MB,
|
|
295
295
|
wakeWordMb: 4 * _MB,
|
|
296
|
-
turnDetectorMb: 400 * _MB, // livekit/turn-detector v0.4.1-intl
|
|
296
|
+
turnDetectorMb: 400 * _MB, // livekit/turn-detector v0.4.1-intl semantic model
|
|
297
297
|
emotionMb: 40 * _MB,
|
|
298
298
|
speakerEncoderMb: 10 * _MB,
|
|
299
299
|
transientTtsBufferMb: 1.17 * _GB,
|
|
@@ -320,7 +320,7 @@ export const VOICE_ENSEMBLE_BUDGETS: Readonly<
|
|
|
320
320
|
lmKvMb: 2.75 * _GB,
|
|
321
321
|
drafterMb: 2.6 * _GB,
|
|
322
322
|
ttsMb: 1.28 * _GB,
|
|
323
|
-
asrMb: 1.1 * _GB, //
|
|
323
|
+
asrMb: 1.1 * _GB, // large Gemma-compatible ASR placeholder budget
|
|
324
324
|
asrMmprojMb: 0.3 * _GB,
|
|
325
325
|
embeddingMb: 0.4 * _GB,
|
|
326
326
|
vadMb: 2 * _MB,
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* (f) a cancel mid-`generate` (the producer's `AbortSignal`) stops the turn
|
|
21
21
|
* and doesn't wedge the loop
|
|
22
22
|
*
|
|
23
|
-
* The *real-output* run (a real `eliza-1-
|
|
23
|
+
* The *real-output* run (a real `eliza-1-2b` duet, gated behind the catalog
|
|
24
24
|
* +-fused-build probe) lives in `voice-duet.e2e.test.ts`.
|
|
25
25
|
*/
|
|
26
26
|
|