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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. package/README.md +84 -10
  2. package/dist/actions/generate-media.d.ts.map +1 -0
  3. package/dist/actions/identify-speaker.d.ts.map +1 -0
  4. package/dist/actions/transcription-control.d.ts.map +1 -0
  5. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  6. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  7. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  8. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  10. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  12. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  14. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  16. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  18. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  20. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  22. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  23. package/dist/backends/apple-foundation.d.ts +56 -0
  24. package/dist/backends/apple-foundation.d.ts.map +1 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +39647 -0
  27. package/dist/index.js.map +217 -0
  28. package/{src → dist}/local-inference-routes.d.ts +9 -0
  29. package/dist/local-inference-routes.d.ts.map +1 -0
  30. package/dist/provider.d.ts.map +1 -0
  31. package/{src → dist}/routes/compat-helpers.d.ts +1 -1
  32. package/dist/routes/compat-helpers.d.ts.map +1 -0
  33. package/dist/routes/family-member-route.d.ts.map +1 -0
  34. package/{src → dist}/routes/index.d.ts +1 -0
  35. package/dist/routes/index.d.ts.map +1 -0
  36. package/dist/routes/index.js +42040 -0
  37. package/dist/routes/index.js.map +236 -0
  38. package/{src → dist}/routes/live-diarization-route.d.ts +7 -0
  39. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  40. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  41. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  42. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  43. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  44. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  45. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  46. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  47. package/{src → dist}/routes/transcripts-routes.d.ts +8 -0
  48. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  49. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  50. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  51. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  52. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  53. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  54. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  55. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  56. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  57. package/{src → dist}/runtime/ensure-local-inference-handler.d.ts +8 -0
  58. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  59. package/{src → dist}/runtime/index.d.ts +1 -1
  60. package/dist/runtime/index.d.ts.map +1 -0
  61. package/dist/runtime/index.js +38768 -0
  62. package/dist/runtime/index.js.map +217 -0
  63. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  64. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  65. package/{src → dist}/runtime/voice-entity-binding.d.ts +10 -0
  66. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  67. package/{src → dist}/services/active-model.d.ts +28 -0
  68. package/dist/services/active-model.d.ts.map +1 -0
  69. package/dist/services/asr-provenance.d.ts +5 -0
  70. package/dist/services/asr-provenance.d.ts.map +1 -0
  71. package/{src → dist}/services/assignments.d.ts +16 -3
  72. package/dist/services/assignments.d.ts.map +1 -0
  73. package/dist/services/backend-selector.d.ts +55 -0
  74. package/dist/services/backend-selector.d.ts.map +1 -0
  75. package/{src → dist}/services/backend.d.ts +110 -16
  76. package/dist/services/backend.d.ts.map +1 -0
  77. package/{src → dist}/services/bionic-host-loader.d.ts +21 -0
  78. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  79. package/dist/services/bundled-models.d.ts.map +1 -0
  80. package/dist/services/cache-bridge.d.ts.map +1 -0
  81. package/dist/services/catalog.d.ts +10 -0
  82. package/dist/services/catalog.d.ts.map +1 -0
  83. package/dist/services/checkpoint-client.d.ts.map +1 -0
  84. package/dist/services/checkpoint-manager.d.ts +217 -0
  85. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  86. package/dist/services/cloud-fallback.d.ts.map +1 -0
  87. package/dist/services/context-fit.d.ts +36 -0
  88. package/dist/services/context-fit.d.ts.map +1 -0
  89. package/dist/services/conversation-registry.d.ts.map +1 -0
  90. package/{src → dist}/services/desktop-fused-ffi-backend-runtime.d.ts +22 -6
  91. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  92. package/dist/services/device-bridge.d.ts.map +1 -0
  93. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  94. package/{src → dist}/services/device-tier.d.ts +19 -1
  95. package/dist/services/device-tier.d.ts.map +1 -0
  96. package/{src → dist}/services/downloader.d.ts +16 -4
  97. package/dist/services/downloader.d.ts.map +1 -0
  98. package/{src → dist}/services/engine.d.ts +43 -4
  99. package/dist/services/engine.d.ts.map +1 -0
  100. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  101. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  102. package/dist/services/external-scanner.d.ts.map +1 -0
  103. package/dist/services/ffi-llm-mock.d.ts +90 -0
  104. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  105. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  106. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  107. package/{src → dist}/services/ffi-streaming-backend.d.ts +28 -7
  108. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  109. package/{src → dist}/services/ffi-streaming-runner.d.ts +24 -0
  110. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  111. package/dist/services/gpu-autotune.d.ts +150 -0
  112. package/dist/services/gpu-autotune.d.ts.map +1 -0
  113. package/dist/services/gpu-detect.d.ts.map +1 -0
  114. package/dist/services/handler-registry.d.ts.map +1 -0
  115. package/dist/services/hardware.d.ts.map +1 -0
  116. package/dist/services/image-description-runtime.d.ts.map +1 -0
  117. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  118. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  119. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  120. package/dist/services/imagegen/errors.d.ts.map +1 -0
  121. package/dist/services/imagegen/index.d.ts.map +1 -0
  122. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  123. package/{src → dist}/services/imagegen/sd-cpp.d.ts +1 -0
  124. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  125. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  126. package/dist/services/imagegen/types.d.ts.map +1 -0
  127. package/{src → dist}/services/index.d.ts +3 -1
  128. package/dist/services/index.d.ts.map +1 -0
  129. package/dist/services/index.js +39453 -0
  130. package/dist/services/index.js.map +227 -0
  131. package/dist/services/inference-capabilities.d.ts.map +1 -0
  132. package/dist/services/inference-telemetry.d.ts.map +1 -0
  133. package/dist/services/ios-llama-streaming.d.ts +119 -0
  134. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  135. package/dist/services/kv-spill.d.ts.map +1 -0
  136. package/dist/services/latency-trace.d.ts.map +1 -0
  137. package/dist/services/lib-target.d.ts +55 -0
  138. package/dist/services/lib-target.d.ts.map +1 -0
  139. package/dist/services/live-signals.d.ts +86 -0
  140. package/dist/services/live-signals.d.ts.map +1 -0
  141. package/dist/services/llama-server-metrics.d.ts +114 -0
  142. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  143. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  144. package/dist/services/load-args.d.ts.map +1 -0
  145. package/dist/services/manifest/index.d.ts +4 -0
  146. package/dist/services/manifest/index.d.ts.map +1 -0
  147. package/{src → dist}/services/manifest/schema.d.ts +196 -6
  148. package/dist/services/manifest/schema.d.ts.map +1 -0
  149. package/{src → dist}/services/manifest/types.d.ts +3 -1
  150. package/dist/services/manifest/types.d.ts.map +1 -0
  151. package/dist/services/manifest/validator.d.ts.map +1 -0
  152. package/{src → dist}/services/memory-arbiter.d.ts +33 -3
  153. package/dist/services/memory-arbiter.d.ts.map +1 -0
  154. package/dist/services/memory-benchmark.d.ts +76 -0
  155. package/dist/services/memory-benchmark.d.ts.map +1 -0
  156. package/{src → dist}/services/memory-monitor.d.ts +6 -0
  157. package/dist/services/memory-monitor.d.ts.map +1 -0
  158. package/dist/services/memory-pressure.d.ts.map +1 -0
  159. package/dist/services/mtp-doctor.d.ts.map +1 -0
  160. package/dist/services/network-policy.d.ts.map +1 -0
  161. package/dist/services/paths.d.ts.map +1 -0
  162. package/dist/services/planner-skeleton.d.ts.map +1 -0
  163. package/dist/services/providers.d.ts.map +1 -0
  164. package/dist/services/ram-budget.d.ts.map +1 -0
  165. package/dist/services/readiness.d.ts.map +1 -0
  166. package/dist/services/recommendation.d.ts.map +1 -0
  167. package/{src → dist}/services/registry.d.ts +11 -13
  168. package/dist/services/registry.d.ts.map +1 -0
  169. package/{src → dist}/services/router-handler.d.ts +2 -2
  170. package/dist/services/router-handler.d.ts.map +1 -0
  171. package/{src → dist}/services/routing-policy.d.ts +32 -9
  172. package/dist/services/routing-policy.d.ts.map +1 -0
  173. package/dist/services/routing-preferences.d.ts.map +1 -0
  174. package/dist/services/runtime-target.d.ts.map +1 -0
  175. package/{src → dist}/services/service.d.ts +1 -1
  176. package/dist/services/service.d.ts.map +1 -0
  177. package/dist/services/session-pool.d.ts.map +1 -0
  178. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  179. package/dist/services/structured-output/index.d.ts +2 -0
  180. package/dist/services/structured-output/index.d.ts.map +1 -0
  181. package/dist/services/structured-output.d.ts.map +1 -0
  182. package/dist/services/system-memory.d.ts.map +1 -0
  183. package/{src → dist}/services/types.d.ts +1 -1
  184. package/dist/services/types.d.ts.map +1 -0
  185. package/dist/services/verify-on-device.d.ts.map +1 -0
  186. package/dist/services/verify.d.ts.map +1 -0
  187. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  188. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  189. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  190. package/dist/services/vision/hash.d.ts.map +1 -0
  191. package/{src → dist}/services/vision/index.d.ts +1 -1
  192. package/dist/services/vision/index.d.ts.map +1 -0
  193. package/dist/services/vision/llama-server.d.ts.map +1 -0
  194. package/{src → dist}/services/vision/types.d.ts +13 -4
  195. package/dist/services/vision/types.d.ts.map +1 -0
  196. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  197. package/{src → dist}/services/vision-embedding-cache.d.ts +1 -1
  198. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  199. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  200. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  201. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  202. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  203. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  204. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  205. package/{src → dist}/services/voice/audio-frame-consumer.d.ts +82 -0
  206. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  207. package/dist/services/voice/barge-in.d.ts.map +1 -0
  208. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  209. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  210. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  211. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  212. package/dist/services/voice/corpus-augment.d.ts +111 -0
  213. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  214. package/dist/services/voice/corpus-generator.d.ts +134 -0
  215. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  216. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  217. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  218. package/dist/services/voice/e2e-harness.d.ts +297 -0
  219. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  220. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  221. package/dist/services/voice/echo-delay.d.ts +67 -0
  222. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  223. package/dist/services/voice/echo-metrics.d.ts +7 -0
  224. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  225. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  226. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  227. package/{src → dist}/services/voice/eliza1-eot-scorer.d.ts +8 -8
  228. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  229. package/dist/services/voice/embedding-server.d.ts +37 -0
  230. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  231. package/{src → dist}/services/voice/embedding.d.ts +2 -3
  232. package/dist/services/voice/embedding.d.ts.map +1 -0
  233. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  234. package/{src → dist}/services/voice/engine-bridge.d.ts +8 -5
  235. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  236. package/{src → dist}/services/voice/eot-classifier-ggml.d.ts +22 -22
  237. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  238. package/{src → dist}/services/voice/eot-classifier.d.ts +9 -12
  239. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  240. package/{src → dist}/services/voice/errors.d.ts +1 -1
  241. package/dist/services/voice/errors.d.ts.map +1 -0
  242. package/{src → dist}/services/voice/expressive-tags.d.ts +5 -5
  243. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  244. package/{src → dist}/services/voice/ffi-bindings.d.ts +26 -4
  245. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  246. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  247. package/{src → dist}/services/voice/fused-eot-scorer.d.ts +6 -6
  248. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  249. package/{src → dist}/services/voice/index.d.ts +8 -3
  250. package/dist/services/voice/index.d.ts.map +1 -0
  251. package/dist/services/voice/kokoro/index.d.ts +24 -0
  252. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  253. package/{src → dist}/services/voice/kokoro/kokoro-backend.d.ts +15 -0
  254. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  255. package/{src → dist}/services/voice/kokoro/kokoro-engine-discovery.d.ts +1 -1
  256. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  257. package/{src → dist}/services/voice/kokoro/kokoro-ffi-runtime.d.ts +3 -3
  258. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  259. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  260. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  261. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  262. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  263. package/{src → dist}/services/voice/kokoro/pick-runtime.d.ts +1 -1
  264. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  265. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  266. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  267. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  268. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  269. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  270. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  271. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  272. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  273. package/dist/services/voice/metric-math.d.ts +10 -0
  274. package/dist/services/voice/metric-math.d.ts.map +1 -0
  275. package/{src → dist}/services/voice/mic-source.d.ts +1 -1
  276. package/dist/services/voice/mic-source.d.ts.map +1 -0
  277. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  278. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  279. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  280. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  281. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  282. package/{src → dist}/services/voice/partial-stabilizer.d.ts +1 -1
  283. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  284. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  285. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  286. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  287. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  288. package/dist/services/voice/pipeline.d.ts.map +1 -0
  289. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  290. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  291. package/dist/services/voice/profile-store.d.ts.map +1 -0
  292. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  293. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  294. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  295. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  296. package/dist/services/voice/scheduler.d.ts.map +1 -0
  297. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  298. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  299. package/{src → dist}/services/voice/shared-resources.d.ts +14 -0
  300. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  301. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  302. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  303. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  304. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  305. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  306. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  307. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  308. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  309. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  310. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  311. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  312. package/{src → dist}/services/voice/transcriber.d.ts +4 -4
  313. package/dist/services/voice/transcriber.d.ts.map +1 -0
  314. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  315. package/{src → dist}/services/voice/transcript-service.d.ts +20 -1
  316. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  317. package/{src → dist}/services/voice/transcript-store.d.ts +12 -1
  318. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  319. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  320. package/{src → dist}/services/voice/types.d.ts +6 -6
  321. package/dist/services/voice/types.d.ts.map +1 -0
  322. package/{src → dist}/services/voice/vad.d.ts +6 -5
  323. package/dist/services/voice/vad.d.ts.map +1 -0
  324. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  325. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  326. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  327. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  328. package/{src → dist}/services/voice/voice-preset-format.d.ts +2 -2
  329. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  330. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  331. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  332. package/dist/services/voice/voice-scenario.d.ts +131 -0
  333. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  334. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  335. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  336. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  337. package/{src → dist}/services/voice/wake-word-ggml.d.ts +8 -9
  338. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  339. package/dist/services/voice/wake-word.d.ts.map +1 -0
  340. package/dist/services/voice/wav-codec.d.ts +11 -0
  341. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  342. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  343. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  344. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  345. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  346. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  347. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  348. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  349. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  350. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  351. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  352. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  353. package/dist/services/voice-model-updater.d.ts.map +1 -0
  354. package/dist/services/voice-prewarm.d.ts.map +1 -0
  355. package/dist/voice-workbench.d.ts +18 -0
  356. package/dist/voice-workbench.d.ts.map +1 -0
  357. package/dist/voice-workbench.js +5259 -0
  358. package/dist/voice-workbench.js.map +34 -0
  359. package/package.json +28 -9
  360. package/registry-entry.json +137 -0
  361. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  362. package/src/adapters/capacitor-llama/environment.ts +1 -1
  363. package/src/adapters/capacitor-llama/index.ts +28 -4
  364. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  365. package/src/adapters/capacitor-llama/text-streaming.ts +2 -2
  366. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  367. package/src/backends/apple-foundation.ts +1 -1
  368. package/src/local-inference-routes.test.ts +57 -11
  369. package/src/local-inference-routes.ts +90 -8
  370. package/src/provider.ts +32 -3
  371. package/src/routes/compat-helpers.ts +2 -1
  372. package/src/routes/index.ts +1 -0
  373. package/src/routes/live-diarization-route.test.ts +134 -0
  374. package/src/routes/live-diarization-route.ts +79 -3
  375. package/src/routes/local-inference-asr-route.test.ts +43 -2
  376. package/src/routes/local-inference-asr-route.ts +7 -4
  377. package/src/routes/local-inference-asr-transcribe.test.ts +4 -4
  378. package/src/routes/local-inference-asr-transcribe.ts +1 -1
  379. package/src/routes/local-inference-compat-routes.test.ts +3 -3
  380. package/src/routes/local-inference-compat-routes.ts +23 -56
  381. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  382. package/src/routes/native-pcm-turn-route.ts +121 -0
  383. package/src/routes/transcripts-routes.test.ts +51 -0
  384. package/src/routes/transcripts-routes.ts +35 -3
  385. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  386. package/src/runtime/ensure-local-inference-handler.test.ts +203 -5
  387. package/src/runtime/ensure-local-inference-handler.ts +203 -11
  388. package/src/runtime/index.ts +4 -1
  389. package/src/runtime/mobile-local-inference-gate.test.ts +85 -2
  390. package/src/runtime/mobile-local-inference-gate.ts +60 -5
  391. package/src/runtime/voice-entity-binding.transcript.test.ts +29 -0
  392. package/src/runtime/voice-entity-binding.ts +46 -6
  393. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  394. package/src/services/README.md +2 -2
  395. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  396. package/src/services/active-model-context-fit.test.ts +125 -0
  397. package/src/services/active-model.ts +211 -8
  398. package/src/services/asr-provenance.ts +68 -0
  399. package/src/services/assignment-validation.test.ts +118 -0
  400. package/src/services/assignments.test.ts +26 -0
  401. package/src/services/assignments.ts +52 -4
  402. package/src/services/backend.test.ts +84 -0
  403. package/src/services/backend.ts +198 -19
  404. package/src/services/bionic-host-loader.test.ts +94 -1
  405. package/src/services/bionic-host-loader.ts +72 -0
  406. package/src/services/cache-bridge.test.ts +7 -7
  407. package/src/services/catalog.test.ts +32 -11
  408. package/src/services/catalog.ts +6 -0
  409. package/src/services/cloud-fallback.ts +1 -1
  410. package/src/services/context-fit.test.ts +121 -0
  411. package/src/services/context-fit.ts +113 -0
  412. package/src/services/desktop-fused-ffi-backend-runtime.ts +99 -7
  413. package/src/services/device-tier.test.ts +89 -2
  414. package/src/services/device-tier.ts +103 -11
  415. package/src/services/downloader.test.ts +199 -58
  416. package/src/services/downloader.ts +141 -27
  417. package/src/services/engine-direct-bundle.test.ts +38 -6
  418. package/src/services/engine.ts +291 -104
  419. package/src/services/ensure-local-artifacts.ts +1 -1
  420. package/src/services/ffi-llm-streaming-abi.ts +6 -3
  421. package/src/services/ffi-streaming-backend.ts +44 -8
  422. package/src/services/ffi-streaming-runner.test.ts +163 -3
  423. package/src/services/ffi-streaming-runner.ts +54 -1
  424. package/src/services/ffi-unload-ordering.test.ts +5 -1
  425. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  426. package/src/services/hardware.test.ts +7 -2
  427. package/src/services/hardware.ts +28 -0
  428. package/src/services/imagegen/backend-selector.test.ts +190 -0
  429. package/src/services/imagegen/sd-cpp.ts +6 -9
  430. package/src/services/index.ts +18 -0
  431. package/src/services/ios-llama-streaming.ts +1 -1
  432. package/src/services/kv-spill.ts +6 -5
  433. package/src/services/lib-target.test.ts +145 -0
  434. package/src/services/lib-target.ts +102 -0
  435. package/src/services/live-signals.test.ts +132 -0
  436. package/src/services/live-signals.ts +177 -0
  437. package/src/services/llama-server-metrics.test.ts +168 -0
  438. package/src/services/manifest/eliza-1.manifest.v1.json +84 -2
  439. package/src/services/manifest/index.ts +6 -0
  440. package/src/services/manifest/manifest.test.ts +156 -54
  441. package/src/services/manifest/schema.ts +160 -52
  442. package/src/services/manifest/types.ts +6 -0
  443. package/src/services/manifest/validator.ts +91 -25
  444. package/src/services/memory-arbiter.test.ts +139 -0
  445. package/src/services/memory-arbiter.ts +81 -15
  446. package/src/services/memory-benchmark.test.ts +91 -0
  447. package/src/services/memory-benchmark.ts +354 -0
  448. package/src/services/memory-monitor.test.ts +24 -0
  449. package/src/services/memory-monitor.ts +12 -0
  450. package/src/services/mtp-doctor.ts +10 -2
  451. package/src/services/network-policy.ts +5 -5
  452. package/src/services/ram-budget-cache.test.ts +2 -1
  453. package/src/services/ram-budget.ts +0 -0
  454. package/src/services/recommendation.test.ts +216 -0
  455. package/src/services/registry.ts +25 -19
  456. package/src/services/required-kernels-gate.test.ts +64 -0
  457. package/src/services/router-handler.ts +43 -24
  458. package/src/services/routing-policy.test.ts +211 -23
  459. package/src/services/routing-policy.ts +92 -22
  460. package/src/services/service.test.ts +3 -3
  461. package/src/services/service.ts +22 -7
  462. package/src/services/transcription-priority.test.ts +2 -2
  463. package/src/services/types.ts +4 -0
  464. package/src/services/verify-on-device.test.ts +2 -2
  465. package/src/services/vision/hash.ts +1 -1
  466. package/src/services/vision/index.ts +2 -2
  467. package/src/services/vision/llama-server.ts +1 -1
  468. package/src/services/vision/types.ts +13 -4
  469. package/src/services/vision-embedding-cache.ts +1 -1
  470. package/src/services/voice/VOICE_WORKBENCH.md +71 -26
  471. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  472. package/src/services/voice/__test-helpers__/synthetic-speech.ts +72 -2
  473. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +29 -29
  474. package/src/services/voice/__tests__/streaming-asr.test.ts +1 -1
  475. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  476. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  477. package/src/services/voice/asr-timed.real.test.ts +6 -8
  478. package/src/services/voice/audio-frame-consumer.test.ts +327 -1
  479. package/src/services/voice/audio-frame-consumer.ts +165 -5
  480. package/src/services/voice/barge-in.ts +2 -3
  481. package/src/services/voice/corpus-augment.test.ts +276 -0
  482. package/src/services/voice/corpus-augment.ts +451 -0
  483. package/src/services/voice/corpus-generator.test.ts +201 -0
  484. package/src/services/voice/corpus-generator.ts +413 -0
  485. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  486. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  487. package/src/services/voice/diarization-error-rate.ts +249 -0
  488. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  489. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  490. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  491. package/src/services/voice/e2e-harness.test.ts +2 -2
  492. package/src/services/voice/e2e-harness.ts +175 -16
  493. package/src/services/voice/echo-delay.test.ts +118 -0
  494. package/src/services/voice/echo-delay.ts +135 -0
  495. package/src/services/voice/echo-metrics.test.ts +17 -0
  496. package/src/services/voice/echo-metrics.ts +20 -0
  497. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  498. package/src/services/voice/echo-reference-buffer.ts +165 -0
  499. package/src/services/voice/eliza1-eot-scorer.ts +22 -22
  500. package/src/services/voice/embedding.ts +2 -3
  501. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  502. package/src/services/voice/engine-bridge.ts +151 -110
  503. package/src/services/voice/eot-classifier-ggml.ts +42 -39
  504. package/src/services/voice/eot-classifier.test.ts +98 -0
  505. package/src/services/voice/eot-classifier.ts +11 -122
  506. package/src/services/voice/errors.ts +2 -0
  507. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  508. package/src/services/voice/expressive-tags.test.ts +102 -0
  509. package/src/services/voice/expressive-tags.ts +8 -8
  510. package/src/services/voice/ffi-bindings.test.ts +10 -3
  511. package/src/services/voice/ffi-bindings.ts +177 -15
  512. package/src/services/voice/fused-eot-scorer.ts +17 -13
  513. package/src/services/voice/index.ts +33 -12
  514. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +112 -1
  515. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +88 -3
  516. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +37 -201
  517. package/src/services/voice/kokoro/kokoro-backend.ts +16 -0
  518. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +1 -1
  519. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +3 -3
  520. package/src/services/voice/kokoro/pick-runtime.ts +1 -1
  521. package/src/services/voice/kokoro/runtime-selection.ts +28 -201
  522. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  523. package/src/services/voice/live-diarization-session.ts +335 -2
  524. package/src/services/voice/metric-math.test.ts +61 -0
  525. package/src/services/voice/metric-math.ts +25 -0
  526. package/src/services/voice/mic-source.ts +1 -1
  527. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  528. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  529. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  530. package/src/services/voice/partial-stabilizer.ts +1 -1
  531. package/src/services/voice/pipeline.ts +3 -4
  532. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  533. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  534. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  535. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  536. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  537. package/src/services/voice/self-voice-imprint.ts +102 -0
  538. package/src/services/voice/shared-resources.ts +23 -0
  539. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  540. package/src/services/voice/speaker/attribution-pipeline.ts +85 -22
  541. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  542. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  543. package/src/services/voice/transcriber.ts +4 -4
  544. package/src/services/voice/transcript-service.test.ts +58 -0
  545. package/src/services/voice/transcript-service.ts +64 -0
  546. package/src/services/voice/transcript-store.test.ts +36 -0
  547. package/src/services/voice/transcript-store.ts +32 -0
  548. package/src/services/voice/types.ts +7 -7
  549. package/src/services/voice/vad.test.ts +33 -15
  550. package/src/services/voice/vad.ts +25 -20
  551. package/src/services/voice/voice-budget.test.ts +0 -3
  552. package/src/services/voice/voice-budget.ts +6 -6
  553. package/src/services/voice/voice-duet.test.ts +1 -1
  554. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  555. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  556. package/src/services/voice/voice-preload-predictor.ts +113 -0
  557. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  558. package/src/services/voice/voice-preset-format.test.ts +75 -0
  559. package/src/services/voice/voice-preset-format.ts +17 -4
  560. package/src/services/voice/voice-scenario.test.ts +159 -0
  561. package/src/services/voice/voice-scenario.ts +133 -7
  562. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  563. package/src/services/voice/voice-workbench-report.ts +58 -17
  564. package/src/services/voice/wake-word-ggml.ts +12 -13
  565. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  566. package/src/services/voice/wav-codec.test.ts +32 -0
  567. package/src/services/voice/wav-codec.ts +101 -0
  568. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  569. package/src/services/voice/workbench-entrypoint.ts +88 -0
  570. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  571. package/src/services/voice/workbench-headless-runner.ts +396 -0
  572. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  573. package/src/services/voice/workbench-logic-services.ts +184 -0
  574. package/src/services/voice/workbench-real-services.ts +629 -0
  575. package/src/services/voice/workbench-scenarios.ts +407 -0
  576. package/src/services/voice-prewarm.ts +1 -1
  577. package/src/voice-workbench.ts +71 -0
  578. package/src/actions/generate-media.d.ts.map +0 -1
  579. package/src/actions/identify-speaker.d.ts.map +0 -1
  580. package/src/actions/transcription-control.d.ts.map +0 -1
  581. package/src/index.d.ts.map +0 -1
  582. package/src/local-inference-routes.d.ts.map +0 -1
  583. package/src/provider.d.ts.map +0 -1
  584. package/src/routes/compat-helpers.d.ts.map +0 -1
  585. package/src/routes/family-member-route.d.ts.map +0 -1
  586. package/src/routes/index.d.ts.map +0 -1
  587. package/src/routes/live-diarization-route.d.ts.map +0 -1
  588. package/src/routes/local-inference-asr-route.d.ts.map +0 -1
  589. package/src/routes/local-inference-asr-transcribe.d.ts.map +0 -1
  590. package/src/routes/local-inference-compat-routes.d.ts.map +0 -1
  591. package/src/routes/local-inference-tts-route.d.ts.map +0 -1
  592. package/src/routes/transcript-audio-store.d.ts.map +0 -1
  593. package/src/routes/transcripts-routes.d.ts.map +0 -1
  594. package/src/routes/voice-first-run-routes.d.ts.map +0 -1
  595. package/src/routes/voice-models-routes.d.ts.map +0 -1
  596. package/src/routes/voice-profile-plugin-routes.d.ts.map +0 -1
  597. package/src/routes/voice-profiles-management-routes.d.ts.map +0 -1
  598. package/src/routes/voice-speaker-profile-routes.d.ts.map +0 -1
  599. package/src/runtime/embedding-manager-support.d.ts.map +0 -1
  600. package/src/runtime/embedding-presets.d.ts.map +0 -1
  601. package/src/runtime/embedding-warmup-policy.d.ts.map +0 -1
  602. package/src/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  603. package/src/runtime/index.d.ts.map +0 -1
  604. package/src/runtime/mobile-local-inference-gate.d.ts +0 -31
  605. package/src/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  606. package/src/runtime/voice-entity-binding.d.ts.map +0 -1
  607. package/src/services/active-model.d.ts.map +0 -1
  608. package/src/services/assignments.d.ts.map +0 -1
  609. package/src/services/backend.d.ts.map +0 -1
  610. package/src/services/bionic-host-loader.d.ts.map +0 -1
  611. package/src/services/bundled-models.d.ts.map +0 -1
  612. package/src/services/cache-bridge.d.ts.map +0 -1
  613. package/src/services/catalog.d.ts +0 -10
  614. package/src/services/catalog.d.ts.map +0 -1
  615. package/src/services/checkpoint-client.d.ts.map +0 -1
  616. package/src/services/cloud-fallback.d.ts.map +0 -1
  617. package/src/services/conversation-registry.d.ts.map +0 -1
  618. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +0 -1
  619. package/src/services/device-bridge.d.ts.map +0 -1
  620. package/src/services/device-resource-metrics.d.ts.map +0 -1
  621. package/src/services/device-tier.d.ts.map +0 -1
  622. package/src/services/downloader.d.ts.map +0 -1
  623. package/src/services/engine.d.ts.map +0 -1
  624. package/src/services/external-scanner.d.ts.map +0 -1
  625. package/src/services/ffi-streaming-backend.d.ts.map +0 -1
  626. package/src/services/ffi-streaming-runner.d.ts.map +0 -1
  627. package/src/services/gpu-detect.d.ts.map +0 -1
  628. package/src/services/handler-registry.d.ts.map +0 -1
  629. package/src/services/hardware.d.ts.map +0 -1
  630. package/src/services/hf-search.d.ts +0 -26
  631. package/src/services/hf-search.d.ts.map +0 -1
  632. package/src/services/hf-search.test.ts +0 -69
  633. package/src/services/hf-search.ts +0 -420
  634. package/src/services/image-description-runtime.d.ts.map +0 -1
  635. package/src/services/imagegen/aosp-unavailable.d.ts.map +0 -1
  636. package/src/services/imagegen/backend-selector.d.ts.map +0 -1
  637. package/src/services/imagegen/coreml-unavailable.d.ts.map +0 -1
  638. package/src/services/imagegen/errors.d.ts.map +0 -1
  639. package/src/services/imagegen/index.d.ts.map +0 -1
  640. package/src/services/imagegen/mflux.d.ts.map +0 -1
  641. package/src/services/imagegen/sd-cpp.d.ts.map +0 -1
  642. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +0 -1
  643. package/src/services/imagegen/types.d.ts.map +0 -1
  644. package/src/services/index.d.ts.map +0 -1
  645. package/src/services/inference-capabilities.d.ts.map +0 -1
  646. package/src/services/inference-telemetry.d.ts.map +0 -1
  647. package/src/services/kv-spill.d.ts.map +0 -1
  648. package/src/services/latency-trace.d.ts.map +0 -1
  649. package/src/services/llm-streaming-binding.d.ts.map +0 -1
  650. package/src/services/load-args.d.ts.map +0 -1
  651. package/src/services/manifest/index.d.ts +0 -4
  652. package/src/services/manifest/index.d.ts.map +0 -1
  653. package/src/services/manifest/schema.d.ts.map +0 -1
  654. package/src/services/manifest/types.d.ts.map +0 -1
  655. package/src/services/manifest/validator.d.ts.map +0 -1
  656. package/src/services/memory-arbiter.d.ts.map +0 -1
  657. package/src/services/memory-monitor.d.ts.map +0 -1
  658. package/src/services/memory-pressure.d.ts.map +0 -1
  659. package/src/services/mtp-doctor.d.ts.map +0 -1
  660. package/src/services/network-policy.d.ts.map +0 -1
  661. package/src/services/paths.d.ts.map +0 -1
  662. package/src/services/planner-skeleton.d.ts.map +0 -1
  663. package/src/services/providers.d.ts.map +0 -1
  664. package/src/services/ram-budget.d.ts.map +0 -1
  665. package/src/services/readiness.d.ts.map +0 -1
  666. package/src/services/recommendation.d.ts.map +0 -1
  667. package/src/services/registry.d.ts.map +0 -1
  668. package/src/services/router-handler.d.ts.map +0 -1
  669. package/src/services/routing-policy.d.ts.map +0 -1
  670. package/src/services/routing-preferences.d.ts.map +0 -1
  671. package/src/services/runtime-target.d.ts.map +0 -1
  672. package/src/services/service.d.ts.map +0 -1
  673. package/src/services/session-pool.d.ts.map +0 -1
  674. package/src/services/structured-output/deterministic-repair.d.ts.map +0 -1
  675. package/src/services/structured-output.d.ts.map +0 -1
  676. package/src/services/system-memory.d.ts.map +0 -1
  677. package/src/services/types.d.ts.map +0 -1
  678. package/src/services/verify-on-device.d.ts.map +0 -1
  679. package/src/services/verify.d.ts.map +0 -1
  680. package/src/services/vision/aosp-unavailable.d.ts.map +0 -1
  681. package/src/services/vision/capacitor-llama.d.ts.map +0 -1
  682. package/src/services/vision/cloud-fallback.d.ts.map +0 -1
  683. package/src/services/vision/hash.d.ts.map +0 -1
  684. package/src/services/vision/index.d.ts.map +0 -1
  685. package/src/services/vision/llama-server.d.ts.map +0 -1
  686. package/src/services/vision/types.d.ts.map +0 -1
  687. package/src/services/vision/vast-fallback.d.ts.map +0 -1
  688. package/src/services/vision-embedding-cache.d.ts.map +0 -1
  689. package/src/services/voice/audio-frame-consumer.d.ts.map +0 -1
  690. package/src/services/voice/barge-in.d.ts.map +0 -1
  691. package/src/services/voice/cancellation-coordinator.d.ts.map +0 -1
  692. package/src/services/voice/checkpoint-manager.d.ts.map +0 -1
  693. package/src/services/voice/eager-context-builder.d.ts.map +0 -1
  694. package/src/services/voice/eliza1-eot-scorer.d.ts.map +0 -1
  695. package/src/services/voice/embedding.d.ts.map +0 -1
  696. package/src/services/voice/emotion-attribution.d.ts.map +0 -1
  697. package/src/services/voice/engine-bridge.d.ts.map +0 -1
  698. package/src/services/voice/eot-classifier-ggml.d.ts.map +0 -1
  699. package/src/services/voice/eot-classifier.d.ts.map +0 -1
  700. package/src/services/voice/errors.d.ts.map +0 -1
  701. package/src/services/voice/expressive-tags.d.ts.map +0 -1
  702. package/src/services/voice/ffi-bindings.d.ts.map +0 -1
  703. package/src/services/voice/first-line-cache.d.ts.map +0 -1
  704. package/src/services/voice/fused-eot-scorer.d.ts.map +0 -1
  705. package/src/services/voice/index.d.ts.map +0 -1
  706. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +0 -1
  707. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +0 -1
  708. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +0 -1
  709. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +0 -1
  710. package/src/services/voice/kokoro/phonemizer.d.ts.map +0 -1
  711. package/src/services/voice/kokoro/pick-runtime.d.ts.map +0 -1
  712. package/src/services/voice/kokoro/runtime-selection.d.ts +0 -92
  713. package/src/services/voice/kokoro/runtime-selection.d.ts.map +0 -1
  714. package/src/services/voice/kokoro/types.d.ts.map +0 -1
  715. package/src/services/voice/kokoro/voice-presets.d.ts.map +0 -1
  716. package/src/services/voice/kokoro/voices.d.ts.map +0 -1
  717. package/src/services/voice/lifecycle.d.ts.map +0 -1
  718. package/src/services/voice/live-diarization-session.d.ts +0 -96
  719. package/src/services/voice/live-diarization-session.d.ts.map +0 -1
  720. package/src/services/voice/mic-source.d.ts.map +0 -1
  721. package/src/services/voice/optimistic-policy.d.ts.map +0 -1
  722. package/src/services/voice/partial-stabilizer.d.ts.map +0 -1
  723. package/src/services/voice/phoneme-tokenizer.d.ts.map +0 -1
  724. package/src/services/voice/phrase-cache.d.ts.map +0 -1
  725. package/src/services/voice/phrase-chunker.d.ts.map +0 -1
  726. package/src/services/voice/pipeline-impls.d.ts.map +0 -1
  727. package/src/services/voice/pipeline.d.ts.map +0 -1
  728. package/src/services/voice/prefill-client.d.ts.map +0 -1
  729. package/src/services/voice/prefix-preserving-queue.d.ts.map +0 -1
  730. package/src/services/voice/profile-store.d.ts.map +0 -1
  731. package/src/services/voice/ring-buffer.d.ts.map +0 -1
  732. package/src/services/voice/rollback-queue.d.ts.map +0 -1
  733. package/src/services/voice/samantha-preset-placeholder.d.ts.map +0 -1
  734. package/src/services/voice/samantha-preset-regenerator.d.ts.map +0 -1
  735. package/src/services/voice/scheduler.d.ts.map +0 -1
  736. package/src/services/voice/shared-resources.d.ts.map +0 -1
  737. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +0 -1
  738. package/src/services/voice/speaker/diarizer-fused.d.ts.map +0 -1
  739. package/src/services/voice/speaker/diarizer.d.ts.map +0 -1
  740. package/src/services/voice/speaker/encoder-fused.d.ts.map +0 -1
  741. package/src/services/voice/speaker/encoder-ggml.d.ts.map +0 -1
  742. package/src/services/voice/speaker/encoder.d.ts.map +0 -1
  743. package/src/services/voice/speaker-imprint.d.ts.map +0 -1
  744. package/src/services/voice/speaker-preset-cache.d.ts.map +0 -1
  745. package/src/services/voice/system-audio-sink.d.ts.map +0 -1
  746. package/src/services/voice/transcriber.d.ts.map +0 -1
  747. package/src/services/voice/transcript-knowledge.d.ts.map +0 -1
  748. package/src/services/voice/transcript-service.d.ts.map +0 -1
  749. package/src/services/voice/transcript-store.d.ts.map +0 -1
  750. package/src/services/voice/turn-controller.d.ts.map +0 -1
  751. package/src/services/voice/types.d.ts.map +0 -1
  752. package/src/services/voice/vad.d.ts.map +0 -1
  753. package/src/services/voice/voice-budget.d.ts.map +0 -1
  754. package/src/services/voice/voice-emotion-classifier.d.ts.map +0 -1
  755. package/src/services/voice/voice-preset-format.d.ts.map +0 -1
  756. package/src/services/voice/voice-profile-artifact.d.ts.map +0 -1
  757. package/src/services/voice/voice-profile-routes.d.ts.map +0 -1
  758. package/src/services/voice/voice-settings.d.ts +0 -82
  759. package/src/services/voice/voice-settings.d.ts.map +0 -1
  760. package/src/services/voice/voice-settings.ts +0 -172
  761. package/src/services/voice/voice-state-machine.d.ts.map +0 -1
  762. package/src/services/voice/wake-word-ggml.d.ts.map +0 -1
  763. package/src/services/voice/wake-word.d.ts.map +0 -1
  764. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +0 -1
  765. package/src/services/voice-model-updater.d.ts.map +0 -1
  766. package/src/services/voice-prewarm.d.ts.map +0 -1
  767. /package/{src → dist}/actions/generate-media.d.ts +0 -0
  768. /package/{src → dist}/actions/identify-speaker.d.ts +0 -0
  769. /package/{src → dist}/actions/transcription-control.d.ts +0 -0
  770. /package/{src → dist}/index.d.ts +0 -0
  771. /package/{src → dist}/provider.d.ts +0 -0
  772. /package/{src → dist}/routes/family-member-route.d.ts +0 -0
  773. /package/{src → dist}/routes/local-inference-asr-route.d.ts +0 -0
  774. /package/{src → dist}/routes/local-inference-asr-transcribe.d.ts +0 -0
  775. /package/{src → dist}/routes/local-inference-compat-routes.d.ts +0 -0
  776. /package/{src → dist}/routes/local-inference-tts-route.d.ts +0 -0
  777. /package/{src → dist}/routes/transcript-audio-store.d.ts +0 -0
  778. /package/{src → dist}/routes/voice-first-run-routes.d.ts +0 -0
  779. /package/{src → dist}/routes/voice-models-routes.d.ts +0 -0
  780. /package/{src → dist}/routes/voice-profile-plugin-routes.d.ts +0 -0
  781. /package/{src → dist}/routes/voice-profiles-management-routes.d.ts +0 -0
  782. /package/{src → dist}/routes/voice-speaker-profile-routes.d.ts +0 -0
  783. /package/{src → dist}/runtime/embedding-manager-support.d.ts +0 -0
  784. /package/{src → dist}/runtime/embedding-presets.d.ts +0 -0
  785. /package/{src → dist}/runtime/embedding-warmup-policy.d.ts +0 -0
  786. /package/{src → dist}/services/bundled-models.d.ts +0 -0
  787. /package/{src → dist}/services/cache-bridge.d.ts +0 -0
  788. /package/{src → dist}/services/checkpoint-client.d.ts +0 -0
  789. /package/{src → dist}/services/cloud-fallback.d.ts +0 -0
  790. /package/{src → dist}/services/conversation-registry.d.ts +0 -0
  791. /package/{src → dist}/services/device-bridge.d.ts +0 -0
  792. /package/{src → dist}/services/device-resource-metrics.d.ts +0 -0
  793. /package/{src → dist}/services/external-scanner.d.ts +0 -0
  794. /package/{src → dist}/services/gpu-detect.d.ts +0 -0
  795. /package/{src → dist}/services/handler-registry.d.ts +0 -0
  796. /package/{src → dist}/services/hardware.d.ts +0 -0
  797. /package/{src → dist}/services/image-description-runtime.d.ts +0 -0
  798. /package/{src → dist}/services/imagegen/aosp-unavailable.d.ts +0 -0
  799. /package/{src → dist}/services/imagegen/backend-selector.d.ts +0 -0
  800. /package/{src → dist}/services/imagegen/coreml-unavailable.d.ts +0 -0
  801. /package/{src → dist}/services/imagegen/errors.d.ts +0 -0
  802. /package/{src → dist}/services/imagegen/index.d.ts +0 -0
  803. /package/{src → dist}/services/imagegen/mflux.d.ts +0 -0
  804. /package/{src → dist}/services/imagegen/tensorrt-unavailable.d.ts +0 -0
  805. /package/{src → dist}/services/imagegen/types.d.ts +0 -0
  806. /package/{src → dist}/services/inference-capabilities.d.ts +0 -0
  807. /package/{src → dist}/services/inference-telemetry.d.ts +0 -0
  808. /package/{src → dist}/services/kv-spill.d.ts +0 -0
  809. /package/{src → dist}/services/latency-trace.d.ts +0 -0
  810. /package/{src → dist}/services/llm-streaming-binding.d.ts +0 -0
  811. /package/{src → dist}/services/load-args.d.ts +0 -0
  812. /package/{src → dist}/services/manifest/validator.d.ts +0 -0
  813. /package/{src → dist}/services/memory-pressure.d.ts +0 -0
  814. /package/{src → dist}/services/mtp-doctor.d.ts +0 -0
  815. /package/{src → dist}/services/network-policy.d.ts +0 -0
  816. /package/{src → dist}/services/paths.d.ts +0 -0
  817. /package/{src → dist}/services/planner-skeleton.d.ts +0 -0
  818. /package/{src → dist}/services/providers.d.ts +0 -0
  819. /package/{src → dist}/services/ram-budget.d.ts +0 -0
  820. /package/{src → dist}/services/readiness.d.ts +0 -0
  821. /package/{src → dist}/services/recommendation.d.ts +0 -0
  822. /package/{src → dist}/services/routing-preferences.d.ts +0 -0
  823. /package/{src → dist}/services/runtime-target.d.ts +0 -0
  824. /package/{src → dist}/services/session-pool.d.ts +0 -0
  825. /package/{src → dist}/services/structured-output/deterministic-repair.d.ts +0 -0
  826. /package/{src → dist}/services/structured-output.d.ts +0 -0
  827. /package/{src → dist}/services/system-memory.d.ts +0 -0
  828. /package/{src → dist}/services/verify-on-device.d.ts +0 -0
  829. /package/{src → dist}/services/verify.d.ts +0 -0
  830. /package/{src → dist}/services/vision/aosp-unavailable.d.ts +0 -0
  831. /package/{src → dist}/services/vision/capacitor-llama.d.ts +0 -0
  832. /package/{src → dist}/services/vision/cloud-fallback.d.ts +0 -0
  833. /package/{src → dist}/services/vision/hash.d.ts +0 -0
  834. /package/{src → dist}/services/vision/llama-server.d.ts +0 -0
  835. /package/{src → dist}/services/vision/vast-fallback.d.ts +0 -0
  836. /package/{src → dist}/services/voice/barge-in.d.ts +0 -0
  837. /package/{src → dist}/services/voice/cancellation-coordinator.d.ts +0 -0
  838. /package/{src → dist}/services/voice/checkpoint-manager.d.ts +0 -0
  839. /package/{src → dist}/services/voice/eager-context-builder.d.ts +0 -0
  840. /package/{src → dist}/services/voice/emotion-attribution.d.ts +0 -0
  841. /package/{src → dist}/services/voice/first-line-cache.d.ts +0 -0
  842. /package/{src → dist}/services/voice/kokoro/kokoro-runtime.d.ts +0 -0
  843. /package/{src → dist}/services/voice/kokoro/phonemizer.d.ts +0 -0
  844. /package/{src → dist}/services/voice/kokoro/types.d.ts +0 -0
  845. /package/{src → dist}/services/voice/kokoro/voice-presets.d.ts +0 -0
  846. /package/{src → dist}/services/voice/kokoro/voices.d.ts +0 -0
  847. /package/{src → dist}/services/voice/lifecycle.d.ts +0 -0
  848. /package/{src → dist}/services/voice/optimistic-policy.d.ts +0 -0
  849. /package/{src → dist}/services/voice/phoneme-tokenizer.d.ts +0 -0
  850. /package/{src → dist}/services/voice/phrase-cache.d.ts +0 -0
  851. /package/{src → dist}/services/voice/phrase-chunker.d.ts +0 -0
  852. /package/{src → dist}/services/voice/pipeline-impls.d.ts +0 -0
  853. /package/{src → dist}/services/voice/pipeline.d.ts +0 -0
  854. /package/{src → dist}/services/voice/prefill-client.d.ts +0 -0
  855. /package/{src → dist}/services/voice/prefix-preserving-queue.d.ts +0 -0
  856. /package/{src → dist}/services/voice/profile-store.d.ts +0 -0
  857. /package/{src → dist}/services/voice/ring-buffer.d.ts +0 -0
  858. /package/{src → dist}/services/voice/rollback-queue.d.ts +0 -0
  859. /package/{src → dist}/services/voice/samantha-preset-placeholder.d.ts +0 -0
  860. /package/{src → dist}/services/voice/samantha-preset-regenerator.d.ts +0 -0
  861. /package/{src → dist}/services/voice/scheduler.d.ts +0 -0
  862. /package/{src → dist}/services/voice/speaker/attribution-pipeline.d.ts +0 -0
  863. /package/{src → dist}/services/voice/speaker/diarizer-fused.d.ts +0 -0
  864. /package/{src → dist}/services/voice/speaker/diarizer.d.ts +0 -0
  865. /package/{src → dist}/services/voice/speaker/encoder-fused.d.ts +0 -0
  866. /package/{src → dist}/services/voice/speaker/encoder-ggml.d.ts +0 -0
  867. /package/{src → dist}/services/voice/speaker/encoder.d.ts +0 -0
  868. /package/{src → dist}/services/voice/speaker-imprint.d.ts +0 -0
  869. /package/{src → dist}/services/voice/speaker-preset-cache.d.ts +0 -0
  870. /package/{src → dist}/services/voice/system-audio-sink.d.ts +0 -0
  871. /package/{src → dist}/services/voice/transcript-knowledge.d.ts +0 -0
  872. /package/{src → dist}/services/voice/turn-controller.d.ts +0 -0
  873. /package/{src → dist}/services/voice/voice-budget.d.ts +0 -0
  874. /package/{src → dist}/services/voice/voice-emotion-classifier.d.ts +0 -0
  875. /package/{src → dist}/services/voice/voice-profile-artifact.d.ts +0 -0
  876. /package/{src → dist}/services/voice/voice-profile-routes.d.ts +0 -0
  877. /package/{src → dist}/services/voice/voice-state-machine.d.ts +0 -0
  878. /package/{src → dist}/services/voice/wake-word.d.ts +0 -0
  879. /package/{src → dist}/services/voice/wrap-with-first-line-cache.d.ts +0 -0
  880. /package/{src → dist}/services/voice-model-updater.d.ts +0 -0
  881. /package/{src → dist}/services/voice-prewarm.d.ts +0 -0
