@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/actions/generate-media.d.ts +59 -0
  4. package/dist/actions/generate-media.d.ts.map +1 -0
  5. package/dist/actions/identify-speaker.d.ts +23 -0
  6. package/dist/actions/identify-speaker.d.ts.map +1 -0
  7. package/dist/actions/transcription-control.d.ts +29 -0
  8. package/dist/actions/transcription-control.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  10. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  12. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  14. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  16. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  18. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  20. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  22. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  23. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  24. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  25. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  26. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  27. package/dist/backends/apple-foundation.d.ts +56 -0
  28. package/dist/backends/apple-foundation.d.ts.map +1 -0
  29. package/dist/index.d.ts +8 -37
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +38979 -430
  32. package/dist/index.js.map +217 -0
  33. package/dist/local-inference-routes.d.ts +47 -0
  34. package/dist/local-inference-routes.d.ts.map +1 -0
  35. package/dist/provider.d.ts +21 -0
  36. package/dist/provider.d.ts.map +1 -0
  37. package/dist/routes/compat-helpers.d.ts +18 -0
  38. package/dist/routes/compat-helpers.d.ts.map +1 -0
  39. package/dist/routes/family-member-route.d.ts +62 -0
  40. package/dist/routes/family-member-route.d.ts.map +1 -0
  41. package/dist/routes/index.d.ts +20 -0
  42. package/dist/routes/index.d.ts.map +1 -0
  43. package/dist/routes/index.js +42040 -0
  44. package/dist/routes/index.js.map +236 -0
  45. package/dist/routes/live-diarization-route.d.ts +33 -0
  46. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  47. package/dist/routes/local-inference-asr-route.d.ts +4 -0
  48. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  49. package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
  50. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  51. package/dist/routes/local-inference-compat-routes.d.ts +16 -0
  52. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  53. package/dist/routes/local-inference-tts-route.d.ts +7 -0
  54. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  56. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  57. package/dist/routes/transcript-audio-store.d.ts +15 -0
  58. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  59. package/dist/routes/transcripts-routes.d.ts +44 -0
  60. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  61. package/dist/routes/voice-first-run-routes.d.ts +62 -0
  62. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  63. package/dist/routes/voice-models-routes.d.ts +62 -0
  64. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  65. package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
  66. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  67. package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
  68. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  69. package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/dist/runtime/embedding-manager-support.d.ts +77 -0
  72. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  73. package/dist/runtime/embedding-presets.d.ts +16 -0
  74. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  75. package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
  76. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  77. package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
  78. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  79. package/dist/runtime/index.d.ts +15 -0
  80. package/dist/runtime/index.d.ts.map +1 -0
  81. package/dist/runtime/index.js +38768 -0
  82. package/dist/runtime/index.js.map +217 -0
  83. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  84. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  85. package/dist/runtime/voice-entity-binding.d.ts +113 -0
  86. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  87. package/dist/services/active-model.d.ts +310 -0
  88. package/dist/services/active-model.d.ts.map +1 -0
  89. package/dist/services/asr-provenance.d.ts +5 -0
  90. package/dist/services/asr-provenance.d.ts.map +1 -0
  91. package/dist/services/assignments.d.ts +84 -0
  92. package/dist/services/assignments.d.ts.map +1 -0
  93. package/dist/services/backend-selector.d.ts +55 -0
  94. package/dist/services/backend-selector.d.ts.map +1 -0
  95. package/dist/services/backend.d.ts +440 -0
  96. package/dist/services/backend.d.ts.map +1 -0
  97. package/dist/services/bionic-host-loader.d.ts +67 -0
  98. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  99. package/dist/services/bundled-models.d.ts +34 -0
  100. package/dist/services/bundled-models.d.ts.map +1 -0
  101. package/dist/services/cache-bridge.d.ts +206 -0
  102. package/dist/services/cache-bridge.d.ts.map +1 -0
  103. package/dist/services/catalog.d.ts +10 -0
  104. package/dist/services/catalog.d.ts.map +1 -0
  105. package/dist/services/checkpoint-client.d.ts +109 -0
  106. package/dist/services/checkpoint-client.d.ts.map +1 -0
  107. package/dist/services/checkpoint-manager.d.ts +217 -0
  108. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  109. package/dist/services/cloud-fallback.d.ts +102 -0
  110. package/dist/services/cloud-fallback.d.ts.map +1 -0
  111. package/dist/services/context-fit.d.ts +36 -0
  112. package/dist/services/context-fit.d.ts.map +1 -0
  113. package/dist/services/conversation-registry.d.ts +142 -0
  114. package/dist/services/conversation-registry.d.ts.map +1 -0
  115. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
  116. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  117. package/dist/services/device-bridge.d.ts +188 -0
  118. package/dist/services/device-bridge.d.ts.map +1 -0
  119. package/dist/services/device-resource-metrics.d.ts +149 -0
  120. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  121. package/dist/services/device-tier.d.ts +133 -0
  122. package/dist/services/device-tier.d.ts.map +1 -0
  123. package/dist/services/downloader.d.ts +94 -0
  124. package/dist/services/downloader.d.ts.map +1 -0
  125. package/dist/services/engine.d.ts +579 -0
  126. package/dist/services/engine.d.ts.map +1 -0
  127. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  128. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  129. package/dist/services/external-scanner.d.ts +17 -0
  130. package/dist/services/external-scanner.d.ts.map +1 -0
  131. package/dist/services/ffi-llm-mock.d.ts +90 -0
  132. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  133. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  134. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  135. package/dist/services/ffi-streaming-backend.d.ts +201 -0
  136. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  137. package/dist/services/ffi-streaming-runner.d.ts +146 -0
  138. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  139. package/dist/services/gpu-autotune.d.ts +150 -0
  140. package/dist/services/gpu-autotune.d.ts.map +1 -0
  141. package/dist/services/gpu-detect.d.ts +56 -0
  142. package/dist/services/gpu-detect.d.ts.map +1 -0
  143. package/dist/services/handler-registry.d.ts +72 -0
  144. package/dist/services/handler-registry.d.ts.map +1 -0
  145. package/dist/services/hardware.d.ts +63 -0
  146. package/dist/services/hardware.d.ts.map +1 -0
  147. package/dist/services/image-description-runtime.d.ts +14 -0
  148. package/dist/services/image-description-runtime.d.ts.map +1 -0
  149. package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
  150. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  151. package/dist/services/imagegen/backend-selector.d.ts +118 -0
  152. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  153. package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
  154. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  155. package/dist/services/imagegen/errors.d.ts +16 -0
  156. package/dist/services/imagegen/errors.d.ts.map +1 -0
  157. package/dist/services/imagegen/index.d.ts +58 -0
  158. package/dist/services/imagegen/index.d.ts.map +1 -0
  159. package/dist/services/imagegen/mflux.d.ts +74 -0
  160. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  161. package/dist/services/imagegen/sd-cpp.d.ts +181 -0
  162. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  163. package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  164. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  165. package/dist/services/imagegen/types.d.ts +181 -0
  166. package/dist/services/imagegen/types.d.ts.map +1 -0
  167. package/dist/services/index.d.ts +31 -0
  168. package/dist/services/index.d.ts.map +1 -0
  169. package/dist/services/index.js +39453 -0
  170. package/dist/services/index.js.map +227 -0
  171. package/dist/services/inference-capabilities.d.ts +132 -0
  172. package/dist/services/inference-capabilities.d.ts.map +1 -0
  173. package/dist/services/inference-telemetry.d.ts +59 -0
  174. package/dist/services/inference-telemetry.d.ts.map +1 -0
  175. package/dist/services/ios-llama-streaming.d.ts +119 -0
  176. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  177. package/dist/services/kv-spill.d.ts +189 -0
  178. package/dist/services/kv-spill.d.ts.map +1 -0
  179. package/dist/services/latency-trace.d.ts +346 -0
  180. package/dist/services/latency-trace.d.ts.map +1 -0
  181. package/dist/services/lib-target.d.ts +55 -0
  182. package/dist/services/lib-target.d.ts.map +1 -0
  183. package/dist/services/live-signals.d.ts +86 -0
  184. package/dist/services/live-signals.d.ts.map +1 -0
  185. package/dist/services/llama-server-metrics.d.ts +114 -0
  186. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  187. package/dist/services/llm-streaming-binding.d.ts +96 -0
  188. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  189. package/dist/services/load-args.d.ts +82 -0
  190. package/dist/services/load-args.d.ts.map +1 -0
  191. package/dist/services/manifest/index.d.ts +4 -0
  192. package/dist/services/manifest/index.d.ts.map +1 -0
  193. package/dist/services/manifest/schema.d.ts +903 -0
  194. package/dist/services/manifest/schema.d.ts.map +1 -0
  195. package/dist/services/manifest/types.d.ts +32 -0
  196. package/dist/services/manifest/types.d.ts.map +1 -0
  197. package/dist/services/manifest/validator.d.ts +66 -0
  198. package/dist/services/manifest/validator.d.ts.map +1 -0
  199. package/dist/services/memory-arbiter.d.ts +348 -0
  200. package/dist/services/memory-arbiter.d.ts.map +1 -0
  201. package/dist/services/memory-benchmark.d.ts +76 -0
  202. package/dist/services/memory-benchmark.d.ts.map +1 -0
  203. package/dist/services/memory-monitor.d.ts +128 -0
  204. package/dist/services/memory-monitor.d.ts.map +1 -0
  205. package/dist/services/memory-pressure.d.ts +130 -0
  206. package/dist/services/memory-pressure.d.ts.map +1 -0
  207. package/dist/services/mtp-doctor.d.ts +13 -0
  208. package/dist/services/mtp-doctor.d.ts.map +1 -0
  209. package/dist/services/network-policy.d.ts +127 -0
  210. package/dist/services/network-policy.d.ts.map +1 -0
  211. package/dist/services/paths.d.ts +6 -0
  212. package/dist/services/paths.d.ts.map +1 -0
  213. package/dist/services/planner-skeleton.d.ts +124 -0
  214. package/dist/services/planner-skeleton.d.ts.map +1 -0
  215. package/dist/services/providers.d.ts +38 -0
  216. package/dist/services/providers.d.ts.map +1 -0
  217. package/dist/services/ram-budget.d.ts +110 -0
  218. package/dist/services/ram-budget.d.ts.map +1 -0
  219. package/dist/services/readiness.d.ts +9 -0
  220. package/dist/services/readiness.d.ts.map +1 -0
  221. package/dist/services/recommendation.d.ts +111 -0
  222. package/dist/services/recommendation.d.ts.map +1 -0
  223. package/dist/services/registry.d.ts +33 -0
  224. package/dist/services/registry.d.ts.map +1 -0
  225. package/dist/services/router-handler.d.ts +92 -0
  226. package/dist/services/router-handler.d.ts.map +1 -0
  227. package/dist/services/routing-policy.d.ts +92 -0
  228. package/dist/services/routing-policy.d.ts.map +1 -0
  229. package/dist/services/routing-preferences.d.ts +8 -0
  230. package/dist/services/routing-preferences.d.ts.map +1 -0
  231. package/dist/services/runtime-target.d.ts +98 -0
  232. package/dist/services/runtime-target.d.ts.map +1 -0
  233. package/dist/services/service.d.ts +128 -0
  234. package/dist/services/service.d.ts.map +1 -0
  235. package/dist/services/session-pool.d.ts +72 -0
  236. package/dist/services/session-pool.d.ts.map +1 -0
  237. package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
  238. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  239. package/dist/services/structured-output/index.d.ts +2 -0
  240. package/dist/services/structured-output/index.d.ts.map +1 -0
  241. package/dist/services/structured-output.d.ts +311 -0
  242. package/dist/services/structured-output.d.ts.map +1 -0
  243. package/dist/services/system-memory.d.ts +33 -0
  244. package/dist/services/system-memory.d.ts.map +1 -0
  245. package/dist/services/types.d.ts +19 -0
  246. package/dist/services/types.d.ts.map +1 -0
  247. package/dist/services/verify-on-device.d.ts +34 -0
  248. package/dist/services/verify-on-device.d.ts.map +1 -0
  249. package/dist/services/verify.d.ts +8 -0
  250. package/dist/services/verify.d.ts.map +1 -0
  251. package/dist/services/vision/aosp-unavailable.d.ts +115 -0
  252. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  253. package/dist/services/vision/capacitor-llama.d.ts +99 -0
  254. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  255. package/dist/services/vision/cloud-fallback.d.ts +47 -0
  256. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  257. package/dist/services/vision/hash.d.ts +71 -0
  258. package/dist/services/vision/hash.d.ts.map +1 -0
  259. package/dist/services/vision/index.d.ts +95 -0
  260. package/dist/services/vision/index.d.ts.map +1 -0
  261. package/dist/services/vision/llama-server.d.ts +73 -0
  262. package/dist/services/vision/llama-server.d.ts.map +1 -0
  263. package/dist/services/vision/types.d.ts +162 -0
  264. package/dist/services/vision/types.d.ts.map +1 -0
  265. package/dist/services/vision/vast-fallback.d.ts +18 -0
  266. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  267. package/dist/services/vision-embedding-cache.d.ts +98 -0
  268. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  269. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  270. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  271. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  272. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  273. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  274. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  275. package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
  276. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  277. package/dist/services/voice/barge-in.d.ts +112 -0
  278. package/dist/services/voice/barge-in.d.ts.map +1 -0
  279. package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
  280. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  281. package/dist/services/voice/checkpoint-manager.d.ts +199 -0
  282. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  283. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  284. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  285. package/dist/services/voice/corpus-augment.d.ts +111 -0
  286. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  287. package/dist/services/voice/corpus-generator.d.ts +134 -0
  288. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  289. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  290. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  291. package/dist/services/voice/e2e-harness.d.ts +297 -0
  292. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  293. package/dist/services/voice/eager-context-builder.d.ts +170 -0
  294. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  295. package/dist/services/voice/echo-delay.d.ts +67 -0
  296. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  297. package/dist/services/voice/echo-metrics.d.ts +7 -0
  298. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  299. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  300. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  301. package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
  302. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  303. package/dist/services/voice/embedding-server.d.ts +37 -0
  304. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  305. package/dist/services/voice/embedding.d.ts +132 -0
  306. package/dist/services/voice/embedding.d.ts.map +1 -0
  307. package/dist/services/voice/emotion-attribution.d.ts +68 -0
  308. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  309. package/dist/services/voice/engine-bridge.d.ts +762 -0
  310. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  311. package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
  312. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  313. package/dist/services/voice/eot-classifier.d.ts +211 -0
  314. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  315. package/dist/services/voice/errors.d.ts +20 -0
  316. package/dist/services/voice/errors.d.ts.map +1 -0
  317. package/dist/services/voice/expressive-tags.d.ts +158 -0
  318. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  319. package/dist/services/voice/ffi-bindings.d.ts +696 -0
  320. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  321. package/dist/services/voice/first-line-cache.d.ts +181 -0
  322. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  323. package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
  324. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  325. package/dist/services/voice/index.d.ts +96 -0
  326. package/dist/services/voice/index.d.ts.map +1 -0
  327. package/dist/services/voice/kokoro/index.d.ts +24 -0
  328. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  329. package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
  330. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  331. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  332. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  333. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  334. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  335. package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  336. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  337. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  338. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  339. package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
  340. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  341. package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
  342. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  343. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  344. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  345. package/dist/services/voice/kokoro/types.d.ts +82 -0
  346. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  347. package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
  348. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  349. package/dist/services/voice/kokoro/voices.d.ts +30 -0
  350. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  351. package/dist/services/voice/lifecycle.d.ts +135 -0
  352. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  353. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  354. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  355. package/dist/services/voice/metric-math.d.ts +10 -0
  356. package/dist/services/voice/metric-math.d.ts.map +1 -0
  357. package/dist/services/voice/mic-source.d.ts +136 -0
  358. package/dist/services/voice/mic-source.d.ts.map +1 -0
  359. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  360. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  361. package/dist/services/voice/optimistic-policy.d.ts +109 -0
  362. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  363. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  364. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  365. package/dist/services/voice/partial-stabilizer.d.ts +73 -0
  366. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  367. package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
  368. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  369. package/dist/services/voice/phrase-cache.d.ts +76 -0
  370. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  371. package/dist/services/voice/phrase-chunker.d.ts +62 -0
  372. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  373. package/dist/services/voice/pipeline-impls.d.ts +151 -0
  374. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  375. package/dist/services/voice/pipeline.d.ts +216 -0
  376. package/dist/services/voice/pipeline.d.ts.map +1 -0
  377. package/dist/services/voice/prefill-client.d.ts +123 -0
  378. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  379. package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
  380. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  381. package/dist/services/voice/profile-store.d.ts +248 -0
  382. package/dist/services/voice/profile-store.d.ts.map +1 -0
  383. package/dist/services/voice/ring-buffer.d.ts +40 -0
  384. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  385. package/dist/services/voice/rollback-queue.d.ts +24 -0
  386. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  387. package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
  388. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  389. package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
  390. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  391. package/dist/services/voice/scheduler.d.ts +146 -0
  392. package/dist/services/voice/scheduler.d.ts.map +1 -0
  393. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  394. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  395. package/dist/services/voice/shared-resources.d.ts +204 -0
  396. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  397. package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  398. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  399. package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
  400. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  401. package/dist/services/voice/speaker/diarizer.d.ts +75 -0
  402. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  403. package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
  404. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  405. package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
  406. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  407. package/dist/services/voice/speaker/encoder.d.ts +37 -0
  408. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  409. package/dist/services/voice/speaker-imprint.d.ts +83 -0
  410. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  411. package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
  412. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  413. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  414. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  415. package/dist/services/voice/system-audio-sink.d.ts +73 -0
  416. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  417. package/dist/services/voice/transcriber.d.ts +244 -0
  418. package/dist/services/voice/transcriber.d.ts.map +1 -0
  419. package/dist/services/voice/transcript-knowledge.d.ts +37 -0
  420. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  421. package/dist/services/voice/transcript-service.d.ts +60 -0
  422. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  423. package/dist/services/voice/transcript-store.d.ts +64 -0
  424. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  425. package/dist/services/voice/turn-controller.d.ts +183 -0
  426. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  427. package/dist/services/voice/types.d.ts +643 -0
  428. package/dist/services/voice/types.d.ts.map +1 -0
  429. package/dist/services/voice/vad.d.ts +283 -0
  430. package/dist/services/voice/vad.d.ts.map +1 -0
  431. package/dist/services/voice/voice-budget.d.ts +241 -0
  432. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  433. package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
  434. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  435. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  436. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  437. package/dist/services/voice/voice-preset-format.d.ts +158 -0
  438. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  439. package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
  440. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  441. package/dist/services/voice/voice-profile-routes.d.ts +83 -0
  442. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  443. package/dist/services/voice/voice-scenario.d.ts +131 -0
  444. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  445. package/dist/services/voice/voice-state-machine.d.ts +364 -0
  446. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  447. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  448. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  449. package/dist/services/voice/wake-word-ggml.d.ts +100 -0
  450. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  451. package/dist/services/voice/wake-word.d.ts +255 -0
  452. package/dist/services/voice/wake-word.d.ts.map +1 -0
  453. package/dist/services/voice/wav-codec.d.ts +11 -0
  454. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  455. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  456. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  457. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  458. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  459. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  460. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  461. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  462. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  463. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  464. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  465. package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  466. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  467. package/dist/services/voice-model-updater.d.ts +240 -0
  468. package/dist/services/voice-model-updater.d.ts.map +1 -0
  469. package/dist/services/voice-prewarm.d.ts +3 -0
  470. package/dist/services/voice-prewarm.d.ts.map +1 -0
  471. package/dist/voice-workbench.d.ts +18 -0
  472. package/dist/voice-workbench.d.ts.map +1 -0
  473. package/dist/voice-workbench.js +5259 -0
  474. package/dist/voice-workbench.js.map +34 -0
  475. package/package.json +101 -15
  476. package/registry-entry.json +137 -0
  477. package/src/actions/generate-media.ts +647 -0
  478. package/src/actions/identify-speaker.ts +171 -0
  479. package/src/actions/transcription-control.test.ts +100 -0
  480. package/src/actions/transcription-control.ts +127 -0
  481. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  482. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  483. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  484. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  485. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  486. package/src/adapters/capacitor-llama/environment.ts +71 -0
  487. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  488. package/src/adapters/capacitor-llama/index.ts +831 -0
  489. package/src/adapters/capacitor-llama/loader.ts +109 -0
  490. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  491. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  492. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  493. package/src/adapters/capacitor-llama/types.ts +374 -0
  494. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  495. package/src/backends/apple-foundation.ts +127 -0
  496. package/src/index.ts +62 -0
  497. package/src/local-inference-routes.test.ts +390 -0
  498. package/src/local-inference-routes.ts +1625 -0
  499. package/src/provider.ts +1111 -0
  500. package/src/routes/compat-helpers.ts +275 -0
  501. package/src/routes/family-member-route.ts +353 -0
  502. package/src/routes/index.ts +61 -0
  503. package/src/routes/live-diarization-route.test.ts +347 -0
  504. package/src/routes/live-diarization-route.ts +198 -0
  505. package/src/routes/local-inference-asr-route.test.ts +246 -0
  506. package/src/routes/local-inference-asr-route.ts +166 -0
  507. package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
  508. package/src/routes/local-inference-asr-transcribe.ts +97 -0
  509. package/src/routes/local-inference-compat-routes.test.ts +485 -0
  510. package/src/routes/local-inference-compat-routes.ts +775 -0
  511. package/src/routes/local-inference-tts-route.test.ts +179 -0
  512. package/src/routes/local-inference-tts-route.ts +230 -0
  513. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  514. package/src/routes/native-pcm-turn-route.ts +121 -0
  515. package/src/routes/transcript-audio-store.ts +27 -0
  516. package/src/routes/transcripts-routes.test.ts +195 -0
  517. package/src/routes/transcripts-routes.ts +191 -0
  518. package/src/routes/voice-first-run-routes.ts +524 -0
  519. package/src/routes/voice-models-routes.ts +554 -0
  520. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  521. package/src/routes/voice-profiles-management-routes.ts +476 -0
  522. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  523. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  524. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  525. package/src/runtime/capacitor-llama.d.ts +25 -0
  526. package/src/runtime/embedding-manager-support.ts +497 -0
  527. package/src/runtime/embedding-presets.ts +81 -0
  528. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  529. package/src/runtime/embedding-warmup-policy.ts +48 -0
  530. package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
  531. package/src/runtime/ensure-local-inference-handler.ts +1640 -0
  532. package/src/runtime/index.ts +36 -0
  533. package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
  534. package/src/runtime/mobile-local-inference-gate.ts +99 -0
  535. package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
  536. package/src/runtime/voice-entity-binding.ts +368 -0
  537. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  538. package/src/services/README.md +71 -0
  539. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  540. package/src/services/__tests__/backend-selector.test.ts +101 -0
  541. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  542. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  543. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  544. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  545. package/src/services/__tests__/runtime-target.test.ts +176 -0
  546. package/src/services/active-model-context-fit.test.ts +125 -0
  547. package/src/services/active-model-switch-rollback.test.ts +183 -0
  548. package/src/services/active-model.ts +1416 -0
  549. package/src/services/asr-provenance.ts +68 -0
  550. package/src/services/assignment-validation.test.ts +118 -0
  551. package/src/services/assignments.test.ts +106 -0
  552. package/src/services/assignments.ts +278 -0
  553. package/src/services/backend-selector.ts +95 -0
  554. package/src/services/backend.test.ts +84 -0
  555. package/src/services/backend.ts +791 -0
  556. package/src/services/bionic-host-loader.test.ts +226 -0
  557. package/src/services/bionic-host-loader.ts +252 -0
  558. package/src/services/bundled-models.ts +129 -0
  559. package/src/services/cache-bridge.test.ts +516 -0
  560. package/src/services/cache-bridge.ts +423 -0
  561. package/src/services/catalog.test.ts +259 -0
  562. package/src/services/catalog.ts +33 -0
  563. package/src/services/checkpoint-client.ts +258 -0
  564. package/src/services/checkpoint-manager.ts +474 -0
  565. package/src/services/cloud-fallback.ts +230 -0
  566. package/src/services/context-fit.test.ts +121 -0
  567. package/src/services/context-fit.ts +113 -0
  568. package/src/services/conversation-registry.test.ts +235 -0
  569. package/src/services/conversation-registry.ts +264 -0
  570. package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
  571. package/src/services/device-bridge.ts +1237 -0
  572. package/src/services/device-resource-metrics.test.ts +98 -0
  573. package/src/services/device-resource-metrics.ts +346 -0
  574. package/src/services/device-tier.test.ts +458 -0
  575. package/src/services/device-tier.ts +502 -0
  576. package/src/services/downloader.test.ts +888 -0
  577. package/src/services/downloader.ts +1039 -0
  578. package/src/services/engine-direct-bundle.test.ts +90 -0
  579. package/src/services/engine-streaming.test.ts +80 -0
  580. package/src/services/engine.ts +2096 -0
  581. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  582. package/src/services/ensure-local-artifacts.test.ts +368 -0
  583. package/src/services/ensure-local-artifacts.ts +351 -0
  584. package/src/services/external-scanner.ts +312 -0
  585. package/src/services/ffi-llm-mock.ts +354 -0
  586. package/src/services/ffi-llm-streaming-abi.ts +445 -0
  587. package/src/services/ffi-streaming-backend.ts +418 -0
  588. package/src/services/ffi-streaming-runner.test.ts +220 -0
  589. package/src/services/ffi-streaming-runner.ts +407 -0
  590. package/src/services/ffi-unload-ordering.test.ts +166 -0
  591. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  592. package/src/services/gpu-autotune.ts +534 -0
  593. package/src/services/gpu-detect.ts +139 -0
  594. package/src/services/handler-registry.ts +240 -0
  595. package/src/services/hardware.test.ts +236 -0
  596. package/src/services/hardware.ts +438 -0
  597. package/src/services/image-description-runtime.test.ts +61 -0
  598. package/src/services/image-description-runtime.ts +118 -0
  599. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  600. package/src/services/imagegen/backend-selector.test.ts +190 -0
  601. package/src/services/imagegen/backend-selector.ts +277 -0
  602. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  603. package/src/services/imagegen/errors.ts +40 -0
  604. package/src/services/imagegen/index.ts +144 -0
  605. package/src/services/imagegen/mflux.ts +313 -0
  606. package/src/services/imagegen/sd-cpp.ts +715 -0
  607. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  608. package/src/services/imagegen/types.ts +193 -0
  609. package/src/services/index.ts +229 -0
  610. package/src/services/inference-capabilities.test.ts +75 -0
  611. package/src/services/inference-capabilities.ts +204 -0
  612. package/src/services/inference-telemetry.ts +143 -0
  613. package/src/services/ios-llama-streaming.ts +248 -0
  614. package/src/services/kv-spill.test.ts +222 -0
  615. package/src/services/kv-spill.ts +357 -0
  616. package/src/services/latency-trace.test.ts +266 -0
  617. package/src/services/latency-trace.ts +844 -0
  618. package/src/services/lib-target.test.ts +145 -0
  619. package/src/services/lib-target.ts +102 -0
  620. package/src/services/live-signals.test.ts +132 -0
  621. package/src/services/live-signals.ts +177 -0
  622. package/src/services/llama-server-metrics.test.ts +168 -0
  623. package/src/services/llama-server-metrics.ts +304 -0
  624. package/src/services/llm-streaming-binding.ts +136 -0
  625. package/src/services/load-args.ts +81 -0
  626. package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
  627. package/src/services/manifest/index.ts +72 -0
  628. package/src/services/manifest/manifest.test.ts +791 -0
  629. package/src/services/manifest/schema.ts +761 -0
  630. package/src/services/manifest/types.ts +61 -0
  631. package/src/services/manifest/validator.ts +633 -0
  632. package/src/services/memory-arbiter.test.ts +558 -0
  633. package/src/services/memory-arbiter.ts +991 -0
  634. package/src/services/memory-benchmark.test.ts +91 -0
  635. package/src/services/memory-benchmark.ts +354 -0
  636. package/src/services/memory-monitor.test.ts +232 -0
  637. package/src/services/memory-monitor.ts +309 -0
  638. package/src/services/memory-pressure.ts +414 -0
  639. package/src/services/mtp-doctor.ts +86 -0
  640. package/src/services/network-policy.ts +346 -0
  641. package/src/services/paths.ts +25 -0
  642. package/src/services/planner-skeleton.ts +175 -0
  643. package/src/services/providers.ts +507 -0
  644. package/src/services/ram-budget-cache.test.ts +164 -0
  645. package/src/services/ram-budget.ts +309 -0
  646. package/src/services/readiness.test.ts +87 -0
  647. package/src/services/readiness.ts +238 -0
  648. package/src/services/recommendation.test.ts +216 -0
  649. package/src/services/recommendation.ts +671 -0
  650. package/src/services/registry.ts +157 -0
  651. package/src/services/required-kernels-gate.test.ts +64 -0
  652. package/src/services/router-handler.test.ts +45 -0
  653. package/src/services/router-handler.ts +426 -0
  654. package/src/services/routing-policy.test.ts +352 -0
  655. package/src/services/routing-policy.ts +367 -0
  656. package/src/services/routing-preferences.ts +17 -0
  657. package/src/services/runtime-target.ts +154 -0
  658. package/src/services/service.test.ts +223 -0
  659. package/src/services/service.ts +750 -0
  660. package/src/services/session-pool.ts +153 -0
  661. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  662. package/src/services/structured-output/deterministic-repair.ts +443 -0
  663. package/src/services/structured-output/index.ts +4 -0
  664. package/src/services/structured-output.test.ts +483 -0
  665. package/src/services/structured-output.ts +712 -0
  666. package/src/services/system-memory.test.ts +47 -0
  667. package/src/services/system-memory.ts +67 -0
  668. package/src/services/transcription-priority.test.ts +211 -0
  669. package/src/services/types.ts +59 -0
  670. package/src/services/verify-on-device.test.ts +87 -0
  671. package/src/services/verify-on-device.ts +127 -0
  672. package/src/services/verify.ts +13 -0
  673. package/src/services/vision/aosp-unavailable.ts +163 -0
  674. package/src/services/vision/capacitor-llama.ts +255 -0
  675. package/src/services/vision/cloud-fallback.test.ts +243 -0
  676. package/src/services/vision/cloud-fallback.ts +268 -0
  677. package/src/services/vision/fallback-chain.test.ts +86 -0
  678. package/src/services/vision/hash.ts +157 -0
  679. package/src/services/vision/index.ts +251 -0
  680. package/src/services/vision/llama-server.ts +177 -0
  681. package/src/services/vision/types.ts +163 -0
  682. package/src/services/vision/vast-fallback.ts +127 -0
  683. package/src/services/vision-embedding-cache.ts +189 -0
  684. package/src/services/voice/VOICE_WORKBENCH.md +133 -0
  685. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  686. package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
  687. package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
  688. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  689. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  690. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  691. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  692. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  693. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  694. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  695. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  696. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  697. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  698. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
  699. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  700. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  701. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  702. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  703. package/src/services/voice/asr-timed.real.test.ts +139 -0
  704. package/src/services/voice/audio-frame-consumer.test.ts +669 -0
  705. package/src/services/voice/audio-frame-consumer.ts +651 -0
  706. package/src/services/voice/barge-in.test.ts +244 -0
  707. package/src/services/voice/barge-in.ts +335 -0
  708. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  709. package/src/services/voice/cancellation-coordinator.ts +269 -0
  710. package/src/services/voice/checkpoint-manager.ts +401 -0
  711. package/src/services/voice/checkpoint-policy.ts +336 -0
  712. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  713. package/src/services/voice/corpus-augment.test.ts +276 -0
  714. package/src/services/voice/corpus-augment.ts +451 -0
  715. package/src/services/voice/corpus-generator.test.ts +201 -0
  716. package/src/services/voice/corpus-generator.ts +413 -0
  717. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  718. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  719. package/src/services/voice/diarization-error-rate.ts +249 -0
  720. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  721. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  722. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  723. package/src/services/voice/e2e-harness.test.ts +182 -0
  724. package/src/services/voice/e2e-harness.ts +902 -0
  725. package/src/services/voice/eager-context-builder.ts +262 -0
  726. package/src/services/voice/echo-delay.test.ts +118 -0
  727. package/src/services/voice/echo-delay.ts +135 -0
  728. package/src/services/voice/echo-metrics.test.ts +17 -0
  729. package/src/services/voice/echo-metrics.ts +20 -0
  730. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  731. package/src/services/voice/echo-reference-buffer.ts +165 -0
  732. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  733. package/src/services/voice/embedding-server.ts +200 -0
  734. package/src/services/voice/embedding.test.ts +131 -0
  735. package/src/services/voice/embedding.ts +242 -0
  736. package/src/services/voice/emotion-attribution.test.ts +129 -0
  737. package/src/services/voice/emotion-attribution.ts +361 -0
  738. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  739. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  740. package/src/services/voice/engine-bridge.test.ts +384 -0
  741. package/src/services/voice/engine-bridge.ts +2343 -0
  742. package/src/services/voice/eot-classifier-ggml.ts +569 -0
  743. package/src/services/voice/eot-classifier.test.ts +98 -0
  744. package/src/services/voice/eot-classifier.ts +422 -0
  745. package/src/services/voice/errors.ts +34 -0
  746. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  747. package/src/services/voice/expressive-tags.test.ts +102 -0
  748. package/src/services/voice/expressive-tags.ts +405 -0
  749. package/src/services/voice/ffi-bindings.test.ts +735 -0
  750. package/src/services/voice/ffi-bindings.ts +3387 -0
  751. package/src/services/voice/first-line-cache.ts +725 -0
  752. package/src/services/voice/fused-eot-scorer.ts +139 -0
  753. package/src/services/voice/index.ts +502 -0
  754. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
  755. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
  756. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  757. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  758. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  759. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  760. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  761. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
  762. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  763. package/src/services/voice/kokoro/index.ts +79 -0
  764. package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
  765. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  766. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  767. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  768. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  769. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  770. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  771. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  772. package/src/services/voice/kokoro/runtime-selection.ts +64 -0
  773. package/src/services/voice/kokoro/types.ts +95 -0
  774. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  775. package/src/services/voice/kokoro/voices.ts +64 -0
  776. package/src/services/voice/lifecycle.test.ts +315 -0
  777. package/src/services/voice/lifecycle.ts +301 -0
  778. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  779. package/src/services/voice/live-diarization-session.ts +622 -0
  780. package/src/services/voice/metric-math.test.ts +61 -0
  781. package/src/services/voice/metric-math.ts +25 -0
  782. package/src/services/voice/mic-source.test.ts +210 -0
  783. package/src/services/voice/mic-source.ts +503 -0
  784. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  785. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  786. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  787. package/src/services/voice/optimistic-policy.test.ts +101 -0
  788. package/src/services/voice/optimistic-policy.ts +192 -0
  789. package/src/services/voice/optimistic-rollback.ts +343 -0
  790. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  791. package/src/services/voice/partial-stabilizer.ts +140 -0
  792. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  793. package/src/services/voice/phrase-cache.test.ts +242 -0
  794. package/src/services/voice/phrase-cache.ts +186 -0
  795. package/src/services/voice/phrase-chunker.test.ts +239 -0
  796. package/src/services/voice/phrase-chunker.ts +281 -0
  797. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  798. package/src/services/voice/pipeline-impls.test.ts +292 -0
  799. package/src/services/voice/pipeline-impls.ts +315 -0
  800. package/src/services/voice/pipeline.ts +504 -0
  801. package/src/services/voice/prefill-client.ts +316 -0
  802. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  803. package/src/services/voice/profile-store.ts +887 -0
  804. package/src/services/voice/real-audio-decode.test.ts +148 -0
  805. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  806. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  807. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  808. package/src/services/voice/ring-buffer.test.ts +129 -0
  809. package/src/services/voice/ring-buffer.ts +123 -0
  810. package/src/services/voice/rollback-queue.ts +74 -0
  811. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  812. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  813. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  814. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  815. package/src/services/voice/scheduler.t2.test.ts +141 -0
  816. package/src/services/voice/scheduler.ts +927 -0
  817. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  818. package/src/services/voice/self-voice-imprint.ts +102 -0
  819. package/src/services/voice/shared-resources.ts +343 -0
  820. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  821. package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
  822. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  823. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  824. package/src/services/voice/speaker/diarizer.ts +218 -0
  825. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  826. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  827. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  828. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  829. package/src/services/voice/speaker/encoder.ts +105 -0
  830. package/src/services/voice/speaker-imprint.test.ts +185 -0
  831. package/src/services/voice/speaker-imprint.ts +312 -0
  832. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  833. package/src/services/voice/speaker-preset-cache.ts +195 -0
  834. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  835. package/src/services/voice/system-audio-sink.test.ts +29 -0
  836. package/src/services/voice/system-audio-sink.ts +366 -0
  837. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  838. package/src/services/voice/transcriber.test.ts +392 -0
  839. package/src/services/voice/transcriber.ts +704 -0
  840. package/src/services/voice/transcript-knowledge.test.ts +68 -0
  841. package/src/services/voice/transcript-knowledge.ts +75 -0
  842. package/src/services/voice/transcript-service.test.ts +195 -0
  843. package/src/services/voice/transcript-service.ts +205 -0
  844. package/src/services/voice/transcript-store.test.ts +189 -0
  845. package/src/services/voice/transcript-store.ts +164 -0
  846. package/src/services/voice/turn-controller.test.ts +575 -0
  847. package/src/services/voice/turn-controller.ts +596 -0
  848. package/src/services/voice/types.ts +699 -0
  849. package/src/services/voice/vad.test.ts +498 -0
  850. package/src/services/voice/vad.ts +832 -0
  851. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  852. package/src/services/voice/voice-budget.test.ts +415 -0
  853. package/src/services/voice/voice-budget.ts +635 -0
  854. package/src/services/voice/voice-duet.test.ts +375 -0
  855. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  856. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  857. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  858. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  859. package/src/services/voice/voice-preload-predictor.ts +113 -0
  860. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  861. package/src/services/voice/voice-preset-format.test.ts +75 -0
  862. package/src/services/voice/voice-preset-format.ts +713 -0
  863. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  864. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  865. package/src/services/voice/voice-profile-artifact.ts +518 -0
  866. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  867. package/src/services/voice/voice-profile-routes.ts +425 -0
  868. package/src/services/voice/voice-scenario.test.ts +159 -0
  869. package/src/services/voice/voice-scenario.ts +280 -0
  870. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  871. package/src/services/voice/voice-state-machine.ts +727 -0
  872. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  873. package/src/services/voice/voice-workbench-report.ts +367 -0
  874. package/src/services/voice/voice-workbench.test.ts +158 -0
  875. package/src/services/voice/voice.test.ts +1070 -0
  876. package/src/services/voice/wake-word-ggml.ts +319 -0
  877. package/src/services/voice/wake-word.test.ts +298 -0
  878. package/src/services/voice/wake-word.ts +554 -0
  879. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  880. package/src/services/voice/wav-codec.test.ts +32 -0
  881. package/src/services/voice/wav-codec.ts +101 -0
  882. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  883. package/src/services/voice/workbench-entrypoint.ts +88 -0
  884. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  885. package/src/services/voice/workbench-headless-runner.ts +396 -0
  886. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  887. package/src/services/voice/workbench-logic-services.ts +184 -0
  888. package/src/services/voice/workbench-real-services.ts +629 -0
  889. package/src/services/voice/workbench-scenarios.ts +407 -0
  890. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  891. package/src/services/voice-model-updater.ts +724 -0
  892. package/src/services/voice-prewarm.ts +51 -0
  893. package/src/voice-workbench.ts +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-bindings.d.ts","sourceRoot":"","sources":["../../../src/services/voice/ffi-bindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * First-line LRU TTS cache (disk-tier, voice-scoped).
