@elizaos/plugin-elizacloud 2.0.0-alpha.8 → 2.0.11-beta.7

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 (452) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/auto-enable.ts +22 -0
  4. package/dist/browser/index.browser.js +2 -21
  5. package/dist/browser/index.browser.js.map +5 -38
  6. package/dist/cjs/index.d.ts +2 -2
  7. package/dist/cjs/index.node.cjs +9112 -2265
  8. package/dist/cjs/index.node.js.map +68 -30
  9. package/dist/cloud/auth-service-types.d.ts +8 -0
  10. package/dist/cloud/auth-service-types.d.ts.map +1 -0
  11. package/dist/cloud/auth-service-types.js +36 -0
  12. package/dist/cloud/auth-service-types.js.map +10 -0
  13. package/dist/cloud/auth.d.ts +19 -0
  14. package/dist/cloud/auth.d.ts.map +1 -0
  15. package/dist/cloud/auth.js +283 -0
  16. package/dist/cloud/auth.js.map +12 -0
  17. package/dist/cloud/backup.d.ts +18 -0
  18. package/dist/cloud/backup.d.ts.map +1 -0
  19. package/dist/cloud/backup.js +63 -0
  20. package/dist/cloud/backup.js.map +10 -0
  21. package/dist/cloud/base-url.d.ts +7 -0
  22. package/dist/cloud/base-url.d.ts.map +1 -0
  23. package/dist/cloud/base-url.js +29 -0
  24. package/dist/cloud/base-url.js.map +10 -0
  25. package/dist/cloud/bridge-client.d.ts +126 -0
  26. package/dist/cloud/bridge-client.d.ts.map +1 -0
  27. package/dist/cloud/bridge-client.js +384 -0
  28. package/dist/cloud/bridge-client.js.map +11 -0
  29. package/dist/cloud/clack-observer.d.ts +35 -0
  30. package/dist/cloud/clack-observer.d.ts.map +1 -0
  31. package/dist/cloud/clack-observer.js +143 -0
  32. package/dist/cloud/clack-observer.js.map +10 -0
  33. package/dist/cloud/cloud-api-key.d.ts +26 -0
  34. package/dist/cloud/cloud-api-key.d.ts.map +1 -0
  35. package/dist/cloud/cloud-api-key.js +60 -0
  36. package/dist/cloud/cloud-api-key.js.map +10 -0
  37. package/dist/cloud/cloud-manager.d.ts +33 -0
  38. package/dist/cloud/cloud-manager.d.ts.map +1 -0
  39. package/dist/cloud/cloud-manager.js +806 -0
  40. package/dist/cloud/cloud-manager.js.map +16 -0
  41. package/dist/cloud/cloud-proxy.d.ts +20 -0
  42. package/dist/cloud/cloud-proxy.d.ts.map +1 -0
  43. package/dist/cloud/cloud-proxy.js +54 -0
  44. package/dist/cloud/cloud-proxy.js.map +10 -0
  45. package/dist/cloud/cloud-wallet.d.ts +94 -0
  46. package/dist/cloud/cloud-wallet.d.ts.map +1 -0
  47. package/dist/cloud/cloud-wallet.js +362 -0
  48. package/dist/cloud/cloud-wallet.js.map +13 -0
  49. package/dist/cloud/duffel-client.d.ts +181 -0
  50. package/dist/cloud/duffel-client.d.ts.map +1 -0
  51. package/dist/cloud/duffel-client.js +506 -0
  52. package/dist/cloud/duffel-client.js.map +11 -0
  53. package/dist/cloud/index.d.ts +15 -0
  54. package/dist/cloud/index.d.ts.map +1 -0
  55. package/dist/cloud/index.js +1811 -0
  56. package/dist/cloud/index.js.map +24 -0
  57. package/dist/cloud/lifeops-schedule-sync-client.d.ts +43 -0
  58. package/dist/cloud/lifeops-schedule-sync-client.d.ts.map +1 -0
  59. package/dist/cloud/lifeops-schedule-sync-client.js +180 -0
  60. package/dist/cloud/lifeops-schedule-sync-client.js.map +11 -0
  61. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts +89 -0
  62. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts.map +1 -0
  63. package/dist/cloud/lifeops-schedule-sync-contracts.js +39 -0
  64. package/dist/cloud/lifeops-schedule-sync-contracts.js.map +10 -0
  65. package/dist/cloud/managed-payment-clients.d.ts +166 -0
  66. package/dist/cloud/managed-payment-clients.d.ts.map +1 -0
  67. package/dist/cloud/managed-payment-clients.js +238 -0
  68. package/dist/cloud/managed-payment-clients.js.map +11 -0
  69. package/dist/cloud/null-observer.d.ts +35 -0
  70. package/dist/cloud/null-observer.d.ts.map +1 -0
  71. package/dist/cloud/null-observer.js +45 -0
  72. package/dist/cloud/null-observer.js.map +10 -0
  73. package/dist/cloud/reconnect.d.ts +26 -0
  74. package/dist/cloud/reconnect.d.ts.map +1 -0
  75. package/dist/cloud/reconnect.js +104 -0
  76. package/dist/cloud/reconnect.js.map +10 -0
  77. package/dist/cloud/setup-observer.d.ts +98 -0
  78. package/dist/cloud/setup-observer.d.ts.map +1 -0
  79. package/dist/cloud/setup-observer.js +2 -0
  80. package/dist/cloud/setup-observer.js.map +9 -0
  81. package/dist/cloud/validate-url.d.ts +2 -0
  82. package/dist/cloud/validate-url.d.ts.map +1 -0
  83. package/dist/cloud/validate-url.js +175 -0
  84. package/dist/cloud/validate-url.js.map +10 -0
  85. package/dist/cloud/x402-payment-handler.d.ts +85 -0
  86. package/dist/cloud/x402-payment-handler.d.ts.map +1 -0
  87. package/dist/cloud/x402-payment-handler.js +119 -0
  88. package/dist/cloud/x402-payment-handler.js.map +10 -0
  89. package/dist/cloud-providers/cloud-status.d.ts.map +1 -1
  90. package/dist/cloud-providers/cloud-status.js +78 -0
  91. package/dist/cloud-providers/cloud-status.js.map +10 -0
  92. package/dist/cloud-providers/container-health.d.ts.map +1 -1
  93. package/dist/cloud-providers/container-health.js +74 -0
  94. package/dist/cloud-providers/container-health.js.map +10 -0
  95. package/dist/cloud-providers/credit-balance.d.ts.map +1 -1
  96. package/dist/cloud-providers/credit-balance.js +85 -0
  97. package/dist/cloud-providers/credit-balance.js.map +10 -0
  98. package/dist/cloud-providers/index.d.ts.map +1 -1
  99. package/dist/cloud-providers/index.js +24 -0
  100. package/dist/cloud-providers/index.js.map +9 -0
  101. package/dist/cloud-providers/model-registry.d.ts.map +1 -1
  102. package/dist/cloud-providers/model-registry.js +71 -0
  103. package/dist/cloud-providers/model-registry.js.map +10 -0
  104. package/dist/cloud-setup.d.ts +36 -0
  105. package/dist/cloud-setup.d.ts.map +1 -0
  106. package/dist/cloud-setup.js +883 -0
  107. package/dist/cloud-setup.js.map +14 -0
  108. package/dist/cloud-voice-catalog.d.ts +65 -0
  109. package/dist/cloud-voice-catalog.d.ts.map +1 -0
  110. package/dist/cloud-voice-catalog.js +278 -0
  111. package/dist/cloud-voice-catalog.js.map +12 -0
  112. package/dist/index.browser.d.ts +15 -3
  113. package/dist/index.browser.d.ts.map +1 -1
  114. package/dist/index.d.ts +24 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +9862 -0
  117. package/dist/index.js.map +77 -0
  118. package/dist/index.node.d.ts +21 -2
  119. package/dist/index.node.d.ts.map +1 -1
  120. package/dist/init.d.ts.map +1 -1
  121. package/dist/init.js +182 -0
  122. package/dist/init.js.map +12 -0
  123. package/dist/lib/cloud-connection.d.ts +77 -0
  124. package/dist/lib/cloud-connection.d.ts.map +1 -0
  125. package/dist/lib/cloud-connection.js +654 -0
  126. package/dist/lib/cloud-connection.js.map +14 -0
  127. package/dist/lib/cloud-secrets.d.ts +10 -0
  128. package/dist/lib/cloud-secrets.d.ts.map +1 -0
  129. package/dist/lib/cloud-secrets.js +36 -0
  130. package/dist/lib/cloud-secrets.js.map +10 -0
  131. package/dist/lib/config-env.d.ts +5 -0
  132. package/dist/lib/config-env.d.ts.map +1 -0
  133. package/dist/lib/config-env.js +191 -0
  134. package/dist/lib/config-env.js.map +11 -0
  135. package/dist/lib/config-like.d.ts +40 -0
  136. package/dist/lib/config-like.d.ts.map +1 -0
  137. package/dist/lib/config-like.js +103 -0
  138. package/dist/lib/config-like.js.map +10 -0
  139. package/dist/lib/credential-type-map.d.ts +53 -0
  140. package/dist/lib/credential-type-map.d.ts.map +1 -0
  141. package/dist/lib/credential-type-map.js +88 -0
  142. package/dist/lib/credential-type-map.js.map +10 -0
  143. package/dist/lib/feature-flags.d.ts +2 -0
  144. package/dist/lib/feature-flags.d.ts.map +1 -0
  145. package/dist/lib/feature-flags.js +40 -0
  146. package/dist/lib/feature-flags.js.map +10 -0
  147. package/dist/lib/http.d.ts +11 -0
  148. package/dist/lib/http.d.ts.map +1 -0
  149. package/dist/lib/http.js +107 -0
  150. package/dist/lib/http.js.map +10 -0
  151. package/dist/lib/server-cloud-tts.d.ts +21 -0
  152. package/dist/lib/server-cloud-tts.d.ts.map +1 -0
  153. package/dist/lib/server-cloud-tts.js +251 -0
  154. package/dist/lib/server-cloud-tts.js.map +10 -0
  155. package/dist/lib/state-paths.d.ts +4 -0
  156. package/dist/lib/state-paths.d.ts.map +1 -0
  157. package/dist/lib/state-paths.js +52 -0
  158. package/dist/lib/state-paths.js.map +10 -0
  159. package/dist/lib/tts-debug.d.ts +6 -0
  160. package/dist/lib/tts-debug.d.ts.map +1 -0
  161. package/dist/lib/tts-debug.js +24 -0
  162. package/dist/lib/tts-debug.js.map +9 -0
  163. package/dist/models/embeddings.d.ts.map +1 -1
  164. package/dist/models/embeddings.js +329 -0
  165. package/dist/models/embeddings.js.map +13 -0
  166. package/dist/models/image.d.ts.map +1 -1
  167. package/dist/models/image.js +401 -0
  168. package/dist/models/image.js.map +14 -0
  169. package/dist/models/index.d.ts +1 -2
  170. package/dist/models/index.d.ts.map +1 -1
  171. package/dist/models/index.js +1896 -0
  172. package/dist/models/index.js.map +19 -0
  173. package/dist/models/research.d.ts.map +1 -1
  174. package/dist/models/research.js +341 -0
  175. package/dist/models/research.js.map +13 -0
  176. package/dist/models/speech.d.ts +61 -3
  177. package/dist/models/speech.d.ts.map +1 -1
  178. package/dist/models/speech.js +429 -0
  179. package/dist/models/speech.js.map +13 -0
  180. package/dist/models/text.d.ts +111 -3
  181. package/dist/models/text.d.ts.map +1 -1
  182. package/dist/models/text.js +1173 -0
  183. package/dist/models/text.js.map +14 -0
  184. package/dist/models/tokenization.d.ts.map +1 -1
  185. package/dist/models/tokenization.js +65 -0
  186. package/dist/models/tokenization.js.map +10 -0
  187. package/dist/models/transcription.d.ts.map +1 -1
  188. package/dist/models/transcription.js +297 -0
  189. package/dist/models/transcription.js.map +13 -0
  190. package/dist/node/index.d.ts +2 -2
  191. package/dist/node/index.node.js +9189 -2295
  192. package/dist/node/index.node.js.map +68 -30
  193. package/dist/plugin.d.ts +20 -0
  194. package/dist/plugin.d.ts.map +1 -0
  195. package/dist/plugin.js +2937 -0
  196. package/dist/plugin.js.map +28 -0
  197. package/dist/providers/openai.d.ts.map +1 -1
  198. package/dist/providers/openai.js +136 -0
  199. package/dist/providers/openai.js.map +11 -0
  200. package/dist/register-routes.d.ts +2 -0
  201. package/dist/register-routes.d.ts.map +1 -0
  202. package/dist/register-routes.js +2938 -0
  203. package/dist/register-routes.js.map +29 -0
  204. package/dist/routes/cloud-billing-routes.d.ts +9 -0
  205. package/dist/routes/cloud-billing-routes.d.ts.map +1 -0
  206. package/dist/routes/cloud-billing-routes.js +764 -0
  207. package/dist/routes/cloud-billing-routes.js.map +15 -0
  208. package/dist/routes/cloud-coding-container-routes.d.ts +8 -0
  209. package/dist/routes/cloud-coding-container-routes.d.ts.map +1 -0
  210. package/dist/routes/cloud-coding-container-routes.js +214 -0
  211. package/dist/routes/cloud-coding-container-routes.js.map +11 -0
  212. package/dist/routes/cloud-compat-routes.d.ts +10 -0
  213. package/dist/routes/cloud-compat-routes.d.ts.map +1 -0
  214. package/dist/routes/cloud-compat-routes.js +495 -0
  215. package/dist/routes/cloud-compat-routes.js.map +15 -0
  216. package/dist/routes/cloud-features-routes.d.ts +9 -0
  217. package/dist/routes/cloud-features-routes.d.ts.map +1 -0
  218. package/dist/routes/cloud-features-routes.js +124 -0
  219. package/dist/routes/cloud-features-routes.js.map +11 -0
  220. package/dist/routes/cloud-provisioning.d.ts +14 -0
  221. package/dist/routes/cloud-provisioning.d.ts.map +1 -0
  222. package/dist/routes/cloud-provisioning.js +37 -0
  223. package/dist/routes/cloud-provisioning.js.map +10 -0
  224. package/dist/routes/cloud-relay-routes.d.ts +23 -0
  225. package/dist/routes/cloud-relay-routes.d.ts.map +1 -0
  226. package/dist/routes/cloud-relay-routes.js +142 -0
  227. package/dist/routes/cloud-relay-routes.js.map +11 -0
  228. package/dist/routes/cloud-routes-autonomous.d.ts +82 -0
  229. package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -0
  230. package/dist/routes/cloud-routes-autonomous.js +1252 -0
  231. package/dist/routes/cloud-routes-autonomous.js.map +18 -0
  232. package/dist/routes/cloud-routes.d.ts +35 -0
  233. package/dist/routes/cloud-routes.d.ts.map +1 -0
  234. package/dist/routes/cloud-routes.js +2173 -0
  235. package/dist/routes/cloud-routes.js.map +23 -0
  236. package/dist/routes/cloud-status-routes-autonomous.d.ts +14 -0
  237. package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -0
  238. package/dist/routes/cloud-status-routes-autonomous.js +349 -0
  239. package/dist/routes/cloud-status-routes-autonomous.js.map +13 -0
  240. package/dist/routes/cloud-status-routes.d.ts +4 -0
  241. package/dist/routes/cloud-status-routes.d.ts.map +1 -0
  242. package/dist/routes/cloud-status-routes.js +695 -0
  243. package/dist/routes/cloud-status-routes.js.map +15 -0
  244. package/dist/routes/home-remote-runner-access-url.d.ts +16 -0
  245. package/dist/routes/home-remote-runner-access-url.d.ts.map +1 -0
  246. package/dist/routes/home-remote-runner-access-url.js +91 -0
  247. package/dist/routes/home-remote-runner-access-url.js.map +10 -0
  248. package/dist/routes/travel-provider-relay-routes.d.ts +9 -0
  249. package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
  250. package/dist/routes/travel-provider-relay-routes.js +358 -0
  251. package/dist/routes/travel-provider-relay-routes.js.map +14 -0
  252. package/dist/services/cloud-auth.d.ts +140 -5
  253. package/dist/services/cloud-auth.d.ts.map +1 -1
  254. package/dist/services/cloud-auth.js +368 -0
  255. package/dist/services/cloud-auth.js.map +12 -0
  256. package/dist/services/cloud-backup.d.ts.map +1 -1
  257. package/dist/services/cloud-backup.js +176 -0
  258. package/dist/services/cloud-backup.js.map +11 -0
  259. package/dist/services/cloud-bootstrap.d.ts +38 -0
  260. package/dist/services/cloud-bootstrap.d.ts.map +1 -0
  261. package/dist/services/cloud-bootstrap.js +84 -0
  262. package/dist/services/cloud-bootstrap.js.map +10 -0
  263. package/dist/services/cloud-bridge.d.ts +1 -1
  264. package/dist/services/cloud-bridge.d.ts.map +1 -1
  265. package/dist/services/cloud-bridge.js +308 -0
  266. package/dist/services/cloud-bridge.js.map +11 -0
  267. package/dist/services/cloud-container.d.ts +5 -1
  268. package/dist/services/cloud-container.d.ts.map +1 -1
  269. package/dist/services/cloud-container.js +292 -0
  270. package/dist/services/cloud-container.js.map +11 -0
  271. package/dist/services/cloud-credential-provider.d.ts +55 -0
  272. package/dist/services/cloud-credential-provider.d.ts.map +1 -0
  273. package/dist/services/cloud-credential-provider.js +190 -0
  274. package/dist/services/cloud-credential-provider.js.map +11 -0
  275. package/dist/services/cloud-managed-gateway-relay.d.ts +38 -0
  276. package/dist/services/cloud-managed-gateway-relay.d.ts.map +1 -0
  277. package/dist/services/cloud-managed-gateway-relay.js +479 -0
  278. package/dist/services/cloud-managed-gateway-relay.js.map +10 -0
  279. package/dist/services/cloud-model-registry.d.ts.map +1 -1
  280. package/dist/services/cloud-model-registry.js +175 -0
  281. package/dist/services/cloud-model-registry.js.map +10 -0
  282. package/dist/services/index.d.ts +3 -1
  283. package/dist/services/index.d.ts.map +1 -1
  284. package/dist/services/index.js +29 -0
  285. package/dist/services/index.js.map +9 -0
  286. package/dist/types/cloud.d.ts +42 -19
  287. package/dist/types/cloud.d.ts.map +1 -1
  288. package/dist/types/cloud.js +52 -0
  289. package/dist/types/cloud.js.map +10 -0
  290. package/dist/types/index.d.ts +1 -1
  291. package/dist/types/index.d.ts.map +1 -1
  292. package/dist/types/index.js +24 -0
  293. package/dist/types/index.js.map +9 -0
  294. package/dist/utils/cloud-api.d.ts +2 -27
  295. package/dist/utils/cloud-api.d.ts.map +1 -1
  296. package/dist/utils/cloud-api.js +33 -0
  297. package/dist/utils/cloud-api.js.map +10 -0
  298. package/dist/utils/cloud-sdk/client.d.ts +133 -0
  299. package/dist/utils/cloud-sdk/client.d.ts.map +1 -0
  300. package/dist/utils/cloud-sdk/client.js +3693 -0
  301. package/dist/utils/cloud-sdk/client.js.map +13 -0
  302. package/dist/utils/cloud-sdk/http.d.ts +37 -0
  303. package/dist/utils/cloud-sdk/http.d.ts.map +1 -0
  304. package/dist/utils/cloud-sdk/http.js +237 -0
  305. package/dist/utils/cloud-sdk/http.js.map +11 -0
  306. package/dist/utils/cloud-sdk/index.d.ts +6 -0
  307. package/dist/utils/cloud-sdk/index.d.ts.map +1 -0
  308. package/dist/utils/cloud-sdk/index.js +29 -0
  309. package/dist/utils/cloud-sdk/index.js.map +9 -0
  310. package/dist/utils/cloud-sdk/public-routes.d.ts +5563 -0
  311. package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -0
  312. package/dist/utils/cloud-sdk/public-routes.js +3048 -0
  313. package/dist/utils/cloud-sdk/public-routes.js.map +10 -0
  314. package/dist/utils/cloud-sdk/types.cloud-api.d.ts +101 -0
  315. package/dist/utils/cloud-sdk/types.cloud-api.d.ts.map +1 -0
  316. package/dist/utils/cloud-sdk/types.cloud-api.js +2 -0
  317. package/dist/utils/cloud-sdk/types.cloud-api.js.map +9 -0
  318. package/dist/utils/cloud-sdk/types.d.ts +653 -0
  319. package/dist/utils/cloud-sdk/types.d.ts.map +1 -0
  320. package/dist/utils/cloud-sdk/types.js +29 -0
  321. package/dist/utils/cloud-sdk/types.js.map +10 -0
  322. package/dist/utils/config.d.ts +16 -3
  323. package/dist/utils/config.d.ts.map +1 -1
  324. package/dist/utils/config.js +147 -0
  325. package/dist/utils/config.js.map +10 -0
  326. package/dist/utils/events.d.ts +23 -2
  327. package/dist/utils/events.d.ts.map +1 -1
  328. package/dist/utils/events.js +45 -0
  329. package/dist/utils/events.js.map +10 -0
  330. package/dist/utils/helpers.d.ts.map +1 -1
  331. package/dist/utils/helpers.js +103 -0
  332. package/dist/utils/helpers.js.map +10 -0
  333. package/dist/utils/responses-output.d.ts +13 -0
  334. package/dist/utils/responses-output.d.ts.map +1 -0
  335. package/dist/utils/responses-output.js +102 -0
  336. package/dist/utils/responses-output.js.map +10 -0
  337. package/dist/utils/sdk-client.d.ts +5 -0
  338. package/dist/utils/sdk-client.d.ts.map +1 -0
  339. package/dist/utils/sdk-client.js +157 -0
  340. package/dist/utils/sdk-client.js.map +11 -0
  341. package/dist/utils/waifu-metering.d.ts +108 -0
  342. package/dist/utils/waifu-metering.d.ts.map +1 -0
  343. package/dist/utils/waifu-metering.js +166 -0
  344. package/dist/utils/waifu-metering.js.map +10 -0
  345. package/package.json +139 -21
  346. package/src/cloud/auth-service-types.ts +24 -0
  347. package/src/cloud/auth.ts +175 -0
  348. package/src/cloud/backup.ts +46 -0
  349. package/src/cloud/base-url.ts +6 -0
  350. package/src/cloud/bridge-client.ts +602 -0
  351. package/src/cloud/clack-observer.ts +189 -0
  352. package/src/cloud/cloud-api-key.ts +80 -0
  353. package/src/cloud/cloud-manager.ts +163 -0
  354. package/src/cloud/cloud-proxy.ts +52 -0
  355. package/src/cloud/cloud-wallet.ts +341 -0
  356. package/src/cloud/duffel-client.ts +847 -0
  357. package/src/cloud/index.ts +38 -0
  358. package/src/cloud/lifeops-schedule-sync-client.ts +245 -0
  359. package/src/cloud/lifeops-schedule-sync-contracts.ts +124 -0
  360. package/src/cloud/managed-payment-clients.ts +374 -0
  361. package/src/cloud/null-observer.ts +45 -0
  362. package/src/cloud/reconnect.ts +111 -0
  363. package/src/cloud/setup-observer.ts +125 -0
  364. package/src/cloud/validate-url.ts +187 -0
  365. package/src/cloud/x402-payment-handler.ts +215 -0
  366. package/src/cloud-providers/cloud-status.ts +75 -0
  367. package/src/cloud-providers/container-health.ts +68 -0
  368. package/src/cloud-providers/credit-balance.ts +70 -0
  369. package/src/cloud-providers/index.ts +3 -0
  370. package/src/cloud-providers/model-registry.ts +74 -0
  371. package/src/cloud-setup.ts +531 -0
  372. package/src/cloud-voice-catalog.test.ts +254 -0
  373. package/src/cloud-voice-catalog.ts +246 -0
  374. package/src/index.browser.ts +39 -0
  375. package/src/index.node.ts +69 -0
  376. package/src/index.ts +419 -0
  377. package/src/init.ts +39 -0
  378. package/src/lib/cloud-connection.ts +661 -0
  379. package/src/lib/cloud-secrets.ts +14 -0
  380. package/src/lib/config-env.ts +168 -0
  381. package/src/lib/config-like.ts +149 -0
  382. package/src/lib/credential-type-map.ts +130 -0
  383. package/src/lib/feature-flags.ts +26 -0
  384. package/src/lib/http.ts +122 -0
  385. package/src/lib/server-cloud-tts.ts +301 -0
  386. package/src/lib/state-paths.ts +28 -0
  387. package/src/lib/tts-debug.ts +5 -0
  388. package/src/models/embeddings.ts +298 -0
  389. package/src/models/image.ts +234 -0
  390. package/src/models/index.ts +16 -0
  391. package/src/models/research.ts +275 -0
  392. package/src/models/speech.ts +324 -0
  393. package/src/models/text.ts +1493 -0
  394. package/src/models/tokenization.ts +67 -0
  395. package/src/models/transcription.ts +101 -0
  396. package/src/plugin.ts +281 -0
  397. package/src/providers/openai.ts +16 -0
  398. package/src/register-routes.ts +6 -0
  399. package/src/routes/cloud-billing-routes.ts +744 -0
  400. package/src/routes/cloud-coding-container-routes.ts +198 -0
  401. package/src/routes/cloud-compat-routes.ts +304 -0
  402. package/src/routes/cloud-features-routes.ts +57 -0
  403. package/src/routes/cloud-provisioning.ts +37 -0
  404. package/src/routes/cloud-relay-routes.ts +135 -0
  405. package/src/routes/cloud-routes-autonomous.ts +993 -0
  406. package/src/routes/cloud-routes.ts +637 -0
  407. package/src/routes/cloud-status-routes-autonomous.ts +238 -0
  408. package/src/routes/cloud-status-routes.ts +73 -0
  409. package/src/routes/home-remote-runner-access-url.ts +83 -0
  410. package/src/routes/travel-provider-relay-routes.ts +193 -0
  411. package/src/services/cloud-auth.ts +574 -0
  412. package/src/services/cloud-backup.ts +208 -0
  413. package/src/services/cloud-bootstrap.ts +106 -0
  414. package/src/services/cloud-bridge.ts +386 -0
  415. package/src/services/cloud-container.ts +390 -0
  416. package/src/services/cloud-credential-provider.ts +210 -0
  417. package/src/services/cloud-managed-gateway-relay.ts +663 -0
  418. package/src/services/cloud-model-registry.ts +202 -0
  419. package/src/services/index.ts +17 -0
  420. package/{types → src/types}/cloud.ts +74 -29
  421. package/{types → src/types}/index.ts +25 -0
  422. package/src/utils/cloud-api.ts +10 -0
  423. package/src/utils/cloud-sdk/client.ts +774 -0
  424. package/src/utils/cloud-sdk/http.ts +291 -0
  425. package/src/utils/cloud-sdk/index.ts +23 -0
  426. package/src/utils/cloud-sdk/public-routes.ts +5238 -0
  427. package/src/utils/cloud-sdk/types.cloud-api.ts +120 -0
  428. package/src/utils/cloud-sdk/types.ts +760 -0
  429. package/src/utils/config.ts +193 -0
  430. package/src/utils/events.ts +65 -0
  431. package/src/utils/helpers.ts +107 -0
  432. package/src/utils/responses-output.ts +115 -0
  433. package/src/utils/sdk-client.ts +41 -0
  434. package/src/utils/waifu-metering.ts +302 -0
  435. package/dist/actions/check-credits.d.ts +0 -6
  436. package/dist/actions/check-credits.d.ts.map +0 -1
  437. package/dist/actions/freeze-agent.d.ts +0 -9
  438. package/dist/actions/freeze-agent.d.ts.map +0 -1
  439. package/dist/actions/index.d.ts +0 -5
  440. package/dist/actions/index.d.ts.map +0 -1
  441. package/dist/actions/provision-agent.d.ts +0 -8
  442. package/dist/actions/provision-agent.d.ts.map +0 -1
  443. package/dist/actions/resume-agent.d.ts +0 -9
  444. package/dist/actions/resume-agent.d.ts.map +0 -1
  445. package/dist/build.d.ts +0 -3
  446. package/dist/build.d.ts.map +0 -1
  447. package/dist/generated/specs/specs.d.ts +0 -55
  448. package/dist/generated/specs/specs.d.ts.map +0 -1
  449. package/dist/models/object.d.ts +0 -4
  450. package/dist/models/object.d.ts.map +0 -1
  451. package/dist/utils/forwarded-settings.d.ts +0 -8
  452. package/dist/utils/forwarded-settings.d.ts.map +0 -1
