@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,1841 @@
1
+ /**
2
+ * Chat route handlers extracted from server.ts.
3
+ *
4
+ * Handles:
5
+ * POST /v1/chat/completions – OpenAI-compatible
6
+ * POST /v1/messages – Anthropic-compatible
7
+ * GET /v1/models – OpenAI model listing
8
+ * GET /v1/models/:id – OpenAI single model
9
+ *
10
+ * Also exports generateChatResponse() and supporting helpers so that
11
+ * conversation-routes.ts (and server.ts itself) can reuse them.
12
+ */
13
+ import crypto from "node:crypto";
14
+ import { ChannelType, composePrompt, createMessageMemory, logger, ModelType, mobileDirectReplyTemplate, runWithTrajectoryContext, stringToUuid, } from "@elizaos/core";
15
+ import { getLocalInferenceChatStatus, handleLocalInferenceChatCommand, } from "@elizaos/plugin-local-inference";
16
+ import { asRecord, normalizeCharacterLanguage, resolveStreamingUpdate, } from "@elizaos/shared";
17
+ import { estimateTokenCount, withModelUsageCapture, } from "../runtime/prompt-optimization.js";
18
+ import { resolveTrajectoryGrouping } from "../runtime/trajectory-internals.js";
19
+ import { startTrajectoryStepInDatabase } from "../runtime/trajectory-storage.js";
20
+ import { syncCharacterIntoConfig } from "../services/character-persistence.js";
21
+ import { detectRuntimeModel } from "./agent-model.js";
22
+ import { executeFallbackParsedActions, maybeHandleDirectBinanceSkillRequest, parseFallbackActionBlocks, } from "./binance-skill-helpers.js";
23
+ import { isClientVisibleNoResponse, isNoResponsePlaceholder, } from "./chat-text-helpers.js";
24
+ import { resolveClientChatAdminEntityId } from "./client-chat-admin.js";
25
+ import { extractAnthropicSystemAndLastUser, extractCompatTextContent, extractOpenAiSystemAndLastUser, resolveCompatRoomKey, } from "./compat-utils.js";
26
+ import { isInsufficientCreditsError, isInsufficientCreditsMessage, } from "./credit-detection.js";
27
+ import { buildWalletActionNotExecutedReply, cloneWithoutBlockedObjectKeys, decodePathComponent, getErrorMessage, hasBlockedObjectKeyDeep, isWalletActionRequiredIntent, maybeAugmentChatMessageWithDocuments, maybeAugmentChatMessageWithLanguage, maybeAugmentChatMessageWithWalletContext, normalizeIncomingChatPrompt, resolveAppUserName, trimWalletProgressPrefix, validateChatImages, } from "./server-helpers.js";
28
+ const CHAT_MAX_BODY_BYTES = 20 * 1024 * 1024; // 20 MB (image-capable)
29
+ function resolveCallbackMergeMode(content, fallback = "replace") {
30
+ return content.merge === "append" || content.merge === "replace"
31
+ ? content.merge
32
+ : fallback;
33
+ }
34
+ function normalizeActionCallbackText(text) {
35
+ return text.trim();
36
+ }
37
+ function getLatestVisibleResponseMessageText(responseMessages) {
38
+ if (!Array.isArray(responseMessages) || responseMessages.length === 0) {
39
+ return "";
40
+ }
41
+ for (let index = responseMessages.length - 1; index >= 0; index -= 1) {
42
+ const content = responseMessages[index]?.content;
43
+ const text = typeof extractCompatTextContent(content) === "string"
44
+ ? extractCompatTextContent(content).trim()
45
+ : "";
46
+ if (!text || isNoResponsePlaceholder(text)) {
47
+ continue;
48
+ }
49
+ return text;
50
+ }
51
+ return "";
52
+ }
53
+ function isMobileLocalSimpleChat(message) {
54
+ const conversationMode = message.content
55
+ .conversationMode;
56
+ return (process.env.ELIZA_DEVICE_BRIDGE_ENABLED === "1" &&
57
+ conversationMode === "simple");
58
+ }
59
+ function sanitizeMobileLocalSimpleReply(text) {
60
+ const trimmed = text.trim();
61
+ if (!trimmed)
62
+ return "";
63
+ const withoutRole = trimmed
64
+ .replace(/^assistant\s*:\s*/i, "")
65
+ .replace(/^eliza\s*:\s*/i, "")
66
+ .trim();
67
+ const firstLine = withoutRole.split(/\r?\n/).find((line) => line.trim());
68
+ return (firstLine ?? withoutRole).trim();
69
+ }
70
+ function extractExactWordsReplyRequest(userText) {
71
+ const exactWords = /\bexact words?\s*:\s*["'“”‘’]?(.+?)["'“”‘’]?\s*$/i.exec(userText);
72
+ if (exactWords?.[1]?.trim()) {
73
+ return exactWords[1].trim();
74
+ }
75
+ const replyWith = /\breply\s+(?:briefly\s+)?with\s+["'“”‘’]([^"'“”‘’]+)["'“”‘’]/i.exec(userText);
76
+ if (replyWith?.[1]?.trim()) {
77
+ return replyWith[1].trim();
78
+ }
79
+ return null;
80
+ }
81
+ async function generateMobileLocalSimpleReply(runtime, message, agentName, opts) {
82
+ const userText = String(extractCompatTextContent(message.content) ?? "").trim();
83
+ if (!userText)
84
+ return null;
85
+ const exactReply = extractExactWordsReplyRequest(userText);
86
+ if (exactReply) {
87
+ opts?.onSnapshot?.(exactReply);
88
+ return {
89
+ text: exactReply,
90
+ agentName,
91
+ responseContent: {
92
+ text: exactReply,
93
+ simple: true,
94
+ actions: ["REPLY"],
95
+ },
96
+ responseMessages: [],
97
+ };
98
+ }
99
+ const system = typeof runtime.character.system === "string" &&
100
+ runtime.character.system.trim().length > 0
101
+ ? runtime.character.system.trim()
102
+ : `You are ${agentName}. Reply briefly and directly.`;
103
+ const prompt = composePrompt({
104
+ state: { system, userText, agentName },
105
+ template: mobileDirectReplyTemplate,
106
+ });
107
+ const raw = await runtime.useModel(ModelType.TEXT_SMALL, {
108
+ prompt,
109
+ maxTokens: 64,
110
+ temperature: 0.4,
111
+ });
112
+ const text = sanitizeMobileLocalSimpleReply(String(raw ?? ""));
113
+ if (!text)
114
+ return null;
115
+ opts?.onSnapshot?.(text);
116
+ return {
117
+ text,
118
+ agentName,
119
+ responseContent: {
120
+ text,
121
+ simple: true,
122
+ actions: ["REPLY"],
123
+ },
124
+ responseMessages: [],
125
+ };
126
+ }
127
+ const EXACT_GROUNDED_VALUE_REQUEST = /\b(?:exact|verbatim|copy|quoted?|identifier|codeword|return only|only the)\b/i;
128
+ const DOCUMENT_VALUE_CAPTURE = /\b(?:codeword|identifier|token|value)\s*(?:is|=|:)\s*([A-Za-z0-9][A-Za-z0-9._-]{1,127})\b/gi;
129
+ const UPPERCASE_IDENTIFIER_CAPTURE = /\b[A-Z0-9]+(?:[-_][A-Z0-9]+)+\b/g;
130
+ const UUID_IDENTIFIER_CAPTURE = /\b[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}\b/gi;
131
+ function uniqueMatches(matches) {
132
+ return Array.from(new Set(Array.from(matches).map((value) => value.trim()))).filter((value) => value.length > 0);
133
+ }
134
+ function collectRegexMatches(text, pattern, groupIndex) {
135
+ const regex = new RegExp(pattern.source, pattern.flags);
136
+ return Array.from(text.matchAll(regex), (match) => String(groupIndex === undefined ? match[0] : (match[groupIndex] ?? "")));
137
+ }
138
+ function extractExactGroundedValueFromText(messageText, documentText) {
139
+ if (!messageText || !EXACT_GROUNDED_VALUE_REQUEST.test(messageText)) {
140
+ return null;
141
+ }
142
+ if (!documentText) {
143
+ return null;
144
+ }
145
+ const capturedDocumentValues = uniqueMatches(collectRegexMatches(documentText, DOCUMENT_VALUE_CAPTURE, 1));
146
+ if (capturedDocumentValues.length === 1) {
147
+ return capturedDocumentValues[0];
148
+ }
149
+ const uppercaseCandidates = uniqueMatches(collectRegexMatches(documentText, UPPERCASE_IDENTIFIER_CAPTURE));
150
+ if (uppercaseCandidates.length === 1) {
151
+ return uppercaseCandidates[0];
152
+ }
153
+ const uuidCandidates = uniqueMatches(collectRegexMatches(documentText, UUID_IDENTIFIER_CAPTURE));
154
+ if (uuidCandidates.length === 1) {
155
+ return uuidCandidates[0];
156
+ }
157
+ return null;
158
+ }
159
+ async function resolveExactDocumentValueForChat(runtime, message) {
160
+ const messageText = typeof extractCompatTextContent(message.content) === "string"
161
+ ? extractCompatTextContent(message.content).trim()
162
+ : "";
163
+ if (!messageText || !EXACT_GROUNDED_VALUE_REQUEST.test(messageText)) {
164
+ return null;
165
+ }
166
+ const documentsService = runtime.getService?.("documents");
167
+ if (!documentsService ||
168
+ typeof documentsService.searchDocuments !== "function") {
169
+ return null;
170
+ }
171
+ try {
172
+ const matches = await documentsService.searchDocuments(message);
173
+ if (!Array.isArray(matches) || matches.length === 0) {
174
+ return null;
175
+ }
176
+ const uploadedMatches = matches.filter((match) => {
177
+ const metadata = match?.metadata && typeof match.metadata === "object"
178
+ ? match.metadata
179
+ : null;
180
+ return metadata?.source === "upload";
181
+ });
182
+ const preferredMatches = uploadedMatches.length > 0 ? uploadedMatches : matches;
183
+ const exactMatchCandidates = uniqueMatches(preferredMatches
184
+ .map((match) => typeof match?.content?.text === "string"
185
+ ? extractExactGroundedValueFromText(messageText, match.content.text.trim())
186
+ : null)
187
+ .filter((value) => typeof value === "string"));
188
+ if (exactMatchCandidates.length === 1) {
189
+ return exactMatchCandidates[0];
190
+ }
191
+ const documentsText = preferredMatches
192
+ .map((match) => typeof match?.content?.text === "string"
193
+ ? match.content.text.trim()
194
+ : "")
195
+ .filter((text) => text.length > 0)
196
+ .join("\n\n");
197
+ return extractExactGroundedValueFromText(messageText, documentsText);
198
+ }
199
+ catch {
200
+ return null;
201
+ }
202
+ }
203
+ // ---------------------------------------------------------------------------
204
+ // Chat failure / no-response helpers
205
+ // ---------------------------------------------------------------------------
206
+ // Reserved for path #4 — actual generation throw caught by getChatFailureReply.
207
+ // Do NOT use as the generic empty-response fallback; that mislabels every
208
+ // IGNORE / empty-action / placeholder-text path as a provider failure.
209
+ const PROVIDER_ISSUE_CHAT_REPLY = "Sorry, I'm having a provider issue";
210
+ const INSUFFICIENT_CREDITS_CHAT_REPLY = "Eliza Cloud credits are depleted. Top up the cloud balance and try again.";
211
+ // Used by paths #1-#3: planner picked IGNORE/NONE/empty REPLY, action ran but
212
+ // emitted no text callback, or normalized text became a placeholder. None of
213
+ // these are provider failures, so the message must not blame the provider.
214
+ const NO_RESPONSE_FALLBACK_REPLY = "I don't have a reply for that — try rephrasing?";
215
+ // Routed-model errors raised by the model router when no provider plugin is
216
+ // loaded for a requested model class (e.g. TEXT_SMALL). Identifies the OOB
217
+ // "no provider configured" case so chat routes can return a structured 503
218
+ // instead of a generic 500 — UI clients gate on `error.type === "no_provider"`
219
+ // to render a "Connect a provider" CTA instead of an opaque error toast.
220
+ const NO_PROVIDER_ERROR_FRAGMENTS = [
221
+ "No provider registered for",
222
+ "No model registered for",
223
+ ];
224
+ function isNoProviderError(err) {
225
+ const msg = err instanceof Error ? err.message : typeof err === "string" ? err : "";
226
+ return NO_PROVIDER_ERROR_FRAGMENTS.some((frag) => msg.includes(frag));
227
+ }
228
+ const NO_PROVIDER_CHAT_MESSAGE = "Connect an LLM provider to start chatting. Open Settings → Providers, " +
229
+ "or pick Eliza Cloud from the runtime picker.";
230
+ const DEFAULT_CHAT_GENERATION_TIMEOUT_MS = 180_000;
231
+ const NON_EXECUTABLE_FALLBACK_ACTIONS = new Set(["REPLY", "NONE", "IGNORE"]);
232
+ function isExecutableFallbackAction(action) {
233
+ return !NON_EXECUTABLE_FALLBACK_ACTIONS.has(action.name);
234
+ }
235
+ function normalizeActionName(value) {
236
+ return typeof value === "string" ? value.trim().toUpperCase() : "";
237
+ }
238
+ function ensureMessageMemoryContent(content) {
239
+ return typeof content.text === "string"
240
+ ? { ...content, text: content.text }
241
+ : { ...content, text: "" };
242
+ }
243
+ function buildRuntimeActionNameLookup(runtime) {
244
+ const lookup = new Map();
245
+ const runtimeActions = Array.isArray(runtime.actions)
246
+ ? runtime.actions
247
+ : [];
248
+ for (const action of runtimeActions) {
249
+ const canonicalName = normalizeActionName(action?.name);
250
+ if (!canonicalName) {
251
+ continue;
252
+ }
253
+ lookup.set(canonicalName, canonicalName);
254
+ if (!Array.isArray(action?.similes)) {
255
+ continue;
256
+ }
257
+ for (const alias of action.similes) {
258
+ const normalizedAlias = normalizeActionName(alias);
259
+ if (normalizedAlias) {
260
+ lookup.set(normalizedAlias, canonicalName);
261
+ }
262
+ }
263
+ }
264
+ return lookup;
265
+ }
266
+ function listExecutedRuntimeActions(runtime, messageId) {
267
+ if (!messageId) {
268
+ return new Set();
269
+ }
270
+ const getActionResults = runtime.getActionResults;
271
+ if (typeof getActionResults !== "function") {
272
+ return new Set();
273
+ }
274
+ try {
275
+ return new Set(getActionResults(messageId)
276
+ .map((result) => {
277
+ if (typeof result === "string") {
278
+ return normalizeActionName(result);
279
+ }
280
+ if (!result || typeof result !== "object") {
281
+ return "";
282
+ }
283
+ const record = result;
284
+ if (typeof record.actionName === "string") {
285
+ return normalizeActionName(record.actionName);
286
+ }
287
+ const data = record.data && typeof record.data === "object"
288
+ ? record.data
289
+ : null;
290
+ return normalizeActionName(data?.actionName);
291
+ })
292
+ .filter((name) => name.length > 0));
293
+ }
294
+ catch {
295
+ return new Set();
296
+ }
297
+ }
298
+ function pickInsufficientCreditsChatReply() {
299
+ return INSUFFICIENT_CREDITS_CHAT_REPLY;
300
+ }
301
+ function findRecentInsufficientCreditsLog(logBuffer, lookbackMs = 60_000) {
302
+ const now = Date.now();
303
+ for (let i = logBuffer.length - 1; i >= 0; i--) {
304
+ const entry = logBuffer[i];
305
+ if (now - entry.timestamp > lookbackMs)
306
+ break;
307
+ if (isInsufficientCreditsMessage(entry.message)) {
308
+ return entry;
309
+ }
310
+ }
311
+ return null;
312
+ }
313
+ export function resolveNoResponseFallback(logBuffer, _runtime, _lang = "en") {
314
+ if (findRecentInsufficientCreditsLog(logBuffer)) {
315
+ return pickInsufficientCreditsChatReply();
316
+ }
317
+ return NO_RESPONSE_FALLBACK_REPLY;
318
+ }
319
+ function getProviderIssueChatReply() {
320
+ return PROVIDER_ISSUE_CHAT_REPLY;
321
+ }
322
+ function resolveChatGenerationTimeoutMs(explicit) {
323
+ if (typeof explicit === "number" &&
324
+ Number.isFinite(explicit) &&
325
+ explicit > 0) {
326
+ return Math.max(1, Math.floor(explicit));
327
+ }
328
+ const fromEnv = process.env.ELIZA_CHAT_GENERATION_TIMEOUT_MS?.trim();
329
+ if (!fromEnv)
330
+ return DEFAULT_CHAT_GENERATION_TIMEOUT_MS;
331
+ const parsed = Number.parseInt(fromEnv, 10);
332
+ if (!Number.isFinite(parsed) || parsed <= 0) {
333
+ return DEFAULT_CHAT_GENERATION_TIMEOUT_MS;
334
+ }
335
+ return Math.max(1_000, parsed);
336
+ }
337
+ function createChatGenerationTimeoutError(timeoutMs) {
338
+ return new Error(`Chat generation timed out after ${timeoutMs}ms`);
339
+ }
340
+ async function withTimeout(promise, timeoutMs, createError, onTimeout) {
341
+ let timeoutHandle;
342
+ try {
343
+ return await Promise.race([
344
+ promise,
345
+ new Promise((_resolve, reject) => {
346
+ timeoutHandle = setTimeout(() => {
347
+ onTimeout?.();
348
+ reject(createError());
349
+ }, timeoutMs);
350
+ }),
351
+ ]);
352
+ }
353
+ finally {
354
+ if (timeoutHandle) {
355
+ clearTimeout(timeoutHandle);
356
+ }
357
+ }
358
+ }
359
+ export function getChatFailureReply(err, logBuffer) {
360
+ if (isInsufficientCreditsError(err) ||
361
+ findRecentInsufficientCreditsLog(logBuffer)) {
362
+ return pickInsufficientCreditsChatReply();
363
+ }
364
+ if (isNoProviderError(err)) {
365
+ return NO_PROVIDER_CHAT_MESSAGE;
366
+ }
367
+ return getProviderIssueChatReply();
368
+ }
369
+ export function classifyChatFailure(err, logBuffer) {
370
+ if (isInsufficientCreditsError(err) ||
371
+ findRecentInsufficientCreditsLog(logBuffer)) {
372
+ return "insufficient_credits";
373
+ }
374
+ if (isNoProviderError(err)) {
375
+ return "no_provider";
376
+ }
377
+ if (isLocalInferenceError(err)) {
378
+ return "local_inference";
379
+ }
380
+ return "provider_issue";
381
+ }
382
+ function normalizeIntentText(text) {
383
+ return text
384
+ .toLowerCase()
385
+ .replace(/[`"'“”‘’]/g, "")
386
+ .replace(/[_-]+/g, " ")
387
+ .replace(/\s+/g, " ")
388
+ .trim();
389
+ }
390
+ function hasLocalInferenceMetadata(message) {
391
+ const contentMetadata = asRecord(message.content.metadata) ?? {};
392
+ const messageMetadata = asRecord(message.metadata) ?? {};
393
+ const metadata = { ...contentMetadata, ...messageMetadata };
394
+ const localValue = metadata.localInference ??
395
+ metadata.localInferenceContext ??
396
+ metadata.localModel ??
397
+ metadata.modelHub;
398
+ if (localValue === true)
399
+ return true;
400
+ if (typeof localValue === "string") {
401
+ return /^(1|true|yes|local|local-inference|model-hub)$/i.test(localValue.trim());
402
+ }
403
+ const context = typeof metadata.context === "string"
404
+ ? metadata.context
405
+ : typeof metadata.scope === "string"
406
+ ? metadata.scope
407
+ : "";
408
+ return /\blocal[-_\s]?inference\b|\bmodel[-_\s]?hub\b/i.test(context);
409
+ }
410
+ function hasLocalInferenceTopic(text) {
411
+ return (/\b(local|locally|on device|on-device|device model|local model|local inference|model hub|gguf|llama|inference|provider|runtime)\b/i.test(text) || /\bmodel\s+(?:download|install|load|setup)\b/i.test(text));
412
+ }
413
+ function isImperativeCloudOrLocalRouting(text) {
414
+ return /^(?:please\s+)?(?:use|switch|prefer|route|go|move)\s+(?:me\s+)?(?:to\s+)?(?:the\s+)?(?:cloud|local|on device|on-device)\b/i.test(text);
415
+ }
416
+ export function detectLocalInferenceCommandIntent(text, options = {}) {
417
+ const normalized = normalizeIntentText(text);
418
+ if (!normalized)
419
+ return null;
420
+ const explicitContext = options.localInferenceContext === true ||
421
+ hasLocalInferenceTopic(normalized) ||
422
+ isImperativeCloudOrLocalRouting(normalized);
423
+ if (!explicitContext)
424
+ return null;
425
+ if (/\b(?:use|switch|prefer|route|go|move)\s+(?:to\s+)?(?:the\s+)?cloud\b/.test(normalized) ||
426
+ /\bcloud\s+(?:mode|provider|inference|model|routing)\b/.test(normalized)) {
427
+ return "use_cloud";
428
+ }
429
+ if (/\b(?:use|switch|prefer|route|go|move)\s+(?:to\s+)?(?:the\s+)?(?:local|on device|on device model)\b/.test(normalized) ||
430
+ /\b(?:local|on device)\s+(?:mode|provider|inference|model|routing)\b/.test(normalized)) {
431
+ return "use_local";
432
+ }
433
+ if (/\b(?:smaller|smallest|tiny|lighter|lightweight|less memory|low ram|low memory)\b/.test(normalized) &&
434
+ /\b(?:switch|use|load|pick|select|change|model)\b/.test(normalized)) {
435
+ return "switch_smaller";
436
+ }
437
+ if (/\b(?:cancel|stop|abort|halt)\b/.test(normalized) &&
438
+ /\b(?:download|model|local|inference)\b/.test(normalized)) {
439
+ return "cancel";
440
+ }
441
+ if (/\b(?:re download|redownload|download again|fresh download)\b/.test(normalized)) {
442
+ return "redownload";
443
+ }
444
+ if (/\b(?:retry|try again|resume|continue|restart)\b/.test(normalized) &&
445
+ /\b(?:download|model|local|inference)\b/.test(normalized)) {
446
+ return normalized.includes("resume") || normalized.includes("continue")
447
+ ? "resume"
448
+ : "retry";
449
+ }
450
+ if (/\b(?:status|progress|state|ready|loaded|loading|how far|what model)\b/.test(normalized) &&
451
+ (options.localInferenceContext === true ||
452
+ /\b(?:download|model|local|inference|gguf|eliza-1|provider|runtime)\b/.test(normalized))) {
453
+ return "status";
454
+ }
455
+ if (/\b(?:download|install|get|fetch|pull)\b/.test(normalized) &&
456
+ (options.localInferenceContext === true ||
457
+ /\b(?:model|local|inference|gguf|eliza-1)\b/.test(normalized))) {
458
+ return "download";
459
+ }
460
+ return null;
461
+ }
462
+ export function isLocalInferenceError(err) {
463
+ const message = err instanceof Error ? err.message : typeof err === "string" ? err : "";
464
+ return /\b(?:local inference|local model|on-device|device bridge|llama|gguf|capacitor-llama|no local model|model download|enospc|no space left|disk full)\b/i.test(message);
465
+ }
466
+ export function normalizeChatResponseText(text, logBuffer, runtime) {
467
+ // Both fallback strings can hit this path; either should be re-routed to
468
+ // the insufficient-credits reply when a recent credits log explains why
469
+ // generation produced nothing.
470
+ const trimmed = text.trim();
471
+ if ((trimmed === PROVIDER_ISSUE_CHAT_REPLY ||
472
+ trimmed === NO_RESPONSE_FALLBACK_REPLY) &&
473
+ findRecentInsufficientCreditsLog(logBuffer)) {
474
+ return pickInsufficientCreditsChatReply();
475
+ }
476
+ if (!isClientVisibleNoResponse(text))
477
+ return text;
478
+ return resolveNoResponseFallback(logBuffer, runtime);
479
+ }
480
+ function listResponseActions(responseContent) {
481
+ if (!Array.isArray(responseContent?.actions)) {
482
+ return [];
483
+ }
484
+ return responseContent.actions
485
+ .map((action) => typeof action === "string" ? action.trim().toUpperCase() : "")
486
+ .filter((action) => action.length > 0);
487
+ }
488
+ function isIntentionalNoResponseResult(result, candidateText) {
489
+ if (!result)
490
+ return false;
491
+ const actions = listResponseActions(result.responseContent);
492
+ const hasSilentTerminalAction = actions.length === 1 && (actions[0] === "IGNORE" || actions[0] === "STOP");
493
+ const hasNoVisibleText = candidateText.trim().length === 0 ||
494
+ isClientVisibleNoResponse(candidateText);
495
+ return (hasNoVisibleText && (result.didRespond === false || hasSilentTerminalAction));
496
+ }
497
+ function buildUnexecutedActionPayloadReply(actionNames) {
498
+ const uniqueNames = [
499
+ ...new Set(actionNames.map((name) => normalizeActionName(name)).filter(Boolean)),
500
+ ];
501
+ const actionsLabel = uniqueNames.length > 0 ? uniqueNames.join(", ") : "unknown";
502
+ return [
503
+ "I could not complete that request because the model returned actions that were not executed.",
504
+ `Unexecuted actions: ${actionsLabel}.`,
505
+ "No side effects were applied.",
506
+ ].join("\n");
507
+ }
508
+ // ---------------------------------------------------------------------------
509
+ // SSE helpers
510
+ // ---------------------------------------------------------------------------
511
+ export function initSse(res) {
512
+ res.writeHead(200, {
513
+ "Content-Type": "text/event-stream",
514
+ "Cache-Control": "no-cache, no-transform",
515
+ Connection: "keep-alive",
516
+ "X-Accel-Buffering": "no",
517
+ });
518
+ }
519
+ export function writeSse(res, payload) {
520
+ if (res.writableEnded || res.destroyed)
521
+ return;
522
+ res.write(`data: ${JSON.stringify(payload)}\n\n`);
523
+ }
524
+ export function writeChatTokenSse(res, text, fullText) {
525
+ writeSse(res, { type: "token", text, fullText });
526
+ }
527
+ export function writeSseData(res, data, event) {
528
+ if (res.writableEnded || res.destroyed)
529
+ return;
530
+ if (event)
531
+ res.write(`event: ${event}\n`);
532
+ res.write(`data: ${data}\n\n`);
533
+ }
534
+ export function writeSseJson(res, payload, event) {
535
+ writeSseData(res, JSON.stringify(payload), event);
536
+ }
537
+ // ---------------------------------------------------------------------------
538
+ // Persistence helpers
539
+ // ---------------------------------------------------------------------------
540
+ function isDuplicateMemoryError(err) {
541
+ if (!(err instanceof Error))
542
+ return false;
543
+ const msg = err.message.toLowerCase();
544
+ return (msg.includes("duplicate") ||
545
+ msg.includes("already exists") ||
546
+ msg.includes("unique constraint"));
547
+ }
548
+ export async function persistConversationMemory(runtime, memory) {
549
+ try {
550
+ await runtime.createMemory(memory, "messages");
551
+ }
552
+ catch (err) {
553
+ if (isDuplicateMemoryError(err))
554
+ return;
555
+ throw err;
556
+ }
557
+ }
558
+ async function hasRecentAssistantMemory(runtime, roomId, text, sinceMs) {
559
+ const trimmed = text.trim();
560
+ if (!trimmed)
561
+ return false;
562
+ try {
563
+ const recent = await runtime.getMemories({
564
+ roomId,
565
+ tableName: "messages",
566
+ limit: 12,
567
+ });
568
+ return recent.some((memory) => {
569
+ const contentText = memory.content?.text?.trim();
570
+ const createdAt = memory.createdAt ?? 0;
571
+ return (memory.entityId === runtime.agentId &&
572
+ contentText === trimmed &&
573
+ createdAt >= sinceMs - 2000);
574
+ });
575
+ }
576
+ catch {
577
+ return false;
578
+ }
579
+ }
580
+ export async function hasRecentVisibleAssistantMemorySince(runtime, roomId, sinceMs) {
581
+ try {
582
+ const recent = await runtime.getMemories({
583
+ roomId,
584
+ tableName: "messages",
585
+ limit: 12,
586
+ });
587
+ return recent.some((memory) => {
588
+ const contentText = memory.content?.text?.trim();
589
+ const createdAt = memory.createdAt ?? 0;
590
+ return (memory.entityId === runtime.agentId &&
591
+ Boolean(contentText) &&
592
+ createdAt >= sinceMs - 2000);
593
+ });
594
+ }
595
+ catch {
596
+ return false;
597
+ }
598
+ }
599
+ export async function persistAssistantConversationMemory(runtime, roomId, content, channelType, dedupeSinceMs) {
600
+ const persistedContent = typeof content === "string"
601
+ ? {
602
+ text: content,
603
+ source: "client_chat",
604
+ channelType,
605
+ }
606
+ : {
607
+ ...content,
608
+ text: extractCompatTextContent(content) ?? "",
609
+ source: typeof content.source === "string" ? content.source : "client_chat",
610
+ channelType: typeof content.channelType === "string"
611
+ ? content.channelType
612
+ : channelType,
613
+ };
614
+ const trimmed = persistedContent.text.trim();
615
+ if (!trimmed)
616
+ return;
617
+ if (typeof dedupeSinceMs === "number") {
618
+ const alreadyPersisted = await hasRecentAssistantMemory(runtime, roomId, trimmed, dedupeSinceMs);
619
+ if (alreadyPersisted)
620
+ return;
621
+ }
622
+ await persistConversationMemory(runtime, createMessageMemory({
623
+ id: crypto.randomUUID(),
624
+ entityId: runtime.agentId,
625
+ agentId: runtime.agentId,
626
+ roomId,
627
+ content: persistedContent,
628
+ }));
629
+ }
630
+ // ---------------------------------------------------------------------------
631
+ // Chat request parsing
632
+ // ---------------------------------------------------------------------------
633
+ const VALID_CHANNEL_TYPES = new Set(Object.values(ChannelType));
634
+ const VALID_CONVERSATION_MODES = new Set(["simple", "power"]);
635
+ function parseRequestChannelType(value, fallback = ChannelType.DM) {
636
+ if (value === undefined || value === null) {
637
+ return fallback;
638
+ }
639
+ if (typeof value !== "string") {
640
+ return null;
641
+ }
642
+ const normalized = value.trim().toUpperCase();
643
+ if (!VALID_CHANNEL_TYPES.has(normalized)) {
644
+ return null;
645
+ }
646
+ return normalized;
647
+ }
648
+ function parseConversationMode(value) {
649
+ if (value === undefined || value === null) {
650
+ return undefined;
651
+ }
652
+ if (typeof value !== "string") {
653
+ return null;
654
+ }
655
+ const normalized = value.trim().toLowerCase();
656
+ if (!VALID_CONVERSATION_MODES.has(normalized)) {
657
+ return null;
658
+ }
659
+ return normalized;
660
+ }
661
+ function readUiLanguageHeader(req) {
662
+ if (!req) {
663
+ return undefined;
664
+ }
665
+ const header = req.headers["x-eliza-ui-language"];
666
+ if (Array.isArray(header)) {
667
+ return header.find((value) => value.trim())?.trim();
668
+ }
669
+ return typeof header === "string" && header.trim()
670
+ ? header.trim()
671
+ : undefined;
672
+ }
673
+ export async function readChatRequestPayload(req, res, helpers,
674
+ /** Body size limit. Image-capable endpoints pass CHAT_MAX_BODY_BYTES (20 MB);
675
+ * legacy/cloud-proxy endpoints that don't process images pass MAX_BODY_BYTES (1 MB). */
676
+ maxBytes = CHAT_MAX_BODY_BYTES) {
677
+ const body = await helpers.readJsonBody(req, res, { maxBytes });
678
+ if (!body)
679
+ return null;
680
+ const normalizedPrompt = normalizeIncomingChatPrompt(body.text, body.images);
681
+ if (!normalizedPrompt) {
682
+ helpers.error(res, "text is required");
683
+ return null;
684
+ }
685
+ const channelType = parseRequestChannelType(body.channelType, ChannelType.DM);
686
+ if (!channelType) {
687
+ helpers.error(res, "channelType is invalid", 400);
688
+ return null;
689
+ }
690
+ const conversationMode = parseConversationMode(body.conversationMode);
691
+ if (conversationMode === null) {
692
+ helpers.error(res, "conversationMode is invalid", 400);
693
+ return null;
694
+ }
695
+ const imageValidationError = validateChatImages(body.images);
696
+ if (imageValidationError) {
697
+ helpers.error(res, imageValidationError, 400);
698
+ return null;
699
+ }
700
+ const images = Array.isArray(body.images)
701
+ ? body.images.map((img) => ({
702
+ ...img,
703
+ mimeType: img.mimeType.toLowerCase(),
704
+ }))
705
+ : undefined;
706
+ const rawPreferredLanguage = (typeof body.language === "string" && body.language.trim()
707
+ ? body.language
708
+ : undefined) ?? readUiLanguageHeader(req);
709
+ const preferredLanguage = rawPreferredLanguage
710
+ ? normalizeCharacterLanguage(rawPreferredLanguage)
711
+ : undefined;
712
+ const source = typeof body.source === "string" && body.source.trim().length > 0
713
+ ? body.source.trim()
714
+ : undefined;
715
+ const metadata = body.metadata &&
716
+ typeof body.metadata === "object" &&
717
+ !Array.isArray(body.metadata)
718
+ ? body.metadata
719
+ : undefined;
720
+ return {
721
+ prompt: normalizedPrompt,
722
+ channelType,
723
+ images,
724
+ ...(conversationMode ? { conversationMode } : {}),
725
+ ...(preferredLanguage ? { preferredLanguage } : {}),
726
+ ...(source ? { source } : {}),
727
+ ...(metadata ? { metadata } : {}),
728
+ };
729
+ }
730
+ function readMessageTrajectoryStepId(message) {
731
+ const metadata = message.metadata;
732
+ if (!metadata || typeof metadata !== "object")
733
+ return null;
734
+ const stepId = metadata.trajectoryStepId;
735
+ return typeof stepId === "string" && stepId.trim().length > 0
736
+ ? stepId.trim()
737
+ : null;
738
+ }
739
+ function readMessageTrajectoryGrouping(message) {
740
+ const contentMetadata = asRecord(message.content.metadata) ?? {};
741
+ const evalMetadata = asRecord(contentMetadata.eval) ?? {};
742
+ const messageMetadata = asRecord(message.metadata) ?? {};
743
+ return resolveTrajectoryGrouping({
744
+ ...contentMetadata,
745
+ ...evalMetadata,
746
+ ...messageMetadata,
747
+ });
748
+ }
749
+ async function persistMessageTrajectoryGrouping(runtime, message) {
750
+ const stepId = readMessageTrajectoryStepId(message);
751
+ if (!stepId)
752
+ return;
753
+ const grouping = readMessageTrajectoryGrouping(message);
754
+ if (!grouping.scenarioId && !grouping.batchId)
755
+ return;
756
+ await startTrajectoryStepInDatabase({
757
+ runtime,
758
+ stepId,
759
+ source: typeof message.content.source === "string" &&
760
+ message.content.source.trim().length > 0
761
+ ? message.content.source
762
+ : undefined,
763
+ metadata: {
764
+ ...(grouping.scenarioId ? { scenarioId: grouping.scenarioId } : {}),
765
+ ...(grouping.batchId ? { batchId: grouping.batchId } : {}),
766
+ },
767
+ });
768
+ }
769
+ function buildChatUsage(runtime, message, finalText, capturedUsage) {
770
+ const model = capturedUsage?.model ?? detectRuntimeModel(runtime, undefined) ?? undefined;
771
+ if (capturedUsage) {
772
+ return {
773
+ promptTokens: capturedUsage.promptTokens,
774
+ completionTokens: capturedUsage.completionTokens,
775
+ totalTokens: capturedUsage.totalTokens,
776
+ ...(model ? { model } : {}),
777
+ ...(capturedUsage.provider ? { provider: capturedUsage.provider } : {}),
778
+ isEstimated: capturedUsage.isEstimated,
779
+ llmCalls: capturedUsage.llmCalls,
780
+ };
781
+ }
782
+ const promptText = extractCompatTextContent(message.content) ?? "";
783
+ const promptTokens = estimateTokenCount(promptText);
784
+ const completionTokens = estimateTokenCount(finalText);
785
+ return {
786
+ promptTokens,
787
+ completionTokens,
788
+ totalTokens: promptTokens + completionTokens,
789
+ ...(model ? { model } : {}),
790
+ isEstimated: true,
791
+ llmCalls: 0,
792
+ };
793
+ }
794
+ // ---------------------------------------------------------------------------
795
+ // generateChatResponse
796
+ // ---------------------------------------------------------------------------
797
+ export async function generateChatResponse(runtime, message, agentName, opts) {
798
+ const generationTimeoutMs = resolveChatGenerationTimeoutMs(opts?.timeoutDuration);
799
+ let generationTimedOut = false;
800
+ if (generationTimeoutMs <= 1) {
801
+ generationTimedOut = true;
802
+ throw createChatGenerationTimeoutError(generationTimeoutMs);
803
+ }
804
+ try {
805
+ const originalUserText = String(extractCompatTextContent(message.content) ?? "");
806
+ let responseText = "";
807
+ let forcedWalletExecutionText = false;
808
+ let activeStreamSource = "unset";
809
+ const actionCallbackHistory = [];
810
+ // Snapshot of `responseText` at the moment the first action callback runs.
811
+ // WHY: LLM streaming genuinely appends token deltas. Action handlers that
812
+ // call HandlerCallback multiple times (Discord "progressive message" pattern)
813
+ // send unrelated status strings — merging them with mergeStreamingText would
814
+ // concatenate ("🔍…" + "✨…" + "Now playing…"). We preserve the streamed
815
+ // prefix and replace only the callback suffix so the dashboard SSE client
816
+ // gets snapshot fullText updates (same UX as editing one chat bubble).
817
+ let preCallbackText = null;
818
+ const messageSource = typeof message.content.source === "string" &&
819
+ message.content.source.trim().length > 0
820
+ ? message.content.source
821
+ : "api";
822
+ const emitChunk = (chunk) => {
823
+ if (!chunk)
824
+ return;
825
+ responseText += chunk;
826
+ opts?.onChunk?.(chunk);
827
+ };
828
+ const emitSnapshot = (text) => {
829
+ if (!text)
830
+ return;
831
+ responseText = text;
832
+ opts?.onSnapshot?.(text);
833
+ };
834
+ const claimStreamSource = (source) => {
835
+ if (activeStreamSource === "unset") {
836
+ activeStreamSource = source;
837
+ return true;
838
+ }
839
+ return activeStreamSource === source;
840
+ };
841
+ const appendIncomingText = (incoming) => {
842
+ const update = resolveStreamingUpdate(responseText, incoming);
843
+ if (update.kind === "noop")
844
+ return;
845
+ if (update.kind === "append") {
846
+ emitChunk(update.emittedText);
847
+ return;
848
+ }
849
+ emitSnapshot(update.nextText);
850
+ };
851
+ const captureCallbackBaseline = () => {
852
+ if (preCallbackText === null) {
853
+ preCallbackText = responseText;
854
+ }
855
+ };
856
+ const recordActionCallbackText = (incoming) => {
857
+ const normalized = normalizeActionCallbackText(incoming);
858
+ if (!normalized)
859
+ return;
860
+ if (actionCallbackHistory.at(-1) === normalized)
861
+ return;
862
+ actionCallbackHistory.push(normalized);
863
+ };
864
+ /** Latest action callback wins: replaces prior callback text, keeps LLM prefix. */
865
+ const replaceCallbackText = (incoming) => {
866
+ recordActionCallbackText(incoming);
867
+ captureCallbackBaseline();
868
+ const baseline = preCallbackText ?? "";
869
+ const separator = baseline.length > 0 ? "\n\n" : "";
870
+ const nextText = `${baseline}${separator}${incoming}`;
871
+ emitSnapshot(nextText);
872
+ };
873
+ const applyCallbackTextUpdate = (content, incoming) => {
874
+ captureCallbackBaseline();
875
+ if (resolveCallbackMergeMode(content) === "append") {
876
+ recordActionCallbackText(incoming);
877
+ appendIncomingText(incoming);
878
+ return;
879
+ }
880
+ replaceCallbackText(incoming);
881
+ };
882
+ // Emit inbound events so trajectory/session hooks run for API chat.
883
+ try {
884
+ if (typeof runtime.emitEvent === "function") {
885
+ await runtime.emitEvent("MESSAGE_RECEIVED", {
886
+ message,
887
+ source: messageSource,
888
+ });
889
+ }
890
+ }
891
+ catch (err) {
892
+ runtime.logger?.warn({
893
+ err,
894
+ src: "eliza-api",
895
+ messageId: message.id,
896
+ roomId: message.roomId,
897
+ }, "Failed to emit MESSAGE_RECEIVED event");
898
+ }
899
+ const trajectoryStepId = readMessageTrajectoryStepId(message);
900
+ const trajectoryContext = typeof trajectoryStepId === "string" && trajectoryStepId.trim().length > 0
901
+ ? { trajectoryStepId: trajectoryStepId.trim() }
902
+ : undefined;
903
+ let result;
904
+ let capturedUsage = null;
905
+ let actionCallbacksSeen = 0;
906
+ const seenActionTags = new Set();
907
+ const recordActionCallback = (actionTag, hasText) => {
908
+ actionCallbacksSeen += 1;
909
+ const normalizedActionTag = normalizeActionName(actionTag);
910
+ if (normalizedActionTag) {
911
+ seenActionTags.add(normalizedActionTag);
912
+ }
913
+ runtime.logger?.info({
914
+ src: "eliza-api",
915
+ action: normalizedActionTag || actionTag,
916
+ hasText,
917
+ }, `[eliza-api] Action callback fired: ${normalizedActionTag || actionTag}`);
918
+ };
919
+ const extractCallbackActionTag = (content) => {
920
+ const record = content;
921
+ if (typeof record.action === "string" && record.action.length > 0) {
922
+ return record.action;
923
+ }
924
+ if (Array.isArray(record.actions)) {
925
+ const firstAction = record.actions.find((action) => typeof action === "string" && action.trim().length > 0);
926
+ if (firstAction)
927
+ return firstAction;
928
+ }
929
+ return "VISIBLE_CALLBACK";
930
+ };
931
+ const generationCapture = await withModelUsageCapture(runtime, () => withTimeout(Promise.resolve(runWithTrajectoryContext(trajectoryContext, async () => {
932
+ // Binance skill direct dispatch
933
+ const directSkillText = await maybeHandleDirectBinanceSkillRequest(runtime, message, replaceCallbackText, emitSnapshot);
934
+ if (directSkillText) {
935
+ const finalText = isClientVisibleNoResponse(directSkillText)
936
+ ? directSkillText || "(no response)"
937
+ : directSkillText;
938
+ result = {
939
+ didRespond: true,
940
+ responseContent: { text: finalText },
941
+ responseMessages: [],
942
+ };
943
+ responseText = finalText;
944
+ forcedWalletExecutionText =
945
+ isClientVisibleNoResponse(directSkillText);
946
+ return;
947
+ }
948
+ // Direct dispatch for explicit task creation intent from UI
949
+ const contentMetadata = message.content.metadata;
950
+ if (contentMetadata?.intent === "create_task") {
951
+ const coordinator = runtime.getService("SWARM_COORDINATOR");
952
+ if (coordinator) {
953
+ const createTaskAction = runtime.actions.find((a) => a?.name?.toUpperCase() === "START_CODING_TASK") ??
954
+ runtime.actions.find((a) => a?.name?.toUpperCase() === "CREATE_TASK");
955
+ if (createTaskAction) {
956
+ runtime.logger?.info({
957
+ src: "eliza-api",
958
+ agentType: contentMetadata.agentType,
959
+ intent: "create_task",
960
+ }, "[eliza-api] Direct dispatch START_CODING_TASK from UI intent");
961
+ let actionResponseText = "";
962
+ await createTaskAction.handler(runtime, message, undefined, {}, async (content) => {
963
+ if (generationTimedOut || opts?.isAborted?.()) {
964
+ throw createChatGenerationTimeoutError(generationTimeoutMs);
965
+ }
966
+ const chunk = extractCompatTextContent(content);
967
+ if (chunk) {
968
+ applyCallbackTextUpdate(content, chunk);
969
+ actionResponseText = responseText;
970
+ }
971
+ return [];
972
+ });
973
+ const finalText = actionResponseText || responseText || "Task created.";
974
+ result = {
975
+ didRespond: true,
976
+ responseContent: { text: finalText },
977
+ responseMessages: [],
978
+ };
979
+ responseText = finalText;
980
+ return;
981
+ }
982
+ }
983
+ // Fall through to normal LLM-based routing if coordinator not available
984
+ }
985
+ const localInferenceIntent = detectLocalInferenceCommandIntent(originalUserText, {
986
+ localInferenceContext: hasLocalInferenceMetadata(message),
987
+ });
988
+ if (localInferenceIntent) {
989
+ const localResult = await handleLocalInferenceChatCommand(localInferenceIntent, originalUserText);
990
+ emitSnapshot(localResult.text);
991
+ result = {
992
+ didRespond: true,
993
+ responseContent: {
994
+ text: localResult.text,
995
+ source: "client_chat",
996
+ actions: ["REPLY"],
997
+ localInference: localResult.localInference,
998
+ failureKind: localResult.localInference.status === "failed" ||
999
+ localResult.localInference.status === "no_space"
1000
+ ? "local_inference"
1001
+ : undefined,
1002
+ },
1003
+ responseMessages: [],
1004
+ };
1005
+ responseText = localResult.text;
1006
+ return;
1007
+ }
1008
+ if (isMobileLocalSimpleChat(message)) {
1009
+ const simpleResult = await generateMobileLocalSimpleReply(runtime, message, agentName, opts);
1010
+ if (simpleResult) {
1011
+ result = {
1012
+ didRespond: true,
1013
+ responseContent: simpleResult.responseContent,
1014
+ responseMessages: simpleResult.responseMessages ?? [],
1015
+ };
1016
+ responseText = simpleResult.text;
1017
+ return;
1018
+ }
1019
+ }
1020
+ const languageAugmentedMessage = maybeAugmentChatMessageWithLanguage(message, opts?.preferredLanguage);
1021
+ const walletAugmentedMessage = maybeAugmentChatMessageWithWalletContext(runtime, languageAugmentedMessage);
1022
+ const generationMessage = await maybeAugmentChatMessageWithDocuments(runtime, walletAugmentedMessage);
1023
+ result = await runtime.messageService?.handleMessage(runtime, generationMessage, async (content) => {
1024
+ if (generationTimedOut || opts?.isAborted?.()) {
1025
+ throw createChatGenerationTimeoutError(generationTimeoutMs);
1026
+ }
1027
+ const chunk = extractCompatTextContent(content);
1028
+ recordActionCallback(extractCallbackActionTag(content), Boolean(chunk));
1029
+ if (!chunk)
1030
+ return [];
1031
+ if (!claimStreamSource("callback"))
1032
+ return [];
1033
+ applyCallbackTextUpdate(content, chunk);
1034
+ return [];
1035
+ }, {
1036
+ timeoutDuration: generationTimeoutMs,
1037
+ keepExistingResponses: true,
1038
+ onStreamChunk: opts?.onChunk
1039
+ ? async (chunk) => {
1040
+ if (generationTimedOut || opts?.isAborted?.()) {
1041
+ throw createChatGenerationTimeoutError(generationTimeoutMs);
1042
+ }
1043
+ if (!chunk)
1044
+ return;
1045
+ if (!claimStreamSource("onStreamChunk"))
1046
+ return;
1047
+ appendIncomingText(chunk);
1048
+ }
1049
+ : undefined,
1050
+ });
1051
+ // Ensure MESSAGE_SENT hooks run for API chat flows.
1052
+ try {
1053
+ const responseMessages = Array.isArray(result?.responseMessages)
1054
+ ? result.responseMessages
1055
+ : [];
1056
+ const fallbackResponseContent = result?.responseContent &&
1057
+ typeof result.responseContent === "object"
1058
+ ? result.responseContent
1059
+ : responseText
1060
+ ? { text: responseText }
1061
+ : null;
1062
+ const messagesToEmit = responseMessages.length > 0
1063
+ ? responseMessages
1064
+ : fallbackResponseContent
1065
+ ? [
1066
+ {
1067
+ id: crypto.randomUUID(),
1068
+ content: fallbackResponseContent,
1069
+ },
1070
+ ]
1071
+ : [];
1072
+ if (messagesToEmit.length > 0 &&
1073
+ typeof runtime.emitEvent === "function") {
1074
+ for (const responseMessage of messagesToEmit) {
1075
+ const memoryLike = createMessageMemory({
1076
+ id: responseMessage.id ??
1077
+ crypto.randomUUID(),
1078
+ roomId: message.roomId,
1079
+ entityId: runtime.agentId,
1080
+ content: ensureMessageMemoryContent(responseMessage.content ?? { text: "" }),
1081
+ });
1082
+ memoryLike.metadata = message.metadata;
1083
+ await runtime.emitEvent("MESSAGE_SENT", {
1084
+ message: memoryLike,
1085
+ source: messageSource,
1086
+ });
1087
+ }
1088
+ }
1089
+ }
1090
+ catch (err) {
1091
+ runtime.logger?.warn({
1092
+ err,
1093
+ src: "eliza-api",
1094
+ messageId: message.id,
1095
+ roomId: message.roomId,
1096
+ }, "Failed to emit MESSAGE_SENT event");
1097
+ }
1098
+ // Post-process fallback actions
1099
+ if (result) {
1100
+ const rc = result.responseContent;
1101
+ const resultRecord = asRecord(result);
1102
+ runtime.logger?.info({
1103
+ src: "eliza-api",
1104
+ mode: resultRecord?.mode,
1105
+ actions: rc?.actions,
1106
+ simple: rc?.simple,
1107
+ hasText: Boolean(rc?.text),
1108
+ }, "[eliza-api] Chat response metadata");
1109
+ const rawActionsPayload = rc?.actions ?? resultRecord?.actions;
1110
+ const modelText = String(extractCompatTextContent(result.responseContent) ?? "");
1111
+ const parsedFallbackActions = parseFallbackActionBlocks(rawActionsPayload, modelText);
1112
+ const actionNameLookup = buildRuntimeActionNameLookup(runtime);
1113
+ const executedRuntimeActions = listExecutedRuntimeActions(runtime, typeof message.id === "string" ? message.id : undefined);
1114
+ // Only run fallback execution when the core did NOT dispatch actions itself.
1115
+ const coreHandledActions = resultRecord?.mode === "actions";
1116
+ const executableFallbackActions = parsedFallbackActions.filter((action) => {
1117
+ if (!isExecutableFallbackAction(action)) {
1118
+ return false;
1119
+ }
1120
+ const canonicalName = actionNameLookup.get(normalizeActionName(action.name)) ??
1121
+ normalizeActionName(action.name);
1122
+ return !executedRuntimeActions.has(canonicalName);
1123
+ });
1124
+ if (actionCallbacksSeen === 0 &&
1125
+ !coreHandledActions &&
1126
+ executableFallbackActions.length > 0) {
1127
+ const selfControlFallbackActions = executableFallbackActions.filter((action) => {
1128
+ const canonicalName = actionNameLookup.get(normalizeActionName(action.name)) ??
1129
+ normalizeActionName(action.name);
1130
+ return canonicalName === "WEBSITE_BLOCK";
1131
+ });
1132
+ const callbacksBeforeFallback = actionCallbacksSeen;
1133
+ if (selfControlFallbackActions.length > 0) {
1134
+ await executeFallbackParsedActions(runtime, message, selfControlFallbackActions, appendIncomingText, recordActionCallback, {
1135
+ getCurrentText: () => responseText || modelText,
1136
+ });
1137
+ }
1138
+ const selfControlFallbackExecuted = actionCallbacksSeen > callbacksBeforeFallback;
1139
+ const remainingExecutableFallbackActions = executableFallbackActions.filter((action) => {
1140
+ const canonicalName = actionNameLookup.get(normalizeActionName(action.name)) ??
1141
+ normalizeActionName(action.name);
1142
+ if (canonicalName === "WEBSITE_BLOCK") {
1143
+ return !selfControlFallbackExecuted;
1144
+ }
1145
+ return true;
1146
+ });
1147
+ if (remainingExecutableFallbackActions.length > 0) {
1148
+ runtime.logger?.error({
1149
+ src: "eliza-api",
1150
+ parsedActions: remainingExecutableFallbackActions.map((a) => a.name),
1151
+ }, "[eliza-api] Unexecuted action payload detected; failing closed");
1152
+ const failureText = buildUnexecutedActionPayloadReply(remainingExecutableFallbackActions.map((action) => action.name));
1153
+ if (opts?.onSnapshot) {
1154
+ emitSnapshot(failureText);
1155
+ }
1156
+ else {
1157
+ responseText = failureText;
1158
+ }
1159
+ }
1160
+ if (remainingExecutableFallbackActions.some((action) => normalizeActionName(action.name) === "CHECK_BALANCE")) {
1161
+ forcedWalletExecutionText = true;
1162
+ }
1163
+ }
1164
+ }
1165
+ })), generationTimeoutMs, () => createChatGenerationTimeoutError(generationTimeoutMs), () => {
1166
+ generationTimedOut = true;
1167
+ }));
1168
+ capturedUsage = generationCapture.usage;
1169
+ const responseMessageText = getLatestVisibleResponseMessageText(result?.responseMessages);
1170
+ const resultText = responseMessageText ||
1171
+ extractCompatTextContent(result?.responseContent) ||
1172
+ "";
1173
+ // Fallback: if callbacks weren't used for text, stream + return final text.
1174
+ if (!responseText && resultText) {
1175
+ if (opts?.onSnapshot) {
1176
+ emitSnapshot(resultText);
1177
+ }
1178
+ else {
1179
+ emitChunk(resultText);
1180
+ }
1181
+ }
1182
+ else if (actionCallbacksSeen === 0 &&
1183
+ resultText &&
1184
+ resultText !== responseText &&
1185
+ resultText.startsWith(responseText)) {
1186
+ emitChunk(resultText.slice(responseText.length));
1187
+ }
1188
+ else if (actionCallbacksSeen === 0 &&
1189
+ resultText &&
1190
+ resultText !== responseText &&
1191
+ !forcedWalletExecutionText) {
1192
+ if (opts?.onSnapshot) {
1193
+ emitSnapshot(resultText);
1194
+ }
1195
+ else {
1196
+ responseText = resultText;
1197
+ }
1198
+ }
1199
+ if (actionCallbacksSeen === 0 &&
1200
+ isWalletActionRequiredIntent(originalUserText)) {
1201
+ const failureText = buildWalletActionNotExecutedReply(runtime, originalUserText.trim());
1202
+ if (opts?.onSnapshot) {
1203
+ emitSnapshot(failureText);
1204
+ }
1205
+ else {
1206
+ responseText = failureText;
1207
+ }
1208
+ }
1209
+ const noResponseFallback = opts?.resolveNoResponseText?.();
1210
+ const exactDocumentValue = await resolveExactDocumentValueForChat(runtime, message);
1211
+ const normalizedResponseText = trimWalletProgressPrefix(exactDocumentValue || responseText || resultText || "");
1212
+ const intentionalNoResponse = isIntentionalNoResponseResult(result, normalizedResponseText);
1213
+ const finalText = intentionalNoResponse
1214
+ ? ""
1215
+ : isClientVisibleNoResponse(normalizedResponseText)
1216
+ ? (noResponseFallback ??
1217
+ (normalizedResponseText || responseText || "(no response)"))
1218
+ : normalizedResponseText;
1219
+ const responseMessages = Array.isArray(result?.responseMessages)
1220
+ ? result.responseMessages.map((entry) => ({
1221
+ ...(entry?.id ? { id: entry.id } : {}),
1222
+ ...(entry?.content ? { content: entry.content } : {}),
1223
+ }))
1224
+ : [];
1225
+ const responseContent = result?.responseContent && typeof result.responseContent === "object"
1226
+ ? {
1227
+ ...result.responseContent,
1228
+ text: finalText,
1229
+ }
1230
+ : finalText
1231
+ ? { text: finalText }
1232
+ : null;
1233
+ const responseRecord = responseContent;
1234
+ const localInference = responseRecord?.localInference &&
1235
+ typeof responseRecord.localInference === "object"
1236
+ ? responseRecord.localInference
1237
+ : undefined;
1238
+ const failureKind = responseRecord?.failureKind === "local_inference"
1239
+ ? "local_inference"
1240
+ : undefined;
1241
+ return {
1242
+ text: finalText,
1243
+ agentName,
1244
+ ...(intentionalNoResponse
1245
+ ? { noResponseReason: "ignored" }
1246
+ : {}),
1247
+ ...(failureKind ? { failureKind } : {}),
1248
+ ...(localInference ? { localInference } : {}),
1249
+ ...(actionCallbacksSeen > 0 ? { usedActionCallbacks: true } : {}),
1250
+ ...(actionCallbackHistory.length > 0
1251
+ ? { actionCallbackHistory: [...actionCallbackHistory] }
1252
+ : {}),
1253
+ ...(responseContent ? { responseContent } : {}),
1254
+ ...(responseMessages.length > 0 ? { responseMessages } : {}),
1255
+ usage: buildChatUsage(runtime, message, finalText, capturedUsage),
1256
+ };
1257
+ }
1258
+ finally {
1259
+ try {
1260
+ await persistMessageTrajectoryGrouping(runtime, message);
1261
+ }
1262
+ catch (err) {
1263
+ runtime.logger?.warn({
1264
+ err,
1265
+ src: "eliza-api",
1266
+ messageId: message.id,
1267
+ roomId: message.roomId,
1268
+ }, "Failed to persist trajectory grouping metadata");
1269
+ }
1270
+ }
1271
+ }
1272
+ // ---------------------------------------------------------------------------
1273
+ // generateConversationTitle
1274
+ // ---------------------------------------------------------------------------
1275
+ export async function generateConversationTitle(runtime, userMessage, agentName) {
1276
+ const modelClass = ModelType.TEXT_SMALL;
1277
+ const prompt = `Based on the user's first message in a new chat, generate a very short, concise title (max 4-5 words) for the conversation.
1278
+ The agent's name is "${agentName}". The title should reflect the topic or intent of the user.
1279
+ Ideally, the title should fit the persona/vibe of the agent if possible, but clarity is more important.
1280
+ Do not use quotes. Do not include "Title:" prefix.
1281
+
1282
+ User message: "${userMessage}"
1283
+
1284
+ Title:`;
1285
+ try {
1286
+ const title = await runtime.useModel(modelClass, {
1287
+ prompt,
1288
+ maxTokens: 20,
1289
+ temperature: 0.7,
1290
+ });
1291
+ if (!title)
1292
+ return null;
1293
+ let cleanTitle = title.trim();
1294
+ if ((cleanTitle.startsWith('"') && cleanTitle.endsWith('"')) ||
1295
+ (cleanTitle.startsWith("'") && cleanTitle.endsWith("'"))) {
1296
+ cleanTitle = cleanTitle.slice(1, -1);
1297
+ }
1298
+ if (!cleanTitle || cleanTitle.length > 50)
1299
+ return null;
1300
+ return cleanTitle;
1301
+ }
1302
+ catch (err) {
1303
+ logger.warn(`[eliza] Failed to generate conversation title: ${err instanceof Error ? err.message : String(err)}`);
1304
+ return null;
1305
+ }
1306
+ }
1307
+ export function resolveChatAdminEntityId(state) {
1308
+ return resolveClientChatAdminEntityId(state);
1309
+ }
1310
+ async function ensureCompatChatConnection(state, runtime, agentName, channelIdPrefix, roomKey) {
1311
+ const userId = ensureAdminEntityIdForChat(state);
1312
+ const roomId = stringToUuid(`${agentName}-${channelIdPrefix}-room-${roomKey}`);
1313
+ const worldId = stringToUuid(`${agentName}-web-chat-world`);
1314
+ const messageServerId = stringToUuid(`${agentName}-web-server`);
1315
+ await runtime.ensureConnection({
1316
+ entityId: userId,
1317
+ roomId,
1318
+ worldId,
1319
+ userName: resolveAppUserName(state.config),
1320
+ source: "client_chat",
1321
+ channelId: `${channelIdPrefix}-${roomKey}`,
1322
+ type: ChannelType.DM,
1323
+ messageServerId,
1324
+ metadata: { ownership: { ownerId: userId } },
1325
+ });
1326
+ // Ensure world ownership
1327
+ const world = await runtime.getWorld(worldId);
1328
+ if (world) {
1329
+ let needsUpdate = false;
1330
+ if (!world.metadata) {
1331
+ world.metadata = {};
1332
+ needsUpdate = true;
1333
+ }
1334
+ if (!world.metadata.ownership ||
1335
+ typeof world.metadata.ownership !== "object" ||
1336
+ world.metadata.ownership.ownerId !== userId) {
1337
+ world.metadata.ownership = { ownerId: userId };
1338
+ needsUpdate = true;
1339
+ }
1340
+ const metadataWithRoles = world.metadata;
1341
+ const roles = metadataWithRoles.roles ?? {};
1342
+ if (roles[userId] !== "OWNER") {
1343
+ roles[userId] = "OWNER";
1344
+ metadataWithRoles.roles = roles;
1345
+ needsUpdate = true;
1346
+ }
1347
+ if (needsUpdate) {
1348
+ await runtime.updateWorld(world);
1349
+ }
1350
+ }
1351
+ return { userId, roomId, worldId };
1352
+ }
1353
+ function ensureAdminEntityIdForChat(state) {
1354
+ return resolveChatAdminEntityId(state);
1355
+ }
1356
+ function syncRuntimeCharacterToChatStateConfig(state) {
1357
+ if (!state.runtime || !state.config) {
1358
+ return;
1359
+ }
1360
+ syncCharacterIntoConfig(state.config, state.runtime.character);
1361
+ }
1362
+ // ---------------------------------------------------------------------------
1363
+ // Main route handler
1364
+ // ---------------------------------------------------------------------------
1365
+ export async function handleChatRoutes(ctx) {
1366
+ const { req, res, method, pathname, readJsonBody, json, state } = ctx;
1367
+ // ── GET /v1/models (OpenAI compatible) ─────────────────────────────────
1368
+ if (method === "GET" && pathname === "/v1/models") {
1369
+ const created = Math.floor(Date.now() / 1000);
1370
+ const ids = new Set();
1371
+ ids.add("eliza");
1372
+ if (state.agentName?.trim())
1373
+ ids.add(state.agentName.trim());
1374
+ if (state.runtime?.character.name?.trim())
1375
+ ids.add(state.runtime.character.name.trim());
1376
+ json(res, {
1377
+ object: "list",
1378
+ data: Array.from(ids).map((id) => ({
1379
+ id,
1380
+ object: "model",
1381
+ created,
1382
+ owned_by: "eliza",
1383
+ })),
1384
+ });
1385
+ return true;
1386
+ }
1387
+ // ── GET /v1/models/:id (OpenAI compatible) ─────────────────────────────
1388
+ if (method === "GET" && /^\/v1\/models\/[^/]+$/.test(pathname)) {
1389
+ const created = Math.floor(Date.now() / 1000);
1390
+ const raw = pathname.split("/")[3] ?? "";
1391
+ const decoded = decodePathComponent(raw, res, "model id");
1392
+ if (!decoded)
1393
+ return true;
1394
+ const id = decoded.trim();
1395
+ if (!id) {
1396
+ json(res, {
1397
+ error: {
1398
+ message: "Model id is required",
1399
+ type: "invalid_request_error",
1400
+ },
1401
+ }, 400);
1402
+ return true;
1403
+ }
1404
+ json(res, { id, object: "model", created, owned_by: "eliza" });
1405
+ return true;
1406
+ }
1407
+ // ── POST /v1/chat/completions (OpenAI compatible) ──────────────────────
1408
+ if (method === "POST" && pathname === "/v1/chat/completions") {
1409
+ const body = await readJsonBody(req, res);
1410
+ if (!body)
1411
+ return true;
1412
+ if (hasBlockedObjectKeyDeep(body)) {
1413
+ json(res, {
1414
+ error: {
1415
+ message: "Request body contains a blocked object key",
1416
+ type: "invalid_request_error",
1417
+ },
1418
+ }, 400);
1419
+ return true;
1420
+ }
1421
+ const safeBody = cloneWithoutBlockedObjectKeys(body);
1422
+ const extracted = extractOpenAiSystemAndLastUser(safeBody.messages);
1423
+ if (!extracted) {
1424
+ json(res, {
1425
+ error: {
1426
+ message: "messages must be an array containing at least one user message",
1427
+ type: "invalid_request_error",
1428
+ },
1429
+ }, 400);
1430
+ return true;
1431
+ }
1432
+ const roomKey = resolveCompatRoomKey(safeBody).slice(0, 120);
1433
+ const wantsStream = safeBody.stream === true ||
1434
+ (req.headers.accept ?? "").includes("text/event-stream");
1435
+ const requestedModel = typeof safeBody.model === "string" && safeBody.model.trim()
1436
+ ? safeBody.model.trim()
1437
+ : null;
1438
+ const prompt = extracted.system
1439
+ ? `${extracted.system}\n\n${extracted.user}`.trim()
1440
+ : extracted.user;
1441
+ const created = Math.floor(Date.now() / 1000);
1442
+ const id = `chatcmpl-${crypto.randomUUID()}`;
1443
+ const model = requestedModel ?? state.agentName ?? "eliza";
1444
+ if (wantsStream) {
1445
+ initSse(res);
1446
+ let aborted = false;
1447
+ req.on("close", () => {
1448
+ aborted = true;
1449
+ });
1450
+ const sendChunk = (delta, finishReason) => {
1451
+ writeSseData(res, JSON.stringify({
1452
+ id,
1453
+ object: "chat.completion.chunk",
1454
+ created,
1455
+ model,
1456
+ choices: [
1457
+ {
1458
+ index: 0,
1459
+ delta,
1460
+ finish_reason: finishReason,
1461
+ },
1462
+ ],
1463
+ }));
1464
+ };
1465
+ try {
1466
+ if (!state.runtime) {
1467
+ writeSseData(res, JSON.stringify({
1468
+ error: {
1469
+ message: "Agent is not running",
1470
+ type: "service_unavailable",
1471
+ },
1472
+ }));
1473
+ writeSseData(res, "[DONE]");
1474
+ return true;
1475
+ }
1476
+ sendChunk({ role: "assistant" }, null);
1477
+ let fullText = "";
1478
+ {
1479
+ const runtime = state.runtime;
1480
+ if (!runtime)
1481
+ throw new Error("Agent is not running");
1482
+ const agentName = runtime.character.name ?? "Eliza";
1483
+ const { userId, roomId } = await ensureCompatChatConnection(state, runtime, agentName, "openai-compat", roomKey);
1484
+ const message = createMessageMemory({
1485
+ id: crypto.randomUUID(),
1486
+ entityId: userId,
1487
+ agentId: runtime.agentId,
1488
+ roomId,
1489
+ content: {
1490
+ text: prompt,
1491
+ source: "compat_openai",
1492
+ channelType: ChannelType.API,
1493
+ },
1494
+ });
1495
+ const result = await generateChatResponse(runtime, message, state.agentName, {
1496
+ isAborted: () => aborted,
1497
+ onChunk: (chunk) => {
1498
+ fullText += chunk;
1499
+ if (chunk)
1500
+ sendChunk({ content: chunk }, null);
1501
+ },
1502
+ resolveNoResponseText: () => resolveNoResponseFallback(state.logBuffer, runtime),
1503
+ });
1504
+ if (result.localInference && !fullText) {
1505
+ fullText = result.text;
1506
+ sendChunk({ content: result.text }, null);
1507
+ }
1508
+ syncRuntimeCharacterToChatStateConfig(state);
1509
+ }
1510
+ const resolved = normalizeChatResponseText(fullText, state.logBuffer, state.runtime);
1511
+ if ((fullText.trim().length === 0 || isNoResponsePlaceholder(fullText)) &&
1512
+ resolved.trim()) {
1513
+ sendChunk({ content: resolved }, null);
1514
+ }
1515
+ sendChunk({}, "stop");
1516
+ writeSseData(res, "[DONE]");
1517
+ }
1518
+ catch (err) {
1519
+ if (!aborted) {
1520
+ if (isLocalInferenceError(err)) {
1521
+ const localFailure = await getLocalInferenceChatStatus("status", err);
1522
+ writeSseData(res, JSON.stringify({
1523
+ error: {
1524
+ message: localFailure.text,
1525
+ type: "local_inference",
1526
+ localInference: localFailure.localInference,
1527
+ },
1528
+ }));
1529
+ }
1530
+ else if (isNoProviderError(err)) {
1531
+ writeSseData(res, JSON.stringify({
1532
+ error: {
1533
+ message: NO_PROVIDER_CHAT_MESSAGE,
1534
+ type: "no_provider",
1535
+ code: "NO_PROVIDER_REGISTERED",
1536
+ },
1537
+ }));
1538
+ }
1539
+ else {
1540
+ writeSseData(res, JSON.stringify({
1541
+ error: {
1542
+ message: getErrorMessage(err),
1543
+ type: "server_error",
1544
+ },
1545
+ }));
1546
+ }
1547
+ writeSseData(res, "[DONE]");
1548
+ }
1549
+ }
1550
+ finally {
1551
+ res.end();
1552
+ }
1553
+ return true;
1554
+ }
1555
+ // Non-streaming
1556
+ try {
1557
+ let responseText;
1558
+ let localInference;
1559
+ let failureKind;
1560
+ {
1561
+ if (!state.runtime) {
1562
+ json(res, {
1563
+ error: {
1564
+ message: "Agent is not running",
1565
+ type: "service_unavailable",
1566
+ },
1567
+ }, 503);
1568
+ return true;
1569
+ }
1570
+ const runtime = state.runtime;
1571
+ const agentName = runtime.character.name ?? "Eliza";
1572
+ const { userId, roomId } = await ensureCompatChatConnection(state, runtime, agentName, "openai-compat", roomKey);
1573
+ const message = createMessageMemory({
1574
+ id: crypto.randomUUID(),
1575
+ entityId: userId,
1576
+ roomId,
1577
+ content: {
1578
+ text: prompt,
1579
+ source: "compat_openai",
1580
+ channelType: ChannelType.API,
1581
+ },
1582
+ });
1583
+ const result = await generateChatResponse(runtime, message, state.agentName, {
1584
+ resolveNoResponseText: () => resolveNoResponseFallback(state.logBuffer, runtime),
1585
+ });
1586
+ syncRuntimeCharacterToChatStateConfig(state);
1587
+ responseText = result.text;
1588
+ localInference = result.localInference;
1589
+ failureKind = result.failureKind;
1590
+ }
1591
+ const resolvedText = normalizeChatResponseText(responseText, state.logBuffer, state.runtime);
1592
+ json(res, {
1593
+ id,
1594
+ object: "chat.completion",
1595
+ created,
1596
+ model,
1597
+ choices: [
1598
+ {
1599
+ index: 0,
1600
+ message: { role: "assistant", content: resolvedText },
1601
+ finish_reason: "stop",
1602
+ },
1603
+ ],
1604
+ ...(failureKind ? { failureKind } : {}),
1605
+ ...(localInference ? { localInference } : {}),
1606
+ });
1607
+ }
1608
+ catch (err) {
1609
+ if (isLocalInferenceError(err)) {
1610
+ const localFailure = await getLocalInferenceChatStatus("status", err);
1611
+ json(res, {
1612
+ error: {
1613
+ message: localFailure.text,
1614
+ type: "local_inference",
1615
+ localInference: localFailure.localInference,
1616
+ },
1617
+ }, 503);
1618
+ }
1619
+ else if (isNoProviderError(err)) {
1620
+ json(res, {
1621
+ error: {
1622
+ message: NO_PROVIDER_CHAT_MESSAGE,
1623
+ type: "no_provider",
1624
+ code: "NO_PROVIDER_REGISTERED",
1625
+ },
1626
+ }, 503);
1627
+ }
1628
+ else {
1629
+ json(res, { error: { message: getErrorMessage(err), type: "server_error" } }, 500);
1630
+ }
1631
+ }
1632
+ return true;
1633
+ }
1634
+ // ── POST /v1/messages (Anthropic compatible) ───────────────────────────
1635
+ if (method === "POST" && pathname === "/v1/messages") {
1636
+ const body = await readJsonBody(req, res);
1637
+ if (!body)
1638
+ return true;
1639
+ if (hasBlockedObjectKeyDeep(body)) {
1640
+ json(res, {
1641
+ error: {
1642
+ type: "invalid_request_error",
1643
+ message: "Request body contains a blocked object key",
1644
+ },
1645
+ }, 400);
1646
+ return true;
1647
+ }
1648
+ const safeBody = cloneWithoutBlockedObjectKeys(body);
1649
+ const extracted = extractAnthropicSystemAndLastUser({
1650
+ system: safeBody.system,
1651
+ messages: safeBody.messages,
1652
+ });
1653
+ if (!extracted) {
1654
+ json(res, {
1655
+ error: {
1656
+ type: "invalid_request_error",
1657
+ message: "messages must be an array containing at least one user message",
1658
+ },
1659
+ }, 400);
1660
+ return true;
1661
+ }
1662
+ const roomKey = resolveCompatRoomKey(safeBody).slice(0, 120);
1663
+ const wantsStream = safeBody.stream === true ||
1664
+ (req.headers.accept ?? "").includes("text/event-stream");
1665
+ const requestedModel = typeof safeBody.model === "string" && safeBody.model.trim()
1666
+ ? safeBody.model.trim()
1667
+ : null;
1668
+ const prompt = extracted.system
1669
+ ? `${extracted.system}\n\n${extracted.user}`.trim()
1670
+ : extracted.user;
1671
+ const id = `msg_${crypto.randomUUID().replace(/-/g, "")}`;
1672
+ const model = requestedModel ?? state.agentName ?? "eliza";
1673
+ if (wantsStream) {
1674
+ initSse(res);
1675
+ let aborted = false;
1676
+ req.on("close", () => {
1677
+ aborted = true;
1678
+ });
1679
+ try {
1680
+ if (!state.runtime) {
1681
+ writeSseJson(res, {
1682
+ type: "error",
1683
+ error: {
1684
+ type: "service_unavailable",
1685
+ message: "Agent is not running",
1686
+ },
1687
+ }, "error");
1688
+ return true;
1689
+ }
1690
+ writeSseJson(res, {
1691
+ type: "message_start",
1692
+ message: {
1693
+ id,
1694
+ type: "message",
1695
+ role: "assistant",
1696
+ model,
1697
+ content: [],
1698
+ stop_reason: null,
1699
+ stop_sequence: null,
1700
+ usage: { input_tokens: 0, output_tokens: 0 },
1701
+ },
1702
+ }, "message_start");
1703
+ writeSseJson(res, {
1704
+ type: "content_block_start",
1705
+ index: 0,
1706
+ content_block: { type: "text", text: "" },
1707
+ }, "content_block_start");
1708
+ let fullText = "";
1709
+ const onDelta = (chunk) => {
1710
+ if (!chunk)
1711
+ return;
1712
+ fullText += chunk;
1713
+ writeSseJson(res, {
1714
+ type: "content_block_delta",
1715
+ index: 0,
1716
+ delta: { type: "text_delta", text: chunk },
1717
+ }, "content_block_delta");
1718
+ };
1719
+ {
1720
+ const runtime = state.runtime;
1721
+ if (!runtime)
1722
+ throw new Error("Agent is not running");
1723
+ const agentName = runtime.character.name ?? "Eliza";
1724
+ const { userId, roomId } = await ensureCompatChatConnection(state, runtime, agentName, "anthropic-compat", roomKey);
1725
+ const message = createMessageMemory({
1726
+ id: crypto.randomUUID(),
1727
+ entityId: userId,
1728
+ roomId,
1729
+ content: {
1730
+ text: prompt,
1731
+ source: "compat_anthropic",
1732
+ channelType: ChannelType.API,
1733
+ },
1734
+ });
1735
+ await generateChatResponse(runtime, message, state.agentName, {
1736
+ isAborted: () => aborted,
1737
+ onChunk: onDelta,
1738
+ resolveNoResponseText: () => resolveNoResponseFallback(state.logBuffer, runtime),
1739
+ });
1740
+ syncRuntimeCharacterToChatStateConfig(state);
1741
+ }
1742
+ const resolved = normalizeChatResponseText(fullText, state.logBuffer, state.runtime);
1743
+ if ((fullText.trim().length === 0 || isNoResponsePlaceholder(fullText)) &&
1744
+ resolved.trim()) {
1745
+ onDelta(resolved);
1746
+ }
1747
+ writeSseJson(res, { type: "content_block_stop", index: 0 }, "content_block_stop");
1748
+ writeSseJson(res, {
1749
+ type: "message_delta",
1750
+ delta: { stop_reason: "end_turn", stop_sequence: null },
1751
+ usage: { output_tokens: 0 },
1752
+ }, "message_delta");
1753
+ writeSseJson(res, { type: "message_stop" }, "message_stop");
1754
+ }
1755
+ catch (err) {
1756
+ if (!aborted) {
1757
+ if (isNoProviderError(err)) {
1758
+ writeSseJson(res, {
1759
+ type: "error",
1760
+ error: {
1761
+ type: "no_provider",
1762
+ code: "NO_PROVIDER_REGISTERED",
1763
+ message: NO_PROVIDER_CHAT_MESSAGE,
1764
+ },
1765
+ }, "error");
1766
+ }
1767
+ else {
1768
+ writeSseJson(res, {
1769
+ type: "error",
1770
+ error: { type: "server_error", message: getErrorMessage(err) },
1771
+ }, "error");
1772
+ }
1773
+ }
1774
+ }
1775
+ finally {
1776
+ res.end();
1777
+ }
1778
+ return true;
1779
+ }
1780
+ // Non-streaming
1781
+ try {
1782
+ let responseText;
1783
+ {
1784
+ if (!state.runtime) {
1785
+ json(res, {
1786
+ error: {
1787
+ type: "service_unavailable",
1788
+ message: "Agent is not running",
1789
+ },
1790
+ }, 503);
1791
+ return true;
1792
+ }
1793
+ const runtime = state.runtime;
1794
+ const agentName = runtime.character.name ?? "Eliza";
1795
+ const { userId, roomId } = await ensureCompatChatConnection(state, runtime, agentName, "anthropic-compat", roomKey);
1796
+ const message = createMessageMemory({
1797
+ id: crypto.randomUUID(),
1798
+ entityId: userId,
1799
+ roomId,
1800
+ content: {
1801
+ text: prompt,
1802
+ source: "compat_anthropic",
1803
+ channelType: ChannelType.API,
1804
+ },
1805
+ });
1806
+ const result = await generateChatResponse(runtime, message, state.agentName, {
1807
+ resolveNoResponseText: () => resolveNoResponseFallback(state.logBuffer, runtime),
1808
+ });
1809
+ syncRuntimeCharacterToChatStateConfig(state);
1810
+ responseText = result.text;
1811
+ }
1812
+ const resolvedText = normalizeChatResponseText(responseText, state.logBuffer, state.runtime);
1813
+ json(res, {
1814
+ id,
1815
+ type: "message",
1816
+ role: "assistant",
1817
+ model,
1818
+ content: [{ type: "text", text: resolvedText }],
1819
+ stop_reason: "end_turn",
1820
+ stop_sequence: null,
1821
+ usage: { input_tokens: 0, output_tokens: 0 },
1822
+ });
1823
+ }
1824
+ catch (err) {
1825
+ if (isNoProviderError(err)) {
1826
+ json(res, {
1827
+ error: {
1828
+ type: "no_provider",
1829
+ code: "NO_PROVIDER_REGISTERED",
1830
+ message: NO_PROVIDER_CHAT_MESSAGE,
1831
+ },
1832
+ }, 503);
1833
+ }
1834
+ else {
1835
+ json(res, { error: { type: "server_error", message: getErrorMessage(err) } }, 500);
1836
+ }
1837
+ }
1838
+ return true;
1839
+ }
1840
+ return false;
1841
+ }