@elizaos/plugin-elizacloud 2.0.0-beta.1 → 2.0.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/README.md +20 -44
  2. package/auto-enable.ts +10 -5
  3. package/dist/browser/index.browser.js +2 -2
  4. package/dist/browser/index.browser.js.map +4 -4
  5. package/dist/cjs/index.node.cjs +2918 -5924
  6. package/dist/cjs/index.node.js.map +47 -116
  7. package/dist/cloud/auth-service-types.d.ts +8 -0
  8. package/dist/cloud/auth-service-types.d.ts.map +1 -0
  9. package/dist/cloud/auth-service-types.js +36 -0
  10. package/dist/cloud/auth-service-types.js.map +10 -0
  11. package/dist/cloud/auth.js +4 -51
  12. package/dist/cloud/auth.js.map +4 -4
  13. package/dist/cloud/backup.js +1 -1
  14. package/dist/cloud/backup.js.map +1 -1
  15. package/dist/cloud/base-url.d.ts +6 -2
  16. package/dist/cloud/base-url.d.ts.map +1 -1
  17. package/dist/cloud/base-url.js +3 -51
  18. package/dist/cloud/base-url.js.map +3 -3
  19. package/dist/cloud/bridge-client.d.ts +3 -3
  20. package/dist/cloud/bridge-client.d.ts.map +1 -1
  21. package/dist/cloud/bridge-client.js +3 -51
  22. package/dist/cloud/bridge-client.js.map +3 -3
  23. package/dist/cloud/clack-observer.d.ts +35 -0
  24. package/dist/cloud/clack-observer.d.ts.map +1 -0
  25. package/dist/cloud/clack-observer.js +143 -0
  26. package/dist/cloud/clack-observer.js.map +10 -0
  27. package/dist/cloud/cloud-api-key.js +1 -1
  28. package/dist/cloud/cloud-api-key.js.map +1 -1
  29. package/dist/cloud/cloud-manager.js +45 -92
  30. package/dist/cloud/cloud-manager.js.map +6 -6
  31. package/dist/cloud/cloud-proxy.js +1 -1
  32. package/dist/cloud/cloud-proxy.js.map +1 -1
  33. package/dist/cloud/cloud-wallet.js +2 -4835
  34. package/dist/cloud/cloud-wallet.js.map +3 -82
  35. package/dist/cloud/duffel-client.d.ts +181 -0
  36. package/dist/cloud/duffel-client.d.ts.map +1 -0
  37. package/dist/cloud/duffel-client.js +506 -0
  38. package/dist/cloud/duffel-client.js.map +11 -0
  39. package/dist/cloud/index.d.ts +6 -0
  40. package/dist/cloud/index.d.ts.map +1 -1
  41. package/dist/cloud/index.js +1782 -1
  42. package/dist/cloud/index.js.map +18 -3
  43. package/dist/cloud/lifeops-schedule-sync-client.d.ts +43 -0
  44. package/dist/cloud/lifeops-schedule-sync-client.d.ts.map +1 -0
  45. package/dist/cloud/lifeops-schedule-sync-client.js +180 -0
  46. package/dist/cloud/lifeops-schedule-sync-client.js.map +11 -0
  47. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts +89 -0
  48. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts.map +1 -0
  49. package/dist/cloud/lifeops-schedule-sync-contracts.js +39 -0
  50. package/dist/cloud/lifeops-schedule-sync-contracts.js.map +10 -0
  51. package/dist/cloud/managed-payment-clients.d.ts +166 -0
  52. package/dist/cloud/managed-payment-clients.d.ts.map +1 -0
  53. package/dist/cloud/managed-payment-clients.js +238 -0
  54. package/dist/cloud/managed-payment-clients.js.map +11 -0
  55. package/dist/cloud/null-observer.d.ts +35 -0
  56. package/dist/cloud/null-observer.d.ts.map +1 -0
  57. package/dist/cloud/null-observer.js +45 -0
  58. package/dist/cloud/null-observer.js.map +10 -0
  59. package/dist/cloud/reconnect.js +1 -1
  60. package/dist/cloud/reconnect.js.map +1 -1
  61. package/dist/cloud/setup-observer.d.ts +98 -0
  62. package/dist/cloud/setup-observer.d.ts.map +1 -0
  63. package/dist/cloud/setup-observer.js +2 -0
  64. package/dist/cloud/setup-observer.js.map +9 -0
  65. package/dist/cloud/validate-url.d.ts.map +1 -1
  66. package/dist/cloud/validate-url.js +2 -1
  67. package/dist/cloud/validate-url.js.map +3 -3
  68. package/dist/cloud/x402-payment-handler.d.ts +85 -0
  69. package/dist/cloud/x402-payment-handler.d.ts.map +1 -0
  70. package/dist/cloud/x402-payment-handler.js +119 -0
  71. package/dist/cloud/x402-payment-handler.js.map +10 -0
  72. package/dist/cloud-providers/cloud-status.js +1 -1
  73. package/dist/cloud-providers/cloud-status.js.map +1 -1
  74. package/dist/cloud-providers/container-health.js +1 -1
  75. package/dist/cloud-providers/container-health.js.map +1 -1
  76. package/dist/cloud-providers/credit-balance.js +1 -1
  77. package/dist/cloud-providers/credit-balance.js.map +1 -1
  78. package/dist/cloud-providers/index.js +1 -1
  79. package/dist/cloud-providers/index.js.map +1 -1
  80. package/dist/cloud-providers/model-registry.js +1 -1
  81. package/dist/cloud-providers/model-registry.js.map +1 -1
  82. package/dist/cloud-setup.d.ts +36 -0
  83. package/dist/cloud-setup.d.ts.map +1 -0
  84. package/dist/{onboarding.js → cloud-setup.js} +139 -139
  85. package/dist/cloud-setup.js.map +14 -0
  86. package/dist/cloud-voice-catalog.d.ts +65 -0
  87. package/dist/cloud-voice-catalog.d.ts.map +1 -0
  88. package/dist/cloud-voice-catalog.js +278 -0
  89. package/dist/cloud-voice-catalog.js.map +12 -0
  90. package/dist/index.browser.d.ts +11 -0
  91. package/dist/index.browser.d.ts.map +1 -1
  92. package/dist/index.d.ts +7 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +5458 -8412
  95. package/dist/index.js.map +48 -116
  96. package/dist/index.node.d.ts +8 -1
  97. package/dist/index.node.d.ts.map +1 -1
  98. package/dist/init.js +17 -4
  99. package/dist/init.js.map +4 -4
  100. package/dist/lib/cloud-connection.d.ts +0 -1
  101. package/dist/lib/cloud-connection.d.ts.map +1 -1
  102. package/dist/lib/cloud-connection.js +14 -91
  103. package/dist/lib/cloud-connection.js.map +7 -7
  104. package/dist/lib/cloud-secrets.d.ts +5 -18
  105. package/dist/lib/cloud-secrets.d.ts.map +1 -1
  106. package/dist/lib/cloud-secrets.js +8 -36
  107. package/dist/lib/cloud-secrets.js.map +3 -3
  108. package/dist/lib/config-env.js +1 -1
  109. package/dist/lib/config-env.js.map +1 -1
  110. package/dist/lib/config-like.d.ts +1 -1
  111. package/dist/lib/config-like.d.ts.map +1 -1
  112. package/dist/lib/config-like.js +3 -3
  113. package/dist/lib/config-like.js.map +3 -3
  114. package/dist/lib/credential-type-map.d.ts +1 -1
  115. package/dist/lib/credential-type-map.js +1 -1
  116. package/dist/lib/credential-type-map.js.map +2 -2
  117. package/dist/lib/feature-flags.js +1 -1
  118. package/dist/lib/feature-flags.js.map +1 -1
  119. package/dist/lib/http.d.ts +0 -11
  120. package/dist/lib/http.d.ts.map +1 -1
  121. package/dist/lib/http.js +1 -1
  122. package/dist/lib/http.js.map +3 -3
  123. package/dist/lib/server-cloud-tts.d.ts +12 -25
  124. package/dist/lib/server-cloud-tts.d.ts.map +1 -1
  125. package/dist/lib/server-cloud-tts.js +31 -329
  126. package/dist/lib/server-cloud-tts.js.map +4 -7
  127. package/dist/lib/state-paths.js +1 -1
  128. package/dist/lib/state-paths.js.map +1 -1
  129. package/dist/lib/tts-debug.d.ts +5 -3
  130. package/dist/lib/tts-debug.d.ts.map +1 -1
  131. package/dist/lib/tts-debug.js +1 -34
  132. package/dist/lib/tts-debug.js.map +3 -4
  133. package/dist/models/embeddings.d.ts +7 -0
  134. package/dist/models/embeddings.d.ts.map +1 -1
  135. package/dist/models/embeddings.js +98 -73
  136. package/dist/models/embeddings.js.map +6 -6
  137. package/dist/models/image.d.ts.map +1 -1
  138. package/dist/models/image.js +42 -15
  139. package/dist/models/image.js.map +6 -6
  140. package/dist/models/index.js +719 -175
  141. package/dist/models/index.js.map +11 -12
  142. package/dist/models/research.d.ts.map +1 -1
  143. package/dist/models/research.js +24 -7
  144. package/dist/models/research.js.map +6 -6
  145. package/dist/models/speech.d.ts +61 -3
  146. package/dist/models/speech.d.ts.map +1 -1
  147. package/dist/models/speech.js +173 -17
  148. package/dist/models/speech.js.map +5 -5
  149. package/dist/models/text.d.ts +114 -1
  150. package/dist/models/text.d.ts.map +1 -1
  151. package/dist/models/text.js +481 -88
  152. package/dist/models/text.js.map +7 -8
  153. package/dist/models/tokenization.d.ts.map +1 -1
  154. package/dist/models/tokenization.js +1 -1
  155. package/dist/models/tokenization.js.map +3 -3
  156. package/dist/models/transcription.d.ts.map +1 -1
  157. package/dist/models/transcription.js +20 -6
  158. package/dist/models/transcription.js.map +5 -5
  159. package/dist/node/index.node.js +2872 -5847
  160. package/dist/node/index.node.js.map +47 -116
  161. package/dist/plugin.d.ts.map +1 -1
  162. package/dist/plugin.js +376 -5050
  163. package/dist/plugin.js.map +16 -92
  164. package/dist/providers/openai.js +11 -2
  165. package/dist/providers/openai.js.map +3 -3
  166. package/dist/register-routes.js +376 -5050
  167. package/dist/register-routes.js.map +16 -92
  168. package/dist/routes/cloud-billing-routes.d.ts.map +1 -1
  169. package/dist/routes/cloud-billing-routes.js +17 -60
  170. package/dist/routes/cloud-billing-routes.js.map +8 -7
  171. package/dist/routes/cloud-coding-container-routes.d.ts +8 -0
  172. package/dist/routes/cloud-coding-container-routes.d.ts.map +1 -0
  173. package/dist/routes/cloud-coding-container-routes.js +214 -0
  174. package/dist/routes/cloud-coding-container-routes.js.map +11 -0
  175. package/dist/routes/cloud-compat-routes.d.ts.map +1 -1
  176. package/dist/routes/cloud-compat-routes.js +17 -60
  177. package/dist/routes/cloud-compat-routes.js.map +8 -7
  178. package/dist/routes/cloud-features-routes.js +2 -2
  179. package/dist/routes/cloud-features-routes.js.map +4 -4
  180. package/dist/routes/cloud-provisioning.js +1 -1
  181. package/dist/routes/cloud-provisioning.js.map +1 -1
  182. package/dist/routes/cloud-relay-routes.d.ts +2 -1
  183. package/dist/routes/cloud-relay-routes.d.ts.map +1 -1
  184. package/dist/routes/cloud-relay-routes.js +84 -2
  185. package/dist/routes/cloud-relay-routes.js.map +5 -4
  186. package/dist/routes/cloud-routes-autonomous.d.ts +3 -4
  187. package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -1
  188. package/dist/routes/cloud-routes-autonomous.js +11 -4893
  189. package/dist/routes/cloud-routes-autonomous.js.map +8 -87
  190. package/dist/routes/cloud-routes.d.ts +2 -2
  191. package/dist/routes/cloud-routes.d.ts.map +1 -1
  192. package/dist/routes/cloud-routes.js +343 -5058
  193. package/dist/routes/cloud-routes.js.map +13 -90
  194. package/dist/routes/cloud-status-routes-autonomous.d.ts +1 -2
  195. package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -1
  196. package/dist/routes/cloud-status-routes-autonomous.js +4 -51
  197. package/dist/routes/cloud-status-routes-autonomous.js.map +5 -5
  198. package/dist/routes/cloud-status-routes.js +14 -90
  199. package/dist/routes/cloud-status-routes.js.map +7 -7
  200. package/dist/routes/home-remote-runner-access-url.d.ts +16 -0
  201. package/dist/routes/home-remote-runner-access-url.d.ts.map +1 -0
  202. package/dist/routes/home-remote-runner-access-url.js +91 -0
  203. package/dist/routes/home-remote-runner-access-url.js.map +10 -0
  204. package/dist/routes/travel-provider-relay-routes.d.ts +9 -0
  205. package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
  206. package/dist/routes/travel-provider-relay-routes.js +358 -0
  207. package/dist/routes/travel-provider-relay-routes.js.map +14 -0
  208. package/dist/services/cloud-auth.d.ts +1 -1
  209. package/dist/services/cloud-auth.d.ts.map +1 -1
  210. package/dist/services/cloud-auth.js +7 -2
  211. package/dist/services/cloud-auth.js.map +4 -4
  212. package/dist/services/cloud-backup.js +1 -1
  213. package/dist/services/cloud-backup.js.map +3 -3
  214. package/dist/services/cloud-bootstrap.d.ts.map +1 -1
  215. package/dist/services/cloud-bootstrap.js +1 -1
  216. package/dist/services/cloud-bootstrap.js.map +3 -3
  217. package/dist/services/cloud-bridge.js +1 -1
  218. package/dist/services/cloud-bridge.js.map +4 -4
  219. package/dist/services/cloud-container.d.ts +5 -1
  220. package/dist/services/cloud-container.d.ts.map +1 -1
  221. package/dist/services/cloud-container.js +52 -1
  222. package/dist/services/cloud-container.js.map +4 -4
  223. package/dist/services/cloud-credential-provider.js +1 -1
  224. package/dist/services/cloud-credential-provider.js.map +3 -3
  225. package/dist/services/cloud-managed-gateway-relay.js +1 -1
  226. package/dist/services/cloud-managed-gateway-relay.js.map +1 -1
  227. package/dist/services/cloud-model-registry.js +1 -1
  228. package/dist/services/cloud-model-registry.js.map +3 -3
  229. package/dist/services/index.js +1 -1
  230. package/dist/services/index.js.map +1 -1
  231. package/dist/types/cloud.d.ts +1 -0
  232. package/dist/types/cloud.d.ts.map +1 -1
  233. package/dist/types/cloud.js +1 -1
  234. package/dist/types/cloud.js.map +3 -3
  235. package/dist/types/index.d.ts +1 -1
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +1 -1
  238. package/dist/types/index.js.map +1 -1
  239. package/dist/utils/cloud-api.js +1 -1
  240. package/dist/utils/cloud-api.js.map +1 -1
  241. package/dist/utils/cloud-sdk/client.d.ts.map +1 -1
  242. package/dist/utils/cloud-sdk/client.js +136 -4
  243. package/dist/utils/cloud-sdk/client.js.map +5 -5
  244. package/dist/utils/cloud-sdk/http.js +1 -1
  245. package/dist/utils/cloud-sdk/http.js.map +2 -2
  246. package/dist/utils/cloud-sdk/index.js +1 -1
  247. package/dist/utils/cloud-sdk/index.js.map +1 -1
  248. package/dist/utils/cloud-sdk/public-routes.d.ts +186 -0
  249. package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -1
  250. package/dist/utils/cloud-sdk/public-routes.js +99 -1
  251. package/dist/utils/cloud-sdk/public-routes.js.map +3 -3
  252. package/dist/utils/cloud-sdk/types.d.ts +0 -2
  253. package/dist/utils/cloud-sdk/types.d.ts.map +1 -1
  254. package/dist/utils/cloud-sdk/types.js +1 -1
  255. package/dist/utils/cloud-sdk/types.js.map +2 -2
  256. package/dist/utils/config.d.ts +10 -1
  257. package/dist/utils/config.d.ts.map +1 -1
  258. package/dist/utils/config.js +12 -2
  259. package/dist/utils/config.js.map +3 -3
  260. package/dist/utils/events.d.ts +23 -2
  261. package/dist/utils/events.d.ts.map +1 -1
  262. package/dist/utils/events.js +5 -3
  263. package/dist/utils/events.js.map +3 -3
  264. package/dist/utils/helpers.js +1 -1
  265. package/dist/utils/helpers.js.map +1 -1
  266. package/dist/utils/responses-output.js +1 -1
  267. package/dist/utils/responses-output.js.map +1 -1
  268. package/dist/utils/sdk-client.d.ts.map +1 -1
  269. package/dist/utils/sdk-client.js +17 -4
  270. package/dist/utils/sdk-client.js.map +4 -4
  271. package/dist/utils/waifu-metering.d.ts +108 -0
  272. package/dist/utils/waifu-metering.d.ts.map +1 -0
  273. package/dist/utils/waifu-metering.js +166 -0
  274. package/dist/utils/waifu-metering.js.map +10 -0
  275. package/package.json +52 -22
  276. package/registry-entry.json +208 -0
  277. package/src/cloud/auth-service-types.ts +24 -0
  278. package/src/cloud/base-url.ts +6 -62
  279. package/src/cloud/clack-observer.ts +189 -0
  280. package/src/cloud/duffel-client.ts +847 -0
  281. package/src/cloud/index.ts +10 -0
  282. package/src/cloud/lifeops-schedule-sync-client.ts +245 -0
  283. package/src/cloud/lifeops-schedule-sync-contracts.ts +124 -0
  284. package/src/cloud/managed-payment-clients.ts +374 -0
  285. package/src/cloud/null-observer.ts +45 -0
  286. package/src/cloud/setup-observer.ts +125 -0
  287. package/src/cloud/validate-url.ts +7 -1
  288. package/src/cloud/x402-payment-handler.ts +215 -0
  289. package/src/cloud-setup.ts +531 -0
  290. package/src/cloud-voice-catalog.test.ts +254 -0
  291. package/src/cloud-voice-catalog.ts +246 -0
  292. package/src/index.browser.ts +29 -0
  293. package/src/index.node.ts +31 -1
  294. package/src/index.ts +81 -4
  295. package/src/lib/cloud-connection.ts +2 -4
  296. package/src/lib/cloud-secrets.ts +10 -54
  297. package/src/lib/config-like.ts +1 -1
  298. package/src/lib/credential-type-map.ts +2 -2
  299. package/src/lib/http.ts +0 -17
  300. package/src/lib/server-cloud-tts.ts +33 -341
  301. package/src/lib/tts-debug.ts +5 -34
  302. package/src/models/embeddings.ts +187 -78
  303. package/src/models/image.ts +29 -14
  304. package/src/models/research.ts +11 -1
  305. package/src/models/speech.ts +269 -23
  306. package/src/models/text.ts +756 -114
  307. package/src/models/tokenization.ts +2 -2
  308. package/src/models/transcription.ts +7 -3
  309. package/src/plugin.ts +38 -0
  310. package/src/routes/cloud-billing-routes.ts +4 -14
  311. package/src/routes/cloud-coding-container-routes.ts +198 -0
  312. package/src/routes/cloud-compat-routes.ts +4 -14
  313. package/src/routes/cloud-features-routes.ts +1 -1
  314. package/src/routes/cloud-relay-routes.ts +47 -1
  315. package/src/routes/cloud-routes-autonomous.ts +7 -10
  316. package/src/routes/cloud-routes.ts +68 -7
  317. package/src/routes/cloud-status-routes-autonomous.ts +6 -2
  318. package/src/routes/home-remote-runner-access-url.ts +83 -0
  319. package/src/routes/travel-provider-relay-routes.ts +193 -0
  320. package/src/services/cloud-auth.ts +9 -2
  321. package/src/services/cloud-bootstrap.ts +1 -3
  322. package/src/services/cloud-bridge.ts +1 -1
  323. package/src/services/cloud-container.ts +93 -0
  324. package/src/services/cloud-credential-provider.ts +1 -1
  325. package/src/services/cloud-model-registry.ts +1 -1
  326. package/src/types/cloud.ts +22 -0
  327. package/src/types/index.ts +19 -0
  328. package/src/utils/cloud-sdk/client.ts +42 -3
  329. package/src/utils/cloud-sdk/public-routes.ts +168 -0
  330. package/src/utils/cloud-sdk/types.ts +0 -2
  331. package/src/utils/config.ts +20 -1
  332. package/src/utils/events.ts +30 -2
  333. package/src/utils/sdk-client.ts +5 -1
  334. package/src/utils/waifu-metering.ts +302 -0
  335. package/dist/onboarding.d.ts +0 -35
  336. package/dist/onboarding.d.ts.map +0 -1
  337. package/dist/onboarding.js.map +0 -14
  338. package/src/onboarding.ts +0 -396
