@elizaos/plugin-local-inference 2.0.3-beta.2 → 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.
Files changed (881) hide show
  1. package/README.md +84 -10
  2. package/dist/actions/generate-media.d.ts.map +1 -0
  3. package/dist/actions/identify-speaker.d.ts.map +1 -0
  4. package/dist/actions/transcription-control.d.ts.map +1 -0
  5. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  6. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  7. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  8. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  10. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  12. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  14. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  16. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  18. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  20. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  22. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  23. package/dist/backends/apple-foundation.d.ts +56 -0
  24. package/dist/backends/apple-foundation.d.ts.map +1 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +39647 -0
  27. package/dist/index.js.map +217 -0
  28. package/{src → dist}/local-inference-routes.d.ts +9 -0
  29. package/dist/local-inference-routes.d.ts.map +1 -0
  30. package/dist/provider.d.ts.map +1 -0
  31. package/{src → dist}/routes/compat-helpers.d.ts +1 -1
  32. package/dist/routes/compat-helpers.d.ts.map +1 -0
  33. package/dist/routes/family-member-route.d.ts.map +1 -0
  34. package/{src → dist}/routes/index.d.ts +1 -0
  35. package/dist/routes/index.d.ts.map +1 -0
  36. package/dist/routes/index.js +42040 -0
  37. package/dist/routes/index.js.map +236 -0
  38. package/{src → dist}/routes/live-diarization-route.d.ts +7 -0
  39. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  40. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  41. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  42. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  43. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  44. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  45. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  46. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  47. package/{src → dist}/routes/transcripts-routes.d.ts +8 -0
  48. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  49. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  50. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  51. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  52. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  53. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  54. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  55. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  56. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  57. package/{src → dist}/runtime/ensure-local-inference-handler.d.ts +8 -0
  58. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  59. package/{src → dist}/runtime/index.d.ts +1 -1
  60. package/dist/runtime/index.d.ts.map +1 -0
  61. package/dist/runtime/index.js +38768 -0
  62. package/dist/runtime/index.js.map +217 -0
  63. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  64. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  65. package/{src → dist}/runtime/voice-entity-binding.d.ts +10 -0
  66. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  67. package/{src → dist}/services/active-model.d.ts +28 -0
  68. package/dist/services/active-model.d.ts.map +1 -0
  69. package/dist/services/asr-provenance.d.ts +5 -0
  70. package/dist/services/asr-provenance.d.ts.map +1 -0
  71. package/{src → dist}/services/assignments.d.ts +16 -3
  72. package/dist/services/assignments.d.ts.map +1 -0
  73. package/dist/services/backend-selector.d.ts +55 -0
  74. package/dist/services/backend-selector.d.ts.map +1 -0
  75. package/{src → dist}/services/backend.d.ts +110 -16
  76. package/dist/services/backend.d.ts.map +1 -0
  77. package/{src → dist}/services/bionic-host-loader.d.ts +21 -0
  78. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  79. package/dist/services/bundled-models.d.ts.map +1 -0
  80. package/dist/services/cache-bridge.d.ts.map +1 -0
  81. package/dist/services/catalog.d.ts +10 -0
  82. package/dist/services/catalog.d.ts.map +1 -0
  83. package/dist/services/checkpoint-client.d.ts.map +1 -0
  84. package/dist/services/checkpoint-manager.d.ts +217 -0
  85. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  86. package/dist/services/cloud-fallback.d.ts.map +1 -0
  87. package/dist/services/context-fit.d.ts +36 -0
  88. package/dist/services/context-fit.d.ts.map +1 -0
  89. package/dist/services/conversation-registry.d.ts.map +1 -0
  90. package/{src → dist}/services/desktop-fused-ffi-backend-runtime.d.ts +22 -6
  91. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  92. package/dist/services/device-bridge.d.ts.map +1 -0
  93. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  94. package/{src → dist}/services/device-tier.d.ts +19 -1
  95. package/dist/services/device-tier.d.ts.map +1 -0
  96. package/{src → dist}/services/downloader.d.ts +16 -4
  97. package/dist/services/downloader.d.ts.map +1 -0
  98. package/{src → dist}/services/engine.d.ts +43 -4
  99. package/dist/services/engine.d.ts.map +1 -0
  100. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  101. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  102. package/dist/services/external-scanner.d.ts.map +1 -0
  103. package/dist/services/ffi-llm-mock.d.ts +90 -0
  104. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  105. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  106. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  107. package/{src → dist}/services/ffi-streaming-backend.d.ts +28 -7
  108. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  109. package/{src → dist}/services/ffi-streaming-runner.d.ts +24 -0
  110. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  111. package/dist/services/gpu-autotune.d.ts +150 -0
  112. package/dist/services/gpu-autotune.d.ts.map +1 -0
  113. package/dist/services/gpu-detect.d.ts.map +1 -0
  114. package/dist/services/handler-registry.d.ts.map +1 -0
  115. package/dist/services/hardware.d.ts.map +1 -0
  116. package/dist/services/image-description-runtime.d.ts.map +1 -0
  117. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  118. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  119. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  120. package/dist/services/imagegen/errors.d.ts.map +1 -0
  121. package/dist/services/imagegen/index.d.ts.map +1 -0
  122. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  123. package/{src → dist}/services/imagegen/sd-cpp.d.ts +1 -0
  124. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  125. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  126. package/dist/services/imagegen/types.d.ts.map +1 -0
  127. package/{src → dist}/services/index.d.ts +3 -1
  128. package/dist/services/index.d.ts.map +1 -0
  129. package/dist/services/index.js +39453 -0
  130. package/dist/services/index.js.map +227 -0
  131. package/dist/services/inference-capabilities.d.ts.map +1 -0
  132. package/dist/services/inference-telemetry.d.ts.map +1 -0
  133. package/dist/services/ios-llama-streaming.d.ts +119 -0
  134. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  135. package/dist/services/kv-spill.d.ts.map +1 -0
  136. package/dist/services/latency-trace.d.ts.map +1 -0
  137. package/dist/services/lib-target.d.ts +55 -0
  138. package/dist/services/lib-target.d.ts.map +1 -0
  139. package/dist/services/live-signals.d.ts +86 -0
  140. package/dist/services/live-signals.d.ts.map +1 -0
  141. package/dist/services/llama-server-metrics.d.ts +114 -0
  142. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  143. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  144. package/dist/services/load-args.d.ts.map +1 -0
  145. package/dist/services/manifest/index.d.ts +4 -0
  146. package/dist/services/manifest/index.d.ts.map +1 -0
  147. package/{src → dist}/services/manifest/schema.d.ts +196 -6
  148. package/dist/services/manifest/schema.d.ts.map +1 -0
  149. package/{src → dist}/services/manifest/types.d.ts +3 -1
  150. package/dist/services/manifest/types.d.ts.map +1 -0
  151. package/dist/services/manifest/validator.d.ts.map +1 -0
  152. package/{src → dist}/services/memory-arbiter.d.ts +33 -3
  153. package/dist/services/memory-arbiter.d.ts.map +1 -0
  154. package/dist/services/memory-benchmark.d.ts +76 -0
  155. package/dist/services/memory-benchmark.d.ts.map +1 -0
  156. package/{src → dist}/services/memory-monitor.d.ts +6 -0
  157. package/dist/services/memory-monitor.d.ts.map +1 -0
  158. package/dist/services/memory-pressure.d.ts.map +1 -0
  159. package/dist/services/mtp-doctor.d.ts.map +1 -0
  160. package/dist/services/network-policy.d.ts.map +1 -0
  161. package/dist/services/paths.d.ts.map +1 -0
  162. package/dist/services/planner-skeleton.d.ts.map +1 -0
  163. package/dist/services/providers.d.ts.map +1 -0
  164. package/dist/services/ram-budget.d.ts.map +1 -0
  165. package/dist/services/readiness.d.ts.map +1 -0
  166. package/dist/services/recommendation.d.ts.map +1 -0
  167. package/{src → dist}/services/registry.d.ts +11 -13
  168. package/dist/services/registry.d.ts.map +1 -0
  169. package/{src → dist}/services/router-handler.d.ts +2 -2
  170. package/dist/services/router-handler.d.ts.map +1 -0
  171. package/{src → dist}/services/routing-policy.d.ts +32 -9
  172. package/dist/services/routing-policy.d.ts.map +1 -0
  173. package/dist/services/routing-preferences.d.ts.map +1 -0
  174. package/dist/services/runtime-target.d.ts.map +1 -0
  175. package/{src → dist}/services/service.d.ts +1 -1
  176. package/dist/services/service.d.ts.map +1 -0
  177. package/dist/services/session-pool.d.ts.map +1 -0
  178. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  179. package/dist/services/structured-output/index.d.ts +2 -0
  180. package/dist/services/structured-output/index.d.ts.map +1 -0
  181. package/dist/services/structured-output.d.ts.map +1 -0
  182. package/dist/services/system-memory.d.ts.map +1 -0
  183. package/{src → dist}/services/types.d.ts +1 -1
  184. package/dist/services/types.d.ts.map +1 -0
  185. package/dist/services/verify-on-device.d.ts.map +1 -0
  186. package/dist/services/verify.d.ts.map +1 -0
  187. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  188. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  189. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  190. package/dist/services/vision/hash.d.ts.map +1 -0
  191. package/{src → dist}/services/vision/index.d.ts +1 -1
  192. package/dist/services/vision/index.d.ts.map +1 -0
  193. package/dist/services/vision/llama-server.d.ts.map +1 -0
  194. package/{src → dist}/services/vision/types.d.ts +13 -4
  195. package/dist/services/vision/types.d.ts.map +1 -0
  196. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  197. package/{src → dist}/services/vision-embedding-cache.d.ts +1 -1
  198. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  199. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  200. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  201. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  202. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  203. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  204. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  205. package/{src → dist}/services/voice/audio-frame-consumer.d.ts +82 -0
  206. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  207. package/dist/services/voice/barge-in.d.ts.map +1 -0
  208. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  209. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  210. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  211. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  212. package/dist/services/voice/corpus-augment.d.ts +111 -0
  213. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  214. package/dist/services/voice/corpus-generator.d.ts +134 -0
  215. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  216. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  217. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  218. package/dist/services/voice/e2e-harness.d.ts +297 -0
  219. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  220. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  221. package/dist/services/voice/echo-delay.d.ts +67 -0
  222. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  223. package/dist/services/voice/echo-metrics.d.ts +7 -0
  224. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  225. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  226. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  227. package/{src → dist}/services/voice/eliza1-eot-scorer.d.ts +8 -8
  228. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  229. package/dist/services/voice/embedding-server.d.ts +37 -0
  230. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  231. package/{src → dist}/services/voice/embedding.d.ts +2 -3
  232. package/dist/services/voice/embedding.d.ts.map +1 -0
  233. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  234. package/{src → dist}/services/voice/engine-bridge.d.ts +8 -5
  235. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  236. package/{src → dist}/services/voice/eot-classifier-ggml.d.ts +22 -22
  237. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  238. package/{src → dist}/services/voice/eot-classifier.d.ts +9 -12
  239. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  240. package/{src → dist}/services/voice/errors.d.ts +1 -1
  241. package/dist/services/voice/errors.d.ts.map +1 -0
  242. package/{src → dist}/services/voice/expressive-tags.d.ts +5 -5
  243. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  244. package/{src → dist}/services/voice/ffi-bindings.d.ts +26 -4
  245. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  246. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  247. package/{src → dist}/services/voice/fused-eot-scorer.d.ts +6 -6
  248. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  249. package/{src → dist}/services/voice/index.d.ts +8 -3
  250. package/dist/services/voice/index.d.ts.map +1 -0
  251. package/dist/services/voice/kokoro/index.d.ts +24 -0
  252. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  253. package/{src → dist}/services/voice/kokoro/kokoro-backend.d.ts +15 -0
  254. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  255. package/{src → dist}/services/voice/kokoro/kokoro-engine-discovery.d.ts +1 -1
  256. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  257. package/{src → dist}/services/voice/kokoro/kokoro-ffi-runtime.d.ts +3 -3
  258. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  259. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  260. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  261. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  262. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  263. package/{src → dist}/services/voice/kokoro/pick-runtime.d.ts +1 -1
  264. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  265. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  266. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  267. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  268. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  269. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  270. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  271. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  272. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  273. package/dist/services/voice/metric-math.d.ts +10 -0
  274. package/dist/services/voice/metric-math.d.ts.map +1 -0
  275. package/{src → dist}/services/voice/mic-source.d.ts +1 -1
  276. package/dist/services/voice/mic-source.d.ts.map +1 -0
  277. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  278. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  279. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  280. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  281. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  282. package/{src → dist}/services/voice/partial-stabilizer.d.ts +1 -1
  283. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  284. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  285. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  286. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  287. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  288. package/dist/services/voice/pipeline.d.ts.map +1 -0
  289. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  290. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  291. package/dist/services/voice/profile-store.d.ts.map +1 -0
  292. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  293. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  294. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  295. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  296. package/dist/services/voice/scheduler.d.ts.map +1 -0
  297. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  298. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  299. package/{src → dist}/services/voice/shared-resources.d.ts +14 -0
  300. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  301. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  302. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  303. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  304. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  305. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  306. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  307. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  308. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  309. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  310. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  311. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  312. package/{src → dist}/services/voice/transcriber.d.ts +4 -4
  313. package/dist/services/voice/transcriber.d.ts.map +1 -0
  314. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  315. package/{src → dist}/services/voice/transcript-service.d.ts +20 -1
  316. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  317. package/{src → dist}/services/voice/transcript-store.d.ts +12 -1
  318. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  319. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  320. package/{src → dist}/services/voice/types.d.ts +6 -6
  321. package/dist/services/voice/types.d.ts.map +1 -0
  322. package/{src → dist}/services/voice/vad.d.ts +6 -5
  323. package/dist/services/voice/vad.d.ts.map +1 -0
  324. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  325. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  326. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  327. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  328. package/{src → dist}/services/voice/voice-preset-format.d.ts +2 -2
  329. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  330. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  331. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  332. package/dist/services/voice/voice-scenario.d.ts +131 -0
  333. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  334. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  335. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  336. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  337. package/{src → dist}/services/voice/wake-word-ggml.d.ts +8 -9
  338. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  339. package/dist/services/voice/wake-word.d.ts.map +1 -0
  340. package/dist/services/voice/wav-codec.d.ts +11 -0
  341. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  342. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  343. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  344. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  345. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  346. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  347. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  348. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  349. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  350. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  351. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  352. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  353. package/dist/services/voice-model-updater.d.ts.map +1 -0
  354. package/dist/services/voice-prewarm.d.ts.map +1 -0
  355. package/dist/voice-workbench.d.ts +18 -0
  356. package/dist/voice-workbench.d.ts.map +1 -0
  357. package/dist/voice-workbench.js +5259 -0
  358. package/dist/voice-workbench.js.map +34 -0
  359. package/package.json +28 -9
  360. package/registry-entry.json +137 -0
  361. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  362. package/src/adapters/capacitor-llama/environment.ts +1 -1
  363. package/src/adapters/capacitor-llama/index.ts +28 -4
  364. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  365. package/src/adapters/capacitor-llama/text-streaming.ts +2 -2
  366. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  367. package/src/backends/apple-foundation.ts +1 -1
  368. package/src/local-inference-routes.test.ts +57 -11
  369. package/src/local-inference-routes.ts +90 -8
  370. package/src/provider.ts +32 -3
  371. package/src/routes/compat-helpers.ts +2 -1
  372. package/src/routes/index.ts +1 -0
  373. package/src/routes/live-diarization-route.test.ts +134 -0
  374. package/src/routes/live-diarization-route.ts +79 -3
  375. package/src/routes/local-inference-asr-route.test.ts +43 -2
  376. package/src/routes/local-inference-asr-route.ts +7 -4
  377. package/src/routes/local-inference-asr-transcribe.test.ts +4 -4
  378. package/src/routes/local-inference-asr-transcribe.ts +1 -1
  379. package/src/routes/local-inference-compat-routes.test.ts +3 -3
  380. package/src/routes/local-inference-compat-routes.ts +23 -56
  381. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  382. package/src/routes/native-pcm-turn-route.ts +121 -0
  383. package/src/routes/transcripts-routes.test.ts +51 -0
  384. package/src/routes/transcripts-routes.ts +35 -3
  385. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  386. package/src/runtime/ensure-local-inference-handler.test.ts +203 -5
  387. package/src/runtime/ensure-local-inference-handler.ts +203 -11
  388. package/src/runtime/index.ts +4 -1
  389. package/src/runtime/mobile-local-inference-gate.test.ts +85 -2
  390. package/src/runtime/mobile-local-inference-gate.ts +60 -5
  391. package/src/runtime/voice-entity-binding.transcript.test.ts +29 -0
  392. package/src/runtime/voice-entity-binding.ts +46 -6
  393. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  394. package/src/services/README.md +2 -2
  395. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  396. package/src/services/active-model-context-fit.test.ts +125 -0
  397. package/src/services/active-model.ts +211 -8
  398. package/src/services/asr-provenance.ts +68 -0
  399. package/src/services/assignment-validation.test.ts +118 -0
  400. package/src/services/assignments.test.ts +26 -0
  401. package/src/services/assignments.ts +52 -4
  402. package/src/services/backend.test.ts +84 -0
  403. package/src/services/backend.ts +198 -19
  404. package/src/services/bionic-host-loader.test.ts +94 -1
  405. package/src/services/bionic-host-loader.ts +72 -0
  406. package/src/services/cache-bridge.test.ts +7 -7
  407. package/src/services/catalog.test.ts +32 -11
  408. package/src/services/catalog.ts +6 -0
  409. package/src/services/cloud-fallback.ts +1 -1
  410. package/src/services/context-fit.test.ts +121 -0
  411. package/src/services/context-fit.ts +113 -0
  412. package/src/services/desktop-fused-ffi-backend-runtime.ts +99 -7
  413. package/src/services/device-tier.test.ts +89 -2
  414. package/src/services/device-tier.ts +103 -11
  415. package/src/services/downloader.test.ts +199 -58
  416. package/src/services/downloader.ts +141 -27
  417. package/src/services/engine-direct-bundle.test.ts +38 -6
  418. package/src/services/engine.ts +291 -104
  419. package/src/services/ensure-local-artifacts.ts +1 -1
  420. package/src/services/ffi-llm-streaming-abi.ts +6 -3
  421. package/src/services/ffi-streaming-backend.ts +44 -8
  422. package/src/services/ffi-streaming-runner.test.ts +163 -3
  423. package/src/services/ffi-streaming-runner.ts +54 -1
  424. package/src/services/ffi-unload-ordering.test.ts +5 -1
  425. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  426. package/src/services/hardware.test.ts +7 -2
  427. package/src/services/hardware.ts +28 -0
  428. package/src/services/imagegen/backend-selector.test.ts +190 -0
  429. package/src/services/imagegen/sd-cpp.ts +6 -9
  430. package/src/services/index.ts +18 -0
  431. package/src/services/ios-llama-streaming.ts +1 -1
  432. package/src/services/kv-spill.ts +6 -5
  433. package/src/services/lib-target.test.ts +145 -0
  434. package/src/services/lib-target.ts +102 -0
  435. package/src/services/live-signals.test.ts +132 -0
  436. package/src/services/live-signals.ts +177 -0
  437. package/src/services/llama-server-metrics.test.ts +168 -0
  438. package/src/services/manifest/eliza-1.manifest.v1.json +84 -2
  439. package/src/services/manifest/index.ts +6 -0
  440. package/src/services/manifest/manifest.test.ts +156 -54
  441. package/src/services/manifest/schema.ts +160 -52
  442. package/src/services/manifest/types.ts +6 -0
  443. package/src/services/manifest/validator.ts +91 -25
  444. package/src/services/memory-arbiter.test.ts +139 -0
  445. package/src/services/memory-arbiter.ts +81 -15
  446. package/src/services/memory-benchmark.test.ts +91 -0
  447. package/src/services/memory-benchmark.ts +354 -0
  448. package/src/services/memory-monitor.test.ts +24 -0
  449. package/src/services/memory-monitor.ts +12 -0
  450. package/src/services/mtp-doctor.ts +10 -2
  451. package/src/services/network-policy.ts +5 -5
  452. package/src/services/ram-budget-cache.test.ts +2 -1
  453. package/src/services/ram-budget.ts +0 -0
  454. package/src/services/recommendation.test.ts +216 -0
  455. package/src/services/registry.ts +25 -19
  456. package/src/services/required-kernels-gate.test.ts +64 -0
  457. package/src/services/router-handler.ts +43 -24
  458. package/src/services/routing-policy.test.ts +211 -23
  459. package/src/services/routing-policy.ts +92 -22
  460. package/src/services/service.test.ts +3 -3
  461. package/src/services/service.ts +22 -7
  462. package/src/services/transcription-priority.test.ts +2 -2
  463. package/src/services/types.ts +4 -0
  464. package/src/services/verify-on-device.test.ts +2 -2
  465. package/src/services/vision/hash.ts +1 -1
  466. package/src/services/vision/index.ts +2 -2
  467. package/src/services/vision/llama-server.ts +1 -1
  468. package/src/services/vision/types.ts +13 -4
  469. package/src/services/vision-embedding-cache.ts +1 -1
  470. package/src/services/voice/VOICE_WORKBENCH.md +71 -26
  471. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  472. package/src/services/voice/__test-helpers__/synthetic-speech.ts +72 -2
  473. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +29 -29
  474. package/src/services/voice/__tests__/streaming-asr.test.ts +1 -1
  475. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  476. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  477. package/src/services/voice/asr-timed.real.test.ts +6 -8
  478. package/src/services/voice/audio-frame-consumer.test.ts +327 -1
  479. package/src/services/voice/audio-frame-consumer.ts +165 -5
  480. package/src/services/voice/barge-in.ts +2 -3
  481. package/src/services/voice/corpus-augment.test.ts +276 -0
  482. package/src/services/voice/corpus-augment.ts +451 -0
  483. package/src/services/voice/corpus-generator.test.ts +201 -0
  484. package/src/services/voice/corpus-generator.ts +413 -0
  485. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  486. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  487. package/src/services/voice/diarization-error-rate.ts +249 -0
  488. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  489. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  490. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  491. package/src/services/voice/e2e-harness.test.ts +2 -2
  492. package/src/services/voice/e2e-harness.ts +175 -16
  493. package/src/services/voice/echo-delay.test.ts +118 -0
  494. package/src/services/voice/echo-delay.ts +135 -0
  495. package/src/services/voice/echo-metrics.test.ts +17 -0
  496. package/src/services/voice/echo-metrics.ts +20 -0
  497. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  498. package/src/services/voice/echo-reference-buffer.ts +165 -0
  499. package/src/services/voice/eliza1-eot-scorer.ts +22 -22
  500. package/src/services/voice/embedding.ts +2 -3
  501. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  502. package/src/services/voice/engine-bridge.ts +151 -110
  503. package/src/services/voice/eot-classifier-ggml.ts +42 -39
  504. package/src/services/voice/eot-classifier.test.ts +98 -0
  505. package/src/services/voice/eot-classifier.ts +11 -122
  506. package/src/services/voice/errors.ts +2 -0
  507. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  508. package/src/services/voice/expressive-tags.test.ts +102 -0
  509. package/src/services/voice/expressive-tags.ts +8 -8
  510. package/src/services/voice/ffi-bindings.test.ts +10 -3
  511. package/src/services/voice/ffi-bindings.ts +177 -15
  512. package/src/services/voice/fused-eot-scorer.ts +17 -13
  513. package/src/services/voice/index.ts +33 -12
  514. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +112 -1
  515. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +88 -3
  516. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +37 -201
  517. package/src/services/voice/kokoro/kokoro-backend.ts +16 -0
  518. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +1 -1
  519. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +3 -3
  520. package/src/services/voice/kokoro/pick-runtime.ts +1 -1
  521. package/src/services/voice/kokoro/runtime-selection.ts +28 -201
  522. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  523. package/src/services/voice/live-diarization-session.ts +335 -2
  524. package/src/services/voice/metric-math.test.ts +61 -0
  525. package/src/services/voice/metric-math.ts +25 -0
  526. package/src/services/voice/mic-source.ts +1 -1
  527. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  528. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  529. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  530. package/src/services/voice/partial-stabilizer.ts +1 -1
  531. package/src/services/voice/pipeline.ts +3 -4
  532. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  533. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  534. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  535. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  536. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  537. package/src/services/voice/self-voice-imprint.ts +102 -0
  538. package/src/services/voice/shared-resources.ts +23 -0
  539. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  540. package/src/services/voice/speaker/attribution-pipeline.ts +85 -22
  541. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  542. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  543. package/src/services/voice/transcriber.ts +4 -4
  544. package/src/services/voice/transcript-service.test.ts +58 -0
  545. package/src/services/voice/transcript-service.ts +64 -0
  546. package/src/services/voice/transcript-store.test.ts +36 -0
  547. package/src/services/voice/transcript-store.ts +32 -0
  548. package/src/services/voice/types.ts +7 -7
  549. package/src/services/voice/vad.test.ts +33 -15
  550. package/src/services/voice/vad.ts +25 -20
  551. package/src/services/voice/voice-budget.test.ts +0 -3
  552. package/src/services/voice/voice-budget.ts +6 -6
  553. package/src/services/voice/voice-duet.test.ts +1 -1
  554. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  555. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  556. package/src/services/voice/voice-preload-predictor.ts +113 -0
  557. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  558. package/src/services/voice/voice-preset-format.test.ts +75 -0
  559. package/src/services/voice/voice-preset-format.ts +17 -4
  560. package/src/services/voice/voice-scenario.test.ts +159 -0
  561. package/src/services/voice/voice-scenario.ts +133 -7
  562. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  563. package/src/services/voice/voice-workbench-report.ts +58 -17
  564. package/src/services/voice/wake-word-ggml.ts +12 -13
  565. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  566. package/src/services/voice/wav-codec.test.ts +32 -0
  567. package/src/services/voice/wav-codec.ts +101 -0
  568. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  569. package/src/services/voice/workbench-entrypoint.ts +88 -0
  570. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  571. package/src/services/voice/workbench-headless-runner.ts +396 -0
  572. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  573. package/src/services/voice/workbench-logic-services.ts +184 -0
  574. package/src/services/voice/workbench-real-services.ts +629 -0
  575. package/src/services/voice/workbench-scenarios.ts +407 -0
  576. package/src/services/voice-prewarm.ts +1 -1
  577. package/src/voice-workbench.ts +71 -0
  578. package/src/actions/generate-media.d.ts.map +0 -1
  579. package/src/actions/identify-speaker.d.ts.map +0 -1
  580. package/src/actions/transcription-control.d.ts.map +0 -1
  581. package/src/index.d.ts.map +0 -1
  582. package/src/local-inference-routes.d.ts.map +0 -1
  583. package/src/provider.d.ts.map +0 -1
  584. package/src/routes/compat-helpers.d.ts.map +0 -1
  585. package/src/routes/family-member-route.d.ts.map +0 -1
  586. package/src/routes/index.d.ts.map +0 -1
  587. package/src/routes/live-diarization-route.d.ts.map +0 -1
  588. package/src/routes/local-inference-asr-route.d.ts.map +0 -1
  589. package/src/routes/local-inference-asr-transcribe.d.ts.map +0 -1
  590. package/src/routes/local-inference-compat-routes.d.ts.map +0 -1
  591. package/src/routes/local-inference-tts-route.d.ts.map +0 -1
  592. package/src/routes/transcript-audio-store.d.ts.map +0 -1
  593. package/src/routes/transcripts-routes.d.ts.map +0 -1
  594. package/src/routes/voice-first-run-routes.d.ts.map +0 -1
  595. package/src/routes/voice-models-routes.d.ts.map +0 -1
  596. package/src/routes/voice-profile-plugin-routes.d.ts.map +0 -1
  597. package/src/routes/voice-profiles-management-routes.d.ts.map +0 -1
  598. package/src/routes/voice-speaker-profile-routes.d.ts.map +0 -1
  599. package/src/runtime/embedding-manager-support.d.ts.map +0 -1
  600. package/src/runtime/embedding-presets.d.ts.map +0 -1
  601. package/src/runtime/embedding-warmup-policy.d.ts.map +0 -1
  602. package/src/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  603. package/src/runtime/index.d.ts.map +0 -1
  604. package/src/runtime/mobile-local-inference-gate.d.ts +0 -31
  605. package/src/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  606. package/src/runtime/voice-entity-binding.d.ts.map +0 -1
  607. package/src/services/active-model.d.ts.map +0 -1
  608. package/src/services/assignments.d.ts.map +0 -1
  609. package/src/services/backend.d.ts.map +0 -1
  610. package/src/services/bionic-host-loader.d.ts.map +0 -1
  611. package/src/services/bundled-models.d.ts.map +0 -1
  612. package/src/services/cache-bridge.d.ts.map +0 -1
  613. package/src/services/catalog.d.ts +0 -10
  614. package/src/services/catalog.d.ts.map +0 -1
  615. package/src/services/checkpoint-client.d.ts.map +0 -1
  616. package/src/services/cloud-fallback.d.ts.map +0 -1
  617. package/src/services/conversation-registry.d.ts.map +0 -1
  618. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +0 -1
  619. package/src/services/device-bridge.d.ts.map +0 -1
  620. package/src/services/device-resource-metrics.d.ts.map +0 -1
  621. package/src/services/device-tier.d.ts.map +0 -1
  622. package/src/services/downloader.d.ts.map +0 -1
  623. package/src/services/engine.d.ts.map +0 -1
  624. package/src/services/external-scanner.d.ts.map +0 -1
  625. package/src/services/ffi-streaming-backend.d.ts.map +0 -1
  626. package/src/services/ffi-streaming-runner.d.ts.map +0 -1
  627. package/src/services/gpu-detect.d.ts.map +0 -1
  628. package/src/services/handler-registry.d.ts.map +0 -1
  629. package/src/services/hardware.d.ts.map +0 -1
  630. package/src/services/hf-search.d.ts +0 -26
  631. package/src/services/hf-search.d.ts.map +0 -1
  632. package/src/services/hf-search.test.ts +0 -69
  633. package/src/services/hf-search.ts +0 -420
  634. package/src/services/image-description-runtime.d.ts.map +0 -1
  635. package/src/services/imagegen/aosp-unavailable.d.ts.map +0 -1
  636. package/src/services/imagegen/backend-selector.d.ts.map +0 -1
  637. package/src/services/imagegen/coreml-unavailable.d.ts.map +0 -1
  638. package/src/services/imagegen/errors.d.ts.map +0 -1
  639. package/src/services/imagegen/index.d.ts.map +0 -1
  640. package/src/services/imagegen/mflux.d.ts.map +0 -1
  641. package/src/services/imagegen/sd-cpp.d.ts.map +0 -1
  642. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +0 -1
  643. package/src/services/imagegen/types.d.ts.map +0 -1
  644. package/src/services/index.d.ts.map +0 -1
  645. package/src/services/inference-capabilities.d.ts.map +0 -1
  646. package/src/services/inference-telemetry.d.ts.map +0 -1
  647. package/src/services/kv-spill.d.ts.map +0 -1
  648. package/src/services/latency-trace.d.ts.map +0 -1
  649. package/src/services/llm-streaming-binding.d.ts.map +0 -1
  650. package/src/services/load-args.d.ts.map +0 -1
  651. package/src/services/manifest/index.d.ts +0 -4
  652. package/src/services/manifest/index.d.ts.map +0 -1
  653. package/src/services/manifest/schema.d.ts.map +0 -1
  654. package/src/services/manifest/types.d.ts.map +0 -1
  655. package/src/services/manifest/validator.d.ts.map +0 -1
  656. package/src/services/memory-arbiter.d.ts.map +0 -1
  657. package/src/services/memory-monitor.d.ts.map +0 -1
  658. package/src/services/memory-pressure.d.ts.map +0 -1
  659. package/src/services/mtp-doctor.d.ts.map +0 -1
  660. package/src/services/network-policy.d.ts.map +0 -1
  661. package/src/services/paths.d.ts.map +0 -1
  662. package/src/services/planner-skeleton.d.ts.map +0 -1
  663. package/src/services/providers.d.ts.map +0 -1
  664. package/src/services/ram-budget.d.ts.map +0 -1
  665. package/src/services/readiness.d.ts.map +0 -1
  666. package/src/services/recommendation.d.ts.map +0 -1
  667. package/src/services/registry.d.ts.map +0 -1
  668. package/src/services/router-handler.d.ts.map +0 -1
  669. package/src/services/routing-policy.d.ts.map +0 -1
  670. package/src/services/routing-preferences.d.ts.map +0 -1
  671. package/src/services/runtime-target.d.ts.map +0 -1
  672. package/src/services/service.d.ts.map +0 -1
  673. package/src/services/session-pool.d.ts.map +0 -1
  674. package/src/services/structured-output/deterministic-repair.d.ts.map +0 -1
  675. package/src/services/structured-output.d.ts.map +0 -1
  676. package/src/services/system-memory.d.ts.map +0 -1
  677. package/src/services/types.d.ts.map +0 -1
  678. package/src/services/verify-on-device.d.ts.map +0 -1
  679. package/src/services/verify.d.ts.map +0 -1
  680. package/src/services/vision/aosp-unavailable.d.ts.map +0 -1
  681. package/src/services/vision/capacitor-llama.d.ts.map +0 -1
  682. package/src/services/vision/cloud-fallback.d.ts.map +0 -1
  683. package/src/services/vision/hash.d.ts.map +0 -1
  684. package/src/services/vision/index.d.ts.map +0 -1
  685. package/src/services/vision/llama-server.d.ts.map +0 -1
  686. package/src/services/vision/types.d.ts.map +0 -1
  687. package/src/services/vision/vast-fallback.d.ts.map +0 -1
  688. package/src/services/vision-embedding-cache.d.ts.map +0 -1
  689. package/src/services/voice/audio-frame-consumer.d.ts.map +0 -1
  690. package/src/services/voice/barge-in.d.ts.map +0 -1
  691. package/src/services/voice/cancellation-coordinator.d.ts.map +0 -1
  692. package/src/services/voice/checkpoint-manager.d.ts.map +0 -1
  693. package/src/services/voice/eager-context-builder.d.ts.map +0 -1
  694. package/src/services/voice/eliza1-eot-scorer.d.ts.map +0 -1
  695. package/src/services/voice/embedding.d.ts.map +0 -1
  696. package/src/services/voice/emotion-attribution.d.ts.map +0 -1
  697. package/src/services/voice/engine-bridge.d.ts.map +0 -1
  698. package/src/services/voice/eot-classifier-ggml.d.ts.map +0 -1
  699. package/src/services/voice/eot-classifier.d.ts.map +0 -1
  700. package/src/services/voice/errors.d.ts.map +0 -1
  701. package/src/services/voice/expressive-tags.d.ts.map +0 -1
  702. package/src/services/voice/ffi-bindings.d.ts.map +0 -1
  703. package/src/services/voice/first-line-cache.d.ts.map +0 -1
  704. package/src/services/voice/fused-eot-scorer.d.ts.map +0 -1
  705. package/src/services/voice/index.d.ts.map +0 -1
  706. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +0 -1
  707. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +0 -1
  708. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +0 -1
  709. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +0 -1
  710. package/src/services/voice/kokoro/phonemizer.d.ts.map +0 -1
  711. package/src/services/voice/kokoro/pick-runtime.d.ts.map +0 -1
  712. package/src/services/voice/kokoro/runtime-selection.d.ts +0 -92
  713. package/src/services/voice/kokoro/runtime-selection.d.ts.map +0 -1
  714. package/src/services/voice/kokoro/types.d.ts.map +0 -1
  715. package/src/services/voice/kokoro/voice-presets.d.ts.map +0 -1
  716. package/src/services/voice/kokoro/voices.d.ts.map +0 -1
  717. package/src/services/voice/lifecycle.d.ts.map +0 -1
  718. package/src/services/voice/live-diarization-session.d.ts +0 -96
  719. package/src/services/voice/live-diarization-session.d.ts.map +0 -1
  720. package/src/services/voice/mic-source.d.ts.map +0 -1
  721. package/src/services/voice/optimistic-policy.d.ts.map +0 -1
  722. package/src/services/voice/partial-stabilizer.d.ts.map +0 -1
  723. package/src/services/voice/phoneme-tokenizer.d.ts.map +0 -1
  724. package/src/services/voice/phrase-cache.d.ts.map +0 -1
  725. package/src/services/voice/phrase-chunker.d.ts.map +0 -1
  726. package/src/services/voice/pipeline-impls.d.ts.map +0 -1
  727. package/src/services/voice/pipeline.d.ts.map +0 -1
  728. package/src/services/voice/prefill-client.d.ts.map +0 -1
  729. package/src/services/voice/prefix-preserving-queue.d.ts.map +0 -1
  730. package/src/services/voice/profile-store.d.ts.map +0 -1
  731. package/src/services/voice/ring-buffer.d.ts.map +0 -1
  732. package/src/services/voice/rollback-queue.d.ts.map +0 -1
  733. package/src/services/voice/samantha-preset-placeholder.d.ts.map +0 -1
  734. package/src/services/voice/samantha-preset-regenerator.d.ts.map +0 -1
  735. package/src/services/voice/scheduler.d.ts.map +0 -1
  736. package/src/services/voice/shared-resources.d.ts.map +0 -1
  737. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +0 -1
  738. package/src/services/voice/speaker/diarizer-fused.d.ts.map +0 -1
  739. package/src/services/voice/speaker/diarizer.d.ts.map +0 -1
  740. package/src/services/voice/speaker/encoder-fused.d.ts.map +0 -1
  741. package/src/services/voice/speaker/encoder-ggml.d.ts.map +0 -1
  742. package/src/services/voice/speaker/encoder.d.ts.map +0 -1
  743. package/src/services/voice/speaker-imprint.d.ts.map +0 -1
  744. package/src/services/voice/speaker-preset-cache.d.ts.map +0 -1
  745. package/src/services/voice/system-audio-sink.d.ts.map +0 -1
  746. package/src/services/voice/transcriber.d.ts.map +0 -1
  747. package/src/services/voice/transcript-knowledge.d.ts.map +0 -1
  748. package/src/services/voice/transcript-service.d.ts.map +0 -1
  749. package/src/services/voice/transcript-store.d.ts.map +0 -1
  750. package/src/services/voice/turn-controller.d.ts.map +0 -1
  751. package/src/services/voice/types.d.ts.map +0 -1
  752. package/src/services/voice/vad.d.ts.map +0 -1
  753. package/src/services/voice/voice-budget.d.ts.map +0 -1
  754. package/src/services/voice/voice-emotion-classifier.d.ts.map +0 -1
  755. package/src/services/voice/voice-preset-format.d.ts.map +0 -1
  756. package/src/services/voice/voice-profile-artifact.d.ts.map +0 -1
  757. package/src/services/voice/voice-profile-routes.d.ts.map +0 -1
  758. package/src/services/voice/voice-settings.d.ts +0 -82
  759. package/src/services/voice/voice-settings.d.ts.map +0 -1
  760. package/src/services/voice/voice-settings.ts +0 -172
  761. package/src/services/voice/voice-state-machine.d.ts.map +0 -1
  762. package/src/services/voice/wake-word-ggml.d.ts.map +0 -1
  763. package/src/services/voice/wake-word.d.ts.map +0 -1
  764. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +0 -1
  765. package/src/services/voice-model-updater.d.ts.map +0 -1
  766. package/src/services/voice-prewarm.d.ts.map +0 -1
  767. /package/{src → dist}/actions/generate-media.d.ts +0 -0
  768. /package/{src → dist}/actions/identify-speaker.d.ts +0 -0
  769. /package/{src → dist}/actions/transcription-control.d.ts +0 -0
  770. /package/{src → dist}/index.d.ts +0 -0
  771. /package/{src → dist}/provider.d.ts +0 -0
  772. /package/{src → dist}/routes/family-member-route.d.ts +0 -0
  773. /package/{src → dist}/routes/local-inference-asr-route.d.ts +0 -0
  774. /package/{src → dist}/routes/local-inference-asr-transcribe.d.ts +0 -0
  775. /package/{src → dist}/routes/local-inference-compat-routes.d.ts +0 -0
  776. /package/{src → dist}/routes/local-inference-tts-route.d.ts +0 -0
  777. /package/{src → dist}/routes/transcript-audio-store.d.ts +0 -0
  778. /package/{src → dist}/routes/voice-first-run-routes.d.ts +0 -0
  779. /package/{src → dist}/routes/voice-models-routes.d.ts +0 -0
  780. /package/{src → dist}/routes/voice-profile-plugin-routes.d.ts +0 -0
  781. /package/{src → dist}/routes/voice-profiles-management-routes.d.ts +0 -0
  782. /package/{src → dist}/routes/voice-speaker-profile-routes.d.ts +0 -0
  783. /package/{src → dist}/runtime/embedding-manager-support.d.ts +0 -0
  784. /package/{src → dist}/runtime/embedding-presets.d.ts +0 -0
  785. /package/{src → dist}/runtime/embedding-warmup-policy.d.ts +0 -0
  786. /package/{src → dist}/services/bundled-models.d.ts +0 -0
  787. /package/{src → dist}/services/cache-bridge.d.ts +0 -0
  788. /package/{src → dist}/services/checkpoint-client.d.ts +0 -0
  789. /package/{src → dist}/services/cloud-fallback.d.ts +0 -0
  790. /package/{src → dist}/services/conversation-registry.d.ts +0 -0
  791. /package/{src → dist}/services/device-bridge.d.ts +0 -0
  792. /package/{src → dist}/services/device-resource-metrics.d.ts +0 -0
  793. /package/{src → dist}/services/external-scanner.d.ts +0 -0
  794. /package/{src → dist}/services/gpu-detect.d.ts +0 -0
  795. /package/{src → dist}/services/handler-registry.d.ts +0 -0
  796. /package/{src → dist}/services/hardware.d.ts +0 -0
  797. /package/{src → dist}/services/image-description-runtime.d.ts +0 -0
  798. /package/{src → dist}/services/imagegen/aosp-unavailable.d.ts +0 -0
  799. /package/{src → dist}/services/imagegen/backend-selector.d.ts +0 -0
  800. /package/{src → dist}/services/imagegen/coreml-unavailable.d.ts +0 -0
  801. /package/{src → dist}/services/imagegen/errors.d.ts +0 -0
  802. /package/{src → dist}/services/imagegen/index.d.ts +0 -0
  803. /package/{src → dist}/services/imagegen/mflux.d.ts +0 -0
  804. /package/{src → dist}/services/imagegen/tensorrt-unavailable.d.ts +0 -0
  805. /package/{src → dist}/services/imagegen/types.d.ts +0 -0
  806. /package/{src → dist}/services/inference-capabilities.d.ts +0 -0
  807. /package/{src → dist}/services/inference-telemetry.d.ts +0 -0
  808. /package/{src → dist}/services/kv-spill.d.ts +0 -0
  809. /package/{src → dist}/services/latency-trace.d.ts +0 -0
  810. /package/{src → dist}/services/llm-streaming-binding.d.ts +0 -0
  811. /package/{src → dist}/services/load-args.d.ts +0 -0
  812. /package/{src → dist}/services/manifest/validator.d.ts +0 -0
  813. /package/{src → dist}/services/memory-pressure.d.ts +0 -0
  814. /package/{src → dist}/services/mtp-doctor.d.ts +0 -0
  815. /package/{src → dist}/services/network-policy.d.ts +0 -0
  816. /package/{src → dist}/services/paths.d.ts +0 -0
  817. /package/{src → dist}/services/planner-skeleton.d.ts +0 -0
  818. /package/{src → dist}/services/providers.d.ts +0 -0
  819. /package/{src → dist}/services/ram-budget.d.ts +0 -0
  820. /package/{src → dist}/services/readiness.d.ts +0 -0
  821. /package/{src → dist}/services/recommendation.d.ts +0 -0
  822. /package/{src → dist}/services/routing-preferences.d.ts +0 -0
  823. /package/{src → dist}/services/runtime-target.d.ts +0 -0
  824. /package/{src → dist}/services/session-pool.d.ts +0 -0
  825. /package/{src → dist}/services/structured-output/deterministic-repair.d.ts +0 -0
  826. /package/{src → dist}/services/structured-output.d.ts +0 -0
  827. /package/{src → dist}/services/system-memory.d.ts +0 -0
  828. /package/{src → dist}/services/verify-on-device.d.ts +0 -0
  829. /package/{src → dist}/services/verify.d.ts +0 -0
  830. /package/{src → dist}/services/vision/aosp-unavailable.d.ts +0 -0
  831. /package/{src → dist}/services/vision/capacitor-llama.d.ts +0 -0
  832. /package/{src → dist}/services/vision/cloud-fallback.d.ts +0 -0
  833. /package/{src → dist}/services/vision/hash.d.ts +0 -0
  834. /package/{src → dist}/services/vision/llama-server.d.ts +0 -0
  835. /package/{src → dist}/services/vision/vast-fallback.d.ts +0 -0
  836. /package/{src → dist}/services/voice/barge-in.d.ts +0 -0
  837. /package/{src → dist}/services/voice/cancellation-coordinator.d.ts +0 -0
  838. /package/{src → dist}/services/voice/checkpoint-manager.d.ts +0 -0
  839. /package/{src → dist}/services/voice/eager-context-builder.d.ts +0 -0
  840. /package/{src → dist}/services/voice/emotion-attribution.d.ts +0 -0
  841. /package/{src → dist}/services/voice/first-line-cache.d.ts +0 -0
  842. /package/{src → dist}/services/voice/kokoro/kokoro-runtime.d.ts +0 -0
  843. /package/{src → dist}/services/voice/kokoro/phonemizer.d.ts +0 -0
  844. /package/{src → dist}/services/voice/kokoro/types.d.ts +0 -0
  845. /package/{src → dist}/services/voice/kokoro/voice-presets.d.ts +0 -0
  846. /package/{src → dist}/services/voice/kokoro/voices.d.ts +0 -0
  847. /package/{src → dist}/services/voice/lifecycle.d.ts +0 -0
  848. /package/{src → dist}/services/voice/optimistic-policy.d.ts +0 -0
  849. /package/{src → dist}/services/voice/phoneme-tokenizer.d.ts +0 -0
  850. /package/{src → dist}/services/voice/phrase-cache.d.ts +0 -0
  851. /package/{src → dist}/services/voice/phrase-chunker.d.ts +0 -0
  852. /package/{src → dist}/services/voice/pipeline-impls.d.ts +0 -0
  853. /package/{src → dist}/services/voice/pipeline.d.ts +0 -0
  854. /package/{src → dist}/services/voice/prefill-client.d.ts +0 -0
  855. /package/{src → dist}/services/voice/prefix-preserving-queue.d.ts +0 -0
  856. /package/{src → dist}/services/voice/profile-store.d.ts +0 -0
  857. /package/{src → dist}/services/voice/ring-buffer.d.ts +0 -0
  858. /package/{src → dist}/services/voice/rollback-queue.d.ts +0 -0
  859. /package/{src → dist}/services/voice/samantha-preset-placeholder.d.ts +0 -0
  860. /package/{src → dist}/services/voice/samantha-preset-regenerator.d.ts +0 -0
  861. /package/{src → dist}/services/voice/scheduler.d.ts +0 -0
  862. /package/{src → dist}/services/voice/speaker/attribution-pipeline.d.ts +0 -0
  863. /package/{src → dist}/services/voice/speaker/diarizer-fused.d.ts +0 -0
  864. /package/{src → dist}/services/voice/speaker/diarizer.d.ts +0 -0
  865. /package/{src → dist}/services/voice/speaker/encoder-fused.d.ts +0 -0
  866. /package/{src → dist}/services/voice/speaker/encoder-ggml.d.ts +0 -0
  867. /package/{src → dist}/services/voice/speaker/encoder.d.ts +0 -0
  868. /package/{src → dist}/services/voice/speaker-imprint.d.ts +0 -0
  869. /package/{src → dist}/services/voice/speaker-preset-cache.d.ts +0 -0
  870. /package/{src → dist}/services/voice/system-audio-sink.d.ts +0 -0
  871. /package/{src → dist}/services/voice/transcript-knowledge.d.ts +0 -0
  872. /package/{src → dist}/services/voice/turn-controller.d.ts +0 -0
  873. /package/{src → dist}/services/voice/voice-budget.d.ts +0 -0
  874. /package/{src → dist}/services/voice/voice-emotion-classifier.d.ts +0 -0
  875. /package/{src → dist}/services/voice/voice-profile-artifact.d.ts +0 -0
  876. /package/{src → dist}/services/voice/voice-profile-routes.d.ts +0 -0
  877. /package/{src → dist}/services/voice/voice-state-machine.d.ts +0 -0
  878. /package/{src → dist}/services/voice/wake-word.d.ts +0 -0
  879. /package/{src → dist}/services/voice/wrap-with-first-line-cache.d.ts +0 -0
  880. /package/{src → dist}/services/voice-model-updater.d.ts +0 -0
  881. /package/{src → dist}/services/voice-prewarm.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kokoro-ffi-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-ffi-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EACN,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAcjD,MAAM,WAAW,uBAAuB;IACvC,0EAA0E;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,2BAA2B,CAAC;CAClC;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACrD,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,sEAAsE;IACtE,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,uBAAuB;IA4CnC,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IA4C5E,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,gBAAgB;CASxB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kokoro-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEtE;;sCAEsC;AACtC,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IAClC,GAAG,EAAE,YAAY,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,wEAAwE;IACxE,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,GAAG,SAAS,CAAC;CAC5D;AAED;6CAC6C;AAC7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC;CAChB;AAMD,MAAM,WAAW,0BAA0B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE,0BAA0B;IAItC,UAAU,CACf,KAAK,EAAE,mBAAmB,GACxB,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IASlC,OAAO,IAAI,IAAI;CAGf;AAOD,MAAM,WAAW,wBAAwB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACtD,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,KAAK,SAAK;gBAEE,IAAI,EAAE,wBAAwB;IASpC,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAsC5E,OAAO,IAAI,IAAI;CAGf"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Phoneme streaming for Kokoro-82M.
