@elizaos/ui 2.0.0-alpha.192 → 2.0.0-alpha.196

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 (273) hide show
  1. package/apps/app-companion/src/components/companion/companion-app.js +2 -2
  2. package/apps/app-lifeops/src/action.d.ts.map +1 -1
  3. package/apps/app-lifeops/src/action.js +21 -2
  4. package/apps/app-lifeops/src/actions/app-blocker.d.ts +3 -1
  5. package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +1 -1
  6. package/apps/app-lifeops/src/actions/app-blocker.js +2 -0
  7. package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
  8. package/apps/app-lifeops/src/actions/calendar.js +140 -7
  9. package/apps/app-lifeops/src/actions/computer-use.d.ts.map +1 -1
  10. package/apps/app-lifeops/src/actions/computer-use.js +248 -17
  11. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +3 -1
  12. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +1 -1
  13. package/apps/app-lifeops/src/actions/cross-channel-send.js +1 -0
  14. package/apps/app-lifeops/src/actions/dossier.d.ts.map +1 -1
  15. package/apps/app-lifeops/src/actions/dossier.js +51 -34
  16. package/apps/app-lifeops/src/actions/gmail.d.ts.map +1 -1
  17. package/apps/app-lifeops/src/actions/gmail.js +5 -0
  18. package/apps/app-lifeops/src/actions/inbox.d.ts.map +1 -1
  19. package/apps/app-lifeops/src/actions/inbox.js +8 -1
  20. package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
  21. package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +1 -1
  22. package/apps/app-lifeops/src/actions/life.extractor.js +103 -4
  23. package/apps/app-lifeops/src/actions/life.js +8 -0
  24. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +6 -0
  25. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +1 -0
  26. package/apps/app-lifeops/src/actions/non-actionable-request.js +33 -0
  27. package/apps/app-lifeops/src/actions/password-manager.d.ts.map +1 -1
  28. package/apps/app-lifeops/src/actions/password-manager.js +11 -2
  29. package/apps/app-lifeops/src/actions/relationships.d.ts +3 -1
  30. package/apps/app-lifeops/src/actions/relationships.d.ts.map +1 -1
  31. package/apps/app-lifeops/src/actions/relationships.js +167 -11
  32. package/apps/app-lifeops/src/actions/remote-desktop.js +1 -1
  33. package/apps/app-lifeops/src/actions/screen-time.d.ts.map +1 -1
  34. package/apps/app-lifeops/src/actions/screen-time.js +8 -2
  35. package/apps/app-lifeops/src/actions/start-remote-session.js +1 -1
  36. package/apps/app-lifeops/src/actions/subscriptions.d.ts +5 -0
  37. package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +1 -0
  38. package/apps/app-lifeops/src/actions/subscriptions.js +251 -0
  39. package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +1 -1
  40. package/apps/app-lifeops/src/actions/twilio-call.js +48 -3
  41. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +1 -1
  42. package/apps/app-lifeops/src/actions/update-owner-profile.js +2 -1
  43. package/apps/app-lifeops/src/actions/website-blocker.d.ts +6 -2
  44. package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
  45. package/apps/app-lifeops/src/actions/website-blocker.js +38 -0
  46. package/apps/app-lifeops/src/actions/x-read.d.ts.map +1 -1
  47. package/apps/app-lifeops/src/actions/x-read.js +27 -3
  48. package/apps/app-lifeops/src/dossier/action.d.ts.map +1 -1
  49. package/apps/app-lifeops/src/dossier/action.js +8 -7
  50. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts.map +1 -1
  51. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +1 -0
  52. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts.map +1 -1
  53. package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +2 -1
  54. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts.map +1 -1
  55. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +2 -1
  56. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +1 -1
  57. package/apps/app-lifeops/src/lifeops/calendly-client.js +4 -2
  58. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.d.ts.map +1 -1
  59. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +6 -5
  60. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +1 -1
  61. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +1 -1
  62. package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +84 -6
  63. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +1 -1
  64. package/apps/app-lifeops/src/lifeops/remote-desktop.js +30 -0
  65. package/apps/app-lifeops/src/lifeops/repository.d.ts +15 -0
  66. package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
  67. package/apps/app-lifeops/src/lifeops/repository.js +330 -1
  68. package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +222 -42
  69. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts +2 -0
  70. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
  71. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +763 -0
  72. package/apps/app-lifeops/src/lifeops/service.d.ts +64 -1
  73. package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
  74. package/apps/app-lifeops/src/lifeops/service.js +2 -1
  75. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts +54 -0
  76. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -0
  77. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +213 -0
  78. package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts +80 -0
  79. package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts.map +1 -0
  80. package/apps/app-lifeops/src/lifeops/twilio.d.ts.map +1 -1
  81. package/apps/app-lifeops/src/lifeops/twilio.js +4 -2
  82. package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts.map +1 -1
  83. package/apps/app-lifeops/src/lifeops/whatsapp-client.js +4 -2
  84. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  85. package/apps/app-lifeops/src/lifeops/x-poster.js +12 -6
  86. package/apps/app-lifeops/src/lifeops/x-reader.d.ts.map +1 -1
  87. package/apps/app-lifeops/src/lifeops/x-reader.js +7 -5
  88. package/apps/app-lifeops/src/plugin.d.ts.map +1 -1
  89. package/apps/app-lifeops/src/plugin.js +31 -24
  90. package/apps/app-lifeops/src/provider.d.ts.map +1 -1
  91. package/apps/app-lifeops/src/provider.js +4 -4
  92. package/apps/app-lifeops/src/providers/inbox-triage.js +2 -2
  93. package/apps/app-lifeops/src/providers/lifeops.d.ts.map +1 -1
  94. package/apps/app-lifeops/src/providers/lifeops.js +19 -10
  95. package/apps/app-lifeops/src/providers/website-blocker.js +1 -1
  96. package/apps/app-lifeops/src/public.d.ts +4 -0
  97. package/apps/app-lifeops/src/public.d.ts.map +1 -0
  98. package/apps/app-lifeops/src/public.js +3 -0
  99. package/apps/app-lifeops/src/routes/plugin.d.ts +18 -0
  100. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -0
  101. package/apps/app-lifeops/src/routes/plugin.js +270 -0
  102. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +1 -1
  103. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +18 -2
  104. package/package.json +1 -1
  105. package/packages/agent/src/actions/browser-session.d.ts +3 -0
  106. package/packages/agent/src/actions/browser-session.d.ts.map +1 -0
  107. package/packages/agent/src/actions/browser-session.js +207 -0
  108. package/packages/agent/src/actions/context-signal.d.ts +1 -1
  109. package/packages/agent/src/actions/context-signal.d.ts.map +1 -1
  110. package/packages/agent/src/actions/context-signal.js +1 -1
  111. package/packages/agent/src/actions/extract-page.d.ts +3 -0
  112. package/packages/agent/src/actions/extract-page.d.ts.map +1 -0
  113. package/packages/agent/src/actions/extract-page.js +124 -0
  114. package/packages/agent/src/actions/grounded-action-reply.js +1 -1
  115. package/packages/agent/src/actions/recent-conversation-texts.d.ts +9 -0
  116. package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -0
  117. package/packages/agent/src/actions/recent-conversation-texts.js +81 -0
  118. package/packages/agent/src/actions/set-user-name.js +1 -1
  119. package/packages/agent/src/actions/web-search.d.ts +4 -10
  120. package/packages/agent/src/actions/web-search.d.ts.map +1 -1
  121. package/packages/agent/src/actions/web-search.js +89 -19
  122. package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -1
  123. package/packages/agent/src/api/binance-skill-helpers.js +1 -1
  124. package/packages/agent/src/api/chat-augmentation.d.ts +1 -20
  125. package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -1
  126. package/packages/agent/src/api/chat-augmentation.js +2 -110
  127. package/packages/agent/src/api/conversation-metadata.d.ts +9 -0
  128. package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -0
  129. package/packages/agent/src/api/conversation-metadata.js +98 -0
  130. package/packages/agent/src/api/conversation-routes.d.ts.map +1 -1
  131. package/packages/agent/src/api/conversation-routes.js +40 -9
  132. package/packages/agent/src/api/permissions-routes.js +1 -1
  133. package/packages/agent/src/api/server-helpers-auth.js +1 -1
  134. package/packages/agent/src/api/server-helpers.d.ts +2 -1
  135. package/packages/agent/src/api/server-helpers.d.ts.map +1 -1
  136. package/packages/agent/src/api/server-helpers.js +2 -110
  137. package/packages/agent/src/api/server-types.d.ts +14 -0
  138. package/packages/agent/src/api/server-types.d.ts.map +1 -1
  139. package/packages/agent/src/api/server.d.ts.map +1 -1
  140. package/packages/agent/src/api/server.js +3 -13
  141. package/packages/agent/src/api/workbench-routes.d.ts.map +1 -1
  142. package/packages/agent/src/api/workbench-routes.js +0 -14
  143. package/packages/agent/src/auth/credentials.d.ts.map +1 -1
  144. package/packages/agent/src/auth/credentials.js +8 -0
  145. package/packages/agent/src/providers/automation-terminal-bridge.d.ts +3 -0
  146. package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +1 -0
  147. package/packages/agent/src/providers/automation-terminal-bridge.js +71 -0
  148. package/packages/agent/src/providers/recent-conversations.d.ts.map +1 -1
  149. package/packages/agent/src/providers/recent-conversations.js +5 -0
  150. package/packages/agent/src/providers/relevant-conversations.d.ts.map +1 -1
  151. package/packages/agent/src/providers/relevant-conversations.js +5 -0
  152. package/packages/agent/src/providers/user-name.d.ts.map +1 -1
  153. package/packages/agent/src/providers/user-name.js +1 -1
  154. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  155. package/packages/agent/src/runtime/eliza-plugin.js +6 -0
  156. package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -1
  157. package/packages/agent/src/runtime/plugin-resolver.js +115 -0
  158. package/packages/agent/src/services/browser-workspace-types.d.ts +5 -1
  159. package/packages/agent/src/services/browser-workspace-types.d.ts.map +1 -1
  160. package/packages/agent/src/services/browser-workspace.d.ts.map +1 -1
  161. package/packages/agent/src/services/browser-workspace.js +178 -7
  162. package/packages/agent/src/services/escalation.d.ts +0 -11
  163. package/packages/agent/src/services/escalation.d.ts.map +1 -1
  164. package/packages/agent/src/services/escalation.js +19 -58
  165. package/packages/agent/src/services/hosted-tools.d.ts +70 -0
  166. package/packages/agent/src/services/hosted-tools.d.ts.map +1 -0
  167. package/packages/agent/src/services/hosted-tools.js +87 -0
  168. package/packages/agent/src/services/owner-name.d.ts +4 -0
  169. package/packages/agent/src/services/owner-name.d.ts.map +1 -0
  170. package/packages/agent/src/services/owner-name.js +46 -0
  171. package/packages/agent/src/services/registry-client-queries.d.ts +1 -1
  172. package/packages/agent/src/services/registry-client-queries.js +1 -1
  173. package/packages/agent/src/services/registry-client-types.d.ts +1 -1
  174. package/packages/app-core/src/api/client-automations.d.ts +8 -0
  175. package/packages/app-core/src/api/client-automations.d.ts.map +1 -0
  176. package/packages/app-core/src/api/client-automations.js +7 -0
  177. package/packages/app-core/src/api/client-browser-workspace.d.ts +3 -0
  178. package/packages/app-core/src/api/client-browser-workspace.d.ts.map +1 -1
  179. package/packages/app-core/src/api/client-browser-workspace.js +3 -0
  180. package/packages/app-core/src/api/client-chat.d.ts +8 -2
  181. package/packages/app-core/src/api/client-chat.d.ts.map +1 -1
  182. package/packages/app-core/src/api/client-chat.js +14 -1
  183. package/packages/app-core/src/api/client-types-chat.d.ts +4 -0
  184. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
  185. package/packages/app-core/src/api/client-types-config.d.ts +67 -2
  186. package/packages/app-core/src/api/client-types-config.d.ts.map +1 -1
  187. package/packages/app-core/src/api/client.d.ts +1 -0
  188. package/packages/app-core/src/api/client.d.ts.map +1 -1
  189. package/packages/app-core/src/api/client.js +1 -0
  190. package/packages/app-core/src/components/apps/helpers.d.ts +1 -1
  191. package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
  192. package/packages/app-core/src/components/apps/helpers.js +5 -9
  193. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +1 -1
  194. package/packages/app-core/src/components/apps/internal-tool-apps.js +10 -1
  195. package/packages/app-core/src/components/conversations/conversation-sidebar-model.d.ts.map +1 -1
  196. package/packages/app-core/src/components/conversations/conversation-sidebar-model.js +6 -0
  197. package/packages/app-core/src/components/pages/AutomationRoomChatPane.d.ts +16 -0
  198. package/packages/app-core/src/components/pages/AutomationRoomChatPane.d.ts.map +1 -0
  199. package/packages/app-core/src/components/pages/AutomationRoomChatPane.js +202 -0
  200. package/packages/app-core/src/components/pages/AutomationsView.d.ts +1 -4
  201. package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +1 -1
  202. package/packages/app-core/src/components/pages/AutomationsView.js +565 -265
  203. package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts.map +1 -1
  204. package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +118 -24
  205. package/packages/app-core/src/components/pages/automation-conversations.d.ts +15 -0
  206. package/packages/app-core/src/components/pages/automation-conversations.d.ts.map +1 -0
  207. package/packages/app-core/src/components/pages/automation-conversations.js +190 -0
  208. package/packages/app-core/src/components/pages/plugin-list-utils.js +4 -4
  209. package/packages/app-core/src/config/boot-config-store.d.ts +1 -1
  210. package/packages/app-core/src/config/boot-config-store.d.ts.map +1 -1
  211. package/packages/app-core/src/state/useOnboardingCallbacks.d.ts +14 -0
  212. package/packages/app-core/src/state/useOnboardingCallbacks.d.ts.map +1 -1
  213. package/packages/app-core/src/state/useOnboardingCallbacks.js +1 -1
  214. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +2 -2
  215. package/packages/app-core/src/utils/desktop-workspace.d.ts +2 -2
  216. package/packages/app-core/src/utils/desktop-workspace.d.ts.map +1 -1
  217. package/packages/app-core/src/utils/desktop-workspace.js +7 -2
  218. package/packages/shared/src/contracts/lifeops.d.ts +26 -0
  219. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  220. package/packages/shared/src/contracts/lifeops.js +28 -0
  221. package/packages/typescript/src/actions.d.ts.map +1 -1
  222. package/packages/typescript/src/actions.js +12 -0
  223. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
  224. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +8 -2
  225. package/packages/typescript/src/features/advanced-capabilities/providers/settings.d.ts.map +1 -1
  226. package/packages/typescript/src/features/advanced-capabilities/providers/settings.js +11 -3
  227. package/packages/typescript/src/features/basic-capabilities/providers/actions.d.ts.map +1 -1
  228. package/packages/typescript/src/features/basic-capabilities/providers/actions.js +23 -1
  229. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts +5 -0
  230. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts.map +1 -0
  231. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.js +22 -0
  232. package/packages/typescript/src/features/basic-capabilities/providers/providers.d.ts.map +1 -1
  233. package/packages/typescript/src/features/basic-capabilities/providers/providers.js +10 -5
  234. package/packages/typescript/src/features/knowledge/documents-provider.d.ts.map +1 -1
  235. package/packages/typescript/src/features/knowledge/documents-provider.js +1 -0
  236. package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts +10 -0
  237. package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts.map +1 -0
  238. package/packages/typescript/src/features/shared/schedule-follow-up-response.js +49 -0
  239. package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts +1 -0
  240. package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts.map +1 -1
  241. package/packages/typescript/src/features/trajectories/TrajectoriesService.js +21 -2
  242. package/packages/typescript/src/features/trust/providers/settings.d.ts.map +1 -1
  243. package/packages/typescript/src/features/trust/providers/settings.js +11 -1
  244. package/packages/typescript/src/prompts.d.ts +4 -4
  245. package/packages/typescript/src/prompts.d.ts.map +1 -1
  246. package/packages/typescript/src/prompts.js +10 -2
  247. package/packages/typescript/src/services/message.d.ts +1 -0
  248. package/packages/typescript/src/services/message.d.ts.map +1 -1
  249. package/packages/typescript/src/services/message.js +483 -18
  250. package/packages/typescript/src/types/components.d.ts +6 -0
  251. package/packages/typescript/src/types/components.d.ts.map +1 -1
  252. package/packages/typescript/src/utils/context-routing.d.ts.map +1 -1
  253. package/packages/typescript/src/utils/context-routing.js +5 -1
  254. package/packages/typescript/src/utils/toon.d.ts.map +1 -1
  255. package/packages/typescript/src/utils/toon.js +23 -2
  256. package/packages/typescript/src/utils.d.ts +1 -0
  257. package/packages/typescript/src/utils.d.ts.map +1 -1
  258. package/packages/typescript/src/utils.js +1 -0
  259. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts +0 -2
  260. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts.map +0 -1
  261. package/apps/app-lifeops/src/types/index.d.ts +0 -3
  262. package/apps/app-lifeops/src/types/index.d.ts.map +0 -1
  263. package/apps/app-lifeops/src/types/index.js +0 -1
  264. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts +0 -2
  265. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts.map +0 -1
  266. package/apps/app-lifeops/src/types/website-blocker-settings-card.js +0 -1
  267. package/packages/agent/src/contracts/lifeops.d.ts +0 -2
  268. package/packages/agent/src/contracts/lifeops.d.ts.map +0 -1
  269. package/packages/agent/src/contracts/lifeops.js +0 -1
  270. package/packages/app-core/src/components/pages/N8nWorkflowsPanel.d.ts +0 -18
  271. package/packages/app-core/src/components/pages/N8nWorkflowsPanel.d.ts.map +0 -1
  272. package/packages/app-core/src/components/pages/N8nWorkflowsPanel.js +0 -542
  273. /package/apps/app-lifeops/src/{types/app-blocker-settings-card.js → lifeops/subscriptions-types.js} +0 -0
