@elizaos/agent 2.0.0-beta.2 → 2.0.3-beta.3

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 (2201) hide show
  1. package/__tests__/plugin-lifecycle-test-utils.d.ts +47 -0
  2. package/__tests__/plugin-lifecycle-test-utils.d.ts.map +1 -0
  3. package/__tests__/plugin-lifecycle-test-utils.js +81 -0
  4. package/__tests__/view-user-journeys.d.ts +55 -0
  5. package/__tests__/view-user-journeys.d.ts.map +1 -0
  6. package/__tests__/view-user-journeys.js +718 -0
  7. package/actions/compact-conversation.d.ts +3 -0
  8. package/actions/compact-conversation.d.ts.map +1 -0
  9. package/actions/compact-conversation.js +256 -0
  10. package/actions/connector-resolver.d.ts.map +1 -0
  11. package/actions/connector-resolver.js +250 -0
  12. package/actions/contact.d.ts.map +1 -0
  13. package/actions/contact.js +1700 -0
  14. package/actions/context-signal-lexicon.d.ts.map +1 -0
  15. package/actions/context-signal.d.ts +48 -0
  16. package/actions/context-signal.d.ts.map +1 -0
  17. package/actions/context-signal.js +153 -0
  18. package/actions/database.d.ts.map +1 -0
  19. package/actions/database.js +674 -0
  20. package/actions/extract-params.d.ts +87 -0
  21. package/actions/extract-params.d.ts.map +1 -0
  22. package/actions/extract-params.js +204 -0
  23. package/actions/files.d.ts +9 -0
  24. package/actions/files.d.ts.map +1 -0
  25. package/actions/files.js +183 -0
  26. package/actions/grounded-action-reply.d.ts.map +1 -0
  27. package/actions/grounded-action-reply.js +287 -0
  28. package/actions/index.d.ts +18 -0
  29. package/actions/index.d.ts.map +1 -0
  30. package/actions/index.js +17 -0
  31. package/actions/logs.d.ts.map +1 -0
  32. package/actions/memories.d.ts +3 -0
  33. package/actions/memories.d.ts.map +1 -0
  34. package/actions/memories.js +357 -0
  35. package/actions/notify.d.ts +14 -0
  36. package/actions/notify.d.ts.map +1 -0
  37. package/actions/notify.js +163 -0
  38. package/actions/page-action-groups.d.ts +9 -0
  39. package/actions/page-action-groups.d.ts.map +1 -0
  40. package/actions/page-action-groups.js +259 -0
  41. package/actions/plugin.d.ts +3 -0
  42. package/actions/plugin.d.ts.map +1 -0
  43. package/actions/plugin.js +755 -0
  44. package/actions/recent-conversation-texts.d.ts.map +1 -0
  45. package/actions/recent-conversation-texts.js +76 -0
  46. package/actions/runtime.d.ts.map +1 -0
  47. package/actions/runtime.js +517 -0
  48. package/actions/settings-actions.d.ts +19 -0
  49. package/actions/settings-actions.d.ts.map +1 -0
  50. package/actions/settings-actions.js +478 -0
  51. package/actions/terminal.d.ts.map +1 -0
  52. package/actions/terminal.js +327 -0
  53. package/actions/trigger.d.ts.map +1 -0
  54. package/actions/trigger.js +511 -0
  55. package/api/accounts-routes.d.ts +38 -0
  56. package/api/accounts-routes.d.ts.map +1 -0
  57. package/api/accounts-routes.js +932 -0
  58. package/api/agent-admin-routes.d.ts +36 -0
  59. package/api/agent-admin-routes.d.ts.map +1 -0
  60. package/api/agent-admin-routes.js +151 -0
  61. package/api/agent-lifecycle-routes.d.ts.map +1 -0
  62. package/api/agent-lifecycle-routes.js +104 -0
  63. package/api/agent-model.d.ts +5 -0
  64. package/api/agent-model.d.ts.map +1 -0
  65. package/api/agent-model.js +172 -0
  66. package/api/agent-status-routes.d.ts +73 -0
  67. package/api/agent-status-routes.d.ts.map +1 -0
  68. package/api/agent-status-routes.js +278 -0
  69. package/api/agent-transfer-routes.d.ts.map +1 -0
  70. package/api/agent-transfer-routes.js +124 -0
  71. package/api/app-package-routes.d.ts +3 -0
  72. package/api/app-package-routes.d.ts.map +1 -0
  73. package/api/app-package-routes.js +59 -0
  74. package/api/approval-routes.d.ts +38 -0
  75. package/api/approval-routes.d.ts.map +1 -0
  76. package/api/approval-routes.js +223 -0
  77. package/api/auth-routes.d.ts.map +1 -0
  78. package/api/auth-routes.js +126 -0
  79. package/api/avatar-routes.d.ts.map +1 -0
  80. package/api/avatar-routes.js +210 -0
  81. package/api/background-routes.d.ts +13 -0
  82. package/api/background-routes.d.ts.map +1 -0
  83. package/api/background-routes.js +91 -0
  84. package/api/background-tasks-routes.d.ts +18 -0
  85. package/api/background-tasks-routes.d.ts.map +1 -0
  86. package/api/background-tasks-routes.js +58 -0
  87. package/api/binance-skill-helpers.d.ts +21 -0
  88. package/api/binance-skill-helpers.d.ts.map +1 -0
  89. package/api/binance-skill-helpers.js +859 -0
  90. package/api/bug-report-routes.d.ts +10 -0
  91. package/api/bug-report-routes.d.ts.map +1 -0
  92. package/api/bug-report-routes.js +276 -0
  93. package/api/builtin-views.d.ts +11 -0
  94. package/api/builtin-views.d.ts.map +1 -0
  95. package/api/builtin-views.js +215 -0
  96. package/api/character-routes.d.ts +52 -0
  97. package/api/character-routes.d.ts.map +1 -0
  98. package/api/character-routes.js +380 -0
  99. package/api/chat-augmentation.d.ts +22 -0
  100. package/api/chat-augmentation.d.ts.map +1 -0
  101. package/api/chat-augmentation.js +366 -0
  102. package/api/chat-routes.d.ts +177 -0
  103. package/api/chat-routes.d.ts.map +1 -0
  104. package/api/chat-routes.js +2670 -0
  105. package/api/chat-text-helpers.d.ts.map +1 -0
  106. package/api/client-chat-admin.d.ts.map +1 -0
  107. package/api/commands-routes.d.ts +32 -0
  108. package/api/commands-routes.d.ts.map +1 -0
  109. package/api/commands-routes.js +57 -0
  110. package/api/compat-utils.d.ts.map +1 -0
  111. package/api/config-env.d.ts.map +1 -0
  112. package/api/config-env.js +283 -0
  113. package/api/config-routes.d.ts +40 -0
  114. package/api/config-routes.d.ts.map +1 -0
  115. package/api/config-routes.js +431 -0
  116. package/api/connector-account-routes.d.ts.map +1 -0
  117. package/api/connector-account-routes.js +740 -0
  118. package/api/connector-health.d.ts.map +1 -0
  119. package/api/connector-oauth-callback-auth.d.ts.map +1 -0
  120. package/api/connector-routes.d.ts +36 -0
  121. package/api/connector-routes.d.ts.map +1 -0
  122. package/api/connector-routes.js +198 -0
  123. package/api/conversation-metadata.d.ts +10 -0
  124. package/api/conversation-metadata.d.ts.map +1 -0
  125. package/api/conversation-metadata.js +117 -0
  126. package/api/conversation-routes.d.ts +65 -0
  127. package/api/conversation-routes.d.ts.map +1 -0
  128. package/api/conversation-routes.js +1828 -0
  129. package/api/coordinator-wiring.d.ts.map +1 -0
  130. package/api/coordinator-wiring.js +108 -0
  131. package/api/credit-detection.d.ts +16 -0
  132. package/api/credit-detection.d.ts.map +1 -0
  133. package/api/credit-detection.js +48 -0
  134. package/api/database.d.ts +33 -0
  135. package/api/database.d.ts.map +1 -0
  136. package/api/database.js +1026 -0
  137. package/api/diagnostics-routes.d.ts +51 -0
  138. package/api/diagnostics-routes.d.ts.map +1 -0
  139. package/api/diagnostics-routes.js +361 -0
  140. package/api/dispatch-route.d.ts +40 -0
  141. package/api/dispatch-route.d.ts.map +1 -0
  142. package/api/dispatch-route.js +387 -0
  143. package/api/documents-service-loader.d.ts +72 -0
  144. package/api/documents-service-loader.d.ts.map +1 -0
  145. package/api/documents-service-loader.js +34 -0
  146. package/api/early-logs.d.ts +24 -0
  147. package/api/early-logs.d.ts.map +1 -0
  148. package/api/files-routes.d.ts +14 -0
  149. package/api/files-routes.d.ts.map +1 -0
  150. package/api/files-routes.js +47 -0
  151. package/api/first-run-routes.d.ts +50 -0
  152. package/api/first-run-routes.d.ts.map +1 -0
  153. package/api/first-run-routes.js +570 -0
  154. package/api/health-routes.d.ts +58 -0
  155. package/api/health-routes.d.ts.map +1 -0
  156. package/api/health-routes.js +554 -0
  157. package/api/hono-adapter.d.ts +29 -0
  158. package/api/hono-adapter.d.ts.map +1 -0
  159. package/api/hono-adapter.js +170 -0
  160. package/api/hono-mount.d.ts +16 -0
  161. package/api/hono-mount.d.ts.map +1 -0
  162. package/api/hono-mount.js +121 -0
  163. package/api/inbox-routes.d.ts.map +1 -0
  164. package/api/inbox-routes.js +1587 -0
  165. package/api/index.d.ts +44 -0
  166. package/api/index.d.ts.map +1 -0
  167. package/api/index.js +53 -0
  168. package/api/interactions-routes.d.ts +33 -0
  169. package/api/interactions-routes.d.ts.map +1 -0
  170. package/api/interactions-routes.js +63 -0
  171. package/api/media-runtime.d.ts +37 -0
  172. package/api/media-runtime.d.ts.map +1 -0
  173. package/api/media-runtime.js +193 -0
  174. package/api/media-store.d.ts +122 -0
  175. package/api/media-store.d.ts.map +1 -0
  176. package/api/media-store.js +600 -0
  177. package/api/media-thumbnail.d.ts +22 -0
  178. package/api/media-thumbnail.d.ts.map +1 -0
  179. package/api/media-thumbnail.js +121 -0
  180. package/api/memory-bounds.d.ts +50 -0
  181. package/api/memory-bounds.d.ts.map +1 -0
  182. package/api/memory-bounds.js +80 -0
  183. package/api/memory-routes.d.ts.map +1 -0
  184. package/api/memory-routes.js +480 -0
  185. package/api/misc-routes.d.ts +64 -0
  186. package/api/misc-routes.d.ts.map +1 -0
  187. package/api/misc-routes.js +569 -0
  188. package/api/mobile-optional-routes.d.ts.map +1 -0
  189. package/api/mobile-optional-routes.js +258 -0
  190. package/api/model-provider-helpers.d.ts +70 -0
  191. package/api/model-provider-helpers.d.ts.map +1 -0
  192. package/api/model-provider-helpers.js +663 -0
  193. package/api/models-routes.d.ts.map +1 -0
  194. package/api/music-player-route-fallback.d.ts.map +1 -0
  195. package/api/notification-routes.d.ts +38 -0
  196. package/api/notification-routes.d.ts.map +1 -0
  197. package/api/notification-routes.js +169 -0
  198. package/api/owner-contact-helpers.d.ts.map +1 -0
  199. package/api/parse-action-block.d.ts +53 -0
  200. package/api/parse-action-block.d.ts.map +1 -0
  201. package/api/pending-request-map.d.ts +30 -0
  202. package/api/pending-request-map.d.ts.map +1 -0
  203. package/api/pending-request-map.js +40 -0
  204. package/api/permission-request-prompt.d.ts +19 -0
  205. package/api/permission-request-prompt.d.ts.map +1 -0
  206. package/api/permission-request-prompt.js +55 -0
  207. package/api/permissions-routes-extra.d.ts +28 -0
  208. package/api/permissions-routes-extra.d.ts.map +1 -0
  209. package/api/permissions-routes.d.ts +27 -0
  210. package/api/permissions-routes.d.ts.map +1 -0
  211. package/api/permissions-routes.js +469 -0
  212. package/api/platform-detect.d.ts +26 -0
  213. package/api/platform-detect.d.ts.map +1 -0
  214. package/api/platform-detect.js +40 -0
  215. package/api/plugin-discovery-helpers.d.ts +117 -0
  216. package/api/plugin-discovery-helpers.d.ts.map +1 -0
  217. package/api/plugin-discovery-helpers.js +1158 -0
  218. package/api/plugin-runtime-apply.d.ts +31 -0
  219. package/api/plugin-runtime-apply.d.ts.map +1 -0
  220. package/api/plugin-runtime-apply.js +291 -0
  221. package/api/plugin-validation.d.ts.map +1 -0
  222. package/api/provider-switch-config.d.ts +59 -0
  223. package/api/provider-switch-config.d.ts.map +1 -0
  224. package/api/provider-switch-config.js +804 -0
  225. package/api/provider-switch-routes.d.ts +29 -0
  226. package/api/provider-switch-routes.d.ts.map +1 -0
  227. package/api/provider-switch-routes.js +133 -0
  228. package/api/push-token-routes.d.ts +30 -0
  229. package/api/push-token-routes.d.ts.map +1 -0
  230. package/api/push-token-routes.js +83 -0
  231. package/api/rate-limiter.d.ts.map +1 -0
  232. package/api/registry-routes.d.ts +29 -0
  233. package/api/registry-routes.d.ts.map +1 -0
  234. package/api/registry-routes.js +98 -0
  235. package/api/registry-service.d.ts +77 -0
  236. package/api/registry-service.d.ts.map +1 -0
  237. package/api/registry-service.js +190 -0
  238. package/api/relationships-routes.d.ts.map +1 -0
  239. package/api/relationships-routes.js +286 -0
  240. package/api/remote-capability-routes.d.ts +26 -0
  241. package/api/remote-capability-routes.d.ts.map +1 -0
  242. package/api/remote-capability-routes.js +631 -0
  243. package/api/runtime-plugin-routes.d.ts.map +1 -0
  244. package/api/runtime-plugin-routes.js +251 -0
  245. package/api/runtime-ready-gate.d.ts +25 -0
  246. package/api/runtime-ready-gate.d.ts.map +1 -0
  247. package/api/runtime-ready-gate.js +35 -0
  248. package/api/server-autonomy-helpers.d.ts +5 -0
  249. package/api/server-autonomy-helpers.d.ts.map +1 -0
  250. package/api/server-helpers-auth.d.ts +72 -0
  251. package/api/server-helpers-auth.d.ts.map +1 -0
  252. package/api/server-helpers-auth.js +695 -0
  253. package/api/server-helpers-config.d.ts +37 -0
  254. package/api/server-helpers-config.d.ts.map +1 -0
  255. package/api/server-helpers-config.js +289 -0
  256. package/api/server-helpers-fetch.d.ts.map +1 -0
  257. package/api/server-helpers-mcp.d.ts +17 -0
  258. package/api/server-helpers-mcp.d.ts.map +1 -0
  259. package/api/server-helpers-mcp.js +60 -0
  260. package/api/server-helpers-plugin.d.ts +13 -0
  261. package/api/server-helpers-plugin.d.ts.map +1 -0
  262. package/api/server-helpers-swarm.d.ts +101 -0
  263. package/api/server-helpers-swarm.d.ts.map +1 -0
  264. package/api/server-helpers-swarm.js +656 -0
  265. package/api/server-helpers-wallet.d.ts +18 -0
  266. package/api/server-helpers-wallet.d.ts.map +1 -0
  267. package/api/server-helpers.d.ts +85 -0
  268. package/api/server-helpers.d.ts.map +1 -0
  269. package/api/server-helpers.js +676 -0
  270. package/api/server-lazy-routes.d.ts +90 -0
  271. package/api/server-lazy-routes.d.ts.map +1 -0
  272. package/api/server-lazy-routes.js +453 -0
  273. package/api/server-route-dispatch.d.ts +30 -0
  274. package/api/server-route-dispatch.d.ts.map +1 -0
  275. package/api/server-route-dispatch.js +134 -0
  276. package/api/server-types.d.ts +199 -0
  277. package/api/server-types.d.ts.map +1 -0
  278. package/api/server.d.ts +61 -0
  279. package/api/server.d.ts.map +1 -0
  280. package/api/server.js +3911 -0
  281. package/api/static-file-server.d.ts +19 -0
  282. package/api/static-file-server.d.ts.map +1 -0
  283. package/api/static-file-server.js +233 -0
  284. package/api/subscription-routes.d.ts +20 -0
  285. package/api/subscription-routes.d.ts.map +1 -0
  286. package/api/subscription-routes.js +293 -0
  287. package/api/suggestions-routes.d.ts +50 -0
  288. package/api/suggestions-routes.d.ts.map +1 -0
  289. package/api/suggestions-routes.js +300 -0
  290. package/api/task-agent-message-routing.d.ts.map +1 -0
  291. package/api/terminal-execution-routing.d.ts +14 -0
  292. package/api/terminal-execution-routing.d.ts.map +1 -0
  293. package/api/terminal-run-limits.d.ts.map +1 -0
  294. package/api/terminal-run-limits.js +20 -0
  295. package/api/trade-safety.d.ts +35 -0
  296. package/api/trade-safety.d.ts.map +1 -0
  297. package/api/trade-safety.js +65 -0
  298. package/api/training-backend-check.d.ts.map +1 -0
  299. package/api/training-service-like.d.ts +39 -0
  300. package/api/training-service-like.d.ts.map +1 -0
  301. package/api/trajectory-fallback-routes.d.ts +10 -0
  302. package/api/trajectory-fallback-routes.d.ts.map +1 -0
  303. package/api/trajectory-fallback-routes.js +180 -0
  304. package/api/tx-service.d.ts +53 -0
  305. package/api/tx-service.d.ts.map +1 -0
  306. package/api/tx-service.js +217 -0
  307. package/api/update-routes.d.ts +19 -0
  308. package/api/update-routes.d.ts.map +1 -0
  309. package/api/update-routes.js +69 -0
  310. package/api/view-registry-types.d.ts +52 -0
  311. package/api/view-registry-types.d.ts.map +1 -0
  312. package/api/view-registry-types.js +9 -0
  313. package/api/views-registry.d.ts +100 -0
  314. package/api/views-registry.d.ts.map +1 -0
  315. package/api/views-registry.js +495 -0
  316. package/api/views-routes.d.ts +66 -0
  317. package/api/views-routes.d.ts.map +1 -0
  318. package/api/views-routes.js +998 -0
  319. package/api/views-search-index.d.ts +56 -0
  320. package/api/views-search-index.d.ts.map +1 -0
  321. package/api/views-search-index.js +128 -0
  322. package/api/wallet-capability.d.ts +32 -0
  323. package/api/wallet-capability.d.ts.map +1 -0
  324. package/api/wallet-capability.js +192 -0
  325. package/api/wallet-dex-prices.d.ts.map +1 -0
  326. package/api/wallet-env-sync.d.ts +2 -0
  327. package/api/wallet-env-sync.d.ts.map +1 -0
  328. package/api/wallet-evm-balance.d.ts.map +1 -0
  329. package/api/wallet-keygen.d.ts +5 -0
  330. package/api/wallet-keygen.d.ts.map +1 -0
  331. package/api/wallet-keygen.js +67 -0
  332. package/api/wallet-rpc.d.ts +64 -0
  333. package/api/wallet-rpc.d.ts.map +1 -0
  334. package/api/wallet-rpc.js +440 -0
  335. package/api/wallet-trading-profile.d.ts.map +1 -0
  336. package/api/wallet-trading-profile.js +544 -0
  337. package/api/wallet.d.ts +64 -0
  338. package/api/wallet.d.ts.map +1 -0
  339. package/api/wallet.js +787 -0
  340. package/api/workbench-context.d.ts +48 -0
  341. package/api/workbench-context.d.ts.map +1 -0
  342. package/api/workbench-context.js +9 -0
  343. package/api/workbench-helpers.d.ts +39 -0
  344. package/api/workbench-helpers.d.ts.map +1 -0
  345. package/api/workbench-helpers.js +137 -0
  346. package/api/workbench-routes.d.ts +5 -0
  347. package/api/workbench-routes.d.ts.map +1 -0
  348. package/api/workbench-routes.js +283 -0
  349. package/api/workbench-vfs-routes.d.ts +3 -0
  350. package/api/workbench-vfs-routes.d.ts.map +1 -0
  351. package/api/workbench-vfs-routes.js +396 -0
  352. package/api/ws-event-replay.d.ts +63 -0
  353. package/api/ws-event-replay.d.ts.map +1 -0
  354. package/api/ws-event-replay.js +83 -0
  355. package/api/x-relay-routes.d.ts +27 -0
  356. package/api/x-relay-routes.d.ts.map +1 -0
  357. package/api/x-relay-routes.js +141 -0
  358. package/api/x402-route-validation.d.ts +4 -0
  359. package/api/x402-route-validation.d.ts.map +1 -0
  360. package/api/x402-route-validation.js +6 -0
  361. package/api/zip-utils.d.ts.map +1 -0
  362. package/assets/view-heroes/automations.png +0 -0
  363. package/assets/view-heroes/background.png +0 -0
  364. package/assets/view-heroes/camera.png +0 -0
  365. package/assets/view-heroes/character.png +0 -0
  366. package/assets/view-heroes/chat.png +0 -0
  367. package/assets/view-heroes/database.png +0 -0
  368. package/assets/view-heroes/help.png +0 -0
  369. package/assets/view-heroes/logs.png +0 -0
  370. package/assets/view-heroes/memories.png +0 -0
  371. package/assets/view-heroes/plugins-page.png +0 -0
  372. package/assets/view-heroes/settings.png +0 -0
  373. package/assets/view-heroes/trajectories.png +0 -0
  374. package/assets/view-heroes/transcripts.png +0 -0
  375. package/assets/view-heroes/tutorial.png +0 -0
  376. package/auth/account-storage.d.ts +35 -0
  377. package/auth/account-storage.d.ts.map +1 -0
  378. package/auth/account-storage.js +135 -0
  379. package/auth/anthropic.d.ts +24 -0
  380. package/auth/anthropic.d.ts.map +1 -0
  381. package/auth/claude-code-stealth.d.ts.map +1 -0
  382. package/auth/claude-code-stealth.js +114 -0
  383. package/auth/credentials.d.ts +131 -0
  384. package/auth/credentials.d.ts.map +1 -0
  385. package/auth/credentials.js +596 -0
  386. package/auth/index.d.ts +8 -0
  387. package/auth/index.d.ts.map +1 -0
  388. package/auth/oauth-flow.d.ts +106 -0
  389. package/auth/oauth-flow.d.ts.map +1 -0
  390. package/auth/oauth-flow.js +349 -0
  391. package/auth/openai-codex.d.ts +27 -0
  392. package/auth/openai-codex.d.ts.map +1 -0
  393. package/auth/openai-codex.js +84 -0
  394. package/auth/refresh-mutex.d.ts +24 -0
  395. package/auth/refresh-mutex.d.ts.map +1 -0
  396. package/auth/refresh-mutex.js +38 -0
  397. package/auth/types.d.ts +65 -0
  398. package/auth/types.d.ts.map +1 -0
  399. package/auth/types.js +157 -0
  400. package/auth/vendor/pi-oauth/anthropic-login.d.ts.map +1 -0
  401. package/auth/vendor/pi-oauth/anthropic-login.js +118 -0
  402. package/auth/vendor/pi-oauth/openai-codex-login.d.ts +28 -0
  403. package/auth/vendor/pi-oauth/openai-codex-login.d.ts.map +1 -0
  404. package/auth/vendor/pi-oauth/openai-codex-login.js +342 -0
  405. package/auth/vendor/pi-oauth/pkce.d.ts.map +1 -0
  406. package/awareness/index.d.ts +2 -0
  407. package/awareness/index.d.ts.map +1 -0
  408. package/awareness/registry.d.ts.map +1 -0
  409. package/bin.d.ts.map +1 -0
  410. package/bin.js +120 -0
  411. package/cli/benchmark.d.ts.map +1 -0
  412. package/cli/benchmark.js +305 -0
  413. package/cli/index.d.ts.map +1 -0
  414. package/cli/index.js +174 -0
  415. package/config/character-schema.d.ts.map +1 -0
  416. package/config/config.d.ts.map +1 -0
  417. package/config/config.js +287 -0
  418. package/config/env-vars.d.ts +9 -0
  419. package/config/env-vars.d.ts.map +1 -0
  420. package/config/env-vars.js +280 -0
  421. package/config/feature-flags.d.ts +26 -0
  422. package/config/feature-flags.d.ts.map +1 -0
  423. package/config/feature-flags.js +48 -0
  424. package/config/includes.d.ts +26 -0
  425. package/config/includes.d.ts.map +1 -0
  426. package/config/includes.js +151 -0
  427. package/config/index.d.ts +11 -0
  428. package/config/index.d.ts.map +1 -0
  429. package/config/model-metadata.d.ts +20 -0
  430. package/config/model-metadata.d.ts.map +1 -0
  431. package/config/model-metadata.js +133 -0
  432. package/config/owner-contacts.d.ts +42 -0
  433. package/config/owner-contacts.d.ts.map +1 -0
  434. package/config/owner-contacts.js +238 -0
  435. package/config/paths.d.ts +16 -0
  436. package/config/paths.d.ts.map +1 -0
  437. package/config/paths.js +61 -0
  438. package/config/plugin-auto-enable.d.ts.map +1 -0
  439. package/config/plugin-widgets.d.ts +26 -0
  440. package/config/plugin-widgets.d.ts.map +1 -0
  441. package/config/plugin-widgets.js +60 -0
  442. package/config/schema.d.ts +87 -0
  443. package/config/schema.d.ts.map +1 -0
  444. package/config/schema.js +928 -0
  445. package/config/telegram-custom-commands.d.ts.map +1 -0
  446. package/config/types.agent-defaults.d.ts.map +1 -0
  447. package/config/types.agents.d.ts.map +1 -0
  448. package/config/types.d.ts.map +1 -0
  449. package/config/types.eliza.d.ts.map +1 -0
  450. package/config/types.hooks.d.ts.map +1 -0
  451. package/config/types.messages.d.ts.map +1 -0
  452. package/config/zod-schema.agent-runtime.d.ts +1166 -0
  453. package/config/zod-schema.agent-runtime.d.ts.map +1 -0
  454. package/config/zod-schema.agent-runtime.js +810 -0
  455. package/config/zod-schema.core.d.ts +1279 -0
  456. package/config/zod-schema.core.d.ts.map +1 -0
  457. package/config/zod-schema.core.js +761 -0
  458. package/config/zod-schema.d.ts +3406 -0
  459. package/config/zod-schema.d.ts.map +1 -0
  460. package/config/zod-schema.hooks.d.ts.map +1 -0
  461. package/config/zod-schema.js +846 -0
  462. package/config/zod-schema.providers-core.d.ts +2752 -0
  463. package/config/zod-schema.providers-core.d.ts.map +1 -0
  464. package/config/zod-schema.providers-core.js +969 -0
  465. package/config/zod-schema.session.d.ts +183 -0
  466. package/config/zod-schema.session.d.ts.map +1 -0
  467. package/contracts/awareness.d.ts.map +1 -0
  468. package/diagnostics/integration-observability.d.ts.map +1 -0
  469. package/hooks/discovery.d.ts +13 -0
  470. package/hooks/discovery.d.ts.map +1 -0
  471. package/hooks/discovery.js +191 -0
  472. package/hooks/eligibility.d.ts +12 -0
  473. package/hooks/eligibility.d.ts.map +1 -0
  474. package/hooks/index.d.ts +3 -0
  475. package/hooks/index.d.ts.map +1 -0
  476. package/hooks/loader.d.ts +34 -0
  477. package/hooks/loader.d.ts.map +1 -0
  478. package/hooks/loader.js +214 -0
  479. package/hooks/registry.d.ts +11 -0
  480. package/hooks/registry.d.ts.map +1 -0
  481. package/hooks/types.d.ts.map +1 -0
  482. package/index.d.ts +99 -0
  483. package/index.d.ts.map +1 -0
  484. package/index.js +136 -0
  485. package/package.json +276 -72
  486. package/providers/admin-panel.d.ts.map +1 -0
  487. package/providers/admin-trust.d.ts.map +1 -0
  488. package/providers/automation-terminal-bridge.d.ts.map +1 -0
  489. package/providers/automation-terminal-bridge.js +77 -0
  490. package/providers/conversation-proximity.d.ts.map +1 -0
  491. package/providers/escalation-trigger.d.ts.map +1 -0
  492. package/providers/media-provider.d.ts +234 -0
  493. package/providers/media-provider.d.ts.map +1 -0
  494. package/providers/media-provider.js +1511 -0
  495. package/providers/page-scoped-context.d.ts.map +1 -0
  496. package/providers/page-scoped-context.js +482 -0
  497. package/providers/pending-permissions-provider.d.ts +19 -0
  498. package/providers/pending-permissions-provider.d.ts.map +1 -0
  499. package/providers/pending-permissions-provider.js +110 -0
  500. package/providers/recent-conversations.d.ts.map +1 -0
  501. package/providers/recent-conversations.js +100 -0
  502. package/providers/relevant-conversations.d.ts.map +1 -0
  503. package/providers/relevant-conversations.js +98 -0
  504. package/providers/role-backfill.d.ts +18 -0
  505. package/providers/role-backfill.d.ts.map +1 -0
  506. package/providers/role-backfill.js +86 -0
  507. package/providers/rolodex.d.ts.map +1 -0
  508. package/providers/rolodex.js +90 -0
  509. package/providers/session-bridge.d.ts.map +1 -0
  510. package/providers/session-bridge.js +71 -0
  511. package/providers/session-utils.d.ts +14 -0
  512. package/providers/session-utils.d.ts.map +1 -0
  513. package/providers/session-utils.js +24 -0
  514. package/providers/skill-provider.d.ts.map +1 -0
  515. package/providers/tasks.d.ts.map +1 -0
  516. package/providers/ui-catalog.d.ts.map +1 -0
  517. package/providers/ui-catalog.js +132 -0
  518. package/providers/user-name.d.ts.map +1 -0
  519. package/providers/workspace-provider.d.ts.map +1 -0
  520. package/providers/workspace-provider.js +183 -0
  521. package/providers/workspace.d.ts +53 -0
  522. package/providers/workspace.d.ts.map +1 -0
  523. package/providers/workspace.js +419 -0
  524. package/runtime/actions/web-fetch.d.ts +28 -0
  525. package/runtime/actions/web-fetch.d.ts.map +1 -0
  526. package/runtime/actions/web-fetch.js +210 -0
  527. package/runtime/actions/web-search.d.ts +32 -0
  528. package/runtime/actions/web-search.d.ts.map +1 -0
  529. package/runtime/actions/web-search.js +245 -0
  530. package/runtime/advanced-capabilities-config.d.ts +8 -0
  531. package/runtime/advanced-capabilities-config.d.ts.map +1 -0
  532. package/runtime/agent-event-service.d.ts.map +1 -0
  533. package/runtime/agent-wallets.d.ts +134 -0
  534. package/runtime/agent-wallets.d.ts.map +1 -0
  535. package/runtime/agent-wallets.js +317 -0
  536. package/runtime/android-app-plugins.d.ts +4 -0
  537. package/runtime/android-app-plugins.d.ts.map +1 -0
  538. package/runtime/android-app-plugins.js +40 -0
  539. package/runtime/boot-telemetry.d.ts +36 -0
  540. package/runtime/boot-telemetry.d.ts.map +1 -0
  541. package/runtime/boot-telemetry.js +198 -0
  542. package/runtime/boot-timer.d.ts +41 -0
  543. package/runtime/boot-timer.d.ts.map +1 -0
  544. package/runtime/boot-timer.js +42 -0
  545. package/runtime/build-character-config.d.ts.map +1 -0
  546. package/runtime/build-character-config.js +220 -0
  547. package/runtime/conversation-compactor-runtime.d.ts +164 -0
  548. package/runtime/conversation-compactor-runtime.d.ts.map +1 -0
  549. package/runtime/conversation-compactor-runtime.js +1114 -0
  550. package/runtime/conversation-compactor.d.ts +38 -0
  551. package/runtime/conversation-compactor.d.ts.map +1 -0
  552. package/runtime/conversation-compactor.js +1238 -0
  553. package/runtime/conversation-compactor.types.d.ts +102 -0
  554. package/runtime/conversation-compactor.types.d.ts.map +1 -0
  555. package/runtime/core-plugins.d.ts +142 -0
  556. package/runtime/core-plugins.d.ts.map +1 -0
  557. package/runtime/core-plugins.js +266 -0
  558. package/runtime/custom-actions.d.ts +80 -0
  559. package/runtime/custom-actions.d.ts.map +1 -0
  560. package/runtime/custom-actions.js +673 -0
  561. package/runtime/default-documents.d.ts +21 -0
  562. package/runtime/default-documents.d.ts.map +1 -0
  563. package/runtime/default-documents.js +283 -0
  564. package/runtime/eliza-plugin.d.ts.map +1 -0
  565. package/runtime/eliza-plugin.js +218 -0
  566. package/runtime/eliza.d.ts +138 -0
  567. package/runtime/eliza.d.ts.map +1 -0
  568. package/runtime/eliza.js +4394 -0
  569. package/runtime/first-run-names.d.ts +20 -0
  570. package/runtime/first-run-names.d.ts.map +1 -0
  571. package/runtime/first-run-names.js +104 -0
  572. package/runtime/first-time-setup.d.ts +49 -0
  573. package/runtime/first-time-setup.d.ts.map +1 -0
  574. package/runtime/first-time-setup.js +714 -0
  575. package/runtime/index.d.ts +19 -0
  576. package/runtime/index.d.ts.map +1 -0
  577. package/runtime/index.js +18 -0
  578. package/runtime/load-plugin-from-directory.d.ts +59 -0
  579. package/runtime/load-plugin-from-directory.d.ts.map +1 -0
  580. package/runtime/load-plugin-from-directory.js +143 -0
  581. package/runtime/load-plugin-from-vfs.d.ts +68 -0
  582. package/runtime/load-plugin-from-vfs.d.ts.map +1 -0
  583. package/runtime/load-plugin-from-vfs.js +100 -0
  584. package/runtime/local-execution-mode.d.ts +11 -0
  585. package/runtime/local-execution-mode.d.ts.map +1 -0
  586. package/runtime/mobile-dns.d.ts +18 -0
  587. package/runtime/mobile-dns.d.ts.map +1 -0
  588. package/runtime/mobile-dns.js +255 -0
  589. package/runtime/model-resolution.d.ts.map +1 -0
  590. package/runtime/model-resolution.js +55 -0
  591. package/runtime/native-runtime-features.d.ts.map +1 -0
  592. package/runtime/operations/classifier.d.ts +36 -0
  593. package/runtime/operations/classifier.d.ts.map +1 -0
  594. package/runtime/operations/classifier.js +72 -0
  595. package/runtime/operations/cold-strategy.d.ts +19 -0
  596. package/runtime/operations/cold-strategy.d.ts.map +1 -0
  597. package/runtime/operations/health-checks.d.ts +25 -0
  598. package/runtime/operations/health-checks.d.ts.map +1 -0
  599. package/runtime/operations/health.d.ts +32 -0
  600. package/runtime/operations/health.d.ts.map +1 -0
  601. package/runtime/operations/index.d.ts +17 -0
  602. package/runtime/operations/index.d.ts.map +1 -0
  603. package/runtime/operations/manager.d.ts +70 -0
  604. package/runtime/operations/manager.d.ts.map +1 -0
  605. package/runtime/operations/manager.js +210 -0
  606. package/runtime/operations/reload-hot.d.ts +43 -0
  607. package/runtime/operations/reload-hot.d.ts.map +1 -0
  608. package/runtime/operations/reload-hot.js +181 -0
  609. package/runtime/operations/repository.d.ts +66 -0
  610. package/runtime/operations/repository.d.ts.map +1 -0
  611. package/runtime/operations/types.d.ts.map +1 -0
  612. package/runtime/operations/vault-bridge.d.ts +81 -0
  613. package/runtime/operations/vault-bridge.d.ts.map +1 -0
  614. package/runtime/owner-entity.d.ts.map +1 -0
  615. package/runtime/owner-entity.js +34 -0
  616. package/runtime/pglite-error-compat.d.ts +27 -0
  617. package/runtime/pglite-error-compat.d.ts.map +1 -0
  618. package/runtime/pglite-error-compat.js +53 -0
  619. package/runtime/plugin-collector.d.ts +27 -0
  620. package/runtime/plugin-collector.d.ts.map +1 -0
  621. package/runtime/plugin-collector.js +592 -0
  622. package/runtime/plugin-lifecycle.d.ts +16 -0
  623. package/runtime/plugin-lifecycle.d.ts.map +1 -0
  624. package/runtime/plugin-lifecycle.js +654 -0
  625. package/runtime/plugin-resolver.d.ts +59 -0
  626. package/runtime/plugin-resolver.d.ts.map +1 -0
  627. package/runtime/plugin-resolver.js +1641 -0
  628. package/runtime/plugin-role-gating.d.ts +23 -0
  629. package/runtime/plugin-role-gating.d.ts.map +1 -0
  630. package/runtime/plugin-role-gating.js +172 -0
  631. package/runtime/plugin-types.d.ts +64 -0
  632. package/runtime/plugin-types.d.ts.map +1 -0
  633. package/runtime/plugin-types.js +310 -0
  634. package/runtime/prompt-compaction.d.ts +100 -0
  635. package/runtime/prompt-compaction.d.ts.map +1 -0
  636. package/runtime/prompt-compaction.js +395 -0
  637. package/runtime/prompt-optimization.d.ts +50 -0
  638. package/runtime/prompt-optimization.d.ts.map +1 -0
  639. package/runtime/prompt-optimization.js +1243 -0
  640. package/runtime/release-plugin-policy.d.ts.map +1 -0
  641. package/runtime/release-plugin-policy.js +115 -0
  642. package/runtime/remote-coding-runner-gate.d.ts +7 -0
  643. package/runtime/remote-coding-runner-gate.d.ts.map +1 -0
  644. package/runtime/remote-coding-runner-gate.js +36 -0
  645. package/runtime/roles/src/index.d.ts +24 -0
  646. package/runtime/roles/src/index.d.ts.map +1 -0
  647. package/runtime/roles/src/index.js +279 -0
  648. package/runtime/roles/src/provider.d.ts.map +1 -0
  649. package/runtime/roles/src/types.d.ts.map +1 -0
  650. package/runtime/roles/src/utils.d.ts.map +1 -0
  651. package/runtime/roles.d.ts +3 -0
  652. package/runtime/roles.d.ts.map +1 -0
  653. package/runtime/sandbox-character.d.ts +61 -0
  654. package/runtime/sandbox-character.d.ts.map +1 -0
  655. package/runtime/sandbox-character.js +193 -0
  656. package/runtime/sandbox-registry.d.ts +96 -0
  657. package/runtime/sandbox-registry.d.ts.map +1 -0
  658. package/runtime/sandbox-registry.js +346 -0
  659. package/runtime/tool-call-cache/cache.d.ts +62 -0
  660. package/runtime/tool-call-cache/cache.d.ts.map +1 -0
  661. package/runtime/tool-call-cache/cache.js +123 -0
  662. package/runtime/tool-call-cache/disk-store.d.ts +23 -0
  663. package/runtime/tool-call-cache/disk-store.d.ts.map +1 -0
  664. package/runtime/tool-call-cache/index.d.ts +7 -0
  665. package/runtime/tool-call-cache/index.d.ts.map +1 -0
  666. package/runtime/tool-call-cache/index.js +4 -0
  667. package/runtime/tool-call-cache/key.d.ts +11 -0
  668. package/runtime/tool-call-cache/key.d.ts.map +1 -0
  669. package/runtime/tool-call-cache/key.js +31 -0
  670. package/runtime/tool-call-cache/lru.d.ts.map +1 -0
  671. package/runtime/tool-call-cache/redact.d.ts +17 -0
  672. package/runtime/tool-call-cache/redact.d.ts.map +1 -0
  673. package/runtime/tool-call-cache/redact.js +77 -0
  674. package/runtime/tool-call-cache/registry.d.ts +18 -0
  675. package/runtime/tool-call-cache/registry.d.ts.map +1 -0
  676. package/runtime/tool-call-cache/registry.js +66 -0
  677. package/runtime/tool-call-cache/types.d.ts.map +1 -0
  678. package/runtime/tool-call-cache-wrapper.d.ts +37 -0
  679. package/runtime/tool-call-cache-wrapper.d.ts.map +1 -0
  680. package/runtime/tool-call-cache-wrapper.js +67 -0
  681. package/runtime/trajectory-export.d.ts +18 -0
  682. package/runtime/trajectory-export.d.ts.map +1 -0
  683. package/runtime/trajectory-export.js +132 -0
  684. package/runtime/trajectory-internals.d.ts +264 -0
  685. package/runtime/trajectory-internals.d.ts.map +1 -0
  686. package/runtime/trajectory-internals.js +1720 -0
  687. package/runtime/trajectory-persistence.d.ts +30 -0
  688. package/runtime/trajectory-persistence.d.ts.map +1 -0
  689. package/runtime/trajectory-persistence.js +47 -0
  690. package/runtime/trajectory-query.d.ts.map +1 -0
  691. package/runtime/trajectory-query.js +29 -0
  692. package/runtime/trajectory-steps-reader.d.ts +41 -0
  693. package/runtime/trajectory-steps-reader.d.ts.map +1 -0
  694. package/runtime/trajectory-steps-reader.js +129 -0
  695. package/runtime/trajectory-steps-writer.d.ts +35 -0
  696. package/runtime/trajectory-steps-writer.d.ts.map +1 -0
  697. package/runtime/trajectory-steps-writer.js +135 -0
  698. package/runtime/trajectory-storage.d.ts +103 -0
  699. package/runtime/trajectory-storage.d.ts.map +1 -0
  700. package/runtime/trajectory-storage.js +1174 -0
  701. package/runtime/vault-profile-resolver.d.ts +37 -0
  702. package/runtime/vault-profile-resolver.d.ts.map +1 -0
  703. package/runtime/vault-profile-resolver.js +79 -0
  704. package/runtime/version.d.ts.map +1 -0
  705. package/runtime/view-action-affinity.d.ts +156 -0
  706. package/runtime/view-action-affinity.d.ts.map +1 -0
  707. package/runtime/view-action-affinity.js +254 -0
  708. package/runtime/web-search-tools.d.ts +34 -0
  709. package/runtime/web-search-tools.d.ts.map +1 -0
  710. package/runtime/web-search-tools.js +198 -0
  711. package/security/access.d.ts.map +1 -0
  712. package/security/access.js +56 -0
  713. package/security/audit-log.d.ts.map +1 -0
  714. package/security/audit-log.js +165 -0
  715. package/security/index.d.ts +4 -0
  716. package/security/index.d.ts.map +1 -0
  717. package/security/mcp-server-config.d.ts +6 -0
  718. package/security/mcp-server-config.d.ts.map +1 -0
  719. package/security/mcp-server-config.js +358 -0
  720. package/security/network-policy.d.ts.map +1 -0
  721. package/services/agent-export.d.ts +100 -0
  722. package/services/agent-export.d.ts.map +1 -0
  723. package/services/agent-export.js +767 -0
  724. package/services/app-manager-agents-list-guard.d.ts.map +1 -0
  725. package/services/app-package-modules.d.ts +26 -0
  726. package/services/app-package-modules.d.ts.map +1 -0
  727. package/services/app-package-modules.js +451 -0
  728. package/services/app-session-gate.d.ts.map +1 -0
  729. package/services/app-session-gate.js +71 -0
  730. package/services/approval/index.d.ts +9 -0
  731. package/services/approval/index.d.ts.map +1 -0
  732. package/services/approval/index.js +8 -0
  733. package/services/approval/service.d.ts +35 -0
  734. package/services/approval/service.d.ts.map +1 -0
  735. package/services/approval/service.js +40 -0
  736. package/services/approval/sql.d.ts +18 -0
  737. package/services/approval/sql.d.ts.map +1 -0
  738. package/services/approval/sql.js +104 -0
  739. package/services/approval/store.d.ts +39 -0
  740. package/services/approval/store.d.ts.map +1 -0
  741. package/services/approval/store.js +534 -0
  742. package/services/approval/types.d.ts +207 -0
  743. package/services/approval/types.d.ts.map +1 -0
  744. package/services/approval/types.js +34 -0
  745. package/services/capability-broker.d.ts.map +1 -0
  746. package/services/capability-broker.js +339 -0
  747. package/services/character-history.d.ts.map +1 -0
  748. package/services/character-persistence.d.ts +25 -0
  749. package/services/character-persistence.d.ts.map +1 -0
  750. package/services/client-chat-sender.d.ts +19 -0
  751. package/services/client-chat-sender.d.ts.map +1 -0
  752. package/services/client-chat-sender.js +88 -0
  753. package/services/config-plugin-manager.d.ts +6 -0
  754. package/services/config-plugin-manager.d.ts.map +1 -0
  755. package/services/connector-setup-service.d.ts +48 -0
  756. package/services/connector-setup-service.d.ts.map +1 -0
  757. package/services/cove-quote-x509.d.ts +143 -0
  758. package/services/cove-quote-x509.d.ts.map +1 -0
  759. package/services/cove-quote-x509.js +424 -0
  760. package/services/cove-quote.d.ts +189 -0
  761. package/services/cove-quote.d.ts.map +1 -0
  762. package/services/cove-quote.js +455 -0
  763. package/services/dstack-tee-provider.d.ts +57 -0
  764. package/services/dstack-tee-provider.d.ts.map +1 -0
  765. package/services/dstack-tee-provider.js +180 -0
  766. package/services/e2b-capability-router.d.ts +139 -0
  767. package/services/e2b-capability-router.d.ts.map +1 -0
  768. package/services/e2b-capability-router.js +1239 -0
  769. package/services/escalation.d.ts.map +1 -0
  770. package/services/escalation.js +378 -0
  771. package/services/evm-signing-capability.d.ts +33 -0
  772. package/services/evm-signing-capability.d.ts.map +1 -0
  773. package/services/evm-signing-capability.js +52 -0
  774. package/services/external-bridge-state.d.ts +11 -0
  775. package/services/external-bridge-state.d.ts.map +1 -0
  776. package/services/external-bridge-state.js +15 -0
  777. package/services/file-storage.d.ts +20 -0
  778. package/services/file-storage.d.ts.map +1 -0
  779. package/services/file-storage.js +70 -0
  780. package/services/global-pause/index.d.ts +8 -0
  781. package/services/global-pause/index.d.ts.map +1 -0
  782. package/services/global-pause/index.js +7 -0
  783. package/services/global-pause/service.d.ts +29 -0
  784. package/services/global-pause/service.d.ts.map +1 -0
  785. package/services/global-pause/service.js +34 -0
  786. package/services/global-pause/store.d.ts +31 -0
  787. package/services/global-pause/store.d.ts.map +1 -0
  788. package/services/global-pause/store.js +83 -0
  789. package/services/handoff/index.d.ts +8 -0
  790. package/services/handoff/index.d.ts.map +1 -0
  791. package/services/handoff/index.js +7 -0
  792. package/services/handoff/service.d.ts +29 -0
  793. package/services/handoff/service.d.ts.map +1 -0
  794. package/services/handoff/service.js +34 -0
  795. package/services/handoff/store.d.ts +76 -0
  796. package/services/handoff/store.d.ts.map +1 -0
  797. package/services/handoff/store.js +148 -0
  798. package/services/hosted-tools.d.ts +77 -0
  799. package/services/hosted-tools.d.ts.map +1 -0
  800. package/services/hosted-tools.js +87 -0
  801. package/services/index.d.ts +31 -0
  802. package/services/index.d.ts.map +1 -0
  803. package/services/index.js +34 -0
  804. package/services/js-runtime-bridge.d.ts.map +1 -0
  805. package/services/js-runtime-bridge.js +222 -0
  806. package/services/knowledge-graph/entity-store.d.ts +94 -0
  807. package/services/knowledge-graph/entity-store.d.ts.map +1 -0
  808. package/services/knowledge-graph/entity-store.js +509 -0
  809. package/services/knowledge-graph/index.d.ts +12 -0
  810. package/services/knowledge-graph/index.d.ts.map +1 -0
  811. package/services/knowledge-graph/index.js +11 -0
  812. package/services/knowledge-graph/relationship-store.d.ts +58 -0
  813. package/services/knowledge-graph/relationship-store.d.ts.map +1 -0
  814. package/services/knowledge-graph/relationship-store.js +303 -0
  815. package/services/knowledge-graph/schema.d.ts +2070 -0
  816. package/services/knowledge-graph/schema.d.ts.map +1 -0
  817. package/services/knowledge-graph/schema.js +119 -0
  818. package/services/knowledge-graph/service.d.ts +35 -0
  819. package/services/knowledge-graph/service.d.ts.map +1 -0
  820. package/services/knowledge-graph/service.js +42 -0
  821. package/services/knowledge-graph/sql.d.ts +22 -0
  822. package/services/knowledge-graph/sql.d.ts.map +1 -0
  823. package/services/knowledge-graph/sql.js +142 -0
  824. package/services/mcp-marketplace.d.ts.map +1 -0
  825. package/services/mcp-marketplace.js +200 -0
  826. package/services/media-generation.d.ts +10 -0
  827. package/services/media-generation.d.ts.map +1 -0
  828. package/services/media-generation.js +102 -0
  829. package/services/overlay-app-presence.d.ts.map +1 -0
  830. package/services/owner-name.d.ts.map +1 -0
  831. package/services/pending-prompts/index.d.ts +8 -0
  832. package/services/pending-prompts/index.d.ts.map +1 -0
  833. package/services/pending-prompts/index.js +7 -0
  834. package/services/pending-prompts/service.d.ts +34 -0
  835. package/services/pending-prompts/service.d.ts.map +1 -0
  836. package/services/pending-prompts/service.js +68 -0
  837. package/services/pending-prompts/store.d.ts +70 -0
  838. package/services/pending-prompts/store.d.ts.map +1 -0
  839. package/services/pending-prompts/store.js +191 -0
  840. package/services/permissions/contracts.d.ts +2 -0
  841. package/services/permissions/contracts.d.ts.map +1 -0
  842. package/services/permissions/contracts.js +1 -0
  843. package/services/permissions/probers/_bridge.d.ts +112 -0
  844. package/services/permissions/probers/_bridge.d.ts.map +1 -0
  845. package/services/permissions/probers/_bridge.js +313 -0
  846. package/services/permissions/probers/accessibility.d.ts.map +1 -0
  847. package/services/permissions/probers/automation.d.ts +17 -0
  848. package/services/permissions/probers/automation.d.ts.map +1 -0
  849. package/services/permissions/probers/automation.js +44 -0
  850. package/services/permissions/probers/calendar.d.ts +6 -0
  851. package/services/permissions/probers/calendar.d.ts.map +1 -0
  852. package/services/permissions/probers/calendar.js +42 -0
  853. package/services/permissions/probers/camera.d.ts.map +1 -0
  854. package/services/permissions/probers/contacts.d.ts +9 -0
  855. package/services/permissions/probers/contacts.d.ts.map +1 -0
  856. package/services/permissions/probers/contacts.js +44 -0
  857. package/services/permissions/probers/full-disk.d.ts.map +1 -0
  858. package/services/permissions/probers/health.d.ts +23 -0
  859. package/services/permissions/probers/health.d.ts.map +1 -0
  860. package/services/permissions/probers/health.js +60 -0
  861. package/services/permissions/probers/index.d.ts.map +1 -0
  862. package/services/permissions/probers/index.js +44 -0
  863. package/services/permissions/probers/location.d.ts +13 -0
  864. package/services/permissions/probers/location.d.ts.map +1 -0
  865. package/services/permissions/probers/location.js +54 -0
  866. package/services/permissions/probers/microphone.d.ts.map +1 -0
  867. package/services/permissions/probers/native-platform.d.ts +3 -0
  868. package/services/permissions/probers/native-platform.d.ts.map +1 -0
  869. package/services/permissions/probers/native-platform.js +27 -0
  870. package/services/permissions/probers/notes.d.ts +18 -0
  871. package/services/permissions/probers/notes.d.ts.map +1 -0
  872. package/services/permissions/probers/notes.js +44 -0
  873. package/services/permissions/probers/notifications.d.ts +18 -0
  874. package/services/permissions/probers/notifications.d.ts.map +1 -0
  875. package/services/permissions/probers/notifications.js +53 -0
  876. package/services/permissions/probers/reminders.d.ts +9 -0
  877. package/services/permissions/probers/reminders.d.ts.map +1 -0
  878. package/services/permissions/probers/reminders.js +44 -0
  879. package/services/permissions/probers/screen-recording.d.ts.map +1 -0
  880. package/services/permissions/probers/screentime.d.ts +21 -0
  881. package/services/permissions/probers/screentime.d.ts.map +1 -0
  882. package/services/permissions/probers/screentime.js +55 -0
  883. package/services/permissions/probers/shell.d.ts +16 -0
  884. package/services/permissions/probers/shell.d.ts.map +1 -0
  885. package/services/permissions/probers/shell.js +28 -0
  886. package/services/permissions/probers/website-blocking.d.ts.map +1 -0
  887. package/services/permissions/register-probers.d.ts +13 -0
  888. package/services/permissions/register-probers.d.ts.map +1 -0
  889. package/services/permissions/register-probers.js +15 -0
  890. package/services/permissions-registry.d.ts.map +1 -0
  891. package/services/permissions-registry.js +209 -0
  892. package/services/plugin-compiler.d.ts +51 -0
  893. package/services/plugin-compiler.d.ts.map +1 -0
  894. package/services/plugin-compiler.js +168 -0
  895. package/services/plugin-installer.d.ts +93 -0
  896. package/services/plugin-installer.d.ts.map +1 -0
  897. package/services/plugin-installer.js +663 -0
  898. package/services/plugin-manager-types.d.ts +114 -0
  899. package/services/plugin-manager-types.d.ts.map +1 -0
  900. package/services/proactive-interaction-decider.d.ts +113 -0
  901. package/services/proactive-interaction-decider.d.ts.map +1 -0
  902. package/services/proactive-interaction-decider.js +333 -0
  903. package/services/proactive-interaction-gate.d.ts +70 -0
  904. package/services/proactive-interaction-gate.d.ts.map +1 -0
  905. package/services/proactive-interaction-gate.js +148 -0
  906. package/services/push/apns-provider.d.ts +58 -0
  907. package/services/push/apns-provider.d.ts.map +1 -0
  908. package/services/push/apns-provider.js +186 -0
  909. package/services/push/fcm-provider.d.ts +49 -0
  910. package/services/push/fcm-provider.d.ts.map +1 -0
  911. package/services/push/fcm-provider.js +206 -0
  912. package/services/push/notification-push-service.d.ts +58 -0
  913. package/services/push/notification-push-service.d.ts.map +1 -0
  914. package/services/push/notification-push-service.js +148 -0
  915. package/services/push/push-token-registry.d.ts +49 -0
  916. package/services/push/push-token-registry.d.ts.map +1 -0
  917. package/services/push/push-token-registry.js +91 -0
  918. package/services/push/push-types.d.ts +41 -0
  919. package/services/push/push-types.d.ts.map +1 -0
  920. package/services/push/push-types.js +16 -0
  921. package/services/registry-client-app-meta.d.ts +6 -0
  922. package/services/registry-client-app-meta.d.ts.map +1 -0
  923. package/services/registry-client-app-meta.js +153 -0
  924. package/services/registry-client-endpoints.d.ts +7 -0
  925. package/services/registry-client-endpoints.d.ts.map +1 -0
  926. package/services/registry-client-endpoints.js +199 -0
  927. package/services/registry-client-local.d.ts +4 -0
  928. package/services/registry-client-local.d.ts.map +1 -0
  929. package/services/registry-client-local.js +563 -0
  930. package/services/registry-client-network.d.ts +27 -0
  931. package/services/registry-client-network.d.ts.map +1 -0
  932. package/services/registry-client-network.js +211 -0
  933. package/services/registry-client-queries.d.ts +26 -0
  934. package/services/registry-client-queries.d.ts.map +1 -0
  935. package/services/registry-client-queries.js +216 -0
  936. package/services/registry-client-types.d.ts +133 -0
  937. package/services/registry-client-types.d.ts.map +1 -0
  938. package/services/registry-client-types.js +1 -0
  939. package/services/registry-client.d.ts +39 -0
  940. package/services/registry-client.d.ts.map +1 -0
  941. package/services/registry-client.js +292 -0
  942. package/services/relationships-graph.d.ts +13 -0
  943. package/services/relationships-graph.d.ts.map +1 -0
  944. package/services/relationships-graph.js +48 -0
  945. package/services/remote-capability-cloud-sandbox.d.ts +45 -0
  946. package/services/remote-capability-cloud-sandbox.d.ts.map +1 -0
  947. package/services/remote-capability-cloud-sandbox.js +253 -0
  948. package/services/remote-capability-endpoint-conformance.d.ts +60 -0
  949. package/services/remote-capability-endpoint-conformance.d.ts.map +1 -0
  950. package/services/remote-capability-endpoint-conformance.js +819 -0
  951. package/services/remote-capability-endpoint-provider.d.ts +54 -0
  952. package/services/remote-capability-endpoint-provider.d.ts.map +1 -0
  953. package/services/remote-capability-endpoint-provider.js +255 -0
  954. package/services/remote-capability-live-report.d.ts +19 -0
  955. package/services/remote-capability-live-report.d.ts.map +1 -0
  956. package/services/remote-capability-live-report.js +147 -0
  957. package/services/remote-capability-router.d.ts +49 -0
  958. package/services/remote-capability-router.d.ts.map +1 -0
  959. package/services/remote-capability-router.js +784 -0
  960. package/services/remote-capability-url-endpoint-providers.d.ts +17 -0
  961. package/services/remote-capability-url-endpoint-providers.d.ts.map +1 -0
  962. package/services/remote-capability-url-endpoint-providers.js +69 -0
  963. package/services/remote-plugin-adapter.d.ts +42 -0
  964. package/services/remote-plugin-adapter.d.ts.map +1 -0
  965. package/services/remote-plugin-adapter.js +1734 -0
  966. package/services/remote-plugin-bridge.d.ts +81 -0
  967. package/services/remote-plugin-bridge.d.ts.map +1 -0
  968. package/services/remote-plugin-bridge.js +669 -0
  969. package/services/remote-signing-service.d.ts +110 -0
  970. package/services/remote-signing-service.d.ts.map +1 -0
  971. package/services/remote-signing-service.js +264 -0
  972. package/services/research-task-executor.d.ts +14 -0
  973. package/services/research-task-executor.d.ts.map +1 -0
  974. package/services/research-task-executor.js +133 -0
  975. package/services/sandbox-engine.d.ts.map +1 -0
  976. package/services/sandbox-manager.d.ts +132 -0
  977. package/services/sandbox-manager.d.ts.map +1 -0
  978. package/services/sandbox-manager.js +440 -0
  979. package/services/self-updater.d.ts +38 -0
  980. package/services/self-updater.d.ts.map +1 -0
  981. package/services/self-updater.js +262 -0
  982. package/services/send-handler-availability.d.ts.map +1 -0
  983. package/services/send-handler-availability.js +23 -0
  984. package/services/shell-execution-router.d.ts +69 -0
  985. package/services/shell-execution-router.d.ts.map +1 -0
  986. package/services/shell-execution-router.js +346 -0
  987. package/services/signing-policy.d.ts +46 -0
  988. package/services/signing-policy.d.ts.map +1 -0
  989. package/services/task-executor.d.ts.map +1 -0
  990. package/services/tee-boot-gate-state.d.ts +29 -0
  991. package/services/tee-boot-gate-state.d.ts.map +1 -0
  992. package/services/tee-boot-gate-state.js +38 -0
  993. package/services/tee-boot-gate.d.ts +45 -0
  994. package/services/tee-boot-gate.d.ts.map +1 -0
  995. package/services/tee-boot-gate.js +80 -0
  996. package/services/tee-confidential-inference.d.ts +177 -0
  997. package/services/tee-confidential-inference.d.ts.map +1 -0
  998. package/services/tee-confidential-inference.js +254 -0
  999. package/services/tee-evidence.d.ts +46 -0
  1000. package/services/tee-evidence.d.ts.map +1 -0
  1001. package/services/tee-evidence.js +149 -0
  1002. package/services/tee-key-release.d.ts +100 -0
  1003. package/services/tee-key-release.d.ts.map +1 -0
  1004. package/services/tee-key-release.js +301 -0
  1005. package/services/tee-model-key-boot.d.ts +82 -0
  1006. package/services/tee-model-key-boot.d.ts.map +1 -0
  1007. package/services/tee-model-key-boot.js +99 -0
  1008. package/services/tee-policy.d.ts +31 -0
  1009. package/services/tee-policy.d.ts.map +1 -0
  1010. package/services/tee-policy.js +233 -0
  1011. package/services/tee-production-profile.d.ts +35 -0
  1012. package/services/tee-production-profile.d.ts.map +1 -0
  1013. package/services/tee-production-profile.js +64 -0
  1014. package/services/tee-release-policy.d.ts +18 -0
  1015. package/services/tee-release-policy.d.ts.map +1 -0
  1016. package/services/tee-release-policy.js +53 -0
  1017. package/services/tee-revocation.d.ts +60 -0
  1018. package/services/tee-revocation.d.ts.map +1 -0
  1019. package/services/tee-revocation.js +150 -0
  1020. package/services/tee-runtime-config.d.ts +9 -0
  1021. package/services/tee-runtime-config.d.ts.map +1 -0
  1022. package/services/tee-runtime-config.js +109 -0
  1023. package/services/tee-sealed-volume.d.ts +114 -0
  1024. package/services/tee-sealed-volume.d.ts.map +1 -0
  1025. package/services/tee-sealed-volume.js +161 -0
  1026. package/services/tee-signer-backend.d.ts +18 -0
  1027. package/services/tee-signer-backend.d.ts.map +1 -0
  1028. package/services/tee-signer-backend.js +26 -0
  1029. package/services/update-checker.d.ts +29 -0
  1030. package/services/update-checker.d.ts.map +1 -0
  1031. package/services/vault-signer-backend.d.ts +32 -0
  1032. package/services/vault-signer-backend.d.ts.map +1 -0
  1033. package/services/vault-signer-backend.js +57 -0
  1034. package/services/version-compat.d.ts.map +1 -0
  1035. package/services/version-compat.js +212 -0
  1036. package/services/vfs-builtin-shell.d.ts +17 -0
  1037. package/services/vfs-builtin-shell.d.ts.map +1 -0
  1038. package/services/vfs-builtin-shell.js +375 -0
  1039. package/services/vfs-git.d.ts +18 -0
  1040. package/services/vfs-git.d.ts.map +1 -0
  1041. package/services/vfs-git.js +315 -0
  1042. package/services/virtual-filesystem.d.ts +100 -0
  1043. package/services/virtual-filesystem.d.ts.map +1 -0
  1044. package/services/virtual-filesystem.js +482 -0
  1045. package/shared/conversation-format.d.ts.map +1 -0
  1046. package/shared/conversation-format.js +69 -0
  1047. package/shared/ui-catalog-prompt.d.ts.map +1 -0
  1048. package/shared/workspace-resolution.d.ts.map +1 -0
  1049. package/shared/workspace-resolution.js +82 -0
  1050. package/test-support/index.d.ts +4 -0
  1051. package/test-support/index.d.ts.map +1 -0
  1052. package/test-support/process-helpers.d.ts.map +1 -0
  1053. package/test-support/route-test-helpers.d.ts.map +1 -0
  1054. package/test-support/test-helpers.d.ts.map +1 -0
  1055. package/triggers/runtime.d.ts +30 -0
  1056. package/triggers/runtime.d.ts.map +1 -0
  1057. package/triggers/runtime.js +486 -0
  1058. package/triggers/scheduling.d.ts +59 -0
  1059. package/triggers/scheduling.d.ts.map +1 -0
  1060. package/triggers/scheduling.js +208 -0
  1061. package/triggers/types.d.ts +30 -0
  1062. package/triggers/types.d.ts.map +1 -0
  1063. package/tui/agent-terminal-tui.d.ts +14 -0
  1064. package/tui/agent-terminal-tui.d.ts.map +1 -0
  1065. package/tui/agent-terminal-tui.js +518 -0
  1066. package/tui/slash-commands.d.ts +107 -0
  1067. package/tui/slash-commands.d.ts.map +1 -0
  1068. package/tui/slash-commands.js +108 -0
  1069. package/tui/tui-enabled.d.ts +8 -0
  1070. package/tui/tui-enabled.d.ts.map +1 -0
  1071. package/tui/tui-enabled.js +17 -0
  1072. package/types/agent-skills.d.ts.map +1 -0
  1073. package/types/config-like.d.ts.map +1 -0
  1074. package/types/index.d.ts +4 -0
  1075. package/types/index.d.ts.map +1 -0
  1076. package/types/trajectory.d.ts +21 -0
  1077. package/types/trajectory.d.ts.map +1 -0
  1078. package/utils/atomic-json.d.ts.map +1 -0
  1079. package/utils/terminal-command.d.ts +10 -0
  1080. package/utils/terminal-command.d.ts.map +1 -0
  1081. package/utils/terminal-command.js +19 -0
  1082. package/version-resolver.d.ts.map +1 -0
  1083. package/packages/agent/src/actions/connector-resolver.d.ts.map +0 -1
  1084. package/packages/agent/src/actions/connector-resolver.js +0 -253
  1085. package/packages/agent/src/actions/contact.d.ts.map +0 -1
  1086. package/packages/agent/src/actions/contact.js +0 -1698
  1087. package/packages/agent/src/actions/context-signal-lexicon.d.ts.map +0 -1
  1088. package/packages/agent/src/actions/context-signal.d.ts +0 -48
  1089. package/packages/agent/src/actions/context-signal.d.ts.map +0 -1
  1090. package/packages/agent/src/actions/context-signal.js +0 -153
  1091. package/packages/agent/src/actions/database.d.ts.map +0 -1
  1092. package/packages/agent/src/actions/database.js +0 -671
  1093. package/packages/agent/src/actions/extract-page.d.ts +0 -3
  1094. package/packages/agent/src/actions/extract-page.d.ts.map +0 -1
  1095. package/packages/agent/src/actions/extract-page.js +0 -153
  1096. package/packages/agent/src/actions/extract-params.d.ts +0 -87
  1097. package/packages/agent/src/actions/extract-params.d.ts.map +0 -1
  1098. package/packages/agent/src/actions/extract-params.js +0 -187
  1099. package/packages/agent/src/actions/grounded-action-reply.d.ts.map +0 -1
  1100. package/packages/agent/src/actions/grounded-action-reply.js +0 -287
  1101. package/packages/agent/src/actions/index.d.ts +0 -22
  1102. package/packages/agent/src/actions/index.d.ts.map +0 -1
  1103. package/packages/agent/src/actions/index.js +0 -21
  1104. package/packages/agent/src/actions/logs.d.ts.map +0 -1
  1105. package/packages/agent/src/actions/media.d.ts +0 -9
  1106. package/packages/agent/src/actions/media.d.ts.map +0 -1
  1107. package/packages/agent/src/actions/media.js +0 -135
  1108. package/packages/agent/src/actions/memories.d.ts +0 -9
  1109. package/packages/agent/src/actions/memories.d.ts.map +0 -1
  1110. package/packages/agent/src/actions/memories.js +0 -369
  1111. package/packages/agent/src/actions/page-action-groups.d.ts +0 -17
  1112. package/packages/agent/src/actions/page-action-groups.d.ts.map +0 -1
  1113. package/packages/agent/src/actions/page-action-groups.js +0 -413
  1114. package/packages/agent/src/actions/plugin.d.ts +0 -32
  1115. package/packages/agent/src/actions/plugin.d.ts.map +0 -1
  1116. package/packages/agent/src/actions/plugin.js +0 -780
  1117. package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +0 -1
  1118. package/packages/agent/src/actions/recent-conversation-texts.js +0 -76
  1119. package/packages/agent/src/actions/runtime.d.ts.map +0 -1
  1120. package/packages/agent/src/actions/runtime.js +0 -517
  1121. package/packages/agent/src/actions/settings-actions.d.ts +0 -19
  1122. package/packages/agent/src/actions/settings-actions.d.ts.map +0 -1
  1123. package/packages/agent/src/actions/settings-actions.js +0 -478
  1124. package/packages/agent/src/actions/skill-command.d.ts +0 -20
  1125. package/packages/agent/src/actions/skill-command.d.ts.map +0 -1
  1126. package/packages/agent/src/actions/skill-command.js +0 -170
  1127. package/packages/agent/src/actions/stream-control.d.ts +0 -20
  1128. package/packages/agent/src/actions/stream-control.d.ts.map +0 -1
  1129. package/packages/agent/src/actions/stream-control.js +0 -166
  1130. package/packages/agent/src/actions/terminal.d.ts.map +0 -1
  1131. package/packages/agent/src/actions/terminal.js +0 -305
  1132. package/packages/agent/src/actions/trajectories.d.ts +0 -8
  1133. package/packages/agent/src/actions/trajectories.d.ts.map +0 -1
  1134. package/packages/agent/src/actions/trajectories.js +0 -135
  1135. package/packages/agent/src/actions/trigger.d.ts.map +0 -1
  1136. package/packages/agent/src/actions/trigger.js +0 -514
  1137. package/packages/agent/src/api/accounts-routes.d.ts +0 -38
  1138. package/packages/agent/src/api/accounts-routes.d.ts.map +0 -1
  1139. package/packages/agent/src/api/accounts-routes.js +0 -927
  1140. package/packages/agent/src/api/agent-admin-routes.d.ts +0 -39
  1141. package/packages/agent/src/api/agent-admin-routes.d.ts.map +0 -1
  1142. package/packages/agent/src/api/agent-admin-routes.js +0 -190
  1143. package/packages/agent/src/api/agent-lifecycle-routes.d.ts.map +0 -1
  1144. package/packages/agent/src/api/agent-lifecycle-routes.js +0 -101
  1145. package/packages/agent/src/api/agent-model.d.ts +0 -5
  1146. package/packages/agent/src/api/agent-model.d.ts.map +0 -1
  1147. package/packages/agent/src/api/agent-model.js +0 -170
  1148. package/packages/agent/src/api/agent-status-routes.d.ts +0 -75
  1149. package/packages/agent/src/api/agent-status-routes.d.ts.map +0 -1
  1150. package/packages/agent/src/api/agent-status-routes.js +0 -264
  1151. package/packages/agent/src/api/agent-transfer-routes.d.ts.map +0 -1
  1152. package/packages/agent/src/api/agent-transfer-routes.js +0 -124
  1153. package/packages/agent/src/api/app-package-routes.d.ts +0 -7
  1154. package/packages/agent/src/api/app-package-routes.d.ts.map +0 -1
  1155. package/packages/agent/src/api/app-package-routes.js +0 -59
  1156. package/packages/agent/src/api/apps-routes.d.ts +0 -32
  1157. package/packages/agent/src/api/apps-routes.d.ts.map +0 -1
  1158. package/packages/agent/src/api/apps-routes.js +0 -998
  1159. package/packages/agent/src/api/auth-routes.d.ts.map +0 -1
  1160. package/packages/agent/src/api/auth-routes.js +0 -119
  1161. package/packages/agent/src/api/avatar-routes.d.ts.map +0 -1
  1162. package/packages/agent/src/api/avatar-routes.js +0 -205
  1163. package/packages/agent/src/api/binance-skill-helpers.d.ts +0 -21
  1164. package/packages/agent/src/api/binance-skill-helpers.d.ts.map +0 -1
  1165. package/packages/agent/src/api/binance-skill-helpers.js +0 -745
  1166. package/packages/agent/src/api/bug-report-routes.d.ts +0 -10
  1167. package/packages/agent/src/api/bug-report-routes.d.ts.map +0 -1
  1168. package/packages/agent/src/api/bug-report-routes.js +0 -271
  1169. package/packages/agent/src/api/build-variant-routes.d.ts +0 -27
  1170. package/packages/agent/src/api/build-variant-routes.d.ts.map +0 -1
  1171. package/packages/agent/src/api/build-variant-routes.js +0 -27
  1172. package/packages/agent/src/api/character-routes.d.ts +0 -52
  1173. package/packages/agent/src/api/character-routes.d.ts.map +0 -1
  1174. package/packages/agent/src/api/character-routes.js +0 -377
  1175. package/packages/agent/src/api/chat-augmentation.d.ts +0 -70
  1176. package/packages/agent/src/api/chat-augmentation.d.ts.map +0 -1
  1177. package/packages/agent/src/api/chat-augmentation.js +0 -464
  1178. package/packages/agent/src/api/chat-routes.d.ts +0 -124
  1179. package/packages/agent/src/api/chat-routes.d.ts.map +0 -1
  1180. package/packages/agent/src/api/chat-routes.js +0 -1841
  1181. package/packages/agent/src/api/chat-text-helpers.d.ts.map +0 -1
  1182. package/packages/agent/src/api/client-chat-admin.d.ts.map +0 -1
  1183. package/packages/agent/src/api/cloud-route-registry.d.ts +0 -22
  1184. package/packages/agent/src/api/cloud-route-registry.d.ts.map +0 -1
  1185. package/packages/agent/src/api/cloud-route-registry.js +0 -20
  1186. package/packages/agent/src/api/compat-utils.d.ts.map +0 -1
  1187. package/packages/agent/src/api/config-env.d.ts.map +0 -1
  1188. package/packages/agent/src/api/config-env.js +0 -284
  1189. package/packages/agent/src/api/config-routes.d.ts +0 -40
  1190. package/packages/agent/src/api/config-routes.d.ts.map +0 -1
  1191. package/packages/agent/src/api/config-routes.js +0 -429
  1192. package/packages/agent/src/api/connector-account-routes.d.ts.map +0 -1
  1193. package/packages/agent/src/api/connector-account-routes.js +0 -740
  1194. package/packages/agent/src/api/connector-health.d.ts.map +0 -1
  1195. package/packages/agent/src/api/connector-oauth-callback-auth.d.ts.map +0 -1
  1196. package/packages/agent/src/api/connector-routes.d.ts +0 -36
  1197. package/packages/agent/src/api/connector-routes.d.ts.map +0 -1
  1198. package/packages/agent/src/api/connector-routes.js +0 -184
  1199. package/packages/agent/src/api/conversation-metadata.d.ts +0 -10
  1200. package/packages/agent/src/api/conversation-metadata.d.ts.map +0 -1
  1201. package/packages/agent/src/api/conversation-metadata.js +0 -107
  1202. package/packages/agent/src/api/conversation-routes.d.ts +0 -43
  1203. package/packages/agent/src/api/conversation-routes.d.ts.map +0 -1
  1204. package/packages/agent/src/api/conversation-routes.js +0 -1208
  1205. package/packages/agent/src/api/coordinator-wiring.d.ts.map +0 -1
  1206. package/packages/agent/src/api/coordinator-wiring.js +0 -108
  1207. package/packages/agent/src/api/credit-detection.d.ts +0 -9
  1208. package/packages/agent/src/api/credit-detection.d.ts.map +0 -1
  1209. package/packages/agent/src/api/credit-detection.js +0 -47
  1210. package/packages/agent/src/api/curated-skills-routes.d.ts +0 -22
  1211. package/packages/agent/src/api/curated-skills-routes.d.ts.map +0 -1
  1212. package/packages/agent/src/api/curated-skills-routes.js +0 -295
  1213. package/packages/agent/src/api/database.d.ts +0 -35
  1214. package/packages/agent/src/api/database.d.ts.map +0 -1
  1215. package/packages/agent/src/api/database.js +0 -1140
  1216. package/packages/agent/src/api/diagnostics-routes.d.ts +0 -59
  1217. package/packages/agent/src/api/diagnostics-routes.d.ts.map +0 -1
  1218. package/packages/agent/src/api/diagnostics-routes.js +0 -365
  1219. package/packages/agent/src/api/documents-routes.d.ts +0 -9
  1220. package/packages/agent/src/api/documents-routes.d.ts.map +0 -1
  1221. package/packages/agent/src/api/documents-routes.js +0 -26
  1222. package/packages/agent/src/api/documents-service-loader.d.ts +0 -76
  1223. package/packages/agent/src/api/documents-service-loader.d.ts.map +0 -1
  1224. package/packages/agent/src/api/documents-service-loader.js +0 -36
  1225. package/packages/agent/src/api/early-logs.d.ts +0 -29
  1226. package/packages/agent/src/api/early-logs.d.ts.map +0 -1
  1227. package/packages/agent/src/api/health-routes.d.ts +0 -46
  1228. package/packages/agent/src/api/health-routes.d.ts.map +0 -1
  1229. package/packages/agent/src/api/health-routes.js +0 -450
  1230. package/packages/agent/src/api/inbox-routes.d.ts.map +0 -1
  1231. package/packages/agent/src/api/inbox-routes.js +0 -1579
  1232. package/packages/agent/src/api/index.d.ts +0 -46
  1233. package/packages/agent/src/api/index.d.ts.map +0 -1
  1234. package/packages/agent/src/api/index.js +0 -49
  1235. package/packages/agent/src/api/memory-bounds.d.ts +0 -51
  1236. package/packages/agent/src/api/memory-bounds.d.ts.map +0 -1
  1237. package/packages/agent/src/api/memory-bounds.js +0 -81
  1238. package/packages/agent/src/api/memory-routes.d.ts.map +0 -1
  1239. package/packages/agent/src/api/memory-routes.js +0 -474
  1240. package/packages/agent/src/api/misc-routes.d.ts +0 -64
  1241. package/packages/agent/src/api/misc-routes.d.ts.map +0 -1
  1242. package/packages/agent/src/api/misc-routes.js +0 -569
  1243. package/packages/agent/src/api/mobile-optional-routes.d.ts.map +0 -1
  1244. package/packages/agent/src/api/mobile-optional-routes.js +0 -91
  1245. package/packages/agent/src/api/model-provider-helpers.d.ts +0 -68
  1246. package/packages/agent/src/api/model-provider-helpers.d.ts.map +0 -1
  1247. package/packages/agent/src/api/model-provider-helpers.js +0 -623
  1248. package/packages/agent/src/api/models-routes.d.ts.map +0 -1
  1249. package/packages/agent/src/api/music-player-route-fallback.d.ts.map +0 -1
  1250. package/packages/agent/src/api/nfa-routes.d.ts +0 -6
  1251. package/packages/agent/src/api/nfa-routes.d.ts.map +0 -1
  1252. package/packages/agent/src/api/nfa-routes.js +0 -125
  1253. package/packages/agent/src/api/onboarding-routes.d.ts +0 -50
  1254. package/packages/agent/src/api/onboarding-routes.d.ts.map +0 -1
  1255. package/packages/agent/src/api/onboarding-routes.js +0 -588
  1256. package/packages/agent/src/api/owner-contact-helpers.d.ts.map +0 -1
  1257. package/packages/agent/src/api/parse-action-block.d.ts +0 -53
  1258. package/packages/agent/src/api/parse-action-block.d.ts.map +0 -1
  1259. package/packages/agent/src/api/permission-request-prompt.d.ts +0 -19
  1260. package/packages/agent/src/api/permission-request-prompt.d.ts.map +0 -1
  1261. package/packages/agent/src/api/permission-request-prompt.js +0 -53
  1262. package/packages/agent/src/api/permissions-routes-extra.d.ts +0 -30
  1263. package/packages/agent/src/api/permissions-routes-extra.d.ts.map +0 -1
  1264. package/packages/agent/src/api/permissions-routes.d.ts +0 -27
  1265. package/packages/agent/src/api/permissions-routes.d.ts.map +0 -1
  1266. package/packages/agent/src/api/permissions-routes.js +0 -352
  1267. package/packages/agent/src/api/plugin-discovery-helpers.d.ts +0 -147
  1268. package/packages/agent/src/api/plugin-discovery-helpers.d.ts.map +0 -1
  1269. package/packages/agent/src/api/plugin-discovery-helpers.js +0 -1118
  1270. package/packages/agent/src/api/plugin-routes.d.ts +0 -144
  1271. package/packages/agent/src/api/plugin-routes.d.ts.map +0 -1
  1272. package/packages/agent/src/api/plugin-routes.js +0 -1285
  1273. package/packages/agent/src/api/plugin-runtime-apply.d.ts +0 -31
  1274. package/packages/agent/src/api/plugin-runtime-apply.d.ts.map +0 -1
  1275. package/packages/agent/src/api/plugin-runtime-apply.js +0 -217
  1276. package/packages/agent/src/api/plugin-validation.d.ts.map +0 -1
  1277. package/packages/agent/src/api/provider-switch-config.d.ts +0 -62
  1278. package/packages/agent/src/api/provider-switch-config.d.ts.map +0 -1
  1279. package/packages/agent/src/api/provider-switch-config.js +0 -719
  1280. package/packages/agent/src/api/provider-switch-routes.d.ts +0 -29
  1281. package/packages/agent/src/api/provider-switch-routes.d.ts.map +0 -1
  1282. package/packages/agent/src/api/provider-switch-routes.js +0 -142
  1283. package/packages/agent/src/api/rate-limiter.d.ts.map +0 -1
  1284. package/packages/agent/src/api/registry-routes.d.ts +0 -29
  1285. package/packages/agent/src/api/registry-routes.d.ts.map +0 -1
  1286. package/packages/agent/src/api/registry-routes.js +0 -98
  1287. package/packages/agent/src/api/registry-service.d.ts +0 -77
  1288. package/packages/agent/src/api/registry-service.d.ts.map +0 -1
  1289. package/packages/agent/src/api/registry-service.js +0 -190
  1290. package/packages/agent/src/api/relationships-routes.d.ts.map +0 -1
  1291. package/packages/agent/src/api/relationships-routes.js +0 -287
  1292. package/packages/agent/src/api/runtime-plugin-routes.d.ts.map +0 -1
  1293. package/packages/agent/src/api/runtime-plugin-routes.js +0 -203
  1294. package/packages/agent/src/api/server-auth.d.ts +0 -46
  1295. package/packages/agent/src/api/server-auth.d.ts.map +0 -1
  1296. package/packages/agent/src/api/server-auth.js +0 -507
  1297. package/packages/agent/src/api/server-autonomy-helpers.d.ts +0 -5
  1298. package/packages/agent/src/api/server-autonomy-helpers.d.ts.map +0 -1
  1299. package/packages/agent/src/api/server-helpers-auth.d.ts +0 -41
  1300. package/packages/agent/src/api/server-helpers-auth.d.ts.map +0 -1
  1301. package/packages/agent/src/api/server-helpers-auth.js +0 -627
  1302. package/packages/agent/src/api/server-helpers-config.d.ts +0 -37
  1303. package/packages/agent/src/api/server-helpers-config.d.ts.map +0 -1
  1304. package/packages/agent/src/api/server-helpers-config.js +0 -293
  1305. package/packages/agent/src/api/server-helpers-fetch.d.ts.map +0 -1
  1306. package/packages/agent/src/api/server-helpers-mcp.d.ts +0 -12
  1307. package/packages/agent/src/api/server-helpers-mcp.d.ts.map +0 -1
  1308. package/packages/agent/src/api/server-helpers-mcp.js +0 -315
  1309. package/packages/agent/src/api/server-helpers-plugin.d.ts +0 -13
  1310. package/packages/agent/src/api/server-helpers-plugin.d.ts.map +0 -1
  1311. package/packages/agent/src/api/server-helpers-swarm.d.ts +0 -101
  1312. package/packages/agent/src/api/server-helpers-swarm.d.ts.map +0 -1
  1313. package/packages/agent/src/api/server-helpers-swarm.js +0 -646
  1314. package/packages/agent/src/api/server-helpers-wallet.d.ts +0 -18
  1315. package/packages/agent/src/api/server-helpers-wallet.d.ts.map +0 -1
  1316. package/packages/agent/src/api/server-helpers.d.ts +0 -96
  1317. package/packages/agent/src/api/server-helpers.d.ts.map +0 -1
  1318. package/packages/agent/src/api/server-helpers.js +0 -595
  1319. package/packages/agent/src/api/server-route-dispatch.d.ts +0 -30
  1320. package/packages/agent/src/api/server-route-dispatch.d.ts.map +0 -1
  1321. package/packages/agent/src/api/server-route-dispatch.js +0 -103
  1322. package/packages/agent/src/api/server-startup.d.ts +0 -16
  1323. package/packages/agent/src/api/server-startup.d.ts.map +0 -1
  1324. package/packages/agent/src/api/server-startup.js +0 -14
  1325. package/packages/agent/src/api/server-types.d.ts +0 -232
  1326. package/packages/agent/src/api/server-types.d.ts.map +0 -1
  1327. package/packages/agent/src/api/server-types.js +0 -6
  1328. package/packages/agent/src/api/server.d.ts +0 -61
  1329. package/packages/agent/src/api/server.d.ts.map +0 -1
  1330. package/packages/agent/src/api/server.js +0 -3215
  1331. package/packages/agent/src/api/skill-discovery-helpers.d.ts +0 -80
  1332. package/packages/agent/src/api/skill-discovery-helpers.d.ts.map +0 -1
  1333. package/packages/agent/src/api/skill-discovery-helpers.js +0 -385
  1334. package/packages/agent/src/api/skills-routes.d.ts +0 -32
  1335. package/packages/agent/src/api/skills-routes.d.ts.map +0 -1
  1336. package/packages/agent/src/api/skills-routes.js +0 -978
  1337. package/packages/agent/src/api/static-file-server.d.ts +0 -19
  1338. package/packages/agent/src/api/static-file-server.d.ts.map +0 -1
  1339. package/packages/agent/src/api/static-file-server.js +0 -234
  1340. package/packages/agent/src/api/subscription-routes.d.ts +0 -20
  1341. package/packages/agent/src/api/subscription-routes.d.ts.map +0 -1
  1342. package/packages/agent/src/api/subscription-routes.js +0 -261
  1343. package/packages/agent/src/api/task-agent-message-routing.d.ts.map +0 -1
  1344. package/packages/agent/src/api/terminal-execution-routing.d.ts +0 -14
  1345. package/packages/agent/src/api/terminal-execution-routing.d.ts.map +0 -1
  1346. package/packages/agent/src/api/terminal-run-limits.d.ts.map +0 -1
  1347. package/packages/agent/src/api/terminal-run-limits.js +0 -20
  1348. package/packages/agent/src/api/trade-safety.d.ts +0 -35
  1349. package/packages/agent/src/api/trade-safety.d.ts.map +0 -1
  1350. package/packages/agent/src/api/trade-safety.js +0 -62
  1351. package/packages/agent/src/api/training-backend-check.d.ts.map +0 -1
  1352. package/packages/agent/src/api/training-service-like.d.ts +0 -39
  1353. package/packages/agent/src/api/training-service-like.d.ts.map +0 -1
  1354. package/packages/agent/src/api/travel-provider-relay-routes.d.ts +0 -9
  1355. package/packages/agent/src/api/travel-provider-relay-routes.d.ts.map +0 -1
  1356. package/packages/agent/src/api/travel-provider-relay-routes.js +0 -143
  1357. package/packages/agent/src/api/tx-service.d.ts +0 -53
  1358. package/packages/agent/src/api/tx-service.d.ts.map +0 -1
  1359. package/packages/agent/src/api/tx-service.js +0 -217
  1360. package/packages/agent/src/api/update-routes.d.ts +0 -19
  1361. package/packages/agent/src/api/update-routes.d.ts.map +0 -1
  1362. package/packages/agent/src/api/update-routes.js +0 -54
  1363. package/packages/agent/src/api/wallet-capability.d.ts +0 -33
  1364. package/packages/agent/src/api/wallet-capability.d.ts.map +0 -1
  1365. package/packages/agent/src/api/wallet-capability.js +0 -193
  1366. package/packages/agent/src/api/wallet-dex-prices.d.ts.map +0 -1
  1367. package/packages/agent/src/api/wallet-env-sync.d.ts +0 -2
  1368. package/packages/agent/src/api/wallet-env-sync.d.ts.map +0 -1
  1369. package/packages/agent/src/api/wallet-evm-balance.d.ts.map +0 -1
  1370. package/packages/agent/src/api/wallet-routes.d.ts +0 -41
  1371. package/packages/agent/src/api/wallet-routes.d.ts.map +0 -1
  1372. package/packages/agent/src/api/wallet-routes.js +0 -848
  1373. package/packages/agent/src/api/wallet-rpc.d.ts +0 -64
  1374. package/packages/agent/src/api/wallet-rpc.d.ts.map +0 -1
  1375. package/packages/agent/src/api/wallet-rpc.js +0 -437
  1376. package/packages/agent/src/api/wallet-trading-profile.d.ts.map +0 -1
  1377. package/packages/agent/src/api/wallet-trading-profile.js +0 -544
  1378. package/packages/agent/src/api/wallet.d.ts +0 -64
  1379. package/packages/agent/src/api/wallet.d.ts.map +0 -1
  1380. package/packages/agent/src/api/wallet.js +0 -780
  1381. package/packages/agent/src/api/workbench-helpers.d.ts +0 -39
  1382. package/packages/agent/src/api/workbench-helpers.d.ts.map +0 -1
  1383. package/packages/agent/src/api/workbench-helpers.js +0 -137
  1384. package/packages/agent/src/api/workbench-routes.d.ts +0 -43
  1385. package/packages/agent/src/api/workbench-routes.d.ts.map +0 -1
  1386. package/packages/agent/src/api/workbench-routes.js +0 -265
  1387. package/packages/agent/src/api/x-relay-routes.d.ts +0 -27
  1388. package/packages/agent/src/api/x-relay-routes.d.ts.map +0 -1
  1389. package/packages/agent/src/api/x-relay-routes.js +0 -134
  1390. package/packages/agent/src/api/zip-utils.d.ts.map +0 -1
  1391. package/packages/agent/src/auth/account-storage.d.ts +0 -48
  1392. package/packages/agent/src/auth/account-storage.d.ts.map +0 -1
  1393. package/packages/agent/src/auth/account-storage.js +0 -229
  1394. package/packages/agent/src/auth/anthropic.d.ts +0 -24
  1395. package/packages/agent/src/auth/anthropic.d.ts.map +0 -1
  1396. package/packages/agent/src/auth/claude-code-stealth-preload.d.ts +0 -2
  1397. package/packages/agent/src/auth/claude-code-stealth-preload.d.ts.map +0 -1
  1398. package/packages/agent/src/auth/claude-code-stealth-preload.js +0 -2
  1399. package/packages/agent/src/auth/claude-code-stealth.d.ts.map +0 -1
  1400. package/packages/agent/src/auth/claude-code-stealth.js +0 -116
  1401. package/packages/agent/src/auth/credentials.d.ts +0 -100
  1402. package/packages/agent/src/auth/credentials.d.ts.map +0 -1
  1403. package/packages/agent/src/auth/credentials.js +0 -553
  1404. package/packages/agent/src/auth/index.d.ts +0 -8
  1405. package/packages/agent/src/auth/index.d.ts.map +0 -1
  1406. package/packages/agent/src/auth/oauth-flow.d.ts +0 -106
  1407. package/packages/agent/src/auth/oauth-flow.d.ts.map +0 -1
  1408. package/packages/agent/src/auth/oauth-flow.js +0 -349
  1409. package/packages/agent/src/auth/openai-codex.d.ts +0 -27
  1410. package/packages/agent/src/auth/openai-codex.d.ts.map +0 -1
  1411. package/packages/agent/src/auth/openai-codex.js +0 -76
  1412. package/packages/agent/src/auth/refresh-mutex.d.ts +0 -19
  1413. package/packages/agent/src/auth/refresh-mutex.d.ts.map +0 -1
  1414. package/packages/agent/src/auth/refresh-mutex.js +0 -33
  1415. package/packages/agent/src/auth/types.d.ts +0 -58
  1416. package/packages/agent/src/auth/types.d.ts.map +0 -1
  1417. package/packages/agent/src/auth/types.js +0 -149
  1418. package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.d.ts.map +0 -1
  1419. package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.js +0 -113
  1420. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts +0 -26
  1421. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts.map +0 -1
  1422. package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.js +0 -343
  1423. package/packages/agent/src/auth/vendor/pi-oauth/pkce.d.ts.map +0 -1
  1424. package/packages/agent/src/autonomy/index.d.ts +0 -48
  1425. package/packages/agent/src/autonomy/index.d.ts.map +0 -1
  1426. package/packages/agent/src/autonomy/index.js +0 -344
  1427. package/packages/agent/src/awareness/index.d.ts +0 -2
  1428. package/packages/agent/src/awareness/index.d.ts.map +0 -1
  1429. package/packages/agent/src/awareness/registry.d.ts.map +0 -1
  1430. package/packages/agent/src/bin.d.ts.map +0 -1
  1431. package/packages/agent/src/bin.js +0 -51
  1432. package/packages/agent/src/cli/benchmark.d.ts.map +0 -1
  1433. package/packages/agent/src/cli/benchmark.js +0 -293
  1434. package/packages/agent/src/cli/index.d.ts.map +0 -1
  1435. package/packages/agent/src/cli/index.js +0 -94
  1436. package/packages/agent/src/cli/parse-duration.d.ts +0 -5
  1437. package/packages/agent/src/cli/parse-duration.d.ts.map +0 -1
  1438. package/packages/agent/src/cli/parse-duration.js +0 -27
  1439. package/packages/agent/src/config/character-schema.d.ts.map +0 -1
  1440. package/packages/agent/src/config/config.d.ts.map +0 -1
  1441. package/packages/agent/src/config/config.js +0 -285
  1442. package/packages/agent/src/config/env-vars.d.ts +0 -9
  1443. package/packages/agent/src/config/env-vars.d.ts.map +0 -1
  1444. package/packages/agent/src/config/env-vars.js +0 -281
  1445. package/packages/agent/src/config/feature-flags.d.ts +0 -17
  1446. package/packages/agent/src/config/feature-flags.d.ts.map +0 -1
  1447. package/packages/agent/src/config/feature-flags.js +0 -37
  1448. package/packages/agent/src/config/includes.d.ts +0 -26
  1449. package/packages/agent/src/config/includes.d.ts.map +0 -1
  1450. package/packages/agent/src/config/includes.js +0 -149
  1451. package/packages/agent/src/config/index.d.ts +0 -11
  1452. package/packages/agent/src/config/index.d.ts.map +0 -1
  1453. package/packages/agent/src/config/model-metadata.d.ts +0 -20
  1454. package/packages/agent/src/config/model-metadata.d.ts.map +0 -1
  1455. package/packages/agent/src/config/model-metadata.js +0 -133
  1456. package/packages/agent/src/config/owner-contacts.d.ts +0 -42
  1457. package/packages/agent/src/config/owner-contacts.d.ts.map +0 -1
  1458. package/packages/agent/src/config/owner-contacts.js +0 -238
  1459. package/packages/agent/src/config/paths.d.ts +0 -17
  1460. package/packages/agent/src/config/paths.d.ts.map +0 -1
  1461. package/packages/agent/src/config/paths.js +0 -65
  1462. package/packages/agent/src/config/plugin-auto-enable.d.ts.map +0 -1
  1463. package/packages/agent/src/config/plugin-widgets.d.ts +0 -29
  1464. package/packages/agent/src/config/plugin-widgets.d.ts.map +0 -1
  1465. package/packages/agent/src/config/plugin-widgets.js +0 -104
  1466. package/packages/agent/src/config/schema.d.ts +0 -87
  1467. package/packages/agent/src/config/schema.d.ts.map +0 -1
  1468. package/packages/agent/src/config/schema.js +0 -928
  1469. package/packages/agent/src/config/telegram-custom-commands.d.ts.map +0 -1
  1470. package/packages/agent/src/config/types.agent-defaults.d.ts.map +0 -1
  1471. package/packages/agent/src/config/types.agents.d.ts.map +0 -1
  1472. package/packages/agent/src/config/types.d.ts.map +0 -1
  1473. package/packages/agent/src/config/types.eliza.d.ts.map +0 -1
  1474. package/packages/agent/src/config/types.gateway.d.ts +0 -2
  1475. package/packages/agent/src/config/types.gateway.d.ts.map +0 -1
  1476. package/packages/agent/src/config/types.gateway.js +0 -1
  1477. package/packages/agent/src/config/types.hooks.d.ts.map +0 -1
  1478. package/packages/agent/src/config/types.messages.d.ts.map +0 -1
  1479. package/packages/agent/src/config/types.tools.d.ts +0 -2
  1480. package/packages/agent/src/config/types.tools.d.ts.map +0 -1
  1481. package/packages/agent/src/config/types.tools.js +0 -1
  1482. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +0 -1164
  1483. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts.map +0 -1
  1484. package/packages/agent/src/config/zod-schema.agent-runtime.js +0 -808
  1485. package/packages/agent/src/config/zod-schema.core.d.ts +0 -1279
  1486. package/packages/agent/src/config/zod-schema.core.d.ts.map +0 -1
  1487. package/packages/agent/src/config/zod-schema.core.js +0 -761
  1488. package/packages/agent/src/config/zod-schema.d.ts +0 -3404
  1489. package/packages/agent/src/config/zod-schema.d.ts.map +0 -1
  1490. package/packages/agent/src/config/zod-schema.hooks.d.ts.map +0 -1
  1491. package/packages/agent/src/config/zod-schema.js +0 -846
  1492. package/packages/agent/src/config/zod-schema.providers-core.d.ts +0 -2752
  1493. package/packages/agent/src/config/zod-schema.providers-core.d.ts.map +0 -1
  1494. package/packages/agent/src/config/zod-schema.providers-core.js +0 -969
  1495. package/packages/agent/src/config/zod-schema.session.d.ts +0 -183
  1496. package/packages/agent/src/config/zod-schema.session.d.ts.map +0 -1
  1497. package/packages/agent/src/contracts/awareness.d.ts.map +0 -1
  1498. package/packages/agent/src/contracts/index.d.ts +0 -2
  1499. package/packages/agent/src/contracts/index.d.ts.map +0 -1
  1500. package/packages/agent/src/contracts/index.js +0 -1
  1501. package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts +0 -177
  1502. package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts.map +0 -1
  1503. package/packages/agent/src/contracts/onboarding-provider-defaults.js +0 -202
  1504. package/packages/agent/src/diagnostics/index.d.ts +0 -2
  1505. package/packages/agent/src/diagnostics/index.d.ts.map +0 -1
  1506. package/packages/agent/src/diagnostics/index.js +0 -1
  1507. package/packages/agent/src/diagnostics/integration-observability.d.ts.map +0 -1
  1508. package/packages/agent/src/hooks/discovery.d.ts +0 -13
  1509. package/packages/agent/src/hooks/discovery.d.ts.map +0 -1
  1510. package/packages/agent/src/hooks/discovery.js +0 -191
  1511. package/packages/agent/src/hooks/eligibility.d.ts +0 -12
  1512. package/packages/agent/src/hooks/eligibility.d.ts.map +0 -1
  1513. package/packages/agent/src/hooks/index.d.ts +0 -3
  1514. package/packages/agent/src/hooks/index.d.ts.map +0 -1
  1515. package/packages/agent/src/hooks/loader.d.ts +0 -34
  1516. package/packages/agent/src/hooks/loader.d.ts.map +0 -1
  1517. package/packages/agent/src/hooks/loader.js +0 -214
  1518. package/packages/agent/src/hooks/registry.d.ts +0 -11
  1519. package/packages/agent/src/hooks/registry.d.ts.map +0 -1
  1520. package/packages/agent/src/hooks/types.d.ts.map +0 -1
  1521. package/packages/agent/src/index.d.ts +0 -73
  1522. package/packages/agent/src/index.d.ts.map +0 -1
  1523. package/packages/agent/src/index.js +0 -104
  1524. package/packages/agent/src/providers/admin-panel.d.ts.map +0 -1
  1525. package/packages/agent/src/providers/admin-trust.d.ts.map +0 -1
  1526. package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +0 -1
  1527. package/packages/agent/src/providers/automation-terminal-bridge.js +0 -77
  1528. package/packages/agent/src/providers/conversation-proximity.d.ts.map +0 -1
  1529. package/packages/agent/src/providers/escalation-trigger.d.ts.map +0 -1
  1530. package/packages/agent/src/providers/index.d.ts +0 -19
  1531. package/packages/agent/src/providers/index.d.ts.map +0 -1
  1532. package/packages/agent/src/providers/index.js +0 -18
  1533. package/packages/agent/src/providers/local-models.d.ts +0 -118
  1534. package/packages/agent/src/providers/local-models.d.ts.map +0 -1
  1535. package/packages/agent/src/providers/local-models.js +0 -418
  1536. package/packages/agent/src/providers/media-provider.d.ts +0 -233
  1537. package/packages/agent/src/providers/media-provider.d.ts.map +0 -1
  1538. package/packages/agent/src/providers/media-provider.js +0 -1474
  1539. package/packages/agent/src/providers/page-scoped-context.d.ts.map +0 -1
  1540. package/packages/agent/src/providers/page-scoped-context.js +0 -551
  1541. package/packages/agent/src/providers/pending-permissions-provider.d.ts +0 -19
  1542. package/packages/agent/src/providers/pending-permissions-provider.d.ts.map +0 -1
  1543. package/packages/agent/src/providers/pending-permissions-provider.js +0 -104
  1544. package/packages/agent/src/providers/recent-conversations.d.ts.map +0 -1
  1545. package/packages/agent/src/providers/recent-conversations.js +0 -100
  1546. package/packages/agent/src/providers/relevant-conversations.d.ts.map +0 -1
  1547. package/packages/agent/src/providers/relevant-conversations.js +0 -99
  1548. package/packages/agent/src/providers/role-backfill.d.ts +0 -18
  1549. package/packages/agent/src/providers/role-backfill.d.ts.map +0 -1
  1550. package/packages/agent/src/providers/role-backfill.js +0 -86
  1551. package/packages/agent/src/providers/rolodex.d.ts.map +0 -1
  1552. package/packages/agent/src/providers/rolodex.js +0 -83
  1553. package/packages/agent/src/providers/self-status.d.ts +0 -4
  1554. package/packages/agent/src/providers/self-status.d.ts.map +0 -1
  1555. package/packages/agent/src/providers/self-status.js +0 -22
  1556. package/packages/agent/src/providers/session-bridge.d.ts.map +0 -1
  1557. package/packages/agent/src/providers/session-bridge.js +0 -90
  1558. package/packages/agent/src/providers/session-utils.d.ts +0 -20
  1559. package/packages/agent/src/providers/session-utils.d.ts.map +0 -1
  1560. package/packages/agent/src/providers/session-utils.js +0 -32
  1561. package/packages/agent/src/providers/simple-mode.d.ts +0 -4
  1562. package/packages/agent/src/providers/simple-mode.d.ts.map +0 -1
  1563. package/packages/agent/src/providers/simple-mode.js +0 -49
  1564. package/packages/agent/src/providers/skill-provider.d.ts.map +0 -1
  1565. package/packages/agent/src/providers/tasks.d.ts.map +0 -1
  1566. package/packages/agent/src/providers/ui-catalog.d.ts.map +0 -1
  1567. package/packages/agent/src/providers/ui-catalog.js +0 -100
  1568. package/packages/agent/src/providers/user-name.d.ts.map +0 -1
  1569. package/packages/agent/src/providers/workspace-provider.d.ts.map +0 -1
  1570. package/packages/agent/src/providers/workspace-provider.js +0 -183
  1571. package/packages/agent/src/providers/workspace.d.ts +0 -53
  1572. package/packages/agent/src/providers/workspace.d.ts.map +0 -1
  1573. package/packages/agent/src/providers/workspace.js +0 -418
  1574. package/packages/agent/src/runtime/advanced-capabilities-config.d.ts +0 -8
  1575. package/packages/agent/src/runtime/advanced-capabilities-config.d.ts.map +0 -1
  1576. package/packages/agent/src/runtime/agent-event-service.d.ts.map +0 -1
  1577. package/packages/agent/src/runtime/agent-wallets.d.ts +0 -138
  1578. package/packages/agent/src/runtime/agent-wallets.d.ts.map +0 -1
  1579. package/packages/agent/src/runtime/agent-wallets.js +0 -308
  1580. package/packages/agent/src/runtime/analysis-mode-flag.d.ts +0 -93
  1581. package/packages/agent/src/runtime/analysis-mode-flag.d.ts.map +0 -1
  1582. package/packages/agent/src/runtime/analysis-mode-flag.js +0 -131
  1583. package/packages/agent/src/runtime/android-app-plugins.d.ts +0 -13
  1584. package/packages/agent/src/runtime/android-app-plugins.d.ts.map +0 -1
  1585. package/packages/agent/src/runtime/android-app-plugins.js +0 -48
  1586. package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts +0 -99
  1587. package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts.map +0 -1
  1588. package/packages/agent/src/runtime/aosp-dflash-adapter.js +0 -332
  1589. package/packages/agent/src/runtime/build-character-config.d.ts.map +0 -1
  1590. package/packages/agent/src/runtime/build-character-config.js +0 -176
  1591. package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts +0 -141
  1592. package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts.map +0 -1
  1593. package/packages/agent/src/runtime/conversation-compactor-runtime.js +0 -460
  1594. package/packages/agent/src/runtime/conversation-compactor.d.ts +0 -38
  1595. package/packages/agent/src/runtime/conversation-compactor.d.ts.map +0 -1
  1596. package/packages/agent/src/runtime/conversation-compactor.js +0 -1121
  1597. package/packages/agent/src/runtime/conversation-compactor.types.d.ts +0 -102
  1598. package/packages/agent/src/runtime/conversation-compactor.types.d.ts.map +0 -1
  1599. package/packages/agent/src/runtime/core-plugins.d.ts +0 -64
  1600. package/packages/agent/src/runtime/core-plugins.d.ts.map +0 -1
  1601. package/packages/agent/src/runtime/core-plugins.js +0 -120
  1602. package/packages/agent/src/runtime/custom-actions.d.ts +0 -43
  1603. package/packages/agent/src/runtime/custom-actions.d.ts.map +0 -1
  1604. package/packages/agent/src/runtime/custom-actions.js +0 -533
  1605. package/packages/agent/src/runtime/default-documents.d.ts +0 -21
  1606. package/packages/agent/src/runtime/default-documents.d.ts.map +0 -1
  1607. package/packages/agent/src/runtime/default-documents.js +0 -283
  1608. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +0 -1
  1609. package/packages/agent/src/runtime/eliza-plugin.js +0 -180
  1610. package/packages/agent/src/runtime/eliza.d.ts +0 -109
  1611. package/packages/agent/src/runtime/eliza.d.ts.map +0 -1
  1612. package/packages/agent/src/runtime/eliza.js +0 -3372
  1613. package/packages/agent/src/runtime/embedding-presets.d.ts +0 -19
  1614. package/packages/agent/src/runtime/embedding-presets.d.ts.map +0 -1
  1615. package/packages/agent/src/runtime/embedding-presets.js +0 -60
  1616. package/packages/agent/src/runtime/first-time-setup.d.ts +0 -47
  1617. package/packages/agent/src/runtime/first-time-setup.d.ts.map +0 -1
  1618. package/packages/agent/src/runtime/first-time-setup.js +0 -704
  1619. package/packages/agent/src/runtime/index.d.ts +0 -20
  1620. package/packages/agent/src/runtime/index.d.ts.map +0 -1
  1621. package/packages/agent/src/runtime/index.js +0 -19
  1622. package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts +0 -54
  1623. package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts.map +0 -1
  1624. package/packages/agent/src/runtime/load-plugin-from-vfs.js +0 -86
  1625. package/packages/agent/src/runtime/local-execution-mode.d.ts +0 -11
  1626. package/packages/agent/src/runtime/local-execution-mode.d.ts.map +0 -1
  1627. package/packages/agent/src/runtime/model-resolution.d.ts.map +0 -1
  1628. package/packages/agent/src/runtime/model-resolution.js +0 -55
  1629. package/packages/agent/src/runtime/native-runtime-features.d.ts.map +0 -1
  1630. package/packages/agent/src/runtime/onboarding-names.d.ts +0 -11
  1631. package/packages/agent/src/runtime/onboarding-names.d.ts.map +0 -1
  1632. package/packages/agent/src/runtime/onboarding-names.js +0 -81
  1633. package/packages/agent/src/runtime/operations/classifier.d.ts +0 -36
  1634. package/packages/agent/src/runtime/operations/classifier.d.ts.map +0 -1
  1635. package/packages/agent/src/runtime/operations/classifier.js +0 -72
  1636. package/packages/agent/src/runtime/operations/cold-strategy.d.ts +0 -19
  1637. package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +0 -1
  1638. package/packages/agent/src/runtime/operations/health-checks.d.ts +0 -25
  1639. package/packages/agent/src/runtime/operations/health-checks.d.ts.map +0 -1
  1640. package/packages/agent/src/runtime/operations/health.d.ts +0 -32
  1641. package/packages/agent/src/runtime/operations/health.d.ts.map +0 -1
  1642. package/packages/agent/src/runtime/operations/index.d.ts +0 -17
  1643. package/packages/agent/src/runtime/operations/index.d.ts.map +0 -1
  1644. package/packages/agent/src/runtime/operations/manager.d.ts +0 -70
  1645. package/packages/agent/src/runtime/operations/manager.d.ts.map +0 -1
  1646. package/packages/agent/src/runtime/operations/manager.js +0 -202
  1647. package/packages/agent/src/runtime/operations/reload-hot.d.ts +0 -43
  1648. package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +0 -1
  1649. package/packages/agent/src/runtime/operations/reload-hot.js +0 -181
  1650. package/packages/agent/src/runtime/operations/repository.d.ts +0 -66
  1651. package/packages/agent/src/runtime/operations/repository.d.ts.map +0 -1
  1652. package/packages/agent/src/runtime/operations/types.d.ts.map +0 -1
  1653. package/packages/agent/src/runtime/operations/vault-bridge.d.ts +0 -81
  1654. package/packages/agent/src/runtime/operations/vault-bridge.d.ts.map +0 -1
  1655. package/packages/agent/src/runtime/owner-entity.d.ts.map +0 -1
  1656. package/packages/agent/src/runtime/owner-entity.js +0 -30
  1657. package/packages/agent/src/runtime/pglite-error-compat.d.ts +0 -28
  1658. package/packages/agent/src/runtime/pglite-error-compat.d.ts.map +0 -1
  1659. package/packages/agent/src/runtime/pglite-error-compat.js +0 -54
  1660. package/packages/agent/src/runtime/plugin-collector.d.ts +0 -22
  1661. package/packages/agent/src/runtime/plugin-collector.d.ts.map +0 -1
  1662. package/packages/agent/src/runtime/plugin-collector.js +0 -503
  1663. package/packages/agent/src/runtime/plugin-lifecycle.d.ts +0 -45
  1664. package/packages/agent/src/runtime/plugin-lifecycle.d.ts.map +0 -1
  1665. package/packages/agent/src/runtime/plugin-lifecycle.js +0 -602
  1666. package/packages/agent/src/runtime/plugin-resolver.d.ts +0 -46
  1667. package/packages/agent/src/runtime/plugin-resolver.d.ts.map +0 -1
  1668. package/packages/agent/src/runtime/plugin-resolver.js +0 -1375
  1669. package/packages/agent/src/runtime/plugin-role-gating.d.ts +0 -24
  1670. package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +0 -1
  1671. package/packages/agent/src/runtime/plugin-role-gating.js +0 -106
  1672. package/packages/agent/src/runtime/plugin-types.d.ts +0 -64
  1673. package/packages/agent/src/runtime/plugin-types.d.ts.map +0 -1
  1674. package/packages/agent/src/runtime/plugin-types.js +0 -306
  1675. package/packages/agent/src/runtime/prompt-compaction.d.ts +0 -98
  1676. package/packages/agent/src/runtime/prompt-compaction.d.ts.map +0 -1
  1677. package/packages/agent/src/runtime/prompt-compaction.js +0 -362
  1678. package/packages/agent/src/runtime/prompt-optimization.d.ts +0 -47
  1679. package/packages/agent/src/runtime/prompt-optimization.d.ts.map +0 -1
  1680. package/packages/agent/src/runtime/prompt-optimization.js +0 -1123
  1681. package/packages/agent/src/runtime/release-plugin-policy.d.ts.map +0 -1
  1682. package/packages/agent/src/runtime/release-plugin-policy.js +0 -85
  1683. package/packages/agent/src/runtime/restart.d.ts +0 -9
  1684. package/packages/agent/src/runtime/restart.d.ts.map +0 -1
  1685. package/packages/agent/src/runtime/restart.js +0 -8
  1686. package/packages/agent/src/runtime/roles/src/index.d.ts +0 -24
  1687. package/packages/agent/src/runtime/roles/src/index.d.ts.map +0 -1
  1688. package/packages/agent/src/runtime/roles/src/index.js +0 -255
  1689. package/packages/agent/src/runtime/roles/src/provider.d.ts.map +0 -1
  1690. package/packages/agent/src/runtime/roles/src/types.d.ts.map +0 -1
  1691. package/packages/agent/src/runtime/roles/src/utils.d.ts.map +0 -1
  1692. package/packages/agent/src/runtime/roles.d.ts +0 -3
  1693. package/packages/agent/src/runtime/roles.d.ts.map +0 -1
  1694. package/packages/agent/src/runtime/subagent-output.d.ts +0 -51
  1695. package/packages/agent/src/runtime/subagent-output.d.ts.map +0 -1
  1696. package/packages/agent/src/runtime/subagent-output.js +0 -173
  1697. package/packages/agent/src/runtime/task-heartbeat.d.ts +0 -22
  1698. package/packages/agent/src/runtime/task-heartbeat.d.ts.map +0 -1
  1699. package/packages/agent/src/runtime/task-heartbeat.js +0 -84
  1700. package/packages/agent/src/runtime/tool-call-cache/cache.d.ts +0 -62
  1701. package/packages/agent/src/runtime/tool-call-cache/cache.d.ts.map +0 -1
  1702. package/packages/agent/src/runtime/tool-call-cache/cache.js +0 -123
  1703. package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts +0 -23
  1704. package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts.map +0 -1
  1705. package/packages/agent/src/runtime/tool-call-cache/index.d.ts +0 -7
  1706. package/packages/agent/src/runtime/tool-call-cache/index.d.ts.map +0 -1
  1707. package/packages/agent/src/runtime/tool-call-cache/index.js +0 -4
  1708. package/packages/agent/src/runtime/tool-call-cache/key.d.ts +0 -11
  1709. package/packages/agent/src/runtime/tool-call-cache/key.d.ts.map +0 -1
  1710. package/packages/agent/src/runtime/tool-call-cache/key.js +0 -31
  1711. package/packages/agent/src/runtime/tool-call-cache/lru.d.ts.map +0 -1
  1712. package/packages/agent/src/runtime/tool-call-cache/redact.d.ts +0 -17
  1713. package/packages/agent/src/runtime/tool-call-cache/redact.d.ts.map +0 -1
  1714. package/packages/agent/src/runtime/tool-call-cache/redact.js +0 -77
  1715. package/packages/agent/src/runtime/tool-call-cache/registry.d.ts +0 -18
  1716. package/packages/agent/src/runtime/tool-call-cache/registry.d.ts.map +0 -1
  1717. package/packages/agent/src/runtime/tool-call-cache/registry.js +0 -66
  1718. package/packages/agent/src/runtime/tool-call-cache/types.d.ts.map +0 -1
  1719. package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts +0 -39
  1720. package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts.map +0 -1
  1721. package/packages/agent/src/runtime/tool-call-cache-wrapper.js +0 -72
  1722. package/packages/agent/src/runtime/trajectory-export.d.ts +0 -18
  1723. package/packages/agent/src/runtime/trajectory-export.d.ts.map +0 -1
  1724. package/packages/agent/src/runtime/trajectory-export.js +0 -109
  1725. package/packages/agent/src/runtime/trajectory-internals.d.ts +0 -242
  1726. package/packages/agent/src/runtime/trajectory-internals.d.ts.map +0 -1
  1727. package/packages/agent/src/runtime/trajectory-internals.js +0 -1281
  1728. package/packages/agent/src/runtime/trajectory-persistence.d.ts +0 -15
  1729. package/packages/agent/src/runtime/trajectory-persistence.d.ts.map +0 -1
  1730. package/packages/agent/src/runtime/trajectory-persistence.js +0 -29
  1731. package/packages/agent/src/runtime/trajectory-query.d.ts.map +0 -1
  1732. package/packages/agent/src/runtime/trajectory-query.js +0 -27
  1733. package/packages/agent/src/runtime/trajectory-storage.d.ts +0 -91
  1734. package/packages/agent/src/runtime/trajectory-storage.d.ts.map +0 -1
  1735. package/packages/agent/src/runtime/trajectory-storage.js +0 -1093
  1736. package/packages/agent/src/runtime/vault-profile-resolver.d.ts +0 -37
  1737. package/packages/agent/src/runtime/vault-profile-resolver.d.ts.map +0 -1
  1738. package/packages/agent/src/runtime/vault-profile-resolver.js +0 -79
  1739. package/packages/agent/src/runtime/version.d.ts.map +0 -1
  1740. package/packages/agent/src/runtime/web-search-tools.d.ts +0 -22
  1741. package/packages/agent/src/runtime/web-search-tools.d.ts.map +0 -1
  1742. package/packages/agent/src/runtime/web-search-tools.js +0 -151
  1743. package/packages/agent/src/security/access.d.ts.map +0 -1
  1744. package/packages/agent/src/security/access.js +0 -54
  1745. package/packages/agent/src/security/audit-log.d.ts.map +0 -1
  1746. package/packages/agent/src/security/audit-log.js +0 -161
  1747. package/packages/agent/src/security/index.d.ts +0 -4
  1748. package/packages/agent/src/security/index.d.ts.map +0 -1
  1749. package/packages/agent/src/security/network-policy.d.ts.map +0 -1
  1750. package/packages/agent/src/services/agent-export.d.ts +0 -100
  1751. package/packages/agent/src/services/agent-export.d.ts.map +0 -1
  1752. package/packages/agent/src/services/agent-export.js +0 -764
  1753. package/packages/agent/src/services/app-manager-agents-list-guard.d.ts.map +0 -1
  1754. package/packages/agent/src/services/app-manager.d.ts +0 -108
  1755. package/packages/agent/src/services/app-manager.d.ts.map +0 -1
  1756. package/packages/agent/src/services/app-manager.js +0 -1678
  1757. package/packages/agent/src/services/app-package-modules.d.ts +0 -22
  1758. package/packages/agent/src/services/app-package-modules.d.ts.map +0 -1
  1759. package/packages/agent/src/services/app-package-modules.js +0 -397
  1760. package/packages/agent/src/services/app-run-store.d.ts +0 -6
  1761. package/packages/agent/src/services/app-run-store.d.ts.map +0 -1
  1762. package/packages/agent/src/services/app-run-store.js +0 -547
  1763. package/packages/agent/src/services/app-session-gate.d.ts.map +0 -1
  1764. package/packages/agent/src/services/app-session-gate.js +0 -71
  1765. package/packages/agent/src/services/capability-broker.d.ts.map +0 -1
  1766. package/packages/agent/src/services/capability-broker.js +0 -339
  1767. package/packages/agent/src/services/character-history.d.ts.map +0 -1
  1768. package/packages/agent/src/services/character-persistence.d.ts +0 -25
  1769. package/packages/agent/src/services/character-persistence.d.ts.map +0 -1
  1770. package/packages/agent/src/services/client-chat-sender.d.ts +0 -19
  1771. package/packages/agent/src/services/client-chat-sender.d.ts.map +0 -1
  1772. package/packages/agent/src/services/client-chat-sender.js +0 -88
  1773. package/packages/agent/src/services/config-plugin-manager.d.ts +0 -6
  1774. package/packages/agent/src/services/config-plugin-manager.d.ts.map +0 -1
  1775. package/packages/agent/src/services/connector-setup-service.d.ts +0 -48
  1776. package/packages/agent/src/services/connector-setup-service.d.ts.map +0 -1
  1777. package/packages/agent/src/services/escalation.d.ts.map +0 -1
  1778. package/packages/agent/src/services/escalation.js +0 -376
  1779. package/packages/agent/src/services/evm-signing-capability.d.ts +0 -33
  1780. package/packages/agent/src/services/evm-signing-capability.d.ts.map +0 -1
  1781. package/packages/agent/src/services/evm-signing-capability.js +0 -52
  1782. package/packages/agent/src/services/external-bridge-state.d.ts +0 -10
  1783. package/packages/agent/src/services/external-bridge-state.d.ts.map +0 -1
  1784. package/packages/agent/src/services/external-bridge-state.js +0 -14
  1785. package/packages/agent/src/services/hosted-tools.d.ts +0 -70
  1786. package/packages/agent/src/services/hosted-tools.d.ts.map +0 -1
  1787. package/packages/agent/src/services/hosted-tools.js +0 -87
  1788. package/packages/agent/src/services/index.d.ts +0 -27
  1789. package/packages/agent/src/services/index.d.ts.map +0 -1
  1790. package/packages/agent/src/services/index.js +0 -32
  1791. package/packages/agent/src/services/js-runtime-bridge.d.ts.map +0 -1
  1792. package/packages/agent/src/services/js-runtime-bridge.js +0 -217
  1793. package/packages/agent/src/services/mcp-marketplace.d.ts.map +0 -1
  1794. package/packages/agent/src/services/mcp-marketplace.js +0 -200
  1795. package/packages/agent/src/services/media-generation.d.ts +0 -10
  1796. package/packages/agent/src/services/media-generation.d.ts.map +0 -1
  1797. package/packages/agent/src/services/media-generation.js +0 -102
  1798. package/packages/agent/src/services/overlay-app-presence.d.ts.map +0 -1
  1799. package/packages/agent/src/services/owner-name.d.ts.map +0 -1
  1800. package/packages/agent/src/services/permissions/contracts.d.ts +0 -9
  1801. package/packages/agent/src/services/permissions/contracts.d.ts.map +0 -1
  1802. package/packages/agent/src/services/permissions/contracts.js +0 -8
  1803. package/packages/agent/src/services/permissions/probers/_bridge.d.ts +0 -77
  1804. package/packages/agent/src/services/permissions/probers/_bridge.d.ts.map +0 -1
  1805. package/packages/agent/src/services/permissions/probers/_bridge.js +0 -224
  1806. package/packages/agent/src/services/permissions/probers/accessibility.d.ts.map +0 -1
  1807. package/packages/agent/src/services/permissions/probers/automation.d.ts +0 -17
  1808. package/packages/agent/src/services/permissions/probers/automation.d.ts.map +0 -1
  1809. package/packages/agent/src/services/permissions/probers/automation.js +0 -46
  1810. package/packages/agent/src/services/permissions/probers/calendar.d.ts +0 -14
  1811. package/packages/agent/src/services/permissions/probers/calendar.d.ts.map +0 -1
  1812. package/packages/agent/src/services/permissions/probers/calendar.js +0 -33
  1813. package/packages/agent/src/services/permissions/probers/camera.d.ts.map +0 -1
  1814. package/packages/agent/src/services/permissions/probers/contacts.d.ts +0 -13
  1815. package/packages/agent/src/services/permissions/probers/contacts.d.ts.map +0 -1
  1816. package/packages/agent/src/services/permissions/probers/contacts.js +0 -32
  1817. package/packages/agent/src/services/permissions/probers/full-disk.d.ts.map +0 -1
  1818. package/packages/agent/src/services/permissions/probers/health.d.ts +0 -23
  1819. package/packages/agent/src/services/permissions/probers/health.d.ts.map +0 -1
  1820. package/packages/agent/src/services/permissions/probers/health.js +0 -82
  1821. package/packages/agent/src/services/permissions/probers/index.d.ts.map +0 -1
  1822. package/packages/agent/src/services/permissions/probers/index.js +0 -42
  1823. package/packages/agent/src/services/permissions/probers/location.d.ts +0 -21
  1824. package/packages/agent/src/services/permissions/probers/location.d.ts.map +0 -1
  1825. package/packages/agent/src/services/permissions/probers/location.js +0 -47
  1826. package/packages/agent/src/services/permissions/probers/microphone.d.ts.map +0 -1
  1827. package/packages/agent/src/services/permissions/probers/notes.d.ts +0 -19
  1828. package/packages/agent/src/services/permissions/probers/notes.d.ts.map +0 -1
  1829. package/packages/agent/src/services/permissions/probers/notes.js +0 -55
  1830. package/packages/agent/src/services/permissions/probers/notifications.d.ts +0 -24
  1831. package/packages/agent/src/services/permissions/probers/notifications.d.ts.map +0 -1
  1832. package/packages/agent/src/services/permissions/probers/notifications.js +0 -47
  1833. package/packages/agent/src/services/permissions/probers/reminders.d.ts +0 -22
  1834. package/packages/agent/src/services/permissions/probers/reminders.d.ts.map +0 -1
  1835. package/packages/agent/src/services/permissions/probers/reminders.js +0 -44
  1836. package/packages/agent/src/services/permissions/probers/screen-recording.d.ts.map +0 -1
  1837. package/packages/agent/src/services/permissions/probers/screentime.d.ts +0 -21
  1838. package/packages/agent/src/services/permissions/probers/screentime.d.ts.map +0 -1
  1839. package/packages/agent/src/services/permissions/probers/screentime.js +0 -67
  1840. package/packages/agent/src/services/permissions/probers/shell.d.ts +0 -19
  1841. package/packages/agent/src/services/permissions/probers/shell.d.ts.map +0 -1
  1842. package/packages/agent/src/services/permissions/probers/shell.js +0 -31
  1843. package/packages/agent/src/services/permissions/probers/website-blocking.d.ts.map +0 -1
  1844. package/packages/agent/src/services/permissions/register-probers.d.ts +0 -29
  1845. package/packages/agent/src/services/permissions/register-probers.d.ts.map +0 -1
  1846. package/packages/agent/src/services/permissions/register-probers.js +0 -31
  1847. package/packages/agent/src/services/permissions-registry.d.ts.map +0 -1
  1848. package/packages/agent/src/services/permissions-registry.js +0 -213
  1849. package/packages/agent/src/services/plugin-compiler.d.ts +0 -51
  1850. package/packages/agent/src/services/plugin-compiler.d.ts.map +0 -1
  1851. package/packages/agent/src/services/plugin-compiler.js +0 -90
  1852. package/packages/agent/src/services/plugin-installer.d.ts +0 -93
  1853. package/packages/agent/src/services/plugin-installer.d.ts.map +0 -1
  1854. package/packages/agent/src/services/plugin-installer.js +0 -623
  1855. package/packages/agent/src/services/plugin-manager-types.d.ts +0 -114
  1856. package/packages/agent/src/services/plugin-manager-types.d.ts.map +0 -1
  1857. package/packages/agent/src/services/registry-client-app-meta.d.ts +0 -6
  1858. package/packages/agent/src/services/registry-client-app-meta.d.ts.map +0 -1
  1859. package/packages/agent/src/services/registry-client-app-meta.js +0 -168
  1860. package/packages/agent/src/services/registry-client-endpoints.d.ts +0 -7
  1861. package/packages/agent/src/services/registry-client-endpoints.d.ts.map +0 -1
  1862. package/packages/agent/src/services/registry-client-endpoints.js +0 -190
  1863. package/packages/agent/src/services/registry-client-local.d.ts +0 -4
  1864. package/packages/agent/src/services/registry-client-local.d.ts.map +0 -1
  1865. package/packages/agent/src/services/registry-client-local.js +0 -555
  1866. package/packages/agent/src/services/registry-client-network.d.ts +0 -14
  1867. package/packages/agent/src/services/registry-client-network.d.ts.map +0 -1
  1868. package/packages/agent/src/services/registry-client-network.js +0 -147
  1869. package/packages/agent/src/services/registry-client-queries.d.ts +0 -26
  1870. package/packages/agent/src/services/registry-client-queries.d.ts.map +0 -1
  1871. package/packages/agent/src/services/registry-client-queries.js +0 -197
  1872. package/packages/agent/src/services/registry-client-types.d.ts +0 -114
  1873. package/packages/agent/src/services/registry-client-types.d.ts.map +0 -1
  1874. package/packages/agent/src/services/registry-client.d.ts +0 -39
  1875. package/packages/agent/src/services/registry-client.d.ts.map +0 -1
  1876. package/packages/agent/src/services/registry-client.js +0 -349
  1877. package/packages/agent/src/services/relationships-graph.d.ts +0 -13
  1878. package/packages/agent/src/services/relationships-graph.d.ts.map +0 -1
  1879. package/packages/agent/src/services/relationships-graph.js +0 -38
  1880. package/packages/agent/src/services/remote-signing-service.d.ts +0 -58
  1881. package/packages/agent/src/services/remote-signing-service.d.ts.map +0 -1
  1882. package/packages/agent/src/services/remote-signing-service.js +0 -185
  1883. package/packages/agent/src/services/research-task-executor.d.ts +0 -14
  1884. package/packages/agent/src/services/research-task-executor.d.ts.map +0 -1
  1885. package/packages/agent/src/services/research-task-executor.js +0 -138
  1886. package/packages/agent/src/services/sandbox-engine.d.ts.map +0 -1
  1887. package/packages/agent/src/services/sandbox-manager.d.ts +0 -127
  1888. package/packages/agent/src/services/sandbox-manager.d.ts.map +0 -1
  1889. package/packages/agent/src/services/sandbox-manager.js +0 -418
  1890. package/packages/agent/src/services/self-updater.d.ts +0 -21
  1891. package/packages/agent/src/services/self-updater.d.ts.map +0 -1
  1892. package/packages/agent/src/services/self-updater.js +0 -162
  1893. package/packages/agent/src/services/send-handler-availability.d.ts.map +0 -1
  1894. package/packages/agent/src/services/send-handler-availability.js +0 -20
  1895. package/packages/agent/src/services/shell-execution-router.d.ts +0 -67
  1896. package/packages/agent/src/services/shell-execution-router.d.ts.map +0 -1
  1897. package/packages/agent/src/services/shell-execution-router.js +0 -201
  1898. package/packages/agent/src/services/signing-policy.d.ts +0 -44
  1899. package/packages/agent/src/services/signing-policy.d.ts.map +0 -1
  1900. package/packages/agent/src/services/skill-catalog-client.d.ts +0 -47
  1901. package/packages/agent/src/services/skill-catalog-client.d.ts.map +0 -1
  1902. package/packages/agent/src/services/skill-catalog-client.js +0 -130
  1903. package/packages/agent/src/services/skill-marketplace.d.ts +0 -42
  1904. package/packages/agent/src/services/skill-marketplace.d.ts.map +0 -1
  1905. package/packages/agent/src/services/skill-marketplace.js +0 -691
  1906. package/packages/agent/src/services/task-executor.d.ts.map +0 -1
  1907. package/packages/agent/src/services/update-checker.d.ts +0 -29
  1908. package/packages/agent/src/services/update-checker.d.ts.map +0 -1
  1909. package/packages/agent/src/services/version-compat.d.ts.map +0 -1
  1910. package/packages/agent/src/services/version-compat.js +0 -211
  1911. package/packages/agent/src/services/virtual-filesystem.d.ts +0 -88
  1912. package/packages/agent/src/services/virtual-filesystem.d.ts.map +0 -1
  1913. package/packages/agent/src/services/virtual-filesystem.js +0 -410
  1914. package/packages/agent/src/shared/conversation-format.d.ts.map +0 -1
  1915. package/packages/agent/src/shared/conversation-format.js +0 -69
  1916. package/packages/agent/src/shared/index.d.ts +0 -4
  1917. package/packages/agent/src/shared/index.d.ts.map +0 -1
  1918. package/packages/agent/src/shared/index.js +0 -3
  1919. package/packages/agent/src/shared/ui-catalog-prompt.d.ts.map +0 -1
  1920. package/packages/agent/src/shared/workspace-resolution.d.ts.map +0 -1
  1921. package/packages/agent/src/shared/workspace-resolution.js +0 -70
  1922. package/packages/agent/src/templates/skill-scaffold.d.ts +0 -9
  1923. package/packages/agent/src/templates/skill-scaffold.d.ts.map +0 -1
  1924. package/packages/agent/src/templates/skill-scaffold.js +0 -26
  1925. package/packages/agent/src/test-support/index.d.ts +0 -4
  1926. package/packages/agent/src/test-support/index.d.ts.map +0 -1
  1927. package/packages/agent/src/test-support/process-helpers.d.ts.map +0 -1
  1928. package/packages/agent/src/test-support/route-test-helpers.d.ts.map +0 -1
  1929. package/packages/agent/src/test-support/test-helpers.d.ts.map +0 -1
  1930. package/packages/agent/src/test-utils/sqlite-compat.d.ts +0 -23
  1931. package/packages/agent/src/test-utils/sqlite-compat.d.ts.map +0 -1
  1932. package/packages/agent/src/test-utils/sqlite-compat.js +0 -214
  1933. package/packages/agent/src/testing/index.d.ts +0 -4
  1934. package/packages/agent/src/testing/index.d.ts.map +0 -1
  1935. package/packages/agent/src/testing/index.js +0 -3
  1936. package/packages/agent/src/triggers/index.d.ts +0 -5
  1937. package/packages/agent/src/triggers/index.d.ts.map +0 -1
  1938. package/packages/agent/src/triggers/index.js +0 -4
  1939. package/packages/agent/src/triggers/runtime.d.ts +0 -30
  1940. package/packages/agent/src/triggers/runtime.d.ts.map +0 -1
  1941. package/packages/agent/src/triggers/runtime.js +0 -447
  1942. package/packages/agent/src/triggers/scheduling.d.ts +0 -78
  1943. package/packages/agent/src/triggers/scheduling.d.ts.map +0 -1
  1944. package/packages/agent/src/triggers/scheduling.js +0 -436
  1945. package/packages/agent/src/triggers/text-to-workflow.d.ts +0 -58
  1946. package/packages/agent/src/triggers/text-to-workflow.d.ts.map +0 -1
  1947. package/packages/agent/src/triggers/text-to-workflow.js +0 -44
  1948. package/packages/agent/src/triggers/types.d.ts +0 -96
  1949. package/packages/agent/src/triggers/types.d.ts.map +0 -1
  1950. package/packages/agent/src/types/agent-skills.d.ts.map +0 -1
  1951. package/packages/agent/src/types/config-like.d.ts.map +0 -1
  1952. package/packages/agent/src/types/index.d.ts +0 -4
  1953. package/packages/agent/src/types/index.d.ts.map +0 -1
  1954. package/packages/agent/src/types/trajectory.d.ts +0 -20
  1955. package/packages/agent/src/types/trajectory.d.ts.map +0 -1
  1956. package/packages/agent/src/utils/atomic-json.d.ts.map +0 -1
  1957. package/packages/agent/src/utils/exec-safety.d.ts +0 -2
  1958. package/packages/agent/src/utils/exec-safety.d.ts.map +0 -1
  1959. package/packages/agent/src/utils/exec-safety.js +0 -21
  1960. package/packages/agent/src/utils/index.d.ts +0 -2
  1961. package/packages/agent/src/utils/index.d.ts.map +0 -1
  1962. package/packages/agent/src/utils/index.js +0 -1
  1963. package/packages/agent/src/utils/number-parsing.d.ts +0 -26
  1964. package/packages/agent/src/utils/number-parsing.d.ts.map +0 -1
  1965. package/packages/agent/src/utils/number-parsing.js +0 -51
  1966. package/packages/agent/src/version-resolver.d.ts.map +0 -1
  1967. /package/{packages/agent/src/actions → actions}/connector-resolver.d.ts +0 -0
  1968. /package/{packages/agent/src/actions → actions}/contact.d.ts +0 -0
  1969. /package/{packages/agent/src/actions → actions}/context-signal-lexicon.d.ts +0 -0
  1970. /package/{packages/agent/src/actions → actions}/context-signal-lexicon.js +0 -0
  1971. /package/{packages/agent/src/actions → actions}/database.d.ts +0 -0
  1972. /package/{packages/agent/src/actions → actions}/grounded-action-reply.d.ts +0 -0
  1973. /package/{packages/agent/src/actions → actions}/logs.d.ts +0 -0
  1974. /package/{packages/agent/src/actions → actions}/logs.js +0 -0
  1975. /package/{packages/agent/src/actions → actions}/recent-conversation-texts.d.ts +0 -0
  1976. /package/{packages/agent/src/actions → actions}/runtime.d.ts +0 -0
  1977. /package/{packages/agent/src/actions → actions}/terminal.d.ts +0 -0
  1978. /package/{packages/agent/src/actions → actions}/trigger.d.ts +0 -0
  1979. /package/{packages/agent/src/api → api}/agent-lifecycle-routes.d.ts +0 -0
  1980. /package/{packages/agent/src/api → api}/agent-transfer-routes.d.ts +0 -0
  1981. /package/{packages/agent/src/api → api}/auth-routes.d.ts +0 -0
  1982. /package/{packages/agent/src/api → api}/avatar-routes.d.ts +0 -0
  1983. /package/{packages/agent/src/api → api}/chat-text-helpers.d.ts +0 -0
  1984. /package/{packages/agent/src/api → api}/chat-text-helpers.js +0 -0
  1985. /package/{packages/agent/src/api → api}/client-chat-admin.d.ts +0 -0
  1986. /package/{packages/agent/src/api → api}/client-chat-admin.js +0 -0
  1987. /package/{packages/agent/src/api → api}/compat-utils.d.ts +0 -0
  1988. /package/{packages/agent/src/api → api}/compat-utils.js +0 -0
  1989. /package/{packages/agent/src/api → api}/config-env.d.ts +0 -0
  1990. /package/{packages/agent/src/api → api}/connector-account-routes.d.ts +0 -0
  1991. /package/{packages/agent/src/api → api}/connector-health.d.ts +0 -0
  1992. /package/{packages/agent/src/api → api}/connector-health.js +0 -0
  1993. /package/{packages/agent/src/api → api}/connector-oauth-callback-auth.d.ts +0 -0
  1994. /package/{packages/agent/src/api → api}/connector-oauth-callback-auth.js +0 -0
  1995. /package/{packages/agent/src/api → api}/coordinator-wiring.d.ts +0 -0
  1996. /package/{packages/agent/src/api → api}/early-logs.js +0 -0
  1997. /package/{packages/agent/src/api → api}/inbox-routes.d.ts +0 -0
  1998. /package/{packages/agent/src/api → api}/memory-routes.d.ts +0 -0
  1999. /package/{packages/agent/src/api → api}/mobile-optional-routes.d.ts +0 -0
  2000. /package/{packages/agent/src/api → api}/models-routes.d.ts +0 -0
  2001. /package/{packages/agent/src/api → api}/models-routes.js +0 -0
  2002. /package/{packages/agent/src/api → api}/music-player-route-fallback.d.ts +0 -0
  2003. /package/{packages/agent/src/api → api}/music-player-route-fallback.js +0 -0
  2004. /package/{packages/agent/src/api → api}/owner-contact-helpers.d.ts +0 -0
  2005. /package/{packages/agent/src/api → api}/owner-contact-helpers.js +0 -0
  2006. /package/{packages/agent/src/api → api}/parse-action-block.js +0 -0
  2007. /package/{packages/agent/src/api → api}/permissions-routes-extra.js +0 -0
  2008. /package/{packages/agent/src/api → api}/plugin-validation.d.ts +0 -0
  2009. /package/{packages/agent/src/api → api}/plugin-validation.js +0 -0
  2010. /package/{packages/agent/src/api → api}/rate-limiter.d.ts +0 -0
  2011. /package/{packages/agent/src/api → api}/rate-limiter.js +0 -0
  2012. /package/{packages/agent/src/api → api}/relationships-routes.d.ts +0 -0
  2013. /package/{packages/agent/src/api → api}/runtime-plugin-routes.d.ts +0 -0
  2014. /package/{packages/agent/src/api → api}/server-autonomy-helpers.js +0 -0
  2015. /package/{packages/agent/src/api → api}/server-helpers-fetch.d.ts +0 -0
  2016. /package/{packages/agent/src/api → api}/server-helpers-fetch.js +0 -0
  2017. /package/{packages/agent/src/api → api}/server-helpers-plugin.js +0 -0
  2018. /package/{packages/agent/src/api → api}/server-helpers-wallet.js +0 -0
  2019. /package/{packages/agent/src/api/training-service-like.js → api/server-types.js} +0 -0
  2020. /package/{packages/agent/src/api → api}/task-agent-message-routing.d.ts +0 -0
  2021. /package/{packages/agent/src/api → api}/task-agent-message-routing.js +0 -0
  2022. /package/{packages/agent/src/api → api}/terminal-execution-routing.js +0 -0
  2023. /package/{packages/agent/src/api → api}/terminal-run-limits.d.ts +0 -0
  2024. /package/{packages/agent/src/api → api}/training-backend-check.d.ts +0 -0
  2025. /package/{packages/agent/src/api → api}/training-backend-check.js +0 -0
  2026. /package/{packages/agent/src/services/registry-client-types.js → api/training-service-like.js} +0 -0
  2027. /package/{packages/agent/src/api → api}/wallet-dex-prices.d.ts +0 -0
  2028. /package/{packages/agent/src/api → api}/wallet-dex-prices.js +0 -0
  2029. /package/{packages/agent/src/api → api}/wallet-env-sync.js +0 -0
  2030. /package/{packages/agent/src/api → api}/wallet-evm-balance.d.ts +0 -0
  2031. /package/{packages/agent/src/api → api}/wallet-evm-balance.js +0 -0
  2032. /package/{packages/agent/src/api → api}/wallet-trading-profile.d.ts +0 -0
  2033. /package/{packages/agent/src/api → api}/zip-utils.d.ts +0 -0
  2034. /package/{packages/agent/src/api → api}/zip-utils.js +0 -0
  2035. /package/{packages/agent/src/auth → auth}/anthropic.js +0 -0
  2036. /package/{packages/agent/src/auth → auth}/claude-code-stealth.d.ts +0 -0
  2037. /package/{packages/agent/src/auth → auth}/index.js +0 -0
  2038. /package/{packages/agent/src/auth → auth}/vendor/pi-oauth/anthropic-login.d.ts +0 -0
  2039. /package/{packages/agent/src/auth → auth}/vendor/pi-oauth/pkce.d.ts +0 -0
  2040. /package/{packages/agent/src/auth → auth}/vendor/pi-oauth/pkce.js +0 -0
  2041. /package/{packages/agent/src/awareness → awareness}/index.js +0 -0
  2042. /package/{packages/agent/src/awareness → awareness}/registry.d.ts +0 -0
  2043. /package/{packages/agent/src/awareness → awareness}/registry.js +0 -0
  2044. /package/{packages/agent/src/bin.d.ts → bin.d.ts} +0 -0
  2045. /package/{packages/agent/src/cli → cli}/benchmark.d.ts +0 -0
  2046. /package/{packages/agent/src/cli → cli}/index.d.ts +0 -0
  2047. /package/{packages/agent/src/config → config}/character-schema.d.ts +0 -0
  2048. /package/{packages/agent/src/config → config}/character-schema.js +0 -0
  2049. /package/{packages/agent/src/config → config}/config.d.ts +0 -0
  2050. /package/{packages/agent/src/config → config}/index.js +0 -0
  2051. /package/{packages/agent/src/config → config}/plugin-auto-enable.d.ts +0 -0
  2052. /package/{packages/agent/src/config → config}/plugin-auto-enable.js +0 -0
  2053. /package/{packages/agent/src/config → config}/telegram-custom-commands.d.ts +0 -0
  2054. /package/{packages/agent/src/config → config}/telegram-custom-commands.js +0 -0
  2055. /package/{packages/agent/src/config → config}/types.agent-defaults.d.ts +0 -0
  2056. /package/{packages/agent/src/config → config}/types.agent-defaults.js +0 -0
  2057. /package/{packages/agent/src/config → config}/types.agents.d.ts +0 -0
  2058. /package/{packages/agent/src/config → config}/types.agents.js +0 -0
  2059. /package/{packages/agent/src/config → config}/types.d.ts +0 -0
  2060. /package/{packages/agent/src/config → config}/types.eliza.d.ts +0 -0
  2061. /package/{packages/agent/src/config → config}/types.eliza.js +0 -0
  2062. /package/{packages/agent/src/config → config}/types.hooks.d.ts +0 -0
  2063. /package/{packages/agent/src/config → config}/types.hooks.js +0 -0
  2064. /package/{packages/agent/src/config → config}/types.js +0 -0
  2065. /package/{packages/agent/src/config → config}/types.messages.d.ts +0 -0
  2066. /package/{packages/agent/src/config → config}/types.messages.js +0 -0
  2067. /package/{packages/agent/src/config → config}/zod-schema.hooks.d.ts +0 -0
  2068. /package/{packages/agent/src/config → config}/zod-schema.hooks.js +0 -0
  2069. /package/{packages/agent/src/config → config}/zod-schema.session.js +0 -0
  2070. /package/{packages/agent/src/contracts → contracts}/awareness.d.ts +0 -0
  2071. /package/{packages/agent/src/contracts → contracts}/awareness.js +0 -0
  2072. /package/{packages/agent/src/diagnostics → diagnostics}/integration-observability.d.ts +0 -0
  2073. /package/{packages/agent/src/diagnostics → diagnostics}/integration-observability.js +0 -0
  2074. /package/{packages/agent/src/hooks → hooks}/eligibility.js +0 -0
  2075. /package/{packages/agent/src/hooks → hooks}/index.js +0 -0
  2076. /package/{packages/agent/src/hooks → hooks}/registry.js +0 -0
  2077. /package/{packages/agent/src/hooks → hooks}/types.d.ts +0 -0
  2078. /package/{packages/agent/src/hooks → hooks}/types.js +0 -0
  2079. /package/{packages/agent/src/providers → providers}/admin-panel.d.ts +0 -0
  2080. /package/{packages/agent/src/providers → providers}/admin-panel.js +0 -0
  2081. /package/{packages/agent/src/providers → providers}/admin-trust.d.ts +0 -0
  2082. /package/{packages/agent/src/providers → providers}/admin-trust.js +0 -0
  2083. /package/{packages/agent/src/providers → providers}/automation-terminal-bridge.d.ts +0 -0
  2084. /package/{packages/agent/src/providers → providers}/conversation-proximity.d.ts +0 -0
  2085. /package/{packages/agent/src/providers → providers}/conversation-proximity.js +0 -0
  2086. /package/{packages/agent/src/providers → providers}/escalation-trigger.d.ts +0 -0
  2087. /package/{packages/agent/src/providers → providers}/escalation-trigger.js +0 -0
  2088. /package/{packages/agent/src/providers → providers}/page-scoped-context.d.ts +0 -0
  2089. /package/{packages/agent/src/providers → providers}/recent-conversations.d.ts +0 -0
  2090. /package/{packages/agent/src/providers → providers}/relevant-conversations.d.ts +0 -0
  2091. /package/{packages/agent/src/providers → providers}/rolodex.d.ts +0 -0
  2092. /package/{packages/agent/src/providers → providers}/session-bridge.d.ts +0 -0
  2093. /package/{packages/agent/src/providers → providers}/skill-provider.d.ts +0 -0
  2094. /package/{packages/agent/src/providers → providers}/skill-provider.js +0 -0
  2095. /package/{packages/agent/src/providers → providers}/tasks.d.ts +0 -0
  2096. /package/{packages/agent/src/providers → providers}/tasks.js +0 -0
  2097. /package/{packages/agent/src/providers → providers}/ui-catalog.d.ts +0 -0
  2098. /package/{packages/agent/src/providers → providers}/user-name.d.ts +0 -0
  2099. /package/{packages/agent/src/providers → providers}/user-name.js +0 -0
  2100. /package/{packages/agent/src/providers → providers}/workspace-provider.d.ts +0 -0
  2101. /package/{packages/agent/src/runtime → runtime}/advanced-capabilities-config.js +0 -0
  2102. /package/{packages/agent/src/runtime → runtime}/agent-event-service.d.ts +0 -0
  2103. /package/{packages/agent/src/runtime → runtime}/agent-event-service.js +0 -0
  2104. /package/{packages/agent/src/runtime → runtime}/build-character-config.d.ts +0 -0
  2105. /package/{packages/agent/src/runtime → runtime}/conversation-compactor.types.js +0 -0
  2106. /package/{packages/agent/src/runtime → runtime}/eliza-plugin.d.ts +0 -0
  2107. /package/{packages/agent/src/runtime → runtime}/local-execution-mode.js +0 -0
  2108. /package/{packages/agent/src/runtime → runtime}/model-resolution.d.ts +0 -0
  2109. /package/{packages/agent/src/runtime → runtime}/native-runtime-features.d.ts +0 -0
  2110. /package/{packages/agent/src/runtime → runtime}/native-runtime-features.js +0 -0
  2111. /package/{packages/agent/src/runtime → runtime}/operations/cold-strategy.js +0 -0
  2112. /package/{packages/agent/src/runtime → runtime}/operations/health-checks.js +0 -0
  2113. /package/{packages/agent/src/runtime → runtime}/operations/health.js +0 -0
  2114. /package/{packages/agent/src/runtime → runtime}/operations/index.js +0 -0
  2115. /package/{packages/agent/src/runtime → runtime}/operations/repository.js +0 -0
  2116. /package/{packages/agent/src/runtime → runtime}/operations/types.d.ts +0 -0
  2117. /package/{packages/agent/src/runtime → runtime}/operations/types.js +0 -0
  2118. /package/{packages/agent/src/runtime → runtime}/operations/vault-bridge.js +0 -0
  2119. /package/{packages/agent/src/runtime → runtime}/owner-entity.d.ts +0 -0
  2120. /package/{packages/agent/src/runtime → runtime}/release-plugin-policy.d.ts +0 -0
  2121. /package/{packages/agent/src/runtime → runtime}/roles/src/provider.d.ts +0 -0
  2122. /package/{packages/agent/src/runtime → runtime}/roles/src/provider.js +0 -0
  2123. /package/{packages/agent/src/runtime → runtime}/roles/src/types.d.ts +0 -0
  2124. /package/{packages/agent/src/runtime → runtime}/roles/src/types.js +0 -0
  2125. /package/{packages/agent/src/runtime → runtime}/roles/src/utils.d.ts +0 -0
  2126. /package/{packages/agent/src/runtime → runtime}/roles/src/utils.js +0 -0
  2127. /package/{packages/agent/src/runtime → runtime}/roles.js +0 -0
  2128. /package/{packages/agent/src/runtime → runtime}/tool-call-cache/disk-store.js +0 -0
  2129. /package/{packages/agent/src/runtime → runtime}/tool-call-cache/lru.d.ts +0 -0
  2130. /package/{packages/agent/src/runtime → runtime}/tool-call-cache/lru.js +0 -0
  2131. /package/{packages/agent/src/runtime → runtime}/tool-call-cache/types.d.ts +0 -0
  2132. /package/{packages/agent/src/runtime → runtime}/tool-call-cache/types.js +0 -0
  2133. /package/{packages/agent/src/runtime → runtime}/trajectory-query.d.ts +0 -0
  2134. /package/{packages/agent/src/runtime → runtime}/version.d.ts +0 -0
  2135. /package/{packages/agent/src/runtime → runtime}/version.js +0 -0
  2136. /package/{packages/agent/src/security → security}/access.d.ts +0 -0
  2137. /package/{packages/agent/src/security → security}/audit-log.d.ts +0 -0
  2138. /package/{packages/agent/src/security → security}/index.js +0 -0
  2139. /package/{packages/agent/src/security → security}/network-policy.d.ts +0 -0
  2140. /package/{packages/agent/src/security → security}/network-policy.js +0 -0
  2141. /package/{packages/agent/src/services → services}/app-manager-agents-list-guard.d.ts +0 -0
  2142. /package/{packages/agent/src/services → services}/app-manager-agents-list-guard.js +0 -0
  2143. /package/{packages/agent/src/services → services}/app-session-gate.d.ts +0 -0
  2144. /package/{packages/agent/src/services → services}/capability-broker.d.ts +0 -0
  2145. /package/{packages/agent/src/services → services}/character-history.d.ts +0 -0
  2146. /package/{packages/agent/src/services → services}/character-history.js +0 -0
  2147. /package/{packages/agent/src/services → services}/character-persistence.js +0 -0
  2148. /package/{packages/agent/src/services → services}/config-plugin-manager.js +0 -0
  2149. /package/{packages/agent/src/services → services}/connector-setup-service.js +0 -0
  2150. /package/{packages/agent/src/services → services}/escalation.d.ts +0 -0
  2151. /package/{packages/agent/src/services → services}/js-runtime-bridge.d.ts +0 -0
  2152. /package/{packages/agent/src/services → services}/mcp-marketplace.d.ts +0 -0
  2153. /package/{packages/agent/src/services → services}/overlay-app-presence.d.ts +0 -0
  2154. /package/{packages/agent/src/services → services}/overlay-app-presence.js +0 -0
  2155. /package/{packages/agent/src/services → services}/owner-name.d.ts +0 -0
  2156. /package/{packages/agent/src/services → services}/owner-name.js +0 -0
  2157. /package/{packages/agent/src/services → services}/permissions/probers/accessibility.d.ts +0 -0
  2158. /package/{packages/agent/src/services → services}/permissions/probers/accessibility.js +0 -0
  2159. /package/{packages/agent/src/services → services}/permissions/probers/camera.d.ts +0 -0
  2160. /package/{packages/agent/src/services → services}/permissions/probers/camera.js +0 -0
  2161. /package/{packages/agent/src/services → services}/permissions/probers/full-disk.d.ts +0 -0
  2162. /package/{packages/agent/src/services → services}/permissions/probers/full-disk.js +0 -0
  2163. /package/{packages/agent/src/services → services}/permissions/probers/index.d.ts +0 -0
  2164. /package/{packages/agent/src/services → services}/permissions/probers/microphone.d.ts +0 -0
  2165. /package/{packages/agent/src/services → services}/permissions/probers/microphone.js +0 -0
  2166. /package/{packages/agent/src/services → services}/permissions/probers/screen-recording.d.ts +0 -0
  2167. /package/{packages/agent/src/services → services}/permissions/probers/screen-recording.js +0 -0
  2168. /package/{packages/agent/src/services → services}/permissions/probers/website-blocking.d.ts +0 -0
  2169. /package/{packages/agent/src/services → services}/permissions/probers/website-blocking.js +0 -0
  2170. /package/{packages/agent/src/services → services}/permissions-registry.d.ts +0 -0
  2171. /package/{packages/agent/src/services → services}/plugin-manager-types.js +0 -0
  2172. /package/{packages/agent/src/services → services}/sandbox-engine.d.ts +0 -0
  2173. /package/{packages/agent/src/services → services}/sandbox-engine.js +0 -0
  2174. /package/{packages/agent/src/services → services}/send-handler-availability.d.ts +0 -0
  2175. /package/{packages/agent/src/services → services}/signing-policy.js +0 -0
  2176. /package/{packages/agent/src/services → services}/task-executor.d.ts +0 -0
  2177. /package/{packages/agent/src/services → services}/task-executor.js +0 -0
  2178. /package/{packages/agent/src/services → services}/update-checker.js +0 -0
  2179. /package/{packages/agent/src/services → services}/version-compat.d.ts +0 -0
  2180. /package/{packages/agent/src/shared → shared}/conversation-format.d.ts +0 -0
  2181. /package/{packages/agent/src/shared → shared}/ui-catalog-prompt.d.ts +0 -0
  2182. /package/{packages/agent/src/shared → shared}/ui-catalog-prompt.js +0 -0
  2183. /package/{packages/agent/src/shared → shared}/workspace-resolution.d.ts +0 -0
  2184. /package/{packages/agent/src/test-support → test-support}/index.js +0 -0
  2185. /package/{packages/agent/src/test-support → test-support}/process-helpers.d.ts +0 -0
  2186. /package/{packages/agent/src/test-support → test-support}/process-helpers.js +0 -0
  2187. /package/{packages/agent/src/test-support → test-support}/route-test-helpers.d.ts +0 -0
  2188. /package/{packages/agent/src/test-support → test-support}/route-test-helpers.js +0 -0
  2189. /package/{packages/agent/src/test-support → test-support}/test-helpers.d.ts +0 -0
  2190. /package/{packages/agent/src/test-support → test-support}/test-helpers.js +0 -0
  2191. /package/{packages/agent/src/triggers → triggers}/types.js +0 -0
  2192. /package/{packages/agent/src/types → types}/agent-skills.d.ts +0 -0
  2193. /package/{packages/agent/src/types → types}/agent-skills.js +0 -0
  2194. /package/{packages/agent/src/types → types}/config-like.d.ts +0 -0
  2195. /package/{packages/agent/src/types → types}/config-like.js +0 -0
  2196. /package/{packages/agent/src/types → types}/index.js +0 -0
  2197. /package/{packages/agent/src/types → types}/trajectory.js +0 -0
  2198. /package/{packages/agent/src/utils → utils}/atomic-json.d.ts +0 -0
  2199. /package/{packages/agent/src/utils → utils}/atomic-json.js +0 -0
  2200. /package/{packages/agent/src/version-resolver.d.ts → version-resolver.d.ts} +0 -0
  2201. /package/{packages/agent/src/version-resolver.js → version-resolver.js} +0 -0
package/api/server.js ADDED
@@ -0,0 +1,3911 @@
1
+ /**
2
+ * REST API server for the Eliza Control UI.
3
+ *
4
+ * Exposes HTTP endpoints that the UI frontend expects, backed by the
5
+ * elizaOS AgentRuntime. Default port: 2138. In dev mode, the Vite UI
6
+ * dev server proxies /api and /ws here (see eliza/packages/app-core/scripts/dev-ui.mjs).
7
+ */
8
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
9
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
10
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
11
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
12
+ });
13
+ }
14
+ return path;
15
+ };
16
+ import crypto from "node:crypto";
17
+ import fs from "node:fs";
18
+ import http from "node:http";
19
+ import { createRequire } from "node:module";
20
+ function tokenMatches(expected, provided) {
21
+ const expectedBuf = Buffer.from(expected);
22
+ const providedBuf = Buffer.from(provided);
23
+ return (expectedBuf.length === providedBuf.length &&
24
+ crypto.timingSafeEqual(expectedBuf, providedBuf));
25
+ }
26
+ const MAX_BODY_BYTES = 1024 * 1024; // 1 MB
27
+ import path from "node:path";
28
+ import { isStreamingDestinationConfigured, logger, NotificationService, readJsonBody as parseJsonBody, readRequestBody, ServiceType, sendJson, sendJsonError, stringToUuid, } from "@elizaos/core";
29
+ import { getStylePresets, normalizeCharacterLanguage, resolveStylePresetByAvatarIndex, } from "@elizaos/shared/character-presets";
30
+ import { isMobilePlatform, resolveApiBindHost, resolveDesktopApiPort, resolveServerOnlyPort, } from "@elizaos/shared/runtime-env";
31
+ import { parseClampedInteger } from "@elizaos/shared/utils/number-parsing";
32
+ import { WebSocketServer } from "ws";
33
+ import { installPlugin as installPluginDirect } from "../services/plugin-installer.js";
34
+ let browserPluginModule = null;
35
+ let x402PluginModule = null;
36
+ let browserPluginModulePromise = null;
37
+ let x402PluginModulePromise = null;
38
+ // Vite 7's import-analysis eagerly resolves string-literal dynamic imports even
39
+ // when a `@vite-ignore` comment is present, throwing "Failed to resolve entry"
40
+ // for the optional plugins below whose dist isn't built in the unit Plugin
41
+ // Tests lane (any spec that transitively transforms this file then fails to
42
+ // collect). Funnel optional plugin loads through a variable specifier so the
43
+ // analyzer leaves them as pure runtime imports — the host resolves them from
44
+ // node_modules on demand. Mirrors the variable-specifier bundle loader further
45
+ // down this file.
46
+ function importOptionalPlugin(specifier) {
47
+ return import(__rewriteRelativeImportExtension(/* @vite-ignore */ specifier));
48
+ }
49
+ async function getBrowserPlugin() {
50
+ if (browserPluginModule)
51
+ return browserPluginModule;
52
+ browserPluginModulePromise ??= importOptionalPlugin("@elizaos/plugin-browser").then((browser) => {
53
+ browserPluginModule = browser;
54
+ return browser;
55
+ });
56
+ return browserPluginModulePromise;
57
+ }
58
+ // On mobile the agent bundle aliases `@elizaos/plugin-browser` to a null-stub
59
+ // (scripts/mobile-stubs/null-plugin.cjs): the module imports fine but its
60
+ // workspace functions are absent, so calling one throws an uncaught TypeError
61
+ // that surfaces as a 500 (and a raw "X is not a function" in the /browser view).
62
+ // The browser workspace is desktop-only, so resolve the plugin only when it
63
+ // really implements the requested method and let callers serve an empty payload
64
+ // otherwise.
65
+ async function resolveDesktopBrowserPlugin(method) {
66
+ if (isMobilePlatform())
67
+ return null;
68
+ const browserPlugin = await getBrowserPlugin();
69
+ if (browserPlugin.__mobileStub)
70
+ return null;
71
+ return typeof browserPlugin[method] === "function" ? browserPlugin : null;
72
+ }
73
+ function getBrowserWorkspacePlugin() {
74
+ return resolveDesktopBrowserPlugin("getBrowserWorkspaceSnapshot");
75
+ }
76
+ function getBrowserBridgePlugin() {
77
+ return resolveDesktopBrowserPlugin("getBrowserBridgeCompanionPackageStatus");
78
+ }
79
+ const EMPTY_BROWSER_BRIDGE_PACKAGE_STATUS = {
80
+ extensionPath: null,
81
+ chromeBuildPath: null,
82
+ chromePackagePath: null,
83
+ safariWebExtensionPath: null,
84
+ safariAppPath: null,
85
+ safariPackagePath: null,
86
+ releaseManifest: null,
87
+ };
88
+ async function getX402Plugin() {
89
+ if (x402PluginModule)
90
+ return x402PluginModule;
91
+ // x402 is desktop/cloud-only; on mobile it is not in the agent bundle, so the
92
+ // "optional" dynamic import REJECTS (no node_modules). Treat a missing module
93
+ // as "no x402" instead of letting the rejection crash API-server startup —
94
+ // `importOptionalPlugin` is named optional but does not itself swallow.
95
+ x402PluginModulePromise ??= importOptionalPlugin("@elizaos/plugin-x402")
96
+ .then((x402) => {
97
+ x402PluginModule = x402;
98
+ return x402;
99
+ })
100
+ .catch(() => null);
101
+ return x402PluginModulePromise;
102
+ }
103
+ const optionalPluginImports = {
104
+ capacitor: () => importOptionalPlugin("@elizaos/plugin-capacitor-bridge"),
105
+ computerUse: () => importOptionalPlugin("@elizaos/plugin-computeruse"),
106
+ cloud: () => importOptionalPlugin("@elizaos/plugin-elizacloud"),
107
+ imessage: () => importOptionalPlugin("@elizaos/plugin-imessage"),
108
+ mcp: () => importOptionalPlugin("@elizaos/plugin-mcp"),
109
+ signal: () => importOptionalPlugin("@elizaos/plugin-signal"),
110
+ streaming: () => importOptionalPlugin("@elizaos/plugin-streaming"),
111
+ whatsapp: () => importOptionalPlugin("@elizaos/plugin-whatsapp"),
112
+ workflow: () => importOptionalPlugin("@elizaos/plugin-workflow"),
113
+ };
114
+ let localInferenceServerApiPromise = null;
115
+ function getLocalInferenceServerApi() {
116
+ // Import the route modules directly, NOT the package's bare entry: the mobile
117
+ // agent bundle stubs `@elizaos/plugin-local-inference` (the heavy Plugin entry)
118
+ // to a null module, so a bare import yields undefined handlers and every
119
+ // /api/local-inference/* route 404s on-device. The deep subpaths (the `./*`
120
+ // wildcard + `./routes` exports) aren't stubbed and carry the real impls on
121
+ // every platform.
122
+ localInferenceServerApiPromise ??=
123
+ (async () => {
124
+ const [routes, ttsRoutes] = await Promise.all([
125
+ import(
126
+ /* @vite-ignore */ "@elizaos/plugin-local-inference/local-inference-routes"),
127
+ import(
128
+ /* @vite-ignore */ "@elizaos/plugin-local-inference/routes"),
129
+ ]);
130
+ return {
131
+ getLocalInferenceActiveModelId: routes.getLocalInferenceActiveModelId,
132
+ handleLocalInferenceRoutes: routes.handleLocalInferenceRoutes,
133
+ handleLocalInferenceTtsRoute: ttsRoutes.handleLocalInferenceTtsRoute,
134
+ handleLocalInferenceAsrRoute: ttsRoutes.handleLocalInferenceAsrRoute,
135
+ handleLiveDiarizationRoute: ttsRoutes.handleLiveDiarizationRoute,
136
+ };
137
+ })().catch((err) => {
138
+ // A cold-boot import failure must not poison the memoized promise: `??=`
139
+ // would otherwise cache the rejection and 404 EVERY /api/local-inference/*
140
+ // route for the lifetime of the process. Clear the memo so the next request
141
+ // retries once the deferred plugin closure is resolvable.
142
+ localInferenceServerApiPromise = null;
143
+ throw err;
144
+ });
145
+ return localInferenceServerApiPromise;
146
+ }
147
+ async function getOptionalPluginApi(key) {
148
+ try {
149
+ return (await optionalPluginImports[key]());
150
+ }
151
+ catch (err) {
152
+ // The plugin is optional and not in this bundle (on mobile, many
153
+ // desktop/cloud plugins — cloud, whatsapp, wallet-adjacent, mcp,
154
+ // streaming, … — are excluded). Its dynamic import REJECTS with a
155
+ // ResolveMessage; without this catch that rejection propagates to the
156
+ // top-level request handler as a 500 on EVERY renderer poll of the
157
+ // plugin's routes. Return a Proxy of no-op handlers so route-dispatch
158
+ // blocks (`if (await handleX(...)) return;`) fall through to the normal
159
+ // 404/fallback instead of erroring. On desktop/server the import succeeds,
160
+ // so this branch never runs there.
161
+ logger.debug(`[eliza-api] optional plugin '${key}' unavailable in this bundle: ${err instanceof Error ? err.message : String(err)}`);
162
+ return new Proxy({}, {
163
+ get: () => () => false,
164
+ });
165
+ }
166
+ }
167
+ let agentSkillsApiPromise;
168
+ function getAgentSkillsApi() {
169
+ agentSkillsApiPromise ??= import(
170
+ /* @vite-ignore */ "@elizaos/plugin-agent-skills");
171
+ return agentSkillsApiPromise;
172
+ }
173
+ let appManagerApiPromise;
174
+ function getAppManagerApi() {
175
+ appManagerApiPromise ??= import(
176
+ /* @vite-ignore */ "@elizaos/plugin-app-manager");
177
+ return appManagerApiPromise;
178
+ }
179
+ let walletApiPromise;
180
+ function getWalletApi() {
181
+ walletApiPromise ??= importOptionalPlugin("@elizaos/plugin-wallet").catch((err) => {
182
+ // plugin-wallet is desktop/cloud-only; on mobile it is not in the bundle so
183
+ // this import REJECTS. Cache a no-op proxy so /api/wallet/* falls through to
184
+ // 404 instead of 500ing on every renderer poll. Desktop imports succeed, so
185
+ // this never runs there.
186
+ logger.debug(`[eliza-api] plugin-wallet unavailable in this bundle: ${err instanceof Error ? err.message : String(err)}`);
187
+ return new Proxy({}, { get: () => () => false });
188
+ });
189
+ return walletApiPromise;
190
+ }
191
+ let coreWalletApiPromise;
192
+ function getCoreWalletApi() {
193
+ coreWalletApiPromise ??= import("./wallet.js");
194
+ return coreWalletApiPromise;
195
+ }
196
+ let pluginRegistryApiPromise;
197
+ function getPluginRegistryApi() {
198
+ pluginRegistryApiPromise ??= import(
199
+ /* @vite-ignore */ "@elizaos/plugin-registry/api/plugin-routes");
200
+ return pluginRegistryApiPromise;
201
+ }
202
+ import { getGlobalAwarenessRegistry } from "../awareness/registry.js";
203
+ import { loadElizaConfig, saveElizaConfig, } from "../config/config.js";
204
+ import { isCloudWalletEnabled } from "../config/feature-flags.js";
205
+ import { resolveModelsCacheDir, resolveStateDir } from "../config/paths.js";
206
+ import { CharacterSchema } from "../config/zod-schema.js";
207
+ import { createIntegrationTelemetrySpan } from "../diagnostics/integration-observability.js";
208
+ import { getAgentEventService, } from "../runtime/agent-event-service.js";
209
+ import { resolvePreferredProviderId, resolvePrimaryModel, } from "../runtime/model-resolution.js";
210
+ import { createColdStrategy, createHotStrategy, DefaultRuntimeOperationManager, defaultClassifier, getDefaultHealthChecker, getDefaultRepository, } from "../runtime/operations/index.js";
211
+ import { classifyRegistryPluginRelease } from "../runtime/release-plugin-policy.js";
212
+ import { AUDIT_EVENT_TYPES, AUDIT_SEVERITIES, getAuditFeedSize, queryAuditFeed, subscribeAuditFeed, } from "../security/audit-log.js";
213
+ import { AgentExportError, estimateExportSize, exportAgent, importAgent, } from "../services/agent-export.js";
214
+ import { registerClientChatSendHandler } from "../services/client-chat-sender.js";
215
+ import { createConfigPluginManager } from "../services/config-plugin-manager.js";
216
+ import { isCoreManagerLike, isPluginManagerLike, } from "../services/plugin-manager-types.js";
217
+ import { PROACTIVE_INTERACTION_SOURCE, registerProactiveInteractionDecider, } from "../services/proactive-interaction-decider.js";
218
+ import { ProactiveInteractionGate } from "../services/proactive-interaction-gate.js";
219
+ import { executeTriggerTask, getTriggerHealthSnapshot, getTriggerLimit, listTriggerTasks, readTriggerConfig, readTriggerRuns, TRIGGER_TASK_NAME, TRIGGER_TASK_TAGS, taskToTriggerSummary, triggersFeatureEnabled, } from "../triggers/runtime.js";
220
+ import { buildTriggerConfig, buildTriggerMetadata, DISABLED_TRIGGER_INTERVAL_MS, normalizeTriggerDraft, } from "../triggers/scheduling.js";
221
+ import { detectRuntimeModel, resolveProviderFromModel } from "./agent-model.js";
222
+ import { persistConfigEnv } from "./config-env.js";
223
+ import { wireCoordinatorBridgesWhenReady } from "./coordinator-wiring.js";
224
+ import { computeCanRespond } from "./health-routes.js";
225
+ import { pushWithBatchEvict } from "./memory-bounds.js";
226
+ import { createRuntimeReadyGate } from "./runtime-ready-gate.js";
227
+ import { cloneWithoutBlockedObjectKeys, decodePathComponent, hasPersistedFirstRunState, isUuidLike, patchTouchesProviderSelection, } from "./server-helpers.js";
228
+ import { routeAutonomyTextToUser as routeProactiveText } from "./server-helpers-swarm.js";
229
+ import { createConnectorHealthMonitor, extractConversationMetadataFromRoom, handleAccountsRoutes, handleAgentAdminRoutes, handleAgentLifecycleRoutes, handleAgentStatusRoutes, handleAgentTransferRoutes, handleAppPackageRoutes, handleAuthRoutes, handleAvatarRoutes, handleBackgroundTasksRoute, handleBugReportRoutes, handleCharacterRoutes, handleCloudAndCoreRouteGroup, handleCommandsRoutes, handleConfigRoutes, handleConnectorRoutes, handleConversationRouteGroup, handleDatabaseRouteGroup, handleDiagnosticsRoutes, handleFirstRunRoutes, handleHealthRoutes, handleInboxAndCloudRelayRouteGroup, handleInteractionsRoutes, handleLifeOpsRuntimePluginRoute, handleMemoryRoutes, handleMiscRoutes, handleMobileOptionalRoutes, handleModelsRoutes, handlePermissionRoutes, handlePermissionsExtraRoutes, handleProviderSwitchRoutes, handleRegistryRoutes, handleRelationshipsRoutes, handleRemoteCapabilityRoutes, handleSandboxRouteGroup, handleSubscriptionRoutes, handleSuggestionsRoutes, handleUpdateRoutes, handleViewsRoutes, handleWorkbenchRoutes, isPublicRuntimePluginRoute, registerBuiltinViews, tryHandleHonoRuntimeRoute, tryHandleMusicPlayerStatusFallbackLazy, tryHandleRuntimePluginRoute, } from "./server-lazy-routes.js";
230
+ import { tryHandleTrajectoryFallback } from "./trajectory-fallback-routes.js";
231
+ import { EVM_PLUGIN_PACKAGE, resolveWalletAutomationMode as resolveAgentAutomationModeFromConfig, resolveWalletCapabilityStatus, } from "./wallet-capability.js";
232
+ import { applyWalletRpcConfigUpdate, getStoredWalletRpcSelections, resolveWalletNetworkMode, resolveWalletRpcReadiness, } from "./wallet-rpc.js";
233
+ import { DEFAULT_REPLAY_LIMIT, parseEventCursor, selectReplayEvents, } from "./ws-event-replay.js";
234
+ import { runtimeRoutesNeedX402Validation } from "./x402-route-validation.js";
235
+ export { executeFallbackParsedActions, inferBalanceChainFromText, isBalanceIntent, maybeHandleDirectBinanceSkillRequest, parseFallbackActionBlocks, shouldForceCheckBalanceFallback, } from "./binance-skill-helpers.js";
236
+ export { isClientVisibleNoResponse, isNoResponsePlaceholder, stripAssistantStageDirections, } from "./chat-text-helpers.js";
237
+ export { cloneWithoutBlockedObjectKeys, decodePathComponent, findOwnPackageRoot, getErrorMessage, isUuidLike, persistConversationRoomTitle, } from "./server-helpers.js";
238
+ import { getInventoryProviderOptions, getModelOptions, getOrFetchAllProviders, getOrFetchProvider, paramKeyToCategory, providerCachePath, readProviderCache, } from "./model-provider-helpers.js";
239
+ import { AGENT_EVENT_ALLOWED_STREAMS, aggregateSecrets, BLOCKED_ENV_KEYS, CONFIG_WRITE_ALLOWED_TOP_KEYS, discoverInstalledPlugins, discoverPluginsFromManifest, getReleaseBundledPluginIds, maskValue, } from "./plugin-discovery-helpers.js";
240
+ const _nodeRequire = createRequire(import.meta.url);
241
+ // Re-export for downstream consumers (e.g. @elizaos/app-core)
242
+ export { AGENT_EVENT_ALLOWED_STREAMS, CONFIG_WRITE_ALLOWED_TOP_KEYS, discoverInstalledPlugins, discoverPluginsFromManifest, findPrimaryEnvKey, readBundledPluginPackageMetadata, } from "./plugin-discovery-helpers.js";
243
+ // ---------------------------------------------------------------------------
244
+ // Types
245
+ // ---------------------------------------------------------------------------
246
+ function getAgentEventSvc(runtime) {
247
+ return getAgentEventService(runtime);
248
+ }
249
+ function requirePluginManager(runtime) {
250
+ const service = runtime?.getService("plugin_manager");
251
+ if (!isPluginManagerLike(service)) {
252
+ throw new Error("Plugin manager service not found");
253
+ }
254
+ return wrapPluginManagerWithLocalFallback(service);
255
+ }
256
+ /**
257
+ * The runtime plugin manager's registry client only fetches from GitHub and
258
+ * scans a `plugins/` dir for `elizaos.plugin.json`. Workspace-vendored plugins
259
+ * (under `packages/plugin-*`) are invisible to it. Wrap `installPlugin` so that
260
+ * when it returns "not found in the registry" we retry using our own
261
+ * registry-client (which discovers workspace packages and node_modules symlinks).
262
+ */
263
+ function wrapPluginManagerWithLocalFallback(pm) {
264
+ const originalInstall = pm.installPlugin.bind(pm);
265
+ const wrapped = Object.create(pm);
266
+ wrapped.installPlugin = async (pluginName, onProgress) => {
267
+ const result = await originalInstall(pluginName, onProgress);
268
+ if (result.success ||
269
+ !result.error?.includes("not found in the registry")) {
270
+ return result;
271
+ }
272
+ // Upstream registry missed it — check Eliza's own local discovery.
273
+ const { getPluginInfo } = await import("../services/registry-client.js");
274
+ const localInfo = await getPluginInfo(pluginName);
275
+ if (!localInfo?.localPath) {
276
+ return result;
277
+ }
278
+ // The plugin is a workspace package — just return success pointing at it.
279
+ // The runtime already resolves it via NODE_PATH / bun workspace links so
280
+ // there is nothing to download; the caller only needs to enable it in
281
+ // config and restart.
282
+ return {
283
+ success: true,
284
+ pluginName: localInfo.name,
285
+ version: localInfo.npm.v2Version ?? localInfo.npm.v1Version ?? "workspace",
286
+ installPath: localInfo.localPath,
287
+ requiresRestart: true,
288
+ };
289
+ };
290
+ return wrapped;
291
+ }
292
+ function getPluginManagerForState(state) {
293
+ const service = state.runtime?.getService("plugin_manager");
294
+ if (isPluginManagerLike(service)) {
295
+ return service;
296
+ }
297
+ return createConfigPluginManager(() => state.config);
298
+ }
299
+ function requireCoreManager(runtime) {
300
+ const service = runtime?.getService("core_manager");
301
+ if (!isCoreManagerLike(service)) {
302
+ throw new Error("Core manager service not found");
303
+ }
304
+ return service;
305
+ }
306
+ const DELETED_CONVERSATIONS_FILENAME = "deleted-conversations.v1.json";
307
+ const MAX_DELETED_CONVERSATION_IDS = 5000;
308
+ function readDeletedConversationIdsFromState() {
309
+ const filePath = path.join(resolveStateDir(), DELETED_CONVERSATIONS_FILENAME);
310
+ if (!fs.existsSync(filePath))
311
+ return new Set();
312
+ try {
313
+ const raw = fs.readFileSync(filePath, "utf-8");
314
+ const parsed = JSON.parse(raw);
315
+ const ids = Array.isArray(parsed.ids) ? parsed.ids : [];
316
+ return new Set(ids
317
+ .map((id) => (typeof id === "string" ? id.trim() : ""))
318
+ .filter((id) => id.length > 0));
319
+ }
320
+ catch (err) {
321
+ logger.warn(`[eliza-api] Failed to read deleted conversations state: ${err instanceof Error ? err.message : String(err)}`);
322
+ return new Set();
323
+ }
324
+ }
325
+ function _persistDeletedConversationIdsToState(ids) {
326
+ const dir = resolveStateDir();
327
+ if (!fs.existsSync(dir)) {
328
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
329
+ }
330
+ const normalized = Array.from(ids)
331
+ .map((id) => id.trim())
332
+ .filter((id) => id.length > 0)
333
+ .slice(-MAX_DELETED_CONVERSATION_IDS);
334
+ const filePath = path.join(dir, DELETED_CONVERSATIONS_FILENAME);
335
+ const tmpFilePath = `${filePath}.${process.pid}.tmp`;
336
+ const payload = {
337
+ version: 1,
338
+ updatedAt: new Date().toISOString(),
339
+ ids: normalized,
340
+ };
341
+ fs.writeFileSync(tmpFilePath, `${JSON.stringify(payload, null, 2)}\n`, {
342
+ encoding: "utf-8",
343
+ mode: 0o600,
344
+ });
345
+ fs.renameSync(tmpFilePath, filePath);
346
+ }
347
+ import { fetchWithTimeoutGuard as _fetchWithTimeoutGuard, streamResponseBodyWithByteLimit as _streamResponseBodyWithByteLimit, isAbortError, responseContentLength, } from "./server-helpers-fetch.js";
348
+ export { fetchWithTimeoutGuard, streamResponseBodyWithByteLimit, } from "./server-helpers-fetch.js";
349
+ const fetchWithTimeoutGuard = _fetchWithTimeoutGuard;
350
+ const streamResponseBodyWithByteLimit = _streamResponseBodyWithByteLimit;
351
+ const STREAMING_PLUGIN_MODULE_ID = ["@elizaos", "plugin-streaming"].join("/");
352
+ function isObjectRecord(value) {
353
+ return typeof value === "object" && value !== null && !Array.isArray(value);
354
+ }
355
+ function isStreamingPluginDestinationFactories(value) {
356
+ return (isObjectRecord(value) &&
357
+ typeof value.createCustomRtmpDestination === "function" &&
358
+ typeof value.createNamedRtmpDestination === "function" &&
359
+ typeof value.createTwitchDestination === "function" &&
360
+ typeof value.createYoutubeDestination === "function" &&
361
+ typeof value.createPumpfunDestination === "function" &&
362
+ typeof value.createXStreamDestination === "function");
363
+ }
364
+ async function loadStreamingPluginDestinationFactories() {
365
+ const moduleValue = await import(__rewriteRelativeImportExtension(STREAMING_PLUGIN_MODULE_ID));
366
+ if (!isStreamingPluginDestinationFactories(moduleValue)) {
367
+ throw new Error("missing destination factory exports");
368
+ }
369
+ return moduleValue;
370
+ }
371
+ /**
372
+ * Read and parse a JSON request body with size limits and error handling.
373
+ * Returns null (and sends a 4xx response) if reading or parsing fails.
374
+ */
375
+ async function readJsonBody(req, res, options = {}) {
376
+ return parseJsonBody(req, res, {
377
+ maxBytes: MAX_BODY_BYTES,
378
+ ...options,
379
+ });
380
+ }
381
+ const readBody = (req) => readRequestBody(req, { maxBytes: MAX_BODY_BYTES }).then((value) => value ?? "");
382
+ let activeTerminalRunCount = 0;
383
+ function json(res, data, status = 200) {
384
+ sendJson(res, data, status);
385
+ }
386
+ function error(res, message, status = 400) {
387
+ sendJsonError(res, message, status);
388
+ }
389
+ function emptyTrainingTaskCounters() {
390
+ return {
391
+ should_respond: 0,
392
+ context_routing: 0,
393
+ action_planner: 0,
394
+ response: 0,
395
+ media_description: 0,
396
+ };
397
+ }
398
+ const TRAINING_CONFIG_MODULE = "@elizaos/plugin-training";
399
+ function defaultTrainingConfig() {
400
+ return {
401
+ autoTrain: true,
402
+ triggerThreshold: 100,
403
+ triggerCooldownHours: 12,
404
+ backends: ["native"],
405
+ };
406
+ }
407
+ async function loadOptionalTrainingConfigApi() {
408
+ try {
409
+ const loaded = (await import(__rewriteRelativeImportExtension(
410
+ /* @vite-ignore */ TRAINING_CONFIG_MODULE)));
411
+ if (typeof loaded.loadTrainingConfig === "function" &&
412
+ typeof loaded.normalizeTrainingConfig === "function" &&
413
+ typeof loaded.saveTrainingConfig === "function") {
414
+ return loaded;
415
+ }
416
+ }
417
+ catch {
418
+ // app-training is optional in this server path.
419
+ }
420
+ return null;
421
+ }
422
+ async function readOptionalTrainingConfig() {
423
+ const api = await loadOptionalTrainingConfigApi();
424
+ return api?.loadTrainingConfig() ?? defaultTrainingConfig();
425
+ }
426
+ function parseBrowserBridgeKind(browserPlugin, value) {
427
+ if (!value)
428
+ return null;
429
+ const decoded = decodeURIComponent(value);
430
+ return browserPlugin.BROWSER_BRIDGE_KINDS.includes(decoded)
431
+ ? decoded
432
+ : null;
433
+ }
434
+ function parseBrowserBridgePackageTarget(browserPlugin, value) {
435
+ return typeof value === "string" &&
436
+ browserPlugin.BROWSER_BRIDGE_PACKAGE_PATH_TARGETS.includes(value)
437
+ ? value
438
+ : null;
439
+ }
440
+ async function handleBuiltinOptionalRoutes(req, res, pathname, method) {
441
+ if (method === "GET" && pathname === "/api/wallet/steward-status") {
442
+ const { getWalletAddresses } = await getCoreWalletApi();
443
+ const addresses = getWalletAddresses();
444
+ json(res, {
445
+ configured: false,
446
+ available: false,
447
+ connected: false,
448
+ error: "Steward wallet service is not loaded.",
449
+ walletAddresses: {
450
+ evm: addresses.evmAddress ?? null,
451
+ solana: addresses.solanaAddress ?? null,
452
+ },
453
+ evmAddress: addresses.evmAddress ?? undefined,
454
+ vaultHealth: "degraded",
455
+ });
456
+ return true;
457
+ }
458
+ if (method === "GET" && pathname === "/api/training/auto/config") {
459
+ json(res, { config: await readOptionalTrainingConfig() });
460
+ return true;
461
+ }
462
+ if (method === "POST" && pathname === "/api/training/auto/config") {
463
+ const body = (await readJsonBody(req, res)) ?? null;
464
+ if (!body)
465
+ return true;
466
+ const api = await loadOptionalTrainingConfigApi();
467
+ const currentConfig = api?.loadTrainingConfig() ?? defaultTrainingConfig();
468
+ const config = api
469
+ ? api.normalizeTrainingConfig({
470
+ ...currentConfig,
471
+ ...body,
472
+ })
473
+ : currentConfig;
474
+ api?.saveTrainingConfig(config);
475
+ json(res, { config });
476
+ return true;
477
+ }
478
+ if (method === "GET" && pathname === "/api/training/auto/status") {
479
+ const config = await readOptionalTrainingConfig();
480
+ json(res, {
481
+ autoTrainEnabled: config.autoTrain,
482
+ triggerThreshold: config.triggerThreshold,
483
+ cooldownHours: config.triggerCooldownHours,
484
+ counters: emptyTrainingTaskCounters(),
485
+ lastTrain: {},
486
+ perTaskThresholds: emptyTrainingTaskCounters(),
487
+ perTaskCooldownMs: emptyTrainingTaskCounters(),
488
+ serviceRegistered: false,
489
+ });
490
+ return true;
491
+ }
492
+ if (pathname === "/api/lifeops/activity-signals") {
493
+ if (method === "GET") {
494
+ json(res, { signals: [] });
495
+ return true;
496
+ }
497
+ if (method === "POST") {
498
+ await readBody(req).catch(() => undefined);
499
+ json(res, {
500
+ ok: true,
501
+ stored: false,
502
+ reason: "lifeops_route_unavailable",
503
+ });
504
+ return true;
505
+ }
506
+ }
507
+ if (method === "GET" && pathname === "/api/voice/profiles") {
508
+ json(res, { profiles: [] });
509
+ return true;
510
+ }
511
+ if (method === "GET" && pathname === "/api/discord-local/status") {
512
+ json(res, {
513
+ available: false,
514
+ connected: false,
515
+ authenticated: false,
516
+ currentUser: null,
517
+ subscribedChannelIds: [],
518
+ configuredChannelIds: [],
519
+ scopes: [],
520
+ lastError: null,
521
+ ipcPath: null,
522
+ });
523
+ return true;
524
+ }
525
+ if (method === "GET" &&
526
+ pathname === "/api/lifeops/connectors/imessage/status") {
527
+ json(res, {
528
+ available: false,
529
+ connected: false,
530
+ bridgeType: "none",
531
+ hostPlatform: process.platform,
532
+ diagnostics: [],
533
+ error: null,
534
+ chatDbAvailable: false,
535
+ sendOnly: false,
536
+ reason: "lifeops_route_unavailable",
537
+ permissionAction: null,
538
+ });
539
+ return true;
540
+ }
541
+ if (method === "GET" && pathname === "/api/signal/status") {
542
+ const requestUrl = new URL(req.url ?? pathname, "http://localhost");
543
+ const accountId = requestUrl.searchParams.get("accountId") || "default";
544
+ json(res, {
545
+ accountId,
546
+ status: "idle",
547
+ authExists: false,
548
+ serviceConnected: false,
549
+ qrDataUrl: null,
550
+ phoneNumber: null,
551
+ error: null,
552
+ });
553
+ return true;
554
+ }
555
+ if (method === "GET" && pathname === "/api/setup/telegram-account/status") {
556
+ json(res, {
557
+ connector: "telegram-account",
558
+ state: "idle",
559
+ detail: {
560
+ status: "idle",
561
+ configured: false,
562
+ sessionExists: false,
563
+ serviceConnected: false,
564
+ restartRequired: false,
565
+ hasAppCredentials: false,
566
+ phone: null,
567
+ isCodeViaApp: false,
568
+ account: null,
569
+ error: null,
570
+ },
571
+ });
572
+ return true;
573
+ }
574
+ if (method === "GET" && pathname === "/api/whatsapp/status") {
575
+ const requestUrl = new URL(req.url ?? pathname, "http://localhost");
576
+ const accountId = requestUrl.searchParams.get("accountId") || "default";
577
+ const authScope = requestUrl.searchParams.get("authScope");
578
+ json(res, {
579
+ accountId,
580
+ ...(authScope === "platform" || authScope === "lifeops"
581
+ ? { authScope }
582
+ : {}),
583
+ status: "idle",
584
+ authExists: false,
585
+ serviceConnected: false,
586
+ servicePhone: null,
587
+ });
588
+ return true;
589
+ }
590
+ if (method === "GET" && pathname === "/api/coding-agents/preflight") {
591
+ json(res, { installed: [], available: false });
592
+ return true;
593
+ }
594
+ if (method === "GET" &&
595
+ pathname === "/api/coding-agents/coordinator/status") {
596
+ json(res, {
597
+ supervisionLevel: "unavailable",
598
+ taskCount: 0,
599
+ tasks: [],
600
+ pendingConfirmations: 0,
601
+ taskThreadCount: 0,
602
+ taskThreads: [],
603
+ frameworks: [],
604
+ });
605
+ return true;
606
+ }
607
+ if (method === "GET" && pathname === "/api/browser-bridge/companions") {
608
+ json(res, { companions: [] });
609
+ return true;
610
+ }
611
+ if (method === "GET" && pathname === "/api/browser-bridge/packages") {
612
+ const browserPlugin = await getBrowserBridgePlugin();
613
+ json(res, {
614
+ status: browserPlugin
615
+ ? browserPlugin.getBrowserBridgeCompanionPackageStatus()
616
+ : EMPTY_BROWSER_BRIDGE_PACKAGE_STATUS,
617
+ });
618
+ return true;
619
+ }
620
+ if (method === "POST" &&
621
+ pathname === "/api/browser-bridge/packages/open-path") {
622
+ const body = (await readJsonBody(req, res)) ?? null;
623
+ if (!body)
624
+ return true;
625
+ const browserPlugin = await getBrowserBridgePlugin();
626
+ if (!browserPlugin) {
627
+ error(res, "Browser bridge is not available on this platform", 503);
628
+ return true;
629
+ }
630
+ const target = parseBrowserBridgePackageTarget(browserPlugin, body.target);
631
+ if (!target) {
632
+ error(res, "Invalid browser bridge package target", 400);
633
+ return true;
634
+ }
635
+ json(res, await browserPlugin.openBrowserBridgeCompanionPackagePath(target, {
636
+ revealOnly: body.revealOnly === true,
637
+ }));
638
+ return true;
639
+ }
640
+ const packageBuildMatch = pathname.match(/^\/api\/browser-bridge\/packages\/([^/]+)\/build$/);
641
+ if (method === "POST" && packageBuildMatch) {
642
+ const browserPlugin = await getBrowserBridgePlugin();
643
+ if (!browserPlugin) {
644
+ error(res, "Browser bridge is not available on this platform", 503);
645
+ return true;
646
+ }
647
+ const browser = parseBrowserBridgeKind(browserPlugin, packageBuildMatch[1]);
648
+ if (!browser) {
649
+ error(res, "Invalid browser bridge package browser", 400);
650
+ return true;
651
+ }
652
+ json(res, {
653
+ status: await browserPlugin.buildBrowserBridgeCompanionPackage(browser),
654
+ });
655
+ return true;
656
+ }
657
+ const packageManagerMatch = pathname.match(/^\/api\/browser-bridge\/packages\/([^/]+)\/open-manager$/);
658
+ if (method === "POST" && packageManagerMatch) {
659
+ const browserPlugin = await getBrowserBridgePlugin();
660
+ if (!browserPlugin) {
661
+ error(res, "Browser bridge is not available on this platform", 503);
662
+ return true;
663
+ }
664
+ const browser = parseBrowserBridgeKind(browserPlugin, packageManagerMatch[1]);
665
+ if (!browser) {
666
+ error(res, "Invalid browser bridge package browser", 400);
667
+ return true;
668
+ }
669
+ json(res, await browserPlugin.openBrowserBridgeCompanionManager(browser));
670
+ return true;
671
+ }
672
+ if (pathname === "/api/browser-workspace" && method === "GET") {
673
+ const browserPlugin = await getBrowserWorkspacePlugin();
674
+ if (!browserPlugin) {
675
+ json(res, { mode: "web", tabs: [] });
676
+ return true;
677
+ }
678
+ json(res, await browserPlugin.getBrowserWorkspaceSnapshot());
679
+ return true;
680
+ }
681
+ if (pathname === "/api/browser-workspace/command" && method === "POST") {
682
+ const browserPlugin = await getBrowserWorkspacePlugin();
683
+ const body = (await readJsonBody(req, res)) ?? null;
684
+ if (!body?.subaction) {
685
+ error(res, "subaction is required", 400);
686
+ return true;
687
+ }
688
+ if (!browserPlugin) {
689
+ error(res, "Browser workspace is not available on this platform", 503);
690
+ return true;
691
+ }
692
+ json(res, await browserPlugin.executeBrowserWorkspaceCommand(body));
693
+ return true;
694
+ }
695
+ if (pathname === "/api/browser-workspace/tabs" && method === "GET") {
696
+ const browserPlugin = await getBrowserWorkspacePlugin();
697
+ if (!browserPlugin) {
698
+ json(res, { tabs: [] });
699
+ return true;
700
+ }
701
+ json(res, { tabs: await browserPlugin.listBrowserWorkspaceTabs() });
702
+ return true;
703
+ }
704
+ if (pathname === "/api/browser-workspace/tabs" && method === "POST") {
705
+ const browserPlugin = await getBrowserWorkspacePlugin();
706
+ if (!browserPlugin) {
707
+ error(res, "Browser workspace is not available on this platform", 503);
708
+ return true;
709
+ }
710
+ const body = (await readJsonBody(req, res)) ?? {};
711
+ json(res, { tab: await browserPlugin.openBrowserWorkspaceTab(body) });
712
+ return true;
713
+ }
714
+ const tabMatch = pathname.match(/^\/api\/browser-workspace\/tabs\/([^/]+)(?:\/(navigate|eval|show|hide|snapshot))?$/);
715
+ if (!tabMatch) {
716
+ return false;
717
+ }
718
+ const tabId = decodeURIComponent(tabMatch[1]).trim();
719
+ const action = tabMatch[2] ?? null;
720
+ const browserPlugin = await getBrowserWorkspacePlugin();
721
+ if (!browserPlugin) {
722
+ error(res, "Browser workspace is not available on this platform", 503);
723
+ return true;
724
+ }
725
+ if (!action && method === "DELETE") {
726
+ const closed = await browserPlugin.closeBrowserWorkspaceTab(tabId);
727
+ json(res, { closed }, closed ? 200 : 404);
728
+ return true;
729
+ }
730
+ if (action === "show" && method === "POST") {
731
+ json(res, { tab: await browserPlugin.showBrowserWorkspaceTab(tabId) });
732
+ return true;
733
+ }
734
+ if (action === "hide" && method === "POST") {
735
+ json(res, { tab: await browserPlugin.hideBrowserWorkspaceTab(tabId) });
736
+ return true;
737
+ }
738
+ if (action === "snapshot" && method === "GET") {
739
+ json(res, await browserPlugin.snapshotBrowserWorkspaceTab(tabId));
740
+ return true;
741
+ }
742
+ if (action === "navigate" && method === "POST") {
743
+ const body = (await readJsonBody(req, res)) ??
744
+ null;
745
+ if (!body?.url) {
746
+ error(res, "url is required", 400);
747
+ return true;
748
+ }
749
+ json(res, {
750
+ tab: await browserPlugin.navigateBrowserWorkspaceTab({
751
+ id: tabId,
752
+ url: body.url,
753
+ }),
754
+ });
755
+ return true;
756
+ }
757
+ if (action === "eval" && method === "POST") {
758
+ const body = (await readJsonBody(req, res)) ??
759
+ null;
760
+ if (!body?.script) {
761
+ error(res, "script is required", 400);
762
+ return true;
763
+ }
764
+ json(res, {
765
+ value: await browserPlugin.evaluateBrowserWorkspaceTab({
766
+ id: tabId,
767
+ script: body.script,
768
+ }),
769
+ });
770
+ return true;
771
+ }
772
+ return false;
773
+ }
774
+ // ---------------------------------------------------------------------------
775
+ import { serveMediaFile } from "./media-store.js";
776
+ import { injectApiBaseIntoHtml, isAuthProtectedRoute, serveStaticUi, } from "./static-file-server.js";
777
+ export { injectApiBaseIntoHtml };
778
+ function coerce(value) {
779
+ return value;
780
+ }
781
+ function parseBoundedLimit(rawLimit, fallback = 15) {
782
+ return parseClampedInteger(rawLimit, {
783
+ min: 1,
784
+ max: 50,
785
+ fallback,
786
+ });
787
+ }
788
+ function sanitizeFavoriteAppList(value) {
789
+ if (!Array.isArray(value))
790
+ return [];
791
+ const seen = new Set();
792
+ const apps = [];
793
+ for (const item of value) {
794
+ if (typeof item !== "string")
795
+ continue;
796
+ const trimmed = item.trim();
797
+ if (!trimmed || seen.has(trimmed))
798
+ continue;
799
+ seen.add(trimmed);
800
+ apps.push(trimmed);
801
+ }
802
+ return apps;
803
+ }
804
+ function readFavoriteAppsFromConfig(config) {
805
+ const ui = (config.ui ?? {});
806
+ return sanitizeFavoriteAppList(ui.favoriteApps);
807
+ }
808
+ function writeFavoriteAppsToConfig(config, apps) {
809
+ const sanitized = sanitizeFavoriteAppList(apps);
810
+ const ui = (config.ui ?? {});
811
+ ui.favoriteApps = sanitized;
812
+ config.ui = ui;
813
+ saveElizaConfig(config);
814
+ return sanitized;
815
+ }
816
+ const isBlockedObjectKey = isBlockedObjectKeyFromConfig;
817
+ import { resolveMcpServersRejection as _resolveMcpServersRejection, resolveMcpTerminalAuthorizationRejection as _resolveMcpTerminalAuthorizationRejection, } from "./server-helpers-mcp.js";
818
+ export { resolveMcpServersRejection, resolveMcpTerminalAuthorizationRejection, validateMcpServerConfig, } from "./server-helpers-mcp.js";
819
+ const resolveMcpServersRejection = _resolveMcpServersRejection;
820
+ import { pickRandomNames } from "../runtime/first-run-names.js";
821
+ import { resolveDefaultAgentWorkspaceDir } from "../shared/workspace-resolution.js";
822
+ import { applyFirstRunVoicePreset, ensureWalletKeysInEnvAndConfig, getCloudProviderOptions, getProviderOptions, isBlockedObjectKey as isBlockedObjectKeyFromConfig, isRedactedSecretValue, readUiLanguageHeader, redactConfigSecrets, redactDeep, resolveConfiguredCharacterLanguage, resolveDefaultAgentName, stripRedactedPlaceholderValuesDeep, } from "./server-helpers-config.js";
823
+ export { isSafeResetStateDir } from "./server-helpers-config.js";
824
+ // ---------------------------------------------------------------------------
825
+ // Trade permission helpers (exported for use by awareness contributors)
826
+ // ---------------------------------------------------------------------------
827
+ /**
828
+ * Resolve the active trade permission mode from config.
829
+ * Falls back to "user-sign-only" when not configured.
830
+ */
831
+ export function resolveTradePermissionMode(config) {
832
+ const raw = config.features
833
+ ?.tradePermissionMode;
834
+ if (raw === "user-sign-only" ||
835
+ raw === "manual-local-key" ||
836
+ raw === "agent-auto") {
837
+ return raw;
838
+ }
839
+ return "user-sign-only";
840
+ }
841
+ /**
842
+ * Maximum number of autonomous agent trades allowed per calendar day.
843
+ * Acts as a safety rail when `agent-auto` mode is enabled.
844
+ */
845
+ // Trade safety utilities (defined in trade-safety.ts for testability)
846
+ import { canUseLocalTradeExecution, } from "./trade-safety.js";
847
+ export { AGENT_AUTO_MAX_DAILY_TRADES, agentAutoDailyTrades, assertQuoteFresh, canUseLocalTradeExecution, getAgentAutoTradeDate, QUOTE_MAX_AGE_MS, recordAgentAutoTrade, } from "./trade-safety.js";
848
+ const AGENT_AUTOMATION_HEADER = "x-eliza-agent-action";
849
+ const AGENT_AUTOMATION_MODES = new Set([
850
+ "connectors-only",
851
+ "full",
852
+ ]);
853
+ function parseAgentAutomationMode(value) {
854
+ if (typeof value !== "string")
855
+ return null;
856
+ const normalized = value.trim().toLowerCase();
857
+ if (!AGENT_AUTOMATION_MODES.has(normalized)) {
858
+ return null;
859
+ }
860
+ return normalized;
861
+ }
862
+ function _isAgentAutomationRequest(req) {
863
+ const raw = req.headers[AGENT_AUTOMATION_HEADER];
864
+ if (typeof raw !== "string")
865
+ return false;
866
+ return /^(1|true|yes|agent)$/i.test(raw.trim());
867
+ }
868
+ function persistAgentAutomationMode(state, mode) {
869
+ state.agentAutomationMode = mode;
870
+ if (!state.config.features) {
871
+ state.config.features = {};
872
+ }
873
+ const features = state.config.features;
874
+ const current = features.agentAutomation;
875
+ const currentObject = current && typeof current === "object" && !Array.isArray(current)
876
+ ? current
877
+ : {};
878
+ features.agentAutomation = {
879
+ ...currentObject,
880
+ enabled: true,
881
+ mode,
882
+ };
883
+ }
884
+ function buildPluginEvmDiagnosticEntry(state) {
885
+ const capability = resolveWalletCapabilityStatus(state);
886
+ const enabled = capability.pluginEvmLoaded ||
887
+ capability.pluginEvmRequired ||
888
+ (state.config.plugins?.allow ?? []).some((entry) => {
889
+ return (entry === EVM_PLUGIN_PACKAGE || entry === "evm" || entry === "wallet");
890
+ });
891
+ const capabilityStatus = capability.pluginEvmLoaded
892
+ ? capability.pluginEvmRequired
893
+ ? "loaded"
894
+ : "auto-enabled"
895
+ : enabled
896
+ ? capability.evmAddress || capability.localSignerAvailable
897
+ ? "blocked"
898
+ : "missing-prerequisites"
899
+ : "disabled";
900
+ return {
901
+ id: "evm",
902
+ name: "Plugin EVM",
903
+ description: "EVM wallet runtime for balance, transfer, and trade actions. Required for wallet execution in chat.",
904
+ tags: ["wallet", "evm", "bsc", "onchain"],
905
+ enabled,
906
+ configured: capability.pluginEvmRequired,
907
+ envKey: "EVM_PRIVATE_KEY",
908
+ category: "feature",
909
+ source: "bundled",
910
+ configKeys: [
911
+ "EVM_PRIVATE_KEY",
912
+ "BSC_RPC_URL",
913
+ "BSC_TESTNET_RPC_URL",
914
+ "ELIZA_WALLET_NETWORK",
915
+ ],
916
+ parameters: [],
917
+ validationErrors: [],
918
+ validationWarnings: [],
919
+ npmName: EVM_PLUGIN_PACKAGE,
920
+ isActive: capability.pluginEvmLoaded,
921
+ autoEnabled: capability.pluginEvmRequired && !capability.pluginEvmLoaded,
922
+ managementMode: "core-optional",
923
+ capabilityStatus,
924
+ capabilityReason: capability.executionReady
925
+ ? "Wallet execution is ready."
926
+ : capability.executionBlockedReason,
927
+ prerequisites: [
928
+ { label: "wallet present", met: Boolean(capability.evmAddress) },
929
+ { label: "rpc ready", met: capability.rpcReady },
930
+ { label: "plugin loaded", met: capability.pluginEvmLoaded },
931
+ ],
932
+ };
933
+ }
934
+ import { resolveWalletExportRejection as _resolveWalletExportRejection } from "./server-helpers-wallet.js";
935
+ export { hasUsableWalletFallbackParams, inferWalletExecutionFallback, resolveWalletExportRejection, } from "./server-helpers-wallet.js";
936
+ const resolveWalletExportRejection = _resolveWalletExportRejection;
937
+ import { resolvePluginConfigMutationRejections as _resolvePluginConfigMutationRejections } from "./server-helpers-plugin.js";
938
+ export { resolvePluginConfigMutationRejections, resolvePluginConfigReply, } from "./server-helpers-plugin.js";
939
+ const resolvePluginConfigMutationRejections = _resolvePluginConfigMutationRejections;
940
+ const TRAINING_SERVICE_REGISTRY_MODULE = "@elizaos/plugin-training";
941
+ async function resolveTrainingServiceCtor() {
942
+ if (isMobilePlatform()) {
943
+ logger.info("[eliza-api] Training service disabled on mobile platform");
944
+ return null;
945
+ }
946
+ const candidates = [
947
+ "../services/training-service",
948
+ "@elizaos/plugin-training",
949
+ "@elizaos/plugin-training",
950
+ ];
951
+ for (const specifier of candidates) {
952
+ try {
953
+ const loaded = (await import(__rewriteRelativeImportExtension(/* @vite-ignore */ specifier)));
954
+ const ctor = loaded.TrainingService;
955
+ if (typeof ctor === "function") {
956
+ return ctor;
957
+ }
958
+ }
959
+ catch {
960
+ // Keep trying fallbacks.
961
+ }
962
+ }
963
+ return null;
964
+ }
965
+ async function setActiveTrainingServiceIfAvailable(service) {
966
+ try {
967
+ const loaded = (await import(__rewriteRelativeImportExtension(
968
+ /* @vite-ignore */ TRAINING_SERVICE_REGISTRY_MODULE)));
969
+ loaded.setActiveTrainingService?.(service);
970
+ }
971
+ catch (err) {
972
+ logger.debug(`[eliza-api] Training service registry unavailable: ${err instanceof Error ? err.message : String(err)}`);
973
+ }
974
+ }
975
+ const resolveMcpTerminalAuthorizationRejection = _resolveMcpTerminalAuthorizationRejection;
976
+ import { applyCors as _applyCors, clearPairing as _clearPairing, ensureApiTokenForBindHost as _ensureApiTokenForBindHost, ensurePairingCode as _ensurePairingCode, getConfiguredApiToken as _getConfiguredApiToken, getPairingExpiresAt as _getPairingExpiresAt, isAllowedHost as _isAllowedHost, isAuthorized as _isAuthorized, isSharedTerminalClientId as _isSharedTerminalClientId, isWaifuChatAuthorized as _isWaifuChatAuthorized, isWebSocketAuthorized as _isWebSocketAuthorized, normalizePairingCode as _normalizePairingCode, normalizeWsClientId as _normalizeWsClientId, pairingEnabled as _pairingEnabled, rateLimitPairing as _rateLimitPairing, rejectWebSocketUpgrade as _rejectWebSocketUpgrade, resolveTerminalRunClientId as _resolveTerminalRunClientId, resolveTerminalRunRejection as _resolveTerminalRunRejection, resolveWebSocketUpgradeRejection as _resolveWebSocketUpgradeRejection, } from "./server-helpers-auth.js";
977
+ export { ensureApiTokenForBindHost, extractAuthToken, isAllowedHost, isAuthorized, isWaifuChatAuthorized, normalizeWsClientId, resolveCorsOrigin, resolveTerminalRunClientId, resolveTerminalRunRejection, resolveWebSocketUpgradeRejection, } from "./server-helpers-auth.js";
978
+ const isAllowedHost = _isAllowedHost;
979
+ const applyCors = _applyCors;
980
+ const isAuthorized = _isAuthorized;
981
+ const isWaifuChatAuthorized = _isWaifuChatAuthorized;
982
+ const ensureApiTokenForBindHost = _ensureApiTokenForBindHost;
983
+ const normalizeWsClientId = _normalizeWsClientId;
984
+ const resolveTerminalRunClientId = _resolveTerminalRunClientId;
985
+ const isSharedTerminalClientId = _isSharedTerminalClientId;
986
+ const resolveTerminalRunRejection = _resolveTerminalRunRejection;
987
+ const resolveWebSocketUpgradeRejection = _resolveWebSocketUpgradeRejection;
988
+ const rejectWebSocketUpgrade = _rejectWebSocketUpgrade;
989
+ const isWebSocketAuthorized = _isWebSocketAuthorized;
990
+ const getConfiguredApiToken = _getConfiguredApiToken;
991
+ const pairingEnabled = _pairingEnabled;
992
+ const ensurePairingCode = _ensurePairingCode;
993
+ const normalizePairingCode = _normalizePairingCode;
994
+ const rateLimitPairing = _rateLimitPairing;
995
+ const getPairingExpiresAt = _getPairingExpiresAt;
996
+ const clearPairing = _clearPairing;
997
+ /**
998
+ * Lazy per-process runtime operation manager. Constructed on first
999
+ * request because it needs the per-server `state` reference + the
1000
+ * `onRestart` closure. Cached so subsequent requests see the same
1001
+ * active-op slot and execution chain.
1002
+ */
1003
+ let cachedRuntimeOperationManager = null;
1004
+ function getOrCreateRuntimeOperationManager(state, restartRuntime) {
1005
+ if (cachedRuntimeOperationManager) {
1006
+ return cachedRuntimeOperationManager;
1007
+ }
1008
+ const repository = getDefaultRepository();
1009
+ const healthChecker = getDefaultHealthChecker();
1010
+ const coldStrategy = createColdStrategy({
1011
+ restartRuntime: async (reason) => {
1012
+ const ok = await restartRuntime(reason);
1013
+ if (!ok)
1014
+ return null;
1015
+ return state.runtime;
1016
+ },
1017
+ });
1018
+ const hotStrategy = createHotStrategy({});
1019
+ const classifyContext = () => ({
1020
+ currentProvider: resolvePreferredProviderId(state.config),
1021
+ currentPrimaryModel: resolvePrimaryModel(state.config),
1022
+ });
1023
+ cachedRuntimeOperationManager = new DefaultRuntimeOperationManager({
1024
+ repository,
1025
+ runtime: () => state.runtime,
1026
+ classifyContext,
1027
+ classifier: defaultClassifier,
1028
+ healthChecker,
1029
+ strategies: { cold: coldStrategy, hot: hotStrategy },
1030
+ });
1031
+ return cachedRuntimeOperationManager;
1032
+ }
1033
+ import { isLifeOpsCloudPluginRoute, maybeRouteAutonomyEventToConversation, } from "./server-autonomy-helpers.js";
1034
+ import { getPtyConsoleBridge, wireCodingAgentChatBridge, wireCodingAgentSwarmSynthesis, wireCodingAgentWsBridge, wireCoordinatorEventRouting, } from "./server-helpers-swarm.js";
1035
+ import { asObject, normalizeTags, parseNullableNumber, readTaskCompleted, readTaskMetadata, toWorkbenchTodo, } from "./workbench-helpers.js";
1036
+ export { handleSwarmSynthesis, routeAutonomyTextToUser, } from "./server-helpers-swarm.js";
1037
+ // One process-wide governance gate shared across runtime (re)registrations, so a
1038
+ // restart doesn't reset the proactive-comment cooldowns/caps (#8792).
1039
+ const proactiveInteractionGate = new ProactiveInteractionGate();
1040
+ function proactiveNotificationGroupKey(offer) {
1041
+ if (offer.groupKey)
1042
+ return offer.groupKey;
1043
+ const basis = (offer.deepLink || offer.title || offer.text)
1044
+ .toLowerCase()
1045
+ .replace(/[^a-z0-9:/._-]+/g, "-")
1046
+ .replace(/^-+|-+$/g, "")
1047
+ .slice(0, 72);
1048
+ return `proactive-interaction:${basis || "general"}`;
1049
+ }
1050
+ async function notifyProactiveInteraction(rt, offer) {
1051
+ const service = rt.getService(ServiceType.NOTIFICATION);
1052
+ if (!(service instanceof NotificationService)) {
1053
+ logger.debug("[proactive-interaction] notification service unavailable; suppressing notify-lane offer");
1054
+ return;
1055
+ }
1056
+ const title = offer.title?.trim() || offer.text;
1057
+ await service.notify({
1058
+ title,
1059
+ body: title === offer.text ? undefined : offer.text,
1060
+ category: "agent",
1061
+ priority: "low",
1062
+ source: PROACTIVE_INTERACTION_SOURCE,
1063
+ deepLink: offer.deepLink,
1064
+ groupKey: proactiveNotificationGroupKey(offer),
1065
+ data: { kind: "proactive-interaction" },
1066
+ });
1067
+ }
1068
+ /**
1069
+ * Wire the proactive-interaction decider (#8792): subscribe to VIEW_SWITCHED and
1070
+ * route an admitted, model-judged offer into chat suggestions or low-priority
1071
+ * notifications. No-ops when disabled by config/kill-switch.
1072
+ */
1073
+ function wireProactiveInteractionDecider(rt, state) {
1074
+ registerProactiveInteractionDecider(rt, {
1075
+ gate: proactiveInteractionGate,
1076
+ route: (text) => routeProactiveText(state, text, PROACTIVE_INTERACTION_SOURCE),
1077
+ notify: (offer) => notifyProactiveInteraction(rt, offer),
1078
+ shouldSuppress: () => state.activeChatTurnCount > 0,
1079
+ });
1080
+ }
1081
+ async function handleRequest(req, res, state, ctx) {
1082
+ const method = req.method ?? "GET";
1083
+ let url;
1084
+ try {
1085
+ url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
1086
+ }
1087
+ catch {
1088
+ error(res, "Invalid request URL", 400);
1089
+ return;
1090
+ }
1091
+ const pathname = url.pathname;
1092
+ const isAuthEndpoint = pathname.startsWith("/api/auth/");
1093
+ const isHealthEndpoint = method === "GET" && pathname === "/api/health";
1094
+ let isCloudProvisionedContainer = () => false;
1095
+ let handleCloudStatusRoutes = async (_args) => false;
1096
+ if (
1097
+ // plugin-elizacloud is desktop/cloud-only; on mobile its dynamic import
1098
+ // does not resolve and the resulting await stalls the whole request (the
1099
+ // /api/cloud, /api/coding-agents, and cloud-first-run paths then hang).
1100
+ // Skip the import on mobile — the default no-op cloud helpers above keep
1101
+ // isCloudProvisioned=false (correct for a local mobile agent) and let the
1102
+ // request fall through to its normal handler/404.
1103
+ !isMobilePlatform() &&
1104
+ (pathname === "/api/first-run/status" ||
1105
+ pathname.startsWith("/api/cloud") ||
1106
+ pathname.startsWith("/api/coding-agents"))) {
1107
+ const cloudApi = await getOptionalPluginApi("cloud");
1108
+ isCloudProvisionedContainer = cloudApi.isCloudProvisionedContainer;
1109
+ handleCloudStatusRoutes = cloudApi.handleCloudStatusRoutes;
1110
+ }
1111
+ const isCloudProvisioned = isCloudProvisionedContainer();
1112
+ const isCloudFirstRunStatusEndpoint = method === "GET" &&
1113
+ pathname === "/api/first-run/status" &&
1114
+ isCloudProvisioned;
1115
+ // Webhook exemptions: handlers MUST authenticate callers (see plugin handlers).
1116
+ // WhatsApp: X-Hub-Signature-256 HMAC (WHATSAPP_APP_SECRET).
1117
+ // BlueBubbles: X-BlueBubbles-Webhook-Secret (BLUEBUBBLES_WEBHOOK_SECRET).
1118
+ const isWhatsAppWebhookEndpoint = pathname === "/api/whatsapp/webhook";
1119
+ let blueBubblesWebhookPath = pathname === "/webhooks/bluebubbles" ? "/webhooks/bluebubbles" : null;
1120
+ if (pathname.startsWith("/webhooks/")) {
1121
+ const { resolveBlueBubblesWebhookPath } = await getOptionalPluginApi("imessage");
1122
+ blueBubblesWebhookPath =
1123
+ typeof resolveBlueBubblesWebhookPath === "function"
1124
+ ? resolveBlueBubblesWebhookPath({
1125
+ runtime: state.runtime
1126
+ ? {
1127
+ getService: (type) => state.runtime.getService(type),
1128
+ }
1129
+ : undefined,
1130
+ })
1131
+ : blueBubblesWebhookPath;
1132
+ }
1133
+ const isBlueBubblesWebhookEndpoint = blueBubblesWebhookPath != null && pathname === blueBubblesWebhookPath;
1134
+ const isAuthProtectedPath = isAuthProtectedRoute(pathname);
1135
+ const canonicalizeRestartReason = (reason) => {
1136
+ if (reason === "primary-changed" ||
1137
+ reason === "cloud-refreshed" ||
1138
+ reason === "Wallet configuration updated") {
1139
+ return "Wallet configuration updated";
1140
+ }
1141
+ return reason;
1142
+ };
1143
+ const scheduleRuntimeRestart = (reason) => {
1144
+ const canonicalReason = canonicalizeRestartReason(reason);
1145
+ if (state.pendingRestartReasons.length >= 50) {
1146
+ // Prevent unbounded growth — keep only first entry + latest
1147
+ state.pendingRestartReasons.splice(1, state.pendingRestartReasons.length - 1);
1148
+ }
1149
+ if (!state.pendingRestartReasons.includes(canonicalReason)) {
1150
+ state.pendingRestartReasons.push(canonicalReason);
1151
+ }
1152
+ logger.info(`[eliza-api] Restart required: ${canonicalReason} (${state.pendingRestartReasons.length} pending)`);
1153
+ state.broadcastWs?.({
1154
+ type: "restart-required",
1155
+ reasons: [...state.pendingRestartReasons],
1156
+ });
1157
+ };
1158
+ const restartRuntime = async (reason) => {
1159
+ if (!ctx?.onRestart) {
1160
+ return false;
1161
+ }
1162
+ if (state.agentState === "restarting") {
1163
+ return false;
1164
+ }
1165
+ const previousState = state.agentState;
1166
+ logger.info(`[eliza-api] Applying runtime reload: ${reason}`);
1167
+ state.agentState = "restarting";
1168
+ state.startup = { ...state.startup, phase: "restarting" };
1169
+ state.broadcastStatus?.();
1170
+ try {
1171
+ const newRuntime = await ctx.onRestart();
1172
+ if (!newRuntime) {
1173
+ state.agentState = previousState;
1174
+ state.broadcastStatus?.();
1175
+ return false;
1176
+ }
1177
+ state.runtime = newRuntime;
1178
+ state.chatConnectionReady = null;
1179
+ state.chatConnectionPromise = null;
1180
+ state.agentState = "running";
1181
+ state.agentName =
1182
+ newRuntime.character.name ?? resolveDefaultAgentName(state.config);
1183
+ state.model = detectRuntimeModel(newRuntime, state.config);
1184
+ state.startedAt = Date.now();
1185
+ state.pendingRestartReasons = [];
1186
+ ctx.onRuntimeSwapped?.();
1187
+ state.broadcastStatus?.();
1188
+ return true;
1189
+ }
1190
+ catch (err) {
1191
+ logger.warn(`[eliza-api] Runtime reload failed: ${err instanceof Error ? err.message : String(err)}`);
1192
+ state.agentState = previousState;
1193
+ state.broadcastStatus?.();
1194
+ return false;
1195
+ }
1196
+ };
1197
+ // ── DNS rebinding protection ──────────────────────────────────────────
1198
+ // Reject requests whose Host header doesn't match a known loopback
1199
+ // hostname. Without this check an attacker can rebind their domain's
1200
+ // DNS to 127.0.0.1 and read the unauthenticated localhost API from a
1201
+ // malicious page.
1202
+ if (!isAllowedHost(req)) {
1203
+ const incomingHost = req.headers.host ?? "your-hostname";
1204
+ json(res, {
1205
+ error: "Forbidden — invalid Host header",
1206
+ hint: `To allow this host, set ELIZA_ALLOWED_HOSTS=${incomingHost} in your environment, or access via http://localhost`,
1207
+ docs: "https://docs.eliza.ai/configuration#allowed-hosts",
1208
+ }, 403);
1209
+ return;
1210
+ }
1211
+ if (!applyCors(req, res, pathname)) {
1212
+ json(res, { error: "Origin not allowed" }, 403);
1213
+ return;
1214
+ }
1215
+ // Cloud SSO popup handoff: GET /pair?token=X must short-circuit BEFORE the
1216
+ // static-UI catch-all, otherwise the SPA index.html is served and the user
1217
+ // ends up on the password screen.
1218
+ //
1219
+ // Guard the call: in the on-device mobile bundle this app-core export can
1220
+ // come through as `undefined` (circular re-export init order under Bun.build),
1221
+ // and an unguarded call throws on EVERY request — 500-ing /api/auth/status
1222
+ // and wedging the dashboard at "Connecting to backend…". The route is a
1223
+ // cloud-SSO handoff that a local on-device agent never legitimately serves,
1224
+ // so skipping it when unavailable is safe.
1225
+ // Dynamic import (matching the account-pool / vault-mirror seams in this
1226
+ // package) so agent never *statically* imports @elizaos/app-core: the static
1227
+ // import was what produced the circular re-export init-order `undefined`
1228
+ // above, and it is the build-time edge that puts @elizaos/app-core <->
1229
+ // @elizaos/agent in a Turbo dependency cycle (#9626). `.catch(() => null)`
1230
+ // keeps the on-device path graceful when app-core isn't present at all.
1231
+ const cloudPairMod = await import(
1232
+ /* @vite-ignore */ "@elizaos/app-core/api/cloud-pair-route").catch(() => null);
1233
+ if (typeof cloudPairMod?.handleCloudPairRoute === "function" &&
1234
+ (await cloudPairMod.handleCloudPairRoute(req, res))) {
1235
+ return;
1236
+ }
1237
+ // Serve dashboard static assets before the auth gates. serveStaticUi already
1238
+ // refuses /api/, /v1/, and /ws paths, so API endpoints remain protected
1239
+ // while steward-managed containers can still reach the built-in dashboard.
1240
+ if (method === "GET" || method === "HEAD") {
1241
+ if (serveStaticUi(req, res, pathname))
1242
+ return;
1243
+ // Chat media (uploaded + generated). Content-addressed sha256 filenames act
1244
+ // as unguessable capabilities, so media loads from <img>/<audio> without an
1245
+ // auth header — same rationale as static assets above.
1246
+ if (serveMediaFile(req, res, pathname))
1247
+ return;
1248
+ }
1249
+ if (method !== "OPTIONS" &&
1250
+ isAuthProtectedPath &&
1251
+ !isAuthEndpoint &&
1252
+ !isHealthEndpoint &&
1253
+ !isCloudFirstRunStatusEndpoint &&
1254
+ !isWhatsAppWebhookEndpoint &&
1255
+ !isBlueBubblesWebhookEndpoint &&
1256
+ !isPublicRuntimePluginRoute({
1257
+ runtime: state.runtime,
1258
+ method,
1259
+ pathname,
1260
+ }) &&
1261
+ !isAuthorized(req) &&
1262
+ !isWaifuChatAuthorized(req, method, pathname)) {
1263
+ json(res, { error: "Unauthorized" }, 401);
1264
+ return;
1265
+ }
1266
+ // CORS preflight
1267
+ if (method === "OPTIONS") {
1268
+ res.statusCode = 204;
1269
+ res.end();
1270
+ return;
1271
+ }
1272
+ if ((pathname.startsWith("/api/local-inference") ||
1273
+ pathname === "/api/tts/local-inference" ||
1274
+ pathname.startsWith("/api/asr/local-inference") ||
1275
+ pathname.startsWith("/api/voice/audio-frames")) &&
1276
+ (await (async () => {
1277
+ const localInferenceServerApi = await getLocalInferenceServerApi();
1278
+ if (typeof localInferenceServerApi.handleLocalInferenceRoutes ===
1279
+ "function" &&
1280
+ (await localInferenceServerApi.handleLocalInferenceRoutes(req, res))) {
1281
+ return true;
1282
+ }
1283
+ // WebView → agent PCM transport for live on-device speaker diarization.
1284
+ if (localInferenceServerApi.handleLiveDiarizationRoute &&
1285
+ (await localInferenceServerApi.handleLiveDiarizationRoute(req, res, {
1286
+ current: state.runtime,
1287
+ }))) {
1288
+ return true;
1289
+ }
1290
+ if (localInferenceServerApi.handleLocalInferenceAsrRoute &&
1291
+ (await localInferenceServerApi.handleLocalInferenceAsrRoute(req, res, {
1292
+ current: state.runtime,
1293
+ }))) {
1294
+ return true;
1295
+ }
1296
+ return Boolean(localInferenceServerApi.handleLocalInferenceTtsRoute &&
1297
+ (await localInferenceServerApi.handleLocalInferenceTtsRoute(req, res, {
1298
+ current: state.runtime,
1299
+ })));
1300
+ })())) {
1301
+ return;
1302
+ }
1303
+ if (await handleBackgroundTasksRoute({
1304
+ req,
1305
+ res,
1306
+ method,
1307
+ pathname,
1308
+ state,
1309
+ json,
1310
+ })) {
1311
+ return;
1312
+ }
1313
+ // Computer-use is a desktop/cloud-only plugin; on mobile it is not in the
1314
+ // agent bundle, so importing it here would REJECT (`Cannot find module
1315
+ // '@elizaos/plugin-computeruse'`) and surface as a 500 on every renderer poll
1316
+ // of /api/computer-use/approvals. Skip the import path on mobile and let the
1317
+ // request fall through to handleMobileOptionalRoutes, which serves the inert
1318
+ // {mode:"off",…} approval snapshot.
1319
+ if (!isMobilePlatform() && pathname.startsWith("/api/computer-use/")) {
1320
+ const { handleComputerUseRoutes } = await getOptionalPluginApi("computerUse");
1321
+ if (await handleComputerUseRoutes(req, res, pathname, method))
1322
+ return;
1323
+ }
1324
+ // ── Provider inference helpers ────────────────────────────────────────
1325
+ const _disableCloudInference = () => {
1326
+ delete process.env.ANTHROPIC_BASE_URL;
1327
+ delete process.env.OPENAI_BASE_URL;
1328
+ delete process.env.ANTHROPIC_API_KEY;
1329
+ delete process.env.OPENAI_API_KEY;
1330
+ };
1331
+ const _enableCloudInference = (cloudApiKey, baseUrl) => {
1332
+ // Configure coding agent CLIs to proxy through ElizaCloud /api/v1
1333
+ process.env.ANTHROPIC_BASE_URL = `${baseUrl}/api/v1`;
1334
+ process.env.ANTHROPIC_API_KEY = cloudApiKey;
1335
+ process.env.OPENAI_BASE_URL = `${baseUrl}/api/v1`;
1336
+ process.env.OPENAI_API_KEY = cloudApiKey;
1337
+ // Gemini CLI and Aider — no proxy support via ElizaCloud inference
1338
+ };
1339
+ if (method === "POST" && pathname === "/api/provider/switch") {
1340
+ if (await handleProviderSwitchRoutes({
1341
+ req,
1342
+ res,
1343
+ method,
1344
+ pathname,
1345
+ state,
1346
+ json,
1347
+ error,
1348
+ readJsonBody,
1349
+ saveElizaConfig,
1350
+ scheduleRuntimeRestart,
1351
+ runtimeOperationManager: getOrCreateRuntimeOperationManager(state, restartRuntime),
1352
+ })) {
1353
+ return;
1354
+ }
1355
+ }
1356
+ if (await handleAuthRoutes({
1357
+ req,
1358
+ res,
1359
+ method,
1360
+ pathname,
1361
+ readJsonBody,
1362
+ json,
1363
+ error,
1364
+ pairingEnabled,
1365
+ ensurePairingCode,
1366
+ normalizePairingCode,
1367
+ rateLimitPairing,
1368
+ getPairingExpiresAt,
1369
+ clearPairing,
1370
+ })) {
1371
+ return;
1372
+ }
1373
+ if (await handleSubscriptionRoutes({
1374
+ req,
1375
+ res,
1376
+ method,
1377
+ pathname,
1378
+ state,
1379
+ readJsonBody,
1380
+ json,
1381
+ error,
1382
+ saveConfig: saveElizaConfig,
1383
+ loadSubscriptionAuth: async () => (await import("../auth/index.js")),
1384
+ })) {
1385
+ return;
1386
+ }
1387
+ if (await handleAccountsRoutes({
1388
+ req,
1389
+ res,
1390
+ method,
1391
+ pathname,
1392
+ readJsonBody,
1393
+ json,
1394
+ error,
1395
+ state: { config: state.config },
1396
+ saveConfig: saveElizaConfig,
1397
+ })) {
1398
+ return;
1399
+ }
1400
+ if (await handleHealthRoutes({
1401
+ req,
1402
+ res,
1403
+ method,
1404
+ pathname,
1405
+ url,
1406
+ state,
1407
+ json,
1408
+ error,
1409
+ })) {
1410
+ return;
1411
+ }
1412
+ if (await handleFirstRunRoutes({
1413
+ req,
1414
+ res,
1415
+ method,
1416
+ pathname,
1417
+ url,
1418
+ state: coerce(state),
1419
+ json,
1420
+ error,
1421
+ readJsonBody,
1422
+ isCloudProvisionedContainer,
1423
+ hasPersistedFirstRunState,
1424
+ ensureWalletKeysInEnvAndConfig,
1425
+ getWalletAddresses: pathname === "/api/wallet/keys"
1426
+ ? coerce((await getCoreWalletApi()).getWalletAddresses)
1427
+ : coerce(() => ({
1428
+ evmAddress: null,
1429
+ solanaAddress: null,
1430
+ })),
1431
+ pickRandomNames,
1432
+ getStylePresets: coerce(getStylePresets),
1433
+ getProviderOptions: coerce(getProviderOptions),
1434
+ getCloudProviderOptions: coerce(getCloudProviderOptions),
1435
+ getModelOptions: coerce(getModelOptions),
1436
+ getInventoryProviderOptions: coerce(getInventoryProviderOptions),
1437
+ resolveConfiguredCharacterLanguage: coerce(resolveConfiguredCharacterLanguage),
1438
+ normalizeCharacterLanguage: coerce(normalizeCharacterLanguage),
1439
+ readUiLanguageHeader: coerce(readUiLanguageHeader),
1440
+ applyFirstRunVoicePreset: coerce(applyFirstRunVoicePreset),
1441
+ saveElizaConfig,
1442
+ })) {
1443
+ return;
1444
+ }
1445
+ // POST /api/first-run is now handled by first-run-routes.ts above.
1446
+ if (await handleAgentLifecycleRoutes({
1447
+ req,
1448
+ res,
1449
+ method,
1450
+ pathname,
1451
+ state,
1452
+ error,
1453
+ json,
1454
+ readJsonBody,
1455
+ })) {
1456
+ return;
1457
+ }
1458
+ if (pathname.startsWith("/api/triggers") ||
1459
+ pathname.startsWith("/api/heartbeats")) {
1460
+ const { handleTriggerRoutes } = await getOptionalPluginApi("workflow");
1461
+ const triggerHandled = await handleTriggerRoutes({
1462
+ req,
1463
+ res,
1464
+ method,
1465
+ pathname,
1466
+ runtime: state.runtime,
1467
+ readJsonBody,
1468
+ json,
1469
+ error,
1470
+ executeTriggerTask,
1471
+ getTriggerHealthSnapshot,
1472
+ getTriggerLimit,
1473
+ listTriggerTasks,
1474
+ readTriggerConfig,
1475
+ readTriggerRuns,
1476
+ taskToTriggerSummary,
1477
+ triggersFeatureEnabled,
1478
+ buildTriggerConfig,
1479
+ buildTriggerMetadata,
1480
+ normalizeTriggerDraft,
1481
+ DISABLED_TRIGGER_INTERVAL_MS,
1482
+ TRIGGER_TASK_NAME,
1483
+ TRIGGER_TASK_TAGS: [...TRIGGER_TASK_TAGS],
1484
+ });
1485
+ if (triggerHandled) {
1486
+ return;
1487
+ }
1488
+ }
1489
+ // Training routes (/api/training/*) and trajectory routes
1490
+ // (/api/trajectories/*) are now provided by the @elizaos/plugin-training
1491
+ // plugin via the runtime route registry.
1492
+ // Knowledge routes (/api/knowledge/*) are now provided by the
1493
+ // @elizaos/app-knowledge plugin via the runtime route registry.
1494
+ if (pathname.startsWith("/api/memory") ||
1495
+ pathname.startsWith("/api/memories") ||
1496
+ pathname === "/api/context/quick") {
1497
+ const memoryHandled = await handleMemoryRoutes({
1498
+ req,
1499
+ res,
1500
+ method,
1501
+ pathname,
1502
+ url,
1503
+ runtime: state.runtime,
1504
+ agentName: state.agentName,
1505
+ readJsonBody,
1506
+ json,
1507
+ error,
1508
+ });
1509
+ if (memoryHandled)
1510
+ return;
1511
+ }
1512
+ if (await handleAgentAdminRoutes({
1513
+ req,
1514
+ res,
1515
+ method,
1516
+ pathname,
1517
+ state,
1518
+ onRestart: ctx?.onRestart ?? undefined,
1519
+ onRuntimeSwapped: ctx?.onRuntimeSwapped,
1520
+ json,
1521
+ error,
1522
+ resolveStateDir,
1523
+ stateDirExists: fs.existsSync,
1524
+ removeStateDir: (resolvedState) => {
1525
+ fs.rmSync(resolvedState, { recursive: true, force: true });
1526
+ },
1527
+ logWarn: (message) => logger.warn(message),
1528
+ })) {
1529
+ return;
1530
+ }
1531
+ if (await handleAgentTransferRoutes({
1532
+ req,
1533
+ res,
1534
+ method,
1535
+ pathname,
1536
+ state,
1537
+ readJsonBody,
1538
+ json,
1539
+ error,
1540
+ exportAgent,
1541
+ estimateExportSize,
1542
+ importAgent,
1543
+ isAgentExportError: (err) => err instanceof AgentExportError,
1544
+ })) {
1545
+ return;
1546
+ }
1547
+ if (await handleCharacterRoutes({
1548
+ req,
1549
+ res,
1550
+ method,
1551
+ pathname,
1552
+ state,
1553
+ readJsonBody,
1554
+ json,
1555
+ error,
1556
+ pickRandomNames,
1557
+ saveConfig: saveElizaConfig,
1558
+ validateCharacter: (body) => CharacterSchema.safeParse(body),
1559
+ })) {
1560
+ return;
1561
+ }
1562
+ // Experience routes (/api/experiences/*, /api/character/experiences/*) are
1563
+ // served by the @elizaos/plugin-training plugin via Plugin.routes.
1564
+ // Compatibility route used by legacy health probes and desktop name lookup.
1565
+ if (method === "GET" && pathname === "/api/agents") {
1566
+ const runtimeAgentId = typeof state.runtime?.agentId === "string" &&
1567
+ state.runtime.agentId.trim().length > 0
1568
+ ? state.runtime.agentId.trim()
1569
+ : null;
1570
+ const configuredAgentId = typeof state.config.agents?.list?.[0]?.id === "string" &&
1571
+ state.config.agents.list[0].id.trim().length > 0
1572
+ ? state.config.agents.list[0].id.trim()
1573
+ : null;
1574
+ const agentName = state.runtime?.character.name?.trim() ||
1575
+ state.agentName.trim() ||
1576
+ "Eliza";
1577
+ json(res, {
1578
+ agents: [
1579
+ {
1580
+ id: runtimeAgentId ??
1581
+ configuredAgentId ??
1582
+ "00000000-0000-0000-0000-000000000000",
1583
+ name: agentName,
1584
+ status: state.agentState,
1585
+ },
1586
+ ],
1587
+ });
1588
+ return;
1589
+ }
1590
+ if (await handleModelsRoutes({
1591
+ req,
1592
+ res,
1593
+ method,
1594
+ pathname,
1595
+ url,
1596
+ json,
1597
+ providerCachePath,
1598
+ getOrFetchProvider,
1599
+ getOrFetchAllProviders,
1600
+ resolveModelsCacheDir,
1601
+ pathExists: fs.existsSync,
1602
+ readDir: fs.readdirSync,
1603
+ unlinkFile: fs.unlinkSync,
1604
+ joinPath: path.join,
1605
+ })) {
1606
+ return;
1607
+ }
1608
+ if (await handleRegistryRoutes({
1609
+ req,
1610
+ res,
1611
+ method,
1612
+ pathname,
1613
+ url,
1614
+ json,
1615
+ error,
1616
+ getPluginManager: () => getPluginManagerForState(state),
1617
+ getLoadedPluginNames: () => state.runtime?.plugins.map((plugin) => plugin.name) ?? [],
1618
+ getBundledPluginIds: () => getReleaseBundledPluginIds(),
1619
+ classifyRegistryPluginRelease,
1620
+ })) {
1621
+ return;
1622
+ }
1623
+ if (await handleRemoteCapabilityRoutes({
1624
+ req,
1625
+ res,
1626
+ method,
1627
+ pathname,
1628
+ runtime: state.runtime,
1629
+ config: state.config,
1630
+ readJsonBody,
1631
+ saveConfig: (config) => saveElizaConfig(config),
1632
+ persistConfigEnv,
1633
+ json,
1634
+ error,
1635
+ })) {
1636
+ return;
1637
+ }
1638
+ // Live-load a plugin from an on-disk directory into the running runtime. This
1639
+ // is what makes a freshly scaffolded/edited local plugin (VIEWS/APP create)
1640
+ // actually appear without an agent restart — its views register via
1641
+ // runtime.registerPlugin. Must run BEFORE the generic /api/plugins/* handler.
1642
+ if (method === "POST" && pathname === "/api/plugins/load-from-directory") {
1643
+ const { isLocalCodeExecutionAllowed, buildStoreVariantBlockedMessage } = await import("@elizaos/core");
1644
+ if (!isLocalCodeExecutionAllowed()) {
1645
+ error(res, buildStoreVariantBlockedMessage("Local plugin loading"), 403);
1646
+ return;
1647
+ }
1648
+ if (!state.runtime) {
1649
+ error(res, "Agent runtime is not available", 503);
1650
+ return;
1651
+ }
1652
+ const body = await readJsonBody(req, res);
1653
+ if (body === null)
1654
+ return;
1655
+ const directory = typeof body.directory === "string" ? body.directory.trim() : "";
1656
+ if (!directory || !path.isAbsolute(directory)) {
1657
+ error(res, "'directory' must be an absolute path", 400);
1658
+ return;
1659
+ }
1660
+ const entry = typeof body.entry === "string" ? body.entry : undefined;
1661
+ try {
1662
+ const { loadPluginFromDirectory } = await import("../runtime/load-plugin-from-directory.js");
1663
+ const result = await loadPluginFromDirectory({
1664
+ runtime: state.runtime,
1665
+ directory,
1666
+ ...(entry ? { entry } : {}),
1667
+ });
1668
+ json(res, { ok: true, ...result });
1669
+ }
1670
+ catch (err) {
1671
+ json(res, {
1672
+ ok: false,
1673
+ error: err instanceof Error ? err.message : String(err),
1674
+ }, 422);
1675
+ }
1676
+ return;
1677
+ }
1678
+ // Unload a plugin previously live-loaded from a directory (the symmetric
1679
+ // counterpart to load-from-directory). Directly-registered plugins are not
1680
+ // known to the plugin-manager, so /api/plugins/uninstall can't remove them —
1681
+ // this delegates to runtime.unloadPlugin, which also deregisters its views.
1682
+ if (method === "POST" && pathname === "/api/plugins/unload-from-directory") {
1683
+ if (!state.runtime) {
1684
+ error(res, "Agent runtime is not available", 503);
1685
+ return;
1686
+ }
1687
+ const body = await readJsonBody(req, res);
1688
+ if (body === null)
1689
+ return;
1690
+ const pluginName = typeof body.pluginName === "string" ? body.pluginName.trim() : "";
1691
+ if (!pluginName) {
1692
+ error(res, "'pluginName' is required", 400);
1693
+ return;
1694
+ }
1695
+ try {
1696
+ const { unloadPluginFromDirectory } = await import("../runtime/load-plugin-from-directory.js");
1697
+ const result = await unloadPluginFromDirectory({
1698
+ runtime: state.runtime,
1699
+ pluginName,
1700
+ });
1701
+ json(res, { ok: result.unloaded, ...result });
1702
+ }
1703
+ catch (err) {
1704
+ json(res, { ok: false, error: err instanceof Error ? err.message : String(err) }, 422);
1705
+ }
1706
+ return;
1707
+ }
1708
+ if (pathname === "/api/plugins" ||
1709
+ pathname.startsWith("/api/plugins/") ||
1710
+ pathname === "/api/secrets" ||
1711
+ pathname === "/api/core/status") {
1712
+ const { handlePluginRoutes } = await getPluginRegistryApi();
1713
+ if (await handlePluginRoutes({
1714
+ req,
1715
+ res,
1716
+ method,
1717
+ pathname,
1718
+ url,
1719
+ state,
1720
+ json,
1721
+ error,
1722
+ readJsonBody,
1723
+ scheduleRuntimeRestart,
1724
+ restartRuntime,
1725
+ BLOCKED_ENV_KEYS,
1726
+ discoverInstalledPlugins,
1727
+ maskValue,
1728
+ aggregateSecrets,
1729
+ readProviderCache,
1730
+ paramKeyToCategory,
1731
+ buildPluginEvmDiagnosticEntry,
1732
+ EVM_PLUGIN_PACKAGE,
1733
+ applyWhatsAppQrOverride: (await getOptionalPluginApi("whatsapp")).applyWhatsAppQrOverride,
1734
+ applySignalQrOverride: (await getOptionalPluginApi("signal")).applySignalQrOverride,
1735
+ resolvePluginConfigMutationRejections,
1736
+ requirePluginManager,
1737
+ requireCoreManager,
1738
+ })) {
1739
+ return;
1740
+ }
1741
+ }
1742
+ // Curated-skills routes must be dispatched before generic skills routes
1743
+ // (which reject "/" in skill IDs).
1744
+ if (pathname.startsWith("/api/skills/curated")) {
1745
+ const { handleCuratedSkillsRoutes } = await getAgentSkillsApi();
1746
+ if (await handleCuratedSkillsRoutes({
1747
+ req,
1748
+ res,
1749
+ method,
1750
+ pathname,
1751
+ url,
1752
+ json,
1753
+ error,
1754
+ readJsonBody,
1755
+ })) {
1756
+ return;
1757
+ }
1758
+ }
1759
+ if (pathname.startsWith("/api/skills")) {
1760
+ const { discoverSkills, handleSkillsRoutes } = await getAgentSkillsApi();
1761
+ if (await handleSkillsRoutes({
1762
+ req,
1763
+ res,
1764
+ method,
1765
+ pathname,
1766
+ url,
1767
+ state,
1768
+ json,
1769
+ error,
1770
+ readJsonBody,
1771
+ readBody,
1772
+ discoverSkills,
1773
+ })) {
1774
+ return;
1775
+ }
1776
+ }
1777
+ if (await handleDiagnosticsRoutes({
1778
+ req,
1779
+ res,
1780
+ method,
1781
+ pathname,
1782
+ url,
1783
+ logBuffer: state.logBuffer,
1784
+ clearLogBuffer: () => {
1785
+ const previous = state.logBuffer.length;
1786
+ state.logBuffer.length = 0;
1787
+ return previous;
1788
+ },
1789
+ readJsonBody,
1790
+ error,
1791
+ eventBuffer: state.eventBuffer,
1792
+ json,
1793
+ auditEventTypes: AUDIT_EVENT_TYPES,
1794
+ auditSeverities: AUDIT_SEVERITIES,
1795
+ getAuditFeedSize,
1796
+ queryAuditFeed: (query) => queryAuditFeed({
1797
+ type: AUDIT_EVENT_TYPES.includes(query.type ?? "")
1798
+ ? query.type
1799
+ : undefined,
1800
+ severity: AUDIT_SEVERITIES.includes(query.severity ?? "")
1801
+ ? query.severity
1802
+ : undefined,
1803
+ sinceMs: query.sinceMs,
1804
+ limit: query.limit,
1805
+ }).map((entry) => ({
1806
+ timestamp: entry.timestamp,
1807
+ type: entry.type,
1808
+ summary: entry.summary,
1809
+ severity: entry.severity,
1810
+ metadata: entry.metadata,
1811
+ })),
1812
+ subscribeAuditFeed,
1813
+ })) {
1814
+ return;
1815
+ }
1816
+ // ═══════════════════════════════════════════════════════════════════════
1817
+ // Bug report routes
1818
+ // ═══════════════════════════════════════════════════════════════════════
1819
+ if (await handleBugReportRoutes({
1820
+ req,
1821
+ res,
1822
+ method,
1823
+ pathname,
1824
+ readJsonBody,
1825
+ json,
1826
+ error,
1827
+ })) {
1828
+ return;
1829
+ }
1830
+ // ═══════════════════════════════════════════════════════════════════════
1831
+ // Wallet core routes (addresses, balances, generate, config, export)
1832
+ // Prefer the local wallet implementation during desktop startup. The
1833
+ // steward-app bridge can pull browser/UI-only dependencies into the agent
1834
+ // process and must not block local assistant boot.
1835
+ // ═══════════════════════════════════════════════════════════════════════
1836
+ // plugin-wallet is desktop/cloud-only; on mobile its import does not resolve
1837
+ // and the await stalls /api/wallet/* requests. Skip on mobile → fall through
1838
+ // to 404 (the mobile agent has no EVM/Solana wallet surface anyway).
1839
+ if (!isMobilePlatform() && pathname.startsWith("/api/wallet/")) {
1840
+ const { handleWalletRoutes } = await getWalletApi();
1841
+ const { deriveSolanaAddress, fetchEvmBalances, fetchSolanaBalances, fetchSolanaNativeBalanceViaRpc, generateWalletForChain, getWalletAddresses, importWallet, setSolanaWalletEnv, validatePrivateKey, } = await getCoreWalletApi();
1842
+ if (await handleWalletRoutes({
1843
+ req,
1844
+ res,
1845
+ method,
1846
+ pathname,
1847
+ config: loadElizaConfig(),
1848
+ saveConfig: saveElizaConfig,
1849
+ ensureWalletKeysInEnvAndConfig,
1850
+ resolveWalletExportRejection,
1851
+ restartRuntime,
1852
+ scheduleRuntimeRestart,
1853
+ readJsonBody,
1854
+ json,
1855
+ error,
1856
+ deps: {
1857
+ fetchEvmBalances,
1858
+ fetchSolanaBalances,
1859
+ fetchSolanaNativeBalanceViaRpc,
1860
+ getWalletAddresses,
1861
+ validatePrivateKey,
1862
+ importWallet,
1863
+ generateWalletForChain,
1864
+ deriveSolanaAddress,
1865
+ setSolanaWalletEnv,
1866
+ resolveWalletRpcReadiness: coerce(resolveWalletRpcReadiness),
1867
+ resolveWalletNetworkMode: coerce(resolveWalletNetworkMode),
1868
+ getStoredWalletRpcSelections: coerce(getStoredWalletRpcSelections),
1869
+ applyWalletRpcConfigUpdate: coerce(applyWalletRpcConfigUpdate),
1870
+ resolveWalletCapabilityStatus: coerce((args) => resolveWalletCapabilityStatus({
1871
+ config: args.config,
1872
+ runtime: args.runtime,
1873
+ })),
1874
+ isCloudWalletEnabled,
1875
+ persistConfigEnv,
1876
+ createIntegrationTelemetrySpan: coerce(createIntegrationTelemetrySpan),
1877
+ },
1878
+ runtime: state.runtime ?? null,
1879
+ })) {
1880
+ return;
1881
+ }
1882
+ }
1883
+ // ═══════════════════════════════════════════════════════════════════════
1884
+ // ERC-8004 Registry, Agent self-status, Privy — delegated to agent-status-routes.ts
1885
+ // ═══════════════════════════════════════════════════════════════════════
1886
+ if ((pathname === "/api/agent/self-status" ||
1887
+ pathname.startsWith("/api/registry")) &&
1888
+ (await (async () => {
1889
+ const { RegistryService } = await import("./registry-service.js");
1890
+ return handleAgentStatusRoutes({
1891
+ req,
1892
+ res,
1893
+ method,
1894
+ pathname,
1895
+ url,
1896
+ state: coerce(state),
1897
+ json,
1898
+ error,
1899
+ readJsonBody,
1900
+ deps: {
1901
+ getWalletAddresses: pathname === "/api/agent/self-status"
1902
+ ? (await getCoreWalletApi()).getWalletAddresses
1903
+ : () => ({ evmAddress: null, solanaAddress: null }),
1904
+ resolveWalletCapabilityStatus: coerce(resolveWalletCapabilityStatus),
1905
+ resolveWalletRpcReadiness: coerce(resolveWalletRpcReadiness),
1906
+ resolveTradePermissionMode,
1907
+ canUseLocalTradeExecution: coerce(canUseLocalTradeExecution),
1908
+ detectRuntimeModel: coerce(detectRuntimeModel),
1909
+ resolveProviderFromModel,
1910
+ getGlobalAwarenessRegistry: coerce(getGlobalAwarenessRegistry),
1911
+ RegistryService,
1912
+ },
1913
+ });
1914
+ })())) {
1915
+ return;
1916
+ }
1917
+ if (await handleUpdateRoutes({
1918
+ req,
1919
+ res,
1920
+ method,
1921
+ pathname,
1922
+ url,
1923
+ state,
1924
+ json,
1925
+ error,
1926
+ readJsonBody,
1927
+ saveElizaConfig,
1928
+ })) {
1929
+ return;
1930
+ }
1931
+ if (await handleConnectorRoutes({
1932
+ req,
1933
+ res,
1934
+ method,
1935
+ pathname,
1936
+ state,
1937
+ json,
1938
+ error,
1939
+ readJsonBody,
1940
+ saveElizaConfig,
1941
+ redactConfigSecrets,
1942
+ isBlockedObjectKey,
1943
+ cloneWithoutBlockedObjectKeys,
1944
+ // Disconnect cascade is event-driven: connector-routes
1945
+ // emits `connector_disconnected` and WorkflowCredentialStore subscribes
1946
+ // to invalidate its own cache. No direct service lookup needed here.
1947
+ onConnectorDisconnect: async () => { },
1948
+ })) {
1949
+ return;
1950
+ }
1951
+ // ── WhatsApp routes (/api/whatsapp/*) ────────────────────────────────────
1952
+ // Moved to @elizaos/plugin-whatsapp setup-routes.ts (registered via Plugin.routes).
1953
+ // ── BlueBubbles routes (/api/bluebubbles/*, /webhooks/bluebubbles) ──
1954
+ // Extracted to @elizaos/plugin-bluebubbles setup-routes.ts (Plugin.routes).
1955
+ // ── Notification + inbox routes (/api/notifications/*, /api/inbox/*) ──
1956
+ // Notifications: the unified notification center backed by the runtime
1957
+ // NotificationService (see api/notification-routes.ts). Inbox: a
1958
+ // cross-channel read-only feed that merges connector messages (imessage,
1959
+ // telegram, discord, whatsapp, etc.) into a single time-ordered view.
1960
+ if (await handleInboxAndCloudRelayRouteGroup({
1961
+ req,
1962
+ res,
1963
+ method,
1964
+ pathname,
1965
+ url,
1966
+ state,
1967
+ json,
1968
+ error,
1969
+ readJsonBody,
1970
+ })) {
1971
+ return;
1972
+ }
1973
+ // ── Restart ──────────────────────────────────────────────────────────
1974
+ if (method === "POST" && pathname === "/api/restart") {
1975
+ state.agentState = "restarting";
1976
+ state.startup = { ...state.startup, phase: "restarting" };
1977
+ state.broadcastStatus?.();
1978
+ json(res, { ok: true, message: "Restarting...", restarting: true });
1979
+ setTimeout(() => process.exit(0), 1000);
1980
+ return;
1981
+ }
1982
+ if (pathname.startsWith("/api/tts/") &&
1983
+ (await (async () => {
1984
+ const { handleTtsRoutes } = await getOptionalPluginApi("streaming");
1985
+ return handleTtsRoutes({
1986
+ req,
1987
+ res,
1988
+ method,
1989
+ pathname,
1990
+ state,
1991
+ json,
1992
+ error,
1993
+ readJsonBody,
1994
+ isRedactedSecretValue,
1995
+ fetchWithTimeoutGuard,
1996
+ streamResponseBodyWithByteLimit: coerce(streamResponseBodyWithByteLimit),
1997
+ responseContentLength,
1998
+ isAbortError,
1999
+ ELEVENLABS_FETCH_TIMEOUT_MS: 30_000,
2000
+ ELEVENLABS_AUDIO_MAX_BYTES: 20 * 1_048_576,
2001
+ });
2002
+ })())) {
2003
+ return;
2004
+ }
2005
+ if (await handleAvatarRoutes({
2006
+ req,
2007
+ res,
2008
+ method,
2009
+ pathname,
2010
+ json,
2011
+ error,
2012
+ })) {
2013
+ return;
2014
+ }
2015
+ if (pathname === "/api/config" ||
2016
+ pathname === "/api/config/schema" ||
2017
+ pathname === "/api/config/reload") {
2018
+ if (await handleConfigRoutes({
2019
+ req,
2020
+ res,
2021
+ method,
2022
+ pathname,
2023
+ url,
2024
+ config: state.config,
2025
+ runtime: state.runtime,
2026
+ json,
2027
+ error,
2028
+ readJsonBody,
2029
+ redactConfigSecrets,
2030
+ isBlockedObjectKey,
2031
+ stripRedactedPlaceholderValuesDeep,
2032
+ patchTouchesProviderSelection,
2033
+ BLOCKED_ENV_KEYS,
2034
+ CONFIG_WRITE_ALLOWED_TOP_KEYS,
2035
+ resolveMcpServersRejection,
2036
+ resolveMcpTerminalAuthorizationRejection,
2037
+ })) {
2038
+ return;
2039
+ }
2040
+ }
2041
+ if (await handlePermissionsExtraRoutes({
2042
+ req,
2043
+ res,
2044
+ method,
2045
+ pathname,
2046
+ state: coerce(state),
2047
+ json,
2048
+ error,
2049
+ readJsonBody,
2050
+ saveElizaConfig,
2051
+ resolveTradePermissionMode: coerce(resolveTradePermissionMode),
2052
+ canUseLocalTradeExecution: coerce(canUseLocalTradeExecution),
2053
+ parseAgentAutomationMode,
2054
+ persistAgentAutomationMode: coerce(persistAgentAutomationMode),
2055
+ })) {
2056
+ return;
2057
+ }
2058
+ if (await handlePermissionRoutes({
2059
+ req,
2060
+ res,
2061
+ method,
2062
+ pathname,
2063
+ state,
2064
+ readJsonBody,
2065
+ json,
2066
+ error,
2067
+ saveConfig: (config) => {
2068
+ saveElizaConfig(config);
2069
+ },
2070
+ scheduleRuntimeRestart,
2071
+ })) {
2072
+ return;
2073
+ }
2074
+ if (await handleRelationshipsRoutes({
2075
+ req,
2076
+ res,
2077
+ method,
2078
+ pathname,
2079
+ runtime: state.runtime ?? undefined,
2080
+ readJsonBody,
2081
+ json,
2082
+ error,
2083
+ })) {
2084
+ return;
2085
+ }
2086
+ // Browser workspace routes (/api/browser-workspace/*) are served by the
2087
+ // @elizaos/app-browser plugin via Plugin.routes.
2088
+ // Agent self-status, Privy, and ERC-8004 registry routes are now handled
2089
+ // by handleAgentStatusRoutes above.
2090
+ // ═══════════════════════════════════════════════════════════════════════
2091
+ // BSC trade routes and wallet trade execute — now handled by
2092
+ // @elizaos/plugin-steward-app plugin routes. See plugins/plugin-steward-app/src/plugin.ts.
2093
+ // ═══════════════════════════════════════════════════════════════════════
2094
+ if (isLifeOpsCloudPluginRoute(pathname) &&
2095
+ (await handleLifeOpsRuntimePluginRoute({
2096
+ req,
2097
+ res,
2098
+ method,
2099
+ pathname,
2100
+ url,
2101
+ state,
2102
+ isAuthorizedRequest: isAuthorized,
2103
+ }))) {
2104
+ return;
2105
+ }
2106
+ if (await handleCloudAndCoreRouteGroup({
2107
+ req,
2108
+ res,
2109
+ method,
2110
+ pathname,
2111
+ state,
2112
+ restartRuntime,
2113
+ saveConfig: saveElizaConfig,
2114
+ })) {
2115
+ return;
2116
+ }
2117
+ if (await handleSandboxRouteGroup({ req, res, method, pathname, state })) {
2118
+ return;
2119
+ }
2120
+ if (await handleConversationRouteGroup({
2121
+ req,
2122
+ res,
2123
+ method,
2124
+ pathname,
2125
+ url,
2126
+ state,
2127
+ json,
2128
+ error,
2129
+ readJsonBody,
2130
+ })) {
2131
+ return;
2132
+ }
2133
+ if (await handleDatabaseRouteGroup({ req, res, pathname, state })) {
2134
+ return;
2135
+ }
2136
+ // Trajectory routes (/api/trajectories/*) are now provided by the
2137
+ // @elizaos/plugin-training plugin via the runtime route registry.
2138
+ // Coding Agent API routes (/api/coding-agents/*, /api/workspace/*,
2139
+ // /api/issues/*) are now provided by the @elizaos/plugin-agent-orchestrator
2140
+ // plugin via the runtime route registry. Most of those paths genuinely need
2141
+ // the runtime, so a pre-runtime 503 is correct. The GET capability probes
2142
+ // below are the exception: they have graceful builtin probe handlers
2143
+ // (handleBuiltinOptionalRoutes → { available: false } / "unavailable"). The
2144
+ // dashboard polls /preflight the instant agentStatus flips to "running", which
2145
+ // can race ahead of state.runtime being assigned during a restart; serve those
2146
+ // from the builtin probe handler instead of a 503 the browser logs as a red console error.
2147
+ const isCodingAgentBuiltinProbe = pathname === "/api/coding-agents/preflight" ||
2148
+ pathname === "/api/coding-agents/coordinator/status";
2149
+ if (!state.runtime &&
2150
+ method === "GET" &&
2151
+ pathname.startsWith("/api/coding-agents") &&
2152
+ !isCodingAgentBuiltinProbe) {
2153
+ error(res, "Coding agent runtime unavailable", 503);
2154
+ return;
2155
+ }
2156
+ if (await handleCloudStatusRoutes({
2157
+ req,
2158
+ res,
2159
+ method,
2160
+ pathname,
2161
+ config: state.config,
2162
+ runtime: state.runtime,
2163
+ json,
2164
+ })) {
2165
+ return;
2166
+ }
2167
+ // ── App routes (/api/apps/*) ──────────────────────────────────────────
2168
+ if (pathname.startsWith("/api/apps")) {
2169
+ const { handleAppsRoutes } = await getAppManagerApi();
2170
+ const appManager = ctx?.getAppManager
2171
+ ? await ctx.getAppManager()
2172
+ : state.appManager;
2173
+ if (await handleAppsRoutes({
2174
+ req,
2175
+ res,
2176
+ method,
2177
+ pathname,
2178
+ url,
2179
+ appManager: {
2180
+ listAvailable: (pluginManager) => appManager.listAvailable(pluginManager),
2181
+ search: (pluginManager, query, limit) => appManager.search(pluginManager, query, limit),
2182
+ listInstalled: (pluginManager) => appManager.listInstalled(pluginManager),
2183
+ listRuns: (runtime) => appManager.listRuns(runtime && typeof runtime === "object"
2184
+ ? runtime
2185
+ : null),
2186
+ getRun: (runId, runtime) => appManager.getRun(runId, runtime && typeof runtime === "object"
2187
+ ? runtime
2188
+ : null),
2189
+ attachRun: (runId, runtime) => appManager.attachRun(runId, runtime && typeof runtime === "object"
2190
+ ? runtime
2191
+ : null),
2192
+ detachRun: (runId) => appManager.detachRun(runId),
2193
+ launch: (pluginManager, name, onProgress, runtime) => appManager.launch(pluginManager, name, onProgress, runtime && typeof runtime === "object"
2194
+ ? runtime
2195
+ : null, installPluginDirect),
2196
+ stop: (pluginManager, name, runId, runtime) => appManager.stop(pluginManager, name, runId, runtime && typeof runtime === "object"
2197
+ ? runtime
2198
+ : null),
2199
+ recordHeartbeat: (runId) => appManager.recordHeartbeat(runId),
2200
+ startStaleRunSweeper: (getRuntime) => appManager.startStaleRunSweeper(getRuntime),
2201
+ getInfo: (pluginManager, name) => appManager.getInfo(pluginManager, name),
2202
+ },
2203
+ getPluginManager: () => getPluginManagerForState(state),
2204
+ parseBoundedLimit,
2205
+ readJsonBody,
2206
+ json,
2207
+ error,
2208
+ runtime: state.runtime,
2209
+ favoriteApps: {
2210
+ read: () => readFavoriteAppsFromConfig(state.config),
2211
+ write: (apps) => writeFavoriteAppsToConfig(state.config, apps),
2212
+ },
2213
+ installPluginDirect,
2214
+ })) {
2215
+ return;
2216
+ }
2217
+ if (await handleAppPackageRoutes({
2218
+ req,
2219
+ res,
2220
+ method,
2221
+ pathname,
2222
+ url,
2223
+ readJsonBody,
2224
+ json,
2225
+ error,
2226
+ runtime: state.runtime,
2227
+ })) {
2228
+ return;
2229
+ }
2230
+ }
2231
+ // ── Slash-command catalog (/api/commands) ─────────────────────────────────
2232
+ if (await handleCommandsRoutes({
2233
+ req,
2234
+ res,
2235
+ method,
2236
+ pathname,
2237
+ url,
2238
+ json,
2239
+ error,
2240
+ runtime: state.runtime,
2241
+ })) {
2242
+ return;
2243
+ }
2244
+ // ── Prompt suggestions (/api/suggestions) ─────────────────────────────────
2245
+ if (await handleSuggestionsRoutes({
2246
+ req,
2247
+ res,
2248
+ method,
2249
+ pathname,
2250
+ json,
2251
+ error,
2252
+ runtime: state.runtime,
2253
+ })) {
2254
+ return;
2255
+ }
2256
+ // ── Interaction reporting (/api/interactions/shortcut) ────────────────────
2257
+ if (await handleInteractionsRoutes({
2258
+ req,
2259
+ res,
2260
+ method,
2261
+ pathname,
2262
+ json,
2263
+ error,
2264
+ runtime: state.runtime,
2265
+ })) {
2266
+ return;
2267
+ }
2268
+ // ── View routes (/api/views/*) ────────────────────────────────────────────
2269
+ if (await handleViewsRoutes({
2270
+ req,
2271
+ res,
2272
+ method,
2273
+ pathname,
2274
+ url,
2275
+ json,
2276
+ error,
2277
+ broadcastWs: state.broadcastWs ?? undefined,
2278
+ runtime: state.runtime,
2279
+ })) {
2280
+ return;
2281
+ }
2282
+ if (pathname.startsWith("/api/workbench")) {
2283
+ if (await handleWorkbenchRoutes({
2284
+ req,
2285
+ res,
2286
+ method,
2287
+ pathname,
2288
+ url,
2289
+ state: coerce(state),
2290
+ json,
2291
+ error,
2292
+ readJsonBody,
2293
+ toWorkbenchTodo: coerce(toWorkbenchTodo),
2294
+ normalizeTags,
2295
+ readTaskMetadata,
2296
+ readTaskCompleted,
2297
+ parseNullableNumber,
2298
+ asObject,
2299
+ decodePathComponent,
2300
+ taskToTriggerSummary: coerce(taskToTriggerSummary),
2301
+ listTriggerTasks: coerce(listTriggerTasks),
2302
+ })) {
2303
+ return;
2304
+ }
2305
+ }
2306
+ // ═══════════════════════════════════════════════════════════════════════
2307
+ // Life-ops routes: now served via lifeopsPlugin.routes (rawPath) on the
2308
+ // runtime plugin route system. See app-lifeops/src/routes/plugin.ts.
2309
+ // ═══════════════════════════════════════════════════════════════════════
2310
+ if (pathname.startsWith("/api/mcp")) {
2311
+ const { handleMcpRoutes } = await getOptionalPluginApi("mcp");
2312
+ if (await handleMcpRoutes({
2313
+ req,
2314
+ res,
2315
+ method,
2316
+ pathname,
2317
+ url,
2318
+ state,
2319
+ json,
2320
+ error,
2321
+ readJsonBody,
2322
+ saveElizaConfig,
2323
+ redactDeep,
2324
+ isBlockedObjectKey,
2325
+ cloneWithoutBlockedObjectKeys,
2326
+ resolveMcpServersRejection,
2327
+ resolveMcpTerminalAuthorizationRejection,
2328
+ decodePathComponent,
2329
+ })) {
2330
+ return;
2331
+ }
2332
+ }
2333
+ if (await handleMiscRoutes({
2334
+ req,
2335
+ res,
2336
+ method,
2337
+ pathname,
2338
+ url,
2339
+ state: coerce(state),
2340
+ json,
2341
+ error,
2342
+ readJsonBody,
2343
+ AGENT_EVENT_ALLOWED_STREAMS,
2344
+ resolveTerminalRunRejection,
2345
+ resolveTerminalRunClientId,
2346
+ isSharedTerminalClientId,
2347
+ activeTerminalRunCount,
2348
+ setActiveTerminalRunCount: (delta) => {
2349
+ activeTerminalRunCount = Math.max(0, activeTerminalRunCount + delta);
2350
+ },
2351
+ })) {
2352
+ return;
2353
+ }
2354
+ // ── WhatsApp routes (/api/whatsapp/*) ────────────────────────────────────
2355
+ // Extracted to @elizaos/plugin-whatsapp setup-routes.ts (Plugin.routes).
2356
+ // ── elizaOS plugin HTTP routes (runtime.routes, e.g. /music-player/*) ───
2357
+ if (await tryHandleRuntimePluginRoute({
2358
+ req,
2359
+ res,
2360
+ method,
2361
+ pathname,
2362
+ url,
2363
+ runtime: state.runtime,
2364
+ isAuthorized: () => isAuthorized(req),
2365
+ hostContext: {
2366
+ config: state.config,
2367
+ saveConfig: (nextConfig) => {
2368
+ state.config = nextConfig;
2369
+ saveElizaConfig(state.config);
2370
+ },
2371
+ restartRuntime,
2372
+ },
2373
+ })) {
2374
+ return;
2375
+ }
2376
+ if (await handleBuiltinOptionalRoutes(req, res, pathname, method)) {
2377
+ return;
2378
+ }
2379
+ // ── Connector plugin routes (dynamically registered) ────────────────────
2380
+ for (const handler of state.connectorRouteHandlers) {
2381
+ const handled = await handler(req, res, pathname, method);
2382
+ if (handled)
2383
+ return;
2384
+ }
2385
+ if (await handleMobileOptionalRoutes(req, res, pathname, method)) {
2386
+ return;
2387
+ }
2388
+ // ── Music player compatibility fallback ─────────────────────────────────
2389
+ if (await tryHandleMusicPlayerStatusFallbackLazy({
2390
+ pathname,
2391
+ method,
2392
+ runtime: state.runtime,
2393
+ res,
2394
+ })) {
2395
+ return;
2396
+ }
2397
+ // ── Trajectory read fallback ────────────────────────────────────────────
2398
+ // Serves GET /api/trajectories[/:id|/stats] from the core TrajectoriesService
2399
+ // when no plugin owns the route (mobile / training disabled), so the realtime
2400
+ // trajectory viewer works without @elizaos/plugin-training. Runs AFTER the
2401
+ // plugin routes above, so plugin-training's richer route wins when present.
2402
+ if (await tryHandleTrajectoryFallback({
2403
+ pathname,
2404
+ method,
2405
+ url,
2406
+ runtime: state.runtime,
2407
+ res,
2408
+ })) {
2409
+ return;
2410
+ }
2411
+ // ── Hono adapter for runtime.routes with `routeHandler` (new shape) ─────
2412
+ // Covers any plugin route registered via the new return-shape RouteHandler
2413
+ // contract. Legacy Express-shaped `handler` routes are still served by
2414
+ // `tryHandleRuntimePluginRoute` above.
2415
+ if (await tryHandleHonoRuntimeRoute({
2416
+ req,
2417
+ res,
2418
+ runtime: state.runtime,
2419
+ isAuthorized: () => isAuthorized(req),
2420
+ })) {
2421
+ return;
2422
+ }
2423
+ // ── Fallback ────────────────────────────────────────────────────────────
2424
+ error(res, "Not found", 404);
2425
+ }
2426
+ // ---------------------------------------------------------------------------
2427
+ // Early log capture — re-exported from the standalone module so existing
2428
+ // callers that `import { captureEarlyLogs } from "../../../../src/api/server"` keep
2429
+ // working. The implementation lives in `./early-logs.ts` to avoid pulling
2430
+ // the entire server dependency graph into lightweight consumers (e.g. the
2431
+ // headless `startEliza()` path).
2432
+ // ---------------------------------------------------------------------------
2433
+ import { flushEarlyLogs } from "./early-logs.js";
2434
+ // ---------------------------------------------------------------------------
2435
+ // Server start
2436
+ // ---------------------------------------------------------------------------
2437
+ function strictPortBindingEnabled() {
2438
+ const value = process.env.ELIZA_API_STRICT_PORT?.trim().toLowerCase();
2439
+ return value === "1" || value === "true" || value === "yes";
2440
+ }
2441
+ export async function startApiServer(opts) {
2442
+ const apiStartTime = Date.now();
2443
+ // Gated boot profiler (off unless ELIZA_BOOT_PROFILE=1) to time the API-bind
2444
+ // critical path. Stderr, since the structured logger level may suppress it.
2445
+ const apiLap = (label) => {
2446
+ if (process.env.ELIZA_BOOT_PROFILE === "1") {
2447
+ process.stderr.write(`[boot-profile] api:${label} +${Date.now() - apiStartTime}ms\n`);
2448
+ }
2449
+ };
2450
+ logger.debug(`[eliza-api] startApiServer called`);
2451
+ // Honor ELIZA_API_PORT first (set by the desktop launcher → 31337) so
2452
+ // the renderer's hardcoded API base reaches this server. CLI-mode
2453
+ // (no ELIZA_API_PORT) keeps the legacy `resolveServerOnlyPort` default
2454
+ // of 2138, so this change is transparent for non-desktop users.
2455
+ const port = opts?.port ??
2456
+ (process.env.ELIZA_API_PORT
2457
+ ? resolveDesktopApiPort(process.env)
2458
+ : resolveServerOnlyPort(process.env));
2459
+ const host = resolveApiBindHost(process.env);
2460
+ ensureApiTokenForBindHost(host);
2461
+ logger.debug(`[eliza-api] Token check done (${Date.now() - apiStartTime}ms)`);
2462
+ let config;
2463
+ try {
2464
+ config = loadElizaConfig();
2465
+ }
2466
+ catch (err) {
2467
+ logger.warn(`[eliza-api] Failed to load config, starting with defaults: ${err instanceof Error ? err.message : err}`);
2468
+ config = {};
2469
+ }
2470
+ logger.debug(`[eliza-api] Config loaded (${Date.now() - apiStartTime}ms)`);
2471
+ // Wallet/inventory routes read from process.env at request-time.
2472
+ // Hydrate persisted config.env values so addresses remain visible after restarts.
2473
+ const persistedEnv = config.env;
2474
+ const envKeysToHydrate = [
2475
+ "ELIZA_WALLET_OS_STORE",
2476
+ "EVM_PRIVATE_KEY",
2477
+ "SOLANA_PRIVATE_KEY",
2478
+ "ALCHEMY_API_KEY",
2479
+ "INFURA_API_KEY",
2480
+ "ANKR_API_KEY",
2481
+ "HELIUS_API_KEY",
2482
+ "BIRDEYE_API_KEY",
2483
+ "SOLANA_RPC_URL",
2484
+ ];
2485
+ for (const key of envKeysToHydrate) {
2486
+ const value = persistedEnv?.[key];
2487
+ if (typeof value === "string" && value.trim() && !process.env[key]) {
2488
+ process.env[key] = value.trim();
2489
+ }
2490
+ }
2491
+ // Optional auto-provision mode for legacy environments. Disabled by default
2492
+ // so startup does not silently create new wallets when keys are missing.
2493
+ const walletAutoProvisionRaw = process.env.ELIZA_WALLET_AUTO_PROVISION?.trim().toLowerCase();
2494
+ const walletAutoProvisionEnabled = walletAutoProvisionRaw === "1" ||
2495
+ walletAutoProvisionRaw === "true" ||
2496
+ walletAutoProvisionRaw === "on" ||
2497
+ walletAutoProvisionRaw === "yes";
2498
+ if (walletAutoProvisionEnabled && ensureWalletKeysInEnvAndConfig(config)) {
2499
+ try {
2500
+ saveElizaConfig(config);
2501
+ }
2502
+ catch (err) {
2503
+ logger.warn(`[eliza-api] Failed to persist generated wallet keys: ${err instanceof Error ? err.message : err}`);
2504
+ }
2505
+ }
2506
+ const blockOnStewardWalletCache = process.env.ELIZA_STEWARD_WALLET_CACHE_BLOCKING?.trim() === "1";
2507
+ if (blockOnStewardWalletCache) {
2508
+ // Cloud/provisioned environments can opt into strict startup semantics
2509
+ // when wallet addresses must be available before the first request.
2510
+ const { initStewardWalletCache } = await getCoreWalletApi();
2511
+ await initStewardWalletCache();
2512
+ }
2513
+ // Warn when wallet private keys live in plaintext config and the OS secure
2514
+ // store is not enabled. This nudges operators toward ELIZA_WALLET_OS_STORE=1.
2515
+ {
2516
+ const hasPlaintextKeys = (typeof persistedEnv?.EVM_PRIVATE_KEY === "string" &&
2517
+ persistedEnv.EVM_PRIVATE_KEY.trim()) ||
2518
+ (typeof persistedEnv?.SOLANA_PRIVATE_KEY === "string" &&
2519
+ persistedEnv.SOLANA_PRIVATE_KEY.trim());
2520
+ const osStoreRaw = process.env.ELIZA_WALLET_OS_STORE?.trim().toLowerCase();
2521
+ const osStoreEnabled = osStoreRaw === "1" ||
2522
+ osStoreRaw === "true" ||
2523
+ osStoreRaw === "on" ||
2524
+ osStoreRaw === "yes";
2525
+ if (hasPlaintextKeys && !osStoreEnabled) {
2526
+ logger.warn("[wallet] Private keys are stored in plaintext config. " +
2527
+ "Set ELIZA_WALLET_OS_STORE=1 to use the OS secure store instead.");
2528
+ }
2529
+ }
2530
+ const plugins = discoverPluginsFromManifest();
2531
+ logger.debug(`[eliza-api] Plugins discovered (${Date.now() - apiStartTime}ms)`);
2532
+ const workspaceDir = config.agents?.defaults?.workspace ?? resolveDefaultAgentWorkspaceDir();
2533
+ const hasRuntime = opts?.runtime != null;
2534
+ const initialAgentState = hasRuntime
2535
+ ? "running"
2536
+ : (opts?.initialAgentState ?? "not_started");
2537
+ const initialStartup = initialAgentState === "running"
2538
+ ? { phase: "running", attempt: 0 }
2539
+ : initialAgentState === "starting"
2540
+ ? { phase: "starting", attempt: 0 }
2541
+ : { phase: "idle", attempt: 0 };
2542
+ const agentName = hasRuntime
2543
+ ? (opts.runtime?.character.name ?? resolveDefaultAgentName(config))
2544
+ : resolveDefaultAgentName(config);
2545
+ const deletedConversationIds = readDeletedConversationIdsFromState();
2546
+ const state = {
2547
+ runtime: opts?.runtime ?? null,
2548
+ config,
2549
+ agentState: initialAgentState,
2550
+ agentName,
2551
+ model: hasRuntime
2552
+ ? detectRuntimeModel(opts.runtime ?? null, config)
2553
+ : undefined,
2554
+ startedAt: hasRuntime || initialAgentState === "starting" ? Date.now() : undefined,
2555
+ startup: initialStartup,
2556
+ plugins,
2557
+ // Filled asynchronously after server start to keep startup latency low.
2558
+ skills: [],
2559
+ logBuffer: [],
2560
+ eventBuffer: [],
2561
+ nextEventId: 1,
2562
+ chatRoomId: null,
2563
+ chatUserId: null,
2564
+ chatConnectionReady: null,
2565
+ chatConnectionPromise: null,
2566
+ adminEntityId: null,
2567
+ conversations: new Map(),
2568
+ activeChatTurnCount: 0,
2569
+ conversationRestorePromise: null,
2570
+ deletedConversationIds,
2571
+ cloudManager: null,
2572
+ sandboxManager: null,
2573
+ appManager: null,
2574
+ trainingService: null,
2575
+ shareIngestQueue: [],
2576
+ broadcastStatus: null,
2577
+ awaitRuntimeReady: null,
2578
+ broadcastWs: null,
2579
+ broadcastWsToClientId: null,
2580
+ broadcastWsToConversation: null,
2581
+ activeConversationId: null,
2582
+ permissionStates: {},
2583
+ shellEnabled: config.features?.shellEnabled !== false,
2584
+ agentAutomationMode: resolveAgentAutomationModeFromConfig(config),
2585
+ tradePermissionMode: resolveTradePermissionMode(config),
2586
+ pendingRestartReasons: [],
2587
+ connectorRouteHandlers: [],
2588
+ connectorHealthMonitor: null,
2589
+ whatsappPairingSessions: new Map(),
2590
+ };
2591
+ // Lets chat handlers HOLD a turn through the warming window (early API bind →
2592
+ // runtime ready) instead of 503-dropping it — woken in updateRuntime when
2593
+ // first-turn capability comes online (see runtime-ready-gate.ts).
2594
+ const runtimeReadyGate = createRuntimeReadyGate(() => state.runtime);
2595
+ state.awaitRuntimeReady = (timeoutMs) => runtimeReadyGate.await(timeoutMs);
2596
+ const ensureAppManager = async () => {
2597
+ if (state.appManager) {
2598
+ return state.appManager;
2599
+ }
2600
+ const { AppManager } = await getAppManagerApi();
2601
+ const appManager = new AppManager();
2602
+ state.appManager = appManager;
2603
+ return appManager;
2604
+ };
2605
+ const trainingServiceOptions = {
2606
+ getRuntime: () => state.runtime,
2607
+ getConfig: () => state.config,
2608
+ setConfig: (nextConfig) => {
2609
+ state.config = nextConfig;
2610
+ saveElizaConfig(nextConfig);
2611
+ },
2612
+ };
2613
+ const blockOnTrainingService = process.env.ELIZA_API_TRAINING_BLOCKING?.trim() === "1";
2614
+ const attachTrainingService = async () => {
2615
+ if (state.trainingService)
2616
+ return;
2617
+ const trainingServiceCtor = await resolveTrainingServiceCtor();
2618
+ if (trainingServiceCtor) {
2619
+ state.trainingService = new trainingServiceCtor(trainingServiceOptions);
2620
+ await setActiveTrainingServiceIfAvailable(state.trainingService);
2621
+ }
2622
+ else {
2623
+ logger.info("[eliza-api] Training service package unavailable; training routes will be disabled");
2624
+ }
2625
+ };
2626
+ if (blockOnTrainingService) {
2627
+ await attachTrainingService();
2628
+ }
2629
+ const configuredAdminEntityId = config.agents?.defaults?.adminEntityId;
2630
+ if (configuredAdminEntityId && isUuidLike(configuredAdminEntityId)) {
2631
+ state.adminEntityId = configuredAdminEntityId;
2632
+ state.chatUserId = state.adminEntityId;
2633
+ }
2634
+ else if (configuredAdminEntityId) {
2635
+ logger.warn(`[eliza-api] Ignoring invalid agents.defaults.adminEntityId "${configuredAdminEntityId}"`);
2636
+ }
2637
+ const addLog = (level, message, source = "system", tags = []) => {
2638
+ let resolvedSource = source;
2639
+ if (source === "auto" || source === "system") {
2640
+ const bracketMatch = /^\[([^\]]+)\]\s*/.exec(message);
2641
+ if (bracketMatch)
2642
+ resolvedSource = bracketMatch[1];
2643
+ }
2644
+ // Auto-tag based on source when no explicit tags provided
2645
+ const resolvedTags = tags.length > 0
2646
+ ? tags
2647
+ : resolvedSource === "runtime" || resolvedSource === "autonomy"
2648
+ ? ["agent"]
2649
+ : resolvedSource === "api" || resolvedSource === "websocket"
2650
+ ? ["server"]
2651
+ : resolvedSource === "cloud"
2652
+ ? ["server", "cloud"]
2653
+ : ["system"];
2654
+ pushWithBatchEvict(state.logBuffer, {
2655
+ timestamp: Date.now(),
2656
+ level,
2657
+ message,
2658
+ source: resolvedSource,
2659
+ tags: resolvedTags,
2660
+ }, 1200, 200);
2661
+ };
2662
+ // ── Flush early-captured logs into the main buffer ────────────────────
2663
+ const earlyEntries = flushEarlyLogs();
2664
+ if (earlyEntries.length > 0) {
2665
+ for (const entry of earlyEntries) {
2666
+ state.logBuffer.push(entry);
2667
+ }
2668
+ if (state.logBuffer.length > 1000) {
2669
+ state.logBuffer.splice(0, state.logBuffer.length - 1000);
2670
+ }
2671
+ addLog("info", `Flushed ${earlyEntries.length} early startup log entries`, "system", ["system"]);
2672
+ }
2673
+ addLog("info", `Discovered ${plugins.length} plugins, loading skills in background`, "system", ["system", "plugins"]);
2674
+ // Warm per-provider model caches in background (non-blocking)
2675
+ void getOrFetchAllProviders().catch((err) => {
2676
+ logger.warn("[api] Provider cache warm-up failed:", err);
2677
+ });
2678
+ // ── Intercept loggers so ALL agent/plugin/service logs appear in the UI ──
2679
+ // We patch both the global `logger` singleton from @elizaos/core (used by
2680
+ // eliza.ts, services, plugins, etc.) AND the runtime instance logger.
2681
+ // A marker prevents double-patching on hot-restart and avoids stacking
2682
+ // wrapper functions that would leak memory.
2683
+ const PATCHED_MARKER = "__elizaLogPatched";
2684
+ const LEVELS = ["debug", "info", "warn", "error"];
2685
+ /**
2686
+ * Patch a logger object so every log call also feeds into the UI log buffer.
2687
+ * Returns true if patching was performed, false if already patched.
2688
+ */
2689
+ const patchLogger = (target, defaultSource, defaultTags) => {
2690
+ const patchedTarget = target;
2691
+ if (patchedTarget[PATCHED_MARKER]) {
2692
+ return false;
2693
+ }
2694
+ for (const lvl of LEVELS) {
2695
+ const original = target[lvl].bind(target);
2696
+ // pino / adze signature: logger.info(obj, msg) or logger.info(msg)
2697
+ const patched = (...args) => {
2698
+ let msg = "";
2699
+ let source = defaultSource;
2700
+ let tags = [...defaultTags];
2701
+ if (typeof args[0] === "string") {
2702
+ msg = args[0];
2703
+ }
2704
+ else if (args[0] && typeof args[0] === "object") {
2705
+ const obj = args[0];
2706
+ if (typeof obj.src === "string")
2707
+ source = obj.src;
2708
+ // Extract tags from structured log objects
2709
+ if (Array.isArray(obj.tags)) {
2710
+ tags = [...tags, ...obj.tags];
2711
+ }
2712
+ msg = typeof args[1] === "string" ? args[1] : JSON.stringify(obj);
2713
+ }
2714
+ // Auto-extract source from [bracket] prefixes (e.g. "[eliza] ...")
2715
+ const bracketMatch = /^\[([^\]]+)\]\s*/.exec(msg);
2716
+ if (bracketMatch && source === defaultSource) {
2717
+ source = bracketMatch[1];
2718
+ }
2719
+ // Auto-tag based on source context
2720
+ if (source !== defaultSource && !tags.includes(source)) {
2721
+ tags.push(source);
2722
+ }
2723
+ if (msg)
2724
+ addLog(lvl, msg, source, tags);
2725
+ return original(...args);
2726
+ };
2727
+ target[lvl] = patched;
2728
+ }
2729
+ patchedTarget[PATCHED_MARKER] = true;
2730
+ return true;
2731
+ };
2732
+ // 1) Patch the global @elizaos/core logger — this captures ALL log calls
2733
+ // from eliza.ts, services, plugins, cloud, hooks, etc.
2734
+ if (patchLogger(logger, "agent", ["agent"])) {
2735
+ addLog("info", "Global logger connected — all agent logs will stream to the UI", "system", ["system", "agent"]);
2736
+ }
2737
+ // 2) Patch the runtime instance logger (if it's a different object)
2738
+ // This catches logs from runtime internals that use their own logger child.
2739
+ if (opts?.runtime?.logger && opts.runtime.logger !== logger) {
2740
+ if (patchLogger(opts.runtime.logger, "runtime", ["agent", "runtime"])) {
2741
+ addLog("info", "Runtime logger connected — runtime logs will stream to the UI", "system", ["system", "agent"]);
2742
+ }
2743
+ }
2744
+ // Store the restart callback on the state so the route handler can access it.
2745
+ const onRestart = opts?.onRestart ?? null;
2746
+ logger.debug(`[eliza-api] Creating http server (${Date.now() - apiStartTime}ms)`);
2747
+ apiLap("pre-createServer (route imports + middleware setup done)");
2748
+ const server = http.createServer(async (req, res) => {
2749
+ try {
2750
+ await handleRequest(req, res, state, {
2751
+ onRestart,
2752
+ onRuntimeSwapped: () => {
2753
+ bindRuntimeStreams(state.runtime);
2754
+ void wireCoordinatorBridgesWhenReady(state, {
2755
+ wireChatBridge: wireCodingAgentChatBridge,
2756
+ wireWsBridge: wireCodingAgentWsBridge,
2757
+ wireEventRouting: wireCoordinatorEventRouting,
2758
+ wireSwarmSynthesis: wireCodingAgentSwarmSynthesis,
2759
+ context: "restart",
2760
+ logger,
2761
+ });
2762
+ },
2763
+ getAppManager: ensureAppManager,
2764
+ });
2765
+ }
2766
+ catch (err) {
2767
+ const msg = err instanceof Error ? err.message : "internal error";
2768
+ logger.error({ err }, `[eliza-api] Request handler failed: ${msg}`);
2769
+ addLog("error", msg, "api", ["server", "api"]);
2770
+ error(res, msg, 500);
2771
+ }
2772
+ });
2773
+ if (isMobilePlatform() ||
2774
+ process.env.ELIZA_DEVICE_BRIDGE_ENABLED?.trim() === "1") {
2775
+ void getOptionalPluginApi("capacitor")
2776
+ .then(({ attachMobileDeviceBridgeToServer }) => attachMobileDeviceBridgeToServer(server))
2777
+ .catch((err) => {
2778
+ logger.warn("[eliza-api] Failed to attach mobile device bridge:", err instanceof Error ? err.message : String(err));
2779
+ });
2780
+ }
2781
+ logger.debug(`[eliza-api] Server created (${Date.now() - apiStartTime}ms)`);
2782
+ // Node's `http.createServer` defaults are tuned for snappy web traffic:
2783
+ // - requestTimeout: 300_000 ms (5 min) — closes the socket if the
2784
+ // full request hasn't completed in 5 minutes.
2785
+ // - headersTimeout: 60_000 ms — closes the socket if headers
2786
+ // haven't arrived in 60 s.
2787
+ // - keepAliveTimeout: 5_000 ms — closes idle connections after 5 s.
2788
+ //
2789
+ // Local-inference chat completions on AOSP cuttlefish CPU routinely
2790
+ // run 5–25 minutes per turn (planner + action evaluator + reply,
2791
+ // each with a 9k-token prompt prefilled at ~20 tok/s). The 300 s
2792
+ // requestTimeout aborts the response mid-generation and the client
2793
+ // sees `fetch failed` while the agent's chat-routes timeout
2794
+ // (ELIZA_CHAT_GENERATION_TIMEOUT_MS, default 180 s, AOSP override
2795
+ // 1_800_000 ms = 30 min) is still ticking. The result: the device
2796
+ // does the work, the model produces a reply, but the HTTP socket
2797
+ // is already closed by the time the reply is ready.
2798
+ //
2799
+ // Read overrides from env so non-AOSP deploys keep tighter defaults,
2800
+ // and AOSP can pass a generous bound that matches the chat-routes
2801
+ // generation budget. ELIZA_HTTP_REQUEST_TIMEOUT_MS is the canonical
2802
+ // override; falls back to ELIZA_CHAT_GENERATION_TIMEOUT_MS + 60 s
2803
+ // slack so a single env var can drive the whole pipeline.
2804
+ const requestTimeoutEnvRaw = process.env.ELIZA_HTTP_REQUEST_TIMEOUT_MS?.trim() ?? "";
2805
+ const chatTimeoutEnvRaw = process.env.ELIZA_CHAT_GENERATION_TIMEOUT_MS?.trim() ?? "";
2806
+ const requestTimeoutMs = (() => {
2807
+ const explicit = Number.parseInt(requestTimeoutEnvRaw, 10);
2808
+ if (Number.isFinite(explicit) && explicit > 0)
2809
+ return explicit;
2810
+ const chatTimeout = Number.parseInt(chatTimeoutEnvRaw, 10);
2811
+ if (Number.isFinite(chatTimeout) && chatTimeout > 0) {
2812
+ // 60 s slack covers the round-trip overhead between chat-routes
2813
+ // resolving the generation promise and the response actually
2814
+ // landing on the wire.
2815
+ return chatTimeout + 60_000;
2816
+ }
2817
+ // No override and no chat-timeout hint — keep Node's default
2818
+ // (300_000 ms / 5 min) which matches the upstream behavior.
2819
+ return 300_000;
2820
+ })();
2821
+ // headersTimeout MUST be ≤ requestTimeout per Node docs. We give it
2822
+ // a 60 s lower bound so a slow client header upload doesn't cap the
2823
+ // long-tail decode budget.
2824
+ const headersTimeoutMs = Math.min(60_000, requestTimeoutMs);
2825
+ // keepAliveTimeout is for IDLE connections after a response. Bumping
2826
+ // it doesn't help long-running requests but keeps connections warm
2827
+ // for chat-completion clients that fire repeated turns.
2828
+ const keepAliveTimeoutMs = 60_000;
2829
+ server.requestTimeout = requestTimeoutMs;
2830
+ server.headersTimeout = headersTimeoutMs;
2831
+ server.keepAliveTimeout = keepAliveTimeoutMs;
2832
+ // server.timeout is the IDLE socket timeout (legacy). Setting to 0
2833
+ // disables it; we want long-running requests to ride on the
2834
+ // requestTimeout above instead. Default in Node 22 is 0 already, but
2835
+ // pin explicitly for clarity.
2836
+ server.timeout = 0;
2837
+ logger.debug(`[eliza-api] Server timeouts: requestTimeout=${requestTimeoutMs}ms, headersTimeout=${headersTimeoutMs}ms, keepAliveTimeout=${keepAliveTimeoutMs}ms`);
2838
+ const broadcastWs = (payload) => {
2839
+ const message = JSON.stringify(payload);
2840
+ for (const client of wsClients) {
2841
+ if (client.readyState === 1) {
2842
+ try {
2843
+ client.send(message);
2844
+ }
2845
+ catch (err) {
2846
+ logger.error(`[eliza-api] WebSocket broadcast error: ${err instanceof Error ? err.message : err}`);
2847
+ }
2848
+ }
2849
+ }
2850
+ };
2851
+ const pushEvent = (event) => {
2852
+ const seq = state.nextEventId;
2853
+ const envelope = {
2854
+ ...event,
2855
+ eventId: `evt-${seq}`,
2856
+ bufferSeq: seq,
2857
+ version: 1,
2858
+ };
2859
+ state.nextEventId += 1;
2860
+ state.eventBuffer.push(envelope);
2861
+ if (state.eventBuffer.length > 1500) {
2862
+ state.eventBuffer.splice(0, state.eventBuffer.length - 1500);
2863
+ }
2864
+ broadcastWs(envelope);
2865
+ };
2866
+ let detachRuntimeStreams = null;
2867
+ let detachTrainingStream = null;
2868
+ const bindRuntimeStreams = (runtime) => {
2869
+ if (detachRuntimeStreams) {
2870
+ detachRuntimeStreams();
2871
+ detachRuntimeStreams = null;
2872
+ }
2873
+ const svc = getAgentEventSvc(runtime);
2874
+ if (!svc) {
2875
+ if (runtime) {
2876
+ logger.warn("[eliza-api] AGENT_EVENT service not found on runtime — event streaming will be unavailable");
2877
+ }
2878
+ return;
2879
+ }
2880
+ const unsubAgentEvents = svc.subscribe((event) => {
2881
+ pushEvent({
2882
+ type: "agent_event",
2883
+ ts: event.ts,
2884
+ runId: event.runId,
2885
+ seq: event.seq,
2886
+ stream: event.stream,
2887
+ sessionKey: event.sessionKey,
2888
+ agentId: event.agentId,
2889
+ roomId: event.roomId,
2890
+ payload: event.data,
2891
+ });
2892
+ void maybeRouteAutonomyEventToConversation(state, event).catch((err) => {
2893
+ logger.warn(`[autonomy-route] Failed to route proactive event: ${err instanceof Error ? err.message : String(err)}`);
2894
+ });
2895
+ });
2896
+ const unsubHeartbeat = svc.subscribeHeartbeat((event) => {
2897
+ pushEvent({
2898
+ type: "heartbeat_event",
2899
+ ts: event.ts,
2900
+ payload: event,
2901
+ });
2902
+ });
2903
+ detachRuntimeStreams = () => {
2904
+ unsubAgentEvents();
2905
+ unsubHeartbeat();
2906
+ };
2907
+ };
2908
+ const bindTrainingStream = () => {
2909
+ if (detachTrainingStream) {
2910
+ detachTrainingStream();
2911
+ detachTrainingStream = null;
2912
+ }
2913
+ if (!state.trainingService)
2914
+ return;
2915
+ detachTrainingStream = state.trainingService.subscribe((event) => {
2916
+ const payload = typeof event === "object" && event !== null ? event : { value: event };
2917
+ pushEvent({
2918
+ type: "training_event",
2919
+ ts: Date.now(),
2920
+ payload,
2921
+ });
2922
+ });
2923
+ };
2924
+ // ── Deferred startup work (non-blocking) ────────────────────────────────
2925
+ // Keep API startup fast: listen first, then warm optional subsystems.
2926
+ const startDeferredStartupWork = async () => {
2927
+ void registerBuiltinViews().catch((err) => {
2928
+ logger.warn(`[eliza-api] Built-in view registration failed after listen: ${err instanceof Error ? err.message : String(err)}`);
2929
+ });
2930
+ void ensureAppManager()
2931
+ .then((appManager) => {
2932
+ // Stop app runs whose UI heartbeat has gone silent.
2933
+ appManager.startStaleRunSweeper(() => state.runtime);
2934
+ })
2935
+ .catch((err) => {
2936
+ logger.warn(`[eliza-api] App manager startup work failed after listen: ${err instanceof Error ? err.message : String(err)}`);
2937
+ });
2938
+ if (!blockOnStewardWalletCache) {
2939
+ void getCoreWalletApi()
2940
+ .then(({ initStewardWalletCache }) => initStewardWalletCache())
2941
+ .catch((err) => {
2942
+ logger.debug(`[eliza-api] Steward wallet cache init failed after listen: ${err instanceof Error ? err.message : String(err)}`);
2943
+ });
2944
+ }
2945
+ void (async () => {
2946
+ try {
2947
+ const { discoverSkills } = await getAgentSkillsApi();
2948
+ const discoveredSkills = await discoverSkills(workspaceDir, state.config, state.runtime);
2949
+ state.skills = discoveredSkills;
2950
+ addLog("info", `Discovered ${discoveredSkills.length} skills`, "system", ["system", "plugins"]);
2951
+ }
2952
+ catch (err) {
2953
+ logger.warn(`[eliza-api] Skill discovery failed during startup: ${err instanceof Error ? err.message : String(err)}`);
2954
+ }
2955
+ })();
2956
+ void (async () => {
2957
+ await attachTrainingService();
2958
+ const trainingService = state.trainingService;
2959
+ if (!trainingService)
2960
+ return;
2961
+ try {
2962
+ await trainingService.initialize();
2963
+ bindTrainingStream();
2964
+ addLog("info", "Training service initialised", "system", [
2965
+ "system",
2966
+ "training",
2967
+ ]);
2968
+ }
2969
+ catch (err) {
2970
+ logger.error(`[eliza-api] Training service init failed: ${err instanceof Error ? err.message : String(err)}`);
2971
+ }
2972
+ })();
2973
+ // ERC-8004 RegistryService + DropService construction has moved into
2974
+ // elizaMakerPlugin.init() in @elizaos/plugin-elizamaker. The plugin reads
2975
+ // the live services via getElizaMakerRegistryService() /
2976
+ // getElizaMakerDropService() in this package.
2977
+ // ── Connector health monitoring ──────────────────────────────────────────
2978
+ if (state.runtime && state.config.connectors) {
2979
+ try {
2980
+ state.connectorHealthMonitor = await createConnectorHealthMonitor({
2981
+ runtime: state.runtime,
2982
+ config: state.config,
2983
+ broadcastWs,
2984
+ });
2985
+ state.connectorHealthMonitor.start();
2986
+ }
2987
+ catch (err) {
2988
+ logger.warn(`[eliza-api] Connector health monitor failed after listen: ${err instanceof Error ? err.message : String(err)}`);
2989
+ }
2990
+ }
2991
+ // ── Dynamic streaming + connector route loading ────────────────────────
2992
+ // Always register generic stream routes. If a streaming destination is
2993
+ // configured, inject it so /api/stream/live can fetch credentials.
2994
+ void (async () => {
2995
+ if (isMobilePlatform() &&
2996
+ process.env.ELIZA_MOBILE_ENABLE_STREAMING_ROUTES !== "1") {
2997
+ logger.debug("[eliza-api] Desktop streaming routes disabled on mobile platform.");
2998
+ return;
2999
+ }
3000
+ try {
3001
+ const streamRoutes = await import(
3002
+ /* @vite-ignore */ "@elizaos/plugin-streaming");
3003
+ const handleStreamRoute = typeof streamRoutes.handleStreamRoute === "function"
3004
+ ? streamRoutes.handleStreamRoute
3005
+ : null;
3006
+ if (!handleStreamRoute) {
3007
+ logger.debug("[eliza-api] @elizaos/plugin-streaming did not export handleStreamRoute; skipping streaming route registration.");
3008
+ }
3009
+ // Screen capture manager is injected by the desktop host via globalThis
3010
+ const screenCapture = globalThis
3011
+ .__elizaScreenCapture;
3012
+ // Build destination registry — all configured destinations
3013
+ const _connectors = state.config.connectors ?? {};
3014
+ const streaming = state.config.streaming;
3015
+ const destinations = new Map();
3016
+ try {
3017
+ const streamMod = await loadStreamingPluginDestinationFactories();
3018
+ if (isStreamingDestinationConfigured("customRtmp", streaming?.customRtmp)) {
3019
+ destinations.set("custom-rtmp", streamMod.createCustomRtmpDestination(streaming?.customRtmp));
3020
+ }
3021
+ const rawSources = streaming?.rtmpSources;
3022
+ if (Array.isArray(rawSources)) {
3023
+ for (const row of rawSources) {
3024
+ if (!row || typeof row !== "object")
3025
+ continue;
3026
+ const rec = row;
3027
+ const id = String(rec.id ?? "").trim();
3028
+ const name = String(rec.name ?? id).trim();
3029
+ const rtmpUrl = String(rec.rtmpUrl ?? "").trim();
3030
+ const rtmpKey = String(rec.rtmpKey ?? "").trim();
3031
+ if (!id || !rtmpUrl || !rtmpKey)
3032
+ continue;
3033
+ destinations.set(id, streamMod.createNamedRtmpDestination({
3034
+ id,
3035
+ name,
3036
+ rtmpUrl,
3037
+ rtmpKey,
3038
+ }));
3039
+ }
3040
+ }
3041
+ if (isStreamingDestinationConfigured("twitch", streaming?.twitch)) {
3042
+ destinations.set("twitch", streamMod.createTwitchDestination(undefined, streaming?.twitch));
3043
+ }
3044
+ if (isStreamingDestinationConfigured("youtube", streaming?.youtube)) {
3045
+ destinations.set("youtube", streamMod.createYoutubeDestination(undefined, streaming?.youtube));
3046
+ }
3047
+ if (isStreamingDestinationConfigured("pumpfun", streaming?.pumpfun)) {
3048
+ destinations.set("pumpfun", streamMod.createPumpfunDestination(undefined, streaming?.pumpfun));
3049
+ }
3050
+ if (isStreamingDestinationConfigured("x", streaming?.x)) {
3051
+ destinations.set("x", streamMod.createXStreamDestination(undefined, streaming?.x));
3052
+ }
3053
+ }
3054
+ catch (err) {
3055
+ logger.warn(`[eliza-api] Failed to load @elizaos/plugin-streaming destinations: ${err instanceof Error ? err.message : String(err)}`);
3056
+ }
3057
+ // Active destination: config preference → first available
3058
+ const activeDestinationId = streaming?.activeDestination ??
3059
+ (destinations.size > 0
3060
+ ? destinations.keys().next().value
3061
+ : undefined);
3062
+ const { streamManager } = await getOptionalPluginApi("streaming");
3063
+ const streamState = {
3064
+ streamManager,
3065
+ port,
3066
+ screenCapture,
3067
+ captureUrl: undefined,
3068
+ destinations,
3069
+ activeDestinationId,
3070
+ activeStreamSource: { type: "stream-tab" },
3071
+ mirrorStreamAvatarToElizaConfig: (avatarIndex) => {
3072
+ try {
3073
+ if (!Number.isFinite(avatarIndex)) {
3074
+ return;
3075
+ }
3076
+ const diskCfg = loadElizaConfig();
3077
+ const lang = state.config.ui?.language ?? diskCfg.ui?.language;
3078
+ const preset = resolveStylePresetByAvatarIndex(avatarIndex, lang);
3079
+ const nextUi = {
3080
+ ...(state.config.ui ?? {}),
3081
+ avatarIndex,
3082
+ ...(preset?.id ? { presetId: preset.id } : {}),
3083
+ };
3084
+ state.config = {
3085
+ ...state.config,
3086
+ ui: nextUi,
3087
+ };
3088
+ // Merge disk + live server config so we never persist a minimal
3089
+ // snapshot (e.g. ENOENT default) and clobber eliza.json during
3090
+ // first-run while state.config still holds the full boot payload.
3091
+ const toSave = {
3092
+ ...diskCfg,
3093
+ ...state.config,
3094
+ ui: {
3095
+ ...(diskCfg.ui ?? {}),
3096
+ ...(state.config.ui ?? {}),
3097
+ ...nextUi,
3098
+ },
3099
+ };
3100
+ saveElizaConfig(toSave);
3101
+ state.config = {
3102
+ ...state.config,
3103
+ ui: toSave.ui,
3104
+ };
3105
+ }
3106
+ catch (err) {
3107
+ logger.warn(`[eliza-api] mirrorStreamAvatarToElizaConfig failed: ${err instanceof Error ? err.message : String(err)}`);
3108
+ }
3109
+ },
3110
+ get config() {
3111
+ const cfg = state.config;
3112
+ const msgs = cfg?.messages;
3113
+ return msgs
3114
+ ? {
3115
+ messages: {
3116
+ tts: msgs.tts,
3117
+ },
3118
+ }
3119
+ : undefined;
3120
+ },
3121
+ };
3122
+ // `handleStreamRoute` is exported by `@elizaos/plugin-streaming`,
3123
+ // which the mobile bundle replaces with a null-plugin proxy (see
3124
+ // `packages/agent/scripts/build-mobile-bundle.mjs` —
3125
+ // `@elizaos/plugin-streaming` is in the mobile replacement allowlist because the
3126
+ // TTS / SSE worker pool has zero mobile use). On mobile the
3127
+ // dynamic import resolves successfully but `handleStreamRoute` is
3128
+ // `undefined`, and the closure here gets pushed into
3129
+ // `connectorRouteHandlers` anyway — so every inbound HTTP request
3130
+ // (including `/api/local-inference/device-bridge/status`) errors
3131
+ // with `handleStreamRoute is not a function`. Skip the push when
3132
+ // the import returned a null-plugin proxy.
3133
+ if (typeof handleStreamRoute === "function") {
3134
+ state.connectorRouteHandlers.push((req, res, pathname, method) => handleStreamRoute(req, res, pathname, method, streamState));
3135
+ }
3136
+ const destNames = Array.from(destinations.values())
3137
+ .map((d) => d.name)
3138
+ .join(", ");
3139
+ const destLabel = destinations.size > 0
3140
+ ? `destinations: ${destNames}`
3141
+ : "no destinations";
3142
+ addLog("info", `Stream routes registered (${destLabel})`, "system", [
3143
+ "system",
3144
+ "streaming",
3145
+ ]);
3146
+ }
3147
+ catch (err) {
3148
+ logger.warn(`[eliza-api] Failed to load stream routes: ${err instanceof Error ? err.message : String(err)}`);
3149
+ }
3150
+ })();
3151
+ };
3152
+ // ── WebSocket Server ─────────────────────────────────────────────────────
3153
+ const wss = new WebSocketServer({ noServer: true, maxPayload: 64 * 1024 });
3154
+ // A server-level 'error' with no listener crashes the process. Abrupt client
3155
+ // disconnects (RST during/after the upgrade handshake) surface here.
3156
+ wss.on("error", (err) => {
3157
+ logger.warn(`[eliza-api] WebSocketServer error: ${err instanceof Error ? err.message : err}`);
3158
+ });
3159
+ const wsClients = new Set();
3160
+ const wsClientIds = new WeakMap();
3161
+ /**
3162
+ * Per-connection active conversation. Each browser window/client owns its own
3163
+ * active conversation, so two windows no longer fight over a single global.
3164
+ * `state.activeConversationId` is kept as the "most recent active conversation"
3165
+ * default for code paths that legitimately need *any* active conversation
3166
+ * (autonomy routing, swarm synthesis) and don't target a specific client.
3167
+ */
3168
+ const wsActiveConversations = new WeakMap();
3169
+ /** Per-WS-client PTY output subscriptions: sessionId → unsubscribe */
3170
+ const wsClientPtySubscriptions = new WeakMap();
3171
+ /**
3172
+ * Short-window idempotency cache for client-tagged WS messages, keyed by
3173
+ * `${clientId}:${msgId}`. A message resent after a reconnect (same id) is
3174
+ * dropped if seen within the TTL. Entries expire so the map stays bounded.
3175
+ */
3176
+ const wsSeenMessageIds = new Map();
3177
+ const WS_DEDUPE_TTL_MS = 30_000;
3178
+ let wsSeenLastSweepAt = 0;
3179
+ const isDuplicateWsMessage = (clientId, msgId) => {
3180
+ if (typeof msgId !== "string" || msgId.length === 0)
3181
+ return false;
3182
+ const key = `${clientId ?? "anon"}:${msgId}`;
3183
+ const now = Date.now();
3184
+ // O(1) TTL-aware dedupe: a still-fresh entry means this id was already seen
3185
+ // within the window. Correctness no longer depends on first scanning the
3186
+ // whole map — the previous full-scan-on-every-message was O(n) per message
3187
+ // (O(n^2) under a burst).
3188
+ const seenAt = wsSeenMessageIds.get(key);
3189
+ if (seenAt !== undefined && now - seenAt <= WS_DEDUPE_TTL_MS)
3190
+ return true;
3191
+ wsSeenMessageIds.set(key, now);
3192
+ // Amortized eviction: sweep expired entries at most once per TTL window
3193
+ // instead of on every message; keeps the map bounded without the per-
3194
+ // message scan.
3195
+ if (now - wsSeenLastSweepAt > WS_DEDUPE_TTL_MS) {
3196
+ wsSeenLastSweepAt = now;
3197
+ for (const [seenKey, ts] of wsSeenMessageIds) {
3198
+ if (now - ts > WS_DEDUPE_TTL_MS)
3199
+ wsSeenMessageIds.delete(seenKey);
3200
+ }
3201
+ }
3202
+ return false;
3203
+ };
3204
+ bindRuntimeStreams(opts?.runtime ?? null);
3205
+ bindTrainingStream();
3206
+ // Wire coding-agent bridges at initial boot (event-driven via getServiceLoadPromise)
3207
+ if (opts?.runtime) {
3208
+ void wireCoordinatorBridgesWhenReady(state, {
3209
+ wireChatBridge: wireCodingAgentChatBridge,
3210
+ wireWsBridge: wireCodingAgentWsBridge,
3211
+ wireEventRouting: wireCoordinatorEventRouting,
3212
+ wireSwarmSynthesis: wireCodingAgentSwarmSynthesis,
3213
+ context: "boot",
3214
+ logger,
3215
+ });
3216
+ }
3217
+ // Handle upgrade requests for WebSocket
3218
+ server.on("upgrade", (request, socket, head) => {
3219
+ // The raw upgrade socket can emit 'error' (client RST mid-handshake) before
3220
+ // a WebSocket — and its error handler — exists. Unhandled, it crashes the
3221
+ // process. Attach a no-op-ish guard for the whole upgrade window.
3222
+ socket.on("error", (err) => {
3223
+ logger.warn(`[eliza-api] WS upgrade socket error: ${err instanceof Error ? err.message : err}`);
3224
+ try {
3225
+ socket.destroy();
3226
+ }
3227
+ catch { }
3228
+ });
3229
+ try {
3230
+ const wsUrl = new URL(request.url ?? "/", `http://${request.headers.host ?? "localhost"}`);
3231
+ if (wsUrl.pathname === "/api/local-inference/device-bridge") {
3232
+ return;
3233
+ }
3234
+ const rejection = resolveWebSocketUpgradeRejection(request, wsUrl);
3235
+ if (rejection) {
3236
+ rejectWebSocketUpgrade(socket, rejection.status, rejection.reason);
3237
+ return;
3238
+ }
3239
+ wss.handleUpgrade(request, socket, head, (ws) => {
3240
+ // Attach an 'error' listener IMMEDIATELY — before emit('connection')
3241
+ // runs the (long) connection handler that only attaches its own error
3242
+ // listener near the end. A client that RSTs in that window otherwise
3243
+ // emits an unhandled 'error' on the ws and crashes the process.
3244
+ ws.on("error", (err) => {
3245
+ logger.warn(`[eliza-api] WebSocket error: ${err instanceof Error ? err.message : err}`);
3246
+ });
3247
+ wss.emit("connection", ws, request);
3248
+ });
3249
+ }
3250
+ catch (err) {
3251
+ logger.error(`[eliza-api] WebSocket upgrade error: ${err instanceof Error ? err.message : err}`);
3252
+ rejectWebSocketUpgrade(socket, 404, "Not found");
3253
+ }
3254
+ });
3255
+ // Handle WebSocket connections
3256
+ wss.on("connection", (ws, request) => {
3257
+ let wsUrl;
3258
+ try {
3259
+ wsUrl = new URL(request.url ?? "/", `http://${request.headers.host ?? "localhost"}`);
3260
+ const clientId = normalizeWsClientId(wsUrl.searchParams.get("clientId"));
3261
+ if (clientId)
3262
+ wsClientIds.set(ws, clientId);
3263
+ }
3264
+ catch {
3265
+ // Ignore malformed WS URL metadata; auth/path were already validated.
3266
+ wsUrl = new URL("ws://localhost/ws");
3267
+ }
3268
+ let isAuthenticated = isWebSocketAuthorized(request, wsUrl);
3269
+ // Optional reconnect cursor: a client that tracks the highest buffered
3270
+ // event sequence it has applied can pass it back as `?lastEventId=` so the
3271
+ // server replays only the envelopes it is missing instead of re-flooding
3272
+ // the full tail on every (re)connect (loadperf research 05, Finding 4).
3273
+ // Absent/invalid => null => the historical slice(-DEFAULT_REPLAY_LIMIT)
3274
+ // behavior, so existing clients are unaffected.
3275
+ const replayCursor = parseEventCursor(wsUrl.searchParams.get("lastEventId") ?? wsUrl.searchParams.get("since"));
3276
+ const activateAuthenticatedConnection = () => {
3277
+ wsClients.add(ws);
3278
+ addLog("info", "WebSocket client connected", "websocket", [
3279
+ "server",
3280
+ "websocket",
3281
+ ]);
3282
+ try {
3283
+ ws.send(JSON.stringify({
3284
+ type: "status",
3285
+ state: state.agentState,
3286
+ agentName: state.agentName,
3287
+ model: state.model,
3288
+ // Same server-authoritative readiness signal as broadcastStatus and
3289
+ // /api/status. Without it on the initial-connect status, every WS
3290
+ // (re)connect delivers canRespond: undefined and re-gates the chat
3291
+ // composer back to "waking up" until the next 5s broadcast.
3292
+ canRespond: computeCanRespond(state.runtime, state.agentState),
3293
+ startedAt: state.startedAt,
3294
+ startup: state.startup,
3295
+ pendingRestart: state.pendingRestartReasons.length > 0,
3296
+ pendingRestartReasons: state.pendingRestartReasons,
3297
+ }));
3298
+ const replay = selectReplayEvents(state.eventBuffer, replayCursor, DEFAULT_REPLAY_LIMIT);
3299
+ for (const event of replay) {
3300
+ ws.send(JSON.stringify(event));
3301
+ }
3302
+ }
3303
+ catch (err) {
3304
+ logger.error(`[eliza-api] WebSocket send error: ${err instanceof Error ? err.message : err}`);
3305
+ }
3306
+ };
3307
+ if (isAuthenticated) {
3308
+ activateAuthenticatedConnection();
3309
+ }
3310
+ ws.on("message", async (data) => {
3311
+ try {
3312
+ const msg = JSON.parse(String(data));
3313
+ if (!isAuthenticated) {
3314
+ const expected = getConfiguredApiToken();
3315
+ if (expected &&
3316
+ msg.type === "auth" &&
3317
+ typeof msg.token === "string" &&
3318
+ tokenMatches(expected, msg.token.trim())) {
3319
+ isAuthenticated = true;
3320
+ ws.send(JSON.stringify({ type: "auth-ok" }));
3321
+ activateAuthenticatedConnection();
3322
+ }
3323
+ else {
3324
+ logger.warn("[eliza-api] WebSocket message rejected before auth");
3325
+ ws.close(1008, "Unauthorized");
3326
+ }
3327
+ return;
3328
+ }
3329
+ if (isDuplicateWsMessage(wsClientIds.get(ws), msg.msgId)) {
3330
+ return;
3331
+ }
3332
+ if (msg.type === "ping") {
3333
+ ws.send(JSON.stringify({ type: "pong" }));
3334
+ }
3335
+ else if (msg.type === "active-conversation") {
3336
+ // Per-connection: only this client's active conversation changes.
3337
+ const conversationId = typeof msg.conversationId === "string" ? msg.conversationId : null;
3338
+ if (conversationId) {
3339
+ wsActiveConversations.set(ws, conversationId);
3340
+ }
3341
+ else {
3342
+ wsActiveConversations.delete(ws);
3343
+ }
3344
+ // Keep the global as a sensible "any/most-recent active conversation"
3345
+ // default for non-client-targeted routing (autonomy, swarm synthesis).
3346
+ state.activeConversationId = conversationId;
3347
+ }
3348
+ else if (msg.type === "pty-subscribe" &&
3349
+ typeof msg.sessionId === "string") {
3350
+ const bridge = getPtyConsoleBridge(state);
3351
+ if (bridge) {
3352
+ let subs = wsClientPtySubscriptions.get(ws);
3353
+ if (!subs) {
3354
+ subs = new Map();
3355
+ wsClientPtySubscriptions.set(ws, subs);
3356
+ }
3357
+ // Don't double-subscribe
3358
+ if (!subs.has(msg.sessionId)) {
3359
+ const targetId = msg.sessionId;
3360
+ const listener = (evt) => {
3361
+ if (evt.sessionId !== targetId)
3362
+ return;
3363
+ if (ws.readyState === 1) {
3364
+ ws.send(JSON.stringify({
3365
+ type: "pty-output",
3366
+ sessionId: targetId,
3367
+ data: evt.data,
3368
+ }));
3369
+ }
3370
+ };
3371
+ bridge.on("session_output", listener);
3372
+ subs.set(targetId, () => bridge.off("session_output", listener));
3373
+ }
3374
+ }
3375
+ }
3376
+ else if (msg.type === "pty-unsubscribe" &&
3377
+ typeof msg.sessionId === "string") {
3378
+ const subs = wsClientPtySubscriptions.get(ws);
3379
+ const unsub = subs?.get(msg.sessionId);
3380
+ if (unsub) {
3381
+ unsub();
3382
+ subs?.delete(msg.sessionId);
3383
+ }
3384
+ }
3385
+ else if (msg.type === "pty-input" &&
3386
+ typeof msg.sessionId === "string" &&
3387
+ typeof msg.data === "string") {
3388
+ // Only allow input to sessions this client has subscribed to
3389
+ const subs = wsClientPtySubscriptions.get(ws);
3390
+ if (!subs?.has(msg.sessionId)) {
3391
+ logger.warn(`[eliza-api] pty-input rejected: client not subscribed to session ${msg.sessionId}`);
3392
+ }
3393
+ else if (msg.data.length > 4096) {
3394
+ logger.warn(`[eliza-api] pty-input rejected: payload too large (${msg.data.length} bytes) for session ${msg.sessionId}`);
3395
+ }
3396
+ else {
3397
+ const bridge = getPtyConsoleBridge(state);
3398
+ if (bridge) {
3399
+ logger.debug(`[eliza-api] pty-input: session=${msg.sessionId} len=${msg.data.length}`);
3400
+ bridge.writeRaw(msg.sessionId, msg.data);
3401
+ }
3402
+ }
3403
+ }
3404
+ else if (msg.type === "pty-resize" &&
3405
+ typeof msg.sessionId === "string") {
3406
+ // Only allow resize for sessions this client has subscribed to
3407
+ const subs = wsClientPtySubscriptions.get(ws);
3408
+ if (!subs?.has(msg.sessionId)) {
3409
+ logger.warn(`[eliza-api] pty-resize rejected: client not subscribed to session ${msg.sessionId}`);
3410
+ }
3411
+ else {
3412
+ const bridge = getPtyConsoleBridge(state);
3413
+ if (bridge &&
3414
+ typeof msg.cols === "number" &&
3415
+ typeof msg.rows === "number" &&
3416
+ Number.isFinite(msg.cols) &&
3417
+ Number.isFinite(msg.rows) &&
3418
+ Number.isInteger(msg.cols) &&
3419
+ Number.isInteger(msg.rows) &&
3420
+ msg.cols >= 1 &&
3421
+ msg.cols <= 500 &&
3422
+ msg.rows >= 1 &&
3423
+ msg.rows <= 500) {
3424
+ bridge.resize(msg.sessionId, msg.cols, msg.rows);
3425
+ }
3426
+ else {
3427
+ logger.warn(`[eliza-api] pty-resize rejected: invalid dimensions cols=${msg.cols} rows=${msg.rows}`);
3428
+ }
3429
+ }
3430
+ }
3431
+ else if (msg.type === "view:interact:result" &&
3432
+ typeof msg.requestId === "string") {
3433
+ void import("./views-routes.js")
3434
+ .then(({ resolveViewInteractResult }) => {
3435
+ resolveViewInteractResult({
3436
+ requestId: msg.requestId,
3437
+ success: msg.success === true,
3438
+ result: msg.result,
3439
+ error: typeof msg.error === "string" ? msg.error : undefined,
3440
+ });
3441
+ })
3442
+ .catch((err) => {
3443
+ logger.error(`[eliza-api] view interaction result error: ${err instanceof Error ? err.message : err}`);
3444
+ });
3445
+ }
3446
+ }
3447
+ catch (err) {
3448
+ logger.error(`[eliza-api] WebSocket message error: ${err instanceof Error ? err.message : err}`);
3449
+ }
3450
+ });
3451
+ ws.on("close", () => {
3452
+ wsClients.delete(ws);
3453
+ wsActiveConversations.delete(ws);
3454
+ // Clean up any PTY output subscriptions for this client
3455
+ const subs = wsClientPtySubscriptions.get(ws);
3456
+ if (subs) {
3457
+ for (const unsub of subs.values())
3458
+ unsub();
3459
+ subs.clear();
3460
+ }
3461
+ addLog("info", "WebSocket client disconnected", "websocket", [
3462
+ "server",
3463
+ "websocket",
3464
+ ]);
3465
+ });
3466
+ ws.on("error", (err) => {
3467
+ logger.error(`[eliza-api] WebSocket error: ${err instanceof Error ? err.message : err}`);
3468
+ wsClients.delete(ws);
3469
+ wsActiveConversations.delete(ws);
3470
+ // Clean up PTY subscriptions on error too
3471
+ const subs = wsClientPtySubscriptions.get(ws);
3472
+ if (subs) {
3473
+ for (const unsub of subs.values())
3474
+ unsub();
3475
+ subs.clear();
3476
+ }
3477
+ });
3478
+ });
3479
+ // Broadcast status to all connected WebSocket clients (flattened — PR #36 fix)
3480
+ const broadcastStatus = () => {
3481
+ broadcastWs({
3482
+ type: "status",
3483
+ state: state.agentState,
3484
+ agentName: state.agentName,
3485
+ model: state.model,
3486
+ // Carry the same server-authoritative readiness signal `/api/status`
3487
+ // returns. Without it, every 5s WS status broadcast resets the client's
3488
+ // `agentStatus.canRespond` to undefined, re-gating the chat composer back
3489
+ // to "waking up" even though the agent is fully ready and replying.
3490
+ canRespond: computeCanRespond(state.runtime, state.agentState),
3491
+ startedAt: state.startedAt,
3492
+ startup: state.startup,
3493
+ pendingRestart: state.pendingRestartReasons.length > 0,
3494
+ pendingRestartReasons: state.pendingRestartReasons,
3495
+ });
3496
+ };
3497
+ // Make broadcastStatus accessible to route handlers via state
3498
+ state.broadcastStatus = broadcastStatus;
3499
+ // Generic broadcast — sends an arbitrary JSON payload to all WS clients.
3500
+ state.broadcastWs = (data) => {
3501
+ const message = JSON.stringify(data);
3502
+ for (const client of wsClients) {
3503
+ if (client.readyState === 1) {
3504
+ try {
3505
+ client.send(message);
3506
+ }
3507
+ catch (err) {
3508
+ logger.error(`[eliza-api] WebSocket broadcast error: ${err instanceof Error ? err.message : err}`);
3509
+ }
3510
+ }
3511
+ }
3512
+ };
3513
+ state.broadcastWsToClientId = (clientId, data) => {
3514
+ const message = JSON.stringify(data);
3515
+ let delivered = 0;
3516
+ for (const client of wsClients) {
3517
+ if (client.readyState !== 1)
3518
+ continue;
3519
+ if (wsClientIds.get(client) !== clientId)
3520
+ continue;
3521
+ try {
3522
+ client.send(message);
3523
+ delivered += 1;
3524
+ }
3525
+ catch (err) {
3526
+ logger.error(`[eliza-api] WebSocket targeted send error: ${err instanceof Error ? err.message : err}`);
3527
+ }
3528
+ }
3529
+ return delivered;
3530
+ };
3531
+ // Conversation-scoped push: only clients with this conversation active.
3532
+ state.broadcastWsToConversation = (conversationId, data) => {
3533
+ const message = JSON.stringify(data);
3534
+ let delivered = 0;
3535
+ for (const client of wsClients) {
3536
+ if (client.readyState !== 1)
3537
+ continue;
3538
+ if (wsActiveConversations.get(client) !== conversationId)
3539
+ continue;
3540
+ try {
3541
+ client.send(message);
3542
+ delivered += 1;
3543
+ }
3544
+ catch (err) {
3545
+ logger.error(`[eliza-api] WebSocket conversation send error: ${err instanceof Error ? err.message : err}`);
3546
+ }
3547
+ }
3548
+ return delivered;
3549
+ };
3550
+ // Wire up ConnectorSetupService broadcastWs so connector plugins
3551
+ // (Signal, WhatsApp) can broadcast pairing events via the service.
3552
+ if (state.runtime) {
3553
+ try {
3554
+ const setupSvc = state.runtime.getService("connector-setup");
3555
+ setupSvc?.setBroadcastWs?.(state.broadcastWs);
3556
+ }
3557
+ catch {
3558
+ // non-fatal — service may not be registered yet
3559
+ }
3560
+ }
3561
+ // Broadcast status every 5 seconds
3562
+ const statusInterval = setInterval(broadcastStatus, 5000);
3563
+ /**
3564
+ * Restore the in-memory conversation list from the database.
3565
+ * Web-chat rooms live in a deterministic world; we scan it for rooms
3566
+ * whose channelId starts with "web-conv-" and reconstruct the metadata.
3567
+ */
3568
+ const restoreConversationsFromDb = async (rt) => {
3569
+ try {
3570
+ const agentName = rt.character.name ?? "Eliza";
3571
+ const worldId = stringToUuid(`${agentName}-web-chat-world`);
3572
+ const rooms = await rt.getRoomsByWorld(worldId);
3573
+ if (!rooms.length)
3574
+ return;
3575
+ let restored = 0;
3576
+ for (const room of rooms) {
3577
+ // channelId is "web-conv-{uuid}" — extract the conversation id
3578
+ const channelId = typeof room.channelId === "string" ? room.channelId : "";
3579
+ if (!channelId.startsWith("web-conv-"))
3580
+ continue;
3581
+ const convId = channelId.replace("web-conv-", "");
3582
+ if (!convId || state.conversations.has(convId))
3583
+ continue;
3584
+ if (state.deletedConversationIds.has(convId))
3585
+ continue;
3586
+ // Peek at the latest message to get a timestamp
3587
+ let updatedAt = new Date().toISOString();
3588
+ try {
3589
+ const msgs = await rt.getMemories({
3590
+ roomId: room.id,
3591
+ tableName: "messages",
3592
+ limit: 1,
3593
+ });
3594
+ if (msgs.length > 0 && msgs[0].createdAt) {
3595
+ updatedAt = new Date(msgs[0].createdAt).toISOString();
3596
+ }
3597
+ }
3598
+ catch {
3599
+ // non-fatal — use current time
3600
+ }
3601
+ const conversationMetadata = await extractConversationMetadataFromRoom(room, convId);
3602
+ state.conversations.set(convId, {
3603
+ id: convId,
3604
+ title: room.name || "Chat",
3605
+ roomId: room.id,
3606
+ ...(conversationMetadata ? { metadata: conversationMetadata } : {}),
3607
+ createdAt: updatedAt,
3608
+ updatedAt,
3609
+ });
3610
+ restored++;
3611
+ }
3612
+ if (restored > 0) {
3613
+ addLog("info", `Restored ${restored} conversation(s) from database`, "system", ["system"]);
3614
+ }
3615
+ }
3616
+ catch (err) {
3617
+ logger.warn(`[eliza-api] Failed to restore conversations from DB: ${err instanceof Error ? err.message : err}`);
3618
+ }
3619
+ };
3620
+ const beginConversationRestore = (rt) => {
3621
+ const restorePromise = restoreConversationsFromDb(rt).finally(() => {
3622
+ if (state.conversationRestorePromise === restorePromise) {
3623
+ state.conversationRestorePromise = null;
3624
+ }
3625
+ });
3626
+ state.conversationRestorePromise = restorePromise;
3627
+ return restorePromise;
3628
+ };
3629
+ /**
3630
+ * Load the agent's DB-persisted character data and overlay onto the
3631
+ * in-memory runtime.character. This ensures Character Editor edits
3632
+ * survive server restarts without depending on eliza.json persistence.
3633
+ */
3634
+ const overlayDbCharacter = async (rt, st) => {
3635
+ try {
3636
+ const dbAgent = await rt.getAgent(rt.agentId);
3637
+ const agentRecord = dbAgent && typeof dbAgent === "object" && !Array.isArray(dbAgent)
3638
+ ? Object.fromEntries(Object.entries(dbAgent))
3639
+ : null;
3640
+ const saved = agentRecord?.character;
3641
+ if (!saved || typeof saved !== "object")
3642
+ return;
3643
+ const c = rt.character;
3644
+ // Only overlay fields that were explicitly saved (non-empty)
3645
+ if (typeof saved.name === "string" && saved.name)
3646
+ c.name = saved.name;
3647
+ if (Array.isArray(saved.bio) && saved.bio.length > 0) {
3648
+ c.bio = saved.bio;
3649
+ }
3650
+ if (typeof saved.system === "string" && saved.system) {
3651
+ c.system = saved.system;
3652
+ }
3653
+ if (Array.isArray(saved.adjectives)) {
3654
+ c.adjectives = saved.adjectives;
3655
+ }
3656
+ if (Array.isArray(saved.topics)) {
3657
+ c.topics = saved.topics;
3658
+ }
3659
+ if (saved.style && typeof saved.style === "object") {
3660
+ c.style = saved.style;
3661
+ }
3662
+ if (Array.isArray(saved.messageExamples)) {
3663
+ c.messageExamples = saved.messageExamples;
3664
+ }
3665
+ if (Array.isArray(saved.postExamples) && saved.postExamples.length > 0) {
3666
+ c.postExamples = saved.postExamples;
3667
+ }
3668
+ // Update agent name on state
3669
+ st.agentName = c.name ?? st.agentName;
3670
+ logger.info(`[character-db] Overlaid DB-persisted character "${c.name}" onto runtime`);
3671
+ }
3672
+ catch (err) {
3673
+ logger.warn(`[character-db] Failed to load character from DB: ${err instanceof Error ? err.message : err}`);
3674
+ }
3675
+ };
3676
+ // Restore conversations from DB at initial boot (if runtime was passed in)
3677
+ if (opts?.runtime) {
3678
+ void beginConversationRestore(opts.runtime).catch((err) => {
3679
+ logger.warn("[api] Conversation restore failed:", err);
3680
+ });
3681
+ void overlayDbCharacter(opts.runtime, state).catch((err) => {
3682
+ logger.warn("[api] Character overlay restore failed:", err);
3683
+ });
3684
+ registerClientChatSendHandler(opts.runtime, state);
3685
+ wireProactiveInteractionDecider(opts.runtime, state);
3686
+ }
3687
+ const assertX402RoutesValid = async (rt) => {
3688
+ if (!rt || !runtimeRoutesNeedX402Validation(rt.routes))
3689
+ return;
3690
+ const agentId = rt.agentId != null && String(rt.agentId).length > 0
3691
+ ? String(rt.agentId)
3692
+ : undefined;
3693
+ const x402 = await getX402Plugin();
3694
+ if (!x402)
3695
+ return; // x402 module unavailable (e.g. mobile bundle) — nothing to validate
3696
+ const { validateX402Startup } = x402;
3697
+ const result = validateX402Startup(rt.routes, rt.character, {
3698
+ agentId,
3699
+ });
3700
+ if (!result || typeof result !== "object") {
3701
+ logger.warn("[x402] startup validator returned no result; skipping x402 route validation");
3702
+ return;
3703
+ }
3704
+ if (!result.valid) {
3705
+ throw new Error(`x402 configuration invalid:\n${result.errors.map((e) => ` • ${e}`).join("\n")}`);
3706
+ }
3707
+ for (const w of result.warnings) {
3708
+ logger.warn(`[x402] ${w}`);
3709
+ }
3710
+ };
3711
+ /** Hot-swap the runtime reference (used after an in-process restart). */
3712
+ const updateRuntime = (rt) => {
3713
+ void assertX402RoutesValid(rt).catch((err) => {
3714
+ logger.error(`[x402] runtime route validation failed after update: ${err instanceof Error ? err.message : String(err)}`);
3715
+ });
3716
+ state.runtime = rt;
3717
+ state.chatConnectionReady = null;
3718
+ state.chatConnectionPromise = null;
3719
+ bindRuntimeStreams(rt);
3720
+ // Wake any chat turns held through the warming window — first-turn
3721
+ // capability is now online, so they stream their response instead of 503.
3722
+ runtimeReadyGate.markReady(rt);
3723
+ // AppManager doesn't need a runtime reference
3724
+ state.agentState = "running";
3725
+ state.agentName =
3726
+ rt.character.name ?? resolveDefaultAgentName(state.config);
3727
+ state.model = detectRuntimeModel(rt, state.config);
3728
+ state.startedAt = Date.now();
3729
+ state.startup = {
3730
+ phase: "running",
3731
+ attempt: 0,
3732
+ };
3733
+ addLog("info", `Runtime restarted — agent: ${state.agentName}`, "system", [
3734
+ "system",
3735
+ "agent",
3736
+ ]);
3737
+ // Restore conversations from DB so they survive restarts
3738
+ void beginConversationRestore(rt).catch((err) => {
3739
+ logger.warn("[api] Conversation restore failed on restart:", err);
3740
+ });
3741
+ // Overlay DB-persisted character data (from Character Editor saves)
3742
+ void overlayDbCharacter(rt, state).catch((err) => {
3743
+ logger.warn("[api] Character overlay restore failed on restart:", err);
3744
+ });
3745
+ // Broadcast status update immediately after restart
3746
+ broadcastStatus();
3747
+ // Re-register client_chat send handler on the new runtime
3748
+ registerClientChatSendHandler(rt, state);
3749
+ wireProactiveInteractionDecider(rt, state);
3750
+ // Wire coding-agent bridges (event-driven via getServiceLoadPromise)
3751
+ void wireCoordinatorBridgesWhenReady(state, {
3752
+ wireChatBridge: wireCodingAgentChatBridge,
3753
+ wireWsBridge: wireCodingAgentWsBridge,
3754
+ wireEventRouting: wireCoordinatorEventRouting,
3755
+ wireSwarmSynthesis: wireCodingAgentSwarmSynthesis,
3756
+ context: "restart",
3757
+ logger,
3758
+ });
3759
+ };
3760
+ const updateStartup = (update) => {
3761
+ const { state: nextState, ...startupUpdate } = update;
3762
+ state.startup = {
3763
+ ...state.startup,
3764
+ ...startupUpdate,
3765
+ };
3766
+ if (nextState) {
3767
+ state.agentState = nextState;
3768
+ if (nextState === "error") {
3769
+ state.startedAt = undefined;
3770
+ }
3771
+ else if ((nextState === "starting" || nextState === "running") &&
3772
+ !state.startedAt) {
3773
+ state.startedAt = Date.now();
3774
+ }
3775
+ }
3776
+ broadcastStatus();
3777
+ };
3778
+ logger.debug(`[eliza-api] Calling server.listen (${Date.now() - apiStartTime}ms)`);
3779
+ await assertX402RoutesValid(state.runtime);
3780
+ return new Promise((resolve, reject) => {
3781
+ let currentPort = port;
3782
+ const strictPortBinding = strictPortBindingEnabled();
3783
+ server.on("error", (err) => {
3784
+ if (err.code === "EADDRINUSE") {
3785
+ logger.warn(`[eliza-api] Port ${currentPort} is already in use. Checking fallback...`);
3786
+ if (currentPort !== 0 && !strictPortBinding) {
3787
+ logger.warn(`[eliza-api] Retrying with dynamic port (0)...`);
3788
+ currentPort = 0;
3789
+ server.listen(0, host);
3790
+ return;
3791
+ }
3792
+ if (strictPortBinding) {
3793
+ logger.error(`[eliza-api] Strict port binding is enabled; refusing dynamic fallback from ${currentPort}.`);
3794
+ }
3795
+ }
3796
+ else {
3797
+ logger.error(`[eliza-api] Server error: ${err.message} (code: ${err.code})`);
3798
+ }
3799
+ reject(err);
3800
+ });
3801
+ apiLap("before server.listen");
3802
+ server.listen(port, host, () => {
3803
+ apiLap("LISTENING (API bound)");
3804
+ logger.debug(`[eliza-api] server.listen callback fired (${Date.now() - apiStartTime}ms)`);
3805
+ const addr = server.address();
3806
+ const actualPort = typeof addr === "object" && addr ? addr.port : currentPort;
3807
+ const displayHost = typeof addr === "object" && addr ? addr.address : host;
3808
+ addLog("info", `API server listening on http://${displayHost}:${actualPort}`, "system", ["server", "system"]);
3809
+ // Log to both stdout (for agent.ts port detection) and the in-memory
3810
+ // logger. agent.ts watches stdout for "Listening on http://host:PORT"
3811
+ // to detect dynamic port reassignment when the default port is in use.
3812
+ console.log(`[eliza-api] Listening on http://${displayHost}:${actualPort}`);
3813
+ logger.info(`[eliza-api] Listening on http://${displayHost}:${actualPort}`);
3814
+ if (!opts?.skipDeferredStartupWork) {
3815
+ void startDeferredStartupWork();
3816
+ }
3817
+ resolve({
3818
+ port: actualPort,
3819
+ close: () => new Promise((r) => {
3820
+ void Promise.resolve().then(() => {
3821
+ const closeAllConnections = server.closeAllConnections;
3822
+ const closeIdleConnections = server.closeIdleConnections;
3823
+ clearInterval(statusInterval);
3824
+ if (state.connectorHealthMonitor) {
3825
+ state.connectorHealthMonitor.stop();
3826
+ state.connectorHealthMonitor = null;
3827
+ }
3828
+ if (detachRuntimeStreams) {
3829
+ detachRuntimeStreams();
3830
+ detachRuntimeStreams = null;
3831
+ }
3832
+ if (detachTrainingStream) {
3833
+ detachTrainingStream();
3834
+ detachTrainingStream = null;
3835
+ }
3836
+ for (const ws of wsClients) {
3837
+ if (ws.readyState === 1 || ws.readyState === 0) {
3838
+ if ("terminate" in ws && typeof ws.terminate === "function") {
3839
+ ws.terminate();
3840
+ }
3841
+ else {
3842
+ ws.close();
3843
+ }
3844
+ }
3845
+ }
3846
+ wsClients.clear();
3847
+ // Clean up WhatsApp pairing sessions
3848
+ if (state.whatsappPairingSessions) {
3849
+ for (const s of state.whatsappPairingSessions.values()) {
3850
+ try {
3851
+ s.stop();
3852
+ }
3853
+ catch {
3854
+ /* non-fatal */
3855
+ }
3856
+ }
3857
+ state.whatsappPairingSessions.clear();
3858
+ }
3859
+ // Clean up Signal pairing sessions
3860
+ if (state.signalPairingSessions) {
3861
+ for (const s of state.signalPairingSessions.values()) {
3862
+ try {
3863
+ s.stop();
3864
+ }
3865
+ catch {
3866
+ /* non-fatal */
3867
+ }
3868
+ }
3869
+ state.signalPairingSessions.clear();
3870
+ }
3871
+ if (state.telegramAccountAuthSession) {
3872
+ void Promise.resolve(state.telegramAccountAuthSession.stop()).catch(() => {
3873
+ /* non-fatal */
3874
+ });
3875
+ state.telegramAccountAuthSession = null;
3876
+ }
3877
+ wss.close();
3878
+ const closeTimeout = setTimeout(() => r(), 5_000);
3879
+ const resolved = { done: false };
3880
+ const finalize = () => {
3881
+ if (!resolved.done) {
3882
+ resolved.done = true;
3883
+ clearTimeout(closeTimeout);
3884
+ r();
3885
+ }
3886
+ };
3887
+ if (typeof closeAllConnections === "function") {
3888
+ try {
3889
+ closeAllConnections();
3890
+ }
3891
+ catch {
3892
+ // Bun/Node server internals vary by runtime; non-fatal on shutdown.
3893
+ }
3894
+ }
3895
+ if (typeof closeIdleConnections === "function") {
3896
+ try {
3897
+ closeIdleConnections();
3898
+ }
3899
+ catch {
3900
+ // Bun/Node server internals vary by runtime; non-fatal on shutdown.
3901
+ }
3902
+ }
3903
+ server.close(finalize);
3904
+ });
3905
+ }),
3906
+ updateRuntime,
3907
+ updateStartup,
3908
+ });
3909
+ });
3910
+ });
3911
+ }