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

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 (378) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +220 -0
  3. package/auto-enable.ts +17 -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 +12165 -2277
  8. package/dist/cjs/index.node.js.map +135 -28
  9. package/dist/cloud/auth.d.ts +19 -0
  10. package/dist/cloud/auth.d.ts.map +1 -0
  11. package/dist/cloud/auth.js +330 -0
  12. package/dist/cloud/auth.js.map +12 -0
  13. package/dist/cloud/backup.d.ts +18 -0
  14. package/dist/cloud/backup.d.ts.map +1 -0
  15. package/dist/cloud/backup.js +63 -0
  16. package/dist/cloud/backup.js.map +10 -0
  17. package/dist/cloud/base-url.d.ts +3 -0
  18. package/dist/cloud/base-url.d.ts.map +1 -0
  19. package/dist/cloud/base-url.js +77 -0
  20. package/dist/cloud/base-url.js.map +10 -0
  21. package/dist/cloud/bridge-client.d.ts +126 -0
  22. package/dist/cloud/bridge-client.d.ts.map +1 -0
  23. package/dist/cloud/bridge-client.js +432 -0
  24. package/dist/cloud/bridge-client.js.map +11 -0
  25. package/dist/cloud/cloud-api-key.d.ts +26 -0
  26. package/dist/cloud/cloud-api-key.d.ts.map +1 -0
  27. package/dist/cloud/cloud-api-key.js +60 -0
  28. package/dist/cloud/cloud-api-key.js.map +10 -0
  29. package/dist/cloud/cloud-manager.d.ts +33 -0
  30. package/dist/cloud/cloud-manager.d.ts.map +1 -0
  31. package/dist/cloud/cloud-manager.js +853 -0
  32. package/dist/cloud/cloud-manager.js.map +16 -0
  33. package/dist/cloud/cloud-proxy.d.ts +20 -0
  34. package/dist/cloud/cloud-proxy.d.ts.map +1 -0
  35. package/dist/cloud/cloud-proxy.js +54 -0
  36. package/dist/cloud/cloud-proxy.js.map +10 -0
  37. package/dist/cloud/cloud-wallet.d.ts +94 -0
  38. package/dist/cloud/cloud-wallet.d.ts.map +1 -0
  39. package/dist/cloud/cloud-wallet.js +5195 -0
  40. package/dist/cloud/cloud-wallet.js.map +92 -0
  41. package/dist/cloud/index.d.ts +9 -0
  42. package/dist/cloud/index.d.ts.map +1 -0
  43. package/dist/cloud/index.js +30 -0
  44. package/dist/cloud/index.js.map +9 -0
  45. package/dist/cloud/reconnect.d.ts +26 -0
  46. package/dist/cloud/reconnect.d.ts.map +1 -0
  47. package/dist/cloud/reconnect.js +104 -0
  48. package/dist/cloud/reconnect.js.map +10 -0
  49. package/dist/cloud/validate-url.d.ts +2 -0
  50. package/dist/cloud/validate-url.d.ts.map +1 -0
  51. package/dist/cloud/validate-url.js +174 -0
  52. package/dist/cloud/validate-url.js.map +10 -0
  53. package/dist/cloud-providers/cloud-status.d.ts.map +1 -1
  54. package/dist/cloud-providers/cloud-status.js +78 -0
  55. package/dist/cloud-providers/cloud-status.js.map +10 -0
  56. package/dist/cloud-providers/container-health.d.ts.map +1 -1
  57. package/dist/cloud-providers/container-health.js +74 -0
  58. package/dist/cloud-providers/container-health.js.map +10 -0
  59. package/dist/cloud-providers/credit-balance.d.ts.map +1 -1
  60. package/dist/cloud-providers/credit-balance.js +85 -0
  61. package/dist/cloud-providers/credit-balance.js.map +10 -0
  62. package/dist/cloud-providers/index.d.ts.map +1 -1
  63. package/dist/cloud-providers/index.js +24 -0
  64. package/dist/cloud-providers/index.js.map +9 -0
  65. package/dist/cloud-providers/model-registry.d.ts.map +1 -1
  66. package/dist/cloud-providers/model-registry.js +71 -0
  67. package/dist/cloud-providers/model-registry.js.map +10 -0
  68. package/dist/index.browser.d.ts +4 -3
  69. package/dist/index.browser.d.ts.map +1 -1
  70. package/dist/index.d.ts +18 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +12851 -0
  73. package/dist/index.js.map +145 -0
  74. package/dist/index.node.d.ts +14 -2
  75. package/dist/index.node.d.ts.map +1 -1
  76. package/dist/init.d.ts.map +1 -1
  77. package/dist/init.js +169 -0
  78. package/dist/init.js.map +12 -0
  79. package/dist/lib/cloud-connection.d.ts +78 -0
  80. package/dist/lib/cloud-connection.d.ts.map +1 -0
  81. package/dist/lib/cloud-connection.js +731 -0
  82. package/dist/lib/cloud-connection.js.map +14 -0
  83. package/dist/lib/cloud-secrets.d.ts +23 -0
  84. package/dist/lib/cloud-secrets.d.ts.map +1 -0
  85. package/dist/lib/cloud-secrets.js +64 -0
  86. package/dist/lib/cloud-secrets.js.map +10 -0
  87. package/dist/lib/config-env.d.ts +5 -0
  88. package/dist/lib/config-env.d.ts.map +1 -0
  89. package/dist/lib/config-env.js +191 -0
  90. package/dist/lib/config-env.js.map +11 -0
  91. package/dist/lib/config-like.d.ts +40 -0
  92. package/dist/lib/config-like.d.ts.map +1 -0
  93. package/dist/lib/config-like.js +103 -0
  94. package/dist/lib/config-like.js.map +10 -0
  95. package/dist/lib/credential-type-map.d.ts +53 -0
  96. package/dist/lib/credential-type-map.d.ts.map +1 -0
  97. package/dist/lib/credential-type-map.js +88 -0
  98. package/dist/lib/credential-type-map.js.map +10 -0
  99. package/dist/lib/feature-flags.d.ts +2 -0
  100. package/dist/lib/feature-flags.d.ts.map +1 -0
  101. package/dist/lib/feature-flags.js +40 -0
  102. package/dist/lib/feature-flags.js.map +10 -0
  103. package/dist/lib/http.d.ts +22 -0
  104. package/dist/lib/http.d.ts.map +1 -0
  105. package/dist/lib/http.js +107 -0
  106. package/dist/lib/http.js.map +10 -0
  107. package/dist/lib/server-cloud-tts.d.ts +34 -0
  108. package/dist/lib/server-cloud-tts.d.ts.map +1 -0
  109. package/dist/lib/server-cloud-tts.js +549 -0
  110. package/dist/lib/server-cloud-tts.js.map +13 -0
  111. package/dist/lib/state-paths.d.ts +4 -0
  112. package/dist/lib/state-paths.d.ts.map +1 -0
  113. package/dist/lib/state-paths.js +52 -0
  114. package/dist/lib/state-paths.js.map +10 -0
  115. package/dist/lib/tts-debug.d.ts +4 -0
  116. package/dist/lib/tts-debug.d.ts.map +1 -0
  117. package/dist/lib/tts-debug.js +57 -0
  118. package/dist/lib/tts-debug.js.map +10 -0
  119. package/dist/models/embeddings.d.ts.map +1 -1
  120. package/dist/models/embeddings.js +319 -0
  121. package/dist/models/embeddings.js.map +13 -0
  122. package/dist/models/image.d.ts.map +1 -1
  123. package/dist/models/image.js +374 -0
  124. package/dist/models/image.js.map +14 -0
  125. package/dist/models/index.d.ts +1 -2
  126. package/dist/models/index.d.ts.map +1 -1
  127. package/dist/models/index.js +1386 -0
  128. package/dist/models/index.js.map +20 -0
  129. package/dist/models/research.d.ts.map +1 -1
  130. package/dist/models/research.js +324 -0
  131. package/dist/models/research.js.map +13 -0
  132. package/dist/models/speech.d.ts.map +1 -1
  133. package/dist/models/speech.js +273 -0
  134. package/dist/models/speech.js.map +13 -0
  135. package/dist/models/text.d.ts +5 -2
  136. package/dist/models/text.d.ts.map +1 -1
  137. package/dist/models/text.js +803 -0
  138. package/dist/models/text.js.map +15 -0
  139. package/dist/models/tokenization.d.ts.map +1 -1
  140. package/dist/models/tokenization.js +65 -0
  141. package/dist/models/tokenization.js.map +10 -0
  142. package/dist/models/transcription.d.ts.map +1 -1
  143. package/dist/models/transcription.js +283 -0
  144. package/dist/models/transcription.js.map +13 -0
  145. package/dist/node/index.d.ts +2 -2
  146. package/dist/node/index.node.js +12170 -2266
  147. package/dist/node/index.node.js.map +135 -28
  148. package/dist/onboarding.d.ts +35 -0
  149. package/dist/onboarding.d.ts.map +1 -0
  150. package/dist/onboarding.js +883 -0
  151. package/dist/onboarding.js.map +14 -0
  152. package/dist/plugin.d.ts +20 -0
  153. package/dist/plugin.d.ts.map +1 -0
  154. package/dist/plugin.js +7611 -0
  155. package/dist/plugin.js.map +104 -0
  156. package/dist/providers/openai.d.ts.map +1 -1
  157. package/dist/providers/openai.js +127 -0
  158. package/dist/providers/openai.js.map +11 -0
  159. package/dist/register-routes.d.ts +2 -0
  160. package/dist/register-routes.d.ts.map +1 -0
  161. package/dist/register-routes.js +7612 -0
  162. package/dist/register-routes.js.map +105 -0
  163. package/dist/routes/cloud-billing-routes.d.ts +9 -0
  164. package/dist/routes/cloud-billing-routes.d.ts.map +1 -0
  165. package/dist/routes/cloud-billing-routes.js +807 -0
  166. package/dist/routes/cloud-billing-routes.js.map +14 -0
  167. package/dist/routes/cloud-compat-routes.d.ts +10 -0
  168. package/dist/routes/cloud-compat-routes.d.ts.map +1 -0
  169. package/dist/routes/cloud-compat-routes.js +538 -0
  170. package/dist/routes/cloud-compat-routes.js.map +14 -0
  171. package/dist/routes/cloud-features-routes.d.ts +9 -0
  172. package/dist/routes/cloud-features-routes.d.ts.map +1 -0
  173. package/dist/routes/cloud-features-routes.js +124 -0
  174. package/dist/routes/cloud-features-routes.js.map +11 -0
  175. package/dist/routes/cloud-provisioning.d.ts +14 -0
  176. package/dist/routes/cloud-provisioning.d.ts.map +1 -0
  177. package/dist/routes/cloud-provisioning.js +37 -0
  178. package/dist/routes/cloud-provisioning.js.map +10 -0
  179. package/dist/routes/cloud-relay-routes.d.ts +22 -0
  180. package/dist/routes/cloud-relay-routes.d.ts.map +1 -0
  181. package/dist/routes/cloud-relay-routes.js +60 -0
  182. package/dist/routes/cloud-relay-routes.js.map +10 -0
  183. package/dist/routes/cloud-routes-autonomous.d.ts +83 -0
  184. package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -0
  185. package/dist/routes/cloud-routes-autonomous.js +6134 -0
  186. package/dist/routes/cloud-routes-autonomous.js.map +97 -0
  187. package/dist/routes/cloud-routes.d.ts +35 -0
  188. package/dist/routes/cloud-routes.d.ts.map +1 -0
  189. package/dist/routes/cloud-routes.js +6888 -0
  190. package/dist/routes/cloud-routes.js.map +100 -0
  191. package/dist/routes/cloud-status-routes-autonomous.d.ts +15 -0
  192. package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -0
  193. package/dist/routes/cloud-status-routes-autonomous.js +396 -0
  194. package/dist/routes/cloud-status-routes-autonomous.js.map +13 -0
  195. package/dist/routes/cloud-status-routes.d.ts +4 -0
  196. package/dist/routes/cloud-status-routes.d.ts.map +1 -0
  197. package/dist/routes/cloud-status-routes.js +771 -0
  198. package/dist/routes/cloud-status-routes.js.map +15 -0
  199. package/dist/services/cloud-auth.d.ts +140 -5
  200. package/dist/services/cloud-auth.d.ts.map +1 -1
  201. package/dist/services/cloud-auth.js +363 -0
  202. package/dist/services/cloud-auth.js.map +12 -0
  203. package/dist/services/cloud-backup.d.ts.map +1 -1
  204. package/dist/services/cloud-backup.js +176 -0
  205. package/dist/services/cloud-backup.js.map +11 -0
  206. package/dist/services/cloud-bootstrap.d.ts +38 -0
  207. package/dist/services/cloud-bootstrap.d.ts.map +1 -0
  208. package/dist/services/cloud-bootstrap.js +84 -0
  209. package/dist/services/cloud-bootstrap.js.map +10 -0
  210. package/dist/services/cloud-bridge.d.ts +1 -1
  211. package/dist/services/cloud-bridge.d.ts.map +1 -1
  212. package/dist/services/cloud-bridge.js +308 -0
  213. package/dist/services/cloud-bridge.js.map +11 -0
  214. package/dist/services/cloud-container.d.ts.map +1 -1
  215. package/dist/services/cloud-container.js +241 -0
  216. package/dist/services/cloud-container.js.map +11 -0
  217. package/dist/services/cloud-credential-provider.d.ts +55 -0
  218. package/dist/services/cloud-credential-provider.d.ts.map +1 -0
  219. package/dist/services/cloud-credential-provider.js +190 -0
  220. package/dist/services/cloud-credential-provider.js.map +11 -0
  221. package/dist/services/cloud-managed-gateway-relay.d.ts +38 -0
  222. package/dist/services/cloud-managed-gateway-relay.d.ts.map +1 -0
  223. package/dist/services/cloud-managed-gateway-relay.js +479 -0
  224. package/dist/services/cloud-managed-gateway-relay.js.map +10 -0
  225. package/dist/services/cloud-model-registry.d.ts.map +1 -1
  226. package/dist/services/cloud-model-registry.js +175 -0
  227. package/dist/services/cloud-model-registry.js.map +10 -0
  228. package/dist/services/index.d.ts +3 -1
  229. package/dist/services/index.d.ts.map +1 -1
  230. package/dist/services/index.js +29 -0
  231. package/dist/services/index.js.map +9 -0
  232. package/dist/types/cloud.d.ts +41 -19
  233. package/dist/types/cloud.d.ts.map +1 -1
  234. package/dist/types/cloud.js +52 -0
  235. package/dist/types/cloud.js.map +10 -0
  236. package/dist/types/index.d.ts +1 -1
  237. package/dist/types/index.d.ts.map +1 -1
  238. package/dist/types/index.js +24 -0
  239. package/dist/types/index.js.map +9 -0
  240. package/dist/utils/cloud-api.d.ts +2 -27
  241. package/dist/utils/cloud-api.d.ts.map +1 -1
  242. package/dist/utils/cloud-api.js +33 -0
  243. package/dist/utils/cloud-api.js.map +10 -0
  244. package/dist/utils/cloud-sdk/client.d.ts +133 -0
  245. package/dist/utils/cloud-sdk/client.d.ts.map +1 -0
  246. package/dist/utils/cloud-sdk/client.js +3561 -0
  247. package/dist/utils/cloud-sdk/client.js.map +13 -0
  248. package/dist/utils/cloud-sdk/http.d.ts +37 -0
  249. package/dist/utils/cloud-sdk/http.d.ts.map +1 -0
  250. package/dist/utils/cloud-sdk/http.js +237 -0
  251. package/dist/utils/cloud-sdk/http.js.map +11 -0
  252. package/dist/utils/cloud-sdk/index.d.ts +6 -0
  253. package/dist/utils/cloud-sdk/index.d.ts.map +1 -0
  254. package/dist/utils/cloud-sdk/index.js +29 -0
  255. package/dist/utils/cloud-sdk/index.js.map +9 -0
  256. package/dist/utils/cloud-sdk/public-routes.d.ts +5377 -0
  257. package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -0
  258. package/dist/utils/cloud-sdk/public-routes.js +2950 -0
  259. package/dist/utils/cloud-sdk/public-routes.js.map +10 -0
  260. package/dist/utils/cloud-sdk/types.cloud-api.d.ts +101 -0
  261. package/dist/utils/cloud-sdk/types.cloud-api.d.ts.map +1 -0
  262. package/dist/utils/cloud-sdk/types.cloud-api.js +2 -0
  263. package/dist/utils/cloud-sdk/types.cloud-api.js.map +9 -0
  264. package/dist/utils/cloud-sdk/types.d.ts +655 -0
  265. package/dist/utils/cloud-sdk/types.d.ts.map +1 -0
  266. package/dist/utils/cloud-sdk/types.js +29 -0
  267. package/dist/utils/cloud-sdk/types.js.map +10 -0
  268. package/dist/utils/config.d.ts +7 -3
  269. package/dist/utils/config.d.ts.map +1 -1
  270. package/dist/utils/config.js +137 -0
  271. package/dist/utils/config.js.map +10 -0
  272. package/dist/utils/events.d.ts.map +1 -1
  273. package/dist/utils/events.js +43 -0
  274. package/dist/utils/events.js.map +10 -0
  275. package/dist/utils/helpers.d.ts.map +1 -1
  276. package/dist/utils/helpers.js +103 -0
  277. package/dist/utils/helpers.js.map +10 -0
  278. package/dist/utils/responses-output.d.ts +13 -0
  279. package/dist/utils/responses-output.d.ts.map +1 -0
  280. package/dist/utils/responses-output.js +102 -0
  281. package/dist/utils/responses-output.js.map +10 -0
  282. package/dist/utils/sdk-client.d.ts +5 -0
  283. package/dist/utils/sdk-client.d.ts.map +1 -0
  284. package/dist/utils/sdk-client.js +144 -0
  285. package/dist/utils/sdk-client.js.map +11 -0
  286. package/package.json +108 -19
  287. package/src/cloud/auth.ts +175 -0
  288. package/src/cloud/backup.ts +46 -0
  289. package/src/cloud/base-url.ts +62 -0
  290. package/src/cloud/bridge-client.ts +602 -0
  291. package/src/cloud/cloud-api-key.ts +80 -0
  292. package/src/cloud/cloud-manager.ts +163 -0
  293. package/src/cloud/cloud-proxy.ts +52 -0
  294. package/src/cloud/cloud-wallet.ts +341 -0
  295. package/src/cloud/index.ts +28 -0
  296. package/src/cloud/reconnect.ts +111 -0
  297. package/src/cloud/validate-url.ts +181 -0
  298. package/src/cloud-providers/cloud-status.ts +75 -0
  299. package/src/cloud-providers/container-health.ts +68 -0
  300. package/src/cloud-providers/credit-balance.ts +70 -0
  301. package/src/cloud-providers/index.ts +3 -0
  302. package/src/cloud-providers/model-registry.ts +74 -0
  303. package/src/index.browser.ts +10 -0
  304. package/src/index.node.ts +39 -0
  305. package/src/index.ts +347 -0
  306. package/src/init.ts +39 -0
  307. package/src/lib/cloud-connection.ts +663 -0
  308. package/src/lib/cloud-secrets.ts +58 -0
  309. package/src/lib/config-env.ts +168 -0
  310. package/src/lib/config-like.ts +149 -0
  311. package/src/lib/credential-type-map.ts +130 -0
  312. package/src/lib/feature-flags.ts +26 -0
  313. package/src/lib/http.ts +139 -0
  314. package/src/lib/server-cloud-tts.ts +609 -0
  315. package/src/lib/state-paths.ts +28 -0
  316. package/src/lib/tts-debug.ts +34 -0
  317. package/src/models/embeddings.ts +234 -0
  318. package/src/models/image.ts +219 -0
  319. package/src/models/index.ts +16 -0
  320. package/src/models/research.ts +265 -0
  321. package/src/models/speech.ts +78 -0
  322. package/src/models/text.ts +899 -0
  323. package/src/models/tokenization.ts +67 -0
  324. package/src/models/transcription.ts +97 -0
  325. package/src/onboarding.ts +396 -0
  326. package/src/plugin.ts +243 -0
  327. package/src/providers/openai.ts +16 -0
  328. package/src/register-routes.ts +6 -0
  329. package/src/routes/cloud-billing-routes.ts +754 -0
  330. package/src/routes/cloud-compat-routes.ts +314 -0
  331. package/src/routes/cloud-features-routes.ts +57 -0
  332. package/src/routes/cloud-provisioning.ts +37 -0
  333. package/src/routes/cloud-relay-routes.ts +89 -0
  334. package/src/routes/cloud-routes-autonomous.ts +996 -0
  335. package/src/routes/cloud-routes.ts +576 -0
  336. package/src/routes/cloud-status-routes-autonomous.ts +234 -0
  337. package/src/routes/cloud-status-routes.ts +73 -0
  338. package/src/services/cloud-auth.ts +567 -0
  339. package/src/services/cloud-backup.ts +208 -0
  340. package/src/services/cloud-bootstrap.ts +108 -0
  341. package/src/services/cloud-bridge.ts +386 -0
  342. package/src/services/cloud-container.ts +297 -0
  343. package/src/services/cloud-credential-provider.ts +210 -0
  344. package/src/services/cloud-managed-gateway-relay.ts +663 -0
  345. package/src/services/cloud-model-registry.ts +202 -0
  346. package/src/services/index.ts +17 -0
  347. package/{types → src/types}/cloud.ts +52 -29
  348. package/{types → src/types}/index.ts +6 -0
  349. package/src/utils/cloud-api.ts +10 -0
  350. package/src/utils/cloud-sdk/client.ts +735 -0
  351. package/src/utils/cloud-sdk/http.ts +291 -0
  352. package/src/utils/cloud-sdk/index.ts +23 -0
  353. package/src/utils/cloud-sdk/public-routes.ts +5070 -0
  354. package/src/utils/cloud-sdk/types.cloud-api.ts +120 -0
  355. package/src/utils/cloud-sdk/types.ts +762 -0
  356. package/src/utils/config.ts +174 -0
  357. package/src/utils/events.ts +37 -0
  358. package/src/utils/helpers.ts +107 -0
  359. package/src/utils/responses-output.ts +115 -0
  360. package/src/utils/sdk-client.ts +37 -0
  361. package/dist/actions/check-credits.d.ts +0 -6
  362. package/dist/actions/check-credits.d.ts.map +0 -1
  363. package/dist/actions/freeze-agent.d.ts +0 -9
  364. package/dist/actions/freeze-agent.d.ts.map +0 -1
  365. package/dist/actions/index.d.ts +0 -5
  366. package/dist/actions/index.d.ts.map +0 -1
  367. package/dist/actions/provision-agent.d.ts +0 -8
  368. package/dist/actions/provision-agent.d.ts.map +0 -1
  369. package/dist/actions/resume-agent.d.ts +0 -9
  370. package/dist/actions/resume-agent.d.ts.map +0 -1
  371. package/dist/build.d.ts +0 -3
  372. package/dist/build.d.ts.map +0 -1
  373. package/dist/generated/specs/specs.d.ts +0 -55
  374. package/dist/generated/specs/specs.d.ts.map +0 -1
  375. package/dist/models/object.d.ts +0 -4
  376. package/dist/models/object.d.ts.map +0 -1
  377. package/dist/utils/forwarded-settings.d.ts +0 -8
  378. package/dist/utils/forwarded-settings.d.ts.map +0 -1
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cloud/base-url.ts", "../src/cloud/validate-url.ts", "../src/cloud/auth.ts", "../src/cloud/bridge-client.ts", "../src/onboarding.ts"],
4
+ "sourcesContent": [
5
+ "const DEFAULT_CLOUD_SITE_URL = \"https://www.elizacloud.ai\";\n\nconst LEGACY_CLOUD_HOST_ALIASES = new Set([\n \"elizacloud.ai\",\n \"www.elizacloud.ai\",\n]);\n\nfunction isLoopbackHost(hostname: string): boolean {\n const normalized = hostname.toLowerCase();\n return (\n normalized === \"localhost\" ||\n normalized === \"::1\" ||\n normalized === \"0:0:0:0:0:0:0:1\" ||\n normalized.startsWith(\"127.\")\n );\n}\n\nfunction trimApiPath(pathname: string): string {\n const normalized = pathname.trim().replace(/\\/+$/, \"\");\n if (!normalized) return \"\";\n if (normalized === \"/api/v1\") return \"\";\n if (normalized.endsWith(\"/api/v1\")) {\n return normalized.slice(0, -\"/api/v1\".length);\n }\n return normalized;\n}\n\nexport function normalizeCloudSiteUrl(rawUrl?: string): string {\n // Allow cloud-provisioned containers to override the base URL via env var\n const envOverride = process.env.ELIZAOS_CLOUD_BASE_URL?.trim();\n const candidate = envOverride || rawUrl?.trim() || DEFAULT_CLOUD_SITE_URL;\n\n try {\n const parsed = new URL(candidate);\n const pathname = trimApiPath(parsed.pathname);\n const host = parsed.hostname.toLowerCase();\n const preserveLocalOrigin = isLoopbackHost(host);\n\n parsed.hash = \"\";\n parsed.search = \"\";\n if (!preserveLocalOrigin) {\n parsed.protocol = \"https:\";\n parsed.port = \"\";\n }\n parsed.pathname = pathname;\n\n if (LEGACY_CLOUD_HOST_ALIASES.has(host)) {\n parsed.hostname = \"www.elizacloud.ai\";\n parsed.pathname = \"\";\n }\n\n return parsed.toString().replace(/\\/{1,1024}$/, \"\");\n } catch {\n const safeCandidate =\n candidate.length > 8192 ? candidate.slice(0, 8192) : candidate;\n return safeCandidate.replace(/\\/{1,1024}$/, \"\");\n }\n}\n\nexport function resolveCloudApiBaseUrl(rawUrl?: string): string {\n return `${normalizeCloudSiteUrl(rawUrl)}/api/v1`;\n}\n",
6
+ "import dns from \"node:dns\";\nimport net from \"node:net\";\nimport { promisify } from \"node:util\";\n\nconst dnsLookupAll = promisify(dns.lookup);\n\nconst BLOCKED_IPV4_CIDRS: Array<{ base: number; mask: number }> = [\n cidrV4(\"0.0.0.0\", 8),\n cidrV4(\"10.0.0.0\", 8),\n cidrV4(\"172.16.0.0\", 12),\n cidrV4(\"192.168.0.0\", 16),\n cidrV4(\"100.64.0.0\", 10),\n cidrV4(\"127.0.0.0\", 8),\n cidrV4(\"169.254.0.0\", 16),\n cidrV4(\"192.0.0.0\", 24),\n cidrV4(\"198.18.0.0\", 15),\n cidrV4(\"192.0.2.0\", 24),\n cidrV4(\"198.51.100.0\", 24),\n cidrV4(\"203.0.113.0\", 24),\n cidrV4(\"224.0.0.0\", 4),\n cidrV4(\"240.0.0.0\", 4),\n];\n\nfunction normalizeHostLike(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction decodeIpv6MappedHex(mapped: string): string | null {\n const parts = mapped.split(\":\");\n if (parts.length < 1 || parts.length > 2) return null;\n\n const parsed = parts.map((part) => {\n if (!/^[0-9a-f]{1,4}$/i.test(part)) return Number.NaN;\n return Number.parseInt(part, 16);\n });\n if (parsed.some((value) => !Number.isFinite(value))) return null;\n\n const [hi, lo] = parsed.length === 1 ? [0, parsed[0]] : parsed;\n const octets = [hi >> 8, hi & 0xff, lo >> 8, lo & 0xff];\n return octets.join(\".\");\n}\n\nfunction canonicalizeIpv6(ip: string): string | null {\n try {\n return new URL(`http://[${ip}]/`).hostname.replace(/^\\[|\\]$/g, \"\");\n } catch {\n return null;\n }\n}\n\nfunction normalizeIpForPolicy(ip: string): string {\n const base = normalizeHostLike(ip).split(\"%\")[0];\n if (!base) return base;\n\n let normalized = base;\n if (net.isIP(normalized) === 6) {\n normalized = canonicalizeIpv6(normalized) ?? normalized;\n }\n\n let mapped: string | null = null;\n if (normalized.startsWith(\"::ffff:\")) {\n mapped = normalized.slice(\"::ffff:\".length);\n } else if (normalized.startsWith(\"0:0:0:0:0:ffff:\")) {\n mapped = normalized.slice(\"0:0:0:0:0:ffff:\".length);\n }\n if (!mapped) return normalized;\n\n if (net.isIP(mapped) === 4) return mapped;\n return decodeIpv6MappedHex(mapped) ?? normalized;\n}\n\nfunction cidrV4(base: string, prefix: number): { base: number; mask: number } {\n const parsed = parseIpv4ToInt(base);\n if (parsed === null) {\n throw new Error(`Invalid CIDR base IPv4 address: ${base}`);\n }\n const shift = 32 - prefix;\n const mask = shift === 32 ? 0 : (0xffffffff << shift) >>> 0;\n return { base: parsed & mask, mask };\n}\n\nfunction parseIpv4ToInt(ip: string): number | null {\n const parts = ip.split(\".\");\n if (parts.length !== 4) return null;\n\n let value = 0;\n for (const part of parts) {\n if (!/^\\d{1,3}$/.test(part)) return null;\n const octet = Number.parseInt(part, 10);\n if (!Number.isInteger(octet) || octet < 0 || octet > 255) return null;\n value = (value << 8) | octet;\n }\n\n return value >>> 0;\n}\n\nfunction isBlockedIpv4(ip: string): boolean {\n const asInt = parseIpv4ToInt(ip);\n if (asInt === null) return true;\n return BLOCKED_IPV4_CIDRS.some((cidr) => (asInt & cidr.mask) === cidr.base);\n}\n\nfunction isBlockedIpv6(ip: string): boolean {\n const normalized = ip.toLowerCase();\n return (\n normalized === \"::\" ||\n normalized === \"::1\" ||\n /^fe[89ab][0-9a-f]:/.test(normalized) ||\n /^f[cd][0-9a-f]{2}:/i.test(normalized) ||\n normalized.startsWith(\"ff\")\n );\n}\n\nfunction isBlockedIp(ip: string): boolean {\n const normalized = normalizeIpForPolicy(ip);\n const family = net.isIP(normalized);\n if (family === 4) return isBlockedIpv4(normalized);\n if (family === 6) return isBlockedIpv6(normalized);\n return false;\n}\n\nexport async function validateCloudBaseUrl(\n rawUrl: string,\n): Promise<string | null> {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n return `Invalid cloud base URL: \"${rawUrl}\"`;\n }\n\n if (parsed.protocol !== \"https:\") {\n return `Cloud base URL must use HTTPS, got \"${parsed.protocol}\" in \"${rawUrl}\"`;\n }\n\n const hostname = normalizeHostLike(parsed.hostname);\n if (!hostname) {\n return `Invalid cloud base URL: \"${rawUrl}\"`;\n }\n\n if (\n hostname === \"localhost\" ||\n hostname.endsWith(\".localhost\") ||\n hostname.endsWith(\".local\")\n ) {\n return `Cloud base URL \"${rawUrl}\" points to a blocked local hostname.`;\n }\n\n // Dev-mode bypass: skip IP-range blocking but keep URL format checks above.\n if (process.env.NODE_ENV === \"development\" || process.env.ELIZA_DEV) {\n return null;\n }\n\n if (isBlockedIp(hostname)) {\n return `Cloud base URL \"${rawUrl}\" points to a blocked address.`;\n }\n\n try {\n const results = await dnsLookupAll(hostname, { all: true });\n const addresses = Array.isArray(results) ? results : [results];\n for (const entry of addresses) {\n const ip =\n typeof entry === \"string\"\n ? entry\n : (entry as { address: string }).address;\n if (isBlockedIp(ip)) {\n return (\n `Cloud base URL \"${rawUrl}\" resolves to ${ip}, ` +\n \"which is a blocked internal/metadata address.\"\n );\n }\n }\n } catch {\n return `Cloud base URL \"${rawUrl}\" could not be resolved via DNS.`;\n }\n\n return null;\n}\n",
7
+ "/**\n * Eliza Cloud login flow — reuses the CLI auth session pattern:\n * create session, open browser, poll until authenticated, return API key.\n */\n\nimport crypto from \"node:crypto\";\nimport { logger } from \"@elizaos/core\";\nimport { normalizeCloudSiteUrl } from \"./base-url.js\";\nimport { validateCloudBaseUrl } from \"./validate-url.js\";\n\nexport interface CloudLoginResult {\n apiKey: string;\n keyPrefix: string;\n expiresAt: string | null;\n}\n\nexport interface CloudLoginOptions {\n baseUrl?: string;\n timeoutMs?: number;\n requestTimeoutMs?: number;\n pollIntervalMs?: number;\n onBrowserUrl?: (url: string) => void;\n onPollStatus?: (status: string) => void;\n}\n\nconst DEFAULT_CLOUD_REQUEST_TIMEOUT_MS = 10_000;\n\nfunction isRedirectResponse(response: Response): boolean {\n return response.status >= 300 && response.status < 400;\n}\n\nfunction isTimeoutError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n if (err.name === \"TimeoutError\" || err.name === \"AbortError\") return true;\n const msg = err.message.toLowerCase();\n return msg.includes(\"timed out\") || msg.includes(\"timeout\");\n}\n\nasync function fetchWithTimeout(\n input: string,\n init: RequestInit,\n timeoutMs: number,\n): Promise<Response> {\n return fetch(input, {\n ...init,\n redirect: \"manual\",\n signal: AbortSignal.timeout(timeoutMs),\n });\n}\n\nexport async function cloudLogin(\n options: CloudLoginOptions = {},\n): Promise<CloudLoginResult> {\n const baseUrl = normalizeCloudSiteUrl(options.baseUrl);\n const urlError = await validateCloudBaseUrl(baseUrl);\n if (urlError) {\n throw new Error(urlError);\n }\n const timeoutMs = options.timeoutMs ?? 300_000;\n const requestTimeoutMs =\n options.requestTimeoutMs ?? DEFAULT_CLOUD_REQUEST_TIMEOUT_MS;\n const pollIntervalMs = options.pollIntervalMs ?? 2_000;\n const sessionId = crypto.randomUUID();\n\n logger.info(\"[cloud-auth] Creating auth session...\");\n\n let createResponse: Response;\n try {\n createResponse = await fetchWithTimeout(\n `${baseUrl}/api/auth/cli-session`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ sessionId }),\n },\n requestTimeoutMs,\n );\n } catch (err) {\n if (isTimeoutError(err)) {\n throw new Error(\n `Cloud login request timed out while creating session (>${requestTimeoutMs}ms).`,\n );\n }\n throw new Error(`Failed to create auth session: ${String(err)}`);\n }\n\n if (!createResponse.ok) {\n if (isRedirectResponse(createResponse)) {\n throw new Error(\n \"Cloud login request was redirected; redirects are not allowed.\",\n );\n }\n const errorText = await createResponse.text();\n throw new Error(\n `Failed to create auth session (HTTP ${createResponse.status}): ${errorText}`,\n );\n }\n\n const browserUrl = `${baseUrl}/auth/cli-login?session=${encodeURIComponent(sessionId)}`;\n logger.info(`[cloud-auth] Browser URL: ${browserUrl}`);\n options.onBrowserUrl?.(browserUrl);\n\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n const remainingBeforeSleep = deadline - Date.now();\n if (remainingBeforeSleep <= 0) break;\n await new Promise((resolve) =>\n setTimeout(resolve, Math.min(pollIntervalMs, remainingBeforeSleep)),\n );\n\n const remaining = deadline - Date.now();\n if (remaining <= 0) break;\n\n let pollResponse: Response;\n try {\n pollResponse = await fetchWithTimeout(\n `${baseUrl}/api/auth/cli-session/${encodeURIComponent(sessionId)}`,\n {},\n Math.min(requestTimeoutMs, remaining),\n );\n } catch (err) {\n if (isTimeoutError(err)) {\n if (remaining <= requestTimeoutMs) {\n break;\n }\n throw new Error(\n `Cloud login polling request timed out (>${Math.min(requestTimeoutMs, remaining)}ms).`,\n );\n }\n throw new Error(`Cloud login polling failed: ${String(err)}`);\n }\n\n if (!pollResponse.ok) {\n if (isRedirectResponse(pollResponse)) {\n throw new Error(\n \"Cloud login polling request was redirected; redirects are not allowed.\",\n );\n }\n if (pollResponse.status === 404) {\n throw new Error(\"Auth session expired or not found. Please try again.\");\n }\n options.onPollStatus?.(\"error\");\n continue;\n }\n\n const data = (await pollResponse.json()) as {\n status: string;\n apiKey?: string;\n keyPrefix?: string;\n expiresAt?: string;\n };\n\n options.onPollStatus?.(data.status);\n\n if (data.status === \"authenticated\" && data.apiKey) {\n logger.info(\"[cloud-auth] Authentication complete\");\n return {\n apiKey: data.apiKey,\n keyPrefix: data.keyPrefix ?? \"\",\n expiresAt: data.expiresAt ?? null,\n };\n }\n\n if (data.status === \"authenticated\" && !data.apiKey) {\n throw new Error(\n \"Auth session was completed but the API key was already retrieved. Please try logging in again.\",\n );\n }\n }\n\n throw new Error(\n `Cloud login timed out. The browser login was not completed within ${Math.round(timeoutMs / 1000)} seconds.`,\n );\n}\n",
8
+ "/**\n * HTTP client for the Eliza Cloud Eliza Sandbox API.\n */\nimport { normalizeCloudSiteUrl } from \"./base-url.js\";\n\nexport type CloudChainType = \"evm\" | \"solana\";\nexport type CloudWalletProvider = \"privy\" | \"steward\";\n\nexport interface CloudWalletDescriptor {\n agentWalletId: string;\n walletAddress: string;\n walletProvider: CloudWalletProvider;\n chainType: CloudChainType;\n balance?: string | number;\n}\n\ninterface CloudWalletAddresses {\n evm?: string | null;\n solana?: string | null;\n}\n\nexport interface SignedRpcEnvelope {\n clientAddress: string;\n payload: {\n method: string;\n params: unknown[];\n };\n nonce: string;\n timestamp: number;\n signature: string;\n correlationId?: string;\n}\n\nexport interface RpcResult {\n [key: string]: unknown;\n}\n\nexport class CloudBridgeError extends Error {\n constructor(\n message: string,\n public readonly status?: number,\n public readonly body?: string,\n ) {\n super(message);\n this.name = \"CloudBridgeError\";\n }\n}\n\nexport class SignatureInvalidError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 401, body);\n this.name = \"SignatureInvalidError\";\n }\n}\n\nexport class NonceReplayError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 409, body);\n this.name = \"NonceReplayError\";\n }\n}\n\nexport class SessionExpiredError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 410, body);\n this.name = \"SessionExpiredError\";\n }\n}\n\nexport class CloudUnavailableError extends CloudBridgeError {\n constructor(message: string, status: number, body?: string) {\n super(message, status, body);\n this.name = \"CloudUnavailableError\";\n }\n}\n\nexport interface CloudAgent {\n id: string;\n agentName: string;\n status: string;\n databaseStatus: string;\n bridgeUrl?: string;\n lastBackupAt?: string;\n lastHeartbeatAt?: string;\n errorMessage?: string;\n errorCount?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CloudAgentCreateParams {\n agentName: string;\n agentConfig?: Record<string, unknown>;\n environmentVars?: Record<string, string>;\n}\n\nexport interface ProvisionInfo {\n id: string;\n agentName: string;\n status: string;\n bridgeUrl?: string;\n healthUrl?: string;\n}\n\nexport interface BackupInfo {\n id: string;\n snapshotType: string;\n sizeBytes: number | null;\n createdAt: string;\n}\n\nexport type ChatChannelType =\n | \"DM\"\n | \"GROUP\"\n | \"VOICE_DM\"\n | \"VOICE_GROUP\"\n | \"API\";\n\ninterface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: string;\n}\n\nfunction formatApiErrorBody(text: string): string | null {\n if (!text) return null;\n try {\n const parsed = JSON.parse(text) as {\n error?: unknown;\n details?: Array<{ message?: unknown }>;\n };\n const baseError =\n typeof parsed.error === \"string\" && parsed.error.trim().length > 0\n ? parsed.error.trim()\n : null;\n const details = Array.isArray(parsed.details)\n ? parsed.details\n .map((detail) =>\n typeof detail?.message === \"string\" ? detail.message.trim() : \"\",\n )\n .filter((message) => message.length > 0)\n : [];\n if (baseError && details.length > 0) {\n return `${baseError}: ${details.join(\"; \")}`;\n }\n if (baseError) return baseError;\n } catch {\n /* plain text */\n }\n\n return text.slice(0, 200) || null;\n}\n\nfunction isRedirectResponse(response: Response): boolean {\n return response.status >= 300 && response.status < 400;\n}\n\nfunction normalizeChainAddress(\n addresses: CloudWalletAddresses | null | undefined,\n chain: CloudChainType,\n): string | null {\n const value = addresses?.[chain];\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction looksLikeChainAddress(\n address: string,\n chain: CloudChainType,\n): boolean {\n if (chain === \"evm\") {\n return /^0x[a-fA-F0-9]{40}$/.test(address);\n }\n\n return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);\n}\n\nfunction resolveRequestedWalletAddress(\n data: {\n walletAddress: string | null;\n walletAddresses?: CloudWalletAddresses | null;\n },\n chain: CloudChainType,\n): string | null {\n const explicit = normalizeChainAddress(data.walletAddresses, chain);\n if (explicit) return explicit;\n if (typeof data.walletAddress !== \"string\") return null;\n\n const trimmed = data.walletAddress.trim();\n if (!trimmed) return null;\n return looksLikeChainAddress(trimmed, chain) ? trimmed : null;\n}\n\nexport class ElizaCloudClient {\n private baseUrl: string;\n private apiKey: string;\n\n constructor(baseUrl: string, apiKey: string) {\n this.baseUrl = normalizeCloudSiteUrl(baseUrl);\n this.apiKey = apiKey;\n }\n\n async listAgents(): Promise<CloudAgent[]> {\n const res = await this.request<CloudAgent[]>(\"GET\", \"/api/v1/eliza/agents\");\n return res.data ?? [];\n }\n\n async createAgent(params: CloudAgentCreateParams): Promise<CloudAgent> {\n const res = await this.request<CloudAgent>(\n \"POST\",\n \"/api/v1/eliza/agents\",\n params,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Failed to create cloud agent\");\n return res.data;\n }\n\n async getAgent(agentId: string): Promise<CloudAgent> {\n const res = await this.request<CloudAgent>(\n \"GET\",\n `/api/v1/eliza/agents/${agentId}`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Agent not found\");\n return res.data;\n }\n\n async deleteAgent(agentId: string): Promise<void> {\n const res = await this.request<void>(\n \"DELETE\",\n `/api/v1/eliza/agents/${agentId}`,\n );\n if (!res.success) throw new Error(res.error ?? \"Failed to delete agent\");\n }\n\n async provision(agentId: string): Promise<ProvisionInfo> {\n const res = await this.request<ProvisionInfo>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/provision`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Failed to provision sandbox\");\n return res.data;\n }\n\n async sendMessage(\n agentId: string,\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): Promise<string> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/bridge`;\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-Api-Key\": this.apiKey },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: crypto.randomUUID(),\n method: \"message.send\",\n params: { text, roomId, channelType },\n }),\n redirect: \"manual\",\n signal: AbortSignal.timeout(60_000),\n });\n\n if (isRedirectResponse(response)) {\n throw new Error(\n \"Bridge request was redirected; redirects are not allowed\",\n );\n }\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"\");\n throw new Error(\n `Bridge request failed: HTTP ${response.status} ${errorText.slice(0, 200)}`,\n );\n }\n\n const rpc = (await response.json()) as {\n result?: { text?: string };\n error?: { code: number; message: string };\n };\n\n if (rpc.error) throw new Error(rpc.error.message);\n return rpc.result?.text ?? \"(no response)\";\n }\n\n async *sendMessageStream(\n agentId: string,\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): AsyncGenerator<{ type: string; data: Record<string, unknown> }> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/stream`;\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-Api-Key\": this.apiKey },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: crypto.randomUUID(),\n method: \"message.send\",\n params: { text, roomId, channelType },\n }),\n redirect: \"manual\",\n });\n\n if (isRedirectResponse(response)) {\n throw new Error(\n \"Stream request was redirected; redirects are not allowed\",\n );\n }\n\n if (!response.ok || !response.body) {\n throw new Error(`Stream request failed: HTTP ${response.status}`);\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() ?? \"\";\n\n for (const part of parts) {\n if (!part.trim()) continue;\n let eventType = \"message\";\n let eventData = \"\";\n\n for (const line of part.split(\"\\n\")) {\n if (line.startsWith(\"event: \")) eventType = line.slice(7).trim();\n else if (line.startsWith(\"data: \"))\n eventData += (eventData ? \"\\n\" : \"\") + line.slice(6);\n }\n\n if (eventData) {\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(eventData) as Record<string, unknown>;\n } catch {\n continue;\n }\n yield { type: eventType, data };\n }\n }\n }\n }\n\n async snapshot(agentId: string): Promise<BackupInfo> {\n const res = await this.request<BackupInfo>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/snapshot`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Snapshot failed\");\n return res.data;\n }\n\n async listBackups(agentId: string): Promise<BackupInfo[]> {\n const res = await this.request<BackupInfo[]>(\n \"GET\",\n `/api/v1/eliza/agents/${agentId}/backups`,\n );\n return res.data ?? [];\n }\n\n async restore(agentId: string, backupId?: string): Promise<void> {\n const res = await this.request<void>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/restore`,\n backupId ? { backupId } : {},\n );\n if (!res.success) throw new Error(res.error ?? \"Restore failed\");\n }\n\n async heartbeat(agentId: string): Promise<boolean> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/bridge`;\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Api-Key\": this.apiKey,\n },\n body: JSON.stringify({ jsonrpc: \"2.0\", method: \"heartbeat\" }),\n redirect: \"manual\",\n signal: AbortSignal.timeout(10_000),\n });\n if (isRedirectResponse(response)) return false;\n return response.ok;\n } catch {\n return false;\n }\n }\n\n /**\n * Fetch the cloud-side wallet descriptor for an agent.\n * Uses the standard API-key auth (X-Api-Key).\n */\n async getAgentWallet(\n agentId: string,\n chain: CloudChainType,\n ): Promise<CloudWalletDescriptor> {\n const res = await this.request<{\n agentId?: string;\n walletAddress: string | null;\n walletAddresses?: CloudWalletAddresses | null;\n walletProvider: CloudWalletProvider | null;\n walletStatus?: string;\n balance?: string | number | null;\n chain?: string;\n }>(\n \"GET\",\n `/api/v1/eliza/agents/${encodeURIComponent(agentId)}/wallet?chain=${encodeURIComponent(chain)}`,\n );\n\n if (!res.success || !res.data) {\n throw new CloudBridgeError(res.error ?? \"Failed to fetch agent wallet\");\n }\n\n const data = res.data;\n const walletAddress = resolveRequestedWalletAddress(data, chain);\n if (!walletAddress || !data.walletProvider) {\n throw new CloudBridgeError(\n `Agent has no cloud ${chain} wallet provisioned`,\n );\n }\n\n return {\n agentWalletId: data.agentId ?? agentId,\n walletAddress,\n walletProvider: data.walletProvider,\n chainType: chain,\n balance: data.balance ?? undefined,\n };\n }\n\n /**\n * Provision a cloud-custodied server wallet tied to a local client address.\n * Idempotent server-side: returns the existing wallet if one already exists\n * for the (user, clientAddress, chain) tuple.\n */\n async provisionWallet(input: {\n chainType: CloudChainType;\n clientAddress: string;\n }): Promise<{\n walletId: string;\n address: string;\n chainType: CloudChainType;\n provider: CloudWalletProvider;\n }> {\n const res = await this.request<{\n id: string;\n address: string;\n chainType: CloudChainType;\n clientAddress: string;\n provider?: CloudWalletProvider;\n }>(\"POST\", \"/api/v1/user/wallets/provision\", input);\n\n if (!res.success || !res.data) {\n throw new CloudBridgeError(res.error ?? \"Failed to provision wallet\");\n }\n\n return {\n walletId: res.data.id,\n address: res.data.address,\n chainType: res.data.chainType,\n provider: res.data.provider ?? \"privy\",\n };\n }\n\n /**\n * Execute a signed RPC envelope through the cloud custodial signer.\n *\n * Auth: body-embedded wallet signature — we MUST NOT send X-Api-Key/Bearer\n * headers here. The cloud verifies the signature against the\n * agentServerWallets.client_address registered at provision time.\n *\n * Error mapping:\n * 401 → SignatureInvalidError\n * 409 → NonceReplayError\n * 410 → SessionExpiredError\n * 5xx → CloudUnavailableError\n */\n async executeRpc(envelope: SignedRpcEnvelope): Promise<RpcResult> {\n const { correlationId, ...body } = envelope;\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (correlationId) {\n headers[\"X-Correlation-Id\"] = correlationId;\n }\n\n let response: Response;\n try {\n response = await fetch(`${this.baseUrl}/api/v1/user/wallets/rpc`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n redirect: \"manual\",\n signal: AbortSignal.timeout(60_000),\n });\n } catch (err) {\n throw new CloudUnavailableError(\n `Cloud RPC network error: ${(err as Error).message}`,\n 0,\n );\n }\n\n if (isRedirectResponse(response)) {\n throw new CloudBridgeError(\n \"Cloud RPC request was redirected; redirects are not allowed\",\n response.status,\n );\n }\n\n const text = await response.text().catch(() => \"\");\n\n if (response.ok) {\n try {\n const parsed = JSON.parse(text) as ApiResponse<RpcResult>;\n if (!parsed.success || parsed.data === undefined) {\n throw new CloudBridgeError(\n parsed.error ?? \"Cloud RPC returned no data\",\n response.status,\n text,\n );\n }\n return parsed.data;\n } catch (err) {\n if (err instanceof CloudBridgeError) throw err;\n throw new CloudBridgeError(\n `Cloud RPC returned malformed JSON: ${(err as Error).message}`,\n response.status,\n text,\n );\n }\n }\n\n let errMessage = `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(text) as { error?: string };\n if (parsed.error) errMessage = parsed.error;\n } catch {\n if (text) errMessage = text.slice(0, 200);\n }\n\n if (response.status === 401) {\n throw new SignatureInvalidError(errMessage, text);\n }\n if (response.status === 409) {\n throw new NonceReplayError(errMessage, text);\n }\n if (response.status === 410) {\n throw new SessionExpiredError(errMessage, text);\n }\n if (response.status >= 500) {\n throw new CloudUnavailableError(errMessage, response.status, text);\n }\n throw new CloudBridgeError(errMessage, response.status, text);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<ApiResponse<T>> {\n const headers: Record<string, string> = { \"X-Api-Key\": this.apiKey };\n if (body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n redirect: \"manual\",\n signal: AbortSignal.timeout(30_000),\n });\n\n if (isRedirectResponse(response)) {\n return {\n success: false,\n error: \"Cloud API request was redirected; redirects are not allowed\",\n };\n }\n\n if (!response.ok) {\n const text = await response.text().catch(() => \"\");\n return {\n success: false,\n error: formatApiErrorBody(text) ?? `HTTP ${response.status}`,\n };\n }\n\n return (await response.json()) as ApiResponse<T>;\n }\n}\n",
9
+ "/**\n * Cloud onboarding flow for Eliza Cloud integration.\n *\n * Handles availability check → browser-based auth → agent provisioning\n * during `runFirstTimeSetup()`. Extracted to keep `eliza.ts` manageable.\n *\n * @module cloud-onboarding\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { StylePreset } from \"@elizaos/core\";\nimport { type CloudLoginResult, cloudLogin } from \"./cloud/auth.js\";\nimport { normalizeCloudSiteUrl } from \"./cloud/base-url.js\";\nimport {\n type CloudAgentCreateParams,\n ElizaCloudClient,\n} from \"./cloud/bridge-client.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Lazy-loaded @clack/prompts module type (matches eliza.ts pattern). */\ntype ClackModule = typeof import(\"@clack/prompts\");\n\n/** Result of a successful cloud onboarding flow. */\nexport interface CloudOnboardingResult {\n apiKey: string;\n agentId: string | undefined;\n baseUrl: string;\n bridgeUrl?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_CLOUD_BASE_URL = \"https://www.elizacloud.ai\";\nconst PROVISION_TIMEOUT_MS = 120_000; // 2 minutes\nconst PROVISION_POLL_INTERVAL_MS = 3_000;\n\n// ---------------------------------------------------------------------------\n// Availability check\n// ---------------------------------------------------------------------------\n\n/**\n * Quick pre-flight check: is Eliza Cloud accepting new agents?\n * Returns null if available, or an error message string if not.\n */\nexport async function checkCloudAvailability(\n baseUrl: string,\n): Promise<string | null> {\n try {\n const url = `${normalizeCloudSiteUrl(baseUrl)}/api/compat/availability`;\n const res = await fetch(url, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!res.ok) {\n return `Cloud returned HTTP ${res.status}. It may be temporarily unavailable.`;\n }\n\n const body = (await res.json()) as {\n success?: boolean;\n data?: { acceptingNewAgents?: boolean; availableSlots?: number };\n };\n\n if (!body.success || !body.data?.acceptingNewAgents) {\n return \"Eliza Cloud is currently at capacity. Try again later or run locally.\";\n }\n\n return null; // Available!\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"timed out\") || msg.includes(\"timeout\")) {\n return \"Could not reach Eliza Cloud (request timed out). Check your internet connection.\";\n }\n return `Could not reach Eliza Cloud: ${msg}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Cloud auth wrapper (with clack UI)\n// ---------------------------------------------------------------------------\n\n/**\n * Run the Eliza Cloud browser-based login, wrapped with clack spinners.\n * Returns the API key/result or null if the user wants to fall back.\n */\nasync function runCloudAuth(\n clack: ClackModule,\n baseUrl: string,\n): Promise<CloudLoginResult | null> {\n const spinner = clack.spinner();\n spinner.start(\"Connecting to Eliza Cloud...\");\n\n try {\n const result = await cloudLogin({\n baseUrl,\n timeoutMs: 300_000, // 5 minutes\n onBrowserUrl: (url: string) => {\n spinner.stop(\"Opening your browser to log in...\");\n clack.log.info(`If the browser didn't open, visit:\\n ${url}`);\n\n // Try to open the browser\n openBrowser(url).catch(() => {\n // Fallback: user can manually navigate\n });\n\n // Restart spinner for polling\n spinner.start(\"Waiting for login in browser...\");\n },\n onPollStatus: (status: string) => {\n if (status === \"pending\") {\n spinner.message(\"Waiting for login in browser...\");\n }\n },\n });\n\n spinner.stop(\"✓ Logged in to Eliza Cloud!\");\n return result;\n } catch (err) {\n const msg = String(err);\n spinner.stop(`Login failed: ${msg}`);\n return null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Agent provisioning\n// ---------------------------------------------------------------------------\n\n/**\n * Create and provision a cloud agent, polling until it's running.\n * Returns the agent ID or null if provisioning fails.\n */\nasync function provisionCloudAgent(\n clack: ClackModule,\n client: ElizaCloudClient,\n agentName: string,\n preset?: StylePreset,\n): Promise<{ agentId: string; bridgeUrl?: string } | null> {\n const spinner = clack.spinner();\n spinner.start(\"Creating your cloud agent...\");\n\n try {\n // Build the agent config from the chosen style preset\n const agentConfig: Record<string, unknown> = {};\n if (preset) {\n agentConfig.bio = preset.bio;\n agentConfig.system = preset.system;\n agentConfig.style = preset.style;\n agentConfig.adjectives = preset.adjectives;\n agentConfig.topics = preset.topics;\n agentConfig.postExamples = preset.postExamples;\n agentConfig.messageExamples = preset.messageExamples;\n }\n\n const params: CloudAgentCreateParams = {\n agentName,\n agentConfig,\n };\n\n const agent = await client.createAgent(params);\n const agentId = agent.id;\n\n spinner.message(\"Agent created! Provisioning cloud environment...\");\n\n // Poll for running status\n const deadline = Date.now() + PROVISION_TIMEOUT_MS;\n let lastStatus = agent.status;\n\n while (Date.now() < deadline) {\n await sleep(PROVISION_POLL_INTERVAL_MS);\n\n try {\n const current = await client.getAgent(agentId);\n lastStatus = current.status;\n\n switch (lastStatus) {\n case \"running\":\n case \"completed\":\n spinner.stop(`☁️ Cloud agent \"${agentName}\" is running!`);\n return { agentId, bridgeUrl: current.bridgeUrl };\n\n case \"failed\":\n case \"error\":\n spinner.stop(\n `Provisioning failed: ${current.errorMessage ?? \"unknown error\"}`,\n );\n return null;\n\n case \"queued\":\n spinner.message(\"Queued — waiting for available slot...\");\n break;\n\n case \"provisioning\":\n spinner.message(\"Provisioning cloud environment...\");\n break;\n\n default:\n spinner.message(`Status: ${lastStatus}...`);\n }\n } catch (pollErr) {\n // Transient polling error — keep trying\n logger.debug(`[cloud-onboarding] Poll error: ${String(pollErr)}`);\n }\n }\n\n // Timed out\n spinner.stop(\n `Provisioning timed out (last status: ${lastStatus}). The agent may still be starting up.`,\n );\n // Return the ID anyway — user can reconnect later\n return { agentId };\n } catch (err) {\n const msg = String(err);\n spinner.stop(`Failed to create cloud agent: ${msg}`);\n return null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Main orchestrator\n// ---------------------------------------------------------------------------\n\n/**\n * Run the full cloud onboarding flow:\n * 1. Check availability\n * 2. Authenticate via browser\n * 3. Create + provision agent\n *\n * Returns the result or null if the user cancels / an error occurs.\n * On failure, the caller should fall back to local mode.\n */\nexport async function runCloudOnboarding(\n clack: ClackModule,\n agentName: string,\n preset?: StylePreset,\n baseUrl?: string,\n): Promise<CloudOnboardingResult | null> {\n const resolvedBaseUrl = normalizeCloudSiteUrl(\n baseUrl ?? DEFAULT_CLOUD_BASE_URL,\n );\n\n // ── Step 1: Availability check ──────────────────────────────────────\n const unavailableReason = await checkCloudAvailability(resolvedBaseUrl);\n if (unavailableReason) {\n clack.log.warn(unavailableReason);\n\n const fallback = await clack.confirm({\n message: \"Run locally instead?\",\n initialValue: true,\n });\n\n if (clack.isCancel(fallback) || fallback) {\n return null; // Fall back to local\n }\n // User said \"no\" to fallback — try auth anyway (maybe availability is\n // temporarily wrong).\n }\n\n // ── Step 2: Browser-based auth ──────────────────────────────────────\n const authResult = await runCloudAuth(clack, resolvedBaseUrl);\n if (!authResult) {\n clack.log.warn(\"Cloud login was not completed.\");\n\n const retry = await clack.confirm({\n message: \"Try again, or run locally?\",\n active: \"Try again\",\n inactive: \"Run locally\",\n initialValue: false,\n });\n\n if (clack.isCancel(retry) || !retry) {\n return null; // Fall back to local\n }\n\n // Retry auth once\n const retryResult = await runCloudAuth(clack, resolvedBaseUrl);\n if (!retryResult) {\n clack.log.warn(\"Login was not completed. Falling back to local mode.\");\n return null;\n }\n\n // Use retry result\n return await finishProvisioning(\n clack,\n resolvedBaseUrl,\n retryResult,\n agentName,\n preset,\n );\n }\n\n return await finishProvisioning(\n clack,\n resolvedBaseUrl,\n authResult,\n agentName,\n preset,\n );\n}\n\n/**\n * Complete provisioning after successful auth.\n */\nasync function finishProvisioning(\n clack: ClackModule,\n baseUrl: string,\n authResult: CloudLoginResult,\n agentName: string,\n preset?: StylePreset,\n): Promise<CloudOnboardingResult | null> {\n // ── Step 3: Create + provision agent ──────────────────────────────\n const client = new ElizaCloudClient(baseUrl, authResult.apiKey);\n const provisionResult = await provisionCloudAgent(\n clack,\n client,\n agentName,\n preset,\n );\n\n if (!provisionResult) {\n clack.log.warn(\n \"Cloud provisioning did not complete. You can try `eliza cloud connect` later.\",\n );\n\n const runLocal = await clack.confirm({\n message: \"Continue with local setup instead?\",\n initialValue: true,\n });\n\n if (clack.isCancel(runLocal) || runLocal) {\n return null;\n }\n\n // User doesn't want local either — just return the auth result\n // so config is saved (they can reconnect later)\n return {\n apiKey: authResult.apiKey,\n agentId: undefined, // No agent provisioned yet\n baseUrl,\n };\n }\n\n return {\n apiKey: authResult.apiKey,\n agentId: provisionResult.agentId,\n baseUrl,\n bridgeUrl: provisionResult.bridgeUrl,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Try to open a URL in the user's default browser.\n * Falls back silently — the URL is also printed to the terminal.\n *\n * Uses execFile with an args array (not exec with string interpolation)\n * to avoid shell injection via crafted URLs.\n */\nasync function openBrowser(url: string): Promise<void> {\n const { execFile } = await import(\"node:child_process\");\n const { platform } = await import(\"node:os\");\n\n const p = platform();\n\n return new Promise((resolve) => {\n const onError = (err: Error | null) => {\n if (err) {\n logger.debug(\n `[cloud-onboarding] Failed to open browser: ${err.message}`,\n );\n }\n resolve();\n };\n\n if (p === \"darwin\") {\n execFile(\"open\", [url], onError);\n } else if (p === \"win32\") {\n execFile(\"cmd.exe\", [\"/c\", \"start\", \"\", url], onError);\n } else {\n execFile(\"xdg-open\", [url], onError);\n }\n });\n}\n"
10
+ ],
11
+ "mappings": "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",
12
+ "debugId": "298D6EFBB02E82E964756E2164756E21",
13
+ "names": []
14
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Eliza Cloud route plugin — registers `/api/cloud/*` route handlers with the
3
+ * elizaOS runtime plugin route system.
4
+ *
5
+ * All routes use `rawPath: true` to preserve the legacy `/api/cloud/*` paths
6
+ * without a plugin-name prefix. This module is node-only — the main plugin
7
+ * (services, actions, providers, model handlers) lives in `index.node.ts`
8
+ * and is browser-safe; this `plugin.ts` is loaded only on the server via
9
+ * `register-routes.ts`.
10
+ *
11
+ * Migrated from packages/app-core/src/api/cloud-routes.ts and
12
+ * cloud-status-routes.ts. The login/persist, login/status and disconnect
13
+ * paths each carry a small loopback-PUT that previously lived inline in
14
+ * server.ts; that orchestration moved here so server.ts no longer needs
15
+ * to import the cloud handlers directly.
16
+ */
17
+ import type { Plugin } from "@elizaos/core";
18
+ export declare const elizaCloudRoutePlugin: Plugin;
19
+ export default elizaCloudRoutePlugin;
20
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,eAAe,CAAC;AAwNnD,eAAO,MAAM,qBAAqB,EAAE,MAKnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}