@@ -0,0 +1,208 @@
1
+ {
2
+ "id": "elizacloud",
3
+ "name": "Elizacloud",
4
+ "description": "elizaOS plugin to connect with elizaOS Cloud services",
5
+ "npmName": "@elizaos/plugin-elizacloud",
6
+ "version": "2.0.0-beta.0",
7
+ "source": "bundled",
8
+ "tags": ["elizacloud"],
9
+ "config": {
10
+ "ELIZAOS_CLOUD_API_KEY": {
11
+ "type": "secret",
12
+ "required": true,
13
+ "sensitive": true,
14
+ "label": "Cloud Api Key",
15
+ "help": "API key used to authenticate requests to ElizaOS Cloud API (format: eliza_xxxxx). Get it from https://www.elizacloud.ai/dashboard/api-keys",
16
+ "advanced": false
17
+ },
18
+ "ELIZAOS_CLOUD_BASE_URL": {
19
+ "type": "url",
20
+ "required": false,
21
+ "sensitive": false,
22
+ "default": "https://www.elizacloud.ai/api/v1",
23
+ "label": "Cloud Base Url",
24
+ "help": "Base URL for all ElizaOS Cloud API requests.",
25
+ "advanced": false
26
+ },
27
+ "ELIZAOS_CLOUD_SMALL_MODEL": {
28
+ "type": "string",
29
+ "required": false,
30
+ "sensitive": false,
31
+ "default": "openai/gpt-oss-120b:nitro",
32
+ "label": "Cloud Small Model",
33
+ "help": "Small/fast model for quick tasks (overrides SMALL_MODEL). Default: openai/gpt-oss-120b:nitro",
34
+ "placeholder": "openai/gpt-oss-120b:nitro",
35
+ "advanced": false
36
+ },
37
+ "SMALL_MODEL": {
38
+ "type": "string",
39
+ "required": false,
40
+ "sensitive": false,
41
+ "default": "openai/gpt-oss-120b:nitro",
42
+ "label": "Model",
43
+ "help": "Fallback identifier for the small language model if ELIZAOS_CLOUD_SMALL_MODEL is not set.",
44
+ "placeholder": "openai/gpt-oss-120b:nitro",
45
+ "advanced": false
46
+ },
47
+ "ELIZAOS_CLOUD_LARGE_MODEL": {
48
+ "type": "string",
49
+ "required": false,
50
+ "sensitive": false,
51
+ "default": "openai/gpt-oss-120b:nitro",
52
+ "label": "Cloud Large Model",
53
+ "help": "Large/powerful model for complex tasks (overrides LARGE_MODEL). Default: openai/gpt-oss-120b:nitro",
54
+ "placeholder": "openai/gpt-oss-120b:nitro",
55
+ "advanced": false
56
+ },
57
+ "LARGE_MODEL": {
58
+ "type": "string",
59
+ "required": false,
60
+ "sensitive": false,
61
+ "default": "openai/gpt-oss-120b:nitro",
62
+ "label": "Model",
63
+ "help": "Fallback identifier for the large language model if ELIZAOS_CLOUD_LARGE_MODEL is not set.",
64
+ "placeholder": "openai/gpt-oss-120b:nitro",
65
+ "advanced": false
66
+ },
67
+ "ELIZAOS_CLOUD_EMBEDDING_MODEL": {
68
+ "type": "string",
69
+ "required": false,
70
+ "sensitive": false,
71
+ "default": "text-embedding-3-small",
72
+ "label": "Cloud Embedding Model",
73
+ "help": "Identifier of the model to use for generating text embeddings.",
74
+ "placeholder": "e.g., text-embedding-3-small",
75
+ "advanced": false
76
+ },
77
+ "ELIZAOS_CLOUD_EMBEDDING_URL": {
78
+ "type": "url",
79
+ "required": false,
80
+ "sensitive": false,
81
+ "label": "Cloud Embedding Url",
82
+ "help": "Custom base URL for the ElizaOS Cloud embeddings endpoint.",
83
+ "advanced": false
84
+ },
85
+ "ELIZAOS_CLOUD_EMBEDDING_API_KEY": {
86
+ "type": "secret",
87
+ "required": false,
88
+ "sensitive": true,
89
+ "label": "Cloud Embedding Api Key",
90
+ "help": "Custom API key for the ElizaOS Cloud embeddings endpoint.",
91
+ "advanced": false
92
+ },
93
+ "ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS": {
94
+ "type": "number",
95
+ "required": false,
96
+ "sensitive": false,
97
+ "default": "1536",
98
+ "label": "Cloud Embedding Dimensions",
99
+ "help": "Number of dimensions for the returned embedding vectors.",
100
+ "advanced": false
101
+ },
102
+ "ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL": {
103
+ "type": "string",
104
+ "required": false,
105
+ "sensitive": false,
106
+ "default": "gpt-5-mini",
107
+ "label": "Cloud Image Description Model",
108
+ "help": "Identifier of the model used for describing images.",
109
+ "placeholder": "e.g., gpt-4o, claude-sonnet-4-20250514",
110
+ "advanced": false
111
+ },
112
+ "ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS": {
113
+ "type": "secret",
114
+ "required": false,
115
+ "sensitive": true,
116
+ "default": "8192",
117
+ "label": "Cloud Image Description Max Tokens",
118
+ "help": "Maximum number of tokens allowed in the image-description model response.",
119
+ "advanced": false
120
+ },
121
+ "ELIZAOS_CLOUD_TTS_MODEL": {
122
+ "type": "string",
123
+ "required": false,
124
+ "sensitive": false,
125
+ "default": "gpt-5-mini-tts",
126
+ "label": "Cloud Tts Model",
127
+ "help": "Identifier of the model used for text-to-speech generation.",
128
+ "placeholder": "e.g., tts-1, eleven_multilingual_v2",
129
+ "advanced": false
130
+ },
131
+ "ELIZAOS_CLOUD_TTS_VOICE": {
132
+ "type": "string",
133
+ "required": false,
134
+ "sensitive": false,
135
+ "default": "nova",
136
+ "label": "Cloud Tts Voice",
137
+ "help": "Voice profile to use for text-to-speech output.",
138
+ "advanced": false
139
+ },
140
+ "ELIZAOS_CLOUD_TTS_INSTRUCTIONS": {
141
+ "type": "textarea",
142
+ "required": false,
143
+ "sensitive": false,
144
+ "label": "Cloud Tts Instructions",
145
+ "help": "Optional instructions to control the style or behavior of the text-to-speech request.",
146
+ "advanced": false
147
+ },
148
+ "ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY": {
149
+ "type": "boolean",
150
+ "required": false,
151
+ "sensitive": false,
152
+ "default": "False",
153
+ "label": "Cloud Experimental Telemetry",
154
+ "help": "Enable experimental telemetry features for enhanced debugging and usage analytics.",
155
+ "advanced": true
156
+ },
157
+ "ELIZAOS_CLOUD_BROWSER_BASE_URL": {
158
+ "type": "url",
159
+ "required": false,
160
+ "sensitive": false,
161
+ "label": "Cloud Browser Base Url",
162
+ "help": "Browser-only proxy endpoint base URL for ElizaOS Cloud requests (no secrets in the client).",
163
+ "advanced": false
164
+ },
165
+ "ELIZAOS_CLOUD_BROWSER_EMBEDDING_URL": {
166
+ "type": "url",
167
+ "required": false,
168
+ "sensitive": false,
169
+ "label": "Cloud Browser Embedding Url",
170
+ "help": "Browser-only proxy endpoint base URL for ElizaOS Cloud embeddings.",
171
+ "advanced": false
172
+ },
173
+ "ELIZAOS_CLOUD_ENABLED": {
174
+ "type": "boolean",
175
+ "required": false,
176
+ "sensitive": false,
177
+ "default": "False",
178
+ "label": "Cloud Enabled",
179
+ "help": "Enable ElizaCloud container provisioning, device auth, bridge, and backup services. When false, only inference model handlers are active.",
180
+ "advanced": false
181
+ },
182
+ "ELIZAOS_CLOUD_APP_VERSION": {
183
+ "type": "string",
184
+ "required": false,
185
+ "sensitive": false,
186
+ "default": "2.0.0-beta.0",
187
+ "label": "Cloud App Version",
188
+ "help": "Application version sent during device authentication.",
189
+ "advanced": false
190
+ }
191
+ },
192
+ "render": {
193
+ "visible": true,
194
+ "pinTo": [],
195
+ "style": "card",
196
+ "icon": "Cloud",
197
+ "group": "feature-other",
198
+ "groupOrder": 12,
199
+ "actions": ["enable", "configure"]
200
+ },
201
+ "resources": {
202
+ "homepage": "https://github.com/eliza-ai/eliza/tree/develop/packages/plugin-elizacloud#readme",
203
+ "repository": "https://github.com/eliza-ai/eliza"
204
+ },
205
+ "dependsOn": [],
206
+ "kind": "plugin",
207
+ "subtype": "other"
208
+ }
@@ -0,0 +1,24 @@
1
+ import type { Service } from "@elizaos/core";
2
+
3
+ export interface CloudAuthApiKeyService {
4
+ isAuthenticated: () => boolean;
5
+ getApiKey?: () => string | undefined;
6
+ }
7
+
8
+ export function isCloudAuthApiKeyService(
9
+ value: Service | null | undefined,
10
+ ): value is Service & CloudAuthApiKeyService {
11
+ return (
12
+ value !== null &&
13
+ value !== undefined &&
14
+ typeof (value as Partial<CloudAuthApiKeyService>).isAuthenticated ===
15
+ "function"
16
+ );
17
+ }
18
+
19
+ export function normalizeCloudApiKey(value: string | null | undefined): string | null {
20
+ if (typeof value !== "string") return null;
21
+ const trimmed = value.trim();
22
+ if (!trimmed || trimmed.toUpperCase() === "[REDACTED]") return null;
23
+ return trimmed;
24
+ }
@@ -1,62 +1,6 @@
1
- const DEFAULT_CLOUD_SITE_URL = "https://www.elizacloud.ai";
2
-
3
- const LEGACY_CLOUD_HOST_ALIASES = new Set([
4
- "elizacloud.ai",
5
- "www.elizacloud.ai",
6
- ]);
7
-
8
- function isLoopbackHost(hostname: string): boolean {
9
- const normalized = hostname.toLowerCase();
10
- return (
11
- normalized === "localhost" ||
12
- normalized === "::1" ||
13
- normalized === "0:0:0:0:0:0:0:1" ||
14
- normalized.startsWith("127.")
15
- );
16
- }
17
-
18
- function trimApiPath(pathname: string): string {
19
- const normalized = pathname.trim().replace(/\/+$/, "");
20
- if (!normalized) return "";
21
- if (normalized === "/api/v1") return "";
22
- if (normalized.endsWith("/api/v1")) {
23
- return normalized.slice(0, -"/api/v1".length);
24
- }
25
- return normalized;
26
- }
27
-
28
- export function normalizeCloudSiteUrl(rawUrl?: string): string {
29
- // Allow cloud-provisioned containers to override the base URL via env var
30
- const envOverride = process.env.ELIZAOS_CLOUD_BASE_URL?.trim();
31
- const candidate = envOverride || rawUrl?.trim() || DEFAULT_CLOUD_SITE_URL;
32
-
33
- try {
34
- const parsed = new URL(candidate);
35
- const pathname = trimApiPath(parsed.pathname);
36
- const host = parsed.hostname.toLowerCase();
37
- const preserveLocalOrigin = isLoopbackHost(host);
38
-
39
- parsed.hash = "";
40
- parsed.search = "";
41
- if (!preserveLocalOrigin) {
42
- parsed.protocol = "https:";
43
- parsed.port = "";
44
- }
45
- parsed.pathname = pathname;
46
-
47
- if (LEGACY_CLOUD_HOST_ALIASES.has(host)) {
48
- parsed.hostname = "www.elizacloud.ai";
49
- parsed.pathname = "";
50
- }
51
-
52
- return parsed.toString().replace(/\/{1,1024}$/, "");
53
- } catch {
54
- const safeCandidate =
55
- candidate.length > 8192 ? candidate.slice(0, 8192) : candidate;
56
- return safeCandidate.replace(/\/{1,1024}$/, "");
57
- }
58
- }
59
-
60
- export function resolveCloudApiBaseUrl(rawUrl?: string): string {
61
- return `${normalizeCloudSiteUrl(rawUrl)}/api/v1`;
62
- }
1
+ /**
2
+ * Cloud site/API URL normalizer. The implementation moved to
3
+ * `@elizaos/shared/elizacloud/base-url` so host-layer packages can normalize
4
+ * URLs without reverse-importing this plugin.
5
+ */
6
+ export { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from "@elizaos/shared";
@@ -0,0 +1,189 @@
1
+ /**
2
+ * `@clack/prompts`-backed implementation of `CloudSetupObserver`.
3
+ *
4
+ * Used by the CLI first-time-setup flow. Wraps a lazily-loaded clack module
5
+ * (so packaged desktop builds that never run interactive setup don't
6
+ * pay the dep cost) and renders every observer event as a spinner update,
7
+ * `log.info` / `log.warn`, or `confirm` / `select` prompt.
8
+ *
9
+ * @module cloud/clack-observer
10
+ */
11
+ import { logger } from "@elizaos/core";
12
+ import type {
13
+ CloudSetupObserver,
14
+ ConfirmPrompt,
15
+ ProvisionSuccessInfo,
16
+ SelectChoicePrompt,
17
+ } from "./setup-observer.js";
18
+
19
+ /** Lazy-loaded @clack/prompts module type. */
20
+ type ClackModule = typeof import("@clack/prompts");
21
+
22
+ interface ClackSpinner {
23
+ start(message?: string): void;
24
+ stop(message?: string): void;
25
+ message(message?: string): void;
26
+ }
27
+
28
+ /**
29
+ * Observer that drives a clack CLI session. One instance per setup run
30
+ * — internal spinner state is reused across the auth + provisioning phases
31
+ * so we don't stack overlapping spinners.
32
+ */
33
+ export class ClackObserver implements CloudSetupObserver {
34
+ private spinner: ClackSpinner | null = null;
35
+
36
+ constructor(private readonly clack: ClackModule) {}
37
+
38
+ // ── Spinner helpers ──────────────────────────────────────────────────
39
+ private ensureSpinner(): ClackSpinner {
40
+ if (!this.spinner) {
41
+ this.spinner = this.clack.spinner();
42
+ }
43
+ return this.spinner;
44
+ }
45
+
46
+ private stopSpinner(message: string): void {
47
+ if (this.spinner) {
48
+ this.spinner.stop(message);
49
+ this.spinner = null;
50
+ } else {
51
+ // No active spinner — render the line as a log.info so the
52
+ // message isn't lost.
53
+ this.clack.log.info(message);
54
+ }
55
+ }
56
+
57
+ // ── Availability ─────────────────────────────────────────────────────
58
+ onAvailabilityChecked(result: { ok: boolean; reason?: string }): void {
59
+ if (!result.ok && result.reason) {
60
+ this.clack.log.warn(result.reason);
61
+ }
62
+ }
63
+
64
+ // ── Auth ─────────────────────────────────────────────────────────────
65
+ onAuthStart(loginUrl: string): void {
66
+ const spinner = this.ensureSpinner();
67
+ spinner.start("Connecting to Eliza Cloud...");
68
+ // The auth flow's first callback fires when we have the login URL.
69
+ spinner.stop("Opening your browser to log in...");
70
+ this.spinner = null;
71
+ this.clack.log.info(`If the browser didn't open, visit:\n ${loginUrl}`);
72
+ const polling = this.ensureSpinner();
73
+ polling.start("Waiting for login in browser...");
74
+ }
75
+
76
+ onAuthBrowserOpenFailed(loginUrl: string, error: Error): void {
77
+ // Previously swallowed at debug-level. Now visible: the user may have
78
+ // missed the URL printed by onAuthStart, so re-emit it here with the
79
+ // explicit "couldn't open browser" framing.
80
+ this.clack.log.warn(
81
+ `Could not open browser automatically (${error.message}). Visit this URL to continue:\n ${loginUrl}`,
82
+ );
83
+ }
84
+
85
+ onAuthPollStatus(status: string): void {
86
+ if (status === "pending") {
87
+ this.ensureSpinner().message("Waiting for login in browser...");
88
+ }
89
+ }
90
+
91
+ onAuthSuccess(): void {
92
+ this.stopSpinner("✓ Logged in to Eliza Cloud!");
93
+ }
94
+
95
+ onAuthFailure(message: string): void {
96
+ this.stopSpinner(message);
97
+ }
98
+
99
+ // ── Provisioning ─────────────────────────────────────────────────────
100
+ onProvisionStart(_agentName: string): void {
101
+ const spinner = this.ensureSpinner();
102
+ spinner.start("Creating your cloud agent...");
103
+ }
104
+
105
+ onProvisionStatus(status: string): void {
106
+ const spinner = this.ensureSpinner();
107
+ switch (status) {
108
+ case "created":
109
+ spinner.message("Agent created! Provisioning cloud environment...");
110
+ break;
111
+ case "queued":
112
+ spinner.message("Queued — waiting for available slot...");
113
+ break;
114
+ case "provisioning":
115
+ spinner.message("Provisioning cloud environment...");
116
+ break;
117
+ default:
118
+ spinner.message(`Status: ${status}...`);
119
+ }
120
+ }
121
+
122
+ onProvisionTimeout(_agentId: string, lastStatus: string): void {
123
+ this.stopSpinner(
124
+ `Provisioning timed out (last status: ${lastStatus}). The agent may still be starting up.`,
125
+ );
126
+ }
127
+
128
+ onProvisionFailure(reason: string): void {
129
+ this.stopSpinner(reason);
130
+ }
131
+
132
+ onProvisionSuccess(result: ProvisionSuccessInfo): void {
133
+ this.stopSpinner(`☁️ Cloud agent "${result.agentId}" is running!`);
134
+ }
135
+
136
+ // ── Generic ──────────────────────────────────────────────────────────
137
+ onNotice(message: string): void {
138
+ this.clack.log.warn(message);
139
+ }
140
+
141
+ onFatalError(error: Error, context: string): void {
142
+ logger.error(`[cloud-setup] ${context}: ${error.message}`);
143
+ this.clack.log.error(`${context}: ${error.message}`);
144
+ }
145
+
146
+ // ── Prompts ──────────────────────────────────────────────────────────
147
+ async confirm(prompt: ConfirmPrompt): Promise<boolean | null> {
148
+ const args: {
149
+ message: string;
150
+ initialValue?: boolean;
151
+ active?: string;
152
+ inactive?: string;
153
+ } = { message: prompt.message };
154
+
155
+ if (prompt.defaultValue !== undefined) args.initialValue = prompt.defaultValue;
156
+ if (prompt.activeLabel !== undefined) args.active = prompt.activeLabel;
157
+ if (prompt.inactiveLabel !== undefined) args.inactive = prompt.inactiveLabel;
158
+
159
+ const result = await this.clack.confirm(args);
160
+ if (this.clack.isCancel(result)) return null;
161
+ return result;
162
+ }
163
+
164
+ async selectChoice<T extends string>(
165
+ prompt: SelectChoicePrompt<T>,
166
+ ): Promise<T | null> {
167
+ // Clack's `Option<Value>` is a conditional type that for `Value extends
168
+ // Primitive` makes `label` optional. TS can't narrow the conditional
169
+ // for an unresolved generic `T extends string`, so we describe the
170
+ // option shape via Parameters of clack's `select` and let inference
171
+ // pick it up. No `as unknown as` escape — the parameter type IS the
172
+ // right type, we just have to address it positionally.
173
+ type SelectOpts = Parameters<typeof this.clack.select<T>>[0];
174
+ const options = prompt.options.map((option) => {
175
+ const out = {
176
+ label: option.label,
177
+ value: option.value,
178
+ ...(option.hint !== undefined ? { hint: option.hint } : {}),
179
+ };
180
+ return out;
181
+ }) as SelectOpts["options"];
182
+ const result = await this.clack.select<T>({
183
+ message: prompt.message,
184
+ options,
185
+ });
186
+ if (this.clack.isCancel(result)) return null;
187
+ return result;
188
+ }
189
+ }