@elizaos/agent 2.0.3-beta.2 → 2.0.3-beta.4

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 (381) hide show
  1. package/__tests__/view-user-journeys.d.ts.map +1 -1
  2. package/__tests__/view-user-journeys.js +52 -41
  3. package/actions/context-signal.d.ts +2 -2
  4. package/actions/files.d.ts +9 -0
  5. package/actions/files.d.ts.map +1 -0
  6. package/actions/files.js +183 -0
  7. package/actions/index.d.ts +17 -17
  8. package/api/accounts-routes.d.ts +1 -1
  9. package/api/accounts-routes.js +1 -1
  10. package/api/agent-admin-routes.d.ts +1 -1
  11. package/api/agent-admin-routes.js +2 -2
  12. package/api/agent-model.d.ts +1 -1
  13. package/api/agent-status-routes.d.ts +1 -3
  14. package/api/agent-status-routes.d.ts.map +1 -1
  15. package/api/agent-status-routes.js +0 -2
  16. package/api/approval-routes.d.ts +38 -0
  17. package/api/approval-routes.d.ts.map +1 -0
  18. package/api/approval-routes.js +223 -0
  19. package/api/background-routes.d.ts +13 -0
  20. package/api/background-routes.d.ts.map +1 -0
  21. package/api/background-routes.js +91 -0
  22. package/api/binance-skill-helpers.d.ts +2 -2
  23. package/api/binance-skill-helpers.js +2 -2
  24. package/api/builtin-views.d.ts.map +1 -1
  25. package/api/builtin-views.js +44 -4
  26. package/api/character-routes.d.ts +1 -1
  27. package/api/chat-augmentation.d.ts.map +1 -1
  28. package/api/chat-augmentation.js +17 -0
  29. package/api/chat-routes.d.ts +29 -2
  30. package/api/chat-routes.d.ts.map +1 -1
  31. package/api/chat-routes.js +76 -1
  32. package/api/commands-routes.d.ts +10 -8
  33. package/api/commands-routes.d.ts.map +1 -1
  34. package/api/commands-routes.js +17 -59
  35. package/api/config-routes.d.ts +1 -1
  36. package/api/config-routes.d.ts.map +1 -1
  37. package/api/config-routes.js +0 -2
  38. package/api/connector-routes.d.ts +1 -1
  39. package/api/conversation-metadata.d.ts +1 -1
  40. package/api/conversation-metadata.d.ts.map +1 -1
  41. package/api/conversation-metadata.js +0 -1
  42. package/api/conversation-routes.d.ts +4 -3
  43. package/api/conversation-routes.d.ts.map +1 -1
  44. package/api/conversation-routes.js +34 -1
  45. package/api/documents-service-loader.d.ts +0 -4
  46. package/api/documents-service-loader.d.ts.map +1 -1
  47. package/api/documents-service-loader.js +0 -2
  48. package/api/files-routes.d.ts +14 -0
  49. package/api/files-routes.d.ts.map +1 -0
  50. package/api/files-routes.js +47 -0
  51. package/api/first-run-routes.d.ts +1 -1
  52. package/api/health-routes.d.ts +2 -2
  53. package/api/index.d.ts +40 -39
  54. package/api/index.d.ts.map +1 -1
  55. package/api/index.js +1 -0
  56. package/api/interactions-routes.d.ts +33 -0
  57. package/api/interactions-routes.d.ts.map +1 -0
  58. package/api/interactions-routes.js +63 -0
  59. package/api/media-runtime.d.ts +2 -1
  60. package/api/media-runtime.d.ts.map +1 -1
  61. package/api/media-runtime.js +64 -7
  62. package/api/media-store.d.ts +36 -0
  63. package/api/media-store.d.ts.map +1 -1
  64. package/api/media-store.js +141 -2
  65. package/api/memory-bounds.d.ts +0 -1
  66. package/api/memory-bounds.d.ts.map +1 -1
  67. package/api/memory-bounds.js +0 -1
  68. package/api/misc-routes.d.ts +1 -1
  69. package/api/model-provider-helpers.d.ts +2 -2
  70. package/api/model-provider-helpers.js +2 -2
  71. package/api/permissions-routes-extra.d.ts +1 -1
  72. package/api/permissions-routes.d.ts +1 -1
  73. package/api/permissions-routes.d.ts.map +1 -1
  74. package/api/permissions-routes.js +8 -7
  75. package/api/plugin-discovery-helpers.d.ts +5 -6
  76. package/api/plugin-discovery-helpers.d.ts.map +1 -1
  77. package/api/plugin-discovery-helpers.js +3 -4
  78. package/api/plugin-runtime-apply.d.ts +2 -2
  79. package/api/plugin-runtime-apply.d.ts.map +1 -1
  80. package/api/plugin-runtime-apply.js +74 -0
  81. package/api/provider-switch-config.d.ts +1 -1
  82. package/api/provider-switch-routes.d.ts +2 -2
  83. package/api/registry-routes.d.ts +1 -1
  84. package/api/registry-service.d.ts +1 -1
  85. package/api/remote-capability-routes.d.ts +2 -2
  86. package/api/remote-capability-routes.d.ts.map +1 -1
  87. package/api/remote-capability-routes.js +19 -0
  88. package/api/server-autonomy-helpers.d.ts +2 -2
  89. package/api/server-helpers-auth.d.ts +10 -0
  90. package/api/server-helpers-auth.d.ts.map +1 -1
  91. package/api/server-helpers-auth.js +16 -210
  92. package/api/server-helpers-config.d.ts +1 -1
  93. package/api/server-helpers-mcp.d.ts +2 -2
  94. package/api/server-helpers-plugin.d.ts +1 -1
  95. package/api/server-helpers-swarm.d.ts +3 -3
  96. package/api/server-helpers-swarm.d.ts.map +1 -1
  97. package/api/server-helpers-swarm.js +15 -5
  98. package/api/server-helpers-wallet.d.ts +1 -1
  99. package/api/server-helpers.d.ts +4 -4
  100. package/api/server-lazy-routes.d.ts +40 -38
  101. package/api/server-lazy-routes.d.ts.map +1 -1
  102. package/api/server-lazy-routes.js +7 -0
  103. package/api/server-route-dispatch.d.ts +2 -2
  104. package/api/server-route-dispatch.d.ts.map +1 -1
  105. package/api/server-route-dispatch.js +7 -0
  106. package/api/server-types.d.ts +9 -7
  107. package/api/server-types.d.ts.map +1 -1
  108. package/api/server.d.ts +19 -19
  109. package/api/server.d.ts.map +1 -1
  110. package/api/server.js +111 -17
  111. package/api/static-file-server.d.ts +2 -2
  112. package/api/static-file-server.js +2 -2
  113. package/api/subscription-routes.d.ts +4 -4
  114. package/api/subscription-routes.js +3 -4
  115. package/api/suggestions-routes.d.ts +1 -1
  116. package/api/suggestions-routes.d.ts.map +1 -1
  117. package/api/suggestions-routes.js +2 -3
  118. package/api/terminal-execution-routing.d.ts +1 -1
  119. package/api/training-service-like.d.ts +1 -1
  120. package/api/trajectory-fallback-routes.d.ts.map +1 -1
  121. package/api/trajectory-fallback-routes.js +21 -1
  122. package/api/update-routes.d.ts +1 -1
  123. package/api/view-registry-types.d.ts +1 -1
  124. package/api/views-registry.d.ts +14 -4
  125. package/api/views-registry.d.ts.map +1 -1
  126. package/api/views-registry.js +107 -72
  127. package/api/views-routes.d.ts +1 -1
  128. package/api/views-routes.d.ts.map +1 -1
  129. package/api/views-routes.js +131 -14
  130. package/api/views-search-index.d.ts +1 -1
  131. package/api/wallet-capability.d.ts +3 -3
  132. package/api/wallet-rpc.d.ts +1 -1
  133. package/api/wallet.d.ts +3 -3
  134. package/api/wallet.d.ts.map +1 -1
  135. package/api/wallet.js +4 -3
  136. package/api/workbench-context.d.ts +1 -1
  137. package/api/workbench-helpers.d.ts +3 -3
  138. package/api/workbench-helpers.js +3 -3
  139. package/api/workbench-routes.d.ts +2 -2
  140. package/api/workbench-vfs-routes.d.ts +1 -1
  141. package/api/ws-event-replay.d.ts +1 -2
  142. package/api/ws-event-replay.d.ts.map +1 -1
  143. package/api/ws-event-replay.js +1 -2
  144. package/api/x-relay-routes.d.ts +2 -2
  145. package/api/x402-route-validation.d.ts +4 -0
  146. package/api/x402-route-validation.d.ts.map +1 -0
  147. package/api/x402-route-validation.js +6 -0
  148. package/assets/view-heroes/background.png +0 -0
  149. package/auth/account-storage.d.ts +1 -1
  150. package/auth/anthropic.d.ts +1 -1
  151. package/auth/credentials.d.ts +2 -2
  152. package/auth/index.d.ts +7 -7
  153. package/auth/oauth-flow.d.ts +2 -2
  154. package/auth/openai-codex.d.ts +1 -1
  155. package/awareness/index.d.ts +1 -1
  156. package/config/config.js +0 -1
  157. package/config/env-vars.d.ts +1 -1
  158. package/config/env-vars.d.ts.map +1 -1
  159. package/config/env-vars.js +0 -1
  160. package/config/index.d.ts +10 -10
  161. package/config/model-metadata.d.ts +1 -1
  162. package/config/owner-contacts.d.ts +1 -1
  163. package/config/schema.d.ts +1 -1
  164. package/hooks/discovery.d.ts +1 -1
  165. package/hooks/eligibility.d.ts +2 -2
  166. package/hooks/index.d.ts +2 -2
  167. package/hooks/loader.d.ts +2 -2
  168. package/hooks/registry.d.ts +1 -1
  169. package/index.d.ts +87 -85
  170. package/index.d.ts.map +1 -1
  171. package/index.js +11 -3
  172. package/package.json +54 -44
  173. package/providers/media-provider.d.ts +1 -1
  174. package/providers/page-scoped-context.d.ts.map +1 -1
  175. package/providers/page-scoped-context.js +1 -70
  176. package/providers/relevant-conversations.d.ts.map +1 -1
  177. package/providers/relevant-conversations.js +8 -9
  178. package/providers/workspace.d.ts +1 -1
  179. package/runtime/actions/web-fetch.d.ts.map +1 -1
  180. package/runtime/actions/web-fetch.js +23 -3
  181. package/runtime/actions/web-search.d.ts +32 -0
  182. package/runtime/actions/web-search.d.ts.map +1 -0
  183. package/runtime/actions/web-search.js +245 -0
  184. package/runtime/advanced-capabilities-config.d.ts +1 -1
  185. package/runtime/boot-telemetry.d.ts +1 -1
  186. package/runtime/conversation-compactor-runtime.d.ts +1 -1
  187. package/runtime/conversation-compactor-runtime.js +1 -1
  188. package/runtime/conversation-compactor.d.ts +1 -1
  189. package/runtime/core-plugins.d.ts.map +1 -1
  190. package/runtime/core-plugins.js +9 -0
  191. package/runtime/custom-actions.d.ts +18 -9
  192. package/runtime/custom-actions.d.ts.map +1 -1
  193. package/runtime/custom-actions.js +85 -23
  194. package/runtime/eliza-plugin.d.ts.map +1 -1
  195. package/runtime/eliza-plugin.js +15 -1
  196. package/runtime/eliza.d.ts +9 -7
  197. package/runtime/eliza.d.ts.map +1 -1
  198. package/runtime/eliza.js +86 -23
  199. package/runtime/first-time-setup.d.ts +1 -3
  200. package/runtime/first-time-setup.d.ts.map +1 -1
  201. package/runtime/first-time-setup.js +0 -2
  202. package/runtime/index.d.ts +18 -18
  203. package/runtime/load-plugin-from-vfs.d.ts +2 -2
  204. package/runtime/mobile-dns.d.ts.map +1 -1
  205. package/runtime/mobile-dns.js +2 -5
  206. package/runtime/operations/classifier.d.ts +1 -1
  207. package/runtime/operations/cold-strategy.d.ts +1 -1
  208. package/runtime/operations/health-checks.d.ts +1 -1
  209. package/runtime/operations/health.d.ts +1 -1
  210. package/runtime/operations/index.d.ts +10 -10
  211. package/runtime/operations/manager.d.ts +3 -3
  212. package/runtime/operations/reload-hot.d.ts +1 -1
  213. package/runtime/operations/repository.d.ts +1 -1
  214. package/runtime/operations/vault-bridge.d.ts +1 -1
  215. package/runtime/plugin-collector.d.ts +6 -1
  216. package/runtime/plugin-collector.d.ts.map +1 -1
  217. package/runtime/plugin-collector.js +11 -28
  218. package/runtime/plugin-lifecycle.d.ts.map +1 -1
  219. package/runtime/plugin-lifecycle.js +1 -0
  220. package/runtime/plugin-resolver.d.ts +2 -2
  221. package/runtime/plugin-resolver.d.ts.map +1 -1
  222. package/runtime/plugin-resolver.js +113 -65
  223. package/runtime/plugin-types.d.ts +1 -1
  224. package/runtime/prompt-optimization.d.ts +4 -4
  225. package/runtime/remote-coding-runner-gate.d.ts +7 -0
  226. package/runtime/remote-coding-runner-gate.d.ts.map +1 -0
  227. package/runtime/remote-coding-runner-gate.js +36 -0
  228. package/runtime/roles/src/index.d.ts +4 -4
  229. package/runtime/roles.d.ts +2 -2
  230. package/runtime/sandbox-character.d.ts +1 -1
  231. package/runtime/tool-call-cache/cache.d.ts +1 -1
  232. package/runtime/tool-call-cache/disk-store.d.ts +1 -1
  233. package/runtime/tool-call-cache/index.d.ts +6 -6
  234. package/runtime/tool-call-cache/key.d.ts +1 -1
  235. package/runtime/tool-call-cache/redact.d.ts +1 -1
  236. package/runtime/tool-call-cache/registry.d.ts +1 -1
  237. package/runtime/tool-call-cache-wrapper.d.ts +7 -9
  238. package/runtime/tool-call-cache-wrapper.d.ts.map +1 -1
  239. package/runtime/tool-call-cache-wrapper.js +6 -11
  240. package/runtime/trajectory-export.d.ts +3 -3
  241. package/runtime/trajectory-internals.d.ts +2 -1
  242. package/runtime/trajectory-internals.d.ts.map +1 -1
  243. package/runtime/trajectory-persistence.d.ts +5 -5
  244. package/runtime/trajectory-steps-reader.d.ts +1 -1
  245. package/runtime/trajectory-steps-writer.d.ts +1 -1
  246. package/runtime/trajectory-storage.d.ts +4 -4
  247. package/runtime/view-action-affinity.d.ts +18 -15
  248. package/runtime/view-action-affinity.d.ts.map +1 -1
  249. package/runtime/view-action-affinity.js +26 -29
  250. package/runtime/web-search-tools.d.ts +4 -1
  251. package/runtime/web-search-tools.d.ts.map +1 -1
  252. package/runtime/web-search-tools.js +37 -9
  253. package/security/index.d.ts +3 -3
  254. package/services/approval/index.d.ts +9 -0
  255. package/services/approval/index.d.ts.map +1 -0
  256. package/services/approval/index.js +8 -0
  257. package/services/approval/service.d.ts +35 -0
  258. package/services/approval/service.d.ts.map +1 -0
  259. package/services/approval/service.js +40 -0
  260. package/services/approval/sql.d.ts +18 -0
  261. package/services/approval/sql.d.ts.map +1 -0
  262. package/services/approval/sql.js +104 -0
  263. package/services/approval/store.d.ts +39 -0
  264. package/services/approval/store.d.ts.map +1 -0
  265. package/services/approval/store.js +534 -0
  266. package/services/approval/types.d.ts +207 -0
  267. package/services/approval/types.d.ts.map +1 -0
  268. package/services/approval/types.js +34 -0
  269. package/services/character-persistence.d.ts +2 -2
  270. package/services/client-chat-sender.d.ts +1 -1
  271. package/services/config-plugin-manager.d.ts +2 -2
  272. package/services/connector-setup-service.d.ts +1 -1
  273. package/services/cove-quote-x509.d.ts +1 -1
  274. package/services/cove-quote.d.ts +2 -2
  275. package/services/dstack-tee-provider.d.ts +1 -1
  276. package/services/file-storage.d.ts +20 -0
  277. package/services/file-storage.d.ts.map +1 -0
  278. package/services/file-storage.js +70 -0
  279. package/services/global-pause/index.d.ts +8 -0
  280. package/services/global-pause/index.d.ts.map +1 -0
  281. package/services/global-pause/index.js +7 -0
  282. package/services/global-pause/service.d.ts +29 -0
  283. package/services/global-pause/service.d.ts.map +1 -0
  284. package/services/global-pause/service.js +34 -0
  285. package/services/global-pause/store.d.ts +31 -0
  286. package/services/global-pause/store.d.ts.map +1 -0
  287. package/services/global-pause/store.js +83 -0
  288. package/services/handoff/index.d.ts +8 -0
  289. package/services/handoff/index.d.ts.map +1 -0
  290. package/services/handoff/index.js +7 -0
  291. package/services/handoff/service.d.ts +29 -0
  292. package/services/handoff/service.d.ts.map +1 -0
  293. package/services/handoff/service.js +34 -0
  294. package/services/handoff/store.d.ts +76 -0
  295. package/services/handoff/store.d.ts.map +1 -0
  296. package/services/handoff/store.js +148 -0
  297. package/services/index.d.ts +30 -31
  298. package/services/index.d.ts.map +1 -1
  299. package/services/index.js +0 -6
  300. package/services/js-runtime-bridge.d.ts.map +1 -1
  301. package/services/js-runtime-bridge.js +8 -2
  302. package/services/knowledge-graph/index.d.ts +4 -4
  303. package/services/knowledge-graph/service.d.ts +2 -2
  304. package/services/pending-prompts/index.d.ts +8 -0
  305. package/services/pending-prompts/index.d.ts.map +1 -0
  306. package/services/pending-prompts/index.js +7 -0
  307. package/services/pending-prompts/service.d.ts +34 -0
  308. package/services/pending-prompts/service.d.ts.map +1 -0
  309. package/services/pending-prompts/service.js +68 -0
  310. package/services/pending-prompts/store.d.ts +70 -0
  311. package/services/pending-prompts/store.d.ts.map +1 -0
  312. package/services/pending-prompts/store.js +191 -0
  313. package/services/plugin-compiler.d.ts +1 -1
  314. package/services/plugin-installer.d.ts.map +1 -1
  315. package/services/plugin-installer.js +21 -11
  316. package/services/plugin-manager-types.d.ts +1 -1
  317. package/services/proactive-interaction-decider.d.ts +62 -11
  318. package/services/proactive-interaction-decider.d.ts.map +1 -1
  319. package/services/proactive-interaction-decider.js +223 -35
  320. package/services/push/apns-provider.d.ts +1 -1
  321. package/services/push/fcm-provider.d.ts +1 -1
  322. package/services/push/notification-push-service.d.ts +2 -2
  323. package/services/registry-client-app-meta.d.ts +1 -1
  324. package/services/registry-client-endpoints.d.ts +2 -2
  325. package/services/registry-client-local.d.ts +1 -1
  326. package/services/registry-client-network.d.ts +1 -1
  327. package/services/registry-client-queries.d.ts +1 -1
  328. package/services/registry-client.d.ts +3 -3
  329. package/services/relationships-graph.d.ts +1 -1
  330. package/services/remote-capability-cloud-sandbox.d.ts +3 -3
  331. package/services/remote-capability-endpoint-conformance.d.ts +1 -1
  332. package/services/remote-capability-endpoint-provider.d.ts +4 -4
  333. package/services/remote-capability-url-endpoint-providers.d.ts +1 -1
  334. package/services/remote-plugin-adapter.d.ts.map +1 -1
  335. package/services/remote-plugin-adapter.js +3 -0
  336. package/services/remote-plugin-bridge.d.ts.map +1 -1
  337. package/services/remote-plugin-bridge.js +97 -26
  338. package/services/remote-signing-service.d.ts +4 -4
  339. package/services/research-task-executor.d.ts +1 -1
  340. package/services/sandbox-manager.d.ts +1 -1
  341. package/services/self-updater.d.ts +1 -1
  342. package/services/self-updater.d.ts.map +1 -1
  343. package/services/self-updater.js +23 -9
  344. package/services/shell-execution-router.d.ts +1 -1
  345. package/services/shell-execution-router.d.ts.map +1 -1
  346. package/services/shell-execution-router.js +19 -2
  347. package/services/tee-boot-gate-state.d.ts +1 -1
  348. package/services/tee-boot-gate.d.ts +4 -4
  349. package/services/tee-confidential-inference.d.ts +3 -3
  350. package/services/tee-key-release.d.ts +2 -2
  351. package/services/tee-model-key-boot.d.ts +4 -4
  352. package/services/tee-policy.d.ts +1 -1
  353. package/services/tee-production-profile.d.ts +1 -1
  354. package/services/tee-release-policy.d.ts +1 -1
  355. package/services/tee-revocation.d.ts +2 -2
  356. package/services/tee-runtime-config.d.ts +1 -1
  357. package/services/tee-sealed-volume.d.ts +3 -3
  358. package/services/tee-signer-backend.d.ts +3 -3
  359. package/services/update-checker.d.ts +1 -1
  360. package/services/vault-signer-backend.d.ts +1 -1
  361. package/services/vfs-git.d.ts +1 -1
  362. package/test-support/index.d.ts +3 -3
  363. package/triggers/runtime.d.ts +1 -1
  364. package/triggers/scheduling.d.ts +3 -22
  365. package/triggers/scheduling.d.ts.map +1 -1
  366. package/triggers/scheduling.js +2 -214
  367. package/tui/agent-terminal-tui.d.ts.map +1 -1
  368. package/tui/agent-terminal-tui.js +174 -72
  369. package/types/index.d.ts +3 -3
  370. package/api/nfa-routes.d.ts +0 -6
  371. package/api/nfa-routes.d.ts.map +0 -1
  372. package/api/nfa-routes.js +0 -125
  373. package/api/server-auth.d.ts +0 -46
  374. package/api/server-auth.d.ts.map +0 -1
  375. package/api/server-auth.js +0 -504
  376. package/runtime/restart.d.ts +0 -9
  377. package/runtime/restart.d.ts.map +0 -1
  378. package/runtime/restart.js +0 -8
  379. package/test-utils/sqlite-compat.d.ts +0 -23
  380. package/test-utils/sqlite-compat.d.ts.map +0 -1
  381. package/test-utils/sqlite-compat.js +0 -214
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Approval / pending-user-action routes.
3
+ *
4
+ * `GET /api/approvals` is the canonical read surface for work that is blocked
5
+ * on the user. It aggregates legacy owner approval rows, task-based approval
6
+ * records, and pending planner prompts into the shared `PendingUserAction`
7
+ * contract so clients render one list without knowing producer internals.
8
+ */
9
+ import { PENDING_USER_ACTION_WEIGHT, ServiceType, } from "@elizaos/core";
10
+ import { APPROVAL_SERVICE } from "../services/approval/service.js";
11
+ import { PENDING_PROMPTS_SERVICE } from "../services/pending-prompts/service.js";
12
+ const APPROVAL_STATES = [
13
+ "pending",
14
+ "approved",
15
+ "executing",
16
+ "done",
17
+ "rejected",
18
+ "expired",
19
+ ];
20
+ function isAgentApprovalService(value) {
21
+ return (typeof value === "object" &&
22
+ value !== null &&
23
+ typeof value.getQueue === "function");
24
+ }
25
+ function isPendingUserActionService(value) {
26
+ return (typeof value === "object" &&
27
+ value !== null &&
28
+ typeof value.listPendingUserActions ===
29
+ "function");
30
+ }
31
+ function isApprovalTaskService(value) {
32
+ return (typeof value === "object" &&
33
+ value !== null &&
34
+ typeof value.getAllPendingApprovals ===
35
+ "function");
36
+ }
37
+ function parseLimit(raw) {
38
+ if (!raw)
39
+ return 50;
40
+ const parsed = Number.parseInt(raw, 10);
41
+ if (!Number.isFinite(parsed) || parsed <= 0)
42
+ return 50;
43
+ return Math.min(parsed, 500);
44
+ }
45
+ function parseState(raw) {
46
+ if (!raw)
47
+ return "pending";
48
+ if (raw === "all")
49
+ return null;
50
+ return APPROVAL_STATES.includes(raw)
51
+ ? raw
52
+ : "pending";
53
+ }
54
+ function getAgentApprovalQueue(state) {
55
+ const service = state.runtime?.getService(APPROVAL_SERVICE);
56
+ if (!isAgentApprovalService(service))
57
+ return null;
58
+ return service.getQueue(state.runtime?.agentId);
59
+ }
60
+ async function listServicePendingUserActions(state, serviceType) {
61
+ const service = state.runtime?.getService(serviceType);
62
+ if (!isPendingUserActionService(service))
63
+ return [];
64
+ return await service.listPendingUserActions();
65
+ }
66
+ async function listApprovalTaskActions(state) {
67
+ const service = state.runtime?.getService(ServiceType.APPROVAL);
68
+ if (!isApprovalTaskService(service))
69
+ return [];
70
+ const tasks = await service.getAllPendingApprovals();
71
+ return tasks
72
+ .map(approvalTaskToPendingAction)
73
+ .filter((action) => action !== null);
74
+ }
75
+ function toIso(value) {
76
+ return value ? value.toISOString() : null;
77
+ }
78
+ function approvalToDto(approval) {
79
+ return {
80
+ id: approval.id,
81
+ state: approval.state,
82
+ requestedBy: approval.requestedBy,
83
+ subjectUserId: approval.subjectUserId,
84
+ action: approval.action,
85
+ payload: approval.payload,
86
+ channel: approval.channel,
87
+ reason: approval.reason,
88
+ expiresAt: approval.expiresAt.toISOString(),
89
+ resolvedAt: toIso(approval.resolvedAt),
90
+ resolvedBy: approval.resolvedBy,
91
+ resolutionReason: approval.resolutionReason,
92
+ createdAt: approval.createdAt.toISOString(),
93
+ updatedAt: approval.updatedAt.toISOString(),
94
+ };
95
+ }
96
+ function humanizeAction(action) {
97
+ return action.replace(/_/g, " ");
98
+ }
99
+ function approvalToPendingUserAction(approval) {
100
+ return {
101
+ id: approval.id,
102
+ kind: "approval",
103
+ source: "approval-queue",
104
+ title: approval.reason || `Approve ${humanizeAction(approval.action)}`,
105
+ description: `${humanizeAction(approval.action)} via ${approval.channel}`,
106
+ options: [
107
+ { id: "approve", label: "Approve" },
108
+ { id: "reject", label: "Reject", isCancel: true },
109
+ ],
110
+ expectedReplyKind: "approval",
111
+ weight: PENDING_USER_ACTION_WEIGHT.approval,
112
+ resolution: {
113
+ target: "approval_service",
114
+ requestId: approval.id,
115
+ },
116
+ data: {
117
+ state: approval.state,
118
+ action: approval.action,
119
+ channel: approval.channel,
120
+ requestedBy: approval.requestedBy,
121
+ subjectUserId: approval.subjectUserId,
122
+ },
123
+ createdAt: approval.createdAt.getTime(),
124
+ expiresAt: approval.expiresAt.getTime(),
125
+ };
126
+ }
127
+ function parseTaskOptions(task) {
128
+ const raw = task.metadata?.options;
129
+ if (!Array.isArray(raw))
130
+ return undefined;
131
+ const options = [];
132
+ for (const entry of raw) {
133
+ if (typeof entry !== "object" || entry === null)
134
+ continue;
135
+ const record = entry;
136
+ if (typeof record.name !== "string" || record.name.length === 0)
137
+ continue;
138
+ options.push({
139
+ id: record.name,
140
+ label: typeof record.description === "string" && record.description.length > 0
141
+ ? record.description
142
+ : record.name,
143
+ ...(record.isDefault === true ? { isDefault: true } : {}),
144
+ ...(record.isCancel === true ? { isCancel: true } : {}),
145
+ });
146
+ }
147
+ return options.length > 0 ? options : undefined;
148
+ }
149
+ function resolveTaskCreatedAt(task) {
150
+ const approvalRequest = task.metadata?.approvalRequest;
151
+ if (approvalRequest && typeof approvalRequest === "object") {
152
+ const createdAt = approvalRequest.createdAt;
153
+ if (typeof createdAt === "number" && Number.isFinite(createdAt)) {
154
+ return createdAt;
155
+ }
156
+ }
157
+ return typeof task.createdAt === "number" ? task.createdAt : Date.now();
158
+ }
159
+ export function approvalTaskToPendingAction(task) {
160
+ if (!task.id || !task.roomId)
161
+ return null;
162
+ return {
163
+ id: task.id,
164
+ kind: "task_approval",
165
+ source: "approval-service",
166
+ title: task.description?.trim() || task.name,
167
+ roomId: task.roomId,
168
+ options: parseTaskOptions(task),
169
+ weight: PENDING_USER_ACTION_WEIGHT.task_approval,
170
+ resolution: {
171
+ target: "approval_service",
172
+ requestId: task.id,
173
+ },
174
+ createdAt: resolveTaskCreatedAt(task),
175
+ };
176
+ }
177
+ function dedupeAndSortPendingActions(actions) {
178
+ const seen = new Set();
179
+ const deduped = [];
180
+ for (const action of actions) {
181
+ if (seen.has(action.id))
182
+ continue;
183
+ seen.add(action.id);
184
+ deduped.push(action);
185
+ }
186
+ return deduped.sort((a, b) => b.createdAt - a.createdAt);
187
+ }
188
+ export async function handleApprovalRoute(req, res, pathname, method, state, helpers) {
189
+ if (!pathname.startsWith("/api/approvals"))
190
+ return false;
191
+ if (method !== "GET" || pathname !== "/api/approvals") {
192
+ helpers.error(res, "approval route not found", 404);
193
+ return true;
194
+ }
195
+ const url = new URL(req.url ?? pathname, "http://localhost");
196
+ const filter = {
197
+ subjectUserId: null,
198
+ state: parseState(url.searchParams.get("state")),
199
+ action: null,
200
+ limit: parseLimit(url.searchParams.get("limit")),
201
+ };
202
+ const queue = getAgentApprovalQueue(state);
203
+ const approvals = queue ? await queue.list(filter) : [];
204
+ const [serviceActions, taskActions, promptActions] = await Promise.all([
205
+ listServicePendingUserActions(state, ServiceType.APPROVAL),
206
+ listApprovalTaskActions(state),
207
+ listServicePendingUserActions(state, PENDING_PROMPTS_SERVICE),
208
+ ]);
209
+ const pending = dedupeAndSortPendingActions([
210
+ ...approvals
211
+ .filter((approval) => approval.state === "pending")
212
+ .map(approvalToPendingUserAction),
213
+ ...serviceActions,
214
+ ...taskActions,
215
+ ...promptActions,
216
+ ]);
217
+ helpers.json(res, {
218
+ approvals: approvals.map(approvalToDto),
219
+ pending,
220
+ pendingUserActions: pending,
221
+ });
222
+ return true;
223
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * HTTP route backing the Background view's "Generate" control: turn a text
3
+ * prompt into a durable, same-origin background image.
4
+ *
5
+ * Generation runs through the agent's media-generation service (cloud or local
6
+ * image provider). Providers return base64 bytes, a `data:` URL, or a remote
7
+ * http(s) URL; all three are normalized into the content-addressed media store
8
+ * so the client persists a short, stable `/api/media/<hash>` reference rather
9
+ * than a multi-MB data URL.
10
+ */
11
+ import { type Route } from "@elizaos/core";
12
+ export declare const backgroundGenerateImageRoute: Route;
13
+ //# sourceMappingURL=background-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-routes.d.ts","sourceRoot":"","sources":["../../src/api/background-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAKL,KAAK,KAAK,EAEX,MAAM,eAAe,CAAC;AAoDvB,eAAO,MAAM,4BAA4B,EAAE,KAkD1C,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * HTTP route backing the Background view's "Generate" control: turn a text
3
+ * prompt into a durable, same-origin background image.
4
+ *
5
+ * Generation runs through the agent's media-generation service (cloud or local
6
+ * image provider). Providers return base64 bytes, a `data:` URL, or a remote
7
+ * http(s) URL; all three are normalized into the content-addressed media store
8
+ * so the client persists a short, stable `/api/media/<hash>` reference rather
9
+ * than a multi-MB data URL.
10
+ */
11
+ import { Buffer } from "node:buffer";
12
+ import { fetchRemoteMedia, logger, ServiceType, } from "@elizaos/core";
13
+ import { persistDataUrl, persistMediaBytes } from "./media-store.js";
14
+ function jsonResult(status, body) {
15
+ return {
16
+ status,
17
+ headers: { "content-type": "application/json; charset=utf-8" },
18
+ body,
19
+ };
20
+ }
21
+ /** Cap on a re-hosted background image (generated art is small). */
22
+ const BACKGROUND_IMAGE_MAX_BYTES = 16 * 1024 * 1024;
23
+ /** Normalize a generated image (base64 / data URL / remote URL) to a served URL. */
24
+ async function persistGeneratedImage(imageBase64, imageUrl, mimeType) {
25
+ if (imageBase64) {
26
+ return persistMediaBytes(Buffer.from(imageBase64, "base64"), mimeType).url;
27
+ }
28
+ if (imageUrl.startsWith("data:")) {
29
+ const persisted = persistDataUrl(imageUrl);
30
+ if (persisted)
31
+ return persisted.url;
32
+ }
33
+ if (/^https?:\/\//.test(imageUrl)) {
34
+ try {
35
+ // SSRF-guarded server-side fetch (mandated for all remote media fetches).
36
+ const { buffer, contentType } = await fetchRemoteMedia({
37
+ url: imageUrl,
38
+ maxBytes: BACKGROUND_IMAGE_MAX_BYTES,
39
+ });
40
+ return persistMediaBytes(buffer, contentType ?? mimeType).url;
41
+ }
42
+ catch (err) {
43
+ logger.warn(`[background] could not re-host generated image ${imageUrl}: ${err instanceof Error ? err.message : String(err)}`);
44
+ }
45
+ }
46
+ // Already a usable URL we couldn't (or needn't) re-host.
47
+ return imageUrl;
48
+ }
49
+ export const backgroundGenerateImageRoute = {
50
+ type: "POST",
51
+ path: "/api/background/generate-image",
52
+ // Serve at the literal path, not under the plugin-name prefix.
53
+ rawPath: true,
54
+ name: "background-generate-image",
55
+ routeHandler: async (ctx) => {
56
+ const body = (ctx.body ?? {});
57
+ const prompt = typeof body.prompt === "string" ? body.prompt.trim() : "";
58
+ if (!prompt) {
59
+ return jsonResult(400, { error: "A prompt is required." });
60
+ }
61
+ const service = ctx.runtime.getService(ServiceType.MEDIA_GENERATION);
62
+ if (!service) {
63
+ return jsonResult(503, { error: "Media generation is not available." });
64
+ }
65
+ const request = {
66
+ mediaType: "image",
67
+ prompt,
68
+ size: typeof body.size === "string" ? body.size : undefined,
69
+ };
70
+ if (!(await service.canGenerateMedia(request))) {
71
+ return jsonResult(503, { error: "Image generation is not configured." });
72
+ }
73
+ try {
74
+ const result = await service.generateMedia(request);
75
+ const sourceUrl = result.imageUrl ?? result.url ?? "";
76
+ if (!result.imageBase64 && !sourceUrl) {
77
+ return jsonResult(502, {
78
+ error: "Image generation returned no image.",
79
+ });
80
+ }
81
+ const url = await persistGeneratedImage(result.imageBase64, sourceUrl, result.mimeType ?? "image/png");
82
+ return jsonResult(200, { url });
83
+ }
84
+ catch (err) {
85
+ // Translate a provider/transport failure into a clear client error.
86
+ return jsonResult(502, {
87
+ error: err instanceof Error ? err.message : "Image generation failed.",
88
+ });
89
+ }
90
+ },
91
+ };
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Binance direct-skill request helpers.
3
3
  *
