@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shaw Walters and elizaOS Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# @elizaos/plugin-local-inference
|
|
2
|
+
|
|
3
|
+
Eliza-1 local inference provider for elizaOS. Serves text generation, embeddings, text-to-speech, ASR, image generation, and image description entirely on-device — no network required after model download.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
- **Text generation** (`TEXT_SMALL`, `TEXT_LARGE`) via an in-process llama.cpp FFI binding. There are two text runtime classes, picked per model by the dispatcher (`services/backend.ts`):
|
|
8
|
+
- **fused Eliza-1 bundles** (`runtimeClass: "fused-eliza1"`) run through the fused `libelizainference` (`desktop-fused-ffi-backend-runtime.ts`) — the full local pipeline: manifest-gated MTP speculative decoding, fork kernels where applicable, native tokenization over the active Eliza-1 bundle tokenizer, and fused voice/vision/ASR. This is the default/recommended path.
|
|
9
|
+
- **generic single-file GGUF** (`runtimeClass: "generic-gguf"`) — a model you downloaded/scanned (Hugging Face / ModelScope / LM Studio / Ollama) loaded from an explicit `modelPath` with stock f16 KV and *reduced optimizations* (no MTP, no fork kernels, no fused voice/vision). The explicit-`modelPath` binding ships on mobile (`llama-cpp-capacitor`); on desktop it is not yet built into the shipping `libelizainference`, so an assigned generic model is rejected at the assignment boundary with a typed reason rather than failing silently at load.
|
|
10
|
+
- `node-llama-cpp` has been retired; there is no node-llama-cpp fallback.
|
|
11
|
+
- **Text embeddings** (`TEXT_EMBEDDING`) via a dedicated embedding GGUF loaded separately from the chat model.
|
|
12
|
+
- **Text-to-speech** (`TEXT_TO_SPEECH`) via the local Kokoro/OmniVoice runtime selected by tier and policy.
|
|
13
|
+
- **Automatic speech recognition** (`TRANSCRIPTION`) via the eligible bundled local ASR head in fused `libelizainference`; there is no whisper.cpp fallback.
|
|
14
|
+
- **Image generation** (`IMAGE`) via sd.cpp, CoreML (Apple Silicon), mflux, TensorRT, or AOSP backends; selected by hardware and catalog entry.
|
|
15
|
+
- **Image description / vision** (`IMAGE_DESCRIPTION`) via the tier-matched Eliza-1 multimodal projector attached to the active text model.
|
|
16
|
+
- **Model catalog, download management, and hardware-fit recommendation** exposed as HTTP routes for the elizaOS dashboard.
|
|
17
|
+
- **Voice pipeline**: barge-in, VAD, speaker imprint, phrase streaming, voice profiles, and first-run onboarding.
|
|
18
|
+
|
|
19
|
+
## Capabilities added to an Eliza agent
|
|
20
|
+
|
|
21
|
+
| Capability | How it appears |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `GENERATE_MEDIA` action | Agent responds to "draw me a ...", "say ...", "speak ...", etc. by calling the local image or TTS backend. |
|
|
24
|
+
| `TEXT_SMALL` / `TEXT_LARGE` handler | Agent uses the active Eliza-1 text model for all reasoning and response generation. |
|
|
25
|
+
| `TEXT_EMBEDDING` handler | Agent embeds memories using the local embedding GGUF; avoids cloud API calls for RAG. |
|
|
26
|
+
| `TEXT_TO_SPEECH` handler | Agent converts text to audio using the selected local TTS backend. |
|
|
27
|
+
| `TRANSCRIPTION` handler | Agent transcribes audio using the eligible bundled local ASR runtime. |
|
|
28
|
+
| `IMAGE` handler | Agent generates images using the active local diffusion backend. |
|
|
29
|
+
| `IMAGE_DESCRIPTION` handler | Agent describes images using the active multimodal model. |
|
|
30
|
+
|
|
31
|
+
## Requirements
|
|
32
|
+
|
|
33
|
+
- Node.js 20+ or Bun runtime.
|
|
34
|
+
- The fused `libelizainference` native library for the desktop text/voice/vision path (built from `tools/omnivoice`; resolved via `ELIZA_INFERENCE_LIBRARY` / `ELIZA_INFERENCE_LIB_DIR` or the bundle's `lib/` dir). Generic single-file GGUF additionally needs the explicit-`modelPath` binding (`llama-cpp-capacitor` on mobile).
|
|
35
|
+
- Native binaries for optional capabilities: `sd.cpp` for image-gen on Linux/Windows and `mflux` for Apple Silicon image-gen.
|
|
36
|
+
- An Eliza-1 GGUF bundle downloaded via the model catalog (dashboard → Models, or `POST /api/local-inference/downloads`).
|
|
37
|
+
|
|
38
|
+
## Enabling the plugin
|
|
39
|
+
|
|
40
|
+
Add `@elizaos/plugin-local-inference` to the `plugins` array in your elizaOS agent character or bootstrap configuration:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import localInferencePlugin from "@elizaos/plugin-local-inference";
|
|
44
|
+
|
|
45
|
+
const agent = new AgentRuntime({
|
|
46
|
+
plugins: [localInferencePlugin],
|
|
47
|
+
// ...
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The plugin registers its model handlers at priority `−100`. The routing-policy layer (not raw priority) controls whether a given request is served locally or by a cloud provider. Users configure this in the dashboard under Settings → Model Routing.
|
|
52
|
+
|
|
53
|
+
## Configuration
|
|
54
|
+
|
|
55
|
+
Key environment variables (all optional unless noted):
|
|
56
|
+
|
|
57
|
+
| Variable | Purpose |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `MODELS_DIR` | Override the GGUF model directory (default: `~/.eliza/models`) |
|
|
60
|
+
| `LOCAL_SMALL_MODEL` | Small model filename (mobile/Capacitor adapter) |
|
|
61
|
+
| `LOCAL_LARGE_MODEL` | Large model filename (mobile/Capacitor adapter) |
|
|
62
|
+
| `ELIZA_DEFER_LOCAL_EMBEDDING_WARMUP` | Set truthy to defer startup GGUF embedding prefetch until the dev/runtime server is ready |
|
|
63
|
+
| `ELIZA_SKIP_LOCAL_EMBEDDING_WARMUP` | Set truthy to skip GGUF embedding prefetch entirely while leaving local embedding settings intact |
|
|
64
|
+
| `ELIZA_ENABLE_STARTUP_LOCAL_EMBEDDING_WARMUP` | Desktop startup opt-in that starts GGUF embedding warmup during runtime bootstrap when no skip/defer override is set |
|
|
65
|
+
| `ELIZA_DISABLE_LOCAL_EMBEDDINGS` | Set `1` to disable local `TEXT_EMBEDDING` registration entirely |
|
|
66
|
+
| `ELIZA_IMAGEGEN_ACCELERATOR` | Force image-gen backend: `coreml`, `mflux`, `sd-cpp`, `tensorrt` |
|
|
67
|
+
| `ELIZA_DEVICE_BRIDGE_ENABLED` | Enable iOS/AOSP physical device bridge |
|
|
68
|
+
| `SD_CPP_BIN` | Absolute path to sd.cpp binary |
|
|
69
|
+
| `MFLUX_BIN` | Absolute path to mflux binary |
|
|
70
|
+
| `ELIZA_KOKORO_DEFAULT_VOICE_ID` | Default Kokoro TTS voice |
|
|
71
|
+
|
|
72
|
+
## Architecture notes
|
|
73
|
+
|
|
74
|
+
The plugin exposes these subpath exports (see `package.json` `exports`):
|
|
75
|
+
|
|
76
|
+
- `@elizaos/plugin-local-inference` — plugin object, `GENERATE_MEDIA` action, `handleLocalInferenceRoutes`, embedding presets.
|
|
77
|
+
- `@elizaos/plugin-local-inference/runtime` — boot-time handler registration (`ensureLocalInferenceHandler`), embedding warm-up policy, mobile gate.
|
|
78
|
+
- `@elizaos/plugin-local-inference/runtime/embedding-presets` — `detectEmbeddingPreset`, `EMBEDDING_PRESETS`.
|
|
79
|
+
- `@elizaos/plugin-local-inference/routes` — HTTP route handlers (`handleLocalInferenceCompatRoutes`, TTS/ASR, voice) mounted by app-core.
|
|
80
|
+
- `@elizaos/plugin-local-inference/services` — full service surfaces (engine, arbiter, catalog, recommendation, voice) for deep integrations.
|
|
81
|
+
|
|
82
|
+
The **MemoryArbiter** (`services/memory-arbiter.ts`) is the single coordination point for all model handles across modalities. On memory-constrained devices (mobile, low-RAM desktop), the arbiter evicts models by priority before loading a new one. Cross-plugin consumers (vision, image-gen) register capabilities via `arbiter.registerCapability(...)` rather than loading models independently.
|
|
83
|
+
|
|
84
|
+
## Voice Workbench (#8785)
|
|
85
|
+
|
|
86
|
+
This package hosts the **Voice Workbench** — one scenario/corpus/benchmark
|
|
87
|
+
harness that unifies what used to be five disjoint voice-test families behind a
|
|
88
|
+
single entrypoint, scenario format, and metric module.
|
|
89
|
+
|
|
90
|
+
### Entrypoint
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bun run --cwd plugins/plugin-local-inference voice:workbench \
|
|
94
|
+
[--mock|--logic|--real] [--out <dir>] [--baseline <report.json>]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- `--mock` (default) — ground-truth mock services; the CI plumbing lane (no
|
|
98
|
+
model, no network). Runs + passes.
|
|
99
|
+
- `--logic` — the shipped decision logic (EOT / respond / echo / bystander /
|
|
100
|
+
wake-word gate + name extraction) over the corpus, without acoustic models.
|
|
101
|
+
CI-runnable; catches a regression in the decision layer.
|
|
102
|
+
- `--real` — real local acoustic backend; any scenario without a provisioned
|
|
103
|
+
real service reports `skipped`, never a false `pass` (the honesty contract).
|
|
104
|
+
- `--baseline <path>` — compare metrics against a golden report; exit 1 on any
|
|
105
|
+
metric regression past tolerance (the regression gate).
|
|
106
|
+
|
|
107
|
+
It writes one machine-readable `report.json` plus a Markdown rendering — WER,
|
|
108
|
+
EOT latency + false-trigger rate, diarization DER, respond accuracy,
|
|
109
|
+
entity-match, first-audio/TTFT latency — via `workbench-entrypoint.ts` +
|
|
110
|
+
`voice-workbench-report.ts`.
|
|
111
|
+
|
|
112
|
+
### Pieces
|
|
113
|
+
|
|
114
|
+
- **Scenario schema** — `services/voice/voice-scenario.ts`: a declarative
|
|
115
|
+
`VoiceScenario` (participants + ordered turns + assertions) that both the
|
|
116
|
+
headless runner and the headful player execute and the benchmark layer scores,
|
|
117
|
+
covering every class: multi-voice, pauses, respond/no-respond, multi-speaker,
|
|
118
|
+
diarization, entity-extraction, voice→entity match, EOT, transcription-mode,
|
|
119
|
+
multi-agent room, and the long-form monologue.
|
|
120
|
+
- **Corpus generator** — `corpus:generate` (`scripts/generate-voice-corpus.ts`)
|
|
121
|
+
TTS-synthesizes each turn, splices pauses, and mixes multi-speaker streams into
|
|
122
|
+
a versioned labeled corpus (PCM + ground-truth JSON). Robustness DSP
|
|
123
|
+
(noise / reverb / gain / low-quality-line) lives in `corpus-augment.ts`.
|
|
124
|
+
- **Single scoring module** — `services/voice/e2e-harness.ts` is the one shared
|
|
125
|
+
source of truth for voice scoring (`scoreTtsAsrRoundTrip`, `scoreEotDecision`,
|
|
126
|
+
`scoreDiarization`, `scoreRespondDecision`, `scoreEntityExtraction`,
|
|
127
|
+
`scoreVoiceEntityMatch`, `scoreEchoRejection`, `scoreOwnerSecurity`, …); WER
|
|
128
|
+
itself is `@elizaos/shared/voice-wer`. The duplicate `wordErrorRate` that used
|
|
129
|
+
to live in the headful `voice-selftest-harness.ts` is gone — it imports the
|
|
130
|
+
shared one.
|
|
131
|
+
- **Headless runner** — `workbench-headless-runner.ts` drives each scenario class
|
|
132
|
+
through the real services and scores it; an absent corpus/backend yields
|
|
133
|
+
`skipped`, never `pass`.
|
|
134
|
+
- **scenario-runner audio turn** — `packages/scenario-runner/src/voice-turn.ts`
|
|
135
|
+
adds a `voice` turn kind so voice scenarios are first-class `.scenario.ts`
|
|
136
|
+
files over a real `AgentRuntime`.
|
|
137
|
+
- **Headful specs** — `packages/app/test/ui-smoke/voice-workbench-*.spec.ts` (one
|
|
138
|
+
per scenario class) drive the real frontend client pipeline with a per-turn
|
|
139
|
+
DOM-mirrored verdict.
|
|
140
|
+
- **Real-model lanes** (dev hosts with a built engine + staged models):
|
|
141
|
+
`roundtrip:real` (cloud-TTS → local ASR → fast cloud LLM → cloud-TTS),
|
|
142
|
+
`robustness:real` (WER under noise / reverb / far-field / telephone),
|
|
143
|
+
`voicestack:real` (speaker recognition / diarization / VAD / local TTS),
|
|
144
|
+
`agentvoice:real` (agent-self-voice rejection + overlapping speakers).
|
|
145
|
+
- **CI** — `.github/workflows/voice-workbench.yml` runs the `--logic` lane plus
|
|
146
|
+
the regression baseline on every change to the voice surface.
|
|
147
|
+
|
|
148
|
+
### Legacy harnesses it absorbs
|
|
149
|
+
|
|
150
|
+
The workbench is the single home for what was previously fragmented across a pure
|
|
151
|
+
scoring lib (`e2e-harness.ts`, now promoted to the source of truth), a two-agent
|
|
152
|
+
`voice:duet` harness, native `packages/benchmarks/voice/*.mjs` scenarios, Python
|
|
153
|
+
benches, and the single-turn headful self-test (`voice-selftest`). Those remain
|
|
154
|
+
runnable, but **new** voice coverage should be authored as a `VoiceScenario` +
|
|
155
|
+
corpus and scored through `e2e-harness.ts`, not as a new bespoke harness.
|
|
156
|
+
|
|
157
|
+
For agent-facing documentation see `CLAUDE.md` / `AGENTS.md` in this directory.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module plugin-local-inference/actions/generate-media
|
|
3
|
+
*
|
|
4
|
+
* Unified `GENERATE_MEDIA` agent action.
|
|
5
|
+
*
|
|
6
|
+
* Routes a single user-facing intent to the appropriate `runtime.useModel(...)`
|
|
7
|
+
* call:
|
|
8
|
+
*
|
|
9
|
+
* - image → `ModelType.IMAGE` (WS3 arbiter, returns PNG bytes)
|
|
10
|
+
* - audio → `ModelType.TEXT_TO_SPEECH` (Eliza-1 / local TTS, returns PCM/WAV/MP3)
|
|
11
|
+
* - video → unavailable in the local backend; refuses with a clean message
|
|
12
|
+
*
|
|
13
|
+
* Intent classification is keyword-first (cheap, deterministic) with an
|
|
14
|
+
* optional `ModelType.TEXT_SMALL` JSON fallback for ambiguous prompts. The
|
|
15
|
+
* prompt body is extracted by stripping any leading imperative ("draw me a ",
|
|
16
|
+
* "say ", "speak in spanish: ") so that downstream models see a clean
|
|
17
|
+
* description.
|
|
18
|
+
*
|
|
19
|
+
* Trajectory hook: result `data.computerUseAction` is set to a stable
|
|
20
|
+
* marker (`GENERATE_MEDIA_IMAGE` / `GENERATE_MEDIA_AUDIO`) so the trajectory
|
|
21
|
+
* logger picks the action up exactly the way it picks up
|
|
22
|
+
* `plugin-computeruse` actions.
|
|
23
|
+
*/
|
|
24
|
+
import { type Action, type ActionResult, type HandlerCallback, type IAgentRuntime, type Memory } from "@elizaos/core";
|
|
25
|
+
export type MediaKind = "image" | "audio" | "video";
|
|
26
|
+
interface IntentDetection {
|
|
27
|
+
kind: MediaKind;
|
|
28
|
+
prompt: string;
|
|
29
|
+
source: "keyword" | "classifier";
|
|
30
|
+
}
|
|
31
|
+
type ClassifierFn = (prompt: string) => Promise<MediaKind | null>;
|
|
32
|
+
export interface IntentDetectorOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Optional override for the text-classifier fallback. Tests inject a
|
|
35
|
+
* deterministic classifier; in production this is bound to
|
|
36
|
+
* `runtime.useModel(ModelType.TEXT_SMALL, ...)`.
|
|
37
|
+
*/
|
|
38
|
+
classifier?: ClassifierFn;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Detect the media intent from a user message.
|
|
42
|
+
*
|
|
43
|
+
* Algorithm:
|
|
44
|
+
* 1. Try keyword rules first (cheap, deterministic).
|
|
45
|
+
* 2. If nothing matched and a classifier is provided, ask it for a JSON
|
|
46
|
+
* label. Trust the classifier only when it returns one of our three
|
|
47
|
+
* kinds; otherwise return `null` so the caller can decline.
|
|
48
|
+
*/
|
|
49
|
+
export declare function detectMediaIntent(text: string, options?: IntentDetectorOptions): Promise<IntentDetection | null>;
|
|
50
|
+
interface BuildHandlerOptions {
|
|
51
|
+
/** Test seam: override the intent detector. */
|
|
52
|
+
detectIntent: typeof detectMediaIntent;
|
|
53
|
+
/** Test seam: override the classifier resolver. */
|
|
54
|
+
classifierFactory: (runtime: IAgentRuntime) => ClassifierFn;
|
|
55
|
+
}
|
|
56
|
+
export declare function buildGenerateMediaHandler(opts?: Partial<BuildHandlerOptions>): (runtime: IAgentRuntime, message: Memory, _state?: unknown, _options?: unknown, callback?: HandlerCallback) => Promise<ActionResult>;
|
|
57
|
+
export declare const generateMediaAction: Action;
|
|
58
|
+
export default generateMediaAction;
|
|
59
|
+
//# sourceMappingURL=generate-media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-media.d.ts","sourceRoot":"","sources":["../../src/actions/generate-media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACN,KAAK,MAAM,EACX,KAAK,YAAY,EAGjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAIlB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;AAMvB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,UAAU,eAAe;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC;CACjC;AAoED,KAAK,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;CAC1B;AAsBD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CASjC;AAoND,UAAU,mBAAmB;IAC5B,+CAA+C;IAC/C,YAAY,EAAE,OAAO,iBAAiB,CAAC;IACvC,mDAAmD;IACnD,iBAAiB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,CAAC;CAC5D;AAED,wBAAgB,yBAAyB,CACxC,IAAI,GAAE,OAAO,CAAC,mBAAmB,CAAM,IAKtC,SAAS,aAAa,EACtB,SAAS,MAAM,EACf,SAAS,OAAO,EAChB,WAAW,OAAO,EAClB,WAAW,eAAe,KACxB,OAAO,CAAC,YAAY,CAAC,CAsJxB;AAoBD,eAAO,MAAM,mBAAmB,EAAE,MA4EjC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module plugin-local-inference/actions/identify-speaker
|
|
3
|
+
*
|
|
4
|
+
* `IDENTIFY_SPEAKER` agent action — the explicit, user-driven half of the
|
|
5
|
+
* voice → entity binding (issue #8234, shape #2).
|
|
6
|
+
*
|
|
7
|
+
* When the OWNER names a voice the agent just heard but hasn't identified
|
|
8
|
+
* ("that was Jill", "this is my friend Sam"), this action binds the most
|
|
9
|
+
* recently observed *unidentified* speaker profile to a named person. It
|
|
10
|
+
* does not touch the entity graph directly — it emits `VOICE_TURN_OBSERVED`
|
|
11
|
+
* so the merge engine (plugin-lifeops) creates/merges the Entity, then the
|
|
12
|
+
* round-trip `VOICE_ENTITY_BOUND` handler persists `entityId` back onto the
|
|
13
|
+
* voice profile. If no merge-engine plugin is loaded the action is inert
|
|
14
|
+
* beyond logging intent.
|
|
15
|
+
*
|
|
16
|
+
* Target selection: an explicit `profileId` option wins; otherwise the
|
|
17
|
+
* single most-recently-observed profile whose `entityId` is still `null`
|
|
18
|
+
* (i.e. "the person who just spoke and isn't known yet").
|
|
19
|
+
*/
|
|
20
|
+
import { type Action } from "@elizaos/core";
|
|
21
|
+
export declare function extractSpeakerName(text: string): string | null;
|
|
22
|
+
export declare const identifySpeakerAction: Action;
|
|
23
|
+
//# sourceMappingURL=identify-speaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identify-speaker.d.ts","sourceRoot":"","sources":["../../src/actions/identify-speaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,KAAK,MAAM,EAMX,MAAM,eAAe,CAAC;AA8BvB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS9D;AA8FD,eAAO,MAAM,qBAAqB,EAAE,MAUnC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* START_TRANSCRIPTION / STOP_TRANSCRIPTION agent actions (#8789).
|
|
3
|
+
*
|
|
4
|
+
* The agent can turn long-form voice transcription on/off on the user's device.
|
|
5
|
+
* Transcription CAPTURE is client-side (the mic lives in the renderer shell), so
|
|
6
|
+
* the action can't toggle it directly — it emits a one-way `voice-control`
|
|
7
|
+
* command on the AgentEventService bus. That stream is forwarded to every
|
|
8
|
+
* connected client as an `agent_event`; the renderer re-dispatches it to the
|
|
9
|
+
* shell's capture toggle (the same server→client pattern as `shell:navigate`).
|
|
10
|
+
* Best-effort + non-blocking: if no client is connected the event is simply
|
|
11
|
+
* dropped, and the action reports intent, not capture success.
|
|
12
|
+
*/
|
|
13
|
+
import { type Action, type IAgentRuntime } from "@elizaos/core";
|
|
14
|
+
/** Bus stream the renderer subscribes to for mic/transcription control. */
|
|
15
|
+
export declare const VOICE_CONTROL_STREAM = "voice-control";
|
|
16
|
+
export type VoiceControlCommand = "start" | "stop";
|
|
17
|
+
/** The payload shape the client matches on. */
|
|
18
|
+
export interface VoiceControlEvent {
|
|
19
|
+
type: "voice-control";
|
|
20
|
+
command: VoiceControlCommand;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Emit a transcription control command to connected clients. Returns false when
|
|
24
|
+
* no event bus is available (e.g. headless) so callers can report honestly.
|
|
25
|
+
*/
|
|
26
|
+
export declare function emitVoiceControl(runtime: IAgentRuntime, command: VoiceControlCommand): boolean;
|
|
27
|
+
export declare const startTranscriptionAction: Action;
|
|
28
|
+
export declare const stopTranscriptionAction: Action;
|
|
29
|
+
//# sourceMappingURL=transcription-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcription-control.d.ts","sourceRoot":"","sources":["../../src/actions/transcription-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACN,KAAK,MAAM,EAGX,KAAK,aAAa,EAKlB,MAAM,eAAe,CAAC;AAEvB,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,mBAAmB,CAAC;CAC7B;AAYD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAWT;AAgCD,eAAO,MAAM,wBAAwB,EAAE,MAetC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAcrC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const configSchema: z.ZodObject<{
|
|
3
|
+
LOCAL_SMALL_MODEL: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
4
|
+
LOCAL_LARGE_MODEL: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
5
|
+
LOCAL_EMBEDDING_MODEL: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
6
|
+
MODELS_DIR: z.ZodOptional<z.ZodString>;
|
|
7
|
+
CACHE_DIR: z.ZodOptional<z.ZodString>;
|
|
8
|
+
LOCAL_EMBEDDING_DIMENSIONS: z.ZodPipe<z.ZodDefault<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type Config = z.infer<typeof configSchema>;
|
|
11
|
+
export declare function validateConfig(): Config;
|
|
12
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;;;;;iBAWvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,wBAAgB,cAAc,IAAI,MAAM,CAgDvC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-unavailable Capacitor-llama adapter. Browsers cannot run
|
|
3
|
+
* `libllama.so` directly; callers should proxy through a server or switch
|
|
4
|
+
* providers. All model handlers throw with a clear message.
|
|
5
|
+
*/
|
|
6
|
+
import type { Plugin } from "@elizaos/core";
|
|
7
|
+
export declare const localAiPlugin: Plugin;
|
|
8
|
+
export default localAiPlugin;
|
|
9
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/index.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAIX,MAAM,EAEN,MAAM,eAAe,CAAC;AAoCvB,eAAO,MAAM,aAAa,EAAE,MAgC3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-AI plugin backed by the Capacitor-llama adapter.
|
|
3
|
+
*
|
|
4
|
+
* This is the unified replacement for the legacy capacitor-llama adapter.
|
|
5
|
+
* It registers a `Plugin` that handles `ModelType.TEXT_SMALL/LARGE/EMBEDDING`
|
|
6
|
+
* via `CapacitorLlamaContext` — a single contract that resolves to
|
|
7
|
+
* `llama-cpp-capacitor` on mobile and the desktop bun:ffi adapter on
|
|
8
|
+
* desktop. Both load THE vendored llama.cpp at
|
|
9
|
+
* `plugins/plugin-local-inference/native/llama.cpp/` (Wave 2's cross-compiles).
|
|
10
|
+
*
|
|
11
|
+
* `capacitor-llama` is NEVER imported here.
|
|
12
|
+
*/
|
|
13
|
+
import { type Plugin } from "@elizaos/core";
|
|
14
|
+
export declare const localAiPlugin: Plugin;
|
|
15
|
+
export default localAiPlugin;
|
|
16
|
+
export { type NativePcmVoiceTurn, NativePcmVoiceTurnCoordinator, type NativePcmVoiceTurnCoordinatorOptions, type NativePcmVoiceTurnResult, } from "./native-voice-capture";
|
|
17
|
+
export { type CapacitorTextRunnerOptions, createCapacitorMtpTextRunner, type DeviceVoiceEngine, type RunDeviceVoiceTurnArgs, runDeviceVoiceTurn, type VoiceTurnExitReason, } from "./voice-turn";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqBH,OAAO,EAKN,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;AAilBvB,eAAO,MAAM,aAAa,EAAE,MA+K3B,CAAC;AAEF,eAAe,aAAa,CAAC;AAQ7B,OAAO,EACN,KAAK,kBAAkB,EACvB,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,wBAAwB,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,KAAK,mBAAmB,GACxB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical Capacitor-llama loader — MOBILE ONLY.
|
|
3
|
+
*
|
|
4
|
+
* `initCapacitorLlama(params)` returns a context that implements
|
|
5
|
+
* `CapacitorLlamaContext` by dynamic-importing `llama-cpp-capacitor` on
|
|
6
|
+
* `ELIZA_PLATFORM=android|ios`. The package's `LlamaContext` already implements
|
|
7
|
+
* the canonical shape verbatim, so we return it directly with an `as` cast (the
|
|
8
|
+
* d.ts overlaps by construction).
|
|
9
|
+
*
|
|
10
|
+
* The Capacitor llama API is mobile-only. libllama has been retired, so there
|
|
11
|
+
* is no desktop façade: desktop / server inference runs through the fused
|
|
12
|
+
* `libelizainference` engine (`LocalInferenceEngine` /
|
|
13
|
+
* `desktopFusedFfiBackendRuntime`), not this loader. `initCapacitorLlama` on a
|
|
14
|
+
* non-mobile platform throws `CapacitorLlamaUnsupportedError`.
|
|
15
|
+
*/
|
|
16
|
+
import { type CapacitorLlamaContext, type CapacitorLlamaContextParams } from "./types";
|
|
17
|
+
export interface InitCapacitorLlamaOptions extends CapacitorLlamaContextParams {
|
|
18
|
+
/**
|
|
19
|
+
* Force a specific backend. Only `mobile` is supported — it requires the
|
|
20
|
+
* `llama-cpp-capacitor` package. The desktop façade was removed when
|
|
21
|
+
* libllama was retired; desktop inference runs through the fused engine.
|
|
22
|
+
*/
|
|
23
|
+
backend?: "mobile";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load a Capacitor-shaped llama.cpp context. Mobile-only: on
|
|
27
|
+
* `ELIZA_PLATFORM=android|ios` it resolves `llama-cpp-capacitor`; on any other
|
|
28
|
+
* platform it throws `CapacitorLlamaUnsupportedError` (libllama is retired —
|
|
29
|
+
* desktop/server inference runs through the fused `libelizainference` engine,
|
|
30
|
+
* not this loader). Callers MUST handle the throw explicitly.
|
|
31
|
+
*/
|
|
32
|
+
export declare function initCapacitorLlama(opts: InitCapacitorLlamaOptions): Promise<CapacitorLlamaContext>;
|
|
33
|
+
/** Mobile-only: release every context. No-op on desktop. */
|
|
34
|
+
export declare function releaseAllCapacitorLlama(): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAEhC,MAAM,SAAS,CAAC;AAiCjB,MAAM,WAAW,yBAA0B,SAAQ,2BAA2B;IAC7E;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;CACnB;AAQD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAgBhC;AAED,4DAA4D;AAC5D,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAW9D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native PCM capture coordinator for the Capacitor / AOSP voice path.
|
|
3
|
+
*
|
|
4
|
+
* Platform mic front-ends own capture and VAD/turn segmentation. This class is
|
|
5
|
+
* the TypeScript bridge they call with a completed PCM turn: it serializes the
|
|
6
|
+
* turn through {@link runDeviceVoiceTurn}, which joins ASR, speaker attribution,
|
|
7
|
+
* response policy, text generation, and TTS in the fused voice path.
|
|
8
|
+
*/
|
|
9
|
+
import type { VoicePipelineEvents } from "../../services/voice/pipeline";
|
|
10
|
+
import type { TranscriptionAudio } from "../../services/voice/types";
|
|
11
|
+
import type { VoicePreloadPredictor } from "../../services/voice/voice-preload-predictor";
|
|
12
|
+
import type { CapacitorLlamaContext } from "./types";
|
|
13
|
+
import { type CapacitorTextRunnerOptions, type DeviceVoiceEngine, type VoiceTurnExitReason } from "./voice-turn";
|
|
14
|
+
export interface NativePcmVoiceTurn {
|
|
15
|
+
/** Captured mic PCM for one VAD-completed native turn. */
|
|
16
|
+
audio: TranscriptionAudio;
|
|
17
|
+
/** Optional host turn id, useful for traces and logs. */
|
|
18
|
+
turnId?: string;
|
|
19
|
+
/** Per-turn event hooks. Falls back to coordinator defaults when omitted. */
|
|
20
|
+
events?: VoicePipelineEvents;
|
|
21
|
+
/** Per-turn generated-token cap. Falls back to coordinator defaults. */
|
|
22
|
+
maxGeneratedTokens?: number;
|
|
23
|
+
/** Per-turn sampling overrides. Falls back to coordinator defaults. */
|
|
24
|
+
generation?: CapacitorTextRunnerOptions;
|
|
25
|
+
/** Per-turn preload predictor. Falls back to coordinator defaults. */
|
|
26
|
+
preloadPredictor?: VoicePreloadPredictor;
|
|
27
|
+
}
|
|
28
|
+
export interface NativePcmVoiceTurnCoordinatorOptions {
|
|
29
|
+
/** The engine that owns the armed voice bridge (`startVoice` + `armVoice`). */
|
|
30
|
+
engine: DeviceVoiceEngine;
|
|
31
|
+
/** Loaded on-device text model context for the MTP target verifier. */
|
|
32
|
+
context: CapacitorLlamaContext;
|
|
33
|
+
/** Default pipeline events for every accepted native turn. */
|
|
34
|
+
events?: VoicePipelineEvents;
|
|
35
|
+
/** Default generated-token cap for every accepted native turn. */
|
|
36
|
+
maxGeneratedTokens?: number;
|
|
37
|
+
/** Default sampling overrides for the on-device text runner. */
|
|
38
|
+
generation?: CapacitorTextRunnerOptions;
|
|
39
|
+
/** Default next-stage preload predictor. */
|
|
40
|
+
preloadPredictor?: VoicePreloadPredictor;
|
|
41
|
+
}
|
|
42
|
+
export interface NativePcmVoiceTurnResult {
|
|
43
|
+
turnId?: string;
|
|
44
|
+
exitReason: VoiceTurnExitReason;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Serializes native completed PCM turns into the fused device voice engine.
|
|
48
|
+
*
|
|
49
|
+
* Native capture can emit turns quickly, especially when a flush returns more
|
|
50
|
+
* than one segment. The fused voice bridge only allows one active turn; this
|
|
51
|
+
* coordinator preserves order by queueing each accepted turn after the previous
|
|
52
|
+
* `runDeviceVoiceTurn` settles.
|
|
53
|
+
*/
|
|
54
|
+
export declare class NativePcmVoiceTurnCoordinator {
|
|
55
|
+
private readonly options;
|
|
56
|
+
private queue;
|
|
57
|
+
private running;
|
|
58
|
+
constructor(options: NativePcmVoiceTurnCoordinatorOptions);
|
|
59
|
+
get isRunning(): boolean;
|
|
60
|
+
start(): void;
|
|
61
|
+
stop(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Accept one VAD-completed native PCM turn and run it through the fused
|
|
64
|
+
* device voice path. Throws when the coordinator has not been started so
|
|
65
|
+
* callers cannot accidentally bypass the capture lifecycle.
|
|
66
|
+
*/
|
|
67
|
+
acceptTurn(turn: NativePcmVoiceTurn): Promise<NativePcmVoiceTurnResult>;
|
|
68
|
+
private resolveTurnOptions;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=native-voice-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-voice-capture.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/native-voice-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACxB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IAClC,0DAA0D;IAC1D,KAAK,EAAE,kBAAkB,CAAC;IAC1B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,MAAM,WAAW,oCAAoC;IACpD,+EAA+E;IAC/E,MAAM,EAAE,iBAAiB,CAAC;IAC1B,uEAAuE;IACvE,OAAO,EAAE,qBAAqB,CAAC;IAC/B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,mBAAmB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,oCAAoC;IAIzD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,KAAK,IAAI,IAAI;IAIP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA6BvE,OAAO,CAAC,kBAAkB;CAoB1B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured-output planning on the Capacitor surface.
|
|
3
|
+
*
|
|
4
|
+
* llama.cpp itself supports GBNF grammars and JSON-Schema-as-grammar natively;
|
|
5
|
+
* the Capacitor binding exposes both via `CompletionParams.grammar` (raw GBNF
|
|
6
|
+
* source) and `CompletionParams.response_format` (JSON object or JSON schema).
|
|
7
|
+
*
|
|
8
|
+
* Function-calling is exposed differently than in node-llama-cpp: the
|
|
9
|
+
* Capacitor binding takes a raw `tools` object plus optional `tool_choice` /
|
|
10
|
+
* `parallel_tool_calls` and the model emits an OpenAI-shaped
|
|
11
|
+
* `tool_calls[]` array inside the completion result. We project this back
|
|
12
|
+
* into the elizaOS `ToolCallResult` shape so downstream callers do not care
|
|
13
|
+
* which backend produced the call.
|
|
14
|
+
*/
|
|
15
|
+
import type { JSONSchema, ToolDefinition } from "@elizaos/core";
|
|
16
|
+
import type { CapacitorLlamaCompletionParams, CapacitorLlamaCompletionResult } from "./types";
|
|
17
|
+
export interface ToolCallResult {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
arguments: Record<string, unknown>;
|
|
21
|
+
type: "function";
|
|
22
|
+
}
|
|
23
|
+
export interface StructuredRequestPlan {
|
|
24
|
+
kind: "text" | "tools" | "schema" | "json_object";
|
|
25
|
+
/** Forwarded to `CapacitorLlamaCompletionParams.tools`. */
|
|
26
|
+
tools?: object;
|
|
27
|
+
/** Forwarded to `CapacitorLlamaCompletionParams.response_format`. */
|
|
28
|
+
responseFormat?: CapacitorLlamaCompletionParams["response_format"];
|
|
29
|
+
/** Optional `tool_choice` directive. */
|
|
30
|
+
toolChoice?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build the OpenAI-style `tools` object the Capacitor binding accepts. Each
|
|
34
|
+
* elizaOS `ToolDefinition` becomes one entry of:
|
|
35
|
+
* { type: "function", function: { name, description, parameters } }
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildCapacitorTools(tools: readonly ToolDefinition[]): object;
|
|
38
|
+
/**
|
|
39
|
+
* Extract tool calls from the Capacitor completion result. The binding emits
|
|
40
|
+
* them on `result.tool_calls`; we parse `arguments` JSON and surface the
|
|
41
|
+
* elizaOS shape.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractToolCalls(result: CapacitorLlamaCompletionResult): ToolCallResult[];
|
|
44
|
+
/**
|
|
45
|
+
* Decide which structured-output mode applies. Mirrors the legacy
|
|
46
|
+
* `planStructuredRequest` semantics: tools > schema > generic json > text.
|
|
47
|
+
*/
|
|
48
|
+
export declare function planStructuredRequest(params: {
|
|
49
|
+
tools?: readonly ToolDefinition[];
|
|
50
|
+
responseSchema?: JSONSchema;
|
|
51
|
+
responseFormat?: {
|
|
52
|
+
type: "json_object" | "text";
|
|
53
|
+
} | string | undefined;
|
|
54
|
+
toolChoice?: string;
|
|
55
|
+
}): StructuredRequestPlan;
|
|
56
|
+
/**
|
|
57
|
+
* Apply a `StructuredRequestPlan` onto a `CapacitorLlamaCompletionParams`
|
|
58
|
+
* object, returning a new merged object. Used by the index module right
|
|
59
|
+
* before dispatching the completion.
|
|
60
|
+
*/
|
|
61
|
+
export declare function applyStructuredPlan(params: CapacitorLlamaCompletionParams, plan: StructuredRequestPlan): CapacitorLlamaCompletionParams;
|
|
62
|
+
//# sourceMappingURL=structured-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/structured-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACX,8BAA8B,EAC9B,8BAA8B,EAE9B,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;IAClD,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,cAAc,CAAC,EAAE,8BAA8B,CAAC,iBAAiB,CAAC,CAAC;IACnE,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAqB5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,8BAA8B,GACpC,cAAc,EAAE,CAalB;AAoBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC7C,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS,CAAC;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,qBAAqB,CA+BxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,8BAA8B,EACtC,IAAI,EAAE,qBAAqB,GACzB,8BAA8B,CAOhC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capacitor → `TextStreamResult` bridge.
|
|
3
|
+
*
|
|
4
|
+
* The Capacitor `LlamaContext.completion(params, callback)` API is push-based:
|
|
5
|
+
* `callback` fires once per token. The elizaOS runtime consumes a pull-based
|
|
6
|
+
* `TextStreamResult` (`{ textStream, text, usage, finishReason }`). We bridge
|
|
7
|
+
* the two with a queue-backed async iterator, identical in shape to the
|
|
8
|
+
* legacy node-llama-cpp bridge.
|
|
9
|
+
*/
|
|
10
|
+
import type { TextStreamResult, TokenUsage } from "@elizaos/core";
|
|
11
|
+
import type { CapacitorLlamaCompletionParams, CapacitorLlamaContext } from "./types";
|
|
12
|
+
export interface StreamCapacitorPromptArgs {
|
|
13
|
+
ctx: CapacitorLlamaContext;
|
|
14
|
+
params: CapacitorLlamaCompletionParams;
|
|
15
|
+
estimateUsage: (prompt: string, fullText: string) => TokenUsage;
|
|
16
|
+
onChunk?: (delta: string) => void;
|
|
17
|
+
onComplete?: (info: {
|
|
18
|
+
fullText: string;
|
|
19
|
+
usage: TokenUsage;
|
|
20
|
+
}) => void;
|
|
21
|
+
postProcess?: (raw: string) => string;
|
|
22
|
+
}
|
|
23
|
+
export declare function streamCapacitorPrompt(args: StreamCapacitorPromptArgs): TextStreamResult;
|
|
24
|
+
//# sourceMappingURL=text-streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-streaming.d.ts","sourceRoot":"","sources":["../../../src/adapters/capacitor-llama/text-streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EACX,8BAA8B,EAE9B,qBAAqB,EACrB,MAAM,SAAS,CAAC;AAwEjB,MAAM,WAAW,yBAAyB;IACzC,GAAG,EAAE,qBAAqB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IACvC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;IAChE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,yBAAyB,GAC7B,gBAAgB,CAgIlB"}
|