@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.2
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 +82 -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/actions/transcription-control.d.ts +29 -0
- package/src/actions/transcription-control.d.ts.map +1 -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/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 +8 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.ts +62 -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 +1082 -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 +205 -0
- package/src/routes/local-inference-asr-route.ts +163 -0
- package/src/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/src/routes/local-inference-asr-transcribe.d.ts.map +1 -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.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 +485 -0
- package/src/routes/local-inference-compat-routes.ts +808 -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/transcript-audio-store.d.ts +15 -0
- package/src/routes/transcript-audio-store.d.ts.map +1 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.d.ts +36 -0
- package/src/routes/transcripts-routes.d.ts.map +1 -0
- package/src/routes/transcripts-routes.test.ts +144 -0
- package/src/routes/transcripts-routes.ts +159 -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 +62 -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 +1448 -0
- package/src/runtime/index.d.ts +15 -0
- package/src/runtime/index.d.ts.map +1 -0
- package/src/runtime/index.ts +33 -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/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/bionic-host-loader.d.ts +46 -0
- package/src/services/bionic-host-loader.d.ts.map +1 -0
- package/src/services/bionic-host-loader.test.ts +133 -0
- package/src/services/bionic-host-loader.ts +180 -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 +238 -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 +95 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +339 -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 +747 -0
- package/src/services/downloader.ts +925 -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 +540 -0
- package/src/services/engine.d.ts.map +1 -0
- package/src/services/engine.ts +1909 -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.d.ts +56 -0
- package/src/services/gpu-detect.d.ts.map +1 -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 +231 -0
- package/src/services/hardware.ts +410 -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 +277 -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 +29 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.ts +211 -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 +689 -0
- package/src/services/manifest/schema.d.ts +713 -0
- package/src/services/manifest/schema.d.ts.map +1 -0
- package/src/services/manifest/schema.ts +653 -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 +567 -0
- package/src/services/memory-arbiter.d.ts +318 -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 +925 -0
- package/src/services/memory-monitor.d.ts +122 -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 +297 -0
- package/src/services/memory-pressure.d.ts +130 -0
- package/src/services/memory-pressure.d.ts.map +1 -0
- package/src/services/memory-pressure.ts +414 -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 +671 -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 +407 -0
- package/src/services/routing-policy.d.ts +69 -0
- package/src/services/routing-policy.d.ts.map +1 -0
- package/src/services/routing-policy.test.ts +164 -0
- package/src/services/routing-policy.ts +297 -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 +17 -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/system-memory.d.ts +33 -0
- package/src/services/system-memory.d.ts.map +1 -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.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 +94 -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 +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/asr-timed.real.test.ts +141 -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 +131 -0
- package/src/services/voice/embedding.ts +243 -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 +759 -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 +2302 -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 +674 -0
- package/src/services/voice/ffi-bindings.d.ts.map +1 -0
- package/src/services/voice/ffi-bindings.test.ts +728 -0
- package/src/services/voice/ffi-bindings.ts +3225 -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/real-audio-decode.test.ts +148 -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.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -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/transcript-knowledge.d.ts +37 -0
- package/src/services/voice/transcript-knowledge.d.ts.map +1 -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.d.ts +41 -0
- package/src/services/voice/transcript-service.d.ts.map +1 -0
- package/src/services/voice/transcript-service.test.ts +137 -0
- package/src/services/voice/transcript-service.ts +141 -0
- package/src/services/voice/transcript-store.d.ts +53 -0
- package/src/services/voice/transcript-store.d.ts.map +1 -0
- package/src/services/voice/transcript-store.test.ts +153 -0
- package/src/services/voice/transcript-store.ts +132 -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 +418 -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.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,674 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node/Bun FFI binding to `libelizainference.{dylib,so,dll}`.
|
|
3
|
+
*
|
|
4
|
+
* The fused omnivoice + llama.cpp build (see
|
|
5
|
+
* `packages/app-core/scripts/omnivoice-fuse/`) produces ONE shared
|
|
6
|
+
* library that exports both `llama_*` and `omnivoice_*` symbols plus
|
|
7
|
+
* the C ABI declared in `scripts/omnivoice-fuse/ffi.h`. This module is
|
|
8
|
+
* the JS-side proxy for that ABI — it loads the library, binds every
|
|
9
|
+
* `eliza_inference_*` symbol declared in `ffi.h`, and exposes a typed
|
|
10
|
+
* handle (`ElizaInferenceFfi`) the voice lifecycle calls into.
|
|
11
|
+
*
|
|
12
|
+
* Runtime: production runs under Bun (Electrobun shell, Capacitor
|
|
13
|
+
* bridge), so the loader uses `bun:ffi`. Tests that need to actually
|
|
14
|
+
* load a `.dylib` against a stub library spawn a `bun` subprocess —
|
|
15
|
+
* see `ffi-bindings.test.ts`. Calling this loader from a non-Bun
|
|
16
|
+
* runtime (e.g. plain Node) throws `VoiceLifecycleError({code:
|
|
17
|
+
* "missing-ffi"})` with a diagnostic explaining why.
|
|
18
|
+
*
|
|
19
|
+
* No defensive try/catch on the success path. Any dlopen failure,
|
|
20
|
+
* symbol-resolution failure, or ABI mismatch is a structured throw
|
|
21
|
+
* (AGENTS.md §3 + §9). The caller — `voice/lifecycle.ts` and
|
|
22
|
+
* `voice/engine-bridge.ts` — surfaces it as a `VoiceLifecycleError` to
|
|
23
|
+
* the UI.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* ABI version the JS binding was authored against. Must match the value
|
|
27
|
+
* `eliza_inference_abi_version()` returns at runtime — a mismatch is a
|
|
28
|
+
* hard error (AGENTS.md §3, §9: no silent compatibility shims).
|
|
29
|
+
*
|
|
30
|
+
* Bump in lockstep with `ELIZA_INFERENCE_ABI_VERSION` in
|
|
31
|
+
* `scripts/omnivoice-fuse/ffi.h` whenever the C surface changes shape.
|
|
32
|
+
*
|
|
33
|
+
* v4: the FFI bridge resolves `speaker_preset_id` against the bundle's
|
|
34
|
+
* `cache/voice-preset-<id>.bin` (ELZ2 v2) and applies the
|
|
35
|
+
* `(instruct, ref_audio_tokens, ref_T, ref_text)` triple to
|
|
36
|
+
* `ov_tts_params` before calling `ov_synthesize`. Adds the
|
|
37
|
+
* `eliza_inference_encode_reference` entrypoint that the freeze CLI
|
|
38
|
+
* uses to pre-encode reference WAVs into the preset file. A v3 caller
|
|
39
|
+
* remains source-compatible: every v3 entry point keeps its v3 shape.
|
|
40
|
+
*
|
|
41
|
+
* v5: the FFI bridge gains the native openWakeWord surface
|
|
42
|
+
* (`eliza_inference_wakeword_supported/open/score/reset/close`). It
|
|
43
|
+
* replaces the previous `onnxruntime-node`-backed wake-word path —
|
|
44
|
+
* the JS binding routes wake-word detection exclusively through this
|
|
45
|
+
* ABI with no ONNX fallback (AGENTS.md §3, §8). v4 callers that
|
|
46
|
+
* never touched the wake-word entries are source-compatible.
|
|
47
|
+
*
|
|
48
|
+
* v6: the FFI bridge gains the native speaker-encoder + diarizer
|
|
49
|
+
* surfaces (`eliza_inference_speaker_supported/open/embed/free/close`
|
|
50
|
+
* and `eliza_inference_diariz_supported/open/segment/close`). These
|
|
51
|
+
* fuse the remaining standalone `libvoice_classifier` voice
|
|
52
|
+
* classifiers into the one `libelizainference` handle so the whole
|
|
53
|
+
* voice pipeline runs through a single native lib. v5 callers that
|
|
54
|
+
* never touched the speaker/diarizer entries are source-compatible.
|
|
55
|
+
*
|
|
56
|
+
* v9: the last text-adjacent modalities move onto the fused handle. Three
|
|
57
|
+
* additive surfaces + probes: text embeddings (`embed` / `embedSupported`),
|
|
58
|
+
* mmproj vision describe (`describeImage` / `visionSupported`), and the
|
|
59
|
+
* tokenizer (`tokenize` / `detokenize` / `tokenizeSupported`). With these,
|
|
60
|
+
* libllama is fully retired: text, embeddings, vision, and tokenization all
|
|
61
|
+
* run through the fused handle. A pre-v9 library lacks these symbols, so the
|
|
62
|
+
* probes report unsupported and the fused runtime refuses (there is no
|
|
63
|
+
* libllama fallback). v8 callers that never touched the new entries remain
|
|
64
|
+
* source-compatible (the new probes simply return false on a v8 lib).
|
|
65
|
+
*
|
|
66
|
+
* v10: Kokoro-82M TTS folded in-process. The fused handle gains
|
|
67
|
+
* `eliza_inference_kokoro_supported/load/synthesize/sample_rate` so the
|
|
68
|
+
* mobile Kokoro path synthesizes through the same dlopen()-ed
|
|
69
|
+
* libelizainference as OmniVoice instead of POSTing to the local-TCP
|
|
70
|
+
* `llama-server /v1/audio/speech` route (forbidden on iOS / Google Play).
|
|
71
|
+
* The four symbols are additive — a v9 library lacks them, so the
|
|
72
|
+
* `kokoroSupported()` probe reports false and the Kokoro FFI runtime
|
|
73
|
+
* refuses (no TCP fallback on mobile). A v9 library is still accepted at
|
|
74
|
+
* degraded capability: its voice/ASR/VAD/LLM/text surface is unchanged and
|
|
75
|
+
* Kokoro just probes unsupported on it.
|
|
76
|
+
*/
|
|
77
|
+
export declare const ELIZA_INFERENCE_ABI_VERSION: 12;
|
|
78
|
+
/** One transcribed word with playback-synced timing (ms from utterance start). */
|
|
79
|
+
export interface AsrWordTiming {
|
|
80
|
+
text: string;
|
|
81
|
+
startMs: number;
|
|
82
|
+
endMs: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Recover per-word `{ text, startMs, endMs }` from a v12 timed-ASR result.
|
|
86
|
+
*
|
|
87
|
+
* The native `eliza_inference_asr_transcribe_timed` sizes the `startMs`/`endMs`
|
|
88
|
+
* arrays by splitting the transcript on ASCII whitespace — `std::isspace` in the
|
|
89
|
+
* C locale matches EXACTLY ` \t\n\v\f\r`. We must mirror that split byte-for-byte
|
|
90
|
+
* to recover the word strings: a broader Unicode `\s` split collapses NBSP /
|
|
91
|
+
* ideographic space (U+00A0, U+3000, …) that the native byte split keeps, which
|
|
92
|
+
* would make `tokens` shorter than `count` and silently zip each word's text
|
|
93
|
+
* against a DIFFERENT word's timing — a desync `validateAsrWordTimings` cannot
|
|
94
|
+
* see (it never compares text to count). `count` only falls below the true word
|
|
95
|
+
* count when the caller's `maxWords` cap is hit, in which case the trailing
|
|
96
|
+
* (untimed) words are dropped by `Math.min`.
|
|
97
|
+
*/
|
|
98
|
+
export declare function recoverAsrWords(text: string, count: number, startMs: Int32Array, endMs: Int32Array): AsrWordTiming[];
|
|
99
|
+
/**
|
|
100
|
+
* Pooling strategies for `embed`. Mirror `enum llama_pooling_type` and the
|
|
101
|
+
* `ELIZA_POOLING_*` constants in `eliza-inference-ffi.h`.
|
|
102
|
+
*/
|
|
103
|
+
export declare const ELIZA_POOLING_MEAN = 1;
|
|
104
|
+
export declare const ELIZA_POOLING_CLS = 2;
|
|
105
|
+
export declare const ELIZA_POOLING_LAST = 3;
|
|
106
|
+
/** Status codes mirrored from `ffi.h`. Negative = failure. */
|
|
107
|
+
export declare const ELIZA_OK = 0;
|
|
108
|
+
export declare const ELIZA_ERR_NOT_IMPLEMENTED = -1;
|
|
109
|
+
export declare const ELIZA_ERR_INVALID_ARG = -2;
|
|
110
|
+
export declare const ELIZA_ERR_BUNDLE_INVALID = -3;
|
|
111
|
+
export declare const ELIZA_ERR_FFI_FAULT = -4;
|
|
112
|
+
export declare const ELIZA_ERR_OOM = -5;
|
|
113
|
+
export declare const ELIZA_ERR_ABI_MISMATCH = -6;
|
|
114
|
+
export declare const ELIZA_ERR_CANCELLED = -7;
|
|
115
|
+
/**
|
|
116
|
+
* Region names the lifecycle hands to `mmap_acquire` / `mmap_evict`.
|
|
117
|
+
* Mirrors the set the C stub validates in `ffi-stub.c::valid_region`.
|
|
118
|
+
*/
|
|
119
|
+
export type ElizaInferenceRegion = "tts" | "asr" | "text" | "mtp" | "vad" | "wakeword";
|
|
120
|
+
/**
|
|
121
|
+
* Opaque pointer to the C-side `EliInferenceContext`. Numeric on Bun
|
|
122
|
+
* (FFI returns the raw pointer as `bigint`); never inspected on the JS
|
|
123
|
+
* side beyond passing it back through the binding.
|
|
124
|
+
*/
|
|
125
|
+
export type ElizaInferenceContextHandle = bigint;
|
|
126
|
+
/** Opaque pointer to a native Silero VAD session. */
|
|
127
|
+
export type NativeVadHandle = bigint;
|
|
128
|
+
/** Opaque pointer to a native openWakeWord session. */
|
|
129
|
+
export type NativeWakeWordHandle = bigint;
|
|
130
|
+
/** Opaque pointer to a native WeSpeaker speaker-encoder session. */
|
|
131
|
+
export type NativeSpeakerHandle = bigint;
|
|
132
|
+
/** Opaque pointer to a native pyannote diarizer session. */
|
|
133
|
+
export type NativeDiarizHandle = bigint;
|
|
134
|
+
/** Opaque pointer to a streaming-LLM session. */
|
|
135
|
+
export type LlmStreamHandle = bigint;
|
|
136
|
+
/**
|
|
137
|
+
* Per-session config handed to `llmStreamOpen`. Mirrors
|
|
138
|
+
* `eliza_llm_stream_config_t` in
|
|
139
|
+
* `native/llama.cpp/tools/omnivoice/include/eliza-inference-ffi.h` (ABI v8).
|
|
140
|
+
*/
|
|
141
|
+
export interface LlmStreamConfig {
|
|
142
|
+
maxTokens: number;
|
|
143
|
+
temperature: number;
|
|
144
|
+
topP: number;
|
|
145
|
+
topK: number;
|
|
146
|
+
repeatPenalty: number;
|
|
147
|
+
/** Pinned slot id; -1 disables pinning. */
|
|
148
|
+
slotId: number;
|
|
149
|
+
/** Optional prompt cache key used to derive a slot when `slotId === -1`. */
|
|
150
|
+
promptCacheKey: string | null;
|
|
151
|
+
/** MTP drafter bounds; `0` for either disables speculative decoding. */
|
|
152
|
+
draftMin: number;
|
|
153
|
+
draftMax: number;
|
|
154
|
+
/** Absolute MTP drafter GGUF path; null disables drafter-backed MTP. */
|
|
155
|
+
draftModelPath: string | null;
|
|
156
|
+
/**
|
|
157
|
+
* GBNF grammar source. When set the native session installs a grammar
|
|
158
|
+
* sampler FIRST in the chain so every sampled token is constrained — this
|
|
159
|
+
* is how the structured-reply envelope is forced on the in-process FFI
|
|
160
|
+
* path. `null`/empty disables grammar constraint.
|
|
161
|
+
*/
|
|
162
|
+
gbnfGrammar?: string | null;
|
|
163
|
+
/** Qwen3-style thinking-tag suppression passthrough (v1 no-op). */
|
|
164
|
+
disableThinking?: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Per-load GPU offload (ABI v8). Number of model layers to place on GPU.
|
|
167
|
+
* `undefined`/-1 selects the runtime default (all layers); 0 forces CPU.
|
|
168
|
+
* The model is loaded once per ctx, so the FIRST session's value wins.
|
|
169
|
+
*/
|
|
170
|
+
gpuLayers?: number;
|
|
171
|
+
/**
|
|
172
|
+
* KV-cache K quant type name (ABI v8), e.g. "f16", "q8_0", "qjl1_256".
|
|
173
|
+
* `undefined`/null leaves the f16 default. Mapped to `ggml_type` by the
|
|
174
|
+
* fused lib's `eliza_llm_stream_config_t.cache_type_k`.
|
|
175
|
+
*/
|
|
176
|
+
cacheTypeK?: string | null;
|
|
177
|
+
/** KV-cache V quant type name (ABI v8); see `cacheTypeK`. */
|
|
178
|
+
cacheTypeV?: string | null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* One step of streaming LLM output. `tokens` is the batch of accepted text
|
|
182
|
+
* model token ids the runtime committed this step (>= 1; > 1 only when the
|
|
183
|
+
* MTP drafter is active and the verifier accepted multiple drafts).
|
|
184
|
+
* `text` is the detokenized text for those tokens. `done` is `true` only
|
|
185
|
+
* on the final step (EOS reached). `drafterDrafted` and `drafterAccepted`
|
|
186
|
+
* are populated when the drafter is active.
|
|
187
|
+
*/
|
|
188
|
+
export interface LlmStreamStep {
|
|
189
|
+
tokens: number[];
|
|
190
|
+
text: string;
|
|
191
|
+
done: boolean;
|
|
192
|
+
drafterDrafted: number;
|
|
193
|
+
drafterAccepted: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* One streaming-TTS chunk delivered to the `onChunk` callback passed to
|
|
197
|
+
* `ttsSynthesizeStream`. `pcm` is a *view* over the library's buffer —
|
|
198
|
+
* valid only for the duration of the callback; copy it before
|
|
199
|
+
* returning. `isFinal` marks the zero-length tail chunk that closes the
|
|
200
|
+
* utterance. The callback returning `true` requests cancellation at the
|
|
201
|
+
* next kernel boundary.
|
|
202
|
+
*/
|
|
203
|
+
export interface TtsStreamChunk {
|
|
204
|
+
pcm: Float32Array;
|
|
205
|
+
isFinal: boolean;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A native MTP speculative-step event from
|
|
209
|
+
* `eliza_inference_set_verifier_callback`. Token-index domain is the
|
|
210
|
+
* generated-output stream (token 0 = first generated token), matching
|
|
211
|
+
* `RejectedTokenRange`. `rejectedFrom`/`rejectedTo` are -1 when nothing
|
|
212
|
+
* was rejected this step.
|
|
213
|
+
*/
|
|
214
|
+
export interface NativeVerifierEvent {
|
|
215
|
+
acceptedTokenIds: number[];
|
|
216
|
+
rejectedFrom: number;
|
|
217
|
+
rejectedTo: number;
|
|
218
|
+
correctedTokenIds: number[];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Typed handle returned by `loadElizaInferenceFfi`. Each method maps
|
|
222
|
+
* 1:1 to a symbol declared in `ffi.h`. Methods that allocate a context
|
|
223
|
+
* return the opaque pointer; methods that consume one take it as the
|
|
224
|
+
* first argument. Failures throw `VoiceLifecycleError` with the
|
|
225
|
+
* structured code derived from the C return value.
|
|
226
|
+
*/
|
|
227
|
+
export interface ElizaInferenceFfi {
|
|
228
|
+
/** Library path the binding was loaded from (for diagnostics). */
|
|
229
|
+
readonly libraryPath: string;
|
|
230
|
+
/** ABI version reported by the loaded library. */
|
|
231
|
+
readonly libraryAbiVersion: string;
|
|
232
|
+
/** Create a fresh context anchored at `bundleDir`. */
|
|
233
|
+
create(bundleDir: string): ElizaInferenceContextHandle;
|
|
234
|
+
/** Destroy a previously-created context. Idempotent on already-freed handles. */
|
|
235
|
+
destroy(ctx: ElizaInferenceContextHandle): void;
|
|
236
|
+
/** Map / re-page weights for a region. */
|
|
237
|
+
mmapAcquire(ctx: ElizaInferenceContextHandle, region: ElizaInferenceRegion): void;
|
|
238
|
+
/**
|
|
239
|
+
* Release or evict a voice-only region after the lifecycle leaves
|
|
240
|
+
* voice-on. Implementations may madvise mapped pages or unload the
|
|
241
|
+
* ASR/TTS runtime state entirely; callers must treat the region as
|
|
242
|
+
* unavailable until the next `mmapAcquire`.
|
|
243
|
+
*/
|
|
244
|
+
mmapEvict(ctx: ElizaInferenceContextHandle, region: ElizaInferenceRegion): void;
|
|
245
|
+
/**
|
|
246
|
+
* Synchronous TTS forward. Caller provides the output buffer; library
|
|
247
|
+
* fills up to its capacity and returns the number of samples written.
|
|
248
|
+
*/
|
|
249
|
+
ttsSynthesize(args: {
|
|
250
|
+
ctx: ElizaInferenceContextHandle;
|
|
251
|
+
text: string;
|
|
252
|
+
speakerPresetId: string | null;
|
|
253
|
+
out: Float32Array;
|
|
254
|
+
}): number;
|
|
255
|
+
/**
|
|
256
|
+
* Synchronous ASR forward. Returns the decoded transcript as a UTF-8
|
|
257
|
+
* string (allocated by the JS side, sized to fit the library's max
|
|
258
|
+
* write).
|
|
259
|
+
*/
|
|
260
|
+
asrTranscribe(args: {
|
|
261
|
+
ctx: ElizaInferenceContextHandle;
|
|
262
|
+
pcm: Float32Array;
|
|
263
|
+
sampleRateHz: number;
|
|
264
|
+
maxTextBytes?: number;
|
|
265
|
+
}): string;
|
|
266
|
+
/** True when this build can emit per-word ASR timestamps (v12+). v11 and
|
|
267
|
+
* older report false — callers fall back to the text-only `asrTranscribe`. */
|
|
268
|
+
timedAsrSupported(): boolean;
|
|
269
|
+
/** Transcribe like `asrTranscribe` AND return per-word `[startMs,endMs)`
|
|
270
|
+
* spans (duration-proportional, char-weighted, monotonic — the honest
|
|
271
|
+
* single-model signal; see the v12 ABI changelog). The word texts come from
|
|
272
|
+
* a whitespace split of the transcript, zipped with the native timing. */
|
|
273
|
+
asrTranscribeTimed(args: {
|
|
274
|
+
ctx: ElizaInferenceContextHandle;
|
|
275
|
+
pcm: Float32Array;
|
|
276
|
+
sampleRateHz: number;
|
|
277
|
+
maxTextBytes?: number;
|
|
278
|
+
maxWords?: number;
|
|
279
|
+
}): {
|
|
280
|
+
text: string;
|
|
281
|
+
words: AsrWordTiming[];
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* True when this build implements streaming TTS (false for the stub /
|
|
285
|
+
* a TTS-disabled build). Callers pick the streaming path vs the batch
|
|
286
|
+
* `ttsSynthesize` off this flag — no probe-and-catch.
|
|
287
|
+
*/
|
|
288
|
+
ttsStreamSupported(): boolean;
|
|
289
|
+
/**
|
|
290
|
+
* Chunked synthesis. `onChunk` is invoked for each decoded PCM segment
|
|
291
|
+
* as it arrives, then once more with `isFinal: true` (zero-length
|
|
292
|
+
* tail). Returning `true` from `onChunk` requests cancellation; the
|
|
293
|
+
* call then resolves with `cancelled: true` after the final-chunk
|
|
294
|
+
* callback. Any negative library return is a thrown `VoiceLifecycleError`.
|
|
295
|
+
*/
|
|
296
|
+
ttsSynthesizeStream(args: {
|
|
297
|
+
ctx: ElizaInferenceContextHandle;
|
|
298
|
+
text: string;
|
|
299
|
+
speakerPresetId: string | null;
|
|
300
|
+
onChunk: (chunk: TtsStreamChunk) => boolean | undefined;
|
|
301
|
+
}): {
|
|
302
|
+
cancelled: boolean;
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* Hard-cancel any in-flight TTS forward pass on `ctx` (started on
|
|
306
|
+
* another thread by `ttsSynthesize` / `ttsSynthesizeStream`). The
|
|
307
|
+
* in-flight call returns `ELIZA_ERR_CANCELLED` at the next kernel
|
|
308
|
+
* boundary. Cancelling nothing is not an error.
|
|
309
|
+
*/
|
|
310
|
+
cancelTts(ctx: ElizaInferenceContextHandle): void;
|
|
311
|
+
/**
|
|
312
|
+
* Register (or, with `cb: null`, clear) the native MTP verifier
|
|
313
|
+
* callback. The runtime fires `cb` for every speculative accept/reject
|
|
314
|
+
* step from the in-process drafter↔target loop. The returned
|
|
315
|
+
* `JSCallbackHandle` MUST be kept alive for as long as the callback is
|
|
316
|
+
* registered and `.close()`d when it's cleared (or on dispose) — Bun's
|
|
317
|
+
* `JSCallback` is GC'd otherwise and the native side dereferences a
|
|
318
|
+
* dead pointer.
|
|
319
|
+
*/
|
|
320
|
+
setVerifierCallback(ctx: ElizaInferenceContextHandle, cb: ((event: NativeVerifierEvent) => void) | null): {
|
|
321
|
+
close(): void;
|
|
322
|
+
};
|
|
323
|
+
/**
|
|
324
|
+
* True when this build exports the OmniVoice reference-encode symbols
|
|
325
|
+
* (`eliza_inference_encode_reference`). The freeze CLI uses this to
|
|
326
|
+
* pre-encode same reference audio into the persisted voice preset;
|
|
327
|
+
* the runtime synthesis path never calls it (it reads pre-encoded
|
|
328
|
+
* tokens from the preset file).
|
|
329
|
+
*/
|
|
330
|
+
encodeReferenceSupported?(): boolean;
|
|
331
|
+
/**
|
|
332
|
+
* Run the encode-only half of the TTS pipeline (HuBERT semantic + RVQ
|
|
333
|
+
* codec) on a 24 kHz mono fp32 PCM buffer and return the resulting
|
|
334
|
+
* reference-audio-token tensor `[K=8, ref_T]` as `Int32Array`
|
|
335
|
+
* row-major (`tokens[k*ref_T + t]`). The library allocates and the
|
|
336
|
+
* binding takes care of freeing the native buffer via
|
|
337
|
+
* `eliza_inference_free_tokens` before this returns.
|
|
338
|
+
*
|
|
339
|
+
* The TTS region must have been acquired (`mmapAcquire("tts")`)
|
|
340
|
+
* before the call. `sampleRateHz` must be 24000; the entrypoint does
|
|
341
|
+
* NOT resample, by design — the freeze artifact must be deterministic.
|
|
342
|
+
*/
|
|
343
|
+
encodeReference?(args: {
|
|
344
|
+
ctx: ElizaInferenceContextHandle;
|
|
345
|
+
pcm: Float32Array;
|
|
346
|
+
sampleRateHz: number;
|
|
347
|
+
}): {
|
|
348
|
+
K: number;
|
|
349
|
+
refT: number;
|
|
350
|
+
tokens: Int32Array;
|
|
351
|
+
};
|
|
352
|
+
/** True when this build exports and enables the native Silero VAD backend. */
|
|
353
|
+
vadSupported?(): boolean;
|
|
354
|
+
/** Open a native VAD session. The ABI-compatible sample rate is 16 kHz. */
|
|
355
|
+
vadOpen?(args: {
|
|
356
|
+
ctx: ElizaInferenceContextHandle;
|
|
357
|
+
sampleRateHz: number;
|
|
358
|
+
}): NativeVadHandle;
|
|
359
|
+
/** Process one 512-sample fp32 mono window and return P(speech). */
|
|
360
|
+
vadProcess?(args: {
|
|
361
|
+
vad: NativeVadHandle;
|
|
362
|
+
pcm: Float32Array;
|
|
363
|
+
}): number;
|
|
364
|
+
/** Clear native VAD recurrent state at utterance boundaries. */
|
|
365
|
+
vadReset?(vad: NativeVadHandle): void;
|
|
366
|
+
/** Close + free a native VAD session. Idempotent on already-closed handles. */
|
|
367
|
+
vadClose?(vad: NativeVadHandle): void;
|
|
368
|
+
/**
|
|
369
|
+
* True when this build exports and enables the native openWakeWord
|
|
370
|
+
* backend. The JS binding routes wake-word detection exclusively
|
|
371
|
+
* through this surface; when this returns false, the wake-word path
|
|
372
|
+
* throws a structured "runtime not ready" error — no ONNX fallback
|
|
373
|
+
* (AGENTS.md §3, §8).
|
|
374
|
+
*/
|
|
375
|
+
wakewordSupported?(): boolean;
|
|
376
|
+
/**
|
|
377
|
+
* Open a native wake-word session. `sampleRateHz` must be 16000;
|
|
378
|
+
* `headName` selects the classifier head inside the bundle's combined
|
|
379
|
+
* wake-word GGUF (e.g. "hey-eliza").
|
|
380
|
+
*/
|
|
381
|
+
wakewordOpen?(args: {
|
|
382
|
+
ctx: ElizaInferenceContextHandle;
|
|
383
|
+
sampleRateHz: number;
|
|
384
|
+
headName: string;
|
|
385
|
+
}): NativeWakeWordHandle;
|
|
386
|
+
/**
|
|
387
|
+
* Score one 1280-sample (80 ms @ 16 kHz) fp32 mono frame and return
|
|
388
|
+
* the latest P(wake) in [0, 1]. Early calls before enough context
|
|
389
|
+
* accumulates return 0.
|
|
390
|
+
*/
|
|
391
|
+
wakewordScore?(args: {
|
|
392
|
+
wake: NativeWakeWordHandle;
|
|
393
|
+
pcm: Float32Array;
|
|
394
|
+
}): number;
|
|
395
|
+
/** Clear all streaming state (audio tail, mel ring, embedding ring). */
|
|
396
|
+
wakewordReset?(wake: NativeWakeWordHandle): void;
|
|
397
|
+
/** Close + free a native wake-word session. Idempotent on already-closed handles. */
|
|
398
|
+
wakewordClose?(wake: NativeWakeWordHandle): void;
|
|
399
|
+
/** True when this build exports and enables the native WeSpeaker encoder. */
|
|
400
|
+
speakerSupported?(): boolean;
|
|
401
|
+
/**
|
|
402
|
+
* Open a native speaker-encoder session. `ggufPath` may be null to
|
|
403
|
+
* resolve the bundle's `speaker/` dir, or an absolute path to a
|
|
404
|
+
* WeSpeaker GGUF.
|
|
405
|
+
*/
|
|
406
|
+
speakerOpen?(args: {
|
|
407
|
+
ctx: ElizaInferenceContextHandle;
|
|
408
|
+
ggufPath: string | null;
|
|
409
|
+
}): NativeSpeakerHandle;
|
|
410
|
+
/**
|
|
411
|
+
* Embed `pcm` (16 kHz mono fp32) into a 256-d L2-normalized speaker
|
|
412
|
+
* embedding. Returns a freshly-allocated `Float32Array` of length 256.
|
|
413
|
+
*/
|
|
414
|
+
speakerEmbed?(args: {
|
|
415
|
+
speaker: NativeSpeakerHandle;
|
|
416
|
+
pcm: Float32Array;
|
|
417
|
+
}): Float32Array;
|
|
418
|
+
/** Close + free a native speaker-encoder session. Idempotent on already-closed handles. */
|
|
419
|
+
speakerClose?(speaker: NativeSpeakerHandle): void;
|
|
420
|
+
/** True when this build exports and enables the native pyannote diarizer. */
|
|
421
|
+
diarizSupported?(): boolean;
|
|
422
|
+
/**
|
|
423
|
+
* Open a native diarizer session. `ggufPath` may be null to resolve the
|
|
424
|
+
* bundle's `diariz/` dir, or an absolute path to a pyannote GGUF.
|
|
425
|
+
*/
|
|
426
|
+
diarizOpen?(args: {
|
|
427
|
+
ctx: ElizaInferenceContextHandle;
|
|
428
|
+
ggufPath: string | null;
|
|
429
|
+
}): NativeDiarizHandle;
|
|
430
|
+
/**
|
|
431
|
+
* Segment one 80000-sample (5 s @ 16 kHz) mono fp32 window into a
|
|
432
|
+
* per-frame powerset-label sequence. Returns the `Int8Array` of frame
|
|
433
|
+
* labels (293 for pyannote-segmentation-3.0), each in `[0, 7)`.
|
|
434
|
+
*/
|
|
435
|
+
diarizSegment?(args: {
|
|
436
|
+
diariz: NativeDiarizHandle;
|
|
437
|
+
pcm: Float32Array;
|
|
438
|
+
}): Int8Array;
|
|
439
|
+
/** Close + free a native diarizer session. Idempotent on already-closed handles. */
|
|
440
|
+
diarizClose?(diariz: NativeDiarizHandle): void;
|
|
441
|
+
/**
|
|
442
|
+
* True when this build has a working streaming ASR decoder (false for
|
|
443
|
+
* the stub / an ASR-disabled build). Callers pick the fused streaming
|
|
444
|
+
* path vs the fused batch interim adapter off this flag — they do not
|
|
445
|
+
* have to open a session and catch `ELIZA_ERR_NOT_IMPLEMENTED`.
|
|
446
|
+
*/
|
|
447
|
+
asrStreamSupported(): boolean;
|
|
448
|
+
/** Open a streaming ASR session. The handle is closed via `asrStreamClose`. */
|
|
449
|
+
asrStreamOpen(args: {
|
|
450
|
+
ctx: ElizaInferenceContextHandle;
|
|
451
|
+
sampleRateHz: number;
|
|
452
|
+
}): bigint;
|
|
453
|
+
/** Feed one PCM frame at the session's sample rate. */
|
|
454
|
+
asrStreamFeed(args: {
|
|
455
|
+
stream: bigint;
|
|
456
|
+
pcm: Float32Array;
|
|
457
|
+
}): void;
|
|
458
|
+
/** Read the current running partial transcript (and token ids when available). */
|
|
459
|
+
asrStreamPartial(args: {
|
|
460
|
+
stream: bigint;
|
|
461
|
+
maxTextBytes?: number;
|
|
462
|
+
maxTokens?: number;
|
|
463
|
+
}): {
|
|
464
|
+
partial: string;
|
|
465
|
+
tokens?: number[];
|
|
466
|
+
};
|
|
467
|
+
/** Force-finalize: drain buffered audio, run a final decode, return the final transcript. */
|
|
468
|
+
asrStreamFinish(args: {
|
|
469
|
+
stream: bigint;
|
|
470
|
+
maxTextBytes?: number;
|
|
471
|
+
maxTokens?: number;
|
|
472
|
+
}): {
|
|
473
|
+
partial: string;
|
|
474
|
+
tokens?: number[];
|
|
475
|
+
};
|
|
476
|
+
/** Close + free a streaming ASR session. Idempotent on already-closed handles. */
|
|
477
|
+
asrStreamClose(stream: bigint): void;
|
|
478
|
+
/**
|
|
479
|
+
* True when this build exports the streaming LLM symbols
|
|
480
|
+
* (`eliza_inference_llm_stream_*`). Transitional builds may load
|
|
481
|
+
* without them; the runner uses this to pick between the FFI streaming
|
|
482
|
+
* path.
|
|
483
|
+
*/
|
|
484
|
+
llmStreamSupported?(): boolean;
|
|
485
|
+
/**
|
|
486
|
+
* True when this build wires same-file / separate-drafter MTP
|
|
487
|
+
* speculative decoding into the streaming-LLM text path (ABI v8). A v7
|
|
488
|
+
* library returns `false` here (the symbol is absent), so the fused TEXT
|
|
489
|
+
* path can refuse to route through it without a speculative-decode
|
|
490
|
+
* regression. Anti-regression guard — see ABI v8 changelog.
|
|
491
|
+
*/
|
|
492
|
+
llmMtpSupported?(): boolean;
|
|
493
|
+
/**
|
|
494
|
+
* True when this build maps + applies KV-cache quant types in the
|
|
495
|
+
* streaming-LLM text path (ABI v8). A v7 library returns `false` (symbol
|
|
496
|
+
* absent); the fused TEXT path refuses it to avoid a silent fallback to
|
|
497
|
+
* f16 KV when a quantized cache was requested.
|
|
498
|
+
*/
|
|
499
|
+
llmKvQuantSupported?(): boolean;
|
|
500
|
+
/**
|
|
501
|
+
* Open a streaming-LLM session against `ctx`. Failure throws
|
|
502
|
+
* `VoiceLifecycleError`. Close exactly once via `llmStreamClose`.
|
|
503
|
+
*/
|
|
504
|
+
llmStreamOpen?(args: {
|
|
505
|
+
ctx: ElizaInferenceContextHandle;
|
|
506
|
+
config: LlmStreamConfig;
|
|
507
|
+
}): LlmStreamHandle;
|
|
508
|
+
/** Feed a batch of pre-tokenized prompt tokens before the first `next`. */
|
|
509
|
+
llmStreamPrefill?(args: {
|
|
510
|
+
stream: LlmStreamHandle;
|
|
511
|
+
tokens: Int32Array;
|
|
512
|
+
}): void;
|
|
513
|
+
/**
|
|
514
|
+
* Pull the next streaming step. Returns `null` when the runtime declined
|
|
515
|
+
* to emit tokens this call (rare — drafter rejected everything and the
|
|
516
|
+
* verifier had nothing to commit); poll again. `step.done === true` is
|
|
517
|
+
* the final step.
|
|
518
|
+
*/
|
|
519
|
+
llmStreamNext?(args: {
|
|
520
|
+
stream: LlmStreamHandle;
|
|
521
|
+
maxTokensPerStep?: number;
|
|
522
|
+
maxTextBytes?: number;
|
|
523
|
+
}): LlmStreamStep;
|
|
524
|
+
/** Cancel in-flight generation; the next `_next` returns CANCELLED. */
|
|
525
|
+
llmStreamCancel?(stream: LlmStreamHandle): void;
|
|
526
|
+
/** Persist the session's slot KV state to disk. */
|
|
527
|
+
llmStreamSaveSlot?(args: {
|
|
528
|
+
stream: LlmStreamHandle;
|
|
529
|
+
filename: string;
|
|
530
|
+
}): void;
|
|
531
|
+
/** Restore a previously-saved slot KV file. Call before the first prefill/next. */
|
|
532
|
+
llmStreamRestoreSlot?(args: {
|
|
533
|
+
stream: LlmStreamHandle;
|
|
534
|
+
filename: string;
|
|
535
|
+
}): void;
|
|
536
|
+
/** Close + free a streaming-LLM session. Idempotent on already-closed handles. */
|
|
537
|
+
llmStreamClose?(stream: LlmStreamHandle): void;
|
|
538
|
+
/**
|
|
539
|
+
* True when this build wires the fused text-embedding path
|
|
540
|
+
* (`eliza_inference_embed`). A v8 library returns false (symbol absent),
|
|
541
|
+
* so the default TEXT_EMBEDDING handler keeps the node-llama-cpp /
|
|
542
|
+
* libllama path.
|
|
543
|
+
*/
|
|
544
|
+
embedSupported?(): boolean;
|
|
545
|
+
/**
|
|
546
|
+
* Compute a pooled, L2-normalized sentence embedding for `text` over the
|
|
547
|
+
* bundle's text model. `pooling` selects the strategy (default MEAN — the
|
|
548
|
+
* gte-small convention). Returns a `Float32Array` of length `n_embd`.
|
|
549
|
+
*/
|
|
550
|
+
embed?(args: {
|
|
551
|
+
ctx: ElizaInferenceContextHandle;
|
|
552
|
+
text: string;
|
|
553
|
+
pooling?: number;
|
|
554
|
+
}): Float32Array;
|
|
555
|
+
/**
|
|
556
|
+
* True when this build was compiled with vision (`-DELIZA_ENABLE_VISION`)
|
|
557
|
+
* and exports `eliza_inference_describe_image`. A v8 / vision-off library
|
|
558
|
+
* returns false, so the IMAGE_DESCRIPTION handler keeps the libllama mtmd
|
|
559
|
+
* path.
|
|
560
|
+
*/
|
|
561
|
+
visionSupported?(): boolean;
|
|
562
|
+
/**
|
|
563
|
+
* Describe `imageBytes` (raw PNG/JPEG/WebP) through the text model's
|
|
564
|
+
* mmproj projector at `mmprojPath`. `prompt` defaults to a generic
|
|
565
|
+
* caption request. Returns the description text.
|
|
566
|
+
*/
|
|
567
|
+
describeImage?(args: {
|
|
568
|
+
ctx: ElizaInferenceContextHandle;
|
|
569
|
+
imageBytes: Uint8Array;
|
|
570
|
+
mmprojPath: string;
|
|
571
|
+
prompt?: string;
|
|
572
|
+
maxTextBytes?: number;
|
|
573
|
+
}): string;
|
|
574
|
+
/**
|
|
575
|
+
* True when this build exposes the tokenizer over the loaded text vocab
|
|
576
|
+
* (`eliza_inference_tokenize`). A pre-v9 library returns false, so the
|
|
577
|
+
* desktop fused runtime refuses (libllama is retired — no tokenizer sidecar).
|
|
578
|
+
*/
|
|
579
|
+
tokenizeSupported?(): boolean;
|
|
580
|
+
/**
|
|
581
|
+
* Tokenize `text` against the loaded text model's vocab. `addSpecial`
|
|
582
|
+
* (default true) adds BOS/EOS; `parseSpecial` (default false) renders
|
|
583
|
+
* special tokens from the input. Returns the token ids as an `Int32Array`.
|
|
584
|
+
*/
|
|
585
|
+
tokenize?(args: {
|
|
586
|
+
ctx: ElizaInferenceContextHandle;
|
|
587
|
+
text: string;
|
|
588
|
+
addSpecial?: boolean;
|
|
589
|
+
parseSpecial?: boolean;
|
|
590
|
+
}): Int32Array;
|
|
591
|
+
/**
|
|
592
|
+
* Detokenize `tokens` back to text against the loaded text model's vocab.
|
|
593
|
+
* `removeSpecial` (default false) strips BOS/EOS; `unparseSpecial`
|
|
594
|
+
* (default false) renders special tokens.
|
|
595
|
+
*/
|
|
596
|
+
detokenize?(args: {
|
|
597
|
+
ctx: ElizaInferenceContextHandle;
|
|
598
|
+
tokens: Int32Array;
|
|
599
|
+
removeSpecial?: boolean;
|
|
600
|
+
unparseSpecial?: boolean;
|
|
601
|
+
maxTextBytes?: number;
|
|
602
|
+
}): string;
|
|
603
|
+
/**
|
|
604
|
+
* True when this build wires the fused end-of-turn scorer
|
|
605
|
+
* (`eliza_inference_llm_eot_score`). A v10 library returns false (symbol
|
|
606
|
+
* absent), so the composite EOT classifier uses the heuristic-only signal.
|
|
607
|
+
*/
|
|
608
|
+
eotSupported?(): boolean;
|
|
609
|
+
/**
|
|
610
|
+
* Single causal forward pass over `tokens` (a tokenized partial transcript)
|
|
611
|
+
* returning the next-token softmax probability of `targetTokenId` (the
|
|
612
|
+
* end-of-turn marker, e.g. `<|im_end|>`), plus the argmax next token and its
|
|
613
|
+
* probability. Runs on a dedicated scoring context over the loaded text
|
|
614
|
+
* model; KV is cleared per call so scores are independent.
|
|
615
|
+
*/
|
|
616
|
+
eotScore?(args: {
|
|
617
|
+
ctx: ElizaInferenceContextHandle;
|
|
618
|
+
tokens: Int32Array;
|
|
619
|
+
targetTokenId: number;
|
|
620
|
+
}): {
|
|
621
|
+
targetProb: number;
|
|
622
|
+
topToken: number;
|
|
623
|
+
topProb: number;
|
|
624
|
+
};
|
|
625
|
+
/**
|
|
626
|
+
* True when this build linked Eliza-1's in-process Kokoro engine
|
|
627
|
+
* (`eliza_inference_kokoro_*`). A v9 library returns false (symbols
|
|
628
|
+
* absent), so the Kokoro FFI runtime refuses rather than falling back to
|
|
629
|
+
* the local-TCP `llama-server` route (forbidden on iOS / Google Play).
|
|
630
|
+
*/
|
|
631
|
+
kokoroSupported?(): boolean;
|
|
632
|
+
/**
|
|
633
|
+
* Load the Kokoro GGUF at `ggufPath` and the voice preset `.bin` at
|
|
634
|
+
* `voiceBinPath` (raw fp32 ref_s, `styleDim` inner dim — 256 for v1.0)
|
|
635
|
+
* into `ctx`. Replaces any previously-loaded Kokoro model on the ctx.
|
|
636
|
+
* Throws `VoiceLifecycleError` on a negative return with the C diagnostic.
|
|
637
|
+
*/
|
|
638
|
+
kokoroLoad?(args: {
|
|
639
|
+
ctx: ElizaInferenceContextHandle;
|
|
640
|
+
ggufPath: string;
|
|
641
|
+
voiceBinPath: string;
|
|
642
|
+
styleDim?: number;
|
|
643
|
+
}): void;
|
|
644
|
+
/**
|
|
645
|
+
* Synthesize `text` through the loaded Kokoro model+voice at the model's
|
|
646
|
+
* native rate (24 kHz for v1.0). `speed` scales predicted durations
|
|
647
|
+
* (default 1.0). Allocates an output buffer of `maxSamples` fp32 samples,
|
|
648
|
+
* reads back the count the library wrote, and returns that slice.
|
|
649
|
+
*/
|
|
650
|
+
kokoroSynthesize?(args: {
|
|
651
|
+
ctx: ElizaInferenceContextHandle;
|
|
652
|
+
text: string;
|
|
653
|
+
speed?: number;
|
|
654
|
+
maxSamples: number;
|
|
655
|
+
}): Float32Array;
|
|
656
|
+
/** The loaded Kokoro model's audio sample rate (24000 for v1.0). */
|
|
657
|
+
kokoroSampleRate?(ctx: ElizaInferenceContextHandle): number;
|
|
658
|
+
/** Best-effort dispose for the binding itself (closes the dlopen handle). */
|
|
659
|
+
close(): void;
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Load `libelizainference` at `dylibPath` and bind every symbol
|
|
663
|
+
* declared in `ffi.h`. The returned handle's methods delegate directly
|
|
664
|
+
* to the library; they throw `VoiceLifecycleError` on any negative
|
|
665
|
+
* return value or runtime fault.
|
|
666
|
+
*
|
|
667
|
+
* Throws synchronously (no Promise) when:
|
|
668
|
+
* - the JS runtime is not Bun (no FFI primitive available),
|
|
669
|
+
* - `dlopen` cannot find or open the library,
|
|
670
|
+
* - the library's reported ABI version does not match
|
|
671
|
+
* `ELIZA_INFERENCE_ABI_VERSION`.
|
|
672
|
+
*/
|
|
673
|
+
export declare function loadElizaInferenceFfi(dylibPath: string): ElizaInferenceFfi;
|
|
674
|
+
//# sourceMappingURL=ffi-bindings.d.ts.map
|