@elizaos/plugin-elizacloud 2.0.0-beta.1 → 2.0.3-beta.2
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.
- package/README.md +20 -44
- package/auto-enable.ts +10 -5
- package/dist/browser/index.browser.js +2 -2
- package/dist/browser/index.browser.js.map +4 -4
- package/dist/cjs/index.node.cjs +2888 -5918
- package/dist/cjs/index.node.js.map +47 -116
- package/dist/cloud/auth-service-types.d.ts +8 -0
- package/dist/cloud/auth-service-types.d.ts.map +1 -0
- package/dist/cloud/auth-service-types.js +36 -0
- package/dist/cloud/auth-service-types.js.map +10 -0
- package/dist/cloud/auth.js +4 -51
- package/dist/cloud/auth.js.map +4 -4
- package/dist/cloud/base-url.d.ts +6 -2
- package/dist/cloud/base-url.d.ts.map +1 -1
- package/dist/cloud/base-url.js +3 -51
- package/dist/cloud/base-url.js.map +3 -3
- package/dist/cloud/bridge-client.d.ts +3 -3
- package/dist/cloud/bridge-client.d.ts.map +1 -1
- package/dist/cloud/bridge-client.js +3 -51
- package/dist/cloud/bridge-client.js.map +3 -3
- package/dist/cloud/clack-observer.d.ts +35 -0
- package/dist/cloud/clack-observer.d.ts.map +1 -0
- package/dist/cloud/clack-observer.js +143 -0
- package/dist/cloud/clack-observer.js.map +10 -0
- package/dist/cloud/cloud-manager.js +45 -92
- package/dist/cloud/cloud-manager.js.map +6 -6
- package/dist/cloud/cloud-wallet.js +2 -4835
- package/dist/cloud/cloud-wallet.js.map +3 -82
- package/dist/cloud/duffel-client.d.ts +181 -0
- package/dist/cloud/duffel-client.d.ts.map +1 -0
- package/dist/cloud/duffel-client.js +506 -0
- package/dist/cloud/duffel-client.js.map +11 -0
- package/dist/cloud/index.d.ts +6 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +881 -3
- package/dist/cloud/index.js.map +9 -3
- package/dist/cloud/lifeops-schedule-sync-client.d.ts +43 -0
- package/dist/cloud/lifeops-schedule-sync-client.d.ts.map +1 -0
- package/dist/cloud/lifeops-schedule-sync-client.js +180 -0
- package/dist/cloud/lifeops-schedule-sync-client.js.map +11 -0
- package/dist/cloud/lifeops-schedule-sync-contracts.d.ts +89 -0
- package/dist/cloud/lifeops-schedule-sync-contracts.d.ts.map +1 -0
- package/dist/cloud/lifeops-schedule-sync-contracts.js +39 -0
- package/dist/cloud/lifeops-schedule-sync-contracts.js.map +10 -0
- package/dist/cloud/managed-payment-clients.d.ts +166 -0
- package/dist/cloud/managed-payment-clients.d.ts.map +1 -0
- package/dist/cloud/managed-payment-clients.js +238 -0
- package/dist/cloud/managed-payment-clients.js.map +11 -0
- package/dist/cloud/null-observer.d.ts +35 -0
- package/dist/cloud/null-observer.d.ts.map +1 -0
- package/dist/cloud/null-observer.js +45 -0
- package/dist/cloud/null-observer.js.map +10 -0
- package/dist/cloud/setup-observer.d.ts +98 -0
- package/dist/cloud/setup-observer.d.ts.map +1 -0
- package/dist/cloud/setup-observer.js +2 -0
- package/dist/cloud/setup-observer.js.map +9 -0
- package/dist/cloud/validate-url.d.ts.map +1 -1
- package/dist/cloud/validate-url.js +2 -1
- package/dist/cloud/validate-url.js.map +3 -3
- package/dist/cloud/x402-payment-handler.d.ts +85 -0
- package/dist/cloud/x402-payment-handler.d.ts.map +1 -0
- package/dist/cloud/x402-payment-handler.js +119 -0
- package/dist/cloud/x402-payment-handler.js.map +10 -0
- package/dist/cloud-setup.d.ts +36 -0
- package/dist/cloud-setup.d.ts.map +1 -0
- package/dist/{onboarding.js → cloud-setup.js} +139 -139
- package/dist/cloud-setup.js.map +14 -0
- package/dist/cloud-voice-catalog.d.ts +65 -0
- package/dist/cloud-voice-catalog.d.ts.map +1 -0
- package/dist/cloud-voice-catalog.js +278 -0
- package/dist/cloud-voice-catalog.js.map +12 -0
- package/dist/index.browser.d.ts +11 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5427 -8410
- package/dist/index.js.map +47 -116
- package/dist/index.node.d.ts +8 -1
- package/dist/index.node.d.ts.map +1 -1
- package/dist/init.js +17 -4
- package/dist/init.js.map +4 -4
- package/dist/lib/cloud-connection.d.ts +0 -1
- package/dist/lib/cloud-connection.d.ts.map +1 -1
- package/dist/lib/cloud-connection.js +14 -91
- package/dist/lib/cloud-connection.js.map +7 -7
- package/dist/lib/cloud-secrets.d.ts +5 -18
- package/dist/lib/cloud-secrets.d.ts.map +1 -1
- package/dist/lib/cloud-secrets.js +8 -36
- package/dist/lib/cloud-secrets.js.map +3 -3
- package/dist/lib/config-like.d.ts +1 -1
- package/dist/lib/config-like.d.ts.map +1 -1
- package/dist/lib/config-like.js +3 -3
- package/dist/lib/config-like.js.map +3 -3
- package/dist/lib/credential-type-map.d.ts +1 -1
- package/dist/lib/credential-type-map.js.map +1 -1
- package/dist/lib/http.d.ts +0 -11
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js.map +2 -2
- package/dist/lib/server-cloud-tts.d.ts +12 -25
- package/dist/lib/server-cloud-tts.d.ts.map +1 -1
- package/dist/lib/server-cloud-tts.js +31 -329
- package/dist/lib/server-cloud-tts.js.map +4 -7
- package/dist/lib/tts-debug.d.ts +5 -3
- package/dist/lib/tts-debug.d.ts.map +1 -1
- package/dist/lib/tts-debug.js +1 -34
- package/dist/lib/tts-debug.js.map +3 -4
- package/dist/models/embeddings.d.ts +7 -0
- package/dist/models/embeddings.d.ts.map +1 -1
- package/dist/models/embeddings.js +95 -73
- package/dist/models/embeddings.js.map +6 -6
- package/dist/models/image.d.ts.map +1 -1
- package/dist/models/image.js +42 -15
- package/dist/models/image.js.map +6 -6
- package/dist/models/index.js +689 -169
- package/dist/models/index.js.map +11 -12
- package/dist/models/research.d.ts.map +1 -1
- package/dist/models/research.js +24 -7
- package/dist/models/research.js.map +6 -6
- package/dist/models/speech.d.ts +61 -3
- package/dist/models/speech.d.ts.map +1 -1
- package/dist/models/speech.js +173 -17
- package/dist/models/speech.js.map +5 -5
- package/dist/models/text.d.ts +113 -1
- package/dist/models/text.d.ts.map +1 -1
- package/dist/models/text.js +453 -82
- package/dist/models/text.js.map +7 -8
- package/dist/models/tokenization.d.ts.map +1 -1
- package/dist/models/tokenization.js.map +2 -2
- package/dist/models/transcription.d.ts.map +1 -1
- package/dist/models/transcription.js +20 -6
- package/dist/models/transcription.js.map +5 -5
- package/dist/node/index.node.js +2842 -5841
- package/dist/node/index.node.js.map +47 -116
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +376 -5050
- package/dist/plugin.js.map +16 -92
- package/dist/providers/openai.js +11 -2
- package/dist/providers/openai.js.map +3 -3
- package/dist/register-routes.js +376 -5050
- package/dist/register-routes.js.map +16 -92
- package/dist/routes/cloud-billing-routes.d.ts.map +1 -1
- package/dist/routes/cloud-billing-routes.js +17 -60
- package/dist/routes/cloud-billing-routes.js.map +8 -7
- package/dist/routes/cloud-coding-container-routes.d.ts +8 -0
- package/dist/routes/cloud-coding-container-routes.d.ts.map +1 -0
- package/dist/routes/cloud-coding-container-routes.js +214 -0
- package/dist/routes/cloud-coding-container-routes.js.map +11 -0
- package/dist/routes/cloud-compat-routes.d.ts.map +1 -1
- package/dist/routes/cloud-compat-routes.js +17 -60
- package/dist/routes/cloud-compat-routes.js.map +8 -7
- package/dist/routes/cloud-features-routes.js +2 -2
- package/dist/routes/cloud-features-routes.js.map +4 -4
- package/dist/routes/cloud-relay-routes.d.ts +2 -1
- package/dist/routes/cloud-relay-routes.d.ts.map +1 -1
- package/dist/routes/cloud-relay-routes.js +84 -2
- package/dist/routes/cloud-relay-routes.js.map +5 -4
- package/dist/routes/cloud-routes-autonomous.d.ts +3 -4
- package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -1
- package/dist/routes/cloud-routes-autonomous.js +11 -4893
- package/dist/routes/cloud-routes-autonomous.js.map +8 -87
- package/dist/routes/cloud-routes.d.ts +2 -2
- package/dist/routes/cloud-routes.d.ts.map +1 -1
- package/dist/routes/cloud-routes.js +343 -5058
- package/dist/routes/cloud-routes.js.map +13 -90
- package/dist/routes/cloud-status-routes-autonomous.d.ts +1 -2
- package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -1
- package/dist/routes/cloud-status-routes-autonomous.js +4 -51
- package/dist/routes/cloud-status-routes-autonomous.js.map +5 -5
- package/dist/routes/cloud-status-routes.js +14 -90
- package/dist/routes/cloud-status-routes.js.map +7 -7
- package/dist/routes/home-remote-runner-access-url.d.ts +16 -0
- package/dist/routes/home-remote-runner-access-url.d.ts.map +1 -0
- package/dist/routes/home-remote-runner-access-url.js +91 -0
- package/dist/routes/home-remote-runner-access-url.js.map +10 -0
- package/dist/routes/travel-provider-relay-routes.d.ts +9 -0
- package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
- package/dist/routes/travel-provider-relay-routes.js +358 -0
- package/dist/routes/travel-provider-relay-routes.js.map +14 -0
- package/dist/services/cloud-auth.d.ts +1 -1
- package/dist/services/cloud-auth.d.ts.map +1 -1
- package/dist/services/cloud-auth.js +7 -2
- package/dist/services/cloud-auth.js.map +4 -4
- package/dist/services/cloud-backup.js.map +2 -2
- package/dist/services/cloud-bootstrap.d.ts.map +1 -1
- package/dist/services/cloud-bootstrap.js.map +2 -2
- package/dist/services/cloud-bridge.js.map +3 -3
- package/dist/services/cloud-container.d.ts +5 -1
- package/dist/services/cloud-container.d.ts.map +1 -1
- package/dist/services/cloud-container.js +52 -1
- package/dist/services/cloud-container.js.map +4 -4
- package/dist/services/cloud-credential-provider.js.map +2 -2
- package/dist/services/cloud-model-registry.js.map +2 -2
- package/dist/types/cloud.d.ts +1 -0
- package/dist/types/cloud.d.ts.map +1 -1
- package/dist/types/cloud.js.map +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/cloud-sdk/client.d.ts.map +1 -1
- package/dist/utils/cloud-sdk/client.js +136 -4
- package/dist/utils/cloud-sdk/client.js.map +5 -5
- package/dist/utils/cloud-sdk/http.js.map +1 -1
- package/dist/utils/cloud-sdk/public-routes.d.ts +186 -0
- package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -1
- package/dist/utils/cloud-sdk/public-routes.js +99 -1
- package/dist/utils/cloud-sdk/public-routes.js.map +3 -3
- package/dist/utils/cloud-sdk/types.d.ts +0 -2
- package/dist/utils/cloud-sdk/types.d.ts.map +1 -1
- package/dist/utils/cloud-sdk/types.js.map +1 -1
- package/dist/utils/config.d.ts +10 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -2
- package/dist/utils/config.js.map +3 -3
- package/dist/utils/events.d.ts +23 -2
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/events.js +5 -3
- package/dist/utils/events.js.map +3 -3
- package/dist/utils/sdk-client.d.ts.map +1 -1
- package/dist/utils/sdk-client.js +17 -4
- package/dist/utils/sdk-client.js.map +4 -4
- package/dist/utils/waifu-metering.d.ts +108 -0
- package/dist/utils/waifu-metering.d.ts.map +1 -0
- package/dist/utils/waifu-metering.js +166 -0
- package/dist/utils/waifu-metering.js.map +10 -0
- package/package.json +51 -22
- package/src/cloud/auth-service-types.ts +24 -0
- package/src/cloud/base-url.ts +6 -62
- package/src/cloud/clack-observer.ts +189 -0
- package/src/cloud/duffel-client.ts +847 -0
- package/src/cloud/index.ts +10 -0
- package/src/cloud/lifeops-schedule-sync-client.ts +245 -0
- package/src/cloud/lifeops-schedule-sync-contracts.ts +124 -0
- package/src/cloud/managed-payment-clients.ts +374 -0
- package/src/cloud/null-observer.ts +45 -0
- package/src/cloud/setup-observer.ts +125 -0
- package/src/cloud/validate-url.ts +7 -1
- package/src/cloud/x402-payment-handler.ts +215 -0
- package/src/cloud-setup.ts +531 -0
- package/src/cloud-voice-catalog.test.ts +254 -0
- package/src/cloud-voice-catalog.ts +246 -0
- package/src/index.browser.ts +29 -0
- package/src/index.node.ts +31 -1
- package/src/index.ts +81 -4
- package/src/lib/cloud-connection.ts +2 -4
- package/src/lib/cloud-secrets.ts +10 -54
- package/src/lib/config-like.ts +1 -1
- package/src/lib/credential-type-map.ts +2 -2
- package/src/lib/http.ts +0 -17
- package/src/lib/server-cloud-tts.ts +33 -341
- package/src/lib/tts-debug.ts +5 -34
- package/src/models/embeddings.ts +178 -78
- package/src/models/image.ts +29 -14
- package/src/models/research.ts +11 -1
- package/src/models/speech.ts +269 -23
- package/src/models/text.ts +704 -110
- package/src/models/tokenization.ts +2 -2
- package/src/models/transcription.ts +7 -3
- package/src/plugin.ts +38 -0
- package/src/routes/cloud-billing-routes.ts +4 -14
- package/src/routes/cloud-coding-container-routes.ts +198 -0
- package/src/routes/cloud-compat-routes.ts +4 -14
- package/src/routes/cloud-features-routes.ts +1 -1
- package/src/routes/cloud-relay-routes.ts +47 -1
- package/src/routes/cloud-routes-autonomous.ts +7 -10
- package/src/routes/cloud-routes.ts +68 -7
- package/src/routes/cloud-status-routes-autonomous.ts +6 -2
- package/src/routes/home-remote-runner-access-url.ts +83 -0
- package/src/routes/travel-provider-relay-routes.ts +193 -0
- package/src/services/cloud-auth.ts +9 -2
- package/src/services/cloud-bootstrap.ts +1 -3
- package/src/services/cloud-bridge.ts +1 -1
- package/src/services/cloud-container.ts +93 -0
- package/src/services/cloud-credential-provider.ts +1 -1
- package/src/services/cloud-model-registry.ts +1 -1
- package/src/types/cloud.ts +22 -0
- package/src/types/index.ts +19 -0
- package/src/utils/cloud-sdk/client.ts +42 -3
- package/src/utils/cloud-sdk/public-routes.ts +168 -0
- package/src/utils/cloud-sdk/types.ts +0 -2
- package/src/utils/config.ts +20 -1
- package/src/utils/events.ts +30 -2
- package/src/utils/sdk-client.ts +5 -1
- package/src/utils/waifu-metering.ts +302 -0
- package/dist/onboarding.d.ts +0 -35
- package/dist/onboarding.d.ts.map +0 -1
- package/dist/onboarding.js.map +0 -14
- 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";
|
|
@@ -13,12 +13,14 @@ import {
|
|
|
13
13
|
handleImageGeneration,
|
|
14
14
|
handleResearch,
|
|
15
15
|
handleResponseHandler,
|
|
16
|
+
handleBatchTextEmbedding,
|
|
16
17
|
handleTextEmbedding,
|
|
17
18
|
handleTextLarge,
|
|
18
19
|
handleTextMedium,
|
|
19
20
|
handleTextMega,
|
|
20
21
|
handleTextNano,
|
|
21
22
|
handleTextSmall,
|
|
23
|
+
handleTextToSpeech,
|
|
22
24
|
} from "./models";
|
|
23
25
|
// Cloud services
|
|
24
26
|
import { CloudAuthService } from "./services/cloud-auth";
|
|
@@ -30,6 +32,7 @@ import { CloudCredentialProvider } from "./services/cloud-credential-provider";
|
|
|
30
32
|
import { CloudManagedGatewayRelayService } from "./services/cloud-managed-gateway-relay";
|
|
31
33
|
import { CloudModelRegistryService } from "./services/cloud-model-registry";
|
|
32
34
|
import { createCloudApiClient } from "./utils/sdk-client";
|
|
35
|
+
import { createWaifuMeteringHandler } from "./utils/waifu-metering";
|
|
33
36
|
|
|
34
37
|
const TEXT_NANO_MODEL_TYPE = (ModelType.TEXT_NANO ?? "TEXT_NANO") as string;
|
|
35
38
|
const TEXT_MEDIUM_MODEL_TYPE = (ModelType.TEXT_MEDIUM ?? "TEXT_MEDIUM") as string;
|
|
@@ -37,8 +40,6 @@ const TEXT_MEGA_MODEL_TYPE = (ModelType.TEXT_MEGA ?? "TEXT_MEGA") as string;
|
|
|
37
40
|
const RESPONSE_HANDLER_MODEL_TYPE = (ModelType.RESPONSE_HANDLER ?? "RESPONSE_HANDLER") as string;
|
|
38
41
|
const ACTION_PLANNER_MODEL_TYPE = (ModelType.ACTION_PLANNER ?? "ACTION_PLANNER") as string;
|
|
39
42
|
|
|
40
|
-
type ProcessEnvLike = Record<string, string | undefined>;
|
|
41
|
-
|
|
42
43
|
function getProcessEnv(): ProcessEnvLike {
|
|
43
44
|
if (typeof process === "undefined") {
|
|
44
45
|
return {};
|
|
@@ -56,6 +57,31 @@ export const elizaOSCloudPlugin: Plugin = {
|
|
|
56
57
|
envKeys: ["ELIZAOS_CLOUD_API_KEY", "ELIZAOS_CLOUD_ENABLED"],
|
|
57
58
|
},
|
|
58
59
|
|
|
60
|
+
// Plugin-wide registration priority. Applied to every model handler in
|
|
61
|
+
// the `models` map below. Higher numbers win the native runtime priority
|
|
62
|
+
// sort.
|
|
63
|
+
//
|
|
64
|
+
// Why 50: in `manual` routing mode (`routing-preferences.ts`) with no
|
|
65
|
+
// `preferredProvider` set for a slot, the runtime falls through to the
|
|
66
|
+
// native priority order. Putting cloud above the default-0 of other
|
|
67
|
+
// direct provider plugins (anthropic, openai, groq, elevenlabs) means
|
|
68
|
+
// Eliza Cloud wins the "user has paired Cloud but hasn't picked anything
|
|
69
|
+
// specific" case — which is the desired text-generation default.
|
|
70
|
+
//
|
|
71
|
+
// **TTS routing precedence is governed by the router-handler**
|
|
72
|
+
// (`plugin-local-inference/src/services/router-handler.ts`) at
|
|
73
|
+
// MAX_SAFE_INTEGER priority, which reads the per-slot `RoutingPolicy`
|
|
74
|
+
// (default `prefer-local`) and dispatches to local first when available.
|
|
75
|
+
// This plugin's priority does NOT control whether local TTS wins; the
|
|
76
|
+
// router does. See `plugin-local-inference/native/AGENTS.md` §1 for the
|
|
77
|
+
// canonical voice/ASR routing contract.
|
|
78
|
+
//
|
|
79
|
+
// Cloud TTS still works as a fallback when local is unavailable: the
|
|
80
|
+
// handler throws `CloudTtsUnavailableError` when cloud isn't connected
|
|
81
|
+
// and the router's per-pick retry loop falls through to the next
|
|
82
|
+
// eligible provider (local kokoro / omnivoice, plugin-elevenlabs, ...).
|
|
83
|
+
priority: 50,
|
|
84
|
+
|
|
59
85
|
config: {
|
|
60
86
|
ELIZAOS_CLOUD_API_KEY: env.ELIZAOS_CLOUD_API_KEY ?? null,
|
|
61
87
|
ELIZAOS_CLOUD_BASE_URL: env.ELIZAOS_CLOUD_BASE_URL ?? null,
|
|
@@ -106,6 +132,14 @@ export const elizaOSCloudPlugin: Plugin = {
|
|
|
106
132
|
initializeOpenAI(config, runtime);
|
|
107
133
|
},
|
|
108
134
|
|
|
135
|
+
// ─── Runtime Event Handlers ──────────────────────────────────────────
|
|
136
|
+
// Forwards per-inference token + USD spend to waifu's burn meter when the
|
|
137
|
+
// container is provisioned as a hosted waifu agent (inactive otherwise). See
|
|
138
|
+
// utils/waifu-metering.ts for the honest-meter rationale.
|
|
139
|
+
events: {
|
|
140
|
+
MODEL_USED: [createWaifuMeteringHandler()],
|
|
141
|
+
},
|
|
142
|
+
|
|
109
143
|
// ─── Cloud Services ──────────────────────────────────────────────────
|
|
110
144
|
// Services are registered in dependency order:
|
|
111
145
|
// 1. CloudAuthService — must start first (other services depend on it)
|
|
@@ -139,6 +173,10 @@ export const elizaOSCloudPlugin: Plugin = {
|
|
|
139
173
|
// ─── Inference Model Handlers ────────────────────────────────────────
|
|
140
174
|
models: {
|
|
141
175
|
[ModelType.TEXT_EMBEDDING]: handleTextEmbedding,
|
|
176
|
+
// Batch path: one request embeds N texts (the embedding-drain service uses
|
|
177
|
+
// this to collapse ~19 serial single-text round-trips into ~2 batched calls).
|
|
178
|
+
[ModelType.TEXT_EMBEDDING_BATCH]: (runtime, params: { texts: string[] }) =>
|
|
179
|
+
handleBatchTextEmbedding(runtime, params.texts),
|
|
142
180
|
[TEXT_NANO_MODEL_TYPE]: handleTextNano,
|
|
143
181
|
[TEXT_MEDIUM_MODEL_TYPE]: handleTextMedium,
|
|
144
182
|
[ModelType.TEXT_SMALL]: handleTextSmall,
|
|
@@ -149,6 +187,7 @@ export const elizaOSCloudPlugin: Plugin = {
|
|
|
149
187
|
[ModelType.RESEARCH]: handleResearch,
|
|
150
188
|
[ModelType.IMAGE]: handleImageGeneration,
|
|
151
189
|
[ModelType.IMAGE_DESCRIPTION]: handleImageDescription,
|
|
190
|
+
[ModelType.TEXT_TO_SPEECH]: handleTextToSpeech,
|
|
152
191
|
},
|
|
153
192
|
|
|
154
193
|
tests: [
|
|
@@ -299,6 +338,18 @@ export const elizaOSCloudPlugin: Plugin = {
|
|
|
299
338
|
],
|
|
300
339
|
},
|
|
301
340
|
],
|
|
341
|
+
|
|
342
|
+
async dispose(runtime) {
|
|
343
|
+
// Stop in reverse dependency order (auth last since others depend on it).
|
|
344
|
+
await runtime.getService(CloudCredentialProvider.serviceType)?.stop();
|
|
345
|
+
await runtime.getService(CloudBackupService.serviceType)?.stop();
|
|
346
|
+
await runtime.getService(CloudBridgeService.serviceType)?.stop();
|
|
347
|
+
await runtime.getService(CloudContainerService.serviceType)?.stop();
|
|
348
|
+
await runtime.getService(CloudModelRegistryService.serviceType)?.stop();
|
|
349
|
+
await runtime.getService(CloudManagedGatewayRelayService.serviceType)?.stop();
|
|
350
|
+
await runtime.getService(CloudBootstrapServiceImpl.serviceType)?.stop();
|
|
351
|
+
await runtime.getService(CloudAuthService.serviceType)?.stop();
|
|
352
|
+
},
|
|
302
353
|
};
|
|
303
354
|
|
|
304
355
|
export default elizaOSCloudPlugin;
|
|
@@ -313,7 +364,17 @@ export {
|
|
|
313
364
|
} from "./routes/cloud-routes-autonomous";
|
|
314
365
|
export type { CloudConfigLike } from "./routes/cloud-routes-autonomous";
|
|
315
366
|
export { handleCloudStatusRoutes } from "./routes/cloud-status-routes";
|
|
316
|
-
export {
|
|
367
|
+
export { runCloudSetup, type CloudSetupResult } from "./cloud-setup";
|
|
368
|
+
export { ClackObserver } from "./cloud/clack-observer";
|
|
369
|
+
export { NullCloudSetupObserver } from "./cloud/null-observer";
|
|
370
|
+
export type {
|
|
371
|
+
AvailabilityResult,
|
|
372
|
+
CloudSetupObserver,
|
|
373
|
+
ConfirmPrompt,
|
|
374
|
+
ProvisionSuccessInfo,
|
|
375
|
+
SelectChoiceOption,
|
|
376
|
+
SelectChoicePrompt,
|
|
377
|
+
} from "./cloud/setup-observer";
|
|
317
378
|
export { CloudManager, type CloudManagerCallbacks } from "./cloud/cloud-manager";
|
|
318
379
|
export {
|
|
319
380
|
type CloudWalletDescriptor,
|
|
@@ -337,10 +398,26 @@ export {
|
|
|
337
398
|
resolveCloudTtsBaseUrl,
|
|
338
399
|
resolveElevenLabsApiKeyForCloudMode,
|
|
339
400
|
} from "./lib/server-cloud-tts";
|
|
401
|
+
export {
|
|
402
|
+
fetchCloudVoiceCatalog,
|
|
403
|
+
resetCloudVoiceCatalogCacheForTesting,
|
|
404
|
+
setCloudVoiceClientFactoryForTesting,
|
|
405
|
+
type CloudVoiceCatalogEntry,
|
|
406
|
+
type CloudVoiceClient,
|
|
407
|
+
} from "./cloud-voice-catalog";
|
|
408
|
+
export {
|
|
409
|
+
CloudTtsUnavailableError,
|
|
410
|
+
type CloudTextToSpeechParams,
|
|
411
|
+
} from "./models/speech";
|
|
340
412
|
export {
|
|
341
413
|
normalizeCloudSiteUrl,
|
|
342
414
|
resolveCloudApiBaseUrl,
|
|
343
415
|
} from "./cloud/base-url";
|
|
416
|
+
export {
|
|
417
|
+
isCloudAuthApiKeyService,
|
|
418
|
+
normalizeCloudApiKey,
|
|
419
|
+
type CloudAuthApiKeyService,
|
|
420
|
+
} from "./cloud/auth-service-types";
|
|
344
421
|
export { validateCloudBaseUrl } from "./cloud/validate-url";
|
|
345
422
|
export * from "./plugin";
|
|
346
423
|
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
|
-
|
|
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
|
-
|
|
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",
|
package/src/lib/cloud-secrets.ts
CHANGED
|
@@ -1,58 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sealed in-process secret store for cloud credentials.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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";
|
package/src/lib/config-like.ts
CHANGED
|
@@ -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
|
|
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
|
|
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" };
|