@@ -0,0 +1,84 @@
1
+ // Coverage for the pure backend-routing decision (#8848). decideBackend is the
2
+ // optimization-kernel enforcement point: a catalog model declares the fused
3
+ // kernels it requires (turbo/qjl/polarquant/…), and the dispatcher computes
4
+ // which of them the installed binary's CAPABILITIES.json does NOT satisfy so the
5
+ // caller can tell the operator to rebuild instead of letting the model silently
6
+ // run de-optimized. These branches gate that contract, so they are pinned here.
7
+
8
+ import type { CatalogModel } from "@elizaos/shared";
9
+ import { describe, expect, it } from "vitest";
10
+ import { decideBackend } from "./backend";
11
+
12
+ /** Minimal CatalogModel carrying only the requiresKernel field decideBackend reads. */
13
+ function catalog(requiresKernel: string[]): CatalogModel {
14
+ return {
15
+ runtime: { optimizations: { requiresKernel } },
16
+ } as unknown as CatalogModel;
17
+ }
18
+
19
+ describe("decideBackend", () => {
20
+ it("routes to llama-cpp with reason=env-override when forced, regardless of kernels", () => {
21
+ const d = decideBackend({
22
+ override: "llama-cpp",
23
+ catalog: catalog(["turbo3"]),
24
+ llamaCppAvailable: true,
25
+ });
26
+ expect(d.backend).toBe("llama-cpp");
27
+ expect(d.reason).toBe("env-override");
28
+ expect(d.kernels).toEqual(["turbo3"]);
29
+ });
30
+
31
+ it("uses reason=default for a model with no required kernels", () => {
32
+ const d = decideBackend({
33
+ override: "auto",
34
+ catalog: undefined,
35
+ llamaCppAvailable: true,
36
+ });
37
+ expect(d.reason).toBe("default");
38
+ expect(d.kernels).toEqual([]);
39
+ expect(d.unsatisfiedKernels).toBeUndefined();
40
+ });
41
+
42
+ it("uses reason=kernel-required when the catalog declares required kernels", () => {
43
+ const d = decideBackend({
44
+ override: "auto",
45
+ catalog: catalog(["turbo3", "qjl_full"]),
46
+ llamaCppAvailable: true,
47
+ });
48
+ expect(d.reason).toBe("kernel-required");
49
+ expect(d.kernels).toEqual(["turbo3", "qjl_full"]);
50
+ // No CAPABILITIES probe → trust the declaration, defer to load attempt.
51
+ expect(d.unsatisfiedKernels).toBeUndefined();
52
+ });
53
+
54
+ it("flags the required kernels the installed binary does not satisfy", () => {
55
+ const d = decideBackend({
56
+ override: "auto",
57
+ catalog: catalog(["turbo3", "qjl_full"]),
58
+ llamaCppAvailable: true,
59
+ binaryKernels: { turbo3: true, qjl_full: false },
60
+ });
61
+ // turbo3 satisfied, qjl_full not → operator must rebuild for qjl_full.
62
+ expect(d.unsatisfiedKernels).toEqual(["qjl_full"]);
63
+ });
64
+
65
+ it("reports an empty unsatisfied set when every required kernel is present", () => {
66
+ const d = decideBackend({
67
+ override: "auto",
68
+ catalog: catalog(["turbo3"]),
69
+ llamaCppAvailable: true,
70
+ binaryKernels: { turbo3: true },
71
+ });
72
+ expect(d.unsatisfiedKernels).toEqual([]);
73
+ });
74
+
75
+ it("treats a kernel missing from the probe as unsatisfied (not silently ok)", () => {
76
+ const d = decideBackend({
77
+ override: "auto",
78
+ catalog: catalog(["turbo3", "polarquant"]),
79
+ llamaCppAvailable: true,
80
+ binaryKernels: { turbo3: true }, // polarquant absent from the map
81
+ });
82
+ expect(d.unsatisfiedKernels).toEqual(["polarquant"]);
83
+ });
84
+ });
@@ -1,21 +1,33 @@
1
1
  /**
2
2
  * Local-inference backend interface and dispatcher.
3
3
  *
4
- * One shipping implementation lives behind this interface:
4
+ * Both shipping backends are served by the SAME in-process FFI
5
+ * `libelizainference` library behind the SAME streaming symbols — the
6
+ * difference is which in-process runtime the FFI's `llm_backend_select` drives:
5
7
  *
6
- * - `llama-cpp` → the optimized in-process FFI llama.cpp path.
8
+ * - `llama-cpp` → the optimized in-process FFI llama.cpp path (the default).
7
9
  * MTP, n-gram drafter, lookahead, `-ot` MoE offload, TurboQuant KV
8
- * cache, mlock/no-mmap/mmproj, etc. all live here.
10
+ * cache, mlock/no-mmap/mmproj, etc. all live here. Serves the `.gguf`.
11
+ * - `litert-lm` → the in-process LiteRT-LM backend (Android NPU / GPU
12
+ * delegate, gated `-DELIZA_ENABLE_LITERT`). Serves a `.litertlm` text
13
+ * artifact staged under `<bundleRoot>/text/`. The dispatcher passes
14
+ * `ELIZA_LLM_BACKEND=litert-lm` through the load; the C-side
15
+ * `llm_backend_select` reads it (and probes `text/*.litertlm`) and routes
16
+ * to the LiteRT factory. See `tools/omnivoice/src/llm-backend.h`.
9
17
  *
10
18
  * The dispatcher decides which one to use per-load based on:
11
19
  *
12
- * 1. Catalog `runtime.optimizations.requiresKernel` — if any specialised
20
+ * 1. `ELIZA_INFERENCE_BACKEND` env override `llama-cpp` / `litert-lm` /
21
+ * `auto`. A `litert-lm` force is honoured only when the build/platform
22
+ * supports LiteRT and the bundle ships a `.litertlm` (else hard error).
23
+ * 2. A `.litertlm` text artifact in the bundle AND LiteRT support on this
24
+ * build/platform → `litert-lm`. GGUF stays the default whenever the
25
+ * LiteRT artifact or the build support is absent.
26
+ * 3. Catalog `runtime.optimizations.requiresKernel` — if any specialised
13
27
  * llama.cpp kernel is required (e.g. `turbo3`), the
14
- * dispatcher MUST pick `llama-cpp`. Legacy bindings cannot
28
+ * dispatcher picks `llama-cpp`. Legacy bindings cannot
15
29
  * provide these kernels at all.
16
- * 2. Catalog `runtime.preferredBackend` — retained for metadata
17
- * compatibility, but generation still routes through `llama-cpp`.
18
- * 3. Default: optimized llama.cpp FFI.
30
+ * 4. Default: optimized llama.cpp FFI.
19
31
  *
20
32
  * The dispatcher does NOT own backend internals. It owns selection only,
21
33
  * plus a small load-state
@@ -53,6 +65,13 @@ export interface BackendLoadOverrides {
53
65
  bundleRoot?: string;
54
66
  /** Manifest path for direct bundle loads not present in the registry. */
