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

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 (893) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/actions/generate-media.d.ts +59 -0
  4. package/dist/actions/generate-media.d.ts.map +1 -0
  5. package/dist/actions/identify-speaker.d.ts +23 -0
  6. package/dist/actions/identify-speaker.d.ts.map +1 -0
  7. package/dist/actions/transcription-control.d.ts +29 -0
  8. package/dist/actions/transcription-control.d.ts.map +1 -0
  9. package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
  10. package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
  11. package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
  12. package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
  13. package/dist/adapters/capacitor-llama/index.d.ts +18 -0
  14. package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
  15. package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
  16. package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
  17. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
  18. package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
  19. package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
  20. package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
  21. package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
  22. package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
  23. package/dist/adapters/capacitor-llama/types.d.ts +338 -0
  24. package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
  25. package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
  26. package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
  27. package/dist/backends/apple-foundation.d.ts +56 -0
  28. package/dist/backends/apple-foundation.d.ts.map +1 -0
  29. package/dist/index.d.ts +8 -37
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +38979 -430
  32. package/dist/index.js.map +217 -0
  33. package/dist/local-inference-routes.d.ts +47 -0
  34. package/dist/local-inference-routes.d.ts.map +1 -0
  35. package/dist/provider.d.ts +21 -0
  36. package/dist/provider.d.ts.map +1 -0
  37. package/dist/routes/compat-helpers.d.ts +18 -0
  38. package/dist/routes/compat-helpers.d.ts.map +1 -0
  39. package/dist/routes/family-member-route.d.ts +62 -0
  40. package/dist/routes/family-member-route.d.ts.map +1 -0
  41. package/dist/routes/index.d.ts +20 -0
  42. package/dist/routes/index.d.ts.map +1 -0
  43. package/dist/routes/index.js +42040 -0
  44. package/dist/routes/index.js.map +236 -0
  45. package/dist/routes/live-diarization-route.d.ts +33 -0
  46. package/dist/routes/live-diarization-route.d.ts.map +1 -0
  47. package/dist/routes/local-inference-asr-route.d.ts +4 -0
  48. package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
  49. package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
  50. package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
  51. package/dist/routes/local-inference-compat-routes.d.ts +16 -0
  52. package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
  53. package/dist/routes/local-inference-tts-route.d.ts +7 -0
  54. package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
  55. package/dist/routes/native-pcm-turn-route.d.ts +3 -0
  56. package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
  57. package/dist/routes/transcript-audio-store.d.ts +15 -0
  58. package/dist/routes/transcript-audio-store.d.ts.map +1 -0
  59. package/dist/routes/transcripts-routes.d.ts +44 -0
  60. package/dist/routes/transcripts-routes.d.ts.map +1 -0
  61. package/dist/routes/voice-first-run-routes.d.ts +62 -0
  62. package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
  63. package/dist/routes/voice-models-routes.d.ts +62 -0
  64. package/dist/routes/voice-models-routes.d.ts.map +1 -0
  65. package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
  66. package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
  67. package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
  68. package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
  69. package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
  70. package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
  71. package/dist/runtime/embedding-manager-support.d.ts +77 -0
  72. package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
  73. package/dist/runtime/embedding-presets.d.ts +16 -0
  74. package/dist/runtime/embedding-presets.d.ts.map +1 -0
  75. package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
  76. package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
  77. package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
  78. package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  79. package/dist/runtime/index.d.ts +15 -0
  80. package/dist/runtime/index.d.ts.map +1 -0
  81. package/dist/runtime/index.js +38768 -0
  82. package/dist/runtime/index.js.map +217 -0
  83. package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
  84. package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  85. package/dist/runtime/voice-entity-binding.d.ts +113 -0
  86. package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
  87. package/dist/services/active-model.d.ts +310 -0
  88. package/dist/services/active-model.d.ts.map +1 -0
  89. package/dist/services/asr-provenance.d.ts +5 -0
  90. package/dist/services/asr-provenance.d.ts.map +1 -0
  91. package/dist/services/assignments.d.ts +84 -0
  92. package/dist/services/assignments.d.ts.map +1 -0
  93. package/dist/services/backend-selector.d.ts +55 -0
  94. package/dist/services/backend-selector.d.ts.map +1 -0
  95. package/dist/services/backend.d.ts +440 -0
  96. package/dist/services/backend.d.ts.map +1 -0
  97. package/dist/services/bionic-host-loader.d.ts +67 -0
  98. package/dist/services/bionic-host-loader.d.ts.map +1 -0
  99. package/dist/services/bundled-models.d.ts +34 -0
  100. package/dist/services/bundled-models.d.ts.map +1 -0
  101. package/dist/services/cache-bridge.d.ts +206 -0
  102. package/dist/services/cache-bridge.d.ts.map +1 -0
  103. package/dist/services/catalog.d.ts +10 -0
  104. package/dist/services/catalog.d.ts.map +1 -0
  105. package/dist/services/checkpoint-client.d.ts +109 -0
  106. package/dist/services/checkpoint-client.d.ts.map +1 -0
  107. package/dist/services/checkpoint-manager.d.ts +217 -0
  108. package/dist/services/checkpoint-manager.d.ts.map +1 -0
  109. package/dist/services/cloud-fallback.d.ts +102 -0
  110. package/dist/services/cloud-fallback.d.ts.map +1 -0
  111. package/dist/services/context-fit.d.ts +36 -0
  112. package/dist/services/context-fit.d.ts.map +1 -0
  113. package/dist/services/conversation-registry.d.ts +142 -0
  114. package/dist/services/conversation-registry.d.ts.map +1 -0
  115. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
  116. package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
  117. package/dist/services/device-bridge.d.ts +188 -0
  118. package/dist/services/device-bridge.d.ts.map +1 -0
  119. package/dist/services/device-resource-metrics.d.ts +149 -0
  120. package/dist/services/device-resource-metrics.d.ts.map +1 -0
  121. package/dist/services/device-tier.d.ts +133 -0
  122. package/dist/services/device-tier.d.ts.map +1 -0
  123. package/dist/services/downloader.d.ts +94 -0
  124. package/dist/services/downloader.d.ts.map +1 -0
  125. package/dist/services/engine.d.ts +579 -0
  126. package/dist/services/engine.d.ts.map +1 -0
  127. package/dist/services/ensure-local-artifacts.d.ts +82 -0
  128. package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
  129. package/dist/services/external-scanner.d.ts +17 -0
  130. package/dist/services/external-scanner.d.ts.map +1 -0
  131. package/dist/services/ffi-llm-mock.d.ts +90 -0
  132. package/dist/services/ffi-llm-mock.d.ts.map +1 -0
  133. package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
  134. package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
  135. package/dist/services/ffi-streaming-backend.d.ts +201 -0
  136. package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
  137. package/dist/services/ffi-streaming-runner.d.ts +146 -0
  138. package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
  139. package/dist/services/gpu-autotune.d.ts +150 -0
  140. package/dist/services/gpu-autotune.d.ts.map +1 -0
  141. package/dist/services/gpu-detect.d.ts +56 -0
  142. package/dist/services/gpu-detect.d.ts.map +1 -0
  143. package/dist/services/handler-registry.d.ts +72 -0
  144. package/dist/services/handler-registry.d.ts.map +1 -0
  145. package/dist/services/hardware.d.ts +63 -0
  146. package/dist/services/hardware.d.ts.map +1 -0
  147. package/dist/services/image-description-runtime.d.ts +14 -0
  148. package/dist/services/image-description-runtime.d.ts.map +1 -0
  149. package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
  150. package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
  151. package/dist/services/imagegen/backend-selector.d.ts +118 -0
  152. package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
  153. package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
  154. package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
  155. package/dist/services/imagegen/errors.d.ts +16 -0
  156. package/dist/services/imagegen/errors.d.ts.map +1 -0
  157. package/dist/services/imagegen/index.d.ts +58 -0
  158. package/dist/services/imagegen/index.d.ts.map +1 -0
  159. package/dist/services/imagegen/mflux.d.ts +74 -0
  160. package/dist/services/imagegen/mflux.d.ts.map +1 -0
  161. package/dist/services/imagegen/sd-cpp.d.ts +181 -0
  162. package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
  163. package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
  164. package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
  165. package/dist/services/imagegen/types.d.ts +181 -0
  166. package/dist/services/imagegen/types.d.ts.map +1 -0
  167. package/dist/services/index.d.ts +31 -0
  168. package/dist/services/index.d.ts.map +1 -0
  169. package/dist/services/index.js +39453 -0
  170. package/dist/services/index.js.map +227 -0
  171. package/dist/services/inference-capabilities.d.ts +132 -0
  172. package/dist/services/inference-capabilities.d.ts.map +1 -0
  173. package/dist/services/inference-telemetry.d.ts +59 -0
  174. package/dist/services/inference-telemetry.d.ts.map +1 -0
  175. package/dist/services/ios-llama-streaming.d.ts +119 -0
  176. package/dist/services/ios-llama-streaming.d.ts.map +1 -0
  177. package/dist/services/kv-spill.d.ts +189 -0
  178. package/dist/services/kv-spill.d.ts.map +1 -0
  179. package/dist/services/latency-trace.d.ts +346 -0
  180. package/dist/services/latency-trace.d.ts.map +1 -0
  181. package/dist/services/lib-target.d.ts +55 -0
  182. package/dist/services/lib-target.d.ts.map +1 -0
  183. package/dist/services/live-signals.d.ts +86 -0
  184. package/dist/services/live-signals.d.ts.map +1 -0
  185. package/dist/services/llama-server-metrics.d.ts +114 -0
  186. package/dist/services/llama-server-metrics.d.ts.map +1 -0
  187. package/dist/services/llm-streaming-binding.d.ts +96 -0
  188. package/dist/services/llm-streaming-binding.d.ts.map +1 -0
  189. package/dist/services/load-args.d.ts +82 -0
  190. package/dist/services/load-args.d.ts.map +1 -0
  191. package/dist/services/manifest/index.d.ts +4 -0
  192. package/dist/services/manifest/index.d.ts.map +1 -0
  193. package/dist/services/manifest/schema.d.ts +903 -0
  194. package/dist/services/manifest/schema.d.ts.map +1 -0
  195. package/dist/services/manifest/types.d.ts +32 -0
  196. package/dist/services/manifest/types.d.ts.map +1 -0
  197. package/dist/services/manifest/validator.d.ts +66 -0
  198. package/dist/services/manifest/validator.d.ts.map +1 -0
  199. package/dist/services/memory-arbiter.d.ts +348 -0
  200. package/dist/services/memory-arbiter.d.ts.map +1 -0
  201. package/dist/services/memory-benchmark.d.ts +76 -0
  202. package/dist/services/memory-benchmark.d.ts.map +1 -0
  203. package/dist/services/memory-monitor.d.ts +128 -0
  204. package/dist/services/memory-monitor.d.ts.map +1 -0
  205. package/dist/services/memory-pressure.d.ts +130 -0
  206. package/dist/services/memory-pressure.d.ts.map +1 -0
  207. package/dist/services/mtp-doctor.d.ts +13 -0
  208. package/dist/services/mtp-doctor.d.ts.map +1 -0
  209. package/dist/services/network-policy.d.ts +127 -0
  210. package/dist/services/network-policy.d.ts.map +1 -0
  211. package/dist/services/paths.d.ts +6 -0
  212. package/dist/services/paths.d.ts.map +1 -0
  213. package/dist/services/planner-skeleton.d.ts +124 -0
  214. package/dist/services/planner-skeleton.d.ts.map +1 -0
  215. package/dist/services/providers.d.ts +38 -0
  216. package/dist/services/providers.d.ts.map +1 -0
  217. package/dist/services/ram-budget.d.ts +110 -0
  218. package/dist/services/ram-budget.d.ts.map +1 -0
  219. package/dist/services/readiness.d.ts +9 -0
  220. package/dist/services/readiness.d.ts.map +1 -0
  221. package/dist/services/recommendation.d.ts +111 -0
  222. package/dist/services/recommendation.d.ts.map +1 -0
  223. package/dist/services/registry.d.ts +33 -0
  224. package/dist/services/registry.d.ts.map +1 -0
  225. package/dist/services/router-handler.d.ts +92 -0
  226. package/dist/services/router-handler.d.ts.map +1 -0
  227. package/dist/services/routing-policy.d.ts +92 -0
  228. package/dist/services/routing-policy.d.ts.map +1 -0
  229. package/dist/services/routing-preferences.d.ts +8 -0
  230. package/dist/services/routing-preferences.d.ts.map +1 -0
  231. package/dist/services/runtime-target.d.ts +98 -0
  232. package/dist/services/runtime-target.d.ts.map +1 -0
  233. package/dist/services/service.d.ts +128 -0
  234. package/dist/services/service.d.ts.map +1 -0
  235. package/dist/services/session-pool.d.ts +72 -0
  236. package/dist/services/session-pool.d.ts.map +1 -0
  237. package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
  238. package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
  239. package/dist/services/structured-output/index.d.ts +2 -0
  240. package/dist/services/structured-output/index.d.ts.map +1 -0
  241. package/dist/services/structured-output.d.ts +311 -0
  242. package/dist/services/structured-output.d.ts.map +1 -0
  243. package/dist/services/system-memory.d.ts +33 -0
  244. package/dist/services/system-memory.d.ts.map +1 -0
  245. package/dist/services/types.d.ts +19 -0
  246. package/dist/services/types.d.ts.map +1 -0
  247. package/dist/services/verify-on-device.d.ts +34 -0
  248. package/dist/services/verify-on-device.d.ts.map +1 -0
  249. package/dist/services/verify.d.ts +8 -0
  250. package/dist/services/verify.d.ts.map +1 -0
  251. package/dist/services/vision/aosp-unavailable.d.ts +115 -0
  252. package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
  253. package/dist/services/vision/capacitor-llama.d.ts +99 -0
  254. package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
  255. package/dist/services/vision/cloud-fallback.d.ts +47 -0
  256. package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
  257. package/dist/services/vision/hash.d.ts +71 -0
  258. package/dist/services/vision/hash.d.ts.map +1 -0
  259. package/dist/services/vision/index.d.ts +95 -0
  260. package/dist/services/vision/index.d.ts.map +1 -0
  261. package/dist/services/vision/llama-server.d.ts +73 -0
  262. package/dist/services/vision/llama-server.d.ts.map +1 -0
  263. package/dist/services/vision/types.d.ts +162 -0
  264. package/dist/services/vision/types.d.ts.map +1 -0
  265. package/dist/services/vision/vast-fallback.d.ts +18 -0
  266. package/dist/services/vision/vast-fallback.d.ts.map +1 -0
  267. package/dist/services/vision-embedding-cache.d.ts +98 -0
  268. package/dist/services/vision-embedding-cache.d.ts.map +1 -0
  269. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
  270. package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
  271. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
  272. package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
  273. package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
  274. package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
  275. package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
  276. package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
  277. package/dist/services/voice/barge-in.d.ts +112 -0
  278. package/dist/services/voice/barge-in.d.ts.map +1 -0
  279. package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
  280. package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
  281. package/dist/services/voice/checkpoint-manager.d.ts +199 -0
  282. package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
  283. package/dist/services/voice/checkpoint-policy.d.ts +178 -0
  284. package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
  285. package/dist/services/voice/corpus-augment.d.ts +111 -0
  286. package/dist/services/voice/corpus-augment.d.ts.map +1 -0
  287. package/dist/services/voice/corpus-generator.d.ts +134 -0
  288. package/dist/services/voice/corpus-generator.d.ts.map +1 -0
  289. package/dist/services/voice/diarization-error-rate.d.ts +40 -0
  290. package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
  291. package/dist/services/voice/e2e-harness.d.ts +297 -0
  292. package/dist/services/voice/e2e-harness.d.ts.map +1 -0
  293. package/dist/services/voice/eager-context-builder.d.ts +170 -0
  294. package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
  295. package/dist/services/voice/echo-delay.d.ts +67 -0
  296. package/dist/services/voice/echo-delay.d.ts.map +1 -0
  297. package/dist/services/voice/echo-metrics.d.ts +7 -0
  298. package/dist/services/voice/echo-metrics.d.ts.map +1 -0
  299. package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
  300. package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
  301. package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
  302. package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
  303. package/dist/services/voice/embedding-server.d.ts +37 -0
  304. package/dist/services/voice/embedding-server.d.ts.map +1 -0
  305. package/dist/services/voice/embedding.d.ts +132 -0
  306. package/dist/services/voice/embedding.d.ts.map +1 -0
  307. package/dist/services/voice/emotion-attribution.d.ts +68 -0
  308. package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
  309. package/dist/services/voice/engine-bridge.d.ts +762 -0
  310. package/dist/services/voice/engine-bridge.d.ts.map +1 -0
  311. package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
  312. package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
  313. package/dist/services/voice/eot-classifier.d.ts +211 -0
  314. package/dist/services/voice/eot-classifier.d.ts.map +1 -0
  315. package/dist/services/voice/errors.d.ts +20 -0
  316. package/dist/services/voice/errors.d.ts.map +1 -0
  317. package/dist/services/voice/expressive-tags.d.ts +158 -0
  318. package/dist/services/voice/expressive-tags.d.ts.map +1 -0
  319. package/dist/services/voice/ffi-bindings.d.ts +696 -0
  320. package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
  321. package/dist/services/voice/first-line-cache.d.ts +181 -0
  322. package/dist/services/voice/first-line-cache.d.ts.map +1 -0
  323. package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
  324. package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
  325. package/dist/services/voice/index.d.ts +96 -0
  326. package/dist/services/voice/index.d.ts.map +1 -0
  327. package/dist/services/voice/kokoro/index.d.ts +24 -0
  328. package/dist/services/voice/kokoro/index.d.ts.map +1 -0
  329. package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
  330. package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
  331. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
  332. package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
  333. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
  334. package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
  335. package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
  336. package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
  337. package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
  338. package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
  339. package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
  340. package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
  341. package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
  342. package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
  343. package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
  344. package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
  345. package/dist/services/voice/kokoro/types.d.ts +82 -0
  346. package/dist/services/voice/kokoro/types.d.ts.map +1 -0
  347. package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
  348. package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
  349. package/dist/services/voice/kokoro/voices.d.ts +30 -0
  350. package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
  351. package/dist/services/voice/lifecycle.d.ts +135 -0
  352. package/dist/services/voice/lifecycle.d.ts.map +1 -0
  353. package/dist/services/voice/live-diarization-session.d.ts +196 -0
  354. package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
  355. package/dist/services/voice/metric-math.d.ts +10 -0
  356. package/dist/services/voice/metric-math.d.ts.map +1 -0
  357. package/dist/services/voice/mic-source.d.ts +136 -0
  358. package/dist/services/voice/mic-source.d.ts.map +1 -0
  359. package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
  360. package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
  361. package/dist/services/voice/optimistic-policy.d.ts +109 -0
  362. package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
  363. package/dist/services/voice/optimistic-rollback.d.ts +151 -0
  364. package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
  365. package/dist/services/voice/partial-stabilizer.d.ts +73 -0
  366. package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
  367. package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
  368. package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
  369. package/dist/services/voice/phrase-cache.d.ts +76 -0
  370. package/dist/services/voice/phrase-cache.d.ts.map +1 -0
  371. package/dist/services/voice/phrase-chunker.d.ts +62 -0
  372. package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
  373. package/dist/services/voice/pipeline-impls.d.ts +151 -0
  374. package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
  375. package/dist/services/voice/pipeline.d.ts +216 -0
  376. package/dist/services/voice/pipeline.d.ts.map +1 -0
  377. package/dist/services/voice/prefill-client.d.ts +123 -0
  378. package/dist/services/voice/prefill-client.d.ts.map +1 -0
  379. package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
  380. package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
  381. package/dist/services/voice/profile-store.d.ts +248 -0
  382. package/dist/services/voice/profile-store.d.ts.map +1 -0
  383. package/dist/services/voice/ring-buffer.d.ts +40 -0
  384. package/dist/services/voice/ring-buffer.d.ts.map +1 -0
  385. package/dist/services/voice/rollback-queue.d.ts +24 -0
  386. package/dist/services/voice/rollback-queue.d.ts.map +1 -0
  387. package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
  388. package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
  389. package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
  390. package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
  391. package/dist/services/voice/scheduler.d.ts +146 -0
  392. package/dist/services/voice/scheduler.d.ts.map +1 -0
  393. package/dist/services/voice/self-voice-imprint.d.ts +33 -0
  394. package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
  395. package/dist/services/voice/shared-resources.d.ts +204 -0
  396. package/dist/services/voice/shared-resources.d.ts.map +1 -0
  397. package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
  398. package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
  399. package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
  400. package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
  401. package/dist/services/voice/speaker/diarizer.d.ts +75 -0
  402. package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
  403. package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
  404. package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
  405. package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
  406. package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
  407. package/dist/services/voice/speaker/encoder.d.ts +37 -0
  408. package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
  409. package/dist/services/voice/speaker-imprint.d.ts +83 -0
  410. package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
  411. package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
  412. package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
  413. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
  414. package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
  415. package/dist/services/voice/system-audio-sink.d.ts +73 -0
  416. package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
  417. package/dist/services/voice/transcriber.d.ts +244 -0
  418. package/dist/services/voice/transcriber.d.ts.map +1 -0
  419. package/dist/services/voice/transcript-knowledge.d.ts +37 -0
  420. package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
  421. package/dist/services/voice/transcript-service.d.ts +60 -0
  422. package/dist/services/voice/transcript-service.d.ts.map +1 -0
  423. package/dist/services/voice/transcript-store.d.ts +64 -0
  424. package/dist/services/voice/transcript-store.d.ts.map +1 -0
  425. package/dist/services/voice/turn-controller.d.ts +183 -0
  426. package/dist/services/voice/turn-controller.d.ts.map +1 -0
  427. package/dist/services/voice/types.d.ts +643 -0
  428. package/dist/services/voice/types.d.ts.map +1 -0
  429. package/dist/services/voice/vad.d.ts +283 -0
  430. package/dist/services/voice/vad.d.ts.map +1 -0
  431. package/dist/services/voice/voice-budget.d.ts +241 -0
  432. package/dist/services/voice/voice-budget.d.ts.map +1 -0
  433. package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
  434. package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
  435. package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
  436. package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
  437. package/dist/services/voice/voice-preset-format.d.ts +158 -0
  438. package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
  439. package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
  440. package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
  441. package/dist/services/voice/voice-profile-routes.d.ts +83 -0
  442. package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
  443. package/dist/services/voice/voice-scenario.d.ts +131 -0
  444. package/dist/services/voice/voice-scenario.d.ts.map +1 -0
  445. package/dist/services/voice/voice-state-machine.d.ts +364 -0
  446. package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
  447. package/dist/services/voice/voice-workbench-report.d.ts +117 -0
  448. package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
  449. package/dist/services/voice/wake-word-ggml.d.ts +100 -0
  450. package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
  451. package/dist/services/voice/wake-word.d.ts +255 -0
  452. package/dist/services/voice/wake-word.d.ts.map +1 -0
  453. package/dist/services/voice/wav-codec.d.ts +11 -0
  454. package/dist/services/voice/wav-codec.d.ts.map +1 -0
  455. package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
  456. package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
  457. package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
  458. package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
  459. package/dist/services/voice/workbench-logic-services.d.ts +36 -0
  460. package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
  461. package/dist/services/voice/workbench-real-services.d.ts +17 -0
  462. package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
  463. package/dist/services/voice/workbench-scenarios.d.ts +24 -0
  464. package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
  465. package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
  466. package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
  467. package/dist/services/voice-model-updater.d.ts +240 -0
  468. package/dist/services/voice-model-updater.d.ts.map +1 -0
  469. package/dist/services/voice-prewarm.d.ts +3 -0
  470. package/dist/services/voice-prewarm.d.ts.map +1 -0
  471. package/dist/voice-workbench.d.ts +18 -0
  472. package/dist/voice-workbench.d.ts.map +1 -0
  473. package/dist/voice-workbench.js +5259 -0
  474. package/dist/voice-workbench.js.map +34 -0
  475. package/package.json +101 -15
  476. package/registry-entry.json +137 -0
  477. package/src/actions/generate-media.ts +647 -0
  478. package/src/actions/identify-speaker.ts +171 -0
  479. package/src/actions/transcription-control.test.ts +100 -0
  480. package/src/actions/transcription-control.ts +127 -0
  481. package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
  482. package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
  483. package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
  484. package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
  485. package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
  486. package/src/adapters/capacitor-llama/environment.ts +71 -0
  487. package/src/adapters/capacitor-llama/index.browser.ts +83 -0
  488. package/src/adapters/capacitor-llama/index.ts +831 -0
  489. package/src/adapters/capacitor-llama/loader.ts +109 -0
  490. package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
  491. package/src/adapters/capacitor-llama/structured-output.ts +165 -0
  492. package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
  493. package/src/adapters/capacitor-llama/types.ts +374 -0
  494. package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
  495. package/src/backends/apple-foundation.ts +127 -0
  496. package/src/index.ts +62 -0
  497. package/src/local-inference-routes.test.ts +390 -0
  498. package/src/local-inference-routes.ts +1625 -0
  499. package/src/provider.ts +1111 -0
  500. package/src/routes/compat-helpers.ts +275 -0
  501. package/src/routes/family-member-route.ts +353 -0
  502. package/src/routes/index.ts +61 -0
  503. package/src/routes/live-diarization-route.test.ts +347 -0
  504. package/src/routes/live-diarization-route.ts +198 -0
  505. package/src/routes/local-inference-asr-route.test.ts +246 -0
  506. package/src/routes/local-inference-asr-route.ts +166 -0
  507. package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
  508. package/src/routes/local-inference-asr-transcribe.ts +97 -0
  509. package/src/routes/local-inference-compat-routes.test.ts +485 -0
  510. package/src/routes/local-inference-compat-routes.ts +775 -0
  511. package/src/routes/local-inference-tts-route.test.ts +179 -0
  512. package/src/routes/local-inference-tts-route.ts +230 -0
  513. package/src/routes/native-pcm-turn-route.test.ts +136 -0
  514. package/src/routes/native-pcm-turn-route.ts +121 -0
  515. package/src/routes/transcript-audio-store.ts +27 -0
  516. package/src/routes/transcripts-routes.test.ts +195 -0
  517. package/src/routes/transcripts-routes.ts +191 -0
  518. package/src/routes/voice-first-run-routes.ts +524 -0
  519. package/src/routes/voice-models-routes.ts +554 -0
  520. package/src/routes/voice-profile-plugin-routes.ts +138 -0
  521. package/src/routes/voice-profiles-management-routes.ts +476 -0
  522. package/src/routes/voice-speaker-profile-routes.ts +199 -0
  523. package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
  524. package/src/runtime/bionic-wire-encoding.test.ts +147 -0
  525. package/src/runtime/capacitor-llama.d.ts +25 -0
  526. package/src/runtime/embedding-manager-support.ts +497 -0
  527. package/src/runtime/embedding-presets.ts +81 -0
  528. package/src/runtime/embedding-warmup-policy.test.ts +53 -0
  529. package/src/runtime/embedding-warmup-policy.ts +48 -0
  530. package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
  531. package/src/runtime/ensure-local-inference-handler.ts +1640 -0
  532. package/src/runtime/index.ts +36 -0
  533. package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
  534. package/src/runtime/mobile-local-inference-gate.ts +99 -0
  535. package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
  536. package/src/runtime/voice-entity-binding.ts +368 -0
  537. package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
  538. package/src/services/README.md +71 -0
  539. package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
  540. package/src/services/__tests__/backend-selector.test.ts +101 -0
  541. package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
  542. package/src/services/__tests__/gpu-autotune.test.ts +400 -0
  543. package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
  544. package/src/services/__tests__/planner-grammar.test.ts +372 -0
  545. package/src/services/__tests__/runtime-target.test.ts +176 -0
  546. package/src/services/active-model-context-fit.test.ts +125 -0
  547. package/src/services/active-model-switch-rollback.test.ts +183 -0
  548. package/src/services/active-model.ts +1416 -0
  549. package/src/services/asr-provenance.ts +68 -0
  550. package/src/services/assignment-validation.test.ts +118 -0
  551. package/src/services/assignments.test.ts +106 -0
  552. package/src/services/assignments.ts +278 -0
  553. package/src/services/backend-selector.ts +95 -0
  554. package/src/services/backend.test.ts +84 -0
  555. package/src/services/backend.ts +791 -0
  556. package/src/services/bionic-host-loader.test.ts +226 -0
  557. package/src/services/bionic-host-loader.ts +252 -0
  558. package/src/services/bundled-models.ts +129 -0
  559. package/src/services/cache-bridge.test.ts +516 -0
  560. package/src/services/cache-bridge.ts +423 -0
  561. package/src/services/catalog.test.ts +259 -0
  562. package/src/services/catalog.ts +33 -0
  563. package/src/services/checkpoint-client.ts +258 -0
  564. package/src/services/checkpoint-manager.ts +474 -0
  565. package/src/services/cloud-fallback.ts +230 -0
  566. package/src/services/context-fit.test.ts +121 -0
  567. package/src/services/context-fit.ts +113 -0
  568. package/src/services/conversation-registry.test.ts +235 -0
  569. package/src/services/conversation-registry.ts +264 -0
  570. package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
  571. package/src/services/device-bridge.ts +1237 -0
  572. package/src/services/device-resource-metrics.test.ts +98 -0
  573. package/src/services/device-resource-metrics.ts +346 -0
  574. package/src/services/device-tier.test.ts +458 -0
  575. package/src/services/device-tier.ts +502 -0
  576. package/src/services/downloader.test.ts +888 -0
  577. package/src/services/downloader.ts +1039 -0
  578. package/src/services/engine-direct-bundle.test.ts +90 -0
  579. package/src/services/engine-streaming.test.ts +80 -0
  580. package/src/services/engine.ts +2096 -0
  581. package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
  582. package/src/services/ensure-local-artifacts.test.ts +368 -0
  583. package/src/services/ensure-local-artifacts.ts +351 -0
  584. package/src/services/external-scanner.ts +312 -0
  585. package/src/services/ffi-llm-mock.ts +354 -0
  586. package/src/services/ffi-llm-streaming-abi.ts +445 -0
  587. package/src/services/ffi-streaming-backend.ts +418 -0
  588. package/src/services/ffi-streaming-runner.test.ts +220 -0
  589. package/src/services/ffi-streaming-runner.ts +407 -0
  590. package/src/services/ffi-unload-ordering.test.ts +166 -0
  591. package/src/services/fused-eliza1-no-regression.test.ts +144 -0
  592. package/src/services/gpu-autotune.ts +534 -0
  593. package/src/services/gpu-detect.ts +139 -0
  594. package/src/services/handler-registry.ts +240 -0
  595. package/src/services/hardware.test.ts +236 -0
  596. package/src/services/hardware.ts +438 -0
  597. package/src/services/image-description-runtime.test.ts +61 -0
  598. package/src/services/image-description-runtime.ts +118 -0
  599. package/src/services/imagegen/aosp-unavailable.ts +229 -0
  600. package/src/services/imagegen/backend-selector.test.ts +190 -0
  601. package/src/services/imagegen/backend-selector.ts +277 -0
  602. package/src/services/imagegen/coreml-unavailable.ts +237 -0
  603. package/src/services/imagegen/errors.ts +40 -0
  604. package/src/services/imagegen/index.ts +144 -0
  605. package/src/services/imagegen/mflux.ts +313 -0
  606. package/src/services/imagegen/sd-cpp.ts +715 -0
  607. package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
  608. package/src/services/imagegen/types.ts +193 -0
  609. package/src/services/index.ts +229 -0
  610. package/src/services/inference-capabilities.test.ts +75 -0
  611. package/src/services/inference-capabilities.ts +204 -0
  612. package/src/services/inference-telemetry.ts +143 -0
  613. package/src/services/ios-llama-streaming.ts +248 -0
  614. package/src/services/kv-spill.test.ts +222 -0
  615. package/src/services/kv-spill.ts +357 -0
  616. package/src/services/latency-trace.test.ts +266 -0
  617. package/src/services/latency-trace.ts +844 -0
  618. package/src/services/lib-target.test.ts +145 -0
  619. package/src/services/lib-target.ts +102 -0
  620. package/src/services/live-signals.test.ts +132 -0
  621. package/src/services/live-signals.ts +177 -0
  622. package/src/services/llama-server-metrics.test.ts +168 -0
  623. package/src/services/llama-server-metrics.ts +304 -0
  624. package/src/services/llm-streaming-binding.ts +136 -0
  625. package/src/services/load-args.ts +81 -0
  626. package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
  627. package/src/services/manifest/index.ts +72 -0
  628. package/src/services/manifest/manifest.test.ts +791 -0
  629. package/src/services/manifest/schema.ts +761 -0
  630. package/src/services/manifest/types.ts +61 -0
  631. package/src/services/manifest/validator.ts +633 -0
  632. package/src/services/memory-arbiter.test.ts +558 -0
  633. package/src/services/memory-arbiter.ts +991 -0
  634. package/src/services/memory-benchmark.test.ts +91 -0
  635. package/src/services/memory-benchmark.ts +354 -0
  636. package/src/services/memory-monitor.test.ts +232 -0
  637. package/src/services/memory-monitor.ts +309 -0
  638. package/src/services/memory-pressure.ts +414 -0
  639. package/src/services/mtp-doctor.ts +86 -0
  640. package/src/services/network-policy.ts +346 -0
  641. package/src/services/paths.ts +25 -0
  642. package/src/services/planner-skeleton.ts +175 -0
  643. package/src/services/providers.ts +507 -0
  644. package/src/services/ram-budget-cache.test.ts +164 -0
  645. package/src/services/ram-budget.ts +309 -0
  646. package/src/services/readiness.test.ts +87 -0
  647. package/src/services/readiness.ts +238 -0
  648. package/src/services/recommendation.test.ts +216 -0
  649. package/src/services/recommendation.ts +671 -0
  650. package/src/services/registry.ts +157 -0
  651. package/src/services/required-kernels-gate.test.ts +64 -0
  652. package/src/services/router-handler.test.ts +45 -0
  653. package/src/services/router-handler.ts +426 -0
  654. package/src/services/routing-policy.test.ts +352 -0
  655. package/src/services/routing-policy.ts +367 -0
  656. package/src/services/routing-preferences.ts +17 -0
  657. package/src/services/runtime-target.ts +154 -0
  658. package/src/services/service.test.ts +223 -0
  659. package/src/services/service.ts +750 -0
  660. package/src/services/session-pool.ts +153 -0
  661. package/src/services/structured-output/deterministic-repair.test.ts +169 -0
  662. package/src/services/structured-output/deterministic-repair.ts +443 -0
  663. package/src/services/structured-output/index.ts +4 -0
  664. package/src/services/structured-output.test.ts +483 -0
  665. package/src/services/structured-output.ts +712 -0
  666. package/src/services/system-memory.test.ts +47 -0
  667. package/src/services/system-memory.ts +67 -0
  668. package/src/services/transcription-priority.test.ts +211 -0
  669. package/src/services/types.ts +59 -0
  670. package/src/services/verify-on-device.test.ts +87 -0
  671. package/src/services/verify-on-device.ts +127 -0
  672. package/src/services/verify.ts +13 -0
  673. package/src/services/vision/aosp-unavailable.ts +163 -0
  674. package/src/services/vision/capacitor-llama.ts +255 -0
  675. package/src/services/vision/cloud-fallback.test.ts +243 -0
  676. package/src/services/vision/cloud-fallback.ts +268 -0
  677. package/src/services/vision/fallback-chain.test.ts +86 -0
  678. package/src/services/vision/hash.ts +157 -0
  679. package/src/services/vision/index.ts +251 -0
  680. package/src/services/vision/llama-server.ts +177 -0
  681. package/src/services/vision/types.ts +163 -0
  682. package/src/services/vision/vast-fallback.ts +127 -0
  683. package/src/services/vision-embedding-cache.ts +189 -0
  684. package/src/services/voice/VOICE_WORKBENCH.md +133 -0
  685. package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
  686. package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
  687. package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
  688. package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
  689. package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
  690. package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
  691. package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
  692. package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
  693. package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
  694. package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
  695. package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
  696. package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
  697. package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
  698. package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
  699. package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
  700. package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
  701. package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
  702. package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
  703. package/src/services/voice/asr-timed.real.test.ts +139 -0
  704. package/src/services/voice/audio-frame-consumer.test.ts +669 -0
  705. package/src/services/voice/audio-frame-consumer.ts +651 -0
  706. package/src/services/voice/barge-in.test.ts +244 -0
  707. package/src/services/voice/barge-in.ts +335 -0
  708. package/src/services/voice/cancellation-coordinator.test.ts +196 -0
  709. package/src/services/voice/cancellation-coordinator.ts +269 -0
  710. package/src/services/voice/checkpoint-manager.ts +401 -0
  711. package/src/services/voice/checkpoint-policy.ts +336 -0
  712. package/src/services/voice/composite-eot-classifier.test.ts +59 -0
  713. package/src/services/voice/corpus-augment.test.ts +276 -0
  714. package/src/services/voice/corpus-augment.ts +451 -0
  715. package/src/services/voice/corpus-generator.test.ts +201 -0
  716. package/src/services/voice/corpus-generator.ts +413 -0
  717. package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
  718. package/src/services/voice/diarization-error-rate.test.ts +100 -0
  719. package/src/services/voice/diarization-error-rate.ts +249 -0
  720. package/src/services/voice/e2e-harness.der.test.ts +94 -0
  721. package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
  722. package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
  723. package/src/services/voice/e2e-harness.test.ts +182 -0
  724. package/src/services/voice/e2e-harness.ts +902 -0
  725. package/src/services/voice/eager-context-builder.ts +262 -0
  726. package/src/services/voice/echo-delay.test.ts +118 -0
  727. package/src/services/voice/echo-delay.ts +135 -0
  728. package/src/services/voice/echo-metrics.test.ts +17 -0
  729. package/src/services/voice/echo-metrics.ts +20 -0
  730. package/src/services/voice/echo-reference-buffer.test.ts +86 -0
  731. package/src/services/voice/echo-reference-buffer.ts +165 -0
  732. package/src/services/voice/eliza1-eot-scorer.ts +242 -0
  733. package/src/services/voice/embedding-server.ts +200 -0
  734. package/src/services/voice/embedding.test.ts +131 -0
  735. package/src/services/voice/embedding.ts +242 -0
  736. package/src/services/voice/emotion-attribution.test.ts +129 -0
  737. package/src/services/voice/emotion-attribution.ts +361 -0
  738. package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
  739. package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
  740. package/src/services/voice/engine-bridge.test.ts +384 -0
  741. package/src/services/voice/engine-bridge.ts +2343 -0
  742. package/src/services/voice/eot-classifier-ggml.ts +569 -0
  743. package/src/services/voice/eot-classifier.test.ts +98 -0
  744. package/src/services/voice/eot-classifier.ts +422 -0
  745. package/src/services/voice/errors.ts +34 -0
  746. package/src/services/voice/expressive-tags.asr.test.ts +77 -0
  747. package/src/services/voice/expressive-tags.test.ts +102 -0
  748. package/src/services/voice/expressive-tags.ts +405 -0
  749. package/src/services/voice/ffi-bindings.test.ts +735 -0
  750. package/src/services/voice/ffi-bindings.ts +3387 -0
  751. package/src/services/voice/first-line-cache.ts +725 -0
  752. package/src/services/voice/fused-eot-scorer.ts +139 -0
  753. package/src/services/voice/index.ts +502 -0
  754. package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
  755. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
  756. package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
  757. package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
  758. package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
  759. package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
  760. package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
  761. package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
  762. package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
  763. package/src/services/voice/kokoro/index.ts +79 -0
  764. package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
  765. package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
  766. package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
  767. package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
  768. package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
  769. package/src/services/voice/kokoro/phonemizer.ts +344 -0
  770. package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
  771. package/src/services/voice/kokoro/pick-runtime.ts +130 -0
  772. package/src/services/voice/kokoro/runtime-selection.ts +64 -0
  773. package/src/services/voice/kokoro/types.ts +95 -0
  774. package/src/services/voice/kokoro/voice-presets.ts +129 -0
  775. package/src/services/voice/kokoro/voices.ts +64 -0
  776. package/src/services/voice/lifecycle.test.ts +315 -0
  777. package/src/services/voice/lifecycle.ts +301 -0
  778. package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
  779. package/src/services/voice/live-diarization-session.ts +622 -0
  780. package/src/services/voice/metric-math.test.ts +61 -0
  781. package/src/services/voice/metric-math.ts +25 -0
  782. package/src/services/voice/mic-source.test.ts +210 -0
  783. package/src/services/voice/mic-source.ts +503 -0
  784. package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
  785. package/src/services/voice/nlms-echo-canceller.ts +317 -0
  786. package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
  787. package/src/services/voice/optimistic-policy.test.ts +101 -0
  788. package/src/services/voice/optimistic-policy.ts +192 -0
  789. package/src/services/voice/optimistic-rollback.ts +343 -0
  790. package/src/services/voice/partial-stabilizer.test.ts +68 -0
  791. package/src/services/voice/partial-stabilizer.ts +140 -0
  792. package/src/services/voice/phoneme-tokenizer.ts +158 -0
  793. package/src/services/voice/phrase-cache.test.ts +242 -0
  794. package/src/services/voice/phrase-cache.ts +186 -0
  795. package/src/services/voice/phrase-chunker.test.ts +239 -0
  796. package/src/services/voice/phrase-chunker.ts +281 -0
  797. package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
  798. package/src/services/voice/pipeline-impls.test.ts +292 -0
  799. package/src/services/voice/pipeline-impls.ts +315 -0
  800. package/src/services/voice/pipeline.ts +504 -0
  801. package/src/services/voice/prefill-client.ts +316 -0
  802. package/src/services/voice/prefix-preserving-queue.ts +162 -0
  803. package/src/services/voice/profile-store.ts +887 -0
  804. package/src/services/voice/real-audio-decode.test.ts +148 -0
  805. package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
  806. package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
  807. package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
  808. package/src/services/voice/ring-buffer.test.ts +129 -0
  809. package/src/services/voice/ring-buffer.ts +123 -0
  810. package/src/services/voice/rollback-queue.ts +74 -0
  811. package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
  812. package/src/services/voice/samantha-preset-placeholder.ts +148 -0
  813. package/src/services/voice/samantha-preset-regenerator.ts +393 -0
  814. package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
  815. package/src/services/voice/scheduler.t2.test.ts +141 -0
  816. package/src/services/voice/scheduler.ts +927 -0
  817. package/src/services/voice/self-voice-imprint.test.ts +59 -0
  818. package/src/services/voice/self-voice-imprint.ts +102 -0
  819. package/src/services/voice/shared-resources.ts +343 -0
  820. package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
  821. package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
  822. package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
  823. package/src/services/voice/speaker/diarizer-fused.ts +154 -0
  824. package/src/services/voice/speaker/diarizer.ts +218 -0
  825. package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
  826. package/src/services/voice/speaker/encoder-fused.ts +138 -0
  827. package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
  828. package/src/services/voice/speaker/encoder-ggml.ts +79 -0
  829. package/src/services/voice/speaker/encoder.ts +105 -0
  830. package/src/services/voice/speaker-imprint.test.ts +185 -0
  831. package/src/services/voice/speaker-imprint.ts +312 -0
  832. package/src/services/voice/speaker-preset-cache.test.ts +154 -0
  833. package/src/services/voice/speaker-preset-cache.ts +195 -0
  834. package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
  835. package/src/services/voice/system-audio-sink.test.ts +29 -0
  836. package/src/services/voice/system-audio-sink.ts +366 -0
  837. package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
  838. package/src/services/voice/transcriber.test.ts +392 -0
  839. package/src/services/voice/transcriber.ts +704 -0
  840. package/src/services/voice/transcript-knowledge.test.ts +68 -0
  841. package/src/services/voice/transcript-knowledge.ts +75 -0
  842. package/src/services/voice/transcript-service.test.ts +195 -0
  843. package/src/services/voice/transcript-service.ts +205 -0
  844. package/src/services/voice/transcript-store.test.ts +189 -0
  845. package/src/services/voice/transcript-store.ts +164 -0
  846. package/src/services/voice/turn-controller.test.ts +575 -0
  847. package/src/services/voice/turn-controller.ts +596 -0
  848. package/src/services/voice/types.ts +699 -0
  849. package/src/services/voice/vad.test.ts +498 -0
  850. package/src/services/voice/vad.ts +832 -0
  851. package/src/services/voice/vad.v1-v4.test.ts +222 -0
  852. package/src/services/voice/voice-budget.test.ts +415 -0
  853. package/src/services/voice/voice-budget.ts +635 -0
  854. package/src/services/voice/voice-duet.test.ts +375 -0
  855. package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
  856. package/src/services/voice/voice-emotion-classifier.ts +273 -0
  857. package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
  858. package/src/services/voice/voice-preload-predictor.test.ts +130 -0
  859. package/src/services/voice/voice-preload-predictor.ts +113 -0
  860. package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
  861. package/src/services/voice/voice-preset-format.test.ts +75 -0
  862. package/src/services/voice/voice-preset-format.ts +713 -0
  863. package/src/services/voice/voice-preset-generator.test.ts +89 -0
  864. package/src/services/voice/voice-profile-artifact.test.ts +138 -0
  865. package/src/services/voice/voice-profile-artifact.ts +518 -0
  866. package/src/services/voice/voice-profile-routes.test.ts +429 -0
  867. package/src/services/voice/voice-profile-routes.ts +425 -0
  868. package/src/services/voice/voice-scenario.test.ts +159 -0
  869. package/src/services/voice/voice-scenario.ts +280 -0
  870. package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
  871. package/src/services/voice/voice-state-machine.ts +727 -0
  872. package/src/services/voice/voice-workbench-report.test.ts +168 -0
  873. package/src/services/voice/voice-workbench-report.ts +367 -0
  874. package/src/services/voice/voice-workbench.test.ts +158 -0
  875. package/src/services/voice/voice.test.ts +1070 -0
  876. package/src/services/voice/wake-word-ggml.ts +319 -0
  877. package/src/services/voice/wake-word.test.ts +298 -0
  878. package/src/services/voice/wake-word.ts +554 -0
  879. package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
  880. package/src/services/voice/wav-codec.test.ts +32 -0
  881. package/src/services/voice/wav-codec.ts +101 -0
  882. package/src/services/voice/workbench-entrypoint.test.ts +55 -0
  883. package/src/services/voice/workbench-entrypoint.ts +88 -0
  884. package/src/services/voice/workbench-headless-runner.test.ts +162 -0
  885. package/src/services/voice/workbench-headless-runner.ts +396 -0
  886. package/src/services/voice/workbench-logic-services.test.ts +225 -0
  887. package/src/services/voice/workbench-logic-services.ts +184 -0
  888. package/src/services/voice/workbench-real-services.ts +629 -0
  889. package/src/services/voice/workbench-scenarios.ts +407 -0
  890. package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
  891. package/src/services/voice-model-updater.ts +724 -0
  892. package/src/services/voice-prewarm.ts +51 -0
  893. package/src/voice-workbench.ts +71 -0