@@ -1,23 +1,18 @@
1
1
  /**
2
- * Web search action via Brave Search API (Path B).
2
+ * Hosted web search action.
3
3
  *
4
- * Provides explicit web search capability for:
5
- * - Non-Claude models (that lack built-in web search)
6
- * - Explicit "search the web for X" requests from users
7
- * - Fallback when Anthropic server-side search is insufficient
8
- *
9
- * Configuration:
10
- * BRAVE_API_KEY env var OR tools.web.search.apiKey in agent config
11
- *
12
- * This action is registered as WEB_SEARCH in the ElizaOS action system.
4
+ * Prefers Eliza Cloud hosted Google-grounded Gemini search when cloud tooling
5
+ * is configured. Falls back to the Brave Search API when cloud search is not
6
+ * available locally.
13
7
  */
14
8
  import { logger } from "@elizaos/core";
15
9
  import { hasRoleAccess } from "../security/access.js";
16
10
  import { hasContextSignalSyncForKey } from "./context-signal.js";
11
+ import { isHostedCloudToolingConfigured, searchHostedCloudWeb, } from "../services/hosted-tools.js";
17
12
  // ---------------------------------------------------------------------------
18
13
  // Helpers
19
14
  // ---------------------------------------------------------------------------
20
- function resolveApiKey(runtime) {
15
+ function resolveBraveApiKey(runtime) {
21
16
  // 1. Direct env var
22
17
  if (process.env.BRAVE_API_KEY)
23
18
  return process.env.BRAVE_API_KEY;
@@ -41,6 +36,19 @@ function resolveMaxResults(runtime) {
41
36
  }
42
37
  return 5;
43
38
  }
39
+ function formatHostedResults(result) {
40
+ const citations = result.results
41
+ .map((entry, index) => `${index + 1}. ${entry.title}\n ${entry.url}`)
42
+ .join("\n");
43
+ return [
44
+ `Search answer for "${result.query}":`,
45
+ "",
46
+ result.answer,
47
+ citations ? `\nCitations:\n${citations}` : "",
48
+ ]
49
+ .filter(Boolean)
50
+ .join("\n");
51
+ }
44
52
  async function braveSearch(query, apiKey, maxResults, timeoutMs = 10_000) {
45
53
  const url = new URL("https://api.search.brave.com/res/v1/web/search");
46
54
  url.searchParams.set("q", query);
@@ -90,21 +98,23 @@ export const webSearchAction = {
90
98
  "GOOGLE",
91
99
  "SEARCH",
92
100
  ],
93
- description: "Search the web for current information using the Brave Search API. " +
101
+ description: "Search the web for current information using Eliza Cloud hosted Google search when available, with Brave Search as a local fallback. " +
94
102
  "Use when you need real-time or recent information that may not be in your training data.",
95
103
  validate: async (runtime, message, state) => {
96
104
  if (!(await hasRoleAccess(runtime, message, "USER")))
97
105
  return false;
98
- const key = resolveApiKey(runtime);
99
- if (!key)
106
+ const hasHostedSearch = isHostedCloudToolingConfigured(process.env);
107
+ const braveKey = resolveBraveApiKey(runtime);
108
+ if (!hasHostedSearch && !braveKey)
100
109
  return false;
101
110
  return hasWebSearchContextSignal(message, state);
102
111
  },
103
112
  handler: async (runtime, message, _state, options) => {
104
- const apiKey = resolveApiKey(runtime);
105
- if (!apiKey) {
113
+ const braveApiKey = resolveBraveApiKey(runtime);
114
+ const hasHostedSearch = isHostedCloudToolingConfigured(process.env);
115
+ if (!hasHostedSearch && !braveApiKey) {
106
116
  return {
107
- text: "Web search is not configured. Set BRAVE_API_KEY to enable it.",
117
+ text: "Web search is not configured. Connect Eliza Cloud hosted tools or set BRAVE_API_KEY to enable it.",
108
118
  success: false,
109
119
  values: { success: false, error: "NO_API_KEY" },
110
120
  data: { actionName: "WEB_SEARCH" },
@@ -133,8 +143,31 @@ export const webSearchAction = {
133
143
  }
134
144
  const maxResults = resolveMaxResults(runtime);
135
145
  try {
146
+ if (hasHostedSearch) {
147
+ logger.info(`[web-search] Hosted search: "${query}" (max ${maxResults})`);
148
+ const hostedResult = await searchHostedCloudWeb({
149
+ maxResults,
150
+ query,
151
+ });
152
+ return {
153
+ text: formatHostedResults(hostedResult),
154
+ success: true,
155
+ values: {
156
+ success: true,
157
+ provider: hostedResult.provider,
158
+ resultCount: hostedResult.results.length,
159
+ },
160
+ data: {
161
+ actionName: "WEB_SEARCH",
162
+ ...hostedResult,
163
+ },
164
+ };
165
+ }
166
+ if (!braveApiKey) {
167
+ throw new Error("Hosted search is unavailable and BRAVE_API_KEY is not configured.");
168
+ }
136
169
  logger.info(`[web-search] Brave search: "${query}" (max ${maxResults})`);
137
- const results = await braveSearch(query, apiKey, maxResults);
170
+ const results = await braveSearch(query, braveApiKey, maxResults);
138
171
  const formatted = formatResults(results, query);
139
172
  return {
140
173
  text: formatted,
@@ -156,7 +189,44 @@ export const webSearchAction = {
156
189
  }
157
190
  catch (err) {
158
191
  const errMsg = err instanceof Error ? err.message : String(err);
159
- logger.warn(`[web-search] Brave search failed: ${errMsg}`);
192
+ if (hasHostedSearch && braveApiKey) {
193
+ try {
194
+ logger.warn(`[web-search] Hosted search failed, falling back to Brave: ${errMsg}`);
195
+ const fallbackResults = await braveSearch(query, braveApiKey, maxResults);
196
+ return {
197
+ text: formatResults(fallbackResults, query),
198
+ success: true,
199
+ values: {
200
+ success: true,
201
+ provider: "brave",
202
+ resultCount: fallbackResults.length,
203
+ },
204
+ data: {
205
+ actionName: "WEB_SEARCH",
206
+ provider: "brave",
207
+ query,
208
+ results: fallbackResults.map((result) => ({
209
+ title: result.title,
210
+ url: result.url,
211
+ description: result.description,
212
+ })),
213
+ },
214
+ };
215
+ }
216
+ catch (fallbackError) {
217
+ const fallbackMessage = fallbackError instanceof Error
218
+ ? fallbackError.message
219
+ : String(fallbackError);
220
+ logger.warn(`[web-search] Hosted and Brave search failed: ${fallbackMessage}`);
221
+ return {
222
+ text: `Web search failed: ${fallbackMessage}`,
223
+ success: false,
224
+ values: { success: false, error: "SEARCH_FAILED" },
225
+ data: { actionName: "WEB_SEARCH", query },
226
+ };
227
+ }
228
+ }
229
+ logger.warn(`[web-search] Search failed: ${errMsg}`);
160
230
  return {
161
231
  text: `Web search failed: ${errMsg}`,
162
232
  success: false,
@@ -1 +1 @@
1
- {"version":3,"file":"binance-skill-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/binance-skill-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAkBvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAsCF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GACZ,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAOhD;AAED,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,oBAAoB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAWT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,oBAAoB,EAAE,CAsDxB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,aAAa,EAAE,oBAAoB,EAAE,EACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,EAC/D,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,GACA,OAAO,CAAC,IAAI,CAAC,CAyGf;AAonBD,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4HxB"}
1
+ {"version":3,"file":"binance-skill-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/binance-skill-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAkBvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAoCF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GACZ,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAOhD;AAED,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,oBAAoB,EAAE,EACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAWT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,oBAAoB,EAAE,CAsDxB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,aAAa,EAAE,oBAAoB,EAAE,EACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,EAC/D,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,GACA,OAAO,CAAC,IAAI,CAAC,CAyGf;AAonBD,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EAC9C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4HxB"}
@@ -27,7 +27,7 @@ async function resolveBuiltInFallbackAction(actionName) {
27
27
  return null;
28
28
  }
29
29
  if (!selfControlFallbackActionsPromise) {
30
- selfControlFallbackActionsPromise = import("@elizaos/app-lifeops/selfcontrol")
30
+ selfControlFallbackActionsPromise = import("@elizaos/app-lifeops/public")
31
31
  .then((mod) => ({
32
32
  BLOCK_WEBSITES: mod.selfControlBlockWebsitesAction,
33
33
  REQUEST_WEBSITE_BLOCKING_PERMISSION: mod.selfControlRequestPermissionAction,
@@ -7,28 +7,9 @@
7
7
  import { type AgentRuntime, type ChannelType, createMessageMemory, type Media, type UUID } from "@elizaos/core";
8
8
  export declare function maybeAugmentChatMessageWithLanguage(message: ReturnType<typeof createMessageMemory>, preferredLanguage?: string): ReturnType<typeof createMessageMemory>;
9
9
  export declare function getErrorMessage(err: unknown, fallback?: string): string;
10
- export declare function getChatKnowledgeTimeoutMs(): number;
11
- export declare function shouldAugmentChatMessageWithKnowledge(userPrompt: string): boolean;
12
- export declare function getChatKnowledgeMatchesWithTimeout(lookup: Promise<Array<{
13
- id: UUID;
14
- content: {
15
- text?: string;
16
- };
17
- similarity?: number;
18
- metadata?: Record<string, unknown>;
19
- }>>): Promise<Array<{
20
- id: UUID;
21
- content: {
22
- text?: string;
23
- };
24
- similarity?: number;
25
- metadata?: Record<string, unknown>;
26
- }>>;
27
- export declare function normalizeChatKnowledgeSnippet(text: string): string;
28
- export declare function buildChatKnowledgePrompt(userPrompt: string, snippets: string[]): string;
29
10
  export declare function buildAgentAwarenessContextPrompt(runtime: AgentRuntime, userPrompt: string): Promise<string>;
30
11
  export declare function maybeAugmentChatMessageWithAgentAwareness(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
31
- export declare function maybeAugmentChatMessageWithKnowledge(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
12
+ export declare function maybeAugmentChatMessageWithKnowledge(_runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
32
13
  export interface ChatImageAttachment {
33
14
  /** Base64-encoded image data (no data URL prefix). */
34
15
  data: string;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/chat-augmentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-augmentation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/chat-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAGhB,mBAAmB,EACnB,KAAK,KAAK,EACV,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAuBvB,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAexC;AAMD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,QAAQ,SAAsB,GAC7B,MAAM,CAIR;AAyED,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAED,wBAAsB,yCAAyC,CAC7D,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAejD;AAED,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAEjD;AAMD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,eAAO,MAAM,+BAA+B,wCACL,CAAC;AAExC,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBjE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAuB,SAAQ,KAAK;IACnD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,GACxC;IACD,kFAAkF;IAClF,WAAW,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAClD,sEAAsE;IACtE,kBAAkB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;CACzC,CAoBA;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/C,MAAM,GAAG,IAAI,CAQf;AAED,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG;IAAE,WAAW,EAAE,aAAa,CAAC;IAAC,cAAc,EAAE,aAAa,CAAA;CAAE,CAgDhE"}
@@ -10,7 +10,6 @@ import { normalizeCharacterLanguage } from "@elizaos/shared/onboarding-presets";
10
10
  import { detectRuntimeModel, resolveProviderFromModel } from "./agent-model.js";
11
11
  import { isCloudProvisionedContainer } from "./cloud-provisioning.js";
12
12
  import { extractCompatTextContent } from "./compat-utils.js";
13
- import { getKnowledgeService, } from "./knowledge-service-loader.js";
14
13
  import { getWalletAddresses } from "./wallet.js";
15
14
  import { resolvePluginEvmLoaded } from "./wallet-capability.js";
16
15
  // ---------------------------------------------------------------------------
@@ -53,66 +52,6 @@ export function getErrorMessage(err, fallback = "generation failed") {
53
52
  return fallback;
54
53
  }
55
54
  // ---------------------------------------------------------------------------
56
- // Knowledge augmentation
57
- // ---------------------------------------------------------------------------
58
- const CHAT_KNOWLEDGE_MIN_SIMILARITY = 0.2;
59
- const CHAT_KNOWLEDGE_MAX_SNIPPETS = 3;
60
- const CHAT_KNOWLEDGE_MAX_CHARS = 900;
61
- const DEFAULT_CHAT_KNOWLEDGE_TIMEOUT_MS = 4_000;
62
- const MAX_CHAT_KNOWLEDGE_TIMEOUT_MS = 15_000;
63
- export function getChatKnowledgeTimeoutMs() {
64
- const raw = process.env.CHAT_KNOWLEDGE_TIMEOUT_MS;
65
- if (!raw)
66
- return DEFAULT_CHAT_KNOWLEDGE_TIMEOUT_MS;
67
- const parsed = Number.parseInt(raw, 10);
68
- if (Number.isNaN(parsed) || parsed <= 0) {
69
- return DEFAULT_CHAT_KNOWLEDGE_TIMEOUT_MS;
70
- }
71
- return Math.min(parsed, MAX_CHAT_KNOWLEDGE_TIMEOUT_MS);
72
- }
73
- export function shouldAugmentChatMessageWithKnowledge(userPrompt) {
74
- const normalizedPrompt = userPrompt.toLowerCase();
75
- return [
76
- "uploaded",
77
- "file",
78
- "document",
79
- "knowledge",
80
- "codeword",
81
- "attachment",
82
- ].some((token) => normalizedPrompt.includes(token));
83
- }
84
- export async function getChatKnowledgeMatchesWithTimeout(lookup) {
85
- const timeoutMs = getChatKnowledgeTimeoutMs();
86
- let timer = null;
87
- try {
88
- return await Promise.race([
89
- lookup,
90
- new Promise((_resolve, reject) => {
91
- timer = setTimeout(() => {
92
- reject(new Error("Chat knowledge lookup timed out"));
93
- }, timeoutMs);
94
- }),
95
- ]);
96
- }
97
- finally {
98
- if (timer)
99
- clearTimeout(timer);
100
- }
101
- }
102
- export function normalizeChatKnowledgeSnippet(text) {
103
- return text.replace(/\s+/g, " ").trim().slice(0, CHAT_KNOWLEDGE_MAX_CHARS);
104
- }
105
- export function buildChatKnowledgePrompt(userPrompt, snippets) {
106
- return [
107
- "Relevant uploaded knowledge snippets:",
108
- ...snippets.map((snippet, index) => `[K${index + 1}] ${snippet}`),
109
- "",
110
- "Use the uploaded knowledge when it is relevant to the user's request. Ignore it when it is not relevant.",
111
- "",
112
- `User message: ${userPrompt}`,
113
- ].join("\n");
114
- }
115
- // ---------------------------------------------------------------------------
116
55
  // Agent self-awareness augmentation
117
56
  // ---------------------------------------------------------------------------
118
57
  const AGENT_AWARENESS_INTENT_RE = /\b(model|provider|wallet|address|balance|swap|trade|transfer|send|token|bnb|eth|sol|onchain|on-chain|plugin|plugins|capabilit(?:y|ies)|cloud|credits|hosted|hosting|runtime|what are you running)\b/i;
@@ -225,55 +164,8 @@ export async function maybeAugmentChatMessageWithAgentAwareness(runtime, message
225
164
  },
226
165
  };
227
166
  }
228
- export async function maybeAugmentChatMessageWithKnowledge(runtime, message) {
229
- const userPrompt = extractCompatTextContent(message.content)?.trim();
230
- if (!userPrompt || !runtime.agentId) {
231
- return message;
232
- }
233
- if (!shouldAugmentChatMessageWithKnowledge(userPrompt)) {
234
- return message;
235
- }
236
- try {
237
- const knowledge = await getKnowledgeService(runtime);
238
- if (!knowledge.service) {
239
- return message;
240
- }
241
- const searchMessage = {
242
- ...message,
243
- id: crypto.randomUUID(),
244
- agentId: runtime.agentId,
245
- entityId: runtime.agentId,
246
- roomId: runtime.agentId,
247
- content: { text: userPrompt },
248
- createdAt: Date.now(),
249
- };
250
- const snippets = (await getChatKnowledgeMatchesWithTimeout(knowledge.service.getKnowledge(searchMessage, {
251
- roomId: runtime.agentId,
252
- })))
253
- .filter((match) => (match.similarity ?? 0) >= CHAT_KNOWLEDGE_MIN_SIMILARITY)
254
- .slice(0, CHAT_KNOWLEDGE_MAX_SNIPPETS)
255
- .map((match) => normalizeChatKnowledgeSnippet(match.content?.text ?? ""))
256
- .filter((snippet) => snippet.length > 0);
257
- if (snippets.length === 0) {
258
- return message;
259
- }
260
- return {
261
- ...message,
262
- content: {
263
- ...message.content,
264
- text: buildChatKnowledgePrompt(userPrompt, snippets),
265
- },
266
- };
267
- }
268
- catch (err) {
269
- runtime.logger?.warn({
270
- err,
271
- src: "eliza-api",
272
- messageId: message.id,
273
- roomId: message.roomId,
274
- }, "Failed to augment chat message with uploaded knowledge");
275
- return message;
276
- }
167
+ export async function maybeAugmentChatMessageWithKnowledge(_runtime, message) {
168
+ return message;
277
169
  }
278
170
  const MAX_CHAT_IMAGES = 4;
279
171
  /** Maximum base64 data length for a single image (~3.75 MB binary). */
@@ -0,0 +1,9 @@
1
+ import type { JsonValue, Room } from "@elizaos/core";
2
+ import type { ConversationMeta, ConversationMetadata } from "./server-types.js";
3
+ type RoomMetadataRecord = Record<string, JsonValue>;
4
+ export declare function sanitizeConversationMetadata(value: unknown): ConversationMetadata | undefined;
5
+ export declare function buildConversationRoomMetadata(conversation: Pick<ConversationMeta, "id" | "metadata">, ownerId: string, existingMetadata?: unknown): RoomMetadataRecord;
6
+ export declare function extractConversationMetadataFromRoom(room: Pick<Room, "metadata"> | null | undefined, expectedConversationId?: string): ConversationMetadata | undefined;
7
+ export declare function isAutomationConversationMetadata(metadata: ConversationMetadata | null | undefined): boolean;
8
+ export {};
9
+ //# sourceMappingURL=conversation-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-metadata.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/conversation-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AA8BpD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,oBAAoB,GAAG,SAAS,CA4ClC;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,EACvD,OAAO,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,OAAO,GACzB,kBAAkB,CAkBpB;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/C,sBAAsB,CAAC,EAAE,MAAM,GAC9B,oBAAoB,GAAG,SAAS,CAkBlC;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAChD,OAAO,CAMT"}
@@ -0,0 +1,98 @@
1
+ const VALID_SCOPES = new Set([
2
+ "general",
3
+ "automation-coordinator",
4
+ "automation-workflow",
5
+ "automation-workflow-draft",
6
+ ]);
7
+ const VALID_AUTOMATION_TYPES = new Set(["coordinator_text", "n8n_workflow"]);
8
+ function asRecord(value) {
9
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
10
+ return null;
11
+ }
12
+ return value;
13
+ }
14
+ function normalizeOptionalString(value) {
15
+ if (typeof value !== "string") {
16
+ return undefined;
17
+ }
18
+ const trimmed = value.trim();
19
+ return trimmed.length > 0 ? trimmed : undefined;
20
+ }
21
+ export function sanitizeConversationMetadata(value) {
22
+ const record = asRecord(value);
23
+ if (!record) {
24
+ return undefined;
25
+ }
26
+ const scope = normalizeOptionalString(record.scope);
27
+ const automationType = normalizeOptionalString(record.automationType);
28
+ const next = {};
29
+ if (scope && VALID_SCOPES.has(scope)) {
30
+ next.scope = scope;
31
+ }
32
+ if (automationType && VALID_AUTOMATION_TYPES.has(automationType)) {
33
+ next.automationType = automationType;
34
+ }
35
+ const taskId = normalizeOptionalString(record.taskId);
36
+ if (taskId)
37
+ next.taskId = taskId;
38
+ const triggerId = normalizeOptionalString(record.triggerId);
39
+ if (triggerId)
40
+ next.triggerId = triggerId;
41
+ const workflowId = normalizeOptionalString(record.workflowId);
42
+ if (workflowId)
43
+ next.workflowId = workflowId;
44
+ const workflowName = normalizeOptionalString(record.workflowName);
45
+ if (workflowName)
46
+ next.workflowName = workflowName;
47
+ const draftId = normalizeOptionalString(record.draftId);
48
+ if (draftId)
49
+ next.draftId = draftId;
50
+ const sourceConversationId = normalizeOptionalString(record.sourceConversationId);
51
+ if (sourceConversationId)
52
+ next.sourceConversationId = sourceConversationId;
53
+ const terminalBridgeConversationId = normalizeOptionalString(record.terminalBridgeConversationId);
54
+ if (terminalBridgeConversationId) {
55
+ next.terminalBridgeConversationId = terminalBridgeConversationId;
56
+ }
57
+ return Object.keys(next).length > 0 ? next : undefined;
58
+ }
59
+ export function buildConversationRoomMetadata(conversation, ownerId, existingMetadata) {
60
+ const base = (asRecord(existingMetadata) ?? {});
61
+ const sanitized = sanitizeConversationMetadata(conversation.metadata);
62
+ const next = {
63
+ ...base,
64
+ ownership: { ownerId },
65
+ };
66
+ if (sanitized) {
67
+ next.webConversation = {
68
+ conversationId: conversation.id,
69
+ ...sanitized,
70
+ };
71
+ }
72
+ else {
73
+ delete next.webConversation;
74
+ }
75
+ return next;
76
+ }
77
+ export function extractConversationMetadataFromRoom(room, expectedConversationId) {
78
+ const roomMetadata = asRecord(room?.metadata);
79
+ if (!roomMetadata) {
80
+ return undefined;
81
+ }
82
+ const stored = asRecord(roomMetadata.webConversation);
83
+ if (!stored) {
84
+ return undefined;
85
+ }
86
+ const storedConversationId = normalizeOptionalString(stored.conversationId);
87
+ if (expectedConversationId &&
88
+ storedConversationId &&
89
+ storedConversationId !== expectedConversationId) {
90
+ return undefined;
91
+ }
92
+ return sanitizeConversationMetadata(stored);
93
+ }
94
+ export function isAutomationConversationMetadata(metadata) {
95
+ return (metadata?.scope === "automation-coordinator" ||
96
+ metadata?.scope === "automation-workflow" ||
97
+ metadata?.scope === "automation-workflow-draft");
98
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/conversation-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,OAAO,EAIZ,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAwBvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAEL,KAAK,gBAAgB,EAOtB,MAAM,aAAa,CAAC;AA+DrB,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,0BAA0B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,KAAK,EAAE,sBAAsB,CAAC;CAC/B;AAuPD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAqBvE;AASD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,qBAAqB,GAAE,SAAS,MAAM,EAAO,GAC5C,MAAM,CAmBR;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EACF,IAAI,CACF,oBAAoB,EACpB,uBAAuB,GAAG,iBAAiB,GAAG,kBAAkB,CACjE,GACD,IAAI,GACJ,SAAS,GACZ,OAAO,CA8BT;AAED,wBAAsB,2CAA2C,CAC/D,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,IAAI,EACZ,qBAAqB,EAAE,SAAS,MAAM,EAAE,EACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAoElB;AAgMD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAi6BlB"}
1
+ {"version":3,"file":"conversation-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/conversation-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,OAAO,EAIZ,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAwBvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,OAAO,EAEL,KAAK,gBAAgB,EAMtB,MAAM,aAAa,CAAC;AAgErB,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,0BAA0B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,KAAK,EAAE,sBAAsB,CAAC;CAC/B;AA+QD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAqBvE;AASD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,qBAAqB,GAAE,SAAS,MAAM,EAAO,GAC5C,MAAM,CAmBR;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EACF,IAAI,CACF,oBAAoB,EACpB,uBAAuB,GAAG,iBAAiB,GAAG,kBAAkB,CACjE,GACD,IAAI,GACJ,SAAS,GACZ,OAAO,CA8BT;AAED,wBAAsB,2CAA2C,CAC/D,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,IAAI,EACZ,qBAAqB,EAAE,SAAS,MAAM,EAAE,EACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAoElB;AAgMD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAi7BlB"}
@@ -20,7 +20,8 @@ import { resolveStateDir } from "../config/paths.js";
20
20
  import { generateChatResponse, generateConversationTitle, getChatFailureReply, hasRecentVisibleAssistantMemorySince, initSse, normalizeChatResponseText, persistAssistantConversationMemory, persistConversationMemory, readChatRequestPayload, resolveNoResponseFallback, writeChatTokenSse, writeSse, writeSseJson, } from "./chat-routes.js";
21
21
  import { cacheDiscordAvatarForRuntime, isCanonicalDiscordSource, resolveDiscordMessageAuthorProfile, resolveDiscordUserProfile, resolveStoredDiscordEntityProfile, } from "./discord-profiles.js";
22
22
  import { evictOldestConversation } from "./memory-bounds.js";
23
- import { buildUserMessages, getErrorMessage, isUuidLike, persistConversationRoomTitle, resolveAppUserName, resolveConversationGreetingText, resolveWalletModeGuidanceReply, } from "./server.js";
23
+ import { buildConversationRoomMetadata, sanitizeConversationMetadata, } from "./conversation-metadata.js";
24
+ import { buildUserMessages, getErrorMessage, isUuidLike, resolveAppUserName, resolveConversationGreetingText, resolveWalletModeGuidanceReply, } from "./server.js";
24
25
  // ---------------------------------------------------------------------------
25
26
  // Deleted-conversations state persistence
26
27
  // ---------------------------------------------------------------------------
@@ -199,13 +200,29 @@ async function ensureConversationRoom(state, conv) {
199
200
  });
200
201
  await ensureWorldOwnershipAndRoles(runtime, worldId, userId);
201
202
  }
202
- async function syncConversationRoomTitle(state, conv) {
203
- try {
204
- await persistConversationRoomTitle(state.runtime, conv);
203
+ async function syncConversationRoomState(state, conv) {
204
+ if (!state.runtime)
205
+ return;
206
+ const runtime = state.runtime;
207
+ const room = await runtime.getRoom(conv.roomId);
208
+ if (!room)
209
+ return;
210
+ const ownerId = ensureAdminEntityId(state);
211
+ const nextMetadata = buildConversationRoomMetadata(conv, ownerId, room.metadata);
212
+ const nextName = conv.title;
213
+ const metadataChanged = JSON.stringify(room.metadata ?? null) !== JSON.stringify(nextMetadata);
214
+ if (room.name === nextName && !metadataChanged) {
215
+ return;
205
216
  }
206
- catch (err) {
207
- logger.debug(`[conversations] Failed to persist room title for ${conv.id}: ${err instanceof Error ? err.message : String(err)}`);
217
+ const adapter = runtime.adapter;
218
+ if (typeof adapter.updateRoom !== "function") {
219
+ return;
208
220
  }
221
+ await adapter.updateRoom({
222
+ ...room,
223
+ name: nextName,
224
+ metadata: nextMetadata,
225
+ });
209
226
  }
210
227
  async function waitForConversationRestore(state) {
211
228
  const pending = state.conversationRestorePromise;
@@ -481,6 +498,9 @@ export async function handleConversationRoutes(ctx) {
481
498
  id,
482
499
  title: body.title?.trim() || "New Chat",
483
500
  roomId,
501
+ ...(sanitizeConversationMetadata(body.metadata)
502
+ ? { metadata: sanitizeConversationMetadata(body.metadata) }
503
+ : {}),
484
504
  createdAt: now,
485
505
  updatedAt: now,
486
506
  };
@@ -491,7 +511,7 @@ export async function handleConversationRoutes(ctx) {
491
511
  if (state.runtime) {
492
512
  try {
493
513
  await ensureConversationRoom(state, conv);
494
- await syncConversationRoomTitle(state, conv);
514
+ await syncConversationRoomState(state, conv);
495
515
  if (body.includeGreeting === true) {
496
516
  const storedGreeting = await ensureConversationGreetingStored(state, conv, typeof body.lang === "string" ? body.lang : "en");
497
517
  if (storedGreeting.text.trim()) {
@@ -1078,13 +1098,24 @@ export async function handleConversationRoutes(ctx) {
1078
1098
  if (resolvedTitle) {
1079
1099
  conv.title = resolvedTitle;
1080
1100
  conv.updatedAt = new Date().toISOString();
1081
- await syncConversationRoomTitle(state, conv);
1101
+ await syncConversationRoomState(state, conv);
1082
1102
  }
1083
1103
  }
1084
1104
  else if (body.title?.trim()) {
1085
1105
  conv.title = body.title.trim();
1086
1106
  conv.updatedAt = new Date().toISOString();
1087
- await syncConversationRoomTitle(state, conv);
1107
+ await syncConversationRoomState(state, conv);
1108
+ }
1109
+ if (body.metadata !== undefined) {
1110
+ const nextMetadata = sanitizeConversationMetadata(body.metadata);
1111
+ if (nextMetadata) {
1112
+ conv.metadata = nextMetadata;
1113
+ }
1114
+ else {
1115
+ delete conv.metadata;
1116
+ }
1117
+ conv.updatedAt = new Date().toISOString();
1118
+ await syncConversationRoomState(state, conv);
1088
1119
  }
1089
1120
  json(res, { conversation: conv });
1090
1121
  return true;
@@ -1,4 +1,4 @@
1
- import { getSelfControlPermissionState, openSelfControlPermissionLocation, requestSelfControlPermission, } from "@elizaos/app-lifeops/selfcontrol";
1
+ import { getSelfControlPermissionState, openSelfControlPermissionLocation, requestSelfControlPermission, } from "@elizaos/app-lifeops/public";
2
2
  const WEBSITE_BLOCKING_PERMISSION_ID = "website-blocking";
3
3
  async function getWebsiteBlockingPermissionState() {
4
4
  return await getSelfControlPermissionState();
@@ -113,7 +113,7 @@ export function applyCors(req, res, pathname) {
113
113
  res.setHeader("Access-Control-Allow-Origin", allowed);
114
114
  res.setHeader("Vary", "Origin");
115
115
  res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
116
- res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Eliza-Token, X-Api-Key, X-Eliza-Export-Token, X-Eliza-Client-Id, X-Eliza-Terminal-Token, X-Eliza-UI-Language, X-Eliza-Browser-Companion-Id");
116
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Eliza-Token, X-Api-Key, X-Eliza-Export-Token, X-Eliza-Client-Id, X-Eliza-Terminal-Token, X-Eliza-UI-Language, X-LifeOps-Browser-Companion-Id, X-Eliza-Browser-Companion-Id");
117
117
  }
118
118
  // Security headers
119
119
  res.setHeader("X-Content-Type-Options", "nosniff");
@@ -28,6 +28,7 @@ export interface ConversationMeta {
28
28
  id: string;
29
29
  title: string;
30
30
  roomId: UUID;
31
+ metadata?: import("./server-types.js").ConversationMetadata;
31
32
  createdAt: string;
32
33
  updatedAt: string;
33
34
  }
@@ -85,7 +86,7 @@ export declare function buildUserMessages(params: {
85
86
  type ConversationRoomTitleRef = Pick<ConversationMeta, "id" | "title" | "roomId">;
86
87
  export declare function persistConversationRoomTitle(runtime: Pick<AgentRuntime, "getRoom" | "adapter"> | null | undefined, conversation: ConversationRoomTitleRef): Promise<boolean>;
87
88
  export declare function maybeAugmentChatMessageWithWalletContext(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): ReturnType<typeof createMessageMemory>;
88
- export declare function maybeAugmentChatMessageWithKnowledge(runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
89
+ export declare function maybeAugmentChatMessageWithKnowledge(_runtime: AgentRuntime, message: ReturnType<typeof createMessageMemory>): Promise<ReturnType<typeof createMessageMemory>>;
89
90
  export declare const WALLET_EXECUTION_INTENT_RE: RegExp;
90
91
  export declare const WALLET_PROGRESS_ONLY_RE: RegExp;
91
92
  export declare function isWalletActionRequiredIntent(prompt: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"server-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/server-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-helpers.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/server-helpers.ts"],"names":[],"mappings":"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"}