@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,206 @@
1
+ /**
2
+ * Cache bridge for the local-inference path.
3
+ *
4
+ * Translates the runtime's `ProviderCachePlan` (a provider-neutral cache
5
+ * plan emitted by `@elizaos/core`'s `buildProviderCachePlan`) into
6
+ * concrete behaviour for the two local backends:
7
+ *
8
+ * 1. Out-of-process llama-server (MTP / buun-llama-cpp): stable
9
+ * slot-id derivation + on-disk slot KV save/restore directory layout
10
+ * + TTL-based eviction by mtime.
11
+ * 2. In-process node-llama-cpp: a session pool (see
12
+ * `session-pool.ts`) keyed by `promptCacheKey`.
13
+ *
14
+ * This module is pure logic — no llama-server process management, no
15
+ * node-llama-cpp imports. All filesystem state is rooted under
16
+ * `local-inference/llama-cache/` so cleanup is easy and explicit.
17
+ */
18
+ /**
19
+ * TTLs for cached prefix data, mirroring the cloud-side semantics:
20
+ * - `short`: roughly the "default" Anthropic ephemeral cache window.
21
+ * - `long`: roughly the "1h" Anthropic ephemeral cache window.
22
+ * - `extended`: the OpenAI 24h prompt-cache retention window.
23
+ *
24
+ * Values are in milliseconds. Eviction uses file mtime, not access time,
25
+ * so a slot that is read repeatedly without being rewritten still ages
26
+ * out — which matches how llama-server writes the slot file each turn.
27
+ */
28
+ export interface CacheTtls {
29
+ short: number;
30
+ long: number;
31
+ extended?: number;
32
+ }
33
+ export declare const DEFAULT_CACHE_TTLS: CacheTtls;
34
+ /**
35
+ * Root directory for all local llama-cache state. Anything inside is
36
+ * Eliza-owned and safe to delete to reset the cache.
37
+ */
38
+ export declare function llamaCacheRoot(): string;
39
+ /**
40
+ * Per-model-hash cache directory. Slot save files for one model never
41
+ * collide with another model's; switching active model does not need to
42
+ * wipe the cache.
43
+ */
44
+ export declare function cacheRoot(modelHash: string): string;
45
+ /**
46
+ * llama-server `--slot-save-path` argument: the directory llama-server
47
+ * writes per-slot KV state into when a request includes
48
+ * `cache_prompt: true`. One directory per model hash.
49
+ */
50
+ export declare function slotSavePath(modelHash: string): string;
51
+ /**
52
+ * Stable model-fingerprint hash. Combines the absolute paths of the
53
+ * target / drafter GGUFs and the cache-type knobs so two distinct
54
+ * configurations don't share a slot directory.
55
+ */
56
+ export declare function buildModelHash(input: {
57
+ targetModelPath: string;
58
+ drafterModelPath?: string | null;
59
+ cacheTypeK?: string | null;
60
+ cacheTypeV?: string | null;
61
+ /** Optional extra discriminator (context size, parallel, etc.). */
62
+ extra?: string | null;
63
+ }): string;
64
+ /**
65
+ * Map a `promptCacheKey` to a llama-server slot id in [0, parallel).
66
+ *
67
+ * llama-server's `--parallel N` flag pre-allocates N decoding slots and
68
+ * accepts a `slot_id` integer in `[0, N-1]` on each request. By hashing
69
+ * the cache key into that range we get:
70
+ *
71
+ * - The same prefix hash always lands on the same slot, so the in-RAM
72
+ * KV cache from the previous turn is reused.
73
+ * - Different prefix hashes spread across slots and don't fight for
74
+ * the same KV memory.
75
+ *
76
+ * Pass `parallel <= 0` to disable slot pinning (returns -1, the
77
+ * llama-server "any free slot" sentinel).
78
+ */
79
+ export declare function deriveSlotId(promptCacheKey: string, parallel: number): number;
80
+ /**
81
+ * Convert the runtime-side `CacheTTL` enum + OpenAI extended retention
82
+ * hint into a concrete TTL in milliseconds. This is what the eviction
83
+ * sweep uses when deciding whether a slot file is still live.
84
+ */
85
+ export declare function ttlMsForKey(ttl: "short" | "long" | "extended" | undefined, ttls?: CacheTtls): number;
86
+ /** TTL classes that can be encoded into a slot `.bin` filename. */
87
+ export type SlotCacheTtlClass = "short" | "long" | "extended";
88
+ /**
89
+ * Build the basename for a persisted slot/conversation `.bin` file with
90
+ * its TTL class encoded as a middle component: `<base>.<ttl>.bin`. The
91
+ * eviction sweep reads that component back via `parseSlotCacheTtlClass`
92
+ * so a slot persisted with the long retention window isn't deleted on
93
+ * the short horizon (and vice versa). Pass `"long"` for cross-restart
94
+ * conversation KV — that matches the prior global (long-only) behaviour
95
+ * for those files.
96
+ */
97
+ export declare function slotCacheFileName(base: string, ttl: SlotCacheTtlClass): string;
98
+ /**
99
+ * Parse the TTL class encoded into a slot `.bin` filename by
100
+ * `slotCacheFileName`. Returns `undefined` for legacy / hand-written
101
+ * filenames without an encoded class — those keep the `long` horizon
102
+ * (the prior global behaviour for persisted slot files).
103
+ */
104
+ export declare function parseSlotCacheTtlClass(fileName: string): SlotCacheTtlClass | undefined;
105
+ /**
106
+ * Sweep the slot-save directory and delete files older than their
107
+ * per-file TTL horizon. The TTL class is read from the filename
108
+ * (`<base>.<ttl>.bin` — see `slotCacheFileName`); files without an
109
+ * encoded class use the `long` horizon (the prior global behaviour).
110
+ * Mtime is the watermark; llama-server rewrites the slot file on every
111
+ * save, so a slot that's actively used keeps a fresh mtime.
112
+ *
113
+ * Returns the number of files deleted. Missing directories are not
114
+ * errors — eviction on a clean install just no-ops.
115
+ */
116
+ export declare function evictExpired(rootDir: string, ttls?: CacheTtls, now?: number): Promise<number>;
117
+ export interface CacheStatsEntry {
118
+ file: string;
119
+ sizeBytes: number;
120
+ mtimeMs: number;
121
+ ageMs: number;
122
+ }
123
+ /**
124
+ * Snapshot of the on-disk slot-save directory. Used by the public
125
+ * `getLocalCacheStats()` debugging endpoint.
126
+ */
127
+ export declare function readCacheStats(rootDir: string, now?: number): Promise<CacheStatsEntry[]>;
128
+ /**
129
+ * Resolve `promptCacheKey` from a `providerOptions` payload as emitted
130
+ * by `buildProviderCachePlan`. The runtime stuffs it under
131
+ * `providerOptions.eliza.promptCacheKey`. Returns `null` when the key is
132
+ * missing or not a non-empty string — callers fall back to the default
133
+ * "_default" session in that case.
134
+ */
135
+ export declare function extractPromptCacheKey(providerOptions: unknown): string | null;
136
+ /**
137
+ * Resolve `prefixHash` from `providerOptions.eliza.prefixHash`. Mirrors
138
+ * `extractPromptCacheKey` — returns null when missing or not a non-empty
139
+ * string. The prefix hash covers ONLY the stable prompt prefix (system
140
+ * prompt + tool definitions + large constant context), so a runtime
141
+ * timestamp in the unstable tail does not invalidate it.
142
+ *
143
+ * Local backends prefer this over `promptCacheKey` when available because
144
+ * it gives the strongest "same prefix → same slot" guarantee: two
145
+ * conversations with byte-identical stable prefixes will land on the same
146
+ * slot regardless of how their tail content differs.
147
+ */
148
+ export declare function extractPrefixHash(providerOptions: unknown): string | null;
149
+ /**
150
+ * Stable annotation describing a single segment of the prompt as it was
151
+ * emitted by the runtime planner. The cache-bridge consumes this to
152
+ * compute a stable-prefix-only hash for slot pinning, without having to
153
+ * look at the (timestamp-laden) tail.
154
+ *
155
+ * Mirrors `PromptSegment` in @elizaos/core/src/types/model.ts but is kept
156
+ * standalone so the cache-bridge can be imported by the local-inference
157
+ * backends without a hard dep on `@elizaos/core`.
158
+ */
159
+ export interface AnnotatedPromptSegment {
160
+ content: string;
161
+ stable: boolean;
162
+ }
163
+ /**
164
+ * Hash the longest stable prefix of `segments`. Stops at the first
165
+ * unstable segment, so a runtime timestamp in the unstable tail never
166
+ * shifts the hash. Returns `null` when no stable segment exists, signaling
167
+ * to the caller that prefix-cache reuse cannot be derived purely from the
168
+ * prompt structure (fall back to the prompt-cache-key path instead).
169
+ *
170
+ * The hash is sha256-truncated to 16 hex chars, matching `buildModelHash`
171
+ * — short enough for log lines, wide enough that collision is not a
172
+ * realistic concern for any plausible number of concurrent prefixes.
173
+ */
174
+ export declare function hashStablePrefix(segments: readonly AnnotatedPromptSegment[]): string | null;
175
+ /**
176
+ * Extract the per-segment stable annotations from a `providerOptions`
177
+ * payload. The runtime emits these as `providerOptions.eliza.promptSegments`
178
+ * when a structured prompt is available — local backends use it to compute
179
+ * `hashStablePrefix` directly, without having to re-parse the prompt text.
180
+ *
181
+ * Returns `null` when the field is absent or malformed; callers fall back
182
+ * to `extractPromptCacheKey` / `extractPrefixHash`.
183
+ */
184
+ export declare function extractAnnotatedSegments(providerOptions: unknown): AnnotatedPromptSegment[] | null;
185
+ /**
186
+ * Resolve the conversation handle id from a `providerOptions` payload.
187
+ * The runtime stuffs it under `providerOptions.eliza.conversationId` when
188
+ * the calling context represents a long-lived conversation (chat handler,
189
+ * planner loop). When present, local backends should use it as the
190
+ * primary slot key — it's stable across turns regardless of prompt
191
+ * content drift, which gives the strongest possible cache reuse for
192
+ * agentic loops.
193
+ */
194
+ export declare function extractConversationId(providerOptions: unknown): string | null;
195
+ /**
196
+ * Resolve the stable per-call cache key for the local backends. Order of
197
+ * precedence:
198
+ * 1. Conversation id — strongest signal, identical across turns.
199
+ * 2. Annotated stable-prefix hash — survives unstable-tail drift.
200
+ * 3. `prefixHash` from the runtime cache plan — already stable-only via
201
+ * `cachePrefixSegments` upstream.
202
+ * 4. `promptCacheKey` (`v5:<prefixHash>`) — back-compat fallback.
203
+ * Returns null when none are available.
204
+ */
205
+ export declare function resolveLocalCacheKey(providerOptions: unknown): string | null;
206
+ //# sourceMappingURL=cache-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-bridge.d.ts","sourceRoot":"","sources":["../../src/services/cache-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Local inference catalog re-exports.
3
+ *
4
+ * The canonical catalog (Eliza-1 tier ids, default-eligibility set,
5
+ * `MODEL_CATALOG`, HuggingFace URL builders) lives in
6
+ * `@elizaos/shared/local-inference`. This shim preserves the historical
7
+ * import path `./catalog` for server-side code.
8
+ */
9
+ export { buildHuggingFaceResolveUrl, buildHuggingFaceResolveUrlForPath, DEFAULT_ELIGIBLE_MODEL_IDS, ELIZA_1_HF_REPO, ELIZA_1_HOSTED_MTP_TIER_IDS, ELIZA_1_MTP_TIER_IDS, ELIZA_1_PLACEHOLDER_IDS, ELIZA_1_RELEASE_TIER_IDS, ELIZA_1_TIER_IDS, ELIZA_1_TIER_PUBLISH_STATUS, ELIZA_1_VISION_TIER_IDS, type Eliza1TierId, eliza1TierPublishStatus, FIRST_RUN_DEFAULT_MODEL_ID, findCatalogModel, hasHuggingFaceToken, isDefaultEligibleId, isHuggingFaceHost, MODEL_CATALOG, resolveHfDownloadBase, resolveHubAuthHeaders, resolveHuggingFaceToken, } from "@elizaos/shared";
10
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/services/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,YAAY,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACvB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * REST client for upstream llama.cpp's per-slot KV checkpoint endpoints:
3
+ *
4
+ * - `POST /slots/<id>/save?filename=<name>` — snapshot the slot to disk
5
+ * - `POST /slots/<id>/restore?filename=<name>` — reload a snapshot
6
+ * - `DELETE /slots/<id>` — cancel in-flight decode
7
+ *
8
+ * Combined with the native runtime's context-checkpoint support, this is the
9
+ * substrate for the voice optimistic-rollback path:
10
+ * `OptimisticRollbackController` snapshots a slot on `speech-pause`, runs
11
+ * speculative generation against the partial transcript, and restores the
12
+ * snapshot if the user resumes within the rollback window.
13
+ *
14
+ * Upstream feature lands in `master`; our buun-llama-cpp fork hasn't merged
15
+ * the 44-file quant-id conflict yet. The JS code paths ship today behind a
16
+ * feature flag (`enableOptimisticRollback`, default `false`).
17
+ */
18
+ /**
19
+ * Handle returned from `saveCheckpoint`. Identifies a specific snapshot so
20
+ * later `restoreCheckpoint` / `deleteCheckpoint` calls reference the same
21
+ * file on disk regardless of upstream naming changes.
22
+ */
23
+ export interface CheckpointHandle {
24
+ /** Slot id that owns this checkpoint. */
25
+ slotId: number;
26
+ /** Filename passed to `?filename=`; also the on-disk identifier. */
27
+ filename: string;
28
+ /** ISO timestamp captured at save time, for telemetry / TTL. */
29
+ createdAt: string;
30
+ }
31
+ /**
32
+ * Minimal `fetch` shape. Avoids dragging a DOM lib reference into a Node
33
+ * codebase and lets tests inject a fake without monkey-patching globals.
34
+ */
35
+ export type CheckpointFetch = (input: string, init?: {
36
+ method?: string;
37
+ headers?: Record<string, string>;
38
+ body?: string;
39
+ signal?: AbortSignal;
40
+ }) => Promise<{
41
+ ok: boolean;
42
+ status: number;
43
+ statusText: string;
44
+ text(): Promise<string>;
45
+ }>;
46
+ /**
47
+ * Thrown when a checkpoint REST call returns a non-2xx response. Carries the
48
+ * HTTP status + the server's response body for diagnostic logging.
49
+ */
50
+ export declare class CheckpointHttpError extends Error {
51
+ readonly status: number;
52
+ readonly responseBody: string;
53
+ constructor(message: string, status: number, responseBody: string);
54
+ }
55
+ /**
56
+ * Constructor options for `CheckpointClient`. `baseUrl` is the same
57
+ * `http://host:port` the engine uses for `/v1/chat/completions`.
58
+ */
59
+ export interface CheckpointClientOptions {
60
+ baseUrl: string;
61
+ fetchImpl?: CheckpointFetch;
62
+ /**
63
+ * Default per-request timeout (ms). Individual calls may override via
64
+ * an explicit `AbortSignal`. The default is short — restore is the
65
+ * latency-critical path on a `speech-active` resume.
66
+ */
67
+ requestTimeoutMs?: number;
68
+ }
69
+ /**
70
+ * REST client for the per-slot checkpoint endpoints. Stateless — all
71
+ * checkpoint identity travels through the `CheckpointHandle` returned from
72
+ * `saveCheckpoint`.
73
+ */
74
+ export declare class CheckpointClient {
75
+ private readonly baseUrl;
76
+ private readonly fetchImpl;
77
+ private readonly requestTimeoutMs;
78
+ constructor(opts: CheckpointClientOptions);
79
+ /**
80
+ * Snapshot slot `slotId` to a file named `name`. The server keeps the
81
+ * file under `--slot-save-path`; the returned handle records both pieces
82
+ * so the caller can `restoreCheckpoint` later without re-deriving the
83
+ * filename.
84
+ */
85
+ saveCheckpoint(slotId: number, name: string, signal?: AbortSignal): Promise<CheckpointHandle>;
86
+ /**
87
+ * Restore slot `slotId` from a previously-saved file named `name`.
88
+ * Rejects with `CheckpointHttpError` when the server reports the
89
+ * checkpoint missing.
90
+ */
91
+ restoreCheckpoint(slotId: number, name: string, signal?: AbortSignal): Promise<void>;
92
+ /**
93
+ * Cancel any in-flight generation on slot `slotId`. Maps to upstream
94
+ * `DELETE /slots/<id>`. Used by `OptimisticRollbackController` to abort
95
+ * the speculative drafter when the VAD reports the user resumed
96
+ * speaking.
97
+ */
98
+ cancelSlot(slotId: number, signal?: AbortSignal): Promise<void>;
99
+ /**
100
+ * Probe whether the server advertises the checkpoint endpoints. Hits
101
+ * `/health` and looks for the upstream capability advertisement.
102
+ * Conservative: returns `false` whenever the probe cannot prove support
103
+ * (network error, unexpected JSON, no capability marker). The caller
104
+ * should treat `false` as "feature off — run without rollback".
105
+ */
106
+ probeSupported(signal?: AbortSignal): Promise<boolean>;
107
+ private request;
108
+ }
109
+ //# sourceMappingURL=checkpoint-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-client.d.ts","sourceRoot":"","sources":["../../src/services/checkpoint-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,KACG,OAAO,CAAC;IACZ,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAMjE;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,EAAE,uBAAuB;IAMzC;;;;;OAKG;IACG,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAe5B;;;;OAIG;IACG,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC;IAUhB;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YAuB9C,OAAO;CAmCrB"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Feature-flagged + capability-detected wrapper around the REST-backed
3
+ * `CheckpointManager` from `voice/checkpoint-manager.ts`.
4
+ *
5
+ * Why two layers?
6
+ *
7
+ * - `voice/checkpoint-manager.ts` is the production primitive: REST adapter
8
+ * + handle bookkeeping + mock implementation. It is referenced directly
9
+ * by `voice/voice-state-machine.ts` and by `voice/prefill-client.ts`,
10
+ * both of which expect callers to have already decided whether the
11
+ * feature is on.
12
+ *
13
+ * - This module is the *runtime gate*. It owns:
14
+ * 1. The process-wide feature flag (`ELIZA_CTX_CHECKPOINTS=1` env, or
15
+ * `useCtxCheckpoints` constructor option — env wins when set).
16
+ * 2. Capability detection against a running checkpoint runtime (`/health`
17
+ * probe via the underlying `CheckpointClient`).
18
+ * 3. A no-op fallback path so callers — the `checkpoint-policy.ts`
19
+ * module in particular — can write unconditional `save / restore /
20
+ * erase / cancel` calls without branching on the flag.
21
+ * 4. A named-handle registry with TTL eviction. The upstream server
22
+ * has its own LRU on `--ctx-checkpoints N`; this registry tracks
23
+ * *our* names → handles so the policy module can refer to
24
+ * `'pre-speculative-T123'` instead of opaque filenames.
25
+ *
26
+ * When the upstream merge lands, flip `ELIZA_CTX_CHECKPOINTS=1` and the
27
+ * wrapper starts forwarding to the REST manager. Until then, every call
28
+ * short-circuits to a logged no-op.
29
+ *
30
+ * Feature-flag behavior matrix:
31
+ *
32
+ * | flag | runtime-supports | save | restore | erase | cancel |
33
+ * | OFF | n/a | no-op + warn | no-op + warn | no-op | SSE-disconnect cb |
34
+ * | ON | NO (probe=fail)| no-op + warn | no-op + warn | no-op | SSE-disconnect cb |
35
+ * | ON | YES (probe=ok) | REST POST /slots/.../save | REST POST /slots/.../restore | n/a | DELETE /slots/<id> |
36
+ *
37
+ * The stream-disconnect callback is supplied by the caller (the voice loop
38
+ * owns the stream and the abort handle); when the flag/probe is off the
39
+ * wrapper just invokes the callback synchronously.
40
+ *
41
+ * This module deliberately does NOT modify `turn-controller.ts`,
42
+ * `pipeline.ts`, `pipeline-impls.ts`, `vad.ts`, `scheduler.ts`,
43
+ * `phrase-chunker.ts`, `barge-in.ts`, `transcriber.ts`, or anything under
44
+ * `voice/kokoro/` / `voice/streaming-asr/`. Those files are owned by other
45
+ * agents; the policy in `voice/checkpoint-policy.ts` is the integration
46
+ * point.
47
+ */
48
+ import { type CheckpointFetch } from "./checkpoint-client";
49
+ import { type CheckpointHandle } from "./voice/checkpoint-manager";
50
+ export type { CheckpointHandle, CheckpointManagerLike, } from "./voice/checkpoint-manager";
51
+ /**
52
+ * Env-var name that flips the JS-side feature on. The matching server-side
53
+ * `--ctx-checkpoints` flag is appended by the native runtime when the catalog
54
+ * tier declares `optimizations.ctxCheckpoints` and the binding supports it.
55
+ */
56
+ export declare const CTX_CHECKPOINTS_ENV_VAR = "ELIZA_CTX_CHECKPOINTS";
57
+ /**
58
+ * Default TTL for entries in the named registry. The upstream server runs
59
+ * its own LRU on `--ctx-checkpoints N` (default 8 per slot); this TTL is
60
+ * for *our* name → handle mapping so a stale name doesn't keep a handle
61
+ * pinned forever. 10 minutes covers any plausible mid-conversation pause
62
+ * with margin; anything older than that the policy module should re-save
63
+ * rather than reuse.
64
+ */
65
+ export declare const DEFAULT_NAMED_HANDLE_TTL_MS: number;
66
+ /**
67
+ * Read the process-wide feature flag. Truthy values: `1`, `true`, `yes`.
68
+ * Anything else (including absent) is `false`.
69
+ */
70
+ export declare function readCtxCheckpointsEnvFlag(): boolean;
71
+ /**
72
+ * Caller-supplied "abort the in-flight stream for this slot" hook. The
73
+ * voice loop owns the actual stream handle (held by `turn-controller.ts` via
74
+ * the speculative `AbortController`); the policy module hands a thunk in
75
+ * here so `cancel(slotId)` works identically with the flag on or off.
76
+ */
77
+ export type SseDisconnectFn = (slotId: number) => void;
78
+ export interface GatedCheckpointManagerOptions {
79
+ /**
80
+ * `http://host:port` base URL of the running checkpoint runtime. May be `null`
81
+ * before the caller starts the server — every method then routes through
82
+ * the no-op path until `setBaseUrl` is called.
83
+ */
84
+ baseUrl: string | null;
85
+ /**
86
+ * Explicit override for the feature flag. When unset, the env var
87
+ * (`ELIZA_CTX_CHECKPOINTS`) is consulted. When set, the env var is
88
+ * ignored. Tests pass `false` to assert the no-op path; production code
89
+ * leaves this `undefined` so the env var wins.
90
+ */
91
+ useCtxCheckpoints?: boolean;
92
+ /**
93
+ * Optional custom fetch (mostly for unit tests). Forwarded to
94
+ * `CheckpointClient`.
95
+ */
96
+ fetchImpl?: CheckpointFetch;
97
+ /** Per-request timeout for REST calls (ms). Default 1500ms. */
98
+ requestTimeoutMs?: number;
99
+ /**
100
+ * Optional slot-id resolver. Forwarded to the underlying
101
+ * `CheckpointManager`. Default is the 31-bit hash → `% 256` resolver
102
+ * defined in `voice/checkpoint-manager.ts`.
103
+ */
104
+ resolveSlotId?: (slotIdString: string) => number;
105
+ /**
106
+ * TTL (ms) for entries in the named handle registry. Default 10 minutes.
107
+ * Set to 0 to disable TTL eviction (entries live until explicitly
108
+ * cleared).
109
+ */
110
+ namedHandleTtlMs?: number;
111
+ /** Injected clock for tests. Defaults to `Date.now`. */
112
+ now?: () => number;
113
+ }
114
+ /**
115
+ * Process-wide gate around the REST-backed `CheckpointManager`. Owns the
116
+ * feature flag, capability detection cache, named-handle registry, and a
117
+ * fallback path for `cancel` that calls back into the voice loop's SSE
118
+ * disconnect when REST is not available.
119
+ *
120
+ * Stateless w.r.t. checkpoint data — handles live in the underlying
121
+ * REST manager / on the runtime's slot-save directory. Stateful
122
+ * w.r.t. names: the registry maps human-readable names like
123
+ * `'pre-speculative-T123'` to the underlying `CheckpointHandle`.
124
+ */
125
+ export declare class GatedCheckpointManager {
126
+ private readonly explicitFlag;
127
+ private readonly fetchImpl?;
128
+ private readonly requestTimeoutMs?;
129
+ private readonly resolveSlotId?;
130
+ private readonly namedHandleTtlMs;
131
+ private readonly now;
132
+ private readonly named;
133
+ private baseUrl;
134
+ /** Lazy: built on first use once `baseUrl` is non-null. */
135
+ private restManager;
136
+ /** Lazy: built on first capability probe. */
137
+ private capabilityClient;
138
+ /** Cached capability probe result. Cleared on `setBaseUrl`. */
139
+ private serverSupportsCheckpoints;
140
+ constructor(opts: GatedCheckpointManagerOptions);
141
+ /**
142
+ * Whether the JS-side feature flag is on. Does NOT check capability —
143
+ * call `detectCapability()` for the combined gate.
144
+ */
145
+ isFeatureFlagOn(): boolean;
146
+ /**
147
+ * Combined gate: feature flag AND base URL set AND server probe (cached)
148
+ * returned true. Callers that want the up-to-the-second view should call
149
+ * `detectCapability(true)` to force a re-probe.
150
+ */
151
+ isEnabled(): boolean;
152
+ /**
153
+ * Update the base URL after a server (re)start. Clears the capability
154
+ * cache so the next `detectCapability()` re-probes.
155
+ */
156
+ setBaseUrl(baseUrl: string | null): void;
157
+ /**
158
+ * Probe the runtime for checkpoint support. Caches the result; pass
159
+ * `force=true` to re-probe (e.g. after the server reports a restart).
160
+ * Returns `false` when the feature flag is off — the probe is short-
161
+ * circuited because there's no point asking the server when the JS side
162
+ * isn't going to call the endpoints anyway.
163
+ */
164
+ detectCapability(force?: boolean): Promise<boolean>;
165
+ /**
166
+ * Snapshot the slot's KV state under `name`. Registers `name → handle`
167
+ * in the registry so later `restore(slotId, name)` / `erase(slotId,
168
+ * name)` calls can look the handle up. Replaces any prior entry with the
169
+ * same name. No-op (returns `null`) when the gate is off.
170
+ *
171
+ * Naming convention: callers should encode the conversation/turn id
172
+ * into the name so multiple slots don't collide
173
+ * (`pre-speculative-T123`, not `pre-speculative`).
174
+ */
175
+ save(slotId: number, name: string): Promise<CheckpointHandle | null>;
176
+ /**
177
+ * Restore the slot from a previously-saved snapshot. The `handle`
178
+ * argument may be:
179
+ *
180
+ * - A `CheckpointHandle` returned from a prior `save()` — pass it
181
+ * directly; the manager goes straight to the REST endpoint.
182
+ * - A string `name` — looked up in the registry. Returns `false` if
183
+ * the name is unknown or has expired; callers can fall back to
184
+ * re-running the speculative draft from scratch.
185
+ *
186
+ * Returns `true` on success, `false` on no-op / unknown handle. Never
187
+ * throws for the "feature off" path; REST errors do propagate.
188
+ */
189
+ restore(slotId: number, handleOrName: CheckpointHandle | string): Promise<boolean>;
190
+ /**
191
+ * Erase the named entry from the local registry AND ask the underlying
192
+ * REST manager to discard the checkpoint. No-op when the gate is off or
193
+ * the name is unknown. The upstream server has no per-file delete today
194
+ * (see comments in `voice/checkpoint-manager.ts`), so `discard` actually
195
+ * cancels in-flight decode on the slot — semantically "drop everything
196
+ * speculative".
197
+ */
198
+ erase(slotId: number, handleOrName: CheckpointHandle | string): Promise<void>;
199
+ /**
200
+ * Cancel any in-flight generation on `slotId`. When the gate is on this
201
+ * is `DELETE /slots/<id>`; when off it falls back to the SSE-disconnect
202
+ * callback the voice loop supplied (so the speculative draft is still
203
+ * aborted, just via the existing path).
204
+ */
205
+ cancel(slotId: number, sseDisconnect: SseDisconnectFn): Promise<void>;
206
+ /** Look up a previously-registered name. */
207
+ getNamedHandle(name: string): CheckpointHandle | null;
208
+ /** Number of live entries in the named registry. */
209
+ registrySize(): number;
210
+ /** Clear the entire registry. Useful on conversation end / server restart. */
211
+ clearRegistry(): void;
212
+ private resolveHandle;
213
+ private evictExpired;
214
+ private getRestManager;
215
+ private getCapabilityClient;
216
+ }
217
+ //# sourceMappingURL=checkpoint-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-manager.d.ts","sourceRoot":"","sources":["../../src/services/checkpoint-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Soft cloud-fallback wrapper for local-inference TEXT_LARGE / TEXT_SMALL.
3
+ *
4
+ * Why this exists: on mobile (AOSP / iOS) the local llama backend has very
5
+ * different failure modes from a desktop process. The model GGUF may not be
6
+ * staged yet, the FFI dlopen may have failed, the device may be in low-power
7
+ * mode and refuse to prefill, or the user may have explicitly disabled the
8
+ * local engine. We do not want any of those states to surface as a
9
+ * "No handler found for delegate type: TEXT_LARGE" runtime error — when an
10
+ * Anthropic / OpenAI / Eliza Cloud handler is also registered, the runtime
11
+ * should transparently fall through to cloud.
12
+ *
13
+ * Design constraints (per AGENTS.md):
14
+ * - No silent try/catch. The wrapper distinguishes "ran successfully" from
15
+ * "ran and decided to fallback" via an EXPLICIT typed return:
16
+ * { kind: "ok"; text: string }
17
+ * | { kind: "fallback"; reason: FallbackReason }
18
+ * Callers branch on `kind`. The wrapper does NOT swallow errors —
19
+ * any unhandled throw bubbles up to the runtime.
20
+ * - Local errors are CLASSIFIED. Unrecoverable bugs (programming errors,
21
+ * out-of-memory, OS kill signals) propagate. Recoverable conditions
22
+ * (model not staged, abort, downstream provider transient) trigger
23
+ * fallback.
24
+ * - Cloud forwarding is registry-driven. We look up the next-highest
25
+ * priority handler from the runtime's model registry rather than
26
+ * hardcoding "anthropic" or "openai". That keeps the wrapper neutral
27
+ * to which cloud is paired.
28
+ */
29
+ import type { GenerateTextParams, IAgentRuntime, JsonValue, ModelTypeName } from "@elizaos/core";
30
+ export type FallbackReason =
31
+ /** Local backend reported it can't serve this request at all (no model, FFI dlopen failed, etc). */
32
+ "local-unavailable"
33
+ /** Local backend was busy, queued past a deadline, or refused (thermal, low-power). */
34
+ | "local-overloaded"
35
+ /** Local backend errored during prefill or decode. */
36
+ | "local-error"
37
+ /** Caller cancelled before local could finish; cloud may still serve. */
38
+ | "local-aborted-pre-completion"
39
+ /** Local handler isn't registered on this runtime build. */
40
+ | "local-not-registered";
41
+ export type LocalGenerateOutcome = {
42
+ kind: "ok";
43
+ text: string;
44
+ } | {
45
+ kind: "fallback";
46
+ reason: FallbackReason;
47
+ cause?: Error;
48
+ };
49
+ /**
50
+ * Classify a thrown error as a fallback-eligible failure or a hard bug that
51
+ * should propagate. The split is conservative: only well-known recoverable
52
+ * shapes flip to fallback; anything else bubbles up so the operator sees the
53
+ * real failure instead of a silent rotation to cloud.
54
+ */
55
+ export declare function classifyLocalError(err: unknown): {
56
+ fallback: boolean;
57
+ reason: FallbackReason;
58
+ };
59
+ /**
60
+ * Locate a cloud TEXT_* handler in the runtime's model registry that is NOT
61
+ * the supplied `localProvider`. The runtime stores handlers per-modelType
62
+ * sorted by priority; we walk the list and skip our own provider so we
63
+ * delegate to cloud instead of recursing into local.
64
+ */
65
+ export type RuntimeWithModelLookup = IAgentRuntime & {
66
+ models: Map<string, Array<{
67
+ provider: string;
68
+ priority: number;
69
+ handler: (runtime: IAgentRuntime, params: Record<string, JsonValue | object>) => Promise<JsonValue | object>;
70
+ }>>;
71
+ };
72
+ export interface CloudCandidate {
73
+ provider: string;
74
+ priority: number;
75
+ handler: (runtime: IAgentRuntime, params: Record<string, JsonValue | object>) => Promise<JsonValue | object>;
76
+ }
77
+ export declare function findCloudCandidate(runtime: IAgentRuntime, modelType: ModelTypeName | string, excludeProvider: string): CloudCandidate | null;
78
+ export interface CloudFallbackOptions {
79
+ /** Provider id of the local handler being wrapped (e.g. "eliza-aosp-llama"). */
80
+ localProvider: string;
81
+ /** Model type this wrapper services (TEXT_LARGE, TEXT_SMALL, etc). */
82
+ modelType: ModelTypeName | string;
83
+ /**
84
+ * The local handler we wrap. Returns `{ kind: "ok" }` on success;
85
+ * `{ kind: "fallback", reason }` to delegate to cloud.
86
+ */
87
+ localGenerate: (runtime: IAgentRuntime, params: GenerateTextParams) => Promise<LocalGenerateOutcome>;
88
+ /** Optional logger; defaults to `console`-style no-op so we stay framework-free. */
89
+ log?: (message: string, detail?: Record<string, unknown>) => void;
90
+ }
91
+ /**
92
+ * Build a registered-handler-shape function that:
93
+ * 1. Calls `localGenerate`.
94
+ * 2. If `localGenerate` returns `{ kind: "ok" }`, returns that text.
95
+ * 3. If it returns `{ kind: "fallback" }`, looks up the next-best cloud
96
+ * handler for the same modelType and forwards to it. If no cloud
97
+ * handler exists, throws a typed error with the fallback reason.
98
+ *
99
+ * The returned function is suitable for `runtime.registerModel`.
100
+ */
101
+ export declare function makeCloudFallbackHandler(opts: CloudFallbackOptions): (runtime: IAgentRuntime, params: Record<string, JsonValue | object>) => Promise<string>;
102
+ //# sourceMappingURL=cloud-fallback.d.ts.map