@elizaos/plugin-local-inference 2.0.3-beta.2 → 2.0.3-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. package/README.md +84 -10
  2. package/dist/actions/generate-media.d.ts.map +1 -0
  3. package/dist/actions/identify-speaker.d.ts.map +1 -0
  4. package/dist/actions/transcription-control.d.ts.map +1 -0
  5. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  6. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  7. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  8. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  10. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  12. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  14. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  16. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  18. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  20. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  22. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  23. package/dist/backends/apple-foundation.d.ts +56 -0
  24. package/dist/backends/apple-foundation.d.ts.map +1 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +39647 -0
  27. package/dist/index.js.map +217 -0
  28. package/{src → dist}/local-inference-routes.d.ts +9 -0
  29. package/dist/local-inference-routes.d.ts.map +1 -0
  30. package/dist/provider.d.ts.map +1 -0
  31. package/{src → dist}/routes/compat-helpers.d.ts +1 -1
  32. package/dist/routes/compat-helpers.d.ts.map +1 -0
  33. package/dist/routes/family-member-route.d.ts.map +1 -0
  34. package/{src → dist}/routes/index.d.ts +1 -0
  35. package/dist/routes/index.d.ts.map +1 -0
  36. package/dist/routes/index.js +42040 -0
  37. package/dist/routes/index.js.map +236 -0
  38. package/{src → dist}/routes/live-diarization-route.d.ts +7 -0
  39. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  40. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  41. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  42. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  43. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  44. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  45. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  46. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  47. package/{src → dist}/routes/transcripts-routes.d.ts +8 -0
  48. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  49. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  50. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  51. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  52. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  53. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  54. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  55. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  56. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  57. package/{src → dist}/runtime/ensure-local-inference-handler.d.ts +8 -0
  58. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  59. package/{src → dist}/runtime/index.d.ts +1 -1
  60. package/dist/runtime/index.d.ts.map +1 -0
  61. package/dist/runtime/index.js +38768 -0
  62. package/dist/runtime/index.js.map +217 -0
  63. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  64. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  65. package/{src → dist}/runtime/voice-entity-binding.d.ts +10 -0
  66. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  67. package/{src → dist}/services/active-model.d.ts +28 -0
  68. package/dist/services/active-model.d.ts.map +1 -0
  69. package/dist/services/asr-provenance.d.ts +5 -0
  70. package/dist/services/asr-provenance.d.ts.map +1 -0
  71. package/{src → dist}/services/assignments.d.ts +16 -3
  72. package/dist/services/assignments.d.ts.map +1 -0
  73. package/dist/services/backend-selector.d.ts +55 -0
  74. package/dist/services/backend-selector.d.ts.map +1 -0
  75. package/{src → dist}/services/backend.d.ts +110 -16
  76. package/dist/services/backend.d.ts.map +1 -0
  77. package/{src → dist}/services/bionic-host-loader.d.ts +21 -0
  78. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  79. package/dist/services/bundled-models.d.ts.map +1 -0
  80. package/dist/services/cache-bridge.d.ts.map +1 -0
  81. package/dist/services/catalog.d.ts +10 -0
  82. package/dist/services/catalog.d.ts.map +1 -0
  83. package/dist/services/checkpoint-client.d.ts.map +1 -0
  84. package/dist/services/checkpoint-manager.d.ts +217 -0
  85. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  86. package/dist/services/cloud-fallback.d.ts.map +1 -0
  87. package/dist/services/context-fit.d.ts +36 -0
  88. package/dist/services/context-fit.d.ts.map +1 -0
  89. package/dist/services/conversation-registry.d.ts.map +1 -0
  90. package/{src → dist}/services/desktop-fused-ffi-backend-runtime.d.ts +22 -6
  91. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  92. package/dist/services/device-bridge.d.ts.map +1 -0
  93. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  94. package/{src → dist}/services/device-tier.d.ts +19 -1
  95. package/dist/services/device-tier.d.ts.map +1 -0
  96. package/{src → dist}/services/downloader.d.ts +16 -4
  97. package/dist/services/downloader.d.ts.map +1 -0
  98. package/{src → dist}/services/engine.d.ts +43 -4
  99. package/dist/services/engine.d.ts.map +1 -0
  100. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  101. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  102. package/dist/services/external-scanner.d.ts.map +1 -0
  103. package/dist/services/ffi-llm-mock.d.ts +90 -0
  104. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  105. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  106. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  107. package/{src → dist}/services/ffi-streaming-backend.d.ts +28 -7
  108. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  109. package/{src → dist}/services/ffi-streaming-runner.d.ts +24 -0
  110. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  111. package/dist/services/gpu-autotune.d.ts +150 -0
  112. package/dist/services/gpu-autotune.d.ts.map +1 -0
  113. package/dist/services/gpu-detect.d.ts.map +1 -0
  114. package/dist/services/handler-registry.d.ts.map +1 -0
  115. package/dist/services/hardware.d.ts.map +1 -0
  116. package/dist/services/image-description-runtime.d.ts.map +1 -0
  117. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  118. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  119. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  120. package/dist/services/imagegen/errors.d.ts.map +1 -0
  121. package/dist/services/imagegen/index.d.ts.map +1 -0
  122. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  123. package/{src → dist}/services/imagegen/sd-cpp.d.ts +1 -0
  124. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  125. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  126. package/dist/services/imagegen/types.d.ts.map +1 -0
  127. package/{src → dist}/services/index.d.ts +3 -1
  128. package/dist/services/index.d.ts.map +1 -0
  129. package/dist/services/index.js +39453 -0
  130. package/dist/services/index.js.map +227 -0
  131. package/dist/services/inference-capabilities.d.ts.map +1 -0
  132. package/dist/services/inference-telemetry.d.ts.map +1 -0
  133. package/dist/services/ios-llama-streaming.d.ts +119 -0
  134. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  135. package/dist/services/kv-spill.d.ts.map +1 -0
  136. package/dist/services/latency-trace.d.ts.map +1 -0
  137. package/dist/services/lib-target.d.ts +55 -0
  138. package/dist/services/lib-target.d.ts.map +1 -0
  139. package/dist/services/live-signals.d.ts +86 -0
  140. package/dist/services/live-signals.d.ts.map +1 -0
  141. package/dist/services/llama-server-metrics.d.ts +114 -0
  142. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  143. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  144. package/dist/services/load-args.d.ts.map +1 -0
  145. package/dist/services/manifest/index.d.ts +4 -0
  146. package/dist/services/manifest/index.d.ts.map +1 -0
  147. package/{src → dist}/services/manifest/schema.d.ts +196 -6
  148. package/dist/services/manifest/schema.d.ts.map +1 -0
  149. package/{src → dist}/services/manifest/types.d.ts +3 -1
  150. package/dist/services/manifest/types.d.ts.map +1 -0
  151. package/dist/services/manifest/validator.d.ts.map +1 -0
  152. package/{src → dist}/services/memory-arbiter.d.ts +33 -3
  153. package/dist/services/memory-arbiter.d.ts.map +1 -0
  154. package/dist/services/memory-benchmark.d.ts +76 -0
  155. package/dist/services/memory-benchmark.d.ts.map +1 -0
  156. package/{src → dist}/services/memory-monitor.d.ts +6 -0
  157. package/dist/services/memory-monitor.d.ts.map +1 -0
  158. package/dist/services/memory-pressure.d.ts.map +1 -0
  159. package/dist/services/mtp-doctor.d.ts.map +1 -0
  160. package/dist/services/network-policy.d.ts.map +1 -0
  161. package/dist/services/paths.d.ts.map +1 -0
  162. package/dist/services/planner-skeleton.d.ts.map +1 -0
  163. package/dist/services/providers.d.ts.map +1 -0
  164. package/dist/services/ram-budget.d.ts.map +1 -0
  165. package/dist/services/readiness.d.ts.map +1 -0
  166. package/dist/services/recommendation.d.ts.map +1 -0
  167. package/{src → dist}/services/registry.d.ts +11 -13
  168. package/dist/services/registry.d.ts.map +1 -0
  169. package/{src → dist}/services/router-handler.d.ts +2 -2
  170. package/dist/services/router-handler.d.ts.map +1 -0
  171. package/{src → dist}/services/routing-policy.d.ts +32 -9
  172. package/dist/services/routing-policy.d.ts.map +1 -0
  173. package/dist/services/routing-preferences.d.ts.map +1 -0
  174. package/dist/services/runtime-target.d.ts.map +1 -0
  175. package/{src → dist}/services/service.d.ts +1 -1
  176. package/dist/services/service.d.ts.map +1 -0
  177. package/dist/services/session-pool.d.ts.map +1 -0
  178. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  179. package/dist/services/structured-output/index.d.ts +2 -0
  180. package/dist/services/structured-output/index.d.ts.map +1 -0
  181. package/dist/services/structured-output.d.ts.map +1 -0
  182. package/dist/services/system-memory.d.ts.map +1 -0
  183. package/{src → dist}/services/types.d.ts +1 -1
  184. package/dist/services/types.d.ts.map +1 -0
  185. package/dist/services/verify-on-device.d.ts.map +1 -0
  186. package/dist/services/verify.d.ts.map +1 -0
  187. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  188. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  189. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  190. package/dist/services/vision/hash.d.ts.map +1 -0
  191. package/{src → dist}/services/vision/index.d.ts +1 -1
  192. package/dist/services/vision/index.d.ts.map +1 -0
  193. package/dist/services/vision/llama-server.d.ts.map +1 -0
  194. package/{src → dist}/services/vision/types.d.ts +13 -4
  195. package/dist/services/vision/types.d.ts.map +1 -0
  196. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  197. package/{src → dist}/services/vision-embedding-cache.d.ts +1 -1
  198. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  199. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  200. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  201. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  202. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  203. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  204. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  205. package/{src → dist}/services/voice/audio-frame-consumer.d.ts +82 -0
  206. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  207. package/dist/services/voice/barge-in.d.ts.map +1 -0
  208. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  209. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  210. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  211. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  212. package/dist/services/voice/corpus-augment.d.ts +111 -0
  213. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  214. package/dist/services/voice/corpus-generator.d.ts +134 -0
  215. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  216. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  217. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  218. package/dist/services/voice/e2e-harness.d.ts +297 -0
  219. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  220. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  221. package/dist/services/voice/echo-delay.d.ts +67 -0
  222. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  223. package/dist/services/voice/echo-metrics.d.ts +7 -0
  224. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  225. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  226. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  227. package/{src → dist}/services/voice/eliza1-eot-scorer.d.ts +8 -8
  228. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  229. package/dist/services/voice/embedding-server.d.ts +37 -0
  230. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  231. package/{src → dist}/services/voice/embedding.d.ts +2 -3
  232. package/dist/services/voice/embedding.d.ts.map +1 -0
  233. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  234. package/{src → dist}/services/voice/engine-bridge.d.ts +8 -5
  235. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  236. package/{src → dist}/services/voice/eot-classifier-ggml.d.ts +22 -22
  237. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  238. package/{src → dist}/services/voice/eot-classifier.d.ts +9 -12
  239. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  240. package/{src → dist}/services/voice/errors.d.ts +1 -1
  241. package/dist/services/voice/errors.d.ts.map +1 -0
  242. package/{src → dist}/services/voice/expressive-tags.d.ts +5 -5
  243. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  244. package/{src → dist}/services/voice/ffi-bindings.d.ts +26 -4
  245. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  246. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  247. package/{src → dist}/services/voice/fused-eot-scorer.d.ts +6 -6
  248. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  249. package/{src → dist}/services/voice/index.d.ts +8 -3
  250. package/dist/services/voice/index.d.ts.map +1 -0
  251. package/dist/services/voice/kokoro/index.d.ts +24 -0
  252. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  253. package/{src → dist}/services/voice/kokoro/kokoro-backend.d.ts +15 -0
  254. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  255. package/{src → dist}/services/voice/kokoro/kokoro-engine-discovery.d.ts +1 -1
  256. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  257. package/{src → dist}/services/voice/kokoro/kokoro-ffi-runtime.d.ts +3 -3
  258. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  259. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  260. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  261. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  262. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  263. package/{src → dist}/services/voice/kokoro/pick-runtime.d.ts +1 -1
  264. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  265. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  266. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  267. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  268. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  269. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  270. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  271. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  272. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  273. package/dist/services/voice/metric-math.d.ts +10 -0
  274. package/dist/services/voice/metric-math.d.ts.map +1 -0
  275. package/{src → dist}/services/voice/mic-source.d.ts +1 -1
  276. package/dist/services/voice/mic-source.d.ts.map +1 -0
  277. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  278. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  279. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  280. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  281. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  282. package/{src → dist}/services/voice/partial-stabilizer.d.ts +1 -1
  283. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  284. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  285. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  286. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  287. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  288. package/dist/services/voice/pipeline.d.ts.map +1 -0
  289. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  290. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  291. package/dist/services/voice/profile-store.d.ts.map +1 -0
  292. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  293. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  294. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  295. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  296. package/dist/services/voice/scheduler.d.ts.map +1 -0
  297. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  298. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  299. package/{src → dist}/services/voice/shared-resources.d.ts +14 -0
  300. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  301. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  302. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  303. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  304. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  305. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  306. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  307. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  308. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  309. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  310. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  311. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  312. package/{src → dist}/services/voice/transcriber.d.ts +4 -4
  313. package/dist/services/voice/transcriber.d.ts.map +1 -0
  314. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  315. package/{src → dist}/services/voice/transcript-service.d.ts +20 -1
  316. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  317. package/{src → dist}/services/voice/transcript-store.d.ts +12 -1
  318. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  319. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  320. package/{src → dist}/services/voice/types.d.ts +6 -6
  321. package/dist/services/voice/types.d.ts.map +1 -0
  322. package/{src → dist}/services/voice/vad.d.ts +6 -5
  323. package/dist/services/voice/vad.d.ts.map +1 -0
  324. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  325. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  326. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  327. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  328. package/{src → dist}/services/voice/voice-preset-format.d.ts +2 -2
  329. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  330. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  331. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  332. package/dist/services/voice/voice-scenario.d.ts +131 -0
  333. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  334. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  335. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  336. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  337. package/{src → dist}/services/voice/wake-word-ggml.d.ts +8 -9
  338. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  339. package/dist/services/voice/wake-word.d.ts.map +1 -0
  340. package/dist/services/voice/wav-codec.d.ts +11 -0
  341. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  342. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  343. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  344. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  345. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  346. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  347. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  348. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  349. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  350. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  351. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  352. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  353. package/dist/services/voice-model-updater.d.ts.map +1 -0
  354. package/dist/services/voice-prewarm.d.ts.map +1 -0
  355. package/dist/voice-workbench.d.ts +18 -0
  356. package/dist/voice-workbench.d.ts.map +1 -0
  357. package/dist/voice-workbench.js +5259 -0
  358. package/dist/voice-workbench.js.map +34 -0
  359. package/package.json +28 -9
  360. package/registry-entry.json +137 -0
  361. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  362. package/src/adapters/capacitor-llama/environment.ts +1 -1
  363. package/src/adapters/capacitor-llama/index.ts +28 -4
  364. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  365. package/src/adapters/capacitor-llama/text-streaming.ts +2 -2
  366. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  367. package/src/backends/apple-foundation.ts +1 -1
  368. package/src/local-inference-routes.test.ts +57 -11
  369. package/src/local-inference-routes.ts +90 -8
  370. package/src/provider.ts +32 -3
  371. package/src/routes/compat-helpers.ts +2 -1
  372. package/src/routes/index.ts +1 -0
  373. package/src/routes/live-diarization-route.test.ts +134 -0
  374. package/src/routes/live-diarization-route.ts +79 -3
  375. package/src/routes/local-inference-asr-route.test.ts +43 -2
  376. package/src/routes/local-inference-asr-route.ts +7 -4
  377. package/src/routes/local-inference-asr-transcribe.test.ts +4 -4
  378. package/src/routes/local-inference-asr-transcribe.ts +1 -1
  379. package/src/routes/local-inference-compat-routes.test.ts +3 -3
  380. package/src/routes/local-inference-compat-routes.ts +23 -56
  381. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  382. package/src/routes/native-pcm-turn-route.ts +121 -0
  383. package/src/routes/transcripts-routes.test.ts +51 -0
  384. package/src/routes/transcripts-routes.ts +35 -3
  385. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  386. package/src/runtime/ensure-local-inference-handler.test.ts +203 -5
  387. package/src/runtime/ensure-local-inference-handler.ts +203 -11
  388. package/src/runtime/index.ts +4 -1
  389. package/src/runtime/mobile-local-inference-gate.test.ts +85 -2
  390. package/src/runtime/mobile-local-inference-gate.ts +60 -5
  391. package/src/runtime/voice-entity-binding.transcript.test.ts +29 -0
  392. package/src/runtime/voice-entity-binding.ts +46 -6
  393. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  394. package/src/services/README.md +2 -2
  395. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  396. package/src/services/active-model-context-fit.test.ts +125 -0
  397. package/src/services/active-model.ts +211 -8
  398. package/src/services/asr-provenance.ts +68 -0
  399. package/src/services/assignment-validation.test.ts +118 -0
  400. package/src/services/assignments.test.ts +26 -0
  401. package/src/services/assignments.ts +52 -4
  402. package/src/services/backend.test.ts +84 -0
  403. package/src/services/backend.ts +198 -19
  404. package/src/services/bionic-host-loader.test.ts +94 -1
  405. package/src/services/bionic-host-loader.ts +72 -0
  406. package/src/services/cache-bridge.test.ts +7 -7
  407. package/src/services/catalog.test.ts +32 -11
  408. package/src/services/catalog.ts +6 -0
  409. package/src/services/cloud-fallback.ts +1 -1
  410. package/src/services/context-fit.test.ts +121 -0
  411. package/src/services/context-fit.ts +113 -0
  412. package/src/services/desktop-fused-ffi-backend-runtime.ts +99 -7
  413. package/src/services/device-tier.test.ts +89 -2
  414. package/src/services/device-tier.ts +103 -11
  415. package/src/services/downloader.test.ts +199 -58
  416. package/src/services/downloader.ts +141 -27
  417. package/src/services/engine-direct-bundle.test.ts +38 -6
  418. package/src/services/engine.ts +291 -104
  419. package/src/services/ensure-local-artifacts.ts +1 -1
  420. package/src/services/ffi-llm-streaming-abi.ts +6 -3
  421. package/src/services/ffi-streaming-backend.ts +44 -8
  422. package/src/services/ffi-streaming-runner.test.ts +163 -3
  423. package/src/services/ffi-streaming-runner.ts +54 -1
  424. package/src/services/ffi-unload-ordering.test.ts +5 -1
  425. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  426. package/src/services/hardware.test.ts +7 -2
  427. package/src/services/hardware.ts +28 -0
  428. package/src/services/imagegen/backend-selector.test.ts +190 -0
  429. package/src/services/imagegen/sd-cpp.ts +6 -9
  430. package/src/services/index.ts +18 -0
  431. package/src/services/ios-llama-streaming.ts +1 -1
  432. package/src/services/kv-spill.ts +6 -5
  433. package/src/services/lib-target.test.ts +145 -0
  434. package/src/services/lib-target.ts +102 -0
  435. package/src/services/live-signals.test.ts +132 -0
  436. package/src/services/live-signals.ts +177 -0
  437. package/src/services/llama-server-metrics.test.ts +168 -0
  438. package/src/services/manifest/eliza-1.manifest.v1.json +84 -2
  439. package/src/services/manifest/index.ts +6 -0
  440. package/src/services/manifest/manifest.test.ts +156 -54
  441. package/src/services/manifest/schema.ts +160 -52
  442. package/src/services/manifest/types.ts +6 -0
  443. package/src/services/manifest/validator.ts +91 -25
  444. package/src/services/memory-arbiter.test.ts +139 -0
  445. package/src/services/memory-arbiter.ts +81 -15
  446. package/src/services/memory-benchmark.test.ts +91 -0
  447. package/src/services/memory-benchmark.ts +354 -0
  448. package/src/services/memory-monitor.test.ts +24 -0
  449. package/src/services/memory-monitor.ts +12 -0
  450. package/src/services/mtp-doctor.ts +10 -2
  451. package/src/services/network-policy.ts +5 -5
  452. package/src/services/ram-budget-cache.test.ts +2 -1
  453. package/src/services/ram-budget.ts +0 -0
  454. package/src/services/recommendation.test.ts +216 -0
  455. package/src/services/registry.ts +25 -19
  456. package/src/services/required-kernels-gate.test.ts +64 -0
  457. package/src/services/router-handler.ts +43 -24
  458. package/src/services/routing-policy.test.ts +211 -23
  459. package/src/services/routing-policy.ts +92 -22
  460. package/src/services/service.test.ts +3 -3
  461. package/src/services/service.ts +22 -7
  462. package/src/services/transcription-priority.test.ts +2 -2
  463. package/src/services/types.ts +4 -0
  464. package/src/services/verify-on-device.test.ts +2 -2
  465. package/src/services/vision/hash.ts +1 -1
  466. package/src/services/vision/index.ts +2 -2
  467. package/src/services/vision/llama-server.ts +1 -1
  468. package/src/services/vision/types.ts +13 -4
  469. package/src/services/vision-embedding-cache.ts +1 -1
  470. package/src/services/voice/VOICE_WORKBENCH.md +71 -26
  471. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  472. package/src/services/voice/__test-helpers__/synthetic-speech.ts +72 -2
  473. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +29 -29
  474. package/src/services/voice/__tests__/streaming-asr.test.ts +1 -1
  475. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  476. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  477. package/src/services/voice/asr-timed.real.test.ts +6 -8
  478. package/src/services/voice/audio-frame-consumer.test.ts +327 -1
  479. package/src/services/voice/audio-frame-consumer.ts +165 -5
  480. package/src/services/voice/barge-in.ts +2 -3
  481. package/src/services/voice/corpus-augment.test.ts +276 -0
  482. package/src/services/voice/corpus-augment.ts +451 -0
  483. package/src/services/voice/corpus-generator.test.ts +201 -0
  484. package/src/services/voice/corpus-generator.ts +413 -0
  485. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  486. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  487. package/src/services/voice/diarization-error-rate.ts +249 -0
  488. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  489. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  490. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  491. package/src/services/voice/e2e-harness.test.ts +2 -2
  492. package/src/services/voice/e2e-harness.ts +175 -16
  493. package/src/services/voice/echo-delay.test.ts +118 -0
  494. package/src/services/voice/echo-delay.ts +135 -0
  495. package/src/services/voice/echo-metrics.test.ts +17 -0
  496. package/src/services/voice/echo-metrics.ts +20 -0
  497. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  498. package/src/services/voice/echo-reference-buffer.ts +165 -0
  499. package/src/services/voice/eliza1-eot-scorer.ts +22 -22
  500. package/src/services/voice/embedding.ts +2 -3
  501. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  502. package/src/services/voice/engine-bridge.ts +151 -110
  503. package/src/services/voice/eot-classifier-ggml.ts +42 -39
  504. package/src/services/voice/eot-classifier.test.ts +98 -0
  505. package/src/services/voice/eot-classifier.ts +11 -122
  506. package/src/services/voice/errors.ts +2 -0
  507. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  508. package/src/services/voice/expressive-tags.test.ts +102 -0
  509. package/src/services/voice/expressive-tags.ts +8 -8
  510. package/src/services/voice/ffi-bindings.test.ts +10 -3
  511. package/src/services/voice/ffi-bindings.ts +177 -15
  512. package/src/services/voice/fused-eot-scorer.ts +17 -13
  513. package/src/services/voice/index.ts +33 -12
  514. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +112 -1
  515. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +88 -3
  516. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +37 -201
  517. package/src/services/voice/kokoro/kokoro-backend.ts +16 -0
  518. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +1 -1
  519. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +3 -3
  520. package/src/services/voice/kokoro/pick-runtime.ts +1 -1
  521. package/src/services/voice/kokoro/runtime-selection.ts +28 -201
  522. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  523. package/src/services/voice/live-diarization-session.ts +335 -2
  524. package/src/services/voice/metric-math.test.ts +61 -0
  525. package/src/services/voice/metric-math.ts +25 -0
  526. package/src/services/voice/mic-source.ts +1 -1
  527. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  528. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  529. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  530. package/src/services/voice/partial-stabilizer.ts +1 -1
  531. package/src/services/voice/pipeline.ts +3 -4
  532. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  533. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  534. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  535. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  536. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  537. package/src/services/voice/self-voice-imprint.ts +102 -0
  538. package/src/services/voice/shared-resources.ts +23 -0
  539. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  540. package/src/services/voice/speaker/attribution-pipeline.ts +85 -22
  541. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  542. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  543. package/src/services/voice/transcriber.ts +4 -4
  544. package/src/services/voice/transcript-service.test.ts +58 -0
  545. package/src/services/voice/transcript-service.ts +64 -0
  546. package/src/services/voice/transcript-store.test.ts +36 -0
  547. package/src/services/voice/transcript-store.ts +32 -0
  548. package/src/services/voice/types.ts +7 -7
  549. package/src/services/voice/vad.test.ts +33 -15
  550. package/src/services/voice/vad.ts +25 -20
  551. package/src/services/voice/voice-budget.test.ts +0 -3
  552. package/src/services/voice/voice-budget.ts +6 -6
  553. package/src/services/voice/voice-duet.test.ts +1 -1
  554. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  555. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  556. package/src/services/voice/voice-preload-predictor.ts +113 -0
  557. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  558. package/src/services/voice/voice-preset-format.test.ts +75 -0
  559. package/src/services/voice/voice-preset-format.ts +17 -4
  560. package/src/services/voice/voice-scenario.test.ts +159 -0
  561. package/src/services/voice/voice-scenario.ts +133 -7
  562. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  563. package/src/services/voice/voice-workbench-report.ts +58 -17
  564. package/src/services/voice/wake-word-ggml.ts +12 -13
  565. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  566. package/src/services/voice/wav-codec.test.ts +32 -0
  567. package/src/services/voice/wav-codec.ts +101 -0
  568. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  569. package/src/services/voice/workbench-entrypoint.ts +88 -0
  570. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  571. package/src/services/voice/workbench-headless-runner.ts +396 -0
  572. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  573. package/src/services/voice/workbench-logic-services.ts +184 -0
  574. package/src/services/voice/workbench-real-services.ts +629 -0
  575. package/src/services/voice/workbench-scenarios.ts +407 -0
  576. package/src/services/voice-prewarm.ts +1 -1
  577. package/src/voice-workbench.ts +71 -0
  578. package/src/actions/generate-media.d.ts.map +0 -1
  579. package/src/actions/identify-speaker.d.ts.map +0 -1
  580. package/src/actions/transcription-control.d.ts.map +0 -1
  581. package/src/index.d.ts.map +0 -1
  582. package/src/local-inference-routes.d.ts.map +0 -1
  583. package/src/provider.d.ts.map +0 -1
  584. package/src/routes/compat-helpers.d.ts.map +0 -1
  585. package/src/routes/family-member-route.d.ts.map +0 -1
  586. package/src/routes/index.d.ts.map +0 -1
  587. package/src/routes/live-diarization-route.d.ts.map +0 -1
  588. package/src/routes/local-inference-asr-route.d.ts.map +0 -1
  589. package/src/routes/local-inference-asr-transcribe.d.ts.map +0 -1
  590. package/src/routes/local-inference-compat-routes.d.ts.map +0 -1
  591. package/src/routes/local-inference-tts-route.d.ts.map +0 -1
  592. package/src/routes/transcript-audio-store.d.ts.map +0 -1
  593. package/src/routes/transcripts-routes.d.ts.map +0 -1
  594. package/src/routes/voice-first-run-routes.d.ts.map +0 -1
  595. package/src/routes/voice-models-routes.d.ts.map +0 -1
  596. package/src/routes/voice-profile-plugin-routes.d.ts.map +0 -1
  597. package/src/routes/voice-profiles-management-routes.d.ts.map +0 -1
  598. package/src/routes/voice-speaker-profile-routes.d.ts.map +0 -1
  599. package/src/runtime/embedding-manager-support.d.ts.map +0 -1
  600. package/src/runtime/embedding-presets.d.ts.map +0 -1
  601. package/src/runtime/embedding-warmup-policy.d.ts.map +0 -1
  602. package/src/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  603. package/src/runtime/index.d.ts.map +0 -1
  604. package/src/runtime/mobile-local-inference-gate.d.ts +0 -31
  605. package/src/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  606. package/src/runtime/voice-entity-binding.d.ts.map +0 -1
  607. package/src/services/active-model.d.ts.map +0 -1
  608. package/src/services/assignments.d.ts.map +0 -1
  609. package/src/services/backend.d.ts.map +0 -1
  610. package/src/services/bionic-host-loader.d.ts.map +0 -1
  611. package/src/services/bundled-models.d.ts.map +0 -1
  612. package/src/services/cache-bridge.d.ts.map +0 -1
  613. package/src/services/catalog.d.ts +0 -10
  614. package/src/services/catalog.d.ts.map +0 -1
  615. package/src/services/checkpoint-client.d.ts.map +0 -1
  616. package/src/services/cloud-fallback.d.ts.map +0 -1
  617. package/src/services/conversation-registry.d.ts.map +0 -1
  618. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +0 -1
  619. package/src/services/device-bridge.d.ts.map +0 -1
  620. package/src/services/device-resource-metrics.d.ts.map +0 -1
  621. package/src/services/device-tier.d.ts.map +0 -1
  622. package/src/services/downloader.d.ts.map +0 -1
  623. package/src/services/engine.d.ts.map +0 -1
  624. package/src/services/external-scanner.d.ts.map +0 -1
  625. package/src/services/ffi-streaming-backend.d.ts.map +0 -1
  626. package/src/services/ffi-streaming-runner.d.ts.map +0 -1
  627. package/src/services/gpu-detect.d.ts.map +0 -1
  628. package/src/services/handler-registry.d.ts.map +0 -1
  629. package/src/services/hardware.d.ts.map +0 -1
  630. package/src/services/hf-search.d.ts +0 -26
  631. package/src/services/hf-search.d.ts.map +0 -1
  632. package/src/services/hf-search.test.ts +0 -69
  633. package/src/services/hf-search.ts +0 -420
  634. package/src/services/image-description-runtime.d.ts.map +0 -1
  635. package/src/services/imagegen/aosp-unavailable.d.ts.map +0 -1
  636. package/src/services/imagegen/backend-selector.d.ts.map +0 -1
  637. package/src/services/imagegen/coreml-unavailable.d.ts.map +0 -1
  638. package/src/services/imagegen/errors.d.ts.map +0 -1
  639. package/src/services/imagegen/index.d.ts.map +0 -1
  640. package/src/services/imagegen/mflux.d.ts.map +0 -1
  641. package/src/services/imagegen/sd-cpp.d.ts.map +0 -1
  642. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +0 -1
  643. package/src/services/imagegen/types.d.ts.map +0 -1
  644. package/src/services/index.d.ts.map +0 -1
  645. package/src/services/inference-capabilities.d.ts.map +0 -1
  646. package/src/services/inference-telemetry.d.ts.map +0 -1
  647. package/src/services/kv-spill.d.ts.map +0 -1
  648. package/src/services/latency-trace.d.ts.map +0 -1
  649. package/src/services/llm-streaming-binding.d.ts.map +0 -1
  650. package/src/services/load-args.d.ts.map +0 -1
  651. package/src/services/manifest/index.d.ts +0 -4
  652. package/src/services/manifest/index.d.ts.map +0 -1
  653. package/src/services/manifest/schema.d.ts.map +0 -1
  654. package/src/services/manifest/types.d.ts.map +0 -1
  655. package/src/services/manifest/validator.d.ts.map +0 -1
  656. package/src/services/memory-arbiter.d.ts.map +0 -1
  657. package/src/services/memory-monitor.d.ts.map +0 -1
  658. package/src/services/memory-pressure.d.ts.map +0 -1
  659. package/src/services/mtp-doctor.d.ts.map +0 -1
  660. package/src/services/network-policy.d.ts.map +0 -1
  661. package/src/services/paths.d.ts.map +0 -1
  662. package/src/services/planner-skeleton.d.ts.map +0 -1
  663. package/src/services/providers.d.ts.map +0 -1
  664. package/src/services/ram-budget.d.ts.map +0 -1
  665. package/src/services/readiness.d.ts.map +0 -1
  666. package/src/services/recommendation.d.ts.map +0 -1
  667. package/src/services/registry.d.ts.map +0 -1
  668. package/src/services/router-handler.d.ts.map +0 -1
  669. package/src/services/routing-policy.d.ts.map +0 -1
  670. package/src/services/routing-preferences.d.ts.map +0 -1
  671. package/src/services/runtime-target.d.ts.map +0 -1
  672. package/src/services/service.d.ts.map +0 -1
  673. package/src/services/session-pool.d.ts.map +0 -1
  674. package/src/services/structured-output/deterministic-repair.d.ts.map +0 -1
  675. package/src/services/structured-output.d.ts.map +0 -1
  676. package/src/services/system-memory.d.ts.map +0 -1
  677. package/src/services/types.d.ts.map +0 -1
  678. package/src/services/verify-on-device.d.ts.map +0 -1
  679. package/src/services/verify.d.ts.map +0 -1
  680. package/src/services/vision/aosp-unavailable.d.ts.map +0 -1
  681. package/src/services/vision/capacitor-llama.d.ts.map +0 -1
  682. package/src/services/vision/cloud-fallback.d.ts.map +0 -1
  683. package/src/services/vision/hash.d.ts.map +0 -1
  684. package/src/services/vision/index.d.ts.map +0 -1
  685. package/src/services/vision/llama-server.d.ts.map +0 -1
  686. package/src/services/vision/types.d.ts.map +0 -1
  687. package/src/services/vision/vast-fallback.d.ts.map +0 -1
  688. package/src/services/vision-embedding-cache.d.ts.map +0 -1
  689. package/src/services/voice/audio-frame-consumer.d.ts.map +0 -1
  690. package/src/services/voice/barge-in.d.ts.map +0 -1
  691. package/src/services/voice/cancellation-coordinator.d.ts.map +0 -1
  692. package/src/services/voice/checkpoint-manager.d.ts.map +0 -1
  693. package/src/services/voice/eager-context-builder.d.ts.map +0 -1
  694. package/src/services/voice/eliza1-eot-scorer.d.ts.map +0 -1
  695. package/src/services/voice/embedding.d.ts.map +0 -1
  696. package/src/services/voice/emotion-attribution.d.ts.map +0 -1
  697. package/src/services/voice/engine-bridge.d.ts.map +0 -1
  698. package/src/services/voice/eot-classifier-ggml.d.ts.map +0 -1
  699. package/src/services/voice/eot-classifier.d.ts.map +0 -1
  700. package/src/services/voice/errors.d.ts.map +0 -1
  701. package/src/services/voice/expressive-tags.d.ts.map +0 -1
  702. package/src/services/voice/ffi-bindings.d.ts.map +0 -1
  703. package/src/services/voice/first-line-cache.d.ts.map +0 -1
  704. package/src/services/voice/fused-eot-scorer.d.ts.map +0 -1
  705. package/src/services/voice/index.d.ts.map +0 -1
  706. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +0 -1
  707. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +0 -1
  708. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +0 -1
  709. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +0 -1
  710. package/src/services/voice/kokoro/phonemizer.d.ts.map +0 -1
  711. package/src/services/voice/kokoro/pick-runtime.d.ts.map +0 -1
  712. package/src/services/voice/kokoro/runtime-selection.d.ts +0 -92
  713. package/src/services/voice/kokoro/runtime-selection.d.ts.map +0 -1
  714. package/src/services/voice/kokoro/types.d.ts.map +0 -1
  715. package/src/services/voice/kokoro/voice-presets.d.ts.map +0 -1
  716. package/src/services/voice/kokoro/voices.d.ts.map +0 -1
  717. package/src/services/voice/lifecycle.d.ts.map +0 -1
  718. package/src/services/voice/live-diarization-session.d.ts +0 -96
  719. package/src/services/voice/live-diarization-session.d.ts.map +0 -1
  720. package/src/services/voice/mic-source.d.ts.map +0 -1
  721. package/src/services/voice/optimistic-policy.d.ts.map +0 -1
  722. package/src/services/voice/partial-stabilizer.d.ts.map +0 -1
  723. package/src/services/voice/phoneme-tokenizer.d.ts.map +0 -1
  724. package/src/services/voice/phrase-cache.d.ts.map +0 -1
  725. package/src/services/voice/phrase-chunker.d.ts.map +0 -1
  726. package/src/services/voice/pipeline-impls.d.ts.map +0 -1
  727. package/src/services/voice/pipeline.d.ts.map +0 -1
  728. package/src/services/voice/prefill-client.d.ts.map +0 -1
  729. package/src/services/voice/prefix-preserving-queue.d.ts.map +0 -1
  730. package/src/services/voice/profile-store.d.ts.map +0 -1
  731. package/src/services/voice/ring-buffer.d.ts.map +0 -1
  732. package/src/services/voice/rollback-queue.d.ts.map +0 -1
  733. package/src/services/voice/samantha-preset-placeholder.d.ts.map +0 -1
  734. package/src/services/voice/samantha-preset-regenerator.d.ts.map +0 -1
  735. package/src/services/voice/scheduler.d.ts.map +0 -1
  736. package/src/services/voice/shared-resources.d.ts.map +0 -1
  737. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +0 -1
  738. package/src/services/voice/speaker/diarizer-fused.d.ts.map +0 -1
  739. package/src/services/voice/speaker/diarizer.d.ts.map +0 -1
  740. package/src/services/voice/speaker/encoder-fused.d.ts.map +0 -1
  741. package/src/services/voice/speaker/encoder-ggml.d.ts.map +0 -1
  742. package/src/services/voice/speaker/encoder.d.ts.map +0 -1
  743. package/src/services/voice/speaker-imprint.d.ts.map +0 -1
  744. package/src/services/voice/speaker-preset-cache.d.ts.map +0 -1
  745. package/src/services/voice/system-audio-sink.d.ts.map +0 -1
  746. package/src/services/voice/transcriber.d.ts.map +0 -1
  747. package/src/services/voice/transcript-knowledge.d.ts.map +0 -1
  748. package/src/services/voice/transcript-service.d.ts.map +0 -1
  749. package/src/services/voice/transcript-store.d.ts.map +0 -1
  750. package/src/services/voice/turn-controller.d.ts.map +0 -1
  751. package/src/services/voice/types.d.ts.map +0 -1
  752. package/src/services/voice/vad.d.ts.map +0 -1
  753. package/src/services/voice/voice-budget.d.ts.map +0 -1
  754. package/src/services/voice/voice-emotion-classifier.d.ts.map +0 -1
  755. package/src/services/voice/voice-preset-format.d.ts.map +0 -1
  756. package/src/services/voice/voice-profile-artifact.d.ts.map +0 -1
  757. package/src/services/voice/voice-profile-routes.d.ts.map +0 -1
  758. package/src/services/voice/voice-settings.d.ts +0 -82
  759. package/src/services/voice/voice-settings.d.ts.map +0 -1
  760. package/src/services/voice/voice-settings.ts +0 -172
  761. package/src/services/voice/voice-state-machine.d.ts.map +0 -1
  762. package/src/services/voice/wake-word-ggml.d.ts.map +0 -1
  763. package/src/services/voice/wake-word.d.ts.map +0 -1
  764. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +0 -1
  765. package/src/services/voice-model-updater.d.ts.map +0 -1
  766. package/src/services/voice-prewarm.d.ts.map +0 -1
  767. /package/{src → dist}/actions/generate-media.d.ts +0 -0
  768. /package/{src → dist}/actions/identify-speaker.d.ts +0 -0
  769. /package/{src → dist}/actions/transcription-control.d.ts +0 -0
  770. /package/{src → dist}/index.d.ts +0 -0
  771. /package/{src → dist}/provider.d.ts +0 -0
  772. /package/{src → dist}/routes/family-member-route.d.ts +0 -0
  773. /package/{src → dist}/routes/local-inference-asr-route.d.ts +0 -0
  774. /package/{src → dist}/routes/local-inference-asr-transcribe.d.ts +0 -0
  775. /package/{src → dist}/routes/local-inference-compat-routes.d.ts +0 -0
  776. /package/{src → dist}/routes/local-inference-tts-route.d.ts +0 -0
  777. /package/{src → dist}/routes/transcript-audio-store.d.ts +0 -0
  778. /package/{src → dist}/routes/voice-first-run-routes.d.ts +0 -0
  779. /package/{src → dist}/routes/voice-models-routes.d.ts +0 -0
  780. /package/{src → dist}/routes/voice-profile-plugin-routes.d.ts +0 -0
  781. /package/{src → dist}/routes/voice-profiles-management-routes.d.ts +0 -0
  782. /package/{src → dist}/routes/voice-speaker-profile-routes.d.ts +0 -0
  783. /package/{src → dist}/runtime/embedding-manager-support.d.ts +0 -0
  784. /package/{src → dist}/runtime/embedding-presets.d.ts +0 -0
  785. /package/{src → dist}/runtime/embedding-warmup-policy.d.ts +0 -0
  786. /package/{src → dist}/services/bundled-models.d.ts +0 -0
  787. /package/{src → dist}/services/cache-bridge.d.ts +0 -0
  788. /package/{src → dist}/services/checkpoint-client.d.ts +0 -0
  789. /package/{src → dist}/services/cloud-fallback.d.ts +0 -0
  790. /package/{src → dist}/services/conversation-registry.d.ts +0 -0
  791. /package/{src → dist}/services/device-bridge.d.ts +0 -0
  792. /package/{src → dist}/services/device-resource-metrics.d.ts +0 -0
  793. /package/{src → dist}/services/external-scanner.d.ts +0 -0
  794. /package/{src → dist}/services/gpu-detect.d.ts +0 -0
  795. /package/{src → dist}/services/handler-registry.d.ts +0 -0
  796. /package/{src → dist}/services/hardware.d.ts +0 -0
  797. /package/{src → dist}/services/image-description-runtime.d.ts +0 -0
  798. /package/{src → dist}/services/imagegen/aosp-unavailable.d.ts +0 -0
  799. /package/{src → dist}/services/imagegen/backend-selector.d.ts +0 -0
  800. /package/{src → dist}/services/imagegen/coreml-unavailable.d.ts +0 -0
  801. /package/{src → dist}/services/imagegen/errors.d.ts +0 -0
  802. /package/{src → dist}/services/imagegen/index.d.ts +0 -0
  803. /package/{src → dist}/services/imagegen/mflux.d.ts +0 -0
  804. /package/{src → dist}/services/imagegen/tensorrt-unavailable.d.ts +0 -0
  805. /package/{src → dist}/services/imagegen/types.d.ts +0 -0
  806. /package/{src → dist}/services/inference-capabilities.d.ts +0 -0
  807. /package/{src → dist}/services/inference-telemetry.d.ts +0 -0
  808. /package/{src → dist}/services/kv-spill.d.ts +0 -0
  809. /package/{src → dist}/services/latency-trace.d.ts +0 -0
  810. /package/{src → dist}/services/llm-streaming-binding.d.ts +0 -0
  811. /package/{src → dist}/services/load-args.d.ts +0 -0
  812. /package/{src → dist}/services/manifest/validator.d.ts +0 -0
  813. /package/{src → dist}/services/memory-pressure.d.ts +0 -0
  814. /package/{src → dist}/services/mtp-doctor.d.ts +0 -0
  815. /package/{src → dist}/services/network-policy.d.ts +0 -0
  816. /package/{src → dist}/services/paths.d.ts +0 -0
  817. /package/{src → dist}/services/planner-skeleton.d.ts +0 -0
  818. /package/{src → dist}/services/providers.d.ts +0 -0
  819. /package/{src → dist}/services/ram-budget.d.ts +0 -0
  820. /package/{src → dist}/services/readiness.d.ts +0 -0
  821. /package/{src → dist}/services/recommendation.d.ts +0 -0
  822. /package/{src → dist}/services/routing-preferences.d.ts +0 -0
  823. /package/{src → dist}/services/runtime-target.d.ts +0 -0
  824. /package/{src → dist}/services/session-pool.d.ts +0 -0
  825. /package/{src → dist}/services/structured-output/deterministic-repair.d.ts +0 -0
  826. /package/{src → dist}/services/structured-output.d.ts +0 -0
  827. /package/{src → dist}/services/system-memory.d.ts +0 -0
  828. /package/{src → dist}/services/verify-on-device.d.ts +0 -0
  829. /package/{src → dist}/services/verify.d.ts +0 -0
  830. /package/{src → dist}/services/vision/aosp-unavailable.d.ts +0 -0
  831. /package/{src → dist}/services/vision/capacitor-llama.d.ts +0 -0
  832. /package/{src → dist}/services/vision/cloud-fallback.d.ts +0 -0
  833. /package/{src → dist}/services/vision/hash.d.ts +0 -0
  834. /package/{src → dist}/services/vision/llama-server.d.ts +0 -0
  835. /package/{src → dist}/services/vision/vast-fallback.d.ts +0 -0
  836. /package/{src → dist}/services/voice/barge-in.d.ts +0 -0
  837. /package/{src → dist}/services/voice/cancellation-coordinator.d.ts +0 -0
  838. /package/{src → dist}/services/voice/checkpoint-manager.d.ts +0 -0
  839. /package/{src → dist}/services/voice/eager-context-builder.d.ts +0 -0
  840. /package/{src → dist}/services/voice/emotion-attribution.d.ts +0 -0
  841. /package/{src → dist}/services/voice/first-line-cache.d.ts +0 -0
  842. /package/{src → dist}/services/voice/kokoro/kokoro-runtime.d.ts +0 -0
  843. /package/{src → dist}/services/voice/kokoro/phonemizer.d.ts +0 -0
  844. /package/{src → dist}/services/voice/kokoro/types.d.ts +0 -0
  845. /package/{src → dist}/services/voice/kokoro/voice-presets.d.ts +0 -0
  846. /package/{src → dist}/services/voice/kokoro/voices.d.ts +0 -0
  847. /package/{src → dist}/services/voice/lifecycle.d.ts +0 -0
  848. /package/{src → dist}/services/voice/optimistic-policy.d.ts +0 -0
  849. /package/{src → dist}/services/voice/phoneme-tokenizer.d.ts +0 -0
  850. /package/{src → dist}/services/voice/phrase-cache.d.ts +0 -0
  851. /package/{src → dist}/services/voice/phrase-chunker.d.ts +0 -0
  852. /package/{src → dist}/services/voice/pipeline-impls.d.ts +0 -0
  853. /package/{src → dist}/services/voice/pipeline.d.ts +0 -0
  854. /package/{src → dist}/services/voice/prefill-client.d.ts +0 -0
  855. /package/{src → dist}/services/voice/prefix-preserving-queue.d.ts +0 -0
  856. /package/{src → dist}/services/voice/profile-store.d.ts +0 -0
  857. /package/{src → dist}/services/voice/ring-buffer.d.ts +0 -0
  858. /package/{src → dist}/services/voice/rollback-queue.d.ts +0 -0
  859. /package/{src → dist}/services/voice/samantha-preset-placeholder.d.ts +0 -0
  860. /package/{src → dist}/services/voice/samantha-preset-regenerator.d.ts +0 -0
  861. /package/{src → dist}/services/voice/scheduler.d.ts +0 -0
  862. /package/{src → dist}/services/voice/speaker/attribution-pipeline.d.ts +0 -0
  863. /package/{src → dist}/services/voice/speaker/diarizer-fused.d.ts +0 -0
  864. /package/{src → dist}/services/voice/speaker/diarizer.d.ts +0 -0
  865. /package/{src → dist}/services/voice/speaker/encoder-fused.d.ts +0 -0
  866. /package/{src → dist}/services/voice/speaker/encoder-ggml.d.ts +0 -0
  867. /package/{src → dist}/services/voice/speaker/encoder.d.ts +0 -0
  868. /package/{src → dist}/services/voice/speaker-imprint.d.ts +0 -0
  869. /package/{src → dist}/services/voice/speaker-preset-cache.d.ts +0 -0
  870. /package/{src → dist}/services/voice/system-audio-sink.d.ts +0 -0
  871. /package/{src → dist}/services/voice/transcript-knowledge.d.ts +0 -0
  872. /package/{src → dist}/services/voice/turn-controller.d.ts +0 -0
  873. /package/{src → dist}/services/voice/voice-budget.d.ts +0 -0
  874. /package/{src → dist}/services/voice/voice-emotion-classifier.d.ts +0 -0
  875. /package/{src → dist}/services/voice/voice-profile-artifact.d.ts +0 -0
  876. /package/{src → dist}/services/voice/voice-profile-routes.d.ts +0 -0
  877. /package/{src → dist}/services/voice/voice-state-machine.d.ts +0 -0
  878. /package/{src → dist}/services/voice/wake-word.d.ts +0 -0
  879. /package/{src → dist}/services/voice/wrap-with-first-line-cache.d.ts +0 -0
  880. /package/{src → dist}/services/voice-model-updater.d.ts +0 -0
  881. /package/{src → dist}/services/voice-prewarm.d.ts +0 -0
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Orchestrator for the on-device artifact bundle the local-only / local
3
+ * runtime needs to operate: embedding, TTS, STT, and (when the user is not
4
+ * signed into Eliza Cloud) the text model. Called from:
5
+ *
6
+ * - `runtime/ensure-local-inference-handler.ts` — fire-and-forget at agent
7
+ * boot whenever the resolved runtime mode is `local` or `local-only`.
8
+ * - `ui/src/first-run/auto-download-recommended.ts` — when the user picks
9
+ * "Local" in the first-run runtime setup, after the local agent's
10
+ * `/api/health` reports ready.
11
+ * - `POST /api/local-inference/ensure` — on-demand re-trigger from the
12
+ * settings UI / a CLI.
13
+ *
14
+ * Today every Eliza-1 tier ships every component (text + voice + asr +
15
+ * embedding + embedded-draft-head MTP metadata + cache) as one HuggingFace bundle. The
16
+ * orchestrator picks a tier per artifact kind (always the same tier today —
17
+ * tier resolution is centralised on the recommender) and triggers parallel
18
+ * `service.startDownload(modelId)` calls per kind. The downloader is
19
+ * idempotent on the same `modelId`, so when the same tier covers multiple
20
+ * kinds we end up with one bundle download and a per-kind audit trail.
21
+ *
22
+ * When the architecture splits the bundle into separately addressable
23
+ * sub-archives, the per-kind selection in {@link modelIdForKind} is where the
24
+ * per-modality model id diverges — the rest of the orchestrator already wraps
25
+ * each artifact in its own `Promise.allSettled` slot.
26
+ *
27
+ * `signedInCloud === true` skips the `text` artifact: cloud-routed inference
28
+ * handles TEXT_LARGE / TEXT_SMALL, and we don't want a multi-gig text weight
29
+ * download imposed on a user who chose cloud routing. Embedding / TTS / STT
30
+ * always download — the local runtime serves those locally regardless of
31
+ * whether the text model is cloud-routed.
32
+ */
33
+ import type { Eliza1Tier } from "./manifest";
34
+ import type { LocalInferenceService } from "./service";
35
+ type RuntimeMode = "local" | "local-only" | "cloud" | "remote";
36
+ /**
37
+ * Artifact kinds the orchestrator can trigger. The label is consumer-facing
38
+ * (logs / API responses) and is intentionally distinct from the catalog's
39
+ * `ModelCategory` — the catalog labels a full chat tier as `"chat"`, while
40
+ * here we describe the on-device modality the artifact serves.
41
+ */
42
+ export type EnsureLocalArtifactKind = "embedding" | "tts" | "stt" | "text";
43
+ export type EnsureLocalArtifactStatus = "started" | "already-installed" | "skipped" | "failed";
44
+ export interface EnsureLocalArtifactOutcome {
45
+ kind: EnsureLocalArtifactKind;
46
+ modelId: string;
47
+ status: EnsureLocalArtifactStatus;
48
+ /** Free-text disambiguation. Populated for skipped / failed outcomes. */
49
+ reason?: string;
50
+ }
51
+ export interface EnsureLocalArtifactsArgs {
52
+ /** Resolved runtime mode (local | local-only | cloud | remote). */
53
+ mode: RuntimeMode;
54
+ /** Optional tier override; if omitted, picked from the device hardware probe. */
55
+ tier?: Eliza1Tier;
56
+ /** True when the user is signed into Eliza Cloud. Suppresses the text artifact. */
57
+ signedInCloud: boolean;
58
+ /** Optional service facade override (tests). */
59
+ service?: LocalInferenceService;
60
+ /** Optional logger. */
61
+ logger?: {
62
+ info: (...a: unknown[]) => void;
63
+ warn: (...a: unknown[]) => void;
64
+ };
65
+ }
66
+ export interface EnsureLocalArtifactsResult {
67
+ artifacts: EnsureLocalArtifactOutcome[];
68
+ /**
69
+ * True iff every required artifact is now either installed or actively
70
+ * downloading. False when any artifact slot failed; the per-artifact
71
+ * outcome carries the reason.
72
+ */
73
+ complete: boolean;
74
+ }
75
+ /**
76
+ * Trigger the parallel downloads of every artifact the local runtime needs
77
+ * to operate on this device. See the module docstring for the per-mode /
78
+ * per-cloud-state contract.
79
+ */
80
+ export declare function ensureLocalArtifacts(args: EnsureLocalArtifactsArgs): Promise<EnsureLocalArtifactsResult>;
81
+ export {};
82
+ //# sourceMappingURL=ensure-local-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-local-artifacts.d.ts","sourceRoot":"","sources":["../../src/services/ensure-local-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGvD,KAAK,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAgB/D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAClC,SAAS,GACT,mBAAmB,GACnB,SAAS,GACT,QAAQ,CAAC;AAEZ,MAAM,WAAW,0BAA0B;IAC1C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,yBAAyB,CAAC;IAClC,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACxC,mEAAmE;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,iFAAiF;IACjF,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mFAAmF;IACnF,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,uBAAuB;IACvB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;CAC9E;AAED,MAAM,WAAW,0BAA0B;IAC1C,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CAClB;AA4ID;;;;GAIG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,wBAAwB,GAC5B,OAAO,CAAC,0BAA0B,CAAC,CAuGrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-scanner.d.ts","sourceRoot":"","sources":["../../src/services/external-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA6P9C,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAuCpE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Mock implementation of `FfiLlmStreamingAbi` for testing.
3
+ *
4
+ * This module provides a fully in-process fake of the C ABI surface
5
+ * declared in `ffi-llm-streaming-abi.ts`. No native library is loaded,
6
+ * no GGUF is read, and no real inference is performed. The mock is safe
7
+ * to use in any test environment regardless of OS or hardware.
8
+ *
9
+ * Usage
10
+ * ─────
11
+ * ```ts
12
+ * import { makeFfiLlmMock } from "./ffi-llm-mock";
13
+ *
14
+ * const mock = makeFfiLlmMock();
15
+ * const caps = detectMobileCapabilities(mock.ffi);
16
+ * // caps.streamingLlm === true
17
+ *
18
+ * const handle = mock.ffi.eliza_inference_llm_stream_open("fake.gguf", 512, 4, 0)!;
19
+ * mock.ffi.eliza_inference_llm_stream_prefill(handle, new Int32Array([1, 2, 3]), 0);
20
+ *
21
+ * const tokens: string[] = [];
22
+ * await mock.ffi.eliza_inference_llm_stream_generate(handle, 32, 0.8, 0.95, (id, text, done) => {
23
+ * if (!done) tokens.push(text);
24
+ * });
25
+ * // tokens === ["Hello", " world", "!"]
26
+ * ```
27
+ *
28
+ * Synthetic stream
29
+ * ────────────────
30
+ * `generate` fires the callback with three synthetic tokens:
31
+ * 1. tokenId=1, tokenText="Hello", isDone=false (after ~1 ms)
32
+ * 2. tokenId=2, tokenText=" world", isDone=false (after ~1 ms)
33
+ * 3. tokenId=3, tokenText="!", isDone=true (after ~1 ms)
34
+ *
35
+ * If `cancel` is called before the stream finishes, the mock observes the
36
+ * cancellation flag between tokens and stops early. The last callback
37
+ * invocation before cancellation will have `isDone=true` so callers
38
+ * always receive a terminal event.
39
+ *
40
+ * State tracking
41
+ * ──────────────
42
+ * `makeFfiLlmMock()` returns a `MockState` alongside the ABI object. The
43
+ * state object exposes internal counters that tests can assert on (e.g.
44
+ * number of `open` / `close` / `cancel` calls, whether a handle is
45
+ * considered open).
46
+ */
47
+ import type { FfiLlmStreamingAbi, FfiMtpStreamingAbi } from "./ffi-llm-streaming-abi";
48
+ /**
49
+ * Observable state counters for the mock. Tests read these to verify
50
+ * that the ABI layer is called in the right order.
51
+ */
52
+ export interface MockState {
53
+ /** Number of times `eliza_inference_llm_stream_open` was called. */
54
+ openCount: number;
55
+ /** Number of times `eliza_inference_llm_stream_prefill` was called. */
56
+ prefillCount: number;
57
+ /** Number of times `eliza_inference_llm_stream_generate` was called. */
58
+ generateCount: number;
59
+ /** Number of times `eliza_inference_llm_stream_cancel` was called. */
60
+ cancelCount: number;
61
+ /** Number of times `eliza_inference_llm_stream_close` was called. */
62
+ closeCount: number;
63
+ /**
64
+ * Set of handle ids that have been opened but not yet closed.
65
+ * Useful for detecting handle leaks in multi-generate tests.
66
+ */
67
+ openHandles: Set<number>;
68
+ /**
69
+ * True when cancel was called on the most recently opened handle
70
+ * before the synthetic stream finished. Resets on the next `open`.
71
+ */
72
+ cancelledMidStream: boolean;
73
+ }
74
+ /**
75
+ * Build a mock `FfiLlmStreamingAbi` (and a matching `FfiMtpStreamingAbi`
76
+ * that delegates to the same synthetic stream) together with an observable
77
+ * `MockState`.
78
+ *
79
+ * The returned `ffi` object satisfies both interface contracts so tests
80
+ * can pass it to `detectMobileCapabilities()` and to `FfiStreamingRunner`
81
+ * adapters without needing separate factories.
82
+ */
83
+ export declare function makeFfiLlmMock(): {
84
+ ffi: FfiLlmStreamingAbi & FfiMtpStreamingAbi & {
85
+ llmStreamSupported(): boolean;
86
+ ttsStreamSupported(): boolean;
87
+ };
88
+ state: MockState;
89
+ };
90
+ //# sourceMappingURL=ffi-llm-mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-llm-mock.d.ts","sourceRoot":"","sources":["../../src/services/ffi-llm-mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAEX,kBAAkB,EAClB,kBAAkB,EAElB,MAAM,yBAAyB,CAAC;AAwCjC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACzB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,IAAI;IACjC,GAAG,EAAE,kBAAkB,GACtB,kBAAkB,GAAG;QACpB,kBAAkB,IAAI,OAAO,CAAC;QAC9B,kBAAkB,IAAI,OAAO,CAAC;KAC9B,CAAC;IACH,KAAK,EAAE,SAAS,CAAC;CACjB,CAsNA"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * TypeScript-side ABI surface for the in-process FFI streaming LLM path.
3
+ *
4
+ * This file mirrors the C header at
5
+ * `packages/inference/llama.cpp/omnivoice/src/ffi-streaming.h` — the
6
+ * function names are the same so that bun:ffi symbol resolution uses the
7
+ * exact C exports without any aliasing.
8
+ *
9
+ * Rationale for a separate ABI module
10
+ * ────────────────────────────────────
11
+ * `ffi-streaming-runner.ts` depends on the `ElizaInferenceFfi` handle from
12
+ * `voice/ffi-bindings.ts`, which in turn is tied to the omnivoice-fused
13
+ * build of `libelizainference`. That handle carries TTS, ASR, embedding,
14
+ * and streaming-LLM symbols together. The ABI declared here is the
15
+ * *streaming-LLM-only* slice that the mobile bootstrap needs to reason
16
+ * about independently — it does not assume the full fused binary is
17
+ * loaded. Callers that already have an `ElizaInferenceFfi` can implement
18
+ * `FfiLlmStreamingAbi` as a thin wrapper; callers that only have the
19
+ * llama.cpp-only `libelizainference.so` (e.g. the Android AOSP bootstrap
20
+ * before omnivoice ships) can implement it directly.
21
+ *
22
+ * MTP phasing
23
+ * ──────────────
24
+ * Phase 1 — target model only. The `FfiLlmStreamingAbi` alone is
25
+ * sufficient: open a single-model streaming session, prefill, generate,
26
+ * cancel, close. No drafter weights required.
27
+ *
28
+ * Phase 2 — speculative decoding. When `MobileInferenceCapabilities.
29
+ * mtpSupported` is `true`, swap to `FfiMtpStreamingAbi` which opens
30
+ * a paired drafter + verifier session and runs the speculative decode loop
31
+ * on-device. The two ABI surfaces share the same `FfiLlmHandle` brand so
32
+ * the dispatcher (`runtime-dispatcher.ts`) sees a uniform handle type.
33
+ *
34
+ * iOS XCFramework gap
35
+ * ───────────────────
36
+ * The ABI is defined here, the C header is frozen, but the iOS
37
+ * XCFramework that re-exports these symbols through the Swift bridge has
38
+ * not shipped yet. `loadIosStreamingLlmBinding()` in
39
+ * `ios-llama-streaming.ts` returns `null` until the XCFramework build
40
+ * lands. See `docs/inference/ffi-streaming.md` §iOS XCFramework gap for
41
+ * the current status.
42
+ */
43
+ /**
44
+ * Opaque handle to an open streaming-LLM session. The underlying C value
45
+ * is a pointer to a heap-allocated session struct; we brand it at the TS
46
+ * layer to prevent accidental mixing with other handle types.
47
+ *
48
+ * Concrete implementations will typically alias this to `bigint` (the
49
+ * bun:ffi representation of a C pointer) — but callers should treat it as
50
+ * opaque.
51
+ */
52
+ export interface FfiLlmHandle {
53
+ readonly _brand: "FfiLlmHandle";
54
+ }
55
+ /**
56
+ * Token callback fired from the generation background thread once per
57
+ * decoded token (or once per speculative-accept batch in MTP mode).
58
+ *
59
+ * `isDone` is `true` on the *last* invocation for a given generate call.
60
+ * After `isDone` the handle remains open but must not be passed to
61
+ * `generate` again until the caller re-prefills.
62
+ *
63
+ * The callback executes synchronously on the background thread the C
64
+ * library uses for decoding — callers must not call any FFI method
65
+ * back from inside the callback (the lock is not re-entrant).
66
+ */
67
+ export type TokenCallback = (tokenId: number, tokenText: string, isDone: boolean) => void;
68
+ /**
69
+ * C ABI surface for the in-process streaming LLM path.
70
+ *
71
+ * Function names match the C exports in `ffi-streaming.h` exactly; bun:ffi
72
+ * resolves them by string match against the shared library symbol table.
73
+ *
74
+ * All methods are synchronous from the JS perspective (bun:ffi calls are
75
+ * synchronous unless declared `nonblocking`). `generate` is the one
76
+ * exception: it returns immediately after scheduling the background decode
77
+ * loop and delivers results via `tokenCallback`.
78
+ */
79
+ export interface FfiLlmStreamingAbi {
80
+ /**
81
+ * Open a streaming-LLM session against the model at `modelPath`.
82
+ *
83
+ * The model is memory-mapped into the process — this call may block
84
+ * briefly on a cold filesystem. Subsequent calls with the same path
85
+ * share the mmap region (the C library uses a ref-counted mmap cache).
86
+ *
87
+ * Returns an opaque handle on success, or `null` when:
88
+ * - the model file does not exist or cannot be read,
89
+ * - the device lacks the RAM required for `contextSizeTokens`,
90
+ * - `gpuLayers > 0` and the Metal / Vulkan device is unavailable.
91
+ *
92
+ * @param modelPath Absolute path to a GGUF model file.
93
+ * @param contextSizeTokens KV cache size in tokens (must be power-of-two
94
+ * aligned; the library rounds up if needed).
95
+ * @param numThreads CPU decode threads. 0 = auto-detect (uses
96
+ * `eliza_inference_default_thread_count()`).
97
+ * @param gpuLayers Number of transformer layers to offload to
98
+ * GPU. 0 = CPU only.
99
+ */
100
+ eliza_inference_llm_stream_open(modelPath: string, contextSizeTokens: number, numThreads: number, gpuLayers: number): FfiLlmHandle | null;
101
+ /**
102
+ * Prefill the KV cache with the supplied token ids.
103
+ *
104
+ * Blocks until all tokens are evaluated. On a large prompt this can
105
+ * take several hundred milliseconds on CPU — callers should not invoke
106
+ * on the main thread.
107
+ *
108
+ * @param handle Active session from `open`.
109
+ * @param promptTokens Pre-tokenized prompt; row-major int32 ids.
110
+ * @param slotId KV slot index (0-based). Use -1 to allocate a
111
+ * fresh slot; use 0..N-1 to pin a conversational
112
+ * turn for KV reuse across multi-turn sessions.
113
+ * @returns Number of tokens prefilled, or -1 on error (invalid handle,
114
+ * OOM, or KV cache exhausted).
115
+ */
116
+ eliza_inference_llm_stream_prefill(handle: FfiLlmHandle, promptTokens: Int32Array, slotId: number): number;
117
+ /**
118
+ * Start async token generation.
119
+ *
120
+ * The library spins up an internal worker thread (or reuses a pooled
121
+ * one) and begins decoding. Each decoded token fires `tokenCallback`
122
+ * from that thread. The final callback invocation has `isDone = true`.
123
+ *
124
+ * This call is non-blocking from the C caller's perspective: the C
125
+ * function returns 0 as soon as the worker is scheduled. From the JS
126
+ * perspective, callers should await the returned Promise — it resolves
127
+ * after the final `isDone = true` callback fires so that the JS async
128
+ * iterator can drain cleanly without a separate synchronisation
129
+ * mechanism. Mock implementations fulfil this contract by resolving
130
+ * the Promise after the last synthetic token; native FFI wrappers wrap
131
+ * a completion event or condition variable.
132
+ *
133
+ * Calling `generate` on a handle that is already generating is a hard
134
+ * error (returns -1 / rejects). Callers must wait for the Promise to
135
+ * resolve (or call `cancel` and await the resulting `isDone` callback)
136
+ * before re-using the handle.
137
+ *
138
+ * @param handle Active session from `open`.
139
+ * @param maxNewTokens Budget cap. Generation stops at `maxNewTokens`
140
+ * even if no EOS token was produced.
141
+ * @param temperature Softmax temperature. 0.0 = greedy.
142
+ * @param topP Nucleus sampling threshold (0.0–1.0).
143
+ * @param tokenCallback Callback fired per token from the decode thread.
144
+ * @returns Promise resolving to 0 on success, -1 on error.
145
+ */
146
+ eliza_inference_llm_stream_generate(handle: FfiLlmHandle, maxNewTokens: number, temperature: number, topP: number, tokenCallback: TokenCallback): number | Promise<number>;
147
+ /**
148
+ * Signal the active generation to stop at the next safe cancellation
149
+ * point (after the current speculative batch is retired).
150
+ *
151
+ * This does NOT wait for the background thread to finish — the thread
152
+ * fires a final `tokenCallback` with `isDone = true` shortly after the
153
+ * cancel flag is observed. Callers that need to know the thread has
154
+ * stopped must wait for that final callback.
155
+ *
156
+ * Calling `cancel` on a handle that is not currently generating is a
157
+ * no-op.
158
+ *
159
+ * @param handle Active session from `open`.
160
+ */
161
+ eliza_inference_llm_stream_cancel(handle: FfiLlmHandle): void;
162
+ /**
163
+ * Release all resources associated with `handle`.
164
+ *
165
+ * Evicts the KV cache slots occupied by this session and releases the
166
+ * mmap reference. The model's mmap region stays mapped until the ref
167
+ * count reaches zero (i.e. all sessions against that path are closed).
168
+ *
169
+ * Calling `close` on a handle that is still generating is a hard error
170
+ * — cancel first and wait for `isDone` before closing.
171
+ *
172
+ * @param handle Active session from `open`.
173
+ */
174
+ eliza_inference_llm_stream_close(handle: FfiLlmHandle): void;
175
+ }
176
+ /**
177
+ * C ABI surface for paired drafter + verifier speculative decoding.
178
+ *
179
+ * Phase 2 only — the mobile runtime enables this path when
180
+ * `MobileInferenceCapabilities.mtpSupported` is `true`. Phase 1
181
+ * devices use `FfiLlmStreamingAbi` only (target model, no drafter).
182
+ *
183
+ * The MTP session holds two model contexts internally:
184
+ * 1. The *drafter* — a small, fast model that proposes `speculativeWindowSize`
185
+ * candidate tokens per step.
186
+ * 2. The *verifier* — the full target model that accepts or rejects the
187
+ * drafter's proposals in one parallel evaluation batch.
188
+ *
189
+ * The token callback fires once per *accepted* token (after the verifier's
190
+ * accept decision). Rejected tokens are silently discarded at the C layer;
191
+ * the JS consumer always sees a stream of accepted tokens identical to
192
+ * what a greedy target-only decode would have produced (assuming the
193
+ * drafter and verifier share vocabulary and a compatible chat template).
194
+ *
195
+ * Method signatures mirror `FfiLlmStreamingAbi` exactly — only the `open`
196
+ * argument list differs (adds drafter path + speculative window). This
197
+ * keeps the dispatcher (`runtime-dispatcher.ts`) agnostic to which ABI is
198
+ * in use.
199
+ */
200
+ export interface FfiMtpStreamingAbi {
201
+ /**
202
+ * Open a paired drafter + verifier streaming session.
203
+ *
204
+ * Both models are mmap'd; the KV cache is sized to `contextSizeTokens`
205
+ * for the verifier and proportionally smaller for the drafter (the C
206
+ * library computes the drafter KV budget automatically from the
207
+ * `speculativeWindowSize`).
208
+ *
209
+ * @param drafterModelPath Absolute path to the drafter GGUF.
210
+ * @param verifierModelPath Absolute path to the verifier GGUF.
211
+ * @param contextSizeTokens Verifier KV size in tokens.
212
+ * @param numThreads CPU threads for verifier (drafter shares
213
+ * the same thread pool).
214
+ * @param gpuLayers Verifier GPU layer count. The drafter
215
+ * always runs on CPU in Phase 2 to avoid
216
+ * competing for Metal/Vulkan resources.
217
+ * @param speculativeWindowSize Number of drafter candidate tokens per
218
+ * speculative step (1–16; 4 is a safe
219
+ * starting point for mobile).
220
+ * @returns Opaque session handle, or `null` on failure.
221
+ */
222
+ eliza_inference_mtp_stream_open(drafterModelPath: string, verifierModelPath: string, contextSizeTokens: number, numThreads: number, gpuLayers: number, speculativeWindowSize: number): FfiLlmHandle | null;
223
+ /**
224
+ * Prefill both the drafter and verifier KV caches in a single blocking
225
+ * call. The verifier is prefilled first (it owns the ground-truth KV
226
+ * state); the drafter is then fast-forwarded to match.
227
+ *
228
+ * Same contract as `FfiLlmStreamingAbi.eliza_inference_llm_stream_prefill`.
229
+ */
230
+ eliza_inference_mtp_stream_prefill(handle: FfiLlmHandle, promptTokens: Int32Array, slotId: number): number;
231
+ /**
232
+ * Start speculative-decoding generation. The token callback fires for
233
+ * each verifier-accepted token — not for each drafter proposal.
234
+ *
235
+ * Same contract as `FfiLlmStreamingAbi.eliza_inference_llm_stream_generate`.
236
+ */
237
+ eliza_inference_mtp_stream_generate(handle: FfiLlmHandle, maxNewTokens: number, temperature: number, topP: number, tokenCallback: TokenCallback): number | Promise<number>;
238
+ /**
239
+ * Cancel an active MTP generation at the next speculation boundary.
240
+ * Same contract as `FfiLlmStreamingAbi.eliza_inference_llm_stream_cancel`.
241
+ */
242
+ eliza_inference_mtp_stream_cancel(handle: FfiLlmHandle): void;
243
+ /**
244
+ * Release both drafter and verifier sessions.
245
+ * Same contract as `FfiLlmStreamingAbi.eliza_inference_llm_stream_close`.
246
+ */
247
+ eliza_inference_mtp_stream_close(handle: FfiLlmHandle): void;
248
+ }
249
+ /**
250
+ * Device-side inference capability snapshot used by the mobile bootstrap
251
+ * to decide which ABI path to activate at startup.
252
+ *
253
+ * Produced by `detectMobileCapabilities()`. The runtime re-probes on
254
+ * every foreground resume (thermal / memory state can change while the
255
+ * app is backgrounded).
256
+ */
257
+ export type MobileInferenceCapabilities = {
258
+ /**
259
+ * True when the `eliza_inference_llm_stream_*` symbols are present in
260
+ * the loaded `libelizainference` and `llmStreamSupported()` returns 1.
261
+ * This is the gate for Phase 1 on-device inference.
262
+ */
263
+ streamingLlm: boolean;
264
+ /**
265
+ * True when `streamingLlm` is true AND the drafter GGUF is bundled AND
266
+ * the device's thermal state is below `serious`. Gate for Phase 2
267
+ * speculative decoding.
268
+ */
269
+ mtpSupported: boolean;
270
+ /**
271
+ * True when the `eliza_inference_tts_synthesize_stream` symbol is
272
+ * present and `ttsStreamSupported()` returns 1. Gate for the OmniVoice
273
+ * TTS streaming path.
274
+ */
275
+ omnivoiceStreaming: boolean;
276
+ /**
277
+ * Device-reported maximum KV context in tokens. Derived from available
278
+ * device RAM minus the model weights footprint. The runtime clamps
279
+ * user-configured context sizes to this value.
280
+ *
281
+ * 0 when `streamingLlm` is false (no context available).
282
+ */
283
+ maxContextTokens: number;
284
+ /**
285
+ * Number of transformer layers the device can offload to GPU/NPU at
286
+ * the current thermal state without risking thermal throttling. 0 means
287
+ * CPU-only execution. The runtime uses this as the initial `gpuLayers`
288
+ * argument to `open`; it can be reduced dynamically when the thermal
289
+ * state worsens mid-session.
290
+ */
291
+ recommendedGpuLayers: number;
292
+ };
293
+ /**
294
+ * Derive a `MobileInferenceCapabilities` snapshot from an FFI binding.
295
+ *
296
+ * When `ffi` is `null` (e.g. in test environments, cloud-only builds, or
297
+ * when the native library failed to load), all boolean flags are `false`
298
+ * and numeric fields take safe zero defaults. This keeps the downstream
299
+ * runtime uniform: it can always read the capability struct without
300
+ * branching on "was an FFI loaded".
301
+ *
302
+ * When `ffi` is non-null, the function:
303
+ * 1. Calls `llmStreamSupported()` to set `streamingLlm`.
304
+ * 2. Sets `mtpSupported = false` for Phase 1 (drafter support
305
+ * detection requires a platform-specific bundle probe that is NOT
306
+ * part of this function; callers that have done the probe should set
307
+ * the field themselves after receiving the snapshot).
308
+ * 3. Calls `ttsStreamSupported()` to set `omnivoiceStreaming`.
309
+ * 4. Uses conservative device defaults for `maxContextTokens` and
310
+ * `recommendedGpuLayers` when the underlying library does not
311
+ * expose separate capability-query symbols (Phase 1 does not require
312
+ * them).
313
+ *
314
+ * @param ffi A loaded FFI binding, or `null` for an all-false defaults
315
+ * snapshot.
316
+ */
317
+ export declare function detectMobileCapabilities(ffi: FfiLlmStreamingAbi | null): MobileInferenceCapabilities;
318
+ //# sourceMappingURL=ffi-llm-streaming-abi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-llm-streaming-abi.d.ts","sourceRoot":"","sources":["../../src/services/ffi-llm-streaming-abi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAMH;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CAChC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GAAG,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,KACX,IAAI,CAAC;AAMV;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,+BAA+B,CAC9B,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GACf,YAAY,GAAG,IAAI,CAAC;IAEvB;;;;;;;;;;;;;;OAcG;IACH,kCAAkC,CACjC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,MAAM,GACZ,MAAM,CAAC;IAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,mCAAmC,CAClC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,aAAa,GAC1B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B;;;;;;;;;;;;;OAaG;IACH,iCAAiC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9D;;;;;;;;;;;OAWG;IACH,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+BAA+B,CAC9B,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,qBAAqB,EAAE,MAAM,GAC3B,YAAY,GAAG,IAAI,CAAC;IAEvB;;;;;;OAMG;IACH,kCAAkC,CACjC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,MAAM,GACZ,MAAM,CAAC;IAEV;;;;;OAKG;IACH,mCAAmC,CAClC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,aAAa,GAC1B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B;;;OAGG;IACH,iCAAiC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9D;;;OAGG;IACH,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7D;AAMD;;;;;;;GAOG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACzC;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAC5B,2BAA2B,CAoD7B"}
@@ -70,10 +70,10 @@ export interface FfiBackendSession {
70
70
  } | null;
