@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.11-beta.7

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 (676) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/package.json +81 -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/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  11. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  12. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  13. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  14. package/src/adapters/capacitor-llama/environment.ts +71 -0
  15. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  16. package/src/adapters/capacitor-llama/index.ts +807 -0
  17. package/src/adapters/capacitor-llama/loader.ts +109 -0
  18. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  19. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  20. package/src/adapters/capacitor-llama/types.ts +374 -0
  21. package/src/backends/apple-foundation.ts +127 -0
  22. package/src/index.d.ts +7 -0
  23. package/src/index.d.ts.map +1 -0
  24. package/src/index.ts +54 -0
  25. package/src/local-inference-routes.d.ts +38 -0
  26. package/src/local-inference-routes.d.ts.map +1 -0
  27. package/src/local-inference-routes.test.ts +344 -0
  28. package/src/local-inference-routes.ts +1543 -0
  29. package/src/provider.d.ts +21 -0
  30. package/src/provider.d.ts.map +1 -0
  31. package/src/provider.ts +1171 -0
  32. package/src/routes/compat-helpers.d.ts +18 -0
  33. package/src/routes/compat-helpers.d.ts.map +1 -0
  34. package/src/routes/compat-helpers.ts +274 -0
  35. package/src/routes/family-member-route.d.ts +62 -0
  36. package/src/routes/family-member-route.d.ts.map +1 -0
  37. package/src/routes/family-member-route.ts +353 -0
  38. package/src/routes/index.d.ts +19 -0
  39. package/src/routes/index.d.ts.map +1 -0
  40. package/src/routes/index.ts +60 -0
  41. package/src/routes/live-diarization-route.d.ts +26 -0
  42. package/src/routes/live-diarization-route.d.ts.map +1 -0
  43. package/src/routes/live-diarization-route.test.ts +213 -0
  44. package/src/routes/live-diarization-route.ts +122 -0
  45. package/src/routes/local-inference-asr-route.d.ts +4 -0
  46. package/src/routes/local-inference-asr-route.d.ts.map +1 -0
  47. package/src/routes/local-inference-asr-route.test.ts +190 -0
  48. package/src/routes/local-inference-asr-route.ts +213 -0
  49. package/src/routes/local-inference-compat-routes.d.ts +16 -0
  50. package/src/routes/local-inference-compat-routes.d.ts.map +1 -0
  51. package/src/routes/local-inference-compat-routes.test.ts +423 -0
  52. package/src/routes/local-inference-compat-routes.ts +782 -0
  53. package/src/routes/local-inference-tts-route.d.ts +7 -0
  54. package/src/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/src/routes/local-inference-tts-route.test.ts +179 -0
  56. package/src/routes/local-inference-tts-route.ts +230 -0
  57. package/src/routes/voice-first-run-routes.d.ts +62 -0
  58. package/src/routes/voice-first-run-routes.d.ts.map +1 -0
  59. package/src/routes/voice-first-run-routes.ts +524 -0
  60. package/src/routes/voice-models-routes.d.ts +62 -0
  61. package/src/routes/voice-models-routes.d.ts.map +1 -0
  62. package/src/routes/voice-models-routes.ts +554 -0
  63. package/src/routes/voice-profile-plugin-routes.d.ts +19 -0
  64. package/src/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  65. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  66. package/src/routes/voice-profiles-management-routes.d.ts +52 -0
  67. package/src/routes/voice-profiles-management-routes.d.ts.map +1 -0
  68. package/src/routes/voice-profiles-management-routes.ts +476 -0
  69. package/src/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/src/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  72. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  73. package/src/runtime/capacitor-llama.d.ts +25 -0
  74. package/src/runtime/embedding-manager-support.d.ts +77 -0
  75. package/src/runtime/embedding-manager-support.d.ts.map +1 -0
  76. package/src/runtime/embedding-manager-support.ts +497 -0
  77. package/src/runtime/embedding-presets.d.ts +16 -0
  78. package/src/runtime/embedding-presets.d.ts.map +1 -0
  79. package/src/runtime/embedding-presets.ts +81 -0
  80. package/src/runtime/embedding-warmup-policy.d.ts +14 -0
  81. package/src/runtime/embedding-warmup-policy.d.ts.map +1 -0
  82. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  83. package/src/runtime/embedding-warmup-policy.ts +48 -0
  84. package/src/runtime/ensure-local-inference-handler.d.ts +53 -0
  85. package/src/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  86. package/src/runtime/ensure-local-inference-handler.test.ts +528 -0
  87. package/src/runtime/ensure-local-inference-handler.ts +1398 -0
  88. package/src/runtime/index.d.ts +14 -0
  89. package/src/runtime/index.d.ts.map +1 -0
  90. package/src/runtime/index.ts +27 -0
  91. package/src/runtime/mobile-local-inference-gate.d.ts +31 -0
  92. package/src/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  93. package/src/runtime/mobile-local-inference-gate.test.ts +69 -0
  94. package/src/runtime/mobile-local-inference-gate.ts +44 -0
  95. package/src/runtime/voice-entity-binding.d.ts +103 -0
  96. package/src/runtime/voice-entity-binding.d.ts.map +1 -0
  97. package/src/runtime/voice-entity-binding.transcript.test.ts +69 -0
  98. package/src/runtime/voice-entity-binding.ts +328 -0
  99. package/src/services/README.md +71 -0
  100. package/src/services/__tests__/backend-selector.test.ts +101 -0
  101. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  102. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  103. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  104. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  105. package/src/services/__tests__/runtime-target.test.ts +176 -0
  106. package/src/services/active-model-switch-rollback.test.ts +183 -0
  107. package/src/services/active-model.d.ts +282 -0
  108. package/src/services/active-model.d.ts.map +1 -0
  109. package/src/services/active-model.ts +1213 -0
  110. package/src/services/asr/errors.d.ts +21 -0
  111. package/src/services/asr/errors.d.ts.map +1 -0
  112. package/src/services/asr/errors.ts +50 -0
  113. package/src/services/asr/hash.d.ts +28 -0
  114. package/src/services/asr/hash.d.ts.map +1 -0
  115. package/src/services/asr/hash.ts +49 -0
  116. package/src/services/asr/index.d.ts +76 -0
  117. package/src/services/asr/index.d.ts.map +1 -0
  118. package/src/services/asr/index.ts +178 -0
  119. package/src/services/asr/types.d.ts +91 -0
  120. package/src/services/asr/types.d.ts.map +1 -0
  121. package/src/services/asr/types.ts +95 -0
  122. package/src/services/assignments.d.ts +71 -0
  123. package/src/services/assignments.d.ts.map +1 -0
  124. package/src/services/assignments.test.ts +80 -0
  125. package/src/services/assignments.ts +230 -0
  126. package/src/services/backend-selector.ts +95 -0
  127. package/src/services/backend.d.ts +346 -0
  128. package/src/services/backend.d.ts.map +1 -0
  129. package/src/services/backend.ts +612 -0
  130. package/src/services/bundled-models.d.ts +34 -0
  131. package/src/services/bundled-models.d.ts.map +1 -0
  132. package/src/services/bundled-models.ts +129 -0
  133. package/src/services/cache-bridge.d.ts +206 -0
  134. package/src/services/cache-bridge.d.ts.map +1 -0
  135. package/src/services/cache-bridge.test.ts +516 -0
  136. package/src/services/cache-bridge.ts +423 -0
  137. package/src/services/catalog.d.ts +10 -0
  138. package/src/services/catalog.d.ts.map +1 -0
  139. package/src/services/catalog.test.ts +240 -0
  140. package/src/services/catalog.ts +27 -0
  141. package/src/services/checkpoint-client.d.ts +109 -0
  142. package/src/services/checkpoint-client.d.ts.map +1 -0
  143. package/src/services/checkpoint-client.ts +258 -0
  144. package/src/services/checkpoint-manager.ts +474 -0
  145. package/src/services/cloud-fallback.d.ts +102 -0
  146. package/src/services/cloud-fallback.d.ts.map +1 -0
  147. package/src/services/cloud-fallback.ts +230 -0
  148. package/src/services/conversation-registry.d.ts +142 -0
  149. package/src/services/conversation-registry.d.ts.map +1 -0
  150. package/src/services/conversation-registry.test.ts +235 -0
  151. package/src/services/conversation-registry.ts +264 -0
  152. package/src/services/desktop-fused-ffi-backend-runtime.d.ts +92 -0
  153. package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  154. package/src/services/desktop-fused-ffi-backend-runtime.ts +333 -0
  155. package/src/services/device-bridge.d.ts +188 -0
  156. package/src/services/device-bridge.d.ts.map +1 -0
  157. package/src/services/device-bridge.ts +1237 -0
  158. package/src/services/device-resource-metrics.d.ts +149 -0
  159. package/src/services/device-resource-metrics.d.ts.map +1 -0
  160. package/src/services/device-resource-metrics.test.ts +98 -0
  161. package/src/services/device-resource-metrics.ts +346 -0
  162. package/src/services/device-tier.d.ts +115 -0
  163. package/src/services/device-tier.d.ts.map +1 -0
  164. package/src/services/device-tier.test.ts +371 -0
  165. package/src/services/device-tier.ts +410 -0
  166. package/src/services/downloader.d.ts +82 -0
  167. package/src/services/downloader.d.ts.map +1 -0
  168. package/src/services/downloader.test.ts +724 -0
  169. package/src/services/downloader.ts +899 -0
  170. package/src/services/engine-direct-bundle.test.ts +58 -0
  171. package/src/services/engine-streaming.test.ts +80 -0
  172. package/src/services/engine.d.ts +534 -0
  173. package/src/services/engine.d.ts.map +1 -0
  174. package/src/services/engine.ts +1891 -0
  175. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  176. package/src/services/ensure-local-artifacts.test.ts +368 -0
  177. package/src/services/ensure-local-artifacts.ts +351 -0
  178. package/src/services/external-scanner.d.ts +17 -0
  179. package/src/services/external-scanner.d.ts.map +1 -0
  180. package/src/services/external-scanner.ts +312 -0
  181. package/src/services/ffi-llm-mock.ts +354 -0
  182. package/src/services/ffi-llm-streaming-abi.ts +442 -0
  183. package/src/services/ffi-streaming-backend.d.ts +180 -0
  184. package/src/services/ffi-streaming-backend.d.ts.map +1 -0
  185. package/src/services/ffi-streaming-backend.ts +382 -0
  186. package/src/services/ffi-streaming-runner.d.ts +122 -0
  187. package/src/services/ffi-streaming-runner.d.ts.map +1 -0
  188. package/src/services/ffi-streaming-runner.test.ts +60 -0
  189. package/src/services/ffi-streaming-runner.ts +354 -0
  190. package/src/services/ffi-unload-ordering.test.ts +162 -0
  191. package/src/services/gpu-autotune.ts +534 -0
  192. package/src/services/gpu-detect.ts +139 -0
  193. package/src/services/handler-registry.d.ts +72 -0
  194. package/src/services/handler-registry.d.ts.map +1 -0
  195. package/src/services/handler-registry.ts +240 -0
  196. package/src/services/hardware.d.ts +63 -0
  197. package/src/services/hardware.d.ts.map +1 -0
  198. package/src/services/hardware.test.ts +183 -0
  199. package/src/services/hardware.ts +404 -0
  200. package/src/services/hf-search.d.ts +26 -0
  201. package/src/services/hf-search.d.ts.map +1 -0
  202. package/src/services/hf-search.test.ts +69 -0
  203. package/src/services/hf-search.ts +420 -0
  204. package/src/services/image-description-runtime.d.ts +14 -0
  205. package/src/services/image-description-runtime.d.ts.map +1 -0
  206. package/src/services/image-description-runtime.test.ts +61 -0
  207. package/src/services/image-description-runtime.ts +118 -0
  208. package/src/services/imagegen/aosp-unavailable.d.ts +134 -0
  209. package/src/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  210. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  211. package/src/services/imagegen/backend-selector.d.ts +118 -0
  212. package/src/services/imagegen/backend-selector.d.ts.map +1 -0
  213. package/src/services/imagegen/backend-selector.ts +281 -0
  214. package/src/services/imagegen/coreml-unavailable.d.ts +105 -0
  215. package/src/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  216. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  217. package/src/services/imagegen/errors.d.ts +16 -0
  218. package/src/services/imagegen/errors.d.ts.map +1 -0
  219. package/src/services/imagegen/errors.ts +40 -0
  220. package/src/services/imagegen/index.d.ts +58 -0
  221. package/src/services/imagegen/index.d.ts.map +1 -0
  222. package/src/services/imagegen/index.ts +144 -0
  223. package/src/services/imagegen/mflux.d.ts +74 -0
  224. package/src/services/imagegen/mflux.d.ts.map +1 -0
  225. package/src/services/imagegen/mflux.ts +313 -0
  226. package/src/services/imagegen/sd-cpp.d.ts +180 -0
  227. package/src/services/imagegen/sd-cpp.d.ts.map +1 -0
  228. package/src/services/imagegen/sd-cpp.ts +718 -0
  229. package/src/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  230. package/src/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  231. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  232. package/src/services/imagegen/types.d.ts +181 -0
  233. package/src/services/imagegen/types.d.ts.map +1 -0
  234. package/src/services/imagegen/types.ts +193 -0
  235. package/src/services/index.d.ts +30 -0
  236. package/src/services/index.d.ts.map +1 -0
  237. package/src/services/index.ts +225 -0
  238. package/src/services/inference-capabilities.d.ts +132 -0
  239. package/src/services/inference-capabilities.d.ts.map +1 -0
  240. package/src/services/inference-capabilities.test.ts +75 -0
  241. package/src/services/inference-capabilities.ts +204 -0
  242. package/src/services/inference-telemetry.d.ts +59 -0
  243. package/src/services/inference-telemetry.d.ts.map +1 -0
  244. package/src/services/inference-telemetry.ts +143 -0
  245. package/src/services/ios-llama-streaming.ts +248 -0
  246. package/src/services/kv-spill.d.ts +189 -0
  247. package/src/services/kv-spill.d.ts.map +1 -0
  248. package/src/services/kv-spill.test.ts +222 -0
  249. package/src/services/kv-spill.ts +356 -0
  250. package/src/services/latency-trace.d.ts +346 -0
  251. package/src/services/latency-trace.d.ts.map +1 -0
  252. package/src/services/latency-trace.test.ts +266 -0
  253. package/src/services/latency-trace.ts +844 -0
  254. package/src/services/llama-server-metrics.ts +304 -0
  255. package/src/services/llm-streaming-binding.d.ts +96 -0
  256. package/src/services/llm-streaming-binding.d.ts.map +1 -0
  257. package/src/services/llm-streaming-binding.ts +136 -0
  258. package/src/services/load-args.d.ts +82 -0
  259. package/src/services/load-args.d.ts.map +1 -0
  260. package/src/services/load-args.ts +81 -0
  261. package/src/services/manifest/eliza-1.manifest.v1.json +708 -0
  262. package/src/services/manifest/index.d.ts +4 -0
  263. package/src/services/manifest/index.d.ts.map +1 -0
  264. package/src/services/manifest/index.ts +66 -0
  265. package/src/services/manifest/manifest.test.ts +693 -0
  266. package/src/services/manifest/schema.d.ts +715 -0
  267. package/src/services/manifest/schema.d.ts.map +1 -0
  268. package/src/services/manifest/schema.ts +655 -0
  269. package/src/services/manifest/types.d.ts +30 -0
  270. package/src/services/manifest/types.d.ts.map +1 -0
  271. package/src/services/manifest/types.ts +55 -0
  272. package/src/services/manifest/validator.d.ts +66 -0
  273. package/src/services/manifest/validator.d.ts.map +1 -0
  274. package/src/services/manifest/validator.ts +569 -0
  275. package/src/services/memory-arbiter.d.ts +343 -0
  276. package/src/services/memory-arbiter.d.ts.map +1 -0
  277. package/src/services/memory-arbiter.test.ts +419 -0
  278. package/src/services/memory-arbiter.ts +1000 -0
  279. package/src/services/memory-monitor.d.ts +119 -0
  280. package/src/services/memory-monitor.d.ts.map +1 -0
  281. package/src/services/memory-monitor.test.ts +208 -0
  282. package/src/services/memory-monitor.ts +296 -0
  283. package/src/services/memory-pressure.d.ts +127 -0
  284. package/src/services/memory-pressure.d.ts.map +1 -0
  285. package/src/services/memory-pressure.ts +413 -0
  286. package/src/services/mtp-doctor.d.ts +13 -0
  287. package/src/services/mtp-doctor.d.ts.map +1 -0
  288. package/src/services/mtp-doctor.ts +78 -0
  289. package/src/services/network-policy.d.ts +127 -0
  290. package/src/services/network-policy.d.ts.map +1 -0
  291. package/src/services/network-policy.ts +346 -0
  292. package/src/services/paths.d.ts +6 -0
  293. package/src/services/paths.d.ts.map +1 -0
  294. package/src/services/paths.ts +25 -0
  295. package/src/services/planner-skeleton.d.ts +124 -0
  296. package/src/services/planner-skeleton.d.ts.map +1 -0
  297. package/src/services/planner-skeleton.ts +175 -0
  298. package/src/services/providers.d.ts +38 -0
  299. package/src/services/providers.d.ts.map +1 -0
  300. package/src/services/providers.ts +507 -0
  301. package/src/services/ram-budget-cache.test.ts +163 -0
  302. package/src/services/ram-budget.d.ts +110 -0
  303. package/src/services/ram-budget.d.ts.map +1 -0
  304. package/src/services/ram-budget.ts +0 -0
  305. package/src/services/readiness.d.ts +9 -0
  306. package/src/services/readiness.d.ts.map +1 -0
  307. package/src/services/readiness.test.ts +87 -0
  308. package/src/services/readiness.ts +238 -0
  309. package/src/services/recommendation.d.ts +111 -0
  310. package/src/services/recommendation.d.ts.map +1 -0
  311. package/src/services/recommendation.ts +672 -0
  312. package/src/services/registry.d.ts +35 -0
  313. package/src/services/registry.d.ts.map +1 -0
  314. package/src/services/registry.ts +151 -0
  315. package/src/services/router-handler.d.ts +92 -0
  316. package/src/services/router-handler.d.ts.map +1 -0
  317. package/src/services/router-handler.test.ts +45 -0
  318. package/src/services/router-handler.ts +376 -0
  319. package/src/services/routing-policy.d.ts +55 -0
  320. package/src/services/routing-policy.d.ts.map +1 -0
  321. package/src/services/routing-policy.ts +228 -0
  322. package/src/services/routing-preferences.d.ts +8 -0
  323. package/src/services/routing-preferences.d.ts.map +1 -0
  324. package/src/services/routing-preferences.ts +15 -0
  325. package/src/services/runtime-target.d.ts +98 -0
  326. package/src/services/runtime-target.d.ts.map +1 -0
  327. package/src/services/runtime-target.ts +154 -0
  328. package/src/services/service.d.ts +128 -0
  329. package/src/services/service.d.ts.map +1 -0
  330. package/src/services/service.test.ts +223 -0
  331. package/src/services/service.ts +735 -0
  332. package/src/services/session-pool.d.ts +72 -0
  333. package/src/services/session-pool.d.ts.map +1 -0
  334. package/src/services/session-pool.ts +153 -0
  335. package/src/services/structured-output/deterministic-repair.d.ts +23 -0
  336. package/src/services/structured-output/deterministic-repair.d.ts.map +1 -0
  337. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  338. package/src/services/structured-output/deterministic-repair.ts +443 -0
  339. package/src/services/structured-output/index.ts +4 -0
  340. package/src/services/structured-output.d.ts +311 -0
  341. package/src/services/structured-output.d.ts.map +1 -0
  342. package/src/services/structured-output.test.ts +483 -0
  343. package/src/services/structured-output.ts +712 -0
  344. package/src/services/transcription-priority.test.ts +211 -0
  345. package/src/services/tts/errors.ts +46 -0
  346. package/src/services/tts/index.ts +214 -0
  347. package/src/services/tts/tts-audio-cache.ts +235 -0
  348. package/src/services/tts/types.ts +157 -0
  349. package/src/services/types.d.ts +19 -0
  350. package/src/services/types.d.ts.map +1 -0
  351. package/src/services/types.ts +55 -0
  352. package/src/services/verify-on-device.d.ts +34 -0
  353. package/src/services/verify-on-device.d.ts.map +1 -0
  354. package/src/services/verify-on-device.test.ts +87 -0
  355. package/src/services/verify-on-device.ts +127 -0
  356. package/src/services/verify.d.ts +8 -0
  357. package/src/services/verify.d.ts.map +1 -0
  358. package/src/services/verify.ts +13 -0
  359. package/src/services/vision/aosp-unavailable.d.ts +115 -0
  360. package/src/services/vision/aosp-unavailable.d.ts.map +1 -0
  361. package/src/services/vision/aosp-unavailable.ts +163 -0
  362. package/src/services/vision/capacitor-llama.d.ts +99 -0
  363. package/src/services/vision/capacitor-llama.d.ts.map +1 -0
  364. package/src/services/vision/capacitor-llama.ts +255 -0
  365. package/src/services/vision/cloud-fallback.d.ts +47 -0
  366. package/src/services/vision/cloud-fallback.d.ts.map +1 -0
  367. package/src/services/vision/cloud-fallback.test.ts +243 -0
  368. package/src/services/vision/cloud-fallback.ts +268 -0
  369. package/src/services/vision/fallback-chain.test.ts +86 -0
  370. package/src/services/vision/hash.d.ts +71 -0
  371. package/src/services/vision/hash.d.ts.map +1 -0
  372. package/src/services/vision/hash.ts +157 -0
  373. package/src/services/vision/index.d.ts +95 -0
  374. package/src/services/vision/index.d.ts.map +1 -0
  375. package/src/services/vision/index.ts +251 -0
  376. package/src/services/vision/llama-server.d.ts +73 -0
  377. package/src/services/vision/llama-server.d.ts.map +1 -0
  378. package/src/services/vision/llama-server.ts +177 -0
  379. package/src/services/vision/types.d.ts +153 -0
  380. package/src/services/vision/types.d.ts.map +1 -0
  381. package/src/services/vision/types.ts +154 -0
  382. package/src/services/vision/vast-fallback.d.ts +18 -0
  383. package/src/services/vision/vast-fallback.d.ts.map +1 -0
  384. package/src/services/vision/vast-fallback.ts +127 -0
  385. package/src/services/vision-embedding-cache.d.ts +98 -0
  386. package/src/services/vision-embedding-cache.d.ts.map +1 -0
  387. package/src/services/vision-embedding-cache.ts +189 -0
  388. package/src/services/voice/VOICE_WORKBENCH.md +88 -0
  389. package/src/services/voice/__test-helpers__/fake-ffi.ts +92 -0
  390. package/src/services/voice/__test-helpers__/synthetic-speech.ts +124 -0
  391. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  392. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  393. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  394. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  395. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  396. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  397. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  398. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  399. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  400. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  401. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +197 -0
  402. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  403. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  404. package/src/services/voice/audio-frame-consumer.d.ts +212 -0
  405. package/src/services/voice/audio-frame-consumer.d.ts.map +1 -0
  406. package/src/services/voice/audio-frame-consumer.test.ts +343 -0
  407. package/src/services/voice/audio-frame-consumer.ts +491 -0
  408. package/src/services/voice/barge-in.d.ts +112 -0
  409. package/src/services/voice/barge-in.d.ts.map +1 -0
  410. package/src/services/voice/barge-in.test.ts +244 -0
  411. package/src/services/voice/barge-in.ts +336 -0
  412. package/src/services/voice/cancellation-coordinator.d.ts +127 -0
  413. package/src/services/voice/cancellation-coordinator.d.ts.map +1 -0
  414. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  415. package/src/services/voice/cancellation-coordinator.ts +269 -0
  416. package/src/services/voice/checkpoint-manager.d.ts +199 -0
  417. package/src/services/voice/checkpoint-manager.d.ts.map +1 -0
  418. package/src/services/voice/checkpoint-manager.ts +401 -0
  419. package/src/services/voice/checkpoint-policy.ts +336 -0
  420. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  421. package/src/services/voice/e2e-harness.test.ts +182 -0
  422. package/src/services/voice/e2e-harness.ts +743 -0
  423. package/src/services/voice/eager-context-builder.d.ts +170 -0
  424. package/src/services/voice/eager-context-builder.d.ts.map +1 -0
  425. package/src/services/voice/eager-context-builder.ts +262 -0
  426. package/src/services/voice/eliza1-eot-scorer.d.ts +124 -0
  427. package/src/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  428. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  429. package/src/services/voice/embedding-server.ts +200 -0
  430. package/src/services/voice/embedding.d.ts +133 -0
  431. package/src/services/voice/embedding.d.ts.map +1 -0
  432. package/src/services/voice/embedding.test.ts +148 -0
  433. package/src/services/voice/embedding.ts +244 -0
  434. package/src/services/voice/emotion-attribution.d.ts +68 -0
  435. package/src/services/voice/emotion-attribution.d.ts.map +1 -0
  436. package/src/services/voice/emotion-attribution.test.ts +129 -0
  437. package/src/services/voice/emotion-attribution.ts +361 -0
  438. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  439. package/src/services/voice/engine-bridge.d.ts +746 -0
  440. package/src/services/voice/engine-bridge.d.ts.map +1 -0
  441. package/src/services/voice/engine-bridge.test.ts +384 -0
  442. package/src/services/voice/engine-bridge.ts +2226 -0
  443. package/src/services/voice/eot-classifier-ggml.d.ts +179 -0
  444. package/src/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  445. package/src/services/voice/eot-classifier-ggml.ts +566 -0
  446. package/src/services/voice/eot-classifier.d.ts +214 -0
  447. package/src/services/voice/eot-classifier.d.ts.map +1 -0
  448. package/src/services/voice/eot-classifier.ts +533 -0
  449. package/src/services/voice/errors.d.ts +20 -0
  450. package/src/services/voice/errors.d.ts.map +1 -0
  451. package/src/services/voice/errors.ts +32 -0
  452. package/src/services/voice/expressive-tags.d.ts +158 -0
  453. package/src/services/voice/expressive-tags.d.ts.map +1 -0
  454. package/src/services/voice/expressive-tags.ts +405 -0
  455. package/src/services/voice/ffi-bindings.d.ts +636 -0
  456. package/src/services/voice/ffi-bindings.d.ts.map +1 -0
  457. package/src/services/voice/ffi-bindings.test.ts +671 -0
  458. package/src/services/voice/ffi-bindings.ts +3050 -0
  459. package/src/services/voice/first-line-cache.d.ts +181 -0
  460. package/src/services/voice/first-line-cache.d.ts.map +1 -0
  461. package/src/services/voice/first-line-cache.ts +725 -0
  462. package/src/services/voice/fused-eot-scorer.d.ts +51 -0
  463. package/src/services/voice/fused-eot-scorer.d.ts.map +1 -0
  464. package/src/services/voice/fused-eot-scorer.ts +135 -0
  465. package/src/services/voice/index.d.ts +91 -0
  466. package/src/services/voice/index.d.ts.map +1 -0
  467. package/src/services/voice/index.ts +481 -0
  468. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +151 -0
  469. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +151 -0
  470. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  471. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  472. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  473. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  474. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  475. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +231 -0
  476. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  477. package/src/services/voice/kokoro/index.ts +79 -0
  478. package/src/services/voice/kokoro/kokoro-backend.d.ts +72 -0
  479. package/src/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  480. package/src/services/voice/kokoro/kokoro-backend.ts +207 -0
  481. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  482. package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  483. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  484. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  485. package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  486. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  487. package/src/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  488. package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  489. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  490. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  491. package/src/services/voice/kokoro/phonemizer.d.ts +50 -0
  492. package/src/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  493. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  494. package/src/services/voice/kokoro/pick-runtime.d.ts +61 -0
  495. package/src/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  496. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  497. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  498. package/src/services/voice/kokoro/runtime-selection.d.ts +92 -0
  499. package/src/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  500. package/src/services/voice/kokoro/runtime-selection.ts +237 -0
  501. package/src/services/voice/kokoro/types.d.ts +82 -0
  502. package/src/services/voice/kokoro/types.d.ts.map +1 -0
  503. package/src/services/voice/kokoro/types.ts +95 -0
  504. package/src/services/voice/kokoro/voice-presets.d.ts +23 -0
  505. package/src/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  506. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  507. package/src/services/voice/kokoro/voices.d.ts +30 -0
  508. package/src/services/voice/kokoro/voices.d.ts.map +1 -0
  509. package/src/services/voice/kokoro/voices.ts +64 -0
  510. package/src/services/voice/lifecycle.d.ts +135 -0
  511. package/src/services/voice/lifecycle.d.ts.map +1 -0
  512. package/src/services/voice/lifecycle.test.ts +315 -0
  513. package/src/services/voice/lifecycle.ts +301 -0
  514. package/src/services/voice/live-diarization-session.d.ts +96 -0
  515. package/src/services/voice/live-diarization-session.d.ts.map +1 -0
  516. package/src/services/voice/live-diarization-session.ts +289 -0
  517. package/src/services/voice/mic-source.d.ts +136 -0
  518. package/src/services/voice/mic-source.d.ts.map +1 -0
  519. package/src/services/voice/mic-source.test.ts +210 -0
  520. package/src/services/voice/mic-source.ts +503 -0
  521. package/src/services/voice/optimistic-policy.d.ts +109 -0
  522. package/src/services/voice/optimistic-policy.d.ts.map +1 -0
  523. package/src/services/voice/optimistic-policy.test.ts +101 -0
  524. package/src/services/voice/optimistic-policy.ts +192 -0
  525. package/src/services/voice/optimistic-rollback.ts +343 -0
  526. package/src/services/voice/partial-stabilizer.d.ts +73 -0
  527. package/src/services/voice/partial-stabilizer.d.ts.map +1 -0
  528. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  529. package/src/services/voice/partial-stabilizer.ts +140 -0
  530. package/src/services/voice/phoneme-tokenizer.d.ts +49 -0
  531. package/src/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  532. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  533. package/src/services/voice/phrase-cache.d.ts +76 -0
  534. package/src/services/voice/phrase-cache.d.ts.map +1 -0
  535. package/src/services/voice/phrase-cache.test.ts +242 -0
  536. package/src/services/voice/phrase-cache.ts +186 -0
  537. package/src/services/voice/phrase-chunker.d.ts +62 -0
  538. package/src/services/voice/phrase-chunker.d.ts.map +1 -0
  539. package/src/services/voice/phrase-chunker.test.ts +239 -0
  540. package/src/services/voice/phrase-chunker.ts +281 -0
  541. package/src/services/voice/pipeline-impls.d.ts +151 -0
  542. package/src/services/voice/pipeline-impls.d.ts.map +1 -0
  543. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  544. package/src/services/voice/pipeline-impls.test.ts +292 -0
  545. package/src/services/voice/pipeline-impls.ts +315 -0
  546. package/src/services/voice/pipeline.d.ts +216 -0
  547. package/src/services/voice/pipeline.d.ts.map +1 -0
  548. package/src/services/voice/pipeline.ts +505 -0
  549. package/src/services/voice/prefill-client.d.ts +123 -0
  550. package/src/services/voice/prefill-client.d.ts.map +1 -0
  551. package/src/services/voice/prefill-client.ts +316 -0
  552. package/src/services/voice/prefix-preserving-queue.d.ts +113 -0
  553. package/src/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  554. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  555. package/src/services/voice/profile-store.d.ts +248 -0
  556. package/src/services/voice/profile-store.d.ts.map +1 -0
  557. package/src/services/voice/profile-store.ts +887 -0
  558. package/src/services/voice/ring-buffer.d.ts +40 -0
  559. package/src/services/voice/ring-buffer.d.ts.map +1 -0
  560. package/src/services/voice/ring-buffer.ts +105 -0
  561. package/src/services/voice/rollback-queue.d.ts +24 -0
  562. package/src/services/voice/rollback-queue.d.ts.map +1 -0
  563. package/src/services/voice/rollback-queue.ts +74 -0
  564. package/src/services/voice/samantha-preset-placeholder.d.ts +67 -0
  565. package/src/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  566. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  567. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  568. package/src/services/voice/samantha-preset-regenerator.d.ts +87 -0
  569. package/src/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  570. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  571. package/src/services/voice/scheduler.d.ts +146 -0
  572. package/src/services/voice/scheduler.d.ts.map +1 -0
  573. package/src/services/voice/scheduler.t2.test.ts +141 -0
  574. package/src/services/voice/scheduler.ts +927 -0
  575. package/src/services/voice/shared-resources.d.ts +190 -0
  576. package/src/services/voice/shared-resources.d.ts.map +1 -0
  577. package/src/services/voice/shared-resources.ts +320 -0
  578. package/src/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  579. package/src/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  580. package/src/services/voice/speaker/attribution-pipeline.ts +386 -0
  581. package/src/services/voice/speaker/diarizer-fused.d.ts +59 -0
  582. package/src/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  583. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  584. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  585. package/src/services/voice/speaker/diarizer.d.ts +75 -0
  586. package/src/services/voice/speaker/diarizer.d.ts.map +1 -0
  587. package/src/services/voice/speaker/diarizer.ts +218 -0
  588. package/src/services/voice/speaker/encoder-fused.d.ts +60 -0
  589. package/src/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  590. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  591. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  592. package/src/services/voice/speaker/encoder-ggml.d.ts +33 -0
  593. package/src/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  594. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  595. package/src/services/voice/speaker/encoder.d.ts +37 -0
  596. package/src/services/voice/speaker/encoder.d.ts.map +1 -0
  597. package/src/services/voice/speaker/encoder.ts +105 -0
  598. package/src/services/voice/speaker-imprint.d.ts +83 -0
  599. package/src/services/voice/speaker-imprint.d.ts.map +1 -0
  600. package/src/services/voice/speaker-imprint.test.ts +185 -0
  601. package/src/services/voice/speaker-imprint.ts +312 -0
  602. package/src/services/voice/speaker-preset-cache.d.ts +77 -0
  603. package/src/services/voice/speaker-preset-cache.d.ts.map +1 -0
  604. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  605. package/src/services/voice/speaker-preset-cache.ts +195 -0
  606. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  607. package/src/services/voice/system-audio-sink.d.ts +73 -0
  608. package/src/services/voice/system-audio-sink.d.ts.map +1 -0
  609. package/src/services/voice/system-audio-sink.test.ts +29 -0
  610. package/src/services/voice/system-audio-sink.ts +366 -0
  611. package/src/services/voice/transcriber.d.ts +244 -0
  612. package/src/services/voice/transcriber.d.ts.map +1 -0
  613. package/src/services/voice/transcriber.test.ts +392 -0
  614. package/src/services/voice/transcriber.ts +704 -0
  615. package/src/services/voice/turn-controller.d.ts +183 -0
  616. package/src/services/voice/turn-controller.d.ts.map +1 -0
  617. package/src/services/voice/turn-controller.test.ts +575 -0
  618. package/src/services/voice/turn-controller.ts +596 -0
  619. package/src/services/voice/types.d.ts +643 -0
  620. package/src/services/voice/types.d.ts.map +1 -0
  621. package/src/services/voice/types.ts +699 -0
  622. package/src/services/voice/vad.d.ts +282 -0
  623. package/src/services/voice/vad.d.ts.map +1 -0
  624. package/src/services/voice/vad.test.ts +480 -0
  625. package/src/services/voice/vad.ts +827 -0
  626. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  627. package/src/services/voice/voice-budget.d.ts +241 -0
  628. package/src/services/voice/voice-budget.d.ts.map +1 -0
  629. package/src/services/voice/voice-budget.test.ts +420 -0
  630. package/src/services/voice/voice-budget.ts +656 -0
  631. package/src/services/voice/voice-duet.test.ts +375 -0
  632. package/src/services/voice/voice-emotion-classifier.d.ts +95 -0
  633. package/src/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  634. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  635. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  636. package/src/services/voice/voice-preset-format.d.ts +158 -0
  637. package/src/services/voice/voice-preset-format.d.ts.map +1 -0
  638. package/src/services/voice/voice-preset-format.ts +700 -0
  639. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  640. package/src/services/voice/voice-profile-artifact.d.ts +116 -0
  641. package/src/services/voice/voice-profile-artifact.d.ts.map +1 -0
  642. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  643. package/src/services/voice/voice-profile-artifact.ts +518 -0
  644. package/src/services/voice/voice-profile-routes.d.ts +83 -0
  645. package/src/services/voice/voice-profile-routes.d.ts.map +1 -0
  646. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  647. package/src/services/voice/voice-profile-routes.ts +425 -0
  648. package/src/services/voice/voice-scenario.ts +154 -0
  649. package/src/services/voice/voice-settings.d.ts +82 -0
  650. package/src/services/voice/voice-settings.d.ts.map +1 -0
  651. package/src/services/voice/voice-settings.ts +172 -0
  652. package/src/services/voice/voice-state-machine.d.ts +364 -0
  653. package/src/services/voice/voice-state-machine.d.ts.map +1 -0
  654. package/src/services/voice/voice-state-machine.ts +727 -0
  655. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  656. package/src/services/voice/voice-workbench-report.ts +326 -0
  657. package/src/services/voice/voice-workbench.test.ts +158 -0
  658. package/src/services/voice/voice.test.ts +1070 -0
  659. package/src/services/voice/wake-word-ggml.d.ts +101 -0
  660. package/src/services/voice/wake-word-ggml.d.ts.map +1 -0
  661. package/src/services/voice/wake-word-ggml.ts +320 -0
  662. package/src/services/voice/wake-word.d.ts +255 -0
  663. package/src/services/voice/wake-word.d.ts.map +1 -0
  664. package/src/services/voice/wake-word.test.ts +298 -0
  665. package/src/services/voice/wake-word.ts +554 -0
  666. package/src/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  667. package/src/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  668. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  669. package/src/services/voice-model-updater.d.ts +240 -0
  670. package/src/services/voice-model-updater.d.ts.map +1 -0
  671. package/src/services/voice-model-updater.ts +724 -0
  672. package/src/services/voice-prewarm.d.ts +3 -0
  673. package/src/services/voice-prewarm.d.ts.map +1 -0
  674. package/src/services/voice-prewarm.ts +51 -0
  675. package/dist/index.d.ts +0 -37
  676. package/dist/index.js +0 -1098
