@elizaos/agent 2.0.0-alpha.98 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1227) hide show
  1. package/package.json +78 -923
  2. package/packages/agent/src/actions/connector-resolver.d.ts +74 -0
  3. package/packages/agent/src/actions/connector-resolver.d.ts.map +1 -0
  4. package/packages/agent/src/actions/connector-resolver.js +253 -0
  5. package/packages/agent/src/actions/contact.d.ts +35 -0
  6. package/packages/agent/src/actions/contact.d.ts.map +1 -0
  7. package/packages/agent/src/actions/contact.js +1698 -0
  8. package/packages/agent/src/actions/context-signal-lexicon.d.ts +17 -0
  9. package/packages/agent/src/actions/context-signal-lexicon.d.ts.map +1 -0
  10. package/packages/agent/src/actions/context-signal-lexicon.js +206 -0
  11. package/packages/agent/src/actions/context-signal.d.ts +48 -0
  12. package/packages/agent/src/actions/context-signal.d.ts.map +1 -0
  13. package/packages/agent/src/actions/context-signal.js +153 -0
  14. package/packages/agent/src/actions/database.d.ts +20 -0
  15. package/packages/agent/src/actions/database.d.ts.map +1 -0
  16. package/packages/agent/src/actions/database.js +671 -0
  17. package/packages/agent/src/actions/extract-page.d.ts +3 -0
  18. package/packages/agent/src/actions/extract-page.d.ts.map +1 -0
  19. package/packages/agent/src/actions/extract-page.js +153 -0
  20. package/packages/agent/src/actions/extract-params.d.ts +87 -0
  21. package/packages/agent/src/actions/extract-params.d.ts.map +1 -0
  22. package/packages/agent/src/actions/extract-params.js +187 -0
  23. package/packages/agent/src/actions/grounded-action-reply.d.ts +22 -0
  24. package/packages/agent/src/actions/grounded-action-reply.d.ts.map +1 -0
  25. package/packages/agent/src/actions/grounded-action-reply.js +287 -0
  26. package/packages/agent/src/actions/index.d.ts +22 -0
  27. package/packages/agent/src/actions/index.d.ts.map +1 -0
  28. package/packages/agent/src/actions/index.js +21 -0
  29. package/packages/agent/src/actions/logs.d.ts +11 -0
  30. package/packages/agent/src/actions/logs.d.ts.map +1 -0
  31. package/packages/agent/src/actions/logs.js +300 -0
  32. package/packages/agent/src/actions/media.d.ts +9 -0
  33. package/packages/agent/src/actions/media.d.ts.map +1 -0
  34. package/packages/agent/src/actions/media.js +135 -0
  35. package/packages/agent/src/actions/memories.d.ts +9 -0
  36. package/packages/agent/src/actions/memories.d.ts.map +1 -0
  37. package/packages/agent/src/actions/memories.js +369 -0
  38. package/packages/agent/src/actions/page-action-groups.d.ts +17 -0
  39. package/packages/agent/src/actions/page-action-groups.d.ts.map +1 -0
  40. package/packages/agent/src/actions/page-action-groups.js +413 -0
  41. package/packages/agent/src/actions/plugin.d.ts +32 -0
  42. package/packages/agent/src/actions/plugin.d.ts.map +1 -0
  43. package/packages/agent/src/actions/plugin.js +780 -0
  44. package/packages/agent/src/actions/recent-conversation-texts.d.ts +9 -0
  45. package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -0
  46. package/packages/agent/src/actions/recent-conversation-texts.js +76 -0
  47. package/packages/agent/src/actions/runtime.d.ts +19 -0
  48. package/packages/agent/src/actions/runtime.d.ts.map +1 -0
  49. package/packages/agent/src/actions/runtime.js +517 -0
  50. package/packages/agent/src/actions/settings-actions.d.ts +19 -0
  51. package/packages/agent/src/actions/settings-actions.d.ts.map +1 -0
  52. package/packages/agent/src/actions/settings-actions.js +478 -0
  53. package/packages/agent/src/actions/skill-command.d.ts +20 -0
  54. package/packages/agent/src/actions/skill-command.d.ts.map +1 -0
  55. package/packages/agent/src/actions/skill-command.js +170 -0
  56. package/packages/agent/src/actions/stream-control.d.ts +13 -8
  57. package/packages/agent/src/actions/stream-control.d.ts.map +1 -1
  58. package/packages/agent/src/actions/stream-control.js +127 -318
  59. package/packages/agent/src/actions/terminal.d.ts +4 -3
  60. package/packages/agent/src/actions/terminal.d.ts.map +1 -1
  61. package/packages/agent/src/actions/terminal.js +247 -96
  62. package/packages/agent/src/actions/trajectories.d.ts +8 -0
  63. package/packages/agent/src/actions/trajectories.d.ts.map +1 -0
  64. package/packages/agent/src/actions/trajectories.js +135 -0
  65. package/packages/agent/src/actions/trigger.d.ts +5 -0
  66. package/packages/agent/src/actions/trigger.d.ts.map +1 -0
  67. package/packages/agent/src/actions/trigger.js +514 -0
  68. package/packages/agent/src/api/accounts-routes.d.ts +38 -0
  69. package/packages/agent/src/api/accounts-routes.d.ts.map +1 -0
  70. package/packages/agent/src/api/accounts-routes.js +927 -0
  71. package/packages/agent/src/api/agent-admin-routes.d.ts +6 -5
  72. package/packages/agent/src/api/agent-admin-routes.d.ts.map +1 -1
  73. package/packages/agent/src/api/agent-admin-routes.js +106 -9
  74. package/packages/agent/src/api/agent-lifecycle-routes.d.ts +2 -2
  75. package/packages/agent/src/api/agent-lifecycle-routes.d.ts.map +1 -1
  76. package/packages/agent/src/api/agent-lifecycle-routes.js +22 -1
  77. package/packages/agent/src/api/agent-model.d.ts +2 -9
  78. package/packages/agent/src/api/agent-model.d.ts.map +1 -1
  79. package/packages/agent/src/api/agent-model.js +50 -3
  80. package/packages/agent/src/api/agent-status-routes.d.ts +75 -0
  81. package/packages/agent/src/api/agent-status-routes.d.ts.map +1 -0
  82. package/packages/agent/src/api/agent-status-routes.js +264 -0
  83. package/packages/agent/src/api/agent-transfer-routes.d.ts +1 -1
  84. package/packages/agent/src/api/agent-transfer-routes.js +1 -1
  85. package/packages/agent/src/api/app-package-routes.d.ts +7 -0
  86. package/packages/agent/src/api/app-package-routes.d.ts.map +1 -0
  87. package/packages/agent/src/api/app-package-routes.js +59 -0
  88. package/packages/agent/src/api/apps-routes.d.ts +16 -3
  89. package/packages/agent/src/api/apps-routes.d.ts.map +1 -1
  90. package/packages/agent/src/api/apps-routes.js +885 -15
  91. package/packages/agent/src/api/auth-routes.d.ts +1 -1
  92. package/packages/agent/src/api/auth-routes.d.ts.map +1 -1
  93. package/packages/agent/src/api/auth-routes.js +67 -2
  94. package/packages/agent/src/api/avatar-routes.d.ts +11 -0
  95. package/packages/agent/src/api/avatar-routes.d.ts.map +1 -0
  96. package/packages/agent/src/api/avatar-routes.js +205 -0
  97. package/packages/agent/src/api/binance-skill-helpers.d.ts +21 -0
  98. package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -0
  99. package/packages/agent/src/api/binance-skill-helpers.js +745 -0
  100. package/packages/agent/src/api/bug-report-routes.d.ts +5 -2
  101. package/packages/agent/src/api/bug-report-routes.d.ts.map +1 -1
  102. package/packages/agent/src/api/bug-report-routes.js +155 -8
  103. package/packages/agent/src/api/build-variant-routes.d.ts +27 -0
  104. package/packages/agent/src/api/build-variant-routes.d.ts.map +1 -0
  105. package/packages/agent/src/api/build-variant-routes.js +27 -0
  106. package/packages/agent/src/api/character-routes.d.ts +7 -5
  107. package/packages/agent/src/api/character-routes.d.ts.map +1 -1
  108. package/packages/agent/src/api/character-routes.js +100 -49
  109. package/packages/agent/src/api/chat-augmentation.d.ts +70 -0
  110. package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -0
  111. package/packages/agent/src/api/chat-augmentation.js +464 -0
  112. package/packages/agent/src/api/chat-routes.d.ts +124 -0
  113. package/packages/agent/src/api/chat-routes.d.ts.map +1 -0
  114. package/packages/agent/src/api/chat-routes.js +1841 -0
  115. package/packages/agent/src/api/chat-text-helpers.d.ts +11 -0
  116. package/packages/agent/src/api/chat-text-helpers.d.ts.map +1 -0
  117. package/packages/agent/src/api/chat-text-helpers.js +184 -0
  118. package/packages/agent/src/api/client-chat-admin.d.ts +19 -0
  119. package/packages/agent/src/api/client-chat-admin.d.ts.map +1 -0
  120. package/packages/agent/src/api/client-chat-admin.js +27 -0
  121. package/packages/agent/src/api/cloud-route-registry.d.ts +22 -0
  122. package/packages/agent/src/api/cloud-route-registry.d.ts.map +1 -0
  123. package/packages/agent/src/api/cloud-route-registry.js +20 -0
  124. package/packages/agent/src/api/compat-utils.d.ts.map +1 -1
  125. package/packages/agent/src/api/compat-utils.js +1 -5
  126. package/packages/agent/src/api/config-env.d.ts +43 -0
  127. package/packages/agent/src/api/config-env.d.ts.map +1 -0
  128. package/packages/agent/src/api/config-env.js +284 -0
  129. package/packages/agent/src/api/config-routes.d.ts +40 -0
  130. package/packages/agent/src/api/config-routes.d.ts.map +1 -0
  131. package/packages/agent/src/api/config-routes.js +429 -0
  132. package/packages/agent/src/api/connector-account-routes.d.ts +25 -0
  133. package/packages/agent/src/api/connector-account-routes.d.ts.map +1 -0
  134. package/packages/agent/src/api/connector-account-routes.js +740 -0
  135. package/packages/agent/src/api/connector-health.d.ts +9 -1
  136. package/packages/agent/src/api/connector-health.d.ts.map +1 -1
  137. package/packages/agent/src/api/connector-health.js +33 -10
  138. package/packages/agent/src/api/connector-oauth-callback-auth.d.ts +2 -0
  139. package/packages/agent/src/api/connector-oauth-callback-auth.d.ts.map +1 -0
  140. package/packages/agent/src/api/connector-oauth-callback-auth.js +4 -0
  141. package/packages/agent/src/api/connector-routes.d.ts +36 -0
  142. package/packages/agent/src/api/connector-routes.d.ts.map +1 -0
  143. package/packages/agent/src/api/connector-routes.js +184 -0
  144. package/packages/agent/src/api/conversation-metadata.d.ts +10 -0
  145. package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -0
  146. package/packages/agent/src/api/conversation-metadata.js +107 -0
  147. package/packages/agent/src/api/conversation-routes.d.ts +43 -0
  148. package/packages/agent/src/api/conversation-routes.d.ts.map +1 -0
  149. package/packages/agent/src/api/conversation-routes.js +1208 -0
  150. package/packages/agent/src/api/coordinator-wiring.d.ts +4 -4
  151. package/packages/agent/src/api/coordinator-wiring.d.ts.map +1 -1
  152. package/packages/agent/src/api/coordinator-wiring.js +13 -6
  153. package/packages/agent/src/api/credit-detection.d.ts.map +1 -1
  154. package/packages/agent/src/api/credit-detection.js +12 -6
  155. package/packages/agent/src/api/curated-skills-routes.d.ts +22 -0
  156. package/packages/agent/src/api/curated-skills-routes.d.ts.map +1 -0
  157. package/packages/agent/src/api/curated-skills-routes.js +295 -0
  158. package/packages/agent/src/api/database.d.ts +2 -0
  159. package/packages/agent/src/api/database.d.ts.map +1 -1
  160. package/packages/agent/src/api/database.js +129 -8
  161. package/packages/agent/src/api/diagnostics-routes.d.ts +15 -2
  162. package/packages/agent/src/api/diagnostics-routes.d.ts.map +1 -1
  163. package/packages/agent/src/api/diagnostics-routes.js +145 -21
  164. package/packages/agent/src/api/documents-routes.d.ts +9 -0
  165. package/packages/agent/src/api/documents-routes.d.ts.map +1 -0
  166. package/packages/agent/src/api/documents-routes.js +26 -0
  167. package/packages/agent/src/api/documents-service-loader.d.ts +76 -0
  168. package/packages/agent/src/api/documents-service-loader.d.ts.map +1 -0
  169. package/packages/agent/src/api/{knowledge-service-loader.js → documents-service-loader.js} +10 -8
  170. package/packages/agent/src/api/health-routes.d.ts +46 -0
  171. package/packages/agent/src/api/health-routes.d.ts.map +1 -0
  172. package/packages/agent/src/api/health-routes.js +450 -0
  173. package/packages/agent/src/api/inbox-routes.d.ts +47 -0
  174. package/packages/agent/src/api/inbox-routes.d.ts.map +1 -0
  175. package/packages/agent/src/api/inbox-routes.js +1579 -0
  176. package/packages/agent/src/api/index.d.ts +45 -60
  177. package/packages/agent/src/api/index.d.ts.map +1 -1
  178. package/packages/agent/src/api/index.js +49 -59
  179. package/packages/agent/src/api/memory-routes.d.ts +1 -1
  180. package/packages/agent/src/api/memory-routes.d.ts.map +1 -1
  181. package/packages/agent/src/api/memory-routes.js +274 -41
  182. package/packages/agent/src/api/misc-routes.d.ts +64 -0
  183. package/packages/agent/src/api/misc-routes.d.ts.map +1 -0
  184. package/packages/agent/src/api/misc-routes.js +569 -0
  185. package/packages/agent/src/api/mobile-optional-routes.d.ts +3 -0
  186. package/packages/agent/src/api/mobile-optional-routes.d.ts.map +1 -0
  187. package/packages/agent/src/api/mobile-optional-routes.js +91 -0
  188. package/packages/agent/src/api/model-provider-helpers.d.ts +68 -0
  189. package/packages/agent/src/api/model-provider-helpers.d.ts.map +1 -0
  190. package/packages/agent/src/api/model-provider-helpers.js +623 -0
  191. package/packages/agent/src/api/models-routes.d.ts +1 -1
  192. package/packages/agent/src/api/models-routes.d.ts.map +1 -1
  193. package/packages/agent/src/api/music-player-route-fallback.d.ts +16 -0
  194. package/packages/agent/src/api/music-player-route-fallback.d.ts.map +1 -0
  195. package/packages/agent/src/api/music-player-route-fallback.js +65 -0
  196. package/packages/agent/src/api/nfa-routes.d.ts +2 -1
  197. package/packages/agent/src/api/nfa-routes.d.ts.map +1 -1
  198. package/packages/agent/src/api/nfa-routes.js +10 -10
  199. package/packages/agent/src/api/onboarding-routes.d.ts +50 -0
  200. package/packages/agent/src/api/onboarding-routes.d.ts.map +1 -0
  201. package/packages/agent/src/api/onboarding-routes.js +588 -0
  202. package/packages/agent/src/api/owner-contact-helpers.d.ts +39 -0
  203. package/packages/agent/src/api/owner-contact-helpers.d.ts.map +1 -0
  204. package/packages/agent/src/api/owner-contact-helpers.js +47 -0
  205. package/packages/agent/src/api/parse-action-block.d.ts +20 -3
  206. package/packages/agent/src/api/parse-action-block.d.ts.map +1 -1
  207. package/packages/agent/src/api/parse-action-block.js +77 -6
  208. package/packages/agent/src/api/permission-request-prompt.d.ts +19 -0
  209. package/packages/agent/src/api/permission-request-prompt.d.ts.map +1 -0
  210. package/packages/agent/src/api/permission-request-prompt.js +53 -0
  211. package/packages/agent/src/api/permissions-routes-extra.d.ts +30 -0
  212. package/packages/agent/src/api/permissions-routes-extra.d.ts.map +1 -0
  213. package/packages/agent/src/api/permissions-routes-extra.js +78 -0
  214. package/packages/agent/src/api/permissions-routes.d.ts +6 -11
  215. package/packages/agent/src/api/permissions-routes.d.ts.map +1 -1
  216. package/packages/agent/src/api/permissions-routes.js +230 -27
  217. package/packages/agent/src/api/plugin-discovery-helpers.d.ts +147 -0
  218. package/packages/agent/src/api/plugin-discovery-helpers.d.ts.map +1 -0
  219. package/packages/agent/src/api/plugin-discovery-helpers.js +1118 -0
  220. package/packages/agent/src/api/plugin-routes.d.ts +144 -0
  221. package/packages/agent/src/api/plugin-routes.d.ts.map +1 -0
  222. package/packages/agent/src/api/plugin-routes.js +1285 -0
  223. package/packages/agent/src/api/plugin-runtime-apply.d.ts +31 -0
  224. package/packages/agent/src/api/plugin-runtime-apply.d.ts.map +1 -0
  225. package/packages/agent/src/api/plugin-runtime-apply.js +217 -0
  226. package/packages/agent/src/api/plugin-validation.d.ts.map +1 -1
  227. package/packages/agent/src/api/plugin-validation.js +4 -2
  228. package/packages/agent/src/api/provider-switch-config.d.ts +32 -7
  229. package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -1
  230. package/packages/agent/src/api/provider-switch-config.js +627 -225
  231. package/packages/agent/src/api/provider-switch-routes.d.ts +29 -0
  232. package/packages/agent/src/api/provider-switch-routes.d.ts.map +1 -0
  233. package/packages/agent/src/api/provider-switch-routes.js +142 -0
  234. package/packages/agent/src/api/rate-limiter.d.ts +29 -0
  235. package/packages/agent/src/api/rate-limiter.d.ts.map +1 -0
  236. package/packages/agent/src/api/rate-limiter.js +57 -0
  237. package/packages/agent/src/api/registry-routes.d.ts +5 -2
  238. package/packages/agent/src/api/registry-routes.d.ts.map +1 -1
  239. package/packages/agent/src/api/registry-routes.js +13 -5
  240. package/packages/agent/src/api/registry-service.d.ts +1 -1
  241. package/packages/agent/src/api/registry-service.d.ts.map +1 -1
  242. package/packages/agent/src/api/relationships-routes.d.ts +7 -0
  243. package/packages/agent/src/api/relationships-routes.d.ts.map +1 -0
  244. package/packages/agent/src/api/relationships-routes.js +287 -0
  245. package/packages/agent/src/api/runtime-plugin-routes.d.ts +27 -0
  246. package/packages/agent/src/api/runtime-plugin-routes.d.ts.map +1 -0
  247. package/packages/agent/src/api/runtime-plugin-routes.js +203 -0
  248. package/packages/agent/src/api/server-auth.d.ts +46 -0
  249. package/packages/agent/src/api/server-auth.d.ts.map +1 -0
  250. package/packages/agent/src/api/server-auth.js +507 -0
  251. package/packages/agent/src/api/server-autonomy-helpers.d.ts +5 -0
  252. package/packages/agent/src/api/server-autonomy-helpers.d.ts.map +1 -0
  253. package/packages/agent/src/api/server-autonomy-helpers.js +28 -0
  254. package/packages/agent/src/api/server-helpers-auth.d.ts +41 -0
  255. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -0
  256. package/packages/agent/src/api/server-helpers-auth.js +627 -0
  257. package/packages/agent/src/api/server-helpers-config.d.ts +37 -0
  258. package/packages/agent/src/api/server-helpers-config.d.ts.map +1 -0
  259. package/packages/agent/src/api/server-helpers-config.js +293 -0
  260. package/packages/agent/src/api/server-helpers-fetch.d.ts +15 -0
  261. package/packages/agent/src/api/server-helpers-fetch.d.ts.map +1 -0
  262. package/packages/agent/src/api/server-helpers-fetch.js +149 -0
  263. package/packages/agent/src/api/server-helpers-mcp.d.ts +12 -0
  264. package/packages/agent/src/api/server-helpers-mcp.d.ts.map +1 -0
  265. package/packages/agent/src/api/server-helpers-mcp.js +315 -0
  266. package/packages/agent/src/api/server-helpers-plugin.d.ts +13 -0
  267. package/packages/agent/src/api/server-helpers-plugin.d.ts.map +1 -0
  268. package/packages/agent/src/api/server-helpers-plugin.js +160 -0
  269. package/packages/agent/src/api/server-helpers-swarm.d.ts +101 -0
  270. package/packages/agent/src/api/server-helpers-swarm.d.ts.map +1 -0
  271. package/packages/agent/src/api/server-helpers-swarm.js +646 -0
  272. package/packages/agent/src/api/server-helpers-wallet.d.ts +18 -0
  273. package/packages/agent/src/api/server-helpers-wallet.d.ts.map +1 -0
  274. package/packages/agent/src/api/server-helpers-wallet.js +177 -0
  275. package/packages/agent/src/api/server-helpers.d.ts +96 -0
  276. package/packages/agent/src/api/server-helpers.d.ts.map +1 -0
  277. package/packages/agent/src/api/server-helpers.js +595 -0
  278. package/packages/agent/src/api/server-route-dispatch.d.ts +30 -0
  279. package/packages/agent/src/api/server-route-dispatch.d.ts.map +1 -0
  280. package/packages/agent/src/api/server-route-dispatch.js +103 -0
  281. package/packages/agent/src/api/server-startup.d.ts +16 -0
  282. package/packages/agent/src/api/server-startup.d.ts.map +1 -0
  283. package/packages/agent/src/api/server-startup.js +14 -0
  284. package/packages/agent/src/api/server-types.d.ts +232 -0
  285. package/packages/agent/src/api/server-types.d.ts.map +1 -0
  286. package/packages/agent/src/api/server-types.js +6 -0
  287. package/packages/agent/src/api/server.d.ts +26 -383
  288. package/packages/agent/src/api/server.d.ts.map +1 -1
  289. package/packages/agent/src/api/server.js +2022 -12484
  290. package/packages/agent/src/api/skill-discovery-helpers.d.ts +80 -0
  291. package/packages/agent/src/api/skill-discovery-helpers.d.ts.map +1 -0
  292. package/packages/agent/src/api/skill-discovery-helpers.js +385 -0
  293. package/packages/agent/src/api/skills-routes.d.ts +32 -0
  294. package/packages/agent/src/api/skills-routes.d.ts.map +1 -0
  295. package/packages/agent/src/api/skills-routes.js +978 -0
  296. package/packages/agent/src/api/static-file-server.d.ts +19 -0
  297. package/packages/agent/src/api/static-file-server.d.ts.map +1 -0
  298. package/packages/agent/src/api/static-file-server.js +234 -0
  299. package/packages/agent/src/api/subscription-routes.d.ts +6 -6
  300. package/packages/agent/src/api/subscription-routes.d.ts.map +1 -1
  301. package/packages/agent/src/api/subscription-routes.js +84 -14
  302. package/packages/agent/src/api/task-agent-message-routing.d.ts +10 -0
  303. package/packages/agent/src/api/task-agent-message-routing.d.ts.map +1 -0
  304. package/packages/agent/src/api/task-agent-message-routing.js +62 -0
  305. package/packages/agent/src/api/terminal-execution-routing.d.ts +14 -0
  306. package/packages/agent/src/api/terminal-execution-routing.d.ts.map +1 -0
  307. package/packages/agent/src/api/terminal-execution-routing.js +23 -0
  308. package/packages/agent/src/api/terminal-run-limits.d.ts.map +1 -1
  309. package/packages/agent/src/api/terminal-run-limits.js +3 -5
  310. package/packages/agent/src/api/trade-safety.d.ts +35 -0
  311. package/packages/agent/src/api/trade-safety.d.ts.map +1 -0
  312. package/packages/agent/src/api/trade-safety.js +62 -0
  313. package/packages/agent/src/api/training-service-like.d.ts +3 -2
  314. package/packages/agent/src/api/training-service-like.d.ts.map +1 -1
  315. package/packages/agent/src/api/travel-provider-relay-routes.d.ts +9 -0
  316. package/packages/agent/src/api/travel-provider-relay-routes.d.ts.map +1 -0
  317. package/packages/agent/src/api/travel-provider-relay-routes.js +143 -0
  318. package/packages/agent/src/api/tx-service.d.ts +6 -0
  319. package/packages/agent/src/api/tx-service.d.ts.map +1 -1
  320. package/packages/agent/src/api/tx-service.js +64 -3
  321. package/packages/agent/src/api/update-routes.d.ts +19 -0
  322. package/packages/agent/src/api/update-routes.d.ts.map +1 -0
  323. package/packages/agent/src/api/update-routes.js +54 -0
  324. package/packages/agent/src/api/wallet-capability.d.ts +33 -0
  325. package/packages/agent/src/api/wallet-capability.d.ts.map +1 -0
  326. package/packages/agent/src/api/wallet-capability.js +193 -0
  327. package/packages/agent/src/api/wallet-dex-prices.d.ts +0 -18
  328. package/packages/agent/src/api/wallet-dex-prices.d.ts.map +1 -1
  329. package/packages/agent/src/api/wallet-dex-prices.js +14 -38
  330. package/packages/agent/src/api/wallet-env-sync.d.ts +2 -0
  331. package/packages/agent/src/api/wallet-env-sync.d.ts.map +1 -0
  332. package/packages/agent/src/api/wallet-env-sync.js +108 -0
  333. package/packages/agent/src/api/wallet-evm-balance.d.ts +8 -1
  334. package/packages/agent/src/api/wallet-evm-balance.d.ts.map +1 -1
  335. package/packages/agent/src/api/wallet-evm-balance.js +5 -5
  336. package/packages/agent/src/api/wallet-routes.d.ts +20 -12
  337. package/packages/agent/src/api/wallet-routes.d.ts.map +1 -1
  338. package/packages/agent/src/api/wallet-routes.js +593 -37
  339. package/packages/agent/src/api/wallet-rpc.d.ts +14 -11
  340. package/packages/agent/src/api/wallet-rpc.d.ts.map +1 -1
  341. package/packages/agent/src/api/wallet-rpc.js +108 -38
  342. package/packages/agent/src/api/wallet-trading-profile.d.ts +2 -22
  343. package/packages/agent/src/api/wallet-trading-profile.d.ts.map +1 -1
  344. package/packages/agent/src/api/wallet-trading-profile.js +27 -30
  345. package/packages/agent/src/api/wallet.d.ts +38 -5
  346. package/packages/agent/src/api/wallet.d.ts.map +1 -1
  347. package/packages/agent/src/api/wallet.js +469 -202
  348. package/packages/agent/src/api/workbench-helpers.d.ts +39 -0
  349. package/packages/agent/src/api/workbench-helpers.d.ts.map +1 -0
  350. package/packages/agent/src/api/workbench-helpers.js +137 -0
  351. package/packages/agent/src/api/workbench-routes.d.ts +43 -0
  352. package/packages/agent/src/api/workbench-routes.d.ts.map +1 -0
  353. package/packages/agent/src/api/workbench-routes.js +265 -0
  354. package/packages/agent/src/api/x-relay-routes.d.ts +27 -0
  355. package/packages/agent/src/api/x-relay-routes.d.ts.map +1 -0
  356. package/packages/agent/src/api/x-relay-routes.js +134 -0
  357. package/packages/agent/src/auth/account-storage.d.ts +48 -0
  358. package/packages/agent/src/auth/account-storage.d.ts.map +1 -0
  359. package/packages/agent/src/auth/account-storage.js +229 -0
  360. package/packages/agent/src/auth/anthropic.d.ts +3 -4
  361. package/packages/agent/src/auth/anthropic.d.ts.map +1 -1
  362. package/packages/agent/src/auth/anthropic.js +5 -7
  363. package/packages/agent/src/auth/claude-code-stealth-preload.d.ts +2 -0
  364. package/packages/agent/src/auth/claude-code-stealth-preload.d.ts.map +1 -0
  365. package/packages/agent/src/auth/claude-code-stealth-preload.js +2 -0
  366. package/packages/agent/src/auth/claude-code-stealth.d.ts.map +1 -1
  367. package/packages/agent/src/auth/claude-code-stealth.js +21 -9
  368. package/packages/agent/src/auth/credentials.d.ts +62 -17
  369. package/packages/agent/src/auth/credentials.d.ts.map +1 -1
  370. package/packages/agent/src/auth/credentials.js +492 -121
  371. package/packages/agent/src/auth/index.d.ts +7 -6
  372. package/packages/agent/src/auth/index.d.ts.map +1 -1
  373. package/packages/agent/src/auth/index.js +7 -3
  374. package/packages/agent/src/auth/oauth-flow.d.ts +106 -0
  375. package/packages/agent/src/auth/oauth-flow.d.ts.map +1 -0
  376. package/packages/agent/src/auth/oauth-flow.js +349 -0
  377. package/packages/agent/src/auth/openai-codex.d.ts +2 -2
  378. package/packages/agent/src/auth/openai-codex.d.ts.map +1 -1
  379. package/packages/agent/src/auth/openai-codex.js +17 -13
  380. package/packages/agent/src/auth/refresh-mutex.d.ts +19 -0
  381. package/packages/agent/src/auth/refresh-mutex.d.ts.map +1 -0
  382. package/packages/agent/src/auth/refresh-mutex.js +33 -0
  383. package/packages/agent/src/auth/types.d.ts +42 -2
  384. package/packages/agent/src/auth/types.d.ts.map +1 -1
  385. package/packages/agent/src/auth/types.js +142 -1
  386. package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.d.ts +48 -0
  387. package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.d.ts.map +1 -0
  388. package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.js +113 -0
  389. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts +26 -0
  390. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts.map +1 -0
  391. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.js +343 -0
  392. package/packages/agent/src/auth/vendor/pi-oauth/pkce.d.ts +9 -0
  393. package/packages/agent/src/auth/vendor/pi-oauth/pkce.d.ts.map +1 -0
  394. package/packages/agent/src/auth/vendor/pi-oauth/pkce.js +21 -0
  395. package/packages/agent/src/autonomy/index.d.ts +48 -0
  396. package/packages/agent/src/autonomy/index.d.ts.map +1 -0
  397. package/packages/agent/src/autonomy/index.js +344 -0
  398. package/packages/agent/src/awareness/index.d.ts +2 -0
  399. package/packages/agent/src/awareness/index.d.ts.map +1 -0
  400. package/packages/agent/src/awareness/index.js +1 -0
  401. package/packages/agent/src/awareness/registry.d.ts +1 -26
  402. package/packages/agent/src/awareness/registry.d.ts.map +1 -1
  403. package/packages/agent/src/awareness/registry.js +1 -161
  404. package/packages/agent/src/bin.js +46 -1
  405. package/packages/agent/src/cli/benchmark.d.ts +10 -0
  406. package/packages/agent/src/cli/benchmark.d.ts.map +1 -0
  407. package/packages/agent/src/cli/benchmark.js +293 -0
  408. package/packages/agent/src/cli/index.d.ts.map +1 -1
  409. package/packages/agent/src/cli/index.js +58 -4
  410. package/packages/agent/src/config/config.d.ts +2 -2
  411. package/packages/agent/src/config/config.d.ts.map +1 -1
  412. package/packages/agent/src/config/config.js +185 -18
  413. package/packages/agent/src/config/env-vars.d.ts +7 -1
  414. package/packages/agent/src/config/env-vars.d.ts.map +1 -1
  415. package/packages/agent/src/config/env-vars.js +205 -0
  416. package/packages/agent/src/config/feature-flags.d.ts +17 -0
  417. package/packages/agent/src/config/feature-flags.d.ts.map +1 -0
  418. package/packages/agent/src/config/feature-flags.js +37 -0
  419. package/packages/agent/src/config/includes.d.ts.map +1 -1
  420. package/packages/agent/src/config/includes.js +6 -5
  421. package/packages/agent/src/config/index.d.ts +10 -15
  422. package/packages/agent/src/config/index.d.ts.map +1 -1
  423. package/packages/agent/src/config/index.js +9 -15
  424. package/packages/agent/src/config/model-metadata.d.ts +20 -0
  425. package/packages/agent/src/config/model-metadata.d.ts.map +1 -0
  426. package/packages/agent/src/config/model-metadata.js +133 -0
  427. package/packages/agent/src/config/owner-contacts.d.ts +42 -0
  428. package/packages/agent/src/config/owner-contacts.d.ts.map +1 -0
  429. package/packages/agent/src/config/owner-contacts.js +238 -0
  430. package/packages/agent/src/config/paths.d.ts +10 -6
  431. package/packages/agent/src/config/paths.d.ts.map +1 -1
  432. package/packages/agent/src/config/paths.js +43 -45
  433. package/packages/agent/src/config/plugin-auto-enable.d.ts +12 -15
  434. package/packages/agent/src/config/plugin-auto-enable.d.ts.map +1 -1
  435. package/packages/agent/src/config/plugin-auto-enable.js +12 -384
  436. package/packages/agent/src/config/plugin-widgets.d.ts +29 -0
  437. package/packages/agent/src/config/plugin-widgets.d.ts.map +1 -0
  438. package/packages/agent/src/config/plugin-widgets.js +104 -0
  439. package/packages/agent/src/config/schema.d.ts +2 -2
  440. package/packages/agent/src/config/schema.d.ts.map +1 -1
  441. package/packages/agent/src/config/schema.js +24 -24
  442. package/packages/agent/src/config/types.agent-defaults.d.ts +1 -330
  443. package/packages/agent/src/config/types.agent-defaults.d.ts.map +1 -1
  444. package/packages/agent/src/config/types.agent-defaults.js +1 -1
  445. package/packages/agent/src/config/types.agents.d.ts +1 -109
  446. package/packages/agent/src/config/types.agents.d.ts.map +1 -1
  447. package/packages/agent/src/config/types.agents.js +1 -1
  448. package/packages/agent/src/config/types.d.ts +1 -7
  449. package/packages/agent/src/config/types.d.ts.map +1 -1
  450. package/packages/agent/src/config/types.eliza.d.ts +1 -635
  451. package/packages/agent/src/config/types.eliza.d.ts.map +1 -1
  452. package/packages/agent/src/config/types.eliza.js +1 -1
  453. package/packages/agent/src/config/types.gateway.d.ts +1 -215
  454. package/packages/agent/src/config/types.gateway.d.ts.map +1 -1
  455. package/packages/agent/src/config/types.gateway.js +1 -1
  456. package/packages/agent/src/config/types.hooks.d.ts +1 -106
  457. package/packages/agent/src/config/types.hooks.d.ts.map +1 -1
  458. package/packages/agent/src/config/types.hooks.js +1 -1
  459. package/packages/agent/src/config/types.js +1 -7
  460. package/packages/agent/src/config/types.messages.d.ts +1 -175
  461. package/packages/agent/src/config/types.messages.d.ts.map +1 -1
  462. package/packages/agent/src/config/types.messages.js +1 -1
  463. package/packages/agent/src/config/types.tools.d.ts +1 -399
  464. package/packages/agent/src/config/types.tools.d.ts.map +1 -1
  465. package/packages/agent/src/config/types.tools.js +1 -1
  466. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +111 -9
  467. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts.map +1 -1
  468. package/packages/agent/src/config/zod-schema.agent-runtime.js +89 -2
  469. package/packages/agent/src/config/zod-schema.core.d.ts +308 -50
  470. package/packages/agent/src/config/zod-schema.core.d.ts.map +1 -1
  471. package/packages/agent/src/config/zod-schema.core.js +81 -14
  472. package/packages/agent/src/config/zod-schema.d.ts +500 -1913
  473. package/packages/agent/src/config/zod-schema.d.ts.map +1 -1
  474. package/packages/agent/src/config/zod-schema.js +84 -16
  475. package/packages/agent/src/config/zod-schema.providers-core.d.ts +135 -359
  476. package/packages/agent/src/config/zod-schema.providers-core.d.ts.map +1 -1
  477. package/packages/agent/src/config/zod-schema.providers-core.js +51 -88
  478. package/packages/agent/src/config/zod-schema.session.d.ts +1 -1
  479. package/packages/agent/src/config/zod-schema.session.js +1 -1
  480. package/packages/agent/src/contracts/awareness.d.ts +1 -1
  481. package/packages/agent/src/contracts/index.d.ts +1 -8
  482. package/packages/agent/src/contracts/index.d.ts.map +1 -1
  483. package/packages/agent/src/contracts/index.js +1 -8
  484. package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts +177 -0
  485. package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts.map +1 -0
  486. package/packages/agent/src/contracts/{onboarding.js → onboarding-provider-defaults.js} +21 -109
  487. package/packages/agent/src/diagnostics/index.d.ts +2 -0
  488. package/packages/agent/src/diagnostics/index.d.ts.map +1 -0
  489. package/packages/agent/src/diagnostics/index.js +1 -0
  490. package/packages/agent/src/diagnostics/integration-observability.d.ts +1 -1
  491. package/packages/agent/src/diagnostics/integration-observability.d.ts.map +1 -1
  492. package/packages/agent/src/diagnostics/integration-observability.js +13 -3
  493. package/packages/agent/src/hooks/discovery.d.ts +1 -1
  494. package/packages/agent/src/hooks/discovery.d.ts.map +1 -1
  495. package/packages/agent/src/hooks/discovery.js +10 -3
  496. package/packages/agent/src/hooks/eligibility.d.ts +2 -2
  497. package/packages/agent/src/hooks/eligibility.d.ts.map +1 -1
  498. package/packages/agent/src/hooks/eligibility.js +7 -2
  499. package/packages/agent/src/hooks/index.d.ts +2 -2
  500. package/packages/agent/src/hooks/index.d.ts.map +1 -1
  501. package/packages/agent/src/hooks/index.js +2 -2
  502. package/packages/agent/src/hooks/loader.d.ts +2 -2
  503. package/packages/agent/src/hooks/loader.d.ts.map +1 -1
  504. package/packages/agent/src/hooks/loader.js +50 -12
  505. package/packages/agent/src/hooks/registry.d.ts +1 -1
  506. package/packages/agent/src/hooks/registry.d.ts.map +1 -1
  507. package/packages/agent/src/index.d.ts +72 -19
  508. package/packages/agent/src/index.d.ts.map +1 -1
  509. package/packages/agent/src/index.js +104 -19
  510. package/packages/agent/src/providers/admin-panel.d.ts +4 -0
  511. package/packages/agent/src/providers/admin-panel.d.ts.map +1 -0
  512. package/packages/agent/src/providers/admin-panel.js +89 -0
  513. package/packages/agent/src/providers/admin-trust.d.ts.map +1 -1
  514. package/packages/agent/src/providers/admin-trust.js +20 -33
  515. package/packages/agent/src/providers/automation-terminal-bridge.d.ts +3 -0
  516. package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +1 -0
  517. package/packages/agent/src/providers/automation-terminal-bridge.js +77 -0
  518. package/packages/agent/src/providers/conversation-proximity.d.ts +3 -0
  519. package/packages/agent/src/providers/conversation-proximity.d.ts.map +1 -0
  520. package/packages/agent/src/providers/conversation-proximity.js +62 -0
  521. package/packages/agent/src/providers/escalation-trigger.d.ts +15 -0
  522. package/packages/agent/src/providers/escalation-trigger.d.ts.map +1 -0
  523. package/packages/agent/src/providers/escalation-trigger.js +171 -0
  524. package/packages/agent/src/providers/index.d.ts +19 -0
  525. package/packages/agent/src/providers/index.d.ts.map +1 -0
  526. package/packages/agent/src/providers/index.js +18 -0
  527. package/packages/agent/src/providers/local-models.d.ts +118 -0
  528. package/packages/agent/src/providers/local-models.d.ts.map +1 -0
  529. package/packages/agent/src/providers/local-models.js +418 -0
  530. package/packages/agent/src/providers/media-provider.d.ts +233 -0
  531. package/packages/agent/src/providers/media-provider.d.ts.map +1 -0
  532. package/packages/agent/src/providers/media-provider.js +1474 -0
  533. package/packages/agent/src/providers/page-scoped-context.d.ts +3 -0
  534. package/packages/agent/src/providers/page-scoped-context.d.ts.map +1 -0
  535. package/packages/agent/src/providers/page-scoped-context.js +551 -0
  536. package/packages/agent/src/providers/pending-permissions-provider.d.ts +19 -0
  537. package/packages/agent/src/providers/pending-permissions-provider.d.ts.map +1 -0
  538. package/packages/agent/src/providers/pending-permissions-provider.js +104 -0
  539. package/packages/agent/src/providers/recent-conversations.d.ts +3 -0
  540. package/packages/agent/src/providers/recent-conversations.d.ts.map +1 -0
  541. package/packages/agent/src/providers/recent-conversations.js +100 -0
  542. package/packages/agent/src/providers/relevant-conversations.d.ts +3 -0
  543. package/packages/agent/src/providers/relevant-conversations.d.ts.map +1 -0
  544. package/packages/agent/src/providers/relevant-conversations.js +99 -0
  545. package/packages/agent/src/providers/role-backfill.d.ts +18 -0
  546. package/packages/agent/src/providers/role-backfill.d.ts.map +1 -0
  547. package/packages/agent/src/providers/role-backfill.js +86 -0
  548. package/packages/agent/src/providers/rolodex.d.ts +3 -0
  549. package/packages/agent/src/providers/rolodex.d.ts.map +1 -0
  550. package/packages/agent/src/providers/rolodex.js +83 -0
  551. package/packages/agent/src/providers/self-status.d.ts +4 -0
  552. package/packages/agent/src/providers/self-status.d.ts.map +1 -0
  553. package/packages/agent/src/providers/self-status.js +22 -0
  554. package/packages/agent/src/providers/session-bridge.d.ts.map +1 -1
  555. package/packages/agent/src/providers/session-bridge.js +6 -1
  556. package/packages/agent/src/providers/session-utils.d.ts +1 -1
  557. package/packages/agent/src/providers/session-utils.d.ts.map +1 -1
  558. package/packages/agent/src/providers/session-utils.js +2 -3
  559. package/packages/agent/src/providers/simple-mode.d.ts.map +1 -1
  560. package/packages/agent/src/providers/simple-mode.js +18 -54
  561. package/packages/agent/src/providers/skill-provider.d.ts +16 -0
  562. package/packages/agent/src/providers/skill-provider.d.ts.map +1 -0
  563. package/packages/agent/src/providers/skill-provider.js +353 -0
  564. package/packages/agent/src/providers/tasks.d.ts +9 -0
  565. package/packages/agent/src/providers/tasks.d.ts.map +1 -0
  566. package/packages/agent/src/providers/tasks.js +118 -0
  567. package/packages/agent/src/providers/ui-catalog.d.ts.map +1 -1
  568. package/packages/agent/src/providers/ui-catalog.js +15 -38
  569. package/packages/agent/src/providers/user-name.d.ts +11 -0
  570. package/packages/agent/src/providers/user-name.d.ts.map +1 -0
  571. package/packages/agent/src/providers/user-name.js +46 -0
  572. package/packages/agent/src/providers/workspace-provider.d.ts +3 -11
  573. package/packages/agent/src/providers/workspace-provider.d.ts.map +1 -1
  574. package/packages/agent/src/providers/workspace-provider.js +27 -11
  575. package/packages/agent/src/providers/workspace.d.ts +2 -3
  576. package/packages/agent/src/providers/workspace.d.ts.map +1 -1
  577. package/packages/agent/src/providers/workspace.js +81 -68
  578. package/packages/agent/src/runtime/advanced-capabilities-config.d.ts +8 -0
  579. package/packages/agent/src/runtime/advanced-capabilities-config.d.ts.map +1 -0
  580. package/packages/agent/src/runtime/advanced-capabilities-config.js +41 -0
  581. package/packages/agent/src/runtime/agent-wallets.d.ts +138 -0
  582. package/packages/agent/src/runtime/agent-wallets.d.ts.map +1 -0
  583. package/packages/agent/src/runtime/agent-wallets.js +308 -0
  584. package/packages/agent/src/runtime/analysis-mode-flag.d.ts +93 -0
  585. package/packages/agent/src/runtime/analysis-mode-flag.d.ts.map +1 -0
  586. package/packages/agent/src/runtime/analysis-mode-flag.js +131 -0
  587. package/packages/agent/src/runtime/android-app-plugins.d.ts +13 -0
  588. package/packages/agent/src/runtime/android-app-plugins.d.ts.map +1 -0
  589. package/packages/agent/src/runtime/android-app-plugins.js +48 -0
  590. package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts +99 -0
  591. package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts.map +1 -0
  592. package/packages/agent/src/runtime/aosp-dflash-adapter.js +332 -0
  593. package/packages/agent/src/runtime/build-character-config.d.ts +2 -0
  594. package/packages/agent/src/runtime/build-character-config.d.ts.map +1 -0
  595. package/packages/agent/src/runtime/build-character-config.js +176 -0
  596. package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts +141 -0
  597. package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts.map +1 -0
  598. package/packages/agent/src/runtime/conversation-compactor-runtime.js +460 -0
  599. package/packages/agent/src/runtime/conversation-compactor.d.ts +38 -0
  600. package/packages/agent/src/runtime/conversation-compactor.d.ts.map +1 -0
  601. package/packages/agent/src/runtime/conversation-compactor.js +1121 -0
  602. package/packages/agent/src/runtime/conversation-compactor.types.d.ts +102 -0
  603. package/packages/agent/src/runtime/conversation-compactor.types.d.ts.map +1 -0
  604. package/packages/agent/src/runtime/conversation-compactor.types.js +30 -0
  605. package/packages/agent/src/runtime/core-plugins.d.ts +50 -0
  606. package/packages/agent/src/runtime/core-plugins.d.ts.map +1 -1
  607. package/packages/agent/src/runtime/core-plugins.js +85 -16
  608. package/packages/agent/src/runtime/custom-actions.d.ts +5 -2
  609. package/packages/agent/src/runtime/custom-actions.d.ts.map +1 -1
  610. package/packages/agent/src/runtime/custom-actions.js +93 -14
  611. package/packages/agent/src/runtime/default-documents.d.ts +21 -0
  612. package/packages/agent/src/runtime/default-documents.d.ts.map +1 -0
  613. package/packages/agent/src/runtime/default-documents.js +283 -0
  614. package/packages/agent/src/runtime/eliza-plugin.d.ts +1 -1
  615. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  616. package/packages/agent/src/runtime/eliza-plugin.js +142 -67
  617. package/packages/agent/src/runtime/eliza.d.ts +23 -119
  618. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  619. package/packages/agent/src/runtime/eliza.js +1512 -2085
  620. package/packages/agent/src/runtime/embedding-presets.d.ts.map +1 -1
  621. package/packages/agent/src/runtime/embedding-presets.js +27 -20
  622. package/packages/agent/src/runtime/first-time-setup.d.ts +47 -0
  623. package/packages/agent/src/runtime/first-time-setup.d.ts.map +1 -0
  624. package/packages/agent/src/runtime/first-time-setup.js +704 -0
  625. package/packages/agent/src/runtime/index.d.ts +19 -8
  626. package/packages/agent/src/runtime/index.d.ts.map +1 -1
  627. package/packages/agent/src/runtime/index.js +19 -8
  628. package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts +54 -0
  629. package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts.map +1 -0
  630. package/packages/agent/src/runtime/load-plugin-from-vfs.js +86 -0
  631. package/packages/agent/src/runtime/local-execution-mode.d.ts +11 -0
  632. package/packages/agent/src/runtime/local-execution-mode.d.ts.map +1 -0
  633. package/packages/agent/src/runtime/local-execution-mode.js +10 -0
  634. package/packages/agent/src/runtime/model-resolution.d.ts +2 -0
  635. package/packages/agent/src/runtime/model-resolution.d.ts.map +1 -0
  636. package/packages/agent/src/runtime/model-resolution.js +55 -0
  637. package/packages/agent/src/runtime/native-runtime-features.d.ts +4 -0
  638. package/packages/agent/src/runtime/native-runtime-features.d.ts.map +1 -0
  639. package/packages/agent/src/runtime/native-runtime-features.js +10 -0
  640. package/packages/agent/src/runtime/onboarding-names.d.ts +3 -3
  641. package/packages/agent/src/runtime/onboarding-names.d.ts.map +1 -1
  642. package/packages/agent/src/runtime/onboarding-names.js +14 -7
  643. package/packages/agent/src/runtime/operations/classifier.d.ts +36 -0
  644. package/packages/agent/src/runtime/operations/classifier.d.ts.map +1 -0
  645. package/packages/agent/src/runtime/operations/classifier.js +72 -0
  646. package/packages/agent/src/runtime/operations/cold-strategy.d.ts +19 -0
  647. package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +1 -0
  648. package/packages/agent/src/runtime/operations/cold-strategy.js +50 -0
  649. package/packages/agent/src/runtime/operations/health-checks.d.ts +25 -0
  650. package/packages/agent/src/runtime/operations/health-checks.d.ts.map +1 -0
  651. package/packages/agent/src/runtime/operations/health-checks.js +186 -0
  652. package/packages/agent/src/runtime/operations/health.d.ts +32 -0
  653. package/packages/agent/src/runtime/operations/health.d.ts.map +1 -0
  654. package/packages/agent/src/runtime/operations/health.js +139 -0
  655. package/packages/agent/src/runtime/operations/index.d.ts +17 -0
  656. package/packages/agent/src/runtime/operations/index.d.ts.map +1 -0
  657. package/packages/agent/src/runtime/operations/index.js +15 -0
  658. package/packages/agent/src/runtime/operations/manager.d.ts +70 -0
  659. package/packages/agent/src/runtime/operations/manager.d.ts.map +1 -0
  660. package/packages/agent/src/runtime/operations/manager.js +202 -0
  661. package/packages/agent/src/runtime/operations/reload-hot.d.ts +43 -0
  662. package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +1 -0
  663. package/packages/agent/src/runtime/operations/reload-hot.js +181 -0
  664. package/packages/agent/src/runtime/operations/repository.d.ts +66 -0
  665. package/packages/agent/src/runtime/operations/repository.d.ts.map +1 -0
  666. package/packages/agent/src/runtime/operations/repository.js +319 -0
  667. package/packages/agent/src/runtime/operations/types.d.ts +203 -0
  668. package/packages/agent/src/runtime/operations/types.d.ts.map +1 -0
  669. package/packages/agent/src/runtime/operations/types.js +18 -0
  670. package/packages/agent/src/runtime/operations/vault-bridge.d.ts +81 -0
  671. package/packages/agent/src/runtime/operations/vault-bridge.d.ts.map +1 -0
  672. package/packages/agent/src/runtime/operations/vault-bridge.js +133 -0
  673. package/packages/agent/src/runtime/owner-entity.d.ts +4 -0
  674. package/packages/agent/src/runtime/owner-entity.d.ts.map +1 -0
  675. package/packages/agent/src/runtime/owner-entity.js +30 -0
  676. package/packages/agent/src/runtime/pglite-error-compat.d.ts +28 -0
  677. package/packages/agent/src/runtime/pglite-error-compat.d.ts.map +1 -0
  678. package/packages/agent/src/runtime/pglite-error-compat.js +54 -0
  679. package/packages/agent/src/runtime/plugin-collector.d.ts +22 -0
  680. package/packages/agent/src/runtime/plugin-collector.d.ts.map +1 -0
  681. package/packages/agent/src/runtime/plugin-collector.js +503 -0
  682. package/packages/agent/src/runtime/plugin-lifecycle.d.ts +45 -0
  683. package/packages/agent/src/runtime/plugin-lifecycle.d.ts.map +1 -0
  684. package/packages/agent/src/runtime/plugin-lifecycle.js +602 -0
  685. package/packages/agent/src/runtime/plugin-resolver.d.ts +46 -0
  686. package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -0
  687. package/packages/agent/src/runtime/plugin-resolver.js +1375 -0
  688. package/packages/agent/src/runtime/plugin-role-gating.d.ts +24 -0
  689. package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +1 -0
  690. package/packages/agent/src/runtime/plugin-role-gating.js +106 -0
  691. package/packages/agent/src/runtime/plugin-types.d.ts +64 -0
  692. package/packages/agent/src/runtime/plugin-types.d.ts.map +1 -0
  693. package/packages/agent/src/runtime/plugin-types.js +306 -0
  694. package/packages/agent/src/runtime/prompt-compaction.d.ts +98 -0
  695. package/packages/agent/src/runtime/prompt-compaction.d.ts.map +1 -0
  696. package/packages/agent/src/runtime/prompt-compaction.js +362 -0
  697. package/packages/agent/src/runtime/prompt-optimization.d.ts +47 -0
  698. package/packages/agent/src/runtime/prompt-optimization.d.ts.map +1 -0
  699. package/packages/agent/src/runtime/prompt-optimization.js +1123 -0
  700. package/packages/agent/src/runtime/release-plugin-policy.d.ts.map +1 -1
  701. package/packages/agent/src/runtime/release-plugin-policy.js +2 -4
  702. package/packages/agent/src/runtime/restart.d.ts +5 -41
  703. package/packages/agent/src/runtime/restart.d.ts.map +1 -1
  704. package/packages/agent/src/runtime/restart.js +5 -42
  705. package/packages/agent/src/runtime/roles/src/index.d.ts +24 -0
  706. package/packages/agent/src/runtime/roles/src/index.d.ts.map +1 -0
  707. package/packages/agent/src/runtime/roles/src/index.js +255 -0
  708. package/packages/agent/src/runtime/roles/src/provider.d.ts +7 -0
  709. package/packages/agent/src/runtime/roles/src/provider.d.ts.map +1 -0
  710. package/packages/agent/src/runtime/roles/src/provider.js +138 -0
  711. package/packages/agent/src/runtime/roles/src/types.d.ts +3 -0
  712. package/packages/agent/src/runtime/roles/src/types.d.ts.map +1 -0
  713. package/packages/agent/src/runtime/roles/src/types.js +1 -0
  714. package/packages/agent/src/runtime/roles/src/utils.d.ts +2 -0
  715. package/packages/agent/src/runtime/roles/src/utils.d.ts.map +1 -0
  716. package/packages/agent/src/runtime/roles/src/utils.js +1 -0
  717. package/packages/agent/src/runtime/roles.d.ts +3 -0
  718. package/packages/agent/src/runtime/roles.d.ts.map +1 -0
  719. package/packages/agent/src/runtime/roles.js +5 -0
  720. package/packages/agent/src/runtime/subagent-output.d.ts +51 -0
  721. package/packages/agent/src/runtime/subagent-output.d.ts.map +1 -0
  722. package/packages/agent/src/runtime/subagent-output.js +173 -0
  723. package/packages/agent/src/runtime/task-heartbeat.d.ts +22 -0
  724. package/packages/agent/src/runtime/task-heartbeat.d.ts.map +1 -0
  725. package/packages/agent/src/runtime/task-heartbeat.js +84 -0
  726. package/packages/agent/src/runtime/tool-call-cache/cache.d.ts +62 -0
  727. package/packages/agent/src/runtime/tool-call-cache/cache.d.ts.map +1 -0
  728. package/packages/agent/src/runtime/tool-call-cache/cache.js +123 -0
  729. package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts +23 -0
  730. package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts.map +1 -0
  731. package/packages/agent/src/runtime/tool-call-cache/disk-store.js +55 -0
  732. package/packages/agent/src/runtime/tool-call-cache/index.d.ts +7 -0
  733. package/packages/agent/src/runtime/tool-call-cache/index.d.ts.map +1 -0
  734. package/packages/agent/src/runtime/tool-call-cache/index.js +4 -0
  735. package/packages/agent/src/runtime/tool-call-cache/key.d.ts +11 -0
  736. package/packages/agent/src/runtime/tool-call-cache/key.d.ts.map +1 -0
  737. package/packages/agent/src/runtime/tool-call-cache/key.js +31 -0
  738. package/packages/agent/src/runtime/tool-call-cache/lru.d.ts +17 -0
  739. package/packages/agent/src/runtime/tool-call-cache/lru.d.ts.map +1 -0
  740. package/packages/agent/src/runtime/tool-call-cache/lru.js +46 -0
  741. package/packages/agent/src/runtime/tool-call-cache/redact.d.ts +17 -0
  742. package/packages/agent/src/runtime/tool-call-cache/redact.d.ts.map +1 -0
  743. package/packages/agent/src/runtime/tool-call-cache/redact.js +77 -0
  744. package/packages/agent/src/runtime/tool-call-cache/registry.d.ts +18 -0
  745. package/packages/agent/src/runtime/tool-call-cache/registry.d.ts.map +1 -0
  746. package/packages/agent/src/runtime/tool-call-cache/registry.js +66 -0
  747. package/packages/agent/src/runtime/tool-call-cache/types.d.ts +50 -0
  748. package/packages/agent/src/runtime/tool-call-cache/types.d.ts.map +1 -0
  749. package/packages/agent/src/runtime/tool-call-cache/types.js +10 -0
  750. package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts +39 -0
  751. package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts.map +1 -0
  752. package/packages/agent/src/runtime/tool-call-cache-wrapper.js +72 -0
  753. package/packages/agent/src/runtime/trajectory-export.d.ts +18 -0
  754. package/packages/agent/src/runtime/trajectory-export.d.ts.map +1 -0
  755. package/packages/agent/src/runtime/trajectory-export.js +109 -0
  756. package/packages/agent/src/runtime/trajectory-internals.d.ts +242 -0
  757. package/packages/agent/src/runtime/trajectory-internals.d.ts.map +1 -0
  758. package/packages/agent/src/runtime/trajectory-internals.js +1281 -0
  759. package/packages/agent/src/runtime/trajectory-persistence.d.ts +13 -212
  760. package/packages/agent/src/runtime/trajectory-persistence.d.ts.map +1 -1
  761. package/packages/agent/src/runtime/trajectory-persistence.js +25 -1952
  762. package/packages/agent/src/runtime/trajectory-query.d.ts +8 -0
  763. package/packages/agent/src/runtime/trajectory-query.d.ts.map +1 -0
  764. package/packages/agent/src/runtime/trajectory-query.js +27 -0
  765. package/packages/agent/src/runtime/trajectory-storage.d.ts +91 -0
  766. package/packages/agent/src/runtime/trajectory-storage.d.ts.map +1 -0
  767. package/packages/agent/src/runtime/trajectory-storage.js +1093 -0
  768. package/packages/agent/src/runtime/vault-profile-resolver.d.ts +37 -0
  769. package/packages/agent/src/runtime/vault-profile-resolver.d.ts.map +1 -0
  770. package/packages/agent/src/runtime/vault-profile-resolver.js +79 -0
  771. package/packages/agent/src/runtime/version.js +1 -1
  772. package/packages/agent/src/runtime/web-search-tools.d.ts +22 -0
  773. package/packages/agent/src/runtime/web-search-tools.d.ts.map +1 -0
  774. package/packages/agent/src/runtime/web-search-tools.js +151 -0
  775. package/packages/agent/src/security/access.d.ts +17 -0
  776. package/packages/agent/src/security/access.d.ts.map +1 -0
  777. package/packages/agent/src/security/access.js +54 -0
  778. package/packages/agent/src/security/audit-log.d.ts +0 -2
  779. package/packages/agent/src/security/audit-log.d.ts.map +1 -1
  780. package/packages/agent/src/security/index.d.ts +4 -0
  781. package/packages/agent/src/security/index.d.ts.map +1 -0
  782. package/packages/agent/src/security/index.js +3 -0
  783. package/packages/agent/src/services/agent-export.d.ts.map +1 -1
  784. package/packages/agent/src/services/agent-export.js +58 -23
  785. package/packages/agent/src/services/app-manager-agents-list-guard.d.ts +4 -0
  786. package/packages/agent/src/services/app-manager-agents-list-guard.d.ts.map +1 -0
  787. package/packages/agent/src/services/app-manager-agents-list-guard.js +15 -0
  788. package/packages/agent/src/services/app-manager.d.ts +78 -4
  789. package/packages/agent/src/services/app-manager.d.ts.map +1 -1
  790. package/packages/agent/src/services/app-manager.js +1429 -176
  791. package/packages/agent/src/services/app-package-modules.d.ts +22 -0
  792. package/packages/agent/src/services/app-package-modules.d.ts.map +1 -0
  793. package/packages/agent/src/services/app-package-modules.js +397 -0
  794. package/packages/agent/src/services/app-run-store.d.ts +6 -0
  795. package/packages/agent/src/services/app-run-store.d.ts.map +1 -0
  796. package/packages/agent/src/services/app-run-store.js +547 -0
  797. package/packages/agent/src/services/app-session-gate.d.ts +15 -0
  798. package/packages/agent/src/services/app-session-gate.d.ts.map +1 -0
  799. package/packages/agent/src/services/app-session-gate.js +71 -0
  800. package/packages/agent/src/services/capability-broker.d.ts +89 -0
  801. package/packages/agent/src/services/capability-broker.d.ts.map +1 -0
  802. package/packages/agent/src/services/capability-broker.js +339 -0
  803. package/packages/agent/src/services/character-history.d.ts +69 -0
  804. package/packages/agent/src/services/character-history.d.ts.map +1 -0
  805. package/packages/agent/src/services/character-history.js +280 -0
  806. package/packages/agent/src/services/character-persistence.d.ts +25 -0
  807. package/packages/agent/src/services/character-persistence.d.ts.map +1 -0
  808. package/packages/agent/src/services/character-persistence.js +167 -0
  809. package/packages/agent/src/services/client-chat-sender.d.ts +19 -0
  810. package/packages/agent/src/services/client-chat-sender.d.ts.map +1 -0
  811. package/packages/agent/src/services/client-chat-sender.js +88 -0
  812. package/packages/agent/src/services/config-plugin-manager.d.ts +6 -0
  813. package/packages/agent/src/services/config-plugin-manager.d.ts.map +1 -0
  814. package/packages/agent/src/services/config-plugin-manager.js +53 -0
  815. package/packages/agent/src/services/connector-setup-service.d.ts +48 -0
  816. package/packages/agent/src/services/connector-setup-service.d.ts.map +1 -0
  817. package/packages/agent/src/services/connector-setup-service.js +60 -0
  818. package/packages/agent/src/services/escalation.d.ts +35 -0
  819. package/packages/agent/src/services/escalation.d.ts.map +1 -0
  820. package/packages/agent/src/services/escalation.js +376 -0
  821. package/packages/agent/src/services/evm-signing-capability.d.ts +33 -0
  822. package/packages/agent/src/services/evm-signing-capability.d.ts.map +1 -0
  823. package/packages/agent/src/services/evm-signing-capability.js +52 -0
  824. package/packages/agent/src/services/external-bridge-state.d.ts +10 -0
  825. package/packages/agent/src/services/external-bridge-state.d.ts.map +1 -0
  826. package/packages/agent/src/services/external-bridge-state.js +14 -0
  827. package/packages/agent/src/services/hosted-tools.d.ts +70 -0
  828. package/packages/agent/src/services/hosted-tools.d.ts.map +1 -0
  829. package/packages/agent/src/services/hosted-tools.js +87 -0
  830. package/packages/agent/src/services/index.d.ts +26 -17
  831. package/packages/agent/src/services/index.d.ts.map +1 -1
  832. package/packages/agent/src/services/index.js +32 -17
  833. package/packages/agent/src/services/js-runtime-bridge.d.ts +105 -0
  834. package/packages/agent/src/services/js-runtime-bridge.d.ts.map +1 -0
  835. package/packages/agent/src/services/js-runtime-bridge.js +217 -0
  836. package/packages/agent/src/services/mcp-marketplace.js +1 -1
  837. package/packages/agent/src/services/media-generation.d.ts +10 -0
  838. package/packages/agent/src/services/media-generation.d.ts.map +1 -0
  839. package/packages/agent/src/services/media-generation.js +102 -0
  840. package/packages/agent/src/services/overlay-app-presence.d.ts +9 -0
  841. package/packages/agent/src/services/overlay-app-presence.d.ts.map +1 -0
  842. package/packages/agent/src/services/overlay-app-presence.js +18 -0
  843. package/packages/agent/src/services/owner-name.d.ts +4 -0
  844. package/packages/agent/src/services/owner-name.d.ts.map +1 -0
  845. package/packages/agent/src/services/owner-name.js +46 -0
  846. package/packages/agent/src/services/permissions/contracts.d.ts +9 -0
  847. package/packages/agent/src/services/permissions/contracts.d.ts.map +1 -0
  848. package/packages/agent/src/services/permissions/contracts.js +8 -0
  849. package/packages/agent/src/services/permissions/probers/_bridge.d.ts +77 -0
  850. package/packages/agent/src/services/permissions/probers/_bridge.d.ts.map +1 -0
  851. package/packages/agent/src/services/permissions/probers/_bridge.js +224 -0
  852. package/packages/agent/src/services/permissions/probers/accessibility.d.ts +16 -0
  853. package/packages/agent/src/services/permissions/probers/accessibility.d.ts.map +1 -0
  854. package/packages/agent/src/services/permissions/probers/accessibility.js +45 -0
  855. package/packages/agent/src/services/permissions/probers/automation.d.ts +17 -0
  856. package/packages/agent/src/services/permissions/probers/automation.d.ts.map +1 -0
  857. package/packages/agent/src/services/permissions/probers/automation.js +46 -0
  858. package/packages/agent/src/services/permissions/probers/calendar.d.ts +14 -0
  859. package/packages/agent/src/services/permissions/probers/calendar.d.ts.map +1 -0
  860. package/packages/agent/src/services/permissions/probers/calendar.js +33 -0
  861. package/packages/agent/src/services/permissions/probers/camera.d.ts +14 -0
  862. package/packages/agent/src/services/permissions/probers/camera.d.ts.map +1 -0
  863. package/packages/agent/src/services/permissions/probers/camera.js +39 -0
  864. package/packages/agent/src/services/permissions/probers/contacts.d.ts +13 -0
  865. package/packages/agent/src/services/permissions/probers/contacts.d.ts.map +1 -0
  866. package/packages/agent/src/services/permissions/probers/contacts.js +32 -0
  867. package/packages/agent/src/services/permissions/probers/full-disk.d.ts +22 -0
  868. package/packages/agent/src/services/permissions/probers/full-disk.d.ts.map +1 -0
  869. package/packages/agent/src/services/permissions/probers/full-disk.js +78 -0
  870. package/packages/agent/src/services/permissions/probers/health.d.ts +23 -0
  871. package/packages/agent/src/services/permissions/probers/health.d.ts.map +1 -0
  872. package/packages/agent/src/services/permissions/probers/health.js +82 -0
  873. package/packages/agent/src/services/permissions/probers/index.d.ts +27 -0
  874. package/packages/agent/src/services/permissions/probers/index.d.ts.map +1 -0
  875. package/packages/agent/src/services/permissions/probers/index.js +42 -0
  876. package/packages/agent/src/services/permissions/probers/location.d.ts +21 -0
  877. package/packages/agent/src/services/permissions/probers/location.d.ts.map +1 -0
  878. package/packages/agent/src/services/permissions/probers/location.js +47 -0
  879. package/packages/agent/src/services/permissions/probers/microphone.d.ts +14 -0
  880. package/packages/agent/src/services/permissions/probers/microphone.d.ts.map +1 -0
  881. package/packages/agent/src/services/permissions/probers/microphone.js +41 -0
  882. package/packages/agent/src/services/permissions/probers/notes.d.ts +19 -0
  883. package/packages/agent/src/services/permissions/probers/notes.d.ts.map +1 -0
  884. package/packages/agent/src/services/permissions/probers/notes.js +55 -0
  885. package/packages/agent/src/services/permissions/probers/notifications.d.ts +24 -0
  886. package/packages/agent/src/services/permissions/probers/notifications.d.ts.map +1 -0
  887. package/packages/agent/src/services/permissions/probers/notifications.js +47 -0
  888. package/packages/agent/src/services/permissions/probers/reminders.d.ts +22 -0
  889. package/packages/agent/src/services/permissions/probers/reminders.d.ts.map +1 -0
  890. package/packages/agent/src/services/permissions/probers/reminders.js +44 -0
  891. package/packages/agent/src/services/permissions/probers/screen-recording.d.ts +15 -0
  892. package/packages/agent/src/services/permissions/probers/screen-recording.d.ts.map +1 -0
  893. package/packages/agent/src/services/permissions/probers/screen-recording.js +39 -0
  894. package/packages/agent/src/services/permissions/probers/screentime.d.ts +21 -0
  895. package/packages/agent/src/services/permissions/probers/screentime.d.ts.map +1 -0
  896. package/packages/agent/src/services/permissions/probers/screentime.js +67 -0
  897. package/packages/agent/src/services/permissions/probers/shell.d.ts +19 -0
  898. package/packages/agent/src/services/permissions/probers/shell.d.ts.map +1 -0
  899. package/packages/agent/src/services/permissions/probers/shell.js +31 -0
  900. package/packages/agent/src/services/permissions/probers/website-blocking.d.ts +16 -0
  901. package/packages/agent/src/services/permissions/probers/website-blocking.d.ts.map +1 -0
  902. package/packages/agent/src/services/permissions/probers/website-blocking.js +27 -0
  903. package/packages/agent/src/services/permissions/register-probers.d.ts +29 -0
  904. package/packages/agent/src/services/permissions/register-probers.d.ts.map +1 -0
  905. package/packages/agent/src/services/permissions/register-probers.js +31 -0
  906. package/packages/agent/src/services/permissions-registry.d.ts +62 -0
  907. package/packages/agent/src/services/permissions-registry.d.ts.map +1 -0
  908. package/packages/agent/src/services/permissions-registry.js +213 -0
  909. package/packages/agent/src/services/plugin-compiler.d.ts +51 -0
  910. package/packages/agent/src/services/plugin-compiler.d.ts.map +1 -0
  911. package/packages/agent/src/services/plugin-compiler.js +90 -0
  912. package/packages/agent/src/services/plugin-installer.d.ts +93 -0
  913. package/packages/agent/src/services/plugin-installer.d.ts.map +1 -0
  914. package/packages/agent/src/services/plugin-installer.js +623 -0
  915. package/packages/agent/src/services/plugin-manager-types.d.ts +30 -55
  916. package/packages/agent/src/services/plugin-manager-types.d.ts.map +1 -1
  917. package/packages/agent/src/services/registry-client-app-meta.d.ts +1 -1
  918. package/packages/agent/src/services/registry-client-app-meta.d.ts.map +1 -1
  919. package/packages/agent/src/services/registry-client-app-meta.js +53 -32
  920. package/packages/agent/src/services/registry-client-endpoints.d.ts +2 -2
  921. package/packages/agent/src/services/registry-client-endpoints.d.ts.map +1 -1
  922. package/packages/agent/src/services/registry-client-endpoints.js +11 -4
  923. package/packages/agent/src/services/registry-client-local.d.ts +1 -1
  924. package/packages/agent/src/services/registry-client-local.d.ts.map +1 -1
  925. package/packages/agent/src/services/registry-client-local.js +239 -61
  926. package/packages/agent/src/services/registry-client-network.d.ts +6 -1
  927. package/packages/agent/src/services/registry-client-network.d.ts.map +1 -1
  928. package/packages/agent/src/services/registry-client-network.js +43 -5
  929. package/packages/agent/src/services/registry-client-queries.d.ts +16 -5
  930. package/packages/agent/src/services/registry-client-queries.d.ts.map +1 -1
  931. package/packages/agent/src/services/registry-client-queries.js +50 -3
  932. package/packages/agent/src/services/registry-client-types.d.ts +39 -40
  933. package/packages/agent/src/services/registry-client-types.d.ts.map +1 -1
  934. package/packages/agent/src/services/registry-client.d.ts +3 -3
  935. package/packages/agent/src/services/registry-client.d.ts.map +1 -1
  936. package/packages/agent/src/services/registry-client.js +116 -16
  937. package/packages/agent/src/services/relationships-graph.d.ts +13 -0
  938. package/packages/agent/src/services/relationships-graph.d.ts.map +1 -0
  939. package/packages/agent/src/services/relationships-graph.js +38 -0
  940. package/packages/agent/src/services/remote-signing-service.d.ts +2 -2
  941. package/packages/agent/src/services/remote-signing-service.d.ts.map +1 -1
  942. package/packages/agent/src/services/remote-signing-service.js +2 -2
  943. package/packages/agent/src/services/research-task-executor.d.ts +14 -0
  944. package/packages/agent/src/services/research-task-executor.d.ts.map +1 -0
  945. package/packages/agent/src/services/research-task-executor.js +138 -0
  946. package/packages/agent/src/services/sandbox-manager.d.ts +24 -1
  947. package/packages/agent/src/services/sandbox-manager.d.ts.map +1 -1
  948. package/packages/agent/src/services/sandbox-manager.js +174 -109
  949. package/packages/agent/src/services/self-updater.d.ts +1 -1
  950. package/packages/agent/src/services/self-updater.d.ts.map +1 -1
  951. package/packages/agent/src/services/self-updater.js +1 -1
  952. package/packages/agent/src/services/send-handler-availability.d.ts +5 -0
  953. package/packages/agent/src/services/send-handler-availability.d.ts.map +1 -0
  954. package/packages/agent/src/services/send-handler-availability.js +20 -0
  955. package/packages/agent/src/services/shell-execution-router.d.ts +67 -0
  956. package/packages/agent/src/services/shell-execution-router.d.ts.map +1 -0
  957. package/packages/agent/src/services/shell-execution-router.js +201 -0
  958. package/packages/agent/src/services/skill-marketplace.d.ts.map +1 -1
  959. package/packages/agent/src/services/skill-marketplace.js +36 -25
  960. package/packages/agent/src/services/task-executor.d.ts +47 -0
  961. package/packages/agent/src/services/task-executor.d.ts.map +1 -0
  962. package/packages/agent/src/services/task-executor.js +31 -0
  963. package/packages/agent/src/services/update-checker.d.ts +1 -1
  964. package/packages/agent/src/services/update-checker.d.ts.map +1 -1
  965. package/packages/agent/src/services/update-checker.js +4 -4
  966. package/packages/agent/src/services/version-compat.d.ts +4 -4
  967. package/packages/agent/src/services/version-compat.d.ts.map +1 -1
  968. package/packages/agent/src/services/version-compat.js +23 -7
  969. package/packages/agent/src/services/virtual-filesystem.d.ts +88 -0
  970. package/packages/agent/src/services/virtual-filesystem.d.ts.map +1 -0
  971. package/packages/agent/src/services/virtual-filesystem.js +410 -0
  972. package/packages/agent/src/shared/conversation-format.d.ts +11 -0
  973. package/packages/agent/src/shared/conversation-format.d.ts.map +1 -0
  974. package/packages/agent/src/shared/conversation-format.js +69 -0
  975. package/packages/agent/src/shared/index.d.ts +4 -0
  976. package/packages/agent/src/shared/index.d.ts.map +1 -0
  977. package/packages/agent/src/shared/index.js +3 -0
  978. package/packages/agent/src/shared/ui-catalog-prompt.d.ts +60 -18
  979. package/packages/agent/src/shared/ui-catalog-prompt.d.ts.map +1 -1
  980. package/packages/agent/src/shared/ui-catalog-prompt.js +116 -99
  981. package/packages/agent/src/shared/workspace-resolution.d.ts +5 -0
  982. package/packages/agent/src/shared/workspace-resolution.d.ts.map +1 -0
  983. package/packages/agent/src/shared/workspace-resolution.js +70 -0
  984. package/packages/agent/src/templates/skill-scaffold.d.ts +9 -0
  985. package/packages/agent/src/templates/skill-scaffold.d.ts.map +1 -0
  986. package/packages/agent/src/templates/skill-scaffold.js +26 -0
  987. package/packages/agent/src/test-support/index.d.ts +4 -0
  988. package/packages/agent/src/test-support/index.d.ts.map +1 -0
  989. package/packages/agent/src/test-support/index.js +3 -0
  990. package/packages/agent/src/test-support/route-test-helpers.d.ts +2 -2
  991. package/packages/agent/src/test-support/route-test-helpers.d.ts.map +1 -1
  992. package/packages/agent/src/test-support/route-test-helpers.js +1 -1
  993. package/packages/agent/src/test-support/test-helpers.d.ts +3 -3
  994. package/packages/agent/src/test-support/test-helpers.d.ts.map +1 -1
  995. package/packages/agent/src/test-support/test-helpers.js +35 -24
  996. package/packages/agent/src/test-utils/sqlite-compat.d.ts +23 -0
  997. package/packages/agent/src/test-utils/sqlite-compat.d.ts.map +1 -0
  998. package/packages/agent/src/test-utils/sqlite-compat.js +214 -0
  999. package/packages/agent/src/testing/index.d.ts +3 -3
  1000. package/packages/agent/src/testing/index.d.ts.map +1 -1
  1001. package/packages/agent/src/testing/index.js +3 -3
  1002. package/packages/agent/src/triggers/index.d.ts +5 -0
  1003. package/packages/agent/src/triggers/index.d.ts.map +1 -0
  1004. package/packages/agent/src/triggers/index.js +4 -0
  1005. package/packages/agent/src/triggers/runtime.d.ts +8 -2
  1006. package/packages/agent/src/triggers/runtime.d.ts.map +1 -1
  1007. package/packages/agent/src/triggers/runtime.js +197 -72
  1008. package/packages/agent/src/triggers/scheduling.d.ts +9 -1
  1009. package/packages/agent/src/triggers/scheduling.d.ts.map +1 -1
  1010. package/packages/agent/src/triggers/scheduling.js +103 -22
  1011. package/packages/agent/src/triggers/text-to-workflow.d.ts +58 -0
  1012. package/packages/agent/src/triggers/text-to-workflow.d.ts.map +1 -0
  1013. package/packages/agent/src/triggers/text-to-workflow.js +44 -0
  1014. package/packages/agent/src/triggers/types.d.ts +18 -37
  1015. package/packages/agent/src/triggers/types.d.ts.map +1 -1
  1016. package/packages/agent/src/triggers/types.js +1 -1
  1017. package/packages/agent/src/types/agent-skills.d.ts +19 -0
  1018. package/packages/agent/src/types/agent-skills.d.ts.map +1 -0
  1019. package/packages/agent/src/types/agent-skills.js +7 -0
  1020. package/packages/agent/src/types/config-like.d.ts +17 -0
  1021. package/packages/agent/src/types/config-like.d.ts.map +1 -0
  1022. package/packages/agent/src/types/config-like.js +7 -0
  1023. package/packages/agent/src/types/index.d.ts +4 -0
  1024. package/packages/agent/src/types/index.d.ts.map +1 -0
  1025. package/packages/agent/src/types/index.js +3 -0
  1026. package/packages/agent/src/types/trajectory.d.ts +20 -0
  1027. package/packages/agent/src/types/trajectory.d.ts.map +1 -0
  1028. package/packages/agent/src/types/trajectory.js +2 -0
  1029. package/packages/agent/src/utils/atomic-json.d.ts +37 -0
  1030. package/packages/agent/src/utils/atomic-json.d.ts.map +1 -0
  1031. package/packages/agent/src/utils/atomic-json.js +98 -0
  1032. package/packages/agent/src/utils/index.d.ts +2 -0
  1033. package/packages/agent/src/utils/index.d.ts.map +1 -0
  1034. package/packages/agent/src/utils/index.js +1 -0
  1035. package/packages/agent/src/utils/number-parsing.d.ts.map +1 -1
  1036. package/packages/agent/src/utils/number-parsing.js +1 -2
  1037. package/packages/agent/src/version-resolver.d.ts +0 -1
  1038. package/packages/agent/src/version-resolver.d.ts.map +1 -1
  1039. package/packages/agent/src/version-resolver.js +0 -1
  1040. package/LICENSE +0 -21
  1041. package/packages/agent/src/actions/emote.d.ts +0 -14
  1042. package/packages/agent/src/actions/emote.d.ts.map +0 -1
  1043. package/packages/agent/src/actions/emote.js +0 -91
  1044. package/packages/agent/src/actions/restart.d.ts +0 -19
  1045. package/packages/agent/src/actions/restart.d.ts.map +0 -1
  1046. package/packages/agent/src/actions/restart.js +0 -86
  1047. package/packages/agent/src/actions/send-message.d.ts +0 -3
  1048. package/packages/agent/src/actions/send-message.d.ts.map +0 -1
  1049. package/packages/agent/src/actions/send-message.js +0 -144
  1050. package/packages/agent/src/actions/switch-stream-source.d.ts +0 -16
  1051. package/packages/agent/src/actions/switch-stream-source.d.ts.map +0 -1
  1052. package/packages/agent/src/actions/switch-stream-source.js +0 -94
  1053. package/packages/agent/src/api/bsc-trade.d.ts +0 -34
  1054. package/packages/agent/src/api/bsc-trade.d.ts.map +0 -1
  1055. package/packages/agent/src/api/bsc-trade.js +0 -567
  1056. package/packages/agent/src/api/cloud-billing-routes.d.ts +0 -14
  1057. package/packages/agent/src/api/cloud-billing-routes.d.ts.map +0 -1
  1058. package/packages/agent/src/api/cloud-billing-routes.js +0 -400
  1059. package/packages/agent/src/api/cloud-compat-routes.d.ts +0 -15
  1060. package/packages/agent/src/api/cloud-compat-routes.d.ts.map +0 -1
  1061. package/packages/agent/src/api/cloud-compat-routes.js +0 -131
  1062. package/packages/agent/src/api/cloud-routes.d.ts +0 -62
  1063. package/packages/agent/src/api/cloud-routes.d.ts.map +0 -1
  1064. package/packages/agent/src/api/cloud-routes.js +0 -339
  1065. package/packages/agent/src/api/cloud-status-routes.d.ts +0 -15
  1066. package/packages/agent/src/api/cloud-status-routes.d.ts.map +0 -1
  1067. package/packages/agent/src/api/cloud-status-routes.js +0 -165
  1068. package/packages/agent/src/api/drop-service.d.ts +0 -26
  1069. package/packages/agent/src/api/drop-service.d.ts.map +0 -1
  1070. package/packages/agent/src/api/drop-service.js +0 -134
  1071. package/packages/agent/src/api/http-helpers.d.ts +0 -50
  1072. package/packages/agent/src/api/http-helpers.d.ts.map +0 -1
  1073. package/packages/agent/src/api/http-helpers.js +0 -145
  1074. package/packages/agent/src/api/knowledge-routes.d.ts +0 -23
  1075. package/packages/agent/src/api/knowledge-routes.d.ts.map +0 -1
  1076. package/packages/agent/src/api/knowledge-routes.js +0 -931
  1077. package/packages/agent/src/api/knowledge-service-loader.d.ts +0 -51
  1078. package/packages/agent/src/api/knowledge-service-loader.d.ts.map +0 -1
  1079. package/packages/agent/src/api/merkle-tree.d.ts +0 -90
  1080. package/packages/agent/src/api/merkle-tree.d.ts.map +0 -1
  1081. package/packages/agent/src/api/merkle-tree.js +0 -174
  1082. package/packages/agent/src/api/og-tracker.d.ts +0 -28
  1083. package/packages/agent/src/api/og-tracker.d.ts.map +0 -1
  1084. package/packages/agent/src/api/og-tracker.js +0 -60
  1085. package/packages/agent/src/api/route-helpers.d.ts +0 -16
  1086. package/packages/agent/src/api/route-helpers.d.ts.map +0 -1
  1087. package/packages/agent/src/api/route-helpers.js +0 -1
  1088. package/packages/agent/src/api/sandbox-routes.d.ts +0 -12
  1089. package/packages/agent/src/api/sandbox-routes.d.ts.map +0 -1
  1090. package/packages/agent/src/api/sandbox-routes.js +0 -1334
  1091. package/packages/agent/src/api/signal-routes.d.ts +0 -39
  1092. package/packages/agent/src/api/signal-routes.d.ts.map +0 -1
  1093. package/packages/agent/src/api/signal-routes.js +0 -168
  1094. package/packages/agent/src/api/stream-persistence.d.ts +0 -64
  1095. package/packages/agent/src/api/stream-persistence.d.ts.map +0 -1
  1096. package/packages/agent/src/api/stream-persistence.js +0 -231
  1097. package/packages/agent/src/api/stream-route-state.d.ts +0 -50
  1098. package/packages/agent/src/api/stream-route-state.d.ts.map +0 -1
  1099. package/packages/agent/src/api/stream-route-state.js +0 -1
  1100. package/packages/agent/src/api/stream-routes.d.ts +0 -45
  1101. package/packages/agent/src/api/stream-routes.d.ts.map +0 -1
  1102. package/packages/agent/src/api/stream-routes.js +0 -809
  1103. package/packages/agent/src/api/stream-voice-routes.d.ts +0 -36
  1104. package/packages/agent/src/api/stream-voice-routes.d.ts.map +0 -1
  1105. package/packages/agent/src/api/stream-voice-routes.js +0 -133
  1106. package/packages/agent/src/api/streaming-text.d.ts +0 -9
  1107. package/packages/agent/src/api/streaming-text.d.ts.map +0 -1
  1108. package/packages/agent/src/api/streaming-text.js +0 -85
  1109. package/packages/agent/src/api/streaming-types.d.ts +0 -30
  1110. package/packages/agent/src/api/streaming-types.d.ts.map +0 -1
  1111. package/packages/agent/src/api/streaming-types.js +0 -1
  1112. package/packages/agent/src/api/training-routes.d.ts +0 -44
  1113. package/packages/agent/src/api/training-routes.d.ts.map +0 -1
  1114. package/packages/agent/src/api/training-routes.js +0 -195
  1115. package/packages/agent/src/api/trajectory-routes.d.ts +0 -17
  1116. package/packages/agent/src/api/trajectory-routes.d.ts.map +0 -1
  1117. package/packages/agent/src/api/trajectory-routes.js +0 -405
  1118. package/packages/agent/src/api/trigger-routes.d.ts +0 -72
  1119. package/packages/agent/src/api/trigger-routes.d.ts.map +0 -1
  1120. package/packages/agent/src/api/trigger-routes.js +0 -268
  1121. package/packages/agent/src/api/twitter-verify.d.ts +0 -25
  1122. package/packages/agent/src/api/twitter-verify.d.ts.map +0 -1
  1123. package/packages/agent/src/api/twitter-verify.js +0 -168
  1124. package/packages/agent/src/api/whatsapp-routes.d.ts +0 -39
  1125. package/packages/agent/src/api/whatsapp-routes.d.ts.map +0 -1
  1126. package/packages/agent/src/api/whatsapp-routes.js +0 -182
  1127. package/packages/agent/src/auth/apply-stealth.d.ts +0 -8
  1128. package/packages/agent/src/auth/apply-stealth.d.ts.map +0 -1
  1129. package/packages/agent/src/auth/apply-stealth.js +0 -35
  1130. package/packages/agent/src/benchmark-server.d.ts +0 -2
  1131. package/packages/agent/src/benchmark-server.d.ts.map +0 -1
  1132. package/packages/agent/src/benchmark-server.js +0 -773
  1133. package/packages/agent/src/cloud/auth.d.ts +0 -19
  1134. package/packages/agent/src/cloud/auth.d.ts.map +0 -1
  1135. package/packages/agent/src/cloud/auth.js +0 -107
  1136. package/packages/agent/src/cloud/backup.d.ts +0 -18
  1137. package/packages/agent/src/cloud/backup.d.ts.map +0 -1
  1138. package/packages/agent/src/cloud/backup.js +0 -42
  1139. package/packages/agent/src/cloud/base-url.d.ts +0 -3
  1140. package/packages/agent/src/cloud/base-url.d.ts.map +0 -1
  1141. package/packages/agent/src/cloud/base-url.js +0 -40
  1142. package/packages/agent/src/cloud/bridge-client.d.ts +0 -56
  1143. package/packages/agent/src/cloud/bridge-client.d.ts.map +0 -1
  1144. package/packages/agent/src/cloud/bridge-client.js +0 -190
  1145. package/packages/agent/src/cloud/cloud-manager.d.ts +0 -32
  1146. package/packages/agent/src/cloud/cloud-manager.d.ts.map +0 -1
  1147. package/packages/agent/src/cloud/cloud-manager.js +0 -119
  1148. package/packages/agent/src/cloud/cloud-proxy.d.ts +0 -20
  1149. package/packages/agent/src/cloud/cloud-proxy.d.ts.map +0 -1
  1150. package/packages/agent/src/cloud/cloud-proxy.js +0 -34
  1151. package/packages/agent/src/cloud/index.d.ts +0 -7
  1152. package/packages/agent/src/cloud/index.d.ts.map +0 -1
  1153. package/packages/agent/src/cloud/index.js +0 -6
  1154. package/packages/agent/src/cloud/reconnect.d.ts +0 -26
  1155. package/packages/agent/src/cloud/reconnect.d.ts.map +0 -1
  1156. package/packages/agent/src/cloud/reconnect.js +0 -86
  1157. package/packages/agent/src/cloud/validate-url.d.ts +0 -2
  1158. package/packages/agent/src/cloud/validate-url.d.ts.map +0 -1
  1159. package/packages/agent/src/cloud/validate-url.js +0 -162
  1160. package/packages/agent/src/config/object-utils.d.ts +0 -2
  1161. package/packages/agent/src/config/object-utils.d.ts.map +0 -1
  1162. package/packages/agent/src/config/object-utils.js +0 -6
  1163. package/packages/agent/src/contracts/apps.d.ts +0 -42
  1164. package/packages/agent/src/contracts/apps.d.ts.map +0 -1
  1165. package/packages/agent/src/contracts/apps.js +0 -4
  1166. package/packages/agent/src/contracts/config.d.ts +0 -146
  1167. package/packages/agent/src/contracts/config.d.ts.map +0 -1
  1168. package/packages/agent/src/contracts/config.js +0 -4
  1169. package/packages/agent/src/contracts/drop.d.ts +0 -20
  1170. package/packages/agent/src/contracts/drop.d.ts.map +0 -1
  1171. package/packages/agent/src/contracts/drop.js +0 -4
  1172. package/packages/agent/src/contracts/onboarding.d.ts +0 -384
  1173. package/packages/agent/src/contracts/onboarding.d.ts.map +0 -1
  1174. package/packages/agent/src/contracts/permissions.d.ts +0 -35
  1175. package/packages/agent/src/contracts/permissions.d.ts.map +0 -1
  1176. package/packages/agent/src/contracts/permissions.js +0 -4
  1177. package/packages/agent/src/contracts/verification.d.ts +0 -9
  1178. package/packages/agent/src/contracts/verification.d.ts.map +0 -1
  1179. package/packages/agent/src/contracts/verification.js +0 -4
  1180. package/packages/agent/src/contracts/wallet.d.ts +0 -409
  1181. package/packages/agent/src/contracts/wallet.d.ts.map +0 -1
  1182. package/packages/agent/src/contracts/wallet.js +0 -60
  1183. package/packages/agent/src/emotes/catalog.d.ts +0 -31
  1184. package/packages/agent/src/emotes/catalog.d.ts.map +0 -1
  1185. package/packages/agent/src/emotes/catalog.js +0 -402
  1186. package/packages/agent/src/onboarding-presets.d.ts +0 -59
  1187. package/packages/agent/src/onboarding-presets.d.ts.map +0 -1
  1188. package/packages/agent/src/onboarding-presets.js +0 -1470
  1189. package/packages/agent/src/plugins/custom-rtmp/index.d.ts +0 -12
  1190. package/packages/agent/src/plugins/custom-rtmp/index.d.ts.map +0 -1
  1191. package/packages/agent/src/plugins/custom-rtmp/index.js +0 -26
  1192. package/packages/agent/src/runtime/cloud-onboarding.d.ts +0 -55
  1193. package/packages/agent/src/runtime/cloud-onboarding.d.ts.map +0 -1
  1194. package/packages/agent/src/runtime/cloud-onboarding.js +0 -279
  1195. package/packages/agent/src/server/index.d.ts +0 -3
  1196. package/packages/agent/src/server/index.d.ts.map +0 -1
  1197. package/packages/agent/src/server/index.js +0 -1
  1198. package/packages/agent/src/services/browser-capture.d.ts +0 -39
  1199. package/packages/agent/src/services/browser-capture.d.ts.map +0 -1
  1200. package/packages/agent/src/services/browser-capture.js +0 -162
  1201. package/packages/agent/src/services/coding-agent-context.d.ts +0 -310
  1202. package/packages/agent/src/services/coding-agent-context.d.ts.map +0 -1
  1203. package/packages/agent/src/services/coding-agent-context.js +0 -281
  1204. package/packages/agent/src/services/fallback-training-service.d.ts +0 -78
  1205. package/packages/agent/src/services/fallback-training-service.d.ts.map +0 -1
  1206. package/packages/agent/src/services/fallback-training-service.js +0 -126
  1207. package/packages/agent/src/services/privy-wallets.d.ts +0 -18
  1208. package/packages/agent/src/services/privy-wallets.d.ts.map +0 -1
  1209. package/packages/agent/src/services/privy-wallets.js +0 -225
  1210. package/packages/agent/src/services/signal-pairing.d.ts +0 -37
  1211. package/packages/agent/src/services/signal-pairing.d.ts.map +0 -1
  1212. package/packages/agent/src/services/signal-pairing.js +0 -124
  1213. package/packages/agent/src/services/stream-manager.d.ts +0 -121
  1214. package/packages/agent/src/services/stream-manager.d.ts.map +0 -1
  1215. package/packages/agent/src/services/stream-manager.js +0 -604
  1216. package/packages/agent/src/services/tts-stream-bridge.d.ts +0 -83
  1217. package/packages/agent/src/services/tts-stream-bridge.d.ts.map +0 -1
  1218. package/packages/agent/src/services/tts-stream-bridge.js +0 -349
  1219. package/packages/agent/src/services/whatsapp-pairing.d.ts +0 -41
  1220. package/packages/agent/src/services/whatsapp-pairing.d.ts.map +0 -1
  1221. package/packages/agent/src/services/whatsapp-pairing.js +0 -209
  1222. package/packages/agent/src/triggers/action.d.ts +0 -3
  1223. package/packages/agent/src/triggers/action.d.ts.map +0 -1
  1224. package/packages/agent/src/triggers/action.js +0 -267
  1225. package/packages/agent/src/utils/spoken-text.d.ts +0 -2
  1226. package/packages/agent/src/utils/spoken-text.d.ts.map +0 -1
  1227. package/packages/agent/src/utils/spoken-text.js +0 -56