3
+ *
4
+ * Kokoro consumes a sequence of phoneme ids (espeak-ng IPA tokenised against a
5
+ * small fixed vocab). The scheduler emits phrases at punctuation or
6
+ * `phoneme-stream` boundaries (see `voice/phrase-chunker.ts` `chunkOn`
7
+ * option). This module is the seam between those phrase boundaries and the
8
+ * model's input tensor:
9
+ *
10
+ * text → phonemizer.phonemize() → KokoroPhonemeSequence (ids) → runtime
11
+ *
12
+ * For maximum responsiveness the runtime can call `streamPhonemes()` against
13
+ * an async text iterator (chunked draft tokens) and forward each window of
14
+ * accumulated ids as soon as a phoneme boundary fires. The default `flushAt`
15
+ * is one phoneme — i.e. emit progress per id — but production deployments
16
+ * lift this to ~8 phonemes to amortise the ONNX forward pass on small
17
+ * windows. This file intentionally has no dependency on the rest of the
18
+ * voice scaffold so it can be reused by the fine-tune evaluator script.
19
+ */
20
+ import type { KokoroPhonemizer } from "./types";
21
+ export interface PhonemeStreamWindow {
22
+ /** Cumulative ids since stream start. The runtime can re-tokenise or
23
+ * carry state by id; the simplest implementation forwards the full
24
+ * window each call. */
25
+ ids: Int32Array;
26
+ /** Cumulative phoneme string for debugging / display. */
27
+ phonemes: string;
28
+ /** True for the final window in the stream. */
29
+ isFinal: boolean;
30
+ }
31
+ export interface StreamPhonemesOptions {
32
+ phonemizer: KokoroPhonemizer;
33
+ lang: string;
34
+ /** Emit a window every N new phoneme ids. Default 8 (≈ first audio after a
35
+ * short syllable cluster — matches the phrase chunker's default cap). */
36
+ flushAt?: number;
37
+ }
38
+ /**
39
+ * Phonemize an async text source and emit cumulative windows. The caller
40
+ * consumes the iterator with `for await (const window of streamPhonemes(…))`.
41
+ * A pull-style API keeps this independent of the scheduler's event loop —
42
+ * the bench harness and the eval loop both reuse it without taking on a
43
+ * scheduler dependency.
44
+ */
45
+ export declare function streamPhonemes(textChunks: AsyncIterable<string>, opts: StreamPhonemesOptions): AsyncIterable<PhonemeStreamWindow>;
46
+ /** Synchronous variant for whole-phrase callers (the scheduler dispatches
47
+ * one phrase at a time in the default `punctuation` mode). Returns the
48
+ * full id array — equivalent to draining `streamPhonemes` on a single-item
49
+ * iterator and taking the last window. */
50
+ export declare function phonemizePhrase(text: string, opts: StreamPhonemesOptions): Promise<PhonemeStreamWindow>;
51
+ //# sourceMappingURL=phoneme-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phoneme-stream.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/phoneme-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IACnC;;4BAEwB;IACxB,GAAG,EAAE,UAAU,CAAC;IAChB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;8EAC0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAuB,cAAc,CACpC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,qBAAqB,GACzB,aAAa,CAAC,mBAAmB,CAAC,CAwCpC;AAqBD;;;2CAG2C;AAC3C,wBAAsB,eAAe,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phonemizer.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/phonemizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,MAAM,SAAS,CAAC;AAuLjB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,EAAE,kBAAkB;IAEvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA2B5E;AAaD;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAG7D,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO;WAQM,OAAO,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAqBxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0B3E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,4EAA4E;AAC5E,wBAAsB,iBAAiB,CACtC,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,qDAAqD;AACrD,eAAO,MAAM,aAAa,QAAM,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * ffi (default) → KokoroFfiRuntime → in-process synthesis through the
7
7
  * fused `libelizainference` handle (the
8
8
  * `eliza_inference_kokoro_*` exports, introduced at ABI
9
- * v10; the fused library is currently ABI v11). This is
9
+ * v10; the fused library is currently ABI v12). This is
10
10
  * the SOLE synthesis path on every platform.
