@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/actions/generate-media.d.ts +59 -0
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts +23 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -0
- package/dist/actions/transcription-control.d.ts +29 -0
- package/dist/actions/transcription-control.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
- package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.d.ts +18 -0
- package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
- package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/types.d.ts +338 -0
- package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
- package/dist/backends/apple-foundation.d.ts +56 -0
- package/dist/backends/apple-foundation.d.ts.map +1 -0
- package/dist/index.d.ts +8 -37
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38979 -430
- package/dist/index.js.map +217 -0
- package/dist/local-inference-routes.d.ts +47 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts +21 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/routes/compat-helpers.d.ts +18 -0
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts +62 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +42040 -0
- package/dist/routes/index.js.map +236 -0
- package/dist/routes/live-diarization-route.d.ts +33 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts +4 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts +16 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/dist/routes/local-inference-tts-route.d.ts +7 -0
- package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
- package/dist/routes/native-pcm-turn-route.d.ts +3 -0
- package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
- package/dist/routes/transcript-audio-store.d.ts +15 -0
- package/dist/routes/transcript-audio-store.d.ts.map +1 -0
- package/dist/routes/transcripts-routes.d.ts +44 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts +62 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts +62 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts +77 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts +16 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +38768 -0
- package/dist/runtime/index.js.map +217 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/dist/runtime/voice-entity-binding.d.ts +113 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/dist/services/active-model.d.ts +310 -0
- package/dist/services/active-model.d.ts.map +1 -0
- package/dist/services/asr-provenance.d.ts +5 -0
- package/dist/services/asr-provenance.d.ts.map +1 -0
- package/dist/services/assignments.d.ts +84 -0
- package/dist/services/assignments.d.ts.map +1 -0
- package/dist/services/backend-selector.d.ts +55 -0
- package/dist/services/backend-selector.d.ts.map +1 -0
- package/dist/services/backend.d.ts +440 -0
- package/dist/services/backend.d.ts.map +1 -0
- package/dist/services/bionic-host-loader.d.ts +67 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts +34 -0
- package/dist/services/bundled-models.d.ts.map +1 -0
- package/dist/services/cache-bridge.d.ts +206 -0
- package/dist/services/cache-bridge.d.ts.map +1 -0
- package/dist/services/catalog.d.ts +10 -0
- package/dist/services/catalog.d.ts.map +1 -0
- package/dist/services/checkpoint-client.d.ts +109 -0
- package/dist/services/checkpoint-client.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.d.ts +217 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/cloud-fallback.d.ts +102 -0
- package/dist/services/cloud-fallback.d.ts.map +1 -0
- package/dist/services/context-fit.d.ts +36 -0
- package/dist/services/context-fit.d.ts.map +1 -0
- package/dist/services/conversation-registry.d.ts +142 -0
- package/dist/services/conversation-registry.d.ts.map +1 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts +188 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts +149 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/dist/services/device-tier.d.ts +133 -0
- package/dist/services/device-tier.d.ts.map +1 -0
- package/dist/services/downloader.d.ts +94 -0
- package/dist/services/downloader.d.ts.map +1 -0
- package/dist/services/engine.d.ts +579 -0
- package/dist/services/engine.d.ts.map +1 -0
- package/dist/services/ensure-local-artifacts.d.ts +82 -0
- package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
- package/dist/services/external-scanner.d.ts +17 -0
- package/dist/services/external-scanner.d.ts.map +1 -0
- package/dist/services/ffi-llm-mock.d.ts +90 -0
- package/dist/services/ffi-llm-mock.d.ts.map +1 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
- package/dist/services/ffi-streaming-backend.d.ts +201 -0
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/dist/services/ffi-streaming-runner.d.ts +146 -0
- package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
- package/dist/services/gpu-autotune.d.ts +150 -0
- package/dist/services/gpu-autotune.d.ts.map +1 -0
- package/dist/services/gpu-detect.d.ts +56 -0
- package/dist/services/gpu-detect.d.ts.map +1 -0
- package/dist/services/handler-registry.d.ts +72 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts +63 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts +14 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts +118 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts +16 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts +58 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts +74 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts +181 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts +181 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +31 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +39453 -0
- package/dist/services/index.js.map +227 -0
- package/dist/services/inference-capabilities.d.ts +132 -0
- package/dist/services/inference-capabilities.d.ts.map +1 -0
- package/dist/services/inference-telemetry.d.ts +59 -0
- package/dist/services/inference-telemetry.d.ts.map +1 -0
- package/dist/services/ios-llama-streaming.d.ts +119 -0
- package/dist/services/ios-llama-streaming.d.ts.map +1 -0
- package/dist/services/kv-spill.d.ts +189 -0
- package/dist/services/kv-spill.d.ts.map +1 -0
- package/dist/services/latency-trace.d.ts +346 -0
- package/dist/services/latency-trace.d.ts.map +1 -0
- package/dist/services/lib-target.d.ts +55 -0
- package/dist/services/lib-target.d.ts.map +1 -0
- package/dist/services/live-signals.d.ts +86 -0
- package/dist/services/live-signals.d.ts.map +1 -0
- package/dist/services/llama-server-metrics.d.ts +114 -0
- package/dist/services/llama-server-metrics.d.ts.map +1 -0
- package/dist/services/llm-streaming-binding.d.ts +96 -0
- package/dist/services/llm-streaming-binding.d.ts.map +1 -0
- package/dist/services/load-args.d.ts +82 -0
- package/dist/services/load-args.d.ts.map +1 -0
- package/dist/services/manifest/index.d.ts +4 -0
- package/dist/services/manifest/index.d.ts.map +1 -0
- package/dist/services/manifest/schema.d.ts +903 -0
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/dist/services/manifest/types.d.ts +32 -0
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts +66 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/dist/services/memory-arbiter.d.ts +348 -0
- package/dist/services/memory-arbiter.d.ts.map +1 -0
- package/dist/services/memory-benchmark.d.ts +76 -0
- package/dist/services/memory-benchmark.d.ts.map +1 -0
- package/dist/services/memory-monitor.d.ts +128 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts +130 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts +13 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts +127 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts +6 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts +124 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts +38 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts +110 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts +9 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts +111 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/dist/services/registry.d.ts +33 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/router-handler.d.ts +92 -0
- package/dist/services/router-handler.d.ts.map +1 -0
- package/dist/services/routing-policy.d.ts +92 -0
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts +8 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts +98 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/dist/services/service.d.ts +128 -0
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts +72 -0
- package/dist/services/session-pool.d.ts.map +1 -0
- package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
- package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/dist/services/structured-output/index.d.ts +2 -0
- package/dist/services/structured-output/index.d.ts.map +1 -0
- package/dist/services/structured-output.d.ts +311 -0
- package/dist/services/structured-output.d.ts.map +1 -0
- package/dist/services/system-memory.d.ts +33 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/dist/services/types.d.ts +19 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts +34 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts +8 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts +115 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts +99 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts +47 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts +71 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/dist/services/vision/index.d.ts +95 -0
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts +73 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/dist/services/vision/types.d.ts +162 -0
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts +18 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/dist/services/vision-embedding-cache.d.ts +98 -0
- package/dist/services/vision-embedding-cache.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
- package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts +112 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-manager.d.ts +199 -0
- package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-policy.d.ts +178 -0
- package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
- package/dist/services/voice/corpus-augment.d.ts +111 -0
- package/dist/services/voice/corpus-augment.d.ts.map +1 -0
- package/dist/services/voice/corpus-generator.d.ts +134 -0
- package/dist/services/voice/corpus-generator.d.ts.map +1 -0
- package/dist/services/voice/diarization-error-rate.d.ts +40 -0
- package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
- package/dist/services/voice/e2e-harness.d.ts +297 -0
- package/dist/services/voice/e2e-harness.d.ts.map +1 -0
- package/dist/services/voice/eager-context-builder.d.ts +170 -0
- package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
- package/dist/services/voice/echo-delay.d.ts +67 -0
- package/dist/services/voice/echo-delay.d.ts.map +1 -0
- package/dist/services/voice/echo-metrics.d.ts +7 -0
- package/dist/services/voice/echo-metrics.d.ts.map +1 -0
- package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
- package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/embedding-server.d.ts +37 -0
- package/dist/services/voice/embedding-server.d.ts.map +1 -0
- package/dist/services/voice/embedding.d.ts +132 -0
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts +68 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/dist/services/voice/engine-bridge.d.ts +762 -0
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier.d.ts +211 -0
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/dist/services/voice/errors.d.ts +20 -0
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/dist/services/voice/expressive-tags.d.ts +158 -0
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/dist/services/voice/ffi-bindings.d.ts +696 -0
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts +181 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/index.d.ts +96 -0
- package/dist/services/voice/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/index.d.ts +24 -0
- package/dist/services/voice/kokoro/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/dist/services/voice/kokoro/types.d.ts +82 -0
- package/dist/services/voice/kokoro/types.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts +30 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
- package/dist/services/voice/lifecycle.d.ts +135 -0
- package/dist/services/voice/lifecycle.d.ts.map +1 -0
- package/dist/services/voice/live-diarization-session.d.ts +196 -0
- package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
- package/dist/services/voice/metric-math.d.ts +10 -0
- package/dist/services/voice/metric-math.d.ts.map +1 -0
- package/dist/services/voice/mic-source.d.ts +136 -0
- package/dist/services/voice/mic-source.d.ts.map +1 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
- package/dist/services/voice/optimistic-policy.d.ts +109 -0
- package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
- package/dist/services/voice/optimistic-rollback.d.ts +151 -0
- package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
- package/dist/services/voice/partial-stabilizer.d.ts +73 -0
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts +76 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts +62 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts +151 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts +216 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts +123 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts +248 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts +40 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts +24 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/dist/services/voice/scheduler.d.ts +146 -0
- package/dist/services/voice/scheduler.d.ts.map +1 -0
- package/dist/services/voice/self-voice-imprint.d.ts +33 -0
- package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
- package/dist/services/voice/shared-resources.d.ts +204 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts +75 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts +37 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts +83 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
- package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
- package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
- package/dist/services/voice/system-audio-sink.d.ts +73 -0
- package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
- package/dist/services/voice/transcriber.d.ts +244 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts +37 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/dist/services/voice/transcript-service.d.ts +60 -0
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/dist/services/voice/transcript-store.d.ts +64 -0
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts +183 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/dist/services/voice/types.d.ts +643 -0
- package/dist/services/voice/types.d.ts.map +1 -0
- package/dist/services/voice/vad.d.ts +283 -0
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts +241 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
- package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
- package/dist/services/voice/voice-preset-format.d.ts +158 -0
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-routes.d.ts +83 -0
- package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/dist/services/voice/voice-scenario.d.ts +131 -0
- package/dist/services/voice/voice-scenario.d.ts.map +1 -0
- package/dist/services/voice/voice-state-machine.d.ts +364 -0
- package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
- package/dist/services/voice/voice-workbench-report.d.ts +117 -0
- package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
- package/dist/services/voice/wake-word-ggml.d.ts +100 -0
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/dist/services/voice/wake-word.d.ts +255 -0
- package/dist/services/voice/wake-word.d.ts.map +1 -0
- package/dist/services/voice/wav-codec.d.ts +11 -0
- package/dist/services/voice/wav-codec.d.ts.map +1 -0
- package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
- package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
- package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
- package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
- package/dist/services/voice/workbench-logic-services.d.ts +36 -0
- package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-real-services.d.ts +17 -0
- package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-scenarios.d.ts +24 -0
- package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/dist/services/voice-model-updater.d.ts +240 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -0
- package/dist/services/voice-prewarm.d.ts +3 -0
- package/dist/services/voice-prewarm.d.ts.map +1 -0
- package/dist/voice-workbench.d.ts +18 -0
- package/dist/voice-workbench.d.ts.map +1 -0
- package/dist/voice-workbench.js +5259 -0
- package/dist/voice-workbench.js.map +34 -0
- package/package.json +101 -15
- package/registry-entry.json +137 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/actions/transcription-control.test.ts +100 -0
- package/src/actions/transcription-control.ts +127 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +831 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.ts +62 -0
- package/src/local-inference-routes.test.ts +390 -0
- package/src/local-inference-routes.ts +1625 -0
- package/src/provider.ts +1111 -0
- package/src/routes/compat-helpers.ts +275 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.ts +61 -0
- package/src/routes/live-diarization-route.test.ts +347 -0
- package/src/routes/live-diarization-route.ts +198 -0
- package/src/routes/local-inference-asr-route.test.ts +246 -0
- package/src/routes/local-inference-asr-route.ts +166 -0
- package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
- package/src/routes/local-inference-asr-transcribe.ts +97 -0
- package/src/routes/local-inference-compat-routes.test.ts +485 -0
- package/src/routes/local-inference-compat-routes.ts +775 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.test.ts +195 -0
- package/src/routes/transcripts-routes.ts +191 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
- package/src/runtime/ensure-local-inference-handler.ts +1640 -0
- package/src/runtime/index.ts +36 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
- package/src/runtime/mobile-local-inference-gate.ts +99 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
- package/src/runtime/voice-entity-binding.ts +368 -0
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.ts +1416 -0
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +106 -0
- package/src/services/assignments.ts +278 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +791 -0
- package/src/services/bionic-host-loader.test.ts +226 -0
- package/src/services/bionic-host-loader.ts +252 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.test.ts +259 -0
- package/src/services/catalog.ts +33 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.test.ts +458 -0
- package/src/services/device-tier.ts +502 -0
- package/src/services/downloader.test.ts +888 -0
- package/src/services/downloader.ts +1039 -0
- package/src/services/engine-direct-bundle.test.ts +90 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.ts +2096 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +445 -0
- package/src/services/ffi-streaming-backend.ts +418 -0
- package/src/services/ffi-streaming-runner.test.ts +220 -0
- package/src/services/ffi-streaming-runner.ts +407 -0
- package/src/services/ffi-unload-ordering.test.ts +166 -0
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.test.ts +236 -0
- package/src/services/hardware.ts +438 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/backend-selector.ts +277 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.ts +715 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.ts +229 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +357 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/lib-target.test.ts +145 -0
- package/src/services/lib-target.ts +102 -0
- package/src/services/live-signals.test.ts +132 -0
- package/src/services/live-signals.ts +177 -0
- package/src/services/llama-server-metrics.test.ts +168 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
- package/src/services/manifest/index.ts +72 -0
- package/src/services/manifest/manifest.test.ts +791 -0
- package/src/services/manifest/schema.ts +761 -0
- package/src/services/manifest/types.ts +61 -0
- package/src/services/manifest/validator.ts +633 -0
- package/src/services/memory-arbiter.test.ts +558 -0
- package/src/services/memory-arbiter.ts +991 -0
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +232 -0
- package/src/services/memory-monitor.ts +309 -0
- package/src/services/memory-pressure.ts +414 -0
- package/src/services/mtp-doctor.ts +86 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +164 -0
- package/src/services/ram-budget.ts +309 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/recommendation.ts +671 -0
- package/src/services/registry.ts +157 -0
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +426 -0
- package/src/services/routing-policy.test.ts +352 -0
- package/src/services/routing-policy.ts +367 -0
- package/src/services/routing-preferences.ts +17 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +750 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/system-memory.test.ts +47 -0
- package/src/services/system-memory.ts +67 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/types.ts +59 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.ts +163 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +133 -0
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
- package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
- package/src/services/voice/asr-timed.real.test.ts +139 -0
- package/src/services/voice/audio-frame-consumer.test.ts +669 -0
- package/src/services/voice/audio-frame-consumer.ts +651 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +335 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/corpus-augment.test.ts +276 -0
- package/src/services/voice/corpus-augment.ts +451 -0
- package/src/services/voice/corpus-generator.test.ts +201 -0
- package/src/services/voice/corpus-generator.ts +413 -0
- package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
- package/src/services/voice/diarization-error-rate.test.ts +100 -0
- package/src/services/voice/diarization-error-rate.ts +249 -0
- package/src/services/voice/e2e-harness.der.test.ts +94 -0
- package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
- package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +902 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/echo-delay.test.ts +118 -0
- package/src/services/voice/echo-delay.ts +135 -0
- package/src/services/voice/echo-metrics.test.ts +17 -0
- package/src/services/voice/echo-metrics.ts +20 -0
- package/src/services/voice/echo-reference-buffer.test.ts +86 -0
- package/src/services/voice/echo-reference-buffer.ts +165 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.test.ts +131 -0
- package/src/services/voice/embedding.ts +242 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2343 -0
- package/src/services/voice/eot-classifier-ggml.ts +569 -0
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +422 -0
- package/src/services/voice/errors.ts +34 -0
- package/src/services/voice/expressive-tags.asr.test.ts +77 -0
- package/src/services/voice/expressive-tags.test.ts +102 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.test.ts +735 -0
- package/src/services/voice/ffi-bindings.ts +3387 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.ts +139 -0
- package/src/services/voice/index.ts +502 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.ts +64 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +622 -0
- package/src/services/voice/metric-math.test.ts +61 -0
- package/src/services/voice/metric-math.ts +25 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
- package/src/services/voice/nlms-echo-canceller.ts +317 -0
- package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.ts +504 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/real-audio-decode.test.ts +148 -0
- package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
- package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
- package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
- package/src/services/voice/ring-buffer.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/self-voice-imprint.test.ts +59 -0
- package/src/services/voice/self-voice-imprint.ts +102 -0
- package/src/services/voice/shared-resources.ts +343 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/transcript-knowledge.test.ts +68 -0
- package/src/services/voice/transcript-knowledge.ts +75 -0
- package/src/services/voice/transcript-service.test.ts +195 -0
- package/src/services/voice/transcript-service.ts +205 -0
- package/src/services/voice/transcript-store.test.ts +189 -0
- package/src/services/voice/transcript-store.ts +164 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.test.ts +498 -0
- package/src/services/voice/vad.ts +832 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.test.ts +415 -0
- package/src/services/voice/voice-budget.ts +635 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
- package/src/services/voice/voice-preload-predictor.test.ts +130 -0
- package/src/services/voice/voice-preload-predictor.ts +113 -0
- package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
- package/src/services/voice/voice-preset-format.test.ts +75 -0
- package/src/services/voice/voice-preset-format.ts +713 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +280 -0
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +367 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.ts +319 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
- package/src/services/voice/wav-codec.test.ts +32 -0
- package/src/services/voice/wav-codec.ts +101 -0
- package/src/services/voice/workbench-entrypoint.test.ts +55 -0
- package/src/services/voice/workbench-entrypoint.ts +88 -0
- package/src/services/voice/workbench-headless-runner.test.ts +162 -0
- package/src/services/voice/workbench-headless-runner.ts +396 -0
- package/src/services/voice/workbench-logic-services.test.ts +225 -0
- package/src/services/voice/workbench-logic-services.ts +184 -0
- package/src/services/voice/workbench-real-services.ts +629 -0
- package/src/services/voice/workbench-scenarios.ts +407 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/src/voice-workbench.ts +71 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine-backed `verifyOnDevice` hook for the Eliza-1 downloader
|
|
3
|
+
* (`packages/inference/AGENTS.md` §7): after a bundle is materialized and
|
|
4
|
+
* every file's sha256 checks out, run one cold smoke pass —
|
|
5
|
+
*
|
|
6
|
+
* load → 1-token text generation → (if the bundle ships voice assets)
|
|
7
|
+
* 1-phrase voice generation → barge-in cancel → unload
|
|
8
|
+
*
|
|
9
|
+
* — before the bundle is allowed to auto-fill an empty default slot. The
|
|
10
|
+
* downloader stays decoupled from the engine: it only knows the
|
|
11
|
+
* {@link VerifyBundleOnDevice} shape; this module is the concrete
|
|
12
|
+
* implementation the service layer injects.
|
|
13
|
+
*
|
|
14
|
+
* Failure semantics: any error throws. The downloader catches it and leaves
|
|
15
|
+
* `bundleVerifiedAt` unset, so an unverified bundle is registered but does
|
|
16
|
+
* not become the recommended default. There is no "verified anyway" path —
|
|
17
|
+
* voice is mandatory for Eliza-1 voice tiers (AGENTS.md §3), so a bundle
|
|
18
|
+
* whose fused voice ABI is not loadable on this device legitimately fails
|
|
19
|
+
* verify until the fused build is present.
|
|
20
|
+
*/
|
|
21
|
+
import fs from "node:fs/promises";
|
|
22
|
+
import type { VerifyBundleOnDevice } from "./downloader";
|
|
23
|
+
import { localInferenceEngine } from "./engine";
|
|
24
|
+
import { parseManifestOrThrow } from "./manifest";
|
|
25
|
+
type VerifyEngine = Pick<typeof localInferenceEngine, "load" | "generate" | "ensureActiveBundleVoiceReady" | "startVoice" | "armVoice" | "synthesizeSpeech" | "triggerBargeIn" | "stopVoice" | "unload">;
|
|
26
|
+
interface VerifyBundleOnDeviceDeps {
|
|
27
|
+
readonly engine: VerifyEngine;
|
|
28
|
+
readonly readFile: typeof fs.readFile;
|
|
29
|
+
readonly parseManifest: typeof parseManifestOrThrow;
|
|
30
|
+
}
|
|
31
|
+
export declare function createVerifyBundleOnDevice(deps?: Partial<VerifyBundleOnDeviceDeps>): VerifyBundleOnDevice;
|
|
32
|
+
export declare const verifyBundleOnDevice: VerifyBundleOnDevice;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=verify-on-device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-on-device.d.ts","sourceRoot":"","sources":["../../src/services/verify-on-device.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,KAAK,YAAY,GAAG,IAAI,CACvB,OAAO,oBAAoB,EACzB,MAAM,GACN,UAAU,GACV,8BAA8B,GAC9B,YAAY,GACZ,UAAU,GACV,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,GACX,QAAQ,CACV,CAAC;AAEF,UAAU,wBAAwB;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,oBAAoB,CAAC;CACpD;AAqDD,wBAAgB,0BAA0B,CACzC,IAAI,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC1C,oBAAoB,CAoBtB;AAED,eAAO,MAAM,oBAAoB,EAAE,oBACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-export of the shared model-file verification module. The canonical
|
|
3
|
+
* implementation lives in `@elizaos/shared/local-inference` because both
|
|
4
|
+
* the server (`@elizaos/app-core`) and the UI client (`@elizaos/ui`)
|
|
5
|
+
* compute the same SHA256 / GGUF-magic checks against on-disk models.
|
|
6
|
+
*/
|
|
7
|
+
export { __registryPathForTests, hashFile, type VerifyResult, type VerifyState, verifyInstalledModel, } from "@elizaos/shared/local-inference/verify";
|
|
8
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/services/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACN,sBAAsB,EACtB,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,oBAAoB,GACpB,MAAM,wCAAwC,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AOSP vision-describe backend contract (WS2).
|
|
3
|
+
*
|
|
4
|
+
* The bun:ffi llama.cpp binding in `@elizaos/plugin-aosp-local-inference`
|
|
5
|
+
* already exposes the embedding helpers (`llama_set_embeddings`,
|
|
6
|
+
* `llama_get_embeddings_seq`) and the model/context lifecycle. mtmd
|
|
7
|
+
* (multi-modal definition) is part of upstream llama.cpp from b8198+
|
|
8
|
+
* but the libeliza-llama-shim that the AOSP binding loads does NOT
|
|
9
|
+
* yet export the matching `eliza_llama_mtmd_*` symbols.
|
|
10
|
+
*
|
|
11
|
+
* This file is the JS contract for the FFI binding the AOSP plugin
|
|
12
|
+
* will add when the native side ships. It lives in
|
|
13
|
+
* `plugin-local-inference` (not in `plugin-aosp-local-inference`) so
|
|
14
|
+
* cross-plugin consumers can compile against the same interface
|
|
15
|
+
* regardless of platform. When the AOSP shim ships the native
|
|
16
|
+
* symbols, the implementation in `plugin-aosp-local-inference/src/
|
|
17
|
+
* aosp-llama-vision.ts` (to be added) will satisfy this contract.
|
|
18
|
+
*
|
|
19
|
+
* Required native symbols (libeliza-llama-shim):
|
|
20
|
+
*
|
|
21
|
+
* eliza_llama_mtmd_init_from_file(
|
|
22
|
+
* mmproj_path: const char *,
|
|
23
|
+
* out_handle: void **
|
|
24
|
+
* ) -> int32 // 0 = ok; non-zero = error code
|
|
25
|
+
*
|
|
26
|
+
* eliza_llama_mtmd_free(mtmd_handle: void *) -> void
|
|
27
|
+
*
|
|
28
|
+
* eliza_llama_mtmd_encode(
|
|
29
|
+
* mtmd_handle: void *,
|
|
30
|
+
* image_bytes: const uint8_t *,
|
|
31
|
+
* image_len: size_t,
|
|
32
|
+
* out_tokens_ptr: float **, // owned by mtmd; valid until next encode
|
|
33
|
+
* out_token_count: int32 *,
|
|
34
|
+
* out_hidden_size: int32 *
|
|
35
|
+
* ) -> int32
|
|
36
|
+
*
|
|
37
|
+
* eliza_llama_decode_with_mmproj(
|
|
38
|
+
* ctx: void *, // existing llama_context
|
|
39
|
+
* mtmd_tokens: const float *,
|
|
40
|
+
* mtmd_token_count: int32,
|
|
41
|
+
* mtmd_hidden_size: int32,
|
|
42
|
+
* prompt: const char *,
|
|
43
|
+
* prompt_len: size_t,
|
|
44
|
+
* max_tokens: int32,
|
|
45
|
+
* temperature: float,
|
|
46
|
+
* out_text_buf: char *, // caller-allocated
|
|
47
|
+
* out_text_buf_cap: size_t,
|
|
48
|
+
* out_text_written: size_t *
|
|
49
|
+
* ) -> int32
|
|
50
|
+
*
|
|
51
|
+
* Optional fast path: if the shim adds
|
|
52
|
+
*
|
|
53
|
+
* eliza_llama_mtmd_describe(
|
|
54
|
+
* model: void *, // existing llama_model
|
|
55
|
+
* ctx: void *, // existing llama_context
|
|
56
|
+
* mtmd_handle: void *,
|
|
57
|
+
* image_bytes: const uint8_t *,
|
|
58
|
+
* image_len: size_t,
|
|
59
|
+
* prompt: const char *,
|
|
60
|
+
* prompt_len: size_t,
|
|
61
|
+
* max_tokens: int32,
|
|
62
|
+
* temperature: float,
|
|
63
|
+
* out_buf: char *,
|
|
64
|
+
* out_buf_cap: size_t,
|
|
65
|
+
* out_written: size_t *
|
|
66
|
+
* ) -> int32
|
|
67
|
+
*
|
|
68
|
+
* that single-call wrapper is preferred — it lets the shim fuse the
|
|
69
|
+
* encode+decode steps internally and avoids the round-trip of token
|
|
70
|
+
* pointers across the FFI boundary (which bun:ffi handles, but at the
|
|
71
|
+
* cost of two extra pointer dereferences per frame).
|
|
72
|
+
*
|
|
73
|
+
* Until the native side exports those symbols, this module's `loadAospVisionBackend`
|
|
74
|
+
* throws a structured error that the arbiter / handler can surface as
|
|
75
|
+
* "vision not available on this platform". It does NOT register
|
|
76
|
+
* silently — silent unavailability would let the runtime fall back to
|
|
77
|
+
* the cloud path on a mobile device that explicitly disabled it.
|
|
78
|
+
*/
|
|
79
|
+
import type { VisionDescribeBackend, VisionDescribeLoadArgs } from "./types";
|
|
80
|
+
/**
|
|
81
|
+
* The AOSP binding's mtmd surface, when present. The AOSP plugin
|
|
82
|
+
* registers an instance under the runtime service name
|
|
83
|
+
* `"aosp-llama-mtmd"` once the native shim exports the symbols above.
|
|
84
|
+
*/
|
|
85
|
+
export interface AospLlamaMtmdBinding {
|
|
86
|
+
/** True when libeliza-llama-shim.so was loaded and exports the mtmd symbols. */
|
|
87
|
+
hasMtmd(): boolean;
|
|
88
|
+
/** Initialize an mtmd handle for the given mmproj path. */
|
|
89
|
+
initMtmd(args: {
|
|
90
|
+
mmprojPath: string;
|
|
91
|
+
}): Promise<AospMtmdHandle>;
|
|
92
|
+
}
|
|
93
|
+
export interface AospMtmdHandle {
|
|
94
|
+
/**
|
|
95
|
+
* Single-call describe — wraps mtmd_encode + decode_with_chunks. The
|
|
96
|
+
* AOSP shim's `eliza_llama_mtmd_describe` lands here. Backends that
|
|
97
|
+
* only have the split encode/decode symbols implement this on top
|
|
98
|
+
* of two FFI calls; backends with the fused symbol use one.
|
|
99
|
+
*/
|
|
100
|
+
describe(args: {
|
|
101
|
+
imageBytes: Uint8Array;
|
|
102
|
+
prompt: string;
|
|
103
|
+
maxTokens?: number;
|
|
104
|
+
temperature?: number;
|
|
105
|
+
signal?: AbortSignal;
|
|
106
|
+
}): Promise<string>;
|
|
107
|
+
/** Free the mtmd handle (and any cached encode buffers). */
|
|
108
|
+
dispose(): Promise<void>;
|
|
109
|
+
}
|
|
110
|
+
export interface LoadAospVisionBackendOptions {
|
|
111
|
+
loadArgs: VisionDescribeLoadArgs;
|
|
112
|
+
mtmdBinding?: AospLlamaMtmdBinding;
|
|
113
|
+
}
|
|
114
|
+
export declare function loadAospVisionBackend(opts: LoadAospVisionBackendOptions): Promise<VisionDescribeBackend>;
|
|
115
|
+
//# sourceMappingURL=aosp-unavailable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aosp-unavailable.d.ts","sourceRoot":"","sources":["../../../src/services/vision/aosp-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,gFAAgF;IAChF,OAAO,IAAI,OAAO,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE;QACd,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,4DAA4D;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,4BAA4B,GAChC,OAAO,CAAC,qBAAqB,CAAC,CA0ChC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capacitor-llama vision-describe backend (WS2).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the in-process capacitor-llama binding's multimodal projector
|
|
5
|
+
* (mtmd) surface and exposes the WS2 `VisionDescribeBackend` contract.
|
|
6
|
+
*
|
|
7
|
+
* State of the binding (2026-05-19):
|
|
8
|
+
* `llama-cpp-capacitor`'s `LlamaContext` exposes `initMultimodal` and
|
|
9
|
+
* `getMultimodalSupport`, which load an mmproj alongside the chat
|
|
10
|
+
* target. The desktop bun:ffi shim does not yet bind those symbols —
|
|
11
|
+
* the desktop FFI path returns `binding_missing_mtmd` until the shim
|
|
12
|
+
* adds `mtmd_init_from_file` + the encode/decode helpers.
|
|
13
|
+
*
|
|
14
|
+
* What this module does today:
|
|
15
|
+
* - Provides the WS2-shaped backend so plugin-vision / plugin-image-gen /
|
|
16
|
+
* computer-use can compile against a stable contract.
|
|
17
|
+
* - When the binding exposes the mtmd API, the backend dispatches
|
|
18
|
+
* through it.
|
|
19
|
+
* - Otherwise, the backend falls back to an injected
|
|
20
|
+
* `VisionManagerLike` implementation when one is supplied (kept as a
|
|
21
|
+
* pluggable seam for tests and out-of-tree integrations).
|
|
22
|
+
* - When neither path is wired, `describe()` throws a structured
|
|
23
|
+
* `VisionBackendUnavailableError` the arbiter surfaces upward.
|
|
24
|
+
*
|
|
25
|
+
* GPU validation status (this host has neither GPU):
|
|
26
|
+
* The mtmd encode path is GPU-accelerated when the underlying llama.cpp
|
|
27
|
+
* build dispatches `llama_image_t` through the model's batch path. We
|
|
28
|
+
* document the on-device validation that's required for each GPU
|
|
29
|
+
* family at the bottom of this file's tests (see
|
|
30
|
+
* `__tests__/vision-describe.test.ts`). Until those run on real
|
|
31
|
+
* hardware, GPU-backed vision is "implementation present, not
|
|
32
|
+
* validated".
|
|
33
|
+
*/
|
|
34
|
+
import type { VisionDescribeBackend, VisionDescribeBackendOptions, VisionDescribeLoadArgs } from "./types";
|
|
35
|
+
export declare class VisionBackendUnavailableError extends Error {
|
|
36
|
+
readonly backendId: string;
|
|
37
|
+
readonly reason: "binding_missing_mtmd" | "no_fallback_present" | "mmproj_missing";
|
|
38
|
+
readonly code = "VISION_BACKEND_UNAVAILABLE";
|
|
39
|
+
constructor(backendId: string, reason: "binding_missing_mtmd" | "no_fallback_present" | "mmproj_missing", message: string);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Optional shape the Capacitor-llama binding exposes once the mtmd typed
|
|
43
|
+
* wrappers land in the shared adapter. The backend only consumes
|
|
44
|
+
* `describeWithMmproj`, which wraps `LlamaContext.initMultimodal` +
|
|
45
|
+
* `completion(...)` with `media_paths`. Backends that don't satisfy this
|
|
46
|
+
* shape are treated as "binding without mtmd support" and the fallback
|
|
47
|
+
* path is used.
|
|
48
|
+
*/
|
|
49
|
+
export interface CapacitorLlamaMtmdBinding {
|
|
50
|
+
loadVisionModel(args: {
|
|
51
|
+
modelPath: string;
|
|
52
|
+
mmprojPath: string;
|
|
53
|
+
gpuLayers?: number | "auto" | "max";
|
|
54
|
+
contextSize?: number;
|
|
55
|
+
}): Promise<CapacitorLlamaMtmdHandle>;
|
|
56
|
+
}
|
|
57
|
+
export interface CapacitorLlamaMtmdHandle {
|
|
58
|
+
describeWithMmproj(args: {
|
|
59
|
+
imageBytes: Uint8Array;
|
|
60
|
+
mimeType?: string;
|
|
61
|
+
prompt: string;
|
|
62
|
+
maxTokens?: number;
|
|
63
|
+
temperature?: number;
|
|
64
|
+
signal?: AbortSignal;
|
|
65
|
+
projectedTokens?: VisionDescribeBackendOptions["projectedTokens"];
|
|
66
|
+
}): Promise<{
|
|
67
|
+
text: string;
|
|
68
|
+
projectorMs?: number;
|
|
69
|
+
decodeMs?: number;
|
|
70
|
+
}>;
|
|
71
|
+
dispose(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Optional VisionManager-shape fallback. Kept available as a pluggable
|
|
75
|
+
* injection point for tests and out-of-tree integrations that want to
|
|
76
|
+
* supply their own image captioning implementation.
|
|
77
|
+
*/
|
|
78
|
+
export interface VisionManagerLike {
|
|
79
|
+
processImage(dataUrl: string): Promise<{
|
|
80
|
+
title: string;
|
|
81
|
+
description: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
export interface CapacitorLlamaVisionBackendOptions {
|
|
85
|
+
loadArgs: VisionDescribeLoadArgs;
|
|
86
|
+
/**
|
|
87
|
+
* Injected by tests and by the shared mtmd typed wrappers. When
|
|
88
|
+
* provided the backend uses the mtmd path.
|
|
89
|
+
*/
|
|
90
|
+
mtmd?: CapacitorLlamaMtmdBinding;
|
|
91
|
+
/**
|
|
92
|
+
* Caption-only fallback. Optional — when present the backend uses it
|
|
93
|
+
* as last resort, after mtmd. Backends that have neither throw a
|
|
94
|
+
* structured `VisionBackendUnavailableError`.
|
|
95
|
+
*/
|
|
96
|
+
visionManager?: VisionManagerLike;
|
|
97
|
+
}
|
|
98
|
+
export declare function loadCapacitorLlamaVisionBackend(opts: CapacitorLlamaVisionBackendOptions): Promise<VisionDescribeBackend>;
|
|
99
|
+
//# sourceMappingURL=capacitor-llama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor-llama.d.ts","sourceRoot":"","sources":["../../../src/services/vision/capacitor-llama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,KAAK,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EAGtB,MAAM,SAAS,CAAC;AAEjB,qBAAa,6BAA8B,SAAQ,KAAK;IAGtD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,MAAM,EACZ,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB;IANpB,QAAQ,CAAC,IAAI,gCAAgC;gBAEnC,SAAS,EAAE,MAAM,EACjB,MAAM,EACZ,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,EACnB,OAAO,EAAE,MAAM;CAKhB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACzC,eAAe,CAAC,IAAI,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;QACpC,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACxC,kBAAkB,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,UAAU,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,eAAe,CAAC,EAAE,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;KAClE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,CACX,OAAO,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,kCAAkC;IAClD,QAAQ,EAAE,sBAAsB,CAAC;IACjC;;;OAGG;IACH,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAID,wBAAsB,+BAA+B,CACpD,IAAI,EAAE,kCAAkC,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA2EhC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Soft cloud fallback wrapper for local IMAGE_DESCRIPTION handlers.
|
|
3
|
+
*
|
|
4
|
+
* The local vision path can report recoverable unavailability without forcing
|
|
5
|
+
* callers to know which remote provider is paired. The wrapper keeps that
|
|
6
|
+
* state explicit: handlers return a normal image description or a typed
|
|
7
|
+
* fallback outcome that the next layer can handle.
|
|
8
|
+
*/
|
|
9
|
+
import type { ImageDescriptionParams, ImageDescriptionResult } from "@elizaos/core";
|
|
10
|
+
export type VisionFallbackReason = "local-unavailable" | "local-overloaded" | "local-error" | "local-aborted-pre-completion" | "local-not-registered" | "cloud-unavailable" | "cloud-error" | "vast-unavailable" | "vast-error";
|
|
11
|
+
export type LocalVisionOutcome = ImageDescriptionResult | string | {
|
|
12
|
+
kind: "ok";
|
|
13
|
+
result: ImageDescriptionResult | string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "fallback";
|
|
16
|
+
reason: VisionFallbackReason;
|
|
17
|
+
cause?: Error;
|
|
18
|
+
};
|
|
19
|
+
export type LocalVisionResult = Exclude<LocalVisionOutcome, {
|
|
20
|
+
kind: "fallback";
|
|
21
|
+
reason: VisionFallbackReason;
|
|
22
|
+
cause?: Error;
|
|
23
|
+
}>;
|
|
24
|
+
export type LocalImageDescriptionHandler = (params: ImageDescriptionParams | string) => Promise<LocalVisionOutcome>;
|
|
25
|
+
export type WrappedImageDescriptionHandler = LocalImageDescriptionHandler;
|
|
26
|
+
export interface VisionCloudFallbackOptions {
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
token?: string;
|
|
29
|
+
apiKey?: string;
|
|
30
|
+
baseUrl?: string;
|
|
31
|
+
fetch?: typeof fetch;
|
|
32
|
+
handler?: (params: ImageDescriptionParams | string, reason: VisionFallbackReason) => Promise<LocalVisionOutcome>;
|
|
33
|
+
log?: (message: string, detail?: Record<string, unknown>) => void;
|
|
34
|
+
}
|
|
35
|
+
export declare function classifyLocalVisionError(error: unknown): {
|
|
36
|
+
fallback: boolean;
|
|
37
|
+
reason: VisionFallbackReason;
|
|
38
|
+
cause?: Error;
|
|
39
|
+
};
|
|
40
|
+
export declare function isVisionFallbackOutcome(outcome: LocalVisionOutcome): outcome is {
|
|
41
|
+
kind: "fallback";
|
|
42
|
+
reason: VisionFallbackReason;
|
|
43
|
+
cause?: Error;
|
|
44
|
+
};
|
|
45
|
+
export declare function normalizeVisionDescription(result: LocalVisionResult): ImageDescriptionResult;
|
|
46
|
+
export declare function wrapImageDescriptionHandlerWithCloudFallback(local: LocalImageDescriptionHandler, options?: VisionCloudFallbackOptions): WrappedImageDescriptionHandler;
|
|
47
|
+
//# sourceMappingURL=cloud-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-fallback.d.ts","sourceRoot":"","sources":["../../../src/services/vision/cloud-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAC7B,mBAAmB,GACnB,kBAAkB,GAClB,aAAa,GACb,8BAA8B,GAC9B,sBAAsB,GACtB,mBAAmB,GACnB,aAAa,GACb,kBAAkB,GAClB,YAAY,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAC3B,sBAAsB,GACtB,MAAM,GACN;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACtC,kBAAkB,EAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CACjE,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAC1C,MAAM,EAAE,sBAAsB,GAAG,MAAM,KACnC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAE1E,MAAM,WAAW,0BAA0B;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,CACT,MAAM,EAAE,sBAAsB,GAAG,MAAM,EACvC,MAAM,EAAE,oBAAoB,KACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAClE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;CACd,CA2CA;AAED,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,kBAAkB,GACzB,OAAO,IAAI;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;CACd,CAOA;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,GACvB,sBAAsB,CAiCxB;AAqED,wBAAgB,4CAA4C,CAC3D,KAAK,EAAE,4BAA4B,EACnC,OAAO,GAAE,0BAA+B,GACtC,8BAA8B,CAyChC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vision-embedding cache key derivation (WS2).
|
|
3
|
+
*
|
|
4
|
+
* The arbiter's vision-embedding cache (WS1, `vision-embedding-cache.ts`)
|
|
5
|
+
* is keyed by SHA-256 of a *normalized* representation of the input
|
|
6
|
+
* image. The normalization step is what makes the cache useful across
|
|
7
|
+
* platforms: two JPEG encodings of the same screenshot, or an RGBA vs
|
|
8
|
+
* RGB frame captured by different platforms, must hash to the same key
|
|
9
|
+
* or the cache hit rate collapses.
|
|
10
|
+
*
|
|
11
|
+
* Normalization is deliberately minimal:
|
|
12
|
+
*
|
|
13
|
+
* 1. Resolve the input to raw bytes (decoding base64/data-url wrappers).
|
|
14
|
+
* 2. Hash with the model-family prefix so the cache can hold tokens
|
|
15
|
+
* for multiple VL families without collision.
|
|
16
|
+
*
|
|
17
|
+
* What we DO NOT do here:
|
|
18
|
+
*
|
|
19
|
+
* - Resize the image. The backend's projector enforces its own input
|
|
20
|
+
* resolution; the bytes the projector sees are what gets projected.
|
|
21
|
+
* Re-encoding here would add work without changing the hit rate
|
|
22
|
+
* (the platform-provided buffer is already at the camera's native
|
|
23
|
+
* resolution).
|
|
24
|
+
* - Strip JPEG/PNG headers. They contribute to the hash; two
|
|
25
|
+
* reencodings of the same pixel array land in different cache
|
|
26
|
+
* slots intentionally. Reuse only the exact same byte stream.
|
|
27
|
+
*
|
|
28
|
+
* If a downstream caller wants finer-grained cache hits (e.g. dedupe
|
|
29
|
+
* across re-encodings of the same screen frame), it should decode to
|
|
30
|
+
* RGBA pixels itself and call `hashRawPixels`. The default
|
|
31
|
+
* `hashVisionInput` path is the conservative, byte-stream-only path.
|
|
32
|
+
*/
|
|
33
|
+
import type { VisionImageInput } from "./types";
|
|
34
|
+
/**
|
|
35
|
+
* Resolve a `VisionImageInput` to its raw bytes. Returns the decoded
|
|
36
|
+
* payload plus an optional MIME type the caller can forward to the
|
|
37
|
+
* backend. Throws on `url:` inputs — those must be fetched by the
|
|
38
|
+
* caller; the hash step does not own HTTP.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveImageBytes(input: VisionImageInput): {
|
|
41
|
+
bytes: Uint8Array;
|
|
42
|
+
mimeType?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Hash an opaque byte stream with the model-family prefix. The result
|
|
46
|
+
* is stable across processes and platforms (Node, Bun, and the
|
|
47
|
+
* Capacitor JS bridge all return the same hex string for the same
|
|
48
|
+
* input).
|
|
49
|
+
*/
|
|
50
|
+
export declare function hashImageBytes(bytes: Uint8Array, modelFamily?: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Hash a raw pixel buffer (RGBA / RGB / BGRA / BGR). The channel order
|
|
53
|
+
* is folded into the prefix so the same image captured on two different
|
|
54
|
+
* platforms (Android = RGBA, macOS screenshot = BGRA) produces the same
|
|
55
|
+
* key when normalized. Width / height are also included so the cache
|
|
56
|
+
* doesn't conflate two scaled versions of the same source.
|
|
57
|
+
*/
|
|
58
|
+
export declare function hashRawPixels(args: {
|
|
59
|
+
bytes: Uint8Array;
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
channelOrder: "rgba" | "rgb" | "bgra" | "bgr";
|
|
63
|
+
modelFamily?: string;
|
|
64
|
+
}): string;
|
|
65
|
+
/**
|
|
66
|
+
* Convenience wrapper used by the provider: takes a `VisionImageInput`
|
|
67
|
+
* and a model family, returns the cache key. URL inputs throw —
|
|
68
|
+
* callers must fetch first.
|
|
69
|
+
*/
|
|
70
|
+
export declare function hashVisionInput(input: VisionImageInput, modelFamily?: string): string;
|
|
71
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/services/vision/hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG;IAC3D,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CA4BA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,UAAU,EACjB,WAAW,GAAE,MAAuB,GAClC,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAeT;AAkBD;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,gBAAgB,EACvB,WAAW,GAAE,MAAuB,GAClC,MAAM,CAGR"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vision-describe capability (WS2) — public entry point.
|
|
3
|
+
*
|
|
4
|
+
* This module is what plugin-vision (WS4), the IMAGE_DESCRIPTION
|
|
5
|
+
* handler in `provider.ts`, and computer-use (WS9) import to register
|
|
6
|
+
* vision capability with the WS1 MemoryArbiter.
|
|
7
|
+
*
|
|
8
|
+
* Wiring:
|
|
9
|
+
*
|
|
10
|
+
* const arbiter = service.getMemoryArbiter();
|
|
11
|
+
* const registration = createVisionCapabilityRegistration({
|
|
12
|
+
* loader: createDefaultVisionLoader({ ... }),
|
|
13
|
+
* arbiterCache: arbiter,
|
|
14
|
+
* });
|
|
15
|
+
* arbiter.registerCapability(registration);
|
|
16
|
+
*
|
|
17
|
+
* `createVisionCapabilityRegistration` wraps the underlying backend so
|
|
18
|
+
* the arbiter's `run(request)` path:
|
|
19
|
+
*
|
|
20
|
+
* 1. Hashes the request's image bytes (model-family-scoped).
|
|
21
|
+
* 2. Checks the arbiter's vision-embedding cache.
|
|
22
|
+
* 3. On miss: calls `backend.describe(request)`, lets the backend
|
|
23
|
+
* run its own projector + decoder. Backends that cannot expose projected
|
|
24
|
+
* tokens return decoder text only, so the cache stays empty for this hash.
|
|
25
|
+
* The decoder text is what the caller wanted anyway.
|
|
26
|
+
* 4. On hit: calls `backend.describe(request, { projectedTokens })`.
|
|
27
|
+
* Backends that support pre-projected token reuse skip the
|
|
28
|
+
* projector entirely. Backends that don't ignore the hint; the
|
|
29
|
+
* result is still correct but the projector cost is paid again.
|
|
30
|
+
*/
|
|
31
|
+
export { type AospLlamaMtmdBinding, type AospMtmdHandle, type LoadAospVisionBackendOptions, loadAospVisionBackend, } from "./aosp-unavailable";
|
|
32
|
+
export { type CapacitorLlamaMtmdBinding, type CapacitorLlamaMtmdHandle, type CapacitorLlamaVisionBackendOptions, loadCapacitorLlamaVisionBackend, VisionBackendUnavailableError, type VisionManagerLike, } from "./capacitor-llama";
|
|
33
|
+
export { classifyLocalVisionError, type LocalImageDescriptionHandler, type LocalVisionOutcome, type VisionCloudFallbackOptions, type VisionFallbackReason, type WrappedImageDescriptionHandler, wrapImageDescriptionHandlerWithCloudFallback, } from "./cloud-fallback";
|
|
34
|
+
export { hashImageBytes, hashRawPixels, hashVisionInput, resolveImageBytes, } from "./hash";
|
|
35
|
+
export { createLlamaServerVisionBackend, type LlamaServerVisionBackendOptions, } from "./llama-server";
|
|
36
|
+
export type { VisionDescribeBackend, VisionDescribeBackendLoader, VisionDescribeBackendOptions, VisionDescribeLoadArgs, VisionDescribeRequest, VisionDescribeResult, VisionImageChannelOrder, VisionImageInput, } from "./types";
|
|
37
|
+
export { type VisionVastFallbackOptions, wrapImageDescriptionHandlerWithVastFallback, } from "./vast-fallback";
|
|
38
|
+
import type { CapabilityRegistration } from "../memory-arbiter";
|
|
39
|
+
import type { VisionDescribeBackend, VisionDescribeBackendLoader, VisionDescribeRequest, VisionDescribeResult } from "./types";
|
|
40
|
+
/**
|
|
41
|
+
* Minimal arbiter shape we need from the cache. Lets tests inject a
|
|
42
|
+
* fake cache without pulling in the whole MemoryArbiter.
|
|
43
|
+
*/
|
|
44
|
+
export interface VisionEmbeddingCacheLike {
|
|
45
|
+
getCachedVisionEmbedding(hash: string): {
|
|
46
|
+
tokens: Float32Array;
|
|
47
|
+
tokenCount: number;
|
|
48
|
+
hiddenSize: number;
|
|
49
|
+
live?: boolean;
|
|
50
|
+
} | null;
|
|
51
|
+
setCachedVisionEmbedding(hash: string, entry: {
|
|
52
|
+
tokens: Float32Array;
|
|
53
|
+
tokenCount: number;
|
|
54
|
+
hiddenSize: number;
|
|
55
|
+
}, ttlMs?: number): void;
|
|
56
|
+
}
|
|
57
|
+
export interface CreateVisionCapabilityRegistrationOptions {
|
|
58
|
+
/**
|
|
59
|
+
* The arbiter (or any object with the cache passthroughs). When
|
|
60
|
+
* provided the wrapper performs hash → cache lookup before calling
|
|
61
|
+
* the backend's `describe`.
|
|
62
|
+
*/
|
|
63
|
+
arbiterCache?: VisionEmbeddingCacheLike;
|
|
64
|
+
loader: VisionDescribeBackendLoader;
|
|
65
|
+
/** Default model family for the cache key. Defaults to `gemma-vl`. */
|
|
66
|
+
modelFamily?: string;
|
|
67
|
+
estimatedMb?: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build a `CapabilityRegistration` ready to feed to
|
|
71
|
+
* `arbiter.registerCapability()`. The wrapper plumbs the cache hint
|
|
72
|
+
* into the backend's describe call so backends that support
|
|
73
|
+
* pre-projected tokens skip the projector.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createVisionCapabilityRegistration(opts: CreateVisionCapabilityRegistrationOptions): CapabilityRegistration<VisionDescribeBackend, VisionDescribeRequest, VisionDescribeResult>;
|
|
76
|
+
import type { IAgentRuntime, ImageDescriptionParams, ImageDescriptionResult } from "@elizaos/core";
|
|
77
|
+
import { type LocalImageDescriptionHandler, type VisionCloudFallbackOptions } from "./cloud-fallback";
|
|
78
|
+
import { type VisionVastFallbackOptions } from "./vast-fallback";
|
|
79
|
+
/**
|
|
80
|
+
* Compose the full local → cloud → vast IMAGE_DESCRIPTION chain and
|
|
81
|
+
* terminate it as a runtime-shaped `ImageDescriptionHandler`. When all
|
|
82
|
+
* three paths return `{ kind: "fallback" }`, the terminator throws the
|
|
83
|
+
* underlying cause (or a structured upstream-fail message) so the runtime
|
|
84
|
+
* surfaces the failure cleanly rather than serving a sentinel result.
|
|
85
|
+
*
|
|
86
|
+
* This is the single entry point `ensure-local-inference-handler.ts`
|
|
87
|
+
* uses at the IMAGE_DESCRIPTION model registration site. Tests
|
|
88
|
+
* exercise the composition via the individual `wrap*` helpers; this
|
|
89
|
+
* function is the production wiring.
|
|
90
|
+
*/
|
|
91
|
+
export declare function withVisionFallbackChain(local: LocalImageDescriptionHandler, options?: {
|
|
92
|
+
cloud?: VisionCloudFallbackOptions;
|
|
93
|
+
vast?: VisionVastFallbackOptions;
|
|
94
|
+
}): (runtime: IAgentRuntime, params: ImageDescriptionParams | string) => Promise<ImageDescriptionResult>;
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/vision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,qBAAqB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,kCAAkC,EACvC,+BAA+B,EAC/B,6BAA6B,EAC7B,KAAK,iBAAiB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,wBAAwB,EACxB,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,4CAA4C,GAC5C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,cAAc,EACd,aAAa,EACb,eAAe,EACf,iBAAiB,GACjB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACN,8BAA8B,EAC9B,KAAK,+BAA+B,GACpC,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,KAAK,yBAAyB,EAC9B,2CAA2C,GAC3C,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAEX,sBAAsB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACxC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG;QACvC,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,GAAG,IAAI,CAAC;IACT,wBAAwB,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;QACN,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACnB,EACD,KAAK,CAAC,EAAE,MAAM,GACZ,IAAI,CAAC;CACR;AAED,MAAM,WAAW,yCAAyC;IACzD;;;;OAIG;IACH,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,MAAM,EAAE,2BAA2B,CAAC;IACpC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CACjD,IAAI,EAAE,yCAAyC,GAC7C,sBAAsB,CACxB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,CACpB,CAkDA;AAED,OAAO,KAAK,EACX,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAE/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,KAAK,yBAAyB,EAE9B,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,4BAA4B,EACnC,OAAO,GAAE;IACR,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,IAAI,CAAC,EAAE,yBAAyB,CAAC;CAC5B,GACJ,CACF,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,sBAAsB,GAAG,MAAM,KACnC,OAAO,CAAC,sBAAsB,CAAC,CAwBnC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* llama-server vision-describe backend (WS2).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the out-of-process llama-server's `/completion` endpoint with
|
|
5
|
+
* the `image_data` array (base64-encoded payloads) and shapes the
|
|
6
|
+
* response to the WS2 `VisionDescribeBackend` contract.
|
|
7
|
+
*
|
|
8
|
+
* llama-server image-data API recap (verified against llama.cpp commit
|
|
9
|
+
* b8198+, May 2026):
|
|
10
|
+
*
|
|
11
|
+
* POST /completion
|
|
12
|
+
* { "prompt": "<...>USER: [img-12] What's in this image?\nASSISTANT:",
|
|
13
|
+
* "image_data": [
|
|
14
|
+
* { "data": "<base64 png/jpeg>", "id": 12 }
|
|
15
|
+
* ],
|
|
16
|
+
* "n_predict": 256,
|
|
17
|
+
* "temperature": 0.2,
|
|
18
|
+
* "stream": false }
|
|
19
|
+
*
|
|
20
|
+
* Response:
|
|
21
|
+
* { "content": "A photo of a cat.", "stop": true,
|
|
22
|
+
* "timings": { "prompt_ms": 180.4, "predicted_ms": 423.1 } }
|
|
23
|
+
*
|
|
24
|
+
* Server-side mmproj is loaded via the `--mmproj <path>` flag on
|
|
25
|
+
* llama-server startup. The FFI runtime wrapper passes this flag
|
|
26
|
+
* already for tiers with vision enabled; this backend assumes the
|
|
27
|
+
* server has been started with the right mmproj for the active model.
|
|
28
|
+
*
|
|
29
|
+
* Backend responsibility:
|
|
30
|
+
* - Encode the image as base64 (when not already).
|
|
31
|
+
* - Build the prompt with the `[img-N]` placeholder convention.
|
|
32
|
+
* - POST to `/completion`, parse the text + timings.
|
|
33
|
+
* - Honour AbortSignal by passing it through to the fetch call.
|
|
34
|
+
*
|
|
35
|
+
* Backend explicitly does NOT:
|
|
36
|
+
* - Start / stop the server. That's the FFI runtime wrapper's job.
|
|
37
|
+
* - Resolve the mmproj path — the server already has it. The arbiter's
|
|
38
|
+
* `--mmproj` was set when the text model loaded.
|
|
39
|
+
* - Implement projector-token reuse. llama-server has no API to
|
|
40
|
+
* accept pre-projected tokens; if the WS1 cache hit happens, this
|
|
41
|
+
* backend ignores the hint and re-runs the projector. The cache
|
|
42
|
+
* is more useful with the in-process node-llama-cpp backend.
|
|
43
|
+
*
|
|
44
|
+
* Metal / CUDA validation:
|
|
45
|
+
* The llama-server build embeds the same mtmd_encode path the
|
|
46
|
+
* in-process binding will eventually expose. On a Metal build the
|
|
47
|
+
* image encode dispatches through the Metal compute encoder; on a
|
|
48
|
+
* CUDA build through cuBLAS. We have no GPU on this host — see the
|
|
49
|
+
* `__tests__/vision-describe.test.ts` notes for the GPU smoke check.
|
|
50
|
+
*/
|
|
51
|
+
import type { VisionDescribeBackend } from "./types";
|
|
52
|
+
export interface LlamaServerVisionBackendOptions {
|
|
53
|
+
/**
|
|
54
|
+
* Base URL of the llama-server. The FFI runtime wrapper exposes
|
|
55
|
+
* this via `currentBaseUrl()`; pass the resolved URL here at load
|
|
56
|
+
* time. The backend keeps it as-is across calls.
|
|
57
|
+
*/
|
|
58
|
+
baseUrl: string;
|
|
59
|
+
/**
|
|
60
|
+
* Optional fetch override. Tests inject a fake fetch; production
|
|
61
|
+
* uses global fetch. The signature mirrors `fetch` so the test
|
|
62
|
+
* surface is the same as the real one.
|
|
63
|
+
*/
|
|
64
|
+
fetch?: typeof fetch;
|
|
65
|
+
/**
|
|
66
|
+
* Default `n_predict` budget when the caller doesn't specify
|
|
67
|
+
* `maxTokens`. 256 matches the description-length budget the
|
|
68
|
+
* Florence-2 / VisionManager path uses today.
|
|
69
|
+
*/
|
|
70
|
+
defaultMaxTokens?: number;
|
|
71
|
+
}
|
|
72
|
+
export declare function createLlamaServerVisionBackend(opts: LlamaServerVisionBackendOptions): VisionDescribeBackend;
|
|
73
|
+
//# sourceMappingURL=llama-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llama-server.d.ts","sourceRoot":"","sources":["../../../src/services/vision/llama-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAGH,OAAO,KAAK,EACX,qBAAqB,EAGrB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,+BAA+B;IAC/C;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,+BAA+B,GACnC,qBAAqB,CAsEvB"}
|