@@ -0,0 +1,346 @@
1
+ /**
2
+ * End-to-end voice-loop latency tracing.
3
+ *
4
+ * One `LatencyTrace` per voice turn — a span recorder with named
5
+ * checkpoints from "user makes a sound" to "agent's first audio plays".
6
+ * The checkpoint set is fixed (`VOICE_CHECKPOINTS`) and ordered; each
7
+ * checkpoint is recorded at most once per turn. Missing checkpoints are
8
+ * surfaced as missing-checkpoint state — never synthesized — and derived
9
+ * metrics that depend on a missing checkpoint stay `null` (AGENTS.md §3 / §7:
10
+ * a missing measurement is recorded as missing, not faked).
11
+ *
12
+ * Ownership / lifecycle:
13
+ * - The turn controller (`voice/turn-controller.ts`, W9) is the natural
14
+ * owner of the per-turn tracer: it calls `tracer.beginTurn({...})` when
15
+ * a turn opens and `tracer.endTurn(turnId)` when it finalizes/aborts.
16
+ * Until that lands, callers can use the module-level
17
+ * `voiceLatencyTracer` singleton + the `markVoiceLatency()` helper —
18
+ * the singleton lazily opens a turn keyed by `roomId` on first mark.
19
+ * - Components that produce a checkpoint either (a) hold a `tracer` and
20
+ * call `tracer.mark(turnId, checkpoint)`, or (b) call the context-free
21
+ * `markVoiceLatency(roomId, checkpoint)` helper. `bindVadDetector()`
22
+ * bridges a `VadEventSource` onto the tracer without touching `vad.ts`.
23
+ *
24
+ * Hook points (where each checkpoint is meant to be recorded):
25
+ * - `peer-utterance-end` — (DUET ONLY) the producing agent's
26
+ * scheduler drained its last PCM chunk into
27
+ * the cross ring — the headline `t0` for a
28
+ * two-agents-talking run (`voice-duet.mjs`).
29
+ * Not recorded in the single-agent path.
30
+ * - `vad-trigger` — `VadDetector` energy-rise edge / the
31
+ * turn controller's wake instant.
32
+ * - `vad-speech-start` — `VadDetector` Silero speech-start.
33
+ * - `prewarm-fired` — the turn controller (W9) when it calls
34
+ * W6's `prewarmConversation`.
35
+ * - `asr-first-partial` — `StreamingTranscriber` first `partial`.
36
+ * - `asr-final` — `StreamingTranscriber` `final`.
37
+ * - `llm-first-token` — the engine generate path's first
38
+ * `onTextChunk` (W4).
39
+ * - `llm-first-replytext-char` — `StructuredFieldStreamExtractor`'s
40
+ * `onFieldStart("replyText")`.
41
+ * - `replyText-first-emotion-tag` — the field extractor / `parseExpressiveTags`
42
+ * on the first inline expressive tag (`[happy]`
43
+ * …) in `replyText` — emotion-markup overhead,
44
+ * measured the way `envelopeToReplyTextMs`
45
+ * measures envelope overhead.
46
+ * - `phrase-1-to-tts` — the scheduler/chunker (W9) on the first
47
+ * phrase handed to the TTS backend.
48
+ * - `tts-first-audio-chunk` — the TTS backend's first PCM chunk (W7).
49
+ * - `audio-first-played` — the audio sink on the first written
50
+ * sample (W9/W13) — single-agent path.
51
+ * - `audio-first-into-peer-ring` — (DUET ONLY) the responding agent's first
52
+ * TTS PCM chunk landed in the peer's ring
53
+ * (the duet replacement for
54
+ * `audio-first-played` — no speakers).
55
+ *
56
+ * Logger only, `[LatencyTracer]` prefix (AGENTS.md §9).
57
+ */
58
+ import type { VadEventSource } from "./voice/types";
59
+ /**
60
+ * The fixed, ordered set of latency checkpoints. The recorder enforces the
61
+ * order is non-decreasing in wall-clock terms only loosely — a checkpoint
62
+ * arriving "out of order" (a later checkpoint with an earlier timestamp) is
63
+ * recorded as-is and flagged; we never reorder or clamp.
64
+ */
65
+ export declare const VOICE_CHECKPOINTS: readonly ["peer-utterance-end", "vad-trigger", "vad-speech-start", "prewarm-fired", "asr-first-partial", "asr-final", "llm-first-token", "llm-first-replytext-char", "replyText-first-emotion-tag", "phrase-1-to-tts", "tts-first-audio-chunk", "audio-first-played", "audio-first-into-peer-ring"];
66
+ export type VoiceCheckpoint = (typeof VOICE_CHECKPOINTS)[number];
67
+ /** The single-agent "core" checkpoint set — every checkpoint that is NOT
68
+ * optional. A trace is `complete` iff every core checkpoint was recorded. */
69
+ export declare const CORE_VOICE_CHECKPOINTS: ("peer-utterance-end" | "vad-trigger" | "vad-speech-start" | "prewarm-fired" | "asr-first-partial" | "asr-final" | "llm-first-token" | "llm-first-replytext-char" | "replyText-first-emotion-tag" | "phrase-1-to-tts" | "tts-first-audio-chunk" | "audio-first-played" | "audio-first-into-peer-ring")[];
70
+ /**
71
+ * Derived per-turn metrics. Every field is the duration between two
72
+ * checkpoints; `null` whenever either endpoint checkpoint is missing for
73
+ * the turn — there is no fallback estimate.
74
+ */
75
+ export interface LatencyDerived {
76
+ /** vad-trigger → llm-first-token (time-to-first-token). */
77
+ ttftMs: number | null;
78
+ /** vad-trigger → tts-first-audio-chunk (time-to-first-audio). */
79
+ ttfaMs: number | null;
80
+ /** vad-trigger → audio-first-played (time-to-audio-played; the headline). */
81
+ ttapMs: number | null;
82
+ /** vad-speech-start → asr-final (ASR finalization latency). */
83
+ asrFinalLatencyMs: number | null;
84
+ /** vad-trigger → asr-first-partial (how fast the first words appear). */
85
+ asrFirstPartialMs: number | null;
86
+ /** vad-trigger → prewarm-fired (how fast the prewarm kicks off). */
87
+ prewarmLatencyMs: number | null;
88
+ /** asr-final → llm-first-token (LLM latency once the prompt is complete). */
89
+ llmFirstTokenAfterAsrMs: number | null;
90
+ /** llm-first-token → llm-first-replytext-char (envelope-skip overhead). */
91
+ envelopeToReplyTextMs: number | null;
92
+ /** llm-first-replytext-char → phrase-1-to-tts (chunker hand-off lag). */
93
+ replyTextToPhrase1Ms: number | null;
94
+ /** phrase-1-to-tts → tts-first-audio-chunk (TTS first-chunk latency). */
95
+ ttsFirstChunkMs: number | null;
96
+ /** tts-first-audio-chunk → audio-first-played (sink/playback lag). */
97
+ audioSinkLatencyMs: number | null;
98
+ /**
99
+ * peer-utterance-end → llm-first-token — **THE headline number** for the
100
+ * two-agents-talking benchmark: how long after the peer stopped speaking
101
+ * the responding agent emits its first token (TTFT-from-last-utterance).
102
+ */
103
+ ttftFromUtteranceEndMs: number | null;
104
+ /** peer-utterance-end → llm-first-replytext-char. */
105
+ replyTextFirstCharFromUtteranceEndMs: number | null;
106
+ /** peer-utterance-end → tts-first-audio-chunk. */
107
+ firstTtsPcmFromUtteranceEndMs: number | null;
108
+ /**
109
+ * peer-utterance-end → audio-first-into-peer-ring — the **duet round-trip**:
110
+ * peer stops speaking → responding agent's first audio is back in the
111
+ * peer's ear (the `duet_round_trip_ms` gate reads `.p50` of this).
112
+ */
113
+ firstAudioIntoPeerRingFromUtteranceEndMs: number | null;
114
+ /** llm-first-token → replyText-first-emotion-tag (emotion-markup overhead);
115
+ * `null` when the model emitted no inline expressive tag. */
116
+ emotionTagOverheadMs: number | null;
117
+ }
118
+ /** The derived-metric keys, in display order. */
119
+ export declare const LATENCY_DERIVED_KEYS: readonly ["ttftFromUtteranceEndMs", "firstAudioIntoPeerRingFromUtteranceEndMs", "ttftMs", "ttfaMs", "ttapMs", "asrFinalLatencyMs", "asrFirstPartialMs", "prewarmLatencyMs", "llmFirstTokenAfterAsrMs", "envelopeToReplyTextMs", "emotionTagOverheadMs", "replyTextToPhrase1Ms", "ttsFirstChunkMs", "audioSinkLatencyMs", "ttftFromUtteranceEndMs", "replyTextFirstCharFromUtteranceEndMs", "firstTtsPcmFromUtteranceEndMs", "firstAudioIntoPeerRingFromUtteranceEndMs", "emotionTagOverheadMs"];
120
+ export type LatencyDerivedKey = (typeof LATENCY_DERIVED_KEYS)[number];
121
+ export interface LatencyCheckpoint {
122
+ name: VoiceCheckpoint;
123
+ /** Wall-clock ms since the turn's `t0` (the first checkpoint recorded). */
124
+ tMs: number;
125
+ /** Absolute epoch ms when the checkpoint was recorded. */
126
+ atEpochMs: number;
127
+ }
128
+ export interface LatencyTrace {
129
+ turnId: string;
130
+ roomId: string | null;
131
+ /** Epoch ms of the first checkpoint recorded for this turn (the t=0 ref). */
132
+ t0EpochMs: number;
133
+ /** Epoch ms when `endTurn` was called, or null while still open. */
134
+ closedAtEpochMs: number | null;
135
+ checkpoints: LatencyCheckpoint[];
136
+ derived: LatencyDerived;
137
+ /** Names of checkpoints that were never recorded for this turn. */
138
+ missing: VoiceCheckpoint[];
139
+ /** True when every checkpoint in `VOICE_CHECKPOINTS` was recorded. */
140
+ complete: boolean;
141
+ /**
142
+ * Non-empty when the recorder saw something it could not reconcile —
143
+ * a duplicate mark, an out-of-order timestamp, an unknown checkpoint.
144
+ * Diagnostic only; the trace is still emitted.
145
+ */
146
+ anomalies: string[];
147
+ }
148
+ export interface HistogramSummary {
149
+ count: number;
150
+ p50: number | null;
151
+ p90: number | null;
152
+ p99: number | null;
153
+ min: number | null;
154
+ max: number | null;
155
+ mean: number | null;
156
+ }
157
+ /**
158
+ * Bounded-sample running histogram for one derived metric. Keeps the last
159
+ * `capacity` samples (FIFO) and computes percentiles on demand. Bounded so
160
+ * a long-running process does not grow without limit.
161
+ *
162
+ * Exported so sibling accumulators (e.g. the Mobile Resource Workbench's
163
+ * `DeviceResourceMetrics`) reuse the same percentile logic instead of
164
+ * re-implementing it.
165
+ */
166
+ export declare class BoundedHistogram {
167
+ private readonly capacity;
168
+ private readonly samples;
169
+ constructor(capacity: number);
170
+ add(value: number): void;
171
+ summary(): HistogramSummary;
172
+ }
173
+ export interface TracerOptions {
174
+ /** Max number of completed traces to retain in the ring. Default 64. */
175
+ ringCapacity?: number;
176
+ /** Max samples per derived-metric histogram. Default 256. */
177
+ histogramCapacity?: number;
178
+ /**
179
+ * Max number of concurrently-open turns. A new `beginTurn` past this cap
180
+ * evicts the oldest still-open turn (it is closed and emitted with whatever
181
+ * checkpoints it had). Guards against a leaked turn never being closed.
182
+ * Default 16.
183
+ */
184
+ maxOpenTurns?: number;
185
+ }
186
+ export declare class EndToEndLatencyTracer {
187
+ private readonly ring;
188
+ private readonly open;
189
+ private readonly byRoom;
190
+ private readonly histograms;
191
+ private readonly ringCapacity;
192
+ private readonly histogramCapacity;
193
+ private readonly maxOpenTurns;
194
+ constructor(opts?: TracerOptions);
195
+ /**
196
+ * Open a new turn. Returns the `turnId`. If `roomId` is given, subsequent
197
+ * context-free marks for that room route to this turn until it is closed.
198
+ */
199
+ beginTurn(args?: {
200
+ turnId?: string;
201
+ roomId?: string | null;
202
+ }): string;
203
+ /** Resolve (or lazily open) a turn for a roomId. Used by the helper. */
204
+ turnForRoom(roomId: string): string;
205
+ /**
206
+ * Record a checkpoint on an open turn. No-op (with a warning) if the turn
207
+ * is unknown or already closed — a late mark on a finalized turn is a
208
+ * caller bug, not something to retroactively patch into history.
209
+ */
210
+ mark(turnId: string, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
211
+ /** Convenience: mark a checkpoint by roomId, opening a turn if needed. */
212
+ markByRoom(roomId: string, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
213
+ /**
214
+ * Close an open turn: snapshot it into a `LatencyTrace`, push to the ring
215
+ * (evicting the oldest), and fold its derived metrics into the histograms.
216
+ * Idempotent for an unknown turnId. Returns the emitted trace (or null if
217
+ * the turn was unknown).
218
+ */
219
+ endTurn(turnId: string): LatencyTrace | null;
220
+ /** A read-only snapshot of an open turn (does not close it). */
221
+ peekTurn(turnId: string): LatencyTrace | null;
222
+ /** The most recent `n` completed traces, newest last. */
223
+ recentTraces(n?: number): LatencyTrace[];
224
+ /** Per-derived-metric histogram summaries over the retained sample. */
225
+ histogramSummaries(): Record<LatencyDerivedKey, HistogramSummary>;
226
+ /** Drop all retained traces, histograms, and open turns. */
227
+ reset(): void;
228
+ /** Number of turns currently open (un-closed). */
229
+ get openTurnCount(): number;
230
+ /**
231
+ * Bridge a VAD event source onto this tracer: subscribes to the
232
+ * `VadEvent` stream and emits `vad-trigger` + `vad-speech-start` on the
233
+ * Silero rising edge (the earliest reliable per-turn `t0`). Returns the
234
+ * unsubscribe function. This is the documented seam that lets the tracer
235
+ * hook the VAD without editing `voice/vad.ts` — the true energy-rise
236
+ * "wake" instant is owned by the turn controller (W9), which calls
237
+ * `mark(turnId, "vad-trigger")` directly; this bridge is the fallback for
238
+ * plain VAD-only setups.
239
+ */
240
+ bindVadDetector(source: VadEventSource, args?: {
241
+ roomId?: string | null;
242
+ onTurnOpen?: (turnId: string) => void;
243
+ }): () => void;
244
+ private snapshotTurn;
245
+ private computeDerived;
246
+ }
247
+ /**
248
+ * Process-wide tracer. The turn controller (W9) owns per-turn lifecycle
249
+ * via `beginTurn` / `endTurn`; components that only know a `roomId` use
250
+ * `markVoiceLatency(roomId, checkpoint)` which routes through `markByRoom`.
251
+ * The dev endpoint (`GET /api/dev/voice-latency`) reads this singleton.
252
+ */
253
+ export declare const voiceLatencyTracer: EndToEndLatencyTracer;
254
+ /**
255
+ * Record a checkpoint on the process-wide tracer, keyed by `roomId`. Opens
256
+ * a turn for that room on first call. No-op-safe — instrumentation must
257
+ * never throw into the voice loop. This is the seam every component (VAD,
258
+ * turn controller, engine, field extractor, chunker, TTS backend, audio
259
+ * sink) can call without threading a tracer reference.
260
+ */
261
+ export declare function markVoiceLatency(roomId: string | null | undefined, checkpoint: VoiceCheckpoint, atEpochMs?: number): void;
262
+ /** Close the process-wide tracer's turn for a roomId, returning the trace. */
263
+ export declare function endVoiceLatencyTurn(roomId: string): LatencyTrace | null;
264
+ export interface VoiceLatencyDevPayload {
265
+ generatedAtEpochMs: number;
266
+ /** Checkpoint names, in canonical order — so consumers can render headers. */
267
+ checkpoints: ReadonlyArray<VoiceCheckpoint>;
268
+ derivedKeys: ReadonlyArray<LatencyDerivedKey>;
269
+ openTurnCount: number;
270
+ traces: LatencyTrace[];
271
+ histograms: Record<LatencyDerivedKey, HistogramSummary>;
272
+ }
273
+ /** Build the JSON body for `GET /api/dev/voice-latency`. */
274
+ export declare function buildVoiceLatencyDevPayload(tracer?: EndToEndLatencyTracer, limit?: number): VoiceLatencyDevPayload;
275
+ /** A per-turn observation fed to `VoiceRunMetrics.recordTurn`. Every field is
276
+ * optional — a turn that couldn't measure a quantity records it as missing,
277
+ * never as a fabricated zero (AGENTS.md §3 / §7). */
278
+ export interface VoiceTurnMetrics {
279
+ /** MTP drafter token-acceptance rate (n_drafted_accepted / n_drafted)
280
+ * for this turn's generation, from the llama-server `/metrics` deltas. */
281
+ mtpAcceptRate?: number | null;
282
+ /** Tokens accepted from the drafter this turn (for an aggregate accept-rate
283
+ * that weights by token count, not turn count). */
284
+ mtpAccepted?: number | null;
285
+ /** Tokens drafted this turn. */
286
+ mtpDrafted?: number | null;
287
+ /** Structured-decode token-savings % for this turn — tokens the grammar
288
+ * force-filled ÷ tokens that would otherwise have been generated, ×100
289
+ * (WS-4's `guided_decode_token_bench.mjs` counter; ≈28% aggregate forced
290
+ * on the synthetic action set). */
291
+ structuredDecodeTokenSavingsPct?: number | null;
292
+ /** Decode throughput (tokens / second) for this turn's generation. */
293
+ tokensPerSecond?: number | null;
294
+ /** Server resident-set high-water mark in MB at the end of this turn
295
+ * (`VmHWM` from `/proc/<pid>/status`). */
296
+ serverRssMb?: number | null;
297
+ }
298
+ export interface VoiceRunMetricsSummary {
299
+ turns: number;
300
+ /** MTP accept-rate, token-weighted across the run (Σaccepted / Σdrafted);
301
+ * `null` when nothing was drafted / no drafter present. */
302
+ mtpAcceptRate: number | null;
303
+ mtpAccepted: number;
304
+ mtpDrafted: number;
305
+ /** Per-turn accept-rate histogram (p50/p90/p99 etc. — bounded sample). */
306
+ mtpAcceptRateHistogram: HistogramSummary;
307
+ /** Mean / histogram of the structured-decode token-savings %. */
308
+ structuredDecodeTokenSavingsPct: HistogramSummary;
309
+ /** Mean / histogram of decode tok/s. */
310
+ tokensPerSecond: HistogramSummary;
311
+ /** Server RSS over the run: first / last / max in MB + the `leakSuspected`
312
+ * flag (true when RSS is monotone non-decreasing across ≥4 turns and grew
313
+ * by more than `leakGrowthMbThreshold`). */
314
+ rss: {
315
+ firstMb: number | null;
316
+ lastMb: number | null;
317
+ maxMb: number | null;
318
+ samples: number;
319
+ leakSuspected: boolean;
320
+ growthMb: number | null;
321
+ };
322
+ }
323
+ /**
324
+ * Accumulates the non-latency signals over a long voice run (the duet harness
325
+ * feeds it per-turn). Sibling to `EndToEndLatencyTracer` (which is per-turn
326
+ * spans only). The duet bench report (`voice-duet-bench-<model>.json`) writes
327
+ * `summary()` next to the latency histograms; `eliza1_gates_collect.mjs`
328
+ * ingests the gate-named fields.
329
+ */
330
+ export declare class VoiceRunMetrics {
331
+ private readonly opts;
332
+ private turns;
333
+ private mtpAccepted;
334
+ private mtpDrafted;
335
+ private readonly acceptRateHist;
336
+ private readonly savingsHist;
337
+ private readonly tokSecHist;
338
+ private readonly rssSamples;
339
+ constructor(opts?: {
340
+ leakGrowthMbThreshold?: number;
341
+ });
342
+ recordTurn(m: VoiceTurnMetrics): void;
343
+ summary(): VoiceRunMetricsSummary;
344
+ reset(): void;
345
+ }
346
+ //# sourceMappingURL=latency-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latency-trace.d.ts","sourceRoot":"","sources":["../../src/services/latency-trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Host → fused-lib target resolution for bundle delivery (#9105 / local-
3
+ * inference).
4
+ *
5
+ * An Eliza-1 bundle's `files.lib[]` carries the fused `libelizainference` SET
6
+ * (the fused lib + its ggml/llama/mtmd sibling backends) per platform `target`.
7
+ * The downloader fetches ONLY the set matching the host into `<bundleRoot>/lib/`,
8
+ * which the desktop FFI runtime resolves with no env wiring
9
+ * (`desktop-fused-ffi-backend-runtime.ts` `resolveFusedLibraryPath`, path #2).
10
+ *
11
+ * Pure + injectable (platform / arch / env are all overridable) so the mapping
12
+ * is unit-testable on any host.
13
+ */
14
+ import type { Eliza1Files, Eliza1LibFileEntry } from "./manifest";
15
+ export interface HostLibTargetOptions {
16
+ platform?: NodeJS.Platform;
17
+ arch?: string;
18
+ env?: NodeJS.ProcessEnv;
19
+ /** Prefer a GPU-accelerated target when the bundle hosts one. */
20
+ preferGpu?: boolean;
21
+ }
22
+ /**
23
+ * Ordered list of acceptable `target` keys for the host, best-first. The
24
+ * downloader picks the first target the bundle actually hosts.
25
+ *
26
+ * - `ELIZA_INFERENCE_LIB_TARGET` pins a single target (power users / CI).
27
+ * - Mobile (`ELIZA_PLATFORM=android|ios`) returns `[]` — phones ship the lib
28
+ * natively (jniLibs / xcframework), never via bundle delivery.
29
+ * - CPU is preferred by default: the fused lib always has GGML_CPU built in,
30
+ * so the CPU set works on every host and is the smallest download. GPU sets
31
+ * (`…-cuda`) are opt-in via `preferGpu` or the env pin.
32
+ * - macOS arm64 maps to the `metal` set, which itself carries the CPU
33
+ * fallback, so it is the canonical mac target.
34
+ */
35
+ export declare function resolveHostLibTargets(opts?: HostLibTargetOptions): string[];
36
+ export interface SelectedLibTarget {
37
+ readonly target: string;
38
+ readonly files: ReadonlyArray<Eliza1LibFileEntry>;
39
+ }
40
+ /**
41
+ * Pick the bundle's lib file set for the first host target the manifest
42
+ * actually carries. Returns null when the bundle has no `lib[]` or hosts no
43
+ * target the host accepts (⇒ the runtime falls back to other resolution paths,
44
+ * ultimately cloud).
45
+ */
46
+ export declare function selectBundleLibFiles(manifest: {
47
+ files: Pick<Eliza1Files, "lib">;
48
+ }, targets: ReadonlyArray<string>): SelectedLibTarget | null;
49
+ /**
50
+ * Flat staged filename under `<bundleRoot>/lib/` for a lib entry. Always a
51
+ * basename (any directory component in `name`/`path` is stripped) so a manifest
52
+ * can never write outside the lib dir.
53
+ */
54
+ export declare function libStagedName(entry: Eliza1LibFileEntry): string;
55
+ //# sourceMappingURL=lib-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib-target.d.ts","sourceRoot":"","sources":["../../src/services/lib-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,GAAE,oBAAyB,GAC7B,MAAM,EAAE,CAqBV;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;CAAE,EAC7C,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAC5B,iBAAiB,GAAG,IAAI,CAQ1B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAK/D"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Live device signals for the capability-driven `auto` routing policy.
3
+ *
4
+ * `classifyDeviceTier()` is a *static* assessment — it scores the hardware once
5
+ * and caches the result. But a device that classifies MAX/GOOD at session start
6
+ * can still become a poor place to run local inference *right now*: a sustained
7
+ * workload pushes the SoC into thermal throttling, or decode throughput collapses
8
+ * under memory pressure. Those are live, time-varying signals the static tier
9
+ * cannot see.
10
+ *
11
+ * This module exposes the two live signals the `auto` branch demotes on:
12
+ *
13
+ * - **thermal state** — read from the device bridge's most recent device
14
+ * capabilities (`nominal | fair | serious | critical | unknown`). `serious`
15
+ * or `critical` means the OS is actively throttling clocks; forcing local
16
+ * inference there makes turns slower than cloud and worsens the throttle.
17
+ * - **decode throughput** — the recent p50 decode tokens/sec from
18
+ * `inferenceTelemetry`. When it falls below a usable budget the on-device
19
+ * path is no longer competitive and `auto` routes to cloud.
20
+ *
21
+ * Both signals are *optional*: a quantity the host could not measure is reported
22
+ * as `null` (never a fabricated `0`), and a `null` signal never demotes — the
23
+ * static tier decision stands. The default source reads the real subsystems; a
24
+ * test or alternate host can inject its own via `setLiveDeviceSignalsSource`.
25
+ */
26
+ /** Thermal pressure reported by the OS. Mirrors the device-bridge wire enum. */
27
+ export type ThermalState = "nominal" | "fair" | "serious" | "critical" | "unknown";
28
+ /**
29
+ * The telemetry metric name carrying recent on-device decode throughput
30
+ * (tokens/sec). The backend records this after a generation completes; until
31
+ * then `summary()` returns a `count: 0` row and the signal is `null`.
32
+ */
33
+ export declare const DECODE_TPS_METRIC = "inference.decode_tps";
34
+ /**
35
+ * Minimum decode throughput (tokens/sec) below which the local path is no longer
36
+ * worth keeping under `auto`. Roughly the floor where on-device generation feels
37
+ * slower than a cloud round-trip on a constrained mobile SoC.
38
+ */
39
+ export declare const MIN_DECODE_TPS_BUDGET = 6;
40
+ /**
41
+ * Approximate decoded-token count for a generated string when an exact tokenizer
42
+ * count is not reachable from the call site. English averages ~4 characters per
43
+ * token; this is deliberately coarse — it only feeds a p50 the router compares
44
+ * against {@link MIN_DECODE_TPS_BUDGET}, never a billing or context-window count.
45
+ */
46
+ export declare function estimateDecodeTokens(text: string): number;
47
+ /**
48
+ * Record one on-device decode-throughput observation into the telemetry ring the
49
+ * `auto` router reads via {@link DECODE_TPS_METRIC}. This is the producer that
50
+ * activates the dormant TPS demotion signal: backends call it after a real local
51
+ * generation completes with a known decoded-token count and wall-clock decode
52
+ * span.
53
+ *
54
+ * Drops the sample (records nothing) when it would be noise rather than signal:
55
+ * an empty/aborted generation, a sub-{@link MIN_TOKENS_FOR_TPS_SAMPLE} reply, or
56
+ * a non-positive elapsed time (a clock that did not advance). Never throws —
57
+ * `inferenceTelemetry.record` already guards the call site.
58
+ */
59
+ export declare function recordDecodeThroughput(sample: {
60
+ tokens: number;
61
+ elapsedMs: number;
62
+ }): void;
63
+ /** A point-in-time snapshot of the live device signals. */
64
+ export interface LiveDeviceSignals {
65
+ /** Current OS thermal pressure, or `null` when no device reported it. */
66
+ thermalState: ThermalState | null;
67
+ /** Recent p50 decode throughput in tokens/sec, or `null` when unmeasured. */
68
+ decodeTokensPerSecond: number | null;
69
+ }
70
+ /** A source of live device signals — swappable for tests and alternate hosts. */
71
+ export type LiveDeviceSignalsSource = () => LiveDeviceSignals;
72
+ /** Read the current live device signals. */
73
+ export declare function readLiveDeviceSignals(): LiveDeviceSignals;
74
+ /**
75
+ * Override the live-signals source. Pass `null` to restore the default
76
+ * (device-bridge + telemetry) source. Intended for tests and alternate hosts.
77
+ */
78
+ export declare function setLiveDeviceSignalsSource(source: LiveDeviceSignalsSource | null): void;
79
+ /**
80
+ * Whether the live signals say the device should be demoted off local for now,
81
+ * even though the static tier favours local. True when the OS is throttling
82
+ * (`serious`/`critical`) or measured decode throughput sits below the budget.
83
+ * A `null` signal never demotes.
84
+ */
85
+ export declare function liveSignalsDemoteLocal(signals: LiveDeviceSignals): boolean;
86
+ //# sourceMappingURL=live-signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-signals.d.ts","sourceRoot":"","sources":["../../src/services/live-signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,gFAAgF;AAChF,MAAM,MAAM,YAAY,GACrB,SAAS,GACT,MAAM,GACN,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEb;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAUvC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAeP;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IACjC,yEAAyE;IACzE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,MAAM,iBAAiB,CAAC;AA+B9D,4CAA4C;AAC5C,wBAAgB,qBAAqB,IAAI,iBAAiB,CAEzD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,uBAAuB,GAAG,IAAI,GACpC,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAc1E"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Scraper for llama-server's `/metrics` (Prometheus exposition format)
3
+ * endpoint. Translates the running counters into the
4
+ * Anthropic-SDK-shaped `usage` block that callers already know how to
5
+ * consume from the cloud Anthropic plugin.
6
+ *
7
+ * llama-server publishes the following counters (per-process, monotonic):
8
+ *
9
+ * llamacpp:n_decode_total — context tokens decoded (prefill + gen)
10
+ * llamacpp:n_tokens_predicted_total — output tokens
11
+ * llamacpp:prompt_tokens_total — total input tokens accepted
12
+ * llamacpp:n_past_max — high-water mark of cached past-tokens
13
+ * llamacpp:n_prompt_tokens_processed_total — fresh tokens prefilled
14
+ * (i.e. cache MISS), excludes cache hits
15
+ * llamacpp:kv_cache_tokens — current size of KV cache (gauge)
16
+ * llamacpp:kv_cache_used_cells — slots with active KV (gauge)
17
+ *
18
+ * For MTP speculative decoding, the fork additionally publishes:
19
+ *
20
+ * llamacpp:n_drafted_total — drafter-emitted tokens
21
+ * llamacpp:n_drafted_accepted_total — accepted speculative tokens
22
+ *
23
+ * The mapping into Anthropic shape:
24
+ *
25
+ * prompt_tokens_total → input_tokens
26
+ * n_tokens_predicted_total → output_tokens
27
+ * n_prompt_tokens_processed_total → cache_creation_input_tokens
28
+ * prompt_tokens_total - n_prompt_tokens_processed_total → cache_read_input_tokens
29
+ * n_drafted_total / n_drafted_accepted_total → MTP extension fields
30
+ *
31
+ * Counters are taken as deltas across two snapshots: take one before
32
+ * `generate`, one after, and subtract. Losing a few samples to process
33
+ * restart is acceptable — the deltas are useful for the call's own
34
+ * usage accounting, not for global monitoring.
35
+ */
36
+ export interface LlamaServerMetricSnapshot {
37
+ /** Wall-clock ms when the snapshot was taken; useful for diagnostics. */
38
+ takenAtMs: number;
39
+ /** True when `/metrics` was fetched and parsed. False means scrape failure. */
40
+ scrapeOk?: boolean;
41
+ /** True when the scrape included at least one generation/speculation counter. */
42
+ hasGenerationCounters?: boolean;
43
+ promptTokensTotal: number;
44
+ predictedTokensTotal: number;
45
+ /** Tokens that had to be freshly prefilled — i.e. cache MISS this turn. */
46
+ promptTokensProcessedTotal: number;
47
+ draftedTotal: number;
48
+ acceptedTotal: number;
49
+ /** Current size of the KV cache (gauge). */
50
+ kvCacheTokens: number;
51
+ /** Number of slots currently holding active KV (gauge). */
52
+ kvCacheUsedCells: number;
53
+ }
54
+ /**
55
+ * Parse a Prometheus exposition-format payload into a metric snapshot.
56
+ * Unknown or malformed lines are silently skipped — counters we don't
57
+ * recognise are not interesting and metric exporters add new ones over
58
+ * time.
59
+ *
60
+ * llama-server usually exposes one sample per metric (no labels), e.g.
61
+ * `llamacpp:prompt_tokens_total 1234`
62
+ * Some MTP forks expose per-slot labelled samples, e.g.
63
+ * `llamacpp:n_drafted_accepted_total{slot_id="0"} 12`
64
+ * Labelled samples are summed unless an unlabelled total exists for the same
65
+ * canonical field, in which case the unlabelled total wins.
66
+ */
67
+ export declare function parsePrometheusMetrics(body: string, takenAtMs?: number): LlamaServerMetricSnapshot;
68
+ /**
69
+ * Anthropic-SDK-shaped usage block, optionally extended with MTP
70
+ * speculative-decoding metrics. The cloud plugin (plugin-anthropic)
71
+ * emits the first three fields verbatim; local inference adds the
72
+ * `mtp_*` fields when speculative decoding is active. Callers that
73
+ * already handle the cloud `usage` shape need no change.
74
+ */
75
+ export interface LocalUsageBlock {
76
+ [key: string]: unknown;
77
+ input_tokens: number;
78
+ output_tokens: number;
79
+ cache_creation_input_tokens: number;
80
+ cache_read_input_tokens: number;
81
+ mtp_drafted_tokens?: number;
82
+ mtp_accepted_tokens?: number;
83
+ /** 0..1 — proportion of drafted tokens that were accepted. */
84
+ mtp_acceptance_rate?: number;
85
+ /** 0..1 — proportion of input tokens that hit a warm slot (cache reuse). */
86
+ cache_hit_rate?: number;
87
+ }
88
+ /**
89
+ * Compute the Anthropic-shape usage block for a single generation by
90
+ * differencing two snapshots. `before` is taken just before the request,
91
+ * `after` just after the response was received. Negative deltas (caused
92
+ * by a metric reset between snapshots, e.g. server restart) are clamped
93
+ * to 0 — losing the sample is preferable to surfacing nonsense to the
94
+ * caller.
95
+ *
96
+ * Pass `responseUsage` to override input/output counts when the response
97
+ * payload itself reports per-call counters that are more accurate than
98
+ * the metric delta — llama-server's chat completion response includes
99
+ * `usage.{prompt,completion}_tokens` per request, which is exact while
100
+ * the metric delta is "everything that happened during the wall-clock
101
+ * window of the request."
102
+ */
103
+ export declare function diffSnapshots(before: LlamaServerMetricSnapshot, after: LlamaServerMetricSnapshot, responseUsage?: {
104
+ prompt_tokens?: number;
105
+ completion_tokens?: number;
106
+ }): LocalUsageBlock;
107
+ /**
108
+ * GET `/metrics` from a running llama-server and parse it. Errors fall
109
+ * back to a zero-valued snapshot rather than throwing — observability
110
+ * MUST NOT break generation. `scrapeOk=false` tells callers that the
111
+ * zeros are not evidence of absent MTP/KV activity.
112
+ */
113
+ export declare function fetchMetricsSnapshot(baseUrl: string, signal?: AbortSignal, timeoutMs?: number): Promise<LlamaServerMetricSnapshot>;
114
+ //# sourceMappingURL=llama-server-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-server-metrics.d.ts","sourceRoot":"","sources":["../../src/services/llama-server-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,yBAAyB;IACzC,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAuBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAmB,GAC5B,yBAAyB,CAuD3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC5B,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,yBAAyB,EAChC,aAAa,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,eAAe,CA2CjB;AAOD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,SAAoC,GAC3C,OAAO,CAAC,yBAAyB,CAAC,CAsDpC"}