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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) 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 +2874 -5915
  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/base-url.d.ts +6 -2
  14. package/dist/cloud/base-url.d.ts.map +1 -1
  15. package/dist/cloud/base-url.js +3 -51
  16. package/dist/cloud/base-url.js.map +3 -3
  17. package/dist/cloud/bridge-client.d.ts +3 -3
  18. package/dist/cloud/bridge-client.d.ts.map +1 -1
  19. package/dist/cloud/bridge-client.js +3 -51
  20. package/dist/cloud/bridge-client.js.map +3 -3
  21. package/dist/cloud/clack-observer.d.ts +35 -0
  22. package/dist/cloud/clack-observer.d.ts.map +1 -0
  23. package/dist/cloud/clack-observer.js +143 -0
  24. package/dist/cloud/clack-observer.js.map +10 -0
  25. package/dist/cloud/cloud-manager.js +45 -92
  26. package/dist/cloud/cloud-manager.js.map +6 -6
  27. package/dist/cloud/cloud-wallet.js +2 -4835
  28. package/dist/cloud/cloud-wallet.js.map +3 -82
  29. package/dist/cloud/duffel-client.d.ts +181 -0
  30. package/dist/cloud/duffel-client.d.ts.map +1 -0
  31. package/dist/cloud/duffel-client.js +506 -0
  32. package/dist/cloud/duffel-client.js.map +11 -0
  33. package/dist/cloud/index.d.ts +6 -0
  34. package/dist/cloud/index.d.ts.map +1 -1
  35. package/dist/cloud/index.js +1782 -1
  36. package/dist/cloud/index.js.map +18 -3
  37. package/dist/cloud/lifeops-schedule-sync-client.d.ts +43 -0
  38. package/dist/cloud/lifeops-schedule-sync-client.d.ts.map +1 -0
  39. package/dist/cloud/lifeops-schedule-sync-client.js +180 -0
  40. package/dist/cloud/lifeops-schedule-sync-client.js.map +11 -0
  41. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts +89 -0
  42. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts.map +1 -0
  43. package/dist/cloud/lifeops-schedule-sync-contracts.js +39 -0
  44. package/dist/cloud/lifeops-schedule-sync-contracts.js.map +10 -0
  45. package/dist/cloud/managed-payment-clients.d.ts +166 -0
  46. package/dist/cloud/managed-payment-clients.d.ts.map +1 -0
  47. package/dist/cloud/managed-payment-clients.js +238 -0
  48. package/dist/cloud/managed-payment-clients.js.map +11 -0
  49. package/dist/cloud/null-observer.d.ts +35 -0
  50. package/dist/cloud/null-observer.d.ts.map +1 -0
  51. package/dist/cloud/null-observer.js +45 -0
  52. package/dist/cloud/null-observer.js.map +10 -0
  53. package/dist/cloud/setup-observer.d.ts +98 -0
  54. package/dist/cloud/setup-observer.d.ts.map +1 -0
  55. package/dist/cloud/setup-observer.js +2 -0
  56. package/dist/cloud/setup-observer.js.map +9 -0
  57. package/dist/cloud/validate-url.d.ts.map +1 -1
  58. package/dist/cloud/validate-url.js +2 -1
  59. package/dist/cloud/validate-url.js.map +3 -3
  60. package/dist/cloud/x402-payment-handler.d.ts +85 -0
  61. package/dist/cloud/x402-payment-handler.d.ts.map +1 -0
  62. package/dist/cloud/x402-payment-handler.js +119 -0
  63. package/dist/cloud/x402-payment-handler.js.map +10 -0
  64. package/dist/cloud-setup.d.ts +36 -0
  65. package/dist/cloud-setup.d.ts.map +1 -0
  66. package/dist/{onboarding.js → cloud-setup.js} +139 -139
  67. package/dist/cloud-setup.js.map +14 -0
  68. package/dist/cloud-voice-catalog.d.ts +65 -0
  69. package/dist/cloud-voice-catalog.d.ts.map +1 -0
  70. package/dist/cloud-voice-catalog.js +278 -0
  71. package/dist/cloud-voice-catalog.js.map +12 -0
  72. package/dist/index.browser.d.ts +11 -0
  73. package/dist/index.browser.d.ts.map +1 -1
  74. package/dist/index.d.ts +7 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +5416 -8405
  77. package/dist/index.js.map +48 -116
  78. package/dist/index.node.d.ts +8 -1
  79. package/dist/index.node.d.ts.map +1 -1
  80. package/dist/init.js +17 -4
  81. package/dist/init.js.map +4 -4
  82. package/dist/lib/cloud-connection.d.ts +0 -1
  83. package/dist/lib/cloud-connection.d.ts.map +1 -1
  84. package/dist/lib/cloud-connection.js +14 -91
  85. package/dist/lib/cloud-connection.js.map +7 -7
  86. package/dist/lib/cloud-secrets.d.ts +5 -18
  87. package/dist/lib/cloud-secrets.d.ts.map +1 -1
  88. package/dist/lib/cloud-secrets.js +8 -36
  89. package/dist/lib/cloud-secrets.js.map +3 -3
  90. package/dist/lib/config-like.d.ts +1 -1
  91. package/dist/lib/config-like.d.ts.map +1 -1
  92. package/dist/lib/config-like.js +3 -3
  93. package/dist/lib/config-like.js.map +3 -3
  94. package/dist/lib/credential-type-map.d.ts +1 -1
  95. package/dist/lib/credential-type-map.js.map +1 -1
  96. package/dist/lib/http.d.ts +0 -11
  97. package/dist/lib/http.d.ts.map +1 -1
  98. package/dist/lib/http.js.map +2 -2
  99. package/dist/lib/server-cloud-tts.d.ts +12 -25
  100. package/dist/lib/server-cloud-tts.d.ts.map +1 -1
  101. package/dist/lib/server-cloud-tts.js +31 -329
  102. package/dist/lib/server-cloud-tts.js.map +4 -7
  103. package/dist/lib/tts-debug.d.ts +5 -3
  104. package/dist/lib/tts-debug.d.ts.map +1 -1
  105. package/dist/lib/tts-debug.js +1 -34
  106. package/dist/lib/tts-debug.js.map +3 -4
  107. package/dist/models/embeddings.d.ts.map +1 -1
  108. package/dist/models/embeddings.js +79 -69
  109. package/dist/models/embeddings.js.map +6 -6
  110. package/dist/models/image.d.ts.map +1 -1
  111. package/dist/models/image.js +42 -15
  112. package/dist/models/image.js.map +6 -6
  113. package/dist/models/index.js +676 -166
  114. package/dist/models/index.js.map +11 -12
  115. package/dist/models/research.d.ts.map +1 -1
  116. package/dist/models/research.js +24 -7
  117. package/dist/models/research.js.map +6 -6
  118. package/dist/models/speech.d.ts +61 -3
  119. package/dist/models/speech.d.ts.map +1 -1
  120. package/dist/models/speech.js +173 -17
  121. package/dist/models/speech.js.map +5 -5
  122. package/dist/models/text.d.ts +106 -1
  123. package/dist/models/text.d.ts.map +1 -1
  124. package/dist/models/text.js +452 -82
  125. package/dist/models/text.js.map +7 -8
  126. package/dist/models/tokenization.d.ts.map +1 -1
  127. package/dist/models/tokenization.js.map +2 -2
  128. package/dist/models/transcription.d.ts.map +1 -1
  129. package/dist/models/transcription.js +20 -6
  130. package/dist/models/transcription.js.map +5 -5
  131. package/dist/node/index.node.js +2828 -5838
  132. package/dist/node/index.node.js.map +47 -116
  133. package/dist/plugin.d.ts.map +1 -1
  134. package/dist/plugin.js +376 -5050
  135. package/dist/plugin.js.map +16 -92
  136. package/dist/providers/openai.js +11 -2
  137. package/dist/providers/openai.js.map +3 -3
  138. package/dist/register-routes.js +376 -5050
  139. package/dist/register-routes.js.map +16 -92
  140. package/dist/routes/cloud-billing-routes.d.ts.map +1 -1
  141. package/dist/routes/cloud-billing-routes.js +17 -60
  142. package/dist/routes/cloud-billing-routes.js.map +8 -7
  143. package/dist/routes/cloud-coding-container-routes.d.ts +8 -0
  144. package/dist/routes/cloud-coding-container-routes.d.ts.map +1 -0
  145. package/dist/routes/cloud-coding-container-routes.js +214 -0
  146. package/dist/routes/cloud-coding-container-routes.js.map +11 -0
  147. package/dist/routes/cloud-compat-routes.d.ts.map +1 -1
  148. package/dist/routes/cloud-compat-routes.js +17 -60
  149. package/dist/routes/cloud-compat-routes.js.map +8 -7
  150. package/dist/routes/cloud-features-routes.js +2 -2
  151. package/dist/routes/cloud-features-routes.js.map +4 -4
  152. package/dist/routes/cloud-relay-routes.d.ts +2 -1
  153. package/dist/routes/cloud-relay-routes.d.ts.map +1 -1
  154. package/dist/routes/cloud-relay-routes.js +84 -2
  155. package/dist/routes/cloud-relay-routes.js.map +5 -4
  156. package/dist/routes/cloud-routes-autonomous.d.ts +3 -4
  157. package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -1
  158. package/dist/routes/cloud-routes-autonomous.js +11 -4893
  159. package/dist/routes/cloud-routes-autonomous.js.map +8 -87
  160. package/dist/routes/cloud-routes.d.ts +2 -2
  161. package/dist/routes/cloud-routes.d.ts.map +1 -1
  162. package/dist/routes/cloud-routes.js +343 -5058
  163. package/dist/routes/cloud-routes.js.map +13 -90
  164. package/dist/routes/cloud-status-routes-autonomous.d.ts +1 -2
  165. package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -1
  166. package/dist/routes/cloud-status-routes-autonomous.js +4 -51
  167. package/dist/routes/cloud-status-routes-autonomous.js.map +5 -5
  168. package/dist/routes/cloud-status-routes.js +14 -90
  169. package/dist/routes/cloud-status-routes.js.map +7 -7
  170. package/dist/routes/home-remote-runner-access-url.d.ts +16 -0
  171. package/dist/routes/home-remote-runner-access-url.d.ts.map +1 -0
  172. package/dist/routes/home-remote-runner-access-url.js +91 -0
  173. package/dist/routes/home-remote-runner-access-url.js.map +10 -0
  174. package/dist/routes/travel-provider-relay-routes.d.ts +9 -0
  175. package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
  176. package/dist/routes/travel-provider-relay-routes.js +358 -0
  177. package/dist/routes/travel-provider-relay-routes.js.map +14 -0
  178. package/dist/services/cloud-auth.d.ts +1 -1
  179. package/dist/services/cloud-auth.d.ts.map +1 -1
  180. package/dist/services/cloud-auth.js +7 -2
  181. package/dist/services/cloud-auth.js.map +4 -4
  182. package/dist/services/cloud-backup.js.map +2 -2
  183. package/dist/services/cloud-bootstrap.d.ts.map +1 -1
  184. package/dist/services/cloud-bootstrap.js.map +2 -2
  185. package/dist/services/cloud-bridge.js.map +3 -3
  186. package/dist/services/cloud-container.d.ts +5 -1
  187. package/dist/services/cloud-container.d.ts.map +1 -1
  188. package/dist/services/cloud-container.js +52 -1
  189. package/dist/services/cloud-container.js.map +4 -4
  190. package/dist/services/cloud-credential-provider.js.map +2 -2
  191. package/dist/services/cloud-model-registry.js.map +2 -2
  192. package/dist/types/cloud.d.ts +1 -0
  193. package/dist/types/cloud.d.ts.map +1 -1
  194. package/dist/types/cloud.js.map +2 -2
  195. package/dist/types/index.d.ts +1 -1
  196. package/dist/types/index.d.ts.map +1 -1
  197. package/dist/utils/cloud-sdk/client.d.ts.map +1 -1
  198. package/dist/utils/cloud-sdk/client.js +136 -4
  199. package/dist/utils/cloud-sdk/client.js.map +5 -5
  200. package/dist/utils/cloud-sdk/http.js.map +1 -1
  201. package/dist/utils/cloud-sdk/public-routes.d.ts +186 -0
  202. package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -1
  203. package/dist/utils/cloud-sdk/public-routes.js +99 -1
  204. package/dist/utils/cloud-sdk/public-routes.js.map +3 -3
  205. package/dist/utils/cloud-sdk/types.d.ts +0 -2
  206. package/dist/utils/cloud-sdk/types.d.ts.map +1 -1
  207. package/dist/utils/cloud-sdk/types.js.map +1 -1
  208. package/dist/utils/config.d.ts +10 -1
  209. package/dist/utils/config.d.ts.map +1 -1
  210. package/dist/utils/config.js +12 -2
  211. package/dist/utils/config.js.map +3 -3
  212. package/dist/utils/events.d.ts +23 -2
  213. package/dist/utils/events.d.ts.map +1 -1
  214. package/dist/utils/events.js +5 -3
  215. package/dist/utils/events.js.map +3 -3
  216. package/dist/utils/sdk-client.d.ts.map +1 -1
  217. package/dist/utils/sdk-client.js +17 -4
  218. package/dist/utils/sdk-client.js.map +4 -4
  219. package/dist/utils/waifu-metering.d.ts +108 -0
  220. package/dist/utils/waifu-metering.d.ts.map +1 -0
  221. package/dist/utils/waifu-metering.js +166 -0
  222. package/dist/utils/waifu-metering.js.map +10 -0
  223. package/package.json +51 -22
  224. package/src/cloud/auth-service-types.ts +24 -0
  225. package/src/cloud/base-url.ts +6 -62
  226. package/src/cloud/clack-observer.ts +189 -0
  227. package/src/cloud/duffel-client.ts +847 -0
  228. package/src/cloud/index.ts +10 -0
  229. package/src/cloud/lifeops-schedule-sync-client.ts +245 -0
  230. package/src/cloud/lifeops-schedule-sync-contracts.ts +124 -0
  231. package/src/cloud/managed-payment-clients.ts +374 -0
  232. package/src/cloud/null-observer.ts +45 -0
  233. package/src/cloud/setup-observer.ts +125 -0
  234. package/src/cloud/validate-url.ts +7 -1
  235. package/src/cloud/x402-payment-handler.ts +215 -0
  236. package/src/cloud-setup.ts +531 -0
  237. package/src/cloud-voice-catalog.test.ts +254 -0
  238. package/src/cloud-voice-catalog.ts +246 -0
  239. package/src/index.browser.ts +29 -0
  240. package/src/index.node.ts +31 -1
  241. package/src/index.ts +76 -4
  242. package/src/lib/cloud-connection.ts +2 -4
  243. package/src/lib/cloud-secrets.ts +10 -54
  244. package/src/lib/config-like.ts +1 -1
  245. package/src/lib/credential-type-map.ts +2 -2
  246. package/src/lib/http.ts +0 -17
  247. package/src/lib/server-cloud-tts.ts +33 -341
  248. package/src/lib/tts-debug.ts +5 -34
  249. package/src/models/embeddings.ts +140 -76
  250. package/src/models/image.ts +29 -14
  251. package/src/models/research.ts +11 -1
  252. package/src/models/speech.ts +269 -23
  253. package/src/models/text.ts +704 -110
  254. package/src/models/tokenization.ts +2 -2
  255. package/src/models/transcription.ts +7 -3
  256. package/src/plugin.ts +38 -0
  257. package/src/routes/cloud-billing-routes.ts +4 -14
  258. package/src/routes/cloud-coding-container-routes.ts +198 -0
  259. package/src/routes/cloud-compat-routes.ts +4 -14
  260. package/src/routes/cloud-features-routes.ts +1 -1
  261. package/src/routes/cloud-relay-routes.ts +47 -1
  262. package/src/routes/cloud-routes-autonomous.ts +7 -10
  263. package/src/routes/cloud-routes.ts +68 -7
  264. package/src/routes/cloud-status-routes-autonomous.ts +6 -2
  265. package/src/routes/home-remote-runner-access-url.ts +83 -0
  266. package/src/routes/travel-provider-relay-routes.ts +193 -0
  267. package/src/services/cloud-auth.ts +9 -2
  268. package/src/services/cloud-bootstrap.ts +1 -3
  269. package/src/services/cloud-bridge.ts +1 -1
  270. package/src/services/cloud-container.ts +93 -0
  271. package/src/services/cloud-credential-provider.ts +1 -1
  272. package/src/services/cloud-model-registry.ts +1 -1
  273. package/src/types/cloud.ts +22 -0
  274. package/src/types/index.ts +19 -0
  275. package/src/utils/cloud-sdk/client.ts +42 -3
  276. package/src/utils/cloud-sdk/public-routes.ts +168 -0
  277. package/src/utils/cloud-sdk/types.ts +0 -2
  278. package/src/utils/config.ts +20 -1
  279. package/src/utils/events.ts +30 -2
  280. package/src/utils/sdk-client.ts +5 -1
  281. package/src/utils/waifu-metering.ts +302 -0
  282. package/dist/onboarding.d.ts +0 -35
  283. package/dist/onboarding.d.ts.map +0 -1
  284. package/dist/onboarding.js.map +0 -14
  285. package/src/onboarding.ts +0 -396
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { IAgentRuntime, Plugin } from "@elizaos/core";
1
+ import type { IAgentRuntime, Plugin, ProcessEnvLike } from "@elizaos/core";
2
2
  import { logger, ModelType } from "@elizaos/core";