71
71
  /**
72
72
  * Absolute path to a *separate* MTP drafter GGUF resolved during load.
73
- * `null` means same-file MTP: the NextN head is embedded in the main
74
- * text GGUF and the native runner activates `--spec-type draft-mtp`
75
- * with no `-md`. Speculative decoding is governed by `mtp`, not by the
76
- * presence of this path.
73
+ * `null` means embedded-draft-head MTP: the draft head is embedded in
74
+ * the main text GGUF and the native runner activates `--spec-type
75
+ * draft-mtp` with no `-md`. Speculative decoding is governed by `mtp`,
76
+ * not by the presence of this path.
77
77
  */
78
78
  readonly draftModelPath: string | null;
79
79
  /**
@@ -84,13 +84,14 @@ export interface FfiBackendSession {
84
84
  readonly mmprojPath: string | null;
85
85
  /**
86
86
  * Per-load runtime config the fused libelizainference path applies at its
87
- * first `llmStreamOpen` (gpuLayers + KV-cache quant types). The desktop
87
+ * first `llmStreamOpen` (context size, gpuLayers + KV-cache quant types). The desktop
88
88
  * libllama runtime applies these at `loadModel()` instead and leaves this
89
89
  * `null` — the backend forwards them into the runner's per-call config only
90
90
  * when present, so the fused path mirrors the libllama load decision without
91
91
  * the libllama path double-applying them.
92
92
  */
