@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.11-beta.7

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 (676) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/package.json +81 -15
  4. package/src/actions/generate-media.d.ts +59 -0
  5. package/src/actions/generate-media.d.ts.map +1 -0
  6. package/src/actions/generate-media.ts +647 -0
  7. package/src/actions/identify-speaker.d.ts +23 -0
  8. package/src/actions/identify-speaker.d.ts.map +1 -0
  9. package/src/actions/identify-speaker.ts +171 -0
  10. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  11. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  12. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  13. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  14. package/src/adapters/capacitor-llama/environment.ts +71 -0
  15. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  16. package/src/adapters/capacitor-llama/index.ts +807 -0
  17. package/src/adapters/capacitor-llama/loader.ts +109 -0
  18. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  19. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  20. package/src/adapters/capacitor-llama/types.ts +374 -0
  21. package/src/backends/apple-foundation.ts +127 -0
  22. package/src/index.d.ts +7 -0
  23. package/src/index.d.ts.map +1 -0
  24. package/src/index.ts +54 -0
  25. package/src/local-inference-routes.d.ts +38 -0
  26. package/src/local-inference-routes.d.ts.map +1 -0
  27. package/src/local-inference-routes.test.ts +344 -0
  28. package/src/local-inference-routes.ts +1543 -0
  29. package/src/provider.d.ts +21 -0
  30. package/src/provider.d.ts.map +1 -0
  31. package/src/provider.ts +1171 -0
  32. package/src/routes/compat-helpers.d.ts +18 -0
  33. package/src/routes/compat-helpers.d.ts.map +1 -0
  34. package/src/routes/compat-helpers.ts +274 -0
  35. package/src/routes/family-member-route.d.ts +62 -0
  36. package/src/routes/family-member-route.d.ts.map +1 -0
  37. package/src/routes/family-member-route.ts +353 -0
  38. package/src/routes/index.d.ts +19 -0
  39. package/src/routes/index.d.ts.map +1 -0
  40. package/src/routes/index.ts +60 -0
  41. package/src/routes/live-diarization-route.d.ts +26 -0
  42. package/src/routes/live-diarization-route.d.ts.map +1 -0
  43. package/src/routes/live-diarization-route.test.ts +213 -0
  44. package/src/routes/live-diarization-route.ts +122 -0
  45. package/src/routes/local-inference-asr-route.d.ts +4 -0
  46. package/src/routes/local-inference-asr-route.d.ts.map +1 -0
  47. package/src/routes/local-inference-asr-route.test.ts +190 -0
  48. package/src/routes/local-inference-asr-route.ts +213 -0
  49. package/src/routes/local-inference-compat-routes.d.ts +16 -0
  50. package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
  51. package/src/routes/local-inference-compat-routes.test.ts +423 -0
  52. package/src/routes/local-inference-compat-routes.ts +782 -0
  53. package/src/routes/local-inference-tts-route.d.ts +7 -0
  54. package/src/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/src/routes/local-inference-tts-route.test.ts +179 -0
  56. package/src/routes/local-inference-tts-route.ts +230 -0
  57. package/src/routes/voice-first-run-routes.d.ts +62 -0
  58. package/src/routes/voice-first-run-routes.d.ts.map +1 -0
  59. package/src/routes/voice-first-run-routes.ts +524 -0
  60. package/src/routes/voice-models-routes.d.ts +62 -0
  61. package/src/routes/voice-models-routes.d.ts.map +1 -0
  62. package/src/routes/voice-models-routes.ts +554 -0
  63. package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
  64. package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  65. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  66. package/src/routes/voice-profiles-management-routes.d.ts +52 -0
  67. package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
  68. package/src/routes/voice-profiles-management-routes.ts +476 -0
  69. package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  72. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  73. package/src/runtime/capacitor-llama.d.ts +25 -0
  74. package/src/runtime/embedding-manager-support.d.ts +77 -0
  75. package/src/runtime/embedding-manager-support.d.ts.map +1 -0
  76. package/src/runtime/embedding-manager-support.ts +497 -0
  77. package/src/runtime/embedding-presets.d.ts +16 -0
  78. package/src/runtime/embedding-presets.d.ts.map +1 -0
  79. package/src/runtime/embedding-presets.ts +81 -0
  80. package/src/runtime/embedding-warmup-policy.d.ts +14 -0
  81. package/src/runtime/embedding-warmup-policy.d.ts.map +1 -0
  82. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  83. package/src/runtime/embedding-warmup-policy.ts +48 -0
  84. package/src/runtime/ensure-local-inference-handler.d.ts +53 -0
  85. package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  86. package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
  87. package/src/runtime/ensure-local-inference-handler.ts +1398 -0
  88. package/src/runtime/index.d.ts +14 -0
  89. package/src/runtime/index.d.ts.map +1 -0
  90. package/src/runtime/index.ts +27 -0
  91. package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
  92. package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  93. package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
  94. package/src/runtime/mobile-local-inference-gate.ts +44 -0
  95. package/src/runtime/voice-entity-binding.d.ts +103 -0
  96. package/src/runtime/voice-entity-binding.d.ts.map +1 -0
  97. package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
  98. package/src/runtime/voice-entity-binding.ts +328 -0
  99. package/src/services/README.md +71 -0
  100. package/src/services/__tests__/backend-selector.test.ts +101 -0
  101. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  102. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  103. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  104. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  105. package/src/services/__tests__/runtime-target.test.ts +176 -0
  106. package/src/services/active-model-switch-rollback.test.ts +183 -0
  107. package/src/services/active-model.d.ts +282 -0
  108. package/src/services/active-model.d.ts.map +1 -0
  109. package/src/services/active-model.ts +1213 -0
  110. package/src/services/asr/errors.d.ts +21 -0
  111. package/src/services/asr/errors.d.ts.map +1 -0
  112. package/src/services/asr/errors.ts +50 -0
  113. package/src/services/asr/hash.d.ts +28 -0
  114. package/src/services/asr/hash.d.ts.map +1 -0
  115. package/src/services/asr/hash.ts +49 -0
  116. package/src/services/asr/index.d.ts +76 -0
  117. package/src/services/asr/index.d.ts.map +1 -0
  118. package/src/services/asr/index.ts +178 -0
  119. package/src/services/asr/types.d.ts +91 -0
  120. package/src/services/asr/types.d.ts.map +1 -0
  121. package/src/services/asr/types.ts +95 -0
  122. package/src/services/assignments.d.ts +71 -0
  123. package/src/services/assignments.d.ts.map +1 -0
  124. package/src/services/assignments.test.ts +80 -0
  125. package/src/services/assignments.ts +230 -0
  126. package/src/services/backend-selector.ts +95 -0
  127. package/src/services/backend.d.ts +346 -0
  128. package/src/services/backend.d.ts.map +1 -0
  129. package/src/services/backend.ts +612 -0
  130. package/src/services/bundled-models.d.ts +34 -0
  131. package/src/services/bundled-models.d.ts.map +1 -0
  132. package/src/services/bundled-models.ts +129 -0
  133. package/src/services/cache-bridge.d.ts +206 -0
  134. package/src/services/cache-bridge.d.ts.map +1 -0
  135. package/src/services/cache-bridge.test.ts +516 -0
  136. package/src/services/cache-bridge.ts +423 -0
  137. package/src/services/catalog.d.ts +10 -0
  138. package/src/services/catalog.d.ts.map +1 -0
  139. package/src/services/catalog.test.ts +240 -0
  140. package/src/services/catalog.ts +27 -0
  141. package/src/services/checkpoint-client.d.ts +109 -0
  142. package/src/services/checkpoint-client.d.ts.map +1 -0
  143. package/src/services/checkpoint-client.ts +258 -0
  144. package/src/services/checkpoint-manager.ts +474 -0
  145. package/src/services/cloud-fallback.d.ts +102 -0
  146. package/src/services/cloud-fallback.d.ts.map +1 -0
  147. package/src/services/cloud-fallback.ts +230 -0
  148. package/src/services/conversation-registry.d.ts +142 -0
  149. package/src/services/conversation-registry.d.ts.map +1 -0
  150. package/src/services/conversation-registry.test.ts +235 -0
  151. package/src/services/conversation-registry.ts +264 -0
  152. package/src/services/desktop-fused-ffi-backend-runtime.d.ts +92 -0
  153. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  154. package/src/services/desktop-fused-ffi-backend-runtime.ts +333 -0
  155. package/src/services/device-bridge.d.ts +188 -0
  156. package/src/services/device-bridge.d.ts.map +1 -0
  157. package/src/services/device-bridge.ts +1237 -0
  158. package/src/services/device-resource-metrics.d.ts +149 -0
  159. package/src/services/device-resource-metrics.d.ts.map +1 -0
  160. package/src/services/device-resource-metrics.test.ts +98 -0
  161. package/src/services/device-resource-metrics.ts +346 -0
  162. package/src/services/device-tier.d.ts +115 -0
  163. package/src/services/device-tier.d.ts.map +1 -0
  164. package/src/services/device-tier.test.ts +371 -0
  165. package/src/services/device-tier.ts +410 -0
  166. package/src/services/downloader.d.ts +82 -0
  167. package/src/services/downloader.d.ts.map +1 -0
  168. package/src/services/downloader.test.ts +724 -0
  169. package/src/services/downloader.ts +899 -0
  170. package/src/services/engine-direct-bundle.test.ts +58 -0
  171. package/src/services/engine-streaming.test.ts +80 -0
  172. package/src/services/engine.d.ts +534 -0
  173. package/src/services/engine.d.ts.map +1 -0
  174. package/src/services/engine.ts +1891 -0
  175. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  176. package/src/services/ensure-local-artifacts.test.ts +368 -0
  177. package/src/services/ensure-local-artifacts.ts +351 -0
  178. package/src/services/external-scanner.d.ts +17 -0
  179. package/src/services/external-scanner.d.ts.map +1 -0
  180. package/src/services/external-scanner.ts +312 -0
  181. package/src/services/ffi-llm-mock.ts +354 -0
  182. package/src/services/ffi-llm-streaming-abi.ts +442 -0
  183. package/src/services/ffi-streaming-backend.d.ts +180 -0
  184. package/src/services/ffi-streaming-backend.d.ts.map +1 -0
  185. package/src/services/ffi-streaming-backend.ts +382 -0
  186. package/src/services/ffi-streaming-runner.d.ts +122 -0
  187. package/src/services/ffi-streaming-runner.d.ts.map +1 -0
  188. package/src/services/ffi-streaming-runner.test.ts +60 -0
  189. package/src/services/ffi-streaming-runner.ts +354 -0
  190. package/src/services/ffi-unload-ordering.test.ts +162 -0
  191. package/src/services/gpu-autotune.ts +534 -0
  192. package/src/services/gpu-detect.ts +139 -0
  193. package/src/services/handler-registry.d.ts +72 -0
  194. package/src/services/handler-registry.d.ts.map +1 -0
  195. package/src/services/handler-registry.ts +240 -0
  196. package/src/services/hardware.d.ts +63 -0
  197. package/src/services/hardware.d.ts.map +1 -0
  198. package/src/services/hardware.test.ts +183 -0
  199. package/src/services/hardware.ts +404 -0
  200. package/src/services/hf-search.d.ts +26 -0
  201. package/src/services/hf-search.d.ts.map +1 -0
  202. package/src/services/hf-search.test.ts +69 -0
  203. package/src/services/hf-search.ts +420 -0
  204. package/src/services/image-description-runtime.d.ts +14 -0
  205. package/src/services/image-description-runtime.d.ts.map +1 -0
  206. package/src/services/image-description-runtime.test.ts +61 -0
  207. package/src/services/image-description-runtime.ts +118 -0
  208. package/src/services/imagegen/aosp-unavailable.d.ts +134 -0
  209. package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  210. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  211. package/src/services/imagegen/backend-selector.d.ts +118 -0
  212. package/src/services/imagegen/backend-selector.d.ts.map +1 -0
  213. package/src/services/imagegen/backend-selector.ts +281 -0
  214. package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
  215. package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  216. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  217. package/src/services/imagegen/errors.d.ts +16 -0
  218. package/src/services/imagegen/errors.d.ts.map +1 -0
  219. package/src/services/imagegen/errors.ts +40 -0
  220. package/src/services/imagegen/index.d.ts +58 -0
  221. package/src/services/imagegen/index.d.ts.map +1 -0
  222. package/src/services/imagegen/index.ts +144 -0
  223. package/src/services/imagegen/mflux.d.ts +74 -0
  224. package/src/services/imagegen/mflux.d.ts.map +1 -0
  225. package/src/services/imagegen/mflux.ts +313 -0
  226. package/src/services/imagegen/sd-cpp.d.ts +180 -0
  227. package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
  228. package/src/services/imagegen/sd-cpp.ts +718 -0
  229. package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  230. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  231. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  232. package/src/services/imagegen/types.d.ts +181 -0
  233. package/src/services/imagegen/types.d.ts.map +1 -0
  234. package/src/services/imagegen/types.ts +193 -0
  235. package/src/services/index.d.ts +30 -0
  236. package/src/services/index.d.ts.map +1 -0
  237. package/src/services/index.ts +225 -0
  238. package/src/services/inference-capabilities.d.ts +132 -0
  239. package/src/services/inference-capabilities.d.ts.map +1 -0
  240. package/src/services/inference-capabilities.test.ts +75 -0
  241. package/src/services/inference-capabilities.ts +204 -0
  242. package/src/services/inference-telemetry.d.ts +59 -0
  243. package/src/services/inference-telemetry.d.ts.map +1 -0
  244. package/src/services/inference-telemetry.ts +143 -0
  245. package/src/services/ios-llama-streaming.ts +248 -0
  246. package/src/services/kv-spill.d.ts +189 -0
  247. package/src/services/kv-spill.d.ts.map +1 -0
  248. package/src/services/kv-spill.test.ts +222 -0
  249. package/src/services/kv-spill.ts +356 -0
  250. package/src/services/latency-trace.d.ts +346 -0
  251. package/src/services/latency-trace.d.ts.map +1 -0
  252. package/src/services/latency-trace.test.ts +266 -0
  253. package/src/services/latency-trace.ts +844 -0
  254. package/src/services/llama-server-metrics.ts +304 -0
  255. package/src/services/llm-streaming-binding.d.ts +96 -0
  256. package/src/services/llm-streaming-binding.d.ts.map +1 -0
  257. package/src/services/llm-streaming-binding.ts +136 -0
  258. package/src/services/load-args.d.ts +82 -0
  259. package/src/services/load-args.d.ts.map +1 -0
  260. package/src/services/load-args.ts +81 -0
  261. package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
  262. package/src/services/manifest/index.d.ts +4 -0
  263. package/src/services/manifest/index.d.ts.map +1 -0
  264. package/src/services/manifest/index.ts +66 -0
  265. package/src/services/manifest/manifest.test.ts +693 -0
  266. package/src/services/manifest/schema.d.ts +715 -0
  267. package/src/services/manifest/schema.d.ts.map +1 -0
  268. package/src/services/manifest/schema.ts +655 -0
  269. package/src/services/manifest/types.d.ts +30 -0
  270. package/src/services/manifest/types.d.ts.map +1 -0
  271. package/src/services/manifest/types.ts +55 -0
  272. package/src/services/manifest/validator.d.ts +66 -0
  273. package/src/services/manifest/validator.d.ts.map +1 -0
  274. package/src/services/manifest/validator.ts +569 -0
  275. package/src/services/memory-arbiter.d.ts +343 -0
  276. package/src/services/memory-arbiter.d.ts.map +1 -0
  277. package/src/services/memory-arbiter.test.ts +419 -0
  278. package/src/services/memory-arbiter.ts +1000 -0
  279. package/src/services/memory-monitor.d.ts +119 -0
  280. package/src/services/memory-monitor.d.ts.map +1 -0
  281. package/src/services/memory-monitor.test.ts +208 -0
  282. package/src/services/memory-monitor.ts +296 -0
  283. package/src/services/memory-pressure.d.ts +127 -0
  284. package/src/services/memory-pressure.d.ts.map +1 -0
  285. package/src/services/memory-pressure.ts +413 -0
  286. package/src/services/mtp-doctor.d.ts +13 -0
  287. package/src/services/mtp-doctor.d.ts.map +1 -0
  288. package/src/services/mtp-doctor.ts +78 -0
  289. package/src/services/network-policy.d.ts +127 -0
  290. package/src/services/network-policy.d.ts.map +1 -0
  291. package/src/services/network-policy.ts +346 -0
  292. package/src/services/paths.d.ts +6 -0
  293. package/src/services/paths.d.ts.map +1 -0
  294. package/src/services/paths.ts +25 -0
  295. package/src/services/planner-skeleton.d.ts +124 -0
  296. package/src/services/planner-skeleton.d.ts.map +1 -0
  297. package/src/services/planner-skeleton.ts +175 -0
  298. package/src/services/providers.d.ts +38 -0
  299. package/src/services/providers.d.ts.map +1 -0
  300. package/src/services/providers.ts +507 -0
  301. package/src/services/ram-budget-cache.test.ts +163 -0
  302. package/src/services/ram-budget.d.ts +110 -0
  303. package/src/services/ram-budget.d.ts.map +1 -0
  304. package/src/services/ram-budget.ts +0 -0
  305. package/src/services/readiness.d.ts +9 -0
  306. package/src/services/readiness.d.ts.map +1 -0
  307. package/src/services/readiness.test.ts +87 -0
  308. package/src/services/readiness.ts +238 -0
  309. package/src/services/recommendation.d.ts +111 -0
  310. package/src/services/recommendation.d.ts.map +1 -0
  311. package/src/services/recommendation.ts +672 -0
  312. package/src/services/registry.d.ts +35 -0
  313. package/src/services/registry.d.ts.map +1 -0
  314. package/src/services/registry.ts +151 -0
  315. package/src/services/router-handler.d.ts +92 -0
  316. package/src/services/router-handler.d.ts.map +1 -0
  317. package/src/services/router-handler.test.ts +45 -0
  318. package/src/services/router-handler.ts +376 -0
  319. package/src/services/routing-policy.d.ts +55 -0
  320. package/src/services/routing-policy.d.ts.map +1 -0
  321. package/src/services/routing-policy.ts +228 -0
  322. package/src/services/routing-preferences.d.ts +8 -0
  323. package/src/services/routing-preferences.d.ts.map +1 -0
  324. package/src/services/routing-preferences.ts +15 -0
  325. package/src/services/runtime-target.d.ts +98 -0
  326. package/src/services/runtime-target.d.ts.map +1 -0
  327. package/src/services/runtime-target.ts +154 -0
  328. package/src/services/service.d.ts +128 -0
  329. package/src/services/service.d.ts.map +1 -0
  330. package/src/services/service.test.ts +223 -0
  331. package/src/services/service.ts +735 -0
  332. package/src/services/session-pool.d.ts +72 -0
  333. package/src/services/session-pool.d.ts.map +1 -0
  334. package/src/services/session-pool.ts +153 -0
  335. package/src/services/structured-output/deterministic-repair.d.ts +23 -0
  336. package/src/services/structured-output/deterministic-repair.d.ts.map +1 -0
  337. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  338. package/src/services/structured-output/deterministic-repair.ts +443 -0
  339. package/src/services/structured-output/index.ts +4 -0
  340. package/src/services/structured-output.d.ts +311 -0
  341. package/src/services/structured-output.d.ts.map +1 -0
  342. package/src/services/structured-output.test.ts +483 -0
  343. package/src/services/structured-output.ts +712 -0
  344. package/src/services/transcription-priority.test.ts +211 -0
  345. package/src/services/tts/errors.ts +46 -0
  346. package/src/services/tts/index.ts +214 -0
  347. package/src/services/tts/tts-audio-cache.ts +235 -0
  348. package/src/services/tts/types.ts +157 -0
  349. package/src/services/types.d.ts +19 -0
  350. package/src/services/types.d.ts.map +1 -0
  351. package/src/services/types.ts +55 -0
  352. package/src/services/verify-on-device.d.ts +34 -0
  353. package/src/services/verify-on-device.d.ts.map +1 -0
  354. package/src/services/verify-on-device.test.ts +87 -0
  355. package/src/services/verify-on-device.ts +127 -0
  356. package/src/services/verify.d.ts +8 -0
  357. package/src/services/verify.d.ts.map +1 -0
  358. package/src/services/verify.ts +13 -0
  359. package/src/services/vision/aosp-unavailable.d.ts +115 -0
  360. package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
  361. package/src/services/vision/aosp-unavailable.ts +163 -0
  362. package/src/services/vision/capacitor-llama.d.ts +99 -0
  363. package/src/services/vision/capacitor-llama.d.ts.map +1 -0
  364. package/src/services/vision/capacitor-llama.ts +255 -0
  365. package/src/services/vision/cloud-fallback.d.ts +47 -0
  366. package/src/services/vision/cloud-fallback.d.ts.map +1 -0
  367. package/src/services/vision/cloud-fallback.test.ts +243 -0
  368. package/src/services/vision/cloud-fallback.ts +268 -0
  369. package/src/services/vision/fallback-chain.test.ts +86 -0
  370. package/src/services/vision/hash.d.ts +71 -0
  371. package/src/services/vision/hash.d.ts.map +1 -0
  372. package/src/services/vision/hash.ts +157 -0
  373. package/src/services/vision/index.d.ts +95 -0
  374. package/src/services/vision/index.d.ts.map +1 -0
  375. package/src/services/vision/index.ts +251 -0
  376. package/src/services/vision/llama-server.d.ts +73 -0
  377. package/src/services/vision/llama-server.d.ts.map +1 -0
  378. package/src/services/vision/llama-server.ts +177 -0
  379. package/src/services/vision/types.d.ts +153 -0
  380. package/src/services/vision/types.d.ts.map +1 -0
  381. package/src/services/vision/types.ts +154 -0
  382. package/src/services/vision/vast-fallback.d.ts +18 -0
  383. package/src/services/vision/vast-fallback.d.ts.map +1 -0
  384. package/src/services/vision/vast-fallback.ts +127 -0
  385. package/src/services/vision-embedding-cache.d.ts +98 -0
  386. package/src/services/vision-embedding-cache.d.ts.map +1 -0
  387. package/src/services/vision-embedding-cache.ts +189 -0
  388. package/src/services/voice/VOICE_WORKBENCH.md +88 -0
  389. package/src/services/voice/__test-helpers__/fake-ffi.ts +92 -0
  390. package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -0
  391. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  392. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  393. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  394. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  395. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  396. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  397. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  398. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  399. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  400. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  401. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +197 -0
  402. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  403. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  404. package/src/services/voice/audio-frame-consumer.d.ts +212 -0
  405. package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
  406. package/src/services/voice/audio-frame-consumer.test.ts +343 -0
  407. package/src/services/voice/audio-frame-consumer.ts +491 -0
  408. package/src/services/voice/barge-in.d.ts +112 -0
  409. package/src/services/voice/barge-in.d.ts.map +1 -0
  410. package/src/services/voice/barge-in.test.ts +244 -0
  411. package/src/services/voice/barge-in.ts +336 -0
  412. package/src/services/voice/cancellation-coordinator.d.ts +127 -0
  413. package/src/services/voice/cancellation-coordinator.d.ts.map +1 -0
  414. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  415. package/src/services/voice/cancellation-coordinator.ts +269 -0
  416. package/src/services/voice/checkpoint-manager.d.ts +199 -0
  417. package/src/services/voice/checkpoint-manager.d.ts.map +1 -0
  418. package/src/services/voice/checkpoint-manager.ts +401 -0
  419. package/src/services/voice/checkpoint-policy.ts +336 -0
  420. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  421. package/src/services/voice/e2e-harness.test.ts +182 -0
  422. package/src/services/voice/e2e-harness.ts +743 -0
  423. package/src/services/voice/eager-context-builder.d.ts +170 -0
  424. package/src/services/voice/eager-context-builder.d.ts.map +1 -0
  425. package/src/services/voice/eager-context-builder.ts +262 -0
  426. package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
  427. package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  428. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  429. package/src/services/voice/embedding-server.ts +200 -0
  430. package/src/services/voice/embedding.d.ts +133 -0
  431. package/src/services/voice/embedding.d.ts.map +1 -0
  432. package/src/services/voice/embedding.test.ts +148 -0
  433. package/src/services/voice/embedding.ts +244 -0
  434. package/src/services/voice/emotion-attribution.d.ts +68 -0
  435. package/src/services/voice/emotion-attribution.d.ts.map +1 -0
  436. package/src/services/voice/emotion-attribution.test.ts +129 -0
  437. package/src/services/voice/emotion-attribution.ts +361 -0
  438. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  439. package/src/services/voice/engine-bridge.d.ts +746 -0
  440. package/src/services/voice/engine-bridge.d.ts.map +1 -0
  441. package/src/services/voice/engine-bridge.test.ts +384 -0
  442. package/src/services/voice/engine-bridge.ts +2226 -0
  443. package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
  444. package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  445. package/src/services/voice/eot-classifier-ggml.ts +566 -0
  446. package/src/services/voice/eot-classifier.d.ts +214 -0
  447. package/src/services/voice/eot-classifier.d.ts.map +1 -0
  448. package/src/services/voice/eot-classifier.ts +533 -0
  449. package/src/services/voice/errors.d.ts +20 -0
  450. package/src/services/voice/errors.d.ts.map +1 -0
  451. package/src/services/voice/errors.ts +32 -0
  452. package/src/services/voice/expressive-tags.d.ts +158 -0
  453. package/src/services/voice/expressive-tags.d.ts.map +1 -0
  454. package/src/services/voice/expressive-tags.ts +405 -0
  455. package/src/services/voice/ffi-bindings.d.ts +636 -0
  456. package/src/services/voice/ffi-bindings.d.ts.map +1 -0
  457. package/src/services/voice/ffi-bindings.test.ts +671 -0
  458. package/src/services/voice/ffi-bindings.ts +3050 -0
  459. package/src/services/voice/first-line-cache.d.ts +181 -0
  460. package/src/services/voice/first-line-cache.d.ts.map +1 -0
  461. package/src/services/voice/first-line-cache.ts +725 -0
  462. package/src/services/voice/fused-eot-scorer.d.ts +51 -0
  463. package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
  464. package/src/services/voice/fused-eot-scorer.ts +135 -0
  465. package/src/services/voice/index.d.ts +91 -0
  466. package/src/services/voice/index.d.ts.map +1 -0
  467. package/src/services/voice/index.ts +481 -0
  468. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
  469. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -0
  470. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  471. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  472. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  473. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  474. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  475. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +231 -0
  476. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  477. package/src/services/voice/kokoro/index.ts +79 -0
  478. package/src/services/voice/kokoro/kokoro-backend.d.ts +72 -0
  479. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  480. package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
  481. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  482. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  483. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  484. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  485. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  486. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  487. package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  488. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  489. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  490. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  491. package/src/services/voice/kokoro/phonemizer.d.ts +50 -0
  492. package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  493. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  494. package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
  495. package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  496. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  497. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  498. package/src/services/voice/kokoro/runtime-selection.d.ts +92 -0
  499. package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  500. package/src/services/voice/kokoro/runtime-selection.ts +237 -0
  501. package/src/services/voice/kokoro/types.d.ts +82 -0
  502. package/src/services/voice/kokoro/types.d.ts.map +1 -0
  503. package/src/services/voice/kokoro/types.ts +95 -0
  504. package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
  505. package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  506. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  507. package/src/services/voice/kokoro/voices.d.ts +30 -0
  508. package/src/services/voice/kokoro/voices.d.ts.map +1 -0
  509. package/src/services/voice/kokoro/voices.ts +64 -0
  510. package/src/services/voice/lifecycle.d.ts +135 -0
  511. package/src/services/voice/lifecycle.d.ts.map +1 -0
  512. package/src/services/voice/lifecycle.test.ts +315 -0
  513. package/src/services/voice/lifecycle.ts +301 -0
  514. package/src/services/voice/live-diarization-session.d.ts +96 -0
  515. package/src/services/voice/live-diarization-session.d.ts.map +1 -0
  516. package/src/services/voice/live-diarization-session.ts +289 -0
  517. package/src/services/voice/mic-source.d.ts +136 -0
  518. package/src/services/voice/mic-source.d.ts.map +1 -0
  519. package/src/services/voice/mic-source.test.ts +210 -0
  520. package/src/services/voice/mic-source.ts +503 -0
  521. package/src/services/voice/optimistic-policy.d.ts +109 -0
  522. package/src/services/voice/optimistic-policy.d.ts.map +1 -0
  523. package/src/services/voice/optimistic-policy.test.ts +101 -0
  524. package/src/services/voice/optimistic-policy.ts +192 -0
  525. package/src/services/voice/optimistic-rollback.ts +343 -0
  526. package/src/services/voice/partial-stabilizer.d.ts +73 -0
  527. package/src/services/voice/partial-stabilizer.d.ts.map +1 -0
  528. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  529. package/src/services/voice/partial-stabilizer.ts +140 -0
  530. package/src/services/voice/phoneme-tokenizer.d.ts +49 -0
  531. package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  532. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  533. package/src/services/voice/phrase-cache.d.ts +76 -0
  534. package/src/services/voice/phrase-cache.d.ts.map +1 -0
  535. package/src/services/voice/phrase-cache.test.ts +242 -0
  536. package/src/services/voice/phrase-cache.ts +186 -0
  537. package/src/services/voice/phrase-chunker.d.ts +62 -0
  538. package/src/services/voice/phrase-chunker.d.ts.map +1 -0
  539. package/src/services/voice/phrase-chunker.test.ts +239 -0
  540. package/src/services/voice/phrase-chunker.ts +281 -0
  541. package/src/services/voice/pipeline-impls.d.ts +151 -0
  542. package/src/services/voice/pipeline-impls.d.ts.map +1 -0
  543. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  544. package/src/services/voice/pipeline-impls.test.ts +292 -0
  545. package/src/services/voice/pipeline-impls.ts +315 -0
  546. package/src/services/voice/pipeline.d.ts +216 -0
  547. package/src/services/voice/pipeline.d.ts.map +1 -0
  548. package/src/services/voice/pipeline.ts +505 -0
  549. package/src/services/voice/prefill-client.d.ts +123 -0
  550. package/src/services/voice/prefill-client.d.ts.map +1 -0
  551. package/src/services/voice/prefill-client.ts +316 -0
  552. package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
  553. package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  554. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  555. package/src/services/voice/profile-store.d.ts +248 -0
  556. package/src/services/voice/profile-store.d.ts.map +1 -0
  557. package/src/services/voice/profile-store.ts +887 -0
  558. package/src/services/voice/ring-buffer.d.ts +40 -0
  559. package/src/services/voice/ring-buffer.d.ts.map +1 -0
  560. package/src/services/voice/ring-buffer.ts +105 -0
  561. package/src/services/voice/rollback-queue.d.ts +24 -0
  562. package/src/services/voice/rollback-queue.d.ts.map +1 -0
  563. package/src/services/voice/rollback-queue.ts +74 -0
  564. package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
  565. package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  566. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  567. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  568. package/src/services/voice/samantha-preset-regenerator.d.ts +87 -0
  569. package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  570. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  571. package/src/services/voice/scheduler.d.ts +146 -0
  572. package/src/services/voice/scheduler.d.ts.map +1 -0
  573. package/src/services/voice/scheduler.t2.test.ts +141 -0
  574. package/src/services/voice/scheduler.ts +927 -0
  575. package/src/services/voice/shared-resources.d.ts +190 -0
  576. package/src/services/voice/shared-resources.d.ts.map +1 -0
  577. package/src/services/voice/shared-resources.ts +320 -0
  578. package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  579. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  580. package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
  581. package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
  582. package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  583. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  584. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  585. package/src/services/voice/speaker/diarizer.d.ts +75 -0
  586. package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
  587. package/src/services/voice/speaker/diarizer.ts +218 -0
  588. package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
  589. package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  590. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  591. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  592. package/src/services/voice/speaker/encoder-ggml.d.ts +33 -0
  593. package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  594. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  595. package/src/services/voice/speaker/encoder.d.ts +37 -0
  596. package/src/services/voice/speaker/encoder.d.ts.map +1 -0
  597. package/src/services/voice/speaker/encoder.ts +105 -0
  598. package/src/services/voice/speaker-imprint.d.ts +83 -0
  599. package/src/services/voice/speaker-imprint.d.ts.map +1 -0
  600. package/src/services/voice/speaker-imprint.test.ts +185 -0
  601. package/src/services/voice/speaker-imprint.ts +312 -0
  602. package/src/services/voice/speaker-preset-cache.d.ts +77 -0
  603. package/src/services/voice/speaker-preset-cache.d.ts.map +1 -0
  604. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  605. package/src/services/voice/speaker-preset-cache.ts +195 -0
  606. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  607. package/src/services/voice/system-audio-sink.d.ts +73 -0
  608. package/src/services/voice/system-audio-sink.d.ts.map +1 -0
  609. package/src/services/voice/system-audio-sink.test.ts +29 -0
  610. package/src/services/voice/system-audio-sink.ts +366 -0
  611. package/src/services/voice/transcriber.d.ts +244 -0
  612. package/src/services/voice/transcriber.d.ts.map +1 -0
  613. package/src/services/voice/transcriber.test.ts +392 -0
  614. package/src/services/voice/transcriber.ts +704 -0
  615. package/src/services/voice/turn-controller.d.ts +183 -0
  616. package/src/services/voice/turn-controller.d.ts.map +1 -0
  617. package/src/services/voice/turn-controller.test.ts +575 -0
  618. package/src/services/voice/turn-controller.ts +596 -0
  619. package/src/services/voice/types.d.ts +643 -0
  620. package/src/services/voice/types.d.ts.map +1 -0
  621. package/src/services/voice/types.ts +699 -0
  622. package/src/services/voice/vad.d.ts +282 -0
  623. package/src/services/voice/vad.d.ts.map +1 -0
  624. package/src/services/voice/vad.test.ts +480 -0
  625. package/src/services/voice/vad.ts +827 -0
  626. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  627. package/src/services/voice/voice-budget.d.ts +241 -0
  628. package/src/services/voice/voice-budget.d.ts.map +1 -0
  629. package/src/services/voice/voice-budget.test.ts +420 -0
  630. package/src/services/voice/voice-budget.ts +656 -0
  631. package/src/services/voice/voice-duet.test.ts +375 -0
  632. package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
  633. package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  634. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  635. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  636. package/src/services/voice/voice-preset-format.d.ts +158 -0
  637. package/src/services/voice/voice-preset-format.d.ts.map +1 -0
  638. package/src/services/voice/voice-preset-format.ts +700 -0
  639. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  640. package/src/services/voice/voice-profile-artifact.d.ts +116 -0
  641. package/src/services/voice/voice-profile-artifact.d.ts.map +1 -0
  642. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  643. package/src/services/voice/voice-profile-artifact.ts +518 -0
  644. package/src/services/voice/voice-profile-routes.d.ts +83 -0
  645. package/src/services/voice/voice-profile-routes.d.ts.map +1 -0
  646. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  647. package/src/services/voice/voice-profile-routes.ts +425 -0
  648. package/src/services/voice/voice-scenario.ts +154 -0
  649. package/src/services/voice/voice-settings.d.ts +82 -0
  650. package/src/services/voice/voice-settings.d.ts.map +1 -0
  651. package/src/services/voice/voice-settings.ts +172 -0
  652. package/src/services/voice/voice-state-machine.d.ts +364 -0
  653. package/src/services/voice/voice-state-machine.d.ts.map +1 -0
  654. package/src/services/voice/voice-state-machine.ts +727 -0
  655. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  656. package/src/services/voice/voice-workbench-report.ts +326 -0
  657. package/src/services/voice/voice-workbench.test.ts +158 -0
  658. package/src/services/voice/voice.test.ts +1070 -0
  659. package/src/services/voice/wake-word-ggml.d.ts +101 -0
  660. package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
  661. package/src/services/voice/wake-word-ggml.ts +320 -0
  662. package/src/services/voice/wake-word.d.ts +255 -0
  663. package/src/services/voice/wake-word.d.ts.map +1 -0
  664. package/src/services/voice/wake-word.test.ts +298 -0
  665. package/src/services/voice/wake-word.ts +554 -0
  666. package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  667. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  668. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  669. package/src/services/voice-model-updater.d.ts +240 -0
  670. package/src/services/voice-model-updater.d.ts.map +1 -0
  671. package/src/services/voice-model-updater.ts +724 -0
  672. package/src/services/voice-prewarm.d.ts +3 -0
  673. package/src/services/voice-prewarm.d.ts.map +1 -0
  674. package/src/services/voice-prewarm.ts +51 -0
  675. package/dist/index.d.ts +0 -37
  676. package/dist/index.js +0 -1098