3
3
  // Cloud providers
4
4
  import { cloudStatusProvider } from "./cloud-providers/cloud-status";
@@ -19,6 +19,7 @@ import {
19
19
  handleTextMega,
20
20
  handleTextNano,
21
21
  handleTextSmall,
22
+ handleTextToSpeech,
22
23
  } from "./models";
23
24
  // Cloud services
24
25
  import { CloudAuthService } from "./services/cloud-auth";
@@ -30,6 +31,7 @@ import { CloudCredentialProvider } from "./services/cloud-credential-provider";
30
31
  import { CloudManagedGatewayRelayService } from "./services/cloud-managed-gateway-relay";
31
32
  import { CloudModelRegistryService } from "./services/cloud-model-registry";
32
33
  import { createCloudApiClient } from "./utils/sdk-client";
34
+ import { createWaifuMeteringHandler } from "./utils/waifu-metering";
33
35
 
34
36
  const TEXT_NANO_MODEL_TYPE = (ModelType.TEXT_NANO ?? "TEXT_NANO") as string;
35
37
  const TEXT_MEDIUM_MODEL_TYPE = (ModelType.TEXT_MEDIUM ?? "TEXT_MEDIUM") as string;
@@ -37,8 +39,6 @@ const TEXT_MEGA_MODEL_TYPE = (ModelType.TEXT_MEGA ?? "TEXT_MEGA") as string;
37
39
  const RESPONSE_HANDLER_MODEL_TYPE = (ModelType.RESPONSE_HANDLER ?? "RESPONSE_HANDLER") as string;
