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

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 (701) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/package.json +82 -15
  4. package/src/actions/generate-media.d.ts +59 -0
  5. package/src/actions/generate-media.d.ts.map +1 -0
  6. package/src/actions/generate-media.ts +647 -0
  7. package/src/actions/identify-speaker.d.ts +23 -0
  8. package/src/actions/identify-speaker.d.ts.map +1 -0
  9. package/src/actions/identify-speaker.ts +171 -0
  10. package/src/actions/transcription-control.d.ts +29 -0
  11. package/src/actions/transcription-control.d.ts.map +1 -0
  12. package/src/actions/transcription-control.test.ts +100 -0
  13. package/src/actions/transcription-control.ts +127 -0
  14. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  15. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  16. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  17. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  18. package/src/adapters/capacitor-llama/environment.ts +71 -0
  19. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  20. package/src/adapters/capacitor-llama/index.ts +807 -0
  21. package/src/adapters/capacitor-llama/loader.ts +109 -0
  22. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  23. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  24. package/src/adapters/capacitor-llama/types.ts +374 -0
  25. package/src/backends/apple-foundation.ts +127 -0
  26. package/src/index.d.ts +8 -0
  27. package/src/index.d.ts.map +1 -0
  28. package/src/index.ts +62 -0
  29. package/src/local-inference-routes.d.ts +38 -0
  30. package/src/local-inference-routes.d.ts.map +1 -0
  31. package/src/local-inference-routes.test.ts +344 -0
  32. package/src/local-inference-routes.ts +1543 -0
  33. package/src/provider.d.ts +21 -0
  34. package/src/provider.d.ts.map +1 -0
  35. package/src/provider.ts +1082 -0
  36. package/src/routes/compat-helpers.d.ts +18 -0
  37. package/src/routes/compat-helpers.d.ts.map +1 -0
  38. package/src/routes/compat-helpers.ts +274 -0
  39. package/src/routes/family-member-route.d.ts +62 -0
  40. package/src/routes/family-member-route.d.ts.map +1 -0
  41. package/src/routes/family-member-route.ts +353 -0
  42. package/src/routes/index.d.ts +19 -0
  43. package/src/routes/index.d.ts.map +1 -0
  44. package/src/routes/index.ts +60 -0
  45. package/src/routes/live-diarization-route.d.ts +26 -0
  46. package/src/routes/live-diarization-route.d.ts.map +1 -0
  47. package/src/routes/live-diarization-route.test.ts +213 -0
  48. package/src/routes/live-diarization-route.ts +122 -0
  49. package/src/routes/local-inference-asr-route.d.ts +4 -0
  50. package/src/routes/local-inference-asr-route.d.ts.map +1 -0
  51. package/src/routes/local-inference-asr-route.test.ts +205 -0
  52. package/src/routes/local-inference-asr-route.ts +163 -0
  53. package/src/routes/local-inference-asr-transcribe.d.ts +20 -0
  54. package/src/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  55. package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
  56. package/src/routes/local-inference-asr-transcribe.ts +97 -0
  57. package/src/routes/local-inference-compat-routes.d.ts +16 -0
  58. package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
  59. package/src/routes/local-inference-compat-routes.test.ts +485 -0
  60. package/src/routes/local-inference-compat-routes.ts +808 -0
  61. package/src/routes/local-inference-tts-route.d.ts +7 -0
  62. package/src/routes/local-inference-tts-route.d.ts.map +1 -0
  63. package/src/routes/local-inference-tts-route.test.ts +179 -0
  64. package/src/routes/local-inference-tts-route.ts +230 -0
  65. package/src/routes/transcript-audio-store.d.ts +15 -0
  66. package/src/routes/transcript-audio-store.d.ts.map +1 -0
  67. package/src/routes/transcript-audio-store.ts +27 -0
  68. package/src/routes/transcripts-routes.d.ts +36 -0
  69. package/src/routes/transcripts-routes.d.ts.map +1 -0
  70. package/src/routes/transcripts-routes.test.ts +144 -0
  71. package/src/routes/transcripts-routes.ts +159 -0
  72. package/src/routes/voice-first-run-routes.d.ts +62 -0
  73. package/src/routes/voice-first-run-routes.d.ts.map +1 -0
  74. package/src/routes/voice-first-run-routes.ts +524 -0
  75. package/src/routes/voice-models-routes.d.ts +62 -0
  76. package/src/routes/voice-models-routes.d.ts.map +1 -0
  77. package/src/routes/voice-models-routes.ts +554 -0
  78. package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
  79. package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  80. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  81. package/src/routes/voice-profiles-management-routes.d.ts +52 -0
  82. package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
  83. package/src/routes/voice-profiles-management-routes.ts +476 -0
  84. package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
  85. package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  86. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  87. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  88. package/src/runtime/capacitor-llama.d.ts +25 -0
  89. package/src/runtime/embedding-manager-support.d.ts +77 -0
  90. package/src/runtime/embedding-manager-support.d.ts.map +1 -0
  91. package/src/runtime/embedding-manager-support.ts +497 -0
  92. package/src/runtime/embedding-presets.d.ts +16 -0
  93. package/src/runtime/embedding-presets.d.ts.map +1 -0
  94. package/src/runtime/embedding-presets.ts +81 -0
  95. package/src/runtime/embedding-warmup-policy.d.ts +14 -0
  96. package/src/runtime/embedding-warmup-policy.d.ts.map +1 -0
  97. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  98. package/src/runtime/embedding-warmup-policy.ts +48 -0
  99. package/src/runtime/ensure-local-inference-handler.d.ts +62 -0
  100. package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  101. package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
  102. package/src/runtime/ensure-local-inference-handler.ts +1448 -0
  103. package/src/runtime/index.d.ts +15 -0
  104. package/src/runtime/index.d.ts.map +1 -0
  105. package/src/runtime/index.ts +33 -0
  106. package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
  107. package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  108. package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
  109. package/src/runtime/mobile-local-inference-gate.ts +44 -0
  110. package/src/runtime/voice-entity-binding.d.ts +103 -0
  111. package/src/runtime/voice-entity-binding.d.ts.map +1 -0
  112. package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
  113. package/src/runtime/voice-entity-binding.ts +328 -0
  114. package/src/services/README.md +71 -0
  115. package/src/services/__tests__/backend-selector.test.ts +101 -0
  116. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  117. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  118. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  119. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  120. package/src/services/__tests__/runtime-target.test.ts +176 -0
  121. package/src/services/active-model-switch-rollback.test.ts +183 -0
  122. package/src/services/active-model.d.ts +282 -0
  123. package/src/services/active-model.d.ts.map +1 -0
  124. package/src/services/active-model.ts +1213 -0
  125. package/src/services/assignments.d.ts +71 -0
  126. package/src/services/assignments.d.ts.map +1 -0
  127. package/src/services/assignments.test.ts +80 -0
  128. package/src/services/assignments.ts +230 -0
  129. package/src/services/backend-selector.ts +95 -0
  130. package/src/services/backend.d.ts +346 -0
  131. package/src/services/backend.d.ts.map +1 -0
  132. package/src/services/backend.ts +612 -0
  133. package/src/services/bionic-host-loader.d.ts +46 -0
  134. package/src/services/bionic-host-loader.d.ts.map +1 -0
  135. package/src/services/bionic-host-loader.test.ts +133 -0
  136. package/src/services/bionic-host-loader.ts +180 -0
  137. package/src/services/bundled-models.d.ts +34 -0
  138. package/src/services/bundled-models.d.ts.map +1 -0
  139. package/src/services/bundled-models.ts +129 -0
  140. package/src/services/cache-bridge.d.ts +206 -0
  141. package/src/services/cache-bridge.d.ts.map +1 -0
  142. package/src/services/cache-bridge.test.ts +516 -0
  143. package/src/services/cache-bridge.ts +423 -0
  144. package/src/services/catalog.d.ts +10 -0
  145. package/src/services/catalog.d.ts.map +1 -0
  146. package/src/services/catalog.test.ts +238 -0
  147. package/src/services/catalog.ts +27 -0
  148. package/src/services/checkpoint-client.d.ts +109 -0
  149. package/src/services/checkpoint-client.d.ts.map +1 -0
  150. package/src/services/checkpoint-client.ts +258 -0
  151. package/src/services/checkpoint-manager.ts +474 -0
  152. package/src/services/cloud-fallback.d.ts +102 -0
  153. package/src/services/cloud-fallback.d.ts.map +1 -0
  154. package/src/services/cloud-fallback.ts +230 -0
  155. package/src/services/conversation-registry.d.ts +142 -0
  156. package/src/services/conversation-registry.d.ts.map +1 -0
  157. package/src/services/conversation-registry.test.ts +235 -0
  158. package/src/services/conversation-registry.ts +264 -0
  159. package/src/services/desktop-fused-ffi-backend-runtime.d.ts +95 -0
  160. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  161. package/src/services/desktop-fused-ffi-backend-runtime.ts +339 -0
  162. package/src/services/device-bridge.d.ts +188 -0
  163. package/src/services/device-bridge.d.ts.map +1 -0
  164. package/src/services/device-bridge.ts +1237 -0
  165. package/src/services/device-resource-metrics.d.ts +149 -0
  166. package/src/services/device-resource-metrics.d.ts.map +1 -0
  167. package/src/services/device-resource-metrics.test.ts +98 -0
  168. package/src/services/device-resource-metrics.ts +346 -0
  169. package/src/services/device-tier.d.ts +115 -0
  170. package/src/services/device-tier.d.ts.map +1 -0
  171. package/src/services/device-tier.test.ts +371 -0
  172. package/src/services/device-tier.ts +410 -0
  173. package/src/services/downloader.d.ts +82 -0
  174. package/src/services/downloader.d.ts.map +1 -0
  175. package/src/services/downloader.test.ts +747 -0
  176. package/src/services/downloader.ts +925 -0
  177. package/src/services/engine-direct-bundle.test.ts +58 -0
  178. package/src/services/engine-streaming.test.ts +80 -0
  179. package/src/services/engine.d.ts +540 -0
  180. package/src/services/engine.d.ts.map +1 -0
  181. package/src/services/engine.ts +1909 -0
  182. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  183. package/src/services/ensure-local-artifacts.test.ts +368 -0
  184. package/src/services/ensure-local-artifacts.ts +351 -0
  185. package/src/services/external-scanner.d.ts +17 -0
  186. package/src/services/external-scanner.d.ts.map +1 -0
  187. package/src/services/external-scanner.ts +312 -0
  188. package/src/services/ffi-llm-mock.ts +354 -0
  189. package/src/services/ffi-llm-streaming-abi.ts +442 -0
  190. package/src/services/ffi-streaming-backend.d.ts +180 -0
  191. package/src/services/ffi-streaming-backend.d.ts.map +1 -0
  192. package/src/services/ffi-streaming-backend.ts +382 -0
  193. package/src/services/ffi-streaming-runner.d.ts +122 -0
  194. package/src/services/ffi-streaming-runner.d.ts.map +1 -0
  195. package/src/services/ffi-streaming-runner.test.ts +60 -0
  196. package/src/services/ffi-streaming-runner.ts +354 -0
  197. package/src/services/ffi-unload-ordering.test.ts +162 -0
  198. package/src/services/gpu-autotune.ts +534 -0
  199. package/src/services/gpu-detect.d.ts +56 -0
  200. package/src/services/gpu-detect.d.ts.map +1 -0
  201. package/src/services/gpu-detect.ts +139 -0
  202. package/src/services/handler-registry.d.ts +72 -0
  203. package/src/services/handler-registry.d.ts.map +1 -0
  204. package/src/services/handler-registry.ts +240 -0
  205. package/src/services/hardware.d.ts +63 -0
  206. package/src/services/hardware.d.ts.map +1 -0
  207. package/src/services/hardware.test.ts +231 -0
  208. package/src/services/hardware.ts +410 -0
  209. package/src/services/hf-search.d.ts +26 -0
  210. package/src/services/hf-search.d.ts.map +1 -0
  211. package/src/services/hf-search.test.ts +69 -0
  212. package/src/services/hf-search.ts +420 -0
  213. package/src/services/image-description-runtime.d.ts +14 -0
  214. package/src/services/image-description-runtime.d.ts.map +1 -0
  215. package/src/services/image-description-runtime.test.ts +61 -0
  216. package/src/services/image-description-runtime.ts +118 -0
  217. package/src/services/imagegen/aosp-unavailable.d.ts +134 -0
  218. package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  219. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  220. package/src/services/imagegen/backend-selector.d.ts +118 -0
  221. package/src/services/imagegen/backend-selector.d.ts.map +1 -0
  222. package/src/services/imagegen/backend-selector.ts +277 -0
  223. package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
  224. package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  225. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  226. package/src/services/imagegen/errors.d.ts +16 -0
  227. package/src/services/imagegen/errors.d.ts.map +1 -0
  228. package/src/services/imagegen/errors.ts +40 -0
  229. package/src/services/imagegen/index.d.ts +58 -0
  230. package/src/services/imagegen/index.d.ts.map +1 -0
  231. package/src/services/imagegen/index.ts +144 -0
  232. package/src/services/imagegen/mflux.d.ts +74 -0
  233. package/src/services/imagegen/mflux.d.ts.map +1 -0
  234. package/src/services/imagegen/mflux.ts +313 -0
  235. package/src/services/imagegen/sd-cpp.d.ts +180 -0
  236. package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
  237. package/src/services/imagegen/sd-cpp.ts +718 -0
  238. package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  239. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  240. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  241. package/src/services/imagegen/types.d.ts +181 -0
  242. package/src/services/imagegen/types.d.ts.map +1 -0
  243. package/src/services/imagegen/types.ts +193 -0
  244. package/src/services/index.d.ts +29 -0
  245. package/src/services/index.d.ts.map +1 -0
  246. package/src/services/index.ts +211 -0
  247. package/src/services/inference-capabilities.d.ts +132 -0
  248. package/src/services/inference-capabilities.d.ts.map +1 -0
  249. package/src/services/inference-capabilities.test.ts +75 -0
  250. package/src/services/inference-capabilities.ts +204 -0
  251. package/src/services/inference-telemetry.d.ts +59 -0
  252. package/src/services/inference-telemetry.d.ts.map +1 -0
  253. package/src/services/inference-telemetry.ts +143 -0
  254. package/src/services/ios-llama-streaming.ts +248 -0
  255. package/src/services/kv-spill.d.ts +189 -0
  256. package/src/services/kv-spill.d.ts.map +1 -0
  257. package/src/services/kv-spill.test.ts +222 -0
  258. package/src/services/kv-spill.ts +356 -0
  259. package/src/services/latency-trace.d.ts +346 -0
  260. package/src/services/latency-trace.d.ts.map +1 -0
  261. package/src/services/latency-trace.test.ts +266 -0
  262. package/src/services/latency-trace.ts +844 -0
  263. package/src/services/llama-server-metrics.ts +304 -0
  264. package/src/services/llm-streaming-binding.d.ts +96 -0
  265. package/src/services/llm-streaming-binding.d.ts.map +1 -0
  266. package/src/services/llm-streaming-binding.ts +136 -0
  267. package/src/services/load-args.d.ts +82 -0
  268. package/src/services/load-args.d.ts.map +1 -0
  269. package/src/services/load-args.ts +81 -0
  270. package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
  271. package/src/services/manifest/index.d.ts +4 -0
  272. package/src/services/manifest/index.d.ts.map +1 -0
  273. package/src/services/manifest/index.ts +66 -0
  274. package/src/services/manifest/manifest.test.ts +689 -0
  275. package/src/services/manifest/schema.d.ts +713 -0
  276. package/src/services/manifest/schema.d.ts.map +1 -0
  277. package/src/services/manifest/schema.ts +653 -0
  278. package/src/services/manifest/types.d.ts +30 -0
  279. package/src/services/manifest/types.d.ts.map +1 -0
  280. package/src/services/manifest/types.ts +55 -0
  281. package/src/services/manifest/validator.d.ts +66 -0
  282. package/src/services/manifest/validator.d.ts.map +1 -0
  283. package/src/services/manifest/validator.ts +567 -0
  284. package/src/services/memory-arbiter.d.ts +318 -0
  285. package/src/services/memory-arbiter.d.ts.map +1 -0
  286. package/src/services/memory-arbiter.test.ts +419 -0
  287. package/src/services/memory-arbiter.ts +925 -0
  288. package/src/services/memory-monitor.d.ts +122 -0
  289. package/src/services/memory-monitor.d.ts.map +1 -0
  290. package/src/services/memory-monitor.test.ts +208 -0
  291. package/src/services/memory-monitor.ts +297 -0
  292. package/src/services/memory-pressure.d.ts +130 -0
  293. package/src/services/memory-pressure.d.ts.map +1 -0
  294. package/src/services/memory-pressure.ts +414 -0
  295. package/src/services/mtp-doctor.d.ts +13 -0
  296. package/src/services/mtp-doctor.d.ts.map +1 -0
  297. package/src/services/mtp-doctor.ts +78 -0
  298. package/src/services/network-policy.d.ts +127 -0
  299. package/src/services/network-policy.d.ts.map +1 -0
  300. package/src/services/network-policy.ts +346 -0
  301. package/src/services/paths.d.ts +6 -0
  302. package/src/services/paths.d.ts.map +1 -0
  303. package/src/services/paths.ts +25 -0
  304. package/src/services/planner-skeleton.d.ts +124 -0
  305. package/src/services/planner-skeleton.d.ts.map +1 -0
  306. package/src/services/planner-skeleton.ts +175 -0
  307. package/src/services/providers.d.ts +38 -0
  308. package/src/services/providers.d.ts.map +1 -0
  309. package/src/services/providers.ts +507 -0
  310. package/src/services/ram-budget-cache.test.ts +163 -0
  311. package/src/services/ram-budget.d.ts +110 -0
  312. package/src/services/ram-budget.d.ts.map +1 -0
  313. package/src/services/ram-budget.ts +0 -0
  314. package/src/services/readiness.d.ts +9 -0
  315. package/src/services/readiness.d.ts.map +1 -0
  316. package/src/services/readiness.test.ts +87 -0
  317. package/src/services/readiness.ts +238 -0
  318. package/src/services/recommendation.d.ts +111 -0
  319. package/src/services/recommendation.d.ts.map +1 -0
  320. package/src/services/recommendation.ts +671 -0
  321. package/src/services/registry.d.ts +35 -0
  322. package/src/services/registry.d.ts.map +1 -0
  323. package/src/services/registry.ts +151 -0
  324. package/src/services/router-handler.d.ts +92 -0
  325. package/src/services/router-handler.d.ts.map +1 -0
  326. package/src/services/router-handler.test.ts +45 -0
  327. package/src/services/router-handler.ts +407 -0
  328. package/src/services/routing-policy.d.ts +69 -0
  329. package/src/services/routing-policy.d.ts.map +1 -0
  330. package/src/services/routing-policy.test.ts +164 -0
  331. package/src/services/routing-policy.ts +297 -0
  332. package/src/services/routing-preferences.d.ts +8 -0
  333. package/src/services/routing-preferences.d.ts.map +1 -0
  334. package/src/services/routing-preferences.ts +17 -0
  335. package/src/services/runtime-target.d.ts +98 -0
  336. package/src/services/runtime-target.d.ts.map +1 -0
  337. package/src/services/runtime-target.ts +154 -0
  338. package/src/services/service.d.ts +128 -0
  339. package/src/services/service.d.ts.map +1 -0
  340. package/src/services/service.test.ts +223 -0
  341. package/src/services/service.ts +735 -0
  342. package/src/services/session-pool.d.ts +72 -0
  343. package/src/services/session-pool.d.ts.map +1 -0
  344. package/src/services/session-pool.ts +153 -0
  345. package/src/services/structured-output/deterministic-repair.d.ts +23 -0
  346. package/src/services/structured-output/deterministic-repair.d.ts.map +1 -0
  347. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  348. package/src/services/structured-output/deterministic-repair.ts +443 -0
  349. package/src/services/structured-output/index.ts +4 -0
  350. package/src/services/structured-output.d.ts +311 -0
  351. package/src/services/structured-output.d.ts.map +1 -0
  352. package/src/services/structured-output.test.ts +483 -0
  353. package/src/services/structured-output.ts +712 -0
  354. package/src/services/system-memory.d.ts +33 -0
  355. package/src/services/system-memory.d.ts.map +1 -0
  356. package/src/services/system-memory.test.ts +47 -0
  357. package/src/services/system-memory.ts +67 -0
  358. package/src/services/transcription-priority.test.ts +211 -0
  359. package/src/services/types.d.ts +19 -0
  360. package/src/services/types.d.ts.map +1 -0
  361. package/src/services/types.ts +55 -0
  362. package/src/services/verify-on-device.d.ts +34 -0
  363. package/src/services/verify-on-device.d.ts.map +1 -0
  364. package/src/services/verify-on-device.test.ts +87 -0
  365. package/src/services/verify-on-device.ts +127 -0
  366. package/src/services/verify.d.ts +8 -0
  367. package/src/services/verify.d.ts.map +1 -0
  368. package/src/services/verify.ts +13 -0
  369. package/src/services/vision/aosp-unavailable.d.ts +115 -0
  370. package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
  371. package/src/services/vision/aosp-unavailable.ts +163 -0
  372. package/src/services/vision/capacitor-llama.d.ts +99 -0
  373. package/src/services/vision/capacitor-llama.d.ts.map +1 -0
  374. package/src/services/vision/capacitor-llama.ts +255 -0
  375. package/src/services/vision/cloud-fallback.d.ts +47 -0
  376. package/src/services/vision/cloud-fallback.d.ts.map +1 -0
  377. package/src/services/vision/cloud-fallback.test.ts +243 -0
  378. package/src/services/vision/cloud-fallback.ts +268 -0
  379. package/src/services/vision/fallback-chain.test.ts +86 -0
  380. package/src/services/vision/hash.d.ts +71 -0
  381. package/src/services/vision/hash.d.ts.map +1 -0
  382. package/src/services/vision/hash.ts +157 -0
  383. package/src/services/vision/index.d.ts +95 -0
  384. package/src/services/vision/index.d.ts.map +1 -0
  385. package/src/services/vision/index.ts +251 -0
  386. package/src/services/vision/llama-server.d.ts +73 -0
  387. package/src/services/vision/llama-server.d.ts.map +1 -0
  388. package/src/services/vision/llama-server.ts +177 -0
  389. package/src/services/vision/types.d.ts +153 -0
  390. package/src/services/vision/types.d.ts.map +1 -0
  391. package/src/services/vision/types.ts +154 -0
  392. package/src/services/vision/vast-fallback.d.ts +18 -0
  393. package/src/services/vision/vast-fallback.d.ts.map +1 -0
  394. package/src/services/vision/vast-fallback.ts +127 -0
  395. package/src/services/vision-embedding-cache.d.ts +98 -0
  396. package/src/services/vision-embedding-cache.d.ts.map +1 -0
  397. package/src/services/vision-embedding-cache.ts +189 -0
  398. package/src/services/voice/VOICE_WORKBENCH.md +88 -0
  399. package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
  400. package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -0
  401. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  402. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  403. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  404. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  405. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  406. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  407. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  408. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  409. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  410. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  411. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
  412. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  413. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  414. package/src/services/voice/asr-timed.real.test.ts +141 -0
  415. package/src/services/voice/audio-frame-consumer.d.ts +212 -0
  416. package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
  417. package/src/services/voice/audio-frame-consumer.test.ts +343 -0
  418. package/src/services/voice/audio-frame-consumer.ts +491 -0
  419. package/src/services/voice/barge-in.d.ts +112 -0
  420. package/src/services/voice/barge-in.d.ts.map +1 -0
  421. package/src/services/voice/barge-in.test.ts +244 -0
  422. package/src/services/voice/barge-in.ts +336 -0
  423. package/src/services/voice/cancellation-coordinator.d.ts +127 -0
  424. package/src/services/voice/cancellation-coordinator.d.ts.map +1 -0
  425. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  426. package/src/services/voice/cancellation-coordinator.ts +269 -0
  427. package/src/services/voice/checkpoint-manager.d.ts +199 -0
  428. package/src/services/voice/checkpoint-manager.d.ts.map +1 -0
  429. package/src/services/voice/checkpoint-manager.ts +401 -0
  430. package/src/services/voice/checkpoint-policy.ts +336 -0
  431. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  432. package/src/services/voice/e2e-harness.test.ts +182 -0
  433. package/src/services/voice/e2e-harness.ts +743 -0
  434. package/src/services/voice/eager-context-builder.d.ts +170 -0
  435. package/src/services/voice/eager-context-builder.d.ts.map +1 -0
  436. package/src/services/voice/eager-context-builder.ts +262 -0
  437. package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
  438. package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  439. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  440. package/src/services/voice/embedding-server.ts +200 -0
  441. package/src/services/voice/embedding.d.ts +133 -0
  442. package/src/services/voice/embedding.d.ts.map +1 -0
  443. package/src/services/voice/embedding.test.ts +131 -0
  444. package/src/services/voice/embedding.ts +243 -0
  445. package/src/services/voice/emotion-attribution.d.ts +68 -0
  446. package/src/services/voice/emotion-attribution.d.ts.map +1 -0
  447. package/src/services/voice/emotion-attribution.test.ts +129 -0
  448. package/src/services/voice/emotion-attribution.ts +361 -0
  449. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  450. package/src/services/voice/engine-bridge.d.ts +759 -0
  451. package/src/services/voice/engine-bridge.d.ts.map +1 -0
  452. package/src/services/voice/engine-bridge.test.ts +384 -0
  453. package/src/services/voice/engine-bridge.ts +2302 -0
  454. package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
  455. package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  456. package/src/services/voice/eot-classifier-ggml.ts +566 -0
  457. package/src/services/voice/eot-classifier.d.ts +214 -0
  458. package/src/services/voice/eot-classifier.d.ts.map +1 -0
  459. package/src/services/voice/eot-classifier.ts +533 -0
  460. package/src/services/voice/errors.d.ts +20 -0
  461. package/src/services/voice/errors.d.ts.map +1 -0
  462. package/src/services/voice/errors.ts +32 -0
  463. package/src/services/voice/expressive-tags.d.ts +158 -0
  464. package/src/services/voice/expressive-tags.d.ts.map +1 -0
  465. package/src/services/voice/expressive-tags.ts +405 -0
  466. package/src/services/voice/ffi-bindings.d.ts +674 -0
  467. package/src/services/voice/ffi-bindings.d.ts.map +1 -0
  468. package/src/services/voice/ffi-bindings.test.ts +728 -0
  469. package/src/services/voice/ffi-bindings.ts +3225 -0
  470. package/src/services/voice/first-line-cache.d.ts +181 -0
  471. package/src/services/voice/first-line-cache.d.ts.map +1 -0
  472. package/src/services/voice/first-line-cache.ts +725 -0
  473. package/src/services/voice/fused-eot-scorer.d.ts +51 -0
  474. package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
  475. package/src/services/voice/fused-eot-scorer.ts +135 -0
  476. package/src/services/voice/index.d.ts +91 -0
  477. package/src/services/voice/index.d.ts.map +1 -0
  478. package/src/services/voice/index.ts +481 -0
  479. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
  480. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -0
  481. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  482. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  483. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  484. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  485. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  486. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +231 -0
  487. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  488. package/src/services/voice/kokoro/index.ts +79 -0
  489. package/src/services/voice/kokoro/kokoro-backend.d.ts +72 -0
  490. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  491. package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
  492. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  493. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  494. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  495. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  496. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  497. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  498. package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  499. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  500. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  501. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  502. package/src/services/voice/kokoro/phonemizer.d.ts +50 -0
  503. package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  504. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  505. package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
  506. package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  507. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  508. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  509. package/src/services/voice/kokoro/runtime-selection.d.ts +92 -0
  510. package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  511. package/src/services/voice/kokoro/runtime-selection.ts +237 -0
  512. package/src/services/voice/kokoro/types.d.ts +82 -0
  513. package/src/services/voice/kokoro/types.d.ts.map +1 -0
  514. package/src/services/voice/kokoro/types.ts +95 -0
  515. package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
  516. package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  517. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  518. package/src/services/voice/kokoro/voices.d.ts +30 -0
  519. package/src/services/voice/kokoro/voices.d.ts.map +1 -0
  520. package/src/services/voice/kokoro/voices.ts +64 -0
  521. package/src/services/voice/lifecycle.d.ts +135 -0
  522. package/src/services/voice/lifecycle.d.ts.map +1 -0
  523. package/src/services/voice/lifecycle.test.ts +315 -0
  524. package/src/services/voice/lifecycle.ts +301 -0
  525. package/src/services/voice/live-diarization-session.d.ts +96 -0
  526. package/src/services/voice/live-diarization-session.d.ts.map +1 -0
  527. package/src/services/voice/live-diarization-session.ts +289 -0
  528. package/src/services/voice/mic-source.d.ts +136 -0
  529. package/src/services/voice/mic-source.d.ts.map +1 -0
  530. package/src/services/voice/mic-source.test.ts +210 -0
  531. package/src/services/voice/mic-source.ts +503 -0
  532. package/src/services/voice/optimistic-policy.d.ts +109 -0
  533. package/src/services/voice/optimistic-policy.d.ts.map +1 -0
  534. package/src/services/voice/optimistic-policy.test.ts +101 -0
  535. package/src/services/voice/optimistic-policy.ts +192 -0
  536. package/src/services/voice/optimistic-rollback.ts +343 -0
  537. package/src/services/voice/partial-stabilizer.d.ts +73 -0
  538. package/src/services/voice/partial-stabilizer.d.ts.map +1 -0
  539. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  540. package/src/services/voice/partial-stabilizer.ts +140 -0
  541. package/src/services/voice/phoneme-tokenizer.d.ts +49 -0
  542. package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  543. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  544. package/src/services/voice/phrase-cache.d.ts +76 -0
  545. package/src/services/voice/phrase-cache.d.ts.map +1 -0
  546. package/src/services/voice/phrase-cache.test.ts +242 -0
  547. package/src/services/voice/phrase-cache.ts +186 -0
  548. package/src/services/voice/phrase-chunker.d.ts +62 -0
  549. package/src/services/voice/phrase-chunker.d.ts.map +1 -0
  550. package/src/services/voice/phrase-chunker.test.ts +239 -0
  551. package/src/services/voice/phrase-chunker.ts +281 -0
  552. package/src/services/voice/pipeline-impls.d.ts +151 -0
  553. package/src/services/voice/pipeline-impls.d.ts.map +1 -0
  554. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  555. package/src/services/voice/pipeline-impls.test.ts +292 -0
  556. package/src/services/voice/pipeline-impls.ts +315 -0
  557. package/src/services/voice/pipeline.d.ts +216 -0
  558. package/src/services/voice/pipeline.d.ts.map +1 -0
  559. package/src/services/voice/pipeline.ts +505 -0
  560. package/src/services/voice/prefill-client.d.ts +123 -0
  561. package/src/services/voice/prefill-client.d.ts.map +1 -0
  562. package/src/services/voice/prefill-client.ts +316 -0
  563. package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
  564. package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  565. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  566. package/src/services/voice/profile-store.d.ts +248 -0
  567. package/src/services/voice/profile-store.d.ts.map +1 -0
  568. package/src/services/voice/profile-store.ts +887 -0
  569. package/src/services/voice/real-audio-decode.test.ts +148 -0
  570. package/src/services/voice/ring-buffer.d.ts +40 -0
  571. package/src/services/voice/ring-buffer.d.ts.map +1 -0
  572. package/src/services/voice/ring-buffer.test.ts +129 -0
  573. package/src/services/voice/ring-buffer.ts +123 -0
  574. package/src/services/voice/rollback-queue.d.ts +24 -0
  575. package/src/services/voice/rollback-queue.d.ts.map +1 -0
  576. package/src/services/voice/rollback-queue.ts +74 -0
  577. package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
  578. package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  579. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  580. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  581. package/src/services/voice/samantha-preset-regenerator.d.ts +87 -0
  582. package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  583. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  584. package/src/services/voice/scheduler.d.ts +146 -0
  585. package/src/services/voice/scheduler.d.ts.map +1 -0
  586. package/src/services/voice/scheduler.t2.test.ts +141 -0
  587. package/src/services/voice/scheduler.ts +927 -0
  588. package/src/services/voice/shared-resources.d.ts +190 -0
  589. package/src/services/voice/shared-resources.d.ts.map +1 -0
  590. package/src/services/voice/shared-resources.ts +320 -0
  591. package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  592. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  593. package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
  594. package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
  595. package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  596. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  597. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  598. package/src/services/voice/speaker/diarizer.d.ts +75 -0
  599. package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
  600. package/src/services/voice/speaker/diarizer.ts +218 -0
  601. package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
  602. package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  603. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  604. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  605. package/src/services/voice/speaker/encoder-ggml.d.ts +33 -0
  606. package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  607. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  608. package/src/services/voice/speaker/encoder.d.ts +37 -0
  609. package/src/services/voice/speaker/encoder.d.ts.map +1 -0
  610. package/src/services/voice/speaker/encoder.ts +105 -0
  611. package/src/services/voice/speaker-imprint.d.ts +83 -0
  612. package/src/services/voice/speaker-imprint.d.ts.map +1 -0
  613. package/src/services/voice/speaker-imprint.test.ts +185 -0
  614. package/src/services/voice/speaker-imprint.ts +312 -0
  615. package/src/services/voice/speaker-preset-cache.d.ts +77 -0
  616. package/src/services/voice/speaker-preset-cache.d.ts.map +1 -0
  617. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  618. package/src/services/voice/speaker-preset-cache.ts +195 -0
  619. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  620. package/src/services/voice/system-audio-sink.d.ts +73 -0
  621. package/src/services/voice/system-audio-sink.d.ts.map +1 -0
  622. package/src/services/voice/system-audio-sink.test.ts +29 -0
  623. package/src/services/voice/system-audio-sink.ts +366 -0
  624. package/src/services/voice/transcriber.d.ts +244 -0
  625. package/src/services/voice/transcriber.d.ts.map +1 -0
  626. package/src/services/voice/transcriber.test.ts +392 -0
  627. package/src/services/voice/transcriber.ts +704 -0
  628. package/src/services/voice/transcript-knowledge.d.ts +37 -0
  629. package/src/services/voice/transcript-knowledge.d.ts.map +1 -0
  630. package/src/services/voice/transcript-knowledge.test.ts +68 -0
  631. package/src/services/voice/transcript-knowledge.ts +75 -0
  632. package/src/services/voice/transcript-service.d.ts +41 -0
  633. package/src/services/voice/transcript-service.d.ts.map +1 -0
  634. package/src/services/voice/transcript-service.test.ts +137 -0
  635. package/src/services/voice/transcript-service.ts +141 -0
  636. package/src/services/voice/transcript-store.d.ts +53 -0
  637. package/src/services/voice/transcript-store.d.ts.map +1 -0
  638. package/src/services/voice/transcript-store.test.ts +153 -0
  639. package/src/services/voice/transcript-store.ts +132 -0
  640. package/src/services/voice/turn-controller.d.ts +183 -0
  641. package/src/services/voice/turn-controller.d.ts.map +1 -0
  642. package/src/services/voice/turn-controller.test.ts +575 -0
  643. package/src/services/voice/turn-controller.ts +596 -0
  644. package/src/services/voice/types.d.ts +643 -0
  645. package/src/services/voice/types.d.ts.map +1 -0
  646. package/src/services/voice/types.ts +699 -0
  647. package/src/services/voice/vad.d.ts +282 -0
  648. package/src/services/voice/vad.d.ts.map +1 -0
  649. package/src/services/voice/vad.test.ts +480 -0
  650. package/src/services/voice/vad.ts +827 -0
  651. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  652. package/src/services/voice/voice-budget.d.ts +241 -0
  653. package/src/services/voice/voice-budget.d.ts.map +1 -0
  654. package/src/services/voice/voice-budget.test.ts +418 -0
  655. package/src/services/voice/voice-budget.ts +635 -0
  656. package/src/services/voice/voice-duet.test.ts +375 -0
  657. package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
  658. package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  659. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  660. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  661. package/src/services/voice/voice-preset-format.d.ts +158 -0
  662. package/src/services/voice/voice-preset-format.d.ts.map +1 -0
  663. package/src/services/voice/voice-preset-format.ts +700 -0
  664. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  665. package/src/services/voice/voice-profile-artifact.d.ts +116 -0
  666. package/src/services/voice/voice-profile-artifact.d.ts.map +1 -0
  667. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  668. package/src/services/voice/voice-profile-artifact.ts +518 -0
  669. package/src/services/voice/voice-profile-routes.d.ts +83 -0
  670. package/src/services/voice/voice-profile-routes.d.ts.map +1 -0
  671. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  672. package/src/services/voice/voice-profile-routes.ts +425 -0
  673. package/src/services/voice/voice-scenario.ts +154 -0
  674. package/src/services/voice/voice-settings.d.ts +82 -0
  675. package/src/services/voice/voice-settings.d.ts.map +1 -0
  676. package/src/services/voice/voice-settings.ts +172 -0
  677. package/src/services/voice/voice-state-machine.d.ts +364 -0
  678. package/src/services/voice/voice-state-machine.d.ts.map +1 -0
  679. package/src/services/voice/voice-state-machine.ts +727 -0
  680. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  681. package/src/services/voice/voice-workbench-report.ts +326 -0
  682. package/src/services/voice/voice-workbench.test.ts +158 -0
  683. package/src/services/voice/voice.test.ts +1070 -0
  684. package/src/services/voice/wake-word-ggml.d.ts +101 -0
  685. package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
  686. package/src/services/voice/wake-word-ggml.ts +320 -0
  687. package/src/services/voice/wake-word.d.ts +255 -0
  688. package/src/services/voice/wake-word.d.ts.map +1 -0
  689. package/src/services/voice/wake-word.test.ts +298 -0
  690. package/src/services/voice/wake-word.ts +554 -0
  691. package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  692. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  693. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  694. package/src/services/voice-model-updater.d.ts +240 -0
  695. package/src/services/voice-model-updater.d.ts.map +1 -0
  696. package/src/services/voice-model-updater.ts +724 -0
  697. package/src/services/voice-prewarm.d.ts +3 -0
  698. package/src/services/voice-prewarm.d.ts.map +1 -0
  699. package/src/services/voice-prewarm.ts +51 -0
  700. package/dist/index.d.ts +0 -37
  701. package/dist/index.js +0 -1098
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Local image-generation (diffusion) types — WS3 deliverable.
3
+ *
4
+ * Two layers live here, mirroring the WS2 vision-describe split:
5
+ *
6
+ * 1. The **request/result** contract every WS3 backend implements
7
+ * (`ImageGenRequest`, `ImageGenResult`). Callers pass a text prompt
8
+ * and optional knobs; backends return PNG (or JPEG) bytes + metadata.
9
+ *
10
+ * 2. The **backend** interface (`ImageGenBackend`) that the
11
+ * `MemoryArbiter` (WS1) registers as a capability handler. One
12
+ * backend per per-platform diffusion runtime:
13
+ *
14
+ * - `sd-cpp` — stable-diffusion.cpp child-process binary
15
+ * (Linux + Windows + Android JNI).
16
+ * - `mflux` — MLX `mflux` Python venv (macOS Apple Silicon).
17
+ * - `coreml` — Capacitor bridge to Swift `apple/ml-stable-diffusion`
18
+ * (iOS only).
19
+ * - `tensorrt` — packaged `imagegen.exe` / `trtexec` wrapper
20
+ * (Windows NVIDIA).
21
+ * - `aosp` — bun:ffi to `eliza_llama_imagegen_*` symbols in
22
+ * libeliza-llama-shim (Android JNI; unavailable until shim ships).
23
+ * - `fake` — deterministic in-process backend used by tests.
24
+ *
25
+ * All backends implement the same `load → generate → dispose` shape so the
26
+ * arbiter can swap between them without caring how the diffusion runtime
27
+ * is wired.
28
+ *
29
+ * Cache contract:
30
+ *
31
+ * Image-gen requests do NOT go through `hashVisionInput` (that's the
32
+ * WS2 projector-token cache, which lives on image *inputs*). The
33
+ * request-side keying space is prompt + seed + steps + scheduler + …;
34
+ * if a cache lands here later it gets its own namespace (`hashImageGenRequest`)
35
+ * to avoid collisions with the WS2 vision-embedding cache. For now the
36
+ * capability has no result cache — diffusion is intrinsically expensive
37
+ * and most callers want a fresh sample, not a cached one.
38
+ */
39
+
40
+ /** Output container the backend writes. PNG is default; JPEG is opt-in. */
41
+ export type ImageGenMimeType = "image/png" | "image/jpeg";
42
+
43
+ /**
44
+ * Caller request to `generate`. All fields except `prompt` are optional —
45
+ * backends apply per-runtime defaults for missing knobs.
46
+ *
47
+ * Knob semantics (consistent across backends):
48
+ *
49
+ * - `width` / `height`: pixel resolution. Default 512×512 (SD 1.5 family) /
50
+ * 1024×1024 (SDXL / FLUX / Z-Image). Backends round to the nearest
51
+ * multiple of 8 (SD) or 16 (SDXL) when needed.
52
+ * - `steps`: denoising step count. 4 for FLUX schnell / Z-Image-Turbo
53
+ * (single-pass Turbo schedulers); 20 for SD 1.5 Euler-A; 25 for SDXL.
54
+ * - `guidanceScale`: classifier-free guidance. Ignored by FLUX schnell
55
+ * (CFG-free). 7.5 default for SD 1.5; 4.0 default for SDXL.
56
+ * - `seed`: PRNG seed. -1 / omitted → random; the backend returns the
57
+ * actual seed used in `ImageGenResult.seed` so the caller can replay.
58
+ * - `scheduler`: sampler name (`"euler-a"`, `"dpm++-2m"`, `"ddim"`,
59
+ * `"euler"`). Backends accept the strings their underlying runtime
60
+ * supports; unknown values raise `ImageGenBackendUnavailableError`.
61
+ */
62
+ export interface ImageGenRequest {
63
+ prompt: string;
64
+ negativePrompt?: string;
65
+ width?: number;
66
+ height?: number;
67
+ steps?: number;
68
+ guidanceScale?: number;
69
+ seed?: number;
70
+ scheduler?: string;
71
+ signal?: AbortSignal;
72
+ /**
73
+ * Optional per-step progress callback. Called once per denoising step
74
+ * with `{ step, total }`. Backends that can't surface step-level
75
+ * progress (Core ML batch fused path, TensorRT static engine) MAY
76
+ * call this once with `step === total` at completion instead of
77
+ * per-step. Never required.
78
+ */
79
+ onProgressChunk?: (progress: { step: number; total: number }) => void;
80
+ }
81
+
82
+ /**
83
+ * Backend response. `image` is the raw bytes (PNG by default); `mime`
84
+ * identifies the container. The metadata block carries enough state for
85
+ * the caller to attach to a chat turn, log to trajectories, or feed the
86
+ * result back into a vision-describe for the same agent.
87
+ */
88
+ export interface ImageGenResult {
89
+ image: Uint8Array;
90
+ mime: ImageGenMimeType;
91
+ /**
92
+ * The actual seed the diffusion run used. Always populated — the
93
+ * backend MUST resolve a random seed before sampling and report it
94
+ * here. This is what makes a generation reproducible.
95
+ */
96
+ seed: number;
97
+ metadata: {
98
+ /** The model id (catalog key) the run used (`"imagegen-sd-1_5-q5_0"`, etc.). */
99
+ model: string;
100
+ /** Echo of the prompt that was sampled. */
101
+ prompt: string;
102
+ /** Echo of the step count actually used (post-default-resolve). */
103
+ steps: number;
104
+ /** Echo of CFG actually applied. 0 for CFG-free models (FLUX schnell). */
105
+ guidanceScale: number;
106
+ /** End-to-end wall-clock time inside the backend. */
107
+ inferenceTimeMs: number;
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Per-load arguments for an image-gen backend. The arbiter's
113
+ * `load(modelKey)` only carries an opaque key; the binding resolves that
114
+ * key to real model+vae+clip+t5 paths through this struct, which
115
+ * `createImageGenCapabilityRegistration` populates from the catalog +
116
+ * `ELIZA_1_BUNDLE_EXTRAS.json`.
117
+ *
118
+ * Some diffusion families are single-file GGUFs once quantized, such as
119
+ * SD 1.5 Q5_0. Others stay split: stable-diffusion.cpp runs Z-Image
120
+ * with `--diffusion-model` plus separate Qwen LLM text encoder and VAE
121
+ * files. The optional paths below carry those companion assets.
122
+ */
123
+ export interface ImageGenLoadArgs {
124
+ /** Absolute path to the primary diffusion weights (GGUF / mlpackage / engine). */
125
+ modelPath: string;
126
+ /**
127
+ * Treat `modelPath` as a stable-diffusion.cpp `--diffusion-model` rather
128
+ * than a monolithic `--model`. Required for Z-Image/Flux-style split
129
+ * diffusion bundles.
130
+ */
131
+ splitDiffusionModel?: boolean;
132
+ /** Optional split VAE path. */
133
+ vae?: string;
134
+ /** Optional split CLIP-L / CLIP-G path. */
135
+ clip?: string;
136
+ /** Optional split T5 / Gemma text encoder path. */
137
+ t5?: string;
138
+ /** Optional split LLM text encoder path, e.g. Qwen3 for Z-Image. */
139
+ llm?: string;
140
+ /**
141
+ * Backend-specific acceleration hint. Accepts:
142
+ * - `"auto"` (default) — let the binding decide.
143
+ * - `"cpu"` — force CPU.
144
+ * - `"cuda"` / `"vulkan"` / `"metal"` / `"coreml"` / `"qnn"` /
145
+ * `"tensorrt"` — request a specific accelerator. Unsupported
146
+ * requests fall back to `auto`.
147
+ */
148
+ accelerator?:
149
+ | "auto"
150
+ | "cpu"
151
+ | "cuda"
152
+ | "vulkan"
153
+ | "metal"
154
+ | "coreml"
155
+ | "qnn"
156
+ | "tensorrt";
157
+ /** Cancel a slow load (model file read + weight upload). */
158
+ signal?: AbortSignal;
159
+ }
160
+
161
+ /**
162
+ * The contract every WS3 backend implements. The shape is intentionally
163
+ * narrow: the arbiter only ever calls `generate`. `dispose` is wrapped
164
+ * by the arbiter's `unload` so the backend can free GPU/VRAM and drop
165
+ * file descriptors / kill subprocesses on eviction.
166
+ */
167
+ export interface ImageGenBackend {
168
+ /** Stable identifier — matches the backend module name. */
169
+ readonly id: "sd-cpp" | "mflux" | "coreml" | "tensorrt" | "aosp" | "fake";
170
+ /**
171
+ * Best-effort capability check. Implementations return `false` for
172
+ * requests whose `width`/`height`/`scheduler` aren't supported by
173
+ * the loaded weights, so the arbiter can fall through to the next
174
+ * registered backend (selector order). Default backends accept
175
+ * anything reasonable; `supports` mostly matters for `coreml`
176
+ * (fixed resolution per `.mlpackage`) and `tensorrt` (fixed engine
177
+ * shape).
178
+ */
179
+ supports(request: ImageGenRequest): boolean;
180
+ generate(request: ImageGenRequest): Promise<ImageGenResult>;
181
+ /** Release the loaded weights / subprocess. Idempotent. */
182
+ dispose(): Promise<void>;
183
+ }
184
+
185
+ /**
186
+ * Capability handler loader. The arbiter calls it with a model key
187
+ * (e.g. `"imagegen-sd-1_5-q5_0"`); the implementation resolves to a
188
+ * real `ImageGenLoadArgs` from `ELIZA_1_BUNDLE_EXTRAS.json` + the
189
+ * installed bundle and returns a live backend.
190
+ */
191
+ export type ImageGenBackendLoader = (
192
+ modelKey: string,
193
+ ) => Promise<ImageGenBackend>;
@@ -0,0 +1,29 @@
1
+ export type { LocalInferenceLoader } from "./active-model";
2
+ export { assertVoiceBundleFitsHost, VoiceBundleDoesNotFitError, } from "./active-model";
3
+ export { type BackendDecision, BackendDispatcher, type BackendOverride, type BackendPlan, decideBackend, type GenerateArgs as BackendGenerateArgs, type GenerateResult, type LocalInferenceBackend, readBackendOverride, resolveCatalogForPlan, } from "./backend";
4
+ export { ELIZA_1_PLACEHOLDER_IDS, FIRST_RUN_DEFAULT_MODEL_ID, findCatalogModel, MODEL_CATALOG, } from "./catalog";
5
+ export { type CloudCandidate, type CloudFallbackOptions, classifyLocalError, type FallbackReason, findCloudCandidate, type LocalGenerateOutcome, makeCloudFallbackHandler, } from "./cloud-fallback";
6
+ export { buildDeviceResourceMetricsDevPayload, type DeviceBridgeStatus, type DeviceGenerationMetrics, type DeviceResourceMetricsDevPayload, deviceBridge, } from "./device-bridge";
7
+ export { type BatterySummary, DeviceResourceMetrics, type DeviceResourceSummary, type DeviceThermalState, type GenerationObservation, type LowPowerSummary, type ResourceSample, type RssSummary, type ThermalSummary, type ThermalTransition, } from "./device-resource-metrics";
8
+ export { classifyDeviceTier, DEVICE_TIER_ORDER, DEVICE_TIER_THRESHOLDS, type DeviceTier, type DeviceTierAssessment, effectiveModelMemoryGb, type RecommendedMode, TIER_WARNING_COPY, totalRamMb, } from "./device-tier";
9
+ export { LocalInferenceEngine, localInferenceEngine, resolveIdleUnloadMs, resolveMaxConcurrentSpeculativeResponses, } from "./engine";
10
+ export { type HandlerRegistration, handlerRegistry, type PublicRegistration, toPublicRegistration, } from "./handler-registry";
11
+ export { assessFit, probeHardware } from "./hardware";
12
+ export { createImageDescriptionRuntime, type ImageDescriptionRuntime, type ImageDescriptionRuntimeOptions, } from "./image-description-runtime";
13
+ export { type CapabilityProbes, defaultsForNoBinding, type InferenceCapabilities, probeCapabilities, type ResourceSnapshot, type ThermalState, type ThermalThrottleDecision, thermalThrottleDecision, } from "./inference-capabilities";
14
+ export { InferenceTelemetry, inferenceTelemetry, type TelemetryTags, } from "./inference-telemetry";
15
+ export { estimateQuantizedKvBytesPerToken, KV_SPILL_MIN_CONTEXT, type KvGeometry, type KvRestoreClass, type KvSpillPlan, KvSpillUnsupportedError, planKvSpill, } from "./kv-spill";
16
+ export { buildVoiceLatencyDevPayload, EndToEndLatencyTracer, endVoiceLatencyTurn, type HistogramSummary, LATENCY_DERIVED_KEYS, type LatencyCheckpoint, type LatencyDerived, type LatencyDerivedKey, type LatencyTrace, markVoiceLatency, type TracerOptions, VOICE_CHECKPOINTS, type VoiceCheckpoint, type VoiceLatencyDevPayload, voiceLatencyTracer, } from "./latency-trace";
17
+ export * from "./manifest/index";
18
+ export { type ArbiterCapability, type ArbiterEvent, type ArbiterEventListener, type ArbiterHandle, type CapabilityRegistration, getMemoryArbiter, MemoryArbiter, type MemoryArbiterOptions, setMemoryArbiter, tryGetMemoryArbiter, } from "./memory-arbiter";
19
+ export { type CapacitorPressureSource, capacitorPressureSource, compositePressureSource, type MemoryPressureEvent, type MemoryPressureLevel, type MemoryPressureListener, type MemoryPressureSource, nodeOsPressureSource, } from "./memory-pressure";
20
+ export { type MtpDoctorCheck, type MtpDoctorCheckStatus, type MtpDoctorReport, runMtpDoctor, } from "./mtp-doctor";
21
+ export { buildPlanActionsSkeleton, buildPlannerGuidedDecode, type PlannerAction, type PlannerGuidedDecode, planActionParameterSchema, } from "./planner-skeleton";
22
+ export { buildTextGenerationReadiness } from "./readiness";
23
+ export { assessCatalogModelFit, type BundleDefaultEligibility, canBundleBeDefaultOnDevice, catalogDownloadSizeBytes, catalogDownloadSizeGb, chooseSmallerFallbackModel, classifyRecommendationPlatform, deviceCapsFromProbe, type RecommendationPlatformClass, type RecommendedModelSelection, recommendForFirstRun, selectBestQuantizationVariant, selectRecommendedModelForSlot, selectRecommendedModels, } from "./recommendation";
24
+ export { type InferenceRuntimeMode, type InferenceRuntimeModeInput, inferencePlatformClass, inferenceRuntimeMode, isCapacitorNativeRuntime, readRuntimeModeEnvOverride, type SupportedHostPlatform, } from "./runtime-target";
25
+ export { LocalInferenceService, localInferenceService } from "./service";
26
+ export type { ActiveModelState, CatalogModel, DownloadEvent, DownloadJob, DownloadState, HardwareFitLevel, HardwareProbe, InstalledModel, LocalInferenceDownloadStatus, LocalInferenceReadiness, LocalInferenceSlotReadiness, LocalRuntimeAcceleration, LocalRuntimeBackend, LocalRuntimeKernel, LocalRuntimeOptimizations, ModelBucket, ModelCategory, ModelHubSnapshot, TextGenerationSlot, } from "./types";
27
+ export { VisionEmbeddingCache, type VisionEmbeddingCacheConfig, type VisionEmbeddingEntry, } from "./vision-embedding-cache";
28
+ export * from "./voice/index";
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ export type { LocalInferenceLoader } from "./active-model";
2
+ export {
3
+ assertVoiceBundleFitsHost,
4
+ VoiceBundleDoesNotFitError,
5
+ } from "./active-model";
6
+ export {
7
+ type BackendDecision,
8
+ BackendDispatcher,
9
+ type BackendOverride,
10
+ type BackendPlan,
11
+ decideBackend,
12
+ type GenerateArgs as BackendGenerateArgs,
13
+ type GenerateResult,
14
+ type LocalInferenceBackend,
15
+ readBackendOverride,
16
+ resolveCatalogForPlan,
17
+ } from "./backend";
18
+ export {
19
+ ELIZA_1_PLACEHOLDER_IDS,
20
+ FIRST_RUN_DEFAULT_MODEL_ID,
21
+ findCatalogModel,
22
+ MODEL_CATALOG,
23
+ } from "./catalog";
24
+ export {
25
+ type CloudCandidate,
26
+ type CloudFallbackOptions,
27
+ classifyLocalError,
28
+ type FallbackReason,
29
+ findCloudCandidate,
30
+ type LocalGenerateOutcome,
31
+ makeCloudFallbackHandler,
32
+ } from "./cloud-fallback";
33
+ export {
34
+ buildDeviceResourceMetricsDevPayload,
35
+ type DeviceBridgeStatus,
36
+ type DeviceGenerationMetrics,
37
+ type DeviceResourceMetricsDevPayload,
38
+ deviceBridge,
39
+ } from "./device-bridge";
40
+ export {
41
+ type BatterySummary,
42
+ DeviceResourceMetrics,
43
+ type DeviceResourceSummary,
44
+ type DeviceThermalState,
45
+ type GenerationObservation,
46
+ type LowPowerSummary,
47
+ type ResourceSample,
48
+ type RssSummary,
49
+ type ThermalSummary,
50
+ type ThermalTransition,
51
+ } from "./device-resource-metrics";
52
+ export {
53
+ classifyDeviceTier,
54
+ DEVICE_TIER_ORDER,
55
+ DEVICE_TIER_THRESHOLDS,
56
+ type DeviceTier,
57
+ type DeviceTierAssessment,
58
+ effectiveModelMemoryGb,
59
+ type RecommendedMode,
60
+ TIER_WARNING_COPY,
61
+ totalRamMb,
62
+ } from "./device-tier";
63
+ export {
64
+ LocalInferenceEngine,
65
+ localInferenceEngine,
66
+ resolveIdleUnloadMs,
67
+ resolveMaxConcurrentSpeculativeResponses,
68
+ } from "./engine";
69
+ export {
70
+ type HandlerRegistration,
71
+ handlerRegistry,
72
+ type PublicRegistration,
73
+ toPublicRegistration,
74
+ } from "./handler-registry";
75
+ export { assessFit, probeHardware } from "./hardware";
76
+ export {
77
+ createImageDescriptionRuntime,
78
+ type ImageDescriptionRuntime,
79
+ type ImageDescriptionRuntimeOptions,
80
+ } from "./image-description-runtime";
81
+ export {
82
+ type CapabilityProbes,
83
+ defaultsForNoBinding,
84
+ type InferenceCapabilities,
85
+ probeCapabilities,
86
+ type ResourceSnapshot,
87
+ type ThermalState,
88
+ type ThermalThrottleDecision,
89
+ thermalThrottleDecision,
90
+ } from "./inference-capabilities";
91
+ export {
92
+ InferenceTelemetry,
93
+ inferenceTelemetry,
94
+ type TelemetryTags,
95
+ } from "./inference-telemetry";
96
+ export {
97
+ estimateQuantizedKvBytesPerToken,
98
+ KV_SPILL_MIN_CONTEXT,
99
+ type KvGeometry,
100
+ type KvRestoreClass,
101
+ type KvSpillPlan,
102
+ KvSpillUnsupportedError,
103
+ planKvSpill,
104
+ } from "./kv-spill";
105
+ export {
106
+ buildVoiceLatencyDevPayload,
107
+ EndToEndLatencyTracer,
108
+ endVoiceLatencyTurn,
109
+ type HistogramSummary,
110
+ LATENCY_DERIVED_KEYS,
111
+ type LatencyCheckpoint,
112
+ type LatencyDerived,
113
+ type LatencyDerivedKey,
114
+ type LatencyTrace,
115
+ markVoiceLatency,
116
+ type TracerOptions,
117
+ VOICE_CHECKPOINTS,
118
+ type VoiceCheckpoint,
119
+ type VoiceLatencyDevPayload,
120
+ voiceLatencyTracer,
121
+ } from "./latency-trace";
122
+ export * from "./manifest/index";
123
+ export {
124
+ type ArbiterCapability,
125
+ type ArbiterEvent,
126
+ type ArbiterEventListener,
127
+ type ArbiterHandle,
128
+ type CapabilityRegistration,
129
+ getMemoryArbiter,
130
+ MemoryArbiter,
131
+ type MemoryArbiterOptions,
132
+ setMemoryArbiter,
133
+ tryGetMemoryArbiter,
134
+ } from "./memory-arbiter";
135
+ export {
136
+ type CapacitorPressureSource,
137
+ capacitorPressureSource,
138
+ compositePressureSource,
139
+ type MemoryPressureEvent,
140
+ type MemoryPressureLevel,
141
+ type MemoryPressureListener,
142
+ type MemoryPressureSource,
143
+ nodeOsPressureSource,
144
+ } from "./memory-pressure";
145
+ export {
146
+ type MtpDoctorCheck,
147
+ type MtpDoctorCheckStatus,
148
+ type MtpDoctorReport,
149
+ runMtpDoctor,
150
+ } from "./mtp-doctor";
151
+ export {
152
+ buildPlanActionsSkeleton,
153
+ buildPlannerGuidedDecode,
154
+ type PlannerAction,
155
+ type PlannerGuidedDecode,
156
+ planActionParameterSchema,
157
+ } from "./planner-skeleton";
158
+ export { buildTextGenerationReadiness } from "./readiness";
159
+ export {
160
+ assessCatalogModelFit,
161
+ type BundleDefaultEligibility,
162
+ canBundleBeDefaultOnDevice,
163
+ catalogDownloadSizeBytes,
164
+ catalogDownloadSizeGb,
165
+ chooseSmallerFallbackModel,
166
+ classifyRecommendationPlatform,
167
+ deviceCapsFromProbe,
168
+ type RecommendationPlatformClass,
169
+ type RecommendedModelSelection,
170
+ recommendForFirstRun,
171
+ selectBestQuantizationVariant,
172
+ selectRecommendedModelForSlot,
173
+ selectRecommendedModels,
174
+ } from "./recommendation";
175
+ export {
176
+ type InferenceRuntimeMode,
177
+ type InferenceRuntimeModeInput,
178
+ inferencePlatformClass,
179
+ inferenceRuntimeMode,
180
+ isCapacitorNativeRuntime,
181
+ readRuntimeModeEnvOverride,
182
+ type SupportedHostPlatform,
183
+ } from "./runtime-target";
184
+ export { LocalInferenceService, localInferenceService } from "./service";
185
+ export type {
186
+ ActiveModelState,
187
+ CatalogModel,
188
+ DownloadEvent,
189
+ DownloadJob,
190
+ DownloadState,
191
+ HardwareFitLevel,
192
+ HardwareProbe,
193
+ InstalledModel,
194
+ LocalInferenceDownloadStatus,
195
+ LocalInferenceReadiness,
196
+ LocalInferenceSlotReadiness,
197
+ LocalRuntimeAcceleration,
198
+ LocalRuntimeBackend,
199
+ LocalRuntimeKernel,
200
+ LocalRuntimeOptimizations,
201
+ ModelBucket,
202
+ ModelCategory,
203
+ ModelHubSnapshot,
204
+ TextGenerationSlot,
205
+ } from "./types";
206
+ export {
207
+ VisionEmbeddingCache,
208
+ type VisionEmbeddingCacheConfig,
209
+ type VisionEmbeddingEntry,
210
+ } from "./vision-embedding-cache";
211
+ export * from "./voice/index";
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Inference capability detection.
3
+ *
4
+ * Centralises "what does this device's local-inference stack expose"
5
+ * into one struct the runtime can read at startup. The shape mirrors
6
+ * the per-platform binding probes (Android + iOS + desktop FFI) so the
7
+ * runtime doesn't have to import each platform's adapter just to
8
+ * surface the bits.
9
+ *
10
+ * Consumed by:
11
+ * - the AOSP local-inference bootstrap, to choose the in-process FFI
12
+ * streaming path,
13
+ * - the desktop voice lifecycle service, to decide whether to wire the
14
+ * FFI streaming runner factory,
15
+ * - UI surfaces (model picker, voice toggle) that hide options the
16
+ * loaded build cannot honour.
17
+ *
18
+ * Naming:
19
+ * - `streamingLlm` — `eliza_inference_llm_stream_*` symbols are
20
+ * resolved and the build reports `_supported() === 1`.
21
+ * - `mtpSupported` — native MTP speculative decoding can actually run.
22
+ * - `omnivoiceStreaming` — `eliza_inference_tts_synthesize_stream` is
23
+ * present and supported.
24
+ * - `mmprojSupported` — the build carries the multi-modal projector
25
+ * and the device has the headroom to keep it resident.
26
+ * - `thermalState` — best-effort current thermal snapshot from the
27
+ * platform (`ProcessInfo.thermalState` on iOS,
28
+ * `PowerManager.getCurrentThermalStatus` on Android).
29
+ *
30
+ * All fields are read-only snapshots; the runtime re-probes on resume.
31
+ */
32
+ export type ThermalState = "nominal" | "fair" | "serious" | "critical";
33
+ export interface InferenceCapabilities {
34
+ streamingLlm: boolean;
35
+ mtpSupported: boolean;
36
+ omnivoiceStreaming: boolean;
37
+ mmprojSupported: boolean;
38
+ thermalState: ThermalState;
39
+ /** Platform tag for diagnostics + routing. */
40
+ platform: "android" | "ios" | "desktop" | "unknown";
41
+ }
42
+ /** Minimal probe surface — what the caller hands in. */
43
+ export interface CapabilityProbes {
44
+ /** True only when `eliza_inference_llm_stream_supported()` returns 1. */
45
+ llmStreamSupported(): boolean;
46
+ /** True only when `eliza_inference_tts_stream_supported()` returns 1. */
47
+ ttsStreamSupported(): boolean;
48
+ /** True only when the native MTP path is available for the loaded model. */
49
+ mtpResident(): boolean;
50
+ /** True only when the mmproj weights are present in the bundle. */
51
+ mmprojResident(): boolean;
52
+ /** Current thermal snapshot. May return `nominal` on platforms without a thermal API. */
53
+ thermalState(): ThermalState;
54
+ /** Platform tag. */
55
+ platform(): "android" | "ios" | "desktop" | "unknown";
56
+ }
57
+ /**
58
+ * Build a capability struct from a set of probes.
59
+ *
60
+ * Policy decisions encoded here:
61
+ * - Native MTP only fires when `llmStreamSupported` and the thermal state is
62
+ * at most `fair`.
63
+ * - mmproj is gated entirely on the bundle carrying it. Devices
64
+ * short on RAM can still load the chat model — they just lose the
65
+ * vision path; the picker UI uses this bit to grey out vision
66
+ * uploads.
67
+ * - omnivoice streaming is gated entirely on the FFI build: the JS
68
+ * side has no fallback path for streaming TTS, only for batch.
69
+ */
70
+ export declare function probeCapabilities(probes: CapabilityProbes): InferenceCapabilities;
71
+ /**
72
+ * Defaults probe: every flag off, platform `unknown`, thermal `nominal`.
73
+ * Used by the runtime when no FFI binding could be loaded (cloud-only
74
+ * fallback path). Surfaces as a single struct the UI can render
75
+ * without branching on "no probe registered".
76
+ */
77
+ export declare function defaultsForNoBinding(): InferenceCapabilities;
78
+ /**
79
+ * A live, *sampled* device-resource snapshot from the native probe
80
+ * (iOS `getResourceSnapshot`, Android `ResourceProbe.getResourceSnapshot`) — as
81
+ * opposed to the one-shot `InferenceCapabilities` probe. The Mobile Resource
82
+ * Workbench (issue #8800) samples these on an interval across a sustained
83
+ * workload to build a thermal/RSS/battery timeline. Every numeric field is
84
+ * `null` when the platform could not measure it — never a fabricated zero.
85
+ */
86
+ export interface ResourceSnapshot {
87
+ /** Current thermal state; `"unknown"` on platforms without a thermal API. */
88
+ thermalState: ThermalState | "unknown";
89
+ /** Whether the OS low-power / battery-saver mode is engaged, or null. */
90
+ lowPowerMode: boolean | null;
91
+ /** Process resident set size in MB, or null. */
92
+ residentMemoryMb: number | null;
93
+ /** Device-wide available RAM in MB, or null. */
94
+ availableRamMb: number | null;
95
+ /** Cumulative process CPU time in ms, or null. */
96
+ cpuTimeMs: number | null;
97
+ /** Battery level 0..100, or null. */
98
+ batteryLevelPct: number | null;
99
+ /** Sample timestamp in ms (epoch). */
100
+ capturedAtMs: number;
101
+ }
102
+ export interface ThermalThrottleDecision {
103
+ /**
104
+ * Whether speculative decoding (MTP) should be disabled for the next step.
105
+ * MTP burns extra compute for a latency win; under heat that trade flips.
106
+ */
107
+ throttleSpeculativeDecode: boolean;
108
+ /**
109
+ * Whether to proactively shed load (shrink batch / context, pause warmups)
110
+ * because the device is at the top of the thermal range.
111
+ */
112
+ reduceLoad: boolean;
113
+ reason: string;
114
+ }
115
+ /**
116
+ * Decide whether to throttle on-device inference for the current thermal /
117
+ * power state. Pure and synchronous so the streaming path can call it per token
118
+ * (the `ProcessInfo.thermalState` throttle hook the iOS streaming bridge still
119
+ * lists as a TODO) and the workbench can assert the policy without a device.
120
+ *
121
+ * - `serious` / `critical` thermal → stop speculative decoding (matches the
122
+ * existing one-shot MTP gate in `probeCapabilities`).
123
+ * - `critical` thermal → additionally shed load.
124
+ * - low-power mode → stop speculative decoding (honour the user's power intent).
125
+ * - `unknown` thermal with no low-power signal → do not throttle (don't
126
+ * penalise a device that simply lacks a thermal API).
127
+ */
128
+ export declare function thermalThrottleDecision(input: {
129
+ thermalState: ThermalState | "unknown";
130
+ lowPowerMode?: boolean | null;
131
+ }): ThermalThrottleDecision;
132
+ //# sourceMappingURL=inference-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference-capabilities.d.ts","sourceRoot":"","sources":["inference-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;CACpD;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,kBAAkB,IAAI,OAAO,CAAC;IAC9B,yEAAyE;IACzE,kBAAkB,IAAI,OAAO,CAAC;IAC9B,4EAA4E;IAC5E,WAAW,IAAI,OAAO,CAAC;IACvB,mEAAmE;IACnE,cAAc,IAAI,OAAO,CAAC;IAC1B,0FAA0F;IAC1F,YAAY,IAAI,YAAY,CAAC;IAC7B,oBAAoB;IACpB,QAAQ,IAAI,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;CACtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,gBAAgB,GACtB,qBAAqB,CAqBvB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAS5D;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAChC,6EAA6E;IAC7E,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,yEAAyE;IACzE,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gDAAgD;IAChD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,kDAAkD;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACvC;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CACf;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC9C,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B,GAAG,uBAAuB,CAsB1B"}
@@ -0,0 +1,75 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import {
3
+ defaultsForNoBinding,
4
+ probeCapabilities,
5
+ thermalThrottleDecision,
6
+ } from "./inference-capabilities";
7
+
8
+ describe("thermalThrottleDecision", () => {
9
+ it("does not throttle a cool device", () => {
10
+ const d = thermalThrottleDecision({ thermalState: "nominal" });
11
+ expect(d.throttleSpeculativeDecode).toBe(false);
12
+ expect(d.reduceLoad).toBe(false);
13
+ });
14
+
15
+ it("throttles speculative decode at serious and sheds load at critical", () => {
16
+ const serious = thermalThrottleDecision({ thermalState: "serious" });
17
+ expect(serious.throttleSpeculativeDecode).toBe(true);
18
+ expect(serious.reduceLoad).toBe(false);
19
+
20
+ const critical = thermalThrottleDecision({ thermalState: "critical" });
21
+ expect(critical.throttleSpeculativeDecode).toBe(true);
22
+ expect(critical.reduceLoad).toBe(true);
23
+ });
24
+
25
+ it("throttles under low-power mode even when cool", () => {
26
+ const d = thermalThrottleDecision({
27
+ thermalState: "nominal",
28
+ lowPowerMode: true,
29
+ });
30
+ expect(d.throttleSpeculativeDecode).toBe(true);
31
+ expect(d.reduceLoad).toBe(false);
32
+ });
33
+
34
+ it("does not throttle on an unknown thermal state without a low-power signal", () => {
35
+ const d = thermalThrottleDecision({ thermalState: "unknown" });
36
+ expect(d.throttleSpeculativeDecode).toBe(false);
37
+ expect(d.reduceLoad).toBe(false);
38
+ });
39
+
40
+ it("still honours low-power mode when thermal state is unknown", () => {
41
+ const d = thermalThrottleDecision({
42
+ thermalState: "unknown",
43
+ lowPowerMode: true,
44
+ });
45
+ expect(d.throttleSpeculativeDecode).toBe(true);
46
+ });
47
+ });
48
+
49
+ describe("probeCapabilities thermal gating (regression)", () => {
50
+ const probes = {
51
+ llmStreamSupported: () => true,
52
+ ttsStreamSupported: () => false,
53
+ mtpResident: () => true,
54
+ mmprojResident: () => false,
55
+ platform: () => "ios" as const,
56
+ };
57
+
58
+ it("keeps MTP on while cool but disables it under serious heat", () => {
59
+ expect(
60
+ probeCapabilities({ ...probes, thermalState: () => "fair" }).mtpSupported,
61
+ ).toBe(true);
62
+ expect(
63
+ probeCapabilities({ ...probes, thermalState: () => "serious" })
64
+ .mtpSupported,
65
+ ).toBe(false);
66
+ });
67
+
68
+ it("defaultsForNoBinding reports a safe all-off struct", () => {
69
+ const d = defaultsForNoBinding();
70
+ expect(d.streamingLlm).toBe(false);
71
+ expect(d.mtpSupported).toBe(false);
72
+ expect(d.thermalState).toBe("nominal");
73
+ expect(d.platform).toBe("unknown");
74
+ });
75
+ });