93
93
  readonly loadConfig?: {
94
+ contextSize?: number;
94
95
  gpuLayers?: number;
95
96
  cacheTypeK?: string | null;
96
97
  cacheTypeV?: string | null;
@@ -137,10 +138,26 @@ export declare class FfiStreamingBackend implements LocalInferenceBackend {
137
138
  slotId: number;
138
139
  cacheKey: string;
139
140
  }): Promise<boolean>;
141
+ currentRuntimeLoadConfig(): {
142
+ modelId: null;
143
+ modelPath: string | null;
144
+ contextSize: number | null;
145
+ cacheTypeK: string | null;
146
+ cacheTypeV: string | null;
147
+ gpuLayers: number | null;
148
+ parallel: number;
149
+ binaryPath: null;
150
+ backend: "llama-cpp";
151
+ mtp: {
152
+ specType: "draft-mtp";
153
+ draftMin: number;
154
+ draftMax: number;
155
+ } | null;
156
+ } | null;
140
157
  /**
141
158
  * True when Eliza-1 native MTP is active for the loaded target model.
142
- * Covers both shapes: same-file MTP (NextN head embedded in the text
143
- * GGUF, `draftModelPath` null) and separate-drafter MTP.
159
+ * Covers both shapes: embedded-draft-head MTP (draft head embedded in
160
+ * the text GGUF, `draftModelPath` null) and separate-drafter MTP.
144
161
  */
