@elizaos/plugin-elizacloud 2.0.0-alpha.7 → 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 -37
  6. package/dist/cjs/index.d.ts +2 -2
  7. package/dist/cjs/index.node.cjs +12173 -2271
  8. package/dist/cjs/index.node.js.map +135 -27
  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 -2
  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 +15 -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 +12171 -2266
  147. package/dist/node/index.node.js.map +135 -27
  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,67 @@
1
+ import type {
2
+ DetokenizeTextParams,
3
+ IAgentRuntime,
4
+ ModelTypeName,
5
+ TokenizeTextParams,
6
+ } from "@elizaos/core";
7
+ import { ModelType } from "@elizaos/core";
8
+ import { DEFAULT_ELIZA_CLOUD_TEXT_MODEL } from "@elizaos/core";
9
+ import { encodingForModel, type TiktokenModel } from "js-tiktoken";
10
+
11
+ type ProcessEnvLike = Record<string, string | undefined>;
12
+
13
+ function getProcessEnv(): ProcessEnvLike {
14
+ if (typeof process === "undefined") {
15
+ return {};
16
+ }
17
+ return process.env as ProcessEnvLike;
18
+ }
19
+
20
+ const env = getProcessEnv();
21
+
22
+ function getConfiguredTokenizerModel(model: ModelTypeName): string {
23
+ return model === ModelType.TEXT_SMALL
24
+ ? (env.ELIZAOS_CLOUD_SMALL_MODEL ?? env.SMALL_MODEL ?? DEFAULT_ELIZA_CLOUD_TEXT_MODEL)
25
+ : (env.ELIZAOS_CLOUD_LARGE_MODEL ?? env.LARGE_MODEL ?? DEFAULT_ELIZA_CLOUD_TEXT_MODEL);
26
+ }
27
+
28
+ function tiktokenCandidates(modelName: string): string[] {
29
+ const slashIndex = modelName.indexOf("/");
30
+ const providerless = slashIndex >= 0 ? modelName.slice(slashIndex + 1) : modelName;
31
+ const baseVariant = providerless.split(":")[0] || providerless;
32
+ return [modelName, providerless, baseVariant, "gpt-4o"];
33
+ }
34
+
35
+ function getEncodingForConfiguredModel(modelName: string) {
36
+ for (const candidate of tiktokenCandidates(modelName)) {
37
+ try {
38
+ return encodingForModel(candidate as TiktokenModel);
39
+ } catch {
40
+ // Try the next compatible tokenizer name.
41
+ }
42
+ }
43
+ return encodingForModel("gpt-4o" as TiktokenModel);
44
+ }
45
+
46
+ async function tokenizeText(model: ModelTypeName, prompt: string): Promise<number[]> {
47
+ const tokens = getEncodingForConfiguredModel(getConfiguredTokenizerModel(model)).encode(prompt);
48
+ return tokens;
49
+ }
50
+
51
+ async function detokenizeText(model: ModelTypeName, tokens: number[]): Promise<string> {
52
+ return getEncodingForConfiguredModel(getConfiguredTokenizerModel(model)).decode(tokens);
53
+ }
54
+
55
+ export async function handleTokenizerEncode(
56
+ _runtime: IAgentRuntime,
57
+ { prompt, modelType = ModelType.TEXT_LARGE }: TokenizeTextParams
58
+ ): Promise<number[]> {
59
+ return await tokenizeText(modelType ?? ModelType.TEXT_LARGE, prompt);
60
+ }
61
+
62
+ export async function handleTokenizerDecode(
63
+ _runtime: IAgentRuntime,
64
+ { tokens, modelType = ModelType.TEXT_LARGE }: DetokenizeTextParams
65
+ ): Promise<string> {
66
+ return await detokenizeText(modelType ?? ModelType.TEXT_LARGE, tokens);
67
+ }
@@ -0,0 +1,97 @@
1
+ import type { IAgentRuntime } from "@elizaos/core";
2
+ import { logger } from "@elizaos/core";
3
+ import type { OpenAITranscriptionParams } from "../types";
4
+ import { getSetting } from "../utils/config";
5
+ import { detectAudioMimeType } from "../utils/helpers";
6
+ import { createElizaCloudClient } from "../utils/sdk-client";
7
+
8
+ export async function handleTranscription(
9
+ runtime: IAgentRuntime,
10
+ input: Blob | File | Buffer | OpenAITranscriptionParams
11
+ ): Promise<string> {
12
+ let modelName = getSetting(runtime, "ELIZAOS_CLOUD_TRANSCRIPTION_MODEL", "gpt-5-mini-transcribe");
13
+ logger.log(`[ELIZAOS_CLOUD] Using TRANSCRIPTION model: ${modelName}`);
14
+
15
+ let blob: Blob;
16
+ let extraParams: OpenAITranscriptionParams | null = null;
17
+
18
+ if (input instanceof Blob || input instanceof File) {
19
+ blob = input as Blob;
20
+ } else if (Buffer.isBuffer(input)) {
21
+ const detectedMimeType = detectAudioMimeType(input);
22
+ logger.debug(`Auto-detected audio MIME type: ${detectedMimeType}`);
23
+ blob = new Blob([input] as never, { type: detectedMimeType });
24
+ } else if (
25
+ typeof input === "object" &&
26
+ input !== null &&
27
+ "audio" in input &&
28
+ input.audio != null
29
+ ) {
30
+ const params = input as OpenAITranscriptionParams;
31
+ if (
32
+ !(params.audio instanceof Blob) &&
33
+ !(params.audio instanceof File) &&
34
+ !Buffer.isBuffer(params.audio)
35
+ ) {
36
+ throw new Error("TRANSCRIPTION param 'audio' must be a Blob/File/Buffer.");
37
+ }
38
+ if (Buffer.isBuffer(params.audio)) {
39
+ let mimeType = params.mimeType;
40
+ if (!mimeType) {
41
+ mimeType = detectAudioMimeType(params.audio);
42
+ logger.debug(`Auto-detected audio MIME type: ${mimeType}`);
43
+ } else {
44
+ logger.debug(`Using provided MIME type: ${mimeType}`);
45
+ }
46
+ blob = new Blob([params.audio] as never, { type: mimeType });
47
+ } else {
48
+ blob = params.audio as Blob;
49
+ }
50
+ extraParams = params;
51
+ if (typeof params.model === "string" && params.model) {
52
+ modelName = params.model;
53
+ }
54
+ } else {
55
+ throw new Error(
56
+ "TRANSCRIPTION expects a Blob/File/Buffer or an object { audio: Blob/File/Buffer, mimeType?, language?, response_format?, timestampGranularities?, prompt?, temperature?, model? }"
57
+ );
58
+ }
59
+
60
+ const mime = (blob as File).type || "audio/webm";
61
+ const filename =
62
+ (blob as File).name ||
63
+ (mime.includes("mp3") || mime.includes("mpeg")
64
+ ? "recording.mp3"
65
+ : mime.includes("ogg")
66
+ ? "recording.ogg"
67
+ : mime.includes("wav")
68
+ ? "recording.wav"
69
+ : mime.includes("webm")
70
+ ? "recording.webm"
71
+ : "recording.bin");
72
+
73
+ const formData = new FormData();
74
+ formData.append("audio", blob, filename);
75
+ if (extraParams) {
76
+ if (typeof extraParams.language === "string") {
77
+ formData.append("languageCode", String(extraParams.language));
78
+ }
79
+ }
80
+
81
+ try {
82
+ const response = await createElizaCloudClient(runtime).routes.postApiV1VoiceSttRaw({
83
+ body: formData,
84
+ });
85
+
86
+ if (!response.ok) {
87
+ throw new Error(`Failed to transcribe audio: ${response.status} ${response.statusText}`);
88
+ }
89
+
90
+ const data = (await response.json()) as { text: string };
91
+ return data.text || "";
92
+ } catch (error) {
93
+ const message = error instanceof Error ? error.message : String(error);
94
+ logger.error(`TRANSCRIPTION error: ${message}`);
95
+ throw error;
96
+ }
97
+ }
@@ -0,0 +1,396 @@
1
+ /**
2
+ * Cloud onboarding flow for Eliza Cloud integration.
3
+ *
4
+ * Handles availability check → browser-based auth → agent provisioning
5
+ * during `runFirstTimeSetup()`. Extracted to keep `eliza.ts` manageable.
6
+ *
7
+ * @module cloud-onboarding
8
+ */
9
+
10
+ import { logger } from "@elizaos/core";
11
+ import type { StylePreset } from "@elizaos/core";
12
+ import { type CloudLoginResult, cloudLogin } from "./cloud/auth.js";
13
+ import { normalizeCloudSiteUrl } from "./cloud/base-url.js";
14
+ import {
15
+ type CloudAgentCreateParams,
16
+ ElizaCloudClient,
17
+ } from "./cloud/bridge-client.js";
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Types
21
+ // ---------------------------------------------------------------------------
22
+
23
+ /** Lazy-loaded @clack/prompts module type (matches eliza.ts pattern). */
24
+ type ClackModule = typeof import("@clack/prompts");
25
+
26
+ /** Result of a successful cloud onboarding flow. */
27
+ export interface CloudOnboardingResult {
28
+ apiKey: string;
29
+ agentId: string | undefined;
30
+ baseUrl: string;
31
+ bridgeUrl?: string;
32
+ }
33
+
34
+ // ---------------------------------------------------------------------------
35
+ // Constants
36
+ // ---------------------------------------------------------------------------
37
+
38
+ const DEFAULT_CLOUD_BASE_URL = "https://www.elizacloud.ai";
39
+ const PROVISION_TIMEOUT_MS = 120_000; // 2 minutes
40
+ const PROVISION_POLL_INTERVAL_MS = 3_000;
41
+
42
+ // ---------------------------------------------------------------------------
43
+ // Availability check
44
+ // ---------------------------------------------------------------------------
45
+
46
+ /**
47
+ * Quick pre-flight check: is Eliza Cloud accepting new agents?
48
+ * Returns null if available, or an error message string if not.
49
+ */
50
+ export async function checkCloudAvailability(
51
+ baseUrl: string,
52
+ ): Promise<string | null> {
53
+ try {
54
+ const url = `${normalizeCloudSiteUrl(baseUrl)}/api/compat/availability`;
55
+ const res = await fetch(url, {
56
+ method: "GET",
57
+ headers: { Accept: "application/json" },
58
+ signal: AbortSignal.timeout(10_000),
59
+ });
60
+
61
+ if (!res.ok) {
62
+ return `Cloud returned HTTP ${res.status}. It may be temporarily unavailable.`;
63
+ }
64
+
65
+ const body = (await res.json()) as {
66
+ success?: boolean;
67
+ data?: { acceptingNewAgents?: boolean; availableSlots?: number };
68
+ };
69
+
70
+ if (!body.success || !body.data?.acceptingNewAgents) {
71
+ return "Eliza Cloud is currently at capacity. Try again later or run locally.";
72
+ }
73
+
74
+ return null; // Available!
75
+ } catch (err) {
76
+ const msg = String(err);
77
+ if (msg.includes("timed out") || msg.includes("timeout")) {
78
+ return "Could not reach Eliza Cloud (request timed out). Check your internet connection.";
79
+ }
80
+ return `Could not reach Eliza Cloud: ${msg}`;
81
+ }
82
+ }
83
+
84
+ // ---------------------------------------------------------------------------
85
+ // Cloud auth wrapper (with clack UI)
86
+ // ---------------------------------------------------------------------------
87
+
88
+ /**
89
+ * Run the Eliza Cloud browser-based login, wrapped with clack spinners.
90
+ * Returns the API key/result or null if the user wants to fall back.
91
+ */
92
+ async function runCloudAuth(
93
+ clack: ClackModule,
94
+ baseUrl: string,
95
+ ): Promise<CloudLoginResult | null> {
96
+ const spinner = clack.spinner();
97
+ spinner.start("Connecting to Eliza Cloud...");
98
+
99
+ try {
100
+ const result = await cloudLogin({
101
+ baseUrl,
102
+ timeoutMs: 300_000, // 5 minutes
103
+ onBrowserUrl: (url: string) => {
104
+ spinner.stop("Opening your browser to log in...");
105
+ clack.log.info(`If the browser didn't open, visit:\n ${url}`);
106
+
107
+ // Try to open the browser
108
+ openBrowser(url).catch(() => {
109
+ // Fallback: user can manually navigate
110
+ });
111
+
112
+ // Restart spinner for polling
113
+ spinner.start("Waiting for login in browser...");
114
+ },
115
+ onPollStatus: (status: string) => {
116
+ if (status === "pending") {
117
+ spinner.message("Waiting for login in browser...");
118
+ }
119
+ },
120
+ });
121
+
122
+ spinner.stop("✓ Logged in to Eliza Cloud!");
123
+ return result;
124
+ } catch (err) {
125
+ const msg = String(err);
126
+ spinner.stop(`Login failed: ${msg}`);
127
+ return null;
128
+ }
129
+ }
130
+
131
+ // ---------------------------------------------------------------------------
132
+ // Agent provisioning
133
+ // ---------------------------------------------------------------------------
134
+
135
+ /**
136
+ * Create and provision a cloud agent, polling until it's running.
137
+ * Returns the agent ID or null if provisioning fails.
138
+ */
139
+ async function provisionCloudAgent(
140
+ clack: ClackModule,
141
+ client: ElizaCloudClient,
142
+ agentName: string,
143
+ preset?: StylePreset,
144
+ ): Promise<{ agentId: string; bridgeUrl?: string } | null> {
145
+ const spinner = clack.spinner();
146
+ spinner.start("Creating your cloud agent...");
147
+
148
+ try {
149
+ // Build the agent config from the chosen style preset
150
+ const agentConfig: Record<string, unknown> = {};
151
+ if (preset) {
152
+ agentConfig.bio = preset.bio;
153
+ agentConfig.system = preset.system;
154
+ agentConfig.style = preset.style;
155
+ agentConfig.adjectives = preset.adjectives;
156
+ agentConfig.topics = preset.topics;
157
+ agentConfig.postExamples = preset.postExamples;
158
+ agentConfig.messageExamples = preset.messageExamples;
159
+ }
160
+
161
+ const params: CloudAgentCreateParams = {
162
+ agentName,
163
+ agentConfig,
164
+ };
165
+
166
+ const agent = await client.createAgent(params);
167
+ const agentId = agent.id;
168
+
169
+ spinner.message("Agent created! Provisioning cloud environment...");
170
+
171
+ // Poll for running status
172
+ const deadline = Date.now() + PROVISION_TIMEOUT_MS;
173
+ let lastStatus = agent.status;
174
+
175
+ while (Date.now() < deadline) {
176
+ await sleep(PROVISION_POLL_INTERVAL_MS);
177
+
178
+ try {
179
+ const current = await client.getAgent(agentId);
180
+ lastStatus = current.status;
181
+
182
+ switch (lastStatus) {
183
+ case "running":
184
+ case "completed":
185
+ spinner.stop(`☁️ Cloud agent "${agentName}" is running!`);
186
+ return { agentId, bridgeUrl: current.bridgeUrl };
187
+
188
+ case "failed":
189
+ case "error":
190
+ spinner.stop(
191
+ `Provisioning failed: ${current.errorMessage ?? "unknown error"}`,
192
+ );
193
+ return null;
194
+
195
+ case "queued":
196
+ spinner.message("Queued — waiting for available slot...");
197
+ break;
198
+
199
+ case "provisioning":
200
+ spinner.message("Provisioning cloud environment...");
201
+ break;
202
+
203
+ default:
204
+ spinner.message(`Status: ${lastStatus}...`);
205
+ }
206
+ } catch (pollErr) {
207
+ // Transient polling error — keep trying
208
+ logger.debug(`[cloud-onboarding] Poll error: ${String(pollErr)}`);
209
+ }
210
+ }
211
+
212
+ // Timed out
213
+ spinner.stop(
214
+ `Provisioning timed out (last status: ${lastStatus}). The agent may still be starting up.`,
215
+ );
216
+ // Return the ID anyway — user can reconnect later
217
+ return { agentId };
218
+ } catch (err) {
219
+ const msg = String(err);
220
+ spinner.stop(`Failed to create cloud agent: ${msg}`);
221
+ return null;
222
+ }
223
+ }
224
+
225
+ // ---------------------------------------------------------------------------
226
+ // Main orchestrator
227
+ // ---------------------------------------------------------------------------
228
+
229
+ /**
230
+ * Run the full cloud onboarding flow:
231
+ * 1. Check availability
232
+ * 2. Authenticate via browser
233
+ * 3. Create + provision agent
234
+ *
235
+ * Returns the result or null if the user cancels / an error occurs.
236
+ * On failure, the caller should fall back to local mode.
237
+ */
238
+ export async function runCloudOnboarding(
239
+ clack: ClackModule,
240
+ agentName: string,
241
+ preset?: StylePreset,
242
+ baseUrl?: string,
243
+ ): Promise<CloudOnboardingResult | null> {
244
+ const resolvedBaseUrl = normalizeCloudSiteUrl(
245
+ baseUrl ?? DEFAULT_CLOUD_BASE_URL,
246
+ );
247
+
248
+ // ── Step 1: Availability check ──────────────────────────────────────
249
+ const unavailableReason = await checkCloudAvailability(resolvedBaseUrl);
250
+ if (unavailableReason) {
251
+ clack.log.warn(unavailableReason);
252
+
253
+ const fallback = await clack.confirm({
254
+ message: "Run locally instead?",
255
+ initialValue: true,
256
+ });
257
+
258
+ if (clack.isCancel(fallback) || fallback) {
259
+ return null; // Fall back to local
260
+ }
261
+ // User said "no" to fallback — try auth anyway (maybe availability is
262
+ // temporarily wrong).
263
+ }
264
+
265
+ // ── Step 2: Browser-based auth ──────────────────────────────────────
266
+ const authResult = await runCloudAuth(clack, resolvedBaseUrl);
267
+ if (!authResult) {
268
+ clack.log.warn("Cloud login was not completed.");
269
+
270
+ const retry = await clack.confirm({
271
+ message: "Try again, or run locally?",
272
+ active: "Try again",
273
+ inactive: "Run locally",
274
+ initialValue: false,
275
+ });
276
+
277
+ if (clack.isCancel(retry) || !retry) {
278
+ return null; // Fall back to local
279
+ }
280
+
281
+ // Retry auth once
282
+ const retryResult = await runCloudAuth(clack, resolvedBaseUrl);
283
+ if (!retryResult) {
284
+ clack.log.warn("Login was not completed. Falling back to local mode.");
285
+ return null;
286
+ }
287
+
288
+ // Use retry result
289
+ return await finishProvisioning(
290
+ clack,
291
+ resolvedBaseUrl,
292
+ retryResult,
293
+ agentName,
294
+ preset,
295
+ );
296
+ }
297
+
298
+ return await finishProvisioning(
299
+ clack,
300
+ resolvedBaseUrl,
301
+ authResult,
302
+ agentName,
303
+ preset,
304
+ );
305
+ }
306
+
307
+ /**
308
+ * Complete provisioning after successful auth.
309
+ */
310
+ async function finishProvisioning(
311
+ clack: ClackModule,
312
+ baseUrl: string,
313
+ authResult: CloudLoginResult,
314
+ agentName: string,
315
+ preset?: StylePreset,
316
+ ): Promise<CloudOnboardingResult | null> {
317
+ // ── Step 3: Create + provision agent ──────────────────────────────
318
+ const client = new ElizaCloudClient(baseUrl, authResult.apiKey);
319
+ const provisionResult = await provisionCloudAgent(
320
+ clack,
321
+ client,
322
+ agentName,
323
+ preset,
324
+ );
325
+
326
+ if (!provisionResult) {
327
+ clack.log.warn(
328
+ "Cloud provisioning did not complete. You can try `eliza cloud connect` later.",
329
+ );
330
+
331
+ const runLocal = await clack.confirm({
332
+ message: "Continue with local setup instead?",
333
+ initialValue: true,
334
+ });
335
+
336
+ if (clack.isCancel(runLocal) || runLocal) {
337
+ return null;
338
+ }
339
+
340
+ // User doesn't want local either — just return the auth result
341
+ // so config is saved (they can reconnect later)
342
+ return {
343
+ apiKey: authResult.apiKey,
344
+ agentId: undefined, // No agent provisioned yet
345
+ baseUrl,
346
+ };
347
+ }
348
+
349
+ return {
350
+ apiKey: authResult.apiKey,
351
+ agentId: provisionResult.agentId,
352
+ baseUrl,
353
+ bridgeUrl: provisionResult.bridgeUrl,
354
+ };
355
+ }
356
+
357
+ // ---------------------------------------------------------------------------
358
+ // Helpers
359
+ // ---------------------------------------------------------------------------
360
+
361
+ function sleep(ms: number): Promise<void> {
362
+ return new Promise((resolve) => setTimeout(resolve, ms));
363
+ }
364
+
365
+ /**
366
+ * Try to open a URL in the user's default browser.
367
+ * Falls back silently — the URL is also printed to the terminal.
368
+ *
369
+ * Uses execFile with an args array (not exec with string interpolation)
370
+ * to avoid shell injection via crafted URLs.
371
+ */
372
+ async function openBrowser(url: string): Promise<void> {
373
+ const { execFile } = await import("node:child_process");
374
+ const { platform } = await import("node:os");
375
+
376
+ const p = platform();
377
+
378
+ return new Promise((resolve) => {
379
+ const onError = (err: Error | null) => {
380
+ if (err) {
381
+ logger.debug(
382
+ `[cloud-onboarding] Failed to open browser: ${err.message}`,
383
+ );
384
+ }
385
+ resolve();
386
+ };
387
+
388
+ if (p === "darwin") {
389
+ execFile("open", [url], onError);
390
+ } else if (p === "win32") {
391
+ execFile("cmd.exe", ["/c", "start", "", url], onError);
392
+ } else {
393
+ execFile("xdg-open", [url], onError);
394
+ }
395
+ });
396
+ }