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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/actions/generate-media.d.ts +59 -0
  4. package/dist/actions/generate-media.d.ts.map +1 -0
  5. package/dist/actions/identify-speaker.d.ts +23 -0
  6. package/dist/actions/identify-speaker.d.ts.map +1 -0
  7. package/dist/actions/transcription-control.d.ts +29 -0
  8. package/dist/actions/transcription-control.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  10. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  12. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  14. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  16. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  18. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  20. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  22. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  23. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  24. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  25. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  26. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  27. package/dist/backends/apple-foundation.d.ts +56 -0
  28. package/dist/backends/apple-foundation.d.ts.map +1 -0
  29. package/dist/index.d.ts +8 -37
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +38979 -430
  32. package/dist/index.js.map +217 -0
  33. package/dist/local-inference-routes.d.ts +47 -0
  34. package/dist/local-inference-routes.d.ts.map +1 -0
  35. package/dist/provider.d.ts +21 -0
  36. package/dist/provider.d.ts.map +1 -0
  37. package/dist/routes/compat-helpers.d.ts +18 -0
  38. package/dist/routes/compat-helpers.d.ts.map +1 -0
  39. package/dist/routes/family-member-route.d.ts +62 -0
  40. package/dist/routes/family-member-route.d.ts.map +1 -0
  41. package/dist/routes/index.d.ts +20 -0
  42. package/dist/routes/index.d.ts.map +1 -0
  43. package/dist/routes/index.js +42040 -0
  44. package/dist/routes/index.js.map +236 -0
  45. package/dist/routes/live-diarization-route.d.ts +33 -0
  46. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  47. package/dist/routes/local-inference-asr-route.d.ts +4 -0
  48. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  49. package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
  50. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  51. package/dist/routes/local-inference-compat-routes.d.ts +16 -0
  52. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  53. package/dist/routes/local-inference-tts-route.d.ts +7 -0
  54. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  56. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  57. package/dist/routes/transcript-audio-store.d.ts +15 -0
  58. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  59. package/dist/routes/transcripts-routes.d.ts +44 -0
  60. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  61. package/dist/routes/voice-first-run-routes.d.ts +62 -0
  62. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  63. package/dist/routes/voice-models-routes.d.ts +62 -0
  64. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  65. package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
  66. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  67. package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
  68. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  69. package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/dist/runtime/embedding-manager-support.d.ts +77 -0
  72. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  73. package/dist/runtime/embedding-presets.d.ts +16 -0
  74. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  75. package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
  76. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  77. package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
  78. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  79. package/dist/runtime/index.d.ts +15 -0
  80. package/dist/runtime/index.d.ts.map +1 -0
  81. package/dist/runtime/index.js +38768 -0
  82. package/dist/runtime/index.js.map +217 -0
  83. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  84. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  85. package/dist/runtime/voice-entity-binding.d.ts +113 -0
  86. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  87. package/dist/services/active-model.d.ts +310 -0
  88. package/dist/services/active-model.d.ts.map +1 -0
  89. package/dist/services/asr-provenance.d.ts +5 -0
  90. package/dist/services/asr-provenance.d.ts.map +1 -0
  91. package/dist/services/assignments.d.ts +84 -0
  92. package/dist/services/assignments.d.ts.map +1 -0
  93. package/dist/services/backend-selector.d.ts +55 -0
  94. package/dist/services/backend-selector.d.ts.map +1 -0
  95. package/dist/services/backend.d.ts +440 -0
  96. package/dist/services/backend.d.ts.map +1 -0
  97. package/dist/services/bionic-host-loader.d.ts +67 -0
  98. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  99. package/dist/services/bundled-models.d.ts +34 -0
  100. package/dist/services/bundled-models.d.ts.map +1 -0
  101. package/dist/services/cache-bridge.d.ts +206 -0
  102. package/dist/services/cache-bridge.d.ts.map +1 -0
  103. package/dist/services/catalog.d.ts +10 -0
  104. package/dist/services/catalog.d.ts.map +1 -0
  105. package/dist/services/checkpoint-client.d.ts +109 -0
  106. package/dist/services/checkpoint-client.d.ts.map +1 -0
  107. package/dist/services/checkpoint-manager.d.ts +217 -0
  108. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  109. package/dist/services/cloud-fallback.d.ts +102 -0
  110. package/dist/services/cloud-fallback.d.ts.map +1 -0
  111. package/dist/services/context-fit.d.ts +36 -0
  112. package/dist/services/context-fit.d.ts.map +1 -0
  113. package/dist/services/conversation-registry.d.ts +142 -0
  114. package/dist/services/conversation-registry.d.ts.map +1 -0
  115. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
  116. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  117. package/dist/services/device-bridge.d.ts +188 -0
  118. package/dist/services/device-bridge.d.ts.map +1 -0
  119. package/dist/services/device-resource-metrics.d.ts +149 -0
  120. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  121. package/dist/services/device-tier.d.ts +133 -0
  122. package/dist/services/device-tier.d.ts.map +1 -0
  123. package/dist/services/downloader.d.ts +94 -0
  124. package/dist/services/downloader.d.ts.map +1 -0
  125. package/dist/services/engine.d.ts +579 -0
  126. package/dist/services/engine.d.ts.map +1 -0
  127. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  128. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  129. package/dist/services/external-scanner.d.ts +17 -0
  130. package/dist/services/external-scanner.d.ts.map +1 -0
  131. package/dist/services/ffi-llm-mock.d.ts +90 -0
  132. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  133. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  134. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  135. package/dist/services/ffi-streaming-backend.d.ts +201 -0
  136. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  137. package/dist/services/ffi-streaming-runner.d.ts +146 -0
  138. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  139. package/dist/services/gpu-autotune.d.ts +150 -0
  140. package/dist/services/gpu-autotune.d.ts.map +1 -0
  141. package/dist/services/gpu-detect.d.ts +56 -0
  142. package/dist/services/gpu-detect.d.ts.map +1 -0
  143. package/dist/services/handler-registry.d.ts +72 -0
  144. package/dist/services/handler-registry.d.ts.map +1 -0
  145. package/dist/services/hardware.d.ts +63 -0
  146. package/dist/services/hardware.d.ts.map +1 -0
  147. package/dist/services/image-description-runtime.d.ts +14 -0
  148. package/dist/services/image-description-runtime.d.ts.map +1 -0
  149. package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
  150. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  151. package/dist/services/imagegen/backend-selector.d.ts +118 -0
  152. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  153. package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
  154. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  155. package/dist/services/imagegen/errors.d.ts +16 -0
  156. package/dist/services/imagegen/errors.d.ts.map +1 -0
  157. package/dist/services/imagegen/index.d.ts +58 -0
  158. package/dist/services/imagegen/index.d.ts.map +1 -0
  159. package/dist/services/imagegen/mflux.d.ts +74 -0
  160. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  161. package/dist/services/imagegen/sd-cpp.d.ts +181 -0
  162. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  163. package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  164. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  165. package/dist/services/imagegen/types.d.ts +181 -0
  166. package/dist/services/imagegen/types.d.ts.map +1 -0
  167. package/dist/services/index.d.ts +31 -0
  168. package/dist/services/index.d.ts.map +1 -0
  169. package/dist/services/index.js +39453 -0
  170. package/dist/services/index.js.map +227 -0
  171. package/dist/services/inference-capabilities.d.ts +132 -0
  172. package/dist/services/inference-capabilities.d.ts.map +1 -0
  173. package/dist/services/inference-telemetry.d.ts +59 -0
  174. package/dist/services/inference-telemetry.d.ts.map +1 -0
  175. package/dist/services/ios-llama-streaming.d.ts +119 -0
  176. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  177. package/dist/services/kv-spill.d.ts +189 -0
  178. package/dist/services/kv-spill.d.ts.map +1 -0
  179. package/dist/services/latency-trace.d.ts +346 -0
  180. package/dist/services/latency-trace.d.ts.map +1 -0
  181. package/dist/services/lib-target.d.ts +55 -0
  182. package/dist/services/lib-target.d.ts.map +1 -0
  183. package/dist/services/live-signals.d.ts +86 -0
  184. package/dist/services/live-signals.d.ts.map +1 -0
  185. package/dist/services/llama-server-metrics.d.ts +114 -0
  186. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  187. package/dist/services/llm-streaming-binding.d.ts +96 -0
  188. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  189. package/dist/services/load-args.d.ts +82 -0
  190. package/dist/services/load-args.d.ts.map +1 -0
  191. package/dist/services/manifest/index.d.ts +4 -0
  192. package/dist/services/manifest/index.d.ts.map +1 -0
  193. package/dist/services/manifest/schema.d.ts +903 -0
  194. package/dist/services/manifest/schema.d.ts.map +1 -0
  195. package/dist/services/manifest/types.d.ts +32 -0
  196. package/dist/services/manifest/types.d.ts.map +1 -0
  197. package/dist/services/manifest/validator.d.ts +66 -0
  198. package/dist/services/manifest/validator.d.ts.map +1 -0
  199. package/dist/services/memory-arbiter.d.ts +348 -0
  200. package/dist/services/memory-arbiter.d.ts.map +1 -0
  201. package/dist/services/memory-benchmark.d.ts +76 -0
  202. package/dist/services/memory-benchmark.d.ts.map +1 -0
  203. package/dist/services/memory-monitor.d.ts +128 -0
  204. package/dist/services/memory-monitor.d.ts.map +1 -0
  205. package/dist/services/memory-pressure.d.ts +130 -0
  206. package/dist/services/memory-pressure.d.ts.map +1 -0
  207. package/dist/services/mtp-doctor.d.ts +13 -0
  208. package/dist/services/mtp-doctor.d.ts.map +1 -0
  209. package/dist/services/network-policy.d.ts +127 -0
  210. package/dist/services/network-policy.d.ts.map +1 -0
  211. package/dist/services/paths.d.ts +6 -0
  212. package/dist/services/paths.d.ts.map +1 -0
  213. package/dist/services/planner-skeleton.d.ts +124 -0
  214. package/dist/services/planner-skeleton.d.ts.map +1 -0
  215. package/dist/services/providers.d.ts +38 -0
  216. package/dist/services/providers.d.ts.map +1 -0
  217. package/dist/services/ram-budget.d.ts +110 -0
  218. package/dist/services/ram-budget.d.ts.map +1 -0
  219. package/dist/services/readiness.d.ts +9 -0
  220. package/dist/services/readiness.d.ts.map +1 -0
  221. package/dist/services/recommendation.d.ts +111 -0
  222. package/dist/services/recommendation.d.ts.map +1 -0
  223. package/dist/services/registry.d.ts +33 -0
  224. package/dist/services/registry.d.ts.map +1 -0
  225. package/dist/services/router-handler.d.ts +92 -0
  226. package/dist/services/router-handler.d.ts.map +1 -0
  227. package/dist/services/routing-policy.d.ts +92 -0
  228. package/dist/services/routing-policy.d.ts.map +1 -0
  229. package/dist/services/routing-preferences.d.ts +8 -0
  230. package/dist/services/routing-preferences.d.ts.map +1 -0
  231. package/dist/services/runtime-target.d.ts +98 -0
  232. package/dist/services/runtime-target.d.ts.map +1 -0
  233. package/dist/services/service.d.ts +128 -0
  234. package/dist/services/service.d.ts.map +1 -0
  235. package/dist/services/session-pool.d.ts +72 -0
  236. package/dist/services/session-pool.d.ts.map +1 -0
  237. package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
  238. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  239. package/dist/services/structured-output/index.d.ts +2 -0
  240. package/dist/services/structured-output/index.d.ts.map +1 -0
  241. package/dist/services/structured-output.d.ts +311 -0
  242. package/dist/services/structured-output.d.ts.map +1 -0
  243. package/dist/services/system-memory.d.ts +33 -0
  244. package/dist/services/system-memory.d.ts.map +1 -0
  245. package/dist/services/types.d.ts +19 -0
  246. package/dist/services/types.d.ts.map +1 -0
  247. package/dist/services/verify-on-device.d.ts +34 -0
  248. package/dist/services/verify-on-device.d.ts.map +1 -0
  249. package/dist/services/verify.d.ts +8 -0
  250. package/dist/services/verify.d.ts.map +1 -0
  251. package/dist/services/vision/aosp-unavailable.d.ts +115 -0
  252. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  253. package/dist/services/vision/capacitor-llama.d.ts +99 -0
  254. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  255. package/dist/services/vision/cloud-fallback.d.ts +47 -0
  256. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  257. package/dist/services/vision/hash.d.ts +71 -0
  258. package/dist/services/vision/hash.d.ts.map +1 -0
  259. package/dist/services/vision/index.d.ts +95 -0
  260. package/dist/services/vision/index.d.ts.map +1 -0
  261. package/dist/services/vision/llama-server.d.ts +73 -0
  262. package/dist/services/vision/llama-server.d.ts.map +1 -0
  263. package/dist/services/vision/types.d.ts +162 -0
  264. package/dist/services/vision/types.d.ts.map +1 -0
  265. package/dist/services/vision/vast-fallback.d.ts +18 -0
  266. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  267. package/dist/services/vision-embedding-cache.d.ts +98 -0
  268. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  269. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  270. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  271. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  272. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  273. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  274. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  275. package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
  276. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  277. package/dist/services/voice/barge-in.d.ts +112 -0
  278. package/dist/services/voice/barge-in.d.ts.map +1 -0
  279. package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
  280. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  281. package/dist/services/voice/checkpoint-manager.d.ts +199 -0
  282. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  283. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  284. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  285. package/dist/services/voice/corpus-augment.d.ts +111 -0
  286. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  287. package/dist/services/voice/corpus-generator.d.ts +134 -0
  288. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  289. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  290. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  291. package/dist/services/voice/e2e-harness.d.ts +297 -0
  292. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  293. package/dist/services/voice/eager-context-builder.d.ts +170 -0
  294. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  295. package/dist/services/voice/echo-delay.d.ts +67 -0
  296. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  297. package/dist/services/voice/echo-metrics.d.ts +7 -0
  298. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  299. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  300. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  301. package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
  302. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  303. package/dist/services/voice/embedding-server.d.ts +37 -0
  304. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  305. package/dist/services/voice/embedding.d.ts +132 -0
  306. package/dist/services/voice/embedding.d.ts.map +1 -0
  307. package/dist/services/voice/emotion-attribution.d.ts +68 -0
  308. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  309. package/dist/services/voice/engine-bridge.d.ts +762 -0
  310. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  311. package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
  312. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  313. package/dist/services/voice/eot-classifier.d.ts +211 -0
  314. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  315. package/dist/services/voice/errors.d.ts +20 -0
  316. package/dist/services/voice/errors.d.ts.map +1 -0
  317. package/dist/services/voice/expressive-tags.d.ts +158 -0
  318. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  319. package/dist/services/voice/ffi-bindings.d.ts +696 -0
  320. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  321. package/dist/services/voice/first-line-cache.d.ts +181 -0
  322. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  323. package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
  324. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  325. package/dist/services/voice/index.d.ts +96 -0
  326. package/dist/services/voice/index.d.ts.map +1 -0
  327. package/dist/services/voice/kokoro/index.d.ts +24 -0
  328. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  329. package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
  330. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  331. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  332. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  333. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  334. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  335. package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  336. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  337. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  338. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  339. package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
  340. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  341. package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
  342. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  343. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  344. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  345. package/dist/services/voice/kokoro/types.d.ts +82 -0
  346. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  347. package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
  348. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  349. package/dist/services/voice/kokoro/voices.d.ts +30 -0
  350. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  351. package/dist/services/voice/lifecycle.d.ts +135 -0
  352. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  353. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  354. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  355. package/dist/services/voice/metric-math.d.ts +10 -0
  356. package/dist/services/voice/metric-math.d.ts.map +1 -0
  357. package/dist/services/voice/mic-source.d.ts +136 -0
  358. package/dist/services/voice/mic-source.d.ts.map +1 -0
  359. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  360. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  361. package/dist/services/voice/optimistic-policy.d.ts +109 -0
  362. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  363. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  364. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  365. package/dist/services/voice/partial-stabilizer.d.ts +73 -0
  366. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  367. package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
  368. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  369. package/dist/services/voice/phrase-cache.d.ts +76 -0
  370. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  371. package/dist/services/voice/phrase-chunker.d.ts +62 -0
  372. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  373. package/dist/services/voice/pipeline-impls.d.ts +151 -0
  374. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  375. package/dist/services/voice/pipeline.d.ts +216 -0
  376. package/dist/services/voice/pipeline.d.ts.map +1 -0
  377. package/dist/services/voice/prefill-client.d.ts +123 -0
  378. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  379. package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
  380. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  381. package/dist/services/voice/profile-store.d.ts +248 -0
  382. package/dist/services/voice/profile-store.d.ts.map +1 -0
  383. package/dist/services/voice/ring-buffer.d.ts +40 -0
  384. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  385. package/dist/services/voice/rollback-queue.d.ts +24 -0
  386. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  387. package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
  388. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  389. package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
  390. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  391. package/dist/services/voice/scheduler.d.ts +146 -0
  392. package/dist/services/voice/scheduler.d.ts.map +1 -0
  393. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  394. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  395. package/dist/services/voice/shared-resources.d.ts +204 -0
  396. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  397. package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  398. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  399. package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
  400. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  401. package/dist/services/voice/speaker/diarizer.d.ts +75 -0
  402. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  403. package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
  404. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  405. package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
  406. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  407. package/dist/services/voice/speaker/encoder.d.ts +37 -0
  408. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  409. package/dist/services/voice/speaker-imprint.d.ts +83 -0
  410. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  411. package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
  412. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  413. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  414. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  415. package/dist/services/voice/system-audio-sink.d.ts +73 -0
  416. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  417. package/dist/services/voice/transcriber.d.ts +244 -0
  418. package/dist/services/voice/transcriber.d.ts.map +1 -0
  419. package/dist/services/voice/transcript-knowledge.d.ts +37 -0
  420. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  421. package/dist/services/voice/transcript-service.d.ts +60 -0
  422. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  423. package/dist/services/voice/transcript-store.d.ts +64 -0
  424. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  425. package/dist/services/voice/turn-controller.d.ts +183 -0
  426. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  427. package/dist/services/voice/types.d.ts +643 -0
  428. package/dist/services/voice/types.d.ts.map +1 -0
  429. package/dist/services/voice/vad.d.ts +283 -0
  430. package/dist/services/voice/vad.d.ts.map +1 -0
  431. package/dist/services/voice/voice-budget.d.ts +241 -0
  432. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  433. package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
  434. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  435. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  436. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  437. package/dist/services/voice/voice-preset-format.d.ts +158 -0
  438. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  439. package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
  440. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  441. package/dist/services/voice/voice-profile-routes.d.ts +83 -0
  442. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  443. package/dist/services/voice/voice-scenario.d.ts +131 -0
  444. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  445. package/dist/services/voice/voice-state-machine.d.ts +364 -0
  446. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  447. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  448. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  449. package/dist/services/voice/wake-word-ggml.d.ts +100 -0
  450. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  451. package/dist/services/voice/wake-word.d.ts +255 -0
  452. package/dist/services/voice/wake-word.d.ts.map +1 -0
  453. package/dist/services/voice/wav-codec.d.ts +11 -0
  454. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  455. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  456. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  457. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  458. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  459. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  460. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  461. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  462. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  463. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  464. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  465. package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  466. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  467. package/dist/services/voice-model-updater.d.ts +240 -0
  468. package/dist/services/voice-model-updater.d.ts.map +1 -0
  469. package/dist/services/voice-prewarm.d.ts +3 -0
  470. package/dist/services/voice-prewarm.d.ts.map +1 -0
  471. package/dist/voice-workbench.d.ts +18 -0
  472. package/dist/voice-workbench.d.ts.map +1 -0
  473. package/dist/voice-workbench.js +5259 -0
  474. package/dist/voice-workbench.js.map +34 -0
  475. package/package.json +101 -15
  476. package/registry-entry.json +137 -0
  477. package/src/actions/generate-media.ts +647 -0
  478. package/src/actions/identify-speaker.ts +171 -0
  479. package/src/actions/transcription-control.test.ts +100 -0
  480. package/src/actions/transcription-control.ts +127 -0
  481. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  482. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  483. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  484. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  485. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  486. package/src/adapters/capacitor-llama/environment.ts +71 -0
  487. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  488. package/src/adapters/capacitor-llama/index.ts +831 -0
  489. package/src/adapters/capacitor-llama/loader.ts +109 -0
  490. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  491. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  492. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  493. package/src/adapters/capacitor-llama/types.ts +374 -0
  494. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  495. package/src/backends/apple-foundation.ts +127 -0
  496. package/src/index.ts +62 -0
  497. package/src/local-inference-routes.test.ts +390 -0
  498. package/src/local-inference-routes.ts +1625 -0
  499. package/src/provider.ts +1111 -0
  500. package/src/routes/compat-helpers.ts +275 -0
  501. package/src/routes/family-member-route.ts +353 -0
  502. package/src/routes/index.ts +61 -0
  503. package/src/routes/live-diarization-route.test.ts +347 -0
  504. package/src/routes/live-diarization-route.ts +198 -0
  505. package/src/routes/local-inference-asr-route.test.ts +246 -0
  506. package/src/routes/local-inference-asr-route.ts +166 -0
  507. package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
  508. package/src/routes/local-inference-asr-transcribe.ts +97 -0
  509. package/src/routes/local-inference-compat-routes.test.ts +485 -0
  510. package/src/routes/local-inference-compat-routes.ts +775 -0
  511. package/src/routes/local-inference-tts-route.test.ts +179 -0
  512. package/src/routes/local-inference-tts-route.ts +230 -0
  513. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  514. package/src/routes/native-pcm-turn-route.ts +121 -0
  515. package/src/routes/transcript-audio-store.ts +27 -0
  516. package/src/routes/transcripts-routes.test.ts +195 -0
  517. package/src/routes/transcripts-routes.ts +191 -0
  518. package/src/routes/voice-first-run-routes.ts +524 -0
  519. package/src/routes/voice-models-routes.ts +554 -0
  520. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  521. package/src/routes/voice-profiles-management-routes.ts +476 -0
  522. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  523. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  524. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  525. package/src/runtime/capacitor-llama.d.ts +25 -0
  526. package/src/runtime/embedding-manager-support.ts +497 -0
  527. package/src/runtime/embedding-presets.ts +81 -0
  528. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  529. package/src/runtime/embedding-warmup-policy.ts +48 -0
  530. package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
  531. package/src/runtime/ensure-local-inference-handler.ts +1640 -0
  532. package/src/runtime/index.ts +36 -0
  533. package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
  534. package/src/runtime/mobile-local-inference-gate.ts +99 -0
  535. package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
  536. package/src/runtime/voice-entity-binding.ts +368 -0
  537. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  538. package/src/services/README.md +71 -0
  539. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  540. package/src/services/__tests__/backend-selector.test.ts +101 -0
  541. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  542. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  543. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  544. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  545. package/src/services/__tests__/runtime-target.test.ts +176 -0
  546. package/src/services/active-model-context-fit.test.ts +125 -0
  547. package/src/services/active-model-switch-rollback.test.ts +183 -0
  548. package/src/services/active-model.ts +1416 -0
  549. package/src/services/asr-provenance.ts +68 -0
  550. package/src/services/assignment-validation.test.ts +118 -0
  551. package/src/services/assignments.test.ts +106 -0
  552. package/src/services/assignments.ts +278 -0
  553. package/src/services/backend-selector.ts +95 -0
  554. package/src/services/backend.test.ts +84 -0
  555. package/src/services/backend.ts +791 -0
  556. package/src/services/bionic-host-loader.test.ts +226 -0
  557. package/src/services/bionic-host-loader.ts +252 -0
  558. package/src/services/bundled-models.ts +129 -0
  559. package/src/services/cache-bridge.test.ts +516 -0
  560. package/src/services/cache-bridge.ts +423 -0
  561. package/src/services/catalog.test.ts +259 -0
  562. package/src/services/catalog.ts +33 -0
  563. package/src/services/checkpoint-client.ts +258 -0
  564. package/src/services/checkpoint-manager.ts +474 -0
  565. package/src/services/cloud-fallback.ts +230 -0
  566. package/src/services/context-fit.test.ts +121 -0
  567. package/src/services/context-fit.ts +113 -0
  568. package/src/services/conversation-registry.test.ts +235 -0
  569. package/src/services/conversation-registry.ts +264 -0
  570. package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
  571. package/src/services/device-bridge.ts +1237 -0
  572. package/src/services/device-resource-metrics.test.ts +98 -0
  573. package/src/services/device-resource-metrics.ts +346 -0
  574. package/src/services/device-tier.test.ts +458 -0
  575. package/src/services/device-tier.ts +502 -0
  576. package/src/services/downloader.test.ts +888 -0
  577. package/src/services/downloader.ts +1039 -0
  578. package/src/services/engine-direct-bundle.test.ts +90 -0
  579. package/src/services/engine-streaming.test.ts +80 -0
  580. package/src/services/engine.ts +2096 -0
  581. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  582. package/src/services/ensure-local-artifacts.test.ts +368 -0
  583. package/src/services/ensure-local-artifacts.ts +351 -0
  584. package/src/services/external-scanner.ts +312 -0
  585. package/src/services/ffi-llm-mock.ts +354 -0
  586. package/src/services/ffi-llm-streaming-abi.ts +445 -0
  587. package/src/services/ffi-streaming-backend.ts +418 -0
  588. package/src/services/ffi-streaming-runner.test.ts +220 -0
  589. package/src/services/ffi-streaming-runner.ts +407 -0
  590. package/src/services/ffi-unload-ordering.test.ts +166 -0
  591. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  592. package/src/services/gpu-autotune.ts +534 -0
  593. package/src/services/gpu-detect.ts +139 -0
  594. package/src/services/handler-registry.ts +240 -0
  595. package/src/services/hardware.test.ts +236 -0
  596. package/src/services/hardware.ts +438 -0
  597. package/src/services/image-description-runtime.test.ts +61 -0
  598. package/src/services/image-description-runtime.ts +118 -0
  599. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  600. package/src/services/imagegen/backend-selector.test.ts +190 -0
  601. package/src/services/imagegen/backend-selector.ts +277 -0
  602. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  603. package/src/services/imagegen/errors.ts +40 -0
  604. package/src/services/imagegen/index.ts +144 -0
  605. package/src/services/imagegen/mflux.ts +313 -0
  606. package/src/services/imagegen/sd-cpp.ts +715 -0
  607. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  608. package/src/services/imagegen/types.ts +193 -0
  609. package/src/services/index.ts +229 -0
  610. package/src/services/inference-capabilities.test.ts +75 -0
  611. package/src/services/inference-capabilities.ts +204 -0
  612. package/src/services/inference-telemetry.ts +143 -0
  613. package/src/services/ios-llama-streaming.ts +248 -0
  614. package/src/services/kv-spill.test.ts +222 -0
  615. package/src/services/kv-spill.ts +357 -0
  616. package/src/services/latency-trace.test.ts +266 -0
  617. package/src/services/latency-trace.ts +844 -0
  618. package/src/services/lib-target.test.ts +145 -0
  619. package/src/services/lib-target.ts +102 -0
  620. package/src/services/live-signals.test.ts +132 -0
  621. package/src/services/live-signals.ts +177 -0
  622. package/src/services/llama-server-metrics.test.ts +168 -0
  623. package/src/services/llama-server-metrics.ts +304 -0
  624. package/src/services/llm-streaming-binding.ts +136 -0
  625. package/src/services/load-args.ts +81 -0
  626. package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
  627. package/src/services/manifest/index.ts +72 -0
  628. package/src/services/manifest/manifest.test.ts +791 -0
  629. package/src/services/manifest/schema.ts +761 -0
  630. package/src/services/manifest/types.ts +61 -0
  631. package/src/services/manifest/validator.ts +633 -0
  632. package/src/services/memory-arbiter.test.ts +558 -0
  633. package/src/services/memory-arbiter.ts +991 -0
  634. package/src/services/memory-benchmark.test.ts +91 -0
  635. package/src/services/memory-benchmark.ts +354 -0
  636. package/src/services/memory-monitor.test.ts +232 -0
  637. package/src/services/memory-monitor.ts +309 -0
  638. package/src/services/memory-pressure.ts +414 -0
  639. package/src/services/mtp-doctor.ts +86 -0
  640. package/src/services/network-policy.ts +346 -0
  641. package/src/services/paths.ts +25 -0
  642. package/src/services/planner-skeleton.ts +175 -0
  643. package/src/services/providers.ts +507 -0
  644. package/src/services/ram-budget-cache.test.ts +164 -0
  645. package/src/services/ram-budget.ts +309 -0
  646. package/src/services/readiness.test.ts +87 -0
  647. package/src/services/readiness.ts +238 -0
  648. package/src/services/recommendation.test.ts +216 -0
  649. package/src/services/recommendation.ts +671 -0
  650. package/src/services/registry.ts +157 -0
  651. package/src/services/required-kernels-gate.test.ts +64 -0
  652. package/src/services/router-handler.test.ts +45 -0
  653. package/src/services/router-handler.ts +426 -0
  654. package/src/services/routing-policy.test.ts +352 -0
  655. package/src/services/routing-policy.ts +367 -0
  656. package/src/services/routing-preferences.ts +17 -0
  657. package/src/services/runtime-target.ts +154 -0
  658. package/src/services/service.test.ts +223 -0
  659. package/src/services/service.ts +750 -0
  660. package/src/services/session-pool.ts +153 -0
  661. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  662. package/src/services/structured-output/deterministic-repair.ts +443 -0
  663. package/src/services/structured-output/index.ts +4 -0
  664. package/src/services/structured-output.test.ts +483 -0
  665. package/src/services/structured-output.ts +712 -0
  666. package/src/services/system-memory.test.ts +47 -0
  667. package/src/services/system-memory.ts +67 -0
  668. package/src/services/transcription-priority.test.ts +211 -0
  669. package/src/services/types.ts +59 -0
  670. package/src/services/verify-on-device.test.ts +87 -0
  671. package/src/services/verify-on-device.ts +127 -0
  672. package/src/services/verify.ts +13 -0
  673. package/src/services/vision/aosp-unavailable.ts +163 -0
  674. package/src/services/vision/capacitor-llama.ts +255 -0
  675. package/src/services/vision/cloud-fallback.test.ts +243 -0
  676. package/src/services/vision/cloud-fallback.ts +268 -0
  677. package/src/services/vision/fallback-chain.test.ts +86 -0
  678. package/src/services/vision/hash.ts +157 -0
  679. package/src/services/vision/index.ts +251 -0
  680. package/src/services/vision/llama-server.ts +177 -0
  681. package/src/services/vision/types.ts +163 -0
  682. package/src/services/vision/vast-fallback.ts +127 -0
  683. package/src/services/vision-embedding-cache.ts +189 -0
  684. package/src/services/voice/VOICE_WORKBENCH.md +133 -0
  685. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  686. package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
  687. package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
  688. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  689. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  690. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  691. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  692. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  693. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  694. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  695. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  696. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  697. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  698. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
  699. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  700. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  701. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  702. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  703. package/src/services/voice/asr-timed.real.test.ts +139 -0
  704. package/src/services/voice/audio-frame-consumer.test.ts +669 -0
  705. package/src/services/voice/audio-frame-consumer.ts +651 -0
  706. package/src/services/voice/barge-in.test.ts +244 -0
  707. package/src/services/voice/barge-in.ts +335 -0
  708. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  709. package/src/services/voice/cancellation-coordinator.ts +269 -0
  710. package/src/services/voice/checkpoint-manager.ts +401 -0
  711. package/src/services/voice/checkpoint-policy.ts +336 -0
  712. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  713. package/src/services/voice/corpus-augment.test.ts +276 -0
  714. package/src/services/voice/corpus-augment.ts +451 -0
  715. package/src/services/voice/corpus-generator.test.ts +201 -0
  716. package/src/services/voice/corpus-generator.ts +413 -0
  717. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  718. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  719. package/src/services/voice/diarization-error-rate.ts +249 -0
  720. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  721. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  722. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  723. package/src/services/voice/e2e-harness.test.ts +182 -0
  724. package/src/services/voice/e2e-harness.ts +902 -0
  725. package/src/services/voice/eager-context-builder.ts +262 -0
  726. package/src/services/voice/echo-delay.test.ts +118 -0
  727. package/src/services/voice/echo-delay.ts +135 -0
  728. package/src/services/voice/echo-metrics.test.ts +17 -0
  729. package/src/services/voice/echo-metrics.ts +20 -0
  730. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  731. package/src/services/voice/echo-reference-buffer.ts +165 -0
  732. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  733. package/src/services/voice/embedding-server.ts +200 -0
  734. package/src/services/voice/embedding.test.ts +131 -0
  735. package/src/services/voice/embedding.ts +242 -0
  736. package/src/services/voice/emotion-attribution.test.ts +129 -0
  737. package/src/services/voice/emotion-attribution.ts +361 -0
  738. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  739. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  740. package/src/services/voice/engine-bridge.test.ts +384 -0
  741. package/src/services/voice/engine-bridge.ts +2343 -0
  742. package/src/services/voice/eot-classifier-ggml.ts +569 -0
  743. package/src/services/voice/eot-classifier.test.ts +98 -0
  744. package/src/services/voice/eot-classifier.ts +422 -0
  745. package/src/services/voice/errors.ts +34 -0
  746. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  747. package/src/services/voice/expressive-tags.test.ts +102 -0
  748. package/src/services/voice/expressive-tags.ts +405 -0
  749. package/src/services/voice/ffi-bindings.test.ts +735 -0
  750. package/src/services/voice/ffi-bindings.ts +3387 -0
  751. package/src/services/voice/first-line-cache.ts +725 -0
  752. package/src/services/voice/fused-eot-scorer.ts +139 -0
  753. package/src/services/voice/index.ts +502 -0
  754. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
  755. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
  756. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  757. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  758. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  759. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  760. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  761. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
  762. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  763. package/src/services/voice/kokoro/index.ts +79 -0
  764. package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
  765. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  766. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  767. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  768. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  769. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  770. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  771. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  772. package/src/services/voice/kokoro/runtime-selection.ts +64 -0
  773. package/src/services/voice/kokoro/types.ts +95 -0
  774. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  775. package/src/services/voice/kokoro/voices.ts +64 -0
  776. package/src/services/voice/lifecycle.test.ts +315 -0
  777. package/src/services/voice/lifecycle.ts +301 -0
  778. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  779. package/src/services/voice/live-diarization-session.ts +622 -0
  780. package/src/services/voice/metric-math.test.ts +61 -0
  781. package/src/services/voice/metric-math.ts +25 -0
  782. package/src/services/voice/mic-source.test.ts +210 -0
  783. package/src/services/voice/mic-source.ts +503 -0
  784. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  785. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  786. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  787. package/src/services/voice/optimistic-policy.test.ts +101 -0
  788. package/src/services/voice/optimistic-policy.ts +192 -0
  789. package/src/services/voice/optimistic-rollback.ts +343 -0
  790. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  791. package/src/services/voice/partial-stabilizer.ts +140 -0
  792. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  793. package/src/services/voice/phrase-cache.test.ts +242 -0
  794. package/src/services/voice/phrase-cache.ts +186 -0
  795. package/src/services/voice/phrase-chunker.test.ts +239 -0
  796. package/src/services/voice/phrase-chunker.ts +281 -0
  797. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  798. package/src/services/voice/pipeline-impls.test.ts +292 -0
  799. package/src/services/voice/pipeline-impls.ts +315 -0
  800. package/src/services/voice/pipeline.ts +504 -0
  801. package/src/services/voice/prefill-client.ts +316 -0
  802. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  803. package/src/services/voice/profile-store.ts +887 -0
  804. package/src/services/voice/real-audio-decode.test.ts +148 -0
  805. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  806. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  807. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  808. package/src/services/voice/ring-buffer.test.ts +129 -0
  809. package/src/services/voice/ring-buffer.ts +123 -0
  810. package/src/services/voice/rollback-queue.ts +74 -0
  811. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  812. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  813. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  814. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  815. package/src/services/voice/scheduler.t2.test.ts +141 -0
  816. package/src/services/voice/scheduler.ts +927 -0
  817. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  818. package/src/services/voice/self-voice-imprint.ts +102 -0
  819. package/src/services/voice/shared-resources.ts +343 -0
  820. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  821. package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
  822. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  823. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  824. package/src/services/voice/speaker/diarizer.ts +218 -0
  825. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  826. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  827. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  828. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  829. package/src/services/voice/speaker/encoder.ts +105 -0
  830. package/src/services/voice/speaker-imprint.test.ts +185 -0
  831. package/src/services/voice/speaker-imprint.ts +312 -0
  832. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  833. package/src/services/voice/speaker-preset-cache.ts +195 -0
  834. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  835. package/src/services/voice/system-audio-sink.test.ts +29 -0
  836. package/src/services/voice/system-audio-sink.ts +366 -0
  837. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  838. package/src/services/voice/transcriber.test.ts +392 -0
  839. package/src/services/voice/transcriber.ts +704 -0
  840. package/src/services/voice/transcript-knowledge.test.ts +68 -0
  841. package/src/services/voice/transcript-knowledge.ts +75 -0
  842. package/src/services/voice/transcript-service.test.ts +195 -0
  843. package/src/services/voice/transcript-service.ts +205 -0
  844. package/src/services/voice/transcript-store.test.ts +189 -0
  845. package/src/services/voice/transcript-store.ts +164 -0
  846. package/src/services/voice/turn-controller.test.ts +575 -0
  847. package/src/services/voice/turn-controller.ts +596 -0
  848. package/src/services/voice/types.ts +699 -0
  849. package/src/services/voice/vad.test.ts +498 -0
  850. package/src/services/voice/vad.ts +832 -0
  851. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  852. package/src/services/voice/voice-budget.test.ts +415 -0
  853. package/src/services/voice/voice-budget.ts +635 -0
  854. package/src/services/voice/voice-duet.test.ts +375 -0
  855. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  856. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  857. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  858. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  859. package/src/services/voice/voice-preload-predictor.ts +113 -0
  860. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  861. package/src/services/voice/voice-preset-format.test.ts +75 -0
  862. package/src/services/voice/voice-preset-format.ts +713 -0
  863. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  864. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  865. package/src/services/voice/voice-profile-artifact.ts +518 -0
  866. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  867. package/src/services/voice/voice-profile-routes.ts +425 -0
  868. package/src/services/voice/voice-scenario.test.ts +159 -0
  869. package/src/services/voice/voice-scenario.ts +280 -0
  870. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  871. package/src/services/voice/voice-state-machine.ts +727 -0
  872. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  873. package/src/services/voice/voice-workbench-report.ts +367 -0
  874. package/src/services/voice/voice-workbench.test.ts +158 -0
  875. package/src/services/voice/voice.test.ts +1070 -0
  876. package/src/services/voice/wake-word-ggml.ts +319 -0
  877. package/src/services/voice/wake-word.test.ts +298 -0
  878. package/src/services/voice/wake-word.ts +554 -0
  879. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  880. package/src/services/voice/wav-codec.test.ts +32 -0
  881. package/src/services/voice/wav-codec.ts +101 -0
  882. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  883. package/src/services/voice/workbench-entrypoint.ts +88 -0
  884. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  885. package/src/services/voice/workbench-headless-runner.ts +396 -0
  886. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  887. package/src/services/voice/workbench-logic-services.ts +184 -0
  888. package/src/services/voice/workbench-real-services.ts +629 -0
  889. package/src/services/voice/workbench-scenarios.ts +407 -0
  890. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  891. package/src/services/voice-model-updater.ts +724 -0
  892. package/src/services/voice-prewarm.ts +51 -0
  893. package/src/voice-workbench.ts +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"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,17 @@