@@ -0,0 +1,663 @@
1
+ import {
2
+ ChannelType,
3
+ type Content,
4
+ ContentType,
5
+ createMessageMemory,
6
+ createUniqueUuid,
7
+ type HandlerCallback,
8
+ type IAgentRuntime,
9
+ type JsonValue,
10
+ logger,
11
+ type Memory,
12
+ Service,
13
+ type UUID,
14
+ } from "@elizaos/core";
15
+ import type {
16
+ GatewayRelayRequest,
17
+ GatewayRelayRequestEnvelope,
18
+ GatewayRelayResponse,
19
+ PollGatewayRelayResponse,
20
+ RegisterGatewayRelaySessionResponse,
21
+ } from "../types/cloud";
22
+ import type { CloudAuthService } from "./cloud-auth";
23
+
24
+ const POLL_TIMEOUT_MS = 25_000;
25
+ const REQUEST_TIMEOUT_MS = POLL_TIMEOUT_MS + 5_000;
26
+ const RETRY_DELAY_MS = 2_000;
27
+ const IDLE_DELAY_MS = 250;
28
+
29
+ type RelayRequestMethod = "GET" | "POST" | "DELETE";
30
+ type RelayRuntimeStatus = "idle" | "registered" | "polling" | "error" | "stopped";
31
+
32
+ interface RelayRequestJsonOptions {
33
+ method: RelayRequestMethod;
34
+ json?: unknown;
35
+ query?: Record<string, string | number | boolean>;
36
+ timeoutMs?: number;
37
+ }
38
+
39
+ function sleep(ms: number): Promise<void> {
40
+ return new Promise((resolve) => setTimeout(resolve, ms));
41
+ }
42
+
43
+ function isRecord(value: unknown): value is Record<string, unknown> {
44
+ return typeof value === "object" && value !== null && !Array.isArray(value);
45
+ }
46
+
47
+ function isUuidLike(value: string): value is UUID {
48
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
49
+ }
50
+
51
+ function asTrimmedString(value: unknown): string | undefined {
52
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
53
+ }
54
+
55
+ function resolveChannelType(value: unknown): ChannelType {
56
+ const candidate = asTrimmedString(value)?.toUpperCase();
57
+ return candidate && candidate in ChannelType
58
+ ? ChannelType[candidate as keyof typeof ChannelType]
59
+ : ChannelType.DM;
60
+ }
61
+
62
+ function isCloudProvisionedRuntime(): boolean {
63
+ if (typeof process === "undefined") {
64
+ return false;
65
+ }
66
+ return process.env.ELIZA_CLOUD_PROVISIONED === "1";
67
+ }
68
+
69
+ function isNodeHost(): boolean {
70
+ return typeof process !== "undefined" && typeof process.versions?.node === "string";
71
+ }
72
+
73
+ function normalizeAttachments(value: unknown): Content["attachments"] | undefined {
74
+ if (!Array.isArray(value)) {
75
+ return undefined;
76
+ }
77
+
78
+ const attachments = value
79
+ .map((entry, index) => {
80
+ if (!isRecord(entry)) {
81
+ return null;
82
+ }
83
+
84
+ const url = asTrimmedString(entry.url);
85
+ if (!url) {
86
+ return null;
87
+ }
88
+
89
+ const type = asTrimmedString(entry.type)?.toLowerCase();
90
+ return {
91
+ id: asTrimmedString(entry.id) ?? `${index}:${url}`,
92
+ url,
93
+ source: asTrimmedString(entry.source),
94
+ title: asTrimmedString(entry.title),
95
+ description: asTrimmedString(entry.description),
96
+ text: asTrimmedString(entry.text),
97
+ contentType:
98
+ type === "image"
99
+ ? ContentType.IMAGE
100
+ : type === "video"
101
+ ? ContentType.VIDEO
102
+ : type === "audio"
103
+ ? ContentType.AUDIO
104
+ : type === "document"
105
+ ? ContentType.DOCUMENT
106
+ : undefined,
107
+ };
108
+ })
109
+ .filter((entry): entry is NonNullable<typeof entry> => entry !== null);
110
+
111
+ return attachments.length > 0 ? attachments : undefined;
112
+ }
113
+
114
+ function toJsonRecord(value: unknown): Record<string, unknown> | undefined {
115
+ return isRecord(value) ? value : undefined;
116
+ }
117
+
118
+ function toJsonMetadataRecord(value: unknown): Record<string, JsonValue> | undefined {
119
+ if (!isRecord(value)) {
120
+ return undefined;
121
+ }
122
+
123
+ return JSON.parse(JSON.stringify(value)) as Record<string, JsonValue>;
124
+ }
125
+
126
+ type GatewayMessagePayload = {
127
+ text: string;
128
+ roomKey: string;
129
+ channelType: ChannelType;
130
+ source: string;
131
+ senderId: string;
132
+ senderUserName: string;
133
+ senderName: string;
134
+ attachments?: Content["attachments"];
135
+ senderMetadata?: Record<string, unknown>;
136
+ transportMetadata?: Record<string, unknown>;
137
+ };
138
+
139
+ function buildGatewayMessagePayload(
140
+ runtime: IAgentRuntime,
141
+ rpc: GatewayRelayRequest
142
+ ): GatewayMessagePayload | null {
143
+ const params = toJsonRecord(rpc.params);
144
+ const sender = toJsonRecord(params?.sender);
145
+
146
+ const source = asTrimmedString(params?.source) ?? "eliza_cloud_gateway";
147
+ const text = typeof params?.text === "string" ? params.text : "";
148
+ const senderId = asTrimmedString(sender?.id) ?? `${source}:anonymous`;
149
+ const senderUserName = asTrimmedString(sender?.username) ?? senderId;
150
+ const senderName =
151
+ asTrimmedString(sender?.displayName) ?? asTrimmedString(sender?.name) ?? senderUserName;
152
+ const roomKey =
153
+ asTrimmedString(params?.roomId) ??
154
+ `${source}:${senderId}:${String(rpc.id ?? Date.now())}:${runtime.agentId}`;
155
+
156
+ if (!text.trim() && !normalizeAttachments(params?.attachments)?.length) {
157
+ return null;
158
+ }
159
+
160
+ return {
161
+ text: text.trim() || " ",
162
+ roomKey,
163
+ channelType: resolveChannelType(params?.channelType),
164
+ source,
165
+ senderId,
166
+ senderUserName,
167
+ senderName,
168
+ attachments: normalizeAttachments(params?.attachments),
169
+ senderMetadata: toJsonRecord(sender?.metadata),
170
+ transportMetadata: toJsonRecord(params?.metadata),
171
+ };
172
+ }
173
+
174
+ function buildWorldKey(
175
+ source: string,
176
+ metadata: Record<string, unknown> | undefined,
177
+ roomKey: string
178
+ ): string {
179
+ const discord = toJsonRecord(metadata?.discord);
180
+ const guildId = asTrimmedString(discord?.guildId);
181
+ if (guildId) {
182
+ return `gateway:${source}:guild:${guildId}`;
183
+ }
184
+
185
+ const threadId = asTrimmedString(metadata?.threadId);
186
+ if (threadId) {
187
+ return `gateway:${source}:thread:${threadId}`;
188
+ }
189
+
190
+ return `gateway:${source}:room:${roomKey}`;
191
+ }
192
+
193
+ class SessionMissingError extends Error {
194
+ constructor() {
195
+ super("Gateway relay session missing");
196
+ this.name = "SessionMissingError";
197
+ }
198
+ }
199
+
200
+ export class CloudManagedGatewayRelayService extends Service {
201
+ static serviceType = "CLOUD_MANAGED_GATEWAY_RELAY";
202
+ capabilityDescription =
203
+ "Registers a local Eliza runtime with the cloud managed gateway and handles inbound relay traffic";
204
+
205
+ private authService: CloudAuthService | null = null;
206
+ private loopPromise: Promise<void> | null = null;
207
+ private currentSessionId: string | null = null;
208
+ private stopping = false;
209
+ private activeAbortController: AbortController | null = null;
210
+ private relayStatus: RelayRuntimeStatus = "idle";
211
+ private lastSeenAt: string | null = null;
212
+
213
+ static async start(runtime: IAgentRuntime): Promise<Service> {
214
+ const service = new CloudManagedGatewayRelayService(runtime);
215
+ await service.initialize();
216
+ return service;
217
+ }
218
+
219
+ async stop(): Promise<void> {
220
+ this.stopping = true;
221
+ this.relayStatus = "stopped";
222
+ this.activeAbortController?.abort();
223
+
224
+ if (this.loopPromise) {
225
+ await this.loopPromise.catch((error) => {
226
+ logger.debug(
227
+ `[CloudManagedGatewayRelay] Ignoring relay loop shutdown error: ${
228
+ error instanceof Error ? error.message : String(error)
229
+ }`
230
+ );
231
+ });
232
+ }
233
+
234
+ const sessionId = this.currentSessionId;
235
+ this.currentSessionId = null;
236
+ if (sessionId) {
237
+ await this.disconnectSession(sessionId);
238
+ }
239
+ }
240
+
241
+ private async initialize(): Promise<void> {
242
+ if (!isNodeHost()) {
243
+ logger.debug("[CloudManagedGatewayRelay] Skipping gateway relay outside Node.js runtime");
244
+ this.relayStatus = "stopped";
245
+ return;
246
+ }
247
+
248
+ if (isCloudProvisionedRuntime()) {
249
+ logger.debug(
250
+ "[CloudManagedGatewayRelay] Skipping local relay inside provisioned cloud runtime"
251
+ );
252
+ this.relayStatus = "stopped";
253
+ return;
254
+ }
255
+
256
+ if (!this.runtime.messageService) {
257
+ logger.debug("[CloudManagedGatewayRelay] Skipping gateway relay without message service");
258
+ this.relayStatus = "idle";
259
+ return;
260
+ }
261
+
262
+ const auth = this.runtime.getService("CLOUD_AUTH");
263
+ if (!auth) {
264
+ logger.debug("[CloudManagedGatewayRelay] CloudAuthService not available");
265
+ this.relayStatus = "idle";
266
+ return;
267
+ }
268
+
269
+ this.authService = auth as CloudAuthService;
270
+ if (!this.authService.isAuthenticated()) {
271
+ logger.debug(
272
+ "[CloudManagedGatewayRelay] Skipping gateway relay while cloud auth is inactive"
273
+ );
274
+ this.relayStatus = "idle";
275
+ return;
276
+ }
277
+
278
+ this.startRelayLoopIfReady();
279
+ }
280
+
281
+ getSessionInfo(): {
282
+ sessionId: string | null;
283
+ organizationId: string | null;
284
+ userId: string | null;
285
+ agentName: string | null;
286
+ platform: string | null;
287
+ lastSeenAt: string | null;
288
+ status: RelayRuntimeStatus;
289
+ } {
290
+ const auth = this.authService;
291
+ const status =
292
+ this.stopping || this.relayStatus === "stopped"
293
+ ? "stopped"
294
+ : auth?.isAuthenticated() === false
295
+ ? "idle"
296
+ : this.relayStatus;
297
+
298
+ return {
299
+ sessionId: this.currentSessionId,
300
+ organizationId: auth?.getOrganizationId() ?? null,
301
+ userId: auth?.getUserId() ?? null,
302
+ agentName: this.getAgentName(),
303
+ platform: "local-runtime",
304
+ lastSeenAt: this.lastSeenAt,
305
+ status,
306
+ };
307
+ }
308
+
309
+ startRelayLoopIfReady(): boolean {
310
+ if (this.loopPromise && !this.stopping) {
311
+ return true;
312
+ }
313
+
314
+ const auth =
315
+ this.authService ?? (this.runtime.getService("CLOUD_AUTH") as CloudAuthService | null);
316
+ if (!auth?.isAuthenticated() || !this.runtime.messageService) {
317
+ this.relayStatus = "idle";
318
+ return false;
319
+ }
320
+
321
+ this.authService = auth;
322
+ this.stopping = false;
323
+ this.relayStatus = "idle";
324
+ this.loopPromise = this.runLoop();
325
+ logger.info("[CloudManagedGatewayRelay] Local gateway relay loop started");
326
+ return true;
327
+ }
328
+
329
+ private async runLoop(): Promise<void> {
330
+ while (!this.stopping) {
331
+ try {
332
+ if (!this.currentSessionId) {
333
+ this.currentSessionId = await this.registerSession();
334
+ this.relayStatus = "registered";
335
+ this.lastSeenAt = new Date().toISOString();
336
+ continue;
337
+ }
338
+
339
+ this.relayStatus = "polling";
340
+ const request = await this.pollNextRequest(this.currentSessionId);
341
+ this.lastSeenAt = new Date().toISOString();
342
+ if (!request) {
343
+ this.relayStatus = "registered";
344
+ await sleep(IDLE_DELAY_MS);
345
+ continue;
346
+ }
347
+
348
+ const response = await this.handleRequest(request.rpc);
349
+ await this.submitResponse(this.currentSessionId, request.requestId, response);
350
+ this.relayStatus = "registered";
351
+ } catch (error) {
352
+ if (this.stopping) {
353
+ return;
354
+ }
355
+
356
+ if (error instanceof SessionMissingError) {
357
+ this.currentSessionId = null;
358
+ this.relayStatus = "idle";
359
+ await sleep(IDLE_DELAY_MS);
360
+ continue;
361
+ }
362
+
363
+ this.relayStatus = "error";
364
+ logger.warn(
365
+ `[CloudManagedGatewayRelay] Relay loop error: ${
366
+ error instanceof Error ? error.message : String(error)
367
+ }`
368
+ );
369
+ await sleep(RETRY_DELAY_MS);
370
+ }
371
+ }
372
+ }
373
+
374
+ private getAgentName(): string {
375
+ return this.runtime.character?.name?.trim() || "Eliza";
376
+ }
377
+
378
+ private getClient() {
379
+ const client = this.authService?.getClient();
380
+ if (!client) {
381
+ throw new Error("Cloud API client is unavailable");
382
+ }
383
+ return client;
384
+ }
385
+
386
+ private async requestJson<T>(
387
+ path: string,
388
+ options: RelayRequestJsonOptions
389
+ ): Promise<{ status: number; body: T }> {
390
+ const timeoutMs = options.timeoutMs ?? REQUEST_TIMEOUT_MS;
391
+ const controller = new AbortController();
392
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
393
+ this.activeAbortController = controller;
394
+
395
+ try {
396
+ const response = await this.getClient().requestRaw(options.method, path, {
397
+ headers: {
398
+ Accept: "application/json",
399
+ },
400
+ json: options.json,
401
+ query: options.query,
402
+ signal: controller.signal,
403
+ });
404
+
405
+ const body = (await response.json().catch(() => ({}))) as T;
406
+ return { status: response.status, body };
407
+ } finally {
408
+ clearTimeout(timeoutId);
409
+ if (this.activeAbortController === controller) {
410
+ this.activeAbortController = null;
411
+ }
412
+ }
413
+ }
414
+
415
+ private async registerSession(): Promise<string> {
416
+ const { status, body } = await this.requestJson<RegisterGatewayRelaySessionResponse>(
417
+ "/eliza/gateway-relay/sessions",
418
+ {
419
+ method: "POST",
420
+ json: {
421
+ runtimeAgentId: this.runtime.agentId,
422
+ agentName: this.getAgentName(),
423
+ },
424
+ }
425
+ );
426
+
427
+ if (status >= 400 || !body?.success || !body.data?.session?.id) {
428
+ throw new Error(`Failed to register gateway relay session (status=${status})`);
429
+ }
430
+
431
+ logger.info(
432
+ `[CloudManagedGatewayRelay] Registered local runtime for managed gateway (${body.data.session.id})`
433
+ );
434
+ return body.data.session.id;
435
+ }
436
+
437
+ private async disconnectSession(sessionId: string): Promise<void> {
438
+ try {
439
+ await this.requestJson<{ success?: boolean }>(
440
+ `/eliza/gateway-relay/sessions/${encodeURIComponent(sessionId)}`,
441
+ {
442
+ method: "DELETE",
443
+ timeoutMs: 10_000,
444
+ }
445
+ );
446
+ } catch (error) {
447
+ logger.debug(
448
+ `[CloudManagedGatewayRelay] Failed to disconnect relay session ${sessionId}: ${
449
+ error instanceof Error ? error.message : String(error)
450
+ }`
451
+ );
452
+ }
453
+ }
454
+
455
+ private async pollNextRequest(sessionId: string): Promise<GatewayRelayRequestEnvelope | null> {
456
+ const { status, body } = await this.requestJson<PollGatewayRelayResponse>(
457
+ `/eliza/gateway-relay/sessions/${encodeURIComponent(sessionId)}/next`,
458
+ {
459
+ method: "GET",
460
+ query: { timeoutMs: POLL_TIMEOUT_MS },
461
+ timeoutMs: POLL_TIMEOUT_MS + 5_000,
462
+ }
463
+ );
464
+
465
+ if (status === 404) {
466
+ throw new SessionMissingError();
467
+ }
468
+
469
+ if (status >= 400 || !body?.success) {
470
+ throw new Error(`Failed to poll gateway relay session ${sessionId} (status=${status})`);
471
+ }
472
+
473
+ return body.data?.request ?? null;
474
+ }
475
+
476
+ private async submitResponse(
477
+ sessionId: string,
478
+ requestId: string,
479
+ response: GatewayRelayResponse
480
+ ): Promise<void> {
481
+ const { status, body } = await this.requestJson<{ success?: boolean }>(
482
+ `/eliza/gateway-relay/sessions/${encodeURIComponent(sessionId)}/responses`,
483
+ {
484
+ method: "POST",
485
+ json: { requestId, response },
486
+ }
487
+ );
488
+
489
+ if (status === 404) {
490
+ throw new SessionMissingError();
491
+ }
492
+
493
+ if (status >= 400 || body?.success === false) {
494
+ throw new Error(`Failed to submit gateway relay response (status=${status})`);
495
+ }
496
+ }
497
+
498
+ private async handleRequest(rpc: GatewayRelayRequest): Promise<GatewayRelayResponse> {
499
+ switch (rpc.method) {
500
+ case "heartbeat":
501
+ return {
502
+ jsonrpc: "2.0",
503
+ id: rpc.id,
504
+ result: { timestamp: Date.now() },
505
+ };
506
+ case "status.get":
507
+ return {
508
+ jsonrpc: "2.0",
509
+ id: rpc.id,
510
+ result: {
511
+ status: "running",
512
+ runtimeAgentId: this.runtime.agentId,
513
+ agentName: this.getAgentName(),
514
+ },
515
+ };
516
+ case "message.send":
517
+ return this.handleMessageSend(rpc);
518
+ default:
519
+ return {
520
+ jsonrpc: "2.0",
521
+ id: rpc.id,
522
+ error: {
523
+ code: -32601,
524
+ message: `Unsupported relay method: ${rpc.method}`,
525
+ },
526
+ };
527
+ }
528
+ }
529
+
530
+ private async handleMessageSend(rpc: GatewayRelayRequest): Promise<GatewayRelayResponse> {
531
+ if (!this.runtime.messageService) {
532
+ return {
533
+ jsonrpc: "2.0",
534
+ id: rpc.id,
535
+ error: { code: -32603, message: "Message service is not available" },
536
+ };
537
+ }
538
+
539
+ const payload = buildGatewayMessagePayload(this.runtime, rpc);
540
+ if (!payload) {
541
+ return {
542
+ jsonrpc: "2.0",
543
+ id: rpc.id,
544
+ error: { code: -32602, message: "Invalid message relay payload" },
545
+ };
546
+ }
547
+
548
+ const roomId = isUuidLike(payload.roomKey)
549
+ ? payload.roomKey
550
+ : createUniqueUuid(this.runtime, payload.roomKey);
551
+ const worldId = createUniqueUuid(
552
+ this.runtime,
553
+ buildWorldKey(payload.source, payload.transportMetadata, payload.roomKey)
554
+ );
555
+ const entityId = createUniqueUuid(this.runtime, `${payload.source}:${payload.senderId}`);
556
+ const messageServerId = createUniqueUuid(this.runtime, `eliza-cloud-gateway:${payload.source}`);
557
+ const messageId = createUniqueUuid(
558
+ this.runtime,
559
+ `${payload.source}:${payload.roomKey}:${String(rpc.id ?? Date.now())}:inbound`
560
+ );
561
+
562
+ const transportMetadata = toJsonMetadataRecord(payload.transportMetadata);
563
+
564
+ await this.runtime.ensureConnection({
565
+ entityId,
566
+ roomId,
567
+ roomName: payload.roomKey,
568
+ worldId,
569
+ worldName: payload.source,
570
+ userName: payload.senderUserName,
571
+ name: payload.senderName,
572
+ source: payload.source,
573
+ channelId: payload.roomKey,
574
+ type: payload.channelType,
575
+ messageServerId,
576
+ metadata: transportMetadata,
577
+ });
578
+
579
+ const message = createMessageMemory({
580
+ id: messageId,
581
+ entityId,
582
+ agentId: this.runtime.agentId,
583
+ roomId,
584
+ content: {
585
+ text: payload.text,
586
+ source: payload.source,
587
+ channelType: payload.channelType,
588
+ ...(payload.attachments ? { attachments: payload.attachments } : {}),
589
+ },
590
+ });
591
+
592
+ message.metadata = {
593
+ ...(message.metadata as Record<string, JsonValue>),
594
+ entityName: payload.senderName,
595
+ entityUserName: payload.senderUserName,
596
+ ...(payload.senderMetadata
597
+ ? { gatewaySender: toJsonMetadataRecord(payload.senderMetadata) }
598
+ : {}),
599
+ ...(payload.transportMetadata ? { gatewayMetadata: transportMetadata } : {}),
600
+ } as typeof message.metadata;
601
+
602
+ const callbackTexts: string[] = [];
603
+ const callback: HandlerCallback = async (content: Content) => {
604
+ const responseText = typeof content.text === "string" ? content.text : "";
605
+ if (responseText.trim()) {
606
+ callbackTexts.push(responseText);
607
+ }
608
+
609
+ const responseMemory = createMessageMemory({
610
+ id: createUniqueUuid(
611
+ this.runtime,
612
+ `${payload.source}:${payload.roomKey}:${String(
613
+ rpc.id ?? Date.now()
614
+ )}:response:${callbackTexts.length}`
615
+ ),
616
+ entityId: this.runtime.agentId,
617
+ agentId: this.runtime.agentId,
618
+ roomId,
619
+ content: {
620
+ ...content,
621
+ text: responseText,
622
+ source: payload.source,
623
+ channelType: payload.channelType,
624
+ },
625
+ });
626
+
627
+ await this.runtime.createMemory(responseMemory, "messages");
628
+ return [responseMemory as Memory];
629
+ };
630
+
631
+ try {
632
+ const result = await this.runtime.messageService.handleMessage(
633
+ this.runtime,
634
+ message,
635
+ callback
636
+ );
637
+ const replyText =
638
+ callbackTexts[callbackTexts.length - 1] ??
639
+ (typeof result.responseContent?.text === "string"
640
+ ? result.responseContent.text
641
+ : undefined);
642
+
643
+ return {
644
+ jsonrpc: "2.0",
645
+ id: rpc.id,
646
+ result: {
647
+ didRespond: result.didRespond,
648
+ ...(replyText ? { text: replyText } : {}),
649
+ runtimeAgentId: this.runtime.agentId,
650
+ },
651
+ };
652
+ } catch (error) {
653
+ return {
654
+ jsonrpc: "2.0",
655
+ id: rpc.id,
656
+ error: {
657
+ code: -32603,
658
+ message: error instanceof Error ? error.message : String(error),
659
+ },
660
+ };
661
+ }
662
+ }
663
+ }