38
40
  const ACTION_PLANNER_MODEL_TYPE = (ModelType.ACTION_PLANNER ?? "ACTION_PLANNER") as string;
39
41
 
40
- type ProcessEnvLike = Record<string, string | undefined>;
41
-
42
42
  function getProcessEnv(): ProcessEnvLike {
43
43
  if (typeof process === "undefined") {
44
44
  return {};
@@ -56,6 +56,31 @@ export const elizaOSCloudPlugin: Plugin = {
56
56
  envKeys: ["ELIZAOS_CLOUD_API_KEY", "ELIZAOS_CLOUD_ENABLED"],
57
57
  },
58
58
 
59
+ // Plugin-wide registration priority. Applied to every model handler in
60
+ // the `models` map below. Higher numbers win the native runtime priority
61
+ // sort.
62
+ //
63
+ // Why 50: in `manual` routing mode (`routing-preferences.ts`) with no
64
+ // `preferredProvider` set for a slot, the runtime falls through to the
65
+ // native priority order. Putting cloud above the default-0 of other
66
+ // direct provider plugins (anthropic, openai, groq, elevenlabs) means
67
+ // Eliza Cloud wins the "user has paired Cloud but hasn't picked anything
68
+ // specific" case — which is the desired text-generation default.
69
+ //
70
+ // **TTS routing precedence is governed by the router-handler**
71
+ // (`plugin-local-inference/src/services/router-handler.ts`) at
72
+ // MAX_SAFE_INTEGER priority, which reads the per-slot `RoutingPolicy`
73
+ // (default `prefer-local`) and dispatches to local first when available.
74
+ // This plugin's priority does NOT control whether local TTS wins; the
75
+ // router does. See `plugin-local-inference/native/AGENTS.md` §1 for the
76
+ // canonical voice/ASR routing contract.
77
+ //
78
+ // Cloud TTS still works as a fallback when local is unavailable: the
79
+ // handler throws `CloudTtsUnavailableError` when cloud isn't connected
80
+ // and the router's per-pick retry loop falls through to the next
81
+ // eligible provider (local kokoro / omnivoice, plugin-elevenlabs, ...).
82
+ priority: 50,
83
+
59
84
  config: {
60
85
  ELIZAOS_CLOUD_API_KEY: env.ELIZAOS_CLOUD_API_KEY ?? null,
61
86
  ELIZAOS_CLOUD_BASE_URL: env.ELIZAOS_CLOUD_BASE_URL ?? null,
@@ -106,6 +131,14 @@ export const elizaOSCloudPlugin: Plugin = {
106
131
  initializeOpenAI(config, runtime);
107
132
  },
108
133
 
134
+ // ─── Runtime Event Handlers ──────────────────────────────────────────
135
+ // Forwards per-inference token + USD spend to waifu's burn meter when the
136
+ // container is provisioned as a hosted waifu agent (inactive otherwise). See
137
+ // utils/waifu-metering.ts for the honest-meter rationale.
138
+ events: {
139
+ MODEL_USED: [createWaifuMeteringHandler()],
140
+ },
141
+
109
142
  // ─── Cloud Services ──────────────────────────────────────────────────
110
143
  // Services are registered in dependency order:
111
144
  // 1. CloudAuthService — must start first (other services depend on it)
@@ -149,6 +182,7 @@ export const elizaOSCloudPlugin: Plugin = {
149
182
  [ModelType.RESEARCH]: handleResearch,
150
183
  [ModelType.IMAGE]: handleImageGeneration,
151
184
  [ModelType.IMAGE_DESCRIPTION]: handleImageDescription,
185
+ [ModelType.TEXT_TO_SPEECH]: handleTextToSpeech,
152
186
  },
153
187
 
154
188
  tests: [
@@ -299,6 +333,18 @@ export const elizaOSCloudPlugin: Plugin = {
299
333
  ],
300
334
  },
301
335
  ],
336
+
337
+ async dispose(runtime) {
338
+ // Stop in reverse dependency order (auth last since others depend on it).
339
+ await runtime.getService(CloudCredentialProvider.serviceType)?.stop();
340
+ await runtime.getService(CloudBackupService.serviceType)?.stop();
341
+ await runtime.getService(CloudBridgeService.serviceType)?.stop();
342
+ await runtime.getService(CloudContainerService.serviceType)?.stop();
343
+ await runtime.getService(CloudModelRegistryService.serviceType)?.stop();
344
+ await runtime.getService(CloudManagedGatewayRelayService.serviceType)?.stop();
345
+ await runtime.getService(CloudBootstrapServiceImpl.serviceType)?.stop();
346
+ await runtime.getService(CloudAuthService.serviceType)?.stop();
347
+ },
302
348
  };
303
349
 
304
350
  export default elizaOSCloudPlugin;
@@ -313,7 +359,17 @@ export {
313
359
  } from "./routes/cloud-routes-autonomous";
314
360
  export type { CloudConfigLike } from "./routes/cloud-routes-autonomous";
315
361
  export { handleCloudStatusRoutes } from "./routes/cloud-status-routes";
316
- export { runCloudOnboarding, type CloudOnboardingResult } from "./onboarding";
362
+ export { runCloudSetup, type CloudSetupResult } from "./cloud-setup";
363
+ export { ClackObserver } from "./cloud/clack-observer";
364
+ export { NullCloudSetupObserver } from "./cloud/null-observer";
365
+ export type {
366
+ AvailabilityResult,
367
+ CloudSetupObserver,
368
+ ConfirmPrompt,
369
+ ProvisionSuccessInfo,
370
+ SelectChoiceOption,
371
+ SelectChoicePrompt,
372
+ } from "./cloud/setup-observer";
317
373
  export { CloudManager, type CloudManagerCallbacks } from "./cloud/cloud-manager";
318
374
  export {
319
375
  type CloudWalletDescriptor,
@@ -337,10 +393,26 @@ export {
337
393
  resolveCloudTtsBaseUrl,
338
394
  resolveElevenLabsApiKeyForCloudMode,
339
395
  } from "./lib/server-cloud-tts";
396
+ export {
397
+ fetchCloudVoiceCatalog,
398
+ resetCloudVoiceCatalogCacheForTesting,
399
+ setCloudVoiceClientFactoryForTesting,
400
+ type CloudVoiceCatalogEntry,
401
+ type CloudVoiceClient,
402
+ } from "./cloud-voice-catalog";
403
+ export {
404
+ CloudTtsUnavailableError,
405
+ type CloudTextToSpeechParams,
406
+ } from "./models/speech";
340
407
  export {
341
408
  normalizeCloudSiteUrl,
342
409
  resolveCloudApiBaseUrl,
343
410
  } from "./cloud/base-url";
411
+ export {
412
+ isCloudAuthApiKeyService,
413
+ normalizeCloudApiKey,
414
+ type CloudAuthApiKeyService,
415
+ } from "./cloud/auth-service-types";
344
416
  export { validateCloudBaseUrl } from "./cloud/validate-url";
345
417
  export * from "./plugin";
346
418
  export * from "./register-routes";
@@ -9,7 +9,7 @@ import { validateCloudBaseUrl } from "../cloud/validate-url.js";
9
9
  import type { AgentRuntime } from "@elizaos/core";
10
10
  import { logger } from "@elizaos/core";
11
11
  import {
12
- applyCanonicalOnboardingConfig,
12
+ applyCanonicalSetupConfig,
13
13
  type ElizaConfig,
14
14
  normalizeEnvValue,
15
15
  } from "./config-like";
@@ -608,7 +608,7 @@ export async function disconnectCloudConnection(args: {
608
608
  const nextCloud = { ...(config.cloud ?? {}) };
609
609
  delete nextCloud.apiKey;
610
610
  config.cloud = nextCloud;
611
- applyCanonicalOnboardingConfig(config as ElizaConfig, {
611
+ applyCanonicalSetupConfig(config as ElizaConfig, {
612
612
  deploymentTarget: { runtime: "local" },
613
613
  linkedAccounts: {
614
614
  elizacloud: {
@@ -646,8 +646,6 @@ export async function disconnectCloudConnection(args: {
646
646
  }
647
647
  }
648
648
 
649
- export const disconnectUnifiedCloudConnection = disconnectCloudConnection;
650
-
651
649
  /** Matches `reason` from GET /api/cloud/status when connected via API key without CLOUD_AUTH. */
652
650
  const CLOUD_STATUS_API_KEY_ONLY_REASONS: ReadonlySet<string> = new Set([
653
651
  "api_key_present_not_authenticated",
@@ -1,58 +1,14 @@
1
1
  /**
2
2
  * Sealed in-process secret store for cloud credentials.
3
3
  *
4
- * Cloud API keys are scrubbed from process.env after login and stored
5
- * here so they are not visible in environment dumps, child processes,
6
- * or /proc/self/environ.
7
- *
8
- * This module has NO external dependencies so it can be imported by
9
- * any module without pulling in host-layer packages.
10
- */
11
-
12
- const _cloudSecrets: Record<string, string | undefined> = Object.create(null);
13
-
14
- Object.defineProperty(_cloudSecrets, Symbol.toStringTag, {
15
- value: "CloudSecrets",
16
- enumerable: false,
17
- });
18
-
19
- /**
20
- * Read a cloud secret without exposing it in process.env.
21
- * Falls back to process.env for backwards compatibility with code that
22
- * sets the key before this module loads (e.g. docker entrypoints).
4
+ * The implementation moved to `@elizaos/shared/elizacloud/cloud-secrets` so
5
+ * app-core and other host-layer packages can read sealed cloud secrets without
6
+ * reverse-importing this plugin. This module remains for backwards
7
+ * compatibility with plugin-internal callers.
23
8
  */
24
- export function getCloudSecret(
25
- key: "ELIZAOS_CLOUD_API_KEY" | "ELIZAOS_CLOUD_ENABLED",
26
- ): string | undefined {
27
- return _cloudSecrets[key] ?? process.env[key];
28
- }
29
-
30
- /** Scrub cloud secrets from process.env and capture into the sealed store. */
31
- export function scrubCloudSecretsFromEnv(): void {
32
- for (const key of [
33
- "ELIZAOS_CLOUD_API_KEY",
34
- "ELIZAOS_CLOUD_ENABLED",
35
- ] as const) {
36
- if (process.env[key] !== undefined) {
37
- _cloudSecrets[key] = process.env[key];
38
- delete process.env[key];
39
- }
40
- }
41
- }
42
-
43
- /** Clear any sealed cloud secrets after an explicit disconnect. */
44
- export function clearCloudSecrets(): void {
45
- for (const key of [
46
- "ELIZAOS_CLOUD_API_KEY",
47
- "ELIZAOS_CLOUD_ENABLED",
48
- ] as const) {
49
- delete _cloudSecrets[key];
50
- }
51
- }
52
-
53
- /** Reset the sealed secret store. Test-only. */
54
- export function _resetCloudSecretsForTesting(): void {
55
- for (const key of Object.keys(_cloudSecrets)) {
56
- delete _cloudSecrets[key];
57
- }
58
- }
9
+ export {
10
+ clearCloudSecrets,
11
+ getCloudSecret,
12
+ scrubCloudSecretsFromEnv,
13
+ _resetCloudSecretsForTesting,
14
+ } from "@elizaos/shared";
@@ -115,7 +115,7 @@ function persistServiceRouting(
115
115
  }
116
116
  }
117
117
 
118
- export function applyCanonicalOnboardingConfig(
118
+ export function applyCanonicalSetupConfig(
119
119
  config: MutableElizaConfig,
120
120
  args: {
121
121
  deploymentTarget?: DeploymentTargetConfig | null;
@@ -10,7 +10,7 @@
10
10
  * entries when the cloud gains support for additional connectors; do not
11
11
  * scatter cred-type → connector logic elsewhere.
12
12
  *
13
- * Cloud-side endpoint convention (see cloud/apps/api/v1/eliza/<connector>/):
13
+ * Cloud-side endpoint convention (see packages/cloud-api/v1/eliza/<connector>/):
14
14
  * POST /api/v1/eliza/<connector>/connect/initiate → { authUrl }
15
15
  * GET /api/v1/eliza/<connector>/status → { connected, ... }
16
16
  *
@@ -53,7 +53,7 @@ export const credTypeToConnector: ReadonlyMap<string, CredentialTypeMapping> = n
53
53
  // ─── Google ──────────────────────────────────────────────────────────
54
54
  // Cloud endpoint: /api/v1/eliza/google/{connect/initiate,status,disconnect}
55
55
  // The cloud's capability tokens are documented in
56
- // cloud/apps/api/v1/eliza/google/connect/initiate/route.ts.
56
+ // packages/cloud-api/v1/eliza/google/connect/initiate/route.ts.
57
57
  [
58
58
  "gmailOAuth2",
59
59
  {
package/src/lib/http.ts CHANGED
@@ -7,23 +7,6 @@ export interface ReadJsonBodyOptions {
7
7
  requireObject?: boolean;
8
8
  }
9
9
 
10
- export interface RouteRequestMeta {
11
- req: http.IncomingMessage;
12
- res: http.ServerResponse;
13
- method: string;
14
- pathname: string;
15
- }
16
-
17
- export interface RouteHelpers {
18
- json: (res: http.ServerResponse, data: unknown, status?: number) => void;
19
- error: (res: http.ServerResponse, message: string, status?: number) => void;
20
- readJsonBody: <T extends object>(
21
- req: http.IncomingMessage,
22
- res: http.ServerResponse,
23
- options?: ReadJsonBodyOptions,
24
- ) => Promise<T | null>;
25
- }
26
-
27
10
  function scrubStackFields(value: unknown): unknown {
28
11
  if (value instanceof Error) {
29
12
  return { error: value.message || "Internal error" };