1
+ /**
2
+ * Discover GGUF files already on disk from other local-inference tools.
3
+ *
4
+ * Users often have LM Studio, Jan, Ollama, or raw HuggingFace downloads
5
+ * lying around. We scan their default cache paths and surface those models
6
+ * in the Model Hub with `source: "external-scan"` so Eliza can load them
7
+ * without re-downloading. Eliza never modifies or deletes these files —
8
+ * the uninstall endpoint refuses when `source !== "eliza-download"`.
9
+ *
10
+ * Ollama is special: its blobs live under `models/blobs/sha256-*` with no
11
+ * `.gguf` extension, and the human name only exists in adjacent manifests.
12
+ * We parse the manifests to recover the mapping; blobs we can't map stay
13
+ * hidden rather than surfacing as opaque hashes.
14
+ */
15
+ import type { InstalledModel } from "./types";
16
+ export declare function scanExternalModels(): Promise<InstalledModel[]>;
17
+ //# sourceMappingURL=external-scanner.d.ts.map
@@ -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"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * In-process FFI streaming backend adapter.
3
+ *
4
+ * Implements `LocalInferenceBackend` as the optimized in-process
5
+ * llama.cpp path used by Eliza-1 on desktop and mobile.
6
+ *
7
+ * What this class deliberately does NOT do:
8
+ * - Own the FFI context. The runtime provider passed to this class owns
9
+ * native load/unload and hands back the binding, context, and tokenizer.
10
+ * - Decode image bytes or call mtmd directly. Vision requests are validated
11
+ * here, then forwarded to runtimes that expose `describeImage`.
12
+ */
13
+ import type { BackendPlan, GenerateArgs, GenerateResult, LocalGenerateWithUsageResult, LocalInferenceBackend } from "./backend";
14
+ import type { FfiStreamingRunner } from "./ffi-streaming-runner";
15
+ import type { LlmCtxHandle, LlmStreamingBinding } from "./llm-streaming-binding";
16
+ /**
17
+ * Constructor-injected adapter that resolves the FFI binding, context, and
18
+ * tokenizer for a given load. Two responsibilities:
19
+ *
20
+ * 1. Decide whether the FFI path is viable on the current binding
21
+ * (`supported()`). Mirrors `LlmStreamingBinding.llmStreamSupported()`
22
+ * plus any higher-level constraints (e.g. dylib path exists, build
23
+ * target matches the bundle's required kernels).
24
+ * 2. Lifecycle: `acquire(plan)` returns the FFI runner ready for
25
+ * `generate()` against the requested model, plus a tokenizer that
26
+ * matches that model's vocab. `release()` tears everything down.
27
+ *
28
+ * Production runtime implementation: the fused libelizainference path
29
+ * (`desktop-fused-ffi-backend-runtime.ts`), which wraps `ElizaInferenceFfi`
30
+ * via `wrapElizaInferenceFfi()` from `services/llm-streaming-binding.ts`.
31
+ * libllama has been retired — there is no second runtime behind this slot.
32
+ */
33
+ export interface FfiBackendRuntime {
34
+ supported(): boolean;
35
+ acquire(plan: BackendPlan): Promise<FfiBackendSession>;
36
+ release(): Promise<void>;
37
+ /**
38
+ * Optional parallel-slot pool surface. When the runtime exposes a
39
+ * ctx pool (the desktop libllama path does), `parallelSlots()`
40
+ * reports the live count and `resizeParallel(N)` grows/shrinks it.
41
+ * Runtimes without a pool report 1 and ignore resize requests.
42
+ */
43
+ parallelSlots?(): number;
44
+ resizeParallel?(target: number): Promise<boolean>;
45
+ }
46
+ /**
47
+ * Result of `FfiBackendRuntime.acquire()` — a live FFI session bound to a
48
+ * specific loaded model.
49
+ */
50
+ export interface FfiBackendSession {
51
+ readonly binding: LlmStreamingBinding;
52
+ readonly ctx: LlmCtxHandle;
53
+ readonly runner: FfiStreamingRunner;
54
+ /**
55
+ * Tokenize a prompt string into model token ids using the loaded model's
56
+ * tokenizer. The vocab MUST match the GGUF — mismatches produce gibberish
57
+ * silently. The runtime is responsible for asserting this at acquire
58
+ * time.
59
+ */
60
+ readonly tokenize: (prompt: string) => Int32Array;
61
+ /**
62
+ * Native MTP speculative-decoding policy from the catalog. `null`
63
+ * disables speculative decoding for this session.
64
+ */
65
+ readonly mtp: {
66
+ specType: "draft-mtp";
67
+ draftMin: number;
68
+ draftMax: number;
69
+ gpuLayers: number | "auto";
70
+ } | null;
71
+ /**
72
+ * Absolute path to a *separate* MTP drafter GGUF resolved during load.
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
+ */
78
+ readonly draftModelPath: string | null;
79
+ /**
80
+ * Multimodal projector (mmproj) GGUF path for vision describe. Resolved
81
+ * from `plan.overrides.mmprojPath` at acquire time. `null` disables
82
+ * vision — `describeImage` then throws an actionable error.
83
+ */
84
+ readonly mmprojPath: string | null;
85
+ /**
86
+ * Per-load runtime config the fused libelizainference path applies at its
87
+ * first `llmStreamOpen` (context size, gpuLayers + KV-cache quant types). The desktop
88
+ * libllama runtime applies these at `loadModel()` instead and leaves this
89
+ * `null` — the backend forwards them into the runner's per-call config only
90
+ * when present, so the fused path mirrors the libllama load decision without
91
+ * the libllama path double-applying them.
92
+ */
93
+ readonly loadConfig?: {
94
+ contextSize?: number;
95
+ gpuLayers?: number;
96
+ cacheTypeK?: string | null;
97
+ cacheTypeV?: string | null;
98
+ } | null;
99
+ }
100
+ /**
101
+ * Adapter that satisfies `LocalInferenceBackend` by delegating to
102
+ * `FfiStreamingRunner`. The `id` is `"llama-cpp"` because this is the
103
+ * in-process variant of the optimized llama.cpp path.
104
+ */
105
+ export declare class FfiStreamingBackend implements LocalInferenceBackend {
106
+ private readonly runtime;
107
+ readonly id: "llama-cpp";
108
+ private session;
109
+ private loadedPath;
110
+ constructor(runtime: FfiBackendRuntime);
111
+ available(): Promise<boolean>;
112
+ hasLoadedModel(): boolean;
113
+ currentModelPath(): string | null;
114
+ load(plan: BackendPlan): Promise<void>;
115
+ unload(): Promise<void>;
116
+ generate(args: GenerateArgs): Promise<GenerateResult>;
117
+ generateWithUsage(args: GenerateArgs & {
118
+ slotId?: number;
119
+ }): Promise<LocalGenerateWithUsageResult>;
120
+ /**
121
+ * Persist the active session's KV state to a per-conversation file.
122
+ * v1 uses `llama_state_seq_save_file` against seq_id=0. The on-disk file
123
+ * path mirrors `ffi-streaming-backend.ts`'s conversation-keyed slot layout
124
+ * (`<cacheDir>/<conversationId>/<slotId>.kv`) so a switch between
125
+ * FFI and subprocess can resume each other's slots — once both
126
+ * paths agree on the file format.
127
+ */
128
+ persistConversationKv(conversationId: string, slotId: number): Promise<void>;
129
+ /** Restore a previously persisted KV state. Mirror of `persistConversationKv`. */
130
+ restoreConversationKv(conversationId: string, slotId: number): Promise<boolean>;
131
+ /**
132
+ * Pre-decode `promptPrefix` so the next `generate` against the same
133
+ * `cacheKey` skips re-prefill. Returns `false` when the prefix is
134
+ * empty or no session is loaded. The FFI runner serializes by
135
+ * `cacheKey` internally via the `slotInFlight` map.
136
+ */
137
+ prewarmConversation(promptPrefix: string, opts: {
138
+ slotId: number;
139
+ cacheKey: string;
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;
157
+ /**
158
+ * True when Eliza-1 native MTP is active for the loaded target model.
159
+ * Covers both shapes: embedded-draft-head MTP (draft head embedded in
160
+ * the text GGUF, `draftModelPath` null) and separate-drafter MTP.
161
+ */
162
+ mtpEnabled(): boolean;
163
+ /**
164
+ * Parallel-slot pool size. Routed to the runtime's ctx pool when one
165
+ * exists; defaults to 1 otherwise.
166
+ */
167
+ parallelSlots(): number;
168
+ /**
169
+ * Grow or shrink the runtime's ctx pool to `target` slots. Returns
170
+ * false when the runtime has no pool surface (in which case parallel
171
+ * resize is ignored — the conversation registry tolerates
172
+ * fixed 1-slot operation).
173
+ */
174
+ resizeParallel(target: number): Promise<boolean>;
175
+ /**
176
+ * Vision describe via mmproj. Requires:
177
+ * - The shim built with `-DELIZA_ENABLE_VISION=1` (ELIZA_ENABLE_VISION=1
178
+ * at the build script env). When absent the runtime throws an
179
+ * actionable error.
180
+ * - `plan.overrides.mmprojPath` was passed at load time so the
181
+ * adapter knows which mmproj GGUF to feed clip.
182
+ */
183
+ describeImage(args: {
184
+ bytes: Uint8Array;
185
+ mimeType?: string;
186
+ prompt?: string;
187
+ maxTokens?: number;
188
+ temperature?: number;
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;
194
+ }): Promise<{
195
+ text: string;
196
+ projectorMs?: number;
197
+ decodeMs?: number;
198
+ }>;
199
+ currentMmprojPath(): string | null;
200
+ }
201
+ //# sourceMappingURL=ffi-streaming-backend.d.ts.map
@@ -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"}