4
- * Extracted from server.ts. Handles direct dispatch of Binance DeFi skills
5
- * (meme-rush, trading-signal, token-info, etc.) and fallback action parsing.
4
+ * Handles direct dispatch of Binance DeFi skills (meme-rush, trading-signal,
5
+ * token-info, etc.) and fallback action parsing.
6
6
  */
7
7
  import { type ActionParameters, type AgentRuntime, type createMessageMemory } from "@elizaos/core";
8
8
  export type FallbackParsedAction = {
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Binance direct-skill request helpers.
3
3
  *
4
- * Extracted from server.ts. Handles direct dispatch of Binance DeFi skills
5
- * (meme-rush, trading-signal, token-info, etc.) and fallback action parsing.
4
+ * Handles direct dispatch of Binance DeFi skills (meme-rush, trading-signal,
5
+ * token-info, etc.) and fallback action parsing.
6
6
  */
7
7
  var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
8
8
  if (typeof path === "string" && /^\.\.?\//.test(path)) {
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-views.d.ts","sourceRoot":"","sources":["../../src/api/builtin-views.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,eAAe,EA2K1C,CAAC"}
1
+ {"version":3,"file":"builtin-views.d.ts","sourceRoot":"","sources":["../../src/api/builtin-views.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,eAAe,EAoN1C,CAAC"}
@@ -9,6 +9,7 @@
9
9
  export const BUILTIN_VIEWS = [
10
10
  {
11
11
  id: "tutorial",
12
+ viewKind: "system",
12
13
  label: "Tutorial",
13
14
  description: "Interactive guided tour — learn the chat, switching views, and Settings in 90 seconds",
14
15
  icon: "GraduationCap",
@@ -22,6 +23,7 @@ export const BUILTIN_VIEWS = [
22
23
  },
23
24
  {
24
25
  id: "help",
26
+ viewKind: "system",
25
27
  label: "Help",
26
28
  description: "Searchable FAQ and knowledge base — what Eliza is and how everything works",
27
29
  icon: "LifeBuoy",
@@ -35,6 +37,7 @@ export const BUILTIN_VIEWS = [
35
37
  },
36
38
  {
37
39
  id: "camera",
40
+ viewKind: "release",
38
41
  label: "Camera",
39
42
  description: "Live camera preview with photo capture and front/back switching",
40
43
  icon: "Camera",
@@ -48,6 +51,7 @@ export const BUILTIN_VIEWS = [
48
51
  },
49
52
  {
50
53
  id: "chat",
54
+ viewKind: "system",
51
55
  label: "Chat",
52
56
  description: "Conversations with your agent, inbound messages from every connector",
53
57
  icon: "MessageSquare",
@@ -61,6 +65,7 @@ export const BUILTIN_VIEWS = [
61
65
  },
62
66
  {
63
67
  id: "character",
68
+ viewKind: "system",
64
69
  label: "Character",
65
70
  description: "Agent identity, personality, style, and knowledge documents",
66
71
  icon: "UserRound",
@@ -71,8 +76,22 @@ export const BUILTIN_VIEWS = [
71
76
  visibleInManager: true,
72
77
  desktopTabEnabled: true,
73
78
  },
79
+ {
80
+ id: "documents",
81
+ viewKind: "system",
82
+ label: "Knowledge",
83
+ description: "Agent knowledge documents, uploads, and retrieval sources",
84
+ icon: "FileText",
85
+ heroImagePath: "assets/view-heroes/character.png",
86
+ path: "/character/documents",
87
+ order: 51,
88
+ tags: ["documents", "notes", "knowledge", "files", "uploads", "retrieval"],
89
+ visibleInManager: true,
90
+ desktopTabEnabled: true,
91
+ },
74
92
  {
75
93
  id: "automations",
94
+ viewKind: "release",
76
95
  label: "Automations",
77
96
  description: "Scheduled tasks and recurring workflows",
78
97
  icon: "Clock3",
@@ -84,6 +103,7 @@ export const BUILTIN_VIEWS = [
84
103
  },
85
104
  {
86
105
  id: "plugins-page",
106
+ viewKind: "release",
87
107
  label: "Plugins",
88
108
  description: "Manage installed plugins, configure credentials",
89
109
  icon: "Puzzle",
@@ -103,6 +123,8 @@ export const BUILTIN_VIEWS = [
103
123
  },
104
124
  {
105
125
  id: "trajectories",
126
+ viewKind: "developer",
127
+ developerOnly: true,
106
128
  label: "Trajectories",
107
129
  description: "Agent trajectory logs and training data",
108
130
  icon: "GitBranch",
@@ -110,11 +132,11 @@ export const BUILTIN_VIEWS = [
110
132
  path: "/apps/trajectories",
111
133
  order: 70,
112
134
  tags: ["training", "logs", "trajectories"],
113
- developerOnly: true,
114
135
  visibleInManager: true,
115
136
  },
116
137
  {
117
138
  id: "transcripts",
139
+ viewKind: "release",
118
140
  label: "Transcripts",
119
141
  description: "Recorded voice transcripts — play, scrub, and read with word sync",
120
142
  icon: "AudioLines",
@@ -126,6 +148,8 @@ export const BUILTIN_VIEWS = [
126
148
  },
127
149
  {
128
150
  id: "memories",
151
+ viewKind: "developer",
152
+ developerOnly: true,
129
153
  label: "Memories",
130
154
  description: "Agent memory viewer and management",
131
155
  icon: "Brain",
@@ -133,11 +157,12 @@ export const BUILTIN_VIEWS = [
133
157
  path: "/apps/memories",
134
158
  order: 72,
135
159
  tags: ["memory", "knowledge"],
136
- developerOnly: true,
137
160
  visibleInManager: true,
138
161
  },
139
162
  {
140
163
  id: "database",
164
+ viewKind: "developer",
165
+ developerOnly: true,
141
166
  label: "Database",
142
167
  description: "Raw database viewer and query interface",
143
168
  icon: "Database",
@@ -145,11 +170,12 @@ export const BUILTIN_VIEWS = [
145
170
  path: "/apps/database",
146
171
  order: 80,
147
172
  tags: ["database", "data", "debug"],
148
- developerOnly: true,
149
173
  visibleInManager: true,
150
174
  },
151
175
  {
152
176
  id: "logs",
177
+ viewKind: "developer",
178
+ developerOnly: true,
153
179
  label: "Logs",
154
180
  description: "Runtime logs and agent debug output",
155
181
  icon: "FileText",
@@ -157,11 +183,11 @@ export const BUILTIN_VIEWS = [
157
183
  path: "/apps/logs",
158
184
  order: 81,
159
185
  tags: ["logs", "debug", "runtime"],
160
- developerOnly: true,
161
186
  visibleInManager: true,
162
187
  },
163
188
  {
164
189
  id: "settings",
190
+ viewKind: "system",
165
191
  label: "Settings",
166
192
  description: "Configuration, plugins, credentials, and preferences",
167
193
  icon: "Settings",
@@ -172,4 +198,18 @@ export const BUILTIN_VIEWS = [
172
198
  visibleInManager: true,
173
199
  desktopTabEnabled: true,
174
200
  },
201
+ {
202
+ id: "background",
203
+ viewKind: "system",
204
+ label: "Background",
205
+ description: "Set the app background — pick a shader color, upload an image, or generate one",
206
+ icon: "Image",
207
+ heroImagePath: "assets/view-heroes/background.png",
208
+ path: "/background",
209
+ order: 92,
210
+ tags: ["background", "wallpaper", "color", "theme", "appearance", "image"],
211
+ visibleInManager: true,
212
+ desktopTabEnabled: true,
213
+ platforms: ["web", "desktop", "ios", "android"],
214
+ },
175
215
  ];
@@ -16,7 +16,7 @@ interface AgentConfigLike {
16
16
  messageExamples?: unknown;
17
17
  postExamples?: string[];
18
18
  }
19
- import type { AutonomousConfigLike } from "../types/config-like.ts";
19
+ import type { AutonomousConfigLike } from "../types/config-like.js";
20
20
  export interface CharacterAutonomousConfigLike extends AutonomousConfigLike {
21
21
  agents?: {
22
22
  list?: AgentConfigLike[];
@@ -1 +1 @@
1
- {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../src/api/chat-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,YAAY,EAEZ,mBAAmB,EAEpB,MAAM,eAAe,CAAC;AA+BvB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAexC;AAgBD,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA8ED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAqSjD"}
1
+ {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../src/api/chat-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,YAAY,EAEZ,mBAAmB,EAEpB,MAAM,eAAe,CAAC;AA+BvB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAexC;AAgBD,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA8ED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAqTjD"}
@@ -120,6 +120,23 @@ export async function maybeAugmentChatMessageWithDocuments(runtime, message, opt
120
120
  const documents = await getDocumentsService(runtime);
121
121
  if (!documents.service)
122
122
  return message;
123
+ // Skip the document search entirely when the agent has no searchable corpus.
124
+ // `searchDocuments` embeds the user query, then searches `document_fragments`;
125
+ // most cloud agents run with an empty corpus, so that embed round-trip costs
126
+ // ~1.5s/turn (the dominant chat-latency tax) for guaranteed-zero matches — and
127
+ // the LLM query-recovery fallback is already gated on having documents. A cheap
128
+ // fragment count avoids the wasted embed. On a count error we fall through to
129
+ // the normal path rather than skip augmentation.
130
+ try {
131
+ const fragmentCount = await documents.service.countMemories({
132
+ tableName: "document_fragments",
133
+ });
134
+ if (fragmentCount === 0)
135
+ return message;
136
+ }
137
+ catch {
138
+ // Count failed — do not skip; let the normal search path run.
139
+ }
123
140
  const agentId = runtime.agentId;
124
141
  const roomId = typeof message.roomId === "string" && message.roomId.trim().length > 0
125
142
  ? message.roomId
@@ -13,8 +13,8 @@
13
13
  import type http from "node:http";
14
14
  import { type AgentRuntime, ChannelType, type Content, createMessageMemory, type RouteRequestContext, type UUID } from "@elizaos/core";
15
15
  import type { LogEntry, ReadJsonBodyOptions } from "@elizaos/shared";
16
- import type { ElizaConfig } from "../config/config.ts";
17
- import type { ChatImageAttachment } from "./server-types.ts";
16
+ import type { ElizaConfig } from "../config/config.js";
17
+ import type { ChatImageAttachment } from "./server-types.js";
18
18
  export type { ChatImageAttachment, LogEntry };
19
19
  type LocalInferenceChatMetadata = Record<string, unknown>;
20
20
  type LocalInferenceCommandIntent = "cancel" | "download" | "redownload" | "resume" | "retry" | "status" | "switch_smaller" | "use_cloud" | "use_local";
@@ -71,6 +71,14 @@ export interface ChatActionResultSummary {
71
71
  export interface ChatGenerateOptions {
72
72
  onChunk?: (chunk: string) => void;
73
73
  onSnapshot?: (text: string) => void;
74
+ /**
75
+ * In-flight phase changes for the rich status indicator. Emitted additively
76
+ * alongside `onChunk`/`onSnapshot` — `thinking` before the first visible
77
+ * token, then `streaming` (LLM tokens) or `running_action` (an action handler
78
+ * is producing the reply, carrying `actionName`). Never required for the reply
79
+ * itself; a caller that omits it loses only the status surface.
80
+ */
81
+ onStatus?: (status: ChatTurnStatus) => void;
74
82
  isAborted?: () => boolean;
75
83
  abortSignal?: AbortSignal;
76
84
  resolveNoResponseText?: () => string;
@@ -96,6 +104,25 @@ export declare function normalizeChatResponseText(text: string, logBuffer: LogEn
96
104
  export declare function initSse(res: http.ServerResponse): void;
97
105
  export declare function writeSse(res: http.ServerResponse, payload: Record<string, unknown>): void;
98
106
  export declare function writeChatTokenSse(res: http.ServerResponse, text: string, fullText: string): void;
107
+ /**
108
+ * In-flight assistant-turn status, surfaced to the UI as an additive SSE
109
+ * `{ type: "status", ... }` event so the chat can show what the agent is *doing*
110
+ * rather than just breathing dots. The `token` / `done` / `error` contract is
111
+ * unchanged — a client that ignores `status` events behaves exactly as before.
112
+ *
113
+ * The canonical (and only consumer-facing) definition lives in
114
+ * `@elizaos/ui` `api/client-types-chat.ts` (`ChatTurnStatus`). It is re-declared
115
+ * here — not imported — because the server must not depend on the React UI
116
+ * package; this mirrors the existing `ChatFailureKind` arrangement. The two
117
+ * declarations are kept structurally identical by the SSE-status unit test.
118
+ */
119
+ export interface ChatTurnStatus {
120
+ kind: "thinking" | "streaming" | "running_action" | "running_tool" | "evaluating" | "waking" | "speaking";
121
+ label?: string;
122
+ actionName?: string;
123
+ toolName?: string;
124
+ }
125
+ export declare function writeChatStatusSse(res: http.ServerResponse, status: ChatTurnStatus): void;
99
126
  export declare function writeSseData(res: http.ServerResponse, data: string, event?: string): void;
100
127
  export declare function writeSseJson(res: http.ServerResponse, payload: unknown, event?: string): void;
101
128
  export declare function persistConversationMemory(runtime: AgentRuntime, memory: ReturnType<typeof createMessageMemory>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-routes.d.ts","sourceRoot":"","sources":["../../src/api/chat-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-routes.d.ts","sourceRoot":"","sources":["../../src/api/chat-routes.ts"],"names":[],"mappings":"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"}