@elizaos/shared 2.0.0-alpha.538 → 2.0.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (729) hide show
  1. package/api/agent-api-types.d.ts +210 -0
  2. package/api/agent-api-types.d.ts.map +1 -0
  3. package/api/agent-api-types.js +11 -0
  4. package/api/agent-api-types.js.map +1 -0
  5. package/api/http-helpers.d.ts +3 -0
  6. package/api/http-helpers.d.ts.map +1 -0
  7. package/api/http-helpers.js +2 -0
  8. package/api/http-helpers.js.map +1 -0
  9. package/api/route-helpers.d.ts +2 -0
  10. package/api/route-helpers.d.ts.map +1 -0
  11. package/api/route-helpers.js +2 -0
  12. package/api/route-helpers.js.map +1 -0
  13. package/app-hero-art.d.ts.map +1 -1
  14. package/app-hero-art.js +5 -13
  15. package/app-hero-art.js.map +1 -1
  16. package/brand/index.d.ts +130 -0
  17. package/brand/index.d.ts.map +1 -0
  18. package/brand/index.js +126 -0
  19. package/brand/index.js.map +1 -0
  20. package/brand-classic/index.d.ts +158 -0
  21. package/brand-classic/index.d.ts.map +1 -0
  22. package/brand-classic/index.js +91 -0
  23. package/brand-classic/index.js.map +1 -0
  24. package/character-language.d.ts +16 -0
  25. package/character-language.d.ts.map +1 -0
  26. package/character-language.js +58 -0
  27. package/character-language.js.map +1 -0
  28. package/{onboarding-presets.characters.d.ts → character-presets.characters.d.ts} +2 -2
  29. package/character-presets.characters.d.ts.map +1 -0
  30. package/{onboarding-presets.characters.js → character-presets.characters.js} +1 -1
  31. package/character-presets.characters.js.map +1 -0
  32. package/{onboarding-presets.d.ts → character-presets.d.ts} +7 -5
  33. package/character-presets.d.ts.map +1 -0
  34. package/{onboarding-presets.js → character-presets.js} +53 -58
  35. package/character-presets.js.map +1 -0
  36. package/{onboarding-presets.shared.d.ts → character-presets.shared.d.ts} +1 -1
  37. package/character-presets.shared.d.ts.map +1 -0
  38. package/{onboarding-presets.shared.js → character-presets.shared.js} +1 -1
  39. package/character-presets.shared.js.map +1 -0
  40. package/checkout/index.d.ts +48 -0
  41. package/checkout/index.d.ts.map +1 -0
  42. package/checkout/index.js +59 -0
  43. package/checkout/index.js.map +1 -0
  44. package/cli/parse-duration.d.ts +5 -0
  45. package/cli/parse-duration.d.ts.map +1 -0
  46. package/cli/parse-duration.js +26 -0
  47. package/cli/parse-duration.js.map +1 -0
  48. package/config/allowed-hosts.d.ts +8 -0
  49. package/config/allowed-hosts.d.ts.map +1 -0
  50. package/config/allowed-hosts.js +44 -0
  51. package/config/allowed-hosts.js.map +1 -0
  52. package/config/api-key-prefix-hints.d.ts +24 -0
  53. package/config/api-key-prefix-hints.d.ts.map +1 -0
  54. package/config/api-key-prefix-hints.js +26 -0
  55. package/config/api-key-prefix-hints.js.map +1 -0
  56. package/config/app-config.d.ts +274 -0
  57. package/config/app-config.d.ts.map +1 -0
  58. package/config/app-config.js +64 -0
  59. package/config/app-config.js.map +1 -0
  60. package/config/app-manifest.d.ts +75 -0
  61. package/config/app-manifest.d.ts.map +1 -0
  62. package/config/app-manifest.js +115 -0
  63. package/config/app-manifest.js.map +1 -0
  64. package/config/boot-config-store.d.ts +74 -0
  65. package/config/boot-config-store.d.ts.map +1 -0
  66. package/config/boot-config-store.js +121 -0
  67. package/config/boot-config-store.js.map +1 -0
  68. package/config/boot-config.d.ts +6 -0
  69. package/config/boot-config.d.ts.map +1 -0
  70. package/config/boot-config.js +6 -0
  71. package/config/boot-config.js.map +1 -0
  72. package/config/branding.d.ts +53 -0
  73. package/config/branding.d.ts.map +1 -0
  74. package/config/branding.js +23 -0
  75. package/config/branding.js.map +1 -0
  76. package/config/cloud-only.d.ts +8 -0
  77. package/config/cloud-only.d.ts.map +1 -0
  78. package/config/cloud-only.js +26 -0
  79. package/config/cloud-only.js.map +1 -0
  80. package/config/config-catalog.d.ts +371 -0
  81. package/config/config-catalog.d.ts.map +1 -0
  82. package/config/config-catalog.js +719 -0
  83. package/config/config-catalog.js.map +1 -0
  84. package/config/config-paths.d.ts +11 -0
  85. package/config/config-paths.d.ts.map +1 -0
  86. package/config/config-paths.js +74 -0
  87. package/config/config-paths.js.map +1 -0
  88. package/config/config.d.ts +11 -0
  89. package/config/config.d.ts.map +1 -0
  90. package/config/config.js +23 -0
  91. package/config/config.js.map +1 -0
  92. package/config/distribution-profile.d.ts +16 -0
  93. package/config/distribution-profile.d.ts.map +1 -0
  94. package/config/distribution-profile.js +29 -0
  95. package/config/distribution-profile.js.map +1 -0
  96. package/config/env-vars.d.ts +2 -0
  97. package/config/env-vars.d.ts.map +1 -0
  98. package/config/env-vars.js +2 -0
  99. package/config/env-vars.js.map +1 -0
  100. package/config/index.d.ts +12 -0
  101. package/config/index.d.ts.map +1 -0
  102. package/config/index.js +15 -0
  103. package/config/index.js.map +1 -0
  104. package/config/plugin-auto-enable-engine.d.ts +4 -0
  105. package/config/plugin-auto-enable-engine.d.ts.map +1 -0
  106. package/config/plugin-auto-enable-engine.js +45 -0
  107. package/config/plugin-auto-enable-engine.js.map +1 -0
  108. package/config/plugin-auto-enable.d.ts +2 -0
  109. package/config/plugin-auto-enable.d.ts.map +1 -0
  110. package/config/plugin-auto-enable.js +8 -0
  111. package/config/plugin-auto-enable.js.map +1 -0
  112. package/config/plugin-manifest.d.ts +89 -0
  113. package/config/plugin-manifest.d.ts.map +1 -0
  114. package/config/plugin-manifest.js +281 -0
  115. package/config/plugin-manifest.js.map +1 -0
  116. package/config/plugin-ui-spec.d.ts +42 -0
  117. package/config/plugin-ui-spec.d.ts.map +1 -0
  118. package/config/plugin-ui-spec.js +257 -0
  119. package/config/plugin-ui-spec.js.map +1 -0
  120. package/config/runtime-mode.d.ts +54 -0
  121. package/config/runtime-mode.d.ts.map +1 -0
  122. package/config/runtime-mode.js +107 -0
  123. package/config/runtime-mode.js.map +1 -0
  124. package/config/runtime-overrides.d.ts +16 -0
  125. package/config/runtime-overrides.d.ts.map +1 -0
  126. package/config/runtime-overrides.js +49 -0
  127. package/config/runtime-overrides.js.map +1 -0
  128. package/config/schema.d.ts +7 -0
  129. package/config/schema.d.ts.map +1 -0
  130. package/config/schema.js +30 -0
  131. package/config/schema.js.map +1 -0
  132. package/config/types.agent-defaults.d.ts +6 -1
  133. package/config/types.agent-defaults.d.ts.map +1 -1
  134. package/config/types.agents.d.ts +9 -4
  135. package/config/types.agents.d.ts.map +1 -1
  136. package/config/types.eliza.d.ts +27 -49
  137. package/config/types.eliza.d.ts.map +1 -1
  138. package/config/types.messages.d.ts +2 -2
  139. package/config/types.messages.d.ts.map +1 -1
  140. package/config/types.tools.d.ts +2 -2
  141. package/config/types.tools.d.ts.map +1 -1
  142. package/config/ui-spec.d.ts +164 -0
  143. package/config/ui-spec.d.ts.map +1 -0
  144. package/config/ui-spec.js +14 -0
  145. package/config/ui-spec.js.map +1 -0
  146. package/config/wechat-config.d.ts +2 -0
  147. package/config/wechat-config.d.ts.map +1 -0
  148. package/config/wechat-config.js +2 -0
  149. package/config/wechat-config.js.map +1 -0
  150. package/config/zod-schema.agent-runtime.d.ts +1087 -0
  151. package/config/zod-schema.agent-runtime.d.ts.map +1 -0
  152. package/config/zod-schema.agent-runtime.js +764 -0
  153. package/config/zod-schema.agent-runtime.js.map +1 -0
  154. package/config/zod-schema.core.d.ts +1048 -0
  155. package/config/zod-schema.core.d.ts.map +1 -0
  156. package/config/zod-schema.core.js +707 -0
  157. package/config/zod-schema.core.js.map +1 -0
  158. package/connector-cred-types.d.ts +3 -3
  159. package/connector-cred-types.js +4 -4
  160. package/connectors.d.ts +0 -8
  161. package/connectors.d.ts.map +1 -1
  162. package/connectors.js +26 -50
  163. package/connectors.js.map +1 -1
  164. package/contracts/agent-routes.d.ts +63 -0
  165. package/contracts/agent-routes.d.ts.map +1 -0
  166. package/contracts/agent-routes.js +55 -0
  167. package/contracts/agent-routes.js.map +1 -0
  168. package/contracts/app-permissions-routes.d.ts +148 -0
  169. package/contracts/app-permissions-routes.d.ts.map +1 -0
  170. package/contracts/app-permissions-routes.js +96 -0
  171. package/contracts/app-permissions-routes.js.map +1 -0
  172. package/contracts/app-permissions.d.ts +122 -0
  173. package/contracts/app-permissions.d.ts.map +1 -0
  174. package/contracts/app-permissions.js +163 -0
  175. package/contracts/app-permissions.js.map +1 -0
  176. package/contracts/apps-favorites-routes.d.ts +44 -0
  177. package/contracts/apps-favorites-routes.d.ts.map +1 -0
  178. package/contracts/apps-favorites-routes.js +48 -0
  179. package/contracts/apps-favorites-routes.js.map +1 -0
  180. package/contracts/apps-lifecycle-routes.d.ts +185 -0
  181. package/contracts/apps-lifecycle-routes.d.ts.map +1 -0
  182. package/contracts/apps-lifecycle-routes.js +204 -0
  183. package/contracts/apps-lifecycle-routes.js.map +1 -0
  184. package/contracts/apps-loading-routes.d.ts +64 -0
  185. package/contracts/apps-loading-routes.d.ts.map +1 -0
  186. package/contracts/apps-loading-routes.js +65 -0
  187. package/contracts/apps-loading-routes.js.map +1 -0
  188. package/contracts/apps-runs-routes.d.ts +33 -0
  189. package/contracts/apps-runs-routes.d.ts.map +1 -0
  190. package/contracts/apps-runs-routes.js +38 -0
  191. package/contracts/apps-runs-routes.js.map +1 -0
  192. package/contracts/apps.d.ts +883 -3
  193. package/contracts/apps.d.ts.map +1 -1
  194. package/contracts/apps.js +278 -40
  195. package/contracts/apps.js.map +1 -1
  196. package/contracts/auth-routes.d.ts +23 -0
  197. package/contracts/auth-routes.d.ts.map +1 -0
  198. package/contracts/auth-routes.js +25 -0
  199. package/contracts/auth-routes.js.map +1 -0
  200. package/contracts/awareness.d.ts +1 -1
  201. package/contracts/calendar.d.ts +181 -0
  202. package/contracts/calendar.d.ts.map +1 -0
  203. package/contracts/calendar.js +19 -0
  204. package/contracts/calendar.js.map +1 -0
  205. package/contracts/character-routes.d.ts +70 -0
  206. package/contracts/character-routes.d.ts.map +1 -0
  207. package/contracts/character-routes.js +49 -0
  208. package/contracts/character-routes.js.map +1 -0
  209. package/contracts/cloud-coding-containers.d.ts +432 -0
  210. package/contracts/cloud-coding-containers.d.ts.map +1 -0
  211. package/contracts/cloud-coding-containers.js +135 -0
  212. package/contracts/cloud-coding-containers.js.map +1 -0
  213. package/contracts/cloud-topology.js +7 -7
  214. package/contracts/cloud-topology.js.map +1 -1
  215. package/contracts/config.d.ts +52 -4
  216. package/contracts/config.d.ts.map +1 -1
  217. package/contracts/connector-routes.d.ts +39 -0
  218. package/contracts/connector-routes.d.ts.map +1 -0
  219. package/contracts/connector-routes.js +50 -0
  220. package/contracts/connector-routes.js.map +1 -0
  221. package/contracts/content-pack.d.ts +2 -2
  222. package/contracts/content-pack.d.ts.map +1 -1
  223. package/contracts/content-pack.js +1 -1
  224. package/contracts/conversation-routes.d.ts +195 -0
  225. package/contracts/conversation-routes.d.ts.map +1 -0
  226. package/contracts/conversation-routes.js +107 -0
  227. package/contracts/conversation-routes.js.map +1 -0
  228. package/contracts/diagnostics-routes.d.ts +33 -0
  229. package/contracts/diagnostics-routes.d.ts.map +1 -0
  230. package/contracts/diagnostics-routes.js +26 -0
  231. package/contracts/diagnostics-routes.js.map +1 -0
  232. package/contracts/feature-result.d.ts +24 -0
  233. package/contracts/feature-result.d.ts.map +1 -0
  234. package/contracts/feature-result.js +7 -0
  235. package/contracts/feature-result.js.map +1 -0
  236. package/contracts/{onboarding.d.ts → first-run-options.d.ts} +172 -69
  237. package/contracts/first-run-options.d.ts.map +1 -0
  238. package/contracts/{onboarding.js → first-run-options.js} +222 -91
  239. package/contracts/first-run-options.js.map +1 -0
  240. package/contracts/first-run-routes.d.ts +167 -0
  241. package/contracts/first-run-routes.d.ts.map +1 -0
  242. package/contracts/first-run-routes.js +115 -0
  243. package/contracts/first-run-routes.js.map +1 -0
  244. package/contracts/health.d.ts +30 -0
  245. package/contracts/health.d.ts.map +1 -0
  246. package/contracts/health.js +29 -0
  247. package/contracts/health.js.map +1 -0
  248. package/contracts/inbox-routes.d.ts +37 -0
  249. package/contracts/inbox-routes.d.ts.map +1 -0
  250. package/contracts/inbox-routes.js +44 -0
  251. package/contracts/inbox-routes.js.map +1 -0
  252. package/contracts/index.d.ts +30 -3
  253. package/contracts/index.d.ts.map +1 -1
  254. package/contracts/index.js +30 -3
  255. package/contracts/index.js.map +1 -1
  256. package/contracts/memory-routes.d.ts +27 -0
  257. package/contracts/memory-routes.d.ts.map +1 -0
  258. package/contracts/memory-routes.js +23 -0
  259. package/contracts/memory-routes.js.map +1 -0
  260. package/contracts/misc-routes.d.ts +192 -0
  261. package/contracts/misc-routes.d.ts.map +1 -0
  262. package/contracts/misc-routes.js +155 -0
  263. package/contracts/misc-routes.js.map +1 -0
  264. package/contracts/permissions-routes.d.ts +31 -0
  265. package/contracts/permissions-routes.d.ts.map +1 -0
  266. package/contracts/permissions-routes.js +34 -0
  267. package/contracts/permissions-routes.js.map +1 -0
  268. package/contracts/permissions.d.ts +81 -11
  269. package/contracts/permissions.d.ts.map +1 -1
  270. package/contracts/permissions.js +37 -1
  271. package/contracts/permissions.js.map +1 -1
  272. package/contracts/{lifeops.d.ts → personal-assistant.d.ts} +368 -170
  273. package/contracts/personal-assistant.d.ts.map +1 -0
  274. package/contracts/{lifeops.js → personal-assistant.js} +39 -13
  275. package/contracts/personal-assistant.js.map +1 -0
  276. package/contracts/plugin-routes.d.ts +105 -0
  277. package/contracts/plugin-routes.d.ts.map +1 -0
  278. package/contracts/plugin-routes.js +81 -0
  279. package/contracts/plugin-routes.js.map +1 -0
  280. package/contracts/relationships-routes.d.ts +23 -0
  281. package/contracts/relationships-routes.d.ts.map +1 -0
  282. package/contracts/relationships-routes.js +22 -0
  283. package/contracts/relationships-routes.js.map +1 -0
  284. package/contracts/service-routing.d.ts +7 -121
  285. package/contracts/service-routing.d.ts.map +1 -1
  286. package/contracts/service-routing.js +19 -12
  287. package/contracts/service-routing.js.map +1 -1
  288. package/contracts/skills-routes.d.ts +116 -0
  289. package/contracts/skills-routes.d.ts.map +1 -0
  290. package/contracts/skills-routes.js +115 -0
  291. package/contracts/skills-routes.js.map +1 -0
  292. package/contracts/subscription-routes.d.ts +47 -0
  293. package/contracts/subscription-routes.d.ts.map +1 -0
  294. package/contracts/subscription-routes.js +50 -0
  295. package/contracts/subscription-routes.js.map +1 -0
  296. package/contracts/tail-routes.d.ts +78 -0
  297. package/contracts/tail-routes.d.ts.map +1 -0
  298. package/contracts/tail-routes.js +63 -0
  299. package/contracts/tail-routes.js.map +1 -0
  300. package/contracts/theme.d.ts +0 -2
  301. package/contracts/theme.d.ts.map +1 -1
  302. package/contracts/theme.js +0 -2
  303. package/contracts/theme.js.map +1 -1
  304. package/contracts/update-status.d.ts +100 -0
  305. package/contracts/update-status.d.ts.map +1 -0
  306. package/contracts/update-status.js +45 -0
  307. package/contracts/update-status.js.map +1 -0
  308. package/contracts/wallet-routes.d.ts +82 -0
  309. package/contracts/wallet-routes.d.ts.map +1 -0
  310. package/contracts/wallet-routes.js +49 -0
  311. package/contracts/wallet-routes.js.map +1 -0
  312. package/contracts/wallet.d.ts +12 -570
  313. package/contracts/wallet.d.ts.map +1 -1
  314. package/contracts/wallet.js +139 -0
  315. package/contracts/wallet.js.map +1 -1
  316. package/contracts/workbench-routes.d.ts +231 -0
  317. package/contracts/workbench-routes.d.ts.map +1 -0
  318. package/contracts/workbench-routes.js +183 -0
  319. package/contracts/workbench-routes.js.map +1 -0
  320. package/db/drizzle-database.d.ts +13 -0
  321. package/db/drizzle-database.d.ts.map +1 -0
  322. package/db/drizzle-database.js +2 -0
  323. package/db/drizzle-database.js.map +1 -0
  324. package/dev-settings-banner-style.d.ts +1 -1
  325. package/dev-settings-banner-style.js +2 -2
  326. package/dev-settings-banner-style.js.map +1 -1
  327. package/dev-settings-figlet-heading.d.ts.map +1 -1
  328. package/dev-settings-figlet-heading.js +1 -8
  329. package/dev-settings-figlet-heading.js.map +1 -1
  330. package/elizacloud/base-url.d.ts +6 -0
  331. package/elizacloud/base-url.d.ts.map +1 -0
  332. package/elizacloud/base-url.js +65 -0
  333. package/elizacloud/base-url.js.map +1 -0
  334. package/elizacloud/cloud-provisioning.d.ts +9 -0
  335. package/elizacloud/cloud-provisioning.d.ts.map +1 -0
  336. package/elizacloud/cloud-provisioning.js +25 -0
  337. package/elizacloud/cloud-provisioning.js.map +1 -0
  338. package/elizacloud/cloud-secrets.d.ts +23 -0
  339. package/elizacloud/cloud-secrets.d.ts.map +1 -0
  340. package/elizacloud/cloud-secrets.js +51 -0
  341. package/elizacloud/cloud-secrets.js.map +1 -0
  342. package/elizacloud/index.d.ts +6 -0
  343. package/elizacloud/index.d.ts.map +1 -0
  344. package/elizacloud/index.js +6 -0
  345. package/elizacloud/index.js.map +1 -0
  346. package/elizacloud/is-cloud-reachable.d.ts +19 -0
  347. package/elizacloud/is-cloud-reachable.d.ts.map +1 -0
  348. package/elizacloud/is-cloud-reachable.js +44 -0
  349. package/elizacloud/is-cloud-reachable.js.map +1 -0
  350. package/elizacloud/server-cloud-tts.d.ts +21 -0
  351. package/elizacloud/server-cloud-tts.d.ts.map +1 -0
  352. package/elizacloud/server-cloud-tts.js +293 -0
  353. package/elizacloud/server-cloud-tts.js.map +1 -0
  354. package/email-classification/email-classifier.d.ts +57 -0
  355. package/email-classification/email-classifier.d.ts.map +1 -0
  356. package/email-classification/email-classifier.js +348 -0
  357. package/email-classification/email-classifier.js.map +1 -0
  358. package/email-classification/index.d.ts +12 -0
  359. package/email-classification/index.d.ts.map +1 -0
  360. package/email-classification/index.js +12 -0
  361. package/email-classification/index.js.map +1 -0
  362. package/email-classification/wrap-untrusted-email-content.d.ts +15 -0
  363. package/email-classification/wrap-untrusted-email-content.d.ts.map +1 -0
  364. package/email-classification/wrap-untrusted-email-content.js +24 -0
  365. package/email-classification/wrap-untrusted-email-content.js.map +1 -0
  366. package/env-utils.d.ts +1 -4
  367. package/env-utils.d.ts.map +1 -1
  368. package/env-utils.js +9 -1
  369. package/env-utils.js.map +1 -1
  370. package/events/index.d.ts +68 -0
  371. package/events/index.d.ts.map +1 -0
  372. package/events/index.js +53 -0
  373. package/events/index.js.map +1 -0
  374. package/hardware-catalog/index.d.ts +204 -0
  375. package/hardware-catalog/index.d.ts.map +1 -0
  376. package/hardware-catalog/index.js +174 -0
  377. package/hardware-catalog/index.js.map +1 -0
  378. package/i18n/generated/validation-keyword-data.d.ts +2711 -748
  379. package/i18n/generated/validation-keyword-data.d.ts.map +1 -1
  380. package/i18n/generated/validation-keyword-data.js +2711 -748
  381. package/i18n/generated/validation-keyword-data.js.map +1 -1
  382. package/i18n/keyword-matching.d.ts.map +1 -1
  383. package/i18n/keyword-matching.js +4 -1
  384. package/i18n/keyword-matching.js.map +1 -1
  385. package/index.d.ts +82 -7
  386. package/index.d.ts.map +1 -1
  387. package/index.js +109 -13
  388. package/index.js.map +1 -1
  389. package/knowledge-graph/entity-types.d.ts +135 -0
  390. package/knowledge-graph/entity-types.d.ts.map +1 -0
  391. package/knowledge-graph/entity-types.js +75 -0
  392. package/knowledge-graph/entity-types.js.map +1 -0
  393. package/knowledge-graph/index.d.ts +13 -0
  394. package/knowledge-graph/index.d.ts.map +1 -0
  395. package/knowledge-graph/index.js +13 -0
  396. package/knowledge-graph/index.js.map +1 -0
  397. package/knowledge-graph/merge.d.ts +76 -0
  398. package/knowledge-graph/merge.d.ts.map +1 -0
  399. package/knowledge-graph/merge.js +175 -0
  400. package/knowledge-graph/merge.js.map +1 -0
  401. package/knowledge-graph/relationship-types.d.ts +105 -0
  402. package/knowledge-graph/relationship-types.d.ts.map +1 -0
  403. package/knowledge-graph/relationship-types.js +114 -0
  404. package/knowledge-graph/relationship-types.js.map +1 -0
  405. package/lifeops-constants/index.d.ts +9 -0
  406. package/lifeops-constants/index.d.ts.map +1 -0
  407. package/lifeops-constants/index.js +9 -0
  408. package/lifeops-constants/index.js.map +1 -0
  409. package/lifeops-constants/service-constants.d.ts +79 -0
  410. package/lifeops-constants/service-constants.d.ts.map +1 -0
  411. package/lifeops-constants/service-constants.js +123 -0
  412. package/lifeops-constants/service-constants.js.map +1 -0
  413. package/lifeops-normalize/index.d.ts +12 -0
  414. package/lifeops-normalize/index.d.ts.map +1 -0
  415. package/lifeops-normalize/index.js +12 -0
  416. package/lifeops-normalize/index.js.map +1 -0
  417. package/lifeops-normalize/service-error.d.ts +14 -0
  418. package/lifeops-normalize/service-error.d.ts.map +1 -0
  419. package/lifeops-normalize/service-error.js +19 -0
  420. package/lifeops-normalize/service-error.js.map +1 -0
  421. package/lifeops-normalize/service-normalize.d.ts +38 -0
  422. package/lifeops-normalize/service-normalize.d.ts.map +1 -0
  423. package/lifeops-normalize/service-normalize.js +205 -0
  424. package/lifeops-normalize/service-normalize.js.map +1 -0
  425. package/lifeops-normalize/time-zone.d.ts +12 -0
  426. package/lifeops-normalize/time-zone.d.ts.map +1 -0
  427. package/lifeops-normalize/time-zone.js +29 -0
  428. package/lifeops-normalize/time-zone.js.map +1 -0
  429. package/local-inference/catalog.d.ts +97 -0
  430. package/local-inference/catalog.d.ts.map +1 -0
  431. package/local-inference/catalog.js +510 -0
  432. package/local-inference/catalog.js.map +1 -0
  433. package/local-inference/gpu-profiles.d.ts +110 -0
  434. package/local-inference/gpu-profiles.d.ts.map +1 -0
  435. package/local-inference/gpu-profiles.js +191 -0
  436. package/local-inference/gpu-profiles.js.map +1 -0
  437. package/local-inference/index.d.ts +21 -0
  438. package/local-inference/index.d.ts.map +1 -0
  439. package/local-inference/index.js +18 -0
  440. package/local-inference/index.js.map +1 -0
  441. package/local-inference/manifest-signature.d.ts +61 -0
  442. package/local-inference/manifest-signature.d.ts.map +1 -0
  443. package/local-inference/manifest-signature.js +129 -0
  444. package/local-inference/manifest-signature.js.map +1 -0
  445. package/local-inference/network-policy.d.ts +115 -0
  446. package/local-inference/network-policy.d.ts.map +1 -0
  447. package/local-inference/network-policy.js +154 -0
  448. package/local-inference/network-policy.js.map +1 -0
  449. package/local-inference/paths.d.ts +24 -0
  450. package/local-inference/paths.d.ts.map +1 -0
  451. package/local-inference/paths.js +40 -0
  452. package/local-inference/paths.js.map +1 -0
  453. package/local-inference/providers-types.d.ts +56 -0
  454. package/local-inference/providers-types.d.ts.map +1 -0
  455. package/local-inference/providers-types.js +19 -0
  456. package/local-inference/providers-types.js.map +1 -0
  457. package/local-inference/routing-preferences.d.ts +38 -0
  458. package/local-inference/routing-preferences.d.ts.map +1 -0
  459. package/local-inference/routing-preferences.js +90 -0
  460. package/local-inference/routing-preferences.js.map +1 -0
  461. package/local-inference/throughput.d.ts +74 -0
  462. package/local-inference/throughput.d.ts.map +1 -0
  463. package/local-inference/throughput.js +84 -0
  464. package/local-inference/throughput.js.map +1 -0
  465. package/local-inference/types.d.ts +510 -0
  466. package/local-inference/types.d.ts.map +1 -0
  467. package/local-inference/types.js +22 -0
  468. package/local-inference/types.js.map +1 -0
  469. package/local-inference/verify.d.ts +39 -0
  470. package/local-inference/verify.d.ts.map +1 -0
  471. package/local-inference/verify.js +105 -0
  472. package/local-inference/verify.js.map +1 -0
  473. package/local-inference/voice-models.d.ts +156 -0
  474. package/local-inference/voice-models.d.ts.map +1 -0
  475. package/local-inference/voice-models.js +746 -0
  476. package/local-inference/voice-models.js.map +1 -0
  477. package/local-inference-gpu/gpu-overrides.d.ts +97 -0
  478. package/local-inference-gpu/gpu-overrides.d.ts.map +1 -0
  479. package/local-inference-gpu/gpu-overrides.js +76 -0
  480. package/local-inference-gpu/gpu-overrides.js.map +1 -0
  481. package/local-inference-gpu/gpu-profile-loader.d.ts +83 -0
  482. package/local-inference-gpu/gpu-profile-loader.d.ts.map +1 -0
  483. package/local-inference-gpu/gpu-profile-loader.js +196 -0
  484. package/local-inference-gpu/gpu-profile-loader.js.map +1 -0
  485. package/local-inference-gpu/gpu-profile-schema.d.ts +208 -0
  486. package/local-inference-gpu/gpu-profile-schema.d.ts.map +1 -0
  487. package/local-inference-gpu/gpu-profile-schema.js +123 -0
  488. package/local-inference-gpu/gpu-profile-schema.js.map +1 -0
  489. package/local-inference-gpu/gpu-tier-detect.d.ts +61 -0
  490. package/local-inference-gpu/gpu-tier-detect.d.ts.map +1 -0
  491. package/local-inference-gpu/gpu-tier-detect.js +93 -0
  492. package/local-inference-gpu/gpu-tier-detect.js.map +1 -0
  493. package/local-inference-gpu/gpu-tier-profiles.d.ts +110 -0
  494. package/local-inference-gpu/gpu-tier-profiles.d.ts.map +1 -0
  495. package/local-inference-gpu/gpu-tier-profiles.js +235 -0
  496. package/local-inference-gpu/gpu-tier-profiles.js.map +1 -0
  497. package/package.json +111 -160
  498. package/platform/is-native-server.d.ts +9 -0
  499. package/platform/is-native-server.d.ts.map +1 -0
  500. package/platform/is-native-server.js +12 -0
  501. package/platform/is-native-server.js.map +1 -0
  502. package/restart.d.ts +2 -1
  503. package/restart.d.ts.map +1 -1
  504. package/restart.js +3 -2
  505. package/restart.js.map +1 -1
  506. package/runtime-env.d.ts +2 -2
  507. package/runtime-env.d.ts.map +1 -1
  508. package/runtime-env.js +15 -7
  509. package/runtime-env.js.map +1 -1
  510. package/self-edit.d.ts +4 -4
  511. package/self-edit.d.ts.map +1 -1
  512. package/self-edit.js +5 -5
  513. package/self-edit.js.map +1 -1
  514. package/settings-debug.d.ts.map +1 -1
  515. package/settings-debug.js +45 -38
  516. package/settings-debug.js.map +1 -1
  517. package/spoken-text.d.ts.map +1 -1
  518. package/spoken-text.js +3 -2
  519. package/spoken-text.js.map +1 -1
  520. package/steward-session-client/index.d.ts +172 -0
  521. package/steward-session-client/index.d.ts.map +1 -0
  522. package/steward-session-client/index.js +248 -0
  523. package/steward-session-client/index.js.map +1 -0
  524. package/steward-session-client/steward-oauth-pkce.d.ts +24 -0
  525. package/steward-session-client/steward-oauth-pkce.d.ts.map +1 -0
  526. package/steward-session-client/steward-oauth-pkce.js +105 -0
  527. package/steward-session-client/steward-oauth-pkce.js.map +1 -0
  528. package/terminal/links.d.ts +9 -0
  529. package/terminal/links.d.ts.map +1 -0
  530. package/terminal/links.js +21 -0
  531. package/terminal/links.js.map +1 -0
  532. package/terminal/palette.d.ts +11 -0
  533. package/terminal/palette.d.ts.map +1 -0
  534. package/terminal/palette.js +13 -0
  535. package/terminal/palette.js.map +1 -0
  536. package/terminal/theme.d.ts +17 -0
  537. package/terminal/theme.d.ts.map +1 -0
  538. package/terminal/theme.js +25 -0
  539. package/terminal/theme.js.map +1 -0
  540. package/test-support/process-helpers.d.ts +13 -0
  541. package/test-support/process-helpers.d.ts.map +1 -0
  542. package/test-support/process-helpers.js +24 -0
  543. package/test-support/process-helpers.js.map +1 -0
  544. package/test-support/test-helpers.d.ts +79 -0
  545. package/test-support/test-helpers.d.ts.map +1 -0
  546. package/test-support/test-helpers.js +341 -0
  547. package/test-support/test-helpers.js.map +1 -0
  548. package/transcripts.d.ts +139 -0
  549. package/transcripts.d.ts.map +1 -0
  550. package/transcripts.js +162 -0
  551. package/transcripts.js.map +1 -0
  552. package/type-guards.d.ts +1 -23
  553. package/type-guards.d.ts.map +1 -1
  554. package/type-guards.js +6 -23
  555. package/type-guards.js.map +1 -1
  556. package/types/index.d.ts +654 -0
  557. package/types/index.d.ts.map +1 -0
  558. package/types/index.js +5 -0
  559. package/types/index.js.map +1 -0
  560. package/utils/asset-url.d.ts +24 -0
  561. package/utils/asset-url.d.ts.map +1 -0
  562. package/utils/asset-url.js +151 -0
  563. package/utils/asset-url.js.map +1 -0
  564. package/utils/assistant-text.d.ts +13 -0
  565. package/utils/assistant-text.d.ts.map +1 -0
  566. package/utils/assistant-text.js +292 -0
  567. package/utils/assistant-text.js.map +1 -0
  568. package/utils/browser-tab-kit-types.d.ts +81 -0
  569. package/utils/browser-tab-kit-types.d.ts.map +1 -0
  570. package/utils/browser-tab-kit-types.js +23 -0
  571. package/utils/browser-tab-kit-types.js.map +1 -0
  572. package/utils/browser-tabs-renderer-registry.d.ts +56 -0
  573. package/utils/browser-tabs-renderer-registry.d.ts.map +1 -0
  574. package/utils/browser-tabs-renderer-registry.js +1282 -0
  575. package/utils/browser-tabs-renderer-registry.js.map +1 -0
  576. package/utils/character-message-examples.d.ts +7 -0
  577. package/utils/character-message-examples.d.ts.map +1 -0
  578. package/utils/character-message-examples.js +123 -0
  579. package/utils/character-message-examples.js.map +1 -0
  580. package/utils/cloud-status.d.ts +3 -0
  581. package/utils/cloud-status.d.ts.map +1 -0
  582. package/utils/cloud-status.js +11 -0
  583. package/utils/cloud-status.js.map +1 -0
  584. package/utils/documents-upload-image.d.ts +27 -0
  585. package/utils/documents-upload-image.d.ts.map +1 -0
  586. package/utils/documents-upload-image.js +147 -0
  587. package/utils/documents-upload-image.js.map +1 -0
  588. package/utils/eliza-cloud-model-route.d.ts +3 -0
  589. package/utils/eliza-cloud-model-route.d.ts.map +1 -0
  590. package/utils/eliza-cloud-model-route.js +10 -0
  591. package/utils/eliza-cloud-model-route.js.map +1 -0
  592. package/utils/eliza-globals.d.ts +13 -0
  593. package/utils/eliza-globals.d.ts.map +1 -0
  594. package/utils/eliza-globals.js +49 -0
  595. package/utils/eliza-globals.js.map +1 -0
  596. package/utils/eliza-root.d.ts +9 -0
  597. package/utils/eliza-root.d.ts.map +1 -0
  598. package/utils/eliza-root.js +102 -0
  599. package/utils/eliza-root.js.map +1 -0
  600. package/utils/env.d.ts +34 -0
  601. package/utils/env.d.ts.map +1 -0
  602. package/utils/env.js +142 -0
  603. package/utils/env.js.map +1 -0
  604. package/utils/errors.d.ts +13 -0
  605. package/utils/errors.d.ts.map +1 -0
  606. package/utils/errors.js +26 -0
  607. package/utils/errors.js.map +1 -0
  608. package/utils/exec-safety.d.ts +2 -0
  609. package/utils/exec-safety.d.ts.map +1 -0
  610. package/utils/exec-safety.js +25 -0
  611. package/utils/exec-safety.js.map +1 -0
  612. package/utils/format.d.ts +85 -0
  613. package/utils/format.d.ts.map +1 -0
  614. package/utils/format.js +140 -0
  615. package/utils/format.js.map +1 -0
  616. package/utils/labels.d.ts +6 -0
  617. package/utils/labels.d.ts.map +1 -0
  618. package/utils/labels.js +42 -0
  619. package/utils/labels.js.map +1 -0
  620. package/utils/log-prefix.d.ts +2 -0
  621. package/utils/log-prefix.d.ts.map +1 -0
  622. package/utils/log-prefix.js +44 -0
  623. package/utils/log-prefix.js.map +1 -0
  624. package/utils/name-tokens.d.ts +24 -0
  625. package/utils/name-tokens.d.ts.map +1 -0
  626. package/utils/name-tokens.js +37 -0
  627. package/utils/name-tokens.js.map +1 -0
  628. package/utils/namespace-defaults.d.ts +10 -0
  629. package/utils/namespace-defaults.d.ts.map +1 -0
  630. package/utils/namespace-defaults.js +17 -0
  631. package/utils/namespace-defaults.js.map +1 -0
  632. package/utils/number-parsing.d.ts +26 -0
  633. package/utils/number-parsing.d.ts.map +1 -0
  634. package/utils/number-parsing.js +57 -0
  635. package/utils/number-parsing.js.map +1 -0
  636. package/utils/owner-name.d.ts +3 -0
  637. package/utils/owner-name.d.ts.map +1 -0
  638. package/utils/owner-name.js +8 -0
  639. package/utils/owner-name.js.map +1 -0
  640. package/utils/permission-deep-links.d.ts +35 -0
  641. package/utils/permission-deep-links.d.ts.map +1 -0
  642. package/utils/permission-deep-links.js +95 -0
  643. package/utils/permission-deep-links.js.map +1 -0
  644. package/utils/rate-limiter.d.ts +32 -0
  645. package/utils/rate-limiter.d.ts.map +1 -0
  646. package/utils/rate-limiter.js +53 -0
  647. package/utils/rate-limiter.js.map +1 -0
  648. package/utils/serialise.d.ts +12 -0
  649. package/utils/serialise.d.ts.map +1 -0
  650. package/utils/serialise.js +22 -0
  651. package/utils/serialise.js.map +1 -0
  652. package/utils/sql-compat.d.ts +10 -0
  653. package/utils/sql-compat.d.ts.map +1 -0
  654. package/utils/sql-compat.js +112 -0
  655. package/utils/sql-compat.js.map +1 -0
  656. package/utils/streaming-text.d.ts +9 -0
  657. package/utils/streaming-text.d.ts.map +1 -0
  658. package/utils/streaming-text.js +116 -0
  659. package/utils/streaming-text.js.map +1 -0
  660. package/utils/subscription-auth.d.ts +9 -0
  661. package/utils/subscription-auth.d.ts.map +1 -0
  662. package/utils/subscription-auth.js +49 -0
  663. package/utils/subscription-auth.js.map +1 -0
  664. package/utils/trajectory-format.d.ts +6 -0
  665. package/utils/trajectory-format.d.ts.map +1 -0
  666. package/utils/trajectory-format.js +44 -0
  667. package/utils/trajectory-format.js.map +1 -0
  668. package/utils/tts-debug.d.ts +10 -0
  669. package/utils/tts-debug.d.ts.map +1 -0
  670. package/utils/tts-debug.js +73 -0
  671. package/utils/tts-debug.js.map +1 -0
  672. package/view-hero-art.d.ts +75 -0
  673. package/view-hero-art.d.ts.map +1 -0
  674. package/view-hero-art.js +360 -0
  675. package/view-hero-art.js.map +1 -0
  676. package/voice/first-sentence-snip.d.ts +68 -0
  677. package/voice/first-sentence-snip.d.ts.map +1 -0
  678. package/voice/first-sentence-snip.js +284 -0
  679. package/voice/first-sentence-snip.js.map +1 -0
  680. package/voice/voice-cancellation-token.d.ts +127 -0
  681. package/voice/voice-cancellation-token.d.ts.map +1 -0
  682. package/voice/voice-cancellation-token.js +186 -0
  683. package/voice/voice-cancellation-token.js.map +1 -0
  684. package/voice-wer.d.ts +19 -0
  685. package/voice-wer.d.ts.map +1 -0
  686. package/voice-wer.js +42 -0
  687. package/voice-wer.js.map +1 -0
  688. package/voice.d.ts +55 -0
  689. package/voice.d.ts.map +1 -0
  690. package/voice.js +337 -0
  691. package/voice.js.map +1 -0
  692. package/contracts/lifeops-extensions.d.ts +0 -340
  693. package/contracts/lifeops-extensions.d.ts.map +0 -1
  694. package/contracts/lifeops-extensions.js +0 -37
  695. package/contracts/lifeops-extensions.js.map +0 -1
  696. package/contracts/lifeops.d.ts.map +0 -1
  697. package/contracts/lifeops.js.map +0 -1
  698. package/contracts/onboarding.d.ts.map +0 -1
  699. package/contracts/onboarding.js.map +0 -1
  700. package/contracts/scratchpad.d.ts +0 -136
  701. package/contracts/scratchpad.d.ts.map +0 -1
  702. package/contracts/scratchpad.js +0 -91
  703. package/contracts/scratchpad.js.map +0 -1
  704. package/eliza-core-roles.d.ts +0 -79
  705. package/eliza-core-roles.d.ts.map +0 -1
  706. package/eliza-core-roles.js +0 -600
  707. package/eliza-core-roles.js.map +0 -1
  708. package/env-utils.impl.d.ts +0 -2
  709. package/env-utils.impl.d.ts.map +0 -1
  710. package/env-utils.impl.js +0 -10
  711. package/env-utils.impl.js.map +0 -1
  712. package/onboarding-presets.characters.d.ts.map +0 -1
  713. package/onboarding-presets.characters.js.map +0 -1
  714. package/onboarding-presets.d.ts.map +0 -1
  715. package/onboarding-presets.js.map +0 -1
  716. package/onboarding-presets.shared.d.ts.map +0 -1
  717. package/onboarding-presets.shared.js.map +0 -1
  718. package/themes/index.d.ts +0 -7
  719. package/themes/index.d.ts.map +0 -1
  720. package/themes/index.js +0 -6
  721. package/themes/index.js.map +0 -1
  722. package/themes/presets.d.ts +0 -15
  723. package/themes/presets.d.ts.map +0 -1
  724. package/themes/presets.js +0 -789
  725. package/themes/presets.js.map +0 -1
  726. package/types.d.ts +0 -27
  727. package/types.d.ts.map +0 -1
  728. package/types.js +0 -2
  729. package/types.js.map +0 -1
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Network-policy bridge — used by the voice-model auto-updater and the
3
+ * model downloader to decide whether a multi-GB pull is allowed to proceed
4
+ * without prompting the user.
5
+ *
6
+ * Per R5-versioning §4 (per-platform download policy):
7
+ *
8
+ * - Android: `NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)`.
9
+ * Android explicitly warns against equating cellular = metered (a user
10
+ * can have unmetered cellular, or a metered Wi-Fi hotspot), so the
11
+ * metered flag is mandatory, not derived from connection type.
12
+ * - iOS: `NWPathMonitor.path.isExpensive` — Apple's "treat as metered" flag.
13
+ * - Desktop (Electron/Electrobun): WinRT `NetworkCostType`, NetworkManager
14
+ * dbus `ActiveConnection.Metered`, or macOS `NWPathMonitor` via the
15
+ * native bridge.
16
+ * - Headless server / CLI: skip auto-update entirely; explicit
17
+ * `eliza models update` only.
18
+ *
19
+ * The actual platform shims are wired in `plugin-local-inference`'s
20
+ * `services/network-policy.ts`. This module defines the platform-agnostic
21
+ * decision contract and ships a pure `evaluateNetworkPolicy` that lets
22
+ * higher-level code unit-test the decision rule without a runtime.
23
+ */
24
+ export const DEFAULT_NETWORK_POLICY_PREFERENCES = {
25
+ autoUpdateOnWifi: true,
26
+ autoUpdateOnCellular: false,
27
+ autoUpdateOnMetered: false,
28
+ quietHours: [{ start: "22:00", end: "08:00" }],
29
+ };
30
+ /** Classify the raw state into one of the five canonical classes. */
31
+ export function classifyNetwork(state) {
32
+ if (state.connectionType === "none")
33
+ return "unknown";
34
+ if (state.connectionType === "cellular")
35
+ return "cellular";
36
+ if (state.connectionType === "wifi") {
37
+ if (state.metered === true)
38
+ return "wifi-metered";
39
+ if (state.metered === false)
40
+ return "wifi-unmetered";
41
+ return "unknown";
42
+ }
43
+ if (state.connectionType === "ethernet") {
44
+ if (state.metered === true)
45
+ return "ethernet-metered";
46
+ if (state.metered === false)
47
+ return "ethernet-unmetered";
48
+ return "unknown";
49
+ }
50
+ return "unknown";
51
+ }
52
+ /**
53
+ * Apply the user prefs + estimated transfer size to a classified network
54
+ * state. The decision rule:
55
+ *
56
+ * - cellular: ask unless `autoUpdateOnCellular === true`.
57
+ * - any `*-metered`: ask unless `autoUpdateOnMetered === true`.
58
+ * - `wifi-unmetered`: auto if `autoUpdateOnWifi === true`, else ask.
59
+ * - `ethernet-unmetered`: always auto (desktop wired link).
60
+ * - `unknown`: ask (mobile default; desktop callers can override).
61
+ *
62
+ * Quiet hours (if active) downgrade all `auto` decisions to `ask`.
63
+ */
64
+ export function applyNetworkPolicy(klass, prefs, estimatedBytes, options) {
65
+ if (options?.isHeadless === true) {
66
+ return {
67
+ class: klass,
68
+ allow: false,
69
+ reason: "headless-explicit-only",
70
+ estimatedBytes,
71
+ };
72
+ }
73
+ const reasonForAsk = () => {
74
+ if (klass === "cellular")
75
+ return "cellular-ask";
76
+ if (klass === "wifi-metered" || klass === "ethernet-metered") {
77
+ return "metered-ask";
78
+ }
79
+ return "metered-ask";
80
+ };
81
+ let autoAllowed;
82
+ switch (klass) {
83
+ case "ethernet-unmetered":
84
+ autoAllowed = true;
85
+ break;
86
+ case "wifi-unmetered":
87
+ autoAllowed = prefs.autoUpdateOnWifi;
88
+ break;
89
+ case "wifi-metered":
90
+ case "ethernet-metered":
91
+ autoAllowed = prefs.autoUpdateOnMetered;
92
+ break;
93
+ case "cellular":
94
+ autoAllowed = prefs.autoUpdateOnCellular;
95
+ break;
96
+ case "unknown":
97
+ autoAllowed = false;
98
+ break;
99
+ }
100
+ if (autoAllowed &&
101
+ inQuietHours(prefs.quietHours, options?.now ?? new Date())) {
102
+ autoAllowed = false;
103
+ }
104
+ return {
105
+ class: klass,
106
+ allow: autoAllowed,
107
+ reason: autoAllowed ? "auto" : reasonForAsk(),
108
+ estimatedBytes,
109
+ };
110
+ }
111
+ function parseClock(hhmm) {
112
+ const m = /^(\d{1,2}):(\d{2})$/.exec(hhmm);
113
+ if (!m)
114
+ return null;
115
+ const h = Number(m[1]);
116
+ const min = Number(m[2]);
117
+ if (!Number.isFinite(h) || !Number.isFinite(min))
118
+ return null;
119
+ if (h < 0 || h > 23 || min < 0 || min > 59)
120
+ return null;
121
+ return h * 60 + min;
122
+ }
123
+ /** True if `now` falls inside any quiet-hours window. */
124
+ export function inQuietHours(windows, now) {
125
+ if (windows.length === 0)
126
+ return false;
127
+ const minutes = now.getHours() * 60 + now.getMinutes();
128
+ for (const w of windows) {
129
+ const start = parseClock(w.start);
130
+ const end = parseClock(w.end);
131
+ if (start === null || end === null)
132
+ continue;
133
+ if (start === end)
134
+ continue;
135
+ if (start < end) {
136
+ if (minutes >= start && minutes < end)
137
+ return true;
138
+ }
139
+ else {
140
+ // Window crosses midnight: e.g. 22:00 -> 08:00.
141
+ if (minutes >= start || minutes < end)
142
+ return true;
143
+ }
144
+ }
145
+ return false;
146
+ }
147
+ /**
148
+ * Convenience composition for callers that have a raw state + prefs +
149
+ * estimated size in hand and want a single decision.
150
+ */
151
+ export function evaluateNetworkPolicy(state, prefs, estimatedBytes, options) {
152
+ return applyNetworkPolicy(classifyNetwork(state), prefs, estimatedBytes, options);
153
+ }
154
+ //# sourceMappingURL=network-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../../src/local-inference/network-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Path resolution for the local-inference service.
3
+ *
4
+ * All Eliza-owned files live under `<state-dir>/local-inference/` to match
5
+ * the convention established by `plugin-installer.ts` and the rest of
6
+ * app-core. We never write to paths outside of this root.
7
+ *
8
+ * `<state-dir>` follows the canonical `ELIZA_STATE_DIR` > XDG state
9
+ * precedence;
10
+ * on AOSP, `ELIZA_STATE_DIR` is set by `ElizaAgentService.java` to
11
+ * `/data/data/<pkg>/files/.eliza` so models land at
12
+ * `<that>/local-inference/models/` and not under a stray homedir-derived
13
+ * path.
14
+ */
15
+ export declare function localInferenceRoot(): string;
16
+ /** Directory for models Eliza downloaded itself. Safe to delete. */
17
+ export declare function elizaModelsDir(): string;
18
+ /** JSON file tracking installed-model metadata (downloaded + discovered). */
19
+ export declare function registryPath(): string;
20
+ /** Partial-download staging directory; files here are resume candidates. */
21
+ export declare function downloadsStagingDir(): string;
22
+ /** True when `target` is inside Eliza's local-inference root. */
23
+ export declare function isWithinElizaRoot(target: string): boolean;
24
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/local-inference/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,oEAAoE;AACpE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKzD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Path resolution for the local-inference service.
3
+ *
4
+ * All Eliza-owned files live under `<state-dir>/local-inference/` to match
5
+ * the convention established by `plugin-installer.ts` and the rest of
6
+ * app-core. We never write to paths outside of this root.
7
+ *
8
+ * `<state-dir>` follows the canonical `ELIZA_STATE_DIR` > XDG state
9
+ * precedence;
10
+ * on AOSP, `ELIZA_STATE_DIR` is set by `ElizaAgentService.java` to
11
+ * `/data/data/<pkg>/files/.eliza` so models land at
12
+ * `<that>/local-inference/models/` and not under a stray homedir-derived
13
+ * path.
14
+ */
15
+ import path from "node:path";
16
+ import { resolveStateDir } from "@elizaos/core";
17
+ export function localInferenceRoot() {
18
+ return path.join(resolveStateDir(), "local-inference");
19
+ }
20
+ /** Directory for models Eliza downloaded itself. Safe to delete. */
21
+ export function elizaModelsDir() {
22
+ return path.join(localInferenceRoot(), "models");
23
+ }
24
+ /** JSON file tracking installed-model metadata (downloaded + discovered). */
25
+ export function registryPath() {
26
+ return path.join(localInferenceRoot(), "registry.json");
27
+ }
28
+ /** Partial-download staging directory; files here are resume candidates. */
29
+ export function downloadsStagingDir() {
30
+ return path.join(localInferenceRoot(), "downloads");
31
+ }
32
+ /** True when `target` is inside Eliza's local-inference root. */
33
+ export function isWithinElizaRoot(target) {
34
+ const root = path.resolve(localInferenceRoot());
35
+ const resolved = path.resolve(target);
36
+ if (resolved === root)
37
+ return false;
38
+ return resolved.startsWith(`${root}${path.sep}`);
39
+ }
40
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/local-inference/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACzD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,eAAe,CAAC,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Provider-registry **data-only** contracts shared between the agent
3
+ * server and UI clients. Everything in this file must remain free of
4
+ * runtime-only capabilities (no methods, no callables) so the same types
5
+ * can be referenced by mobile/browser UI bundles without implying Node.js
6
+ * I/O.
7
+ *
8
+ * The runtime-side `ProviderDefinition` (which adds a callable
9
+ * `getEnableState()` reading env vars / fs / device-bridge sockets)
10
+ * extends `ProviderMeta` and lives in
11
+ * `@elizaos/app-core/src/services/local-inference/providers.ts` — it is
12
+ * the authoritative source for `/api/local-inference/providers`.
13
+ *
14
+ * UI consumers (`client-local-inference.ts`, `ios-local-agent-kernel.ts`)
15
+ * only see `ProviderStatus` (the response shape) and `ProviderMeta` /
16
+ * `ProviderEnableState` / `ProviderId` — never the runtime definition.
17
+ */
18
+ import type { AgentModelSlot } from "./types.js";
19
+ export type ProviderId = "eliza-local-inference" | "eliza-device-bridge" | "capacitor-llama" | "anthropic-subscription" | "openai-codex" | "gemini-cli" | "zai-coding" | "kimi-coding" | "deepseek-coding" | "anthropic" | "openai" | "deepseek" | "nearai" | "zai" | "moonshot" | "grok" | "elizacloud" | "google" | "mistral";
20
+ export interface ProviderEnableState {
21
+ enabled: boolean;
22
+ /** Short reason, e.g. "API key set", "Device connected", "No API key". */
23
+ reason: string;
24
+ }
25
+ /**
26
+ * Data-only provider descriptor. UI-safe — contains no runtime methods.
27
+ * The server-side `ProviderDefinition` (in `@elizaos/app-core`) extends
28
+ * this with a `getEnableState()` callable.
29
+ */
30
+ export interface ProviderMeta {
31
+ id: ProviderId;
32
+ label: string;
33
+ kind: "cloud-api" | "cloud-subscription" | "local" | "device-bridge";
34
+ /** Short blurb shown in the UI. */
35
+ description: string;
36
+ /** Agent slots this provider can plausibly serve. */
37
+ supportedSlots: AgentModelSlot[];
38
+ /**
39
+ * Link to the settings UI where enable/configure actually happens.
40
+ * UI sends the user here via anchor-scroll when they click "Configure".
41
+ * `null` means the provider has no separate config surface.
42
+ */
43
+ configureHref: string | null;
44
+ }
45
+ export interface ProviderStatus {
46
+ id: ProviderId;
47
+ label: string;
48
+ kind: ProviderMeta["kind"];
49
+ description: string;
50
+ supportedSlots: AgentModelSlot[];
51
+ configureHref: string | null;
52
+ enableState: ProviderEnableState;
53
+ /** Registered model types this provider has handlers for, right now. */
54
+ registeredSlots: string[];
55
+ }
56
+ //# sourceMappingURL=providers-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers-types.d.ts","sourceRoot":"","sources":["../../src/local-inference/providers-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,UAAU,GAClB,uBAAuB,GACvB,qBAAqB,GACrB,iBAAiB,GACjB,wBAAwB,GACxB,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,WAAW,GACX,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,KAAK,GACL,UAAU,GACV,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,GAAG,oBAAoB,GAAG,OAAO,GAAG,eAAe,CAAC;IACrE,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,wEAAwE;IACxE,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Provider-registry **data-only** contracts shared between the agent
3
+ * server and UI clients. Everything in this file must remain free of
4
+ * runtime-only capabilities (no methods, no callables) so the same types
5
+ * can be referenced by mobile/browser UI bundles without implying Node.js
6
+ * I/O.
7
+ *
8
+ * The runtime-side `ProviderDefinition` (which adds a callable
9
+ * `getEnableState()` reading env vars / fs / device-bridge sockets)
10
+ * extends `ProviderMeta` and lives in
11
+ * `@elizaos/app-core/src/services/local-inference/providers.ts` — it is
12
+ * the authoritative source for `/api/local-inference/providers`.
13
+ *
14
+ * UI consumers (`client-local-inference.ts`, `ios-local-agent-kernel.ts`)
15
+ * only see `ProviderStatus` (the response shape) and `ProviderMeta` /
16
+ * `ProviderEnableState` / `ProviderId` — never the runtime definition.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=providers-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers-types.js","sourceRoot":"","sources":["../../src/local-inference/providers-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Per-model-type user override: "for TEXT_LARGE, prefer this provider".
3
+ *
4
+ * Persisted to `$STATE_DIR/local-inference/routing.json` and read by the
5
+ * router-handler (see `router-handler.ts`) to pick a provider at dispatch
6
+ * time. When a slot has no override, the runtime's native priority order
7
+ * wins — i.e. this is layered over the existing registration priority
8
+ * rather than replacing it.
9
+ */
10
+ import type { AgentModelSlot } from "./types.js";
11
+ export type RoutingPolicy = "manual" | "auto" | "cheapest" | "fastest" | "prefer-local" | "round-robin";
12
+ /**
13
+ * The full set of selectable policies, in display order. Kept as a runtime
14
+ * value (not just a type) so route-layer validation and the settings UI share
15
+ * one source of truth for "which policies are accepted".
16
+ */
17
+ export declare const ROUTING_POLICIES: readonly RoutingPolicy[];
18
+ export declare function isRoutingPolicy(value: unknown): value is RoutingPolicy;
19
+ export declare const DEFAULT_ROUTING_POLICY: RoutingPolicy;
20
+ export interface RoutingPreferences {
21
+ /**
22
+ * Explicit provider override per agent slot. Empty record = no overrides,
23
+ * runtime picks the highest-priority registered handler.
24
+ */
25
+ preferredProvider: Partial<Record<AgentModelSlot, string>>;
26
+ /**
27
+ * Per-slot policy. "manual" honours `preferredProvider` verbatim;
28
+ * everything else lets the router-handler compute a winner from the
29
+ * policy rule set. Absent = "prefer-local" so local models and
30
+ * subscriptions are tried before direct paid APIs and managed cloud.
31
+ */
32
+ policy: Partial<Record<AgentModelSlot, RoutingPolicy>>;
33
+ }
34
+ export declare function readRoutingPreferences(): Promise<RoutingPreferences>;
35
+ export declare function writeRoutingPreferences(prefs: RoutingPreferences): Promise<void>;
36
+ export declare function setPreferredProvider(slot: AgentModelSlot, provider: string | null): Promise<RoutingPreferences>;
37
+ export declare function setPolicy(slot: AgentModelSlot, policy: RoutingPolicy | null): Promise<RoutingPreferences>;
38
+ //# sourceMappingURL=routing-preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-preferences.d.ts","sourceRoot":"","sources":["../../src/local-inference/routing-preferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,MAAM,GACN,UAAU,GACV,SAAS,GACT,cAAc,GACd,aAAa,CAAC;AAElB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAO3C,CAAC;AAEX,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAKtE;AAED,eAAO,MAAM,sBAAsB,EAAE,aAA8B,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;CACxD;AAiBD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAY1E;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,aAAa,GAAG,IAAI,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAa7B"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Per-model-type user override: "for TEXT_LARGE, prefer this provider".
3
+ *
4
+ * Persisted to `$STATE_DIR/local-inference/routing.json` and read by the
5
+ * router-handler (see `router-handler.ts`) to pick a provider at dispatch
6
+ * time. When a slot has no override, the runtime's native priority order
7
+ * wins — i.e. this is layered over the existing registration priority
8
+ * rather than replacing it.
9
+ */
10
+ import fs from "node:fs/promises";
11
+ import path from "node:path";
12
+ import { localInferenceRoot } from "./paths.js";
13
+ /**
14
+ * The full set of selectable policies, in display order. Kept as a runtime
15
+ * value (not just a type) so route-layer validation and the settings UI share
16
+ * one source of truth for "which policies are accepted".
17
+ */
18
+ export const ROUTING_POLICIES = [
19
+ "manual",
20
+ "auto",
21
+ "cheapest",
22
+ "fastest",
23
+ "prefer-local",
24
+ "round-robin",
25
+ ];
26
+ export function isRoutingPolicy(value) {
27
+ return (typeof value === "string" &&
28
+ ROUTING_POLICIES.includes(value));
29
+ }
30
+ export const DEFAULT_ROUTING_POLICY = "prefer-local";
31
+ const EMPTY = { preferredProvider: {}, policy: {} };
32
+ function routingPath() {
33
+ return path.join(localInferenceRoot(), "routing.json");
34
+ }
35
+ async function ensureRoot() {
36
+ await fs.mkdir(localInferenceRoot(), { recursive: true });
37
+ }
38
+ export async function readRoutingPreferences() {
39
+ try {
40
+ const raw = await fs.readFile(routingPath(), "utf8");
41
+ const parsed = JSON.parse(raw);
42
+ if (parsed?.version !== 1 || !parsed.preferences)
43
+ return EMPTY;
44
+ return {
45
+ preferredProvider: parsed.preferences.preferredProvider,
46
+ policy: parsed.preferences.policy,
47
+ };
48
+ }
49
+ catch {
50
+ return EMPTY;
51
+ }
52
+ }
53
+ export async function writeRoutingPreferences(prefs) {
54
+ await ensureRoot();
55
+ const payload = { version: 1, preferences: prefs };
56
+ const tmp = `${routingPath()}.tmp`;
57
+ await fs.writeFile(tmp, JSON.stringify(payload, null, 2), "utf8");
58
+ await fs.rename(tmp, routingPath());
59
+ }
60
+ export async function setPreferredProvider(slot, provider) {
61
+ const current = await readRoutingPreferences();
62
+ const next = {
63
+ preferredProvider: { ...current.preferredProvider },
64
+ policy: { ...current.policy },
65
+ };
66
+ if (provider) {
67
+ next.preferredProvider[slot] = provider;
68
+ }
69
+ else {
70
+ delete next.preferredProvider[slot];
71
+ }
72
+ await writeRoutingPreferences(next);
73
+ return next;
74
+ }
75
+ export async function setPolicy(slot, policy) {
76
+ const current = await readRoutingPreferences();
77
+ const next = {
78
+ preferredProvider: { ...current.preferredProvider },
79
+ policy: { ...current.policy },
80
+ };
81
+ if (policy) {
82
+ next.policy[slot] = policy;
83
+ }
84
+ else {
85
+ delete next.policy[slot];
86
+ }
87
+ await writeRoutingPreferences(next);
88
+ return next;
89
+ }
90
+ //# sourceMappingURL=routing-preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-preferences.js","sourceRoot":"","sources":["../../src/local-inference/routing-preferences.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Per-generation throughput differencing for the on-device inference path.
3
+ *
4
+ * The device bridge carries the raw counters for every on-device generation
5
+ * (`promptTokens`, `outputTokens`, `durationMs`, and — when the device measured
6
+ * it — `ttftMs`, the time to the first decoded token). This module turns those
7
+ * counters into the two throughput numbers a profiling harness actually wants:
8
+ *
9
+ * - **prefill tokens/sec** — prompt-processing throughput. The model reads the
10
+ * whole prompt before emitting the first token, so `ttftMs` *is* the prefill
11
+ * wall-clock; prefill tok/s = `promptTokens / (ttftMs / 1000)`.
12
+ * - **decode tokens/sec** — generation throughput. The decode phase runs from
13
+ * the first token to completion, so decode tok/s =
14
+ * `outputTokens / ((durationMs - ttftMs) / 1000)`.
15
+ *
16
+ * When the device could not measure `ttftMs` (the non-streaming Capacitor llama
17
+ * path before per-token timing lands), prefill and decode cannot be separated —
18
+ * those fields are reported as `null` and only the combined throughput
19
+ * (`outputTokens / durationMs`) is filled. Per the repo architecture rules
20
+ * (AGENTS.md §3/§7) a quantity that could not be measured is recorded as `null`,
21
+ * never as a fabricated `0`.
22
+ *
23
+ * Shared between the agent-side device bridge
24
+ * (`@elizaos/plugin-local-inference/services/device-bridge`) and the UI client
25
+ * (`@elizaos/ui/services/local-inference/device-bridge`) — both hand-synced
26
+ * copies import this single source rather than re-implementing the math.
27
+ */
28
+ /** Raw per-generation counters as carried by the device-bridge wire. */
29
+ export interface GenerationCounters {
30
+ /** Prompt tokens the device processed during prefill. */
31
+ promptTokens: number;
32
+ /** Tokens the device decoded (generated). */
33
+ outputTokens: number;
34
+ /** Total wall-clock for the generation, in milliseconds. */
35
+ durationMs: number;
36
+ /**
37
+ * Time to first decoded token, in milliseconds, when the device measured it.
38
+ * Equals the prefill wall-clock. Absent on the non-streaming path.
39
+ */
40
+ ttftMs?: number | null;
41
+ }
42
+ /** Differenced throughput for a single on-device generation. */
43
+ export interface GenerationThroughput {
44
+ /** Prefill (prompt-processing) throughput, tok/s, or null when unmeasurable. */
45
+ prefillTokensPerSecond: number | null;
46
+ /** Decode (generation) throughput, tok/s, or null when unmeasurable. */
47
+ decodeTokensPerSecond: number | null;
48
+ /**
49
+ * Whole-generation throughput, tok/s = outputTokens / durationMs. Always
50
+ * filled when at least one token was decoded in a positive duration, even
51
+ * when `ttftMs` is missing — this is the fallback signal for the
52
+ * non-streaming path.
53
+ */
54
+ combinedTokensPerSecond: number | null;
55
+ /** Echoed TTFT, ms, or null when the device did not measure it. */
56
+ ttftMs: number | null;
57
+ /** Derived decode wall-clock (durationMs − ttftMs), ms, or null. */
58
+ decodeMs: number | null;
59
+ }
60
+ /**
61
+ * Difference raw generation counters into prefill / decode / combined tok/s.
62
+ *
63
+ * Pure and synchronous. Every output field is `null` unless the inputs make it
64
+ * genuinely computable — never a fabricated zero.
65
+ */
66
+ export declare function computeGenerationThroughput(counters: GenerationCounters): GenerationThroughput;
67
+ /**
68
+ * Validate the raw counter shape before differencing. The wire is hand-synced
69
+ * between the agent and the device client, so a malformed frame should be
70
+ * rejected at the boundary (and the metric dropped) rather than silently
71
+ * producing garbage throughput.
72
+ */
73
+ export declare function isGenerationCounters(value: unknown): value is GenerationCounters;
74
+ //# sourceMappingURL=throughput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throughput.d.ts","sourceRoot":"","sources":["../../src/local-inference/throughput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,wEAAwE;IACxE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,mEAAmE;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAYD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,CAmCtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAS7B"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Per-generation throughput differencing for the on-device inference path.
3
+ *
4
+ * The device bridge carries the raw counters for every on-device generation
5
+ * (`promptTokens`, `outputTokens`, `durationMs`, and — when the device measured
6
+ * it — `ttftMs`, the time to the first decoded token). This module turns those
7
+ * counters into the two throughput numbers a profiling harness actually wants:
8
+ *
9
+ * - **prefill tokens/sec** — prompt-processing throughput. The model reads the
10
+ * whole prompt before emitting the first token, so `ttftMs` *is* the prefill
11
+ * wall-clock; prefill tok/s = `promptTokens / (ttftMs / 1000)`.
12
+ * - **decode tokens/sec** — generation throughput. The decode phase runs from
13
+ * the first token to completion, so decode tok/s =
14
+ * `outputTokens / ((durationMs - ttftMs) / 1000)`.
15
+ *
16
+ * When the device could not measure `ttftMs` (the non-streaming Capacitor llama
17
+ * path before per-token timing lands), prefill and decode cannot be separated —
18
+ * those fields are reported as `null` and only the combined throughput
19
+ * (`outputTokens / durationMs`) is filled. Per the repo architecture rules
20
+ * (AGENTS.md §3/§7) a quantity that could not be measured is recorded as `null`,
21
+ * never as a fabricated `0`.
22
+ *
23
+ * Shared between the agent-side device bridge
24
+ * (`@elizaos/plugin-local-inference/services/device-bridge`) and the UI client
25
+ * (`@elizaos/ui/services/local-inference/device-bridge`) — both hand-synced
26
+ * copies import this single source rather than re-implementing the math.
27
+ */
28
+ const MS_PER_SECOND = 1000;
29
+ function isPositive(value) {
30
+ return typeof value === "number" && Number.isFinite(value) && value > 0;
31
+ }
32
+ function isNonNegativeCount(value) {
33
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
34
+ }
35
+ /**
36
+ * Difference raw generation counters into prefill / decode / combined tok/s.
37
+ *
38
+ * Pure and synchronous. Every output field is `null` unless the inputs make it
39
+ * genuinely computable — never a fabricated zero.
40
+ */
41
+ export function computeGenerationThroughput(counters) {
42
+ const { promptTokens, outputTokens, durationMs } = counters;
43
+ const ttftMs = isPositive(counters.ttftMs) && counters.ttftMs < durationMs
44
+ ? counters.ttftMs
45
+ : null;
46
+ // Combined throughput needs a positive duration and ≥1 decoded token. Zero
47
+ // decoded tokens means there was no decode to measure — report null, not 0.
48
+ const combinedTokensPerSecond = isPositive(durationMs) && isPositive(outputTokens)
49
+ ? outputTokens / (durationMs / MS_PER_SECOND)
50
+ : null;
51
+ // Prefill throughput needs a measured TTFT and ≥1 prompt token.
52
+ const prefillTokensPerSecond = ttftMs !== null && isPositive(promptTokens)
53
+ ? promptTokens / (ttftMs / MS_PER_SECOND)
54
+ : null;
55
+ // Decode throughput needs a measured TTFT (so we can subtract prefill) and a
56
+ // positive remaining window with ≥1 decoded token.
57
+ const decodeMs = ttftMs !== null ? durationMs - ttftMs : null;
58
+ const decodeTokensPerSecond = decodeMs !== null && isPositive(decodeMs) && isPositive(outputTokens)
59
+ ? outputTokens / (decodeMs / MS_PER_SECOND)
60
+ : null;
61
+ return {
62
+ prefillTokensPerSecond,
63
+ decodeTokensPerSecond,
64
+ combinedTokensPerSecond,
65
+ ttftMs,
66
+ decodeMs: decodeMs !== null && isPositive(decodeMs) ? decodeMs : null,
67
+ };
68
+ }
69
+ /**
70
+ * Validate the raw counter shape before differencing. The wire is hand-synced
71
+ * between the agent and the device client, so a malformed frame should be
72
+ * rejected at the boundary (and the metric dropped) rather than silently
73
+ * producing garbage throughput.
74
+ */
75
+ export function isGenerationCounters(value) {
76
+ if (!value || typeof value !== "object")
77
+ return false;
78
+ const v = value;
79
+ return (isNonNegativeCount(v.promptTokens) &&
80
+ isNonNegativeCount(v.outputTokens) &&
81
+ isNonNegativeCount(v.durationMs) &&
82
+ (v.ttftMs == null || isNonNegativeCount(v.ttftMs)));
83
+ }
84
+ //# sourceMappingURL=throughput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throughput.js","sourceRoot":"","sources":["../../src/local-inference/throughput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAoCH,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B,SAAS,UAAU,CAAC,KAAgC;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAA4B;IAE5B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IAC5D,MAAM,MAAM,GACV,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU;QACzD,CAAC,CAAC,QAAQ,CAAC,MAAM;QACjB,CAAC,CAAC,IAAI,CAAC;IAEX,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,uBAAuB,GAC3B,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC;QAChD,CAAC,CAAC,YAAY,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC;IAEX,gEAAgE;IAChE,MAAM,sBAAsB,GAC1B,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC,YAAY,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;IAEX,6EAA6E;IAC7E,mDAAmD;IACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,MAAM,qBAAqB,GACzB,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC;QACnE,CAAC,CAAC,YAAY,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,sBAAsB;QACtB,qBAAqB;QACrB,uBAAuB;QACvB,MAAM;QACN,QAAQ,EAAE,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;KACtE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,kBAAkB,CAAC,CAAC,CAAC,YAAsB,CAAC;QAC5C,kBAAkB,CAAC,CAAC,CAAC,YAAsB,CAAC;QAC5C,kBAAkB,CAAC,CAAC,CAAC,UAAoB,CAAC;QAC1C,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC"}