@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,315 @@
1
+ /**
2
+ * Concrete implementations of the `VoicePipeline` seams (`pipeline.ts`).
3
+ *
4
+ * `pipeline.ts` defines two interfaces — `DraftProposer`, `TargetVerifier`
5
+ * — plus the ASR contract (it consumes the live `StreamingTranscriber`
6
+ * from `voice/types.ts` directly) and an overlapped scheduler that drives
7
+ * the fused mic→speech graph from `packages/inference/AGENTS.md` §4. This
8
+ * module fills those interfaces against the live runtime:
9
+ *
10
+ * - `MissingAsrTranscriber` — a `StreamingTranscriber` that hard-fails
11
+ * when no ASR backend is available (AGENTS.md §3 — no silent cloud
12
+ * fallback). The bridge's `resolveTranscriber()` returns this instead
13
+ * of throwing eagerly so the failure surfaces at turn time.
14
+ * - `MtpDraftProposer` — proposes a small MTP draft window from the
15
+ * running in-process llama.cpp runtime; honours `cancel.cancelled`
16
+ * between kernel ticks.
17
+ * - `MtpTargetVerifier` — verifies against the text model's KV cache
18
+ * and consumes exact verifier accept/reject events when the runtime
19
+ * emits them.
20
+ *
21
+ * Hard-fail discipline (AGENTS.md §3 + §9): a missing fused ASR region in
22
+ * voice mode is a thrown `VoiceStartupError`, never a silent cloud
23
+ * fallback, never log-and-continue.
24
+ *
25
+ * Why a separate file from `pipeline.ts`: `pipeline.ts` stays
26
+ * dependency-light (it is the streaming contract, importable by text-only
27
+ * callers). The runtime wiring lives here so
28
+ * the contract module does not drag it in.
29
+ */
30
+
31
+ import type { GenerateArgs } from "../backend";
32
+ import { VoiceStartupError } from "./errors";
33
+ import {
34
+ type DraftProposer,
35
+ splitTranscriptToTokens,
36
+ type TargetVerifier,
37
+ } from "./pipeline";
38
+ import type {
39
+ PcmFrame,
40
+ StreamingTranscriber,
41
+ TextToken,
42
+ TranscriptUpdate,
43
+ VerifierStreamEvent,
44
+ } from "./types";
45
+
46
+ /* ------------------------------------------------------------------ */
47
+ /* ASR — missing-backend deferral */
48
+ /* ------------------------------------------------------------------ */
49
+
50
+ /**
51
+ * A `StreamingTranscriber` that hard-fails: used when no ASR backend is
52
+ * available (no fused streaming decoder, no fused batch decoder, no
53
+ * bundled ASR region) but a voice turn was requested. AGENTS.md §3 —
54
+ * missing required voice backend in voice mode is a thrown
55
+ * `VoiceStartupError`, never a silent fallback. The bridge returns this
56
+ * from `resolveTranscriber()` so the failure surfaces when the pipeline
57
+ * actually feeds audio rather than at bridge construction.
58
+ */
59
+ export class MissingAsrTranscriber implements StreamingTranscriber {
60
+ constructor(private readonly reason: string) {}
61
+ feed(_frame: PcmFrame): void {
62
+ throw new VoiceStartupError("missing-fused-build", this.reason);
63
+ }
64
+ async flush(): Promise<TranscriptUpdate> {
65
+ throw new VoiceStartupError("missing-fused-build", this.reason);
66
+ }
67
+ on(): () => void {
68
+ return () => {};
69
+ }
70
+ dispose(): void {}
71
+ }
72
+
73
+ /* ------------------------------------------------------------------ */
74
+ /* MTP draft / verify */
75
+ /* ------------------------------------------------------------------ */
76
+
77
+ /**
78
+ * Minimal surface of the running MTP text runtime the draft/verify
79
+ * adapters need. Kept structural so tests can pass a fake without
80
+ * standing up a real runtime.
81
+ */
82
+ export interface MtpTextRunner {
83
+ /** True when MTP speculative decoding is enabled. */
84
+ hasDrafter(): boolean;
85
+ generateWithVerifierEvents(
86
+ args: GenerateArgs & {
87
+ onVerifierEvent: (event: VerifierStreamEvent) => void | Promise<void>;
88
+ },
89
+ ): Promise<{ text: string }>;
90
+ }
91
+
92
+ /** Adapt a local-inference backend onto `MtpTextRunner`. */
93
+ export function mtpTextRunner(runner: {
94
+ mtpEnabled(): boolean;
95
+ generateWithUsage(
96
+ args: GenerateArgs & {
97
+ onVerifierEvent: (event: VerifierStreamEvent) => void | Promise<void>;
98
+ },
99
+ ): Promise<{ text: string }>;
100
+ }): MtpTextRunner {
101
+ return {
102
+ hasDrafter() {
103
+ return runner.mtpEnabled();
104
+ },
105
+ async generateWithVerifierEvents(args) {
106
+ const { text } = await runner.generateWithUsage(args);
107
+ return { text };
108
+ },
109
+ };
110
+ }
111
+
112
+ /**
113
+ * Build the prompt string the drafter/verifier run against from the
114
+ * accepted prefix. The pipeline holds tokens, not a chat transcript; for
115
+ * the streaming verify loop we feed back the concatenated token text as a
116
+ * raw continuation prompt (`cache_prompt` on the server reuses the prefix
117
+ * KV between rounds so this is cheap to re-send).
118
+ */
119
+ function prefixToPrompt(prefix: ReadonlyArray<TextToken>): string {
120
+ return prefix.map((t) => t.text).join("");
121
+ }
122
+
123
+ /**
124
+ * `DraftProposer` over native MTP. The runtime draft window already bounds
125
+ * proposals; this adapter additionally
126
+ * clamps to the pipeline's `maxDraft` and stops early on
127
+ * `cancel.cancelled`. GPU dispatch is N=1 (the fork's voice profile
128
+ * disables command-buffer batching — ledger §2 "Keep voice dispatch
129
+ * unbatched") so a barge-in lands at the next kernel boundary.
130
+ *
131
+ * Until the fork exposes a "draft only, return the proposed tokens"
132
+ * endpoint, the proposer issues a short low-temperature completion
133
+ * (`maxTokens = maxDraft`) and treats the produced tokens as the draft
134
+ * window. The verifier then re-checks them against the target's KV — the
135
+ * standard speculative-decoding contract, just with the draft sourced
136
+ * from the same server.
137
+ */
138
+ export class MtpDraftProposer implements DraftProposer {
139
+ private readonly runner: MtpTextRunner;
140
+
141
+ constructor(runner: MtpTextRunner) {
142
+ this.runner = runner;
143
+ }
144
+
145
+ async propose(args: {
146
+ prefix: ReadonlyArray<TextToken>;
147
+ maxDraft: number;
148
+ cancel: { cancelled: boolean };
149
+ }): Promise<TextToken[]> {
150
+ if (args.cancel.cancelled) return [];
151
+ if (!this.runner.hasDrafter()) {
152
+ // No drafter wired ⇒ no speculation this round. The verifier still
153
+ // produces one token per round (plain AR step), so generation
154
+ // continues; MTP being mandatory is enforced at model load time.
155
+ return [];
156
+ }
157
+ const accepted: TextToken[] = [];
158
+ let nextIndex =
159
+ args.prefix.length > 0
160
+ ? args.prefix[args.prefix.length - 1].index + 1
161
+ : 0;
162
+ await this.runner.generateWithVerifierEvents({
163
+ prompt: prefixToPrompt(args.prefix),
164
+ maxTokens: Math.max(1, Math.floor(args.maxDraft)),
165
+ temperature: 0,
166
+ signal: cancelToSignal(args.cancel),
167
+ onVerifierEvent: (event) => {
168
+ if (event.kind !== "accept") return;
169
+ for (const tok of event.tokens) {
170
+ if (accepted.length >= args.maxDraft) break;
171
+ accepted.push({ index: nextIndex++, text: tok.text });
172
+ }
173
+ },
174
+ });
175
+ if (args.cancel.cancelled) return [];
176
+ return accepted.slice(0, Math.max(1, Math.floor(args.maxDraft)));
177
+ }
178
+ }
179
+
180
+ /**
181
+ * `TargetVerifier` over the text model via MTP. Runs one
182
+ * autoregressive verify step against the runtime KV cache: it sends the
183
+ * accepted prefix and reads back the model's own continuation. The
184
+ * leading tokens that match the supplied `draft` are "accepted from
185
+ * draft"; the first mismatch is the correction; the model's `done` /
186
+ * stop is propagated.
187
+ *
188
+ * When the native fork emits exact verifier reject ranges, the
189
+ * `onVerifierEvent` callback already carries `kind: "reject"` events with
190
+ * the rejected token positions — this adapter records both and trusts the
191
+ * server's accept/reject split rather than re-deriving it.
192
+ */
193
+ export class MtpTargetVerifier implements TargetVerifier {
194
+ private readonly runner: MtpTextRunner;
195
+ private readonly maxStep: number;
196
+
197
+ constructor(runner: MtpTextRunner, opts: { maxStep?: number } = {}) {
198
+ this.runner = runner;
199
+ this.maxStep = Math.max(1, Math.floor(opts.maxStep ?? 16));
200
+ }
201
+
202
+ async verify(args: {
203
+ prefix: ReadonlyArray<TextToken>;
204
+ draft: ReadonlyArray<TextToken>;
205
+ cancel: { cancelled: boolean };
206
+ }): Promise<{ accepted: TextToken[]; done: boolean }> {
207
+ if (args.cancel.cancelled) return { accepted: [], done: false };
208
+ // Step budget: enough to confirm the whole draft window plus one
209
+ // correction token (and a little headroom for the model's own bonus
210
+ // tokens past a fully-accepted draft).
211
+ const stepTokens = Math.min(
212
+ this.maxStep,
213
+ Math.max(1, args.draft.length + 1),
214
+ );
215
+ let nextIndex =
216
+ args.prefix.length > 0
217
+ ? args.prefix[args.prefix.length - 1].index + 1
218
+ : 0;
219
+ const produced: TextToken[] = [];
220
+ let done = false;
221
+ const { text } = await this.runner.generateWithVerifierEvents({
222
+ prompt: prefixToPrompt(args.prefix),
223
+ maxTokens: stepTokens,
224
+ temperature: 0,
225
+ signal: cancelToSignal(args.cancel),
226
+ onVerifierEvent: (event) => {
227
+ if (event.kind === "accept") {
228
+ for (const tok of event.tokens) {
229
+ produced.push({ index: nextIndex++, text: tok.text });
230
+ }
231
+ }
232
+ // reject events: the server already retracted those positions
233
+ // from its own stream, so we just don't append them. Nothing else
234
+ // to do here — the chunker rollback is driven by the pipeline
235
+ // comparing `accepted` against `draft`.
236
+ },
237
+ });
238
+ if (args.cancel.cancelled) return { accepted: [], done: false };
239
+ if (produced.length === 0 && text.length > 0) {
240
+ // Non-streaming server (no per-delta events): fall back to splitting
241
+ // the returned text into tokens.
242
+ produced.push(...splitTranscriptToTokens(text, nextIndex));
243
+ }
244
+ // The model reached its natural stop when it produced fewer tokens
245
+ // than the step budget (it hit an EOS / stop sequence before the cap).
246
+ done = produced.length < stepTokens;
247
+ return { accepted: produced, done };
248
+ }
249
+ }
250
+
251
+ /* ------------------------------------------------------------------ */
252
+ /* helpers */
253
+ /* ------------------------------------------------------------------ */
254
+
255
+ /**
256
+ * Bridge a `{cancelled: boolean}` flag (the pipeline's cancellation
257
+ * primitive — checked between kernel ticks) onto an `AbortSignal` so the
258
+ * local generation aborts when a barge-in fires.
259
+ *
260
+ * L6 — event-driven cancellation. The cancel token may expose an
261
+ * `onCancel(listener)` hook (set by the scheduler / pipeline when it
262
+ * wires the token up); when present, we fire `controller.abort()`
263
+ * synchronously from that hook and skip polling entirely. When the
264
+ * token is the plain `{cancelled: boolean}` POJO with no hook, we fall
265
+ * back to a coarse poll so a barge-in still lands in bounded time —
266
+ * but the hook-driven path is what voice barge-ins use in production.
267
+ */
268
+ export interface CancelTokenWithSignal {
269
+ cancelled: boolean;
270
+ /**
271
+ * Optional hook the token's owner fires synchronously when `cancelled`
272
+ * flips from false to true. The listener returns nothing; calling it
273
+ * after `cancelled` has already been set is a harmless no-op.
274
+ */
275
+ onCancel?: (listener: () => void) => () => void;
276
+ }
277
+
278
+ function cancelToSignal(cancel: CancelTokenWithSignal): AbortSignal {
279
+ const controller = new AbortController();
280
+ if (cancel.cancelled) {
281
+ controller.abort();
282
+ return controller.signal;
283
+ }
284
+ if (typeof cancel.onCancel === "function") {
285
+ // Event-driven path — no polling. The owner fires the listener
286
+ // synchronously on barge-in; we abort the HTTP request at that
287
+ // instant. `once`: AbortController.abort() is idempotent but we
288
+ // still want to drop the listener to free the closure.
289
+ const unsubscribe = cancel.onCancel(() => {
290
+ controller.abort();
291
+ });
292
+ controller.signal.addEventListener("abort", () => unsubscribe(), {
293
+ once: true,
294
+ });
295
+ return controller.signal;
296
+ }
297
+ // Fallback: polling. Kept for tokens that don't expose the hook (e.g.
298
+ // tests that pass a plain `{cancelled}` POJO). The interval is short
299
+ // enough that an aborted-but-unhooked token still lands the abort
300
+ // before a typical kernel tick completes.
301
+ const timer = setInterval(() => {
302
+ if (cancel.cancelled) {
303
+ controller.abort();
304
+ clearInterval(timer);
305
+ }
306
+ }, 10);
307
+ // Don't keep the event loop alive purely for this poll.
308
+ if (typeof timer === "object" && timer && "unref" in timer) {
309
+ (timer as { unref(): void }).unref();
310
+ }
311
+ controller.signal.addEventListener("abort", () => clearInterval(timer), {
312
+ once: true,
313
+ });
314
+ return controller.signal;
315
+ }
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Pipelined parallel-generation scheduler — the fused mic→speech graph
3
+ * from `packages/inference/AGENTS.md` §4:
4
+ *
5
+ * mic / file → ASR → text tokens
6
+ * ↓
7
+ * scheduler ──→ MTP drafter (proposes N tokens)
8
+ * ∥ (overlap, not sequential)
9
+ * target verifier (text model)
10
+ * ↓
11
+ * accepted tokens → phrase chunker
12
+ * ↓ ↘
13
+ * speaker preset (cached) rollback queue
14
+ * ↓ ↙
15
+ * OmniVoice TTS ←── on-reject: cancel chunk
16
+ * ↓
17
+ * PCM ring buffer → audio out
18
+ *
19
+ * The headline contract: **the moment ASR emits its last token, the
20
+ * MTP drafter starts drafting AND the target starts verifying — they
21
+ * overlap.** Drafter speculation N tokens ahead happens concurrently
22
+ * with the target verifying the previous window; accepted tokens are
23
+ * handed to the phrase chunker within the same scheduler tick.
24
+ *
25
+ * GPU command buffers stay N=1 (no command-buffer batching for voice)
26
+ * so a barge-in cancel lands at the next kernel boundary, not after a
27
+ * batch flush.
28
+ *
29
+ * Why this lives next to `VoiceScheduler` and not inside it: the
30
+ * scheduler owns the *audio* side (chunker → TTS → ring buffer →
31
+ * rollback → barge-in). This module owns the *text-generation* side
32
+ * (audio source → ASR → drafter∥verifier loop) and feeds accepted /
33
+ * rejected ranges into the scheduler. Keeping them separate keeps the
34
+ * scheduler usable from text-only callers (which reach the same nodes
35
+ * via the same scheduler — AGENTS.md §4) without an ASR/drafter
36
+ * dependency.
37
+ */
38
+ import { PartialStabilizer } from "./partial-stabilizer";
39
+ import type { VoiceScheduler } from "./scheduler";
40
+ import type { StreamingTranscriber, TextToken, TranscriptionAudio, VerifierStreamEvent } from "./types";
41
+ /**
42
+ * Split a transcript string into contiguous text tokens. The fused ASR
43
+ * tokenizer is shared with the text backbone (AGENTS.md §1 — zero
44
+ * re-tokenization), so the pipeline only needs *contiguous* token
45
+ * indices, not the model's exact subword boundaries; whitespace-aware
46
+ * word chunking is the closest stable approximation when only surface
47
+ * text is available. Empty input yields no tokens.
48
+ *
49
+ * `tokenIds`, when supplied, are the text-model vocabulary ids the fused
50
+ * ASR decoder emitted for `transcript`. When the lengths line up they are
51
+ * attached as `TextToken.id` so a downstream in-process handoff can skip
52
+ * re-tokenization; otherwise (mismatch — the surface split disagrees with
53
+ * the decoder's subword boundaries) the ids are dropped and only the
54
+ * word-chunk approximation is returned.
55
+ */
56
+ export declare function splitTranscriptToTokens(transcript: string, startIndex?: number, tokenIds?: ReadonlyArray<number>): TextToken[];
57
+ /**
58
+ * MTP drafter. `propose` returns up to `maxDraft` candidate
59
+ * continuation tokens given the accepted prefix. N=1 command buffers —
60
+ * the implementation MUST keep its GPU dispatch short enough to cancel
61
+ * at the next kernel boundary (no command-buffer batching for voice).
62
+ * Honours `cancel.cancelled` between kernel ticks.
63
+ */
64
+ export interface DraftProposer {
65
+ propose(args: {
66
+ prefix: ReadonlyArray<TextToken>;
67
+ maxDraft: number;
68
+ cancel: {
69
+ cancelled: boolean;
70
+ };
71
+ }): Promise<TextToken[]>;
72
+ }
73
+ /**
74
+ * Target verifier (the text model). Given the accepted prefix plus a
75
+ * draft window, returns which leading draft tokens are accepted and the
76
+ * one corrected token at the first divergence (if any). When the draft
77
+ * is empty, the verifier still produces one token (plain autoregressive
78
+ * step). Honours `cancel.cancelled` between kernel ticks.
79
+ */
80
+ export interface TargetVerifier {
81
+ verify(args: {
82
+ prefix: ReadonlyArray<TextToken>;
83
+ draft: ReadonlyArray<TextToken>;
84
+ cancel: {
85
+ cancelled: boolean;
86
+ };
87
+ }): Promise<{
88
+ accepted: TextToken[];
89
+ /** Set when the verifier reached the natural end of generation. */
90
+ done: boolean;
91
+ }>;
92
+ }
93
+ export interface VoicePipelineDeps {
94
+ scheduler: VoiceScheduler;
95
+ /**
96
+ * The live frame-fed ASR adapter (`voice/transcriber.ts` — fused
97
+ * `eliza_inference_asr_stream_*`, the fused batch adapter, or
98
+ * `MissingAsrTranscriber` deferring a hard failure). The pipeline drives
99
+ * it as a batch: it feeds the whole (VAD-gated) utterance buffer as one
100
+ * frame, `flush()`es to finalize, then splits the final transcript into
101
+ * contiguous text tokens (`splitTranscriptToTokens`). One `StreamingTranscriber`
102
+ * contract — there is no separate batch ASR interface.
103
+ */
104
+ transcriber: StreamingTranscriber;
105
+ drafter: DraftProposer;
106
+ verifier: TargetVerifier;
107
+ }
108
+ export interface VoicePipelineConfig {
109
+ /**
110
+ * Max tokens MTP drafts per round. Per-tier; small (≤8) so a
111
+ * rollback is cheap. The drafter and verifier overlap one round: while
112
+ * the verifier checks round k, the drafter speculates round k+1.
113
+ */
114
+ maxDraftTokens: number;
115
+ /**
116
+ * Hard cap on generated tokens per turn (safety stop). The verifier's
117
+ * `done` flag is the normal stop; this bounds a runaway model.
118
+ */
119
+ maxGeneratedTokens?: number;
120
+ /**
121
+ * A2 — when true, run streaming-ASR partials through a LocalAgreement-n
122
+ * stabilizer (`PartialStabilizer`) before splitting them into tokens
123
+ * and feeding the drafter. Off by default until the streaming-ASR
124
+ * fast path lands and validates the latency/quality trade. The
125
+ * `StreamingTranscriber.flush()`-driven batch path is unaffected (the
126
+ * stabilizer is a no-op on a single final partial).
127
+ */
128
+ usePartialStabilizer?: boolean;
129
+ /**
130
+ * A2 — agreement count `n` for `PartialStabilizer` when enabled.
131
+ * Ignored when `usePartialStabilizer` is false. Default 2.
132
+ */
133
+ partialStabilizerAgreementCount?: number;
134
+ }
135
+ export interface VoicePipelineEvents {
136
+ /** Fired once, the instant ASR emits its final token (= drafter+verifier kick-off). */
137
+ onAsrComplete?(tokens: ReadonlyArray<TextToken>): void;
138
+ /**
139
+ * Fired exactly once per turn, right after the ASR phase finishes and
140
+ * before the first drafter/verifier round. ASR → text → TTS are
141
+ * sequential within a turn (AGENTS.md §4), so the idle ASR-model pages
142
+ * can be dropped now — wire this to `MmapRegionHandle.evictPages()`
143
+ * (`madvise(MADV_DONTNEED)` on POSIX) for the ASR region to claw back
144
+ * ~1 GB of peak RSS while TTS decodes. The pages page back in
145
+ * transparently on the next turn's `feed()`; a host that prefers to
146
+ * keep ASR resident simply doesn't supply this hook. May be async; the
147
+ * pipeline does not block on it (a slow trim must not delay first audio).
148
+ */
149
+ onAsrPhaseComplete?(): void | Promise<void>;
150
+ /** Fired with each verifier accept/reject event before it hits the scheduler. */
151
+ onVerifierEvent?(event: VerifierStreamEvent): void;
152
+ /** Fired when the loop exits (verifier `done`, token cap, or barge-in cancel). */
153
+ onComplete?(reason: "done" | "token-cap" | "cancelled"): void;
154
+ }
155
+ /**
156
+ * One pipeline per active voice turn. Construct, call `run(audio)`,
157
+ * await the returned promise (or call `cancel()` for barge-in). The
158
+ * scheduler's barge-in controller also cancels an in-flight run — wire
159
+ * `bridge.triggerBargeIn()` and this run's `cancel()` to the same VAD
160
+ * signal so both the audio side (ring buffer drain) and the text side
161
+ * (stop drafting/verifying) abort together.
162
+ */
163
+ export declare class VoicePipeline {
164
+ private readonly scheduler;
165
+ private readonly transcriber;
166
+ private readonly drafter;
167
+ private readonly verifier;
168
+ private readonly maxDraftTokens;
169
+ private readonly maxGeneratedTokens;
170
+ private readonly events;
171
+ /**
172
+ * A2 — when `config.usePartialStabilizer === true`, this is the active
173
+ * `PartialStabilizer` instance. Streaming-ASR consumers feed partials
174
+ * through it; the batch path in `transcribeAll()` collapses on a single
175
+ * final partial so the stabilizer is a no-op there. Exposed via
176
+ * `getPartialStabilizer()` so the streaming-ASR adapter (separate agent)
177
+ * can plug straight in once it ships.
178
+ */
179
+ private readonly partialStabilizer;
180
+ private active;
181
+ constructor(deps: VoicePipelineDeps, config: VoicePipelineConfig, events?: VoicePipelineEvents);
182
+ /** True while a turn is in flight. */
183
+ isRunning(): boolean;
184
+ /**
185
+ * A2 — the active `PartialStabilizer` when the pipeline was built with
186
+ * `usePartialStabilizer: true`, otherwise null. The streaming-ASR
187
+ * adapter (separate agent) feeds partials into this instance and
188
+ * forwards the `stable` portion downstream. Returning null when the
189
+ * feature flag is off lets the adapter skip the work entirely.
190
+ */
191
+ getPartialStabilizer(): PartialStabilizer | null;
192
+ /**
193
+ * Run one mic→speech turn. ASR streams first; the instant its last
194
+ * token lands, the drafter and verifier kick off concurrently and
195
+ * accepted tokens flow into the scheduler's chunker on the same tick.
196
+ * Resolves with the exit reason. Throws if a turn is already running.
197
+ */
198
+ run(audio: TranscriptionAudio): Promise<"done" | "token-cap" | "cancelled">;
199
+ /**
200
+ * Barge-in: cancel the in-flight turn. Stops ASR, stops the
201
+ * drafter/verifier loop at the next kernel boundary, and triggers the
202
+ * scheduler's barge-in (ring buffer drain + chunker flush + in-flight
203
+ * TTS cancel). No-op when no turn is running.
204
+ */
205
+ cancel(): void;
206
+ private execute;
207
+ /**
208
+ * Feed the whole utterance buffer to the live transcriber, finalize,
209
+ * and return the final transcript as contiguous text tokens. The
210
+ * transcriber is disposed afterwards (it is one per turn). A barge-in
211
+ * cancel checked before `flush()` short-circuits to an empty list.
212
+ */
213
+ private transcribeAll;
214
+ private finish;
215
+ }
216
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAGX,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAC9B,SAAS,EAAE,CAoBb;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,IAAI,EAAE;QACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,GAAG,OAAO,CAAC;QACX,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtB,mEAAmE;QACnE,IAAI,EAAE,OAAO,CAAC;KACd,CAAC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B;;;;;;;;OAQG;IACH,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IACnC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IACnC,uFAAuF;IACvF,aAAa,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACvD;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,iFAAiF;IACjF,eAAe,CAAC,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnD,kFAAkF;IAClF,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;CAC9D;AASD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,MAAM,CAA4B;gBAGzC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,GAAE,mBAAwB;IA2BjC,sCAAsC;IACtC,SAAS,IAAI,OAAO;IAIpB;;;;;;OAMG;IACH,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAIhD;;;;;OAKG;IACG,GAAG,CACR,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAgB9C;;;;;OAKG;IACH,MAAM,IAAI,IAAI;YAKA,OAAO;IAwJrB;;;;;OAKG;YACW,aAAa;IAoB3B,OAAO,CAAC,MAAM;CAMd"}