@@ -0,0 +1,1579 @@
1
+ /**
2
+ * Inbox routes.
3
+ *
4
+ * Exposes a read-only, time-ordered view of messages from every channel
5
+ * the agent participates in — dashboard web chat plus every connector
6
+ * plugin (iMessage, Telegram, Discord, WhatsApp, WeChat, etc.) — merged
7
+ * into a single feed so the UI can render an inbox without the
8
+ * client having to know which rooms each source uses.
9
+ *
10
+ * Why a separate endpoint instead of reusing /api/conversations/:id/messages:
11
+ *
12
+ * Each connector plugin creates its own rooms keyed by the external
13
+ * chat id (chat.db chat_identifier for iMessage, chat_id for Telegram,
14
+ * etc.). The dashboard conversation room is pinned to
15
+ * `${agentName}-web-chat-room`. A single-room read path can't see
16
+ * cross-channel traffic, and we don't want to fan out writes to the
17
+ * web-chat room on every connector dispatch (it would pollute the
18
+ * dashboard world with entities that don't belong to it and break
19
+ * the "one conversation = one room" invariant that bootstrap relies
20
+ * on). The read-side aggregator keeps each connector's world/room
21
+ * graph intact while still giving the UI a combined feed.
22
+ *
23
+ * Routes:
24
+ *
25
+ * GET /api/inbox/messages?limit=N&sources=imessage,telegram
26
+ * Returns the N most recent messages across all agent rooms where
27
+ * `content.source` is set to a connector tag. `sources` (optional,
28
+ * comma-separated) filters to a specific subset. Ordered newest
29
+ * first. Default limit is 100, hard cap 500.
30
+ *
31
+ * GET /api/inbox/sources
32
+ * Returns the distinct set of source tags the agent currently has
33
+ * memories for, so the UI can render a dynamic source filter chip
34
+ * list without hardcoding connector names.
35
+ */
36
+ import { cacheDiscordAvatarUrl } from "@elizaos/plugin-discord";
37
+ import { expandConnectorSourceFilter, normalizeConnectorSource, } from "@elizaos/shared";
38
+ /**
39
+ * Source tags we consider "inbox-worthy". Messages whose content.source
40
+ * is none of these are excluded from the combined feed — this keeps
41
+ * internal sources (e.g. system events, knowledge ingestion, trajectory
42
+ * markers) out of the user-facing inbox.
43
+ *
44
+ * `client_chat` is intentionally excluded; those are dashboard turns and
45
+ * are already visible in the conversation view. The inbox is for
46
+ * *inbound* messages from other humans via connector channels.
47
+ */
48
+ const DEFAULT_INBOX_SOURCE_FILTER = [
49
+ "imessage",
50
+ "telegram",
51
+ "discord",
52
+ "whatsapp",
53
+ "wechat",
54
+ "slack",
55
+ "signal",
56
+ "sms",
57
+ ];
58
+ const DEFAULT_INBOX_SOURCES = expandConnectorSourceFilter(DEFAULT_INBOX_SOURCE_FILTER);
59
+ /**
60
+ * Hard ceiling on the number of rooms we scan per request. Large
61
+ * deployments can accumulate hundreds of connector rooms; scanning all
62
+ * of them on every request would make the endpoint scale quadratically
63
+ * with history. 2000 rooms covers heavy deployments and leaves headroom
64
+ * for internal worlds (autonomy/self-talk) without crowding out real
65
+ * connector channels.
66
+ */
67
+ const MAX_ROOMS_SCANNED = 2000;
68
+ const ORPHAN_ROOM_MEMORY_SCAN_LIMIT = 10_000;
69
+ /**
70
+ * Worlds we never want to surface in the connector chats sidebar. These
71
+ * are internal scratch worlds (autonomy-service self-talk, advanced
72
+ * memory, relationships graph) that contain hundreds of synthetic rooms
73
+ * the user never interacts with directly. Including them used to consume
74
+ * the entire room-scan budget and drown out real connector channels.
75
+ */
76
+ const INTERNAL_WORLD_IDS = new Set([
77
+ "00000000-0000-0000-0000-000000000001", // Autonomy World
78
+ ]);
79
+ const INTERNAL_WORLD_NAME_MARKERS = [
80
+ "advanced memory",
81
+ "relationships world",
82
+ "autonomy world",
83
+ ];
84
+ function isInternalWorld(world) {
85
+ if (world.id && INTERNAL_WORLD_IDS.has(world.id.toLowerCase()))
86
+ return true;
87
+ const name = world.name?.toLowerCase().trim();
88
+ if (!name)
89
+ return false;
90
+ return INTERNAL_WORLD_NAME_MARKERS.some((marker) => name === marker);
91
+ }
92
+ /**
93
+ * How many memories we ask the database for per room. We over-fetch
94
+ * slightly so that after filtering by source tag we still have enough
95
+ * to fill `limit` for the caller. If a room has 500 messages but only
96
+ * the most recent 50 are connector messages, we'd miss them with a
97
+ * tight per-room limit. 3x the requested limit is a reasonable margin.
98
+ */
99
+ const PER_ROOM_OVERFETCH_MULTIPLIER = 3;
100
+ /**
101
+ * Parse and clamp the `limit` query parameter. Defaults to 100, capped
102
+ * at 500. Non-numeric input is treated as the default.
103
+ */
104
+ function parseLimit(raw) {
105
+ if (!raw)
106
+ return 100;
107
+ const parsed = Number.parseInt(raw, 10);
108
+ if (!Number.isFinite(parsed) || parsed <= 0)
109
+ return 100;
110
+ return Math.min(parsed, 500);
111
+ }
112
+ /**
113
+ * Parse the `sources` query parameter into a Set of lowercase tags, or
114
+ * null to mean "use the default inbox source set".
115
+ */
116
+ function parseSourceFilter(raw) {
117
+ if (!raw)
118
+ return null;
119
+ const tags = raw
120
+ .split(",")
121
+ .map((t) => t.trim().toLowerCase())
122
+ .filter((t) => t.length > 0);
123
+ if (tags.length === 0)
124
+ return null;
125
+ return expandConnectorSourceFilter(tags);
126
+ }
127
+ function getRuntimeSendHandlers(runtime) {
128
+ const sendHandlers = Reflect.get(runtime, "sendHandlers");
129
+ return sendHandlers instanceof Map ? sendHandlers : null;
130
+ }
131
+ function runtimeHasSendHandler(runtime, source) {
132
+ return getRuntimeSendHandlers(runtime)?.has(source) ?? false;
133
+ }
134
+ /**
135
+ * Pull the source tag out of a Memory row. Memory.content is typed as
136
+ * `Content` in core but the shape we care about is a loose record with
137
+ * an optional `source?: string` field. Returns null if the source is
138
+ * missing, non-string, or empty.
139
+ */
140
+ function extractSource(memory) {
141
+ const content = memory.content;
142
+ const source = content?.source;
143
+ if (typeof source !== "string")
144
+ return null;
145
+ const trimmed = source.trim();
146
+ return trimmed.length > 0 ? trimmed : null;
147
+ }
148
+ function isDiscordConnectorSource(source) {
149
+ return normalizeConnectorSource(source) === "discord";
150
+ }
151
+ /**
152
+ * Pull the visible text out of a Memory row. Same rationale as
153
+ * extractSource — we're pulling fields off a loosely-typed Content
154
+ * object and normalizing.
155
+ */
156
+ function extractText(memory) {
157
+ const content = memory.content;
158
+ const text = content?.text;
159
+ return typeof text === "string" ? text : "";
160
+ }
161
+ function extractResponseId(memory) {
162
+ const content = memory.content;
163
+ const responseId = content?.responseId;
164
+ if (typeof responseId === "string" && responseId.length > 0) {
165
+ return responseId;
166
+ }
167
+ return undefined;
168
+ }
169
+ function extractContentUrl(memory) {
170
+ const content = memory.content;
171
+ const url = content?.url;
172
+ if (typeof url === "string" && url.length > 0) {
173
+ return url;
174
+ }
175
+ return undefined;
176
+ }
177
+ /**
178
+ * Best-effort sender display name from memory.metadata.entityName. The
179
+ * bootstrap plugin stamps this when it builds memories from
180
+ * ENTITY_JOINED events; connector plugins should do the same via their
181
+ * lifecycle event payloads (iMessage does — see dispatchInboundMessage
182
+ * in plugin-imessage's service.ts).
183
+ */
184
+ function extractFrom(memory) {
185
+ const meta = memory.metadata;
186
+ const entityName = meta?.entityName;
187
+ if (typeof entityName === "string" && entityName.length > 0) {
188
+ return entityName;
189
+ }
190
+ return undefined;
191
+ }
192
+ function extractFromUserName(memory) {
193
+ const meta = memory.metadata;
194
+ const entityUserName = meta?.entityUserName;
195
+ if (typeof entityUserName === "string" && entityUserName.length > 0) {
196
+ return entityUserName;
197
+ }
198
+ const username = meta?.username;
199
+ if (typeof username === "string" && username.length > 0) {
200
+ return username;
201
+ }
202
+ return undefined;
203
+ }
204
+ function extractFromAvatarUrl(memory) {
205
+ const meta = memory.metadata;
206
+ const entityAvatarUrl = meta?.entityAvatarUrl;
207
+ if (typeof entityAvatarUrl === "string" && entityAvatarUrl.length > 0) {
208
+ return entityAvatarUrl;
209
+ }
210
+ return undefined;
211
+ }
212
+ function extractRawSenderId(memory) {
213
+ const meta = memory.metadata;
214
+ const fromId = meta?.fromId;
215
+ if (typeof fromId === "string" && fromId.length > 0) {
216
+ return fromId;
217
+ }
218
+ return undefined;
219
+ }
220
+ function extractDiscordChannelId(memory) {
221
+ const meta = memory.metadata;
222
+ const discordChannelId = meta?.discordChannelId;
223
+ if (typeof discordChannelId === "string" && discordChannelId.length > 0) {
224
+ return discordChannelId;
225
+ }
226
+ return undefined;
227
+ }
228
+ function extractDiscordMessageId(memory) {
229
+ const meta = memory.metadata;
230
+ const discordMessageId = meta?.discordMessageId;
231
+ if (typeof discordMessageId === "string" && discordMessageId.length > 0) {
232
+ return discordMessageId;
233
+ }
234
+ return undefined;
235
+ }
236
+ function readLooseStringValue(record, keys) {
237
+ if (!record)
238
+ return null;
239
+ for (const key of keys) {
240
+ const value = record[key];
241
+ if (typeof value !== "string") {
242
+ continue;
243
+ }
244
+ const trimmed = value.trim();
245
+ if (trimmed.length > 0) {
246
+ return trimmed;
247
+ }
248
+ }
249
+ return null;
250
+ }
251
+ function asLooseRecord(value) {
252
+ return value && typeof value === "object"
253
+ ? value
254
+ : undefined;
255
+ }
256
+ function readRoomSource(room) {
257
+ return readLooseStringValue(asLooseRecord(room), ["source"]);
258
+ }
259
+ function readRoomWorldId(room) {
260
+ return (readLooseStringValue(asLooseRecord(room), ["worldId", "world_id"]) ??
261
+ undefined);
262
+ }
263
+ function readRoomServerId(room) {
264
+ return (readLooseStringValue(asLooseRecord(room), [
265
+ "serverId",
266
+ "server_id",
267
+ "messageServerId",
268
+ "message_server_id",
269
+ ]) ?? undefined);
270
+ }
271
+ function readRoomType(room) {
272
+ return readLooseStringValue(asLooseRecord(room), [
273
+ "type",
274
+ "roomType",
275
+ "room_type",
276
+ ]);
277
+ }
278
+ function readRoomChannelId(room) {
279
+ return (readLooseStringValue(asLooseRecord(room), ["channelId", "channel_id"]) ??
280
+ undefined);
281
+ }
282
+ function readRoomCreatedAt(room) {
283
+ const record = asLooseRecord(room);
284
+ const value = record?.createdAt ?? record?.created_at;
285
+ if (typeof value === "number" && Number.isFinite(value)) {
286
+ return value;
287
+ }
288
+ if (value instanceof Date) {
289
+ return value.getTime();
290
+ }
291
+ if (typeof value === "string") {
292
+ const parsed = Date.parse(value);
293
+ return Number.isFinite(parsed) ? parsed : undefined;
294
+ }
295
+ return undefined;
296
+ }
297
+ function readWorldName(world) {
298
+ return readLooseStringValue(asLooseRecord(world), ["name"]);
299
+ }
300
+ function readWorldServerId(world) {
301
+ return (readLooseStringValue(asLooseRecord(world), [
302
+ "messageServerId",
303
+ "message_server_id",
304
+ "serverId",
305
+ "server_id",
306
+ ]) ?? undefined);
307
+ }
308
+ function normalizeRoomTitle(title) {
309
+ if (typeof title !== "string")
310
+ return null;
311
+ const trimmed = title.trim();
312
+ return trimmed.length > 0 ? trimmed : null;
313
+ }
314
+ function isPlaceholderConversationTitle(title) {
315
+ if (!title)
316
+ return false;
317
+ const normalized = title.trim().toLowerCase();
318
+ return (normalized === "default" ||
319
+ normalized === "new chat" ||
320
+ normalized === "discord chat");
321
+ }
322
+ function equalsNormalizedTitle(left, right) {
323
+ if (!left || !right)
324
+ return false;
325
+ return left.trim().toLowerCase() === right.trim().toLowerCase();
326
+ }
327
+ function extractReplyToMessageId(memory) {
328
+ const content = memory.content;
329
+ const inReplyTo = content?.inReplyTo;
330
+ if (typeof inReplyTo === "string" && inReplyTo.length > 0) {
331
+ return inReplyTo;
332
+ }
333
+ const meta = memory.metadata;
334
+ const replyToMessageId = meta?.replyToMessageId;
335
+ if (typeof replyToMessageId === "string" && replyToMessageId.length > 0) {
336
+ return replyToMessageId;
337
+ }
338
+ return undefined;
339
+ }
340
+ function extractReplyAuthorRecord(memory) {
341
+ const meta = memory.metadata;
342
+ const replyToAuthor = meta?.replyToAuthor;
343
+ if (!replyToAuthor || typeof replyToAuthor !== "object") {
344
+ return null;
345
+ }
346
+ return replyToAuthor;
347
+ }
348
+ function extractReplyToSenderName(memory) {
349
+ const meta = memory.metadata;
350
+ const replyToSenderName = meta?.replyToSenderName;
351
+ if (typeof replyToSenderName === "string" && replyToSenderName.length > 0) {
352
+ return replyToSenderName;
353
+ }
354
+ const replyAuthor = extractReplyAuthorRecord(memory);
355
+ const displayName = replyAuthor?.displayName;
356
+ if (typeof displayName === "string" && displayName.length > 0) {
357
+ return displayName;
358
+ }
359
+ const username = replyAuthor?.username;
360
+ if (typeof username === "string" && username.length > 0) {
361
+ return username;
362
+ }
363
+ return undefined;
364
+ }
365
+ function extractReplyToSenderUserName(memory) {
366
+ const meta = memory.metadata;
367
+ const replyToSenderUserName = meta?.replyToSenderUserName;
368
+ if (typeof replyToSenderUserName === "string" &&
369
+ replyToSenderUserName.length > 0) {
370
+ return replyToSenderUserName;
371
+ }
372
+ const replyAuthor = extractReplyAuthorRecord(memory);
373
+ const username = replyAuthor?.username;
374
+ if (typeof username === "string" && username.length > 0) {
375
+ return username;
376
+ }
377
+ return undefined;
378
+ }
379
+ function extractReplyToSenderId(memory) {
380
+ const meta = memory.metadata;
381
+ const replyToSenderId = meta?.replyToSenderId;
382
+ if (typeof replyToSenderId === "string" && replyToSenderId.length > 0) {
383
+ return replyToSenderId;
384
+ }
385
+ const replyAuthor = extractReplyAuthorRecord(memory);
386
+ const id = replyAuthor?.id;
387
+ if (typeof id === "string" && id.length > 0) {
388
+ return id;
389
+ }
390
+ return undefined;
391
+ }
392
+ const LEGACY_DISCORD_REACTION_RE = /^\*(Added|Removed) <(.+?)> (?:to|from):/i;
393
+ function extractDiscordReactionEvent(memory) {
394
+ const targetMessageId = extractReplyToMessageId(memory);
395
+ if (!targetMessageId) {
396
+ return null;
397
+ }
398
+ const meta = memory.metadata;
399
+ const reactionMeta = meta?.discordReaction && typeof meta.discordReaction === "object"
400
+ ? meta.discordReaction
401
+ : null;
402
+ const structuredAction = reactionMeta?.action === "add" || reactionMeta?.action === "remove"
403
+ ? reactionMeta.action
404
+ : null;
405
+ const structuredEmoji = typeof reactionMeta?.emoji === "string" &&
406
+ reactionMeta.emoji.trim().length > 0
407
+ ? reactionMeta.emoji.trim()
408
+ : null;
409
+ if (structuredAction && structuredEmoji) {
410
+ return {
411
+ action: structuredAction,
412
+ emoji: structuredEmoji,
413
+ targetMessageId,
414
+ userKey: memory.entityId ?? memory.id ?? `${targetMessageId}:${structuredEmoji}`,
415
+ userLabel: extractFrom(memory) ?? extractFromUserName(memory),
416
+ };
417
+ }
418
+ const source = extractSource(memory);
419
+ if (!isDiscordConnectorSource(source)) {
420
+ return null;
421
+ }
422
+ const text = extractText(memory).trim();
423
+ const legacyMatch = text.match(LEGACY_DISCORD_REACTION_RE);
424
+ if (!legacyMatch) {
425
+ return null;
426
+ }
427
+ return {
428
+ action: legacyMatch[1].toLowerCase() === "added" ? "add" : "remove",
429
+ emoji: legacyMatch[2].trim(),
430
+ targetMessageId,
431
+ userKey: memory.entityId ?? memory.id ?? `${targetMessageId}:${legacyMatch[2]}`,
432
+ userLabel: extractFrom(memory) ?? extractFromUserName(memory),
433
+ };
434
+ }
435
+ function buildMessageReactionMap(memories) {
436
+ const stateByTargetId = new Map();
437
+ const chronologicallySortedMemories = [...memories].sort((left, right) => (left.createdAt ?? 0) - (right.createdAt ?? 0));
438
+ for (const memory of chronologicallySortedMemories) {
439
+ const event = extractDiscordReactionEvent(memory);
440
+ if (!event) {
441
+ continue;
442
+ }
443
+ const byEmoji = stateByTargetId.get(event.targetMessageId) ??
444
+ new Map();
445
+ const aggregate = byEmoji.get(event.emoji) ?? {
446
+ emoji: event.emoji,
447
+ users: new Map(),
448
+ };
449
+ if (event.action === "add") {
450
+ aggregate.users.set(event.userKey, event.userLabel);
451
+ byEmoji.set(event.emoji, aggregate);
452
+ stateByTargetId.set(event.targetMessageId, byEmoji);
453
+ continue;
454
+ }
455
+ aggregate.users.delete(event.userKey);
456
+ if (aggregate.users.size === 0) {
457
+ byEmoji.delete(event.emoji);
458
+ }
459
+ else {
460
+ byEmoji.set(event.emoji, aggregate);
461
+ }
462
+ if (byEmoji.size === 0) {
463
+ stateByTargetId.delete(event.targetMessageId);
464
+ }
465
+ else {
466
+ stateByTargetId.set(event.targetMessageId, byEmoji);
467
+ }
468
+ }
469
+ const reactionsByTargetId = new Map();
470
+ for (const [targetMessageId, byEmoji] of stateByTargetId) {
471
+ const reactions = Array.from(byEmoji.values())
472
+ .map((aggregate) => {
473
+ const users = Array.from(aggregate.users.values()).filter((value) => typeof value === "string" && value.trim().length > 0);
474
+ return {
475
+ emoji: aggregate.emoji,
476
+ count: aggregate.users.size,
477
+ ...(users.length > 0 ? { users } : {}),
478
+ };
479
+ })
480
+ .filter((reaction) => reaction.count > 0);
481
+ if (reactions.length > 0) {
482
+ reactionsByTargetId.set(targetMessageId, reactions);
483
+ }
484
+ }
485
+ return reactionsByTargetId;
486
+ }
487
+ const DISCORD_PROFILE_CACHE_TTL_MS = 5 * 60_000;
488
+ const discordRoomProfileCache = new Map();
489
+ const discordUserProfileCache = new Map();
490
+ const discordMessageAuthorProfileCache = new Map();
491
+ function readCachedValue(cache, key) {
492
+ const entry = cache.get(key);
493
+ if (!entry)
494
+ return undefined;
495
+ if (entry.expiresAt <= Date.now()) {
496
+ cache.delete(key);
497
+ return undefined;
498
+ }
499
+ return entry.value;
500
+ }
501
+ function getDiscordClient(runtime) {
502
+ const runtimeWithServices = runtime;
503
+ const service = runtimeWithServices.getService?.("discord");
504
+ return service?.client ?? null;
505
+ }
506
+ function firstCollectionValue(collection) {
507
+ if (!collection || typeof collection !== "object") {
508
+ return null;
509
+ }
510
+ const record = collection;
511
+ if (typeof record.first === "function") {
512
+ return record.first();
513
+ }
514
+ if (typeof record.values === "function") {
515
+ return record.values().next().value ?? null;
516
+ }
517
+ return null;
518
+ }
519
+ function readDiscordDisplayName(user) {
520
+ if (!user || typeof user !== "object")
521
+ return undefined;
522
+ const record = user;
523
+ const globalName = record.globalName;
524
+ if (typeof globalName === "string" && globalName.trim()) {
525
+ return globalName.trim();
526
+ }
527
+ const displayName = record.displayName;
528
+ if (typeof displayName === "string" && displayName.trim()) {
529
+ return displayName.trim();
530
+ }
531
+ const username = record.username;
532
+ if (typeof username === "string" && username.trim()) {
533
+ return username.trim();
534
+ }
535
+ return undefined;
536
+ }
537
+ function readDiscordAvatarUrl(user) {
538
+ if (!user || typeof user !== "object")
539
+ return undefined;
540
+ const record = user;
541
+ if (typeof record.displayAvatarURL === "function") {
542
+ const url = record.displayAvatarURL();
543
+ if (typeof url === "string" && url.trim())
544
+ return url;
545
+ }
546
+ if (typeof record.avatarURL === "function") {
547
+ const url = record.avatarURL();
548
+ if (typeof url === "string" && url.trim())
549
+ return url;
550
+ }
551
+ return undefined;
552
+ }
553
+ function readStoredDiscordEntityProfile(entity) {
554
+ if (!entity || typeof entity !== "object") {
555
+ return null;
556
+ }
557
+ const metadata = entity.metadata;
558
+ if (!metadata || typeof metadata !== "object") {
559
+ return null;
560
+ }
561
+ const record = metadata;
562
+ const discord = record.discord && typeof record.discord === "object"
563
+ ? record.discord
564
+ : null;
565
+ const fallback = record.default && typeof record.default === "object"
566
+ ? record.default
567
+ : null;
568
+ const displayName = readLooseStringValue(record, ["displayName", "name"]) ??
569
+ readLooseStringValue(discord ?? undefined, [
570
+ "displayName",
571
+ "globalName",
572
+ "name",
573
+ ]) ??
574
+ readLooseStringValue(fallback ?? undefined, ["name"]);
575
+ const username = readLooseStringValue(record, ["username"]) ??
576
+ readLooseStringValue(discord ?? undefined, ["username", "userName"]) ??
577
+ readLooseStringValue(fallback ?? undefined, ["username"]);
578
+ const avatarUrl = readLooseStringValue(record, ["avatarUrl"]) ??
579
+ readLooseStringValue(discord ?? undefined, ["avatarUrl"]) ??
580
+ readLooseStringValue(fallback ?? undefined, ["avatarUrl"]);
581
+ const rawUserId = readLooseStringValue(discord ?? undefined, ["userId", "id"]) ??
582
+ readLooseStringValue(record, ["originalId"]);
583
+ if (!displayName && !username && !avatarUrl && !rawUserId) {
584
+ return null;
585
+ }
586
+ return {
587
+ ...(avatarUrl ? { avatarUrl } : {}),
588
+ ...(displayName ? { displayName } : {}),
589
+ ...(rawUserId ? { rawUserId } : {}),
590
+ ...(username ? { username } : {}),
591
+ };
592
+ }
593
+ async function resolveStoredDiscordEntityProfile(runtime, entityId) {
594
+ if (!entityId)
595
+ return null;
596
+ const runtimeWithEntityLookup = runtime;
597
+ if (typeof runtimeWithEntityLookup.getEntityById !== "function") {
598
+ return null;
599
+ }
600
+ try {
601
+ const entity = await runtimeWithEntityLookup.getEntityById(entityId);
602
+ return readStoredDiscordEntityProfile(entity);
603
+ }
604
+ catch {
605
+ return null;
606
+ }
607
+ }
608
+ async function cacheInboxDiscordAvatar(runtime, avatarUrl, userId) {
609
+ return cacheDiscordAvatarUrl(avatarUrl, {
610
+ fetchImpl: runtime.fetch ?? globalThis.fetch,
611
+ userId,
612
+ });
613
+ }
614
+ async function resolveDiscordMessageAuthorProfile(runtime, channelId, messageId) {
615
+ const cacheKey = `${channelId}:${messageId}`;
616
+ const cached = readCachedValue(discordMessageAuthorProfileCache, cacheKey);
617
+ if (cached !== undefined)
618
+ return cached;
619
+ const client = getDiscordClient(runtime);
620
+ const cachedChannel = client?.channels?.cache?.get?.(channelId);
621
+ const fetchChannel = client?.channels?.fetch;
622
+ const channel = cachedChannel ??
623
+ (typeof fetchChannel === "function"
624
+ ? await fetchChannel(channelId).catch(() => null)
625
+ : null);
626
+ const fetchMessage = channel &&
627
+ typeof channel === "object" &&
628
+ typeof channel.messages?.fetch ===
629
+ "function"
630
+ ? channel
631
+ .messages.fetch
632
+ : null;
633
+ if (!fetchMessage) {
634
+ discordMessageAuthorProfileCache.set(cacheKey, {
635
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
636
+ value: null,
637
+ });
638
+ return null;
639
+ }
640
+ try {
641
+ const message = await fetchMessage(messageId);
642
+ const author = message && typeof message === "object"
643
+ ? (message.author ?? null)
644
+ : null;
645
+ const member = message && typeof message === "object"
646
+ ? (message.member ?? null)
647
+ : null;
648
+ const rawUserId = author &&
649
+ typeof author === "object" &&
650
+ typeof author.id === "string"
651
+ ? author.id
652
+ : undefined;
653
+ const profile = {
654
+ displayName: readDiscordDisplayName(member ?? author),
655
+ username: author &&
656
+ typeof author === "object" &&
657
+ typeof author.username === "string"
658
+ ? author.username
659
+ : undefined,
660
+ avatarUrl: readDiscordAvatarUrl(author),
661
+ ...(rawUserId ? { rawUserId } : {}),
662
+ };
663
+ discordMessageAuthorProfileCache.set(cacheKey, {
664
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
665
+ value: profile,
666
+ });
667
+ return profile;
668
+ }
669
+ catch {
670
+ discordMessageAuthorProfileCache.set(cacheKey, {
671
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
672
+ value: null,
673
+ });
674
+ return null;
675
+ }
676
+ }
677
+ async function resolveDiscordUserProfile(runtime, userId) {
678
+ const cached = readCachedValue(discordUserProfileCache, userId);
679
+ if (cached !== undefined)
680
+ return cached;
681
+ const client = getDiscordClient(runtime);
682
+ const fetchUser = client?.users?.fetch;
683
+ if (typeof fetchUser !== "function")
684
+ return null;
685
+ try {
686
+ const user = await fetchUser(userId);
687
+ const profile = {
688
+ displayName: readDiscordDisplayName(user),
689
+ username: user &&
690
+ typeof user === "object" &&
691
+ typeof user.username === "string"
692
+ ? user.username
693
+ : undefined,
694
+ avatarUrl: readDiscordAvatarUrl(user),
695
+ };
696
+ discordUserProfileCache.set(userId, {
697
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
698
+ value: profile,
699
+ });
700
+ return profile;
701
+ }
702
+ catch {
703
+ discordUserProfileCache.set(userId, {
704
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
705
+ value: null,
706
+ });
707
+ return null;
708
+ }
709
+ }
710
+ async function resolveDiscordRoomProfile(runtime, room, channelIdHint) {
711
+ const channelId = typeof channelIdHint === "string" && channelIdHint.trim()
712
+ ? channelIdHint.trim()
713
+ : (readRoomChannelId(room) ?? "");
714
+ if (!channelId)
715
+ return null;
716
+ const cached = readCachedValue(discordRoomProfileCache, channelId);
717
+ if (cached !== undefined)
718
+ return cached;
719
+ const client = getDiscordClient(runtime);
720
+ const cachedChannel = client?.channels?.cache?.get?.(channelId);
721
+ const fetchChannel = client?.channels?.fetch;
722
+ const channel = cachedChannel ??
723
+ (typeof fetchChannel === "function"
724
+ ? await fetchChannel(channelId).catch(() => null)
725
+ : null);
726
+ let title = null;
727
+ let avatarUrl;
728
+ if (channel && typeof channel === "object") {
729
+ const namedChannel = channel;
730
+ if (typeof namedChannel.name === "string" && namedChannel.name.trim()) {
731
+ title = namedChannel.name.trim();
732
+ }
733
+ else {
734
+ const record = channel;
735
+ const recipient = record.recipient ?? firstCollectionValue(record.recipients);
736
+ title = readDiscordDisplayName(recipient) ?? null;
737
+ avatarUrl = readDiscordAvatarUrl(recipient);
738
+ }
739
+ }
740
+ const profile = {
741
+ title,
742
+ ...(typeof avatarUrl === "string" && avatarUrl.length > 0
743
+ ? { avatarUrl }
744
+ : {}),
745
+ };
746
+ discordRoomProfileCache.set(channelId, {
747
+ expiresAt: Date.now() + DISCORD_PROFILE_CACHE_TTL_MS,
748
+ value: profile,
749
+ });
750
+ return profile;
751
+ }
752
+ /**
753
+ * Enumerate every room the agent currently has state for, up to
754
+ * MAX_ROOMS_SCANNED. We do this by walking every world the runtime
755
+ * knows about and collecting rooms under each. For a single-agent
756
+ * Eliza install this is bounded by the number of connector chats the
757
+ * agent participates in; for multi-tenant it would need a tenant scope
758
+ * but Eliza's runtime is single-tenant per process.
759
+ */
760
+ async function collectAgentRoomIds(runtime) {
761
+ const worlds = await runtime.getAllWorlds();
762
+ if (worlds.length === 0)
763
+ return [];
764
+ const worldIds = worlds
765
+ .map((w) => w.id)
766
+ .filter((id) => typeof id === "string");
767
+ if (worldIds.length === 0)
768
+ return [];
769
+ // getRoomsByWorlds is the bulk form — single round trip instead of
770
+ // one query per world.
771
+ const rooms = await runtime.getRoomsByWorlds(worldIds, MAX_ROOMS_SCANNED, 0);
772
+ const roomIds = [];
773
+ for (const room of rooms) {
774
+ if (room.id)
775
+ roomIds.push(room.id);
776
+ if (roomIds.length >= MAX_ROOMS_SCANNED)
777
+ break;
778
+ }
779
+ return roomIds;
780
+ }
781
+ async function collectAgentWorlds(runtime) {
782
+ const worlds = await runtime.getAllWorlds();
783
+ const worldsById = new Map();
784
+ for (const world of worlds) {
785
+ if (!world.id)
786
+ continue;
787
+ // Skip internal scratch worlds — autonomy self-talk, advanced memory,
788
+ // relationships graph. These accumulate hundreds of synthetic rooms
789
+ // that crowd real connector channels out of the room-scan budget.
790
+ if (isInternalWorld(world))
791
+ continue;
792
+ worldsById.set(world.id, world);
793
+ }
794
+ return worldsById;
795
+ }
796
+ /**
797
+ * Collect every room owned by the agent (bounded by MAX_ROOMS_SCANNED)
798
+ * as full Room objects rather than just ids. Used by the chats
799
+ * aggregator which needs each room's name + world for display.
800
+ */
801
+ async function collectAgentRooms(runtime) {
802
+ const worldsById = await collectAgentWorlds(runtime);
803
+ if (worldsById.size === 0)
804
+ return [];
805
+ const worldIds = Array.from(worldsById.keys()).filter((id) => typeof id === "string");
806
+ if (worldIds.length === 0)
807
+ return [];
808
+ return runtime.getRoomsByWorlds(worldIds, MAX_ROOMS_SCANNED, 0);
809
+ }
810
+ function resolveInboxWorldLabel(room, world) {
811
+ const namedWorld = readWorldName(world);
812
+ if (namedWorld) {
813
+ return namedWorld;
814
+ }
815
+ const roomServerId = readRoomServerId(room);
816
+ if (roomServerId) {
817
+ return roomServerId;
818
+ }
819
+ const worldServerId = readWorldServerId(world);
820
+ if (worldServerId) {
821
+ return worldServerId;
822
+ }
823
+ const roomType = readRoomType(room)?.trim().toUpperCase();
824
+ if (roomType === "DM") {
825
+ return "Direct messages";
826
+ }
827
+ const worldId = readRoomWorldId(room);
828
+ if (worldId) {
829
+ return worldId;
830
+ }
831
+ return "Unknown world";
832
+ }
833
+ async function loadRelevantRooms(runtime, requestedRoomId) {
834
+ const roomById = new Map();
835
+ if (requestedRoomId) {
836
+ const runtimeWithGetRoom = runtime;
837
+ if (typeof runtimeWithGetRoom.getRoom === "function") {
838
+ const room = await runtimeWithGetRoom.getRoom(requestedRoomId);
839
+ if (room?.id) {
840
+ roomById.set(room.id, room);
841
+ return roomById;
842
+ }
843
+ }
844
+ }
845
+ const rooms = await collectAgentRooms(runtime);
846
+ for (const room of rooms) {
847
+ if (!room.id)
848
+ continue;
849
+ if (requestedRoomId && room.id !== requestedRoomId)
850
+ continue;
851
+ roomById.set(room.id, room);
852
+ }
853
+ return roomById;
854
+ }
855
+ function applyInboxChatMemory(accumulator, memory, room, source) {
856
+ const key = memory.roomId;
857
+ if (!key)
858
+ return;
859
+ const text = extractText(memory);
860
+ if (!text)
861
+ return;
862
+ const ts = memory.createdAt ?? 0;
863
+ const senderAvatarUrl = extractFromAvatarUrl(memory);
864
+ const senderEntityId = typeof memory.entityId === "string" ? memory.entityId : undefined;
865
+ const senderName = extractFrom(memory) ?? extractFromUserName(memory) ?? undefined;
866
+ const senderRawId = extractRawSenderId(memory);
867
+ const discordChannelId = extractDiscordChannelId(memory) ?? readRoomChannelId(room);
868
+ const discordMessageId = extractDiscordMessageId(memory);
869
+ const existing = accumulator.get(key);
870
+ if (!existing) {
871
+ accumulator.set(key, {
872
+ latestDiscordChannelId: discordChannelId,
873
+ latestDiscordMessageId: discordMessageId,
874
+ source,
875
+ lastMessageText: text.slice(0, INBOX_CHAT_PREVIEW_LENGTH),
876
+ lastMessageAt: ts,
877
+ messageCount: 1,
878
+ latestSenderAvatarUrl: senderAvatarUrl,
879
+ latestSenderEntityId: senderEntityId,
880
+ latestSenderName: senderName,
881
+ latestSenderRawId: senderRawId,
882
+ });
883
+ return;
884
+ }
885
+ existing.messageCount += 1;
886
+ if (ts > existing.lastMessageAt) {
887
+ existing.lastMessageAt = ts;
888
+ existing.lastMessageText = text.slice(0, INBOX_CHAT_PREVIEW_LENGTH);
889
+ existing.latestSenderAvatarUrl = senderAvatarUrl;
890
+ existing.latestSenderEntityId = senderEntityId;
891
+ existing.latestSenderName = senderName;
892
+ existing.latestSenderRawId = senderRawId;
893
+ existing.latestDiscordMessageId =
894
+ discordMessageId ?? existing.latestDiscordMessageId;
895
+ existing.latestDiscordChannelId =
896
+ discordChannelId ?? existing.latestDiscordChannelId;
897
+ }
898
+ else if (!existing.latestDiscordChannelId && discordChannelId) {
899
+ existing.latestDiscordChannelId = discordChannelId;
900
+ }
901
+ else if (!existing.latestDiscordMessageId && discordMessageId) {
902
+ existing.latestDiscordMessageId = discordMessageId;
903
+ }
904
+ }
905
+ async function loadLatestRoomMemory(runtime, roomId) {
906
+ try {
907
+ const memories = await runtime.getMemories({
908
+ tableName: "messages",
909
+ roomId,
910
+ limit: 10,
911
+ unique: false,
912
+ });
913
+ if (!Array.isArray(memories) || memories.length === 0) {
914
+ return null;
915
+ }
916
+ const candidates = memories
917
+ .filter((memory) => !extractDiscordReactionEvent(memory))
918
+ .filter((memory) => extractText(memory).trim().length > 0)
919
+ .sort((left, right) => (right.createdAt ?? 0) - (left.createdAt ?? 0));
920
+ return candidates[0] ?? null;
921
+ }
922
+ catch {
923
+ return null;
924
+ }
925
+ }
926
+ async function augmentRoomsFromRecentMemories(runtime, roomById, sourceFilter) {
927
+ if (roomById.size >= MAX_ROOMS_SCANNED) {
928
+ return;
929
+ }
930
+ const recentMemories = await runtime.getMemories({
931
+ agentId: runtime.agentId,
932
+ limit: ORPHAN_ROOM_MEMORY_SCAN_LIMIT,
933
+ tableName: "messages",
934
+ unique: false,
935
+ });
936
+ for (const memory of recentMemories) {
937
+ if (roomById.size >= MAX_ROOMS_SCANNED) {
938
+ break;
939
+ }
940
+ const roomId = memory.roomId;
941
+ if (!roomId || roomById.has(roomId)) {
942
+ continue;
943
+ }
944
+ const source = extractSource(memory);
945
+ if (!source || !sourceFilter.has(source.toLowerCase())) {
946
+ continue;
947
+ }
948
+ roomById.set(roomId, {
949
+ id: roomId,
950
+ name: normalizeRoomTitle(extractFrom(memory)) ?? undefined,
951
+ source,
952
+ type: "GROUP",
953
+ room_type: "GROUP",
954
+ channelId: extractDiscordChannelId(memory) ?? undefined,
955
+ channel_id: extractDiscordChannelId(memory),
956
+ });
957
+ }
958
+ }
959
+ /**
960
+ * Fetch messages, optionally scoped to a single room. When `roomId`
961
+ * is set the function skips world enumeration entirely and targets
962
+ * that specific room — used by the cross-channel chat read path where the
963
+ * sidebar already knows which room the user clicked. When `roomId`
964
+ * is null it walks every agent room and merges across them, which is
965
+ * the cross-channel "everything" feed.
966
+ *
967
+ * Either way the source filter applies: rows whose content.source
968
+ * isn't in the allowed set are dropped before ordering, so callers
969
+ * can never accidentally surface an internal trajectory/system memory
970
+ * via this endpoint.
971
+ */
972
+ async function loadInboxMessages(runtime, limit, sourceFilter, roomId, roomSourceHint) {
973
+ const roomById = await loadRelevantRooms(runtime, roomId);
974
+ let memories;
975
+ if (roomId) {
976
+ memories = await runtime.getMemories({
977
+ tableName: "messages",
978
+ roomId,
979
+ limit: limit * PER_ROOM_OVERFETCH_MULTIPLIER,
980
+ unique: false,
981
+ });
982
+ }
983
+ else {
984
+ const roomIds = await collectAgentRoomIds(runtime);
985
+ if (roomIds.length === 0)
986
+ return [];
987
+ memories = await runtime.getMemoriesByRoomIds({
988
+ tableName: "messages",
989
+ roomIds,
990
+ limit: limit * PER_ROOM_OVERFETCH_MULTIPLIER,
991
+ });
992
+ }
993
+ const agentId = runtime.agentId;
994
+ const reactionsByMessageId = buildMessageReactionMap(memories);
995
+ const roomSourceById = new Map();
996
+ for (const [knownRoomId, room] of roomById) {
997
+ const roomSource = readRoomSource(room);
998
+ if (!roomSource || !sourceFilter.has(roomSource.toLowerCase()))
999
+ continue;
1000
+ roomSourceById.set(knownRoomId, roomSource);
1001
+ }
1002
+ for (const memory of memories) {
1003
+ const source = extractSource(memory);
1004
+ if (!source || !sourceFilter.has(source.toLowerCase()))
1005
+ continue;
1006
+ const memoryRoomId = memory.roomId;
1007
+ if (!memoryRoomId || roomSourceById.has(memoryRoomId))
1008
+ continue;
1009
+ roomSourceById.set(memoryRoomId, source);
1010
+ }
1011
+ const out = [];
1012
+ for (const memory of memories) {
1013
+ if (extractDiscordReactionEvent(memory)) {
1014
+ continue;
1015
+ }
1016
+ const room = roomById.get(memory.roomId ?? "");
1017
+ const explicitSource = extractSource(memory);
1018
+ const source = explicitSource ??
1019
+ roomSourceById.get(memory.roomId ?? "") ??
1020
+ (roomId
1021
+ ? (readRoomSource(room) ?? roomSourceHint ?? undefined)
1022
+ : undefined);
1023
+ if (!source || !sourceFilter.has(source.toLowerCase()))
1024
+ continue;
1025
+ const text = extractText(memory);
1026
+ if (!text)
1027
+ continue;
1028
+ out.push({
1029
+ id: memory.id ?? "",
1030
+ role: memory.entityId === agentId ? "assistant" : "user",
1031
+ text,
1032
+ timestamp: memory.createdAt ?? 0,
1033
+ source,
1034
+ rawDiscordChannelId: extractDiscordChannelId(memory) ?? readRoomChannelId(room),
1035
+ rawDiscordMessageId: extractDiscordMessageId(memory),
1036
+ responseId: extractResponseId(memory),
1037
+ roomId: memory.roomId ?? "",
1038
+ hasExternalUrl: extractContentUrl(memory) !== undefined,
1039
+ hasExplicitSource: explicitSource !== null,
1040
+ reactions: memory.id ? reactionsByMessageId.get(memory.id) : undefined,
1041
+ from: extractFrom(memory),
1042
+ fromUserName: extractFromUserName(memory),
1043
+ avatarUrl: extractFromAvatarUrl(memory),
1044
+ replyToMessageId: extractReplyToMessageId(memory),
1045
+ replyToSenderName: extractReplyToSenderName(memory),
1046
+ replyToSenderUserName: extractReplyToSenderUserName(memory),
1047
+ rawReplyToSenderId: extractReplyToSenderId(memory),
1048
+ senderEntityId: typeof memory.entityId === "string" ? memory.entityId : undefined,
1049
+ rawSenderId: extractRawSenderId(memory),
1050
+ });
1051
+ }
1052
+ const deduped = dedupeInboxMessages(out);
1053
+ // Newest first. The core API doesn't guarantee order across rooms, so
1054
+ // we do the merge sort client-side.
1055
+ deduped.sort((a, b) => b.timestamp - a.timestamp);
1056
+ const ordered = deduped.slice(0, limit);
1057
+ await Promise.all(ordered.map(async (message) => {
1058
+ if (!isDiscordConnectorSource(message.source))
1059
+ return;
1060
+ const storedSenderProfile = await resolveStoredDiscordEntityProfile(runtime, message.senderEntityId);
1061
+ if (!message.from && storedSenderProfile?.displayName) {
1062
+ message.from = storedSenderProfile.displayName;
1063
+ }
1064
+ if (!message.fromUserName && storedSenderProfile?.username) {
1065
+ message.fromUserName = storedSenderProfile.username;
1066
+ }
1067
+ if (!message.avatarUrl && storedSenderProfile?.avatarUrl) {
1068
+ message.avatarUrl = storedSenderProfile.avatarUrl;
1069
+ }
1070
+ const messageAuthorProfile = message.rawDiscordChannelId && message.rawDiscordMessageId
1071
+ ? await resolveDiscordMessageAuthorProfile(runtime, message.rawDiscordChannelId, message.rawDiscordMessageId)
1072
+ : null;
1073
+ if (!message.from && messageAuthorProfile?.displayName) {
1074
+ message.from = messageAuthorProfile.displayName;
1075
+ }
1076
+ if (!message.fromUserName && messageAuthorProfile?.username) {
1077
+ message.fromUserName = messageAuthorProfile.username;
1078
+ }
1079
+ if (!message.avatarUrl && messageAuthorProfile?.avatarUrl) {
1080
+ message.avatarUrl = messageAuthorProfile.avatarUrl;
1081
+ }
1082
+ const rawSenderId = message.rawSenderId ??
1083
+ storedSenderProfile?.rawUserId ??
1084
+ messageAuthorProfile?.rawUserId;
1085
+ if (rawSenderId) {
1086
+ const profile = await resolveDiscordUserProfile(runtime, rawSenderId);
1087
+ if (profile) {
1088
+ if (profile.displayName) {
1089
+ message.from = profile.displayName;
1090
+ }
1091
+ if (profile.username) {
1092
+ message.fromUserName = profile.username;
1093
+ }
1094
+ if (profile.avatarUrl) {
1095
+ message.avatarUrl = profile.avatarUrl;
1096
+ }
1097
+ }
1098
+ }
1099
+ message.avatarUrl = await cacheInboxDiscordAvatar(runtime, message.avatarUrl, rawSenderId);
1100
+ if (message.rawReplyToSenderId) {
1101
+ const replyProfile = await resolveDiscordUserProfile(runtime, message.rawReplyToSenderId);
1102
+ if (replyProfile) {
1103
+ if (replyProfile.displayName) {
1104
+ message.replyToSenderName = replyProfile.displayName;
1105
+ }
1106
+ if (replyProfile.username) {
1107
+ message.replyToSenderUserName = replyProfile.username;
1108
+ }
1109
+ }
1110
+ }
1111
+ }));
1112
+ return ordered.map(({ hasExternalUrl: _hasExternalUrl, hasExplicitSource: _hasExplicitSource, rawDiscordChannelId: _rawDiscordChannelId, rawDiscordMessageId: _rawDiscordMessageId, rawReplyToSenderId: _rawReplyToSenderId, senderEntityId: _senderEntityId, rawSenderId: _rawSenderId, responseId: _responseId, ...message }) => message);
1113
+ }
1114
+ function normalizeInboxComparableText(text) {
1115
+ return text.trim().replace(/\s+/g, " ");
1116
+ }
1117
+ function getInboxMessagePreferenceScore(message) {
1118
+ let score = 0;
1119
+ if (message.hasExternalUrl)
1120
+ score += 8;
1121
+ if (message.hasExplicitSource)
1122
+ score += 8;
1123
+ if (message.replyToSenderName || message.replyToSenderUserName)
1124
+ score += 4;
1125
+ if (message.rawReplyToSenderId)
1126
+ score += 2;
1127
+ if (message.rawSenderId)
1128
+ score += 1;
1129
+ if (message.avatarUrl)
1130
+ score += 1;
1131
+ return score;
1132
+ }
1133
+ function isConnectorVisibleDiscordAssistantMessage(message) {
1134
+ return (isDiscordConnectorSource(message.source) &&
1135
+ message.role === "assistant" &&
1136
+ (message.hasExplicitSource || message.hasExternalUrl));
1137
+ }
1138
+ function isImplicitDiscordAssistantShadow(message) {
1139
+ return (isDiscordConnectorSource(message.source) &&
1140
+ message.role === "assistant" &&
1141
+ !message.hasExplicitSource &&
1142
+ !message.hasExternalUrl);
1143
+ }
1144
+ function buildDiscordReplyKey(message) {
1145
+ const replyToMessageId = message.replyToMessageId?.trim();
1146
+ if (!replyToMessageId) {
1147
+ return null;
1148
+ }
1149
+ return `${message.roomId}\u0000${replyToMessageId}`;
1150
+ }
1151
+ function suppressUnsentDiscordAssistantShadows(messages) {
1152
+ const latestVisibleReplyByKey = new Map();
1153
+ for (const message of messages) {
1154
+ if (!isConnectorVisibleDiscordAssistantMessage(message)) {
1155
+ continue;
1156
+ }
1157
+ const replyKey = buildDiscordReplyKey(message);
1158
+ if (!replyKey) {
1159
+ continue;
1160
+ }
1161
+ const existingTimestamp = latestVisibleReplyByKey.get(replyKey) ?? 0;
1162
+ if (message.timestamp >= existingTimestamp) {
1163
+ latestVisibleReplyByKey.set(replyKey, message.timestamp);
1164
+ }
1165
+ }
1166
+ return messages.filter((message) => {
1167
+ if (!isImplicitDiscordAssistantShadow(message)) {
1168
+ return true;
1169
+ }
1170
+ const replyKey = buildDiscordReplyKey(message);
1171
+ if (!replyKey) {
1172
+ return true;
1173
+ }
1174
+ const latestVisibleTimestamp = latestVisibleReplyByKey.get(replyKey);
1175
+ if (latestVisibleTimestamp === undefined) {
1176
+ return true;
1177
+ }
1178
+ return message.timestamp > latestVisibleTimestamp;
1179
+ });
1180
+ }
1181
+ function areLikelyConnectorAssistantDuplicates(left, right) {
1182
+ if (left.role !== "assistant" || right.role !== "assistant") {
1183
+ return false;
1184
+ }
1185
+ if (left.roomId !== right.roomId) {
1186
+ return false;
1187
+ }
1188
+ if (normalizeInboxComparableText(left.text) !==
1189
+ normalizeInboxComparableText(right.text)) {
1190
+ return false;
1191
+ }
1192
+ const leftResponseId = left.responseId?.trim() ?? "";
1193
+ const rightResponseId = right.responseId?.trim() ?? "";
1194
+ if (leftResponseId && rightResponseId) {
1195
+ return leftResponseId === rightResponseId;
1196
+ }
1197
+ if (left.hasExplicitSource === right.hasExplicitSource) {
1198
+ return false;
1199
+ }
1200
+ if (Math.abs(left.timestamp - right.timestamp) > 15_000) {
1201
+ return false;
1202
+ }
1203
+ const leftReplyId = left.replyToMessageId?.trim() ?? "";
1204
+ const rightReplyId = right.replyToMessageId?.trim() ?? "";
1205
+ if (leftReplyId && rightReplyId) {
1206
+ return leftReplyId === rightReplyId;
1207
+ }
1208
+ return true;
1209
+ }
1210
+ function dedupeInboxMessages(messages) {
1211
+ const filteredMessages = suppressUnsentDiscordAssistantShadows(messages);
1212
+ const deduped = [];
1213
+ for (const message of filteredMessages) {
1214
+ const duplicateIndex = deduped.findIndex((candidate) => areLikelyConnectorAssistantDuplicates(candidate, message));
1215
+ if (duplicateIndex === -1) {
1216
+ deduped.push(message);
1217
+ continue;
1218
+ }
1219
+ const existing = deduped[duplicateIndex];
1220
+ const existingScore = getInboxMessagePreferenceScore(existing);
1221
+ const nextScore = getInboxMessagePreferenceScore(message);
1222
+ if (nextScore > existingScore ||
1223
+ (nextScore === existingScore && message.timestamp > existing.timestamp)) {
1224
+ deduped[duplicateIndex] = message;
1225
+ }
1226
+ }
1227
+ return deduped;
1228
+ }
1229
+ /** Cap on how many characters of last-message text we return per chat. */
1230
+ const INBOX_CHAT_PREVIEW_LENGTH = 140;
1231
+ /**
1232
+ * Walk every agent room, collect the subset that contain connector
1233
+ * messages, and reduce each to a single InboxChat row with the room's
1234
+ * latest activity as the ordering key. This is the sidebar feed for
1235
+ * the messages view — one row per external chat thread.
1236
+ *
1237
+ * We over-fetch memories across all rooms in one bulk call (same
1238
+ * pattern loadInboxMessages uses) then group client-side. For the
1239
+ * single-agent single-process topology Eliza runs under, this is
1240
+ * cheap enough to call on a 5-second poll without special-casing.
1241
+ */
1242
+ async function loadInboxChats(runtime, sourceFilter) {
1243
+ const worldsById = await collectAgentWorlds(runtime);
1244
+ const rooms = worldsById.size > 0
1245
+ ? await runtime.getRoomsByWorlds(Array.from(worldsById.keys()), MAX_ROOMS_SCANNED, 0)
1246
+ : [];
1247
+ if (rooms.length === 0)
1248
+ return [];
1249
+ // Build an id → Room lookup so the memory reducer can fill in the
1250
+ // chat title from the room's own name field (plugins stamp this when
1251
+ // they create the room from ENTITY_JOINED / WORLD_JOINED).
1252
+ const roomById = new Map();
1253
+ for (const room of rooms) {
1254
+ if (room.id)
1255
+ roomById.set(room.id, room);
1256
+ }
1257
+ await augmentRoomsFromRecentMemories(runtime, roomById, sourceFilter);
1258
+ const roomIds = Array.from(roomById.keys());
1259
+ if (roomIds.length === 0)
1260
+ return [];
1261
+ // Fetch a wide slice of recent memories in one call and group by
1262
+ // room client-side. 2000 messages is enough to catch the latest turn
1263
+ // in every active connector chat — the bulk query is the expensive
1264
+ // part, so we fetch once and reduce.
1265
+ const memories = await runtime.getMemoriesByRoomIds({
1266
+ tableName: "messages",
1267
+ roomIds,
1268
+ limit: 2000,
1269
+ });
1270
+ // Reduce: per room, keep the most recent source-tagged message.
1271
+ const accumulator = new Map();
1272
+ const roomSourceById = new Map();
1273
+ for (const [knownRoomId, room] of roomById) {
1274
+ const roomSource = readRoomSource(room);
1275
+ if (!roomSource || !sourceFilter.has(roomSource.toLowerCase()))
1276
+ continue;
1277
+ roomSourceById.set(knownRoomId, roomSource);
1278
+ }
1279
+ for (const memory of memories) {
1280
+ const source = extractSource(memory);
1281
+ if (!source || !sourceFilter.has(source.toLowerCase()))
1282
+ continue;
1283
+ const key = memory.roomId;
1284
+ if (!key || roomSourceById.has(key))
1285
+ continue;
1286
+ roomSourceById.set(key, source);
1287
+ }
1288
+ for (const memory of memories) {
1289
+ const key = memory.roomId;
1290
+ if (!key)
1291
+ continue;
1292
+ if (extractDiscordReactionEvent(memory)) {
1293
+ continue;
1294
+ }
1295
+ const room = roomById.get(key);
1296
+ const source = extractSource(memory) ??
1297
+ roomSourceById.get(key) ??
1298
+ readRoomSource(room) ??
1299
+ undefined;
1300
+ if (!source || !sourceFilter.has(source.toLowerCase()))
1301
+ continue;
1302
+ applyInboxChatMemory(accumulator, memory, room, source);
1303
+ }
1304
+ const backfilledRooms = await Promise.all(Array.from(roomById.entries())
1305
+ .filter(([roomIdKey]) => !accumulator.has(roomIdKey))
1306
+ .filter(([, room]) => {
1307
+ const roomSource = readRoomSource(room);
1308
+ return !!roomSource && sourceFilter.has(roomSource.toLowerCase());
1309
+ })
1310
+ .map(async ([roomIdKey, room]) => {
1311
+ const latestMemory = await loadLatestRoomMemory(runtime, roomIdKey);
1312
+ return { latestMemory, room, roomIdKey };
1313
+ }));
1314
+ for (const { latestMemory, room, roomIdKey } of backfilledRooms) {
1315
+ if (latestMemory) {
1316
+ const source = extractSource(latestMemory) ?? readRoomSource(room) ?? undefined;
1317
+ if (source && sourceFilter.has(source.toLowerCase())) {
1318
+ applyInboxChatMemory(accumulator, latestMemory, room, source);
1319
+ }
1320
+ continue;
1321
+ }
1322
+ const roomSource = readRoomSource(room);
1323
+ if (!roomSource || !sourceFilter.has(roomSource.toLowerCase())) {
1324
+ continue;
1325
+ }
1326
+ accumulator.set(roomIdKey, {
1327
+ latestDiscordChannelId: readRoomChannelId(room),
1328
+ source: roomSource,
1329
+ lastMessageText: "",
1330
+ lastMessageAt: readRoomCreatedAt(room) ?? 0,
1331
+ messageCount: 0,
1332
+ });
1333
+ }
1334
+ const chats = [];
1335
+ for (const [roomIdKey, entry] of accumulator) {
1336
+ const room = roomById.get(roomIdKey);
1337
+ const worldId = readRoomWorldId(room);
1338
+ const world = worldId ? worldsById.get(worldId) : undefined;
1339
+ const liveDiscordProfile = isDiscordConnectorSource(entry.source)
1340
+ ? await resolveDiscordRoomProfile(runtime, room, entry.latestDiscordChannelId)
1341
+ : null;
1342
+ const latestSenderEntityProfile = isDiscordConnectorSource(entry.source)
1343
+ ? await resolveStoredDiscordEntityProfile(runtime, entry.latestSenderEntityId)
1344
+ : null;
1345
+ const latestMessageAuthorProfile = isDiscordConnectorSource(entry.source) &&
1346
+ entry.latestDiscordChannelId &&
1347
+ entry.latestDiscordMessageId
1348
+ ? await resolveDiscordMessageAuthorProfile(runtime, entry.latestDiscordChannelId, entry.latestDiscordMessageId)
1349
+ : null;
1350
+ const latestSenderProfile = isDiscordConnectorSource(entry.source) &&
1351
+ (entry.latestSenderRawId ??
1352
+ latestSenderEntityProfile?.rawUserId ??
1353
+ latestMessageAuthorProfile?.rawUserId)
1354
+ ? await resolveDiscordUserProfile(runtime, (entry.latestSenderRawId ??
1355
+ latestSenderEntityProfile?.rawUserId ??
1356
+ latestMessageAuthorProfile?.rawUserId))
1357
+ : null;
1358
+ const rawStoredTitle = normalizeRoomTitle(room?.name);
1359
+ const roomType = readRoomType(room);
1360
+ const storedTitle = roomType !== "DM" &&
1361
+ (isPlaceholderConversationTitle(rawStoredTitle) ||
1362
+ equalsNormalizedTitle(rawStoredTitle, entry.latestSenderName ?? null) ||
1363
+ equalsNormalizedTitle(rawStoredTitle, latestSenderEntityProfile?.displayName ?? null) ||
1364
+ equalsNormalizedTitle(rawStoredTitle, latestMessageAuthorProfile?.displayName ?? null) ||
1365
+ equalsNormalizedTitle(rawStoredTitle, latestSenderProfile?.displayName ?? null) ||
1366
+ equalsNormalizedTitle(rawStoredTitle, latestSenderEntityProfile?.username ?? null) ||
1367
+ equalsNormalizedTitle(rawStoredTitle, latestMessageAuthorProfile?.username ?? null) ||
1368
+ equalsNormalizedTitle(rawStoredTitle, latestSenderProfile?.username ?? null))
1369
+ ? null
1370
+ : rawStoredTitle;
1371
+ const dmFallbackTitle = roomType === "DM" &&
1372
+ (entry.latestSenderName ??
1373
+ latestSenderEntityProfile?.displayName ??
1374
+ latestMessageAuthorProfile?.displayName ??
1375
+ latestSenderProfile?.displayName)
1376
+ ? (entry.latestSenderName ??
1377
+ latestSenderEntityProfile?.displayName ??
1378
+ latestMessageAuthorProfile?.displayName ??
1379
+ latestSenderProfile?.displayName ??
1380
+ null)
1381
+ : null;
1382
+ const title = liveDiscordProfile?.title ??
1383
+ storedTitle ??
1384
+ dmFallbackTitle ??
1385
+ `${entry.source} chat`;
1386
+ const titleMatchesLatestSender = typeof entry.latestSenderName === "string" &&
1387
+ entry.latestSenderName.trim().length > 0 &&
1388
+ entry.latestSenderName.trim().toLowerCase() === title.toLowerCase();
1389
+ const shouldUsePersonAvatar = isDiscordConnectorSource(entry.source)
1390
+ ? true
1391
+ : roomType === "DM" || titleMatchesLatestSender;
1392
+ const resolvedAvatarUrl = shouldUsePersonAvatar
1393
+ ? (liveDiscordProfile?.avatarUrl ??
1394
+ latestSenderEntityProfile?.avatarUrl ??
1395
+ latestMessageAuthorProfile?.avatarUrl ??
1396
+ latestSenderProfile?.avatarUrl ??
1397
+ entry.latestSenderAvatarUrl)
1398
+ : undefined;
1399
+ chats.push({
1400
+ canSend: runtimeHasSendHandler(runtime, entry.source),
1401
+ id: roomIdKey,
1402
+ source: normalizeConnectorSource(entry.source),
1403
+ transportSource: entry.source,
1404
+ ...(worldId ? { worldId } : {}),
1405
+ worldLabel: resolveInboxWorldLabel(room, world),
1406
+ ...(roomType ? { roomType } : {}),
1407
+ title,
1408
+ avatarUrl: isDiscordConnectorSource(entry.source)
1409
+ ? await cacheInboxDiscordAvatar(runtime, resolvedAvatarUrl, entry.latestSenderRawId ??
1410
+ latestSenderEntityProfile?.rawUserId ??
1411
+ latestMessageAuthorProfile?.rawUserId)
1412
+ : resolvedAvatarUrl,
1413
+ lastMessageText: entry.lastMessageText,
1414
+ lastMessageAt: entry.lastMessageAt,
1415
+ messageCount: entry.messageCount,
1416
+ });
1417
+ }
1418
+ chats.sort((a, b) => b.lastMessageAt - a.lastMessageAt);
1419
+ return chats;
1420
+ }
1421
+ /**
1422
+ * Scan recent memories across all agent rooms and return the distinct
1423
+ * set of source tags present. Used by the UI to build the filter chip
1424
+ * list dynamically — no hardcoded connector names in the frontend.
1425
+ */
1426
+ async function loadInboxSources(runtime) {
1427
+ const roomIds = await collectAgentRoomIds(runtime);
1428
+ if (roomIds.length === 0)
1429
+ return [];
1430
+ // Sample a bounded page so this stays cheap. 1000 messages is enough
1431
+ // to catch every source an active agent uses day-to-day.
1432
+ const memories = await runtime.getMemoriesByRoomIds({
1433
+ tableName: "messages",
1434
+ roomIds,
1435
+ limit: 1000,
1436
+ });
1437
+ const seen = new Set();
1438
+ for (const memory of memories) {
1439
+ const source = extractSource(memory);
1440
+ if (!source)
1441
+ continue;
1442
+ // We only care about inbox sources — skip client_chat / api / etc.
1443
+ if (!DEFAULT_INBOX_SOURCES.has(source.toLowerCase()))
1444
+ continue;
1445
+ const normalizedSource = normalizeConnectorSource(source);
1446
+ if (!normalizedSource)
1447
+ continue;
1448
+ seen.add(normalizedSource);
1449
+ }
1450
+ return Array.from(seen).sort();
1451
+ }
1452
+ /**
1453
+ * Route handler entry point. Returns `true` when a route matched and
1454
+ * the response has been written; `false` so the caller can continue
1455
+ * trying other handlers. Mirrors the handleIMessageRoute pattern.
1456
+ */
1457
+ export async function handleInboxRoute(req, res, pathname, method, state, helpers) {
1458
+ if (!pathname.startsWith("/api/inbox"))
1459
+ return false;
1460
+ // ── GET /api/inbox/messages ───────────────────────────────────────
1461
+ if (method === "GET" && pathname === "/api/inbox/messages") {
1462
+ const runtime = state.runtime;
1463
+ if (!runtime) {
1464
+ helpers.json(res, { messages: [], count: 0 });
1465
+ return true;
1466
+ }
1467
+ const url = new URL(req.url ?? pathname, "http://localhost");
1468
+ const limit = parseLimit(url.searchParams.get("limit"));
1469
+ const explicitFilter = parseSourceFilter(url.searchParams.get("sources"));
1470
+ const sourceFilter = explicitFilter ?? DEFAULT_INBOX_SOURCES;
1471
+ // Optional roomId scope. When the messages view has a
1472
+ // specific connector chat selected, it passes the roomId so the
1473
+ // aggregator can skip cross-room enumeration and return just that
1474
+ // room's messages. Validated as non-empty; the runtime accepts
1475
+ // UUIDs but won't error on arbitrary strings, so we keep parsing
1476
+ // forgiving here and let runtime.getMemoriesByRoomIds return empty
1477
+ // for bad ids.
1478
+ const roomIdParam = url.searchParams.get("roomId")?.trim() ?? "";
1479
+ const roomId = roomIdParam.length > 0 ? roomIdParam : null;
1480
+ const roomSourceParam = url.searchParams.get("roomSource")?.trim() ?? "";
1481
+ const roomSourceHint = roomSourceParam.length > 0 ? roomSourceParam : null;
1482
+ try {
1483
+ const messages = await loadInboxMessages(runtime, limit, sourceFilter, roomId, roomSourceHint);
1484
+ helpers.json(res, { messages, count: messages.length });
1485
+ }
1486
+ catch (err) {
1487
+ helpers.error(res, `failed to load inbox: ${err instanceof Error ? err.message : String(err)}`, 500);
1488
+ }
1489
+ return true;
1490
+ }
1491
+ // ── POST /api/inbox/messages ──────────────────────────────────────
1492
+ if (method === "POST" && pathname === "/api/inbox/messages") {
1493
+ const runtime = state.runtime;
1494
+ if (!runtime) {
1495
+ helpers.error(res, "runtime not ready", 503);
1496
+ return true;
1497
+ }
1498
+ const body = await helpers.readJsonBody(req, res, { maxBytes: 256 * 1024 });
1499
+ if (!body) {
1500
+ return true;
1501
+ }
1502
+ const roomId = body.roomId?.trim();
1503
+ const source = body.source?.trim().toLowerCase();
1504
+ const text = body.text?.trim();
1505
+ const replyToMessageId = body.replyToMessageId?.trim();
1506
+ if (!roomId || !source || !text) {
1507
+ helpers.error(res, "roomId, source, and text are required", 400);
1508
+ return true;
1509
+ }
1510
+ if (!runtimeHasSendHandler(runtime, source)) {
1511
+ helpers.error(res, `no send handler registered for inbox source: ${source}`, 409);
1512
+ return true;
1513
+ }
1514
+ const room = await runtime.getRoom(roomId);
1515
+ if (!room) {
1516
+ helpers.error(res, "inbox room not found", 404);
1517
+ return true;
1518
+ }
1519
+ try {
1520
+ await runtime.sendMessageToTarget({
1521
+ source,
1522
+ roomId: room.id,
1523
+ channelId: room.channelId ?? room.id,
1524
+ serverId: room.serverId,
1525
+ }, {
1526
+ ...(replyToMessageId ? { inReplyTo: replyToMessageId } : {}),
1527
+ source,
1528
+ text,
1529
+ });
1530
+ const [message] = await loadInboxMessages(runtime, 1, new Set([source]), room.id, source);
1531
+ helpers.json(res, message ? { ok: true, message } : { ok: true });
1532
+ }
1533
+ catch (err) {
1534
+ helpers.error(res, `failed to send inbox reply: ${err instanceof Error ? err.message : String(err)}`, 500);
1535
+ }
1536
+ return true;
1537
+ }
1538
+ // ── GET /api/inbox/chats ──────────────────────────────────────────
1539
+ // List of connector chat threads (one row per external chat room)
1540
+ // used by the messages sidebar. Each row carries the source
1541
+ // tag, a display title, last-message preview + timestamp, and a
1542
+ // message count. Dashboard conversations aren't included here — the
1543
+ // frontend merges this list with /api/conversations on its own.
1544
+ if (method === "GET" && pathname === "/api/inbox/chats") {
1545
+ const runtime = state.runtime;
1546
+ if (!runtime) {
1547
+ helpers.json(res, { chats: [], count: 0 });
1548
+ return true;
1549
+ }
1550
+ const url = new URL(req.url ?? pathname, "http://localhost");
1551
+ const explicitFilter = parseSourceFilter(url.searchParams.get("sources"));
1552
+ const sourceFilter = explicitFilter ?? DEFAULT_INBOX_SOURCES;
1553
+ try {
1554
+ const chats = await loadInboxChats(runtime, sourceFilter);
1555
+ helpers.json(res, { chats, count: chats.length });
1556
+ }
1557
+ catch (err) {
1558
+ helpers.error(res, `failed to load inbox chats: ${err instanceof Error ? err.message : String(err)}`, 500);
1559
+ }
1560
+ return true;
1561
+ }
1562
+ // ── GET /api/inbox/sources ────────────────────────────────────────
1563
+ if (method === "GET" && pathname === "/api/inbox/sources") {
1564
+ const runtime = state.runtime;
1565
+ if (!runtime) {
1566
+ helpers.json(res, { sources: [] });
1567
+ return true;
1568
+ }
1569
+ try {
1570
+ const sources = await loadInboxSources(runtime);
1571
+ helpers.json(res, { sources });
1572
+ }
1573
+ catch (err) {
1574
+ helpers.error(res, `failed to load inbox sources: ${err instanceof Error ? err.message : String(err)}`, 500);
1575
+ }
1576
+ return true;
1577
+ }
1578
+ return false;
1579
+ }