55
67
  manifestPath?: string;
68
+ /**
69
+ * Absolute path to a `.litertlm` LiteRT-LM text artifact staged under
70
+ * `<bundleRoot>/text/`, when the bundle ships one. Presence (plus LiteRT
71
+ * build/platform support) routes the load to the `litert-lm` backend; the
72
+ * `.gguf` `modelPath` stays the GGUF default otherwise.
73
+ */
74
+ litertModelPath?: string;
56
75
  }
57
76
 
58
77
  export interface BackendPlan {
@@ -112,6 +131,14 @@ export interface GenerateArgs extends StructuredGenerateParams {
112
131
  * streams even when a `grammar` is set).
113
132
  */
114
133
  onTextChunk?: (chunk: string) => void | Promise<void>;
134
+ /**
135
+ * Max tokens the FFI backend decodes per `llmStreamNext` step — i.e. the
136
+ * granularity of `onTextChunk` emission. Smaller ⇒ smoother token-by-token
137
+ * streaming to the UI at the cost of more FFI round-trips per response.
138
+ * Unset ⇒ the backend default (coarse, throughput-tuned). The text/chat
139
+ * handler sets a small value for smooth streaming; voice leaves it unset.
140
+ */
141
+ maxTokensPerStep?: number;
115
142
  /**
116
143
  * Whether this generation is user-visible text and therefore eligible for
117
144
  * voice-mode TTS. Internal JSON / planner calls must not be spoken.
@@ -143,6 +170,16 @@ export interface LocalGenerateWithUsageResult {
143
170
  };
144
171
  }
145
172
 
173
+ /**
174
+ * The in-process runtime the FFI streaming pipe drives for a given load.
175
+ * `llama-cpp` is the default GGUF path; `litert-lm` is the LiteRT-LM
176
+ * `.litertlm` path (same FFI symbols, selected via `ELIZA_LLM_BACKEND` +
177
+ * the C-side `llm_backend_select`). This is the dispatcher's *selection*,
178
+ * distinct from `LocalInferenceBackend.id` (the implementation surface, which
179
+ * stays the single fused FFI backend regardless of the runtime it drives).
180
+ */
181
+ export type BackendId = "llama-cpp" | "litert-lm";
182
+
146
183
  export interface LocalRuntimeLoadConfig {
147
184
  modelId: string | null;
148
185
  modelPath: string | null;
@@ -152,7 +189,7 @@ export interface LocalRuntimeLoadConfig {
152
189
  gpuLayers: number | null;
153
190
  parallel: number;
154
191
  binaryPath: string | null;
155
- backend: "capacitor-llama" | "llama-cpp" | null;
192
+ backend: BackendId | null;
156
193
  mtp: {
157
194
  specType: "draft-mtp";
158
195
  draftMin: number;
@@ -169,7 +206,7 @@ export interface LocalRuntimeLoadConfig {
169
206
  */
170
207
  export interface LocalInferenceBackend {
171
208
  /** Identifier for the concrete backend implementation. */
172
- readonly id: "capacitor-llama" | "llama-cpp";
209
+ readonly id: "llama-cpp";
173
210
  available(): Promise<boolean>;
174
211
  load(plan: BackendPlan): Promise<void>;
175
212
  unload(): Promise<void>;
@@ -201,6 +238,12 @@ export interface LocalInferenceBackend {
201
238
  maxTokens?: number;
202
239
  temperature?: number;
203
240
  signal?: AbortSignal;
241
+ /** Per-token callback for streaming vision describe (ABI v13). When set and
242
+ * the backend supports streaming, the description is decoded token-by-token
243
+ * through the same pipe as chat text; otherwise the backend returns the
244
+ * full description and ignores it. */
245
+ onTextChunk?: (chunk: string) => void | Promise<void>;
246
+ maxTokensPerStep?: number;
204
247
  }): Promise<{
205
248
  text: string;
206
249
  projectorMs?: number;
@@ -249,7 +292,15 @@ export interface LocalInferenceBackend {
249
292
  currentRuntimeLoadConfig?(): LocalRuntimeLoadConfig | null;
250
293
  }
251
294
 
252
- export type BackendOverride = "auto" | "llama-cpp";
295
+ export type BackendOverride = "auto" | "llama-cpp" | "litert-lm";
296
+
297
+ /**
298
+ * The env name the C-side `llm_backend_select` reads to HARD-select an
299
+ * in-process runtime. The dispatcher sets it to `litert-lm` for a LiteRT load
300
+ * and clears it for a llama.cpp load so a prior LiteRT select never leaks into
301
+ * the next GGUF load. Mirrors `tools/omnivoice/src/llm-backend.h`.
302
+ */
303
+ export const ELIZA_LLM_BACKEND_ENV = "ELIZA_LLM_BACKEND" as const;
253
304
 
254
305
  export function readBackendOverride(): BackendOverride {
255
306
  const raw = process.env.ELIZA_INFERENCE_BACKEND?.trim().toLowerCase();
@@ -257,9 +308,42 @@ export function readBackendOverride(): BackendOverride {
257
308
  if (raw === "llama-cpp") {
258
309
  return "llama-cpp";
259
310
  }
311
+ if (raw === "litert-lm" || raw === "litert" || raw === "litert_lm") {
312
+ return "litert-lm";
313
+ }
260
314
  return "auto";
261
315
  }
262
316
 
317
+ /**
318
+ * Whether the LiteRT-LM in-process backend is usable on THIS build/platform.
319
+ * The C-side `LlmBackendFactory::available()` is the runtime authority (it is
320
+ * compiled in only under `-DELIZA_ENABLE_LITERT` and reports false when the
321
+ * NPU/GPU delegate is absent), but the TS dispatcher must decide *before* the
322
+ * FFI load whether to route there at all, so we gate on the same signals the
323
+ * build/launcher exports:
324
+ *
325
+ * - `ELIZA_ENABLE_LITERT=1` — the explicit opt-in the LiteRT-enabled build
326
+ * sets (matches the `-DELIZA_ENABLE_LITERT` CMake gate).
327
+ * - `ELIZA_PLATFORM=android` — the NPU/GPU-delegate target where a LiteRT
328
+ * `.litertlm` bundle is the on-device path.
329
+ *
330
+ * A bundle that ships a `.litertlm` but runs on a build without LiteRT support
331
+ * loads the GGUF (`llama-cpp`) instead — the artifact is additive, never a
332
+ * requirement. Returns false unless one of the signals is present, so GGUF
333
+ * stays the default everywhere LiteRT is not wired.
334
+ */
335
+ export function litertBackendSupported(
336
+ env: NodeJS.ProcessEnv = process.env,
337
+ ): boolean {
338
+ if (envFlagIn(env, "ELIZA_ENABLE_LITERT")) return true;
339
+ return env.ELIZA_PLATFORM?.trim().toLowerCase() === "android";
340
+ }
341
+
342
+ function envFlagIn(env: NodeJS.ProcessEnv, name: string): boolean {
343
+ const v = env[name]?.trim().toLowerCase();
344
+ return v === "1" || v === "true" || v === "yes" || v === "on";
345
+ }
346
+
263
347
  function envFlag(name: string): boolean {
264
348
  const v = process.env[name]?.trim().toLowerCase();
265
349
  return v === "1" || v === "true" || v === "yes" || v === "on";
@@ -310,9 +394,29 @@ export function __resetReducedModeWarnedForTests(): void {
310
394
  }
311
395
 
312
396
  export interface BackendDecision {
313
- backend: "llama-cpp";
397
+ /**
398
+ * In-process runtime the dispatcher routes this load to. `llama-cpp` (the
399
+ * GGUF path) is the default; `litert-lm` is selected only when the bundle
400
+ * ships a `.litertlm` AND the build/platform supports LiteRT (or it was
401
+ * forced via `ELIZA_INFERENCE_BACKEND=litert-lm`). Both run through the same
402
+ * fused `libelizainference` FFI — the selection only changes the env the
403
+ * C-side `llm_backend_select` reads.
404
+ */
405
+ backend: BackendId;
314
406
  /** Why this backend was chosen — for diagnostics and warnings. */
315
- reason: "env-override" | "kernel-required" | "preferred-backend" | "default";
407
+ reason:
408
+ | "env-override"
409
+ | "kernel-required"
410
+ | "preferred-backend"
411
+ | "litert-artifact"
412
+ | "default";
413
+ /**
414
+ * Absolute path to the selected `.litertlm` artifact when `backend ===
415
+ * "litert-lm"`, else undefined. The dispatcher exports
416
+ * `ELIZA_LLM_BACKEND=litert-lm` for this load so the FFI picks the LiteRT
417
+ * factory; the path is surfaced for diagnostics.
418
+ */
419
+ litertModelPath?: string;
316
420
  /** Required kernels declared by the catalog, when any. */
317
421
  kernels: LocalRuntimeKernel[];
318
422
  /**
@@ -331,19 +435,30 @@ export interface BackendDecision {
331
435
  * Pure decision function. Easy to unit-test without spawning anything.
332
436
  *
333
437
  * Inputs are deliberately explicit — the caller resolves the catalog entry,
334
- * the binary availability, and the env override before calling us.
438
+ * the binary availability, the env override, and (for LiteRT) the staged
439
+ * `.litertlm` path + the build/platform support flag before calling us.
335
440
  *
336
441
  * `binaryKernels`, when present, is the parsed CAPABILITIES.json kernels
337
442
  * map from the installed llama.cpp FFI runtime. The dispatcher uses it to
338
443
  * compute `unsatisfiedKernels`; null means the binary is older / has no
339
444
  * capabilities probe, in which case we trust the model's declaration and
340
445
  * let the load attempt clarify.
446
+ *
447
+ * `litertModelPath` is the absolute path to a `.litertlm` text artifact when
448
+ * the bundle ships one (else undefined); `litertSupported` is whether this
449
+ * build/platform can run LiteRT ({@link litertBackendSupported}). LiteRT is
450
+ * selected only when BOTH hold, or when forced via
451
+ * `ELIZA_INFERENCE_BACKEND=litert-lm` (a forced LiteRT select with no
452
+ * `.litertlm` or no support throws — no silent downgrade to GGUF). GGUF stays
453
+ * the default in every other case.
341
454
  */
342
455
  export function decideBackend(input: {
343
456
  override: BackendOverride;
344
457
  catalog: CatalogModel | undefined;
345
458
  llamaCppAvailable: boolean;
346
459
  binaryKernels?: Partial<Record<LocalRuntimeKernel | string, boolean>> | null;
460
+ litertModelPath?: string | null;
461
+ litertSupported?: boolean;
347
462
  }): BackendDecision {
348
463
  const { override, catalog } = input;
349
464
  const optimizations = catalog?.runtime?.optimizations;
@@ -352,7 +467,38 @@ export function decideBackend(input: {
352
467
  kernels,
353
468
  input.binaryKernels ?? null,
354
469
  );
470
+ const litertModelPath = input.litertModelPath ?? undefined;
471
+ const litertSupported = input.litertSupported ?? false;
472
+
473
+ // `ELIZA_INFERENCE_BACKEND=litert-lm` HARD-forces the LiteRT runtime. It is a
474
+ // real select, not a hint: a forced LiteRT load with no staged `.litertlm`
475
+ // or on a build without LiteRT support is an error, never a silent fall back
476
+ // to GGUF (Commandment 8 — don't paper over a broken pipeline).
477
+ if (override === "litert-lm") {
478
+ if (!litertSupported) {
479
+ throw new Error(
480
+ "[local-inference] ELIZA_INFERENCE_BACKEND=litert-lm forces the LiteRT-LM " +
481
+ "backend, but this build/platform does not support it (set ELIZA_ENABLE_LITERT=1 " +
482
+ "on a LiteRT-enabled build, or run on android). Use llama-cpp, or unset the override.",
483
+ );
484
+ }
485
+ if (!litertModelPath) {
486
+ throw new Error(
487
+ "[local-inference] ELIZA_INFERENCE_BACKEND=litert-lm forces the LiteRT-LM " +
488
+ "backend, but the bundle ships no .litertlm text artifact under text/. " +
489
+ "Stage a .litertlm into the bundle, or use llama-cpp.",
490
+ );
491
+ }
492
+ return {
493
+ backend: "litert-lm",
494
+ reason: "env-override",
495
+ litertModelPath,
496
+ kernels,
497
+ unsatisfiedKernels,
498
+ };
499
+ }
355
500
 
501
+ // `ELIZA_INFERENCE_BACKEND=llama-cpp` forces the fused GGUF path explicitly.
356
502
  if (override === "llama-cpp") {
357
503
  return {
358
504
  backend: "llama-cpp",
@@ -362,6 +508,19 @@ export function decideBackend(input: {
362
508
  };
363
509
  }
364
510
 
511
+ // Auto: when the bundle ships a `.litertlm` AND this build/platform supports
512
+ // LiteRT, route there (it is the on-device NPU/GPU-delegate path). GGUF stays
513
+ // the default whenever the artifact or the support is absent.
514
+ if (litertSupported && litertModelPath) {
515
+ return {
516
+ backend: "litert-lm",
517
+ reason: "litert-artifact",
518
+ litertModelPath,
519
+ kernels,
520
+ unsatisfiedKernels,
521
+ };
522
+ }
523
+
365
524
  if (kernels.length > 0) {
366
525
  return {
367
526
  backend: "llama-cpp",
@@ -412,7 +571,7 @@ export function resolveCatalogForPlan(
412
571
  * they differ.
413
572
  */
414
573
  export class BackendDispatcher implements LocalInferenceBackend {
415
- readonly id = "capacitor-llama" as const;
574
+ readonly id = "llama-cpp" as const;
416
575
  // The dispatcher's `id` is informational; the active backend's id is what
417
576
  // matters for diagnostics. We expose `activeBackendId()` for that.
418
577
 
@@ -438,7 +597,7 @@ export class BackendDispatcher implements LocalInferenceBackend {
438
597
  return this.ffiStreaming.available();
439
598
  }
440
599
 
441
- activeBackendId(): "capacitor-llama" | "llama-cpp" | null {
600
+ activeBackendId(): "llama-cpp" | null {
442
601
  return this.active ? this.active.id : null;
443
602
  }
444
603
 
@@ -457,13 +616,33 @@ export class BackendDispatcher implements LocalInferenceBackend {
457
616
  catalog,
458
617
  llamaCppAvailable: this.probeFfiAvailable(),
459
618
  binaryKernels: this.probeBinaryKernels?.() ?? null,
619
+ litertModelPath: plan.overrides?.litertModelPath ?? null,
620
+ litertSupported: litertBackendSupported(),
460
621
  });
461
622
  }
462
623
 
463
624
  async load(plan: BackendPlan): Promise<void> {
464
- let effectivePlan = plan;
465
625
  const decision = this.decide(plan);
466
- if (decision.unsatisfiedKernels && decision.unsatisfiedKernels.length > 0) {
626
+
627
+ // Tell the C-side `llm_backend_select` which in-process runtime to drive.
628
+ // `litert-lm` sets the HARD select; the GGUF path clears it so a prior
629
+ // LiteRT select never leaks into the next llama.cpp load. The FFI library
630
+ // is the same singleton either way (`this.ffiStreaming`); only the env
631
+ // (read at `_open`) changes which factory it picks.
632
+ if (decision.backend === "litert-lm") {
633
+ process.env[ELIZA_LLM_BACKEND_ENV] = "litert-lm";
634
+ } else {
635
+ delete process.env[ELIZA_LLM_BACKEND_ENV];
636
+ }
637
+
638
+ let effectivePlan = plan;
639
+ // Kernel-mismatch enforcement is a llama.cpp-only contract — the LiteRT
640
+ // `.litertlm` path uses none of the fork's KV kernels, so skip it there.
641
+ if (
642
+ decision.backend === "llama-cpp" &&
643
+ decision.unsatisfiedKernels &&
644
+ decision.unsatisfiedKernels.length > 0
645
+ ) {
467
646
  const missing = decision.unsatisfiedKernels.join(", ");
468
647
  if (localAllowStockKv()) {
469
648
  // Reduced-optimization local mode: the build hasn't dispatched these
@@ -488,7 +667,7 @@ export class BackendDispatcher implements LocalInferenceBackend {
488
667
  );
489
668
  }
490
669
  }
491
- if (decision.backend === "llama-cpp" && !this.probeFfiAvailable()) {
670
+ if (!this.probeFfiAvailable()) {
492
671
  throw new Error(
493
672
  "[local-inference] Optimized llama.cpp requires the in-process FFI backend. " +
494
673
  "Install/rebuild libelizainference with streaming-LLM + MTP support; " +
@@ -1,4 +1,7 @@
1
+ import fs from "node:fs";
1
2
  import net from "node:net";
3
+ import os from "node:os";
4
+ import path from "node:path";
2
5
  import { afterEach, describe, expect, it } from "vitest";
3
6
  import { BionicHostLoader } from "./bionic-host-loader";
4
7
 
@@ -38,14 +41,35 @@ function startHost(
38
41
  }
39
42
 
40
43
  let host: net.Server | null = null;
44
+ const tempDirs: string[] = [];
41
45
  afterEach(() => {
42
46
  host?.close();
43
47
  host = null;
48
+ for (const dir of tempDirs.splice(0)) {
49
+ fs.rmSync(dir, { recursive: true, force: true });
50
+ }
44
51
  });
45
52
 
46
53
  const SOCK = `eliza-bionic-test-${process.pid}`;
54
+ const describeLinuxOnly =
55
+ process.platform === "linux" ? describe : describe.skip;
47
56
 
48
- describe("BionicHostLoader (real abstract-UDS)", () => {
57
+ function makeBundleModelPath(manifest: unknown = {}): string {
58
+ const bundleRoot = fs.mkdtempSync(
59
+ path.join(os.tmpdir(), "eliza-bionic-bundle-"),
60
+ );
61
+ tempDirs.push(bundleRoot);
62
+ fs.mkdirSync(path.join(bundleRoot, "text"), { recursive: true });
63
+ fs.mkdirSync(path.join(bundleRoot, "asr"), { recursive: true });
64
+ fs.writeFileSync(path.join(bundleRoot, "asr", "gemma-asr.gguf"), "asr");
65
+ fs.writeFileSync(
66
+ path.join(bundleRoot, "eliza-1.manifest.json"),
67
+ JSON.stringify(manifest),
68
+ );
69
+ return path.join(bundleRoot, "text", "model.gguf");
70
+ }
71
+
72
+ describeLinuxOnly("BionicHostLoader (real abstract-UDS)", () => {
49
73
  it("round-trips a buffered generate and returns the host completion", async () => {
50
74
  let seen: Record<string, unknown> | null = null;
51
75
  host = startHost(SOCK, (req) => {
@@ -130,4 +154,73 @@ describe("BionicHostLoader (real abstract-UDS)", () => {
130
154
  await loader.loadModel({ modelPath: "/m/text/x.gguf" });
131
155
  await expect(loader.generate({ prompt: "x" })).rejects.toThrow();
132
156
  });
157
+
158
+ it("transcribe forwards op=asr with pcm + sampleRate and returns the transcript", async () => {
159
+ let seen: Record<string, unknown> | null = null;
160
+ host = startHost(SOCK, (req) => {
161
+ seen = req;
162
+ return JSON.stringify({ ok: true, text: "the quick brown fox" });
163
+ });
164
+ const loader = new BionicHostLoader(SOCK);
165
+ const modelPath = makeBundleModelPath();
166
+ await loader.loadModel({ modelPath });
167
+ const out = await loader.transcribe({
168
+ pcmBase64: "AAAA",
169
+ sampleRate: 16000,
170
+ });
171
+ expect(out).toBe("the quick brown fox");
172
+ expect(seen).toMatchObject({
173
+ op: "asr",
174
+ pcmBase64: "AAAA",
175
+ sampleRate: 16000,
176
+ bundleDir: path.dirname(path.dirname(modelPath)),
177
+ });
178
+ });
179
+
180
+ it("transcribe refuses Qwen ASR provenance before contacting the host", async () => {
181
+ const loader = new BionicHostLoader(SOCK);
182
+ await loader.loadModel({
183
+ modelPath: makeBundleModelPath({
184
+ lineage: { asr: { base: "Qwen3-ASR" } },
185
+ }),
186
+ });
187
+ await expect(
188
+ loader.transcribe({ pcmBase64: "AAAA", sampleRate: 16000 }),
189
+ ).rejects.toThrow(/Qwen ASR provenance/);
190
+ });
191
+
192
+ it("describeImage forwards op=image with bytes + prompt and returns the description", async () => {
193
+ let seen: Record<string, unknown> | null = null;
194
+ host = startHost(SOCK, (req) => {
195
+ seen = req;
196
+ return JSON.stringify({ ok: true, text: "a cat on a desk" });
197
+ });
198
+ const loader = new BionicHostLoader(SOCK);
199
+ await loader.loadModel({
200
+ modelPath: "/data/x/eliza-1/bundle/text/model.gguf",
201
+ });
202
+ const out = await loader.describeImage({
203
+ imageBase64: "iVBORw0K",
204
+ prompt: "what is this?",
205
+ });
206
+ expect(out).toBe("a cat on a desk");
207
+ expect(seen).toMatchObject({
208
+ op: "image",
209
+ imageBase64: "iVBORw0K",
210
+ prompt: "what is this?",
211
+ mmprojPath: "",
212
+ bundleDir: "/data/x/eliza-1/bundle",
213
+ });
214
+ });
215
+
216
+ it("transcribe throws on host ok:false", async () => {
217
+ host = startHost(SOCK, () =>
218
+ JSON.stringify({ ok: false, error: "no asr weights staged" }),
219
+ );
220
+ const loader = new BionicHostLoader(SOCK);
221
+ await loader.loadModel({ modelPath: makeBundleModelPath() });
222
+ await expect(
223
+ loader.transcribe({ pcmBase64: "AAAA", sampleRate: 16000 }),
224
+ ).rejects.toThrow(/no asr weights staged/);
225
+ });
133
226
  });
@@ -28,6 +28,10 @@ import type {
28
28
  LocalInferenceLoadArgs,
29
29
  LocalInferenceLoader,
30
30
  } from "./active-model";
31
+ import {
32
+ bundleHasAsrModelFiles,
33
+ readBundleAsrProvenanceBlockers,
34
+ } from "./asr-provenance";
31
35
 
32
36
  /** Connect + full round-trip budget. A cold GPU decode of a long reply fits. */
33
37
  const REQUEST_TIMEOUT_MS = 120_000;
@@ -43,6 +47,13 @@ interface BionicGenerateResponse {
43
47
  tokS?: number;
44
48
  }
45
49
 
50
+ /** {ok, text} response for the asr / image ops (transcript / description). */
51
+ interface BionicTextResponse {
52
+ ok: boolean;
53
+ text?: string;
54
+ error?: string;
55
+ }
56
+
46
57
  /**
47
58
  * Derive the fused-bundle root from a model GGUF path. The host's
48
59
  * `eliza_inference_create(bundleDir)` expects the directory that contains
@@ -106,6 +117,67 @@ export class BionicHostLoader implements LocalInferenceLoader {
106
117
  return res.text ?? "";
107
118
  }
108
119
 
120
+ /**
121
+ * On-device STT: transcribe mono fp32 PCM via the bionic host's fused
122
+ * Gemma ASR path (op="asr"). The musl agent can't load the fused lib, so
123
+ * the TRANSCRIPTION delegate routes the audio here over the UDS and gets
124
+ * the transcript back. `pcm` is little-endian fp32 already base64-encoded.
125
+ */
126
+ async transcribe(args: {
127
+ pcmBase64: string;
128
+ sampleRate: number;
129
+ }): Promise<string> {
130
+ if (!this.bundleDir || !bundleHasAsrModelFiles(this.bundleDir)) {
131
+ throw new Error(
132
+ "[BionicHostLoader] host asr requires an active Gemma ASR-capable bundle; refusing to use the bionic host default bundle",
133
+ );
134
+ }
135
+ const blockers = readBundleAsrProvenanceBlockers(this.bundleDir);
136
+ if (blockers.length > 0) {
137
+ throw new Error(
138
+ `[BionicHostLoader] host asr refused non-Gemma ASR provenance: ${blockers.join("; ")}`,
139
+ );
140
+ }
141
+ const res = await this.roundTrip<BionicTextResponse>({
142
+ op: "asr",
143
+ bundleDir: this.bundleDir,
144
+ pcmBase64: args.pcmBase64,
145
+ sampleRate: args.sampleRate,
146
+ });
147
+ if (!res.ok) {
148
+ throw new Error(
149
+ `[BionicHostLoader] host asr failed: ${res.error ?? "unknown error"}`,
150
+ );
151
+ }
152
+ return res.text ?? "";
153
+ }
154
+
155
+ /**
156
+ * On-device vision / screen-recognition: describe a raw image (PNG/JPEG/WebP
157
+ * bytes, base64) via the bionic host's mmproj describe-image (op="image").
158
+ * `mmprojPath` may be empty — the host resolves the projector from the
159
+ * bundle's `vision/` dir.
160
+ */
161
+ async describeImage(args: {
162
+ imageBase64: string;
163
+ mmprojPath?: string;
164
+ prompt?: string;
165
+ }): Promise<string> {
166
+ const res = await this.roundTrip<BionicTextResponse>({
167
+ op: "image",
168
+ bundleDir: this.bundleDir,
169
+ imageBase64: args.imageBase64,
170
+ mmprojPath: args.mmprojPath ?? "",
171
+ prompt: args.prompt ?? "",
172
+ });
173
+ if (!res.ok) {
174
+ throw new Error(
175
+ `[BionicHostLoader] host image describe failed: ${res.error ?? "unknown error"}`,
176
+ );
177
+ }
178
+ return res.text ?? "";
179
+ }
180
+
109
181
  /**
110
182
  * One request → one response over a fresh connection. Length-prefixed frames:
111
183
  * `[int32 BE byte length][UTF-8 JSON]` in each direction.
@@ -109,28 +109,28 @@ describe("cache-bridge path layout", () => {
109
109
 
110
110
  it("buildModelHash is stable + sensitive to its inputs", () => {
111
111
  const a = buildModelHash({
112
- targetModelPath: "/models/eliza-1-0_8b.gguf",
113
- drafterModelPath: "/models/eliza-1-0_8b-drafter.gguf",
112
+ targetModelPath: "/models/eliza-1-2b.gguf",
113
+ drafterModelPath: "/models/eliza-1-2b-drafter.gguf",
114
114
  cacheTypeK: "f16",
115
115
  cacheTypeV: "f16",
116
116
  });
117
117
  const b = buildModelHash({
118
- targetModelPath: "/models/eliza-1-0_8b.gguf",
119
- drafterModelPath: "/models/eliza-1-0_8b-drafter.gguf",
118
+ targetModelPath: "/models/eliza-1-2b.gguf",
119
+ drafterModelPath: "/models/eliza-1-2b-drafter.gguf",
120
120
  cacheTypeK: "f16",
121
121
  cacheTypeV: "f16",
122
122
  });
123
123
  expect(a).toBe(b);
124
124
  const c = buildModelHash({
125
- targetModelPath: "/models/eliza-1-0_8b.gguf",
125
+ targetModelPath: "/models/eliza-1-2b.gguf",
126
126
  drafterModelPath: "/models/other-drafter.gguf",
127
127
  cacheTypeK: "f16",
128
128
  cacheTypeV: "f16",
129
129
  });
130
130
  expect(c).not.toBe(a);
131
131
  const d = buildModelHash({
132
- targetModelPath: "/models/eliza-1-0_8b.gguf",
133
- drafterModelPath: "/models/eliza-1-0_8b-drafter.gguf",
132
+ targetModelPath: "/models/eliza-1-2b.gguf",
133
+ drafterModelPath: "/models/eliza-1-2b-drafter.gguf",
134
134
  cacheTypeK: "q8_0",
135
135
  cacheTypeV: "f16",
136
136
  });