@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 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-fallback.d.ts","sourceRoot":"","sources":["../../src/services/cloud-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACX,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,aAAa,EACb,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,cAAc;AACzB,oGAAoG;AAClG,mBAAmB;AACrB,uFAAuF;GACrF,kBAAkB;AACpB,sDAAsD;GACpD,aAAa;AACf,yEAAyE;GACvE,8BAA8B;AAChC,4DAA4D;GAC1D,sBAAsB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,GAC7B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACvB,CAyCA;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACpD,MAAM,EAAE,GAAG,CACV,MAAM,EACN,KAAK,CAAC;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,CACR,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,KACtC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;KACjC,CAAC,CACF,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CACR,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,KACtC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,aAAa,GAAG,MAAM,EACjC,eAAe,EAAE,MAAM,GACrB,cAAc,GAAG,IAAI,CAgBvB;AAED,MAAM,WAAW,oBAAoB;IACpC,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,SAAS,EAAE,aAAa,GAAG,MAAM,CAAC;IAClC;;;OAGG;IACH,aAAa,EAAE,CACd,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,kBAAkB,KACtB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,oFAAoF;IACpF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAClE;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,oBAAoB,GACxB,CACF,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,KACtC,OAAO,CAAC,MAAM,CAAC,CA0CnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface RuntimeContextFitInput {
|
|
2
|
+
params: string;
|
|
3
|
+
weightMb: number;
|
|
4
|
+
usableMb: number;
|
|
5
|
+
nativeContext: number;
|
|
6
|
+
minContext?: number;
|
|
7
|
+
workingSetMb?: number;
|
|
8
|
+
contextStep?: number;
|
|
9
|
+
/**
|
|
10
|
+
* When the host has enough headroom to run the more accurate f16 KV cache at
|
|
11
|
+
* (at least) the same window q8_0 would give, prefer f16 instead of leaving
|
|
12
|
+
* precision on the table. Opt-in — q8_0 stays the default per the device-fit
|
|
13
|
+
* contract; this only ever *upgrades* precision and never trades away context
|
|
14
|
+
* (#8809 AC#4). See CONTEXT_SCALING.md §5.
|
|
15
|
+
*/
|
|
16
|
+
preferAccurateKvWhenHeadroom?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeContextFit {
|
|
19
|
+
contextSize: number;
|
|
20
|
+
contextDownscaled: boolean;
|
|
21
|
+
maxFittingContext: number;
|
|
22
|
+
kvBytesPerToken: number;
|
|
23
|
+
workingSetMb: number;
|
|
24
|
+
/** The KV cache precision the chosen window was sized against. */
|
|
25
|
+
kvQuant: "q8_0" | "f16";
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Choose the runtime context window that fits the current host budget.
|
|
29
|
+
*
|
|
30
|
+
* The admission gate still decides whether the model may load at all. This
|
|
31
|
+
* helper only sizes the q8_0 KV window for an admitted Eliza-1 tier so a tight
|
|
32
|
+
* host gets the largest safe window instead of blindly taking the catalog
|
|
33
|
+
* ceiling.
|
|
34
|
+
*/
|
|
35
|
+
export declare function computeRuntimeContextFit(input: RuntimeContextFitInput): RuntimeContextFit | null;
|
|
36
|
+
//# sourceMappingURL=context-fit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-fit.d.ts","sourceRoot":"","sources":["../../src/services/context-fit.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAMD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,sBAAsB,GAC3B,iBAAiB,GAAG,IAAI,CA2D1B"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation registry for the local-inference path.
|
|
3
|
+
*
|
|
4
|
+
* Today's slot allocation is purely a hash function: `deriveSlotId` maps a
|
|
5
|
+
* `promptCacheKey` (or any stable string) to `slot_id` in `[0, parallel)`.
|
|
6
|
+
* That works for one-shot calls but breaks for long agentic loops:
|
|
7
|
+
*
|
|
8
|
+
* - Two distinct conversations whose cache keys hash to the same slot
|
|
9
|
+
* evict each other's KV every turn (slot thrashing).
|
|
10
|
+
* - The current high-water mark of concurrent conversations is invisible,
|
|
11
|
+
* so `--parallel N` cannot be tuned to fit.
|
|
12
|
+
* - There is no notion of an explicit "I am still using this slot" lease,
|
|
13
|
+
* so eviction is purely best-effort.
|
|
14
|
+
*
|
|
15
|
+
* This registry keeps a per-conversation reservation. `openConversation`
|
|
16
|
+
* picks the lowest-loaded slot and pins the conversation to it; subsequent
|
|
17
|
+
* `generateInConversation` calls always land on the same slot. When the
|
|
18
|
+
* pool is full, slot reuse falls back to the same-as-before hash policy
|
|
19
|
+
* (two leases on the same slot still serialise correctly via the dispatcher's
|
|
20
|
+
* generation queue).
|
|
21
|
+
*
|
|
22
|
+
* The registry tracks the high-water mark of concurrently-open conversations
|
|
23
|
+
* so the engine can warn, or later restart llama-server with a higher
|
|
24
|
+
* --parallel, when the load outgrows the configured slot count.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Opaque handle returned by `openConversation`. Callers MUST treat this as
|
|
28
|
+
* opaque — the registry owns the slot id and lifetime.
|
|
29
|
+
*/
|
|
30
|
+
export interface ConversationHandle {
|
|
31
|
+
readonly conversationId: string;
|
|
32
|
+
readonly modelId: string;
|
|
33
|
+
/**
|
|
34
|
+
* Pinned slot id in `[0, parallel)`, or `-1` when slot pinning is disabled
|
|
35
|
+
* (parallel <= 0). Used by both backends as the cache key:
|
|
36
|
+
* - llama-server: forwarded as `slot_id` in the request payload.
|
|
37
|
+
* - node-llama-cpp: combined with the conversation id to derive the
|
|
38
|
+
* session-pool key so identical conversations share a session.
|
|
39
|
+
*/
|
|
40
|
+
readonly slotId: number;
|
|
41
|
+
/** Wall-clock ms when the handle was opened. */
|
|
42
|
+
readonly openedAtMs: number;
|
|
43
|
+
/** Wall-clock ms when the handle was last touched (open or generate). */
|
|
44
|
+
lastUsedMs: number;
|
|
45
|
+
/** TTL after which the registry MAY auto-close on the next sweep. */
|
|
46
|
+
readonly ttlMs: number;
|
|
47
|
+
/** True when `closeConversation` has been called; further use is rejected. */
|
|
48
|
+
closed: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface OpenConversationArgs {
|
|
51
|
+
conversationId: string;
|
|
52
|
+
modelId: string;
|
|
53
|
+
/** Slot count from the running server (`--parallel N`). Defaults to 1. */
|
|
54
|
+
parallel?: number;
|
|
55
|
+
/**
|
|
56
|
+
* TTL after which the handle is considered idle and may be auto-closed
|
|
57
|
+
* by `evictIdle`. Defaults to 60 minutes — long enough for an LLM call
|
|
58
|
+
* to finish even on a slow drafter, short enough to recover from forgotten
|
|
59
|
+
* close calls within the long-cache window.
|
|
60
|
+
*/
|
|
61
|
+
ttlMs?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* In-memory registry of open conversation handles. A single instance is
|
|
65
|
+
* shared by the engine; each backend reads from it on every generate to
|
|
66
|
+
* decide which slot to pin to.
|
|
67
|
+
*/
|
|
68
|
+
export declare class ConversationRegistry {
|
|
69
|
+
private readonly handles;
|
|
70
|
+
/** Per-slot reference count; lowest-loaded slot wins on next open. */
|
|
71
|
+
private readonly slotLoad;
|
|
72
|
+
/** Largest concurrent open count seen; the engine reads this for parallel auto-tune. */
|
|
73
|
+
private highWaterMark;
|
|
74
|
+
/**
|
|
75
|
+
* Lookup / open a conversation handle. Idempotent for the same
|
|
76
|
+
* conversation id + model id; callers can call this on every turn
|
|
77
|
+
* without leaking handles. When the call is reusing an existing handle,
|
|
78
|
+
* `lastUsedMs` is bumped for LRU-style eviction tracking.
|
|
79
|
+
*/
|
|
80
|
+
open(args: OpenConversationArgs): ConversationHandle;
|
|
81
|
+
/**
|
|
82
|
+
* Lookup an open handle by conversation+model. Returns null when the
|
|
83
|
+
* conversation has not been opened or has already been closed. Bumps
|
|
84
|
+
* `lastUsedMs` so an LRU sweep treats reads as activity.
|
|
85
|
+
*/
|
|
86
|
+
get(conversationId: string, modelId: string): ConversationHandle | null;
|
|
87
|
+
/**
|
|
88
|
+
* Close + drop a handle. Idempotent — closing an unknown / already-closed
|
|
89
|
+
* handle has no additional effect, so callers can call this from cleanup paths
|
|
90
|
+
* unconditionally.
|
|
91
|
+
*/
|
|
92
|
+
close(conversationId: string, modelId: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Sweep handles whose `lastUsedMs` is older than their TTL. Returns the
|
|
95
|
+
* conversation ids dropped so callers can persist final KV state to
|
|
96
|
+
* disk, etc. Safe to call on a timer.
|
|
97
|
+
*/
|
|
98
|
+
evictIdle(now?: number): string[];
|
|
99
|
+
/**
|
|
100
|
+
* Snapshot every currently-open handle. Used by the shutdown path to
|
|
101
|
+
* emit a save-state request per slot.
|
|
102
|
+
*/
|
|
103
|
+
snapshot(): readonly ConversationHandle[];
|
|
104
|
+
/** Largest concurrent open count seen since the registry was created. */
|
|
105
|
+
highWater(): number;
|
|
106
|
+
/** Number of currently-open handles. */
|
|
107
|
+
size(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Recommended `--parallel` slot count given the observed high-water mark
|
|
110
|
+
* of concurrently-open conversations plus a small headroom (max(2, 25%)).
|
|
111
|
+
* The engine's auto-tune (J4) compares this against the running server's
|
|
112
|
+
* slot count: when this is larger AND there's RAM headroom, it restarts
|
|
113
|
+
* llama-server with the higher value so new conversations get their own
|
|
114
|
+
* KV slots instead of thrashing.
|
|
115
|
+
*
|
|
116
|
+
* `running` is the currently-configured slot count; when the high-water
|
|
117
|
+
* mark hasn't outgrown it, this returns `running` (no resize needed) so
|
|
118
|
+
* callers can compare against equality without a second branch.
|
|
119
|
+
*/
|
|
120
|
+
recommendedParallel(running: number): number;
|
|
121
|
+
/**
|
|
122
|
+
* Drop every handle and reset the high-water mark + slot-load bookkeeping.
|
|
123
|
+
* Test-only — the module singleton leaks state across files when the suite
|
|
124
|
+
* runs together; call this in `beforeEach` to isolate. Not part of the
|
|
125
|
+
* runtime contract.
|
|
126
|
+
*/
|
|
127
|
+
__resetForTests(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Pick the slot with the fewest in-flight handles. Ties are broken by a
|
|
130
|
+
* deterministic hash of the conversation id, which avoids consistently
|
|
131
|
+
* loading slot 0 when N concurrent opens race.
|
|
132
|
+
*/
|
|
133
|
+
private pickLowestLoadedSlot;
|
|
134
|
+
private compositeKey;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Module-singleton registry. The engine reads this on every generate; the
|
|
138
|
+
* conversation lifecycle API (`openConversation`, `closeConversation`)
|
|
139
|
+
* mutates it.
|
|
140
|
+
*/
|
|
141
|
+
export declare const conversationRegistry: ConversationRegistry;
|
|
142
|
+
//# sourceMappingURL=conversation-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-registry.d.ts","sourceRoot":"","sources":["../../src/services/conversation-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,wFAAwF;IACxF,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,kBAAkB;IAqCpD;;;;OAIG;IACH,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAOvE;;;;OAIG;IACH,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAcpD;;;;OAIG;IACH,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,EAAE;IAkB7C;;;OAGG;IACH,QAAQ,IAAI,SAAS,kBAAkB,EAAE;IAIzC,yEAAyE;IACzE,SAAS,IAAI,MAAM;IAInB,wCAAwC;IACxC,IAAI,IAAI,MAAM;IAId;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM5C;;;;;OAKG;IACH,eAAe,IAAI,IAAI;IAOvB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,YAAY;CAGpB;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Desktop production `FfiBackendRuntime` over the FUSED `libelizainference` —
|
|
3
|
+
* the SOLE desktop text runtime now that libllama has been retired.
|
|
4
|
+
*
|
|
5
|
+
* Desktop text generation runs through the fused library: the same
|
|
6
|
+
* `eliza_inference_llm_stream_*` ABI (v9) the voice subsystem already loads,
|
|
7
|
+
* so text + voice share one native lib, one GGML pin, and one resident text
|
|
8
|
+
* model.
|
|
9
|
+
*
|
|
10
|
+
* - The fused lib's `eliza_inference_llm_stream_open` loads the bundle's text
|
|
11
|
+
* GGUF (`<bundleRoot>/text/*.gguf`) and applies MTP speculative
|
|
12
|
+
* decoding + KV-cache quant + per-load GPU layers natively (ABI v9). The
|
|
13
|
+
* path is gated on the capability probes
|
|
14
|
+
* (`llmStreamSupported && llmMtpSupported && llmKvQuantSupported`).
|
|
15
|
+
* - A fused lib that lacks MTP / KV-quant / native tokenize is REFUSED by
|
|
16
|
+
* `supported()` → the engine raises LocalInferenceUnavailable. There is no
|
|
17
|
+
* libllama fallback and never an unoptimized fused loop.
|
|
18
|
+
*
|
|
19
|
+
* Tokenization runs over the fused handle's resident text vocab via ABI-v9
|
|
20
|
+
* `eliza_inference_tokenize`: the fused `create()` + first `llmStreamOpen`
|
|
21
|
+
* already made the text vocab resident, so no second model is loaded.
|
|
22
|
+
* `tokenizeSupported()` gates this; a pre-v9 lib without the symbol is refused.
|
|
23
|
+
*
|
|
24
|
+
* Lifecycle: one fused context per loaded model; `acquire()` builds it,
|
|
25
|
+
* `release()` tears it down. A throwing native free poisons the runtime so no
|
|
26
|
+
* new allocation happens over leaked resources.
|
|
27
|
+
*/
|
|
28
|
+
import type { BackendPlan } from "./backend";
|
|
29
|
+
import type { FfiBackendRuntime, FfiBackendSession } from "./ffi-streaming-backend";
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the on-disk path to the fused `libelizainference`. Precedence:
|
|
32
|
+
* 1. `ELIZA_INFERENCE_LIBRARY` — an explicit absolute path.
|
|
33
|
+
* 2. `<bundleRoot>/lib/<name>` — the bundle-local lib.
|
|
34
|
+
* 3. `ELIZA_INFERENCE_LIB_DIR/<name>` — an explicit lib directory.
|
|
35
|
+
* 4. `<stateDir>/local-inference/lib/<name>` — the default staging dir written
|
|
36
|
+
* by `scripts/stage-desktop-fused-lib.mjs`, so a staged desktop build is
|
|
37
|
+
* found with no env wiring.
|
|
38
|
+
* Returns null when none of the candidates exist on disk — `supported()` then
|
|
39
|
+
* reports unavailable and the engine raises LocalInferenceUnavailable.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveFusedLibraryPath(bundleRoot: string | null, env?: NodeJS.ProcessEnv): string | null;
|
|
42
|
+
export declare class DesktopFusedFfiBackendRuntime implements FfiBackendRuntime {
|
|
43
|
+
private active;
|
|
44
|
+
private poisonedError;
|
|
45
|
+
/** Cached `supported()` result so the engine gate and the dispatcher agree. */
|
|
46
|
+
private supportedCache;
|
|
47
|
+
/**
|
|
48
|
+
* Viable only when:
|
|
49
|
+
* - bun:ffi resolves on the current runtime,
|
|
50
|
+
* - the fused dylib is present AND reports ABI-v9 capability: the
|
|
51
|
+
* streaming-LLM surface, MTP, KV-cache quant, AND native
|
|
52
|
+
* tokenization (`eliza_inference_tokenize`).
|
|
53
|
+
* A pre-v9 fused lib reports the probes as unsupported → refused, and the
|
|
54
|
+
* engine raises LocalInferenceUnavailable. libllama has been retired; there
|
|
55
|
+
* is no fallback runtime and no tokenizer sidecar.
|
|
56
|
+
*/
|
|
57
|
+
supported(): boolean;
|
|
58
|
+
/** Clear the cached `supported()` result (tests / lib swaps). */
|
|
59
|
+
resetSupportedCache(): void;
|
|
60
|
+
private computeSupported;
|
|
61
|
+
acquire(plan: BackendPlan): Promise<FfiBackendSession>;
|
|
62
|
+
parallelSlots(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the LIVE session can describe images through the fused
|
|
65
|
+
* `eliza_inference_describe_image`. Mirrors the FfiStreamingBackend gate:
|
|
66
|
+
* true only when a session is bound and the fused lib exposes vision.
|
|
67
|
+
*/
|
|
68
|
+
visionSupported(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Whether the LIVE session can STREAM a vision describe token-by-token
|
|
71
|
+
* through `eliza_inference_describe_image_stream_open` + the existing
|
|
72
|
+
* `llmStreamNext` loop (ABI v13). A <=v12 lib reports false and the handler
|
|
73
|
+
* uses the buffered one-shot `describeImage` path.
|
|
74
|
+
*/
|
|
75
|
+
visionStreamSupported(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Vision describe through the fused mmproj path. Reuses the mtmd machinery
|
|
78
|
+
* linked for ASR over the bundle's text model + the passed mmproj projector.
|
|
79
|
+
* The `FfiStreamingBackend` forwards `describeImage`/`visionSupported` to this
|
|
80
|
+
* runtime by duck-typing.
|
|
81
|
+
*
|
|
82
|
+
* When `onTextChunk` is supplied AND the fused lib exposes ABI-v13 streaming
|
|
83
|
+
* vision, the description is decoded token-by-token: `describeImageStreamOpen`
|
|
84
|
+
* primes a stream with the image+prompt KV and the EXISTING `llmStreamNext`
|
|
85
|
+
* loop pulls tokens — the same machinery that streams chat text, so vision
|
|
86
|
+
* flows into the dashboard through one pipe. Otherwise it falls back to the
|
|
87
|
+
* buffered one-shot `eliza_inference_describe_image`.
|
|
88
|
+
*/
|
|
89
|
+
describeImage(args: {
|
|
90
|
+
imageBytes: Uint8Array;
|
|
91
|
+
mmprojPath: string;
|
|
92
|
+
prompt?: string;
|
|
93
|
+
maxTokens?: number;
|
|
94
|
+
temperature?: number;
|
|
95
|
+
signal?: AbortSignal;
|
|
96
|
+
onTextChunk?: (chunk: string) => void | Promise<void>;
|
|
97
|
+
maxTokensPerStep?: number;
|
|
98
|
+
}): Promise<{
|
|
99
|
+
text: string;
|
|
100
|
+
projectorMs?: number;
|
|
101
|
+
decodeMs?: number;
|
|
102
|
+
}>;
|
|
103
|
+
release(): Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Process singleton — the engine wires this as the sole `FfiBackendRuntime` for
|
|
107
|
+
* the dispatcher's `"llama-cpp"` slot. The ABI-v9 capability probes in
|
|
108
|
+
* `supported()` gate whether the fused lib serves text at all.
|
|
109
|
+
*/
|
|
110
|
+
export declare const desktopFusedFfiBackendRuntime: DesktopFusedFfiBackendRuntime;
|
|
111
|
+
//# sourceMappingURL=desktop-fused-ffi-backend-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop-fused-ffi-backend-runtime.d.ts","sourceRoot":"","sources":["../../src/services/desktop-fused-ffi-backend-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACX,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,yBAAyB,CAAC;AA6BjC;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,GAAG,IAAI,CAgBf;AAmBD,qBAAa,6BAA8B,YAAW,iBAAiB;IACtE,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,aAAa,CAAsB;IAC3C,+EAA+E;IAC/E,OAAO,CAAC,cAAc,CAAwB;IAE9C;;;;;;;;;OASG;IACH,SAAS,IAAI,OAAO;IAMpB,iEAAiE;IACjE,mBAAmB,IAAI,IAAI;IAI3B,OAAO,CAAC,gBAAgB;IAsClB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqF5D,aAAa,IAAI,MAAM;IAMvB;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAS1B;;;;;OAKG;IACH,qBAAqB,IAAI,OAAO;IAYhC;;;;;;;;;;;;OAYG;IACG,aAAa,CAAC,IAAI,EAAE;QACzB,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiFhE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB9B;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,+BACN,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device-bridge: agent-side half of the "inference on the user's phone,
|
|
3
|
+
* agent in a container" architecture.
|
|
4
|
+
*
|
|
5
|
+
* Multi-device aware. Any number of devices can dial in; each `generate`
|
|
6
|
+
* is routed to the highest-scoring connected device at call time. A phone
|
|
7
|
+
* and a Mac paired to the same agent → requests go to the Mac; when the
|
|
8
|
+
* Mac disconnects, new requests fall through to the phone automatically.
|
|
9
|
+
*
|
|
10
|
+
* Scoring (higher = preferred):
|
|
11
|
+
* - desktop / electrobun: 100 base
|
|
12
|
+
* - ios / android: 10 base
|
|
13
|
+
* - per GB of total RAM: +2
|
|
14
|
+
* - per GB of VRAM: +5 (dedicated GPU wins big)
|
|
15
|
+
* - has loaded the right model already: +50 (avoid a swap)
|
|
16
|
+
*
|
|
17
|
+
* Disconnect tolerance
|
|
18
|
+
* --------------------
|
|
19
|
+
* A pending request stays in `pendingGenerates` until either (a) a device
|
|
20
|
+
* (same or different) returns a matching correlation-id, or (b) the
|
|
21
|
+
* timeout fires. On any device (re)connect we re-route orphaned
|
|
22
|
+
* generates to the new best device.
|
|
23
|
+
*
|
|
24
|
+
* Durability
|
|
25
|
+
* ----------
|
|
26
|
+
* Pending requests are best-effort persisted to a JSON log under
|
|
27
|
+
* `$ELIZA_STATE_DIR/local-inference/pending-requests.json` so a brief
|
|
28
|
+
* agent restart doesn't lose the queue. Persistence is async and
|
|
29
|
+
* non-blocking — failures fall back to in-memory only.
|
|
30
|
+
*/
|
|
31
|
+
import type { Server as HttpServer } from "node:http";
|
|
32
|
+
import type { AgentRuntime } from "@elizaos/core";
|
|
33
|
+
import { type GenerationThroughput } from "@elizaos/shared/local-inference";
|
|
34
|
+
import type { LocalInferenceLoadArgs } from "./active-model";
|
|
35
|
+
interface DeviceCapabilities {
|
|
36
|
+
platform: "ios" | "android" | "web" | "electrobun" | "desktop";
|
|
37
|
+
deviceModel: string;
|
|
38
|
+
machineId?: string;
|
|
39
|
+
osVersion?: string;
|
|
40
|
+
isSimulator?: boolean;
|
|
41
|
+
totalRamGb: number;
|
|
42
|
+
availableRamGb?: number | null;
|
|
43
|
+
freeStorageGb?: number | null;
|
|
44
|
+
cpuCores: number;
|
|
45
|
+
gpu: {
|
|
46
|
+
backend: "metal" | "vulkan" | "gpu-delegate" | "cuda";
|
|
47
|
+
available: boolean;
|
|
48
|
+
totalVramGb?: number;
|
|
49
|
+
} | null;
|
|
50
|
+
gpuSupported?: boolean;
|
|
51
|
+
lowPowerMode?: boolean;
|
|
52
|
+
thermalState?: "nominal" | "fair" | "serious" | "critical" | "unknown";
|
|
53
|
+
mtpSupported?: boolean;
|
|
54
|
+
mtpReason?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface DeviceSummary {
|
|
57
|
+
deviceId: string;
|
|
58
|
+
capabilities: DeviceCapabilities;
|
|
59
|
+
loadedPath: string | null;
|
|
60
|
+
connectedSince: string;
|
|
61
|
+
score: number;
|
|
62
|
+
activeRequests: number;
|
|
63
|
+
isPrimary: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface DeviceBridgeStatus {
|
|
66
|
+
/** True if any device is currently connected. */
|
|
67
|
+
connected: boolean;
|
|
68
|
+
devices: DeviceSummary[];
|
|
69
|
+
/** Device id of the current best-score device, or null when none. */
|
|
70
|
+
primaryDeviceId: string | null;
|
|
71
|
+
/** Total generates/loads/unloads queued (either in-flight or awaiting a device). */
|
|
72
|
+
pendingRequests: number;
|
|
73
|
+
deviceId: string | null;
|
|
74
|
+
capabilities: DeviceCapabilities | null;
|
|
75
|
+
loadedPath: string | null;
|
|
76
|
+
connectedSince: string | null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* One on-device generation's measured resource signal, emitted to
|
|
80
|
+
* `subscribeGenerationMetrics` listeners after every successful `generateResult`.
|
|
81
|
+
* The Mobile Resource Workbench folds these into a `DeviceResourceMetrics`
|
|
82
|
+
* accumulator (prefill/decode tok/s, TTFT, per-tier aggregation). All
|
|
83
|
+
* throughput fields are `null` when the device could not measure the inputs.
|
|
84
|
+
*/
|
|
85
|
+
export interface DeviceGenerationMetrics {
|
|
86
|
+
deviceId: string;
|
|
87
|
+
platform: DeviceCapabilities["platform"] | null;
|
|
88
|
+
/** Device model identifier (e.g. `iPhone17,2`) for per-device baselines. */
|
|
89
|
+
deviceModel: string | null;
|
|
90
|
+
promptTokens: number;
|
|
91
|
+
outputTokens: number;
|
|
92
|
+
durationMs: number;
|
|
93
|
+
ttftMs: number | null;
|
|
94
|
+
throughput: GenerationThroughput;
|
|
95
|
+
}
|
|
96
|
+
export declare class DeviceBridge {
|
|
97
|
+
private readonly devices;
|
|
98
|
+
private wss;
|
|
99
|
+
private restored;
|
|
100
|
+
private readonly pendingLoads;
|
|
101
|
+
private readonly pendingUnloads;
|
|
102
|
+
private readonly pendingGenerates;
|
|
103
|
+
private readonly pendingEmbeds;
|
|
104
|
+
private readonly statusListeners;
|
|
105
|
+
private readonly generationMetricsListeners;
|
|
106
|
+
/** The most recent successful generation's metrics, or null. */
|
|
107
|
+
private lastGenerationMetrics;
|
|
108
|
+
/** Bounded ring buffer of recent generation metrics for the dev endpoint. */
|
|
109
|
+
private readonly recentGenerations;
|
|
110
|
+
private static readonly RECENT_GENERATIONS_CAP;
|
|
111
|
+
private readonly expectedPairingToken;
|
|
112
|
+
status(): DeviceBridgeStatus;
|
|
113
|
+
private countRouted;
|
|
114
|
+
subscribeStatus(listener: (status: DeviceBridgeStatus) => void): () => void;
|
|
115
|
+
private emitStatus;
|
|
116
|
+
/**
|
|
117
|
+
* Subscribe to per-generation throughput metrics. Fires once per successful
|
|
118
|
+
* on-device generation with the differenced prefill/decode tok/s. Returns an
|
|
119
|
+
* unsubscribe function.
|
|
120
|
+
*/
|
|
121
|
+
subscribeGenerationMetrics(listener: (metrics: DeviceGenerationMetrics) => void): () => void;
|
|
122
|
+
/** The most recent successful generation's measured metrics, or null. */
|
|
123
|
+
latestGenerationMetrics(): DeviceGenerationMetrics | null;
|
|
124
|
+
/** Most recent generation metrics (newest last), capped at `limit`. */
|
|
125
|
+
recentGenerationMetrics(limit?: number): DeviceGenerationMetrics[];
|
|
126
|
+
private emitGenerationMetrics;
|
|
127
|
+
attachToHttpServer(server: HttpServer): Promise<void>;
|
|
128
|
+
private handleConnection;
|
|
129
|
+
private onDeviceRegistered;
|
|
130
|
+
private onDeviceDisconnected;
|
|
131
|
+
private handleDeviceMessage;
|
|
132
|
+
private sendToDevice;
|
|
133
|
+
/** Highest-scoring connected device, optionally boosted for an already-loaded model. */
|
|
134
|
+
private pickBestDevice;
|
|
135
|
+
loadModel(args: LocalInferenceLoadArgs): Promise<void>;
|
|
136
|
+
unloadModel(): Promise<void>;
|
|
137
|
+
currentModelPath(): string | null;
|
|
138
|
+
embed(args: {
|
|
139
|
+
input: string;
|
|
140
|
+
}): Promise<{
|
|
141
|
+
embedding: number[];
|
|
142
|
+
tokens: number;
|
|
143
|
+
}>;
|
|
144
|
+
generate(args: {
|
|
145
|
+
prompt: string;
|
|
146
|
+
stopSequences?: string[];
|
|
147
|
+
maxTokens?: number;
|
|
148
|
+
temperature?: number;
|
|
149
|
+
cacheKey?: string;
|
|
150
|
+
}): Promise<string>;
|
|
151
|
+
private pendingLogPath;
|
|
152
|
+
/**
|
|
153
|
+
* Rewrite the pending-generate log. Called after every mutation to the
|
|
154
|
+
* pendingGenerates map. We only persist `generate` — loads/unloads are
|
|
155
|
+
* bound to a specific device's current state and aren't safely replayable
|
|
156
|
+
* across restart.
|
|
157
|
+
*/
|
|
158
|
+
private persistPendingGenerates;
|
|
159
|
+
/**
|
|
160
|
+
* On startup, read persisted pending requests back into memory. Their
|
|
161
|
+
* promises are gone (the original caller's process is dead) so they can
|
|
162
|
+
* only be resolved externally, so we re-queue them with a fresh timeout.
|
|
163
|
+
* The first connected device that can handle generation will process them.
|
|
164
|
+
* If nothing consumes them within the timeout they reject quietly.
|
|
165
|
+
*
|
|
166
|
+
* Stale entries older than 24h are purged rather than resurrected.
|
|
167
|
+
*/
|
|
168
|
+
private restorePendingGenerates;
|
|
169
|
+
}
|
|
170
|
+
export declare const deviceBridge: DeviceBridge;
|
|
171
|
+
/** Shape returned by `GET /api/dev/device-resource-metrics`. */
|
|
172
|
+
export interface DeviceResourceMetricsDevPayload {
|
|
173
|
+
generatedAtEpochMs: number;
|
|
174
|
+
status: DeviceBridgeStatus;
|
|
175
|
+
latest: DeviceGenerationMetrics | null;
|
|
176
|
+
recentGenerations: DeviceGenerationMetrics[];
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Build the JSON body for `GET /api/dev/device-resource-metrics` — the Mobile
|
|
180
|
+
* Resource Workbench reads this to harvest per-generation prefill/decode tok/s
|
|
181
|
+
* (already differenced by the bridge) without driving the device WebView.
|
|
182
|
+
*/
|
|
183
|
+
export declare function buildDeviceResourceMetricsDevPayload(bridge?: DeviceBridge, limit?: number): DeviceResourceMetricsDevPayload;
|
|
184
|
+
export declare function registerDeviceBridgeLoader(runtime: AgentRuntime & {
|
|
185
|
+
registerService?: (name: string, impl: unknown) => unknown;
|
|
186
|
+
}): void;
|
|
187
|
+
export {};
|
|
188
|
+
//# sourceMappingURL=device-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-bridge.d.ts","sourceRoot":"","sources":["../../src/services/device-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeviceResourceMetrics — on-device resource profiling accumulator.
|
|
3
|
+
*
|
|
4
|
+
* Sibling to `VoiceRunMetrics` (`latency-trace.ts`), generalised for the Mobile
|
|
5
|
+
* Resource Workbench (issue #8800). Where `VoiceRunMetrics` accumulates the
|
|
6
|
+
* non-latency signals of a *host-side* voice run (server RSS, MTP accept-rate),
|
|
7
|
+
* this accumulates the signals of an *on-device* agent run:
|
|
8
|
+
*
|
|
9
|
+
* - per-generation **prefill / decode / combined tokens-per-second** + TTFT
|
|
10
|
+
* (fed from the device-bridge `computeGenerationThroughput` differencing),
|
|
11
|
+
* - **peak + steady resident memory (RSS)** with an RSS-leak flag,
|
|
12
|
+
* - **battery drain** (% and, where the OS exposes a charge counter, µAh),
|
|
13
|
+
* - a **thermal-state timeline** + transition count,
|
|
14
|
+
* - **low-power-mode transitions**.
|
|
15
|
+
*
|
|
16
|
+
* Every field is optional on input and every output is `null` when nothing
|
|
17
|
+
* could be measured — a quantity the device could not report is recorded as
|
|
18
|
+
* missing, never as a fabricated `0` (AGENTS.md §3 / §7). The workbench writes
|
|
19
|
+
* `summary()` to `results/<workload>/latest.json`.
|
|
20
|
+
*/
|
|
21
|
+
import { type HistogramSummary } from "./latency-trace";
|
|
22
|
+
export type DeviceThermalState = "nominal" | "fair" | "serious" | "critical" | "unknown";
|
|
23
|
+
/** A single generation's differenced throughput (see `throughput.ts`). */
|
|
24
|
+
export interface GenerationObservation {
|
|
25
|
+
prefillTokensPerSecond?: number | null;
|
|
26
|
+
decodeTokensPerSecond?: number | null;
|
|
27
|
+
combinedTokensPerSecond?: number | null;
|
|
28
|
+
ttftMs?: number | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A sampled device-resource snapshot, taken on an interval across a workload.
|
|
32
|
+
* Sourced from the native `getResourceSnapshot` bridge (iOS/Android) and/or
|
|
33
|
+
* host-side OS probes (`adb dumpsys`, `/proc`).
|
|
34
|
+
*/
|
|
35
|
+
export interface ResourceSample {
|
|
36
|
+
/** Timestamp in ms (epoch or run-relative); orders the timeline + drain rate. */
|
|
37
|
+
atMs: number;
|
|
38
|
+
/** Resident set size in MB (peak / steady / leak tracking). */
|
|
39
|
+
residentMemoryMb?: number | null;
|
|
40
|
+
/** Available device RAM in MB at sample time. */
|
|
41
|
+
availableRamMb?: number | null;
|
|
42
|
+
/** Battery level 0..100. */
|
|
43
|
+
batteryLevelPct?: number | null;
|
|
44
|
+
/** Cumulative charge counter in µAh (Android `BATTERY_PROPERTY_CHARGE_COUNTER`). */
|
|
45
|
+
batteryChargeMicroAmpHours?: number | null;
|
|
46
|
+
/** Whether the device was charging at sample time. */
|
|
47
|
+
isCharging?: boolean | null;
|
|
48
|
+
thermalState?: DeviceThermalState | null;
|
|
49
|
+
lowPowerMode?: boolean | null;
|
|
50
|
+
/** Cumulative process CPU time in ms, when the platform exposes it. */
|
|
51
|
+
cpuTimeMs?: number | null;
|
|
52
|
+
}
|
|
53
|
+
export interface RssSummary {
|
|
54
|
+
firstMb: number | null;
|
|
55
|
+
lastMb: number | null;
|
|
56
|
+
peakMb: number | null;
|
|
57
|
+
/** Median RSS over the back half of the run (warm/steady state). */
|
|
58
|
+
steadyMb: number | null;
|
|
59
|
+
samples: number;
|
|
60
|
+
/** lastMb − firstMb, or null. */
|
|
61
|
+
growthMb: number | null;
|
|
62
|
+
/** True when RSS is monotone non-decreasing across ≥4 samples and grew past the threshold. */
|
|
63
|
+
leakSuspected: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface BatterySummary {
|
|
66
|
+
firstPct: number | null;
|
|
67
|
+
lastPct: number | null;
|
|
68
|
+
/** firstPct − lastPct (positive = battery consumed), or null. */
|
|
69
|
+
drainPct: number | null;
|
|
70
|
+
samples: number;
|
|
71
|
+
/** True if any sample reported charging (drain numbers are then unreliable). */
|
|
72
|
+
chargingObserved: boolean;
|
|
73
|
+
/** firstCharge − lastCharge in µAh (positive = consumed), when the counter is present. */
|
|
74
|
+
energyMicroAmpHoursDelta: number | null;
|
|
75
|
+
/** Wall-clock span across battery samples in ms, or null. */
|
|
76
|
+
durationMs: number | null;
|
|
77
|
+
}
|
|
78
|
+
export interface ThermalTransition {
|
|
79
|
+
atMs: number;
|
|
80
|
+
state: DeviceThermalState;
|
|
81
|
+
}
|
|
82
|
+
export interface ThermalSummary {
|
|
83
|
+
samples: number;
|
|
84
|
+
initialState: DeviceThermalState | null;
|
|
85
|
+
/** Worst (highest-severity) known state observed. */
|
|
86
|
+
maxState: DeviceThermalState | null;
|
|
87
|
+
/** State-change timeline (first known state + every change after). */
|
|
88
|
+
transitions: ThermalTransition[];
|
|
89
|
+
transitionCount: number;
|
|
90
|
+
/** Fraction of known-state samples at serious|critical, or null when no known state. */
|
|
91
|
+
fractionThrottled: number | null;
|
|
92
|
+
}
|
|
93
|
+
export interface LowPowerSummary {
|
|
94
|
+
samples: number;
|
|
95
|
+
everEnabled: boolean;
|
|
96
|
+
transitionCount: number;
|
|
97
|
+
}
|
|
98
|
+
export interface DeviceResourceSummary {
|
|
99
|
+
generations: number;
|
|
100
|
+
resourceSamples: number;
|
|
101
|
+
prefillTokensPerSecond: HistogramSummary;
|
|
102
|
+
decodeTokensPerSecond: HistogramSummary;
|
|
103
|
+
combinedTokensPerSecond: HistogramSummary;
|
|
104
|
+
ttftMs: HistogramSummary;
|
|
105
|
+
rss: RssSummary;
|
|
106
|
+
battery: BatterySummary;
|
|
107
|
+
thermal: ThermalSummary;
|
|
108
|
+
lowPowerMode: LowPowerSummary;
|
|
109
|
+
}
|
|
110
|
+
export declare class DeviceResourceMetrics {
|
|
111
|
+
private readonly opts;
|
|
112
|
+
private generations;
|
|
113
|
+
private readonly prefillHist;
|
|
114
|
+
private readonly decodeHist;
|
|
115
|
+
private readonly combinedHist;
|
|
116
|
+
private readonly ttftHist;
|
|
117
|
+
private readonly rssSamples;
|
|
118
|
+
private resourceSamples;
|
|
119
|
+
private firstBattery;
|
|
120
|
+
private lastBattery;
|
|
121
|
+
private firstChargeUah;
|
|
122
|
+
private lastChargeUah;
|
|
123
|
+
private batterySampleCount;
|
|
124
|
+
private chargingObserved;
|
|
125
|
+
private thermalSampleCount;
|
|
126
|
+
private thermalInitial;
|
|
127
|
+
private thermalLast;
|
|
128
|
+
private thermalMaxRank;
|
|
129
|
+
private thermalMaxState;
|
|
130
|
+
private thermalThrottledCount;
|
|
131
|
+
private thermalKnownCount;
|
|
132
|
+
private readonly thermalTransitions;
|
|
133
|
+
private lowPowerSampleCount;
|
|
134
|
+
private lowPowerEver;
|
|
135
|
+
private lowPowerLast;
|
|
136
|
+
private lowPowerTransitions;
|
|
137
|
+
constructor(opts?: {
|
|
138
|
+
leakGrowthMbThreshold?: number;
|
|
139
|
+
});
|
|
140
|
+
/** Record one generation's differenced throughput. */
|
|
141
|
+
recordGeneration(obs: GenerationObservation): void;
|
|
142
|
+
/** Record one sampled device-resource snapshot. */
|
|
143
|
+
recordResourceSample(sample: ResourceSample): void;
|
|
144
|
+
private rssSummary;
|
|
145
|
+
private batterySummary;
|
|
146
|
+
private thermalSummary;
|
|
147
|
+
summary(): DeviceResourceSummary;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=device-resource-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-resource-metrics.d.ts","sourceRoot":"","sources":["../../src/services/device-resource-metrics.ts"],"names":[],"mappings":"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"}
|