@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,170 @@
1
+ /**
2
+ * Eager provider context split (C3).
3
+ *
4
+ * Splits provider context assembly into two parts so KV prefill can begin
5
+ * on speech-START — before ASR has produced a transcript:
6
+ *
7
+ * 1. **Deterministic part** — doesn't depend on the user's message text:
8
+ * system prompt, persona, enabled skills list, conversation history
9
+ * up to the last turn, tool definitions.
10
+ * Built on `speech-start` (fire-and-forget via `prebuildDeterministic`).
11
+ *
12
+ * 2. **Message-dependent part** — depends on the actual transcript:
13
+ * the user's message itself, any message-conditional context injected
14
+ * by callers (e.g. relevant calendar/contacts snippets).
15
+ * Built on `speech-end` via `complete(userMessage)`.
16
+ *
17
+ * The codebase routes context through elizaOS's provider pipeline rather than
18
+ * a single `buildContext` call. `EagerContextBuilder` adapts to that model by
19
+ * accepting two async factory functions: one for the deterministic part
20
+ * (returns a `ContextPartial`) and one for the message-dependent part
21
+ * (receives the user message, returns a `ContextPartial`). `mergeContext`
22
+ * combines them in a consistent order so downstream consumers always see
23
+ * `[deterministic parts] + [message-dependent parts]`.
24
+ *
25
+ * Staleness: the deterministic context is considered stale after 30 seconds
26
+ * (conversation history may have changed if the agent received a message from
27
+ * another surface). `complete()` rebuilds when stale.
28
+ *
29
+ * Thread-safety: all methods are async; do NOT call them concurrently from
30
+ * multiple async contexts — the class is designed for single-threaded use by
31
+ * the voice event loop.
32
+ */
33
+ /**
34
+ * A fragment of the final prompt context. Fields are intentionally generic
35
+ * so the same type works regardless of whether the runtime uses raw strings,
36
+ * token arrays, or structured message lists.
37
+ *
38
+ * In practice callers fill `systemBlocks` with things like the system prompt,
39
+ * enabled skills, persona, tool definitions, and `historyBlocks` with the
40
+ * conversation history. `mergeContext` joins them in that order.
41
+ */
42
+ export interface ContextPartial {
43
+ /**
44
+ * Ordered list of system / pre-amble text blocks. Each element is a
45
+ * distinct structural unit (e.g. persona block, skills block, tool-defs
46
+ * block). They are joined in order during `mergeContext`.
47
+ */
48
+ systemBlocks: string[];
49
+ /**
50
+ * Conversation history turns up to (but NOT including) the new user
51
+ * message. Stored as alternating `{role, content}` entries for
52
+ * compatibility with the elizaOS message format.
53
+ */
54
+ historyBlocks: Array<{
55
+ role: "user" | "assistant";
56
+ content: string;
57
+ }>;
58
+ /**
59
+ * Free-form metadata for diagnostics / telemetry. Not included in the
60
+ * merged prompt text.
61
+ */
62
+ meta?: Record<string, unknown>;
63
+ }
64
+ /**
65
+ * Complete merged context — the full prompt assembly ready for the LLM
66
+ * inference call. Produced by `mergeContext` from the two halves.
67
+ */
68
+ export interface FullContext {
69
+ /**
70
+ * The fully assembled system string (deterministic blocks joined by
71
+ * double-newline, message-dependent blocks appended after).
72
+ */
73
+ systemText: string;
74
+ /**
75
+ * Full conversation history including the new user message at the end.
76
+ */
77
+ history: Array<{
78
+ role: "user" | "assistant";
79
+ content: string;
80
+ }>;
81
+ /** ISO timestamp of when the deterministic part was built. */
82
+ deterministicBuiltAt: string;
83
+ /** ISO timestamp of when `complete()` was called. */
84
+ completedAt: string;
85
+ /** True when the deterministic context was rebuilt inside `complete()` due to staleness. */
86
+ deterministicWasStale: boolean;
87
+ }
88
+ /**
89
+ * Factory function that builds the deterministic context part. Called with no
90
+ * arguments (it must capture its own runtime reference if it needs one).
91
+ */
92
+ export type BuildDeterministicFn = () => Promise<ContextPartial>;
93
+ /**
94
+ * Factory function that builds the message-dependent context part. Called with
95
+ * the actual user message text.
96
+ */
97
+ export type BuildMessageDependentFn = (userMessage: string) => Promise<ContextPartial>;
98
+ export interface EagerContextBuilderOptions {
99
+ buildDeterministic: BuildDeterministicFn;
100
+ buildMessageDependent: BuildMessageDependentFn;
101
+ /**
102
+ * How many milliseconds before the cached deterministic context is
103
+ * considered stale and must be rebuilt. Default 30 000 ms.
104
+ */
105
+ staleCutoffMs?: number;
106
+ /**
107
+ * Optional clock injection for tests. Defaults to `Date.now`.
108
+ */
109
+ now?: () => number;
110
+ }
111
+ /**
112
+ * Manages eager splitting of provider context into deterministic + message-
113
+ * dependent halves. Wire `prebuildDeterministic` to the `speech-start` event
114
+ * and `complete` to the `speech-end` path (after ASR produces the final
115
+ * transcript).
116
+ */
117
+ export declare class EagerContextBuilder {
118
+ private deterministic;
119
+ private builtAt;
120
+ private readonly staleCutoffMs;
121
+ private readonly buildDeterministicFn;
122
+ private readonly buildMessageDependentFn;
123
+ private readonly nowFn;
124
+ /** In-flight prebuild promise — prevents concurrent duplicate prebuilds. */
125
+ private prebuildInFlight;
126
+ constructor(opts: EagerContextBuilderOptions);
127
+ /**
128
+ * Fire on `speech-start` (fire-and-forget). Builds and caches the
129
+ * deterministic context half so it is ready when `complete` is called.
130
+ *
131
+ * Concurrent calls are collapsed into a single in-flight build — safe to
132
+ * call multiple times without double-spending GPU/compute resources.
133
+ */
134
+ prebuildDeterministic(): void;
135
+ /**
136
+ * Call on `speech-end` with the actual final transcript. Returns the fully
137
+ * merged context.
138
+ *
139
+ * If the cached deterministic context is absent or stale it is rebuilt
140
+ * inline (blocking). The returned `deterministicWasStale` flag lets callers
141
+ * emit latency telemetry when the eager pre-build didn't complete in time.
142
+ */
143
+ complete(userMessage: string): Promise<FullContext>;
144
+ /**
145
+ * Returns true if the cached deterministic context is older than
146
+ * `staleCutoffMs`.
147
+ */
148
+ isStale(): boolean;
149
+ /**
150
+ * Discard the cached deterministic context. Useful when the conversation
151
+ * is reset or the runtime is re-initialised. Thread-safe — can be called
152
+ * from any context.
153
+ */
154
+ invalidate(): void;
155
+ private runPrebuild;
156
+ }
157
+ /**
158
+ * Merge deterministic and message-dependent context halves into a
159
+ * `FullContext`. The merged output places deterministic system blocks first,
160
+ * then message-dependent system blocks, and appends the user message as the
161
+ * last history turn.
162
+ *
163
+ * @internal Exported for tests.
164
+ */
165
+ export declare function mergeContext(det: ContextPartial, msgDep: ContextPartial, timestamps: {
166
+ deterministicBuiltAt: string;
167
+ completedAt: string;
168
+ deterministicWasStale: boolean;
169
+ }): FullContext;
170
+ //# sourceMappingURL=eager-context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eager-context-builder.d.ts","sourceRoot":"","sources":["eager-context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;OAIG;IACH,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,8DAA8D;IAC9D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,qBAAqB,EAAE,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACrC,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,cAAc,CAAC,CAAC;AAQ7B,MAAM,WAAW,0BAA0B;IAC1C,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,qBAAqB,EAAE,uBAAuB,CAAC;IAC/C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB,CAA8B;gBAE1C,IAAI,EAAE,0BAA0B;IAO5C;;;;;;OAMG;IACH,qBAAqB,IAAI,IAAI;IAO7B;;;;;;;OAOG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBzD;;;OAGG;IACH,OAAO,IAAI,OAAO;IAKlB;;;;OAIG;IACH,UAAU,IAAI,IAAI;YASJ,WAAW;CAKzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC3B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;CAC/B,GACC,WAAW,CAkBb"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Eager provider context split (C3).
3
+ *
4
+ * Splits provider context assembly into two parts so KV prefill can begin
5
+ * on speech-START — before ASR has produced a transcript:
6
+ *
7
+ * 1. **Deterministic part** — doesn't depend on the user's message text:
8
+ * system prompt, persona, enabled skills list, conversation history
9
+ * up to the last turn, tool definitions.
10
+ * Built on `speech-start` (fire-and-forget via `prebuildDeterministic`).
11
+ *
12
+ * 2. **Message-dependent part** — depends on the actual transcript:
13
+ * the user's message itself, any message-conditional context injected
14
+ * by callers (e.g. relevant calendar/contacts snippets).
15
+ * Built on `speech-end` via `complete(userMessage)`.
16
+ *
17
+ * The codebase routes context through elizaOS's provider pipeline rather than
18
+ * a single `buildContext` call. `EagerContextBuilder` adapts to that model by
19
+ * accepting two async factory functions: one for the deterministic part
20
+ * (returns a `ContextPartial`) and one for the message-dependent part
21
+ * (receives the user message, returns a `ContextPartial`). `mergeContext`
22
+ * combines them in a consistent order so downstream consumers always see
23
+ * `[deterministic parts] + [message-dependent parts]`.
24
+ *
25
+ * Staleness: the deterministic context is considered stale after 30 seconds
26
+ * (conversation history may have changed if the agent received a message from
27
+ * another surface). `complete()` rebuilds when stale.
28
+ *
29
+ * Thread-safety: all methods are async; do NOT call them concurrently from
30
+ * multiple async contexts — the class is designed for single-threaded use by
31
+ * the voice event loop.
32
+ */
33
+
34
+ // ---------------------------------------------------------------------------
35
+ // Types
36
+ // ---------------------------------------------------------------------------
37
+
38
+ /**
39
+ * A fragment of the final prompt context. Fields are intentionally generic
40
+ * so the same type works regardless of whether the runtime uses raw strings,
41
+ * token arrays, or structured message lists.
42
+ *
43
+ * In practice callers fill `systemBlocks` with things like the system prompt,
44
+ * enabled skills, persona, tool definitions, and `historyBlocks` with the
45
+ * conversation history. `mergeContext` joins them in that order.
46
+ */
47
+ export interface ContextPartial {
48
+ /**
49
+ * Ordered list of system / pre-amble text blocks. Each element is a
50
+ * distinct structural unit (e.g. persona block, skills block, tool-defs
51
+ * block). They are joined in order during `mergeContext`.
52
+ */
53
+ systemBlocks: string[];
54
+ /**
55
+ * Conversation history turns up to (but NOT including) the new user
56
+ * message. Stored as alternating `{role, content}` entries for
57
+ * compatibility with the elizaOS message format.
58
+ */
59
+ historyBlocks: Array<{ role: "user" | "assistant"; content: string }>;
60
+ /**
61
+ * Free-form metadata for diagnostics / telemetry. Not included in the
62
+ * merged prompt text.
63
+ */
64
+ meta?: Record<string, unknown>;
65
+ }
66
+
67
+ /**
68
+ * Complete merged context — the full prompt assembly ready for the LLM
69
+ * inference call. Produced by `mergeContext` from the two halves.
70
+ */
71
+ export interface FullContext {
72
+ /**
73
+ * The fully assembled system string (deterministic blocks joined by
74
+ * double-newline, message-dependent blocks appended after).
75
+ */
76
+ systemText: string;
77
+ /**
78
+ * Full conversation history including the new user message at the end.
79
+ */
80
+ history: Array<{ role: "user" | "assistant"; content: string }>;
81
+ /** ISO timestamp of when the deterministic part was built. */
82
+ deterministicBuiltAt: string;
83
+ /** ISO timestamp of when `complete()` was called. */
84
+ completedAt: string;
85
+ /** True when the deterministic context was rebuilt inside `complete()` due to staleness. */
86
+ deterministicWasStale: boolean;
87
+ }
88
+
89
+ /**
90
+ * Factory function that builds the deterministic context part. Called with no
91
+ * arguments (it must capture its own runtime reference if it needs one).
92
+ */
93
+ export type BuildDeterministicFn = () => Promise<ContextPartial>;
94
+
95
+ /**
96
+ * Factory function that builds the message-dependent context part. Called with
97
+ * the actual user message text.
98
+ */
99
+ export type BuildMessageDependentFn = (
100
+ userMessage: string,
101
+ ) => Promise<ContextPartial>;
102
+
103
+ // ---------------------------------------------------------------------------
104
+ // Implementation
105
+ // ---------------------------------------------------------------------------
106
+
107
+ const DEFAULT_STALE_MS = 30_000;
108
+
109
+ export interface EagerContextBuilderOptions {
110
+ buildDeterministic: BuildDeterministicFn;
111
+ buildMessageDependent: BuildMessageDependentFn;
112
+ /**
113
+ * How many milliseconds before the cached deterministic context is
114
+ * considered stale and must be rebuilt. Default 30 000 ms.
115
+ */
116
+ staleCutoffMs?: number;
117
+ /**
118
+ * Optional clock injection for tests. Defaults to `Date.now`.
119
+ */
120
+ now?: () => number;
121
+ }
122
+
123
+ /**
124
+ * Manages eager splitting of provider context into deterministic + message-
125
+ * dependent halves. Wire `prebuildDeterministic` to the `speech-start` event
126
+ * and `complete` to the `speech-end` path (after ASR produces the final
127
+ * transcript).
128
+ */
129
+ export class EagerContextBuilder {
130
+ private deterministic: ContextPartial | null = null;
131
+ private builtAt: number = 0;
132
+ private readonly staleCutoffMs: number;
133
+ private readonly buildDeterministicFn: BuildDeterministicFn;
134
+ private readonly buildMessageDependentFn: BuildMessageDependentFn;
135
+ private readonly nowFn: () => number;
136
+
137
+ /** In-flight prebuild promise — prevents concurrent duplicate prebuilds. */
138
+ private prebuildInFlight: Promise<void> | null = null;
139
+
140
+ constructor(opts: EagerContextBuilderOptions) {
141
+ this.buildDeterministicFn = opts.buildDeterministic;
142
+ this.buildMessageDependentFn = opts.buildMessageDependent;
143
+ this.staleCutoffMs = opts.staleCutoffMs ?? DEFAULT_STALE_MS;
144
+ this.nowFn = opts.now ?? (() => Date.now());
145
+ }
146
+
147
+ /**
148
+ * Fire on `speech-start` (fire-and-forget). Builds and caches the
149
+ * deterministic context half so it is ready when `complete` is called.
150
+ *
151
+ * Concurrent calls are collapsed into a single in-flight build — safe to
152
+ * call multiple times without double-spending GPU/compute resources.
153
+ */
154
+ prebuildDeterministic(): void {
155
+ if (this.prebuildInFlight) return;
156
+ this.prebuildInFlight = this.runPrebuild().finally(() => {
157
+ this.prebuildInFlight = null;
158
+ });
159
+ }
160
+
161
+ /**
162
+ * Call on `speech-end` with the actual final transcript. Returns the fully
163
+ * merged context.
164
+ *
165
+ * If the cached deterministic context is absent or stale it is rebuilt
166
+ * inline (blocking). The returned `deterministicWasStale` flag lets callers
167
+ * emit latency telemetry when the eager pre-build didn't complete in time.
168
+ */
169
+ async complete(userMessage: string): Promise<FullContext> {
170
+ let deterministicWasStale = false;
171
+ // If a prebuild is in-flight, wait for it first (avoids duplicate work).
172
+ if (this.prebuildInFlight) {
173
+ await this.prebuildInFlight;
174
+ }
175
+ let det = this.deterministic;
176
+ if (det === null || this.isStale()) {
177
+ deterministicWasStale = det !== null; // null means never built; stale = was built but expired
178
+ await this.runPrebuild();
179
+ det = this.deterministic;
180
+ if (det === null) {
181
+ throw new Error(
182
+ "deterministic context prebuild did not produce a result",
183
+ );
184
+ }
185
+ }
186
+ const msgDep = await this.buildMessageDependentFn(userMessage);
187
+ return mergeContext(det, msgDep, {
188
+ deterministicBuiltAt: new Date(this.builtAt).toISOString(),
189
+ completedAt: new Date(this.nowFn()).toISOString(),
190
+ deterministicWasStale,
191
+ });
192
+ }
193
+
194
+ /**
195
+ * Returns true if the cached deterministic context is older than
196
+ * `staleCutoffMs`.
197
+ */
198
+ isStale(): boolean {
199
+ if (this.deterministic === null) return true;
200
+ return this.nowFn() - this.builtAt > this.staleCutoffMs;
201
+ }
202
+
203
+ /**
204
+ * Discard the cached deterministic context. Useful when the conversation
205
+ * is reset or the runtime is re-initialised. Thread-safe — can be called
206
+ * from any context.
207
+ */
208
+ invalidate(): void {
209
+ this.deterministic = null;
210
+ this.builtAt = 0;
211
+ }
212
+
213
+ // -------------------------------------------------------------------------
214
+ // private
215
+ // -------------------------------------------------------------------------
216
+
217
+ private async runPrebuild(): Promise<void> {
218
+ const result = await this.buildDeterministicFn();
219
+ this.deterministic = result;
220
+ this.builtAt = this.nowFn();
221
+ }
222
+ }
223
+
224
+ // ---------------------------------------------------------------------------
225
+ // mergeContext
226
+ // ---------------------------------------------------------------------------
227
+
228
+ /**
229
+ * Merge deterministic and message-dependent context halves into a
230
+ * `FullContext`. The merged output places deterministic system blocks first,
231
+ * then message-dependent system blocks, and appends the user message as the
232
+ * last history turn.
233
+ *
234
+ * @internal Exported for tests.
235
+ */
236
+ export function mergeContext(
237
+ det: ContextPartial,
238
+ msgDep: ContextPartial,
239
+ timestamps: {
240
+ deterministicBuiltAt: string;
241
+ completedAt: string;
242
+ deterministicWasStale: boolean;
243
+ },
244
+ ): FullContext {
245
+ const systemBlocks = [...det.systemBlocks, ...msgDep.systemBlocks];
246
+ const systemText = systemBlocks.filter(Boolean).join("\n\n");
247
+
248
+ // History: deterministic half contains history up to last turn; message-
249
+ // dependent half contains the new user message (and any injected turns).
250
+ const history: FullContext["history"] = [
251
+ ...det.historyBlocks,
252
+ ...msgDep.historyBlocks,
253
+ ];
254
+
255
+ return {
256
+ systemText,
257
+ history,
258
+ deterministicBuiltAt: timestamps.deterministicBuiltAt,
259
+ completedAt: timestamps.completedAt,
260
+ deterministicWasStale: timestamps.deterministicWasStale,
261
+ };
262
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Eliza-1 EOT scorer — reuses the already-loaded text model to compute
3
+ * P(`<|im_end|>` next | conversation_so_far) without shipping a separate
4
+ * detector ONNX.
5
+ *
6
+ * The runtime keeps a `LlamaModel` resident for chat generation. Voice
7
+ * EOT scoring is a single forward pass over the formatted Qwen chat
8
+ * prompt with the trailing `<|im_end|>` removed. `capacitor-llama`'s
9
+ * `LlamaContextSequence.controlledEvaluate()` returns the next-token
10
+ * probability distribution, so we simply read the entry for the
11
+ * `<|im_end|>` token id — no sampling loop, no KV-cache growth on the
12
+ * chat session.
13
+ *
14
+ * A dedicated `LlamaContext` is held just for this scorer so we do not
15
+ * fight the chat session pool for sequence slots. The context is small
16
+ * (single sequence, ≤512 tokens) and shares the model weights with the
17
+ * chat path; only the per-sequence KV cache is duplicated.
18
+ *
19
+ * Optionally a LoRA adapter is attached to that context — that is how
20
+ * a fine-tuned EOT head (trained per
21
+ * `packages/training/scripts/turn_detector/`) layers onto the same base
22
+ * weights without a separate GGUF.
23
+ */
24
+ export interface LlamaModelLike {
25
+ tokenize(text: string, specialTokens?: boolean): readonly number[];
26
+ createContext(options: {
27
+ contextSize?: number;
28
+ sequences?: number;
29
+ flashAttention?: boolean;
30
+ lora?: string | {
31
+ adapters: Array<{
32
+ filePath: string;
33
+ scale?: number;
34
+ }>;
35
+ };
36
+ }): Promise<LlamaContextLike>;
37
+ }
38
+ export interface LlamaContextLike {
39
+ getSequence(options?: object): LlamaContextSequenceLike;
40
+ dispose(): Promise<void>;
41
+ }
42
+ export interface LlamaContextSequenceLike {
43
+ clearHistory(): Promise<void>;
44
+ controlledEvaluate(input: ControlledEvaluateInputLike[], options?: {
45
+ evaluationPriority?: number;
46
+ }): Promise<Array<ControlledEvaluateOutputLike | undefined>>;
47
+ }
48
+ export type ControlledEvaluateInputLike = number | [
49
+ token: number,
50
+ options: {
51
+ generateNext?: {
52
+ probabilities?: boolean;
53
+ confidence?: boolean;
54
+ };
55
+ }
56
+ ];
57
+ export interface ControlledEvaluateOutputLike {
58
+ next: {
59
+ token?: number | null;
60
+ confidence?: number;
61
+ probabilities?: Map<number, number>;
62
+ };
63
+ }
64
+ export interface Eliza1EotScorerOptions {
65
+ /** The already-loaded text model (eliza-1 drafter). */
66
+ model: LlamaModelLike;
67
+ /** Optional EOT LoRA adapter path (absolute). When set, applied to the dedicated EOT context. */
68
+ loraPath?: string;
69
+ /** Adapter scale (default 1.0). Only meaningful when `loraPath` is set. */
70
+ loraScale?: number;
71
+ /** Max history tokens to keep in the prompt window. LiveKit uses 128. */
72
+ maxHistoryTokens?: number;
73
+ /** Context size for the dedicated EOT context. Default 512. */
74
+ contextSize?: number;
75
+ /** Model label for telemetry. */
76
+ modelLabel?: string;
77
+ }
78
+ export interface Eliza1EotScoreResult {
79
+ /** Probability of `<|im_end|>` as the next token, ∈ [0, 1]. */
80
+ probability: number;
81
+ /** Wall-clock model latency for this scoring call. */
82
+ latencyMs: number;
83
+ /** Number of prompt tokens evaluated. */
84
+ promptTokens: number;
85
+ }
86
+ /**
87
+ * Stateful EOT scorer bound to a single loaded text model. Lazily
88
+ * allocates its own dedicated `LlamaContext` on first call. Safe to
89
+ * keep across many voice turns; call `dispose()` on shutdown.
90
+ */
91
+ export declare class Eliza1EotScorer {
92
+ private readonly model;
93
+ private readonly loraPath;
94
+ private readonly loraScale;
95
+ private readonly maxHistoryTokens;
96
+ private readonly contextSize;
97
+ readonly modelLabel: string;
98
+ private context;
99
+ private sequence;
100
+ private imEndTokenId;
101
+ private initPromise;
102
+ /** Serializes concurrent calls — controlledEvaluate is not thread-safe per-sequence. */
103
+ private inflight;
104
+ constructor(options: Eliza1EotScorerOptions);
105
+ score(partialTranscript: string): Promise<Eliza1EotScoreResult>;
106
+ dispose(): Promise<void>;
107
+ private ensureReady;
108
+ private initialize;
109
+ private tokenizePrompt;
110
+ private runOnce;
111
+ }
112
+ /**
113
+ * Format the partial transcript using the Qwen chat template, with the
114
+ * trailing `<|im_end|>` removed so the next predicted token *is* the
115
+ * EOT signal we want to measure.
116
+ *
117
+ * Matches the formatting LiveKit's turn-detector uses (single user turn,
118
+ * no system prompt, no generation prefix). When upstream history is
119
+ * available we can stack turns here, but the LiveKit recipe truncates
120
+ * to the last 128 tokens regardless, so a single user turn captures the
121
+ * relevant context for tier-1 EOT.
122
+ */
123
+ export declare function formatEotPrompt(transcript: string): string;
124
+ //# sourceMappingURL=eliza1-eot-scorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eliza1-eot-scorer.d.ts","sourceRoot":"","sources":["eliza1-eot-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;IACnE,aAAa,CAAC,OAAO,EAAE;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,GAAG;YAAE,QAAQ,EAAE,KAAK,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;KAC1E,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAChC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACxC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,CACjB,KAAK,EAAE,2BAA2B,EAAE,EACpC,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GACvC,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,2BAA2B,GACpC,MAAM,GACN;IACA,KAAK,EAAE,MAAM;IACb,OAAO,EAAE;QACR,YAAY,CAAC,EAAE;YACd,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,UAAU,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC;KACF;CACA,CAAC;AAEL,MAAM,WAAW,4BAA4B;IAC5C,IAAI,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;CACF;AAKD,MAAM,WAAW,sBAAsB;IACtC,uDAAuD;IACvD,KAAK,EAAE,cAAc,CAAC;IACtB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAA8B;IACjD,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,OAAO,EAAE,sBAAsB;IAarC,KAAK,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsB/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAShB,WAAW;YAMX,UAAU;IA6BxB,OAAO,CAAC,cAAc;YAOR,OAAO;CAoBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D"}