@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.11-beta.7
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 +83 -0
- package/package.json +81 -15
- package/src/actions/generate-media.d.ts +59 -0
- package/src/actions/generate-media.d.ts.map +1 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.d.ts +23 -0
- package/src/actions/identify-speaker.d.ts.map +1 -0
- package/src/actions/identify-speaker.ts +171 -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/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +807 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -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/backends/apple-foundation.ts +127 -0
- package/src/index.d.ts +7 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.ts +54 -0
- package/src/local-inference-routes.d.ts +38 -0
- package/src/local-inference-routes.d.ts.map +1 -0
- package/src/local-inference-routes.test.ts +344 -0
- package/src/local-inference-routes.ts +1543 -0
- package/src/provider.d.ts +21 -0
- package/src/provider.d.ts.map +1 -0
- package/src/provider.ts +1171 -0
- package/src/routes/compat-helpers.d.ts +18 -0
- package/src/routes/compat-helpers.d.ts.map +1 -0
- package/src/routes/compat-helpers.ts +274 -0
- package/src/routes/family-member-route.d.ts +62 -0
- package/src/routes/family-member-route.d.ts.map +1 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.d.ts +19 -0
- package/src/routes/index.d.ts.map +1 -0
- package/src/routes/index.ts +60 -0
- package/src/routes/live-diarization-route.d.ts +26 -0
- package/src/routes/live-diarization-route.d.ts.map +1 -0
- package/src/routes/live-diarization-route.test.ts +213 -0
- package/src/routes/live-diarization-route.ts +122 -0
- package/src/routes/local-inference-asr-route.d.ts +4 -0
- package/src/routes/local-inference-asr-route.d.ts.map +1 -0
- package/src/routes/local-inference-asr-route.test.ts +190 -0
- package/src/routes/local-inference-asr-route.ts +213 -0
- package/src/routes/local-inference-compat-routes.d.ts +16 -0
- package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/src/routes/local-inference-compat-routes.test.ts +423 -0
- package/src/routes/local-inference-compat-routes.ts +782 -0
- package/src/routes/local-inference-tts-route.d.ts +7 -0
- package/src/routes/local-inference-tts-route.d.ts.map +1 -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/voice-first-run-routes.d.ts +62 -0
- package/src/routes/voice-first-run-routes.d.ts.map +1 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.d.ts +62 -0
- package/src/routes/voice-models-routes.d.ts.map +1 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.d.ts +52 -0
- package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -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/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.d.ts +77 -0
- package/src/runtime/embedding-manager-support.d.ts.map +1 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.d.ts +16 -0
- package/src/runtime/embedding-presets.d.ts.map +1 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.d.ts +14 -0
- package/src/runtime/embedding-warmup-policy.d.ts.map +1 -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.d.ts +53 -0
- package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
- package/src/runtime/ensure-local-inference-handler.ts +1398 -0
- package/src/runtime/index.d.ts +14 -0
- package/src/runtime/index.d.ts.map +1 -0
- package/src/runtime/index.ts +27 -0
- package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
- package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
- package/src/runtime/mobile-local-inference-gate.ts +44 -0
- package/src/runtime/voice-entity-binding.d.ts +103 -0
- package/src/runtime/voice-entity-binding.d.ts.map +1 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
- package/src/runtime/voice-entity-binding.ts +328 -0
- package/src/services/README.md +71 -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-switch-rollback.test.ts +183 -0
- package/src/services/active-model.d.ts +282 -0
- package/src/services/active-model.d.ts.map +1 -0
- package/src/services/active-model.ts +1213 -0
- package/src/services/asr/errors.d.ts +21 -0
- package/src/services/asr/errors.d.ts.map +1 -0
- package/src/services/asr/errors.ts +50 -0
- package/src/services/asr/hash.d.ts +28 -0
- package/src/services/asr/hash.d.ts.map +1 -0
- package/src/services/asr/hash.ts +49 -0
- package/src/services/asr/index.d.ts +76 -0
- package/src/services/asr/index.d.ts.map +1 -0
- package/src/services/asr/index.ts +178 -0
- package/src/services/asr/types.d.ts +91 -0
- package/src/services/asr/types.d.ts.map +1 -0
- package/src/services/asr/types.ts +95 -0
- package/src/services/assignments.d.ts +71 -0
- package/src/services/assignments.d.ts.map +1 -0
- package/src/services/assignments.test.ts +80 -0
- package/src/services/assignments.ts +230 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.d.ts +346 -0
- package/src/services/backend.d.ts.map +1 -0
- package/src/services/backend.ts +612 -0
- package/src/services/bundled-models.d.ts +34 -0
- package/src/services/bundled-models.d.ts.map +1 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.d.ts +206 -0
- package/src/services/cache-bridge.d.ts.map +1 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.d.ts +10 -0
- package/src/services/catalog.d.ts.map +1 -0
- package/src/services/catalog.test.ts +240 -0
- package/src/services/catalog.ts +27 -0
- package/src/services/checkpoint-client.d.ts +109 -0
- package/src/services/checkpoint-client.d.ts.map +1 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.d.ts +102 -0
- package/src/services/cloud-fallback.d.ts.map +1 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/conversation-registry.d.ts +142 -0
- package/src/services/conversation-registry.d.ts.map +1 -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.d.ts +92 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +333 -0
- package/src/services/device-bridge.d.ts +188 -0
- package/src/services/device-bridge.d.ts.map +1 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.d.ts +149 -0
- package/src/services/device-resource-metrics.d.ts.map +1 -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.d.ts +115 -0
- package/src/services/device-tier.d.ts.map +1 -0
- package/src/services/device-tier.test.ts +371 -0
- package/src/services/device-tier.ts +410 -0
- package/src/services/downloader.d.ts +82 -0
- package/src/services/downloader.d.ts.map +1 -0
- package/src/services/downloader.test.ts +724 -0
- package/src/services/downloader.ts +899 -0
- package/src/services/engine-direct-bundle.test.ts +58 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.d.ts +534 -0
- package/src/services/engine.d.ts.map +1 -0
- package/src/services/engine.ts +1891 -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.d.ts +17 -0
- package/src/services/external-scanner.d.ts.map +1 -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 +442 -0
- package/src/services/ffi-streaming-backend.d.ts +180 -0
- package/src/services/ffi-streaming-backend.d.ts.map +1 -0
- package/src/services/ffi-streaming-backend.ts +382 -0
- package/src/services/ffi-streaming-runner.d.ts +122 -0
- package/src/services/ffi-streaming-runner.d.ts.map +1 -0
- package/src/services/ffi-streaming-runner.test.ts +60 -0
- package/src/services/ffi-streaming-runner.ts +354 -0
- package/src/services/ffi-unload-ordering.test.ts +162 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.d.ts +72 -0
- package/src/services/handler-registry.d.ts.map +1 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.d.ts +63 -0
- package/src/services/hardware.d.ts.map +1 -0
- package/src/services/hardware.test.ts +183 -0
- package/src/services/hardware.ts +404 -0
- package/src/services/hf-search.d.ts +26 -0
- package/src/services/hf-search.d.ts.map +1 -0
- package/src/services/hf-search.test.ts +69 -0
- package/src/services/hf-search.ts +420 -0
- package/src/services/image-description-runtime.d.ts +14 -0
- package/src/services/image-description-runtime.d.ts.map +1 -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.d.ts +134 -0
- package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.d.ts +118 -0
- package/src/services/imagegen/backend-selector.d.ts.map +1 -0
- package/src/services/imagegen/backend-selector.ts +281 -0
- package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.d.ts +16 -0
- package/src/services/imagegen/errors.d.ts.map +1 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.d.ts +58 -0
- package/src/services/imagegen/index.d.ts.map +1 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.d.ts +74 -0
- package/src/services/imagegen/mflux.d.ts.map +1 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.d.ts +180 -0
- package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/src/services/imagegen/sd-cpp.ts +718 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.d.ts +181 -0
- package/src/services/imagegen/types.d.ts.map +1 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.d.ts +30 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.ts +225 -0
- package/src/services/inference-capabilities.d.ts +132 -0
- package/src/services/inference-capabilities.d.ts.map +1 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.d.ts +59 -0
- package/src/services/inference-telemetry.d.ts.map +1 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.d.ts +189 -0
- package/src/services/kv-spill.d.ts.map +1 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +356 -0
- package/src/services/latency-trace.d.ts +346 -0
- package/src/services/latency-trace.d.ts.map +1 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.d.ts +96 -0
- package/src/services/llm-streaming-binding.d.ts.map +1 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.d.ts +82 -0
- package/src/services/load-args.d.ts.map +1 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
- package/src/services/manifest/index.d.ts +4 -0
- package/src/services/manifest/index.d.ts.map +1 -0
- package/src/services/manifest/index.ts +66 -0
- package/src/services/manifest/manifest.test.ts +693 -0
- package/src/services/manifest/schema.d.ts +715 -0
- package/src/services/manifest/schema.d.ts.map +1 -0
- package/src/services/manifest/schema.ts +655 -0
- package/src/services/manifest/types.d.ts +30 -0
- package/src/services/manifest/types.d.ts.map +1 -0
- package/src/services/manifest/types.ts +55 -0
- package/src/services/manifest/validator.d.ts +66 -0
- package/src/services/manifest/validator.d.ts.map +1 -0
- package/src/services/manifest/validator.ts +569 -0
- package/src/services/memory-arbiter.d.ts +343 -0
- package/src/services/memory-arbiter.d.ts.map +1 -0
- package/src/services/memory-arbiter.test.ts +419 -0
- package/src/services/memory-arbiter.ts +1000 -0
- package/src/services/memory-monitor.d.ts +119 -0
- package/src/services/memory-monitor.d.ts.map +1 -0
- package/src/services/memory-monitor.test.ts +208 -0
- package/src/services/memory-monitor.ts +296 -0
- package/src/services/memory-pressure.d.ts +127 -0
- package/src/services/memory-pressure.d.ts.map +1 -0
- package/src/services/memory-pressure.ts +413 -0
- package/src/services/mtp-doctor.d.ts +13 -0
- package/src/services/mtp-doctor.d.ts.map +1 -0
- package/src/services/mtp-doctor.ts +78 -0
- package/src/services/network-policy.d.ts +127 -0
- package/src/services/network-policy.d.ts.map +1 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.d.ts +6 -0
- package/src/services/paths.d.ts.map +1 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.d.ts +124 -0
- package/src/services/planner-skeleton.d.ts.map +1 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.d.ts +38 -0
- package/src/services/providers.d.ts.map +1 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +163 -0
- package/src/services/ram-budget.d.ts +110 -0
- package/src/services/ram-budget.d.ts.map +1 -0
- package/src/services/ram-budget.ts +0 -0
- package/src/services/readiness.d.ts +9 -0
- package/src/services/readiness.d.ts.map +1 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.d.ts +111 -0
- package/src/services/recommendation.d.ts.map +1 -0
- package/src/services/recommendation.ts +672 -0
- package/src/services/registry.d.ts +35 -0
- package/src/services/registry.d.ts.map +1 -0
- package/src/services/registry.ts +151 -0
- package/src/services/router-handler.d.ts +92 -0
- package/src/services/router-handler.d.ts.map +1 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +376 -0
- package/src/services/routing-policy.d.ts +55 -0
- package/src/services/routing-policy.d.ts.map +1 -0
- package/src/services/routing-policy.ts +228 -0
- package/src/services/routing-preferences.d.ts +8 -0
- package/src/services/routing-preferences.d.ts.map +1 -0
- package/src/services/routing-preferences.ts +15 -0
- package/src/services/runtime-target.d.ts +98 -0
- package/src/services/runtime-target.d.ts.map +1 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.d.ts +128 -0
- package/src/services/service.d.ts.map +1 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +735 -0
- package/src/services/session-pool.d.ts +72 -0
- package/src/services/session-pool.d.ts.map +1 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.d.ts +23 -0
- package/src/services/structured-output/deterministic-repair.d.ts.map +1 -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.d.ts +311 -0
- package/src/services/structured-output.d.ts.map +1 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/tts/errors.ts +46 -0
- package/src/services/tts/index.ts +214 -0
- package/src/services/tts/tts-audio-cache.ts +235 -0
- package/src/services/tts/types.ts +157 -0
- package/src/services/types.d.ts +19 -0
- package/src/services/types.d.ts.map +1 -0
- package/src/services/types.ts +55 -0
- package/src/services/verify-on-device.d.ts +34 -0
- package/src/services/verify-on-device.d.ts.map +1 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.d.ts +8 -0
- package/src/services/verify.d.ts.map +1 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.d.ts +115 -0
- package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.d.ts +99 -0
- package/src/services/vision/capacitor-llama.d.ts.map +1 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.d.ts +47 -0
- package/src/services/vision/cloud-fallback.d.ts.map +1 -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.d.ts +71 -0
- package/src/services/vision/hash.d.ts.map +1 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.d.ts +95 -0
- package/src/services/vision/index.d.ts.map +1 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.d.ts +73 -0
- package/src/services/vision/llama-server.d.ts.map +1 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.d.ts +153 -0
- package/src/services/vision/types.d.ts.map +1 -0
- package/src/services/vision/types.ts +154 -0
- package/src/services/vision/vast-fallback.d.ts +18 -0
- package/src/services/vision/vast-fallback.d.ts.map +1 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.d.ts +98 -0
- package/src/services/vision-embedding-cache.d.ts.map +1 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +88 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +92 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -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 +197 -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/audio-frame-consumer.d.ts +212 -0
- package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/src/services/voice/audio-frame-consumer.test.ts +343 -0
- package/src/services/voice/audio-frame-consumer.ts +491 -0
- package/src/services/voice/barge-in.d.ts +112 -0
- package/src/services/voice/barge-in.d.ts.map +1 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +336 -0
- package/src/services/voice/cancellation-coordinator.d.ts +127 -0
- package/src/services/voice/cancellation-coordinator.d.ts.map +1 -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.d.ts +199 -0
- package/src/services/voice/checkpoint-manager.d.ts.map +1 -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/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +743 -0
- package/src/services/voice/eager-context-builder.d.ts +170 -0
- package/src/services/voice/eager-context-builder.d.ts.map +1 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -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.d.ts +133 -0
- package/src/services/voice/embedding.d.ts.map +1 -0
- package/src/services/voice/embedding.test.ts +148 -0
- package/src/services/voice/embedding.ts +244 -0
- package/src/services/voice/emotion-attribution.d.ts +68 -0
- package/src/services/voice/emotion-attribution.d.ts.map +1 -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.d.ts +746 -0
- package/src/services/voice/engine-bridge.d.ts.map +1 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2226 -0
- package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/src/services/voice/eot-classifier-ggml.ts +566 -0
- package/src/services/voice/eot-classifier.d.ts +214 -0
- package/src/services/voice/eot-classifier.d.ts.map +1 -0
- package/src/services/voice/eot-classifier.ts +533 -0
- package/src/services/voice/errors.d.ts +20 -0
- package/src/services/voice/errors.d.ts.map +1 -0
- package/src/services/voice/errors.ts +32 -0
- package/src/services/voice/expressive-tags.d.ts +158 -0
- package/src/services/voice/expressive-tags.d.ts.map +1 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.d.ts +636 -0
- package/src/services/voice/ffi-bindings.d.ts.map +1 -0
- package/src/services/voice/ffi-bindings.test.ts +671 -0
- package/src/services/voice/ffi-bindings.ts +3050 -0
- package/src/services/voice/first-line-cache.d.ts +181 -0
- package/src/services/voice/first-line-cache.d.ts.map +1 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.d.ts +51 -0
- package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/src/services/voice/fused-eot-scorer.ts +135 -0
- package/src/services/voice/index.d.ts +91 -0
- package/src/services/voice/index.d.ts.map +1 -0
- package/src/services/voice/index.ts +481 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -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 +231 -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.d.ts +72 -0
- package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -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.d.ts +50 -0
- package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -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.d.ts +92 -0
- package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/src/services/voice/kokoro/runtime-selection.ts +237 -0
- package/src/services/voice/kokoro/types.d.ts +82 -0
- package/src/services/voice/kokoro/types.d.ts.map +1 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.d.ts +30 -0
- package/src/services/voice/kokoro/voices.d.ts.map +1 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.d.ts +135 -0
- package/src/services/voice/lifecycle.d.ts.map +1 -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.d.ts +96 -0
- package/src/services/voice/live-diarization-session.d.ts.map +1 -0
- package/src/services/voice/live-diarization-session.ts +289 -0
- package/src/services/voice/mic-source.d.ts +136 -0
- package/src/services/voice/mic-source.d.ts.map +1 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/optimistic-policy.d.ts +109 -0
- package/src/services/voice/optimistic-policy.d.ts.map +1 -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.d.ts +73 -0
- package/src/services/voice/partial-stabilizer.d.ts.map +1 -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.d.ts +49 -0
- package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.d.ts +76 -0
- package/src/services/voice/phrase-cache.d.ts.map +1 -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.d.ts +62 -0
- package/src/services/voice/phrase-chunker.d.ts.map +1 -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.d.ts +151 -0
- package/src/services/voice/pipeline-impls.d.ts.map +1 -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.d.ts +216 -0
- package/src/services/voice/pipeline.d.ts.map +1 -0
- package/src/services/voice/pipeline.ts +505 -0
- package/src/services/voice/prefill-client.d.ts +123 -0
- package/src/services/voice/prefill-client.d.ts.map +1 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.d.ts +248 -0
- package/src/services/voice/profile-store.d.ts.map +1 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/ring-buffer.d.ts +40 -0
- package/src/services/voice/ring-buffer.d.ts.map +1 -0
- package/src/services/voice/ring-buffer.ts +105 -0
- package/src/services/voice/rollback-queue.d.ts +24 -0
- package/src/services/voice/rollback-queue.d.ts.map +1 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -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.d.ts +87 -0
- package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/scheduler.d.ts +146 -0
- package/src/services/voice/scheduler.d.ts.map +1 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/shared-resources.d.ts +190 -0
- package/src/services/voice/shared-resources.d.ts.map +1 -0
- package/src/services/voice/shared-resources.ts +320 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -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.d.ts +75 -0
- package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -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.d.ts +33 -0
- package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.d.ts +37 -0
- package/src/services/voice/speaker/encoder.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.d.ts +83 -0
- package/src/services/voice/speaker-imprint.d.ts.map +1 -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.d.ts +77 -0
- package/src/services/voice/speaker-preset-cache.d.ts.map +1 -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.d.ts +73 -0
- package/src/services/voice/system-audio-sink.d.ts.map +1 -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.d.ts +244 -0
- package/src/services/voice/transcriber.d.ts.map +1 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/turn-controller.d.ts +183 -0
- package/src/services/voice/turn-controller.d.ts.map +1 -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.d.ts +643 -0
- package/src/services/voice/types.d.ts.map +1 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.d.ts +282 -0
- package/src/services/voice/vad.d.ts.map +1 -0
- package/src/services/voice/vad.test.ts +480 -0
- package/src/services/voice/vad.ts +827 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.d.ts +241 -0
- package/src/services/voice/voice-budget.d.ts.map +1 -0
- package/src/services/voice/voice-budget.test.ts +420 -0
- package/src/services/voice/voice-budget.ts +656 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -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-preset-format.d.ts +158 -0
- package/src/services/voice/voice-preset-format.d.ts.map +1 -0
- package/src/services/voice/voice-preset-format.ts +700 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.d.ts +116 -0
- package/src/services/voice/voice-profile-artifact.d.ts.map +1 -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.d.ts +83 -0
- package/src/services/voice/voice-profile-routes.d.ts.map +1 -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.ts +154 -0
- package/src/services/voice/voice-settings.d.ts +82 -0
- package/src/services/voice/voice-settings.d.ts.map +1 -0
- package/src/services/voice/voice-settings.ts +172 -0
- package/src/services/voice/voice-state-machine.d.ts +364 -0
- package/src/services/voice/voice-state-machine.d.ts.map +1 -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 +326 -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.d.ts +101 -0
- package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/src/services/voice/wake-word-ggml.ts +320 -0
- package/src/services/voice/wake-word.d.ts +255 -0
- package/src/services/voice/wake-word.d.ts.map +1 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.d.ts +240 -0
- package/src/services/voice-model-updater.d.ts.map +1 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.d.ts +3 -0
- package/src/services/voice-prewarm.d.ts.map +1 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/dist/index.d.ts +0 -37
- package/dist/index.js +0 -1098
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-side exports for plugin-local-inference.
|
|
3
|
+
*
|
|
4
|
+
* Consumers (app-core/runtime/eliza.ts, agent bootstrap) import from
|
|
5
|
+
* `@elizaos/plugin-local-inference/runtime` to wire boot-time handler
|
|
6
|
+
* registration, embedding warm-up policy, and the mobile inference gate.
|
|
7
|
+
*/
|
|
8
|
+
export { DEFAULT_MODELS_DIR, type EmbeddingProgressCallback, embeddingGgufFilePresent, ensureModel, findExistingEmbeddingModelForWarmupReuse, isEmbeddingWarmupReuseDisabled, } from "./embedding-manager-support.js";
|
|
9
|
+
export { detectEmbeddingPreset } from "./embedding-presets.js";
|
|
10
|
+
export { shouldWarmupLocalEmbeddingModel } from "./embedding-warmup-policy.js";
|
|
11
|
+
export { ensureLocalInferenceHandler } from "./ensure-local-inference-handler.js";
|
|
12
|
+
export { shouldEnableMobileLocalInference } from "./mobile-local-inference-gate.js";
|
|
13
|
+
export { type EmitVoiceTurnObservedArgs, emitVoiceTurnObserved, getVoiceProfileStore, handleVoiceEntityBound, setVoiceEntityBindingStore, } from "./voice-entity-binding.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACN,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,wBAAwB,EACxB,WAAW,EACX,wCAAwC,EACxC,8BAA8B,GAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EACN,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,GAC1B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-side exports for plugin-local-inference.
|
|
3
|
+
*
|
|
4
|
+
* Consumers (app-core/runtime/eliza.ts, agent bootstrap) import from
|
|
5
|
+
* `@elizaos/plugin-local-inference/runtime` to wire boot-time handler
|
|
6
|
+
* registration, embedding warm-up policy, and the mobile inference gate.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
DEFAULT_MODELS_DIR,
|
|
11
|
+
type EmbeddingProgressCallback,
|
|
12
|
+
embeddingGgufFilePresent,
|
|
13
|
+
ensureModel,
|
|
14
|
+
findExistingEmbeddingModelForWarmupReuse,
|
|
15
|
+
isEmbeddingWarmupReuseDisabled,
|
|
16
|
+
} from "./embedding-manager-support.js";
|
|
17
|
+
export { detectEmbeddingPreset } from "./embedding-presets.js";
|
|
18
|
+
export { shouldWarmupLocalEmbeddingModel } from "./embedding-warmup-policy.js";
|
|
19
|
+
export { ensureLocalInferenceHandler } from "./ensure-local-inference-handler.js";
|
|
20
|
+
export { shouldEnableMobileLocalInference } from "./mobile-local-inference-gate.js";
|
|
21
|
+
export {
|
|
22
|
+
type EmitVoiceTurnObservedArgs,
|
|
23
|
+
emitVoiceTurnObserved,
|
|
24
|
+
getVoiceProfileStore,
|
|
25
|
+
handleVoiceEntityBound,
|
|
26
|
+
setVoiceEntityBindingStore,
|
|
27
|
+
} from "./voice-entity-binding.js";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* On a mobile platform (`ELIZA_PLATFORM=android` / `ios`) the runtime skips
|
|
3
|
+
* nearly every boot helper because they shell out to subprocesses,
|
|
4
|
+
* platform-specific binaries, or optional packages that aren't in the mobile
|
|
5
|
+
* bundle. Three mobile-safe inference paths need wiring:
|
|
6
|
+
*
|
|
7
|
+
* - `ELIZA_DEVICE_BRIDGE_ENABLED=1`: the agent (this process) hosts the
|
|
8
|
+
* device-bridge WSS and dials whichever paired device connects. On the
|
|
9
|
+
* Capacitor APK the WebView's `@elizaos/capacitor-llama` is the intended
|
|
10
|
+
* dialer over loopback. The Capacitor build always exports this env so
|
|
11
|
+
* the bridge is ready as soon as first-run picks the local mode.
|
|
12
|
+
*
|
|
13
|
+
* - `ELIZA_LOCAL_LLAMA=1`: AOSP path that loads `libllama.so` directly
|
|
14
|
+
* inside the Android process via `bun:ffi`. Wired here so the gate is
|
|
15
|
+
* in place ahead of sub-task 2 — the AOSP build flag flips this on.
|
|
16
|
+
*
|
|
17
|
+
* - `process.arch === "riscv64"`: `capacitor-llama` has no riscv64 prebuild
|
|
18
|
+
* and we can't NAPI-build it on-device, so the in-process FFI path
|
|
19
|
+
* (same loader contract as the AOSP path) is the only viable option.
|
|
20
|
+
* Auto-firing here keeps the riscv64 mobile boot path zero-config; an
|
|
21
|
+
* operator can hard-disable via `ELIZA_DISABLE_FFI_LLAMA=1` to skip the
|
|
22
|
+
* loader and route inference through Cloud instead. See
|
|
23
|
+
* `plugin-aosp-local-inference/src/aosp-llama-adapter.ts:isAospEnabled`
|
|
24
|
+
* and `plugin-local-inference/src/runtime/ensure-local-inference-handler.ts:shouldAttemptAospLlamaLoader`
|
|
25
|
+
* — the three predicates agree on the trigger set.
|
|
26
|
+
*
|
|
27
|
+
* Kept dependency-free so it can be unit-tested without instantiating the
|
|
28
|
+
* full runtime.
|
|
29
|
+
*/
|
|
30
|
+
export declare function shouldEnableMobileLocalInference(env?: NodeJS.ProcessEnv, arch?: NodeJS.Architecture): boolean;
|
|
31
|
+
//# sourceMappingURL=mobile-local-inference-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-local-inference-gate.d.ts","sourceRoot":"","sources":["mobile-local-inference-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gCAAgC,CAC/C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAM,CAAC,YAA2B,GACtC,OAAO,CAWT"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { shouldEnableMobileLocalInference } from "./mobile-local-inference-gate";
|
|
3
|
+
|
|
4
|
+
describe("shouldEnableMobileLocalInference", () => {
|
|
5
|
+
it("returns false when no env flags and arch is not riscv64", () => {
|
|
6
|
+
expect(shouldEnableMobileLocalInference({}, "x64")).toBe(false);
|
|
7
|
+
expect(shouldEnableMobileLocalInference({}, "arm64")).toBe(false);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("returns true when ELIZA_DEVICE_BRIDGE_ENABLED=1", () => {
|
|
11
|
+
expect(
|
|
12
|
+
shouldEnableMobileLocalInference(
|
|
13
|
+
{ ELIZA_DEVICE_BRIDGE_ENABLED: "1" },
|
|
14
|
+
"x64",
|
|
15
|
+
),
|
|
16
|
+
).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("returns true when ELIZA_LOCAL_LLAMA=1", () => {
|
|
20
|
+
expect(
|
|
21
|
+
shouldEnableMobileLocalInference({ ELIZA_LOCAL_LLAMA: "1" }, "x64"),
|
|
22
|
+
).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("auto-fires on riscv64 with no env flags", () => {
|
|
26
|
+
// node-llama-cpp has no riscv64 prebuild; the FFI loader (which dlopens
|
|
27
|
+
// the cross-built libllama.so) is the only in-process llama.cpp path
|
|
28
|
+
// available on riscv64, so the gate auto-fires there.
|
|
29
|
+
expect(shouldEnableMobileLocalInference({}, "riscv64")).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("ELIZA_DISABLE_FFI_LLAMA=1 hard-disables the riscv64 auto-fire", () => {
|
|
33
|
+
// Operator opt-out: route inference to Cloud instead of the on-device
|
|
34
|
+
// FFI path. The device-bridge is process-external and unaffected.
|
|
35
|
+
expect(
|
|
36
|
+
shouldEnableMobileLocalInference(
|
|
37
|
+
{ ELIZA_DISABLE_FFI_LLAMA: "1" },
|
|
38
|
+
"riscv64",
|
|
39
|
+
),
|
|
40
|
+
).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("ELIZA_DISABLE_FFI_LLAMA=1 does not block the device-bridge path", () => {
|
|
44
|
+
expect(
|
|
45
|
+
shouldEnableMobileLocalInference(
|
|
46
|
+
{
|
|
47
|
+
ELIZA_DISABLE_FFI_LLAMA: "1",
|
|
48
|
+
ELIZA_DEVICE_BRIDGE_ENABLED: "1",
|
|
49
|
+
},
|
|
50
|
+
"riscv64",
|
|
51
|
+
),
|
|
52
|
+
).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("ELIZA_DISABLE_FFI_LLAMA=1 suppresses ELIZA_LOCAL_LLAMA=1 too", () => {
|
|
56
|
+
// `ELIZA_LOCAL_LLAMA` is the AOSP/FFI in-process trigger, so the
|
|
57
|
+
// disable flag must override it. Otherwise a riscv64 operator who set
|
|
58
|
+
// disable would still be forced into the FFI path on an AOSP build.
|
|
59
|
+
expect(
|
|
60
|
+
shouldEnableMobileLocalInference(
|
|
61
|
+
{
|
|
62
|
+
ELIZA_DISABLE_FFI_LLAMA: "1",
|
|
63
|
+
ELIZA_LOCAL_LLAMA: "1",
|
|
64
|
+
},
|
|
65
|
+
"riscv64",
|
|
66
|
+
),
|
|
67
|
+
).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* On a mobile platform (`ELIZA_PLATFORM=android` / `ios`) the runtime skips
|
|
3
|
+
* nearly every boot helper because they shell out to subprocesses,
|
|
4
|
+
* platform-specific binaries, or optional packages that aren't in the mobile
|
|
5
|
+
* bundle. Three mobile-safe inference paths need wiring:
|
|
6
|
+
*
|
|
7
|
+
* - `ELIZA_DEVICE_BRIDGE_ENABLED=1`: the agent (this process) hosts the
|
|
8
|
+
* device-bridge WSS and dials whichever paired device connects. On the
|
|
9
|
+
* Capacitor APK the WebView's `@elizaos/capacitor-llama` is the intended
|
|
10
|
+
* dialer over loopback. The Capacitor build always exports this env so
|
|
11
|
+
* the bridge is ready as soon as first-run picks the local mode.
|
|
12
|
+
*
|
|
13
|
+
* - `ELIZA_LOCAL_LLAMA=1`: AOSP path that loads `libllama.so` directly
|
|
14
|
+
* inside the Android process via `bun:ffi`. Wired here so the gate is
|
|
15
|
+
* in place ahead of sub-task 2 — the AOSP build flag flips this on.
|
|
16
|
+
*
|
|
17
|
+
* - `process.arch === "riscv64"`: `capacitor-llama` has no riscv64 prebuild
|
|
18
|
+
* and we can't NAPI-build it on-device, so the in-process FFI path
|
|
19
|
+
* (same loader contract as the AOSP path) is the only viable option.
|
|
20
|
+
* Auto-firing here keeps the riscv64 mobile boot path zero-config; an
|
|
21
|
+
* operator can hard-disable via `ELIZA_DISABLE_FFI_LLAMA=1` to skip the
|
|
22
|
+
* loader and route inference through Cloud instead. See
|
|
23
|
+
* `plugin-aosp-local-inference/src/aosp-llama-adapter.ts:isAospEnabled`
|
|
24
|
+
* and `plugin-local-inference/src/runtime/ensure-local-inference-handler.ts:shouldAttemptAospLlamaLoader`
|
|
25
|
+
* — the three predicates agree on the trigger set.
|
|
26
|
+
*
|
|
27
|
+
* Kept dependency-free so it can be unit-tested without instantiating the
|
|
28
|
+
* full runtime.
|
|
29
|
+
*/
|
|
30
|
+
export function shouldEnableMobileLocalInference(
|
|
31
|
+
env: NodeJS.ProcessEnv = process.env,
|
|
32
|
+
arch: NodeJS.Architecture = process.arch,
|
|
33
|
+
): boolean {
|
|
34
|
+
if (env.ELIZA_DISABLE_FFI_LLAMA?.trim() === "1") {
|
|
35
|
+
// Operator opted out of the FFI path entirely — the device-bridge
|
|
36
|
+
// path remains valid because the bridge is process-external and
|
|
37
|
+
// doesn't depend on `libllama.so` being present in the APK.
|
|
38
|
+
return env.ELIZA_DEVICE_BRIDGE_ENABLED?.trim() === "1";
|
|
39
|
+
}
|
|
40
|
+
const deviceBridge = env.ELIZA_DEVICE_BRIDGE_ENABLED?.trim() === "1";
|
|
41
|
+
const localLlama = env.ELIZA_LOCAL_LLAMA?.trim() === "1";
|
|
42
|
+
const riscv64Auto = arch === "riscv64";
|
|
43
|
+
return deviceBridge || localLlama || riscv64Auto;
|
|
44
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice ⇄ entity binding seam (producer + round-trip consumer).
|
|
3
|
+
*
|
|
4
|
+
* Producer (`emitVoiceTurnObserved`): emit `VOICE_TURN_OBSERVED` so a
|
|
5
|
+
* merge-engine owner (plugin-lifeops) can fold the recognized voice turn
|
|
6
|
+
* into the entity/relationship graph. The voice-profile store is owned
|
|
7
|
+
* here; the entity graph is owned there; the only shared surface is the
|
|
8
|
+
* core event seam — neither plugin imports the other.
|
|
9
|
+
*
|
|
10
|
+
* Consumer (`handleVoiceEntityBound`): when the merge engine reports a
|
|
11
|
+
* binding via `VOICE_ENTITY_BOUND`, persist the resulting `entityId` onto
|
|
12
|
+
* every profile in that imprint cluster (`VoiceProfileStore.bindEntity`).
|
|
13
|
+
* This is the runtime path that was missing in issue #8234 — without it a
|
|
14
|
+
* profile's `entityId` stayed `null` and recognized speakers never reached
|
|
15
|
+
* the relationship graph.
|
|
16
|
+
*/
|
|
17
|
+
import { type IAgentRuntime, type VoiceEntityBoundPayload } from "@elizaos/core";
|
|
18
|
+
import type { VoiceTurnSignal } from "../services/voice/eot-classifier.js";
|
|
19
|
+
import { VoiceProfileStore } from "../services/voice/profile-store.js";
|
|
20
|
+
import type { VoiceAttributionOutput } from "../services/voice/speaker/attribution-pipeline.js";
|
|
21
|
+
export declare function setVoiceEntityBindingStore(store: VoiceProfileStore | null): void;
|
|
22
|
+
export declare function getVoiceProfileStore(): Promise<VoiceProfileStore>;
|
|
23
|
+
export interface EmitVoiceTurnObservedArgs {
|
|
24
|
+
/** Stable utterance id; a random one is minted when omitted. */
|
|
25
|
+
turnId?: string;
|
|
26
|
+
/** Recognized text (drives name/partner-claim extraction downstream). */
|
|
27
|
+
text: string;
|
|
28
|
+
/** Imprint cluster id from the voice-profile store. */
|
|
29
|
+
imprintClusterId: string;
|
|
30
|
+
/** Confidence of the imprint match (0..1). */
|
|
31
|
+
matchConfidence: number;
|
|
32
|
+
/** Entity the imprint already resolved to, or `null`/omitted when unbound. */
|
|
33
|
+
matchedEntityId?: string | null;
|
|
34
|
+
/** True when the OWNER spoke this turn. */
|
|
35
|
+
isOwner?: boolean;
|
|
36
|
+
/** ISO timestamp; defaults to now. */
|
|
37
|
+
observedAt?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Emit `VOICE_TURN_OBSERVED`. No-op in effect when no merge-engine plugin
|
|
41
|
+
* is loaded (the event simply has no handler). `emitEvent` awaits every
|
|
42
|
+
* handler, so by the time this resolves the binding round-trip (including
|
|
43
|
+
* `VOICE_ENTITY_BOUND` → profile persist) has completed.
|
|
44
|
+
*/
|
|
45
|
+
export declare function emitVoiceTurnObserved(runtime: IAgentRuntime, args: EmitVoiceTurnObservedArgs): Promise<void>;
|
|
46
|
+
export interface HandleLiveVoiceAttributionOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Entity id the agent treats as the device owner / primary enrolled
|
|
49
|
+
* speaker. A turn attributed to this entity is always allowed to speak.
|
|
50
|
+
*/
|
|
51
|
+
ownerEntityId?: string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Entity ids the agent answers to without a wake word (owner + enrolled
|
|
54
|
+
* household members). A confident bystander is anyone attributed to an
|
|
55
|
+
* entity NOT in this set.
|
|
56
|
+
*/
|
|
57
|
+
knownSpeakerEntityIds?: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* The EOT-based turn signal the turn-controller already computed for this
|
|
60
|
+
* turn (from `eot-classifier` / `turn-controller`). The speaker decision is
|
|
61
|
+
* folded into it. When omitted, a neutral base is synthesized from
|
|
62
|
+
* `endOfTurnProbability` (default 0.5 — "unknown", fail open).
|
|
63
|
+
*/
|
|
64
|
+
baseSignal?: VoiceTurnSignal;
|
|
65
|
+
/** P(turn complete) when no `baseSignal` is supplied (default 0.5). */
|
|
66
|
+
endOfTurnProbability?: number;
|
|
67
|
+
/** True when a wake word fired within the recent listen window. */
|
|
68
|
+
wakeWordActive?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* The ASR transcript for this turn, joined from the streaming-ASR path. When
|
|
71
|
+
* provided it rides on `VOICE_TURN_OBSERVED` (and the turn signal) so the
|
|
72
|
+
* merge engine's name/partner extraction (`VoiceObserver.ingestTurn`) runs
|
|
73
|
+
* from LIVE audio — previously this was hardcoded `""`, so live recognition
|
|
74
|
+
* could identify *who* spoke but never *what* they said (#8786). Diarization-
|
|
75
|
+
* only callers (audio-frame path) leave it unset; the in-process voice engine
|
|
76
|
+
* (which has both ASR + diarization) passes the real transcript.
|
|
77
|
+
*/
|
|
78
|
+
transcript?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Handle a live per-turn attribution result. This is the single automatic seam
|
|
82
|
+
* the engine bridge calls from its `onAttribution` path: any caller that wires a
|
|
83
|
+
* `profileStore` gets diarization-driven gating for free.
|
|
84
|
+
*
|
|
85
|
+
* 1. Emits `VOICE_TURN_OBSERVED` when the turn produced a profile observation
|
|
86
|
+
* (so the merge engine can fold the recognized speaker into the entity
|
|
87
|
+
* graph and round-trip the binding back onto the profile).
|
|
88
|
+
* 2. Composes the EOT-based turn signal with the speaker decision and stamps it
|
|
89
|
+
* onto `output.turn.metadata.voiceTurnSignal`, which the chat-view producer
|
|
90
|
+
* forwards to the server gate verbatim.
|
|
91
|
+
*
|
|
92
|
+
* Returns the composed signal (also written onto the turn metadata in place).
|
|
93
|
+
* Never throws on the emit path — observation emission is best-effort and is
|
|
94
|
+
* logged, never propagated, so an attribution turn never crashes a voice turn.
|
|
95
|
+
*/
|
|
96
|
+
export declare function handleLiveVoiceAttribution(runtime: IAgentRuntime, output: VoiceAttributionOutput, opts?: HandleLiveVoiceAttributionOptions): Promise<VoiceTurnSignal>;
|
|
97
|
+
/**
|
|
98
|
+
* Handler for `VOICE_ENTITY_BOUND`. Persists `entityId` onto every profile
|
|
99
|
+
* in the cluster that is not already bound to it. Returns nothing (the
|
|
100
|
+
* `EventHandler` contract); the bound count is logged.
|
|
101
|
+
*/
|
|
102
|
+
export declare function handleVoiceEntityBound(payload: VoiceEntityBoundPayload): Promise<void>;
|
|
103
|
+
//# sourceMappingURL=voice-entity-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-entity-binding.d.ts","sourceRoot":"","sources":["voice-entity-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAEN,KAAK,aAAa,EAGlB,KAAK,uBAAuB,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAEX,eAAe,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAQhG,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAC7B,IAAI,CAEN;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOvE;AAMD,MAAM,WAAW,yBAAyB;IACzC,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAWf;AAWD,MAAM,WAAW,iCAAiC;IACjD;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAqFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,sBAAsB,EAC9B,IAAI,GAAE,iCAAsC,GAC1C,OAAO,CAAC,eAAe,CAAC,CA2C1B;AAMD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { EventType } from "@elizaos/core";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import type { VoiceAttributionOutput } from "../services/voice/speaker/attribution-pipeline.js";
|
|
5
|
+
import { handleLiveVoiceAttribution } from "./voice-entity-binding.js";
|
|
6
|
+
|
|
7
|
+
/** Minimal attribution output with an observation (drives the emit path). */
|
|
8
|
+
function output(): VoiceAttributionOutput {
|
|
9
|
+
return {
|
|
10
|
+
turnId: "t1",
|
|
11
|
+
primarySpeaker: { entityId: "entity-jill", confidence: 0.6 },
|
|
12
|
+
observation: {
|
|
13
|
+
imprintClusterId: "cluster-1",
|
|
14
|
+
confidence: 0.6,
|
|
15
|
+
entityId: "entity-jill",
|
|
16
|
+
},
|
|
17
|
+
turn: { metadata: {} },
|
|
18
|
+
segments: [],
|
|
19
|
+
} as unknown as VoiceAttributionOutput;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function captureRuntime(): {
|
|
23
|
+
runtime: IAgentRuntime;
|
|
24
|
+
events: Array<{ type: unknown; payload: Record<string, unknown> }>;
|
|
25
|
+
} {
|
|
26
|
+
const events: Array<{ type: unknown; payload: Record<string, unknown> }> = [];
|
|
27
|
+
const runtime = {
|
|
28
|
+
emitEvent: async (type: unknown, payload: Record<string, unknown>) => {
|
|
29
|
+
events.push({ type, payload });
|
|
30
|
+
},
|
|
31
|
+
} as unknown as IAgentRuntime;
|
|
32
|
+
return { runtime, events };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
describe("handleLiveVoiceAttribution — transcript carry (#8786)", () => {
|
|
36
|
+
it("rides the real transcript on VOICE_TURN_OBSERVED when provided", async () => {
|
|
37
|
+
const { runtime, events } = captureRuntime();
|
|
38
|
+
await handleLiveVoiceAttribution(runtime, output(), {
|
|
39
|
+
ownerEntityId: "entity-jill",
|
|
40
|
+
transcript: "I'm Jill",
|
|
41
|
+
});
|
|
42
|
+
const observed = events.find(
|
|
43
|
+
(e) => e.type === EventType.VOICE_TURN_OBSERVED,
|
|
44
|
+
);
|
|
45
|
+
expect(observed).toBeDefined();
|
|
46
|
+
// Was hardcoded "" — the merge engine's name extraction needs the text.
|
|
47
|
+
expect(observed?.payload.text).toBe("I'm Jill");
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("falls back to '' for diarization-only callers (no transcript)", async () => {
|
|
51
|
+
const { runtime, events } = captureRuntime();
|
|
52
|
+
await handleLiveVoiceAttribution(runtime, output(), {
|
|
53
|
+
ownerEntityId: "entity-jill",
|
|
54
|
+
});
|
|
55
|
+
const observed = events.find(
|
|
56
|
+
(e) => e.type === EventType.VOICE_TURN_OBSERVED,
|
|
57
|
+
);
|
|
58
|
+
expect(observed?.payload.text).toBe("");
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("also stamps the transcript onto the synthesized turn signal", async () => {
|
|
62
|
+
const { runtime } = captureRuntime();
|
|
63
|
+
const signal = await handleLiveVoiceAttribution(runtime, output(), {
|
|
64
|
+
ownerEntityId: "entity-jill",
|
|
65
|
+
transcript: "Jill is my wife",
|
|
66
|
+
});
|
|
67
|
+
expect(signal.transcript).toBe("Jill is my wife");
|
|
68
|
+
});
|
|
69
|
+
});
|