3
+ *
4
+ * The in-RAM `PhraseCache` is the hot tier (keyed on text alone, single voice
5
+ * per scheduler). This disk-tier sits behind it and is keyed on
6
+ * (algoVersion, provider, voiceId, voiceRevision, sampleRate, codec,
7
+ * voiceSettingsFingerprint, normalizedText)
8
+ * so the F3 bug in `.swarm/VOICE_WAVE_2.md` (Kokoro→ElevenLabs voice swap
9
+ * replaying Kokoro audio) is impossible by construction: swapping the active
10
+ * voice changes `voiceId` and therefore changes the cache key.
11
+ *
12
+ * Storage layout (anchored to `resolveStateDir()`):
13
+ * <stateDir>/cache/tts-first-line/
14
+ * ├── index.sqlite -- LRU manifest
15
+ * └── blobs/
16
+ * <provider>/<voiceId>/<voiceRevision>/<keyHash>.<ext>
17
+ *
18
+ * Index schema:
19
+ * See `INDEX_SCHEMA_SQL` below.
20
+ *
21
+ * Eviction: LRU by `last_accessed_at_ms`, bounded by a configurable byte
22
+ * budget (default 64 MB), per-entry cap (default 256 KB), TTL (default 30 d).
23
+ *
24
+ * Safety rules (see R4 §6):
25
+ * - empty `voiceRevision` rejected at insert.
26
+ * - cancelled / errored synth never reaches `put`.
27
+ * - non-default `voiceSettingsFingerprint` produces a different key.
28
+ * - `realtime` / non-deterministic provider models live on a per-call
29
+ * bypass list (callers consult `firstLineCacheBypassFromEnv`).
30
+ *
31
+ * Concurrency: SQLite is opened in WAL mode for many-readers / single-writer
32
+ * across the runtime, dashboard server, and any spawned coding-agent
33
+ * processes that emit speech. Blob writes go through a temp file + atomic
34
+ * rename so partials never reach the index.
35
+ *
36
+ * SQLite resolution mirrors `packages/app-core/src/api/training-benchmarks.ts`:
37
+ * try `node:sqlite` (Node ≥22.5), then `bun:sqlite` (Bun). Neither runtime
38
+ * ships both. When neither is present the cache silently no-ops (`get` returns
39
+ * null, `put` returns false) — the caller's fallback path (synthesize fresh)
40
+ * still works.
41
+ */
42
+ import { FIRST_SENTENCE_MAX_WORDS, FIRST_SENTENCE_SNIP_VERSION, type FirstSentenceSnipResult, firstSentenceSnip, wordCount } from "@elizaos/shared";
43
+ /**
44
+ * Logical cache key. The on-disk filename + index row are keyed on
45
+ * `keyHash`, computed deterministically from this record.
46
+ */
47
+ export interface FirstLineCacheKey {
48
+ /** Pinned to `FIRST_SENTENCE_SNIP_VERSION`; bumping it invalidates every entry. */
49
+ readonly algoVersion: string;
50
+ readonly provider: string;
51
+ readonly voiceId: string;
52
+ /** sha256 of voice pack + model file (local) or `client.voices.get`
53
+ * settings hash (cloud-side). MUST be non-empty. */
54
+ readonly voiceRevision: string;
55
+ readonly sampleRate: number;
56
+ readonly codec: "opus" | "mp3" | "wav" | "pcm_f32" | "ogg" | "flac";
57
+ /** sha256 of `{stability, similarityBoost, style, useSpeakerBoost, speed,
58
+ * pitch, ...}` JSON normalised by `fingerprintVoiceSettings`. */
59
+ readonly voiceSettingsFingerprint: string;
60
+ /** Output of `normalizeForKey(snip)`. */
61
+ readonly normalizedText: string;
62
+ }
63
+ /** Stored row + bytes. */
64
+ export interface FirstLineCacheEntry extends FirstLineCacheKey {
65
+ /** Encoded payload bytes. */
66
+ bytes: Uint8Array;
67
+ /** Raw (un-normalised) snip — kept for DEBUG logs only. */
68
+ rawText: string;
69
+ /** Negotiated content-type, e.g. `audio/mpeg`, `audio/opus`. */
70
+ contentType: string;
71
+ /** Synthesized audio length, used for player buffering math. */
72
+ durationMs: number;
73
+ /** Unicode-aware word count over `normalizedText`. */
74
+ wordCount: number;
75
+ /** Epoch-ms of last access; updated on get(). */
76
+ lastAccessedAtMs: number;
77
+ /** Epoch-ms of original synthesis. */
78
+ generatedAtMs: number;
79
+ /** Diagnostic counter, incremented on every get(). */
80
+ hitCount: number;
81
+ }
82
+ export interface FirstLineCacheOptions {
83
+ /** Root directory; defaults to `<stateDir>/cache/tts-first-line/`. */
84
+ rootDir?: string;
85
+ /** Total byte budget on disk; defaults to 64 MB. */
86
+ maxBytes?: number;
87
+ /** Per-entry byte cap; defaults to 256 KB. */
88
+ maxBytesPerEntry?: number;
89
+ /** Soft TTL in days; defaults to 30. */
90
+ ttlDays?: number;
91
+ /** When true, get/put both no-op (used by tests + emergency kill-switch). */
92
+ disabled?: boolean;
93
+ }
94
+ export interface PutInput extends FirstLineCacheKey {
95
+ bytes: Uint8Array;
96
+ rawText: string;
97
+ contentType: string;
98
+ durationMs: number;
99
+ wordCount?: number;
100
+ }
101
+ /**
102
+ * Comma-separated provider names that bypass the cache entirely.
103
+ * Default: empty (none).
104
+ * Set `ELIZA_TTS_CACHE_BYPASS_PROVIDERS="omnivoice,kokoro"` to skip those.
105
+ */
106
+ export declare function firstLineCacheBypassFromEnv(): ReadonlySet<string>;
107
+ /**
108
+ * Deterministic hash of the cache key. Stable across processes.
109
+ */
110
+ export declare function hashCacheKey(key: FirstLineCacheKey): string;
111
+ /**
112
+ * Stable sha256 hex of an arbitrary settings object — used as
113
+ * `voiceSettingsFingerprint`. Object keys are sorted before serialisation so
114
+ * the order in which the caller built the object doesn't affect the hash.
115
+ */
116
+ export declare function fingerprintVoiceSettings(settings: Record<string, unknown> | null | undefined): string;
117
+ export declare function computeLocalVoiceRevision(files: ReadonlyArray<string>): Promise<string>;
118
+ /** Test-only — clear the voice-revision memoisation. */
119
+ export declare function _resetVoiceRevisionMemoForTesting(): void;
120
+ export interface FirstLineCacheStats {
121
+ entries: number;
122
+ bytes: number;
123
+ maxBytes: number;
124
+ dbReady: boolean;
125
+ }
126
+ export declare class FirstLineCache {
127
+ private readonly rootDir;
128
+ private readonly blobsDir;
129
+ private readonly indexPath;
130
+ private readonly maxBytes;
131
+ private readonly maxBytesPerEntry;
132
+ private readonly ttlMs;
133
+ private readonly disabled;
134
+ private db;
135
+ private initialised;
136
+ private initFailed;
137
+ constructor(opts?: FirstLineCacheOptions);
138
+ get isEnabled(): boolean;
139
+ /**
140
+ * Lazy-init the SQLite index and blob directory. Returns `false` if
141
+ * neither `node:sqlite` nor `bun:sqlite` is available — the cache then
142
+ * no-ops on every call.
143
+ */
144
+ private ensureInit;
145
+ /**
146
+ * Look up a cached entry. Returns null on miss. Touches `lastAccessedAtMs`
147
+ * + `hitCount` on hit. Lazy-reads the blob bytes from disk.
148
+ */
149
+ get(key: FirstLineCacheKey): FirstLineCacheEntry | null;
150
+ has(key: FirstLineCacheKey): boolean;
151
+ /**
152
+ * Store an entry. Returns true on success, false when rejected (bad key,
153
+ * over-budget per-entry, sqlite unavailable, etc.).
154
+ *
155
+ * Per R4 §6: `voiceRevision` MUST be non-empty (otherwise stale bytes
156
+ * could survive a voice re-publish). `bytes.length === 0` is rejected
157
+ * too — we don't cache empty audio (likely a cancelled synthesis).
158
+ */
159
+ put(input: PutInput): boolean;
160
+ /**
161
+ * Delete one entry by key. Removes both row and blob. Idempotent.
162
+ */
163
+ delete(key: FirstLineCacheKey): boolean;
164
+ /**
165
+ * Sweep entries older than the TTL. Returns the number of entries removed.
166
+ */
167
+ sweep(now?: number): number;
168
+ stats(): FirstLineCacheStats;
169
+ close(): void;
170
+ private evictOverflow;
171
+ private resolveBlobAbs;
172
+ }
173
+ /**
174
+ * Per-process singleton. Tests should construct their own `FirstLineCache`
175
+ * pointing at a temp dir instead of using this one.
176
+ */
177
+ export declare function getSharedFirstLineCache(): FirstLineCache;
178
+ /** Test-only — reset the process-wide singleton. */
179
+ export declare function _resetSharedFirstLineCacheForTesting(): void;
180
+ export { FIRST_SENTENCE_MAX_WORDS, FIRST_SENTENCE_SNIP_VERSION, type FirstSentenceSnipResult, firstSentenceSnip, wordCount, };
181
+ //# sourceMappingURL=first-line-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-line-cache.d.ts","sourceRoot":"","sources":["../../../src/services/voice/first-line-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Fused FFI end-of-turn scorer (ABI v11).
3
+ *
4
+ * The fused replacement for the retired node-llama-cpp `controlledEvaluate()`
5
+ * path the EOT classifiers depended on. Computes P(`<end_of_turn>` next | partial
6
+ * transcript) through the single `libelizainference` handle: tokenize the
7
+ * Gemma-formatted partial transcript, then one causal forward pass
8
+ * (`eliza_inference_llm_eot_score`) reads the next-token probability of the
9
+ * end-of-turn marker. No separate model weights, no sampling loop, and no KV
10
+ * growth on the chat session — the dedicated native scoring context clears its
11
+ * KV per call so scores are independent.
12
+ */
13
+ import type { ElizaInferenceContextHandle, ElizaInferenceFfi } from "./ffi-bindings";
14
+ export interface FfiEotScorerOptions {
15
+ /** The loaded fused inference binding (must expose the v11 EOT symbols). */
16
+ ffi: ElizaInferenceFfi;
17
+ /** Resolves the live inference context handle (the loaded text bundle). */
18
+ getContext: () => ElizaInferenceContextHandle;
19
+ /** Max prompt tokens kept (tail-truncated). LiveKit's recipe uses 128. */
20
+ maxHistoryTokens?: number;
21
+ /** Model label for telemetry. */
22
+ modelLabel?: string;
23
+ }
24
+ export interface FfiEotScoreResult {
25
+ /** Probability of `<end_of_turn>` as the next token, ∈ [0, 1]. */
26
+ probability: number;
27
+ /** Wall-clock model latency for this scoring call. */
28
+ latencyMs: number;
29
+ /** Number of prompt tokens evaluated. */
30
+ promptTokens: number;
31
+ }
32
+ /**
33
+ * Stateful EOT scorer bound to a loaded fused text model. The `<end_of_turn>`
34
+ * token id is resolved once and cached. Safe to keep across many voice turns.
35
+ */
36
+ export declare class FfiEotScorer {
37
+ private readonly ffi;
38
+ private readonly getContext;
39
+ private readonly maxHistoryTokens;
40
+ readonly modelLabel: string;
41
+ private endOfTurnTokenId;
42
+ constructor(options: FfiEotScorerOptions);
43
+ /**
44
+ * True only when the fused build wires the v11 EOT scorer AND the tokenizer
45
+ * it depends on. A v10 (or older) library returns false.
46
+ */
47
+ static isSupported(ffi: ElizaInferenceFfi | null | undefined): boolean;
48
+ private resolveEndOfTurn;
49
+ score(partialTranscript: string): Promise<FfiEotScoreResult>;
50
+ }
51
+ //# sourceMappingURL=fused-eot-scorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fused-eot-scorer.d.ts","sourceRoot":"","sources":["../../../src/services/voice/fused-eot-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EACX,2BAA2B,EAC3B,iBAAiB,EACjB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,mBAAmB;IACnC,4EAA4E;IAC5E,GAAG,EAAE,iBAAiB,CAAC;IACvB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,2BAA2B,CAAC;IAC9C,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IACjC,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,gBAAgB,CAAuB;gBAEnC,OAAO,EAAE,mBAAmB;IAOxC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAUtE,OAAO,CAAC,gBAAgB;IAsBlB,KAAK,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2ClE"}
@@ -0,0 +1,96 @@
1
+ export { type AttributedTurn, type AttributedTurnListener, type AttributionPipelineLike, AUDIO_FRAME_PIPELINE_SAMPLE_RATE, AudioFrameConsumer, type AudioFrameConsumerConfig, type AudioFrameConsumerDeps, AudioFrameDecodeError, type AudioFrameEvent, decodeAudioFramePcm, type RuntimeEventSink, type VadSegmenter, } from "./audio-frame-consumer";
2
+ export { BargeInController, type BargeInControllerConfig, type BargeInListener, type CancelSignal, } from "./barge-in";
3
+ export { type CoordinatorRuntime, VoiceCancellationCoordinator, type VoiceCancellationCoordinatorOptions, } from "./cancellation-coordinator";
4
+ export { type CheckpointHandle, CheckpointHandleInvalidError, CheckpointManager, type CheckpointManagerLike, type CheckpointManagerOptions, MockCheckpointManager, type MockCheckpointSnapshot, type MockSnapshotSource, } from "./checkpoint-manager";
5
+ export { computeDiarizationErrorRate, type DerOptions, type DerResult, type DiarizationSegment, diarizationWithinBudget, } from "./diarization-error-rate";
6
+ export { type BuildDeterministicFn, type BuildMessageDependentFn, type ContextPartial, EagerContextBuilder, type EagerContextBuilderOptions, type FullContext, mergeContext, } from "./eager-context-builder";
7
+ export { DEFAULT_PLAYBACK_DELAY_MS, type EchoDelayEstimate, type EchoDelayOptions, estimateEchoDelaySamples, PLATFORM_PLAYBACK_DELAY_DEFAULTS, platformPlaybackDelayMs, platformPlaybackDelaySamples, } from "./echo-delay";
8
+ export { computeErle } from "./echo-metrics";
9
+ export { EchoReferenceBuffer, type EchoReferenceBufferOptions, } from "./echo-reference-buffer";
10
+ export type { LlamaContextLike as Eliza1EotLlamaContext, LlamaContextSequenceLike as Eliza1EotLlamaSequence, LlamaModelLike as Eliza1EotLlamaModel, } from "./eliza1-eot-scorer";
11
+ export { Eliza1EotScorer, formatEotPrompt as formatEliza1EotPrompt, } from "./eliza1-eot-scorer";
12
+ export { buildLocalEmbeddingRoute, EMBEDDING_DIR_REL_PATH, EMBEDDING_FULL_DIM, EMBEDDING_MATRYOSHKA_DIMS, isValidEmbeddingDim, type LocalEmbeddingRoute, type LocalEmbeddingSource, POOLED_TEXT_EMBEDDING_TIERS, resolveLocalEmbeddingSource, truncateMatryoshka, } from "./embedding";
13
+ export { attributeVoiceEmotion, type VoiceEmotionAsrFeatures, type VoiceEmotionAttribution, type VoiceEmotionAttributionInput, type VoiceEmotionAttributionMethod, type VoiceEmotionAudioFeatures, type VoiceEmotionEvidence, } from "./emotion-attribution";
14
+ export { decodeMonoPcm16Wav, defaultLifecycleLoaders, EngineVoiceBridge, type EngineVoiceBridgeOptions, encodeMonoPcm16Wav, FfiOmniVoiceBackend, StubOmniVoiceBackend, type VoiceTurnEvents, } from "./engine-bridge";
15
+ export { Eliza1EotClassifier, type Eliza1EotScoreResult, type Eliza1EotScorerOptions, EOT_COMMIT_SILENCE_MS, EOT_COMMIT_THRESHOLD, EOT_HANGOVER_EXTENSION_MS, EOT_MID_CLAUSE_THRESHOLD, EOT_TENTATIVE_SILENCE_MS, EOT_TENTATIVE_THRESHOLD, type EotClassifier, HeuristicEotClassifier, LIVEKIT_TURN_DETECTOR_EN_REVISION, LIVEKIT_TURN_DETECTOR_INTL_REVISION, RemoteEotClassifier, type RemoteEotClassifierOptions, turnDetectorRevisionForTier, turnSignalFromProbability, type VoiceNextSpeaker, type VoiceTurnSignal, } from "./eot-classifier";
16
+ export { applyGemmaUserTemplate, createBundledLiveKitGgmlTurnDetector, DEFAULT_LIVEKIT_TURN_DETECTOR_GGML_DIR, DEFAULT_LIVEKIT_TURN_DETECTOR_GGUF_EN, DEFAULT_LIVEKIT_TURN_DETECTOR_GGUF_INTL, EotGgmlUnavailableError, LIVEKIT_END_OF_TURN_TOKEN, LiveKitGgmlTurnDetector, type LiveKitGgmlTurnDetectorOptions, turnDetectorGgufForTier, } from "./eot-classifier-ggml";
17
+ export { VoiceStartupError } from "./errors";
18
+ export * from "./ffi-bindings";
19
+ export { _resetSharedFirstLineCacheForTesting, _resetVoiceRevisionMemoForTesting, computeLocalVoiceRevision, FIRST_SENTENCE_MAX_WORDS, FIRST_SENTENCE_SNIP_VERSION, FirstLineCache, type FirstLineCacheEntry, type FirstLineCacheKey, type FirstLineCacheOptions, type FirstLineCacheStats, type FirstSentenceSnipResult, fingerprintVoiceSettings, firstLineCacheBypassFromEnv, firstSentenceSnip, getSharedFirstLineCache, hashCacheKey, type PutInput, wordCount, } from "./first-line-cache";
20
+ export { type ArmedResources, type TextResources, VoiceLifecycle, VoiceLifecycleError, type VoiceLifecycleEvents, type VoiceLifecycleLoaders, type VoiceLifecycleState, } from "./lifecycle";
21
+ export { DesktopMicSource, type DesktopMicSourceOptions, PushMicSource, pipeMicToRingBuffer, resolveDesktopRecorder, } from "./mic-source";
22
+ export { NlmsEchoCanceller, type NlmsEchoCancellerOptions, } from "./nlms-echo-canceller";
23
+ export { DEFAULT_OPTIMISTIC_EOT_THRESHOLD, OptimisticGenerationPolicy, type OptimisticPolicyOptions, type PowerSourceState, type ResolveOptimisticPolicyArgs, resolveOptimisticPolicyEnabled, resolvePowerSourceState, } from "./optimistic-policy";
24
+ export { createDefaultPhonemeTokenizer, type Phoneme, type PhonemeTokenizer, RuleBasedEnglishPhonemeTokenizer, } from "./phoneme-tokenizer";
25
+ export { type CachedPhraseAudio, canonicalizePhraseText, DEFAULT_PHRASE_CACHE_SEED, FIRST_AUDIO_FILLERS, PhraseCache, } from "./phrase-cache";
26
+ export { chunkTokens, PhraseChunker } from "./phrase-chunker";
27
+ export { type DraftProposer, splitTranscriptToTokens, type TargetVerifier, VoicePipeline, type VoicePipelineConfig, type VoicePipelineDeps, type VoicePipelineEvents, } from "./pipeline";
28
+ export { MissingAsrTranscriber, MtpDraftProposer, MtpTargetVerifier, type MtpTextRunner, mtpTextRunner, } from "./pipeline-impls";
29
+ export { type PrefillOptimisticArgs, type PrefillOptimisticOptions, type PrefillOptimisticResult, prefillOptimistic, } from "./prefill-client";
30
+ export { PrefixPreservingQueue, type RollbackResult, type TaggedAudioChunk, } from "./prefix-preserving-queue";
31
+ export { isOutlier, VOICE_PROFILE_RECORD_SCHEMA_VERSION, type VoiceImprintMatchHandle, type VoiceProfileAudioRef, type VoiceProfileConsentState, type VoiceProfileObservation, type VoiceProfileRecord, VoiceProfileStore, type VoiceProfileStoreOptions, welfordUpdate, welfordVariance, } from "./profile-store";
32
+ export { InMemoryAudioSink, PcmRingBuffer } from "./ring-buffer";
33
+ export { type RollbackEvent, RollbackQueue } from "./rollback-queue";
34
+ export { type SchedulerDeps, type SchedulerEvents, VoiceScheduler, } from "./scheduler";
35
+ export { createMtpDraftHandle, type KernelSet, type MmapRegionHandle, type MtpDraftHandle, type RefCountedResource, type SchedulerSlot, SharedResourceRegistry, type SharedTokenizer, } from "./shared-resources";
36
+ export { type VoiceAttributionOutput, VoiceAttributionPipeline, type VoiceAttributionPipelineDeps, type VoiceAttributionRequest, } from "./speaker/attribution-pipeline";
37
+ export { classifyFramesToSegments, type Diarizer, type DiarizerOutput, DiarizerUnavailableError, type LocalSpeakerSegment, PYANNOTE_CLASS_COUNT, PYANNOTE_CLASS_TO_SPEAKERS, PYANNOTE_FRAME_STRIDE_MS, PYANNOTE_FRAMES_PER_WINDOW, PYANNOTE_SAMPLE_RATE, PYANNOTE_SEGMENTATION_3_FP32_MODEL_ID, PYANNOTE_SEGMENTATION_3_INT8_MODEL_ID, PYANNOTE_WINDOW_SECONDS, type PyannoteDiarizerModelId, } from "./speaker/diarizer";
38
+ export { FusedDiarizer, type FusedDiarizerOptions, } from "./speaker/diarizer-fused";
39
+ export { averageEmbeddings, type SpeakerEncoder, SpeakerEncoderUnavailableError, WESPEAKER_EMBEDDING_DIM, WESPEAKER_MIN_SAMPLES, WESPEAKER_RESNET34_LM_FP32_MODEL_ID, WESPEAKER_RESNET34_LM_INT8_MODEL_ID, WESPEAKER_SAMPLE_RATE, type WespeakerModelId, } from "./speaker/encoder";
40
+ export { FusedSpeakerEncoder, type FusedSpeakerEncoderOptions, } from "./speaker/encoder-fused";
41
+ export { SPEAKER_GGML_EMBEDDING_DIM, SPEAKER_GGML_MIN_SAMPLES, SPEAKER_GGML_SAMPLE_RATE, SpeakerEncoderGgmlUnavailableError, voiceSpeakerDistance, } from "./speaker/encoder-ggml";
42
+ export { type AttributedVoiceObservation, attributeVoiceImprintObservations, cosineSimilarity, DEFAULT_VOICE_IMPRINT_MATCH_THRESHOLD, matchVoiceImprint, normalizeVoiceEmbedding, type SpeakerAttributionResult, updateVoiceImprintCentroid, type VoiceImprintCentroidUpdate, type VoiceImprintMatch, type VoiceImprintObservationInput, type VoiceImprintProfile, voiceSpeakerFromImprintMatch, } from "./speaker-imprint";
43
+ export { DEFAULT_VOICE_ID, DEFAULT_VOICE_PRESET_REL_PATH, type LoadedPresetBundle, type PresetBundlePaths, SpeakerPresetCache, type SpeakerPresetCacheOptions, voicePresetPath, } from "./speaker-preset-cache";
44
+ export { SystemAudioSink, type SystemAudioSinkOptions, WavFileAudioSink, type WavFileAudioSinkOptions, } from "./system-audio-sink";
45
+ export { ASR_SAMPLE_RATE, AsrUnavailableError, BaseStreamingTranscriber, type CreateStreamingTranscriberOptions, createStreamingTranscriber, FfiBatchTranscriber, type FfiBatchTranscriberOptions, FfiStreamingTranscriber, ffiSupportsStreamingAsr, resampleLinear, } from "./transcriber";
46
+ export { type VoiceGenerateRequest, VoiceTurnController, type VoiceTurnControllerConfig, type VoiceTurnControllerDeps, type VoiceTurnControllerEvents, type VoiceTurnOutcome, } from "./turn-controller";
47
+ export * from "./types";
48
+ export { createSileroVadDetector, createVadDetector, type ExternalVadAdapter, GgmlSileroVad, NativeSileroVad, type ResolvedVadProvider, RmsEnergyGate, type RmsEnergyGateConfig, resolveSileroVadPath, resolveVadProvider, rms, VadDetector, type VadDetectorConfig, type VadLike, type VadProviderId, type VadProviderPreference, VadUnavailableError, vadProviderOrder, } from "./vad";
49
+ export { type AllocationPriority, assessVoiceBundleFits, BudgetExhaustedError, type BudgetReservation, createVoiceBudget, createVoiceBudgetForTest, DEFAULT_VOICE_BUNDLE_RESERVE_MB, pickVoiceTierSlot, priorityClassForRole, type ReservationSnapshot, VOICE_ENSEMBLE_BUDGETS, type VoiceBudget, type VoiceBundleFitDecision, type VoiceEnsembleBudget, type VoiceTierSlot, voiceEnsemblePeakMb, voiceEnsembleSteadyStateMb, } from "./voice-budget";
50
+ export { type ArbiterPreloader, VoicePreloadPredictor, type VoicePreloadPredictorOptions, } from "./voice-preload-predictor";
51
+ export { readVoicePresetFile, VOICE_PRESET_MAGIC, type VoicePresetFile, VoicePresetFormatError, type VoicePresetSeedPhrase, writeVoicePresetFile, } from "./voice-preset-format";
52
+ export { analyzeVoiceProfileWav, canonicalVoiceProfileJson, createVoiceProfileArtifact, VOICE_PROFILE_ARTIFACT_SCHEMA_VERSION, VOICE_PROFILE_FEATURE_EMBEDDING_MODEL, type VoiceProfileArtifact, type VoiceProfileArtifactSample, type VoiceProfileArtifactStatus, type VoiceProfileArtifactVerification, type VoiceProfileAudioFeatures, type VoiceProfileConsent, type VoiceProfileReferenceMetadata, type VoiceProfileSampleInput, verifyVoiceProfileArtifact, } from "./voice-profile-artifact";
53
+ export { type DrafterAbortReason, type DrafterHandle, type StartDrafterFn, type VoiceState, type VoiceStateEvent, VoiceStateMachine, type VoiceStateMachineEvents, type VoiceStateMachineOptions, } from "./voice-state-machine";
54
+ export { GgmlWakeWordModel, isPlaceholderWakeWordHead, loadBundledWakeWordModel, OPENWAKEWORD_DEFAULT_HEAD, OPENWAKEWORD_DIR_REL_PATH, OPENWAKEWORD_GGUF_REL_PATH, OPENWAKEWORD_PLACEHOLDER_HEADS, OpenWakeWordDetector, resolveWakeWordModel, type WakeWordConfig, type WakeWordModel, type WakeWordModelPaths, WakeWordUnavailableError, } from "./wake-word";
55
+ export { type TtsBytes, type TtsHandler, type TtsHandlerInput, type TtsHandlerOutput, type TtsResolvedContext, type WrapOptions, wrapWithFirstLineCache, } from "./wrap-with-first-line-cache";
56
+ /**
57
+ * Voice on/off invariants (binding for every consumer of this module):
58
+ *
59
+ * 1. Voice is OFF by default — text + drafter only. Before
60
+ * `EngineVoiceBridge.start()` there are no voice resources in RAM.
61
+ * After `start()` but before `VoiceLifecycle.arm()`, only the tiny
62
+ * default speaker preset, phrase seed metadata, and scheduler
63
+ * scaffolding are live. TTS/ASR weight regions are NOT mapped or
64
+ * re-paged until `VoiceLifecycle.arm()` calls the fused ABI's
65
+ * `mmap_acquire`.
66
+ *
67
+ * 2. Shared resources between text and voice (one instance each per
68
+ * engine, refcounted by `SharedResourceRegistry`):
69
+ * - tokenizer (Eliza-1/OmniVoice share a vocabulary)
70
+ * - mmap regions for weights (deduplicated by absolute path)
71
+ * - the fused kernel set (TurboQuant/QJL/Polar live in the
72
+ * same shipped llama.cpp library after the fusion build)
73
+ * - the scheduler queue (one queue, prioritised across surfaces)
74
+ * - the MTP drafter (always wired — see AGENTS.md §3 #4)
75
+ *
76
+ * Text and voice keep SEPARATE KV caches (different layer counts,
77
+ * different head configs, different quantizations — AGENTS.md §4
78
+ * "shared KV cache scheduling, not shared KV memory").
79
+ *
80
+ * 3. `arm()` lazily loads TTS + ASR via mmap; `disarm()` issues a real
81
+ * page-eviction call (`madvise(MADV_DONTNEED)` on Linux/Android,
82
+ * `madvise(MADV_FREE_REUSABLE)` on Apple, `VirtualUnlock` +
83
+ * `OfferVirtualMemory` on Windows). The speaker preset and phrase
84
+ * cache stay in a small LRU after disarm — they're KB-scale.
85
+ *
86
+ * 4. Hardware-resource exhaustion (RAM pressure, OS page eviction
87
+ * refusal, mmap fail, kernel missing) MUST surface as a
88
+ * `VoiceLifecycleError` with a structured `code`. There is NO
89
+ * silent fallback to text-only and NO automatic downgrade to a
90
+ * smaller voice model — see AGENTS.md §3.
91
+ *
92
+ * 5. Illegal lifecycle transitions throw `VoiceLifecycleError` with
93
+ * code `"illegal-transition"`. The state is a discriminated
94
+ * union, never a string.
95
+ */
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/voice/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Public barrel for the Kokoro-82M TTS adapter.
3
+ *
4
+ * External callers (the engine layer, the bench harness, tests) should
5
+ * import from `./kokoro` rather than reaching into individual files. The
6
+ * internal layout may change; this surface is stable.
7
+ */
8
+ export type { KokoroTtsBackendDeps } from "./kokoro-backend";
9
+ export { KokoroTtsBackend } from "./kokoro-backend";
10
+ export type { KokoroFfiRuntimeOptions } from "./kokoro-ffi-runtime";
11
+ export { KokoroFfiRuntime } from "./kokoro-ffi-runtime";
12
+ export type { KokoroMockRuntimeOptions, KokoroPythonRuntimeOptions, KokoroRuntime, KokoroRuntimeChunk, KokoroRuntimeInputs, } from "./kokoro-runtime";
13
+ export { KOKORO_GGUF_REL_PATH, KokoroMockRuntime, KokoroPythonRuntime, } from "./kokoro-runtime";
14
+ export type { PhonemeStreamWindow, StreamPhonemesOptions, } from "./phoneme-stream";
15
+ export { phonemizePhrase, streamPhonemes, } from "./phoneme-stream";
16
+ export { FallbackG2PPhonemizer, KOKORO_PAD_ID, NpmPhonemizePhonemizer, resolvePhonemizer, } from "./phonemizer";
17
+ export type { KokoroBackendDecision, KokoroBackendId, KokoroBackendInputs, } from "./pick-runtime";
18
+ export { pickKokoroRuntimeBackend, readKokoroBackendFromEnv, } from "./pick-runtime";
19
+ export type { VoiceBackendChoice, VoiceBackendDecision, VoiceBackendInputs, VoiceBackendMode, } from "./runtime-selection";
20
+ export { readVoiceBackendModeFromEnv, selectVoiceBackend, } from "./runtime-selection";
21
+ export type { KokoroBackendOptions, KokoroModelLayout, KokoroPhonemeSequence, KokoroPhonemizer, KokoroVoiceId, KokoroVoicePack, } from "./types";
22
+ export { KokoroModelMissingError, KokoroPhonemizerError, } from "./types";
23
+ export { findKokoroVoice, KOKORO_DEFAULT_VOICE_ID, KOKORO_VOICE_PACKS, listKokoroVoiceIds, listKokoroVoicesByLang, listKokoroVoicesByTag, resolveKokoroVoiceOrDefault, } from "./voices";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,eAAe,EACf,cAAc,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,qBAAqB,EACrB,eAAe,EACf,mBAAmB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,2BAA2B,EAC3B,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,eAAe,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,UAAU,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Kokoro-82M TTS backend.
3
+ *
4
+ * Implements the same `OmniVoiceBackend + StreamingTtsBackend` seam that
5
+ * `FfiOmniVoiceBackend` (the OmniVoice path) satisfies, so a
6
+ * `VoiceScheduler` instance does not need to know which TTS family it is
7
+ * driving. The runtime selection layer (`runtime-selection.ts`) picks
8
+ * between this and `FfiOmniVoiceBackend` based on hardware tier and the
9
+ * caller's first-audio-latency target.
10
+ *
11
+ * The actual model inference is delegated to a `KokoroRuntime` instance
12
+ * (GGUF / mock) — this class owns:
13
+ * - phonemizer resolution + per-phrase phonemize call,
14
+ * - voice-pack resolution against `SpeakerPreset.voiceId`,
15
+ * - streaming-protocol bookkeeping (cancel signal polling, final tail).
16
+ *
17
+ * No fallback sludge: if the runtime is unavailable, the backend throws
18
+ * on first synthesis rather than emitting silent zero PCM (AGENTS.md §3).
19
+ */
20
+ import type { AudioChunk, OmniVoiceBackend, Phrase, SpeakerPreset, StreamingTtsBackend, TtsPcmChunk } from "../types";
21
+ import type { KokoroRuntime } from "./kokoro-runtime";
22
+ import type { KokoroBackendOptions } from "./types";
23
+ export interface KokoroTtsBackendDeps extends KokoroBackendOptions {
24
+ /** The concrete model runner. Wire `KokoroFfiRuntime` (in-process fused
25
+ * libelizainference) in production and `KokoroMockRuntime` in tests. */
26
+ runtime: KokoroRuntime;
27
+ }
28
+ /**
29
+ * Wall-clock budget for time-to-first-audio (TTFA) on the Kokoro path for a
30
+ * mobile-class tier (0.8b/2b/4b — where Kokoro is the *exclusive* backend per
31
+ * `ELIZA_1_VOICE_BACKENDS`). TTFA is measured to the first **audible** chunk:
32
+ * the first non-empty sub-phrase PCM slice the scheduler can begin playing,
33
+ * NOT the whole-phrase synthesis latency. The re-chunking in
34
+ * `synthesizeStream` (one runtime forward → `streamingChunkSamples` slices) is
35
+ * exactly what makes those two numbers differ — the listener hears audio after
36
+ * the first slice, well before the phrase finishes decoding.
37
+ *
38
+ * Conservative gate (catches gross regressions without CI flakiness): real
39
+ * Kokoro-82M first-phrase TTFB is ~97 ms on a warm desktop handle; mobile CPU
40
+ * plus phonemize headroom lands comfortably under this ceiling.
41
+ */
42
+ export declare const KOKORO_MOBILE_TTFA_BUDGET_MS = 700;
43
+ /**
44
+ * `KokoroTtsBackend` is a streaming-only TTS backend. The model produces
45
+ * the full waveform in one forward, but we surface it as one body chunk +
46
+ * tail so the scheduler protocol is identical for both backends.
47
+ */
48
+ export declare class KokoroTtsBackend implements OmniVoiceBackend, StreamingTtsBackend {
49
+ readonly id: "kokoro";
50
+ private readonly runtime;
51
+ private readonly defaultVoiceId;
52
+ private readonly streamingChunkSamples;
53
+ private phonemizer;
54
+ private readonly phonemizerOverride?;
55
+ constructor(deps: KokoroTtsBackendDeps);
56
+ /** Native sample rate of the model output (24 kHz for Kokoro v1.0). */
57
+ get sampleRate(): number;
58
+ /** Always true — `KokoroTtsBackend` satisfies `StreamingTtsBackend`. */
59
+ supportsStreamingTts(): boolean;
60
+ /**
61
+ * One-shot synthesis. Drives the streaming path internally and
62
+ * concatenates chunks. Cancellation observed at chunk boundaries.
63
+ */
64
+ synthesize(args: {
65
+ phrase: Phrase;
66
+ preset: SpeakerPreset;
67
+ cancelSignal: {
68
+ cancelled: boolean;
69
+ };
70
+ onKernelTick?: () => void;
71
+ }): Promise<AudioChunk>;
72
+ synthesizeStream(args: {
73
+ phrase: Phrase;
74
+ preset: SpeakerPreset;
75
+ cancelSignal: {
76
+ cancelled: boolean;
77
+ };
78
+ onChunk: (chunk: TtsPcmChunk) => boolean | undefined;
79
+ onKernelTick?: () => void;
80
+ }): Promise<{
81
+ cancelled: boolean;
82
+ }>;
83
+ dispose(): void;
84
+ private resolveVoice;
85
+ private ensurePhonemizer;
86
+ }
87
+ //# sourceMappingURL=kokoro-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kokoro-backend.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,EACX,oBAAoB,EAGpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IACjE;6EACyE;IACzE,OAAO,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,gBAAgB,EAAE,mBAAmB;IAC7E,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAmB;gBAE3C,IAAI,EAAE,oBAAoB;IAQtC,uEAAuE;IACvE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,wEAAwE;IACxE,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,aAAa,CAAC;QACtB,YAAY,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;KAC1B,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCjB,gBAAgB,CAAC,IAAI,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,aAAa,CAAC;QACtB,YAAY,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QACrC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,GAAG,SAAS,CAAC;QACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;KAC1B,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAkEnC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,YAAY;YASN,gBAAgB;CAM9B"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * On-disk discovery for the Kokoro-only voice mode. Probes
3
+ * `<stateDir>/local-inference/models/kokoro/` (or `$ELIZA_KOKORO_MODEL_DIR`)
4
+ * for a Kokoro GGUF model file plus at least one voice `.bin` under
5
+ * `voices/`. Callers can pass an explicit model root to probe bundle-local
6
+ * Kokoro artifacts first. Returns null when anything is missing — no
7
+ * auto-download (AGENTS.md §3). GGUF-only: the ONNX path has been retired
8
+ * (see `runtimeKind` below).
9
+ *
10
+ * TRANSPORT NOTE — Kokoro synthesizes in-process through the fused
11
+ * `libelizainference` handle (`eliza_inference_kokoro_*`, added at ABI v10), the same
12
+ * dlopen()-ed lib as OmniVoice. The fork links Kokoro's native engine
13
+ * (`tools/kokoro/kokoro_lib`, its own GGUF reader + iSTFT decoder) into the
14
+ * fused build, and `KokoroFfiRuntime` drives it via `kokoroLoad` /
15
+ * `kokoroSynthesize`. This is the canonical path on every platform and the
16
+ * only one that ships on iOS / Google Play (those forbid the app opening a
17
+ * local TCP socket). The legacy `KokoroGgufRuntime` — POST `/v1/audio/speech`
18
+ * on a Kokoro-capable llama-server (the MTP gateway launched with
19
+ * `--kokoro-model`) — stays as an explicit dev/desktop opt-in
20
+ * (`KOKORO_BACKEND=fork`) and is never resolved on the mobile path. The GGUF
21
+ * is produced by the fork's `tools/kokoro/convert_kokoro_pth_to_gguf.py`.
22
+ *
23
+ * Env overrides:
24
+ * ELIZA_KOKORO_MODEL_DIR — directory root
25
+ * ELIZA_KOKORO_MODEL_FILE — exact filename inside the root
26
+ * (ONNX or GGUF; the loader auto-detects)
27
+ * ELIZA_KOKORO_DEFAULT_VOICE_ID — default voice id (e.g. `af_same`, `af_bella`)
28
+ */
29
+ import type { KokoroModelLayout } from "./types";
30
+ /** Canonical Kokoro v1.0 output sample rate. */
31
+ export declare const KOKORO_DEFAULT_SAMPLE_RATE = 24000;
32
+ /** True iff the candidate filename routes to the fused GGUF path. */
33
+ export declare function isKokoroGgufFile(filename: string): boolean;
34
+ export interface KokoroEngineDiscoveryResult {
35
+ layout: KokoroModelLayout;
36
+ /**
37
+ * Resolved default voice id. Prefers the catalog default
38
+ * (`KOKORO_DEFAULT_VOICE_ID` = `af_same`, Samantha) when its preset is on
39
+ * disk; falls back loudly to `KOKORO_FALLBACK_VOICE_ID` (`af_bella`) when
40
+ * Samantha's preset has not been produced yet; otherwise picks the first
41
+ * voice pack whose `.bin` is actually staged.
42
+ */
43
+ defaultVoiceId: string;
44
+ /**
45
+ * Resolved runtime kind. Always `"gguf"` — only GGUF model files are
46
+ * accepted by the discovery (ONNX paths have been retired).
47
+ */
48
+ runtimeKind: "gguf";
49
+ }
50
+ /** Returns the on-disk directory the discovery probes. */
51
+ export declare function kokoroEngineModelDir(rootOverride?: string): string;
52
+ /**
53
+ * Probe disk for a usable Kokoro layout. Returns null when any required
54
+ * piece is missing — the engine then falls back to its existing behaviour
55
+ * (fused omnivoice or `StubOmniVoiceBackend`).
56
+ */
57
+ export declare function resolveKokoroEngineConfig(rootOverride?: string): KokoroEngineDiscoveryResult | null;
58
+ //# sourceMappingURL=kokoro-engine-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kokoro-engine-discovery.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-engine-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,SAAS,CAAC;AAOlE,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAiBjD,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,CAAC,EAAE,MAAM,GACnB,2BAA2B,GAAG,IAAI,CAuBpC"}