@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,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* End-to-end voice-loop latency tracing.
|
|
3
|
+
*
|
|
4
|
+
* One `LatencyTrace` per voice turn — a span recorder with named
|
|
5
|
+
* checkpoints from "user makes a sound" to "agent's first audio plays".
|
|
6
|
+
* The checkpoint set is fixed (`VOICE_CHECKPOINTS`) and ordered; each
|
|
7
|
+
* checkpoint is recorded at most once per turn. Missing checkpoints are
|
|
8
|
+
* surfaced as missing-checkpoint state — never synthesized — and derived
|
|
9
|
+
* metrics that depend on a missing checkpoint stay `null` (AGENTS.md §3 / §7:
|
|
10
|
+
* a missing measurement is recorded as missing, not faked).
|
|
11
|
+
*
|
|
12
|
+
* Ownership / lifecycle:
|
|
13
|
+
* - The turn controller (`voice/turn-controller.ts`, W9) is the natural
|
|
14
|
+
* owner of the per-turn tracer: it calls `tracer.beginTurn({...})` when
|
|
15
|
+
* a turn opens and `tracer.endTurn(turnId)` when it finalizes/aborts.
|
|
16
|
+
* Until that lands, callers can use the module-level
|
|
17
|
+
* `voiceLatencyTracer` singleton + the `markVoiceLatency()` helper —
|
|
18
|
+
* the singleton lazily opens a turn keyed by `roomId` on first mark.
|
|
19
|
+
* - Components that produce a checkpoint either (a) hold a `tracer` and
|
|
20
|
+
* call `tracer.mark(turnId, checkpoint)`, or (b) call the context-free
|
|
21
|
+
* `markVoiceLatency(roomId, checkpoint)` helper. `bindVadDetector()`
|
|
22
|
+
* bridges a `VadEventSource` onto the tracer without touching `vad.ts`.
|
|
23
|
+
*
|
|
24
|
+
* Hook points (where each checkpoint is meant to be recorded):
|
|
25
|
+
* - `peer-utterance-end` — (DUET ONLY) the producing agent's
|
|
26
|
+
* scheduler drained its last PCM chunk into
|
|
27
|
+
* the cross ring — the headline `t0` for a
|
|
28
|
+
* two-agents-talking run (`voice-duet.mjs`).
|
|
29
|
+
* Not recorded in the single-agent path.
|
|
30
|
+
* - `vad-trigger` — `VadDetector` energy-rise edge / the
|
|
31
|
+
* turn controller's wake instant.
|
|
32
|
+
* - `vad-speech-start` — `VadDetector` Silero speech-start.
|
|
33
|
+
* - `prewarm-fired` — the turn controller (W9) when it calls
|
|
34
|
+
* W6's `prewarmConversation`.
|
|
35
|
+
* - `asr-first-partial` — `StreamingTranscriber` first `partial`.
|
|
36
|
+
* - `asr-final` — `StreamingTranscriber` `final`.
|
|
37
|
+
* - `llm-first-token` — the engine generate path's first
|
|
38
|
+
* `onTextChunk` (W4).
|
|
39
|
+
* - `llm-first-replytext-char` — `StructuredFieldStreamExtractor`'s
|
|
40
|
+
* `onFieldStart("replyText")`.
|
|
41
|
+
* - `replyText-first-emotion-tag` — the field extractor / `parseExpressiveTags`
|
|
42
|
+
* on the first inline expressive tag (`[happy]`
|
|
43
|
+
* …) in `replyText` — emotion-markup overhead,
|
|
44
|
+
* measured the way `envelopeToReplyTextMs`
|
|
45
|
+
* measures envelope overhead.
|
|
46
|
+
* - `phrase-1-to-tts` — the scheduler/chunker (W9) on the first
|
|
47
|
+
* phrase handed to the TTS backend.
|
|
48
|
+
* - `tts-first-audio-chunk` — the TTS backend's first PCM chunk (W7).
|
|
49
|
+
* - `audio-first-played` — the audio sink on the first written
|
|
50
|
+
* sample (W9/W13) — single-agent path.
|
|
51
|
+
* - `audio-first-into-peer-ring` — (DUET ONLY) the responding agent's first
|
|
52
|
+
* TTS PCM chunk landed in the peer's ring
|
|
53
|
+
* (the duet replacement for
|
|
54
|
+
* `audio-first-played` — no speakers).
|
|
55
|
+
*
|
|
56
|
+
* Logger only, `[LatencyTracer]` prefix (AGENTS.md §9).
|
|
57
|
+
*/
|
|
58
|
+
import type { VadEventSource } from "./voice/types";
|
|
59
|
+
/**
|
|
60
|
+
* The fixed, ordered set of latency checkpoints. The recorder enforces the
|
|
61
|
+
* order is non-decreasing in wall-clock terms only loosely — a checkpoint
|
|
62
|
+
* arriving "out of order" (a later checkpoint with an earlier timestamp) is
|
|
63
|
+
* recorded as-is and flagged; we never reorder or clamp.
|
|
64
|
+
*/
|
|
65
|
+
export declare const VOICE_CHECKPOINTS: readonly ["peer-utterance-end", "vad-trigger", "vad-speech-start", "prewarm-fired", "asr-first-partial", "asr-final", "llm-first-token", "llm-first-replytext-char", "replyText-first-emotion-tag", "phrase-1-to-tts", "tts-first-audio-chunk", "audio-first-played", "audio-first-into-peer-ring"];
|
|
66
|
+
export type VoiceCheckpoint = (typeof VOICE_CHECKPOINTS)[number];
|
|
67
|
+
/** The single-agent "core" checkpoint set — every checkpoint that is NOT
|
|
68
|
+
* optional. A trace is `complete` iff every core checkpoint was recorded. */
|
|
69
|
+
export declare const CORE_VOICE_CHECKPOINTS: ("peer-utterance-end" | "vad-trigger" | "vad-speech-start" | "prewarm-fired" | "asr-first-partial" | "asr-final" | "llm-first-token" | "llm-first-replytext-char" | "replyText-first-emotion-tag" | "phrase-1-to-tts" | "tts-first-audio-chunk" | "audio-first-played" | "audio-first-into-peer-ring")[];
|
|
70
|
+
/**
|
|
71
|
+
* Derived per-turn metrics. Every field is the duration between two
|
|
72
|
+
* checkpoints; `null` whenever either endpoint checkpoint is missing for
|
|
73
|
+
* the turn — there is no fallback estimate.
|
|
74
|
+
*/
|
|
75
|
+
export interface LatencyDerived {
|
|
76
|
+
/** vad-trigger → llm-first-token (time-to-first-token). */
|
|
77
|
+
ttftMs: number | null;
|
|
78
|
+
/** vad-trigger → tts-first-audio-chunk (time-to-first-audio). */
|
|
79
|
+
ttfaMs: number | null;
|
|
80
|
+
/** vad-trigger → audio-first-played (time-to-audio-played; the headline). */
|
|
81
|
+
ttapMs: number | null;
|
|
82
|
+
/** vad-speech-start → asr-final (ASR finalization latency). */
|
|
83
|
+
asrFinalLatencyMs: number | null;
|
|
84
|
+
/** vad-trigger → asr-first-partial (how fast the first words appear). */
|
|
85
|
+
asrFirstPartialMs: number | null;
|
|
86
|
+
/** vad-trigger → prewarm-fired (how fast the prewarm kicks off). */
|
|
87
|
+
prewarmLatencyMs: number | null;
|
|
88
|
+
/** asr-final → llm-first-token (LLM latency once the prompt is complete). */
|
|
89
|
+
llmFirstTokenAfterAsrMs: number | null;
|
|
90
|
+
/** llm-first-token → llm-first-replytext-char (envelope-skip overhead). */
|
|
91
|
+
envelopeToReplyTextMs: number | null;
|
|
92
|
+
/** llm-first-replytext-char → phrase-1-to-tts (chunker hand-off lag). */
|
|
93
|
+
replyTextToPhrase1Ms: number | null;
|
|
94
|
+
/** phrase-1-to-tts → tts-first-audio-chunk (TTS first-chunk latency). */
|
|
95
|
+
ttsFirstChunkMs: number | null;
|
|
96
|
+
/** tts-first-audio-chunk → audio-first-played (sink/playback lag). */
|
|
97
|
+
audioSinkLatencyMs: number | null;
|
|
98
|
+
/**
|
|
99
|
+
* peer-utterance-end → llm-first-token — **THE headline number** for the
|
|
100
|
+
* two-agents-talking benchmark: how long after the peer stopped speaking
|
|
101
|
+
* the responding agent emits its first token (TTFT-from-last-utterance).
|
|
102
|
+
*/
|
|
103
|
+
ttftFromUtteranceEndMs: number | null;
|
|
104
|
+
/** peer-utterance-end → llm-first-replytext-char. */
|
|
105
|
+
replyTextFirstCharFromUtteranceEndMs: number | null;
|
|
106
|
+
/** peer-utterance-end → tts-first-audio-chunk. */
|
|
107
|
+
firstTtsPcmFromUtteranceEndMs: number | null;
|
|
108
|
+
/**
|
|
109
|
+
* peer-utterance-end → audio-first-into-peer-ring — the **duet round-trip**:
|
|
110
|
+
* peer stops speaking → responding agent's first audio is back in the
|
|
111
|
+
* peer's ear (the `duet_round_trip_ms` gate reads `.p50` of this).
|
|
112
|
+
*/
|
|
113
|
+
firstAudioIntoPeerRingFromUtteranceEndMs: number | null;
|
|
114
|
+
/** llm-first-token → replyText-first-emotion-tag (emotion-markup overhead);
|
|
115
|
+
* `null` when the model emitted no inline expressive tag. */
|
|
116
|
+
emotionTagOverheadMs: number | null;
|
|
117
|
+
}
|
|
118
|
+
/** The derived-metric keys, in display order. */
|
|
119
|
+
export declare const LATENCY_DERIVED_KEYS: readonly ["ttftFromUtteranceEndMs", "firstAudioIntoPeerRingFromUtteranceEndMs", "ttftMs", "ttfaMs", "ttapMs", "asrFinalLatencyMs", "asrFirstPartialMs", "prewarmLatencyMs", "llmFirstTokenAfterAsrMs", "envelopeToReplyTextMs", "emotionTagOverheadMs", "replyTextToPhrase1Ms", "ttsFirstChunkMs", "audioSinkLatencyMs", "ttftFromUtteranceEndMs", "replyTextFirstCharFromUtteranceEndMs", "firstTtsPcmFromUtteranceEndMs", "firstAudioIntoPeerRingFromUtteranceEndMs", "emotionTagOverheadMs"];
|
|
120
|
+
export type LatencyDerivedKey = (typeof LATENCY_DERIVED_KEYS)[number];
|
|
121
|
+
export interface LatencyCheckpoint {
|
|
122
|
+
name: VoiceCheckpoint;
|
|
123
|
+
/** Wall-clock ms since the turn's `t0` (the first checkpoint recorded). */
|
|
124
|
+
tMs: number;
|
|
125
|
+
/** Absolute epoch ms when the checkpoint was recorded. */
|
|
126
|
+
atEpochMs: number;
|
|
127
|
+
}
|
|
128
|
+
export interface LatencyTrace {
|
|
129
|
+
turnId: string;
|
|
130
|
+
roomId: string | null;
|
|
131
|
+
/** Epoch ms of the first checkpoint recorded for this turn (the t=0 ref). */
|
|
132
|
+
t0EpochMs: number;
|
|
133
|
+
/** Epoch ms when `endTurn` was called, or null while still open. */
|
|
134
|
+
closedAtEpochMs: number | null;
|
|
135
|
+
checkpoints: LatencyCheckpoint[];
|
|
136
|
+
derived: LatencyDerived;
|
|
137
|
+
/** Names of checkpoints that were never recorded for this turn. */
|
|
138
|
+
missing: VoiceCheckpoint[];
|
|
139
|
+
/** True when every checkpoint in `VOICE_CHECKPOINTS` was recorded. */
|
|
140
|
+
complete: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Non-empty when the recorder saw something it could not reconcile —
|
|
143
|
+
* a duplicate mark, an out-of-order timestamp, an unknown checkpoint.
|
|
144
|
+
* Diagnostic only; the trace is still emitted.
|
|
145
|
+
*/
|
|
146
|
+
anomalies: string[];
|
|
147
|
+
}
|
|
148
|
+
export interface HistogramSummary {
|
|
149
|
+
count: number;
|
|
150
|
+
p50: number | null;
|
|
151
|
+
p90: number | null;
|
|
152
|
+
p99: number | null;
|
|
153
|
+
min: number | null;
|
|
154
|
+
max: number | null;
|
|
155
|
+
mean: number | null;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Bounded-sample running histogram for one derived metric. Keeps the last
|
|
159
|
+
* `capacity` samples (FIFO) and computes percentiles on demand. Bounded so
|
|
160
|
+
* a long-running process does not grow without limit.
|
|
161
|
+
*
|
|
162
|
+
* Exported so sibling accumulators (e.g. the Mobile Resource Workbench's
|
|
163
|
+
* `DeviceResourceMetrics`) reuse the same percentile logic instead of
|
|
164
|
+
* re-implementing it.
|
|
165
|
+
*/
|
|
166
|
+
export declare class BoundedHistogram {
|
|
167
|
+
private readonly capacity;
|
|
168
|
+
private readonly samples;
|
|
169
|
+
constructor(capacity: number);
|
|
170
|
+
add(value: number): void;
|
|
171
|
+
summary(): HistogramSummary;
|
|
172
|
+
}
|
|
173
|
+
export interface TracerOptions {
|
|
174
|
+
/** Max number of completed traces to retain in the ring. Default 64. */
|
|
175
|
+
ringCapacity?: number;
|
|
176
|
+
/** Max samples per derived-metric histogram. Default 256. */
|
|
177
|
+
histogramCapacity?: number;
|
|
178
|
+
/**
|
|
179
|
+
* Max number of concurrently-open turns. A new `beginTurn` past this cap
|
|
180
|
+
* evicts the oldest still-open turn (it is closed and emitted with whatever
|
|
181
|
+
* checkpoints it had). Guards against a leaked turn never being closed.
|
|
182
|
+
* Default 16.
|
|
183
|
+
*/
|
|
184
|
+
maxOpenTurns?: number;
|
|
185
|
+
}
|
|
186
|
+
export declare class EndToEndLatencyTracer {
|
|
187
|
+
private readonly ring;
|
|
188
|
+
private readonly open;
|
|
189
|
+
private readonly byRoom;
|
|
190
|
+
private readonly histograms;
|
|
191
|
+
private readonly ringCapacity;
|
|
192
|
+
private readonly histogramCapacity;
|
|
193
|
+
private readonly maxOpenTurns;
|
|
194
|
+
constructor(opts?: TracerOptions);
|
|
195
|
+
/**
|
|
196
|
+
* Open a new turn. Returns the `turnId`. If `roomId` is given, subsequent
|
|
197
|
+
* context-free marks for that room route to this turn until it is closed.
|
|
198
|
+
*/
|
|
199
|
+
beginTurn(args?: {
|
|
200
|
+
turnId?: string;
|
|
201
|
+
roomId?: string | null;
|
|
202
|
+
}): string;
|
|
203
|
+
/** Resolve (or lazily open) a turn for a roomId. Used by the helper. */
|
|
204
|
+
turnForRoom(roomId: string): string;
|
|
205
|
+
/**
|
|
206
|
+
* Record a checkpoint on an open turn. No-op (with a warning) if the turn
|
|
207
|
+
* is unknown or already closed — a late mark on a finalized turn is a
|
|
208
|
+
* caller bug, not something to retroactively patch into history.
|
|
209
|
+
*/
|
|
210
|
+
mark(turnId: string, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
|
|
211
|
+
/** Convenience: mark a checkpoint by roomId, opening a turn if needed. */
|
|
212
|
+
markByRoom(roomId: string, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
|
|
213
|
+
/**
|
|
214
|
+
* Close an open turn: snapshot it into a `LatencyTrace`, push to the ring
|
|
215
|
+
* (evicting the oldest), and fold its derived metrics into the histograms.
|
|
216
|
+
* Idempotent for an unknown turnId. Returns the emitted trace (or null if
|
|
217
|
+
* the turn was unknown).
|
|
218
|
+
*/
|
|
219
|
+
endTurn(turnId: string): LatencyTrace | null;
|
|
220
|
+
/** A read-only snapshot of an open turn (does not close it). */
|
|
221
|
+
peekTurn(turnId: string): LatencyTrace | null;
|
|
222
|
+
/** The most recent `n` completed traces, newest last. */
|
|
223
|
+
recentTraces(n?: number): LatencyTrace[];
|
|
224
|
+
/** Per-derived-metric histogram summaries over the retained sample. */
|
|
225
|
+
histogramSummaries(): Record<LatencyDerivedKey, HistogramSummary>;
|
|
226
|
+
/** Drop all retained traces, histograms, and open turns. */
|
|
227
|
+
reset(): void;
|
|
228
|
+
/** Number of turns currently open (un-closed). */
|
|
229
|
+
get openTurnCount(): number;
|
|
230
|
+
/**
|
|
231
|
+
* Bridge a VAD event source onto this tracer: subscribes to the
|
|
232
|
+
* `VadEvent` stream and emits `vad-trigger` + `vad-speech-start` on the
|
|
233
|
+
* Silero rising edge (the earliest reliable per-turn `t0`). Returns the
|
|
234
|
+
* unsubscribe function. This is the documented seam that lets the tracer
|
|
235
|
+
* hook the VAD without editing `voice/vad.ts` — the true energy-rise
|
|
236
|
+
* "wake" instant is owned by the turn controller (W9), which calls
|
|
237
|
+
* `mark(turnId, "vad-trigger")` directly; this bridge is the fallback for
|
|
238
|
+
* plain VAD-only setups.
|
|
239
|
+
*/
|
|
240
|
+
bindVadDetector(source: VadEventSource, args?: {
|
|
241
|
+
roomId?: string | null;
|
|
242
|
+
onTurnOpen?: (turnId: string) => void;
|
|
243
|
+
}): () => void;
|
|
244
|
+
private snapshotTurn;
|
|
245
|
+
private computeDerived;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Process-wide tracer. The turn controller (W9) owns per-turn lifecycle
|
|
249
|
+
* via `beginTurn` / `endTurn`; components that only know a `roomId` use
|
|
250
|
+
* `markVoiceLatency(roomId, checkpoint)` which routes through `markByRoom`.
|
|
251
|
+
* The dev endpoint (`GET /api/dev/voice-latency`) reads this singleton.
|
|
252
|
+
*/
|
|
253
|
+
export declare const voiceLatencyTracer: EndToEndLatencyTracer;
|
|
254
|
+
/**
|
|
255
|
+
* Record a checkpoint on the process-wide tracer, keyed by `roomId`. Opens
|
|
256
|
+
* a turn for that room on first call. No-op-safe — instrumentation must
|
|
257
|
+
* never throw into the voice loop. This is the seam every component (VAD,
|
|
258
|
+
* turn controller, engine, field extractor, chunker, TTS backend, audio
|
|
259
|
+
* sink) can call without threading a tracer reference.
|
|
260
|
+
*/
|
|
261
|
+
export declare function markVoiceLatency(roomId: string | null | undefined, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
|
|
262
|
+
/** Close the process-wide tracer's turn for a roomId, returning the trace. */
|
|
263
|
+
export declare function endVoiceLatencyTurn(roomId: string): LatencyTrace | null;
|
|
264
|
+
export interface VoiceLatencyDevPayload {
|
|
265
|
+
generatedAtEpochMs: number;
|
|
266
|
+
/** Checkpoint names, in canonical order — so consumers can render headers. */
|
|
267
|
+
checkpoints: ReadonlyArray<VoiceCheckpoint>;
|
|
268
|
+
derivedKeys: ReadonlyArray<LatencyDerivedKey>;
|
|
269
|
+
openTurnCount: number;
|
|
270
|
+
traces: LatencyTrace[];
|
|
271
|
+
histograms: Record<LatencyDerivedKey, HistogramSummary>;
|
|
272
|
+
}
|
|
273
|
+
/** Build the JSON body for `GET /api/dev/voice-latency`. */
|
|
274
|
+
export declare function buildVoiceLatencyDevPayload(tracer?: EndToEndLatencyTracer, limit?: number): VoiceLatencyDevPayload;
|
|
275
|
+
/** A per-turn observation fed to `VoiceRunMetrics.recordTurn`. Every field is
|
|
276
|
+
* optional — a turn that couldn't measure a quantity records it as missing,
|
|
277
|
+
* never as a fabricated zero (AGENTS.md §3 / §7). */
|
|
278
|
+
export interface VoiceTurnMetrics {
|
|
279
|
+
/** MTP drafter token-acceptance rate (n_drafted_accepted / n_drafted)
|
|
280
|
+
* for this turn's generation, from the llama-server `/metrics` deltas. */
|
|
281
|
+
mtpAcceptRate?: number | null;
|
|
282
|
+
/** Tokens accepted from the drafter this turn (for an aggregate accept-rate
|
|
283
|
+
* that weights by token count, not turn count). */
|
|
284
|
+
mtpAccepted?: number | null;
|
|
285
|
+
/** Tokens drafted this turn. */
|
|
286
|
+
mtpDrafted?: number | null;
|
|
287
|
+
/** Structured-decode token-savings % for this turn — tokens the grammar
|
|
288
|
+
* force-filled ÷ tokens that would otherwise have been generated, ×100
|
|
289
|
+
* (WS-4's `guided_decode_token_bench.mjs` counter; ≈28% aggregate forced
|
|
290
|
+
* on the synthetic action set). */
|
|
291
|
+
structuredDecodeTokenSavingsPct?: number | null;
|
|
292
|
+
/** Decode throughput (tokens / second) for this turn's generation. */
|
|
293
|
+
tokensPerSecond?: number | null;
|
|
294
|
+
/** Server resident-set high-water mark in MB at the end of this turn
|
|
295
|
+
* (`VmHWM` from `/proc/<pid>/status`). */
|
|
296
|
+
serverRssMb?: number | null;
|
|
297
|
+
}
|
|
298
|
+
export interface VoiceRunMetricsSummary {
|
|
299
|
+
turns: number;
|
|
300
|
+
/** MTP accept-rate, token-weighted across the run (Σaccepted / Σdrafted);
|
|
301
|
+
* `null` when nothing was drafted / no drafter present. */
|
|
302
|
+
mtpAcceptRate: number | null;
|
|
303
|
+
mtpAccepted: number;
|
|
304
|
+
mtpDrafted: number;
|
|
305
|
+
/** Per-turn accept-rate histogram (p50/p90/p99 etc. — bounded sample). */
|
|
306
|
+
mtpAcceptRateHistogram: HistogramSummary;
|
|
307
|
+
/** Mean / histogram of the structured-decode token-savings %. */
|
|
308
|
+
structuredDecodeTokenSavingsPct: HistogramSummary;
|
|
309
|
+
/** Mean / histogram of decode tok/s. */
|
|
310
|
+
tokensPerSecond: HistogramSummary;
|
|
311
|
+
/** Server RSS over the run: first / last / max in MB + the `leakSuspected`
|
|
312
|
+
* flag (true when RSS is monotone non-decreasing across ≥4 turns and grew
|
|
313
|
+
* by more than `leakGrowthMbThreshold`). */
|
|
314
|
+
rss: {
|
|
315
|
+
firstMb: number | null;
|
|
316
|
+
lastMb: number | null;
|
|
317
|
+
maxMb: number | null;
|
|
318
|
+
samples: number;
|
|
319
|
+
leakSuspected: boolean;
|
|
320
|
+
growthMb: number | null;
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Accumulates the non-latency signals over a long voice run (the duet harness
|
|
325
|
+
* feeds it per-turn). Sibling to `EndToEndLatencyTracer` (which is per-turn
|
|
326
|
+
* spans only). The duet bench report (`voice-duet-bench-<model>.json`) writes
|
|
327
|
+
* `summary()` next to the latency histograms; `eliza1_gates_collect.mjs`
|
|
328
|
+
* ingests the gate-named fields.
|
|
329
|
+
*/
|
|
330
|
+
export declare class VoiceRunMetrics {
|
|
331
|
+
private readonly opts;
|
|
332
|
+
private turns;
|
|
333
|
+
private mtpAccepted;
|
|
334
|
+
private mtpDrafted;
|
|
335
|
+
private readonly acceptRateHist;
|
|
336
|
+
private readonly savingsHist;
|
|
337
|
+
private readonly tokSecHist;
|
|
338
|
+
private readonly rssSamples;
|
|
339
|
+
constructor(opts?: {
|
|
340
|
+
leakGrowthMbThreshold?: number;
|
|
341
|
+
});
|
|
342
|
+
recordTurn(m: VoiceTurnMetrics): void;
|
|
343
|
+
summary(): VoiceRunMetricsSummary;
|
|
344
|
+
reset(): void;
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=latency-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latency-trace.d.ts","sourceRoot":"","sources":["../../src/services/latency-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host → fused-lib target resolution for bundle delivery (#9105 / local-
|
|
3
|
+
* inference).
|
|
4
|
+
*
|
|
5
|
+
* An Eliza-1 bundle's `files.lib[]` carries the fused `libelizainference` SET
|
|
6
|
+
* (the fused lib + its ggml/llama/mtmd sibling backends) per platform `target`.
|
|
7
|
+
* The downloader fetches ONLY the set matching the host into `<bundleRoot>/lib/`,
|
|
8
|
+
* which the desktop FFI runtime resolves with no env wiring
|
|
9
|
+
* (`desktop-fused-ffi-backend-runtime.ts` `resolveFusedLibraryPath`, path #2).
|
|
10
|
+
*
|
|
11
|
+
* Pure + injectable (platform / arch / env are all overridable) so the mapping
|
|
12
|
+
* is unit-testable on any host.
|
|
13
|
+
*/
|
|
14
|
+
import type { Eliza1Files, Eliza1LibFileEntry } from "./manifest";
|
|
15
|
+
export interface HostLibTargetOptions {
|
|
16
|
+
platform?: NodeJS.Platform;
|
|
17
|
+
arch?: string;
|
|
18
|
+
env?: NodeJS.ProcessEnv;
|
|
19
|
+
/** Prefer a GPU-accelerated target when the bundle hosts one. */
|
|
20
|
+
preferGpu?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ordered list of acceptable `target` keys for the host, best-first. The
|
|
24
|
+
* downloader picks the first target the bundle actually hosts.
|
|
25
|
+
*
|
|
26
|
+
* - `ELIZA_INFERENCE_LIB_TARGET` pins a single target (power users / CI).
|
|
27
|
+
* - Mobile (`ELIZA_PLATFORM=android|ios`) returns `[]` — phones ship the lib
|
|
28
|
+
* natively (jniLibs / xcframework), never via bundle delivery.
|
|
29
|
+
* - CPU is preferred by default: the fused lib always has GGML_CPU built in,
|
|
30
|
+
* so the CPU set works on every host and is the smallest download. GPU sets
|
|
31
|
+
* (`…-cuda`) are opt-in via `preferGpu` or the env pin.
|
|
32
|
+
* - macOS arm64 maps to the `metal` set, which itself carries the CPU
|
|
33
|
+
* fallback, so it is the canonical mac target.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveHostLibTargets(opts?: HostLibTargetOptions): string[];
|
|
36
|
+
export interface SelectedLibTarget {
|
|
37
|
+
readonly target: string;
|
|
38
|
+
readonly files: ReadonlyArray<Eliza1LibFileEntry>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pick the bundle's lib file set for the first host target the manifest
|
|
42
|
+
* actually carries. Returns null when the bundle has no `lib[]` or hosts no
|
|
43
|
+
* target the host accepts (⇒ the runtime falls back to other resolution paths,
|
|
44
|
+
* ultimately cloud).
|
|
45
|
+
*/
|
|
46
|
+
export declare function selectBundleLibFiles(manifest: {
|
|
47
|
+
files: Pick<Eliza1Files, "lib">;
|
|
48
|
+
}, targets: ReadonlyArray<string>): SelectedLibTarget | null;
|
|
49
|
+
/**
|
|
50
|
+
* Flat staged filename under `<bundleRoot>/lib/` for a lib entry. Always a
|
|
51
|
+
* basename (any directory component in `name`/`path` is stripped) so a manifest
|
|
52
|
+
* can never write outside the lib dir.
|
|
53
|
+
*/
|
|
54
|
+
export declare function libStagedName(entry: Eliza1LibFileEntry): string;
|
|
55
|
+
//# sourceMappingURL=lib-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib-target.d.ts","sourceRoot":"","sources":["../../src/services/lib-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,GAAE,oBAAyB,GAC7B,MAAM,EAAE,CAqBV;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;CAAE,EAC7C,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAC5B,iBAAiB,GAAG,IAAI,CAQ1B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAK/D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live device signals for the capability-driven `auto` routing policy.
|
|
3
|
+
*
|
|
4
|
+
* `classifyDeviceTier()` is a *static* assessment — it scores the hardware once
|
|
5
|
+
* and caches the result. But a device that classifies MAX/GOOD at session start
|
|
6
|
+
* can still become a poor place to run local inference *right now*: a sustained
|
|
7
|
+
* workload pushes the SoC into thermal throttling, or decode throughput collapses
|
|
8
|
+
* under memory pressure. Those are live, time-varying signals the static tier
|
|
9
|
+
* cannot see.
|
|
10
|
+
*
|
|
11
|
+
* This module exposes the two live signals the `auto` branch demotes on:
|
|
12
|
+
*
|
|
13
|
+
* - **thermal state** — read from the device bridge's most recent device
|
|
14
|
+
* capabilities (`nominal | fair | serious | critical | unknown`). `serious`
|
|
15
|
+
* or `critical` means the OS is actively throttling clocks; forcing local
|
|
16
|
+
* inference there makes turns slower than cloud and worsens the throttle.
|
|
17
|
+
* - **decode throughput** — the recent p50 decode tokens/sec from
|
|
18
|
+
* `inferenceTelemetry`. When it falls below a usable budget the on-device
|
|
19
|
+
* path is no longer competitive and `auto` routes to cloud.
|
|
20
|
+
*
|
|
21
|
+
* Both signals are *optional*: a quantity the host could not measure is reported
|
|
22
|
+
* as `null` (never a fabricated `0`), and a `null` signal never demotes — the
|
|
23
|
+
* static tier decision stands. The default source reads the real subsystems; a
|
|
24
|
+
* test or alternate host can inject its own via `setLiveDeviceSignalsSource`.
|
|
25
|
+
*/
|
|
26
|
+
/** Thermal pressure reported by the OS. Mirrors the device-bridge wire enum. */
|
|
27
|
+
export type ThermalState = "nominal" | "fair" | "serious" | "critical" | "unknown";
|
|
28
|
+
/**
|
|
29
|
+
* The telemetry metric name carrying recent on-device decode throughput
|
|
30
|
+
* (tokens/sec). The backend records this after a generation completes; until
|
|
31
|
+
* then `summary()` returns a `count: 0` row and the signal is `null`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DECODE_TPS_METRIC = "inference.decode_tps";
|
|
34
|
+
/**
|
|
35
|
+
* Minimum decode throughput (tokens/sec) below which the local path is no longer
|
|
36
|
+
* worth keeping under `auto`. Roughly the floor where on-device generation feels
|
|
37
|
+
* slower than a cloud round-trip on a constrained mobile SoC.
|
|
38
|
+
*/
|
|
39
|
+
export declare const MIN_DECODE_TPS_BUDGET = 6;
|
|
40
|
+
/**
|
|
41
|
+
* Approximate decoded-token count for a generated string when an exact tokenizer
|
|
42
|
+
* count is not reachable from the call site. English averages ~4 characters per
|
|
43
|
+
* token; this is deliberately coarse — it only feeds a p50 the router compares
|
|
44
|
+
* against {@link MIN_DECODE_TPS_BUDGET}, never a billing or context-window count.
|
|
45
|
+
*/
|
|
46
|
+
export declare function estimateDecodeTokens(text: string): number;
|
|
47
|
+
/**
|
|
48
|
+
* Record one on-device decode-throughput observation into the telemetry ring the
|
|
49
|
+
* `auto` router reads via {@link DECODE_TPS_METRIC}. This is the producer that
|
|
50
|
+
* activates the dormant TPS demotion signal: backends call it after a real local
|
|
51
|
+
* generation completes with a known decoded-token count and wall-clock decode
|
|
52
|
+
* span.
|
|
53
|
+
*
|
|
54
|
+
* Drops the sample (records nothing) when it would be noise rather than signal:
|
|
55
|
+
* an empty/aborted generation, a sub-{@link MIN_TOKENS_FOR_TPS_SAMPLE} reply, or
|
|
56
|
+
* a non-positive elapsed time (a clock that did not advance). Never throws —
|
|
57
|
+
* `inferenceTelemetry.record` already guards the call site.
|
|
58
|
+
*/
|
|
59
|
+
export declare function recordDecodeThroughput(sample: {
|
|
60
|
+
tokens: number;
|
|
61
|
+
elapsedMs: number;
|
|
62
|
+
}): void;
|
|
63
|
+
/** A point-in-time snapshot of the live device signals. */
|
|
64
|
+
export interface LiveDeviceSignals {
|
|
65
|
+
/** Current OS thermal pressure, or `null` when no device reported it. */
|
|
66
|
+
thermalState: ThermalState | null;
|
|
67
|
+
/** Recent p50 decode throughput in tokens/sec, or `null` when unmeasured. */
|
|
68
|
+
decodeTokensPerSecond: number | null;
|
|
69
|
+
}
|
|
70
|
+
/** A source of live device signals — swappable for tests and alternate hosts. */
|
|
71
|
+
export type LiveDeviceSignalsSource = () => LiveDeviceSignals;
|
|
72
|
+
/** Read the current live device signals. */
|
|
73
|
+
export declare function readLiveDeviceSignals(): LiveDeviceSignals;
|
|
74
|
+
/**
|
|
75
|
+
* Override the live-signals source. Pass `null` to restore the default
|
|
76
|
+
* (device-bridge + telemetry) source. Intended for tests and alternate hosts.
|
|
77
|
+
*/
|
|
78
|
+
export declare function setLiveDeviceSignalsSource(source: LiveDeviceSignalsSource | null): void;
|
|
79
|
+
/**
|
|
80
|
+
* Whether the live signals say the device should be demoted off local for now,
|
|
81
|
+
* even though the static tier favours local. True when the OS is throttling
|
|
82
|
+
* (`serious`/`critical`) or measured decode throughput sits below the budget.
|
|
83
|
+
* A `null` signal never demotes.
|
|
84
|
+
*/
|
|
85
|
+
export declare function liveSignalsDemoteLocal(signals: LiveDeviceSignals): boolean;
|
|
86
|
+
//# sourceMappingURL=live-signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-signals.d.ts","sourceRoot":"","sources":["../../src/services/live-signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,gFAAgF;AAChF,MAAM,MAAM,YAAY,GACrB,SAAS,GACT,MAAM,GACN,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAUvC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAeP;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IACjC,yEAAyE;IACzE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,MAAM,iBAAiB,CAAC;AA+B9D,4CAA4C;AAC5C,wBAAgB,qBAAqB,IAAI,iBAAiB,CAEzD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,uBAAuB,GAAG,IAAI,GACpC,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAc1E"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scraper for llama-server's `/metrics` (Prometheus exposition format)
|
|
3
|
+
* endpoint. Translates the running counters into the
|
|
4
|
+
* Anthropic-SDK-shaped `usage` block that callers already know how to
|
|
5
|
+
* consume from the cloud Anthropic plugin.
|
|
6
|
+
*
|
|
7
|
+
* llama-server publishes the following counters (per-process, monotonic):
|
|
8
|
+
*
|
|
9
|
+
* llamacpp:n_decode_total — context tokens decoded (prefill + gen)
|
|
10
|
+
* llamacpp:n_tokens_predicted_total — output tokens
|
|
11
|
+
* llamacpp:prompt_tokens_total — total input tokens accepted
|
|
12
|
+
* llamacpp:n_past_max — high-water mark of cached past-tokens
|
|
13
|
+
* llamacpp:n_prompt_tokens_processed_total — fresh tokens prefilled
|
|
14
|
+
* (i.e. cache MISS), excludes cache hits
|
|
15
|
+
* llamacpp:kv_cache_tokens — current size of KV cache (gauge)
|
|
16
|
+
* llamacpp:kv_cache_used_cells — slots with active KV (gauge)
|
|
17
|
+
*
|
|
18
|
+
* For MTP speculative decoding, the fork additionally publishes:
|
|
19
|
+
*
|
|
20
|
+
* llamacpp:n_drafted_total — drafter-emitted tokens
|
|
21
|
+
* llamacpp:n_drafted_accepted_total — accepted speculative tokens
|
|
22
|
+
*
|
|
23
|
+
* The mapping into Anthropic shape:
|
|
24
|
+
*
|
|
25
|
+
* prompt_tokens_total → input_tokens
|
|
26
|
+
* n_tokens_predicted_total → output_tokens
|
|
27
|
+
* n_prompt_tokens_processed_total → cache_creation_input_tokens
|
|
28
|
+
* prompt_tokens_total - n_prompt_tokens_processed_total → cache_read_input_tokens
|
|
29
|
+
* n_drafted_total / n_drafted_accepted_total → MTP extension fields
|
|
30
|
+
*
|
|
31
|
+
* Counters are taken as deltas across two snapshots: take one before
|
|
32
|
+
* `generate`, one after, and subtract. Losing a few samples to process
|
|
33
|
+
* restart is acceptable — the deltas are useful for the call's own
|
|
34
|
+
* usage accounting, not for global monitoring.
|
|
35
|
+
*/
|
|
36
|
+
export interface LlamaServerMetricSnapshot {
|
|
37
|
+
/** Wall-clock ms when the snapshot was taken; useful for diagnostics. */
|
|
38
|
+
takenAtMs: number;
|
|
39
|
+
/** True when `/metrics` was fetched and parsed. False means scrape failure. */
|
|
40
|
+
scrapeOk?: boolean;
|
|
41
|
+
/** True when the scrape included at least one generation/speculation counter. */
|
|
42
|
+
hasGenerationCounters?: boolean;
|
|
43
|
+
promptTokensTotal: number;
|
|
44
|
+
predictedTokensTotal: number;
|
|
45
|
+
/** Tokens that had to be freshly prefilled — i.e. cache MISS this turn. */
|
|
46
|
+
promptTokensProcessedTotal: number;
|
|
47
|
+
draftedTotal: number;
|
|
48
|
+
acceptedTotal: number;
|
|
49
|
+
/** Current size of the KV cache (gauge). */
|
|
50
|
+
kvCacheTokens: number;
|
|
51
|
+
/** Number of slots currently holding active KV (gauge). */
|
|
52
|
+
kvCacheUsedCells: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parse a Prometheus exposition-format payload into a metric snapshot.
|
|
56
|
+
* Unknown or malformed lines are silently skipped — counters we don't
|
|
57
|
+
* recognise are not interesting and metric exporters add new ones over
|
|
58
|
+
* time.
|
|
59
|
+
*
|
|
60
|
+
* llama-server usually exposes one sample per metric (no labels), e.g.
|
|
61
|
+
* `llamacpp:prompt_tokens_total 1234`
|
|
62
|
+
* Some MTP forks expose per-slot labelled samples, e.g.
|
|
63
|
+
* `llamacpp:n_drafted_accepted_total{slot_id="0"} 12`
|
|
64
|
+
* Labelled samples are summed unless an unlabelled total exists for the same
|
|
65
|
+
* canonical field, in which case the unlabelled total wins.
|
|
66
|
+
*/
|
|
67
|
+
export declare function parsePrometheusMetrics(body: string, takenAtMs?: number): LlamaServerMetricSnapshot;
|
|
68
|
+
/**
|
|
69
|
+
* Anthropic-SDK-shaped usage block, optionally extended with MTP
|
|
70
|
+
* speculative-decoding metrics. The cloud plugin (plugin-anthropic)
|
|
71
|
+
* emits the first three fields verbatim; local inference adds the
|
|
72
|
+
* `mtp_*` fields when speculative decoding is active. Callers that
|
|
73
|
+
* already handle the cloud `usage` shape need no change.
|
|
74
|
+
*/
|
|
75
|
+
export interface LocalUsageBlock {
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
input_tokens: number;
|
|
78
|
+
output_tokens: number;
|
|
79
|
+
cache_creation_input_tokens: number;
|
|
80
|
+
cache_read_input_tokens: number;
|
|
81
|
+
mtp_drafted_tokens?: number;
|
|
82
|
+
mtp_accepted_tokens?: number;
|
|
83
|
+
/** 0..1 — proportion of drafted tokens that were accepted. */
|
|
84
|
+
mtp_acceptance_rate?: number;
|
|
85
|
+
/** 0..1 — proportion of input tokens that hit a warm slot (cache reuse). */
|
|
86
|
+
cache_hit_rate?: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Compute the Anthropic-shape usage block for a single generation by
|
|
90
|
+
* differencing two snapshots. `before` is taken just before the request,
|
|
91
|
+
* `after` just after the response was received. Negative deltas (caused
|
|
92
|
+
* by a metric reset between snapshots, e.g. server restart) are clamped
|
|
93
|
+
* to 0 — losing the sample is preferable to surfacing nonsense to the
|
|
94
|
+
* caller.
|
|
95
|
+
*
|
|
96
|
+
* Pass `responseUsage` to override input/output counts when the response
|
|
97
|
+
* payload itself reports per-call counters that are more accurate than
|
|
98
|
+
* the metric delta — llama-server's chat completion response includes
|
|
99
|
+
* `usage.{prompt,completion}_tokens` per request, which is exact while
|
|
100
|
+
* the metric delta is "everything that happened during the wall-clock
|
|
101
|
+
* window of the request."
|
|
102
|
+
*/
|
|
103
|
+
export declare function diffSnapshots(before: LlamaServerMetricSnapshot, after: LlamaServerMetricSnapshot, responseUsage?: {
|
|
104
|
+
prompt_tokens?: number;
|
|
105
|
+
completion_tokens?: number;
|
|
106
|
+
}): LocalUsageBlock;
|
|
107
|
+
/**
|
|
108
|
+
* GET `/metrics` from a running llama-server and parse it. Errors fall
|
|
109
|
+
* back to a zero-valued snapshot rather than throwing — observability
|
|
110
|
+
* MUST NOT break generation. `scrapeOk=false` tells callers that the
|
|
111
|
+
* zeros are not evidence of absent MTP/KV activity.
|
|
112
|
+
*/
|
|
113
|
+
export declare function fetchMetricsSnapshot(baseUrl: string, signal?: AbortSignal, timeoutMs?: number): Promise<LlamaServerMetricSnapshot>;
|
|
114
|
+
//# sourceMappingURL=llama-server-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llama-server-metrics.d.ts","sourceRoot":"","sources":["../../src/services/llama-server-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,yBAAyB;IACzC,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAuBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAmB,GAC5B,yBAAyB,CAuD3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC5B,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,yBAAyB,EAChC,aAAa,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,eAAe,CA2CjB;AAOD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,SAAoC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CAsDpC"}
|