@@ -0,0 +1,636 @@
1
+ /**
2
+ * Node/Bun FFI binding to `libelizainference.{dylib,so,dll}`.
3
+ *
4
+ * The fused omnivoice + llama.cpp build (see
5
+ * `packages/app-core/scripts/omnivoice-fuse/`) produces ONE shared
6
+ * library that exports both `llama_*` and `omnivoice_*` symbols plus
7
+ * the C ABI declared in `scripts/omnivoice-fuse/ffi.h`. This module is
8
+ * the JS-side proxy for that ABI — it loads the library, binds every
9
+ * `eliza_inference_*` symbol declared in `ffi.h`, and exposes a typed
10
+ * handle (`ElizaInferenceFfi`) the voice lifecycle calls into.
11
+ *
12
+ * Runtime: production runs under Bun (Electrobun shell, Capacitor
13
+ * bridge), so the loader uses `bun:ffi`. Tests that need to actually
14
+ * load a `.dylib` against a stub library spawn a `bun` subprocess —
15
+ * see `ffi-bindings.test.ts`. Calling this loader from a non-Bun
16
+ * runtime (e.g. plain Node) throws `VoiceLifecycleError({code:
17
+ * "missing-ffi"})` with a diagnostic explaining why.
18
+ *
19
+ * No defensive try/catch on the success path. Any dlopen failure,
20
+ * symbol-resolution failure, or ABI mismatch is a structured throw
21
+ * (AGENTS.md §3 + §9). The caller — `voice/lifecycle.ts` and
22
+ * `voice/engine-bridge.ts` — surfaces it as a `VoiceLifecycleError` to
23
+ * the UI.
24
+ */
25
+ /**
26
+ * ABI version the JS binding was authored against. Must match the value
27
+ * `eliza_inference_abi_version()` returns at runtime — a mismatch is a
28
+ * hard error (AGENTS.md §3, §9: no silent compatibility shims).
29
+ *
30
+ * Bump in lockstep with `ELIZA_INFERENCE_ABI_VERSION` in
31
+ * `scripts/omnivoice-fuse/ffi.h` whenever the C surface changes shape.
32
+ *
33
+ * v4: the FFI bridge resolves `speaker_preset_id` against the bundle's
34
+ * `cache/voice-preset-<id>.bin` (ELZ2 v2) and applies the
35
+ * `(instruct, ref_audio_tokens, ref_T, ref_text)` triple to
36
+ * `ov_tts_params` before calling `ov_synthesize`. Adds the
37
+ * `eliza_inference_encode_reference` entrypoint that the freeze CLI
38
+ * uses to pre-encode reference WAVs into the preset file. A v3 caller
39
+ * remains source-compatible: every v3 entry point keeps its v3 shape.
40
+ *
41
+ * v5: the FFI bridge gains the native openWakeWord surface
42
+ * (`eliza_inference_wakeword_supported/open/score/reset/close`). It
43
+ * replaces the previous `onnxruntime-node`-backed wake-word path —
44
+ * the JS binding routes wake-word detection exclusively through this
45
+ * ABI with no ONNX fallback (AGENTS.md §3, §8). v4 callers that
46
+ * never touched the wake-word entries are source-compatible.
47
+ *
48
+ * v6: the FFI bridge gains the native speaker-encoder + diarizer
49
+ * surfaces (`eliza_inference_speaker_supported/open/embed/free/close`
50
+ * and `eliza_inference_diariz_supported/open/segment/close`). These
51
+ * fuse the remaining standalone `libvoice_classifier` voice
52
+ * classifiers into the one `libelizainference` handle so the whole
53
+ * voice pipeline runs through a single native lib. v5 callers that
54
+ * never touched the speaker/diarizer entries are source-compatible.
55
+ *
56
+ * v9: the last text-adjacent modalities move onto the fused handle. Three
57
+ * additive surfaces + probes: text embeddings (`embed` / `embedSupported`),
58
+ * mmproj vision describe (`describeImage` / `visionSupported`), and the
59
+ * tokenizer (`tokenize` / `detokenize` / `tokenizeSupported`). With these,
60
+ * libllama is fully retired: text, embeddings, vision, and tokenization all
61
+ * run through the fused handle. A pre-v9 library lacks these symbols, so the
62
+ * probes report unsupported and the fused runtime refuses (there is no
63
+ * libllama fallback). v8 callers that never touched the new entries remain
64
+ * source-compatible (the new probes simply return false on a v8 lib).
65
+ *
66
+ * v10: Kokoro-82M TTS folded in-process. The fused handle gains
67
+ * `eliza_inference_kokoro_supported/load/synthesize/sample_rate` so the
68
+ * mobile Kokoro path synthesizes through the same dlopen()-ed
69
+ * libelizainference as OmniVoice instead of POSTing to the local-TCP
70
+ * `llama-server /v1/audio/speech` route (forbidden on iOS / Google Play).
71
+ * The four symbols are additive — a v9 library lacks them, so the
72
+ * `kokoroSupported()` probe reports false and the Kokoro FFI runtime
73
+ * refuses (no TCP fallback on mobile). A v9 library is still accepted at
74
+ * degraded capability: its voice/ASR/VAD/LLM/text surface is unchanged and
75
+ * Kokoro just probes unsupported on it.
76
+ */
77
+ export declare const ELIZA_INFERENCE_ABI_VERSION: 11;
78
+ /**
79
+ * Pooling strategies for `embed`. Mirror `enum llama_pooling_type` and the
80
+ * `ELIZA_POOLING_*` constants in `eliza-inference-ffi.h`.
81
+ */
82
+ export declare const ELIZA_POOLING_MEAN = 1;
83
+ export declare const ELIZA_POOLING_CLS = 2;
84
+ export declare const ELIZA_POOLING_LAST = 3;
85
+ /** Status codes mirrored from `ffi.h`. Negative = failure. */
86
+ export declare const ELIZA_OK = 0;
87
+ export declare const ELIZA_ERR_NOT_IMPLEMENTED = -1;
88
+ export declare const ELIZA_ERR_INVALID_ARG = -2;
89
+ export declare const ELIZA_ERR_BUNDLE_INVALID = -3;
90
+ export declare const ELIZA_ERR_FFI_FAULT = -4;
91
+ export declare const ELIZA_ERR_OOM = -5;
92
+ export declare const ELIZA_ERR_ABI_MISMATCH = -6;
93
+ export declare const ELIZA_ERR_CANCELLED = -7;
94
+ /**
95
+ * Region names the lifecycle hands to `mmap_acquire` / `mmap_evict`.
96
+ * Mirrors the set the C stub validates in `ffi-stub.c::valid_region`.
97
+ */
98
+ export type ElizaInferenceRegion = "tts" | "asr" | "text" | "mtp" | "vad" | "wakeword";
99
+ /**
100
+ * Opaque pointer to the C-side `EliInferenceContext`. Numeric on Bun
101
+ * (FFI returns the raw pointer as `bigint`); never inspected on the JS
102
+ * side beyond passing it back through the binding.
103
+ */
104
+ export type ElizaInferenceContextHandle = bigint;
105
+ /** Opaque pointer to a native Silero VAD session. */
106
+ export type NativeVadHandle = bigint;
107
+ /** Opaque pointer to a native openWakeWord session. */
108
+ export type NativeWakeWordHandle = bigint;
109
+ /** Opaque pointer to a native WeSpeaker speaker-encoder session. */
110
+ export type NativeSpeakerHandle = bigint;
111
+ /** Opaque pointer to a native pyannote diarizer session. */
112
+ export type NativeDiarizHandle = bigint;
113
+ /** Opaque pointer to a streaming-LLM session. */
114
+ export type LlmStreamHandle = bigint;
115
+ /**
116
+ * Per-session config handed to `llmStreamOpen`. Mirrors
117
+ * `eliza_llm_stream_config_t` in
118
+ * `native/llama.cpp/tools/omnivoice/include/eliza-inference-ffi.h` (ABI v8).
119
+ */
120
+ export interface LlmStreamConfig {
121
+ maxTokens: number;
122
+ temperature: number;
123
+ topP: number;
124
+ topK: number;
125
+ repeatPenalty: number;
126
+ /** Pinned slot id; -1 disables pinning. */
127
+ slotId: number;
128
+ /** Optional prompt cache key used to derive a slot when `slotId === -1`. */
129
+ promptCacheKey: string | null;
130
+ /** MTP drafter bounds; `0` for either disables speculative decoding. */
131
+ draftMin: number;
132
+ draftMax: number;
133
+ /** Absolute MTP drafter GGUF path; null disables drafter-backed MTP. */
134
+ draftModelPath: string | null;
135
+ /**
136
+ * GBNF grammar source. When set the native session installs a grammar
137
+ * sampler FIRST in the chain so every sampled token is constrained — this
138
+ * is how the structured-reply envelope is forced on the in-process FFI
139
+ * path. `null`/empty disables grammar constraint.
140
+ */
141
+ gbnfGrammar?: string | null;
142
+ /** Qwen3-style thinking-tag suppression passthrough (v1 no-op). */
143
+ disableThinking?: boolean;
144
+ /**
145
+ * Per-load GPU offload (ABI v8). Number of model layers to place on GPU.
146
+ * `undefined`/-1 selects the runtime default (all layers); 0 forces CPU.
147
+ * The model is loaded once per ctx, so the FIRST session's value wins.
148
+ */
149
+ gpuLayers?: number;
150
+ /**
151
+ * KV-cache K quant type name (ABI v8), e.g. "f16", "q8_0", "qjl1_256".
152
+ * `undefined`/null leaves the f16 default. Mapped to `ggml_type` by the
153
+ * fused lib's `eliza_llm_stream_config_t.cache_type_k`.
154
+ */
155
+ cacheTypeK?: string | null;
156
+ /** KV-cache V quant type name (ABI v8); see `cacheTypeK`. */
157
+ cacheTypeV?: string | null;
158
+ }
159
+ /**
160
+ * One step of streaming LLM output. `tokens` is the batch of accepted text
161
+ * model token ids the runtime committed this step (>= 1; > 1 only when the
162
+ * MTP drafter is active and the verifier accepted multiple drafts).
163
+ * `text` is the detokenized text for those tokens. `done` is `true` only
164
+ * on the final step (EOS reached). `drafterDrafted` and `drafterAccepted`
165
+ * are populated when the drafter is active.
166
+ */
167
+ export interface LlmStreamStep {
168
+ tokens: number[];
169
+ text: string;
170
+ done: boolean;
171
+ drafterDrafted: number;
172
+ drafterAccepted: number;
173
+ }
174
+ /**
175
+ * One streaming-TTS chunk delivered to the `onChunk` callback passed to
176
+ * `ttsSynthesizeStream`. `pcm` is a *view* over the library's buffer —
177
+ * valid only for the duration of the callback; copy it before
178
+ * returning. `isFinal` marks the zero-length tail chunk that closes the
179
+ * utterance. The callback returning `true` requests cancellation at the
180
+ * next kernel boundary.
181
+ */
182
+ export interface TtsStreamChunk {
183
+ pcm: Float32Array;
184
+ isFinal: boolean;
185
+ }
186
+ /**
187
+ * A native MTP speculative-step event from
188
+ * `eliza_inference_set_verifier_callback`. Token-index domain is the
189
+ * generated-output stream (token 0 = first generated token), matching
190
+ * `RejectedTokenRange`. `rejectedFrom`/`rejectedTo` are -1 when nothing
191
+ * was rejected this step.
192
+ */
193
+ export interface NativeVerifierEvent {
194
+ acceptedTokenIds: number[];
195
+ rejectedFrom: number;
196
+ rejectedTo: number;
197
+ correctedTokenIds: number[];
198
+ }
199
+ /**
200
+ * Typed handle returned by `loadElizaInferenceFfi`. Each method maps
201
+ * 1:1 to a symbol declared in `ffi.h`. Methods that allocate a context
202
+ * return the opaque pointer; methods that consume one take it as the
203
+ * first argument. Failures throw `VoiceLifecycleError` with the
204
+ * structured code derived from the C return value.
205
+ */
206
+ export interface ElizaInferenceFfi {
207
+ /** Library path the binding was loaded from (for diagnostics). */
208
+ readonly libraryPath: string;
209
+ /** ABI version reported by the loaded library. */
210
+ readonly libraryAbiVersion: string;
211
+ /** Create a fresh context anchored at `bundleDir`. */
212
+ create(bundleDir: string): ElizaInferenceContextHandle;
213
+ /** Destroy a previously-created context. Idempotent on already-freed handles. */
214
+ destroy(ctx: ElizaInferenceContextHandle): void;
215
+ /** Map / re-page weights for a region. */
216
+ mmapAcquire(ctx: ElizaInferenceContextHandle, region: ElizaInferenceRegion): void;
217
+ /**
218
+ * Release or evict a voice-only region after the lifecycle leaves
219
+ * voice-on. Implementations may madvise mapped pages or unload the
220
+ * ASR/TTS runtime state entirely; callers must treat the region as
221
+ * unavailable until the next `mmapAcquire`.
222
+ */
223
+ mmapEvict(ctx: ElizaInferenceContextHandle, region: ElizaInferenceRegion): void;
224
+ /**
225
+ * Synchronous TTS forward. Caller provides the output buffer; library
226
+ * fills up to its capacity and returns the number of samples written.
227
+ */
228
+ ttsSynthesize(args: {
229
+ ctx: ElizaInferenceContextHandle;
230
+ text: string;
231
+ speakerPresetId: string | null;
232
+ out: Float32Array;
233
+ }): number;
234
+ /**
235
+ * Synchronous ASR forward. Returns the decoded transcript as a UTF-8
236
+ * string (allocated by the JS side, sized to fit the library's max
237
+ * write).
238
+ */
239
+ asrTranscribe(args: {
240
+ ctx: ElizaInferenceContextHandle;
241
+ pcm: Float32Array;
242
+ sampleRateHz: number;
243
+ maxTextBytes?: number;
244
+ }): string;
245
+ /**
246
+ * True when this build implements streaming TTS (false for the stub /
247
+ * a TTS-disabled build). Callers pick the streaming path vs the batch
248
+ * `ttsSynthesize` off this flag — no probe-and-catch.
249
+ */
250
+ ttsStreamSupported(): boolean;
251
+ /**
252
+ * Chunked synthesis. `onChunk` is invoked for each decoded PCM segment
253
+ * as it arrives, then once more with `isFinal: true` (zero-length
254
+ * tail). Returning `true` from `onChunk` requests cancellation; the
255
+ * call then resolves with `cancelled: true` after the final-chunk
256
+ * callback. Any negative library return is a thrown `VoiceLifecycleError`.
257
+ */
258
+ ttsSynthesizeStream(args: {
259
+ ctx: ElizaInferenceContextHandle;
260
+ text: string;
261
+ speakerPresetId: string | null;
262
+ onChunk: (chunk: TtsStreamChunk) => boolean | undefined;
263
+ }): {
264
+ cancelled: boolean;
265
+ };
266
+ /**
267
+ * Hard-cancel any in-flight TTS forward pass on `ctx` (started on
268
+ * another thread by `ttsSynthesize` / `ttsSynthesizeStream`). The
269
+ * in-flight call returns `ELIZA_ERR_CANCELLED` at the next kernel
270
+ * boundary. Cancelling nothing is not an error.
271
+ */
272
+ cancelTts(ctx: ElizaInferenceContextHandle): void;
273
+ /**
274
+ * Register (or, with `cb: null`, clear) the native MTP verifier
275
+ * callback. The runtime fires `cb` for every speculative accept/reject
276
+ * step from the in-process drafter↔target loop. The returned
277
+ * `JSCallbackHandle` MUST be kept alive for as long as the callback is
278
+ * registered and `.close()`d when it's cleared (or on dispose) — Bun's
279
+ * `JSCallback` is GC'd otherwise and the native side dereferences a
280
+ * dead pointer.
281
+ */
282
+ setVerifierCallback(ctx: ElizaInferenceContextHandle, cb: ((event: NativeVerifierEvent) => void) | null): {
283
+ close(): void;
284
+ };
285
+ /**
286
+ * True when this build exports the OmniVoice reference-encode symbols
287
+ * (`eliza_inference_encode_reference`). The freeze CLI uses this to
288
+ * pre-encode same reference audio into the persisted voice preset;
289
+ * the runtime synthesis path never calls it (it reads pre-encoded
290
+ * tokens from the preset file).
291
+ */
292
+ encodeReferenceSupported?(): boolean;
293
+ /**
294
+ * Run the encode-only half of the TTS pipeline (HuBERT semantic + RVQ
295
+ * codec) on a 24 kHz mono fp32 PCM buffer and return the resulting
296
+ * reference-audio-token tensor `[K=8, ref_T]` as `Int32Array`
297
+ * row-major (`tokens[k*ref_T + t]`). The library allocates and the
298
+ * binding takes care of freeing the native buffer via
299
+ * `eliza_inference_free_tokens` before this returns.
300
+ *
301
+ * The TTS region must have been acquired (`mmapAcquire("tts")`)
302
+ * before the call. `sampleRateHz` must be 24000; the entrypoint does
303
+ * NOT resample, by design — the freeze artifact must be deterministic.
304
+ */
305
+ encodeReference?(args: {
306
+ ctx: ElizaInferenceContextHandle;
307
+ pcm: Float32Array;
308
+ sampleRateHz: number;
309
+ }): {
310
+ K: number;
311
+ refT: number;
312
+ tokens: Int32Array;
313
+ };
314
+ /** True when this build exports and enables the native Silero VAD backend. */
315
+ vadSupported?(): boolean;
316
+ /** Open a native VAD session. The ABI-compatible sample rate is 16 kHz. */
317
+ vadOpen?(args: {
318
+ ctx: ElizaInferenceContextHandle;
319
+ sampleRateHz: number;
320
+ }): NativeVadHandle;
321
+ /** Process one 512-sample fp32 mono window and return P(speech). */
322
+ vadProcess?(args: {
323
+ vad: NativeVadHandle;
324
+ pcm: Float32Array;
325
+ }): number;
326
+ /** Clear native VAD recurrent state at utterance boundaries. */
327
+ vadReset?(vad: NativeVadHandle): void;
328
+ /** Close + free a native VAD session. Idempotent on already-closed handles. */
329
+ vadClose?(vad: NativeVadHandle): void;
330
+ /**
331
+ * True when this build exports and enables the native openWakeWord
332
+ * backend. The JS binding routes wake-word detection exclusively
333
+ * through this surface; when this returns false, the wake-word path
334
+ * throws a structured "runtime not ready" error — no ONNX fallback
335
+ * (AGENTS.md §3, §8).
336
+ */
337
+ wakewordSupported?(): boolean;
338
+ /**
339
+ * Open a native wake-word session. `sampleRateHz` must be 16000;
340
+ * `headName` selects the classifier head inside the bundle's combined
341
+ * wake-word GGUF (e.g. "hey-eliza").
342
+ */
343
+ wakewordOpen?(args: {
344
+ ctx: ElizaInferenceContextHandle;
345
+ sampleRateHz: number;
346
+ headName: string;
347
+ }): NativeWakeWordHandle;
348
+ /**
349
+ * Score one 1280-sample (80 ms @ 16 kHz) fp32 mono frame and return
350
+ * the latest P(wake) in [0, 1]. Early calls before enough context
351
+ * accumulates return 0.
352
+ */
353
+ wakewordScore?(args: {
354
+ wake: NativeWakeWordHandle;
355
+ pcm: Float32Array;
356
+ }): number;
357
+ /** Clear all streaming state (audio tail, mel ring, embedding ring). */
358
+ wakewordReset?(wake: NativeWakeWordHandle): void;
359
+ /** Close + free a native wake-word session. Idempotent on already-closed handles. */
360
+ wakewordClose?(wake: NativeWakeWordHandle): void;
361
+ /** True when this build exports and enables the native WeSpeaker encoder. */
362
+ speakerSupported?(): boolean;
363
+ /**
364
+ * Open a native speaker-encoder session. `ggufPath` may be null to
365
+ * resolve the bundle's `speaker/` dir, or an absolute path to a
366
+ * WeSpeaker GGUF.
367
+ */
368
+ speakerOpen?(args: {
369
+ ctx: ElizaInferenceContextHandle;
370
+ ggufPath: string | null;
371
+ }): NativeSpeakerHandle;
372
+ /**
373
+ * Embed `pcm` (16 kHz mono fp32) into a 256-d L2-normalized speaker
374
+ * embedding. Returns a freshly-allocated `Float32Array` of length 256.
375
+ */
376
+ speakerEmbed?(args: {
377
+ speaker: NativeSpeakerHandle;
378
+ pcm: Float32Array;
379
+ }): Float32Array;
380
+ /** Close + free a native speaker-encoder session. Idempotent on already-closed handles. */
381
+ speakerClose?(speaker: NativeSpeakerHandle): void;
382
+ /** True when this build exports and enables the native pyannote diarizer. */
383
+ diarizSupported?(): boolean;
384
+ /**
385
+ * Open a native diarizer session. `ggufPath` may be null to resolve the
386
+ * bundle's `diariz/` dir, or an absolute path to a pyannote GGUF.
387
+ */
388
+ diarizOpen?(args: {
389
+ ctx: ElizaInferenceContextHandle;
390
+ ggufPath: string | null;
391
+ }): NativeDiarizHandle;
392
+ /**
393
+ * Segment one 80000-sample (5 s @ 16 kHz) mono fp32 window into a
394
+ * per-frame powerset-label sequence. Returns the `Int8Array` of frame
395
+ * labels (293 for pyannote-segmentation-3.0), each in `[0, 7)`.
396
+ */
397
+ diarizSegment?(args: {
398
+ diariz: NativeDiarizHandle;
399
+ pcm: Float32Array;
400
+ }): Int8Array;
401
+ /** Close + free a native diarizer session. Idempotent on already-closed handles. */
402
+ diarizClose?(diariz: NativeDiarizHandle): void;
403
+ /**
404
+ * True when this build has a working streaming ASR decoder (false for
405
+ * the stub / an ASR-disabled build). Callers pick the fused streaming
406
+ * path vs the fused batch interim adapter off this flag — they do not
407
+ * have to open a session and catch `ELIZA_ERR_NOT_IMPLEMENTED`.
408
+ */
409
+ asrStreamSupported(): boolean;
410
+ /** Open a streaming ASR session. The handle is closed via `asrStreamClose`. */
411
+ asrStreamOpen(args: {
412
+ ctx: ElizaInferenceContextHandle;
413
+ sampleRateHz: number;
414
+ }): bigint;
415
+ /** Feed one PCM frame at the session's sample rate. */
416
+ asrStreamFeed(args: {
417
+ stream: bigint;
418
+ pcm: Float32Array;
419
+ }): void;
420
+ /** Read the current running partial transcript (and token ids when available). */
421
+ asrStreamPartial(args: {
422
+ stream: bigint;
423
+ maxTextBytes?: number;
424
+ maxTokens?: number;
425
+ }): {
426
+ partial: string;
427
+ tokens?: number[];
428
+ };
429
+ /** Force-finalize: drain buffered audio, run a final decode, return the final transcript. */
430
+ asrStreamFinish(args: {
431
+ stream: bigint;
432
+ maxTextBytes?: number;
433
+ maxTokens?: number;
434
+ }): {
435
+ partial: string;
436
+ tokens?: number[];
437
+ };
438
+ /** Close + free a streaming ASR session. Idempotent on already-closed handles. */
439
+ asrStreamClose(stream: bigint): void;
440
+ /**
441
+ * True when this build exports the streaming LLM symbols
442
+ * (`eliza_inference_llm_stream_*`). Transitional builds may load
443
+ * without them; the runner uses this to pick between the FFI streaming
444
+ * path.
445
+ */
446
+ llmStreamSupported?(): boolean;
447
+ /**
448
+ * True when this build wires same-file / separate-drafter MTP
449
+ * speculative decoding into the streaming-LLM text path (ABI v8). A v7
450
+ * library returns `false` here (the symbol is absent), so the fused TEXT
451
+ * path can refuse to route through it without a speculative-decode
452
+ * regression. Anti-regression guard — see ABI v8 changelog.
453
+ */
454
+ llmMtpSupported?(): boolean;
455
+ /**
456
+ * True when this build maps + applies KV-cache quant types in the
457
+ * streaming-LLM text path (ABI v8). A v7 library returns `false` (symbol
458
+ * absent); the fused TEXT path refuses it to avoid a silent fallback to
459
+ * f16 KV when a quantized cache was requested.
460
+ */
461
+ llmKvQuantSupported?(): boolean;
462
+ /**
463
+ * Open a streaming-LLM session against `ctx`. Failure throws
464
+ * `VoiceLifecycleError`. Close exactly once via `llmStreamClose`.
465
+ */
466
+ llmStreamOpen?(args: {
467
+ ctx: ElizaInferenceContextHandle;
468
+ config: LlmStreamConfig;
469
+ }): LlmStreamHandle;
470
+ /** Feed a batch of pre-tokenized prompt tokens before the first `next`. */
471
+ llmStreamPrefill?(args: {
472
+ stream: LlmStreamHandle;
473
+ tokens: Int32Array;
474
+ }): void;
475
+ /**
476
+ * Pull the next streaming step. Returns `null` when the runtime declined
477
+ * to emit tokens this call (rare — drafter rejected everything and the
478
+ * verifier had nothing to commit); poll again. `step.done === true` is
479
+ * the final step.
480
+ */
481
+ llmStreamNext?(args: {
482
+ stream: LlmStreamHandle;
483
+ maxTokensPerStep?: number;
484
+ maxTextBytes?: number;
485
+ }): LlmStreamStep;
486
+ /** Cancel in-flight generation; the next `_next` returns CANCELLED. */
487
+ llmStreamCancel?(stream: LlmStreamHandle): void;
488
+ /** Persist the session's slot KV state to disk. */
489
+ llmStreamSaveSlot?(args: {
490
+ stream: LlmStreamHandle;
491
+ filename: string;
492
+ }): void;
493
+ /** Restore a previously-saved slot KV file. Call before the first prefill/next. */
494
+ llmStreamRestoreSlot?(args: {
495
+ stream: LlmStreamHandle;
496
+ filename: string;
497
+ }): void;
498
+ /** Close + free a streaming-LLM session. Idempotent on already-closed handles. */
499
+ llmStreamClose?(stream: LlmStreamHandle): void;
500
+ /**
501
+ * True when this build wires the fused text-embedding path
502
+ * (`eliza_inference_embed`). A v8 library returns false (symbol absent),
503
+ * so the default TEXT_EMBEDDING handler keeps the node-llama-cpp /
504
+ * libllama path.
505
+ */
506
+ embedSupported?(): boolean;
507
+ /**
508
+ * Compute a pooled, L2-normalized sentence embedding for `text` over the
509
+ * bundle's text model. `pooling` selects the strategy (default MEAN — the
510
+ * gte-small convention). Returns a `Float32Array` of length `n_embd`.
511
+ */
512
+ embed?(args: {
513
+ ctx: ElizaInferenceContextHandle;
514
+ text: string;
515
+ pooling?: number;
516
+ }): Float32Array;
517
+ /**
518
+ * True when this build was compiled with vision (`-DELIZA_ENABLE_VISION`)
519
+ * and exports `eliza_inference_describe_image`. A v8 / vision-off library
520
+ * returns false, so the IMAGE_DESCRIPTION handler keeps the libllama mtmd
521
+ * path.
522
+ */
523
+ visionSupported?(): boolean;
524
+ /**
525
+ * Describe `imageBytes` (raw PNG/JPEG/WebP) through the text model's
526
+ * mmproj projector at `mmprojPath`. `prompt` defaults to a generic
527
+ * caption request. Returns the description text.
528
+ */
529
+ describeImage?(args: {
530
+ ctx: ElizaInferenceContextHandle;
531
+ imageBytes: Uint8Array;
532
+ mmprojPath: string;
533
+ prompt?: string;
534
+ maxTextBytes?: number;
535
+ }): string;
536
+ /**
537
+ * True when this build exposes the tokenizer over the loaded text vocab
538
+ * (`eliza_inference_tokenize`). A pre-v9 library returns false, so the
539
+ * desktop fused runtime refuses (libllama is retired — no tokenizer sidecar).
540
+ */
541
+ tokenizeSupported?(): boolean;
542
+ /**
543
+ * Tokenize `text` against the loaded text model's vocab. `addSpecial`
544
+ * (default true) adds BOS/EOS; `parseSpecial` (default false) renders
545
+ * special tokens from the input. Returns the token ids as an `Int32Array`.
546
+ */
547
+ tokenize?(args: {
548
+ ctx: ElizaInferenceContextHandle;
549
+ text: string;
550
+ addSpecial?: boolean;
551
+ parseSpecial?: boolean;
552
+ }): Int32Array;
553
+ /**
554
+ * Detokenize `tokens` back to text against the loaded text model's vocab.
555
+ * `removeSpecial` (default false) strips BOS/EOS; `unparseSpecial`
556
+ * (default false) renders special tokens.
557
+ */
558
+ detokenize?(args: {
559
+ ctx: ElizaInferenceContextHandle;
560
+ tokens: Int32Array;
561
+ removeSpecial?: boolean;
562
+ unparseSpecial?: boolean;
563
+ maxTextBytes?: number;
564
+ }): string;
565
+ /**
566
+ * True when this build wires the fused end-of-turn scorer
567
+ * (`eliza_inference_llm_eot_score`). A v10 library returns false (symbol
568
+ * absent), so the composite EOT classifier uses the heuristic-only signal.
569
+ */
570
+ eotSupported?(): boolean;
571
+ /**
572
+ * Single causal forward pass over `tokens` (a tokenized partial transcript)
573
+ * returning the next-token softmax probability of `targetTokenId` (the
574
+ * end-of-turn marker, e.g. `<|im_end|>`), plus the argmax next token and its
575
+ * probability. Runs on a dedicated scoring context over the loaded text
576
+ * model; KV is cleared per call so scores are independent.
577
+ */
578
+ eotScore?(args: {
579
+ ctx: ElizaInferenceContextHandle;
580
+ tokens: Int32Array;
581
+ targetTokenId: number;
582
+ }): {
583
+ targetProb: number;
584
+ topToken: number;
585
+ topProb: number;
586
+ };
587
+ /**
588
+ * True when this build linked Eliza-1's in-process Kokoro engine
589
+ * (`eliza_inference_kokoro_*`). A v9 library returns false (symbols
590
+ * absent), so the Kokoro FFI runtime refuses rather than falling back to
591
+ * the local-TCP `llama-server` route (forbidden on iOS / Google Play).
592
+ */
593
+ kokoroSupported?(): boolean;
594
+ /**
595
+ * Load the Kokoro GGUF at `ggufPath` and the voice preset `.bin` at
596
+ * `voiceBinPath` (raw fp32 ref_s, `styleDim` inner dim — 256 for v1.0)
597
+ * into `ctx`. Replaces any previously-loaded Kokoro model on the ctx.
598
+ * Throws `VoiceLifecycleError` on a negative return with the C diagnostic.
599
+ */
600
+ kokoroLoad?(args: {
601
+ ctx: ElizaInferenceContextHandle;
602
+ ggufPath: string;
603
+ voiceBinPath: string;
604
+ styleDim?: number;
605
+ }): void;
606
+ /**
607
+ * Synthesize `text` through the loaded Kokoro model+voice at the model's
608
+ * native rate (24 kHz for v1.0). `speed` scales predicted durations
609
+ * (default 1.0). Allocates an output buffer of `maxSamples` fp32 samples,
610
+ * reads back the count the library wrote, and returns that slice.
611
+ */
612
+ kokoroSynthesize?(args: {
613
+ ctx: ElizaInferenceContextHandle;
614
+ text: string;
615
+ speed?: number;
616
+ maxSamples: number;
617
+ }): Float32Array;
618
+ /** The loaded Kokoro model's audio sample rate (24000 for v1.0). */
619
+ kokoroSampleRate?(ctx: ElizaInferenceContextHandle): number;
620
+ /** Best-effort dispose for the binding itself (closes the dlopen handle). */
621
+ close(): void;
622
+ }
623
+ /**
624
+ * Load `libelizainference` at `dylibPath` and bind every symbol
625
+ * declared in `ffi.h`. The returned handle's methods delegate directly
626
+ * to the library; they throw `VoiceLifecycleError` on any negative
627
+ * return value or runtime fault.
628
+ *
629
+ * Throws synchronously (no Promise) when:
630
+ * - the JS runtime is not Bun (no FFI primitive available),
631
+ * - `dlopen` cannot find or open the library,
632
+ * - the library's reported ABI version does not match
633
+ * `ELIZA_INFERENCE_ABI_VERSION`.
634
+ */
635
+ export declare function loadElizaInferenceFfi(dylibPath: string): ElizaInferenceFfi;
636
+ //# sourceMappingURL=ffi-bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffi-bindings.d.ts","sourceRoot":"","sources":["ffi-bindings.ts"],"names":[],"mappings":"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"}