@@ -0,0 +1,83 @@
1
+ /**
2
+ * TensorRT image-gen backend contract (WS3) — Windows NVIDIA.
3
+ *
4
+ * On Windows NVIDIA hosts, packaged `imagegen.exe` (built against
5
+ * TensorRT 10.x with the Demo Diffusion plan) is the fastest path —
6
+ * `nvidia/Stable-Diffusion-3.5-Medium-TensorRT` and the SDXL Turbo
7
+ * TensorRT plans give a 2–4× speedup over sd-cpp + CUDA on the same
8
+ * hardware.
9
+ *
10
+ * Why a child-process backend (and not TensorRT bindings):
11
+ * - TensorRT runtime is C++; a Node binding would require shipping a
12
+ * CUDA toolkit and a TensorRT runtime DLL on every Windows install,
13
+ * plus rebuilding when CUDA versions change.
14
+ * - The packaged `imagegen.exe` is a thin wrapper around the official
15
+ * Demo Diffusion sample. The bundle installer drops it at
16
+ * `${MODELS_DIR}/bin/imagegen.exe` alongside the TensorRT plan files.
17
+ * - Subprocess cost is negligible relative to inference time (≈10ms
18
+ * spawn vs ≈400ms inference).
19
+ *
20
+ * Binary resolution:
21
+ * 1. `opts.binaryPath` (test injection).
22
+ * 2. `process.env.IMAGEGEN_TRT_BIN` (operator override).
23
+ * 3. `${MODELS_DIR}/bin/imagegen.exe`.
24
+ *
25
+ * Plan file resolution:
26
+ * The packaged binary expects a `--plan <path>` flag pointing at the
27
+ * prebuilt TensorRT engine for the active resolution. The catalog
28
+ * binds tier → plan; the installer materializes them under
29
+ * `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
30
+ *
31
+ * Until the bundle installer + packaged binary land for Windows NVIDIA,
32
+ * `loadTensorRtImageGenBackend` throws `ImageGenBackendUnavailableError`
33
+ * and the selector falls through to sd-cpp.
34
+ *
35
+ * Publishing pipeline (Windows x86_64 NVIDIA only):
36
+ *
37
+ * Build (`imagegen.exe`):
38
+ * git clone https://github.com/NVIDIA/TensorRT && cd TensorRT/demo/Diffusion
39
+ * # Build against TensorRT 10.x + CUDA 12.x
40
+ * pip install -r requirements.txt
41
+ * python build.py --hf-token <ci-secret> \
42
+ * --version 1.5 --denoising-steps 20 \
43
+ * --build-static-batch --output-dir ../../../build/imagegen-sd15
44
+ * # Thin wrapper produces imagegen.exe linking against
45
+ * # nvinfer_10.dll + cudart64_12.dll; pyinstaller-onefile produces a
46
+ * # 35-MB executable next to the static .plan files.
47
+ * Build TensorRT plan (per resolution, per model):
48
+ * trtexec --onnx=unet.onnx --saveEngine=unet.plan --fp16 \
49
+ * --minShapes=sample:1x4x64x64 --optShapes=sample:1x4x64x64 \
50
+ * --maxShapes=sample:1x4x64x64
51
+ * # Drop plan files under imagegen/trt-plans/<modelKey>/{unet,vae,clip}.plan.
52
+ * Sign:
53
+ * signtool sign /tr http://timestamp.digicert.com /td sha256 \
54
+ * /fd sha256 /sha1 <eliza-labs-cert-thumbprint> imagegen.exe
55
+ * # SmartScreen reputation builds over the first ~1000 installs;
56
+ * # submit to Microsoft Defender Bytes-for-Bots if a new cert.
57
+ * Drop:
58
+ * releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/imagegen.exe
59
+ * releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/plans/
60
+ * sd-1.5-512x512/{unet,vae,clip}.plan
61
+ * sdxl-turbo-1024x1024/{unet,vae,clip}.plan
62
+ * The bundle installer writes the binary to
63
+ * `${MODELS_DIR}/bin/imagegen.exe` and the plans under
64
+ * `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
65
+ *
66
+ * Notarization:
67
+ * N/A on Windows; SmartScreen reputation replaces the macOS notarize
68
+ * step. Authenticode-signed binaries with a valid EV cert clear without
69
+ * warning on first launch.
70
+ */
71
+ import { type SdCppSpawnLike } from "./sd-cpp";
72
+ import type { ImageGenBackend, ImageGenLoadArgs } from "./types";
73
+ export interface TensorRtBackendOptions {
74
+ loadArgs: ImageGenLoadArgs;
75
+ modelKey: string;
76
+ binaryPath?: string;
77
+ outputDir?: string;
78
+ spawnImpl?: SdCppSpawnLike;
79
+ fakeImageBytes?: Uint8Array;
80
+ now?: () => number;
81
+ }
82
+ export declare function loadTensorRtImageGenBackend(opts: TensorRtBackendOptions): Promise<ImageGenBackend>;
83
+ //# sourceMappingURL=tensorrt-unavailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tensorrt-unavailable.d.ts","sourceRoot":"","sources":["tensorrt-unavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAMH,OAAO,EAIN,KAAK,cAAc,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAEhB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAID,wBAAsB,2BAA2B,CAChD,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAmI1B"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * TensorRT image-gen backend contract (WS3) — Windows NVIDIA.
3
+ *
4
+ * On Windows NVIDIA hosts, packaged `imagegen.exe` (built against
5
+ * TensorRT 10.x with the Demo Diffusion plan) is the fastest path —
6
+ * `nvidia/Stable-Diffusion-3.5-Medium-TensorRT` and the SDXL Turbo
7
+ * TensorRT plans give a 2–4× speedup over sd-cpp + CUDA on the same
8
+ * hardware.
9
+ *
10
+ * Why a child-process backend (and not TensorRT bindings):
11
+ * - TensorRT runtime is C++; a Node binding would require shipping a
12
+ * CUDA toolkit and a TensorRT runtime DLL on every Windows install,
13
+ * plus rebuilding when CUDA versions change.
14
+ * - The packaged `imagegen.exe` is a thin wrapper around the official
15
+ * Demo Diffusion sample. The bundle installer drops it at
16
+ * `${MODELS_DIR}/bin/imagegen.exe` alongside the TensorRT plan files.
17
+ * - Subprocess cost is negligible relative to inference time (≈10ms
18
+ * spawn vs ≈400ms inference).
19
+ *
20
+ * Binary resolution:
21
+ * 1. `opts.binaryPath` (test injection).
22
+ * 2. `process.env.IMAGEGEN_TRT_BIN` (operator override).
23
+ * 3. `${MODELS_DIR}/bin/imagegen.exe`.
24
+ *
25
+ * Plan file resolution:
26
+ * The packaged binary expects a `--plan <path>` flag pointing at the
27
+ * prebuilt TensorRT engine for the active resolution. The catalog
28
+ * binds tier → plan; the installer materializes them under
29
+ * `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
30
+ *
31
+ * Until the bundle installer + packaged binary land for Windows NVIDIA,
32
+ * `loadTensorRtImageGenBackend` throws `ImageGenBackendUnavailableError`
33
+ * and the selector falls through to sd-cpp.
34
+ *
35
+ * Publishing pipeline (Windows x86_64 NVIDIA only):
36
+ *
37
+ * Build (`imagegen.exe`):
38
+ * git clone https://github.com/NVIDIA/TensorRT && cd TensorRT/demo/Diffusion
39
+ * # Build against TensorRT 10.x + CUDA 12.x
40
+ * pip install -r requirements.txt
41
+ * python build.py --hf-token <ci-secret> \
42
+ * --version 1.5 --denoising-steps 20 \
43
+ * --build-static-batch --output-dir ../../../build/imagegen-sd15
44
+ * # Thin wrapper produces imagegen.exe linking against
45
+ * # nvinfer_10.dll + cudart64_12.dll; pyinstaller-onefile produces a
46
+ * # 35-MB executable next to the static .plan files.
47
+ * Build TensorRT plan (per resolution, per model):
48
+ * trtexec --onnx=unet.onnx --saveEngine=unet.plan --fp16 \
49
+ * --minShapes=sample:1x4x64x64 --optShapes=sample:1x4x64x64 \
50
+ * --maxShapes=sample:1x4x64x64
51
+ * # Drop plan files under imagegen/trt-plans/<modelKey>/{unet,vae,clip}.plan.
52
+ * Sign:
53
+ * signtool sign /tr http://timestamp.digicert.com /td sha256 \
54
+ * /fd sha256 /sha1 <eliza-labs-cert-thumbprint> imagegen.exe
55
+ * # SmartScreen reputation builds over the first ~1000 installs;
56
+ * # submit to Microsoft Defender Bytes-for-Bots if a new cert.
57
+ * Drop:
58
+ * releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/imagegen.exe
59
+ * releases.elizaos.ai/imagegen-trt/<version>/windows-x86_64/plans/
60
+ * sd-1.5-512x512/{unet,vae,clip}.plan
61
+ * sdxl-turbo-1024x1024/{unet,vae,clip}.plan
62
+ * The bundle installer writes the binary to
63
+ * `${MODELS_DIR}/bin/imagegen.exe` and the plans under
64
+ * `${MODELS_DIR}/imagegen/trt-plans/<modelKey>/`.
65
+ *
66
+ * Notarization:
67
+ * N/A on Windows; SmartScreen reputation replaces the macOS notarize
68
+ * step. Authenticode-signed binaries with a valid EV cert clear without
69
+ * warning on first launch.
70
+ */
71
+
72
+ import { existsSync, promises as fs, mkdtempSync } from "node:fs";
73
+ import { tmpdir } from "node:os";
74
+ import { join } from "node:path";
75
+ import { ImageGenBackendUnavailableError } from "./errors";
76
+ import {
77
+ assertPngOutput,
78
+ defaultSpawn,
79
+ resolveSeed,
80
+ type SdCppSpawnLike,
81
+ } from "./sd-cpp";
82
+ import type {
83
+ ImageGenBackend,
84
+ ImageGenLoadArgs,
85
+ ImageGenResult,
86
+ } from "./types";
87
+
88
+ export interface TensorRtBackendOptions {
89
+ loadArgs: ImageGenLoadArgs;
90
+ modelKey: string;
91
+ binaryPath?: string;
92
+ outputDir?: string;
93
+ spawnImpl?: SdCppSpawnLike;
94
+ fakeImageBytes?: Uint8Array;
95
+ now?: () => number;
96
+ }
97
+
98
+ const DEFAULT_BIN = "imagegen.exe";
99
+
100
+ export async function loadTensorRtImageGenBackend(
101
+ opts: TensorRtBackendOptions,
102
+ ): Promise<ImageGenBackend> {
103
+ const binary = resolveBinary(opts.binaryPath);
104
+ const now = opts.now ?? Date.now;
105
+
106
+ if (!opts.fakeImageBytes) {
107
+ // On non-Windows platforms there's nothing to even try; surface
108
+ // the unavailability cleanly so the selector moves on.
109
+ if (process.platform !== "win32" && !opts.binaryPath) {
110
+ throw new ImageGenBackendUnavailableError(
111
+ "tensorrt",
112
+ "unsupported_runtime",
113
+ `[imagegen/tensorrt] TensorRT backend is Windows-only; current platform: ${process.platform}`,
114
+ );
115
+ }
116
+ await assertBinaryAvailable(binary, opts.spawnImpl);
117
+ if (!existsSync(opts.loadArgs.modelPath)) {
118
+ throw new ImageGenBackendUnavailableError(
119
+ "tensorrt",
120
+ "model_missing",
121
+ `[imagegen/tensorrt] TensorRT plan not found: ${opts.loadArgs.modelPath}`,
122
+ );
123
+ }
124
+ }
125
+
126
+ const outputDir =
127
+ opts.outputDir ?? mkdtempSync(join(tmpdir(), "trt-imagegen-"));
128
+ let disposed = false;
129
+
130
+ return {
131
+ id: "tensorrt",
132
+ supports(req) {
133
+ // TensorRT plans are compiled for a fixed resolution. The plan
134
+ // file embeds the resolution; we accept any size and let the
135
+ // binary error out — except we reject obviously bad inputs.
136
+ const w = req.width ?? 1024;
137
+ const h = req.height ?? 1024;
138
+ if (w <= 0 || h <= 0) return false;
139
+ if (w > 4096 || h > 4096) return false;
140
+ return true;
141
+ },
142
+ async generate(req): Promise<ImageGenResult> {
143
+ if (disposed) {
144
+ throw new ImageGenBackendUnavailableError(
145
+ "tensorrt",
146
+ "binding_unavailable",
147
+ "[imagegen/tensorrt] generate called after dispose()",
148
+ );
149
+ }
150
+ if (!req.prompt.trim()) {
151
+ throw new ImageGenBackendUnavailableError(
152
+ "tensorrt",
153
+ "unsupported_request",
154
+ "[imagegen/tensorrt] prompt is empty",
155
+ );
156
+ }
157
+ const seed = resolveSeed(req.seed);
158
+ const width = req.width ?? 1024;
159
+ const height = req.height ?? 1024;
160
+ const steps = req.steps ?? 25;
161
+ const guidanceScale = req.guidanceScale ?? 4.0;
162
+ const outputPath = join(outputDir, `out-${seed}-${now()}.png`);
163
+ const startMs = now();
164
+
165
+ if (opts.fakeImageBytes) {
166
+ await fs.writeFile(outputPath, opts.fakeImageBytes);
167
+ const elapsed = Math.max(1, now() - startMs);
168
+ if (req.onProgressChunk)
169
+ req.onProgressChunk({ step: steps, total: steps });
170
+ return {
171
+ image: opts.fakeImageBytes,
172
+ mime: "image/png",
173
+ seed,
174
+ metadata: {
175
+ model: opts.modelKey,
176
+ prompt: req.prompt,
177
+ steps,
178
+ guidanceScale,
179
+ inferenceTimeMs: elapsed,
180
+ },
181
+ };
182
+ }
183
+
184
+ const args = [
185
+ "--plan",
186
+ opts.loadArgs.modelPath,
187
+ "--prompt",
188
+ req.prompt,
189
+ "--width",
190
+ String(width),
191
+ "--height",
192
+ String(height),
193
+ "--steps",
194
+ String(steps),
195
+ "--cfg",
196
+ String(guidanceScale),
197
+ "--seed",
198
+ String(seed),
199
+ "--output",
200
+ outputPath,
201
+ ];
202
+ if (req.negativePrompt) {
203
+ args.push("--negative", req.negativePrompt);
204
+ }
205
+
206
+ await runTensorRt(binary, args, {
207
+ signal: req.signal,
208
+ spawnImpl: opts.spawnImpl,
209
+ });
210
+
211
+ const bytes = new Uint8Array(await fs.readFile(outputPath));
212
+ assertPngOutput(bytes, "tensorrt", "subprocess_failed");
213
+ const elapsed = Math.max(1, now() - startMs);
214
+ return {
215
+ image: bytes,
216
+ mime: "image/png",
217
+ seed,
218
+ metadata: {
219
+ model: opts.modelKey,
220
+ prompt: req.prompt,
221
+ steps,
222
+ guidanceScale,
223
+ inferenceTimeMs: elapsed,
224
+ },
225
+ };
226
+ },
227
+ async dispose() {
228
+ if (disposed) return;
229
+ disposed = true;
230
+ await fs.rm(outputDir, { recursive: true, force: true }).catch(() => {});
231
+ },
232
+ };
233
+ }
234
+
235
+ function resolveBinary(override?: string): string {
236
+ if (override) return override;
237
+ const envBin = process.env.IMAGEGEN_TRT_BIN;
238
+ if (envBin?.trim()) return envBin.trim();
239
+ return DEFAULT_BIN;
240
+ }
241
+
242
+ async function assertBinaryAvailable(
243
+ binary: string,
244
+ spawnImpl?: SdCppSpawnLike,
245
+ ): Promise<void> {
246
+ try {
247
+ const code = await new Promise<number | null>((resolve, reject) => {
248
+ const proc = defaultSpawn(spawnImpl)(binary, ["--version"]);
249
+ proc.on("error", (err: Error) => reject(err));
250
+ proc.on("exit", (c: number | null) => resolve(c));
251
+ });
252
+ if (code !== 0) {
253
+ throw new ImageGenBackendUnavailableError(
254
+ "tensorrt",
255
+ "binary_version_mismatch",
256
+ `[imagegen/tensorrt] '${binary} --version' exited with code ${code}`,
257
+ );
258
+ }
259
+ } catch (err) {
260
+ if (err instanceof ImageGenBackendUnavailableError) throw err;
261
+ const msg = err instanceof Error ? err.message : String(err);
262
+ throw new ImageGenBackendUnavailableError(
263
+ "tensorrt",
264
+ "binary_missing",
265
+ `[imagegen/tensorrt] cannot run '${binary} --version': ${msg}. Install the bundle's TensorRT imagegen package, or set IMAGEGEN_TRT_BIN to a built binary.`,
266
+ { cause: err },
267
+ );
268
+ }
269
+ }
270
+
271
+ async function runTensorRt(
272
+ binary: string,
273
+ args: readonly string[],
274
+ opts: { signal?: AbortSignal; spawnImpl?: SdCppSpawnLike },
275
+ ): Promise<void> {
276
+ await new Promise<void>((resolve, reject) => {
277
+ const proc = defaultSpawn(opts.spawnImpl)(binary, args, {
278
+ signal: opts.signal,
279
+ });
280
+ proc.on("error", (err: Error) => reject(err));
281
+ proc.on("exit", (code: number | null) => {
282
+ if (code === 0) {
283
+ resolve();
284
+ return;
285
+ }
286
+ reject(
287
+ new ImageGenBackendUnavailableError(
288
+ "tensorrt",
289
+ "subprocess_failed",
290
+ `[imagegen/tensorrt] imagegen.exe exited with code ${code}`,
291
+ ),
292
+ );
293
+ });
294
+ });
295
+ }
@@ -0,0 +1,181 @@
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
+ /** Output container the backend writes. PNG is default; JPEG is opt-in. */
40
+ export type ImageGenMimeType = "image/png" | "image/jpeg";
41
+ /**
42
+ * Caller request to `generate`. All fields except `prompt` are optional —
43
+ * backends apply per-runtime defaults for missing knobs.
44
+ *
45
+ * Knob semantics (consistent across backends):
46
+ *
47
+ * - `width` / `height`: pixel resolution. Default 512×512 (SD 1.5 family) /
48
+ * 1024×1024 (SDXL / FLUX / Z-Image). Backends round to the nearest
49
+ * multiple of 8 (SD) or 16 (SDXL) when needed.
50
+ * - `steps`: denoising step count. 4 for FLUX schnell / Z-Image-Turbo
51
+ * (single-pass Turbo schedulers); 20 for SD 1.5 Euler-A; 25 for SDXL.
52
+ * - `guidanceScale`: classifier-free guidance. Ignored by FLUX schnell
53
+ * (CFG-free). 7.5 default for SD 1.5; 4.0 default for SDXL.
54
+ * - `seed`: PRNG seed. -1 / omitted → random; the backend returns the
55
+ * actual seed used in `ImageGenResult.seed` so the caller can replay.
56
+ * - `scheduler`: sampler name (`"euler-a"`, `"dpm++-2m"`, `"ddim"`,
57
+ * `"euler"`). Backends accept the strings their underlying runtime
58
+ * supports; unknown values raise `ImageGenBackendUnavailableError`.
59
+ */
60
+ export interface ImageGenRequest {
61
+ prompt: string;
62
+ negativePrompt?: string;
63
+ width?: number;
64
+ height?: number;
65
+ steps?: number;
66
+ guidanceScale?: number;
67
+ seed?: number;
68
+ scheduler?: string;
69
+ signal?: AbortSignal;
70
+ /**
71
+ * Optional per-step progress callback. Called once per denoising step
72
+ * with `{ step, total }`. Backends that can't surface step-level
73
+ * progress (Core ML batch fused path, TensorRT static engine) MAY
74
+ * call this once with `step === total` at completion instead of
75
+ * per-step. Never required.
76
+ */
77
+ onProgressChunk?: (progress: {
78
+ step: number;
79
+ total: number;
80
+ }) => void;
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
+ * Per-load arguments for an image-gen backend. The arbiter's
112
+ * `load(modelKey)` only carries an opaque key; the binding resolves that
113
+ * key to real model+vae+clip+t5 paths through this struct, which
114
+ * `createImageGenCapabilityRegistration` populates from the catalog +
115
+ * `ELIZA_1_BUNDLE_EXTRAS.json`.
116
+ *
117
+ * Some diffusion families are single-file GGUFs once quantized, such as
118
+ * SD 1.5 Q5_0. Others stay split: stable-diffusion.cpp runs Z-Image
119
+ * with `--diffusion-model` plus separate Qwen LLM text encoder and VAE
120
+ * files. The optional paths below carry those companion assets.
121
+ */
122
+ export interface ImageGenLoadArgs {
123
+ /** Absolute path to the primary diffusion weights (GGUF / mlpackage / engine). */
124
+ modelPath: string;
125
+ /**
126
+ * Treat `modelPath` as a stable-diffusion.cpp `--diffusion-model` rather
127
+ * than a monolithic `--model`. Required for Z-Image/Flux-style split
128
+ * diffusion bundles.
129
+ */
130
+ splitDiffusionModel?: boolean;
131
+ /** Optional split VAE path. */
132
+ vae?: string;
133
+ /** Optional split CLIP-L / CLIP-G path. */
134
+ clip?: string;
135
+ /** Optional split T5 / Gemma text encoder path. */
136
+ t5?: string;
137
+ /** Optional split LLM text encoder path, e.g. Qwen3 for Z-Image. */
138
+ llm?: string;
139
+ /**
140
+ * Backend-specific acceleration hint. Accepts:
141
+ * - `"auto"` (default) — let the binding decide.
142
+ * - `"cpu"` — force CPU.
143
+ * - `"cuda"` / `"vulkan"` / `"metal"` / `"coreml"` / `"qnn"` /
144
+ * `"tensorrt"` — request a specific accelerator. Unsupported
145
+ * requests fall back to `auto`.
146
+ */
147
+ accelerator?: "auto" | "cpu" | "cuda" | "vulkan" | "metal" | "coreml" | "qnn" | "tensorrt";
148
+ /** Cancel a slow load (model file read + weight upload). */
149
+ signal?: AbortSignal;
150
+ }
151
+ /**
152
+ * The contract every WS3 backend implements. The shape is intentionally
153
+ * narrow: the arbiter only ever calls `generate`. `dispose` is wrapped
154
+ * by the arbiter's `unload` so the backend can free GPU/VRAM and drop
155
+ * file descriptors / kill subprocesses on eviction.
156
+ */
157
+ export interface ImageGenBackend {
158
+ /** Stable identifier — matches the backend module name. */
159
+ readonly id: "sd-cpp" | "mflux" | "coreml" | "tensorrt" | "aosp" | "fake";
160
+ /**
161
+ * Best-effort capability check. Implementations return `false` for
162
+ * requests whose `width`/`height`/`scheduler` aren't supported by
163
+ * the loaded weights, so the arbiter can fall through to the next
164
+ * registered backend (selector order). Default backends accept
165
+ * anything reasonable; `supports` mostly matters for `coreml`
166
+ * (fixed resolution per `.mlpackage`) and `tensorrt` (fixed engine
167
+ * shape).
168
+ */
169
+ supports(request: ImageGenRequest): boolean;
170
+ generate(request: ImageGenRequest): Promise<ImageGenResult>;
171
+ /** Release the loaded weights / subprocess. Idempotent. */
172
+ dispose(): Promise<void>;
173
+ }
174
+ /**
175
+ * Capability handler loader. The arbiter calls it with a model key
176
+ * (e.g. `"imagegen-sd-1_5-q5_0"`); the implementation resolves to a
177
+ * real `ImageGenLoadArgs` from `ELIZA_1_BUNDLE_EXTRAS.json` + the
178
+ * installed bundle and returns a live backend.
179
+ */
180
+ export type ImageGenBackendLoader = (modelKey: string) => Promise<ImageGenBackend>;
181
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACT,gFAAgF;QAChF,KAAK,EAAE,MAAM,CAAC;QACd,2CAA2C;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,mEAAmE;QACnE,KAAK,EAAE,MAAM,CAAC;QACd,0EAA0E;QAC1E,aAAa,EAAE,MAAM,CAAC;QACtB,qDAAqD;QACrD,eAAe,EAAE,MAAM,CAAC;KACxB,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAChC,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EACT,MAAM,GACN,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,KAAK,GACL,UAAU,CAAC;IACd,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1E;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,2DAA2D;IAC3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CACnC,QAAQ,EAAE,MAAM,KACZ,OAAO,CAAC,eAAe,CAAC,CAAC"}