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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/actions/generate-media.d.ts +59 -0
  4. package/dist/actions/generate-media.d.ts.map +1 -0
  5. package/dist/actions/identify-speaker.d.ts +23 -0
  6. package/dist/actions/identify-speaker.d.ts.map +1 -0
  7. package/dist/actions/transcription-control.d.ts +29 -0
  8. package/dist/actions/transcription-control.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  10. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  12. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  14. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  16. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  18. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  20. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  22. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  23. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  24. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  25. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  26. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  27. package/dist/backends/apple-foundation.d.ts +56 -0
  28. package/dist/backends/apple-foundation.d.ts.map +1 -0
  29. package/dist/index.d.ts +8 -37
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +38979 -430
  32. package/dist/index.js.map +217 -0
  33. package/dist/local-inference-routes.d.ts +47 -0
  34. package/dist/local-inference-routes.d.ts.map +1 -0
  35. package/dist/provider.d.ts +21 -0
  36. package/dist/provider.d.ts.map +1 -0
  37. package/dist/routes/compat-helpers.d.ts +18 -0
  38. package/dist/routes/compat-helpers.d.ts.map +1 -0
  39. package/dist/routes/family-member-route.d.ts +62 -0
  40. package/dist/routes/family-member-route.d.ts.map +1 -0
  41. package/dist/routes/index.d.ts +20 -0
  42. package/dist/routes/index.d.ts.map +1 -0
  43. package/dist/routes/index.js +42040 -0
  44. package/dist/routes/index.js.map +236 -0
  45. package/dist/routes/live-diarization-route.d.ts +33 -0
  46. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  47. package/dist/routes/local-inference-asr-route.d.ts +4 -0
  48. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  49. package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
  50. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  51. package/dist/routes/local-inference-compat-routes.d.ts +16 -0
  52. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  53. package/dist/routes/local-inference-tts-route.d.ts +7 -0
  54. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  56. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  57. package/dist/routes/transcript-audio-store.d.ts +15 -0
  58. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  59. package/dist/routes/transcripts-routes.d.ts +44 -0
  60. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  61. package/dist/routes/voice-first-run-routes.d.ts +62 -0
  62. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  63. package/dist/routes/voice-models-routes.d.ts +62 -0
  64. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  65. package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
  66. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  67. package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
  68. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  69. package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/dist/runtime/embedding-manager-support.d.ts +77 -0
  72. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  73. package/dist/runtime/embedding-presets.d.ts +16 -0
  74. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  75. package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
  76. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  77. package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
  78. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  79. package/dist/runtime/index.d.ts +15 -0
  80. package/dist/runtime/index.d.ts.map +1 -0
  81. package/dist/runtime/index.js +38768 -0
  82. package/dist/runtime/index.js.map +217 -0
  83. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  84. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  85. package/dist/runtime/voice-entity-binding.d.ts +113 -0
  86. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  87. package/dist/services/active-model.d.ts +310 -0
  88. package/dist/services/active-model.d.ts.map +1 -0
  89. package/dist/services/asr-provenance.d.ts +5 -0
  90. package/dist/services/asr-provenance.d.ts.map +1 -0
  91. package/dist/services/assignments.d.ts +84 -0
  92. package/dist/services/assignments.d.ts.map +1 -0
  93. package/dist/services/backend-selector.d.ts +55 -0
  94. package/dist/services/backend-selector.d.ts.map +1 -0
  95. package/dist/services/backend.d.ts +440 -0
  96. package/dist/services/backend.d.ts.map +1 -0
  97. package/dist/services/bionic-host-loader.d.ts +67 -0
  98. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  99. package/dist/services/bundled-models.d.ts +34 -0
  100. package/dist/services/bundled-models.d.ts.map +1 -0
  101. package/dist/services/cache-bridge.d.ts +206 -0
  102. package/dist/services/cache-bridge.d.ts.map +1 -0
  103. package/dist/services/catalog.d.ts +10 -0
  104. package/dist/services/catalog.d.ts.map +1 -0
  105. package/dist/services/checkpoint-client.d.ts +109 -0
  106. package/dist/services/checkpoint-client.d.ts.map +1 -0
  107. package/dist/services/checkpoint-manager.d.ts +217 -0
  108. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  109. package/dist/services/cloud-fallback.d.ts +102 -0
  110. package/dist/services/cloud-fallback.d.ts.map +1 -0
  111. package/dist/services/context-fit.d.ts +36 -0
  112. package/dist/services/context-fit.d.ts.map +1 -0
  113. package/dist/services/conversation-registry.d.ts +142 -0
  114. package/dist/services/conversation-registry.d.ts.map +1 -0
  115. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
  116. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  117. package/dist/services/device-bridge.d.ts +188 -0
  118. package/dist/services/device-bridge.d.ts.map +1 -0
  119. package/dist/services/device-resource-metrics.d.ts +149 -0
  120. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  121. package/dist/services/device-tier.d.ts +133 -0
  122. package/dist/services/device-tier.d.ts.map +1 -0
  123. package/dist/services/downloader.d.ts +94 -0
  124. package/dist/services/downloader.d.ts.map +1 -0
  125. package/dist/services/engine.d.ts +579 -0
  126. package/dist/services/engine.d.ts.map +1 -0
  127. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  128. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  129. package/dist/services/external-scanner.d.ts +17 -0
  130. package/dist/services/external-scanner.d.ts.map +1 -0
  131. package/dist/services/ffi-llm-mock.d.ts +90 -0
  132. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  133. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  134. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  135. package/dist/services/ffi-streaming-backend.d.ts +201 -0
  136. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  137. package/dist/services/ffi-streaming-runner.d.ts +146 -0
  138. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  139. package/dist/services/gpu-autotune.d.ts +150 -0
  140. package/dist/services/gpu-autotune.d.ts.map +1 -0
  141. package/dist/services/gpu-detect.d.ts +56 -0
  142. package/dist/services/gpu-detect.d.ts.map +1 -0
  143. package/dist/services/handler-registry.d.ts +72 -0
  144. package/dist/services/handler-registry.d.ts.map +1 -0
  145. package/dist/services/hardware.d.ts +63 -0
  146. package/dist/services/hardware.d.ts.map +1 -0
  147. package/dist/services/image-description-runtime.d.ts +14 -0
  148. package/dist/services/image-description-runtime.d.ts.map +1 -0
  149. package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
  150. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  151. package/dist/services/imagegen/backend-selector.d.ts +118 -0
  152. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  153. package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
  154. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  155. package/dist/services/imagegen/errors.d.ts +16 -0
  156. package/dist/services/imagegen/errors.d.ts.map +1 -0
  157. package/dist/services/imagegen/index.d.ts +58 -0
  158. package/dist/services/imagegen/index.d.ts.map +1 -0
  159. package/dist/services/imagegen/mflux.d.ts +74 -0
  160. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  161. package/dist/services/imagegen/sd-cpp.d.ts +181 -0
  162. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  163. package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  164. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  165. package/dist/services/imagegen/types.d.ts +181 -0
  166. package/dist/services/imagegen/types.d.ts.map +1 -0
  167. package/dist/services/index.d.ts +31 -0
  168. package/dist/services/index.d.ts.map +1 -0
  169. package/dist/services/index.js +39453 -0
  170. package/dist/services/index.js.map +227 -0
  171. package/dist/services/inference-capabilities.d.ts +132 -0
  172. package/dist/services/inference-capabilities.d.ts.map +1 -0
  173. package/dist/services/inference-telemetry.d.ts +59 -0
  174. package/dist/services/inference-telemetry.d.ts.map +1 -0
  175. package/dist/services/ios-llama-streaming.d.ts +119 -0
  176. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  177. package/dist/services/kv-spill.d.ts +189 -0
  178. package/dist/services/kv-spill.d.ts.map +1 -0
  179. package/dist/services/latency-trace.d.ts +346 -0
  180. package/dist/services/latency-trace.d.ts.map +1 -0
  181. package/dist/services/lib-target.d.ts +55 -0
  182. package/dist/services/lib-target.d.ts.map +1 -0
  183. package/dist/services/live-signals.d.ts +86 -0
  184. package/dist/services/live-signals.d.ts.map +1 -0
  185. package/dist/services/llama-server-metrics.d.ts +114 -0
  186. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  187. package/dist/services/llm-streaming-binding.d.ts +96 -0
  188. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  189. package/dist/services/load-args.d.ts +82 -0
  190. package/dist/services/load-args.d.ts.map +1 -0
  191. package/dist/services/manifest/index.d.ts +4 -0
  192. package/dist/services/manifest/index.d.ts.map +1 -0
  193. package/dist/services/manifest/schema.d.ts +903 -0
  194. package/dist/services/manifest/schema.d.ts.map +1 -0
  195. package/dist/services/manifest/types.d.ts +32 -0
  196. package/dist/services/manifest/types.d.ts.map +1 -0
  197. package/dist/services/manifest/validator.d.ts +66 -0
  198. package/dist/services/manifest/validator.d.ts.map +1 -0
  199. package/dist/services/memory-arbiter.d.ts +348 -0
  200. package/dist/services/memory-arbiter.d.ts.map +1 -0
  201. package/dist/services/memory-benchmark.d.ts +76 -0
  202. package/dist/services/memory-benchmark.d.ts.map +1 -0
  203. package/dist/services/memory-monitor.d.ts +128 -0
  204. package/dist/services/memory-monitor.d.ts.map +1 -0
  205. package/dist/services/memory-pressure.d.ts +130 -0
  206. package/dist/services/memory-pressure.d.ts.map +1 -0
  207. package/dist/services/mtp-doctor.d.ts +13 -0
  208. package/dist/services/mtp-doctor.d.ts.map +1 -0
  209. package/dist/services/network-policy.d.ts +127 -0
  210. package/dist/services/network-policy.d.ts.map +1 -0
  211. package/dist/services/paths.d.ts +6 -0
  212. package/dist/services/paths.d.ts.map +1 -0
  213. package/dist/services/planner-skeleton.d.ts +124 -0
  214. package/dist/services/planner-skeleton.d.ts.map +1 -0
  215. package/dist/services/providers.d.ts +38 -0
  216. package/dist/services/providers.d.ts.map +1 -0
  217. package/dist/services/ram-budget.d.ts +110 -0
  218. package/dist/services/ram-budget.d.ts.map +1 -0
  219. package/dist/services/readiness.d.ts +9 -0
  220. package/dist/services/readiness.d.ts.map +1 -0
  221. package/dist/services/recommendation.d.ts +111 -0
  222. package/dist/services/recommendation.d.ts.map +1 -0
  223. package/dist/services/registry.d.ts +33 -0
  224. package/dist/services/registry.d.ts.map +1 -0
  225. package/dist/services/router-handler.d.ts +92 -0
  226. package/dist/services/router-handler.d.ts.map +1 -0
  227. package/dist/services/routing-policy.d.ts +92 -0
  228. package/dist/services/routing-policy.d.ts.map +1 -0
  229. package/dist/services/routing-preferences.d.ts +8 -0
  230. package/dist/services/routing-preferences.d.ts.map +1 -0
  231. package/dist/services/runtime-target.d.ts +98 -0
  232. package/dist/services/runtime-target.d.ts.map +1 -0
  233. package/dist/services/service.d.ts +128 -0
  234. package/dist/services/service.d.ts.map +1 -0
  235. package/dist/services/session-pool.d.ts +72 -0
  236. package/dist/services/session-pool.d.ts.map +1 -0
  237. package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
  238. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  239. package/dist/services/structured-output/index.d.ts +2 -0
  240. package/dist/services/structured-output/index.d.ts.map +1 -0
  241. package/dist/services/structured-output.d.ts +311 -0
  242. package/dist/services/structured-output.d.ts.map +1 -0
  243. package/dist/services/system-memory.d.ts +33 -0
  244. package/dist/services/system-memory.d.ts.map +1 -0
  245. package/dist/services/types.d.ts +19 -0
  246. package/dist/services/types.d.ts.map +1 -0
  247. package/dist/services/verify-on-device.d.ts +34 -0
  248. package/dist/services/verify-on-device.d.ts.map +1 -0
  249. package/dist/services/verify.d.ts +8 -0
  250. package/dist/services/verify.d.ts.map +1 -0
  251. package/dist/services/vision/aosp-unavailable.d.ts +115 -0
  252. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  253. package/dist/services/vision/capacitor-llama.d.ts +99 -0
  254. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  255. package/dist/services/vision/cloud-fallback.d.ts +47 -0
  256. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  257. package/dist/services/vision/hash.d.ts +71 -0
  258. package/dist/services/vision/hash.d.ts.map +1 -0
  259. package/dist/services/vision/index.d.ts +95 -0
  260. package/dist/services/vision/index.d.ts.map +1 -0
  261. package/dist/services/vision/llama-server.d.ts +73 -0
  262. package/dist/services/vision/llama-server.d.ts.map +1 -0
  263. package/dist/services/vision/types.d.ts +162 -0
  264. package/dist/services/vision/types.d.ts.map +1 -0
  265. package/dist/services/vision/vast-fallback.d.ts +18 -0
  266. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  267. package/dist/services/vision-embedding-cache.d.ts +98 -0
  268. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  269. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  270. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  271. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  272. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  273. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  274. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  275. package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
  276. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  277. package/dist/services/voice/barge-in.d.ts +112 -0
  278. package/dist/services/voice/barge-in.d.ts.map +1 -0
  279. package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
  280. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  281. package/dist/services/voice/checkpoint-manager.d.ts +199 -0
  282. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  283. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  284. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  285. package/dist/services/voice/corpus-augment.d.ts +111 -0
  286. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  287. package/dist/services/voice/corpus-generator.d.ts +134 -0
  288. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  289. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  290. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  291. package/dist/services/voice/e2e-harness.d.ts +297 -0
  292. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  293. package/dist/services/voice/eager-context-builder.d.ts +170 -0
  294. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  295. package/dist/services/voice/echo-delay.d.ts +67 -0
  296. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  297. package/dist/services/voice/echo-metrics.d.ts +7 -0
  298. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  299. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  300. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  301. package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
  302. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  303. package/dist/services/voice/embedding-server.d.ts +37 -0
  304. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  305. package/dist/services/voice/embedding.d.ts +132 -0
  306. package/dist/services/voice/embedding.d.ts.map +1 -0
  307. package/dist/services/voice/emotion-attribution.d.ts +68 -0
  308. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  309. package/dist/services/voice/engine-bridge.d.ts +762 -0
  310. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  311. package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
  312. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  313. package/dist/services/voice/eot-classifier.d.ts +211 -0
  314. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  315. package/dist/services/voice/errors.d.ts +20 -0
  316. package/dist/services/voice/errors.d.ts.map +1 -0
  317. package/dist/services/voice/expressive-tags.d.ts +158 -0
  318. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  319. package/dist/services/voice/ffi-bindings.d.ts +696 -0
  320. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  321. package/dist/services/voice/first-line-cache.d.ts +181 -0
  322. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  323. package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
  324. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  325. package/dist/services/voice/index.d.ts +96 -0
  326. package/dist/services/voice/index.d.ts.map +1 -0
  327. package/dist/services/voice/kokoro/index.d.ts +24 -0
  328. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  329. package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
  330. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  331. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  332. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  333. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  334. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  335. package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  336. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  337. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  338. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  339. package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
  340. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  341. package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
  342. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  343. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  344. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  345. package/dist/services/voice/kokoro/types.d.ts +82 -0
  346. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  347. package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
  348. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  349. package/dist/services/voice/kokoro/voices.d.ts +30 -0
  350. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  351. package/dist/services/voice/lifecycle.d.ts +135 -0
  352. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  353. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  354. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  355. package/dist/services/voice/metric-math.d.ts +10 -0
  356. package/dist/services/voice/metric-math.d.ts.map +1 -0
  357. package/dist/services/voice/mic-source.d.ts +136 -0
  358. package/dist/services/voice/mic-source.d.ts.map +1 -0
  359. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  360. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  361. package/dist/services/voice/optimistic-policy.d.ts +109 -0
  362. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  363. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  364. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  365. package/dist/services/voice/partial-stabilizer.d.ts +73 -0
  366. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  367. package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
  368. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  369. package/dist/services/voice/phrase-cache.d.ts +76 -0
  370. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  371. package/dist/services/voice/phrase-chunker.d.ts +62 -0
  372. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  373. package/dist/services/voice/pipeline-impls.d.ts +151 -0
  374. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  375. package/dist/services/voice/pipeline.d.ts +216 -0
  376. package/dist/services/voice/pipeline.d.ts.map +1 -0
  377. package/dist/services/voice/prefill-client.d.ts +123 -0
  378. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  379. package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
  380. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  381. package/dist/services/voice/profile-store.d.ts +248 -0
  382. package/dist/services/voice/profile-store.d.ts.map +1 -0
  383. package/dist/services/voice/ring-buffer.d.ts +40 -0
  384. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  385. package/dist/services/voice/rollback-queue.d.ts +24 -0
  386. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  387. package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
  388. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  389. package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
  390. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  391. package/dist/services/voice/scheduler.d.ts +146 -0
  392. package/dist/services/voice/scheduler.d.ts.map +1 -0
  393. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  394. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  395. package/dist/services/voice/shared-resources.d.ts +204 -0
  396. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  397. package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  398. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  399. package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
  400. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  401. package/dist/services/voice/speaker/diarizer.d.ts +75 -0
  402. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  403. package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
  404. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  405. package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
  406. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  407. package/dist/services/voice/speaker/encoder.d.ts +37 -0
  408. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  409. package/dist/services/voice/speaker-imprint.d.ts +83 -0
  410. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  411. package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
  412. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  413. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  414. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  415. package/dist/services/voice/system-audio-sink.d.ts +73 -0
  416. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  417. package/dist/services/voice/transcriber.d.ts +244 -0
  418. package/dist/services/voice/transcriber.d.ts.map +1 -0
  419. package/dist/services/voice/transcript-knowledge.d.ts +37 -0
  420. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  421. package/dist/services/voice/transcript-service.d.ts +60 -0
  422. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  423. package/dist/services/voice/transcript-store.d.ts +64 -0
  424. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  425. package/dist/services/voice/turn-controller.d.ts +183 -0
  426. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  427. package/dist/services/voice/types.d.ts +643 -0
  428. package/dist/services/voice/types.d.ts.map +1 -0
  429. package/dist/services/voice/vad.d.ts +283 -0
  430. package/dist/services/voice/vad.d.ts.map +1 -0
  431. package/dist/services/voice/voice-budget.d.ts +241 -0
  432. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  433. package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
  434. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  435. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  436. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  437. package/dist/services/voice/voice-preset-format.d.ts +158 -0
  438. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  439. package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
  440. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  441. package/dist/services/voice/voice-profile-routes.d.ts +83 -0
  442. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  443. package/dist/services/voice/voice-scenario.d.ts +131 -0
  444. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  445. package/dist/services/voice/voice-state-machine.d.ts +364 -0
  446. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  447. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  448. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  449. package/dist/services/voice/wake-word-ggml.d.ts +100 -0
  450. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  451. package/dist/services/voice/wake-word.d.ts +255 -0
  452. package/dist/services/voice/wake-word.d.ts.map +1 -0
  453. package/dist/services/voice/wav-codec.d.ts +11 -0
  454. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  455. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  456. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  457. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  458. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  459. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  460. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  461. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  462. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  463. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  464. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  465. package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  466. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  467. package/dist/services/voice-model-updater.d.ts +240 -0
  468. package/dist/services/voice-model-updater.d.ts.map +1 -0
  469. package/dist/services/voice-prewarm.d.ts +3 -0
  470. package/dist/services/voice-prewarm.d.ts.map +1 -0
  471. package/dist/voice-workbench.d.ts +18 -0
  472. package/dist/voice-workbench.d.ts.map +1 -0
  473. package/dist/voice-workbench.js +5259 -0
  474. package/dist/voice-workbench.js.map +34 -0
  475. package/package.json +101 -15
  476. package/registry-entry.json +137 -0
  477. package/src/actions/generate-media.ts +647 -0
  478. package/src/actions/identify-speaker.ts +171 -0
  479. package/src/actions/transcription-control.test.ts +100 -0
  480. package/src/actions/transcription-control.ts +127 -0
  481. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  482. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  483. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  484. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  485. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  486. package/src/adapters/capacitor-llama/environment.ts +71 -0
  487. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  488. package/src/adapters/capacitor-llama/index.ts +831 -0
  489. package/src/adapters/capacitor-llama/loader.ts +109 -0
  490. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  491. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  492. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  493. package/src/adapters/capacitor-llama/types.ts +374 -0
  494. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  495. package/src/backends/apple-foundation.ts +127 -0
  496. package/src/index.ts +62 -0
  497. package/src/local-inference-routes.test.ts +390 -0
  498. package/src/local-inference-routes.ts +1625 -0
  499. package/src/provider.ts +1111 -0
  500. package/src/routes/compat-helpers.ts +275 -0
  501. package/src/routes/family-member-route.ts +353 -0
  502. package/src/routes/index.ts +61 -0
  503. package/src/routes/live-diarization-route.test.ts +347 -0
  504. package/src/routes/live-diarization-route.ts +198 -0
  505. package/src/routes/local-inference-asr-route.test.ts +246 -0
  506. package/src/routes/local-inference-asr-route.ts +166 -0
  507. package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
  508. package/src/routes/local-inference-asr-transcribe.ts +97 -0
  509. package/src/routes/local-inference-compat-routes.test.ts +485 -0
  510. package/src/routes/local-inference-compat-routes.ts +775 -0
  511. package/src/routes/local-inference-tts-route.test.ts +179 -0
  512. package/src/routes/local-inference-tts-route.ts +230 -0
  513. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  514. package/src/routes/native-pcm-turn-route.ts +121 -0
  515. package/src/routes/transcript-audio-store.ts +27 -0
  516. package/src/routes/transcripts-routes.test.ts +195 -0
  517. package/src/routes/transcripts-routes.ts +191 -0
  518. package/src/routes/voice-first-run-routes.ts +524 -0
  519. package/src/routes/voice-models-routes.ts +554 -0
  520. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  521. package/src/routes/voice-profiles-management-routes.ts +476 -0
  522. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  523. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  524. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  525. package/src/runtime/capacitor-llama.d.ts +25 -0
  526. package/src/runtime/embedding-manager-support.ts +497 -0
  527. package/src/runtime/embedding-presets.ts +81 -0
  528. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  529. package/src/runtime/embedding-warmup-policy.ts +48 -0
  530. package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
  531. package/src/runtime/ensure-local-inference-handler.ts +1640 -0
  532. package/src/runtime/index.ts +36 -0
  533. package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
  534. package/src/runtime/mobile-local-inference-gate.ts +99 -0
  535. package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
  536. package/src/runtime/voice-entity-binding.ts +368 -0
  537. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  538. package/src/services/README.md +71 -0
  539. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  540. package/src/services/__tests__/backend-selector.test.ts +101 -0
  541. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  542. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  543. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  544. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  545. package/src/services/__tests__/runtime-target.test.ts +176 -0
  546. package/src/services/active-model-context-fit.test.ts +125 -0
  547. package/src/services/active-model-switch-rollback.test.ts +183 -0
  548. package/src/services/active-model.ts +1416 -0
  549. package/src/services/asr-provenance.ts +68 -0
  550. package/src/services/assignment-validation.test.ts +118 -0
  551. package/src/services/assignments.test.ts +106 -0
  552. package/src/services/assignments.ts +278 -0
  553. package/src/services/backend-selector.ts +95 -0
  554. package/src/services/backend.test.ts +84 -0
  555. package/src/services/backend.ts +791 -0
  556. package/src/services/bionic-host-loader.test.ts +226 -0
  557. package/src/services/bionic-host-loader.ts +252 -0
  558. package/src/services/bundled-models.ts +129 -0
  559. package/src/services/cache-bridge.test.ts +516 -0
  560. package/src/services/cache-bridge.ts +423 -0
  561. package/src/services/catalog.test.ts +259 -0
  562. package/src/services/catalog.ts +33 -0
  563. package/src/services/checkpoint-client.ts +258 -0
  564. package/src/services/checkpoint-manager.ts +474 -0
  565. package/src/services/cloud-fallback.ts +230 -0
  566. package/src/services/context-fit.test.ts +121 -0
  567. package/src/services/context-fit.ts +113 -0
  568. package/src/services/conversation-registry.test.ts +235 -0
  569. package/src/services/conversation-registry.ts +264 -0
  570. package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
  571. package/src/services/device-bridge.ts +1237 -0
  572. package/src/services/device-resource-metrics.test.ts +98 -0
  573. package/src/services/device-resource-metrics.ts +346 -0
  574. package/src/services/device-tier.test.ts +458 -0
  575. package/src/services/device-tier.ts +502 -0
  576. package/src/services/downloader.test.ts +888 -0
  577. package/src/services/downloader.ts +1039 -0
  578. package/src/services/engine-direct-bundle.test.ts +90 -0
  579. package/src/services/engine-streaming.test.ts +80 -0
  580. package/src/services/engine.ts +2096 -0
  581. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  582. package/src/services/ensure-local-artifacts.test.ts +368 -0
  583. package/src/services/ensure-local-artifacts.ts +351 -0
  584. package/src/services/external-scanner.ts +312 -0
  585. package/src/services/ffi-llm-mock.ts +354 -0
  586. package/src/services/ffi-llm-streaming-abi.ts +445 -0
  587. package/src/services/ffi-streaming-backend.ts +418 -0
  588. package/src/services/ffi-streaming-runner.test.ts +220 -0
  589. package/src/services/ffi-streaming-runner.ts +407 -0
  590. package/src/services/ffi-unload-ordering.test.ts +166 -0
  591. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  592. package/src/services/gpu-autotune.ts +534 -0
  593. package/src/services/gpu-detect.ts +139 -0
  594. package/src/services/handler-registry.ts +240 -0
  595. package/src/services/hardware.test.ts +236 -0
  596. package/src/services/hardware.ts +438 -0
  597. package/src/services/image-description-runtime.test.ts +61 -0
  598. package/src/services/image-description-runtime.ts +118 -0
  599. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  600. package/src/services/imagegen/backend-selector.test.ts +190 -0
  601. package/src/services/imagegen/backend-selector.ts +277 -0
  602. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  603. package/src/services/imagegen/errors.ts +40 -0
  604. package/src/services/imagegen/index.ts +144 -0
  605. package/src/services/imagegen/mflux.ts +313 -0
  606. package/src/services/imagegen/sd-cpp.ts +715 -0
  607. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  608. package/src/services/imagegen/types.ts +193 -0
  609. package/src/services/index.ts +229 -0
  610. package/src/services/inference-capabilities.test.ts +75 -0
  611. package/src/services/inference-capabilities.ts +204 -0
  612. package/src/services/inference-telemetry.ts +143 -0
  613. package/src/services/ios-llama-streaming.ts +248 -0
  614. package/src/services/kv-spill.test.ts +222 -0
  615. package/src/services/kv-spill.ts +357 -0
  616. package/src/services/latency-trace.test.ts +266 -0
  617. package/src/services/latency-trace.ts +844 -0
  618. package/src/services/lib-target.test.ts +145 -0
  619. package/src/services/lib-target.ts +102 -0
  620. package/src/services/live-signals.test.ts +132 -0
  621. package/src/services/live-signals.ts +177 -0
  622. package/src/services/llama-server-metrics.test.ts +168 -0
  623. package/src/services/llama-server-metrics.ts +304 -0
  624. package/src/services/llm-streaming-binding.ts +136 -0
  625. package/src/services/load-args.ts +81 -0
  626. package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
  627. package/src/services/manifest/index.ts +72 -0
  628. package/src/services/manifest/manifest.test.ts +791 -0
  629. package/src/services/manifest/schema.ts +761 -0
  630. package/src/services/manifest/types.ts +61 -0
  631. package/src/services/manifest/validator.ts +633 -0
  632. package/src/services/memory-arbiter.test.ts +558 -0
  633. package/src/services/memory-arbiter.ts +991 -0
  634. package/src/services/memory-benchmark.test.ts +91 -0
  635. package/src/services/memory-benchmark.ts +354 -0
  636. package/src/services/memory-monitor.test.ts +232 -0
  637. package/src/services/memory-monitor.ts +309 -0
  638. package/src/services/memory-pressure.ts +414 -0
  639. package/src/services/mtp-doctor.ts +86 -0
  640. package/src/services/network-policy.ts +346 -0
  641. package/src/services/paths.ts +25 -0
  642. package/src/services/planner-skeleton.ts +175 -0
  643. package/src/services/providers.ts +507 -0
  644. package/src/services/ram-budget-cache.test.ts +164 -0
  645. package/src/services/ram-budget.ts +309 -0
  646. package/src/services/readiness.test.ts +87 -0
  647. package/src/services/readiness.ts +238 -0
  648. package/src/services/recommendation.test.ts +216 -0
  649. package/src/services/recommendation.ts +671 -0
  650. package/src/services/registry.ts +157 -0
  651. package/src/services/required-kernels-gate.test.ts +64 -0
  652. package/src/services/router-handler.test.ts +45 -0
  653. package/src/services/router-handler.ts +426 -0
  654. package/src/services/routing-policy.test.ts +352 -0
  655. package/src/services/routing-policy.ts +367 -0
  656. package/src/services/routing-preferences.ts +17 -0
  657. package/src/services/runtime-target.ts +154 -0
  658. package/src/services/service.test.ts +223 -0
  659. package/src/services/service.ts +750 -0
  660. package/src/services/session-pool.ts +153 -0
  661. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  662. package/src/services/structured-output/deterministic-repair.ts +443 -0
  663. package/src/services/structured-output/index.ts +4 -0
  664. package/src/services/structured-output.test.ts +483 -0
  665. package/src/services/structured-output.ts +712 -0
  666. package/src/services/system-memory.test.ts +47 -0
  667. package/src/services/system-memory.ts +67 -0
  668. package/src/services/transcription-priority.test.ts +211 -0
  669. package/src/services/types.ts +59 -0
  670. package/src/services/verify-on-device.test.ts +87 -0
  671. package/src/services/verify-on-device.ts +127 -0
  672. package/src/services/verify.ts +13 -0
  673. package/src/services/vision/aosp-unavailable.ts +163 -0
  674. package/src/services/vision/capacitor-llama.ts +255 -0
  675. package/src/services/vision/cloud-fallback.test.ts +243 -0
  676. package/src/services/vision/cloud-fallback.ts +268 -0
  677. package/src/services/vision/fallback-chain.test.ts +86 -0
  678. package/src/services/vision/hash.ts +157 -0
  679. package/src/services/vision/index.ts +251 -0
  680. package/src/services/vision/llama-server.ts +177 -0
  681. package/src/services/vision/types.ts +163 -0
  682. package/src/services/vision/vast-fallback.ts +127 -0
  683. package/src/services/vision-embedding-cache.ts +189 -0
  684. package/src/services/voice/VOICE_WORKBENCH.md +133 -0
  685. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  686. package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
  687. package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
  688. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  689. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  690. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  691. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  692. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  693. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  694. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  695. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  696. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  697. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  698. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
  699. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  700. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  701. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  702. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  703. package/src/services/voice/asr-timed.real.test.ts +139 -0
  704. package/src/services/voice/audio-frame-consumer.test.ts +669 -0
  705. package/src/services/voice/audio-frame-consumer.ts +651 -0
  706. package/src/services/voice/barge-in.test.ts +244 -0
  707. package/src/services/voice/barge-in.ts +335 -0
  708. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  709. package/src/services/voice/cancellation-coordinator.ts +269 -0
  710. package/src/services/voice/checkpoint-manager.ts +401 -0
  711. package/src/services/voice/checkpoint-policy.ts +336 -0
  712. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  713. package/src/services/voice/corpus-augment.test.ts +276 -0
  714. package/src/services/voice/corpus-augment.ts +451 -0
  715. package/src/services/voice/corpus-generator.test.ts +201 -0
  716. package/src/services/voice/corpus-generator.ts +413 -0
  717. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  718. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  719. package/src/services/voice/diarization-error-rate.ts +249 -0
  720. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  721. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  722. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  723. package/src/services/voice/e2e-harness.test.ts +182 -0
  724. package/src/services/voice/e2e-harness.ts +902 -0
  725. package/src/services/voice/eager-context-builder.ts +262 -0
  726. package/src/services/voice/echo-delay.test.ts +118 -0
  727. package/src/services/voice/echo-delay.ts +135 -0
  728. package/src/services/voice/echo-metrics.test.ts +17 -0
  729. package/src/services/voice/echo-metrics.ts +20 -0
  730. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  731. package/src/services/voice/echo-reference-buffer.ts +165 -0
  732. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  733. package/src/services/voice/embedding-server.ts +200 -0
  734. package/src/services/voice/embedding.test.ts +131 -0
  735. package/src/services/voice/embedding.ts +242 -0
  736. package/src/services/voice/emotion-attribution.test.ts +129 -0
  737. package/src/services/voice/emotion-attribution.ts +361 -0
  738. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  739. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  740. package/src/services/voice/engine-bridge.test.ts +384 -0
  741. package/src/services/voice/engine-bridge.ts +2343 -0
  742. package/src/services/voice/eot-classifier-ggml.ts +569 -0
  743. package/src/services/voice/eot-classifier.test.ts +98 -0
  744. package/src/services/voice/eot-classifier.ts +422 -0
  745. package/src/services/voice/errors.ts +34 -0
  746. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  747. package/src/services/voice/expressive-tags.test.ts +102 -0
  748. package/src/services/voice/expressive-tags.ts +405 -0
  749. package/src/services/voice/ffi-bindings.test.ts +735 -0
  750. package/src/services/voice/ffi-bindings.ts +3387 -0
  751. package/src/services/voice/first-line-cache.ts +725 -0
  752. package/src/services/voice/fused-eot-scorer.ts +139 -0
  753. package/src/services/voice/index.ts +502 -0
  754. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
  755. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
  756. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  757. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  758. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  759. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  760. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  761. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
  762. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  763. package/src/services/voice/kokoro/index.ts +79 -0
  764. package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
  765. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  766. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  767. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  768. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  769. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  770. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  771. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  772. package/src/services/voice/kokoro/runtime-selection.ts +64 -0
  773. package/src/services/voice/kokoro/types.ts +95 -0
  774. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  775. package/src/services/voice/kokoro/voices.ts +64 -0
  776. package/src/services/voice/lifecycle.test.ts +315 -0
  777. package/src/services/voice/lifecycle.ts +301 -0
  778. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  779. package/src/services/voice/live-diarization-session.ts +622 -0
  780. package/src/services/voice/metric-math.test.ts +61 -0
  781. package/src/services/voice/metric-math.ts +25 -0
  782. package/src/services/voice/mic-source.test.ts +210 -0
  783. package/src/services/voice/mic-source.ts +503 -0
  784. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  785. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  786. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  787. package/src/services/voice/optimistic-policy.test.ts +101 -0
  788. package/src/services/voice/optimistic-policy.ts +192 -0
  789. package/src/services/voice/optimistic-rollback.ts +343 -0
  790. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  791. package/src/services/voice/partial-stabilizer.ts +140 -0
  792. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  793. package/src/services/voice/phrase-cache.test.ts +242 -0
  794. package/src/services/voice/phrase-cache.ts +186 -0
  795. package/src/services/voice/phrase-chunker.test.ts +239 -0
  796. package/src/services/voice/phrase-chunker.ts +281 -0
  797. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  798. package/src/services/voice/pipeline-impls.test.ts +292 -0
  799. package/src/services/voice/pipeline-impls.ts +315 -0
  800. package/src/services/voice/pipeline.ts +504 -0
  801. package/src/services/voice/prefill-client.ts +316 -0
  802. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  803. package/src/services/voice/profile-store.ts +887 -0
  804. package/src/services/voice/real-audio-decode.test.ts +148 -0
  805. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  806. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  807. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  808. package/src/services/voice/ring-buffer.test.ts +129 -0
  809. package/src/services/voice/ring-buffer.ts +123 -0
  810. package/src/services/voice/rollback-queue.ts +74 -0
  811. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  812. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  813. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  814. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  815. package/src/services/voice/scheduler.t2.test.ts +141 -0
  816. package/src/services/voice/scheduler.ts +927 -0
  817. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  818. package/src/services/voice/self-voice-imprint.ts +102 -0
  819. package/src/services/voice/shared-resources.ts +343 -0
  820. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  821. package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
  822. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  823. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  824. package/src/services/voice/speaker/diarizer.ts +218 -0
  825. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  826. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  827. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  828. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  829. package/src/services/voice/speaker/encoder.ts +105 -0
  830. package/src/services/voice/speaker-imprint.test.ts +185 -0
  831. package/src/services/voice/speaker-imprint.ts +312 -0
  832. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  833. package/src/services/voice/speaker-preset-cache.ts +195 -0
  834. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  835. package/src/services/voice/system-audio-sink.test.ts +29 -0
  836. package/src/services/voice/system-audio-sink.ts +366 -0
  837. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  838. package/src/services/voice/transcriber.test.ts +392 -0
  839. package/src/services/voice/transcriber.ts +704 -0
  840. package/src/services/voice/transcript-knowledge.test.ts +68 -0
  841. package/src/services/voice/transcript-knowledge.ts +75 -0
  842. package/src/services/voice/transcript-service.test.ts +195 -0
  843. package/src/services/voice/transcript-service.ts +205 -0
  844. package/src/services/voice/transcript-store.test.ts +189 -0
  845. package/src/services/voice/transcript-store.ts +164 -0
  846. package/src/services/voice/turn-controller.test.ts +575 -0
  847. package/src/services/voice/turn-controller.ts +596 -0
  848. package/src/services/voice/types.ts +699 -0
  849. package/src/services/voice/vad.test.ts +498 -0
  850. package/src/services/voice/vad.ts +832 -0
  851. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  852. package/src/services/voice/voice-budget.test.ts +415 -0
  853. package/src/services/voice/voice-budget.ts +635 -0
  854. package/src/services/voice/voice-duet.test.ts +375 -0
  855. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  856. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  857. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  858. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  859. package/src/services/voice/voice-preload-predictor.ts +113 -0
  860. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  861. package/src/services/voice/voice-preset-format.test.ts +75 -0
  862. package/src/services/voice/voice-preset-format.ts +713 -0
  863. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  864. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  865. package/src/services/voice/voice-profile-artifact.ts +518 -0
  866. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  867. package/src/services/voice/voice-profile-routes.ts +425 -0
  868. package/src/services/voice/voice-scenario.test.ts +159 -0
  869. package/src/services/voice/voice-scenario.ts +280 -0
  870. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  871. package/src/services/voice/voice-state-machine.ts +727 -0
  872. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  873. package/src/services/voice/voice-workbench-report.ts +367 -0
  874. package/src/services/voice/voice-workbench.test.ts +158 -0
  875. package/src/services/voice/voice.test.ts +1070 -0
  876. package/src/services/voice/wake-word-ggml.ts +319 -0
  877. package/src/services/voice/wake-word.test.ts +298 -0
  878. package/src/services/voice/wake-word.ts +554 -0
  879. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  880. package/src/services/voice/wav-codec.test.ts +32 -0
  881. package/src/services/voice/wav-codec.ts +101 -0
  882. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  883. package/src/services/voice/workbench-entrypoint.ts +88 -0
  884. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  885. package/src/services/voice/workbench-headless-runner.ts +396 -0
  886. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  887. package/src/services/voice/workbench-logic-services.ts +184 -0
  888. package/src/services/voice/workbench-real-services.ts +629 -0
  889. package/src/services/voice/workbench-scenarios.ts +407 -0
  890. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  891. package/src/services/voice-model-updater.ts +724 -0
  892. package/src/services/voice-prewarm.ts +51 -0
  893. package/src/voice-workbench.ts +71 -0
