@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,127 @@
1
+ /**
2
+ * Engine-backed `verifyOnDevice` hook for the Eliza-1 downloader
3
+ * (`packages/inference/AGENTS.md` §7): after a bundle is materialized and
4
+ * every file's sha256 checks out, run one cold smoke pass —
5
+ *
6
+ * load → 1-token text generation → (if the bundle ships voice assets)
7
+ * 1-phrase voice generation → barge-in cancel → unload
8
+ *
9
+ * — before the bundle is allowed to auto-fill an empty default slot. The
10
+ * downloader stays decoupled from the engine: it only knows the
11
+ * {@link VerifyBundleOnDevice} shape; this module is the concrete
12
+ * implementation the service layer injects.
13
+ *
14
+ * Failure semantics: any error throws. The downloader catches it and leaves
15
+ * `bundleVerifiedAt` unset, so an unverified bundle is registered but does
16
+ * not become the recommended default. There is no "verified anyway" path —
17
+ * voice is mandatory for Eliza-1 voice tiers (AGENTS.md §3), so a bundle
18
+ * whose fused voice ABI is not loadable on this device legitimately fails
19
+ * verify until the fused build is present.
20
+ */
21
+
22
+ import fs from "node:fs/promises";
23
+ import type { VerifyBundleOnDevice } from "./downloader";
24
+ import { localInferenceEngine } from "./engine";
25
+ import { parseManifestOrThrow } from "./manifest";
26
+
27
+ /** A short, deterministic prompt — we only care that one token comes back. */
28
+ const VERIFY_PROMPT = "Reply with one word.";
29
+ /** A short phrase to drive a single TTS dispatch through the voice scheduler. */
30
+ const VERIFY_PHRASE = "Ready.";
31
+
32
+ type VerifyEngine = Pick<
33
+ typeof localInferenceEngine,
34
+ | "load"
35
+ | "generate"
36
+ | "ensureActiveBundleVoiceReady"
37
+ | "startVoice"
38
+ | "armVoice"
39
+ | "synthesizeSpeech"
40
+ | "triggerBargeIn"
41
+ | "stopVoice"
42
+ | "unload"
43
+ >;
44
+
45
+ interface VerifyBundleOnDeviceDeps {
46
+ readonly engine: VerifyEngine;
47
+ readonly readFile: typeof fs.readFile;
48
+ readonly parseManifest: typeof parseManifestOrThrow;
49
+ }
50
+
51
+ async function manifestDeclaresVoice(
52
+ manifestPath: string,
53
+ deps: Pick<VerifyBundleOnDeviceDeps, "readFile" | "parseManifest">,
54
+ ): Promise<boolean> {
55
+ const raw = await deps.readFile(manifestPath, "utf8");
56
+ const manifest = deps.parseManifest(JSON.parse(String(raw)));
57
+ // Voice tiers ship a TTS GGUF under `files.voice`; the ASR/VAD files are
58
+ // gated on top of that. If there is no voice file, this is a text-only
59
+ // bundle and the voice leg of the smoke is skipped.
60
+ return manifest.files.voice.length > 0;
61
+ }
62
+
63
+ async function verifyText(
64
+ engine: VerifyEngine,
65
+ modelId: string,
66
+ textGgufPath: string,
67
+ ): Promise<void> {
68
+ await engine.load(textGgufPath, { modelPath: textGgufPath, modelId });
69
+ const out = await engine.generate({
70
+ prompt: VERIFY_PROMPT,
71
+ maxTokens: 1,
72
+ temperature: 0,
73
+ });
74
+ if (typeof out !== "string") {
75
+ throw new Error(
76
+ `[verify-on-device] text generation returned ${typeof out}, expected string`,
77
+ );
78
+ }
79
+ }
80
+
81
+ async function verifyVoice(
82
+ engine: VerifyEngine,
83
+ _bundleRoot: string,
84
+ ): Promise<void> {
85
+ await engine.ensureActiveBundleVoiceReady();
86
+ try {
87
+ // One real synthesis through the voice bridge.
88
+ const pcm = await engine.synthesizeSpeech(VERIFY_PHRASE);
89
+ if (!(pcm instanceof Uint8Array) || pcm.byteLength === 0) {
90
+ throw new Error(
91
+ "[verify-on-device] voice synthesis produced no PCM bytes",
92
+ );
93
+ }
94
+ // Barge-in cancel must be accepted without throwing — exercises the
95
+ // hard-stop path the voice loop uses to abort speculative TTS.
96
+ engine.triggerBargeIn();
97
+ } finally {
98
+ await engine.stopVoice();
99
+ }
100
+ }
101
+
102
+ export function createVerifyBundleOnDevice(
103
+ deps: Partial<VerifyBundleOnDeviceDeps> = {},
104
+ ): VerifyBundleOnDevice {
105
+ const engine = deps.engine ?? localInferenceEngine;
106
+ const manifestDeps = {
107
+ readFile: deps.readFile ?? fs.readFile,
108
+ parseManifest: deps.parseManifest ?? parseManifestOrThrow,
109
+ };
110
+
111
+ return async ({ modelId, bundleRoot, manifestPath, textGgufPath }) => {
112
+ try {
113
+ await verifyText(engine, modelId, textGgufPath);
114
+ if (await manifestDeclaresVoice(manifestPath, manifestDeps)) {
115
+ await verifyVoice(engine, bundleRoot);
116
+ }
117
+ } finally {
118
+ // Always release the model the verify pass loaded — the bundle is not
119
+ // "active" yet, and the active-model coordinator owns load/unload from
120
+ // here on.
121
+ await engine.unload().catch(() => {});
122
+ }
123
+ };
124
+ }
125
+
126
+ export const verifyBundleOnDevice: VerifyBundleOnDevice =
127
+ createVerifyBundleOnDevice();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Re-export of the shared model-file verification module. The canonical
3
+ * implementation lives in `@elizaos/shared/local-inference` because both
4
+ * the server (`@elizaos/app-core`) and the UI client (`@elizaos/ui`)
5
+ * compute the same SHA256 / GGUF-magic checks against on-disk models.
6
+ */
7
+ export { __registryPathForTests, hashFile, type VerifyResult, type VerifyState, verifyInstalledModel, } from "@elizaos/shared/local-inference/verify";
8
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACN,sBAAsB,EACtB,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,oBAAoB,GACpB,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Re-export of the shared model-file verification module. The canonical
3
+ * implementation lives in `@elizaos/shared/local-inference` because both
4
+ * the server (`@elizaos/app-core`) and the UI client (`@elizaos/ui`)
5
+ * compute the same SHA256 / GGUF-magic checks against on-disk models.
6
+ */
7
+ export {
8
+ __registryPathForTests,
9
+ hashFile,
10
+ type VerifyResult,
11
+ type VerifyState,
12
+ verifyInstalledModel,
13
+ } from "@elizaos/shared/local-inference/verify";
@@ -0,0 +1,115 @@
1
+ /**
2
+ * AOSP vision-describe backend contract (WS2).
3
+ *
4
+ * The bun:ffi llama.cpp binding in `@elizaos/plugin-aosp-local-inference`
5
+ * already exposes the embedding helpers (`llama_set_embeddings`,
6
+ * `llama_get_embeddings_seq`) and the model/context lifecycle. mtmd
7
+ * (multi-modal definition) is part of upstream llama.cpp from b8198+
8
+ * but the libeliza-llama-shim that the AOSP binding loads does NOT
9
+ * yet export the matching `eliza_llama_mtmd_*` symbols.
10
+ *
11
+ * This file is the JS contract for the FFI binding the AOSP plugin
12
+ * will add when the native side ships. It lives in
13
+ * `plugin-local-inference` (not in `plugin-aosp-local-inference`) so
14
+ * cross-plugin consumers can compile against the same interface
15
+ * regardless of platform. When the AOSP shim ships the native
16
+ * symbols, the implementation in `plugin-aosp-local-inference/src/
17
+ * aosp-llama-vision.ts` (to be added) will satisfy this contract.
18
+ *
19
+ * Required native symbols (libeliza-llama-shim):
20
+ *
21
+ * eliza_llama_mtmd_init_from_file(
22
+ * mmproj_path: const char *,
23
+ * out_handle: void **
24
+ * ) -> int32 // 0 = ok; non-zero = error code
25
+ *
26
+ * eliza_llama_mtmd_free(mtmd_handle: void *) -> void
27
+ *
28
+ * eliza_llama_mtmd_encode(
29
+ * mtmd_handle: void *,
30
+ * image_bytes: const uint8_t *,
31
+ * image_len: size_t,
32
+ * out_tokens_ptr: float **, // owned by mtmd; valid until next encode
33
+ * out_token_count: int32 *,
34
+ * out_hidden_size: int32 *
35
+ * ) -> int32
36
+ *
37
+ * eliza_llama_decode_with_mmproj(
38
+ * ctx: void *, // existing llama_context
39
+ * mtmd_tokens: const float *,
40
+ * mtmd_token_count: int32,
41
+ * mtmd_hidden_size: int32,
42
+ * prompt: const char *,
43
+ * prompt_len: size_t,
44
+ * max_tokens: int32,
45
+ * temperature: float,
46
+ * out_text_buf: char *, // caller-allocated
47
+ * out_text_buf_cap: size_t,
48
+ * out_text_written: size_t *
49
+ * ) -> int32
50
+ *
51
+ * Optional fast path: if the shim adds
52
+ *
53
+ * eliza_llama_mtmd_describe(
54
+ * model: void *, // existing llama_model
55
+ * ctx: void *, // existing llama_context
56
+ * mtmd_handle: void *,
57
+ * image_bytes: const uint8_t *,
58
+ * image_len: size_t,
59
+ * prompt: const char *,
60
+ * prompt_len: size_t,
61
+ * max_tokens: int32,
62
+ * temperature: float,
63
+ * out_buf: char *,
64
+ * out_buf_cap: size_t,
65
+ * out_written: size_t *
66
+ * ) -> int32
67
+ *
68
+ * that single-call wrapper is preferred — it lets the shim fuse the
69
+ * encode+decode steps internally and avoids the round-trip of token
70
+ * pointers across the FFI boundary (which bun:ffi handles, but at the
71
+ * cost of two extra pointer dereferences per frame).
72
+ *
73
+ * Until the native side exports those symbols, this module's `loadAospVisionBackend`
74
+ * throws a structured error that the arbiter / handler can surface as
75
+ * "vision not available on this platform". It does NOT register
76
+ * silently — silent unavailability would let the runtime fall back to
77
+ * the cloud path on a mobile device that explicitly disabled it.
78
+ */
79
+ import type { VisionDescribeBackend, VisionDescribeLoadArgs } from "./types";
80
+ /**
81
+ * The AOSP binding's mtmd surface, when present. The AOSP plugin
82
+ * registers an instance under the runtime service name
83
+ * `"aosp-llama-mtmd"` once the native shim exports the symbols above.
84
+ */
85
+ export interface AospLlamaMtmdBinding {
86
+ /** True when libeliza-llama-shim.so was loaded and exports the mtmd symbols. */
87
+ hasMtmd(): boolean;
88
+ /** Initialize an mtmd handle for the given mmproj path. */
89
+ initMtmd(args: {
90
+ mmprojPath: string;
91
+ }): Promise<AospMtmdHandle>;
92
+ }
93
+ export interface AospMtmdHandle {
94
+ /**
95
+ * Single-call describe — wraps mtmd_encode + decode_with_chunks. The
96
+ * AOSP shim's `eliza_llama_mtmd_describe` lands here. Backends that
97
+ * only have the split encode/decode symbols implement this on top
98
+ * of two FFI calls; backends with the fused symbol use one.
99
+ */
100
+ describe(args: {
101
+ imageBytes: Uint8Array;
102
+ prompt: string;
103
+ maxTokens?: number;
104
+ temperature?: number;
105
+ signal?: AbortSignal;
106
+ }): Promise<string>;
107
+ /** Free the mtmd handle (and any cached encode buffers). */
108
+ dispose(): Promise<void>;
109
+ }
110
+ export interface LoadAospVisionBackendOptions {
111
+ loadArgs: VisionDescribeLoadArgs;
112
+ mtmdBinding?: AospLlamaMtmdBinding;
113
+ }
114
+ export declare function loadAospVisionBackend(opts: LoadAospVisionBackendOptions): Promise<VisionDescribeBackend>;
115
+ //# sourceMappingURL=aosp-unavailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aosp-unavailable.d.ts","sourceRoot":"","sources":["aosp-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC,gFAAgF;IAChF,OAAO,IAAI,OAAO,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE;QACd,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,4DAA4D;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,4BAA4B,GAChC,OAAO,CAAC,qBAAqB,CAAC,CA0ChC"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * AOSP vision-describe backend contract (WS2).
3
+ *
4
+ * The bun:ffi llama.cpp binding in `@elizaos/plugin-aosp-local-inference`
5
+ * already exposes the embedding helpers (`llama_set_embeddings`,
6
+ * `llama_get_embeddings_seq`) and the model/context lifecycle. mtmd
7
+ * (multi-modal definition) is part of upstream llama.cpp from b8198+
8
+ * but the libeliza-llama-shim that the AOSP binding loads does NOT
9
+ * yet export the matching `eliza_llama_mtmd_*` symbols.
10
+ *
11
+ * This file is the JS contract for the FFI binding the AOSP plugin
12
+ * will add when the native side ships. It lives in
13
+ * `plugin-local-inference` (not in `plugin-aosp-local-inference`) so
14
+ * cross-plugin consumers can compile against the same interface
15
+ * regardless of platform. When the AOSP shim ships the native
16
+ * symbols, the implementation in `plugin-aosp-local-inference/src/
17
+ * aosp-llama-vision.ts` (to be added) will satisfy this contract.
18
+ *
19
+ * Required native symbols (libeliza-llama-shim):
20
+ *
21
+ * eliza_llama_mtmd_init_from_file(
22
+ * mmproj_path: const char *,
23
+ * out_handle: void **
24
+ * ) -> int32 // 0 = ok; non-zero = error code
25
+ *
26
+ * eliza_llama_mtmd_free(mtmd_handle: void *) -> void
27
+ *
28
+ * eliza_llama_mtmd_encode(
29
+ * mtmd_handle: void *,
30
+ * image_bytes: const uint8_t *,
31
+ * image_len: size_t,
32
+ * out_tokens_ptr: float **, // owned by mtmd; valid until next encode
33
+ * out_token_count: int32 *,
34
+ * out_hidden_size: int32 *
35
+ * ) -> int32
36
+ *
37
+ * eliza_llama_decode_with_mmproj(
38
+ * ctx: void *, // existing llama_context
39
+ * mtmd_tokens: const float *,
40
+ * mtmd_token_count: int32,
41
+ * mtmd_hidden_size: int32,
42
+ * prompt: const char *,
43
+ * prompt_len: size_t,
44
+ * max_tokens: int32,
45
+ * temperature: float,
46
+ * out_text_buf: char *, // caller-allocated
47
+ * out_text_buf_cap: size_t,
48
+ * out_text_written: size_t *
49
+ * ) -> int32
50
+ *
51
+ * Optional fast path: if the shim adds
52
+ *
53
+ * eliza_llama_mtmd_describe(
54
+ * model: void *, // existing llama_model
55
+ * ctx: void *, // existing llama_context
56
+ * mtmd_handle: void *,
57
+ * image_bytes: const uint8_t *,
58
+ * image_len: size_t,
59
+ * prompt: const char *,
60
+ * prompt_len: size_t,
61
+ * max_tokens: int32,
62
+ * temperature: float,
63
+ * out_buf: char *,
64
+ * out_buf_cap: size_t,
65
+ * out_written: size_t *
66
+ * ) -> int32
67
+ *
68
+ * that single-call wrapper is preferred — it lets the shim fuse the
69
+ * encode+decode steps internally and avoids the round-trip of token
70
+ * pointers across the FFI boundary (which bun:ffi handles, but at the
71
+ * cost of two extra pointer dereferences per frame).
72
+ *
73
+ * Until the native side exports those symbols, this module's `loadAospVisionBackend`
74
+ * throws a structured error that the arbiter / handler can surface as
75
+ * "vision not available on this platform". It does NOT register
76
+ * silently — silent unavailability would let the runtime fall back to
77
+ * the cloud path on a mobile device that explicitly disabled it.
78
+ */
79
+
80
+ import { existsSync } from "node:fs";
81
+ import { VisionBackendUnavailableError } from "./capacitor-llama";
82
+ import type { VisionDescribeBackend, VisionDescribeLoadArgs } from "./types";
83
+
84
+ /**
85
+ * The AOSP binding's mtmd surface, when present. The AOSP plugin
86
+ * registers an instance under the runtime service name
87
+ * `"aosp-llama-mtmd"` once the native shim exports the symbols above.
88
+ */
89
+ export interface AospLlamaMtmdBinding {
90
+ /** True when libeliza-llama-shim.so was loaded and exports the mtmd symbols. */
91
+ hasMtmd(): boolean;
92
+ /** Initialize an mtmd handle for the given mmproj path. */
93
+ initMtmd(args: { mmprojPath: string }): Promise<AospMtmdHandle>;
94
+ }
95
+
96
+ export interface AospMtmdHandle {
97
+ /**
98
+ * Single-call describe — wraps mtmd_encode + decode_with_chunks. The
99
+ * AOSP shim's `eliza_llama_mtmd_describe` lands here. Backends that
100
+ * only have the split encode/decode symbols implement this on top
101
+ * of two FFI calls; backends with the fused symbol use one.
102
+ */
103
+ describe(args: {
104
+ imageBytes: Uint8Array;
105
+ prompt: string;
106
+ maxTokens?: number;
107
+ temperature?: number;
108
+ signal?: AbortSignal;
109
+ }): Promise<string>;
110
+ /** Free the mtmd handle (and any cached encode buffers). */
111
+ dispose(): Promise<void>;
112
+ }
113
+
114
+ export interface LoadAospVisionBackendOptions {
115
+ loadArgs: VisionDescribeLoadArgs;
116
+ mtmdBinding?: AospLlamaMtmdBinding;
117
+ }
118
+
119
+ export async function loadAospVisionBackend(
120
+ opts: LoadAospVisionBackendOptions,
121
+ ): Promise<VisionDescribeBackend> {
122
+ const { loadArgs, mtmdBinding } = opts;
123
+ if (!mtmdBinding?.hasMtmd()) {
124
+ throw new VisionBackendUnavailableError(
125
+ "aosp",
126
+ "binding_missing_mtmd",
127
+ "[vision/aosp] libeliza-llama-shim does not export the mtmd symbols. The AOSP shim needs eliza_llama_mtmd_init_from_file / _encode / _describe / _free. Until the native side exports them, vision-describe on AOSP falls back to the cloud path (or stays disabled when the user opted out of cloud).",
128
+ );
129
+ }
130
+ if (!existsSync(loadArgs.mmprojPath)) {
131
+ throw new VisionBackendUnavailableError(
132
+ "aosp",
133
+ "mmproj_missing",
134
+ `[vision/aosp] mmproj GGUF not found: ${loadArgs.mmprojPath}`,
135
+ );
136
+ }
137
+ const handle = await mtmdBinding.initMtmd({
138
+ mmprojPath: loadArgs.mmprojPath,
139
+ });
140
+ return {
141
+ id: "aosp",
142
+ async describe(request) {
143
+ const { resolveImageBytes } = await import("./hash");
144
+ const { bytes } = resolveImageBytes(request.image);
145
+ const text = await handle.describe({
146
+ imageBytes: bytes,
147
+ prompt: request.prompt ?? "Describe what is in this image.",
148
+ maxTokens: request.maxTokens,
149
+ temperature: request.temperature,
150
+ signal: request.signal,
151
+ });
152
+ const trimmed = text.trim();
153
+ if (!trimmed) {
154
+ throw new Error("[vision/aosp] empty text from mtmd_describe");
155
+ }
156
+ const title = trimmed.split(/[.!?]/, 1)[0]?.trim() || "Image";
157
+ return { title, description: trimmed, cacheHit: false };
158
+ },
159
+ async dispose() {
160
+ await handle.dispose();
161
+ },
162
+ };
163
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Capacitor-llama vision-describe backend (WS2).
3
+ *
4
+ * Wraps the in-process capacitor-llama binding's multimodal projector
5
+ * (mtmd) surface and exposes the WS2 `VisionDescribeBackend` contract.
6
+ *
7
+ * State of the binding (2026-05-19):
8
+ * `llama-cpp-capacitor`'s `LlamaContext` exposes `initMultimodal` and
9
+ * `getMultimodalSupport`, which load an mmproj alongside the chat
10
+ * target. The desktop bun:ffi shim does not yet bind those symbols —
11
+ * the desktop FFI path returns `binding_missing_mtmd` until the shim
12
+ * adds `mtmd_init_from_file` + the encode/decode helpers.
13
+ *
14
+ * What this module does today:
15
+ * - Provides the WS2-shaped backend so plugin-vision / plugin-image-gen /
16
+ * computer-use can compile against a stable contract.
17
+ * - When the binding exposes the mtmd API, the backend dispatches
18
+ * through it.
19
+ * - Otherwise, the backend falls back to an injected
20
+ * `VisionManagerLike` implementation when one is supplied (kept as a
21
+ * pluggable seam for tests and out-of-tree integrations).
22
+ * - When neither path is wired, `describe()` throws a structured
23
+ * `VisionBackendUnavailableError` the arbiter surfaces upward.
24
+ *
25
+ * GPU validation status (this host has neither GPU):
26
+ * The mtmd encode path is GPU-accelerated when the underlying llama.cpp
27
+ * build dispatches `llama_image_t` through the model's batch path. We
28
+ * document the on-device validation that's required for each GPU
29
+ * family at the bottom of this file's tests (see
30
+ * `__tests__/vision-describe.test.ts`). Until those run on real
31
+ * hardware, GPU-backed vision is "implementation present, not
32
+ * validated".
33
+ */
34
+ import type { VisionDescribeBackend, VisionDescribeBackendOptions, VisionDescribeLoadArgs } from "./types";
35
+ export declare class VisionBackendUnavailableError extends Error {
36
+ readonly backendId: string;
37
+ readonly reason: "binding_missing_mtmd" | "no_fallback_present" | "mmproj_missing";
38
+ readonly code = "VISION_BACKEND_UNAVAILABLE";
39
+ constructor(backendId: string, reason: "binding_missing_mtmd" | "no_fallback_present" | "mmproj_missing", message: string);
40
+ }
41
+ /**
42
+ * Optional shape the Capacitor-llama binding exposes once the mtmd typed
43
+ * wrappers land in the shared adapter. The backend only consumes
44
+ * `describeWithMmproj`, which wraps `LlamaContext.initMultimodal` +
45
+ * `completion(...)` with `media_paths`. Backends that don't satisfy this
46
+ * shape are treated as "binding without mtmd support" and the fallback
47
+ * path is used.
48
+ */
49
+ export interface CapacitorLlamaMtmdBinding {
50
+ loadVisionModel(args: {
51
+ modelPath: string;
52
+ mmprojPath: string;
53
+ gpuLayers?: number | "auto" | "max";
54
+ contextSize?: number;
55
+ }): Promise<CapacitorLlamaMtmdHandle>;
56
+ }
57
+ export interface CapacitorLlamaMtmdHandle {
58
+ describeWithMmproj(args: {
59
+ imageBytes: Uint8Array;
60
+ mimeType?: string;
61
+ prompt: string;
62
+ maxTokens?: number;
63
+ temperature?: number;
64
+ signal?: AbortSignal;
65
+ projectedTokens?: VisionDescribeBackendOptions["projectedTokens"];
66
+ }): Promise<{
67
+ text: string;
68
+ projectorMs?: number;
69
+ decodeMs?: number;
70
+ }>;
71
+ dispose(): Promise<void>;
72
+ }
73
+ /**
74
+ * Optional VisionManager-shape fallback. Kept available as a pluggable
75
+ * injection point for tests and out-of-tree integrations that want to
76
+ * supply their own image captioning implementation.
77
+ */
78
+ export interface VisionManagerLike {
79
+ processImage(dataUrl: string): Promise<{
80
+ title: string;
81
+ description: string;
82
+ }>;
83
+ }
84
+ export interface CapacitorLlamaVisionBackendOptions {
85
+ loadArgs: VisionDescribeLoadArgs;
86
+ /**
87
+ * Injected by tests and by the shared mtmd typed wrappers. When
88
+ * provided the backend uses the mtmd path.
89
+ */
90
+ mtmd?: CapacitorLlamaMtmdBinding;
91
+ /**
92
+ * Caption-only fallback. Optional — when present the backend uses it
93
+ * as last resort, after mtmd. Backends that have neither throw a
94
+ * structured `VisionBackendUnavailableError`.
95
+ */
96
+ visionManager?: VisionManagerLike;
97
+ }
98
+ export declare function loadCapacitorLlamaVisionBackend(opts: CapacitorLlamaVisionBackendOptions): Promise<VisionDescribeBackend>;
99
+ //# sourceMappingURL=capacitor-llama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacitor-llama.d.ts","sourceRoot":"","sources":["capacitor-llama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,KAAK,EACX,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EAGtB,MAAM,SAAS,CAAC;AAEjB,qBAAa,6BAA8B,SAAQ,KAAK;IAGtD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,MAAM,EACZ,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB;IANpB,QAAQ,CAAC,IAAI,gCAAgC;gBAEnC,SAAS,EAAE,MAAM,EACjB,MAAM,EACZ,sBAAsB,GACtB,qBAAqB,GACrB,gBAAgB,EACnB,OAAO,EAAE,MAAM;CAKhB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACzC,eAAe,CAAC,IAAI,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;QACpC,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACxC,kBAAkB,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,UAAU,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,eAAe,CAAC,EAAE,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;KAClE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,CACX,OAAO,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,kCAAkC;IAClD,QAAQ,EAAE,sBAAsB,CAAC;IACjC;;;OAGG;IACH,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAID,wBAAsB,+BAA+B,CACpD,IAAI,EAAE,kCAAkC,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA2EhC"}