@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 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,+BAA+B,EAAG,GAAY,CAAC;AAC5D,eAAO,MAAM,2BAA2B,EACvC,qDAA8D,CAAC;AAGhE,eAAO,MAAM,wBAAwB,EAAG,QAAiB,CAAC;AAC1D,eAAO,MAAM,4BAA4B,EAAG,MAAgB,CAAC;AAI7D,eAAO,MAAM,aAAa,gDAMhB,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAcxD,eAAO,MAAM,eAAe,gFAMlB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAChD,kBAAkB,EAClB,UAAU,CACV,CAAC;AAsBF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC9C,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAOjD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC9C,MAAM,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAOjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,qDAMnB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAY9D,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAO/C,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAChD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAOhD,CAAC;AAeF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+B9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;iBAOhC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;EAA0B,CAAC;AAC9D,eAAO,MAAM,uBAAuB;;;;;;EAA2B,CAAC;AAChE,eAAO,MAAM,oBAAoB;;;;;;EAAwB,CAAC;AAE1D,eAAO,MAAM,iCAAiC;;;;;;;;;;iBAU5C,CAAC;AASH,eAAO,MAAM,4BAA4B;;;;iBAIvC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;iBAStB,CAAC;AAEhB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa9B,CAAC;AAMH,eAAO,MAAM,0BAA0B,6CAI7B,CAAC;AACX,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;iBAQ5B,CAAC;AAwCH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2F5B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,EAAG,IAAa,CAAC;AAExD,2EAA2E;AAC3E,eAAO,MAAM,mCAAmC,EAAG,EAAW,CAAC;AAE/D,oEAAoE;AACpE,eAAO,MAAM,oCAAoC,EAAG,IAAa,CAAC;AAElE,uEAAuE;AACvE,eAAO,MAAM,uCAAuC,EAAG,GAAY,CAAC;AAEpE,+EAA+E;AAC/E,eAAO,MAAM,wCAAwC,EAAG,EAAW,CAAC;AAEpE,eAAO,MAAM,qBAAqB;;;iBAO/B,CAAC;AAiBJ,eAAO,MAAM,sBAAsB,yGAOzB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAYzE,eAAO,MAAM,wBAAwB,qCAAsC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAK7E,eAAO,MAAM,wBAAwB,wFAS3B,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAkB7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;iBAOjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwE/B,CAAC"}
|
|
@@ -0,0 +1,653 @@
|
|
|
1
|
+
// Eliza-1 manifest schema (`eliza-1.manifest.json`).
|
|
2
|
+
//
|
|
3
|
+
// Source of truth in this checkout: this file (the schema) and the sibling
|
|
4
|
+
// `eliza-1.manifest.v1.json` JSON Schema. The upstream elizaOS source has
|
|
5
|
+
// a longer prose specification under `packages/inference/AGENTS.md` (§6
|
|
6
|
+
// manifest, §3 mandatory kernels, §2 bundle/tier matrix); that file does
|
|
7
|
+
// not exist in the eliza checkout — when editing the schema, treat the
|
|
8
|
+
// Zod definitions below as canonical and consult R5-versioning.md §1 for
|
|
9
|
+
// the latest gap analysis between bundle and per-sub-model versioning.
|
|
10
|
+
//
|
|
11
|
+
// Coupling notes:
|
|
12
|
+
// - The kernel names here are *manifest-level* capabilities (what the bundle
|
|
13
|
+
// advertises), not the lower-level llama.cpp kernel handles in `../types.ts`
|
|
14
|
+
// (`turbo3` / `turbo4` / `turbo3_tcq` / `qjl_full`). The two
|
|
15
|
+
// layers map but are not the same enum.
|
|
16
|
+
// - The schema URL `https://elizaos.ai/schemas/eliza-1.manifest.v1.json` is
|
|
17
|
+
// exported as a JSON Schema sibling file in this directory.
|
|
18
|
+
// - Eliza-1 speculative decoding is native llama.cpp MTP. MTP-enabled tiers
|
|
19
|
+
// ship a bundled drafter GGUF under `files.mtp`; the runtime resolves it at
|
|
20
|
+
// load time and passes it as the draft model.
|
|
21
|
+
// - Per-sub-model versioning (kokoro, omnivoice, turn-detector, voice-emotion,
|
|
22
|
+
// diarizer, speaker-encoder, vad, wakeword, embedding, asr) lives in
|
|
23
|
+
// `packages/shared/src/local-inference/voice-models.ts` and the matching
|
|
24
|
+
// `models/voice/CHANGELOG.md`. The bundle manifest below ships the *current*
|
|
25
|
+
// per-tier set of files; the voice-models module ships the *history* the
|
|
26
|
+
// auto-updater walks.
|
|
27
|
+
|
|
28
|
+
import type { LocalRuntimeKernel } from "@elizaos/shared";
|
|
29
|
+
import { z } from "zod";
|
|
30
|
+
|
|
31
|
+
export const ELIZA_1_MANIFEST_SCHEMA_VERSION = "1" as const;
|
|
32
|
+
export const ELIZA_1_MANIFEST_SCHEMA_URL =
|
|
33
|
+
"https://elizaos.ai/schemas/eliza-1.manifest.v1.json" as const;
|
|
34
|
+
|
|
35
|
+
// The shared Eliza-1 BPE vocabulary exported so runtime code can assert it.
|
|
36
|
+
export const ELIZA_1_TOKENIZER_FAMILY = "qwen35" as const;
|
|
37
|
+
export const ELIZA_1_TOKENIZER_VOCAB_SIZE = 248_320 as const;
|
|
38
|
+
|
|
39
|
+
// Tiers — size-ordered across the active Eliza-1 bundles. 2b is the
|
|
40
|
+
// smallest/entry tier.
|
|
41
|
+
export const ELIZA_1_TIERS = [
|
|
42
|
+
"2b",
|
|
43
|
+
"4b",
|
|
44
|
+
"9b",
|
|
45
|
+
"27b",
|
|
46
|
+
"27b-256k",
|
|
47
|
+
] as const;
|
|
48
|
+
export type Eliza1Tier = (typeof ELIZA_1_TIERS)[number];
|
|
49
|
+
|
|
50
|
+
// Manifest-level kernel capability names. Per AGENTS.md §3:
|
|
51
|
+
// `turboquant_q3`, `turboquant_q4`, `qjl`, `polarquant` are
|
|
52
|
+
// the named optimizations the bundle declares. `turbo3_tcq` is required
|
|
53
|
+
// for any long-context text variant. The C-level llama.cpp kernel handles in
|
|
54
|
+
// `../types.ts` are an implementation detail of the runtime; the manifest
|
|
55
|
+
// speaks in terms of the optimization, not the .metal/.comp file.
|
|
56
|
+
//
|
|
57
|
+
// The relationship to the runtime-side `LocalRuntimeKernel` enum (the
|
|
58
|
+
// llama.cpp-handle layer, declared in `@elizaos/shared/local-inference/types`)
|
|
59
|
+
// is made explicit by `ELIZA1_TO_RUNTIME_KERNEL` / `RUNTIME_TO_ELIZA1_KERNEL`
|
|
60
|
+
// below — that is the single source of truth for the manifest↔runtime kernel
|
|
61
|
+
// bridge.
|
|
62
|
+
export const ELIZA_1_KERNELS = [
|
|
63
|
+
"turboquant_q3",
|
|
64
|
+
"turboquant_q4",
|
|
65
|
+
"qjl",
|
|
66
|
+
"polarquant",
|
|
67
|
+
"turbo3_tcq",
|
|
68
|
+
] as const;
|
|
69
|
+
export type Eliza1Kernel = (typeof ELIZA_1_KERNELS)[number];
|
|
70
|
+
export type Eliza1RequiredRuntimeKernel = Exclude<
|
|
71
|
+
LocalRuntimeKernel,
|
|
72
|
+
"openvino"
|
|
73
|
+
>;
|
|
74
|
+
|
|
75
|
+
// Manifest-kernel ↔ runtime-kernel bridge.
|
|
76
|
+
//
|
|
77
|
+
// `Eliza1Kernel` (this module, the bundle-manifest layer) names the *named
|
|
78
|
+
// optimization* a bundle advertises; `LocalRuntimeKernel`
|
|
79
|
+
// (`@elizaos/shared/local-inference/types`, the llama.cpp-handle layer) names
|
|
80
|
+
// the *fork kernel handle* the binary must expose. They overlap but are not the
|
|
81
|
+
// same enum:
|
|
82
|
+
//
|
|
83
|
+
// turboquant_q3 ↔ turbo3 (Q3 KV-cache quant kernel)
|
|
84
|
+
// turboquant_q4 ↔ turbo4 (Q4 KV-cache quant kernel)
|
|
85
|
+
// qjl ↔ qjl_full (QuIP#-JL fused-attention kernel)
|
|
86
|
+
// polarquant ↔ polarquant (same name on both layers)
|
|
87
|
+
// turbo3_tcq ↔ turbo3_tcq (same name on both layers)
|
|
88
|
+
//
|
|
89
|
+
// Every Eliza-1 custom-kernel member is covered (both are total maps over the
|
|
90
|
+
// custom W4-B kernel set). `openvino` is a runtime backend capability,
|
|
91
|
+
// not an Eliza-1 bundle optimization, so it intentionally stays outside this
|
|
92
|
+
// bridge. When code needs to translate between the catalog's custom
|
|
93
|
+
// `requiresKernel` entries and the manifest's `kernels.required:
|
|
94
|
+
// Eliza1Kernel[]`, route it through these.
|
|
95
|
+
export const ELIZA1_TO_RUNTIME_KERNEL: Readonly<
|
|
96
|
+
Record<Eliza1Kernel, Eliza1RequiredRuntimeKernel>
|
|
97
|
+
> = {
|
|
98
|
+
turboquant_q3: "turbo3",
|
|
99
|
+
turboquant_q4: "turbo4",
|
|
100
|
+
qjl: "qjl_full",
|
|
101
|
+
polarquant: "polarquant",
|
|
102
|
+
turbo3_tcq: "turbo3_tcq",
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const RUNTIME_TO_ELIZA1_KERNEL: Readonly<
|
|
106
|
+
Record<Eliza1RequiredRuntimeKernel, Eliza1Kernel>
|
|
107
|
+
> = {
|
|
108
|
+
turbo3: "turboquant_q3",
|
|
109
|
+
turbo4: "turboquant_q4",
|
|
110
|
+
qjl_full: "qjl",
|
|
111
|
+
polarquant: "polarquant",
|
|
112
|
+
turbo3_tcq: "turbo3_tcq",
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export const ELIZA_1_BACKENDS = [
|
|
116
|
+
"metal",
|
|
117
|
+
"vulkan",
|
|
118
|
+
"cuda",
|
|
119
|
+
"rocm",
|
|
120
|
+
"cpu",
|
|
121
|
+
] as const;
|
|
122
|
+
export type Eliza1Backend = (typeof ELIZA_1_BACKENDS)[number];
|
|
123
|
+
|
|
124
|
+
// Required-kernel set per tier. Mirrors the active Eliza-1 release policy:
|
|
125
|
+
// - All tiers require turboquant + qjl + polarquant.
|
|
126
|
+
// - All current text GGUFs ship at the 128k half-context floor or the 262k
|
|
127
|
+
// native tier, so every tier requires `turbo3_tcq`. The validator also
|
|
128
|
+
// enforces the same requirement dynamically for any bundle that declares
|
|
129
|
+
// a >64k text file, so additional tiers cannot publish long-context text
|
|
130
|
+
// without TCQ.
|
|
131
|
+
//
|
|
132
|
+
// Q4 is the release text quant baseline. TCQ is part of the release contract
|
|
133
|
+
// for the full text ladder, including the smallest 2B bundle.
|
|
134
|
+
export const REQUIRED_KERNELS_BY_TIER: Readonly<
|
|
135
|
+
Record<Eliza1Tier, ReadonlyArray<Eliza1Kernel>>
|
|
136
|
+
> = {
|
|
137
|
+
"2b": ["turboquant_q4", "qjl", "polarquant", "turbo3_tcq"],
|
|
138
|
+
"4b": ["turboquant_q4", "qjl", "polarquant", "turbo3_tcq"],
|
|
139
|
+
"9b": ["turboquant_q4", "qjl", "polarquant", "turbo3_tcq"],
|
|
140
|
+
"27b": ["turboquant_q4", "qjl", "polarquant", "turbo3_tcq"],
|
|
141
|
+
"27b-256k": ["turboquant_q4", "qjl", "polarquant", "turbo3_tcq"],
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// Backends each tier is expected to support on shipped hardware.
|
|
145
|
+
export const SUPPORTED_BACKENDS_BY_TIER: Readonly<
|
|
146
|
+
Record<Eliza1Tier, ReadonlyArray<Eliza1Backend>>
|
|
147
|
+
> = {
|
|
148
|
+
"2b": ["metal", "vulkan", "cpu"],
|
|
149
|
+
"4b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
150
|
+
"9b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
151
|
+
"27b": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
152
|
+
"27b-256k": ["metal", "vulkan", "cuda", "rocm", "cpu"],
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Zod definitions
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
|
|
159
|
+
const sha256 = z
|
|
160
|
+
.string()
|
|
161
|
+
.regex(/^[a-f0-9]{64}$/, "sha256 must be 64 lowercase hex chars");
|
|
162
|
+
|
|
163
|
+
const lineageEntry = z.object({
|
|
164
|
+
base: z.string().min(1),
|
|
165
|
+
license: z.string().min(1),
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
export const Eliza1LineageSchema = z.object({
|
|
169
|
+
text: lineageEntry,
|
|
170
|
+
voice: lineageEntry,
|
|
171
|
+
drafter: lineageEntry.optional(),
|
|
172
|
+
// Wave-6 (2026-05-10): manifest now records lineage for every shipped
|
|
173
|
+
// component so license/dataset provenance is auditable per component.
|
|
174
|
+
// All optional — a tier may omit ASR/embedding/vision/vad/wakeword by
|
|
175
|
+
// leaving the corresponding `files.*` slot empty AND the lineage
|
|
176
|
+
// entry undefined. The validator enforces lineage-vs-files consistency.
|
|
177
|
+
asr: lineageEntry.optional(),
|
|
178
|
+
embedding: lineageEntry.optional(),
|
|
179
|
+
imagegen: lineageEntry.optional(),
|
|
180
|
+
vision: lineageEntry.optional(),
|
|
181
|
+
vad: lineageEntry.optional(),
|
|
182
|
+
wakeword: lineageEntry.optional(),
|
|
183
|
+
// Voice Wave 2 (2026-05-14): semantic end-of-turn detector lineage. When
|
|
184
|
+
// `files.turn` ships the bundled `livekit/turn-detector` ONNX (the
|
|
185
|
+
// ≤1.7B-tier `v1.2.2-en` SmolLM2 distill or the ≥4B-tier `v0.4.1-intl`
|
|
186
|
+
// pruned Qwen2.5-0.5B), this records the upstream repo + license. Apache-2.0
|
|
187
|
+
// fallback path is `latishab/turnsense`.
|
|
188
|
+
turn: lineageEntry.optional(),
|
|
189
|
+
// Voice Wave 2 (2026-05-14): acoustic-prosody emotion classifier lineage.
|
|
190
|
+
// When `files.emotion` ships the bundled Wav2Small student GGUF (72K
|
|
191
|
+
// params), this records the audeering teacher repo + license as
|
|
192
|
+
// research-only attribution (the audeering teacher is CC-BY-NC-SA-4.0
|
|
193
|
+
// and NEVER bundled — only the Apache-2.0 student is shipped, distilled
|
|
194
|
+
// via `packages/training/scripts/emotion/distill_wav2small.py`). The
|
|
195
|
+
// SamLowe/roberta-base-go_emotions text classifier may optionally also
|
|
196
|
+
// ship under this slot when the operator enables the text-classifier
|
|
197
|
+
// shadow path; see R3-emotion.md §2.
|
|
198
|
+
emotion: lineageEntry.optional(),
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
export const Eliza1FileEntrySchema = z.object({
|
|
202
|
+
path: z.string().min(1),
|
|
203
|
+
sha256,
|
|
204
|
+
// text files declare their context length so the runtime can pick the
|
|
205
|
+
// largest variant that fits the device's RAM budget. Other file kinds
|
|
206
|
+
// never have ctx.
|
|
207
|
+
ctx: z.number().int().min(131072, "must be at least 128k").optional(),
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
export const Eliza1FilesSchema = z.object({
|
|
211
|
+
text: z.array(Eliza1FileEntrySchema).min(1),
|
|
212
|
+
voice: z.array(Eliza1FileEntrySchema).min(1),
|
|
213
|
+
asr: z.array(Eliza1FileEntrySchema),
|
|
214
|
+
vision: z.array(Eliza1FileEntrySchema),
|
|
215
|
+
mtp: z.array(Eliza1FileEntrySchema),
|
|
216
|
+
cache: z.array(Eliza1FileEntrySchema).min(1),
|
|
217
|
+
// Wave-6 (2026-05-10): the omni bundle ships a per-bundle dedicated
|
|
218
|
+
// embedding model (Qwen3-Embedding-GGUF on non-lite tiers), a
|
|
219
|
+
// Silero-VAD GGUF, and an optional openWakeWord GGUF (the combined GGUF
|
|
220
|
+
// carries the mel filterbank + speech embedding model + every per-phrase
|
|
221
|
+
// head). All three are optional in the schema — the 2b entry tier
|
|
222
|
+
// intentionally omits the dedicated embedding (pools from text backbone)
|
|
223
|
+
// and a tier may ship without wake-word support.
|
|
224
|
+
//
|
|
225
|
+
// Schema-level optionality: empty array = "this bundle does not
|
|
226
|
+
// ship this component"; the validator enforces tier-specific
|
|
227
|
+
// consistency rules (e.g. 4b-and-up MUST ship `embedding[]`).
|
|
228
|
+
embedding: z.array(Eliza1FileEntrySchema).optional(),
|
|
229
|
+
// Optional image-generation artifacts. Most Eliza-1 base bundles do not
|
|
230
|
+
// carry diffusion weights; those are documented in
|
|
231
|
+
// packages/chip/ELIZA_1_BUNDLE_EXTRAS.json and downloaded on first use. When an
|
|
232
|
+
// additional bundle ships local image-gen weights inline, list them here
|
|
233
|
+
// and provide matching `lineage.imagegen`.
|
|
234
|
+
imagegen: z.array(Eliza1FileEntrySchema).optional(),
|
|
235
|
+
vad: z.array(Eliza1FileEntrySchema).optional(),
|
|
236
|
+
wakeword: z.array(Eliza1FileEntrySchema).optional(),
|
|
237
|
+
// Voice Wave 2 (2026-05-14): bundled semantic turn detector. Optional —
|
|
238
|
+
// when omitted, the runtime falls back to `HeuristicEotClassifier` (the
|
|
239
|
+
// deterministic punctuation/conjunction baseline). When present, the
|
|
240
|
+
// runtime loads the model via the GGUF-backed LiveKit turn detector
|
|
241
|
+
// (`eot-classifier-ggml.ts`) and pre-warms it at voice-session start.
|
|
242
|
+
// Tier mapping is data-driven (see
|
|
243
|
+
// `stage_turn_detector` in
|
|
244
|
+
// `packages/training/scripts/manifest/stage_eliza1_bundle_assets.py`):
|
|
245
|
+
// 2b ships the EN-only SmolLM2-135M distill; 4b/9b/27b ship the
|
|
246
|
+
// multilingual pruned Qwen2.5-0.5B.
|
|
247
|
+
turn: z.array(Eliza1FileEntrySchema).optional(),
|
|
248
|
+
// Eliza-1 EOT LoRA adapter — optional, complements `turn`. When
|
|
249
|
+
// present, the runtime layers this adapter onto the in-process
|
|
250
|
+
// drafter at voice-session start (`voice/eliza1-eot-scorer.ts`) so
|
|
251
|
+
// P(`<|im_end|>`) calibration matches a fine-tuned EOT head without
|
|
252
|
+
// shipping a second base model. When both `turn` and `eotLoraAdapter`
|
|
253
|
+
// are present the operator picks via `ELIZA_VOICE_EOT_BACKEND` or
|
|
254
|
+
// `startVoiceSession({ useEliza1Eot })`. Training recipe:
|
|
255
|
+
// `packages/training/scripts/turn_detector/configs/turn_detector_eliza1_drafter.yaml`.
|
|
256
|
+
eotLoraAdapter: z.array(Eliza1FileEntrySchema).optional(),
|
|
257
|
+
// Voice Wave 2 (2026-05-14): bundled acoustic-prosody emotion classifier
|
|
258
|
+
// (Wav2Small student, GGUF). Optional — when omitted, the runtime falls
|
|
259
|
+
// back to the lexicon + audio-prosody heuristic path inside
|
|
260
|
+
// `attributeVoiceEmotion()` (no acoustic-model evidence row). When present,
|
|
261
|
+
// the runtime loads the GGUF via `VoiceEmotionClassifier`, runs it on
|
|
262
|
+
// `isFinal` transcript snapshots, and fuses the output with the Stage-1
|
|
263
|
+
// text-emotion field via the single fusion point in `emotion-attribution.ts`.
|
|
264
|
+
// All tiers ship the same Wav2Small student (the on-device budget is
|
|
265
|
+
// dominated by the LM, not this small head); a 2b entry bundle may still
|
|
266
|
+
// choose to omit it to save the cold-start cost.
|
|
267
|
+
emotion: z.array(Eliza1FileEntrySchema).optional(),
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
export const Eliza1KernelEnumSchema = z.enum(ELIZA_1_KERNELS);
|
|
271
|
+
export const Eliza1BackendEnumSchema = z.enum(ELIZA_1_BACKENDS);
|
|
272
|
+
export const Eliza1TierEnumSchema = z.enum(ELIZA_1_TIERS);
|
|
273
|
+
|
|
274
|
+
export const Eliza1VerifiedBackendStatusSchema = z.object({
|
|
275
|
+
status: z.enum(["pass", "fail", "skipped"]),
|
|
276
|
+
atCommit: z.string().min(1),
|
|
277
|
+
report: z.string().min(1),
|
|
278
|
+
// Optional provenance for a "pass" recorded on a single device class — e.g.
|
|
279
|
+
// the runtime Vulkan dispatch smoke that ran on one Intel-ANV GPU. `caveat`
|
|
280
|
+
// names what device coverage is still missing so the recommendation engine
|
|
281
|
+
// and release docs do not over-claim.
|
|
282
|
+
device: z.string().min(1).optional(),
|
|
283
|
+
caveat: z.string().min(1).optional(),
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// Recipe-level kernel layout pins, folded in from the quantization recipes'
|
|
287
|
+
// `kernel_manifest` sidecar fragments
|
|
288
|
+
// (packages/training/scripts/quantization/_kernel_manifest.py). Keyed by the
|
|
289
|
+
// *recipe* kernel-target name (`turbo3` / `turbo4` / `turbo3_tcq` / `qjl1_256` /
|
|
290
|
+
// `polar_q4`) — NOT the manifest-level capability names in `ELIZA_1_KERNELS`.
|
|
291
|
+
// The runtime/downloader can verify the encoded blocks match the kernels it
|
|
292
|
+
// ships; the publish orchestrator already validates the sidecars exist.
|
|
293
|
+
export const Eliza1RecipeKernelPinsSchema = z.object({
|
|
294
|
+
blockLayoutVersion: z.string().min(1),
|
|
295
|
+
codebookHash: z.string().min(1),
|
|
296
|
+
perBlockTolerance: z.number().positive(),
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
export const Eliza1Eagle3KernelSchema = z
|
|
300
|
+
.object({
|
|
301
|
+
enabled: z.boolean().optional(),
|
|
302
|
+
capability: z.string().min(1).optional(),
|
|
303
|
+
specType: z.string().min(1).optional(),
|
|
304
|
+
model: z.string().min(1).optional(),
|
|
305
|
+
maxDraftTokens: z.number().int().positive().optional(),
|
|
306
|
+
failure: z.string().min(1).optional(),
|
|
307
|
+
})
|
|
308
|
+
.passthrough();
|
|
309
|
+
|
|
310
|
+
export const Eliza1KernelsSchema = z.object({
|
|
311
|
+
required: z.array(Eliza1KernelEnumSchema).min(1),
|
|
312
|
+
optional: z.array(Eliza1KernelEnumSchema),
|
|
313
|
+
verifiedBackends: z.object({
|
|
314
|
+
metal: Eliza1VerifiedBackendStatusSchema,
|
|
315
|
+
vulkan: Eliza1VerifiedBackendStatusSchema,
|
|
316
|
+
cuda: Eliza1VerifiedBackendStatusSchema,
|
|
317
|
+
rocm: Eliza1VerifiedBackendStatusSchema,
|
|
318
|
+
cpu: Eliza1VerifiedBackendStatusSchema,
|
|
319
|
+
}),
|
|
320
|
+
recipeManifest: z.record(z.string(), Eliza1RecipeKernelPinsSchema).optional(),
|
|
321
|
+
// Optional EAGLE3 capability metadata.
|
|
322
|
+
eagle3: Eliza1Eagle3KernelSchema.optional(),
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// Wave-6: voice surface declares which expressive features the bundled
|
|
326
|
+
// TTS supports. Today these are tag-driven inline in the input text;
|
|
327
|
+
// presence of `singing` or `emotion-tags` here lets the runtime expose
|
|
328
|
+
// the relevant API surface and lets the planner emit tags inline.
|
|
329
|
+
export const ELIZA_1_VOICE_CAPABILITIES = [
|
|
330
|
+
"tts",
|
|
331
|
+
"emotion-tags",
|
|
332
|
+
"singing",
|
|
333
|
+
] as const;
|
|
334
|
+
export const ELIZA_1_VOICE_MANIFEST_VERSION = "1";
|
|
335
|
+
export const VOICE_PRESET_CACHE_PATH = "cache/voice-preset-default.bin";
|
|
336
|
+
export type Eliza1VoiceCapability = (typeof ELIZA_1_VOICE_CAPABILITIES)[number];
|
|
337
|
+
|
|
338
|
+
export const Eliza1VoiceSchema = z.object({
|
|
339
|
+
version: z.string().min(1),
|
|
340
|
+
frozen: z.literal(true),
|
|
341
|
+
cache: z.object({
|
|
342
|
+
speakerPreset: z.string().min(1),
|
|
343
|
+
phraseCacheSeed: z.string().min(1),
|
|
344
|
+
}),
|
|
345
|
+
capabilities: z.array(z.enum(ELIZA_1_VOICE_CAPABILITIES)).default(["tts"]),
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const Eliza1Eagle3EvalSchema = z
|
|
349
|
+
.object({
|
|
350
|
+
/** accepted/drafted; null or absent when not measured. */
|
|
351
|
+
acceptanceRate: z.number().min(0).max(1).nullable().optional(),
|
|
352
|
+
/** EAGLE3-on tok/s ÷ baseline tok/s; null or absent when not measured. */
|
|
353
|
+
speedup: z.number().nonnegative().nullable().optional(),
|
|
354
|
+
/** Preferred spelling for pass/fail status. */
|
|
355
|
+
passed: z.boolean().optional(),
|
|
356
|
+
/** Back-compat spelling accepted for manifest producers that emit `pass`. */
|
|
357
|
+
pass: z.boolean().optional(),
|
|
358
|
+
/** Human-readable reason when the EAGLE3 eval was not run or failed. */
|
|
359
|
+
failure: z.string().min(1).optional(),
|
|
360
|
+
})
|
|
361
|
+
.superRefine((eagle3, ctx) => {
|
|
362
|
+
if (
|
|
363
|
+
eagle3.pass !== undefined &&
|
|
364
|
+
eagle3.passed !== undefined &&
|
|
365
|
+
eagle3.pass !== eagle3.passed
|
|
366
|
+
) {
|
|
367
|
+
ctx.addIssue({
|
|
368
|
+
code: "custom",
|
|
369
|
+
message: "pass and passed must agree when both are present",
|
|
370
|
+
path: ["pass"],
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
const passed = eagle3.passed ?? eagle3.pass;
|
|
374
|
+
if (
|
|
375
|
+
passed === true &&
|
|
376
|
+
(eagle3.acceptanceRate == null || eagle3.speedup == null)
|
|
377
|
+
) {
|
|
378
|
+
ctx.addIssue({
|
|
379
|
+
code: "custom",
|
|
380
|
+
message: "passed=true requires measured acceptanceRate and speedup",
|
|
381
|
+
path: ["passed"],
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
export const Eliza1EvalsSchema = z.object({
|
|
387
|
+
textEval: z.object({
|
|
388
|
+
score: z.number().min(0).max(1),
|
|
389
|
+
passed: z.boolean(),
|
|
390
|
+
}),
|
|
391
|
+
voiceRtf: z.object({
|
|
392
|
+
rtf: z.number().nonnegative(),
|
|
393
|
+
passed: z.boolean(),
|
|
394
|
+
}),
|
|
395
|
+
e2eLoopOk: z.boolean(),
|
|
396
|
+
thirtyTurnOk: z.boolean(),
|
|
397
|
+
// Wave-6 additions — all optional so a tier can publish without
|
|
398
|
+
// an ASR / embedding component declared. `expressive` covers the
|
|
399
|
+
// singing/emotion-tag eval gates from `eliza1_gates.yaml`. The
|
|
400
|
+
// validator refuses defaultEligible=true if any declared component's
|
|
401
|
+
// gate is missing OR fails.
|
|
402
|
+
asrWer: z
|
|
403
|
+
.object({
|
|
404
|
+
wer: z.number().nonnegative(),
|
|
405
|
+
passed: z.boolean(),
|
|
406
|
+
})
|
|
407
|
+
.optional(),
|
|
408
|
+
embedMteb: z
|
|
409
|
+
.object({
|
|
410
|
+
score: z.number().min(0).max(1),
|
|
411
|
+
passed: z.boolean(),
|
|
412
|
+
})
|
|
413
|
+
.optional(),
|
|
414
|
+
vadLatencyMs: z
|
|
415
|
+
.object({
|
|
416
|
+
median: z.number().nonnegative(),
|
|
417
|
+
boundaryMs: z.number().nonnegative().optional(),
|
|
418
|
+
endpointMs: z.number().nonnegative().optional(),
|
|
419
|
+
falseBargeInRate: z.number().min(0).max(1).optional(),
|
|
420
|
+
passed: z.boolean(),
|
|
421
|
+
})
|
|
422
|
+
.optional(),
|
|
423
|
+
expressive: z
|
|
424
|
+
.object({
|
|
425
|
+
tagFaithfulness: z.number().min(0).max(1),
|
|
426
|
+
mosExpressive: z.number().nonnegative(),
|
|
427
|
+
tagLeakage: z.number().nonnegative(),
|
|
428
|
+
passed: z.boolean(),
|
|
429
|
+
})
|
|
430
|
+
.optional(),
|
|
431
|
+
mtp: z
|
|
432
|
+
.object({
|
|
433
|
+
acceptanceRate: z.number().min(0).max(1).nullable(),
|
|
434
|
+
speedup: z.number().nonnegative().nullable(),
|
|
435
|
+
passed: z.boolean(),
|
|
436
|
+
})
|
|
437
|
+
.optional(),
|
|
438
|
+
// Optional EAGLE3 speculative-decoding bench metadata.
|
|
439
|
+
eagle3: Eliza1Eagle3EvalSchema.optional(),
|
|
440
|
+
// Voice Wave 2 (2026-05-14): semantic end-of-turn detector eval gates.
|
|
441
|
+
// Required when `files.turn` is non-empty (validator enforces). Thresholds
|
|
442
|
+
// applied by `eval_turn_detector.py` in `packages/training/scripts/turn_detector/`:
|
|
443
|
+
// f1 ≥ TURN_DETECTOR_F1_THRESHOLD (0.85)
|
|
444
|
+
// meanLatencyMs ≤ TURN_DETECTOR_MEAN_LATENCY_MS_LIMIT (30 ms)
|
|
445
|
+
// `passed` is precomputed by the eval script per the constants above so
|
|
446
|
+
// the validator stays a single source of truth; constants are exported
|
|
447
|
+
// from this module for the script + tests to consume.
|
|
448
|
+
turnDetector: z
|
|
449
|
+
.object({
|
|
450
|
+
f1: z.number().min(0).max(1),
|
|
451
|
+
meanLatencyMs: z.number().nonnegative(),
|
|
452
|
+
passed: z.boolean(),
|
|
453
|
+
// Which detector backend the eval was run against. Optional for
|
|
454
|
+
// back-compat with bundles staged before the eliza-1 EOT path;
|
|
455
|
+
// when absent, consumers should assume `livekit`.
|
|
456
|
+
kind: z.enum(["livekit", "turnsense", "eliza-1-drafter"]).optional(),
|
|
457
|
+
})
|
|
458
|
+
.optional(),
|
|
459
|
+
// Voice Wave 2 (2026-05-14): acoustic-emotion classifier eval gates.
|
|
460
|
+
// Required when `files.emotion` is non-empty (validator enforces).
|
|
461
|
+
// Thresholds applied by the bench harness under
|
|
462
|
+
// `packages/benchmarks/voice-emotion/`:
|
|
463
|
+
// macroF1Meld ≥ EMOTION_CLASSIFIER_MELD_F1_THRESHOLD (0.35)
|
|
464
|
+
// macroF1Iemocap ≥ EMOTION_CLASSIFIER_IEMOCAP_F1_THRESHOLD (0.60)
|
|
465
|
+
// The MELD threshold is intentionally low — 7-class conversational SER
|
|
466
|
+
// macro-F1 is 0.40-0.50 even for strong models on MELD; we set the gate so
|
|
467
|
+
// a real improvement does not get refused (R3-emotion §6 risk).
|
|
468
|
+
emotionClassifier: z
|
|
469
|
+
.object({
|
|
470
|
+
macroF1Meld: z.number().min(0).max(1),
|
|
471
|
+
macroF1Iemocap: z.number().min(0).max(1),
|
|
472
|
+
/** Mean per-clip inference latency on CPU. */
|
|
473
|
+
meanLatencyMs: z.number().nonnegative(),
|
|
474
|
+
passed: z.boolean(),
|
|
475
|
+
})
|
|
476
|
+
.optional(),
|
|
477
|
+
});
|
|
478
|
+
|
|
479
|
+
/** Eval-gate threshold: minimum acceptable F1 on the EOU benchmark. */
|
|
480
|
+
export const TURN_DETECTOR_F1_THRESHOLD = 0.85 as const;
|
|
481
|
+
|
|
482
|
+
/** Eval-gate threshold: maximum acceptable mean inference latency (ms). */
|
|
483
|
+
export const TURN_DETECTOR_MEAN_LATENCY_MS_LIMIT = 30 as const;
|
|
484
|
+
|
|
485
|
+
/** Eval-gate threshold: minimum macro-F1 on MELD test (7-class). */
|
|
486
|
+
export const EMOTION_CLASSIFIER_MELD_F1_THRESHOLD = 0.35 as const;
|
|
487
|
+
|
|
488
|
+
/** Eval-gate threshold: minimum macro-F1 on IEMOCAP test (4-class). */
|
|
489
|
+
export const EMOTION_CLASSIFIER_IEMOCAP_F1_THRESHOLD = 0.6 as const;
|
|
490
|
+
|
|
491
|
+
/** Eval-gate threshold: maximum mean CPU inference latency (ms) per window. */
|
|
492
|
+
export const EMOTION_CLASSIFIER_MEAN_LATENCY_MS_LIMIT = 30 as const;
|
|
493
|
+
|
|
494
|
+
export const Eliza1RamBudgetSchema = z
|
|
495
|
+
.object({
|
|
496
|
+
min: z.number().int().positive(),
|
|
497
|
+
recommended: z.number().int().positive(),
|
|
498
|
+
})
|
|
499
|
+
.refine((r) => r.recommended >= r.min, {
|
|
500
|
+
message: "ramBudgetMb.recommended must be >= ramBudgetMb.min",
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
// Release-state vocabulary. `base-v1` is the v1 product: the upstream BASE
|
|
504
|
+
// models — GGUF-converted via the elizaOS/llama.cpp fork and fully
|
|
505
|
+
// Eliza-optimized (every quant/kernel trick in inference/AGENTS.md §3) —
|
|
506
|
+
// but NOT fine-tuned (fine-tuning ships in v2). `base-v1-candidate` is the
|
|
507
|
+
// in-progress state of a base-v1 bundle before every release-blocking
|
|
508
|
+
// gate (real fork-built bytes, every supported-backend kernel verify,
|
|
509
|
+
// every required platform-dispatch report, the runnable-on-base evals)
|
|
510
|
+
// has gone green. It is publishable to HuggingFace as a download target
|
|
511
|
+
// and is installable on a device whose backend it verified, but is not
|
|
512
|
+
// the strict release — its `defaultEligible` stays `false` at publish
|
|
513
|
+
// time. `finetuned-v2` is the v2 state; `local-standin` is a non-publishable
|
|
514
|
+
// staging shape; `upload-candidate` / `final` are the historical
|
|
515
|
+
// fine-tuned-v1 publish states retained for forward-compat. Mirrors
|
|
516
|
+
// `ELIZA_1_RELEASE_STATES` in
|
|
517
|
+
// `packages/training/scripts/manifest/eliza1_manifest.py`.
|
|
518
|
+
export const ELIZA_1_RELEASE_STATES = [
|
|
519
|
+
"local-standin",
|
|
520
|
+
"base-v1-candidate",
|
|
521
|
+
"base-v1",
|
|
522
|
+
"finetuned-v2",
|
|
523
|
+
"upload-candidate",
|
|
524
|
+
"final",
|
|
525
|
+
] as const;
|
|
526
|
+
export type Eliza1ReleaseState = (typeof ELIZA_1_RELEASE_STATES)[number];
|
|
527
|
+
|
|
528
|
+
// Release-channel vocabulary recorded on a published manifest.
|
|
529
|
+
// `recommended` is the fine-tuned Eliza-1 (ships in v2) — the channel a
|
|
530
|
+
// device may auto-promote to the strict default. `base-v1` is the
|
|
531
|
+
// upstream-base + kernel-optimized release: every quant/kernel trick
|
|
532
|
+
// applied, but the text weights are the upstream base GGUFs (not the
|
|
533
|
+
// fine-tuned Eliza-1). A `base-v1`-channel manifest MUST be
|
|
534
|
+
// `defaultEligible: false` at publish time. The on-device gate
|
|
535
|
+
// (`canSetAsDefault`) still promotes a contract-valid `base-v1` bundle to
|
|
536
|
+
// the fallback default when no `recommended` channel bundle is installed —
|
|
537
|
+
// see `validator.ts`. Mirrors `ELIZA_1_RELEASE_CHANNELS` (Python side).
|
|
538
|
+
export const ELIZA_1_RELEASE_CHANNELS = ["recommended", "base-v1"] as const;
|
|
539
|
+
export type Eliza1ReleaseChannel = (typeof ELIZA_1_RELEASE_CHANNELS)[number];
|
|
540
|
+
|
|
541
|
+
// Provenance slots — the bundle components whose upstream source repo a
|
|
542
|
+
// `base-v1` manifest must record. Mirrors `ELIZA_1_PROVENANCE_SLOTS`
|
|
543
|
+
// (Python side).
|
|
544
|
+
export const ELIZA_1_PROVENANCE_SLOTS = [
|
|
545
|
+
"text",
|
|
546
|
+
"voice",
|
|
547
|
+
"asr",
|
|
548
|
+
"vad",
|
|
549
|
+
"embedding",
|
|
550
|
+
"imagegen",
|
|
551
|
+
"vision",
|
|
552
|
+
"drafter",
|
|
553
|
+
] as const;
|
|
554
|
+
export type Eliza1ProvenanceSlot = (typeof ELIZA_1_PROVENANCE_SLOTS)[number];
|
|
555
|
+
|
|
556
|
+
const eliza1SourceModelEntry = z.object({
|
|
557
|
+
/** Upstream HuggingFace repo this component is converted from. */
|
|
558
|
+
repo: z.string().min(1),
|
|
559
|
+
/** Specific file in the upstream repo, when the source is one file. */
|
|
560
|
+
file: z.string().min(1).optional(),
|
|
561
|
+
/** The converter / recipe path used (e.g. `<fork>/convert_hf_to_gguf.py`). */
|
|
562
|
+
convertedVia: z.string().min(1).optional(),
|
|
563
|
+
/** Free-text provenance note. */
|
|
564
|
+
note: z.string().min(1).optional(),
|
|
565
|
+
});
|
|
566
|
+
|
|
567
|
+
// `provenance` — optional manifest block. Required on a `base-v1` bundle so
|
|
568
|
+
// the "base, not fine-tuned" plan is auditable: which upstream repo each
|
|
569
|
+
// shipped component is converted from, and whether v1 fine-tuning was
|
|
570
|
+
// applied (always `false` for the base-v1 release). The contract validator
|
|
571
|
+
// enforces per-component coverage for `base-v1`.
|
|
572
|
+
export const Eliza1ProvenanceSchema = z.object({
|
|
573
|
+
releaseState: z.enum(ELIZA_1_RELEASE_STATES),
|
|
574
|
+
finetuned: z.boolean(),
|
|
575
|
+
sourceModels: z.record(
|
|
576
|
+
z.enum(ELIZA_1_PROVENANCE_SLOTS),
|
|
577
|
+
eliza1SourceModelEntry,
|
|
578
|
+
),
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
export const Eliza1ManifestSchema = z
|
|
582
|
+
.object({
|
|
583
|
+
$schema: z.literal(ELIZA_1_MANIFEST_SCHEMA_URL).optional(),
|
|
584
|
+
id: z.string().min(1),
|
|
585
|
+
tier: Eliza1TierEnumSchema,
|
|
586
|
+
version: z
|
|
587
|
+
.string()
|
|
588
|
+
.regex(
|
|
589
|
+
/^\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?$/,
|
|
590
|
+
"version must be semver (e.g. 1.0.0)",
|
|
591
|
+
),
|
|
592
|
+
publishedAt: z.string().datetime(),
|
|
593
|
+
lineage: Eliza1LineageSchema,
|
|
594
|
+
files: Eliza1FilesSchema,
|
|
595
|
+
kernels: Eliza1KernelsSchema,
|
|
596
|
+
evals: Eliza1EvalsSchema,
|
|
597
|
+
ramBudgetMb: Eliza1RamBudgetSchema,
|
|
598
|
+
// Wave-6: optional. Default = `{ capabilities: ["tts"] }` (base TTS only,
|
|
599
|
+
// no emotion tags, no singing). Bundles that ship the omnivoice-singing
|
|
600
|
+
// weights advertise `["tts","emotion-tags","singing"]`.
|
|
601
|
+
voice: Eliza1VoiceSchema.optional(),
|
|
602
|
+
// Optional. Present on `base-v1` bundles (the upstream base models,
|
|
603
|
+
// GGUF-converted + fully optimized, NOT fine-tuned). Records the
|
|
604
|
+
// release state, the not-fine-tuned flag, and the upstream source repo
|
|
605
|
+
// per shipped component. The contract validator requires per-component
|
|
606
|
+
// coverage when `releaseState === "base-v1"`.
|
|
607
|
+
provenance: Eliza1ProvenanceSchema.optional(),
|
|
608
|
+
// Optional. Defaults to `"recommended"` semantically when unset (the
|
|
609
|
+
// fine-tuned Eliza-1 — the channel allowed to auto-promote to the
|
|
610
|
+
// strict device default). A `"base-v1"`-channel manifest is the
|
|
611
|
+
// upstream-base + kernel-optimized release; it MUST be
|
|
612
|
+
// `defaultEligible: false` at publish time. The on-device gate
|
|
613
|
+
// (`canSetAsDefault`) still allows a contract-valid `base-v1` bundle
|
|
614
|
+
// to fill an empty default slot when no `recommended` channel bundle
|
|
615
|
+
// is installed; the recommender prefers `defaultEligible: true` over
|
|
616
|
+
// candidates whenever both are available.
|
|
617
|
+
releaseChannel: z.enum(ELIZA_1_RELEASE_CHANNELS).optional(),
|
|
618
|
+
defaultEligible: z.boolean(),
|
|
619
|
+
// Optional. Quant metadata emitted by the publish-side manifest
|
|
620
|
+
// builder. May be either a free-text tag (`"Q3_K_S"`, `"Q4_K_M"`) or a
|
|
621
|
+
// structured object describing the optimization recipe (PolarQuant +
|
|
622
|
+
// QJL block layout, per-layer outlier counts, etc.). Not consumed by
|
|
623
|
+
// the runtime validator — declared here so a manifest carrying it is
|
|
624
|
+
// accepted instead of being stripped or rejected. The schema is
|
|
625
|
+
// intentionally permissive: the publish-side tool is the source of
|
|
626
|
+
// truth for the shape, and the runtime only needs the manifest to
|
|
627
|
+
// round-trip cleanly.
|
|
628
|
+
textQuant: z
|
|
629
|
+
.union([z.string().min(1), z.record(z.string(), z.unknown())])
|
|
630
|
+
.optional(),
|
|
631
|
+
})
|
|
632
|
+
// The id MUST encode the tier so catalogs can derive tier from id without
|
|
633
|
+
// re-reading the manifest. Example: `id: "eliza-1-9b"`.
|
|
634
|
+
.refine(
|
|
635
|
+
(m) =>
|
|
636
|
+
m.id === `eliza-1-${m.tier}` || m.id.startsWith(`eliza-1-${m.tier}-`),
|
|
637
|
+
{
|
|
638
|
+
message: "id must start with `eliza-1-<tier>`",
|
|
639
|
+
path: ["id"],
|
|
640
|
+
},
|
|
641
|
+
)
|
|
642
|
+
// A `base-v1`-channel manifest is the upstream-base release. At publish
|
|
643
|
+
// time it MUST be `defaultEligible: false` — the on-device gate
|
|
644
|
+
// (`canSetAsDefault`) is the one that allows it to fill an empty default
|
|
645
|
+
// slot when no `recommended` bundle is installed. Mirrors
|
|
646
|
+
// inference/AGENTS.md §6 and the Python manifest builder.
|
|
647
|
+
.refine(
|
|
648
|
+
(m) => m.releaseChannel !== "base-v1" || m.defaultEligible === false,
|
|
649
|
+
{
|
|
650
|
+
message: "releaseChannel=base-v1 requires defaultEligible: false",
|
|
651
|
+
path: ["defaultEligible"],
|
|
652
|
+
},
|
|
653
|
+
);
|