@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,128 @@
1
+ /**
2
+ * RAM-pressure monitor for the local-inference path (W10 / J2).
3
+ *
4
+ * Polls `os.freemem()` / `os.totalmem()` on an interval. When free RAM
5
+ * crosses a low-water threshold, the monitor walks the
6
+ * `SharedResourceRegistry`'s evictable model roles in *ascending priority*
7
+ * — `vision/mmproj < embedding < vad < ASR < TTS < text-target` —
8
+ * and evicts the cheapest one. Cheap evictions are the voice TTS/ASR weights
9
+ * (`MmapRegionHandle.evictPages()`), the vision projector, and unloading the
10
+ * embedding model. Every eviction is logged (observable) and reversible
11
+ * (roles re-load lazily on next use).
12
+ *
13
+ * The monitor never *loads* anything — it only frees memory. Re-load is the
14
+ * caller's job, on demand. It also never evicts the text target (priority
15
+ * 100) unless it's literally the only resident role and pressure persists,
16
+ * which is the intended "nothing left to give" behaviour.
17
+ *
18
+ * No fallback sludge: when there is nothing to evict and pressure persists,
19
+ * the monitor logs a warning and stops trying for a back-off window — it does
20
+ * not pretend it fixed anything.
21
+ */
22
+ import type { ResidentModelRole, SharedResourceRegistry } from "./voice/shared-resources";
23
+ /** Minimal structural logger — keeps this module dependency-free. */
24
+ export interface MemoryMonitorLogger {
25
+ debug?(message: string): void;
26
+ info?(message: string): void;
27
+ warn?(message: string): void;
28
+ }
29
+ export interface MemorySample {
30
+ totalMb: number;
31
+ freeMb: number;
32
+ /**
33
+ * Resident-set size in MB of the inference host. On the in-process FFI path
34
+ * this is the current process's RSS (`process.memoryUsage().rss`); the
35
+ * device-bridge path injects a phone-sourced figure. `null` only when no
36
+ * probe could read it.
37
+ */
38
+ serverRssMb: number | null;
39
+ /** Effective free memory used for the pressure decision (min of OS-free and total-minus-RSS-style headroom). */
40
+ effectiveFreeMb: number;
41
+ /** Free as a fraction of total (0..1), based on `effectiveFreeMb`. */
42
+ freeFraction: number;
43
+ }
44
+ export interface MemoryMonitorConfig {
45
+ /** Poll interval, ms. Default 30 s; min 1 s. */
46
+ intervalMs: number;
47
+ /**
48
+ * Evict when free RAM drops below `max(lowWaterMb, lowWaterFraction*total)`.
49
+ * Defaults: 768 MB / 8% of total.
50
+ */
51
+ lowWaterMb: number;
52
+ lowWaterFraction: number;
53
+ /**
54
+ * After an eviction, wait this long before the next eviction so the OS
55
+ * has time to reflect the reclaimed pages. Default 5 s.
56
+ */
57
+ evictionCooldownMs: number;
58
+ /**
59
+ * After "nothing left to evict", back off for this long before warning
60
+ * again. Default 60 s.
61
+ */
62
+ exhaustedBackoffMs: number;
63
+ }
64
+ export declare function resolveMemoryMonitorConfig(overrides?: Partial<MemoryMonitorConfig>): MemoryMonitorConfig;
65
+ /** Pluggable sources so the monitor stays unit-testable without OS state. */
66
+ export interface MemoryMonitorSources {
67
+ /**
68
+ * Available/total memory in bytes. Defaults to `readSystemMemory()`
69
+ * (`/proc/meminfo` `MemAvailable` on Linux/Android, `os.freemem()` elsewhere).
70
+ */
71
+ osMemory?: () => {
72
+ freeBytes: number;
73
+ totalBytes: number;
74
+ };
75
+ /** Running external runtime RSS in MB, or null. */
76
+ serverRssMb?: () => Promise<number | null>;
77
+ }
78
+ export interface MemoryPressureAction {
79
+ sample: MemorySample;
80
+ /** What got evicted this tick, if anything. */
81
+ evicted: {
82
+ id: string;
83
+ role: ResidentModelRole;
84
+ estimatedMb: number;
85
+ } | null;
86
+ /** True when pressure was detected but nothing could be evicted. */
87
+ exhausted: boolean;
88
+ /**
89
+ * True when pressure was detected but eviction was deferred to the registry's
90
+ * external eviction owner (the `MemoryArbiter`) so the two loops never
91
+ * double-evict on one pressure event (#8809 AC#2).
92
+ */
93
+ delegated?: boolean;
94
+ }
95
+ export declare class MemoryMonitor {
96
+ private readonly config;
97
+ private readonly registry;
98
+ private readonly log?;
99
+ private readonly osMemory;
100
+ private readonly serverRssMb;
101
+ private timer;
102
+ private ticking;
103
+ private lastEvictionAtMs;
104
+ private exhaustedUntilMs;
105
+ constructor(args: {
106
+ registry: SharedResourceRegistry;
107
+ config?: Partial<MemoryMonitorConfig>;
108
+ logger?: MemoryMonitorLogger;
109
+ sources?: MemoryMonitorSources;
110
+ });
111
+ /** Begin polling. Idempotent. The interval is unref'd so it never holds the process open. */
112
+ start(): void;
113
+ stop(): void;
114
+ /** Whether the polling timer is running. */
115
+ isRunning(): boolean;
116
+ /** Take a memory sample now (no side effects). */
117
+ sample(): Promise<MemorySample>;
118
+ /** Low-water line for the current sample, in MB. */
119
+ private lowWaterMb;
120
+ isUnderPressure(sample: MemorySample): boolean;
121
+ /**
122
+ * One monitor step: sample, and if under pressure (and not in cooldown),
123
+ * evict the lowest-priority resident role. Returns what it did so callers
124
+ * (and tests) can assert. Public so tests don't have to wait on a timer.
125
+ */
126
+ tick(now?: number): Promise<MemoryPressureAction>;
127
+ }
128
+ //# sourceMappingURL=memory-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-monitor.d.ts","sourceRoot":"","sources":["../../src/services/memory-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EACX,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,0BAA0B,CAAC;AAElC,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IACnC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gHAAgH;IAChH,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC3B;AA4BD,wBAAgB,0BAA0B,CACzC,SAAS,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC1C,mBAAmB,CA0BrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,+CAA+C;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,IAAI,EAAE;QACjB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,OAAO,CAAC,EAAE,oBAAoB,CAAC;KAC/B;IASD,6FAA6F;IAC7F,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI;IAOZ,4CAA4C;IAC5C,SAAS,IAAI,OAAO;IAIpB,kDAAkD;IAC5C,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAuBrC,oDAAoD;IACpD,OAAO,CAAC,UAAU;IAOlB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAI9C;;;;OAIG;IACG,IAAI,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA0CnE"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Cross-platform memory-pressure sources for the Memory Arbiter (WS1).
3
+ *
4
+ * The arbiter consumes a `MemoryPressureSource` interface so it doesn't
5
+ * care whether the signal comes from polling `os.freemem()`, an Android
6
+ * `ComponentCallbacks2.onTrimMemory()` callback, or an iOS
7
+ * `UIApplicationDidReceiveMemoryWarningNotification` subscription.
8
+ *
9
+ * Three concrete implementations live here:
10
+ *
11
+ * 1. `nodeOsPressureSource` — desktop / server. Polls `os.freemem()` /
12
+ * `os.totalmem()` on a fixed cadence (~5 s). Emits `nominal` /
13
+ * `low` / `critical` from a two-threshold high-water mark over total
14
+ * RAM. The polling timer is `unref`'d so it never holds the process
15
+ * open.
16
+ *
17
+ * 2. `capacitorPressureSource` — Capacitor iOS/Android shim. The native
18
+ * side (Android `ComponentCallbacks2.onTrimMemory`, iOS
19
+ * `UIApplicationDidReceiveMemoryWarningNotification`) calls
20
+ * `dispatch(level)` via the bridge, which fans the level out to
21
+ * arbiter listeners. The JS contract is fixed here; the native
22
+ * modules will be wired in WS2 / WS8.
23
+ *
24
+ * 3. `compositePressureSource` — combine sources (e.g. one OS poll +
25
+ * one Capacitor bridge). The composite emits the *worst* reported
26
+ * level so neither signal can mask the other.
27
+ *
28
+ * Pressure semantics — what each level means to the arbiter:
29
+ * - `nominal` → no action; the arbiter may load freely.
30
+ * - `low` → the arbiter SHOULD evict the lowest-priority resident
31
+ * role and may pause optimistic preloads.
32
+ * - `critical` → the arbiter MUST evict every non-text-target role
33
+ * immediately; `acquire()` for non-text capabilities is
34
+ * allowed to throw.
35
+ *
36
+ * No fallback sludge:
37
+ * - When a probe fails (e.g. `os.freemem()` returns NaN under sandboxing),
38
+ * the source emits `nominal` and logs a warning. It does NOT pretend
39
+ * the system is critical and start trashing models.
40
+ * - `dispatch(level)` from a native bridge is trusted; the JS layer does
41
+ * not second-guess it with its own poll.
42
+ */
43
+ /** Pressure level the arbiter consumes. */
44
+ export type MemoryPressureLevel = "nominal" | "low" | "critical";
45
+ export interface MemoryPressureEvent {
46
+ level: MemoryPressureLevel;
47
+ /** Optional free RAM, MB. Present for poll-based sources; absent for OS-callback bridges. */
48
+ freeMb?: number;
49
+ /** Optional total RAM, MB. */
50
+ totalMb?: number;
51
+ /** Free as a fraction of total (0..1). Present when both above are present. */
52
+ freeFraction?: number;
53
+ /** Source identifier — handy for telemetry. `os-poll` / `capacitor` / `composite`. */
54
+ source: string;
55
+ /** Wall-clock ms when the event was generated. */
56
+ atMs: number;
57
+ }
58
+ export type MemoryPressureListener = (event: MemoryPressureEvent) => void;
59
+ export interface MemoryPressureSource {
60
+ /** Stable identifier for the source (used in telemetry tags). */
61
+ readonly id: string;
62
+ /** Subscribe to pressure events. Returns the unsubscribe fn. */
63
+ subscribe(listener: MemoryPressureListener): () => void;
64
+ /** Begin observing. Idempotent. */
65
+ start(): void;
66
+ /** Stop observing. Idempotent. */
67
+ stop(): void;
68
+ /** Take a one-shot reading without subscribing. May reuse the cached level. */
69
+ current(): MemoryPressureEvent;
70
+ }
71
+ export interface NodeOsPressureConfig {
72
+ /** Poll interval, ms. Default 5000 (5 s); min 500 ms. */
73
+ intervalMs: number;
74
+ /**
75
+ * Below this fraction of total RAM, level becomes `low`. Default 0.15.
76
+ */
77
+ lowWaterFraction: number;
78
+ /**
79
+ * Below this fraction of total RAM, level becomes `critical`. Default 0.05.
80
+ * Must be < lowWaterFraction; the source enforces this at construction.
81
+ */
82
+ criticalWaterFraction: number;
83
+ /** Optional injected clock (testing). Defaults to `Date.now()`. */
84
+ now?: () => number;
85
+ }
86
+ export interface NodeOsPressureSources {
87
+ /**
88
+ * Available/total memory in bytes. Defaults to `readSystemMemory()`
89
+ * (`/proc/meminfo` `MemAvailable` on Linux/Android, `os.freemem()` elsewhere).
90
+ */
91
+ osMemory?: () => {
92
+ freeBytes: number;
93
+ totalBytes: number;
94
+ };
95
+ /** Optional logger; warnings only. */
96
+ logger?: {
97
+ warn?: (m: string) => void;
98
+ };
99
+ }
100
+ /**
101
+ * Polling pressure source for desktop/server. The poll happens on an
102
+ * `unref`'d timer so the process can exit naturally. Listeners only fire
103
+ * when the level *changes* (or the first time after `start()`); raw
104
+ * readings are still available via `current()` for logging.
105
+ */
106
+ export declare function nodeOsPressureSource(overrides?: Partial<NodeOsPressureConfig>, sources?: NodeOsPressureSources): MemoryPressureSource;
107
+ /**
108
+ * Capacitor-side bridge. The native module dispatches a level whenever
109
+ * the OS hands it a memory-pressure callback (Android: `onTrimMemory`,
110
+ * mapping `TRIM_MEMORY_RUNNING_LOW`/`TRIM_MEMORY_RUNNING_CRITICAL` to
111
+ * `low`/`critical`; iOS: `didReceiveMemoryWarning` → `critical`). The JS
112
+ * surface is `dispatch(level, freeMb?)`. The host wires this to the
113
+ * Capacitor plugin in WS2/WS8; here we own the contract + JS state.
114
+ */
115
+ export interface CapacitorPressureSource extends MemoryPressureSource {
116
+ /** Called by the Capacitor native bridge whenever the OS signals pressure. */
117
+ dispatch(level: MemoryPressureLevel, freeMb?: number): void;
118
+ }
119
+ export declare function capacitorPressureSource(opts?: {
120
+ now?: () => number;
121
+ }): CapacitorPressureSource;
122
+ /**
123
+ * Combine multiple sources. Subscribers see the *worst* level reported by
124
+ * any underlying source — once a critical signal arrives, the composite
125
+ * stays critical until every source returns to nominal/low.
126
+ */
127
+ export declare function compositePressureSource(sources: ReadonlyArray<MemoryPressureSource>, opts?: {
128
+ now?: () => number;
129
+ }): MemoryPressureSource;
130
+ //# sourceMappingURL=memory-pressure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-pressure.d.ts","sourceRoot":"","sources":["../../src/services/memory-pressure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,2CAA2C;AAC3C,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI,CAAC;IACxD,mCAAmC;IACnC,KAAK,IAAI,IAAI,CAAC;IACd,kCAAkC;IAClC,IAAI,IAAI,IAAI,CAAC;IACb,+EAA+E;IAC/E,OAAO,IAAI,mBAAmB,CAAC;CAC/B;AAID,MAAM,WAAW,oBAAoB;IACpC,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,sCAAsC;IACtC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACxC;AAQD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,EAC7C,OAAO,GAAE,qBAA0B,GACjC,oBAAoB,CAyGtB;AAQD;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACpE,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAgB,uBAAuB,CACtC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC/B,uBAAuB,CAoDzB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAC/B,oBAAoB,CAiGtB"}
@@ -0,0 +1,13 @@
1
+ export type MtpDoctorCheckStatus = "pass" | "warn" | "fail";
2
+ export interface MtpDoctorCheck {
3
+ label: string;
4
+ status: MtpDoctorCheckStatus;
5
+ detail: string;
6
+ fix?: string;
7
+ }
8
+ export interface MtpDoctorReport {
9
+ ok: boolean;
10
+ checks: MtpDoctorCheck[];
11
+ }
12
+ export declare function runMtpDoctor(): Promise<MtpDoctorReport>;
13
+ //# sourceMappingURL=mtp-doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mtp-doctor.d.ts","sourceRoot":"","sources":["../../src/services/mtp-doctor.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAgE7D"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * NetworkPolicy bridge for `plugin-local-inference` (R5-versioning §4).
3
+ *
4
+ * The shared module `@elizaos/shared/local-inference/network-policy` defines
5
+ * the platform-agnostic classifier + decision rule. This module wires the
6
+ * platform-specific probes:
7
+ *
8
+ * - **Android** (Capacitor / AOSP runtime): `@capacitor/network`'s
9
+ * `Network.getStatus()` for connection type, plus an explicit native
10
+ * shim (`getMeteredHint`) that reads `NetworkCapabilities.hasCapability(
11
+ * NET_CAPABILITY_NOT_METERED)`. Android docs explicitly warn against
12
+ * equating "cellular" with "metered" — the metered flag is mandatory.
13
+ * - **iOS** (Capacitor / native): `@capacitor/network` for connection type
14
+ * plus our native bridge that reads `NWPathMonitor.path.isExpensive`.
15
+ * `isExpensive == true` is Apple's "treat as metered" flag.
16
+ * - **Desktop** (Electron/Electrobun): platform-specific OS shims —
17
+ * WinRT `NetworkCostType` on Windows, NetworkManager dbus
18
+ * `ActiveConnection.Metered` on Linux, `NWPathMonitor` on macOS.
19
+ * When no shim is available, falls back to `metered: false` on a wired
20
+ * link and `metered: null` (unknown) on Wi-Fi; the policy turns
21
+ * `unknown` into `ask` so the user is never surprised.
22
+ * - **Headless server / CLI** (`ELIZA_NETWORK_POLICY=headless` or
23
+ * `process.stdout.isTTY === false && process.env.CI !== undefined`):
24
+ * skip auto-update entirely. The `eliza models update` CLI invocation
25
+ * still works, but the runtime tick is silent.
26
+ *
27
+ * The Capacitor / native bridges that hook into the global `window`
28
+ * object on mobile are installed by the AOSP / iOS plugin layers; this
29
+ * module reads them through an injectable adapter so the server-side
30
+ * runtime stays platform-pure and tests can drive the state machine
31
+ * without any of the native dependencies.
32
+ *
33
+ * Spec: `.swarm/research/R5-versioning.md` §4.
34
+ */
35
+ import { type NetworkClass, type NetworkPolicyDecision, type NetworkPolicyPreferences, type RawNetworkState } from "@elizaos/shared";
36
+ /**
37
+ * Platform probe — produces a `RawNetworkState` from whatever OS API is
38
+ * available. Each platform shim implements this; the registry below picks
39
+ * the active one at runtime.
40
+ */
41
+ export interface NetworkProbe {
42
+ readonly id: "node-default" | "capacitor-android" | "capacitor-ios" | "electron-darwin" | "electron-win32" | "electron-linux" | "headless";
43
+ probe(): Promise<RawNetworkState>;
44
+ }
45
+ /**
46
+ * Heuristic: are we running headless (no TTY, in CI, or with an explicit
47
+ * override)? Headless callers should NOT auto-update because there is no
48
+ * one around to confirm a multi-GB download.
49
+ */
50
+ export declare function isHeadlessRuntime(): boolean;
51
+ /**
52
+ * Default Node probe — returns `unknown` for everything. Useful in tests
53
+ * and on packaged servers where there is no Capacitor / Electron bridge.
54
+ * The policy will downgrade `unknown` to `ask`, which is correct for the
55
+ * platform-uncertain case.
56
+ */
57
+ export declare const NODE_DEFAULT_PROBE: NetworkProbe;
58
+ /**
59
+ * Headless probe — fires when `isHeadlessRuntime()` is true. The decision
60
+ * rule short-circuits to `headless-explicit-only` regardless of state.
61
+ */
62
+ export declare const HEADLESS_PROBE: NetworkProbe;
63
+ /**
64
+ * Capacitor Android probe (R5 §4.1).
65
+ *
66
+ * Reads connection type from `@capacitor/network` and metered status from
67
+ * a native shim exposed at `(window as any).ElizaNetworkPolicy` (provided
68
+ * by the `@elizaos/capacitor-network-policy` Capacitor plugin at
69
+ * `plugins/plugin-native-network-policy/`). Importing the plugin from
70
+ * the app bootstrap installs `globalThis.ElizaNetworkPolicy` via the
71
+ * plugin's `installNetworkPolicyGlobal()` side-effect, so the runtime
72
+ * picks it up automatically. When the shim is missing the metered flag
73
+ * falls back to `null` (= unknown), which triggers `ask` per R5 §4.1.
74
+ */
75
+ export declare function capacitorAndroidProbe(): NetworkProbe;
76
+ /**
77
+ * Capacitor iOS probe (R5 §4.2). Connection type from `@capacitor/network`
78
+ * plus iOS `NWPathMonitor.currentPath.isExpensive` via the
79
+ * `@elizaos/capacitor-network-policy` Capacitor plugin at
80
+ * `plugins/plugin-native-network-policy/`. The plugin exposes
81
+ * `(window as any).ElizaNetworkPolicy.getPathHints()`; falls back to
82
+ * `metered: null` when the bridge is missing.
83
+ */
84
+ export declare function capacitorIosProbe(): NetworkProbe;
85
+ /**
86
+ * Electron / desktop probe. Calls into a process-bridge-exposed function
87
+ * (Electrobun: `Bun.napi`/`electrobunNative.networkPolicyProbe`; classic
88
+ * Electron: `electronAPI.networkPolicyProbe`) that wraps the OS call.
89
+ * Returns `unknown` when no bridge is wired (development-mode browser
90
+ * preview), which downgrades to `ask` on `wifi-*` and `auto` on
91
+ * `ethernet-unmetered` per the matrix.
92
+ */
93
+ export declare function electronDesktopProbe(): NetworkProbe;
94
+ /**
95
+ * Pick the active probe based on platform heuristics. Order:
96
+ *
97
+ * 1. `ELIZA_NETWORK_POLICY=headless` (or CI / no-TTY-no-DISPLAY) → headless.
98
+ * 2. Capacitor android bridge present → Android probe.
99
+ * 3. Capacitor iOS bridge present → iOS probe (`process.platform` !==
100
+ * `android` and a `Capacitor` global exists).
101
+ * 4. Desktop bridge present → desktop probe.
102
+ * 5. Otherwise → node-default (returns `unknown`).
103
+ */
104
+ export declare function pickActiveProbe(): NetworkProbe;
105
+ /**
106
+ * High-level: probe + classify + apply prefs in one call. Used by the
107
+ * voice-model updater and by the local-inference download routes.
108
+ */
109
+ export declare function evaluateRuntimePolicy(args: {
110
+ prefs?: NetworkPolicyPreferences;
111
+ estimatedBytes: number;
112
+ probe?: NetworkProbe;
113
+ now?: Date;
114
+ }): Promise<NetworkPolicyDecision>;
115
+ /** Surface for tests: full snapshot of the raw probe result + decision. */
116
+ export declare function describeRuntimeNetwork(args?: {
117
+ prefs?: NetworkPolicyPreferences;
118
+ estimatedBytes?: number;
119
+ probe?: NetworkProbe;
120
+ now?: Date;
121
+ }): Promise<{
122
+ probeId: NetworkProbe["id"];
123
+ state: RawNetworkState;
124
+ class: NetworkClass;
125
+ decision: NetworkPolicyDecision;
126
+ }>;
127
+ //# sourceMappingURL=network-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.d.ts","sourceRoot":"","sources":["../../src/services/network-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAIN,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,EACR,cAAc,GACd,mBAAmB,GACnB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAkB3C;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAKhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAK5B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAkBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAmBhD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,YAAY,CAsBnD;AA2ED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAU9C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IACjD,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,IAAI,CAAC;CACX,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAWjC;AAED,2EAA2E;AAC3E,wBAAsB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IACnD,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,IAAI,CAAC;CACX,GAAG,OAAO,CAAC;IACX,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,qBAAqB,CAAC;CAChC,CAAC,CAaD"}
@@ -0,0 +1,6 @@
1
+ export declare function localInferenceRoot(): string;
2
+ export declare function elizaModelsDir(): string;
3
+ export declare function registryPath(): string;
4
+ export declare function downloadsStagingDir(): string;
5
+ export declare function isWithinElizaRoot(target: string): boolean;
6
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/services/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKzD"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Planner (`PLAN_ACTIONS`) skeleton + GBNF wiring for the local-inference
3
+ * stage.
4
+ *
5
+ * The response-handler stage is already constrained — `shouldRespond` is a
6
+ * three-value enum that the lazy GBNF pins (see
7
+ * `packages/core/src/runtime/builtin-field-evaluators.ts`). The planner
8
+ * stage, however, has historically emitted `PLAN_ACTIONS({...})` calls
9
+ * unconstrained for local backends: the model could hallucinate action
10
+ * names, drop required parameters, or invent free-form parameter values
11
+ * outside the registered enum.
12
+ *
13
+ * This module is the local-inference-side surface for the same guided-decode
14
+ * contract the response handler uses:
15
+ *
16
+ * 1. `buildPlanActionsSkeleton(actions)` — top-level envelope skeleton
17
+ * `{"action": <enum>, "parameters": <free-json>, "thought": <free-string>}`.
18
+ * `action` is pinned to the alternation of registered action names and
19
+ * collapses to a literal when only one action is exposed.
20
+ *
21
+ * 2. `buildPlannerGuidedDecode(actions)` — the full bundle: the skeleton
22
+ * above, the precise GBNF (`@elizaos/core`'s `buildPlannerActionGrammar`
23
+ * emits one that also pins the array-element enum), and per-action
24
+ * `parameters` schemas + sub-skeletons for the engine's optional second
25
+ * pass once `action` is committed.
26
+ *
27
+ * Why this lives in app-core (not core): the helper is meaningful only to
28
+ * the local-inference layer — cloud adapters can satisfy the portable `tools`
29
+ * contract without honoring `responseSkeleton` / `grammar`. Keeping the
30
+ * wrapper here makes the local-only nature explicit at the import site and
31
+ * pins the test surface (`__tests__/planner-grammar.test.ts`) next to the
32
+ * engine that consumes the output.
33
+ *
34
+ * GBNF compiler limitation: `compileSkeletonToGbnf` cannot express
35
+ * per-action parameter discrimination in a single flat skeleton (the spans
36
+ * are positional; there's no anyOf-with-discriminator branch). We therefore
37
+ * fall back to the documented two-pass shape — top-level skeleton pins
38
+ * `action`, the engine drives a second constrained pass against the chosen
39
+ * action's normalized JSON schema. `buildPlannerParamsSkeleton` (re-exported
40
+ * from `@elizaos/core`) provides the per-action sub-skeleton.
41
+ */
42
+ import { type Action, type JSONSchema, type ResponseSkeleton } from "@elizaos/core";
43
+ import { type ElizaHarnessSchema } from "./structured-output";
44
+ /**
45
+ * The minimal shape this module consumes from an `Action`. Accepting the
46
+ * structural pick keeps the helper testable in isolation (no handlers /
47
+ * validators need test doubles).
48
+ */
49
+ export type PlannerAction = Pick<Action, "name" | "parameters" | "allowAdditionalParameters">;
50
+ /**
51
+ * Bundle of the structure-forcing artefacts the local-inference engine needs
52
+ * to constrain a `PLAN_ACTIONS` generation.
53
+ */
54
+ export interface PlannerGuidedDecode {
55
+ /**
56
+ * Top-level skeleton: `{"action": <enum>, "parameters": <free-json>,
57
+ * "thought": <free-string>}`. Compiles to a lazy GBNF via
58
+ * `compileSkeletonToGbnf` — `action` is the alternation of registered
59
+ * action names (or a literal when only one action is exposed).
60
+ */
61
+ responseSkeleton: ResponseSkeleton;
62
+ /**
63
+ * Pre-built GBNF for the top-level envelope. Wins over compiling the
64
+ * skeleton (the explicit grammar carries the same alternation as the
65
+ * skeleton's enum span — they are byte-equivalent — but the explicit
66
+ * grammar is what the cloud-mirroring code path in
67
+ * `@elizaos/core`'s `buildPlannerActionGrammar` already produces).
68
+ */
69
+ grammar: string;
70
+ /**
71
+ * Map of action name → normalized JSON Schema for its `parameters` object.
72
+ * The engine uses this for the optional second constrained pass once
73
+ * `action` is committed. Cloud adapters ignore it; tools carry the
74
+ * equivalent (unforced) contract for them.
75
+ */
76
+ actionSchemas: Record<string, JSONSchema>;
77
+ /**
78
+ * Per-action `parameters` skeleton (single-value enums collapse to
79
+ * literals; multi-value enums stay as enum spans). Keyed by action name.
80
+ * Engines may compile each entry on demand for the second pass.
81
+ */
82
+ paramsSkeletons: Record<string, ResponseSkeleton>;
83
+ /**
84
+ * Eliza harness schema for the top-level envelope — the bundle of
85
+ * skeleton + grammar + derived prefill plan. Pass this on
86
+ * {@link StructuredGenerateParams.elizaSchema} to engage the
87
+ * deterministic-token prefill-plan fast-forward on top of the GBNF
88
+ * constrained decode.
89
+ */
90
+ elizaSchema: ElizaHarnessSchema;
91
+ }
92
+ /**
93
+ * Build the top-level `PLAN_ACTIONS` envelope skeleton from the action set
94
+ * exposed this turn.
95
+ *
96
+ * Shape:
97
+ * `{"action": <enum>, "parameters": <free-json>, "thought": <free-string>}`
98
+ *
99
+ * Returns `null` when no actions are exposed (caller should skip
100
+ * structure-forcing — there is nothing to constrain `action` to).
101
+ *
102
+ * GBNF compiler limitation: `compileSkeletonToGbnf` does not support
103
+ * anyOf-with-discriminator in a single skeleton — the per-action parameter
104
+ * shape cannot be expressed positionally. The engine drives a second
105
+ * constrained pass against {@link PlannerGuidedDecode.actionSchemas} /
106
+ * {@link PlannerGuidedDecode.paramsSkeletons} once `action` is committed.
107
+ */
108
+ export declare function buildPlanActionsSkeleton(actions: ReadonlyArray<PlannerAction>): ResponseSkeleton | null;
109
+ /**
110
+ * Build the full guided-decode bundle for a `PLAN_ACTIONS` generation: the
111
+ * top-level skeleton, the precise GBNF, the per-action parameter schemas,
112
+ * and the per-action `parameters` sub-skeletons.
113
+ *
114
+ * Returns `null` when no actions are exposed.
115
+ */
116
+ export declare function buildPlannerGuidedDecode(actions: ReadonlyArray<PlannerAction>): PlannerGuidedDecode | null;
117
+ /**
118
+ * Convenience: normalize a single action's `parameters` to a core
119
+ * {@link JSONSchema}. Re-exported here so callers staying inside the
120
+ * local-inference module can build per-action constraints without
121
+ * pulling `@elizaos/core/runtime/...`.
122
+ */
123
+ export declare function planActionParameterSchema(action: PlannerAction): JSONSchema;
124
+ //# sourceMappingURL=planner-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-skeleton.d.ts","sourceRoot":"","sources":["../../src/services/planner-skeleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EACN,KAAK,MAAM,EAGX,KAAK,UAAU,EAEf,KAAK,gBAAgB,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,KAAK,kBAAkB,EAEvB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC/B,MAAM,EACN,MAAM,GAAG,YAAY,GAAG,2BAA2B,CACnD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC;;;;;OAKG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD;;;;;;OAMG;IACH,WAAW,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,GACnC,gBAAgB,GAAG,IAAI,CAIzB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,GACnC,mBAAmB,GAAG,IAAI,CAsB5B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAE3E"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Provider registry.
3
+ *
4
+ * Treats every inference source the same way — cloud subscription, cloud
5
+ * API, Eliza-1 local runtime, paired-device bridge, Capacitor on-device
6
+ * — each is a `ProviderDefinition` with an `id`, a human label, a set of
7
+ * supported model slots, and a pluggable `getEnableState()` that inspects
8
+ * whatever underlying gate controls it (API key presence, subscription
9
+ * status, env flag, file on disk).
10
+ *
11
+ * The cloud-provider status readers are intentionally permissive: they
12
+ * report what they can introspect without depending on the specific
13
+ * cloud-plugin internals, and hand off to the existing ProviderSwitcher
14
+ * UI for actual enable/disable via `configureHref`. That avoids the
15
+ * "combined enable matrix is an architectural project" problem by making
16
+ * configuration navigable rather than centralised.
17
+ */
18
+ import type { ProviderEnableState, ProviderId, ProviderMeta, ProviderStatus } from "@elizaos/shared";
19
+ /**
20
+ * Runtime provider descriptor. Extends the UI-safe `ProviderMeta` with a
21
+ * callable `getEnableState()` that inspects env vars, fs, or device-bridge
22
+ * sockets. Server-side only — UI code reads `ProviderMeta` /
23
+ * `ProviderStatus` from `@elizaos/shared` instead.
24
+ */
25
+ export interface ProviderDefinition extends ProviderMeta {
26
+ /**
27
+ * Read the current enable state. For cloud providers we inspect env
28
+ * vars or config fragments; for local we check file presence; for
29
+ * device-bridge we check connected-device count.
30
+ */
31
+ getEnableState(): Promise<ProviderEnableState>;
32
+ }
33
+ export type { ProviderEnableState, ProviderId, ProviderMeta, ProviderStatus };
34
+ /** Resolve which slots have at least one registered handler from this provider. */
35
+ export declare function getRegisteredSlotsForProvider(providerId: string): string[];
36
+ export declare const BUILT_IN_PROVIDERS: readonly ProviderDefinition[];
37
+ export declare function snapshotProviders(): Promise<ProviderStatus[]>;
38
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/services/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EACX,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,MAAM,iBAAiB,CAAC;AAKzB;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACvD;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC/C;AAED,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE9E,mFAAmF;AACnF,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAO1E;AA+UD,eAAO,MAAM,kBAAkB,EAAE,SAAS,kBAAkB,EAoB3D,CAAC;AAgFF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiBnE"}