145
162
  mtpEnabled(): boolean;
146
163
  /**
@@ -170,6 +187,10 @@ export declare class FfiStreamingBackend implements LocalInferenceBackend {
170
187
  maxTokens?: number;
171
188
  temperature?: number;
172
189
  signal?: AbortSignal;
190
+ /** Per-token callback — when set + the runtime supports streaming vision,
191
+ * the description is decoded token-by-token through the same pipe as chat. */
192
+ onTextChunk?: (chunk: string) => void | Promise<void>;
193
+ maxTokensPerStep?: number;
173
194
  }): Promise<{
174
195
  text: string;
175
196
  projectorMs?: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-streaming-backend.d.ts","sourceRoot":"","sources":["../../src/services/ffi-streaming-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,4BAA4B,EAC5B,qBAAqB,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IACjC,SAAS,IAAI,OAAO,CAAC;IACrB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB;;;;;OAKG;IACH,aAAa,CAAC,IAAI,MAAM,CAAC;IACzB,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE;QACb,QAAQ,EAAE,WAAW,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;KAC3B,GAAG,IAAI,CAAC;IACT;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;CACT;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,qBAAqB;IAMpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,EAAE,EAAG,WAAW,CAAU;IAEnC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAuB;gBAEZ,OAAO,EAAE,iBAAiB;IAEjD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,cAAc,IAAI,OAAO;IAIzB,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAI3B,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAKrD,iBAAiB,CACtB,IAAI,EAAE,YAAY,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,4BAA4B,CAAC;IAuDxC;;;;;;;OAOG;IACG,qBAAqB,CAC1B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAYhB,kFAAkF;IAC5E,qBAAqB,CAC1B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IASnB;;;;;OAKG;IACG,mBAAmB,CACxB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,OAAO,CAAC;IAuBnB,wBAAwB;;;;;;;;;;;;;;;;IAwBxB;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;;;;;;OAOG;IACG,aAAa,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;sFAC8E;QAC9E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA4CtE,iBAAiB,IAAI,MAAM,GAAG,IAAI;CAGlC"}
@@ -54,6 +54,12 @@ export interface FfiStreamingGenerateArgs {
54
54
  */
55
55
  cacheTypeK?: string | null;
56
56
  cacheTypeV?: string | null;
57
+ /**
58
+ * Runtime context window in tokens (ABI v9). Forwarded into the fused
59
+ * session config on `llmStreamOpen`; `undefined` keeps the native
60
+ * ELIZA_LLM_N_CTX/default fallback.
61
+ */
62
+ contextSize?: number;
57
63
  /**
58
64
  * GBNF grammar source forcing the structured-reply envelope. Passed to
59
65
  * the native session's `llmStreamOpen` config so sampling is
@@ -62,6 +68,16 @@ export interface FfiStreamingGenerateArgs {
62
68
  gbnfGrammar?: string | null;
63
69
  /** Cancellation signal — fires `llmStreamCancel` on the active session. */
64
70
  signal?: AbortSignal;
71
+ /**
72
+ * Per-step token cap for the native decode loop. Lower values make the
73
+ * local UI stream in finer-grained jumps (smoother token-by-token render)
74
+ * at the cost of more JS↔FFI round-trips per reply; higher values batch
75
+ * more tokens per step. When omitted, falls back to
76
+ * `resolveMaxTokensPerStep()` (env `ELIZA_LOCAL_STREAM_TOKENS_PER_STEP`,
77
+ * else `DEFAULT_MAX_TOKENS_PER_STEP`). Clamped to
78
+ * `[MIN_MAX_TOKENS_PER_STEP, MAX_MAX_TOKENS_PER_STEP]`.
79
+ */
80
+ maxTokensPerStep?: number;
65
81
  /** Per-chunk text callback. */
66
82
  onTextChunk?: (chunk: string) => void | Promise<void>;
67
83
  /** Speculative accept/reject events from MTP verification. */
@@ -74,6 +90,14 @@ export interface FfiStreamingGenerateResult {
74
90
  drafted: number;
75
91
  accepted: number;
76
92
  }
93
+ /**
94
+ * Resolve the per-step token cap for the native decode loop. Override via the
95
+ * `ELIZA_LOCAL_STREAM_TOKENS_PER_STEP` env var (e.g. set to `8` for smoother
96
+ * local streaming, weighed against the extra JS↔FFI round-trips and the shared
97
+ * voice phrase-chunker). Falls back to `DEFAULT_MAX_TOKENS_PER_STEP` (32) when
98
+ * unset or invalid; clamped to `[MIN_MAX_TOKENS_PER_STEP, MAX_MAX_TOKENS_PER_STEP]`.
99
+ */
100
+ export declare function resolveMaxTokensPerStep(): number;
77
101
  /**
78
102
  * Backend used by the mobile and desktop FFI routes.
79
103
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-streaming-runner.d.ts","sourceRoot":"","sources":["../../src/services/ffi-streaming-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAa,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,WAAW,wBAAwB;IACxC,6DAA6D;IAC7D,YAAY,EAAE,UAAU,CAAC;IACzB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,8DAA8D;IAC9D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,0BAA0B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAsBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAU7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAVrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAEjE;;;;;OAKG;gBAEe,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,YAAY;IAGnC;;;;OAIG;IACG,iBAAiB,CACtB,IAAI,EAAE,wBAAwB,GAC5B,OAAO,CAAC,0BAA0B,CAAC;IAsBtC;;;;;;OAMG;IACI,cAAc,CACpB,IAAI,EAAE,wBAAwB,GAC5B,aAAa,CAAC,aAAa,CAAC;IAmD/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASzD,oEAAoE;IACpE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;YAW9C,WAAW;IA2BzB;;;;OAIG;YACW,gBAAgB;CAyG9B"}