@@ -0,0 +1,579 @@
1
+ /**
2
+ * Standalone llama.cpp engine.
3
+ *
4
+ * Fronts the in-process FFI backend (fused `libelizainference`, or the
5
+ * libllama + eliza-llama-shim fallback) via the `BackendDispatcher`. At most
6
+ * one model is loaded at a time — model swap is unload-then-load so we never
7
+ * double-allocate VRAM.
8
+ *
9
+ * Two consumption paths:
10
+ * 1. The Model Hub UI calls `load()` / `unload()` to make "Activate" work.
11
+ * 2. The agent runtime calls `generate()` via the registered
12
+ * `ModelType.TEXT_SMALL` / `TEXT_LARGE` handlers (see
13
+ * `ensure-local-inference-handler.ts`).
14
+ */
15
+ import type { LocalInferenceLoadArgs } from "./active-model";
16
+ import type { GenerateArgs as BackendGenerateArgs, LocalRuntimeLoadConfig } from "./backend";
17
+ import { type ConversationHandle } from "./conversation-registry";
18
+ import { MemoryMonitor } from "./memory-monitor";
19
+ import type { CoordinatorRuntime } from "./voice/cancellation-coordinator";
20
+ import { EngineVoiceBridge, type EngineVoiceBridgeOptions } from "./voice/engine-bridge";
21
+ import type { AsrWordTiming } from "./voice/ffi-bindings";
22
+ import type { VoicePipelineEvents } from "./voice/pipeline";
23
+ import { type MtpTextRunner } from "./voice/pipeline-impls";
24
+ import { SharedResourceRegistry } from "./voice/shared-resources";
25
+ import type { TextToken, TranscriptionAudio, VerifierStreamEvent } from "./voice/types";
26
+ export interface LocalUsageBlock {
27
+ [key: string]: unknown;
28
+ input_tokens: number;
29
+ output_tokens: number;
30
+ cache_creation_input_tokens: number;
31
+ cache_read_input_tokens: number;
32
+ mtp_drafted_tokens?: number;
33
+ mtp_accepted_tokens?: number;
34
+ mtp_acceptance_rate?: number;
35
+ cache_hit_rate?: number;
36
+ }
37
+ export declare function resolveIdleUnloadMs(): number;
38
+ /**
39
+ * Cap on how many speculative voice responses the turn-controller (W9) may
40
+ * have in flight at once — derived from the running server's slot count
41
+ * (each speculative response needs a slot's KV) but never more than half of
42
+ * them (the other half stays available for confirmed turns + tool calls).
43
+ * Floors at 1. Override via `ELIZA_LOCAL_MAX_SPECULATIVE_RESPONSES`.
44
+ */
45
+ export declare function resolveMaxConcurrentSpeculativeResponses(parallelSlots: number): number;
46
+ export type GenerateArgs = BackendGenerateArgs;
47
+ /**
48
+ * Public engine facade.
49
+ *
50
+ * Pre-existing API: `load(modelPath)`, `unload()`, `generate(args)`,
51
+ * plus the activity probes used by router/handler/active-model code. The
52
+ * implementation now sits behind the backend dispatcher; the
53
+ * shape is preserved so callers (active-model, router-handler, the agent
54
+ * runtime handler) keep working unchanged.
55
+ *
56
+ * MTP now lives in the normal optimized llama.cpp backend path. The
57
+ * dispatcher's decision tree picks `llama-cpp` when a kernel is required
58
+ * or when the catalog prefers optimized llama.cpp.
59
+ */
60
+ export declare class LocalInferenceEngine {
61
+ /**
62
+ * In-process FFI backend — the sole text runtime, served by the FUSED
63
+ * `libelizainference` (`desktop-fused-ffi-backend-runtime.ts`). Text gen,
64
+ * MTP speculative decoding, KV-cache quant, native tokenization,
65
+ * and vision-describe all run through the one fused lib the voice subsystem
66
+ * already loads (ABI v9). libllama has been retired: a fused lib that is
67
+ * absent or lacks the v9 capabilities is a loud `LocalInferenceUnavailable`
68
+ * error, never a silent fallback. There is no server fallback for Eliza-1.
69
+ */
70
+ private readonly ffiBackend;
71
+ private readonly dispatcher;
72
+ /**
73
+ * Active voice-streaming bridge (`EngineVoiceBridge`). Only set when an
74
+ * Eliza-1 bundle has been activated AND `startVoice()` has succeeded —
75
+ * see `packages/inference/AGENTS.md` §3 + §4. The engine never lazily
76
+ * stands up a voice session: callers either start it explicitly or get
77
+ * a hard error.
78
+ */
79
+ private voiceBridge;
80
+ private voiceReadyPromise;
81
+ private asrReadyPromise;
82
+ /**
83
+ * The general onload/offload coordinator (W10 / J5). One registry per
84
+ * engine: text + voice both ref-count their shared resources against it,
85
+ * and every resident model role registers an `EvictableModelRole` here so
86
+ * the `MemoryMonitor` can walk them ascending-priority under RAM pressure.
87
+ * The voice bridge gets this passed in (see `startVoice`) so it doesn't
88
+ * spin up a private one.
89
+ */
90
+ private readonly sharedResources;
91
+ /**
92
+ * RAM-pressure monitor (J2). Started when a model loads, stopped when the
93
+ * engine unloads. Evicts the lowest-priority resident role when free RAM
94
+ * crosses the low-water line.
95
+ */
96
+ private readonly memoryMonitor;
97
+ /** Wall-clock ms of the last `useModel`-style activity. */
98
+ private lastActivityMs;
99
+ /** Idle-unload timer (J3); null when disabled or no model loaded. */
100
+ private idleUnloadTimer;
101
+ /** Evictable text-target role id registered on `sharedResources`, or null. */
102
+ private textTargetRoleId;
103
+ /**
104
+ * Ids of evictable roles THIS engine registered on `sharedResources`
105
+ * (text-target today). `getResidentFootprintMb()` sums only these so the
106
+ * arbiter never double-counts its own vision/image-gen registry roles.
107
+ */
108
+ private readonly ownedEvictableRoleIds;
109
+ /** Best-effort resident footprint for the active text bundle, in MiB. */
110
+ private textTargetEstimatedMb;
111
+ /** Evictable drafter role id registered on `sharedResources`, or null. */
112
+ /**
113
+ * The active Eliza-1 bundle (root dir + tier id), resolved at `load()`
114
+ * from the InstalledModel path/id. `null` when the loaded model is not an
115
+ * Eliza-1 bundle (a user-installed custom). Drives bundle-relative voice
116
+ * resolution — the Kokoro TTS root and the per-tier EOT turn-detector
117
+ * revision.
118
+ */
119
+ private activeEliza1Bundle;
120
+ /**
121
+ * The general onload/offload coordinator for this engine. Exposed so the
122
+ * voice lifecycle, the embedding route, and any other resident model role
123
+ * can register an `EvictableModelRole` against the same registry the
124
+ * `MemoryMonitor` walks under pressure.
125
+ */
126
+ getSharedResources(): SharedResourceRegistry;
127
+ /**
128
+ * Resident RAM footprint (MB) of the model weights this engine owns on the
129
+ * shared registry — the active text/embedding bundle today, plus any future
130
+ * engine-registered role (drafter, voice). This is the term `service.ts`
131
+ * feeds into the `MemoryArbiter` as `externalFootprintMb` so the arbiter's
132
+ * proactive `evictToFit` path accounts for the dominant resident consumer
133
+ * (the text target) instead of seeing only its own vision/image-gen handles
134
+ * and never tripping (#8809 AC#1). Summed by role id so it never
135
+ * double-counts the arbiter's own registry roles (vision/image-gen), which
136
+ * the arbiter already counts in its resident map.
137
+ */
138
+ getResidentFootprintMb(): number;
139
+ /** The RAM-pressure monitor. Exposed for diagnostics / tests. */
140
+ getMemoryMonitor(): MemoryMonitor;
141
+ /** Record `useModel`-style activity so the idle-unload timer stays armed. */
142
+ private markActivity;
143
+ /**
144
+ * Once a model is resident: register the text target as an evictable role,
145
+ * start the memory monitor, and arm the idle-unload timer. Idempotent.
146
+ */
147
+ private startBackgroundManagement;
148
+ /** Stop the memory monitor + idle timer and deregister evictable roles. */
149
+ private stopBackgroundManagement;
150
+ private registerResidentRoles;
151
+ private deregisterResidentRoles;
152
+ private armIdleUnloadTimer;
153
+ /**
154
+ * Cap on concurrent speculative voice responses (W9 / J4): derived from
155
+ * the running server's slot count (each speculative response needs a KV
156
+ * slot), never more than half of them, floored at 1. The voice
157
+ * turn-controller reads this before kicking a speculative response.
158
+ */
159
+ maxConcurrentSpeculativeResponses(): number;
160
+ /**
161
+ * Auto-tune the running server's `--parallel` (J4): when the conversation
162
+ * high-water mark has outgrown the configured slot count AND there's RAM
163
+ * headroom for the extra KV slots, resize/restart llama.cpp with the larger
164
+ * value so new conversations get their own slot instead of thrashing.
165
+ * Returns `true` when a resize was performed. No-op when the FFI backend
166
+ * isn't loaded. Best-effort: a failed restart leaves the old `--parallel`
167
+ * in place and logs.
168
+ */
169
+ maybeAutoResizeParallel(): Promise<boolean>;
170
+ available(): Promise<boolean>;
171
+ currentModelPath(): string | null;
172
+ hasLoadedModel(): boolean;
173
+ activeBackendId(): "llama-cpp" | null;
174
+ currentRuntimeLoadConfig(): LocalRuntimeLoadConfig | null;
175
+ private disposeVoiceBridge;
176
+ unload(): Promise<void>;
177
+ load(modelPath: string, resolved?: LocalInferenceLoadArgs): Promise<void>;
178
+ generate(args: GenerateArgs): Promise<string>;
179
+ /**
180
+ * Vision describe via the running llama.cpp mtmd path. Requires the FFI
181
+ * backend with an mmproj-loaded bundle. The mmproj GGUF must have been
182
+ * declared by the active catalog tier and present on disk under the
183
+ * bundle root; if not, the active backend throws.
184
+ *
185
+ * No fallback: Florence-2 / Transformers.js was the previous fallback
186
+ * and has been removed (see VISION_MIGRATION.md).
187
+ */
188
+ describeImage(args: {
189
+ bytes: Uint8Array;
190
+ mimeType?: string;
191
+ prompt?: string;
192
+ maxTokens?: number;
193
+ temperature?: number;
194
+ signal?: AbortSignal;
195
+ /** Per-token callback for streaming vision describe (ABI v13). */
196
+ onTextChunk?: (chunk: string) => void | Promise<void>;
197
+ maxTokensPerStep?: number;
198
+ }): Promise<{
199
+ text: string;
200
+ projectorMs?: number;
201
+ decodeMs?: number;
202
+ }>;
203
+ /** True when the active server can serve vision describe (mmproj loaded). */
204
+ canDescribeImages(): boolean;
205
+ /**
206
+ * Diagnostic snapshot of an in-process JS session pool. Always null on the
207
+ * FFI runtime — its KV slots live in the native backend (C), not in a JS
208
+ * session pool. Retained so the API cache-stats panel keeps a stable shape.
209
+ */
210
+ describeSessionPool(): {
211
+ size: number;
212
+ maxSize: number;
213
+ keys: string[];
214
+ } | null;
215
+ /**
216
+ * Reserve a slot for a long-lived conversation. Subsequent
217
+ * `generateInConversation` calls reuse the same slot, so the prefix
218
+ * KV survives across turns regardless of hash collisions with other
219
+ * concurrent conversations.
220
+ *
221
+ * Idempotent for the same (conversationId, modelId): repeated open
222
+ * calls return the same handle. The runtime side should call this
223
+ * lazily on the first turn of a conversation and `closeConversation`
224
+ * when the chat session ends.
225
+ */
226
+ openConversation(args: {
227
+ conversationId: string;
228
+ modelId: string;
229
+ ttlMs?: number;
230
+ }): ConversationHandle;
231
+ /**
232
+ * Run one generation pinned to a previously-opened conversation
233
+ * handle. Cache key, slot id, and (for optimized llama.cpp) kv-restore are
234
+ * all owned by the registry — callers don't need to thread them.
235
+ *
236
+ * Returns the Anthropic-shape `LocalUsageBlock` alongside the text so
237
+ * agentic callers can surface cache-hit telemetry without re-scraping
238
+ * `/metrics` themselves.
239
+ */
240
+ generateInConversation(handle: ConversationHandle, args: Omit<GenerateArgs, "cacheKey">): Promise<{
241
+ text: string;
242
+ usage: LocalUsageBlock;
243
+ slotId: number;
244
+ }>;
245
+ /**
246
+ * KV-prefill a conversation's pinned slot with a known prompt prefix
247
+ * (system prompt + provider context + tool/action schema block + the
248
+ * assistant-turn start), before the real request lands. This is item I1 /
249
+ * C1 of the voice swarm — fire it the moment a message arrives / STT
250
+ * starts so the response-handler prompt is already in the slot's KV when
251
+ * the user's tokens are appended.
252
+ *
253
+ * `conversationOrId` may be a `ConversationHandle` (preferred — pins to
254
+ * the handle's slot) or a raw conversation id (a handle is opened on the
255
+ * fly so the slot derivation matches the real request). Idempotent /
256
+ * cheap to call repeatedly: `cache_prompt: true` reuses the prefix so a
257
+ * second call is a no-op forward pass. Only meaningful once the FFI
258
+ * backend is loaded — returns false otherwise. Returns true when a
259
+ * pre-warm request was issued.
260
+ */
261
+ prewarmConversation(conversationOrId: ConversationHandle | string, promptPrefix: string, opts?: {
262
+ modelId?: string;
263
+ }): Promise<boolean>;
264
+ /**
265
+ * Close + drop a conversation handle. Persists the final KV state to
266
+ * disk so a later open with the same id can lazy-restore. Idempotent;
267
+ * closing an unknown id is a no-op.
268
+ */
269
+ closeConversation(handle: ConversationHandle): Promise<void>;
270
+ /**
271
+ * Read-side accessor for the conversation registry. The runtime handler
272
+ * uses this to look up an existing handle before opening a new one,
273
+ * avoiding the need to thread a handle through every layer.
274
+ */
275
+ conversation(conversationId: string, modelId: string): ConversationHandle | null;
276
+ /**
277
+ * Largest concurrent open-conversation count seen this process lifetime.
278
+ * The auto-tune-parallel path consults this and warns when it exceeds
279
+ * the running server's slot count.
280
+ */
281
+ conversationHighWaterMark(): number;
282
+ /**
283
+ * Recommended `--parallel` value given the current conversation
284
+ * high-water mark plus a small headroom (max(2, 25%)), never below the
285
+ * running slot count. Delegates to `ConversationRegistry.recommendedParallel`
286
+ * so the math lives in one place. When this exceeds `parallelSlots()` the
287
+ * engine can grow the running server (`maybeAutoResizeParallel`).
288
+ */
289
+ recommendedParallel(): number;
290
+ /**
291
+ * Emit a one-line warning when the running `--parallel` slot count is
292
+ * below the recommended value (high-water mark + headroom). Returns true
293
+ * when a warning was emitted. No-op when the FFI backend isn't loaded.
294
+ * The actual resize is `maybeAutoResizeParallel()`
295
+ * — kept separate from this hot-path check so a `useModel` call never
296
+ * blocks on (or is interrupted by) a server restart; the auto-resize is
297
+ * opted into via `ELIZA_LOCAL_AUTO_RESIZE_PARALLEL=1`, in which case this
298
+ * also kicks one off fire-and-forget.
299
+ */
300
+ warnIfParallelTooLow(logger?: {
301
+ warn: (msg: string) => void;
302
+ }): boolean;
303
+ /**
304
+ * Start the voice-streaming pipeline against an already-activated
305
+ * Eliza-1 bundle. Per AGENTS.md §3, voice is mandatory for Eliza-1
306
+ * tiers — every required artifact (speaker preset, fused FFI when
307
+ * `useFfiBackend`, bundle root) is checked up front and missing
308
+ * pieces surface as `VoiceStartupError`. There is no silent fallback
309
+ * to text-only, no log-and-continue.
310
+ *
311
+ * Idempotent guard: starting twice without `stopVoice()` between
312
+ * surfaces a hard error so callers do not double-allocate the
313
+ * scheduler.
314
+ */
315
+ startVoice(opts: EngineVoiceBridgeOptions): EngineVoiceBridge;
316
+ /**
317
+ * True when a voice session is currently active on the engine. Callers
318
+ * use this to decide whether to lazy-start one (e.g. the TTS model
319
+ * handler in `ensure-local-inference-handler.ts`, which auto-starts a
320
+ * Kokoro-only bridge on the first TEXT_TO_SPEECH invocation when the
321
+ * Kokoro artifacts are on disk and no Eliza-1 bundle has activated).
322
+ */
323
+ hasActiveVoiceBridge(): boolean;
324
+ /**
325
+ * Arm the voice lifecycle on the active bridge — lazily loads the TTS
326
+ * mmap region, optional ASR region when present, voice caches, and
327
+ * voice scheduler nodes via the shared resource registry. Throws
328
+ * `VoiceLifecycleError` if any
329
+ * required artifact is unavailable (RAM pressure, mmap fail, kernel
330
+ * missing) — see `voice/lifecycle.ts` for the structured codes.
331
+ *
332
+ * Required before sustained voice use; `startVoice()` only stands up
333
+ * the cold scheduler and bridge. Splitting setup from arming lets
334
+ * the engine keep the voice surface in voice-off (no heavy weights
335
+ * mapped) until the user actually toggles voice on.
336
+ */
337
+ armVoice(): Promise<void>;
338
+ /**
339
+ * Lazily start + arm voice for the active Eliza-1 bundle. Runtime model
340
+ * handlers use this when visible chat text needs local speech output; direct
341
+ * engine callers still use `startVoice()` / `armVoice()` explicitly when they
342
+ * need custom sinks or test backends.
343
+ */
344
+ ensureActiveBundleVoiceReady(): Promise<EngineVoiceBridge>;
345
+ private activateAssignedBundleForVoice;
346
+ private localAsrBlockersForBundle;
347
+ private assertLocalAsrEligible;
348
+ private assignedLocalAsrBundle;
349
+ canTranscribeLocally(): Promise<boolean>;
350
+ ensureActiveBundleAsrReady(): Promise<EngineVoiceBridge>;
351
+ private ensureActiveBundleAsrReadyOnce;
352
+ private ensureActiveBundleVoiceReadyOnce;
353
+ /**
354
+ * Assemble + run the full live voice loop on top of `startVoice()` /
355
+ * `armVoice()`: mic → (`pipeMicToRingBuffer` + `VadDetector.pushFrame`)
356
+ * per frame → `StreamingTranscriber.feed` (VAD-gated) → `VoiceTurnController`
357
+ * (speculative-on-pause, abort-on-resume, finalize/promote, barge-in) →
358
+ * `VoiceScheduler` → TTS → audio sink.
359
+ *
360
+ * Gated behind a complete real backend chain (AGENTS.md §3 — no silent
361
+ * backend-mode "voice"):
362
+ * - a `MicSource` (caller-supplied, or `DesktopMicSource` under Electrobun),
363
+ * - a Silero v5 GGML VAD (caller-supplied detector, or `createSileroVadDetector()` — runs through libelizainference's native VAD ABI),
364
+ * - a working ASR (the bridge's `createStreamingTranscriber` throws
365
+ * `AsrUnavailableError` when the fused decoder is unavailable — the
366
+ * fused build is the sole on-device ASR runtime),
367
+ * - a real OmniVoice TTS backend on the bridge (the `StubOmniVoiceBackend`
368
+ * is rejected — it emits zeros).
369
+ * Any missing piece fails loudly with the specific component named.
370
+ *
371
+ * `prewarm` defaults to `this.prewarmConversation(roomId, "")` (best-effort
372
+ * KV-prefill); a caller with the response-handler stable prefix (W6) should
373
+ * pass its own. `generate` is required — it builds the message and runs the
374
+ * runtime turn (streaming `replyText` into TTS via this engine's
375
+ * `generate({ onTextChunk })`, which routes through the voice scheduler).
376
+ */
377
+ startVoiceSession(opts: {
378
+ roomId: string;
379
+ /** Mic source. Defaults to a `DesktopMicSource` (Electrobun). */
380
+ micSource?: import("./voice/types").MicSource;
381
+ /** VAD detector. Defaults to `createSileroVadDetector()`. */
382
+ vad?: import("./voice/vad").VadDetector;
383
+ /** Run one turn: build the message + stream `replyText` into TTS. Required. */
384
+ generate: (request: import("./voice/turn-controller").VoiceGenerateRequest) => Promise<import("./voice/turn-controller").VoiceTurnOutcome>;
385
+ /**
386
+ * Semantic turn detector layered with VAD/STT. Defaults to the local
387
+ * LiveKit ONNX model when installed, otherwise the deterministic heuristic.
388
+ * Pass `false` only for tests/manual troubleshooting.
389
+ */
390
+ turnDetector?: import("./voice/eot-classifier").EotClassifier | false;
391
+ /** Optional local LiveKit turn-detector directory override. */
392
+ turnDetectorModelDir?: string;
393
+ /**
394
+ * Use the already-loaded eliza-1 text model as the EOT classifier — see
395
+ * `voice/eliza1-eot-scorer.ts`. When set, the runtime skips the
396
+ * separate LiveKit/Turnsense ONNX and reads P(`<end_of_turn>`) directly
397
+ * off the live model.
398
+ *
399
+ * `"auto"` (default): use eliza-1 EOT when `ELIZA_VOICE_EOT_BACKEND=eliza-1`
400
+ * or when no bundled LiveKit ONNX is resolvable; otherwise fall
401
+ * through to the existing LiveKit path. `true` forces eliza-1 EOT
402
+ * (throws if the active backend is not in-process). `false` forces
403
+ * the historical LiveKit path.
404
+ */
405
+ useEliza1Eot?: boolean | "auto";
406
+ /**
407
+ * Optional path to a fine-tuned EOT LoRA adapter to layer on top of
408
+ * the drafter at scoring time. The training recipe lives in
409
+ * `packages/training/scripts/turn_detector/`.
410
+ */
411
+ eliza1EotLoraPath?: string;
412
+ /** KV-prefill / response-handler-prefix prewarm. Defaults to `prewarmConversation`. */
413
+ prewarm?: (roomId: string) => void | Promise<void>;
414
+ speculatePauseMs?: number;
415
+ events?: import("./voice/turn-controller").VoiceTurnControllerEvents;
416
+ /**
417
+ * Opt-in openWakeWord hotword gate (local mode only — the
418
+ * local-inference engine never runs in cloud mode, and the connector
419
+ * UI hides this surface there per AGENTS.md §5 hide-not-disable).
420
+ * Disabled by default: voice mode works push-to-talk / VAD-gated
421
+ * without it. When `enabled` and the bundle ships the openWakeWord
422
+ * graphs, mic frames are also fanned into an `OpenWakeWordDetector`;
423
+ * each fresh detection prewarms the conversation and calls `onWake`
424
+ * (the same place a push-to-talk press would arm a listening window).
425
+ * Silently inert when the bundle has no wake-word model.
426
+ */
427
+ wakeWord?: {
428
+ enabled: boolean;
429
+ /** Wake phrase head name (defaults to the bundle's `hey-eliza`). */
430
+ head?: string;
431
+ /** P(wake) firing threshold (openWakeWord default ~0.5). */
432
+ threshold?: number;
433
+ /** Called once per detected utterance (refractory-debounced). */
434
+ onWake?: () => void;
435
+ };
436
+ /**
437
+ * Runtime reference for cancellation coordination (W3-9 F1).
438
+ *
439
+ * @deprecated G5.d: pass `runtime` to `startVoice()` (the
440
+ * `EngineVoiceBridgeOptions`) instead. The bridge is the canonical
441
+ * owner of `VoiceCancellationCoordinator` + `OptimisticGenerationPolicy`,
442
+ * and `startVoiceSession()` now delegates to the bridge's coordinator.
443
+ * When this field is supplied here without a matching bridge-level
444
+ * runtime, `startVoiceSession()` logs once and ignores it — the
445
+ * canonical wiring lives on the bridge.
446
+ */
447
+ runtime?: CoordinatorRuntime;
448
+ }): Promise<import("./voice/turn-controller").VoiceTurnController>;
449
+ /**
450
+ * Disarm the voice lifecycle — drains the ring buffer, settles the
451
+ * scheduler, and drops TTS/ASR weights from RAM via `evictPages()`
452
+ * (madvise / VirtualUnlock equivalent — see voice/engine-bridge.ts).
453
+ * No-op when not armed.
454
+ */
455
+ disarmVoice(): Promise<void>;
456
+ /**
457
+ * Tear down the active voice bridge. Idempotent; calling when no
458
+ * voice session is active is a no-op. Disarms the lifecycle first
459
+ * (drops voice weights via `evictPages`), then settles any in-flight
460
+ * TTS so audio committed to the ring buffer surfaces to the sink
461
+ * before the bridge is dropped.
462
+ */
463
+ stopVoice(): Promise<void>;
464
+ synthesizeSpeech(text: string, signal?: AbortSignal): Promise<Uint8Array>;
465
+ prewarmVoicePhrases(texts: ReadonlyArray<string>, opts?: {
466
+ concurrency?: number;
467
+ }): Promise<{
468
+ warmed: number;
469
+ cached: number;
470
+ }>;
471
+ /**
472
+ * Idle-time auto-prewarm: synthesize the canonical common-phrase seed so
473
+ * the phrase cache is warm before the next turn. No-op unless a real TTS
474
+ * backend is present and voice is armed. Callers (the voice bridge /
475
+ * connector) invoke this when the loop is idle.
476
+ */
477
+ prewarmIdleVoicePhrases(opts?: {
478
+ concurrency?: number;
479
+ }): Promise<{
480
+ warmed: number;
481
+ cached: number;
482
+ }>;
483
+ /**
484
+ * Play the first-audio filler (a short cached acknowledgement) — the seam
485
+ * W9's turn controller calls the instant VAD fires `speech-start` to mask
486
+ * first-token latency. Returns the played filler text, or `null` if none
487
+ * was played. No-op without a real TTS backend / armed voice.
488
+ */
489
+ playFirstAudioFiller(): string | null;
490
+ transcribePcm(args: TranscriptionAudio, signal?: AbortSignal, onPartial?: (delta: string) => void): Promise<string>;
491
+ /** Transcribe + per-word timings (fused ASR v12) through the voice bridge. */
492
+ transcribePcmTimed(args: TranscriptionAudio, signal?: AbortSignal): Promise<{
493
+ text: string;
494
+ words: AsrWordTiming[];
495
+ }>;
496
+ /**
497
+ * Run one fused mic→speech voice turn through the overlapped
498
+ * `VoicePipeline`: ASR → {MTP drafts ∥ target verifies} → phrase
499
+ * chunker → OmniVoice → PCM ring buffer, with rollback-on-reject and
500
+ * barge-in cancel. Requires `startVoice()` + `armVoice()` first.
501
+ *
502
+ * `opts.textRunner` lets a host that runs its own text engine in-process
503
+ * (the iOS/Android FFI path or the desktop FFI runtime) supply its own
504
+ * {@link MtpTextRunner}. When omitted, the active local dispatcher is
505
+ * used.
506
+ *
507
+ * Production caller: the on-device device bridge, via `runDeviceVoiceTurn`
508
+ * (`adapters/capacitor-llama/voice-turn.ts`), which wraps the loaded
509
+ * `CapacitorLlamaContext` in an `MtpTextRunner` and passes it here so the
510
+ * draft/verify loop runs on the on-device text model. The native mic
511
+ * capture hands `runDeviceVoiceTurn` the PCM; everything downstream is
512
+ * in-process JS + the fused FFI (no HTTP, no second voice path).
513
+ *
514
+ * Resolves with the turn's exit reason (`done` / `token-cap` /
515
+ * `cancelled`). A missing ASR region in voice mode surfaces as a
516
+ * `VoiceStartupError` — no silent cloud fallback (AGENTS.md §3).
517
+ */
518
+ runVoiceTurn(audio: TranscriptionAudio, opts?: {
519
+ maxDraftTokens?: number;
520
+ maxGeneratedTokens?: number;
521
+ events?: VoicePipelineEvents;
522
+ /**
523
+ * In-process text runner for the mobile FFI path. Must implement the
524
+ * same `MtpTextRunner` contract (`hasDrafter()` +
525
+ * `generateWithVerifierEvents()`); the AOSP/Capacitor bridge wraps
526
+ * its libllama-context-backed speculative loop in one.
527
+ */
528
+ textRunner?: MtpTextRunner;
529
+ }): Promise<"done" | "token-cap" | "cancelled">;
530
+ /**
531
+ * Active voice bridge, or null when voice mode is not running.
532
+ * Callers (router, UI, agent runtime) read this to decide whether to
533
+ * forward verifier events. Voice is mandatory for Eliza-1 tiers but
534
+ * the bridge is still created lazily — `startVoice()` MUST be called
535
+ * before `voice()` returns non-null.
536
+ */
537
+ voice(): EngineVoiceBridge | null;
538
+ private requireVoiceBridge;
539
+ private voiceStreamingArgs;
540
+ /**
541
+ * Forward a verifier-stream event into the voice scheduler. Accepted tokens flow into the
542
+ * phrase chunker; rejected ranges trigger the rollback queue. No-op
543
+ * when voice is not active so callers can fan out events
544
+ * unconditionally.
545
+ *
546
+ * When MTP produces an accepted text token, the phrase chunker MUST hand
547
+ * the chunk to TTS within the same scheduler tick.
548
+ */
549
+ pushVerifierEvent(event: VerifierStreamEvent): Promise<void>;
550
+ /**
551
+ * Mic VAD → barge-in. Per AGENTS.md §4, the PCM ring buffer MUST
552
+ * drain immediately and any in-flight TTS forward pass MUST be
553
+ * cancelled at the next kernel boundary. The scheduler enforces both
554
+ * — this is a thin pass-through.
555
+ */
556
+ triggerBargeIn(): void;
557
+ /**
558
+ * Test surface: fan an accepted-token list into the bridge in one
559
+ * call. Production callers should prefer `pushVerifierEvent` so the
560
+ * accept/reject discriminator stays explicit; this exists so the
561
+ * voice integration test can drive the scheduler without
562
+ * reconstructing `VerifierStreamEvent` boilerplate.
563
+ */
564
+ pushAcceptedTokens(tokens: ReadonlyArray<TextToken>): Promise<void>;
565
+ /**
566
+ * Active llama.cpp parallel slot count from the running FFI backend, or
567
+ * the configured default pool size when no model is loaded yet.
568
+ */
569
+ private activeParallel;
570
+ /**
571
+ * The in-process `Eliza1EotClassifier` required a node-bound `LlamaModel`
572
+ * forward pass, which the FFI runtime does not expose. Always null now —
573
+ * callers fall through to the GGUF (FFI) turn-detector and then the
574
+ * heuristic chain.
575
+ */
576
+ private tryBuildEliza1EotClassifier;
577
+ }
578
+ export declare const localInferenceEngine: LocalInferenceEngine;
579
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/services/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Orchestrator for the on-device artifact bundle the local-only / local
3
+ * runtime needs to operate: embedding, TTS, STT, and (when the user is not
4
+ * signed into Eliza Cloud) the text model. Called from:
5
+ *
6
+ * - `runtime/ensure-local-inference-handler.ts` — fire-and-forget at agent
7
+ * boot whenever the resolved runtime mode is `local` or `local-only`.
8
+ * - `ui/src/first-run/auto-download-recommended.ts` — when the user picks
9
+ * "Local" in the first-run runtime setup, after the local agent's
10
+ * `/api/health` reports ready.
11
+ * - `POST /api/local-inference/ensure` — on-demand re-trigger from the
12
+ * settings UI / a CLI.
13
+ *
14
+ * Today every Eliza-1 tier ships every component (text + voice + asr +
15
+ * embedding + embedded-draft-head MTP metadata + cache) as one HuggingFace bundle. The
16
+ * orchestrator picks a tier per artifact kind (always the same tier today —
17
+ * tier resolution is centralised on the recommender) and triggers parallel
18
+ * `service.startDownload(modelId)` calls per kind. The downloader is
19
+ * idempotent on the same `modelId`, so when the same tier covers multiple
20
+ * kinds we end up with one bundle download and a per-kind audit trail.
21
+ *
22
+ * When the architecture splits the bundle into separately addressable
23
+ * sub-archives, the per-kind selection in {@link modelIdForKind} is where the
24
+ * per-modality model id diverges — the rest of the orchestrator already wraps
25
+ * each artifact in its own `Promise.allSettled` slot.
26
+ *
27
+ * `signedInCloud === true` skips the `text` artifact: cloud-routed inference
28
+ * handles TEXT_LARGE / TEXT_SMALL, and we don't want a multi-gig text weight
29
+ * download imposed on a user who chose cloud routing. Embedding / TTS / STT
30
+ * always download — the local runtime serves those locally regardless of
31
+ * whether the text model is cloud-routed.
32
+ */
33
+ import type { Eliza1Tier } from "./manifest";
34
+ import type { LocalInferenceService } from "./service";
35
+ type RuntimeMode = "local" | "local-only" | "cloud" | "remote";
36
+ /**
37
+ * Artifact kinds the orchestrator can trigger. The label is consumer-facing
38
+ * (logs / API responses) and is intentionally distinct from the catalog's
39
+ * `ModelCategory` — the catalog labels a full chat tier as `"chat"`, while
40
+ * here we describe the on-device modality the artifact serves.
41
+ */
42
+ export type EnsureLocalArtifactKind = "embedding" | "tts" | "stt" | "text";
43
+ export type EnsureLocalArtifactStatus = "started" | "already-installed" | "skipped" | "failed";
44
+ export interface EnsureLocalArtifactOutcome {
45
+ kind: EnsureLocalArtifactKind;
46
+ modelId: string;
47
+ status: EnsureLocalArtifactStatus;
48
+ /** Free-text disambiguation. Populated for skipped / failed outcomes. */
49
+ reason?: string;
50
+ }
51
+ export interface EnsureLocalArtifactsArgs {
52
+ /** Resolved runtime mode (local | local-only | cloud | remote). */
53
+ mode: RuntimeMode;
54
+ /** Optional tier override; if omitted, picked from the device hardware probe. */
55
+ tier?: Eliza1Tier;
56
+ /** True when the user is signed into Eliza Cloud. Suppresses the text artifact. */
57
+ signedInCloud: boolean;
58
+ /** Optional service facade override (tests). */
59
+ service?: LocalInferenceService;
60
+ /** Optional logger. */
61
+ logger?: {
62
+ info: (...a: unknown[]) => void;
63
+ warn: (...a: unknown[]) => void;
64
+ };
65
+ }
66
+ export interface EnsureLocalArtifactsResult {
67
+ artifacts: EnsureLocalArtifactOutcome[];
68
+ /**
69
+ * True iff every required artifact is now either installed or actively
70
+ * downloading. False when any artifact slot failed; the per-artifact
71
+ * outcome carries the reason.
72
+ */
73
+ complete: boolean;
74
+ }
75
+ /**
76
+ * Trigger the parallel downloads of every artifact the local runtime needs
77
+ * to operate on this device. See the module docstring for the per-mode /
78
+ * per-cloud-state contract.
79
+ */
80
+ export declare function ensureLocalArtifacts(args: EnsureLocalArtifactsArgs): Promise<EnsureLocalArtifactsResult>;
81
+ export {};
82
+ //# sourceMappingURL=ensure-local-artifacts.d.ts.map