11
11
  * mock → KokoroMockRuntime. Tests only.
12
12
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/pick-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IACnC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;sEAEkE;IAClE,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oFAAoF;IACpF,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,wBAAwB,CAAC;IAChC,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,eAAe,GAAG,SAAS,CAc7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,mBAAmB,GACzB,qBAAqB,CAuCvB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Voice backend selection — Kokoro is the only on-device TTS backend.
3
+ *
4
+ * OmniVoice TTS was retired (it was an autoregressive LM-based synth: heavier,
5
+ * slower TTFB, and only it could voice-clone). Kokoro (StyleTTS2 / iSTFTNet,
6
+ * non-autoregressive) is faster, smaller, and ships in every bundle — desktop
7
+ * and mobile alike — so the selector collapses to a single auditable answer.
8
+ * The function + env reader are kept (rather than inlined) so the engine layer
9
+ * and tests retain one seam to ask "is a TTS backend available?".
10
+ */
11
+ export type VoiceBackendChoice = "kokoro";
12
+ /** Retained for the env override; `auto` and `kokoro` both resolve to Kokoro. */
13
+ export type VoiceBackendMode = "kokoro" | "auto";
14
+ export interface VoiceBackendInputs {
15
+ /** Caller-set mode. Defaults to `auto`; both modes resolve to Kokoro. */
16
+ mode?: VoiceBackendMode;
17
+ /** Whether Kokoro model artifacts are present on disk. The selector throws
18
+ * rather than returning a backend when this is `false` — no silent downgrade. */
19
+ kokoroAvailable: boolean;
20
+ /** True on mobile (iOS / Android) builds — informational only now. */
21
+ mobile?: boolean;
22
+ }
23
+ export interface VoiceBackendDecision {
24
+ backend: VoiceBackendChoice;
25
+ /** One-line reason — surfaced to telemetry. */
26
+ reason: string;
27
+ }
28
+ /** Resolve the env override (`ELIZA_TTS_BACKEND=kokoro|auto`). */
29
+ export declare function readVoiceBackendModeFromEnv(env?: NodeJS.ProcessEnv): VoiceBackendMode | undefined;
30
+ export declare function selectVoiceBackend(inputs: VoiceBackendInputs): VoiceBackendDecision;
31
+ //# sourceMappingURL=runtime-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-selection.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/runtime-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,yEAAyE;IACzE,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;sFACkF;IAClF,eAAe,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,wBAAgB,2BAA2B,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,gBAAgB,GAAG,SAAS,CAY9B;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,kBAAkB,GACxB,oBAAoB,CAYtB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC/B,gDAAgD;IAChD,EAAE,EAAE,aAAa,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,2GAA2G;IAC3G,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACpC,2EAA2E;IAC3E,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAChC,mEAAmE;IACnE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtE,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACrC,oDAAoD;IACpD,GAAG,EAAE,UAAU,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAU;gBACpC,OAAO,EAAE,MAAM;CAI3B;AAED,iFAAiF;AACjF,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,yBAAyB,CAAU;gBACvC,OAAO,EAAE,MAAM;CAI3B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-presets.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/voice-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,eAAe,CAkG7D,CAAC;AAIF;qEACqE;AACrE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEvE;AAED,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO9D,OAAO,EACN,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,qEAAqE;AACrE,wBAAgB,kBAAkB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEjE;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,GACV,aAAa,CAAC,eAAe,CAAC,CAEhC;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,MAAM,GACT,aAAa,CAAC,eAAe,CAAC,CAEhC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAUvE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/services/voice/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACX,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EACV,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,oBAAoB,GACpB,YAAY,GACZ,eAAe,CAAC;gBAEP,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK9D;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/C,uBAAuB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACpC,YAAY,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1E;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,IAAI,EAAE;QACjB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,OAAO,EAAE,qBAAqB,CAAC;QAC/B,MAAM,CAAC,EAAE,oBAAoB,CAAC;KAC9B;IAMD,OAAO,IAAI,mBAAmB;IAI9B;;;;;;OAMG;IACG,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;IAqDpC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD7B;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,UAAU;CAKlB"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Live on-device diarization session — the agent-process owner of an
3
+ * {@link AudioFrameConsumer} wired to the REAL fused VAD / encoder / diarizer /
4
+ * attribution stack.
5
+ *
6
+ * The Android `audioFrame` PCM stream is produced in the Capacitor WebView
7
+ * (JS renderer) but the voice FFI runs in the embedded bun agent process. The
8
+ * agent's `/api/voice/audio-frames` route pumps batched frames into the single
9
+ * session this module owns, where the consumer segments turns, runs
10
+ * diarization + speaker attribution, and emits VOICE_TURN_OBSERVED.
11
+ *
12
+ * This module is the agent-side mirror of the host smoke harness
13
+ * (`packages/app-core/scripts/voice-attribution-smoke.ts`): same real models,
14
+ * same consumer, fed live frames over HTTP instead of a WAV.
15
+ *
16
+ * Single fused engine: VAD, the WeSpeaker speaker encoder, and the pyannote
17
+ * diarizer all run through the ONE fused `libelizainference` handle via its
18
+ * `eliza_inference_vad_*` / `_speaker_*` / `_diariz_*` ABI (the user directive:
19
+ * no separate bun:ffi-musl libs). Resolution:
20
+ * - fused lib: `$ELIZA_INFERENCE_LIBRARY` (exact) or `$ELIZA_INFERENCE_LIB_DIR`
21
+ * (dir) — both exported by ElizaAgentService on Android to the app
22
+ * nativeLibraryDir.
23
+ * - context bundle root: `$ELIZA_VOICE_MODEL_DIR` (the same dir the GGUFs
24
+ * live under); the fused runtime resolves the per-model GGUFs from there.
25
+ */
26
+ import { type AttributionPipelineLike, type AudioFrameConsumerDeps, type AudioFrameEvent, type EchoReferenceProvider, type RuntimeEventSink, type TurnTranscriber, type VadSegmenter } from "./audio-frame-consumer.js";
27
+ export type { RuntimeEventSink } from "./audio-frame-consumer.js";
28
+ export interface LiveDiarizationStatus {
29
+ /** True once the consumer + real fused deps are loaded and accepting frames. */
30
+ ready: boolean;
31
+ /** Resolved fused-library path (null when it could not be resolved). */
32
+ libs: {
33
+ fusedInference: string | null;
34
+ };
35
+ /** Resolved context-bundle dir for the fused runtime. */
36
+ models: {
37
+ dir: string;
38
+ };
39
+ /** Frames received from the WebView across this session. */
40
+ framesReceived: number;
41
+ /** Frames dropped at the decode boundary. */
42
+ framesDropped: number;
43
+ /** Turns segmented + attributed so far. */
44
+ turnsObserved: number;
45
+ /** Live AEC wiring status. Echo cancellation runs only when this is true. */
46
+ aec: {
47
+ echoReferenceWired: boolean;
48
+ /** Playback→mic delay (samples @16 kHz) currently applied to align the
49
+ * far-end reference — self-calibrated from real echo when confident,
50
+ * otherwise the `ELIZA_VOICE_ECHO_DELAY_MS` seed (default 0). */
51
+ echoDelaySamples: number;
52
+ /** Peak cross-correlation [0,1] of the last accepted delay calibration;
53
+ * 0 until a confident estimate replaces the seed. */
54
+ echoDelayConfidence: number;
55
+ };
56
+ /** The most recent attributed turns (capped), for device-evidence reads. */
57
+ recentTurns: LiveDiarizationTurnSummary[];
58
+ /** Populated only when readiness failed — the precise blocker. */
59
+ error?: string;
60
+ }
61
+ /** A compact, JSON-safe summary of one attributed turn (no PCM/embeddings). */
62
+ export interface LiveDiarizationTurnSummary {
63
+ turnId: string;
64
+ startedAtMs: number;
65
+ endedAtMs: number;
66
+ samples: number;
67
+ durationMs: number;
68
+ hasSpeaker: boolean;
69
+ speakerEntityId: string | null;
70
+ speakerConfidence: number | null;
71
+ segments: number;
72
+ agentShouldSpeak: boolean | null;
73
+ nextSpeaker: string | null;
74
+ }
75
+ export interface LiveDiarizationSessionOptions {
76
+ /**
77
+ * Agent-playback PCM provider for AEC. The caller owns playback capture and
78
+ * delay calibration when supplied. Without an external provider, the session
79
+ * uses its built-in playback buffer fed by /api/voice/playback-frames.
80
+ */
81
+ echoReference?: EchoReferenceProvider | null;
82
+ }
83
+ export interface LiveDiarizationConsumerDepsInput {
84
+ vad: VadSegmenter;
85
+ pipeline: AttributionPipelineLike;
86
+ runtime: RuntimeEventSink;
87
+ transcribe?: TurnTranscriber | null;
88
+ echoReference?: EchoReferenceProvider | null;
89
+ }
90
+ export declare function buildLiveDiarizationConsumerDeps({ vad, pipeline, runtime, transcribe, echoReference, }: LiveDiarizationConsumerDepsInput): AudioFrameConsumerDeps;
91
+ /**
92
+ * Owns the single live diarization consumer for the agent process. Built
93
+ * lazily on first frame batch so it does not load voice models at boot.
94
+ */
95
+ export declare class LiveDiarizationSession {
96
+ private readonly runtime;
97
+ private readonly options;
98
+ private consumer;
99
+ private ffi;
100
+ private ctx;
101
+ private encoder;
102
+ private diarizer;
103
+ private vad;
104
+ private building;
105
+ private framesReceived;
106
+ private turnsObserved;
107
+ private readonly recentTurns;
108
+ private resolvedLibPath;
109
+ private buildError;
110
+ /** True once the fused ASR region is mmap-acquired for per-turn transcribe. */
111
+ private asrRegionAcquired;
112
+ /**
113
+ * Far-end (agent TTS playback) alignment buffer for echo cancellation
114
+ * (#9583/#9455). Fed by {@link pushPlayback}; read per mic frame via the
115
+ * consumer's `echoReference` seam. Inert (zero far-end ⇒ NLMS passthrough)
116
+ * until the device streams playback, so wiring it never regresses the
117
+ * no-playback case.
118
+ */
119
+ private readonly echoBuffer;
120
+ /**
121
+ * Playback→mic delay applied when reading the far-end reference. Seeded from
122
+ * `ELIZA_VOICE_ECHO_DELAY_MS` (default 0) and then SELF-CALIBRATED on the live
123
+ * path: once enough playback-active echo is observed, `estimateEchoDelaySamples`
124
+ * (#9586) recovers the bulk transport lag by cross-correlation and replaces the
125
+ * seed (#9583). Mutable for that reason.
126
+ */
127
+ private echoDelaySamples;
128
+ private echoDelayConfidence;
129
+ private echoDelayCalibrated;
130
+ /** Rolling near/far windows accumulated only while the far-end is active, used
131
+ * once to estimate the playback→mic delay. Cleared after a confident estimate
132
+ * and on {@link resetPlayback}. */
133
+ private calNear;
134
+ private calFar;
135
+ private calSampleCount;
136
+ constructor(runtime: RuntimeEventSink, options?: LiveDiarizationSessionOptions);
137
+ /** Ensure the real-deps consumer exists; idempotent + concurrency-safe. */
138
+ private ensureBuilt;
139
+ private build;
140
+ /**
141
+ * Build a per-turn ASR transcriber over the fused batch decoder
142
+ * (`eliza_inference_asr_transcribe`). Returns null when the fused build
143
+ * exposes no ASR decoder; acquiring the ASR mmap region is best-effort (a
144
+ * missing bundled ASR model leaves the path diarization-only rather than
145
+ * failing the whole session). One batch decode per finalized turn — the turn
146
+ * is already fully buffered for attribution, so no streaming state is needed.
147
+ */
148
+ private buildTurnTranscriber;
149
+ private recordTurn;
150
+ /**
151
+ * The far-end (agent TTS playback) reference aligned to a mic frame of
152
+ * `samples` samples — the consumer's `echoReference` seam (#9455/#9583).
153
+ * Reads the alignment buffer at the configured playback→mic delay; the slice
154
+ * is zero-filled (⇒ NLMS passthrough) until the device streams playback.
155
+ * Public so the wiring is unit-testable without the fused FFI.
156
+ */
157
+ echoReferenceFrame(timestampMs: number, samples: number): Float32Array;
158
+ /** Current self-calibrated AEC delay state (for status + tests). */
159
+ aecDelayState(): {
160
+ delaySamples: number;
161
+ confidence: number;
162
+ calibrated: boolean;
163
+ };
164
+ /**
165
+ * Self-calibrate the playback→mic delay (#9583/#9586) from real echo. Called
166
+ * per mic frame while uncalibrated: when the far-end is active (the agent is
167
+ * playing TTS), accumulate the time-aligned near/far windows; once ~0.75 s of
168
+ * playback-active audio is buffered, recover the bulk transport lag by
169
+ * cross-correlation and, if confident, replace the static seed. One-shot — the
170
+ * device's speaker→mic path is stable, so we lock the first confident estimate
171
+ * and stop re-measuring. Public so it can be unit-tested without the fused FFI.
172
+ */
173
+ observeForDelayCalibration(nearPcm: Float32Array, timestampMs: number): void;
174
+ /**
175
+ * Feed a batch of agent-playback (far-end) frames for echo cancellation. The
176
+ * device captures the agent's TTS output in the SAME base64 LE-s16 16 kHz
177
+ * mono wire format as the mic and POSTs it in real time as it renders; we
178
+ * decode + append to the alignment buffer. The device MUST also call
179
+ * {@link resetPlayback} when playback stops (or on barge-in) so the canceller
180
+ * never aligns a later mic frame to stale, no-longer-playing audio.
181
+ */
182
+ pushPlayback(frames: AudioFrameEvent[]): void;
183
+ /** Drop buffered far-end playback (playback stopped / barge-in). Also clears
184
+ * the in-progress delay-calibration window (it would otherwise straddle a
185
+ * playback gap); the already-learned delay is kept. */
186
+ resetPlayback(): void;
187
+ /** Feed a batch of WebView-captured frames; resolves once VAD has processed them. */
188
+ ingest(frames: AudioFrameEvent[]): Promise<void>;
189
+ /** Flush any open segment (call on stopAudioFrames) and await attribution. */
190
+ flush(): Promise<void>;
191
+ /** Build (if needed) and report status — the device-evidence read. */
192
+ status(): Promise<LiveDiarizationStatus>;
193
+ /** Release native handles + listeners. */
194
+ close(): Promise<void>;
195
+ }
196
+ //# sourceMappingURL=live-diarization-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-diarization-session.d.ts","sourceRoot":"","sources":["../../../src/services/voice/live-diarization-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Pure rounding + percentile helpers shared by the voice E2E harness and the
3
+ * voice workbench report (#8785). No models, filesystem, or network — just
4
+ * numeric formatting so both consumers report identical metric values.
5
+ */
6
+ export declare function round1(value: number): number;
7
+ export declare function round4(value: number): number;
8
+ /** Nearest-rank percentile over a sample (null when empty), non-finite filtered. */
9
+ export declare function percentile(values: ReadonlyArray<number>, p: number): number | null;
10
+ //# sourceMappingURL=metric-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-math.d.ts","sourceRoot":"","sources":["../../../src/services/voice/metric-math.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CACzB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,CAAC,EAAE,MAAM,GACP,MAAM,GAAG,IAAI,CAMf"}
@@ -54,7 +54,7 @@ declare abstract class BaseMicSource implements MicSource {
54
54
  protected emitError(error: Error): void;
55
55
  }
56
56
  export interface DesktopMicSourceOptions {
57
- /** Capture sample rate. Default 16 kHz (what the VAD + Qwen3-ASR expect). */
57
+ /** Capture sample rate. Default 16 kHz (what VAD + Gemma ASR expect). */
58
58
  sampleRate?: number;
59
59
  /** Frame duration in ms. Default 32 ms (one Silero window @ 16 kHz). */
60
60
  frameMs?: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mic-source.d.ts","sourceRoot":"","sources":["../../../src/services/voice/mic-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * nlms-echo-canceller.ts — PCM acoustic echo cancellation for the live
3
+ * half-duplex voice pipeline (#9455).
4
+ *
5
+ * When the agent speaks, its TTS playback leaks back into the microphone and
6
+ * corrupts ASR / VAD / diarization (the agent hears itself). This is a
7
+ * single-channel adaptive echo canceller: a normalized least-mean-squares
8
+ * (NLMS) FIR filter models the playback→mic acoustic path and subtracts the
9
+ * estimated echo from the near-end (mic) signal sample-by-sample.
10
+ *
11
+ * near-end d[n] = local_speech[n] + echo[n] (the raw mic)
12
+ * far-end x[n] = agent TTS playback (the reference)
13
+ * estimate ŷ[n] = Σ_k w[k]·x[n−k] (modeled echo)
14
+ * output e[n] = d[n] − ŷ[n] (echo-cancelled mic → ASR)
15
+ * update w[k] += μ·e[n]·x[n−k] / (‖x‖² + ε) (NLMS adaptation)
16
+ *
17
+ * All audio is 16 kHz mono Float32 [-1, 1] — the pipeline's internal format
18
+ * (see audio-frame-consumer.ts). The filter length must cover the
19
+ * playback→mic delay plus the room's reverberation tail; for tails longer than
20
+ * the filter, calibrate `delaySamples` (the bulk transport delay) so the
21
+ * adaptive taps only have to model the short residual impulse.
22
+ *
23
+ * Scope: this targets the dominant failure mode — the agent transcribing its
24
+ * own TTS while the *user is silent* (echo-only), where it achieves ~29 dB of
25
+ * echo-return-loss-enhancement. A far-end-vs-near-end double-talk detector
26
+ * freezes adaptation when a local talker is active so the filter cannot learn
27
+ * (and cancel) the user's voice; barge-in itself is handled upstream by the
28
+ * barge-in detector (which stops playback). Full double-talk residual-echo
29
+ * suppression is AEC3-class work and intentionally out of scope here.
30
+ *
31
+ * Pure DSP, zero dependencies — verified by nlms-echo-canceller.test.ts
32
+ * (ERLE on synthetic echo, passthrough, stability, reset).
33
+ */
34
+ export interface NlmsEchoCancellerOptions {
35
+ /** Adaptive FIR length in samples. 256 ≈ 16 ms of impulse response @16 kHz. */
36
+ filterTaps?: number;
37
+ /** NLMS step size in (0, 2). Larger = faster adaptation, less stable. */
38
+ mu?: number;
39
+ /** Regularization added to the reference energy to avoid divide-by-zero. */
40
+ epsilon?: number;
41
+ /**
42
+ * Bulk playback→mic transport delay in samples. The reference is consumed
43
+ * `delaySamples` ahead of the near-end so the adaptive taps only model the
44
+ * residual room impulse, not the (potentially large) transport latency.
45
+ */
46
+ delaySamples?: number;
47
+ /**
48
+ * Double-talk detector ratio. When the smoothed near-end power exceeds
49
+ * `dtdRatio`× the smoothed far-end reference power (a passive echo path
50
+ * attenuates, so echo power stays below the reference), a local talker is
51
+ * assumed active and adaptation is frozen so the filter cannot learn (and
52
+ * cancel) the user's voice. Set 0 to disable.
53
+ */
54
+ dtdRatio?: number;
55
+ /**
56
+ * Opt-in nonlinear residual-echo suppressor (#9583/#9649). After the linear
57
+ * NLMS subtracts the modeled echo, an echo-only frame (the agent is speaking,
58
+ * the user is NOT — far-end power exceeds near-end power and no double-talk)
59
+ * still carries the residual echo the finite-length filter could not remove.
60
+ * When enabled, the residual on those frames is scaled toward zero. It is
61
+ * **default-off** and never engages during double-talk or near-end-dominant
62
+ * frames, so it can never attenuate the user's voice. Pass `true` for the
63
+ * default gain or `{ gain }` to tune.
64
+ */
65
+ residualSuppression?: boolean | ResidualSuppressionOptions;
66
+ }
67
+ export interface ResidualSuppressionOptions {
68
+ /**
69
+ * Gain (0,1] applied to the residual on echo-only frames. Lower = stronger
70
+ * suppression. Default 0.15 (~−16 dB) — aggressive enough to flatten residual
71
+ * echo while leaving headroom for the gate's hysteresis.
72
+ */
73
+ gain?: number;
74
+ }
75
+ export declare class NlmsEchoCanceller {
76
+ private readonly w;
77
+ private readonly x;
78
+ private readonly taps;
79
+ private readonly mu;
80
+ private readonly eps;
81
+ private readonly delay;
82
+ private readonly dtdRatio;
83
+ /** Residual-suppressor gain, or null when the suppressor is disabled (default). */
84
+ private readonly resGain;
85
+ /** Pending far-end samples not yet aligned to a near-end sample (delay line). */
86
+ private readonly delayLine;
87
+ private xEnergy;
88
+ private peakXEnergy;
89
+ private pNear;
90
+ private pFar;
91
+ private hangover;
92
+ private lastEchoPow;
93
+ /** Stay frozen ~30 ms after the last double-talk trigger so the filter is not
94
+ * corrupted by the bursty onset/offset of the near-end talker. */
95
+ private static readonly HANGOVER_SAMPLES;
96
+ /** Per-sample decay of the far-end energy envelope (~1 s time constant) so a
97
+ * short TTS pause keeps the far-end-active gate closed through the gap. */
98
+ private static readonly PEAK_DECAY;
99
+ /** Far-end is "active" only when the instantaneous ‖x‖² is within this
100
+ * fraction (−20 dB) of the recent envelope. Below it there is no echo to
101
+ * learn, so adaptation freezes (see process()). */
102
+ private static readonly FAR_ACTIVITY_FRAC;
103
+ /** NLMS regularization as a fraction of the far-end envelope. Keeps the step
104
+ * bounded when ‖x‖² momentarily underflows, so a quiet far-end passage can't
105
+ * make the normaliser collapse to the absolute `eps` and blow the filter up. */
106
+ private static readonly REG_FRAC;
107
+ private lastResidualPow;
108
+ constructor(opts?: NlmsEchoCancellerOptions);
109
+ /**
110
+ * Cancel echo from one block of mic audio.
111
+ *
112
+ * @param nearEnd raw mic block (local speech + echo), Float32 [-1, 1]
113
+ * @param farEnd agent playback reference for the same time window. Pass an
114
+ * empty/zero array when the agent is NOT speaking — the filter
115
+ * then passes the mic through unchanged (output ≈ input).
116
+ * @returns echo-cancelled near-end block (same length as `nearEnd`).
117
+ */
118
+ process(nearEnd: Float32Array, farEnd: Float32Array): Float32Array;
119
+ /**
120
+ * Advance cheap detector/reference state while the far-end is silent without
121
+ * running the FIR echo-estimation loop. Learned filter weights are preserved,
122
+ * but stale playback samples are removed from the delay line/ring so the next
123
+ * non-empty reference frame cannot subtract an echo estimate from a previous
124
+ * utterance.
125
+ */
126
+ observeFarEndSilence(nearEnd: Float32Array): void;
127
+ /** Echo-return-loss-enhancement (dB) over the last processed block. Higher is
128
+ * better; >10 dB is a meaningful cancellation. Returns 0 when there is no
129
+ * modeled echo (agent silent) so a passthrough block reads as "no gain". */
130
+ get lastErleDb(): number;
131
+ /** Reset adaptation (e.g. when the playback path changes). */
132
+ reset(): void;
133
+ /** Shift a new far-end sample into the ring buffer, maintaining ‖x‖²
134
+ * incrementally (drop the oldest sample's energy, add the newest). */
135
+ private pushRef;
136
+ }
137
+ //# sourceMappingURL=nlms-echo-canceller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nlms-echo-canceller.d.ts","sourceRoot":"","sources":["../../../src/services/voice/nlms-echo-canceller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,wBAAwB;IACxC,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA0B;IAC1C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAWD,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;IAExB;sEACkE;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C;+EAC2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAW;IAC7C;;uDAEmD;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IACjD;;oFAEgF;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACxC,OAAO,CAAC,eAAe,CAAK;gBAEhB,IAAI,GAAE,wBAA6B;IAc/C;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,YAAY;IAiGlE;;;;;;OAMG;IACH,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAqBjD;;gFAE4E;IAC5E,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,8DAA8D;IAC9D,KAAK,IAAI,IAAI;IAab;0EACsE;IACtE,OAAO,CAAC,OAAO;CAOf"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimistic-policy.d.ts","sourceRoot":"","sources":["../../../src/services/voice/optimistic-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;4DAC4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,CAyC1D;AAED,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC3C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,2BAA2B,GAC/B,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,IAAI,GAAE,uBAA4B;IAM9C,oEAAoE;IACpE,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI7C,qCAAqC;IACrC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAI7C,oDAAoD;IACpD,OAAO,IAAI,OAAO;IAWlB;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKjD,IAAI,SAAS,IAAI,MAAM,CAEtB;CACD"}