@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.11-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +83 -0
- package/package.json +81 -15
- package/src/actions/generate-media.d.ts +59 -0
- package/src/actions/generate-media.d.ts.map +1 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.d.ts +23 -0
- package/src/actions/identify-speaker.d.ts.map +1 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +807 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.d.ts +7 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.ts +54 -0
- package/src/local-inference-routes.d.ts +38 -0
- package/src/local-inference-routes.d.ts.map +1 -0
- package/src/local-inference-routes.test.ts +344 -0
- package/src/local-inference-routes.ts +1543 -0
- package/src/provider.d.ts +21 -0
- package/src/provider.d.ts.map +1 -0
- package/src/provider.ts +1171 -0
- package/src/routes/compat-helpers.d.ts +18 -0
- package/src/routes/compat-helpers.d.ts.map +1 -0
- package/src/routes/compat-helpers.ts +274 -0
- package/src/routes/family-member-route.d.ts +62 -0
- package/src/routes/family-member-route.d.ts.map +1 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.d.ts +19 -0
- package/src/routes/index.d.ts.map +1 -0
- package/src/routes/index.ts +60 -0
- package/src/routes/live-diarization-route.d.ts +26 -0
- package/src/routes/live-diarization-route.d.ts.map +1 -0
- package/src/routes/live-diarization-route.test.ts +213 -0
- package/src/routes/live-diarization-route.ts +122 -0
- package/src/routes/local-inference-asr-route.d.ts +4 -0
- package/src/routes/local-inference-asr-route.d.ts.map +1 -0
- package/src/routes/local-inference-asr-route.test.ts +190 -0
- package/src/routes/local-inference-asr-route.ts +213 -0
- package/src/routes/local-inference-compat-routes.d.ts +16 -0
- package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/src/routes/local-inference-compat-routes.test.ts +423 -0
- package/src/routes/local-inference-compat-routes.ts +782 -0
- package/src/routes/local-inference-tts-route.d.ts +7 -0
- package/src/routes/local-inference-tts-route.d.ts.map +1 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/voice-first-run-routes.d.ts +62 -0
- package/src/routes/voice-first-run-routes.d.ts.map +1 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.d.ts +62 -0
- package/src/routes/voice-models-routes.d.ts.map +1 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.d.ts +52 -0
- package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.d.ts +77 -0
- package/src/runtime/embedding-manager-support.d.ts.map +1 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.d.ts +16 -0
- package/src/runtime/embedding-presets.d.ts.map +1 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.d.ts +14 -0
- package/src/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.d.ts +53 -0
- package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
- package/src/runtime/ensure-local-inference-handler.ts +1398 -0
- package/src/runtime/index.d.ts +14 -0
- package/src/runtime/index.d.ts.map +1 -0
- package/src/runtime/index.ts +27 -0
- package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
- package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
- package/src/runtime/mobile-local-inference-gate.ts +44 -0
- package/src/runtime/voice-entity-binding.d.ts +103 -0
- package/src/runtime/voice-entity-binding.d.ts.map +1 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
- package/src/runtime/voice-entity-binding.ts +328 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.d.ts +282 -0
- package/src/services/active-model.d.ts.map +1 -0
- package/src/services/active-model.ts +1213 -0
- package/src/services/asr/errors.d.ts +21 -0
- package/src/services/asr/errors.d.ts.map +1 -0
- package/src/services/asr/errors.ts +50 -0
- package/src/services/asr/hash.d.ts +28 -0
- package/src/services/asr/hash.d.ts.map +1 -0
- package/src/services/asr/hash.ts +49 -0
- package/src/services/asr/index.d.ts +76 -0
- package/src/services/asr/index.d.ts.map +1 -0
- package/src/services/asr/index.ts +178 -0
- package/src/services/asr/types.d.ts +91 -0
- package/src/services/asr/types.d.ts.map +1 -0
- package/src/services/asr/types.ts +95 -0
- package/src/services/assignments.d.ts +71 -0
- package/src/services/assignments.d.ts.map +1 -0
- package/src/services/assignments.test.ts +80 -0
- package/src/services/assignments.ts +230 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.d.ts +346 -0
- package/src/services/backend.d.ts.map +1 -0
- package/src/services/backend.ts +612 -0
- package/src/services/bundled-models.d.ts +34 -0
- package/src/services/bundled-models.d.ts.map +1 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.d.ts +206 -0
- package/src/services/cache-bridge.d.ts.map +1 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.d.ts +10 -0
- package/src/services/catalog.d.ts.map +1 -0
- package/src/services/catalog.test.ts +240 -0
- package/src/services/catalog.ts +27 -0
- package/src/services/checkpoint-client.d.ts +109 -0
- package/src/services/checkpoint-client.d.ts.map +1 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.d.ts +102 -0
- package/src/services/cloud-fallback.d.ts.map +1 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/conversation-registry.d.ts +142 -0
- package/src/services/conversation-registry.d.ts.map +1 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts +92 -0
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +333 -0
- package/src/services/device-bridge.d.ts +188 -0
- package/src/services/device-bridge.d.ts.map +1 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.d.ts +149 -0
- package/src/services/device-resource-metrics.d.ts.map +1 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.d.ts +115 -0
- package/src/services/device-tier.d.ts.map +1 -0
- package/src/services/device-tier.test.ts +371 -0
- package/src/services/device-tier.ts +410 -0
- package/src/services/downloader.d.ts +82 -0
- package/src/services/downloader.d.ts.map +1 -0
- package/src/services/downloader.test.ts +724 -0
- package/src/services/downloader.ts +899 -0
- package/src/services/engine-direct-bundle.test.ts +58 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.d.ts +534 -0
- package/src/services/engine.d.ts.map +1 -0
- package/src/services/engine.ts +1891 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.d.ts +17 -0
- package/src/services/external-scanner.d.ts.map +1 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +442 -0
- package/src/services/ffi-streaming-backend.d.ts +180 -0
- package/src/services/ffi-streaming-backend.d.ts.map +1 -0
- package/src/services/ffi-streaming-backend.ts +382 -0
- package/src/services/ffi-streaming-runner.d.ts +122 -0
- package/src/services/ffi-streaming-runner.d.ts.map +1 -0
- package/src/services/ffi-streaming-runner.test.ts +60 -0
- package/src/services/ffi-streaming-runner.ts +354 -0
- package/src/services/ffi-unload-ordering.test.ts +162 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.d.ts +72 -0
- package/src/services/handler-registry.d.ts.map +1 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.d.ts +63 -0
- package/src/services/hardware.d.ts.map +1 -0
- package/src/services/hardware.test.ts +183 -0
- package/src/services/hardware.ts +404 -0
- package/src/services/hf-search.d.ts +26 -0
- package/src/services/hf-search.d.ts.map +1 -0
- package/src/services/hf-search.test.ts +69 -0
- package/src/services/hf-search.ts +420 -0
- package/src/services/image-description-runtime.d.ts +14 -0
- package/src/services/image-description-runtime.d.ts.map +1 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.d.ts +118 -0
- package/src/services/imagegen/backend-selector.d.ts.map +1 -0
- package/src/services/imagegen/backend-selector.ts +281 -0
- package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.d.ts +16 -0
- package/src/services/imagegen/errors.d.ts.map +1 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.d.ts +58 -0
- package/src/services/imagegen/index.d.ts.map +1 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.d.ts +74 -0
- package/src/services/imagegen/mflux.d.ts.map +1 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.d.ts +180 -0
- package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/src/services/imagegen/sd-cpp.ts +718 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.d.ts +181 -0
- package/src/services/imagegen/types.d.ts.map +1 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.d.ts +30 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.ts +225 -0
- package/src/services/inference-capabilities.d.ts +132 -0
- package/src/services/inference-capabilities.d.ts.map +1 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.d.ts +59 -0
- package/src/services/inference-telemetry.d.ts.map +1 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.d.ts +189 -0
- package/src/services/kv-spill.d.ts.map +1 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +356 -0
- package/src/services/latency-trace.d.ts +346 -0
- package/src/services/latency-trace.d.ts.map +1 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.d.ts +96 -0
- package/src/services/llm-streaming-binding.d.ts.map +1 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.d.ts +82 -0
- package/src/services/load-args.d.ts.map +1 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
- package/src/services/manifest/index.d.ts +4 -0
- package/src/services/manifest/index.d.ts.map +1 -0
- package/src/services/manifest/index.ts +66 -0
- package/src/services/manifest/manifest.test.ts +693 -0
- package/src/services/manifest/schema.d.ts +715 -0
- package/src/services/manifest/schema.d.ts.map +1 -0
- package/src/services/manifest/schema.ts +655 -0
- package/src/services/manifest/types.d.ts +30 -0
- package/src/services/manifest/types.d.ts.map +1 -0
- package/src/services/manifest/types.ts +55 -0
- package/src/services/manifest/validator.d.ts +66 -0
- package/src/services/manifest/validator.d.ts.map +1 -0
- package/src/services/manifest/validator.ts +569 -0
- package/src/services/memory-arbiter.d.ts +343 -0
- package/src/services/memory-arbiter.d.ts.map +1 -0
- package/src/services/memory-arbiter.test.ts +419 -0
- package/src/services/memory-arbiter.ts +1000 -0
- package/src/services/memory-monitor.d.ts +119 -0
- package/src/services/memory-monitor.d.ts.map +1 -0
- package/src/services/memory-monitor.test.ts +208 -0
- package/src/services/memory-monitor.ts +296 -0
- package/src/services/memory-pressure.d.ts +127 -0
- package/src/services/memory-pressure.d.ts.map +1 -0
- package/src/services/memory-pressure.ts +413 -0
- package/src/services/mtp-doctor.d.ts +13 -0
- package/src/services/mtp-doctor.d.ts.map +1 -0
- package/src/services/mtp-doctor.ts +78 -0
- package/src/services/network-policy.d.ts +127 -0
- package/src/services/network-policy.d.ts.map +1 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.d.ts +6 -0
- package/src/services/paths.d.ts.map +1 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.d.ts +124 -0
- package/src/services/planner-skeleton.d.ts.map +1 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.d.ts +38 -0
- package/src/services/providers.d.ts.map +1 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +163 -0
- package/src/services/ram-budget.d.ts +110 -0
- package/src/services/ram-budget.d.ts.map +1 -0
- package/src/services/ram-budget.ts +0 -0
- package/src/services/readiness.d.ts +9 -0
- package/src/services/readiness.d.ts.map +1 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.d.ts +111 -0
- package/src/services/recommendation.d.ts.map +1 -0
- package/src/services/recommendation.ts +672 -0
- package/src/services/registry.d.ts +35 -0
- package/src/services/registry.d.ts.map +1 -0
- package/src/services/registry.ts +151 -0
- package/src/services/router-handler.d.ts +92 -0
- package/src/services/router-handler.d.ts.map +1 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +376 -0
- package/src/services/routing-policy.d.ts +55 -0
- package/src/services/routing-policy.d.ts.map +1 -0
- package/src/services/routing-policy.ts +228 -0
- package/src/services/routing-preferences.d.ts +8 -0
- package/src/services/routing-preferences.d.ts.map +1 -0
- package/src/services/routing-preferences.ts +15 -0
- package/src/services/runtime-target.d.ts +98 -0
- package/src/services/runtime-target.d.ts.map +1 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.d.ts +128 -0
- package/src/services/service.d.ts.map +1 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +735 -0
- package/src/services/session-pool.d.ts +72 -0
- package/src/services/session-pool.d.ts.map +1 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.d.ts +23 -0
- package/src/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.d.ts +311 -0
- package/src/services/structured-output.d.ts.map +1 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/tts/errors.ts +46 -0
- package/src/services/tts/index.ts +214 -0
- package/src/services/tts/tts-audio-cache.ts +235 -0
- package/src/services/tts/types.ts +157 -0
- package/src/services/types.d.ts +19 -0
- package/src/services/types.d.ts.map +1 -0
- package/src/services/types.ts +55 -0
- package/src/services/verify-on-device.d.ts +34 -0
- package/src/services/verify-on-device.d.ts.map +1 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.d.ts +8 -0
- package/src/services/verify.d.ts.map +1 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.d.ts +115 -0
- package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.d.ts +99 -0
- package/src/services/vision/capacitor-llama.d.ts.map +1 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.d.ts +47 -0
- package/src/services/vision/cloud-fallback.d.ts.map +1 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.d.ts +71 -0
- package/src/services/vision/hash.d.ts.map +1 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.d.ts +95 -0
- package/src/services/vision/index.d.ts.map +1 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.d.ts +73 -0
- package/src/services/vision/llama-server.d.ts.map +1 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.d.ts +153 -0
- package/src/services/vision/types.d.ts.map +1 -0
- package/src/services/vision/types.ts +154 -0
- package/src/services/vision/vast-fallback.d.ts +18 -0
- package/src/services/vision/vast-fallback.d.ts.map +1 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.d.ts +98 -0
- package/src/services/vision-embedding-cache.d.ts.map +1 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +88 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +92 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +197 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/audio-frame-consumer.d.ts +212 -0
- package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/src/services/voice/audio-frame-consumer.test.ts +343 -0
- package/src/services/voice/audio-frame-consumer.ts +491 -0
- package/src/services/voice/barge-in.d.ts +112 -0
- package/src/services/voice/barge-in.d.ts.map +1 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +336 -0
- package/src/services/voice/cancellation-coordinator.d.ts +127 -0
- package/src/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.d.ts +199 -0
- package/src/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +743 -0
- package/src/services/voice/eager-context-builder.d.ts +170 -0
- package/src/services/voice/eager-context-builder.d.ts.map +1 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.d.ts +133 -0
- package/src/services/voice/embedding.d.ts.map +1 -0
- package/src/services/voice/embedding.test.ts +148 -0
- package/src/services/voice/embedding.ts +244 -0
- package/src/services/voice/emotion-attribution.d.ts +68 -0
- package/src/services/voice/emotion-attribution.d.ts.map +1 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge.d.ts +746 -0
- package/src/services/voice/engine-bridge.d.ts.map +1 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2226 -0
- package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/src/services/voice/eot-classifier-ggml.ts +566 -0
- package/src/services/voice/eot-classifier.d.ts +214 -0
- package/src/services/voice/eot-classifier.d.ts.map +1 -0
- package/src/services/voice/eot-classifier.ts +533 -0
- package/src/services/voice/errors.d.ts +20 -0
- package/src/services/voice/errors.d.ts.map +1 -0
- package/src/services/voice/errors.ts +32 -0
- package/src/services/voice/expressive-tags.d.ts +158 -0
- package/src/services/voice/expressive-tags.d.ts.map +1 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.d.ts +636 -0
- package/src/services/voice/ffi-bindings.d.ts.map +1 -0
- package/src/services/voice/ffi-bindings.test.ts +671 -0
- package/src/services/voice/ffi-bindings.ts +3050 -0
- package/src/services/voice/first-line-cache.d.ts +181 -0
- package/src/services/voice/first-line-cache.d.ts.map +1 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.d.ts +51 -0
- package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/src/services/voice/fused-eot-scorer.ts +135 -0
- package/src/services/voice/index.d.ts +91 -0
- package/src/services/voice/index.d.ts.map +1 -0
- package/src/services/voice/index.ts +481 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +231 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.d.ts +72 -0
- package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.d.ts +92 -0
- package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/src/services/voice/kokoro/runtime-selection.ts +237 -0
- package/src/services/voice/kokoro/types.d.ts +82 -0
- package/src/services/voice/kokoro/types.d.ts.map +1 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.d.ts +30 -0
- package/src/services/voice/kokoro/voices.d.ts.map +1 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.d.ts +135 -0
- package/src/services/voice/lifecycle.d.ts.map +1 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.d.ts +96 -0
- package/src/services/voice/live-diarization-session.d.ts.map +1 -0
- package/src/services/voice/live-diarization-session.ts +289 -0
- package/src/services/voice/mic-source.d.ts +136 -0
- package/src/services/voice/mic-source.d.ts.map +1 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/optimistic-policy.d.ts +109 -0
- package/src/services/voice/optimistic-policy.d.ts.map +1 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.d.ts +73 -0
- package/src/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.d.ts +76 -0
- package/src/services/voice/phrase-cache.d.ts.map +1 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.d.ts +62 -0
- package/src/services/voice/phrase-chunker.d.ts.map +1 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.d.ts +151 -0
- package/src/services/voice/pipeline-impls.d.ts.map +1 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.d.ts +216 -0
- package/src/services/voice/pipeline.d.ts.map +1 -0
- package/src/services/voice/pipeline.ts +505 -0
- package/src/services/voice/prefill-client.d.ts +123 -0
- package/src/services/voice/prefill-client.d.ts.map +1 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.d.ts +248 -0
- package/src/services/voice/profile-store.d.ts.map +1 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/ring-buffer.d.ts +40 -0
- package/src/services/voice/ring-buffer.d.ts.map +1 -0
- package/src/services/voice/ring-buffer.ts +105 -0
- package/src/services/voice/rollback-queue.d.ts +24 -0
- package/src/services/voice/rollback-queue.d.ts.map +1 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/scheduler.d.ts +146 -0
- package/src/services/voice/scheduler.d.ts.map +1 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/shared-resources.d.ts +190 -0
- package/src/services/voice/shared-resources.d.ts.map +1 -0
- package/src/services/voice/shared-resources.ts +320 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.d.ts +75 -0
- package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.d.ts +37 -0
- package/src/services/voice/speaker/encoder.d.ts.map +1 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.d.ts +83 -0
- package/src/services/voice/speaker-imprint.d.ts.map +1 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.d.ts +77 -0
- package/src/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.d.ts +73 -0
- package/src/services/voice/system-audio-sink.d.ts.map +1 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.d.ts +244 -0
- package/src/services/voice/transcriber.d.ts.map +1 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/turn-controller.d.ts +183 -0
- package/src/services/voice/turn-controller.d.ts.map +1 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.d.ts +643 -0
- package/src/services/voice/types.d.ts.map +1 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.d.ts +282 -0
- package/src/services/voice/vad.d.ts.map +1 -0
- package/src/services/voice/vad.test.ts +480 -0
- package/src/services/voice/vad.ts +827 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.d.ts +241 -0
- package/src/services/voice/voice-budget.d.ts.map +1 -0
- package/src/services/voice/voice-budget.test.ts +420 -0
- package/src/services/voice/voice-budget.ts +656 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-preset-format.d.ts +158 -0
- package/src/services/voice/voice-preset-format.d.ts.map +1 -0
- package/src/services/voice/voice-preset-format.ts +700 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.d.ts +116 -0
- package/src/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.d.ts +83 -0
- package/src/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.ts +154 -0
- package/src/services/voice/voice-settings.d.ts +82 -0
- package/src/services/voice/voice-settings.d.ts.map +1 -0
- package/src/services/voice/voice-settings.ts +172 -0
- package/src/services/voice/voice-state-machine.d.ts +364 -0
- package/src/services/voice/voice-state-machine.d.ts.map +1 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +326 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.d.ts +101 -0
- package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/src/services/voice/wake-word-ggml.ts +320 -0
- package/src/services/voice/wake-word.d.ts +255 -0
- package/src/services/voice/wake-word.d.ts.map +1 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.d.ts +240 -0
- package/src/services/voice-model-updater.d.ts.map +1 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.d.ts +3 -0
- package/src/services/voice-prewarm.d.ts.map +1 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/dist/index.d.ts +0 -37
- package/dist/index.js +0 -1098
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Speaker voice-profile binding routes.
|
|
3
|
+
*
|
|
4
|
+
* These operate on the `VoiceProfileStore` — the content-addressed store of
|
|
5
|
+
* WeSpeaker centroids that the attribution pipeline matches against (one
|
|
6
|
+
* `vp_<sha>` record per recognized voice). This is a *different* surface from
|
|
7
|
+
* the OmniVoice preset catalog in `services/voice/voice-profile-routes.ts`
|
|
8
|
+
* (which manages TTS preset `.bin` files under `/v1/voice/profiles`).
|
|
9
|
+
*
|
|
10
|
+
* The attribution pipeline can resolve *which* voice is speaking, but a freshly
|
|
11
|
+
* clustered profile carries `entityId: null` until something binds it to a real
|
|
12
|
+
* elizaOS `Entity`. Without a binding the speaker is never persisted to the
|
|
13
|
+
* relationship graph and the OWNER-crown in the UI never lights up outside
|
|
14
|
+
* tests. The store already supports `bindEntity` / `unbindEntity`; these routes
|
|
15
|
+
* are the runtime path that calls them.
|
|
16
|
+
*
|
|
17
|
+
* Routes:
|
|
18
|
+
* GET /v1/voice/speaker-profiles
|
|
19
|
+
* → { profiles: SpeakerProfileSummary[] }
|
|
20
|
+
*
|
|
21
|
+
* POST /v1/voice/speaker-profiles/:id/bind
|
|
22
|
+
* Body (JSON): { entityId: string, label?: string }
|
|
23
|
+
* → SpeakerProfileSummary (entityId now non-null)
|
|
24
|
+
*
|
|
25
|
+
* POST /v1/voice/speaker-profiles/:id/unbind
|
|
26
|
+
* → SpeakerProfileSummary (entityId now null)
|
|
27
|
+
*
|
|
28
|
+
* The caller supplies the `entityId` of an existing elizaOS entity (e.g. a
|
|
29
|
+
* contact the user picks in the voice-management UI, or the OWNER entity from
|
|
30
|
+
* first-run). These handlers do not mint entities or relationship rows: route
|
|
31
|
+
* handlers in this plugin do not hold an `IAgentRuntime` reference (see
|
|
32
|
+
* `family-member-route.ts`). They bind the speaker centroid to an entity id the
|
|
33
|
+
* store persists, which the attribution pipeline then resolves on the next
|
|
34
|
+
* recognition.
|
|
35
|
+
*/
|
|
36
|
+
import type * as http from "node:http";
|
|
37
|
+
import { VoiceProfileStore } from "../services/voice/profile-store.js";
|
|
38
|
+
export declare function setVoiceSpeakerProfileStore(store: VoiceProfileStore | null): void;
|
|
39
|
+
export interface SpeakerProfileSummary {
|
|
40
|
+
profileId: string;
|
|
41
|
+
entityId: string | null;
|
|
42
|
+
label: string | null;
|
|
43
|
+
embeddingModel: string;
|
|
44
|
+
sampleCount: number;
|
|
45
|
+
confidence: number;
|
|
46
|
+
firstObservedAt: string;
|
|
47
|
+
lastObservedAt: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handle `/v1/voice/speaker-profiles*` requests.
|
|
51
|
+
*
|
|
52
|
+
* Returns `true` when the request was handled (success or error response
|
|
53
|
+
* written), `false` when the path does not match so the caller can fall
|
|
54
|
+
* through to the next handler.
|
|
55
|
+
*/
|
|
56
|
+
export declare function handleVoiceSpeakerProfileRoutes(req: http.IncomingMessage, res: http.ServerResponse): Promise<boolean>;
|
|
57
|
+
//# sourceMappingURL=voice-speaker-profile-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-speaker-profile-routes.d.ts","sourceRoot":"","sources":["voice-speaker-profile-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AASvC,OAAO,EAEN,iBAAiB,EACjB,MAAM,oCAAoC,CAAC;AAQ5C,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAC7B,IAAI,CAEN;AAeD,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACvB;AAyBD;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACpD,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACtB,OAAO,CAAC,OAAO,CAAC,CA+ElB"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Speaker voice-profile binding routes.
|
|
3
|
+
*
|
|
4
|
+
* These operate on the `VoiceProfileStore` — the content-addressed store of
|
|
5
|
+
* WeSpeaker centroids that the attribution pipeline matches against (one
|
|
6
|
+
* `vp_<sha>` record per recognized voice). This is a *different* surface from
|
|
7
|
+
* the OmniVoice preset catalog in `services/voice/voice-profile-routes.ts`
|
|
8
|
+
* (which manages TTS preset `.bin` files under `/v1/voice/profiles`).
|
|
9
|
+
*
|
|
10
|
+
* The attribution pipeline can resolve *which* voice is speaking, but a freshly
|
|
11
|
+
* clustered profile carries `entityId: null` until something binds it to a real
|
|
12
|
+
* elizaOS `Entity`. Without a binding the speaker is never persisted to the
|
|
13
|
+
* relationship graph and the OWNER-crown in the UI never lights up outside
|
|
14
|
+
* tests. The store already supports `bindEntity` / `unbindEntity`; these routes
|
|
15
|
+
* are the runtime path that calls them.
|
|
16
|
+
*
|
|
17
|
+
* Routes:
|
|
18
|
+
* GET /v1/voice/speaker-profiles
|
|
19
|
+
* → { profiles: SpeakerProfileSummary[] }
|
|
20
|
+
*
|
|
21
|
+
* POST /v1/voice/speaker-profiles/:id/bind
|
|
22
|
+
* Body (JSON): { entityId: string, label?: string }
|
|
23
|
+
* → SpeakerProfileSummary (entityId now non-null)
|
|
24
|
+
*
|
|
25
|
+
* POST /v1/voice/speaker-profiles/:id/unbind
|
|
26
|
+
* → SpeakerProfileSummary (entityId now null)
|
|
27
|
+
*
|
|
28
|
+
* The caller supplies the `entityId` of an existing elizaOS entity (e.g. a
|
|
29
|
+
* contact the user picks in the voice-management UI, or the OWNER entity from
|
|
30
|
+
* first-run). These handlers do not mint entities or relationship rows: route
|
|
31
|
+
* handlers in this plugin do not hold an `IAgentRuntime` reference (see
|
|
32
|
+
* `family-member-route.ts`). They bind the speaker centroid to an entity id the
|
|
33
|
+
* store persists, which the attribution pipeline then resolves on the next
|
|
34
|
+
* recognition.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
import type * as http from "node:http";
|
|
38
|
+
import path from "node:path";
|
|
39
|
+
import {
|
|
40
|
+
logger,
|
|
41
|
+
readJsonBody,
|
|
42
|
+
resolveStateDir,
|
|
43
|
+
sendJson,
|
|
44
|
+
sendJsonError,
|
|
45
|
+
} from "@elizaos/core";
|
|
46
|
+
import {
|
|
47
|
+
type VoiceProfileRecord,
|
|
48
|
+
VoiceProfileStore,
|
|
49
|
+
} from "../services/voice/profile-store.js";
|
|
50
|
+
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Injectable test hook (mirrors family-member-route.ts)
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
|
|
55
|
+
let profileStoreOverride: VoiceProfileStore | null = null;
|
|
56
|
+
|
|
57
|
+
export function setVoiceSpeakerProfileStore(
|
|
58
|
+
store: VoiceProfileStore | null,
|
|
59
|
+
): void {
|
|
60
|
+
profileStoreOverride = store;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async function getProfileStore(): Promise<VoiceProfileStore> {
|
|
64
|
+
if (profileStoreOverride) return profileStoreOverride;
|
|
65
|
+
const store = new VoiceProfileStore({
|
|
66
|
+
rootDir: path.join(resolveStateDir(), "voice-profiles"),
|
|
67
|
+
});
|
|
68
|
+
await store.init();
|
|
69
|
+
return store;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// Response shape
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
|
|
76
|
+
export interface SpeakerProfileSummary {
|
|
77
|
+
profileId: string;
|
|
78
|
+
entityId: string | null;
|
|
79
|
+
label: string | null;
|
|
80
|
+
embeddingModel: string;
|
|
81
|
+
sampleCount: number;
|
|
82
|
+
confidence: number;
|
|
83
|
+
firstObservedAt: string;
|
|
84
|
+
lastObservedAt: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function summarize(record: VoiceProfileRecord): SpeakerProfileSummary {
|
|
88
|
+
const label =
|
|
89
|
+
typeof record.metadata?.label === "string" ? record.metadata.label : null;
|
|
90
|
+
return {
|
|
91
|
+
profileId: record.profileId,
|
|
92
|
+
entityId: record.entityId,
|
|
93
|
+
label,
|
|
94
|
+
embeddingModel: record.embeddingModel,
|
|
95
|
+
sampleCount: record.sampleCount,
|
|
96
|
+
confidence: record.confidence,
|
|
97
|
+
firstObservedAt: record.firstObservedAt,
|
|
98
|
+
lastObservedAt: record.lastObservedAt,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Route handler
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
|
|
106
|
+
const PROFILE_ID_RE = /^[A-Za-z0-9._-]+$/;
|
|
107
|
+
const BIND_RE = /^\/v1\/voice\/speaker-profiles\/([^/]+)\/bind$/;
|
|
108
|
+
const UNBIND_RE = /^\/v1\/voice\/speaker-profiles\/([^/]+)\/unbind$/;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Handle `/v1/voice/speaker-profiles*` requests.
|
|
112
|
+
*
|
|
113
|
+
* Returns `true` when the request was handled (success or error response
|
|
114
|
+
* written), `false` when the path does not match so the caller can fall
|
|
115
|
+
* through to the next handler.
|
|
116
|
+
*/
|
|
117
|
+
export async function handleVoiceSpeakerProfileRoutes(
|
|
118
|
+
req: http.IncomingMessage,
|
|
119
|
+
res: http.ServerResponse,
|
|
120
|
+
): Promise<boolean> {
|
|
121
|
+
const method = (req.method ?? "GET").toUpperCase();
|
|
122
|
+
const url = new URL(req.url ?? "/", "http://localhost");
|
|
123
|
+
const pathname = url.pathname;
|
|
124
|
+
|
|
125
|
+
if (!pathname.startsWith("/v1/voice/speaker-profiles")) return false;
|
|
126
|
+
|
|
127
|
+
// GET /v1/voice/speaker-profiles — list recognized speaker profiles.
|
|
128
|
+
if (method === "GET" && pathname === "/v1/voice/speaker-profiles") {
|
|
129
|
+
const store = await getProfileStore();
|
|
130
|
+
const records = await store.list();
|
|
131
|
+
sendJson(res, { profiles: records.map(summarize) });
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// POST /v1/voice/speaker-profiles/:id/bind { entityId, label? }
|
|
136
|
+
const bindMatch = BIND_RE.exec(pathname);
|
|
137
|
+
if (method === "POST" && bindMatch) {
|
|
138
|
+
const profileId = decodeURIComponent(bindMatch[1] ?? "");
|
|
139
|
+
if (!PROFILE_ID_RE.test(profileId)) {
|
|
140
|
+
sendJsonError(res, `invalid profile id: ${profileId}`, 400);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
const body = await readJsonBody<Record<string, unknown>>(req, res);
|
|
144
|
+
if (!body) return true; // readJsonBody already sent a 4xx
|
|
145
|
+
const entityId =
|
|
146
|
+
typeof body.entityId === "string" ? body.entityId.trim() : "";
|
|
147
|
+
if (!entityId) {
|
|
148
|
+
sendJsonError(res, "entityId is required", 400);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
const label =
|
|
152
|
+
typeof body.label === "string" && body.label.trim().length > 0
|
|
153
|
+
? body.label.trim()
|
|
154
|
+
: undefined;
|
|
155
|
+
|
|
156
|
+
const store = await getProfileStore();
|
|
157
|
+
let updated: VoiceProfileRecord | null;
|
|
158
|
+
try {
|
|
159
|
+
updated = await store.bindEntity({ profileId, entityId, label });
|
|
160
|
+
} catch (err) {
|
|
161
|
+
logger.error(
|
|
162
|
+
{ err, profileId, entityId },
|
|
163
|
+
"[voice-speaker-profile-route] bindEntity failed",
|
|
164
|
+
);
|
|
165
|
+
sendJsonError(
|
|
166
|
+
res,
|
|
167
|
+
err instanceof Error ? err.message : "failed to bind entity",
|
|
168
|
+
500,
|
|
169
|
+
);
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
if (!updated) {
|
|
173
|
+
sendJsonError(res, `profile not found: ${profileId}`, 404);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
sendJson(res, summarize(updated));
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// POST /v1/voice/speaker-profiles/:id/unbind
|
|
181
|
+
const unbindMatch = UNBIND_RE.exec(pathname);
|
|
182
|
+
if (method === "POST" && unbindMatch) {
|
|
183
|
+
const profileId = decodeURIComponent(unbindMatch[1] ?? "");
|
|
184
|
+
if (!PROFILE_ID_RE.test(profileId)) {
|
|
185
|
+
sendJsonError(res, `invalid profile id: ${profileId}`, 400);
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
const store = await getProfileStore();
|
|
189
|
+
const updated = await store.unbindEntity(profileId);
|
|
190
|
+
if (!updated) {
|
|
191
|
+
sendJsonError(res, `profile not found: ${profileId}`, 404);
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
sendJson(res, summarize(updated));
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Riscv64 strategy: `capacitor-llama` ships native prebuilts for
|
|
3
|
+
* linux-{x64,arm64}, darwin-arm64, win-x64. No riscv64 prebuild exists; we
|
|
4
|
+
* also can't realistically NAPI-build it on-device. Instead the
|
|
5
|
+
* `plugin-aosp-local-inference` FFI loader (which dlopens `libllama.so` +
|
|
6
|
+
* the eliza-llama-shim via `bun:ffi`) is registered as the
|
|
7
|
+
* `localInferenceLoader` service on riscv64 hosts, satisfying the same
|
|
8
|
+
* contract `capacitor-llama` would otherwise satisfy on x64/arm64. The
|
|
9
|
+
* vendored `libllama.so` cross-compiled for `linux-riscv64` /
|
|
10
|
+
* `android-riscv64` by Wave 2 is what the FFI loader dlopens at runtime.
|
|
11
|
+
*
|
|
12
|
+
* This test covers the *selection* logic — i.e. the predicate that decides
|
|
13
|
+
* whether to attempt registering the AOSP/FFI loader. The actual loader
|
|
14
|
+
* registration is exercised by the integration tests in
|
|
15
|
+
* `plugin-aosp-local-inference/__tests__/`.
|
|
16
|
+
*/
|
|
17
|
+
import { describe, expect, it } from "vitest";
|
|
18
|
+
import { shouldAttemptAospLlamaLoader } from "./ensure-local-inference-handler";
|
|
19
|
+
|
|
20
|
+
describe("shouldAttemptAospLlamaLoader", () => {
|
|
21
|
+
it("returns false on x64 with no env flags", () => {
|
|
22
|
+
expect(shouldAttemptAospLlamaLoader({}, "x64")).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("returns false on arm64 (desktop) with no env flags", () => {
|
|
26
|
+
// arm64 has a node-llama-cpp prebuild, so the FFI path is not the
|
|
27
|
+
// only viable in-process option — we keep the stock binding as the
|
|
28
|
+
// default and only flip to FFI on explicit opt-in.
|
|
29
|
+
expect(shouldAttemptAospLlamaLoader({}, "arm64")).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("returns true when ELIZA_LOCAL_LLAMA=1 (AOSP / explicit opt-in)", () => {
|
|
33
|
+
expect(
|
|
34
|
+
shouldAttemptAospLlamaLoader({ ELIZA_LOCAL_LLAMA: "1" }, "arm64"),
|
|
35
|
+
).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("auto-fires on riscv64 with no env flags", () => {
|
|
39
|
+
expect(shouldAttemptAospLlamaLoader({}, "riscv64")).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("ELIZA_DISABLE_FFI_LLAMA=1 hard-disables the riscv64 auto-fire", () => {
|
|
43
|
+
expect(
|
|
44
|
+
shouldAttemptAospLlamaLoader({ ELIZA_DISABLE_FFI_LLAMA: "1" }, "riscv64"),
|
|
45
|
+
).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("ELIZA_DISABLE_FFI_LLAMA=1 overrides explicit ELIZA_LOCAL_LLAMA=1", () => {
|
|
49
|
+
// Disable wins — useful when an operator wants to route a riscv64
|
|
50
|
+
// host's inference to Cloud despite an AOSP build defaulting the
|
|
51
|
+
// in-process flag on.
|
|
52
|
+
expect(
|
|
53
|
+
shouldAttemptAospLlamaLoader(
|
|
54
|
+
{
|
|
55
|
+
ELIZA_DISABLE_FFI_LLAMA: "1",
|
|
56
|
+
ELIZA_LOCAL_LLAMA: "1",
|
|
57
|
+
},
|
|
58
|
+
"riscv64",
|
|
59
|
+
),
|
|
60
|
+
).toBe(false);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("ignores ELIZA_LOCAL_LLAMA values other than '1'", () => {
|
|
64
|
+
expect(
|
|
65
|
+
shouldAttemptAospLlamaLoader({ ELIZA_LOCAL_LLAMA: "0" }, "x64"),
|
|
66
|
+
).toBe(false);
|
|
67
|
+
expect(
|
|
68
|
+
shouldAttemptAospLlamaLoader({ ELIZA_LOCAL_LLAMA: "true" }, "x64"),
|
|
69
|
+
).toBe(false);
|
|
70
|
+
expect(shouldAttemptAospLlamaLoader({ ELIZA_LOCAL_LLAMA: "" }, "x64")).toBe(
|
|
71
|
+
false,
|
|
72
|
+
);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("trims whitespace around ELIZA_LOCAL_LLAMA before matching '1'", () => {
|
|
76
|
+
expect(
|
|
77
|
+
shouldAttemptAospLlamaLoader({ ELIZA_LOCAL_LLAMA: " 1 " }, "x64"),
|
|
78
|
+
).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
declare module "@elizaos/capacitor-llama" {
|
|
2
|
+
export interface DeviceBridgeClientConfig {
|
|
3
|
+
agentUrl: string;
|
|
4
|
+
pairingToken?: string;
|
|
5
|
+
deviceId: string;
|
|
6
|
+
onStateChange?: (
|
|
7
|
+
state: "connecting" | "connected" | "disconnected" | "error",
|
|
8
|
+
detail?: string,
|
|
9
|
+
) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class DeviceBridgeClient {
|
|
13
|
+
constructor(config: DeviceBridgeClientConfig);
|
|
14
|
+
start(): void;
|
|
15
|
+
stop(): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function startDeviceBridgeClient(
|
|
19
|
+
config: DeviceBridgeClientConfig,
|
|
20
|
+
): DeviceBridgeClient;
|
|
21
|
+
|
|
22
|
+
export function registerCapacitorLlamaLoader(runtime: {
|
|
23
|
+
registerService?: (name: string, impl: unknown) => unknown;
|
|
24
|
+
}): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Callback for reporting download/init progress.
|
|
3
|
+
* @param phase - Current phase: "checking", "downloading", "loading", "ready"
|
|
4
|
+
* @param detail - Human-readable detail (e.g. "45% of 95 MB")
|
|
5
|
+
*/
|
|
6
|
+
export type EmbeddingProgressCallback = (phase: "checking" | "downloading" | "loading" | "ready", detail?: string) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Callback for raw download byte progress.
|
|
9
|
+
* @param downloaded - Bytes received so far
|
|
10
|
+
* @param total - Total bytes expected (null if Content-Length unavailable)
|
|
11
|
+
*/
|
|
12
|
+
export type DownloadProgressCallback = (downloaded: number, total: number | null) => void;
|
|
13
|
+
export interface EmbeddingManagerConfig {
|
|
14
|
+
/** GGUF model filename (default: detected hardware preset) */
|
|
15
|
+
model?: string;
|
|
16
|
+
/** HuggingFace repo for auto-download (default: detected hardware preset repo) */
|
|
17
|
+
modelRepo?: string;
|
|
18
|
+
/** Embedding dimensions (default: detected hardware preset dimensions) */
|
|
19
|
+
dimensions?: number;
|
|
20
|
+
/** GPU layers: "auto" | "max" | number (default: detected hardware preset gpuLayers) */
|
|
21
|
+
gpuLayers?: "auto" | "max" | number;
|
|
22
|
+
/** Model context window in tokens (default: detected hardware preset contextSize) */
|
|
23
|
+
contextSize?: number;
|
|
24
|
+
/** Idle timeout in ms before unloading model (default: 1800000 = 30 min, 0 = never unload) */
|
|
25
|
+
idleTimeoutMs?: number;
|
|
26
|
+
/** Models directory (default: <stateDir>/models) */
|
|
27
|
+
modelsDir?: string;
|
|
28
|
+
/** Optional callback for reporting initialization progress phases. */
|
|
29
|
+
onProgress?: EmbeddingProgressCallback;
|
|
30
|
+
}
|
|
31
|
+
export interface EmbeddingManagerStats {
|
|
32
|
+
lastUsedAt: number | null;
|
|
33
|
+
isLoaded: boolean;
|
|
34
|
+
model: string;
|
|
35
|
+
gpuLayers: string | number;
|
|
36
|
+
dimensions: number;
|
|
37
|
+
}
|
|
38
|
+
export declare const DEFAULT_IDLE_TIMEOUT_MS: number;
|
|
39
|
+
export declare const DEFAULT_MODELS_DIR: string;
|
|
40
|
+
export declare const EMBEDDING_META_PATH: string;
|
|
41
|
+
export declare function getLogger(): {
|
|
42
|
+
info: (...a: unknown[]) => void;
|
|
43
|
+
warn: (...a: unknown[]) => void;
|
|
44
|
+
error: (...a: unknown[]) => void;
|
|
45
|
+
debug: (...a: unknown[]) => void;
|
|
46
|
+
};
|
|
47
|
+
interface EmbeddingMeta {
|
|
48
|
+
model: string;
|
|
49
|
+
dimensions: number;
|
|
50
|
+
lastChanged: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function readEmbeddingMeta(): EmbeddingMeta | null;
|
|
53
|
+
export declare function checkDimensionMigration(model: string, dimensions: number): void;
|
|
54
|
+
export declare function safeUnlink(filepath: string): void;
|
|
55
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
56
|
+
export declare function isCorruptedModelLoadError(error: unknown): boolean;
|
|
57
|
+
/** Known TEXT_EMBEDDING GGUFs the framework may warm up (same filenames as HuggingFace repos). */
|
|
58
|
+
export interface WarmupReuseEmbeddingCandidate {
|
|
59
|
+
readonly model: string;
|
|
60
|
+
readonly modelRepo: string;
|
|
61
|
+
readonly dimensions: number;
|
|
62
|
+
readonly contextSize: number;
|
|
63
|
+
readonly gpuLayers: string;
|
|
64
|
+
}
|
|
65
|
+
/** True if a sanitized GGUF with this basename exists under `modelsDir`. */
|
|
66
|
+
export declare function embeddingGgufFilePresent(modelsDir: string, filename: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* When the configured embedding file is missing, reuse only the compact,
|
|
69
|
+
* SQL-safe embedding GGUF already on disk. The framework intentionally avoids
|
|
70
|
+
* reviving legacy larger defaults from MODELS_DIR because they would reintroduce
|
|
71
|
+
* dimension mismatches and unnecessary RAM/download cost.
|
|
72
|
+
*/
|
|
73
|
+
export declare function findExistingEmbeddingModelForWarmupReuse(modelsDir: string): WarmupReuseEmbeddingCandidate | null;
|
|
74
|
+
export declare function isEmbeddingWarmupReuseDisabled(): boolean;
|
|
75
|
+
export declare function ensureModel(modelsDir: string, repo: string, filename: string, force?: boolean, onProgress?: EmbeddingProgressCallback): Promise<string>;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=embedding-manager-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-manager-support.d.ts","sourceRoot":"","sources":["embedding-manager-support.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACvC,KAAK,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,EACvD,MAAM,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;AAEV;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,IAAI,KAChB,IAAI,CAAC;AAEV,MAAM,WAAW,sBAAsB;IACtC,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AACtD,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAIzE,eAAO,MAAM,mBAAmB,QAEqB,CAAC;AAWtD,wBAAgB,SAAS;UAPhB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI;UACzB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI;WACxB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI;WACzB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI;EAkBlC;AAED,UAAU,aAAa;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CASxD;AAaD,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GAChB,IAAI,CAgBN;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYtD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjE;AA+ED,kGAAkG;AAClG,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAcD,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,wCAAwC,CACvD,SAAS,EAAE,MAAM,GACf,6BAA6B,GAAG,IAAI,CAWtC;AAED,wBAAgB,8BAA8B,IAAI,OAAO,CAIxD;AAkJD,wBAAsB,WAAW,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,MAAM,CAAC,CAuCjB"}
|