@elizaos/plugin-elizacloud 2.0.3-beta.2 → 2.0.3-beta.4
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/dist/cjs/index.node.cjs +32 -8
- package/dist/cjs/index.node.js.map +7 -7
- package/dist/cloud/auth-service-types.js +1 -1
- package/dist/cloud/auth-service-types.js.map +1 -1
- package/dist/cloud/auth.js +1 -1
- package/dist/cloud/auth.js.map +1 -1
- package/dist/cloud/backup.js +1 -1
- package/dist/cloud/backup.js.map +1 -1
- package/dist/cloud/base-url.js +1 -1
- package/dist/cloud/base-url.js.map +1 -1
- package/dist/cloud/bridge-client.js +1 -1
- package/dist/cloud/bridge-client.js.map +1 -1
- package/dist/cloud/clack-observer.js +1 -1
- package/dist/cloud/clack-observer.js.map +1 -1
- package/dist/cloud/cloud-api-key.js +1 -1
- package/dist/cloud/cloud-api-key.js.map +1 -1
- package/dist/cloud/cloud-manager.js +1 -1
- package/dist/cloud/cloud-manager.js.map +1 -1
- package/dist/cloud/cloud-proxy.js +1 -1
- package/dist/cloud/cloud-proxy.js.map +1 -1
- package/dist/cloud/cloud-wallet.js +1 -1
- package/dist/cloud/cloud-wallet.js.map +1 -1
- package/dist/cloud/duffel-client.js +1 -1
- package/dist/cloud/duffel-client.js.map +1 -1
- package/dist/cloud/index.js +914 -11
- package/dist/cloud/index.js.map +13 -4
- package/dist/cloud/lifeops-schedule-sync-client.js +1 -1
- package/dist/cloud/lifeops-schedule-sync-client.js.map +1 -1
- package/dist/cloud/lifeops-schedule-sync-contracts.js +1 -1
- package/dist/cloud/lifeops-schedule-sync-contracts.js.map +1 -1
- package/dist/cloud/managed-payment-clients.js +1 -1
- package/dist/cloud/managed-payment-clients.js.map +1 -1
- package/dist/cloud/null-observer.js +1 -1
- package/dist/cloud/null-observer.js.map +1 -1
- package/dist/cloud/reconnect.js +1 -1
- package/dist/cloud/reconnect.js.map +1 -1
- package/dist/cloud/validate-url.js +1 -1
- package/dist/cloud/validate-url.js.map +1 -1
- package/dist/cloud/x402-payment-handler.js +1 -1
- package/dist/cloud/x402-payment-handler.js.map +1 -1
- package/dist/cloud-providers/cloud-status.js +1 -1
- package/dist/cloud-providers/cloud-status.js.map +1 -1
- package/dist/cloud-providers/container-health.js +1 -1
- package/dist/cloud-providers/container-health.js.map +1 -1
- package/dist/cloud-providers/credit-balance.js +1 -1
- package/dist/cloud-providers/credit-balance.js.map +1 -1
- package/dist/cloud-providers/index.js +1 -1
- package/dist/cloud-providers/index.js.map +1 -1
- package/dist/cloud-providers/model-registry.js +1 -1
- package/dist/cloud-providers/model-registry.js.map +1 -1
- package/dist/cloud-setup.js +1 -1
- package/dist/cloud-setup.js.map +1 -1
- package/dist/cloud-voice-catalog.js +1 -1
- package/dist/cloud-voice-catalog.js.map +2 -2
- package/dist/index.js +45 -16
- package/dist/index.js.map +9 -8
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/lib/cloud-connection.js +1 -1
- package/dist/lib/cloud-connection.js.map +1 -1
- package/dist/lib/cloud-secrets.js +1 -1
- package/dist/lib/cloud-secrets.js.map +1 -1
- package/dist/lib/config-env.js +1 -1
- package/dist/lib/config-env.js.map +1 -1
- package/dist/lib/config-like.js +1 -1
- package/dist/lib/config-like.js.map +1 -1
- package/dist/lib/credential-type-map.js +1 -1
- package/dist/lib/credential-type-map.js.map +1 -1
- package/dist/lib/feature-flags.js +1 -1
- package/dist/lib/feature-flags.js.map +1 -1
- package/dist/lib/http.js +1 -1
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/server-cloud-tts.js +1 -1
- package/dist/lib/server-cloud-tts.js.map +1 -1
- package/dist/lib/state-paths.js +1 -1
- package/dist/lib/state-paths.js.map +1 -1
- package/dist/lib/tts-debug.js +1 -1
- package/dist/lib/tts-debug.js.map +1 -1
- package/dist/models/embeddings.d.ts.map +1 -1
- package/dist/models/embeddings.js +4 -1
- package/dist/models/embeddings.js.map +3 -3
- package/dist/models/image.js +1 -1
- package/dist/models/image.js.map +1 -1
- package/dist/models/index.js +32 -8
- package/dist/models/index.js.map +5 -5
- package/dist/models/research.js +1 -1
- package/dist/models/research.js.map +1 -1
- package/dist/models/speech.js +1 -1
- package/dist/models/speech.js.map +2 -2
- package/dist/models/text.d.ts +1 -0
- package/dist/models/text.d.ts.map +1 -1
- package/dist/models/text.js +30 -8
- package/dist/models/text.js.map +3 -3
- package/dist/models/tokenization.js +1 -1
- package/dist/models/tokenization.js.map +1 -1
- package/dist/models/transcription.js +1 -1
- package/dist/models/transcription.js.map +1 -1
- package/dist/node/index.node.js +32 -8
- package/dist/node/index.node.js.map +7 -7
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/providers/openai.js +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/register-routes.js +1 -1
- package/dist/register-routes.js.map +1 -1
- package/dist/routes/cloud-billing-routes.js +1 -1
- package/dist/routes/cloud-billing-routes.js.map +1 -1
- package/dist/routes/cloud-coding-container-routes.js +1 -1
- package/dist/routes/cloud-coding-container-routes.js.map +1 -1
- package/dist/routes/cloud-compat-routes.js +1 -1
- package/dist/routes/cloud-compat-routes.js.map +1 -1
- package/dist/routes/cloud-features-routes.js +1 -1
- package/dist/routes/cloud-features-routes.js.map +1 -1
- package/dist/routes/cloud-provisioning.js +1 -1
- package/dist/routes/cloud-provisioning.js.map +1 -1
- package/dist/routes/cloud-relay-routes.js +1 -1
- package/dist/routes/cloud-relay-routes.js.map +1 -1
- package/dist/routes/cloud-routes-autonomous.js +1 -1
- package/dist/routes/cloud-routes-autonomous.js.map +1 -1
- package/dist/routes/cloud-routes.js +1 -1
- package/dist/routes/cloud-routes.js.map +1 -1
- package/dist/routes/cloud-status-routes-autonomous.js +1 -1
- package/dist/routes/cloud-status-routes-autonomous.js.map +1 -1
- package/dist/routes/cloud-status-routes.js +1 -1
- package/dist/routes/cloud-status-routes.js.map +1 -1
- package/dist/routes/home-remote-runner-access-url.js +1 -1
- package/dist/routes/home-remote-runner-access-url.js.map +1 -1
- package/dist/routes/travel-provider-relay-routes.js +1 -1
- package/dist/routes/travel-provider-relay-routes.js.map +1 -1
- package/dist/services/cloud-auth.js +1 -1
- package/dist/services/cloud-auth.js.map +1 -1
- package/dist/services/cloud-backup.js +1 -1
- package/dist/services/cloud-backup.js.map +1 -1
- package/dist/services/cloud-bootstrap.js +1 -1
- package/dist/services/cloud-bootstrap.js.map +1 -1
- package/dist/services/cloud-bridge.js +1 -1
- package/dist/services/cloud-bridge.js.map +1 -1
- package/dist/services/cloud-container.js +1 -1
- package/dist/services/cloud-container.js.map +1 -1
- package/dist/services/cloud-credential-provider.js +1 -1
- package/dist/services/cloud-credential-provider.js.map +1 -1
- package/dist/services/cloud-managed-gateway-relay.js +1 -1
- package/dist/services/cloud-managed-gateway-relay.js.map +1 -1
- package/dist/services/cloud-model-registry.js +1 -1
- package/dist/services/cloud-model-registry.js.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/types/cloud.js +1 -1
- package/dist/types/cloud.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/cloud-api.js +1 -1
- package/dist/utils/cloud-api.js.map +1 -1
- package/dist/utils/cloud-sdk/client.js +1 -1
- package/dist/utils/cloud-sdk/client.js.map +1 -1
- package/dist/utils/cloud-sdk/http.js +1 -1
- package/dist/utils/cloud-sdk/http.js.map +1 -1
- package/dist/utils/cloud-sdk/index.js +1 -1
- package/dist/utils/cloud-sdk/index.js.map +1 -1
- package/dist/utils/cloud-sdk/public-routes.js +1 -1
- package/dist/utils/cloud-sdk/public-routes.js.map +1 -1
- package/dist/utils/cloud-sdk/types.js +1 -1
- package/dist/utils/cloud-sdk/types.js.map +1 -1
- package/dist/utils/config.js +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/events.js +1 -1
- package/dist/utils/events.js.map +1 -1
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/responses-output.js +1 -1
- package/dist/utils/responses-output.js.map +1 -1
- package/dist/utils/sdk-client.js +1 -1
- package/dist/utils/sdk-client.js.map +1 -1
- package/dist/utils/waifu-metering.js +1 -1
- package/dist/utils/waifu-metering.js.map +1 -1
- package/package.json +6 -5
- package/registry-entry.json +208 -0
- package/src/cloud-voice-catalog.ts +2 -2
- package/src/index.ts +1 -1
- package/src/models/embeddings.ts +9 -0
- package/src/models/speech.ts +2 -2
- package/src/models/text.ts +54 -6
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import type { Service } from \"@elizaos/core\";\n\nexport interface CloudAuthApiKeyService {\n isAuthenticated: () => boolean;\n getApiKey?: () => string | undefined;\n}\n\nexport function isCloudAuthApiKeyService(\n value: Service | null | undefined,\n): value is Service & CloudAuthApiKeyService {\n return (\n value !== null &&\n value !== undefined &&\n typeof (value as Partial<CloudAuthApiKeyService>).isAuthenticated ===\n \"function\"\n );\n}\n\nexport function normalizeCloudApiKey(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (!trimmed || trimmed.toUpperCase() === \"[REDACTED]\") return null;\n return trimmed;\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;AAOO,SAAS,wBAAwB,CACtC,OAC2C;AAAA,EAC3C,OACE,UAAU,QACV,UAAU,aACV,OAAQ,MAA0C,oBAChD;AAAA;AAIC,SAAS,oBAAoB,CAAC,OAAiD;AAAA,EACpF,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,UAAU,MAAM,KAAK;AAAA,EAC3B,IAAI,CAAC,WAAW,QAAQ,YAAY,MAAM;AAAA,IAAc,OAAO;AAAA,EAC/D,OAAO;AAAA;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "069F91BDFD5A0E4864756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/cloud/auth.js
CHANGED
package/dist/cloud/auth.js.map
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
"/**\n * Eliza Cloud login flow — reuses the CLI auth session pattern:\n * create session, open browser, poll until authenticated, return API key.\n */\n\nimport crypto from \"node:crypto\";\nimport { logger } from \"@elizaos/core\";\nimport { normalizeCloudSiteUrl } from \"./base-url.js\";\nimport { validateCloudBaseUrl } from \"./validate-url.js\";\n\nexport interface CloudLoginResult {\n apiKey: string;\n keyPrefix: string;\n expiresAt: string | null;\n}\n\nexport interface CloudLoginOptions {\n baseUrl?: string;\n timeoutMs?: number;\n requestTimeoutMs?: number;\n pollIntervalMs?: number;\n onBrowserUrl?: (url: string) => void;\n onPollStatus?: (status: string) => void;\n}\n\nconst DEFAULT_CLOUD_REQUEST_TIMEOUT_MS = 10_000;\n\nfunction isRedirectResponse(response: Response): boolean {\n return response.status >= 300 && response.status < 400;\n}\n\nfunction isTimeoutError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n if (err.name === \"TimeoutError\" || err.name === \"AbortError\") return true;\n const msg = err.message.toLowerCase();\n return msg.includes(\"timed out\") || msg.includes(\"timeout\");\n}\n\nasync function fetchWithTimeout(\n input: string,\n init: RequestInit,\n timeoutMs: number,\n): Promise<Response> {\n return fetch(input, {\n ...init,\n redirect: \"manual\",\n signal: AbortSignal.timeout(timeoutMs),\n });\n}\n\nexport async function cloudLogin(\n options: CloudLoginOptions = {},\n): Promise<CloudLoginResult> {\n const baseUrl = normalizeCloudSiteUrl(options.baseUrl);\n const urlError = await validateCloudBaseUrl(baseUrl);\n if (urlError) {\n throw new Error(urlError);\n }\n const timeoutMs = options.timeoutMs ?? 300_000;\n const requestTimeoutMs =\n options.requestTimeoutMs ?? DEFAULT_CLOUD_REQUEST_TIMEOUT_MS;\n const pollIntervalMs = options.pollIntervalMs ?? 2_000;\n const sessionId = crypto.randomUUID();\n\n logger.info(\"[cloud-auth] Creating auth session...\");\n\n let createResponse: Response;\n try {\n createResponse = await fetchWithTimeout(\n `${baseUrl}/api/auth/cli-session`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ sessionId }),\n },\n requestTimeoutMs,\n );\n } catch (err) {\n if (isTimeoutError(err)) {\n throw new Error(\n `Cloud login request timed out while creating session (>${requestTimeoutMs}ms).`,\n );\n }\n throw new Error(`Failed to create auth session: ${String(err)}`);\n }\n\n if (!createResponse.ok) {\n if (isRedirectResponse(createResponse)) {\n throw new Error(\n \"Cloud login request was redirected; redirects are not allowed.\",\n );\n }\n const errorText = await createResponse.text();\n throw new Error(\n `Failed to create auth session (HTTP ${createResponse.status}): ${errorText}`,\n );\n }\n\n const browserUrl = `${baseUrl}/auth/cli-login?session=${encodeURIComponent(sessionId)}`;\n logger.info(`[cloud-auth] Browser URL: ${browserUrl}`);\n options.onBrowserUrl?.(browserUrl);\n\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n const remainingBeforeSleep = deadline - Date.now();\n if (remainingBeforeSleep <= 0) break;\n await new Promise((resolve) =>\n setTimeout(resolve, Math.min(pollIntervalMs, remainingBeforeSleep)),\n );\n\n const remaining = deadline - Date.now();\n if (remaining <= 0) break;\n\n let pollResponse: Response;\n try {\n pollResponse = await fetchWithTimeout(\n `${baseUrl}/api/auth/cli-session/${encodeURIComponent(sessionId)}`,\n {},\n Math.min(requestTimeoutMs, remaining),\n );\n } catch (err) {\n if (isTimeoutError(err)) {\n if (remaining <= requestTimeoutMs) {\n break;\n }\n throw new Error(\n `Cloud login polling request timed out (>${Math.min(requestTimeoutMs, remaining)}ms).`,\n );\n }\n throw new Error(`Cloud login polling failed: ${String(err)}`);\n }\n\n if (!pollResponse.ok) {\n if (isRedirectResponse(pollResponse)) {\n throw new Error(\n \"Cloud login polling request was redirected; redirects are not allowed.\",\n );\n }\n if (pollResponse.status === 404) {\n throw new Error(\"Auth session expired or not found. Please try again.\");\n }\n options.onPollStatus?.(\"error\");\n continue;\n }\n\n const data = (await pollResponse.json()) as {\n status: string;\n apiKey?: string;\n keyPrefix?: string;\n expiresAt?: string;\n };\n\n options.onPollStatus?.(data.status);\n\n if (data.status === \"authenticated\" && data.apiKey) {\n logger.info(\"[cloud-auth] Authentication complete\");\n return {\n apiKey: data.apiKey,\n keyPrefix: data.keyPrefix ?? \"\",\n expiresAt: data.expiresAt ?? null,\n };\n }\n\n if (data.status === \"authenticated\" && !data.apiKey) {\n throw new Error(\n \"Auth session was completed but the API key was already retrieved. Please try logging in again.\",\n );\n }\n }\n\n throw new Error(\n `Cloud login timed out. The browser login was not completed within ${Math.round(timeoutMs / 1000)} seconds.`,\n );\n}\n"
|
|
8
8
|
],
|
|
9
9
|
"mappings": "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",
|
|
10
|
-
"debugId": "
|
|
10
|
+
"debugId": "7265A8E571E6B06B64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/dist/cloud/backup.js
CHANGED
package/dist/cloud/backup.js.map
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Periodic state backup scheduler for cloud sandboxes.\n * Default interval: 60s. Configurable via cloud.backup.autoBackupIntervalMs.\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { ElizaCloudClient } from \"./bridge-client.js\";\n\nexport class BackupScheduler {\n private timer: ReturnType<typeof setInterval> | null = null;\n private running = false;\n\n constructor(\n private client: ElizaCloudClient,\n private agentId: string,\n private intervalMs: number = 60_000,\n ) {}\n\n start(): void {\n if (this.timer) return;\n this.running = true;\n this.timer = setInterval(() => {\n this.client.snapshot(this.agentId).catch((err) => {\n logger.warn(`[cloud-backup] Auto-backup failed: ${String(err)}`);\n });\n }, this.intervalMs);\n }\n\n stop(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this.running = false;\n }\n\n isRunning(): boolean {\n return this.running;\n }\n\n async finalSnapshot(): Promise<void> {\n await this.client.snapshot(this.agentId).catch((err) => {\n logger.warn(`[cloud-backup] Final snapshot failed: ${String(err)}`);\n });\n }\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;AAKA;AAAA;AAGO,MAAM,gBAAgB;AAAA,EAKjB;AAAA,EACA;AAAA,EACA;AAAA,EANF,QAA+C;AAAA,EAC/C,UAAU;AAAA,EAElB,WAAW,CACD,QACA,SACA,aAAqB,OAC7B;AAAA,IAHQ;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGV,KAAK,GAAS;AAAA,IACZ,IAAI,KAAK;AAAA,MAAO;AAAA,IAChB,KAAK,UAAU;AAAA,IACf,KAAK,QAAQ,YAAY,MAAM;AAAA,MAC7B,KAAK,OAAO,SAAS,KAAK,OAAO,EAAE,MAAM,CAAC,QAAQ;AAAA,QAChD,OAAO,KAAK,sCAAsC,OAAO,GAAG,GAAG;AAAA,OAChE;AAAA,OACA,KAAK,UAAU;AAAA;AAAA,EAGpB,IAAI,GAAS;AAAA,IACX,IAAI,KAAK,OAAO;AAAA,MACd,cAAc,KAAK,KAAK;AAAA,MACxB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,UAAU;AAAA;AAAA,EAGjB,SAAS,GAAY;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,OAGR,cAAa,GAAkB;AAAA,IACnC,MAAM,KAAK,OAAO,SAAS,KAAK,OAAO,EAAE,MAAM,CAAC,QAAQ;AAAA,MACtD,OAAO,KAAK,yCAAyC,OAAO,GAAG,GAAG;AAAA,KACnE;AAAA;AAEL;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "5D02D4A7A6E31A6664756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/cloud/base-url.js
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Cloud site/API URL normalizer. The implementation moved to\n * `@elizaos/shared/elizacloud/base-url` so host-layer packages can normalize\n * URLs without reverse-importing this plugin.\n */\nexport { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from \"@elizaos/shared\";\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;AAKA;AAAA;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "B2ABB1DE7094CA1A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"/**\n * HTTP client for the Eliza Cloud Eliza Sandbox API.\n */\nimport { normalizeCloudSiteUrl } from \"./base-url.js\";\n\nexport type CloudChainType = \"evm\" | \"solana\";\nexport type CloudWalletProvider = \"privy\" | \"steward\";\n\nexport interface CloudWalletDescriptor {\n agentWalletId: string;\n walletAddress: string;\n walletProvider: CloudWalletProvider;\n chainType: CloudChainType;\n balance?: string | number;\n}\n\ninterface CloudWalletAddresses {\n evm?: string | null;\n solana?: string | null;\n}\n\nexport interface SignedRpcEnvelope {\n clientAddress: string;\n payload: {\n method: string;\n params: unknown[];\n };\n nonce: string;\n timestamp: number;\n signature: string;\n correlationId?: string;\n}\n\nexport interface RpcResult {\n [key: string]: unknown;\n}\n\nexport class CloudBridgeError extends Error {\n constructor(\n message: string,\n public readonly status?: number,\n public readonly body?: string,\n ) {\n super(message);\n this.name = \"CloudBridgeError\";\n }\n}\n\nexport class SignatureInvalidError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 401, body);\n this.name = \"SignatureInvalidError\";\n }\n}\n\nexport class NonceReplayError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 409, body);\n this.name = \"NonceReplayError\";\n }\n}\n\nexport class SessionExpiredError extends CloudBridgeError {\n constructor(message: string, body?: string) {\n super(message, 410, body);\n this.name = \"SessionExpiredError\";\n }\n}\n\nexport class CloudUnavailableError extends CloudBridgeError {\n constructor(message: string, status: number, body?: string) {\n super(message, status, body);\n this.name = \"CloudUnavailableError\";\n }\n}\n\nexport interface CloudAgent {\n id: string;\n agentName: string;\n status: string;\n databaseStatus: string;\n bridgeUrl?: string;\n lastBackupAt?: string;\n lastHeartbeatAt?: string;\n errorMessage?: string;\n errorCount?: number;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface CloudAgentCreateParams {\n agentName: string;\n agentConfig?: Record<string, unknown>;\n environmentVars?: Record<string, string>;\n}\n\nexport interface ProvisionInfo {\n id: string;\n agentName: string;\n status: string;\n bridgeUrl?: string;\n healthUrl?: string;\n}\n\nexport interface BackupInfo {\n id: string;\n snapshotType: string;\n sizeBytes: number | null;\n createdAt: string;\n}\n\nexport type ChatChannelType =\n | \"DM\"\n | \"GROUP\"\n | \"VOICE_DM\"\n | \"VOICE_GROUP\"\n | \"API\";\n\ninterface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: string;\n}\n\nfunction formatApiErrorBody(text: string): string | null {\n if (!text) return null;\n try {\n const parsed = JSON.parse(text) as {\n error?: unknown;\n details?: Array<{ message?: unknown }>;\n };\n const baseError =\n typeof parsed.error === \"string\" && parsed.error.trim().length > 0\n ? parsed.error.trim()\n : null;\n const details = Array.isArray(parsed.details)\n ? parsed.details\n .map((detail) =>\n typeof detail?.message === \"string\" ? detail.message.trim() : \"\",\n )\n .filter((message) => message.length > 0)\n : [];\n if (baseError && details.length > 0) {\n return `${baseError}: ${details.join(\"; \")}`;\n }\n if (baseError) return baseError;\n } catch {\n /* plain text */\n }\n\n return text.slice(0, 200) || null;\n}\n\nfunction isRedirectResponse(response: Response): boolean {\n return response.status >= 300 && response.status < 400;\n}\n\nfunction normalizeChainAddress(\n addresses: CloudWalletAddresses | null | undefined,\n chain: CloudChainType,\n): string | null {\n const value = addresses?.[chain];\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction looksLikeChainAddress(\n address: string,\n chain: CloudChainType,\n): boolean {\n if (chain === \"evm\") {\n return /^0x[a-fA-F0-9]{40}$/.test(address);\n }\n\n return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);\n}\n\nfunction resolveRequestedWalletAddress(\n data: {\n walletAddress: string | null;\n walletAddresses?: CloudWalletAddresses | null;\n },\n chain: CloudChainType,\n): string | null {\n const explicit = normalizeChainAddress(data.walletAddresses, chain);\n if (explicit) return explicit;\n if (typeof data.walletAddress !== \"string\") return null;\n\n const trimmed = data.walletAddress.trim();\n if (!trimmed) return null;\n return looksLikeChainAddress(trimmed, chain) ? trimmed : null;\n}\n\nexport class ElizaCloudClient {\n private baseUrl: string;\n private apiKey: string;\n\n constructor(baseUrl: string, apiKey: string) {\n this.baseUrl = normalizeCloudSiteUrl(baseUrl);\n this.apiKey = apiKey;\n }\n\n async listAgents(): Promise<CloudAgent[]> {\n const res = await this.request<CloudAgent[]>(\"GET\", \"/api/v1/eliza/agents\");\n return res.data ?? [];\n }\n\n async createAgent(params: CloudAgentCreateParams): Promise<CloudAgent> {\n const res = await this.request<CloudAgent>(\n \"POST\",\n \"/api/v1/eliza/agents\",\n params,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Failed to create cloud agent\");\n return res.data;\n }\n\n async getAgent(agentId: string): Promise<CloudAgent> {\n const res = await this.request<CloudAgent>(\n \"GET\",\n `/api/v1/eliza/agents/${agentId}`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Agent not found\");\n return res.data;\n }\n\n async deleteAgent(agentId: string): Promise<void> {\n const res = await this.request<void>(\n \"DELETE\",\n `/api/v1/eliza/agents/${agentId}`,\n );\n if (!res.success) throw new Error(res.error ?? \"Failed to delete agent\");\n }\n\n async provision(agentId: string): Promise<ProvisionInfo> {\n const res = await this.request<ProvisionInfo>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/provision`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Failed to provision sandbox\");\n return res.data;\n }\n\n async sendMessage(\n agentId: string,\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): Promise<string> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/bridge`;\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-Api-Key\": this.apiKey },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: crypto.randomUUID(),\n method: \"message.send\",\n params: { text, roomId, channelType },\n }),\n redirect: \"manual\",\n signal: AbortSignal.timeout(60_000),\n });\n\n if (isRedirectResponse(response)) {\n throw new Error(\n \"Bridge request was redirected; redirects are not allowed\",\n );\n }\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"\");\n throw new Error(\n `Bridge request failed: HTTP ${response.status} ${errorText.slice(0, 200)}`,\n );\n }\n\n const rpc = (await response.json()) as {\n result?: { text?: string };\n error?: { code: number; message: string };\n };\n\n if (rpc.error) throw new Error(rpc.error.message);\n return rpc.result?.text ?? \"(no response)\";\n }\n\n async *sendMessageStream(\n agentId: string,\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): AsyncGenerator<{ type: string; data: Record<string, unknown> }> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/stream`;\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-Api-Key\": this.apiKey },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: crypto.randomUUID(),\n method: \"message.send\",\n params: { text, roomId, channelType },\n }),\n redirect: \"manual\",\n });\n\n if (isRedirectResponse(response)) {\n throw new Error(\n \"Stream request was redirected; redirects are not allowed\",\n );\n }\n\n if (!response.ok || !response.body) {\n throw new Error(`Stream request failed: HTTP ${response.status}`);\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() ?? \"\";\n\n for (const part of parts) {\n if (!part.trim()) continue;\n let eventType = \"message\";\n let eventData = \"\";\n\n for (const line of part.split(\"\\n\")) {\n if (line.startsWith(\"event: \")) eventType = line.slice(7).trim();\n else if (line.startsWith(\"data: \"))\n eventData += (eventData ? \"\\n\" : \"\") + line.slice(6);\n }\n\n if (eventData) {\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(eventData) as Record<string, unknown>;\n } catch {\n continue;\n }\n yield { type: eventType, data };\n }\n }\n }\n }\n\n async snapshot(agentId: string): Promise<BackupInfo> {\n const res = await this.request<BackupInfo>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/snapshot`,\n );\n if (!res.success || !res.data)\n throw new Error(res.error ?? \"Snapshot failed\");\n return res.data;\n }\n\n async listBackups(agentId: string): Promise<BackupInfo[]> {\n const res = await this.request<BackupInfo[]>(\n \"GET\",\n `/api/v1/eliza/agents/${agentId}/backups`,\n );\n return res.data ?? [];\n }\n\n async restore(agentId: string, backupId?: string): Promise<void> {\n const res = await this.request<void>(\n \"POST\",\n `/api/v1/eliza/agents/${agentId}/restore`,\n backupId ? { backupId } : {},\n );\n if (!res.success) throw new Error(res.error ?? \"Restore failed\");\n }\n\n async heartbeat(agentId: string): Promise<boolean> {\n const url = `${this.baseUrl}/api/v1/eliza/agents/${agentId}/bridge`;\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Api-Key\": this.apiKey,\n },\n body: JSON.stringify({ jsonrpc: \"2.0\", method: \"heartbeat\" }),\n redirect: \"manual\",\n signal: AbortSignal.timeout(10_000),\n });\n if (isRedirectResponse(response)) return false;\n return response.ok;\n } catch {\n return false;\n }\n }\n\n /**\n * Fetch the cloud-side wallet descriptor for an agent.\n * Uses the standard API-key auth (X-Api-Key).\n */\n async getAgentWallet(\n agentId: string,\n chain: CloudChainType,\n ): Promise<CloudWalletDescriptor> {\n const res = await this.request<{\n agentId?: string;\n walletAddress: string | null;\n walletAddresses?: CloudWalletAddresses | null;\n walletProvider: CloudWalletProvider | null;\n walletStatus?: string;\n balance?: string | number | null;\n chain?: string;\n }>(\n \"GET\",\n `/api/v1/eliza/agents/${encodeURIComponent(agentId)}/wallet?chain=${encodeURIComponent(chain)}`,\n );\n\n if (!res.success || !res.data) {\n throw new CloudBridgeError(res.error ?? \"Failed to fetch agent wallet\");\n }\n\n const data = res.data;\n const walletAddress = resolveRequestedWalletAddress(data, chain);\n if (!walletAddress || !data.walletProvider) {\n throw new CloudBridgeError(\n `Agent has no cloud ${chain} wallet provisioned`,\n );\n }\n\n return {\n agentWalletId: data.agentId ?? agentId,\n walletAddress,\n walletProvider: data.walletProvider,\n chainType: chain,\n balance: data.balance ?? undefined,\n };\n }\n\n /**\n * Provision a cloud-custodied server wallet tied to a local client address.\n * Idempotent server-side: returns the existing wallet if one already exists\n * for the (user, clientAddress, chain) tuple.\n */\n async provisionWallet(input: {\n chainType: CloudChainType;\n clientAddress: string;\n }): Promise<{\n walletId: string;\n address: string;\n chainType: CloudChainType;\n provider: CloudWalletProvider;\n }> {\n const res = await this.request<{\n id: string;\n address: string;\n chainType: CloudChainType;\n clientAddress: string;\n provider?: CloudWalletProvider;\n }>(\"POST\", \"/api/v1/user/wallets/provision\", input);\n\n if (!res.success || !res.data) {\n throw new CloudBridgeError(res.error ?? \"Failed to provision wallet\");\n }\n\n return {\n walletId: res.data.id,\n address: res.data.address,\n chainType: res.data.chainType,\n provider: res.data.provider ?? \"privy\",\n };\n }\n\n /**\n * Execute a signed RPC envelope through the cloud custodial signer.\n *\n * Auth: body-embedded wallet signature — we MUST NOT send X-Api-Key/Bearer\n * headers here. The cloud verifies the signature against the\n * agentServerWallets.client_address registered at provision time.\n *\n * Error mapping:\n * 401 → SignatureInvalidError\n * 409 → NonceReplayError\n * 410 → SessionExpiredError\n * 5xx → CloudUnavailableError\n */\n async executeRpc(envelope: SignedRpcEnvelope): Promise<RpcResult> {\n const { correlationId, ...body } = envelope;\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (correlationId) {\n headers[\"X-Correlation-Id\"] = correlationId;\n }\n\n let response: Response;\n try {\n response = await fetch(`${this.baseUrl}/api/v1/user/wallets/rpc`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n redirect: \"manual\",\n signal: AbortSignal.timeout(60_000),\n });\n } catch (err) {\n throw new CloudUnavailableError(\n `Cloud RPC network error: ${(err as Error).message}`,\n 0,\n );\n }\n\n if (isRedirectResponse(response)) {\n throw new CloudBridgeError(\n \"Cloud RPC request was redirected; redirects are not allowed\",\n response.status,\n );\n }\n\n const text = await response.text().catch(() => \"\");\n\n if (response.ok) {\n try {\n const parsed = JSON.parse(text) as ApiResponse<RpcResult>;\n if (!parsed.success || parsed.data === undefined) {\n throw new CloudBridgeError(\n parsed.error ?? \"Cloud RPC returned no data\",\n response.status,\n text,\n );\n }\n return parsed.data;\n } catch (err) {\n if (err instanceof CloudBridgeError) throw err;\n throw new CloudBridgeError(\n `Cloud RPC returned malformed JSON: ${(err as Error).message}`,\n response.status,\n text,\n );\n }\n }\n\n let errMessage = `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(text) as { error?: string };\n if (parsed.error) errMessage = parsed.error;\n } catch {\n if (text) errMessage = text.slice(0, 200);\n }\n\n if (response.status === 401) {\n throw new SignatureInvalidError(errMessage, text);\n }\n if (response.status === 409) {\n throw new NonceReplayError(errMessage, text);\n }\n if (response.status === 410) {\n throw new SessionExpiredError(errMessage, text);\n }\n if (response.status >= 500) {\n throw new CloudUnavailableError(errMessage, response.status, text);\n }\n throw new CloudBridgeError(errMessage, response.status, text);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<ApiResponse<T>> {\n const headers: Record<string, string> = { \"X-Api-Key\": this.apiKey };\n if (body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n redirect: \"manual\",\n signal: AbortSignal.timeout(30_000),\n });\n\n if (isRedirectResponse(response)) {\n return {\n success: false,\n error: \"Cloud API request was redirected; redirects are not allowed\",\n };\n }\n\n if (!response.ok) {\n const text = await response.text().catch(() => \"\");\n return {\n success: false,\n error: formatApiErrorBody(text) ?? `HTTP ${response.status}`,\n };\n }\n\n return (await response.json()) as ApiResponse<T>;\n }\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "976548C75A9D66B964756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * `@clack/prompts`-backed implementation of `CloudSetupObserver`.\n *\n * Used by the CLI first-time-setup flow. Wraps a lazily-loaded clack module\n * (so packaged desktop builds that never run interactive setup don't\n * pay the dep cost) and renders every observer event as a spinner update,\n * `log.info` / `log.warn`, or `confirm` / `select` prompt.\n *\n * @module cloud/clack-observer\n */\nimport { logger } from \"@elizaos/core\";\nimport type {\n CloudSetupObserver,\n ConfirmPrompt,\n ProvisionSuccessInfo,\n SelectChoicePrompt,\n} from \"./setup-observer.js\";\n\n/** Lazy-loaded @clack/prompts module type. */\ntype ClackModule = typeof import(\"@clack/prompts\");\n\ninterface ClackSpinner {\n start(message?: string): void;\n stop(message?: string): void;\n message(message?: string): void;\n}\n\n/**\n * Observer that drives a clack CLI session. One instance per setup run\n * — internal spinner state is reused across the auth + provisioning phases\n * so we don't stack overlapping spinners.\n */\nexport class ClackObserver implements CloudSetupObserver {\n private spinner: ClackSpinner | null = null;\n\n constructor(private readonly clack: ClackModule) {}\n\n // ── Spinner helpers ──────────────────────────────────────────────────\n private ensureSpinner(): ClackSpinner {\n if (!this.spinner) {\n this.spinner = this.clack.spinner();\n }\n return this.spinner;\n }\n\n private stopSpinner(message: string): void {\n if (this.spinner) {\n this.spinner.stop(message);\n this.spinner = null;\n } else {\n // No active spinner — render the line as a log.info so the\n // message isn't lost.\n this.clack.log.info(message);\n }\n }\n\n // ── Availability ─────────────────────────────────────────────────────\n onAvailabilityChecked(result: { ok: boolean; reason?: string }): void {\n if (!result.ok && result.reason) {\n this.clack.log.warn(result.reason);\n }\n }\n\n // ── Auth ─────────────────────────────────────────────────────────────\n onAuthStart(loginUrl: string): void {\n const spinner = this.ensureSpinner();\n spinner.start(\"Connecting to Eliza Cloud...\");\n // The auth flow's first callback fires when we have the login URL.\n spinner.stop(\"Opening your browser to log in...\");\n this.spinner = null;\n this.clack.log.info(`If the browser didn't open, visit:\\n ${loginUrl}`);\n const polling = this.ensureSpinner();\n polling.start(\"Waiting for login in browser...\");\n }\n\n onAuthBrowserOpenFailed(loginUrl: string, error: Error): void {\n // Previously swallowed at debug-level. Now visible: the user may have\n // missed the URL printed by onAuthStart, so re-emit it here with the\n // explicit \"couldn't open browser\" framing.\n this.clack.log.warn(\n `Could not open browser automatically (${error.message}). Visit this URL to continue:\\n ${loginUrl}`,\n );\n }\n\n onAuthPollStatus(status: string): void {\n if (status === \"pending\") {\n this.ensureSpinner().message(\"Waiting for login in browser...\");\n }\n }\n\n onAuthSuccess(): void {\n this.stopSpinner(\"✓ Logged in to Eliza Cloud!\");\n }\n\n onAuthFailure(message: string): void {\n this.stopSpinner(message);\n }\n\n // ── Provisioning ─────────────────────────────────────────────────────\n onProvisionStart(_agentName: string): void {\n const spinner = this.ensureSpinner();\n spinner.start(\"Creating your cloud agent...\");\n }\n\n onProvisionStatus(status: string): void {\n const spinner = this.ensureSpinner();\n switch (status) {\n case \"created\":\n spinner.message(\"Agent created! Provisioning cloud environment...\");\n break;\n case \"queued\":\n spinner.message(\"Queued — waiting for available slot...\");\n break;\n case \"provisioning\":\n spinner.message(\"Provisioning cloud environment...\");\n break;\n default:\n spinner.message(`Status: ${status}...`);\n }\n }\n\n onProvisionTimeout(_agentId: string, lastStatus: string): void {\n this.stopSpinner(\n `Provisioning timed out (last status: ${lastStatus}). The agent may still be starting up.`,\n );\n }\n\n onProvisionFailure(reason: string): void {\n this.stopSpinner(reason);\n }\n\n onProvisionSuccess(result: ProvisionSuccessInfo): void {\n this.stopSpinner(`☁️ Cloud agent \"${result.agentId}\" is running!`);\n }\n\n // ── Generic ──────────────────────────────────────────────────────────\n onNotice(message: string): void {\n this.clack.log.warn(message);\n }\n\n onFatalError(error: Error, context: string): void {\n logger.error(`[cloud-setup] ${context}: ${error.message}`);\n this.clack.log.error(`${context}: ${error.message}`);\n }\n\n // ── Prompts ──────────────────────────────────────────────────────────\n async confirm(prompt: ConfirmPrompt): Promise<boolean | null> {\n const args: {\n message: string;\n initialValue?: boolean;\n active?: string;\n inactive?: string;\n } = { message: prompt.message };\n\n if (prompt.defaultValue !== undefined) args.initialValue = prompt.defaultValue;\n if (prompt.activeLabel !== undefined) args.active = prompt.activeLabel;\n if (prompt.inactiveLabel !== undefined) args.inactive = prompt.inactiveLabel;\n\n const result = await this.clack.confirm(args);\n if (this.clack.isCancel(result)) return null;\n return result;\n }\n\n async selectChoice<T extends string>(\n prompt: SelectChoicePrompt<T>,\n ): Promise<T | null> {\n // Clack's `Option<Value>` is a conditional type that for `Value extends\n // Primitive` makes `label` optional. TS can't narrow the conditional\n // for an unresolved generic `T extends string`, so we describe the\n // option shape via Parameters of clack's `select` and let inference\n // pick it up. No `as unknown as` escape — the parameter type IS the\n // right type, we just have to address it positionally.\n type SelectOpts = Parameters<typeof this.clack.select<T>>[0];\n const options = prompt.options.map((option) => {\n const out = {\n label: option.label,\n value: option.value,\n ...(option.hint !== undefined ? { hint: option.hint } : {}),\n };\n return out;\n }) as SelectOpts[\"options\"];\n const result = await this.clack.select<T>({\n message: prompt.message,\n options,\n });\n if (this.clack.isCancel(result)) return null;\n return result;\n }\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "71549F624CDE611D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Cloud API key + base URL resolution.\n *\n * Resolves the Eliza Cloud API key and base URL from (in priority order):\n * 1. Explicit `config.cloud.apiKey` / `config.cloud.baseUrl`\n * 2. Runtime settings + character secrets (`ELIZAOS_CLOUD_API_KEY`)\n * 3. Process env (`ELIZAOS_CLOUD_API_KEY`, `ELIZAOS_CLOUD_BASE_URL`)\n *\n * Previously these helpers lived in `packages/agent/src/api/wallet-rpc.ts`\n * because the wallet uses Cloud RPC proxies. They are NOT wallet-specific —\n * cloud auth is consumed by cloud-status, cloud-billing, cloud-compat,\n * health, x-relay, and travel-provider-relay routes. Hosting them under\n * `cloud/` matches their actual ownership.\n */\n\nimport type { ElizaConfig } from \"../lib/config-like\";\n\nexport const DEFAULT_CLOUD_API_BASE_URL = \"https://elizacloud.ai/api/v1\";\n\nexport type CloudApiKeyRuntimeLike = {\n getSetting?: (key: string) => unknown;\n character?: {\n secrets?: Record<string, unknown>;\n } | null;\n} | null;\n\nexport function normalizeCloudSecret(\n value: string | null | undefined,\n): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction resolveRuntimeCloudApiKey(\n runtime?: CloudApiKeyRuntimeLike,\n): string | null {\n const fromSetting = runtime?.getSetting?.(\"ELIZAOS_CLOUD_API_KEY\");\n if (typeof fromSetting === \"string\") {\n return normalizeCloudSecret(fromSetting);\n }\n\n const fromSecrets = runtime?.character?.secrets?.ELIZAOS_CLOUD_API_KEY;\n return typeof fromSecrets === \"string\"\n ? normalizeCloudSecret(fromSecrets)\n : null;\n}\n\nexport function resolveCloudApiBaseUrl(\n rawBaseUrl?: string | null,\n): string | null {\n const candidate =\n normalizeCloudSecret(rawBaseUrl ?? process.env.ELIZAOS_CLOUD_BASE_URL) ??\n DEFAULT_CLOUD_API_BASE_URL;\n try {\n const parsed = new URL(candidate);\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return null;\n }\n parsed.hash = \"\";\n parsed.search = \"\";\n const normalizedBase = parsed.toString().replace(/\\/+$/, \"\");\n return normalizedBase.endsWith(\"/api/v1\")\n ? normalizedBase\n : `${normalizedBase}/api/v1`;\n } catch {\n return null;\n }\n}\n\nexport function resolveCloudApiKey(\n config?: Pick<ElizaConfig, \"cloud\"> | null,\n runtime?: CloudApiKeyRuntimeLike,\n): string | null {\n return normalizeCloudSecret(\n config?.cloud?.apiKey ??\n resolveRuntimeCloudApiKey(runtime) ??\n process.env.ELIZAOS_CLOUD_API_KEY,\n );\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;AA0BO,SAAS,oBAAoB,CAClC,OACe;AAAA,EACf,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,UAAU,MAAM,KAAK;AAAA,EAC3B,OAAO,QAAQ,SAAS,IAAI,UAAU;AAAA;AAGxC,SAAS,yBAAyB,CAChC,SACe;AAAA,EACf,MAAM,cAAc,SAAS,aAAa,uBAAuB;AAAA,EACjE,IAAI,OAAO,gBAAgB,UAAU;AAAA,IACnC,OAAO,qBAAqB,WAAW;AAAA,EACzC;AAAA,EAEA,MAAM,cAAc,SAAS,WAAW,SAAS;AAAA,EACjD,OAAO,OAAO,gBAAgB,WAC1B,qBAAqB,WAAW,IAChC;AAAA;AAGC,SAAS,sBAAsB,CACpC,YACe;AAAA,EACf,MAAM,YACJ,qBAAqB,cAAc,QAAQ,IAAI,sBAAsB,KACrE;AAAA,EACF,IAAI;AAAA,IACF,MAAM,SAAS,IAAI,IAAI,SAAS;AAAA,IAChC,IAAI,OAAO,aAAa,WAAW,OAAO,aAAa,UAAU;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAO;AAAA,IACd,OAAO,SAAS;AAAA,IAChB,MAAM,iBAAiB,OAAO,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,IAC3D,OAAO,eAAe,SAAS,SAAS,IACpC,iBACA,GAAG;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,SAAS,kBAAkB,CAChC,QACA,SACe;AAAA,EACf,OAAO,qBACL,QAAQ,OAAO,UACb,0BAA0B,OAAO,KACjC,QAAQ,IAAI,qBAChB;AAAA;AAAA,IA7DW,6BAA6B;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "DF836E92613F485D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
"/**\n * Top-level orchestrator for cloud integration.\n * Manages client, proxy, backup scheduler, and connection monitor lifecycle.\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { CloudConfig } from \"../lib/config-like.js\";\nimport { BackupScheduler } from \"./backup.js\";\nimport { normalizeCloudSiteUrl } from \"./base-url.js\";\nimport { ElizaCloudClient } from \"./bridge-client.js\";\nimport { CloudRuntimeProxy } from \"./cloud-proxy.js\";\nimport { ConnectionMonitor } from \"./reconnect.js\";\nimport { validateCloudBaseUrl } from \"./validate-url.js\";\n\nexport type CloudConnectionStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"reconnecting\"\n | \"error\";\n\nexport interface CloudManagerCallbacks {\n onStatusChange?: (status: CloudConnectionStatus) => void;\n}\n\nexport class CloudManager {\n private client: ElizaCloudClient | null = null;\n private proxy: CloudRuntimeProxy | null = null;\n private backupScheduler: BackupScheduler | null = null;\n private connectionMonitor: ConnectionMonitor | null = null;\n private status: CloudConnectionStatus = \"disconnected\";\n private activeAgentId: string | null = null;\n\n constructor(\n private cloudConfig: CloudConfig,\n private callbacks: CloudManagerCallbacks = {},\n ) {}\n\n async init(): Promise<void> {\n const rawUrl = normalizeCloudSiteUrl(this.cloudConfig.baseUrl);\n const apiKey = this.cloudConfig.apiKey;\n if (!apiKey)\n throw new Error(\n \"Cloud API key is not configured. Run cloud login first.\",\n );\n\n const urlError = await validateCloudBaseUrl(rawUrl);\n if (urlError) {\n throw new Error(urlError);\n }\n\n // rawUrl is already normalized above — don't re-normalize, which would\n // re-read ELIZAOS_CLOUD_BASE_URL and could produce a different URL than\n // the one we just validated.\n this.client = new ElizaCloudClient(rawUrl, apiKey);\n logger.info(`[cloud-manager] Client initialised (baseUrl=${rawUrl})`);\n }\n\n async connect(agentId: string): Promise<CloudRuntimeProxy> {\n if (!this.client) await this.init();\n if (!this.client) throw new Error(\"Cloud client failed to initialise\");\n\n this.setStatus(\"connecting\");\n this.activeAgentId = agentId;\n\n try {\n await this.client.provision(agentId);\n const agent = await this.client.getAgent(agentId);\n\n this.proxy = new CloudRuntimeProxy(this.client, agentId, agent.agentName);\n\n this.backupScheduler = new BackupScheduler(\n this.client,\n agentId,\n this.cloudConfig.backup?.autoBackupIntervalMs ?? 60_000,\n );\n this.backupScheduler.start();\n\n this.connectionMonitor = new ConnectionMonitor(\n this.client,\n agentId,\n {\n onDisconnect: () => this.setStatus(\"reconnecting\"),\n onReconnect: () => this.setStatus(\"connected\"),\n onStatusChange: (s) => {\n if (s === \"connected\") this.setStatus(\"connected\");\n else if (s === \"reconnecting\") this.setStatus(\"reconnecting\");\n else this.setStatus(\"error\");\n },\n },\n this.cloudConfig.bridge?.heartbeatIntervalMs ?? 30_000,\n );\n this.connectionMonitor.start();\n\n this.setStatus(\"connected\");\n logger.info(\n `[cloud-manager] Connected to cloud agent (agentId=${agentId}, agentName=${agent.agentName})`,\n );\n return this.proxy;\n } catch (err) {\n this.setStatus(\"error\");\n if (this.backupScheduler) {\n this.backupScheduler.stop();\n this.backupScheduler = null;\n }\n if (this.connectionMonitor) {\n this.connectionMonitor.stop();\n this.connectionMonitor = null;\n }\n this.proxy = null;\n this.activeAgentId = null;\n this.setStatus(\"disconnected\");\n throw err;\n }\n }\n\n async disconnect(): Promise<void> {\n if (this.backupScheduler) {\n await this.backupScheduler.finalSnapshot();\n this.backupScheduler.stop();\n this.backupScheduler = null;\n }\n if (this.connectionMonitor) {\n this.connectionMonitor.stop();\n this.connectionMonitor = null;\n }\n this.proxy = null;\n this.activeAgentId = null;\n this.setStatus(\"disconnected\");\n }\n\n async replaceApiKey(apiKey: string): Promise<void> {\n await this.disconnect();\n this.cloudConfig = {\n ...this.cloudConfig,\n apiKey,\n };\n this.client = null;\n await this.init();\n }\n\n getProxy(): CloudRuntimeProxy | null {\n return this.proxy;\n }\n getClient(): ElizaCloudClient | null {\n return this.client;\n }\n getActiveAgentId(): string | null {\n return this.activeAgentId;\n }\n getStatus(): CloudConnectionStatus {\n return this.status;\n }\n isEnabled(): boolean {\n return Boolean(this.cloudConfig.enabled && this.cloudConfig.apiKey);\n }\n\n private setStatus(status: CloudConnectionStatus): void {\n if (this.status === status) return;\n this.status = status;\n this.callbacks.onStatusChange?.(status);\n }\n}\n"
|
|
12
12
|
],
|
|
13
13
|
"mappings": "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",
|
|
14
|
-
"debugId": "
|
|
14
|
+
"debugId": "56F6EB7D123538B964756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"/**\n * Drop-in replacement for a local AgentRuntime when running in cloud mode.\n * Routes chat/status calls through the ElizaCloudClient to the remote sandbox.\n */\n\nimport type { ChatChannelType, ElizaCloudClient } from \"./bridge-client.js\";\n\nexport class CloudRuntimeProxy {\n constructor(\n private client: ElizaCloudClient,\n private agentId: string,\n private _agentName: string,\n ) {}\n\n get agentName(): string {\n return this._agentName;\n }\n\n async handleChatMessage(\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): Promise<string> {\n return this.client.sendMessage(this.agentId, text, roomId, channelType);\n }\n\n async *handleChatMessageStream(\n text: string,\n roomId = \"web-chat\",\n channelType: ChatChannelType = \"DM\",\n ): AsyncGenerator<string> {\n for await (const event of this.client.sendMessageStream(\n this.agentId,\n text,\n roomId,\n channelType,\n )) {\n if (event.type === \"chunk\" && typeof event.data.text === \"string\") {\n yield event.data.text;\n }\n }\n }\n\n async getStatus(): Promise<{ state: string; agentName: string }> {\n const agent = await this.client.getAgent(this.agentId);\n return { state: agent.status, agentName: agent.agentName };\n }\n\n async isAlive(): Promise<boolean> {\n return this.client.heartbeat(this.agentId).catch(() => false);\n }\n}\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;AAOO,MAAM,kBAAkB;AAAA,EAEnB;AAAA,EACA;AAAA,EACA;AAAA,EAHV,WAAW,CACD,QACA,SACA,YACR;AAAA,IAHQ;AAAA,IACA;AAAA,IACA;AAAA;AAAA,MAGN,SAAS,GAAW;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,OAGR,kBAAiB,CACrB,MACA,SAAS,YACT,cAA+B,MACd;AAAA,IACjB,OAAO,KAAK,OAAO,YAAY,KAAK,SAAS,MAAM,QAAQ,WAAW;AAAA;AAAA,SAGjE,uBAAuB,CAC5B,MACA,SAAS,YACT,cAA+B,MACP;AAAA,IACxB,iBAAiB,SAAS,KAAK,OAAO,kBACpC,KAAK,SACL,MACA,QACA,WACF,GAAG;AAAA,MACD,IAAI,MAAM,SAAS,WAAW,OAAO,MAAM,KAAK,SAAS,UAAU;AAAA,QACjE,MAAM,MAAM,KAAK;AAAA,MACnB;AAAA,IACF;AAAA;AAAA,OAGI,UAAS,GAAkD;AAAA,IAC/D,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,KAAK,OAAO;AAAA,IACrD,OAAO,EAAE,OAAO,MAAM,QAAQ,WAAW,MAAM,UAAU;AAAA;AAAA,OAGrD,QAAO,GAAqB;AAAA,IAChC,OAAO,KAAK,OAAO,UAAU,KAAK,OAAO,EAAE,MAAM,MAAM,KAAK;AAAA;AAEhE;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "CB7E443D0E5AFD2964756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
"/**\n * Cloud wallet provisioning + client-address key management.\n *\n * Gated by ENABLE_CLOUD_WALLET. Every export short-circuits when the flag\n * is off so no cloud code paths run in legacy builds.\n *\n * Responsibilities:\n * 1. Generate + persist ELIZA_CLOUD_CLIENT_ADDRESS_KEY (the local secp256k1\n * key whose address ties this install to cloud-custodied wallets).\n * 2. Provision EVM + Solana cloud wallets for an agent, guarded by a\n * single-flight mutex keyed on (agentId, chainType) to prevent duplicate\n * provision under concurrent cloud-login triggers.\n * 3. Write the resulting descriptors into the in-memory config under\n * wallet.cloud.{evm,solana}; caller persists via saveConfig().\n */\n\nimport { generatePrivateKey, privateKeyToAccount } from \"viem/accounts\";\nimport type {\n CloudBridgeError,\n CloudChainType,\n CloudWalletDescriptor,\n CloudWalletProvider,\n} from \"./bridge-client.js\";\nimport { persistConfigEnv } from \"../lib/config-env\";\nimport { isCloudWalletEnabled } from \"../lib/feature-flags\";\n\nexport const ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV =\n \"ELIZA_CLOUD_CLIENT_ADDRESS_KEY\";\n\nexport class CloudWalletFlagDisabledError extends Error {\n constructor() {\n super(\"ENABLE_CLOUD_WALLET is off; cloud wallet code paths are inactive\");\n this.name = \"CloudWalletFlagDisabledError\";\n }\n}\n\nfunction ensureFlag(): void {\n if (!isCloudWalletEnabled()) {\n throw new CloudWalletFlagDisabledError();\n }\n}\n\n/**\n * Normalize a hex private key to the 0x-prefixed form viem expects.\n */\nfunction normalizePrivateKey(raw: string): `0x${string}` {\n const trimmed = raw.trim();\n const hex = trimmed.startsWith(\"0x\") ? trimmed.slice(2) : trimmed;\n if (!/^[0-9a-fA-F]{64}$/.test(hex)) {\n throw new Error(\n `Malformed ${ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV}: expected 32-byte hex`,\n );\n }\n return `0x${hex.toLowerCase()}`;\n}\n\nexport interface GetOrCreateKeyOptions {\n /** Override state dir for config.env persistence. Used by tests. */\n stateDir?: string;\n}\n\nexport interface CloudWalletProvisionBridge {\n getAgentWallet(\n agentId: string,\n chain: CloudChainType,\n ): Promise<CloudWalletDescriptor>;\n provisionWallet(input: {\n chainType: CloudChainType;\n clientAddress: string;\n }): Promise<{\n walletId: string;\n address: string;\n chainType: CloudChainType;\n provider: CloudWalletProvider;\n }>;\n}\n\n/**\n * Read or mint the local client-address secp256k1 key.\n *\n * Priority:\n * 1. process.env[ELIZA_CLOUD_CLIENT_ADDRESS_KEY] — respected as-is.\n * 2. Generate a fresh key, write to `process.env` AND disk (`config.env`)\n * so it survives restart.\n *\n * The key is in `BLOCKED_STARTUP_ENV_KEYS` so it never syncs into\n * `eliza.json` — `config.env` is the designated disk home for it.\n */\nexport async function getOrCreateClientAddressKey(\n opts: GetOrCreateKeyOptions = {},\n): Promise<{\n privateKey: `0x${string}`;\n address: `0x${string}`;\n minted: boolean;\n}> {\n ensureFlag();\n\n const existing = process.env[ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV];\n if (existing && existing.trim().length > 0) {\n const privateKey = normalizePrivateKey(existing);\n const account = privateKeyToAccount(privateKey);\n return { privateKey, address: account.address, minted: false };\n }\n\n const privateKey = generatePrivateKey();\n const account = privateKeyToAccount(privateKey);\n\n process.env[ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV] = privateKey;\n await persistConfigEnv(ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV, privateKey, {\n stateDir: opts.stateDir,\n });\n\n return { privateKey, address: account.address, minted: true };\n}\n\n// ---------------------------------------------------------------------------\n// Single-flight provisioning\n// ---------------------------------------------------------------------------\n\nconst inflight = new Map<string, Promise<CloudWalletDescriptor>>();\n\nfunction inflightKey(agentId: string, chain: CloudChainType): string {\n return `${agentId}::${chain}`;\n}\n\nasync function provisionOne(\n bridge: CloudWalletProvisionBridge,\n agentId: string,\n chain: CloudChainType,\n clientAddress: string,\n): Promise<CloudWalletDescriptor> {\n try {\n return await bridge.getAgentWallet(agentId, chain);\n } catch (error) {\n if (!isMissingCloudWalletError(error, chain)) {\n throw error;\n }\n }\n\n const provisioned = await bridge.provisionWallet({\n chainType: chain,\n clientAddress,\n });\n\n return {\n agentWalletId: provisioned.walletId,\n walletAddress: provisioned.address,\n walletProvider: provisioned.provider,\n chainType: chain,\n };\n}\n\nfunction isMissingCloudWalletError(\n error: unknown,\n chain: CloudChainType,\n): boolean {\n if (\n error instanceof Error &&\n new RegExp(`no cloud ${chain} wallet provisioned`, \"i\").test(error.message)\n ) {\n return true;\n }\n\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"name\" in error &&\n error.name === \"CloudBridgeError\" &&\n typeof (error as CloudBridgeError).status === \"number\" &&\n (error as CloudBridgeError).status === 404\n );\n}\n\nexport interface ProvisionOptions {\n agentId: string;\n clientAddress: string;\n chains?: CloudChainType[];\n}\n\nexport interface CloudWalletDescriptors {\n evm: CloudWalletDescriptor;\n solana: CloudWalletDescriptor;\n}\n\nexport interface CloudWalletProvisionFailure {\n chain: CloudChainType;\n error: unknown;\n}\n\nexport interface CloudWalletProvisionResult {\n descriptors: Partial<CloudWalletDescriptors>;\n failures: CloudWalletProvisionFailure[];\n warnings: string[];\n}\n\nfunction formatProvisionWarning(chain: CloudChainType, error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return `Cloud ${chain} wallet import failed: ${message}`;\n}\n\n/**\n * Provision EVM + Solana cloud wallets idempotently.\n *\n * Concurrent callers for the same (agentId, chain) share a single in-flight\n * promise so we never send duplicate provision requests.\n */\nexport async function provisionCloudWalletsBestEffort(\n bridge: CloudWalletProvisionBridge,\n opts: ProvisionOptions,\n): Promise<CloudWalletProvisionResult> {\n ensureFlag();\n\n const chains: CloudChainType[] = opts.chains ?? [\"evm\", \"solana\"];\n\n const results = await Promise.all(\n chains.map((chain) => {\n const key = inflightKey(opts.agentId, chain);\n const pending = inflight.get(key);\n if (pending) {\n return pending.then(\n (descriptor) =>\n ({\n chain,\n ok: true as const,\n descriptor,\n }) as const,\n (error) =>\n ({\n chain,\n ok: false as const,\n error,\n }) as const,\n );\n }\n\n const p = provisionOne(\n bridge,\n opts.agentId,\n chain,\n opts.clientAddress,\n ).finally(() => {\n inflight.delete(key);\n });\n inflight.set(key, p);\n return p.then(\n (descriptor) =>\n ({\n chain,\n ok: true as const,\n descriptor,\n }) as const,\n (error) =>\n ({\n chain,\n ok: false as const,\n error,\n }) as const,\n );\n }),\n );\n\n const out: Partial<CloudWalletDescriptors> = {};\n const failures: CloudWalletProvisionFailure[] = [];\n for (const result of results) {\n if (\"descriptor\" in result) {\n out[result.chain] = result.descriptor;\n continue;\n }\n failures.push({ chain: result.chain, error: result.error });\n }\n\n return {\n descriptors: out,\n failures,\n warnings: failures.map(({ chain, error }) =>\n formatProvisionWarning(chain, error),\n ),\n };\n}\n\nexport async function provisionCloudWallets(\n bridge: CloudWalletProvisionBridge,\n opts: ProvisionOptions,\n): Promise<Partial<CloudWalletDescriptors>> {\n const result = await provisionCloudWalletsBestEffort(bridge, opts);\n if (\n result.failures.length > 0 &&\n Object.keys(result.descriptors).length === 0\n ) {\n const firstFailure = result.failures[0];\n if (firstFailure?.error instanceof Error) {\n throw firstFailure.error;\n }\n throw new Error(result.warnings[0] ?? \"Failed to provision cloud wallets\");\n }\n\n return result.descriptors;\n}\n\n// ---------------------------------------------------------------------------\n// Config cache write\n// ---------------------------------------------------------------------------\n\nexport interface CloudWalletCacheTarget {\n wallet?: {\n cloud?: Partial<Record<CloudChainType, CloudWalletDescriptor>>;\n [k: string]: unknown;\n };\n [k: string]: unknown;\n}\n\n/**\n * Write the descriptors into the provided config object under\n * `wallet.cloud.{evm,solana}`. Caller is responsible for persisting\n * (state.saveConfig()).\n */\nexport function persistCloudWalletCache(\n config: CloudWalletCacheTarget,\n descriptors: Partial<CloudWalletDescriptors>,\n): void {\n ensureFlag();\n\n const wallet = (config.wallet ?? {}) as NonNullable<\n CloudWalletCacheTarget[\"wallet\"]\n >;\n const cloud = { ...(wallet.cloud ?? {}) };\n if (descriptors.evm) cloud.evm = descriptors.evm;\n if (descriptors.solana) cloud.solana = descriptors.solana;\n wallet.cloud = cloud;\n config.wallet = wallet;\n}\n\n// ---------------------------------------------------------------------------\n// Test hooks\n// ---------------------------------------------------------------------------\n\n/** @internal — exposed for tests to reset state between cases. */\nexport function __resetCloudWalletModuleForTests(): void {\n inflight.clear();\n delete process.env[ELIZA_CLOUD_CLIENT_ADDRESS_KEY_ENV];\n}\n"
|
|
9
9
|
],
|
|
10
10
|
"mappings": "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",
|
|
11
|
-
"debugId": "
|
|
11
|
+
"debugId": "A398B90FB60C6F3B64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
"import { logger } from \"@elizaos/core\";\nimport {\n PaymentRequiredError,\n parseX402Response,\n} from \"./x402-payment-handler.js\";\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\nexport class DuffelConfigError extends Error {\n readonly code = \"DUFFEL_NOT_CONFIGURED\" as const;\n constructor(message: string) {\n super(message);\n this.name = \"DuffelConfigError\";\n }\n}\n\n/** Direct mode hits api.duffel.com with the user's own DUFFEL_API_KEY.\n * Cloud mode hits the local Eliza Cloud relay which performs the upstream\n * Duffel call, applies creator markup, and meters against the user's\n * Cloud credit balance. Cloud mode is the default. */\nexport type DuffelMode = \"cloud\" | \"direct\";\n\nexport interface DuffelConfig {\n mode: DuffelMode;\n /** Required when mode === \"direct\". */\n apiKey: string | null;\n /** Required when mode === \"cloud\". Local Eliza agent API base, e.g.\n * http://127.0.0.1:31337. The relay path is appended internally. */\n cloudRelayBaseUrl: string | null;\n}\n\nconst DUFFEL_API_BASE_DEFAULT = \"https://api.duffel.com\";\nconst DUFFEL_API_VERSION = \"v2\";\nconst DEFAULT_CLOUD_RELAY_BASE = \"http://127.0.0.1:31337\";\n\ninterface DuffelTelemetrySpan {\n success(meta?: Record<string, unknown>): void;\n failure(meta?: Record<string, unknown>): void;\n}\n\nconst NOOP_DUFFEL_SPAN: DuffelTelemetrySpan = {\n success() {},\n failure() {},\n};\n\n/** Honour the mockoon redirect (or any explicit `LIFEOPS_DUFFEL_API_BASE`\n * override) so direct-mode tests can swap Duffel for a local mock. */\nfunction getDuffelApiBase(): string {\n return process.env.LIFEOPS_DUFFEL_API_BASE?.trim() || DUFFEL_API_BASE_DEFAULT;\n}\n\nfunction resolveDirectFlag(env: NodeJS.ProcessEnv): boolean {\n const value = env.ELIZA_DUFFEL_DIRECT?.trim().toLowerCase();\n return value === \"1\" || value === \"true\";\n}\n\nfunction resolveLocalApiBase(env: NodeJS.ProcessEnv): string {\n const port = env.ELIZA_API_PORT?.trim();\n if (port && /^\\d+$/.test(port)) {\n return `http://127.0.0.1:${port}`;\n }\n return DEFAULT_CLOUD_RELAY_BASE;\n}\n\nexport function readDuffelConfigFromEnv(\n env: NodeJS.ProcessEnv = process.env,\n): DuffelConfig {\n if (resolveDirectFlag(env)) {\n const apiKey = env.DUFFEL_API_KEY?.trim();\n if (!apiKey) {\n throw new DuffelConfigError(\n \"Duffel direct mode requested but DUFFEL_API_KEY is not set.\",\n );\n }\n return { mode: \"direct\", apiKey, cloudRelayBaseUrl: null };\n }\n\n return {\n mode: \"cloud\",\n apiKey: null,\n cloudRelayBaseUrl: resolveLocalApiBase(env),\n };\n}\n\n// ---------------------------------------------------------------------------\n// Input types\n// ---------------------------------------------------------------------------\n\nexport interface SearchFlightsRequest {\n /** IATA airport code for origin, e.g. \"JFK\". */\n origin: string;\n /** IATA airport code for destination, e.g. \"LHR\". */\n destination: string;\n /** ISO 8601 date string (YYYY-MM-DD). */\n departureDate: string;\n /**\n * ISO 8601 date string for return leg.\n * Omit or pass undefined for one-way search.\n */\n returnDate?: string;\n /** Number of adult passengers (default 1). */\n passengers?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Response types\n// ---------------------------------------------------------------------------\n\nexport interface DuffelSegment {\n origin: string;\n destination: string;\n departingAt: string;\n arrivingAt: string;\n carrierIataCode: string;\n flightNumber: string;\n duration: string;\n}\n\nexport interface DuffelSlice {\n origin: string;\n destination: string;\n duration: string;\n segments: DuffelSegment[];\n}\n\nexport interface DuffelOfferPassenger {\n id: string;\n type: string;\n givenName: string | null;\n familyName: string | null;\n}\n\nexport interface DuffelPaymentRequirements {\n requiresInstantPayment: boolean;\n priceGuaranteeExpiresAt: string | null;\n paymentRequiredBy: string | null;\n}\n\nexport interface DuffelOffer {\n id: string;\n totalAmount: string;\n totalCurrency: string;\n passengerCount: number;\n slices: DuffelSlice[];\n expiresAt: string | null;\n /** Raw cabin class reported by Duffel for the first slice. */\n cabinClass: string | null;\n passengers: DuffelOfferPassenger[];\n paymentRequirements: DuffelPaymentRequirements | null;\n}\n\n/**\n * Cost envelope returned by the cloud relay. The breakdown is computed\n * server-side (commandment 2 — no client-side math) and the local code\n * forwards it to the UI for display. In direct mode all values are zero\n * because no markup is charged.\n *\n * `markupPercent` is a *display-only* derived field: it equals\n * `platformFeeUsd / totalUsd`, computed once at the boundary so UI\n * components don't repeat the division. The pricing decision itself is\n * still Cloud-side — this is the same pattern as a \"discount %\" badge\n * derived from a server-supplied price.\n */\nexport interface DuffelCallCost {\n /** Net cost charged to the user's Cloud credit balance, in USD. */\n totalUsd: number;\n /** Portion that flows to the creator as markup, in USD. */\n creatorMarkupUsd: number;\n /** Eliza Cloud platform fee portion, in USD. */\n platformFeeUsd: number;\n /** Display-only ratio of platform fee to total (e.g. 0.2 for 20%).\n * Derived from server values, never used for pricing. Null when\n * totalUsd is zero (direct mode or free call). */\n markupPercent: number | null;\n /** Whether the call was metered (true in cloud mode, false in direct mode). */\n metered: boolean;\n}\n\nconst DIRECT_MODE_COST: DuffelCallCost = {\n totalUsd: 0,\n creatorMarkupUsd: 0,\n platformFeeUsd: 0,\n markupPercent: null,\n metered: false,\n};\n\nexport interface SearchFlightsResult {\n offerRequestId: string;\n offers: DuffelOffer[];\n cost: DuffelCallCost;\n}\n\nexport interface DuffelOrderPassenger {\n id: string;\n givenName: string | null;\n familyName: string | null;\n}\n\nexport interface DuffelOrderPaymentStatus {\n awaitingPayment: boolean;\n paymentRequiredBy: string | null;\n priceGuaranteeExpiresAt: string | null;\n}\n\nexport interface DuffelOrderDocument {\n type: string | null;\n uniqueIdentifier: string | null;\n}\n\nexport interface DuffelOrder {\n id: string;\n bookingReference: string | null;\n totalAmount: string;\n totalCurrency: string;\n slices: DuffelSlice[];\n passengers: DuffelOrderPassenger[];\n paymentStatus: DuffelOrderPaymentStatus | null;\n documents: DuffelOrderDocument[];\n}\n\nexport interface DuffelPayment {\n id: string;\n orderId: string;\n status: string;\n currency: string;\n amount: string;\n type: string;\n failureReason: string | null;\n createdAt: string | null;\n}\n\nexport interface DuffelOrderPassengerInput {\n id: string;\n title?: string;\n gender?: string;\n givenName: string;\n familyName: string;\n bornOn: string;\n email?: string;\n phoneNumber?: string;\n}\n\nexport interface CreateDuffelOrderRequest {\n selectedOffers: ReadonlyArray<string>;\n passengers: ReadonlyArray<DuffelOrderPassengerInput>;\n type: \"hold\" | \"instant\";\n payment?: {\n type: \"balance\";\n amount: string;\n currency: string;\n };\n metadata?: Readonly<Record<string, string>>;\n}\n\n// ---------------------------------------------------------------------------\n// Internal Duffel API response shapes (minimal — only fields we use)\n// ---------------------------------------------------------------------------\n\ninterface DuffelApiOffer {\n id: string;\n total_amount: string;\n total_currency: string;\n expires_at: string | null;\n slices: Array<{\n origin: { iata_code: string };\n destination: { iata_code: string };\n duration: string;\n segments: Array<{\n origin: { iata_code: string };\n destination: { iata_code: string };\n departing_at: string;\n arriving_at: string;\n operating_carrier: { iata_code: string };\n flight_number: string | null;\n duration: string;\n }>;\n fare_brand_name: string | null;\n }>;\n passengers: Array<{\n id?: string;\n type?: string;\n given_name?: string | null;\n family_name?: string | null;\n }>;\n payment_requirements?: {\n requires_instant_payment?: boolean;\n price_guarantee_expires_at?: string | null;\n payment_required_by?: string | null;\n };\n}\n\ninterface DuffelOfferRequestResponse {\n data: {\n id: string;\n offers: DuffelApiOffer[];\n };\n}\n\ninterface DuffelOfferResponse {\n data: DuffelApiOffer;\n}\n\ninterface DuffelApiOrder {\n id: string;\n booking_reference?: string | null;\n total_amount: string;\n total_currency: string;\n slices: DuffelApiOffer[\"slices\"];\n passengers: Array<{\n id?: string;\n given_name?: string | null;\n family_name?: string | null;\n }>;\n payment_status?: {\n awaiting_payment?: boolean;\n payment_required_by?: string | null;\n price_guarantee_expires_at?: string | null;\n };\n documents?: Array<{\n type?: string | null;\n unique_identifier?: string | null;\n }>;\n}\n\ninterface DuffelOrderResponse {\n data: DuffelApiOrder;\n}\n\ninterface DuffelPaymentResponse {\n data: {\n id: string;\n order_id: string;\n status: string;\n currency: string;\n amount: string;\n type: string;\n failure_reason?: string | null;\n created_at?: string | null;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction buildHeaders(apiKey: string): Record<string, string> {\n return {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"Duffel-Version\": DUFFEL_API_VERSION,\n Accept: \"application/json\",\n };\n}\n\nfunction mapOffer(raw: DuffelApiOffer): DuffelOffer {\n const cabinClass = raw.slices[0]?.fare_brand_name ?? null;\n\n const slices: DuffelSlice[] = raw.slices.map((slice) => ({\n origin: slice.origin.iata_code,\n destination: slice.destination.iata_code,\n duration: slice.duration,\n segments: slice.segments.map((seg) => ({\n origin: seg.origin.iata_code,\n destination: seg.destination.iata_code,\n departingAt: seg.departing_at,\n arrivingAt: seg.arriving_at,\n carrierIataCode: seg.operating_carrier.iata_code,\n flightNumber: seg.flight_number ?? \"\",\n duration: seg.duration,\n })),\n }));\n const passengers: DuffelOfferPassenger[] = raw.passengers.map(\n (passenger, index) => ({\n id: passenger.id?.trim() || `passenger_${index}`,\n type: passenger.type?.trim() || \"adult\",\n givenName: passenger.given_name?.trim() || null,\n familyName: passenger.family_name?.trim() || null,\n }),\n );\n const paymentRequirements = raw.payment_requirements\n ? {\n requiresInstantPayment:\n raw.payment_requirements.requires_instant_payment !== false,\n priceGuaranteeExpiresAt:\n raw.payment_requirements.price_guarantee_expires_at ?? null,\n paymentRequiredBy: raw.payment_requirements.payment_required_by ?? null,\n }\n : null;\n\n return {\n id: raw.id,\n totalAmount: raw.total_amount,\n totalCurrency: raw.total_currency,\n passengerCount: passengers.length > 0 ? passengers.length : 1,\n slices,\n expiresAt: raw.expires_at,\n cabinClass,\n passengers,\n paymentRequirements,\n };\n}\n\nfunction mapOrder(raw: DuffelApiOrder): DuffelOrder {\n return {\n id: raw.id,\n bookingReference: raw.booking_reference ?? null,\n totalAmount: raw.total_amount,\n totalCurrency: raw.total_currency,\n slices: raw.slices.map((slice) => ({\n origin: slice.origin.iata_code,\n destination: slice.destination.iata_code,\n duration: slice.duration,\n segments: slice.segments.map((segment) => ({\n origin: segment.origin.iata_code,\n destination: segment.destination.iata_code,\n departingAt: segment.departing_at,\n arrivingAt: segment.arriving_at,\n carrierIataCode: segment.operating_carrier.iata_code,\n flightNumber: segment.flight_number ?? \"\",\n duration: segment.duration,\n })),\n })),\n passengers: raw.passengers.map((passenger, index) => ({\n id: passenger.id?.trim() || `passenger_${index}`,\n givenName: passenger.given_name?.trim() || null,\n familyName: passenger.family_name?.trim() || null,\n })),\n paymentStatus: raw.payment_status\n ? {\n awaitingPayment: raw.payment_status.awaiting_payment === true,\n paymentRequiredBy: raw.payment_status.payment_required_by ?? null,\n priceGuaranteeExpiresAt:\n raw.payment_status.price_guarantee_expires_at ?? null,\n }\n : null,\n documents: (raw.documents ?? []).map((document) => ({\n type: document.type ?? null,\n uniqueIdentifier: document.unique_identifier ?? null,\n })),\n };\n}\n\nfunction mapPayment(raw: DuffelPaymentResponse[\"data\"]): DuffelPayment {\n return {\n id: raw.id,\n orderId: raw.order_id,\n status: raw.status,\n currency: raw.currency,\n amount: raw.amount,\n type: raw.type,\n failureReason: raw.failure_reason ?? null,\n createdAt: raw.created_at ?? null,\n };\n}\n\n/**\n * Cost meta envelope returned by the Eliza Cloud relay alongside the\n * Duffel payload. Defined server-side; the client trusts whatever Cloud\n * returns and never recomputes (commandment 2).\n */\ninterface RelayCostMeta {\n total_usd?: number;\n creator_markup_usd?: number;\n platform_fee_usd?: number;\n}\n\ninterface RelayMeta {\n cost?: RelayCostMeta;\n}\n\ninterface RelayEnvelope {\n _meta?: RelayMeta;\n}\n\nfunction readRelayCost(envelope: unknown): DuffelCallCost {\n if (\n envelope === null ||\n typeof envelope !== \"object\" ||\n !(\"_meta\" in envelope)\n ) {\n throw new Error(\n \"Duffel cloud relay response missing _meta envelope. Update Eliza Cloud or set ELIZA_DUFFEL_DIRECT=1.\",\n );\n }\n const meta = (envelope as RelayEnvelope)._meta;\n const cost = meta?.cost;\n if (\n !cost ||\n typeof cost.total_usd !== \"number\" ||\n typeof cost.creator_markup_usd !== \"number\" ||\n typeof cost.platform_fee_usd !== \"number\"\n ) {\n throw new Error(\n \"Duffel cloud relay returned malformed _meta.cost. Refusing to proceed without billing receipt.\",\n );\n }\n const totalUsd = cost.total_usd;\n const platformFeeUsd = cost.platform_fee_usd;\n const markupPercent = totalUsd > 0 ? platformFeeUsd / totalUsd : null;\n return {\n totalUsd,\n creatorMarkupUsd: cost.creator_markup_usd,\n platformFeeUsd,\n markupPercent,\n metered: true,\n };\n}\n\ninterface DuffelFetchResult<T> {\n data: T;\n cost: DuffelCallCost;\n}\n\ninterface DuffelRequest {\n config: DuffelConfig;\n method: \"GET\" | \"POST\";\n /** Path on api.duffel.com (e.g. \"/air/offer_requests\"). */\n directPath: string;\n /** Path on the local cloud relay (e.g. \"/api/cloud/travel-providers/duffel/offer-requests\"). */\n cloudRelayPath: string;\n body?: unknown;\n operation: string;\n}\n\nasync function duffelFetch<T>(\n args: DuffelRequest,\n): Promise<DuffelFetchResult<T>> {\n const { config, method, directPath, cloudRelayPath, body, operation } = args;\n\n const isCloud = config.mode === \"cloud\";\n const url = isCloud\n ? `${config.cloudRelayBaseUrl ?? \"\"}${cloudRelayPath}`\n : `${getDuffelApiBase()}${directPath}`;\n\n const headers = isCloud\n ? { \"Content-Type\": \"application/json\", Accept: \"application/json\" }\n : buildHeaders(config.apiKey ?? \"\");\n\n const span = NOOP_DUFFEL_SPAN;\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: AbortSignal.timeout(30_000),\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n logger.error(\n {\n boundary: \"elizacloud\",\n integration: \"duffel\",\n operation,\n mode: config.mode,\n err: error instanceof Error ? error : undefined,\n },\n `[elizacloud-duffel] Duffel ${operation} network error: ${msg}`,\n );\n span.failure({ error, errorKind: \"network_error\" });\n throw new Error(`Duffel ${operation} failed: ${msg}`);\n }\n\n if (response.status === 402 && isCloud) {\n // x402 payment-required: surface as a typed PaymentRequiredError so\n // the action layer can route the user to the wallet top-up flow\n // rather than treating this as a generic HTTP failure. The Cloud\n // billing layer emits 402 only when the user's credit balance can't\n // cover the call — see docs/cloud-travel-billing.md.\n const requirements = await parseX402Response(response);\n logger.warn(\n {\n boundary: \"elizacloud\",\n integration: \"duffel\",\n operation,\n mode: config.mode,\n statusCode: 402,\n requirementCount: requirements?.length ?? 0,\n },\n `[elizacloud-duffel] Duffel ${operation} returned 402 payment-required`,\n );\n span.failure({ statusCode: 402, errorKind: \"payment_required\" });\n if (!requirements || requirements.length === 0) {\n throw new PaymentRequiredError(\n [],\n `Duffel ${operation} requires payment but the upstream did not advertise any payment options.`,\n );\n }\n throw new PaymentRequiredError(requirements);\n }\n\n if (!response.ok) {\n const errorBody = await response.text().catch(() => \"\");\n const errorMsg = errorBody || `HTTP ${response.status}`;\n logger.warn(\n {\n boundary: \"elizacloud\",\n integration: \"duffel\",\n operation,\n mode: config.mode,\n statusCode: response.status,\n },\n `[elizacloud-duffel] Duffel ${operation} HTTP error: ${errorMsg}`,\n );\n span.failure({ statusCode: response.status, errorKind: \"http_error\" });\n throw new Error(\n `Duffel ${operation} failed (${response.status}): ${errorMsg}`,\n );\n }\n\n const payload = (await response.json()) as T;\n span.success({ statusCode: response.status });\n\n const cost = isCloud ? readRelayCost(payload) : DIRECT_MODE_COST;\n return { data: payload, cost };\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Search for available flight offers via the Duffel Offer Requests API.\n *\n * Throws `DuffelConfigError` when DUFFEL_API_KEY is absent.\n * One-way search when `returnDate` is omitted; return search when provided.\n *\n */\nexport async function searchFlights(\n request: SearchFlightsRequest,\n config?: DuffelConfig,\n): Promise<SearchFlightsResult> {\n const resolvedConfig = config ?? readDuffelConfigFromEnv();\n const passengerCount = Math.max(1, Math.round(request.passengers ?? 1));\n\n const slices: Array<{\n origin: string;\n destination: string;\n departure_date: string;\n }> = [\n {\n origin: request.origin.toUpperCase().trim(),\n destination: request.destination.toUpperCase().trim(),\n departure_date: request.departureDate,\n },\n ];\n if (request.returnDate) {\n slices.push({\n origin: request.destination.toUpperCase().trim(),\n destination: request.origin.toUpperCase().trim(),\n departure_date: request.returnDate,\n });\n }\n\n const requestBody = {\n data: {\n slices,\n passengers: Array.from({ length: passengerCount }, () => ({\n type: \"adult\",\n })),\n cabin_class: \"economy\",\n },\n };\n\n logger.info(\n {\n boundary: \"elizacloud\",\n integration: \"duffel\",\n origin: request.origin,\n destination: request.destination,\n },\n `[elizacloud-duffel] Searching flights ${request.origin} → ${request.destination} on ${request.departureDate}`,\n );\n\n const { data: responseData, cost } =\n await duffelFetch<DuffelOfferRequestResponse>({\n config: resolvedConfig,\n method: \"POST\",\n directPath: \"/air/offer_requests?return_offers=true\",\n cloudRelayPath: \"/api/cloud/travel-providers/duffel/offer-requests\",\n body: requestBody,\n operation: \"offer_request\",\n });\n\n const offers = responseData.data.offers.map(mapOffer);\n\n logger.info(\n {\n boundary: \"elizacloud\",\n integration: \"duffel\",\n offerRequestId: responseData.data.id,\n offerCount: offers.length,\n costUsd: cost.totalUsd,\n },\n `[elizacloud-duffel] Duffel returned ${offers.length} offers for request ${responseData.data.id}`,\n );\n\n return {\n offerRequestId: responseData.data.id,\n offers,\n cost,\n };\n}\n\n/**\n * Retrieve a single flight offer by ID.\n *\n * Use after `searchFlights` to get live pricing and full details for a\n * specific offer before presenting it to the user for approval.\n *\n */\nexport async function getOffer(\n id: string,\n config?: DuffelConfig,\n): Promise<DuffelOffer> {\n const resolvedConfig = config ?? readDuffelConfigFromEnv();\n\n if (!id || id.trim().length === 0) {\n throw new Error(\"Duffel getOffer: offer id is required\");\n }\n\n const { data: responseData } = await duffelFetch<DuffelOfferResponse>({\n config: resolvedConfig,\n method: \"GET\",\n directPath: `/air/offers/${encodeURIComponent(id.trim())}`,\n cloudRelayPath: `/api/cloud/travel-providers/duffel/offers/${encodeURIComponent(id.trim())}`,\n operation: \"offer_retrieve\",\n });\n\n return mapOffer(responseData.data);\n}\n\nexport async function createOrder(\n request: CreateDuffelOrderRequest,\n config?: DuffelConfig,\n): Promise<DuffelOrder> {\n const resolvedConfig = config ?? readDuffelConfigFromEnv();\n if (request.selectedOffers.length !== 1) {\n throw new Error(\n \"Duffel createOrder: exactly one selected offer is required\",\n );\n }\n if (request.passengers.length === 0) {\n throw new Error(\"Duffel createOrder: at least one passenger is required\");\n }\n\n const data: Record<string, unknown> = {\n type: request.type,\n selected_offers: [...request.selectedOffers],\n passengers: request.passengers.map((passenger) => ({\n id: passenger.id,\n title: passenger.title,\n gender: passenger.gender,\n given_name: passenger.givenName,\n family_name: passenger.familyName,\n born_on: passenger.bornOn,\n email: passenger.email,\n phone_number: passenger.phoneNumber,\n })),\n };\n if (request.payment) {\n data.payments = [\n {\n type: request.payment.type,\n amount: request.payment.amount,\n currency: request.payment.currency,\n },\n ];\n }\n if (request.metadata && Object.keys(request.metadata).length > 0) {\n data.metadata = request.metadata;\n }\n\n const { data: response } = await duffelFetch<DuffelOrderResponse>({\n config: resolvedConfig,\n method: \"POST\",\n directPath: \"/air/orders\",\n cloudRelayPath: \"/api/cloud/travel-providers/duffel/orders\",\n body: { data },\n operation: \"order_create\",\n });\n\n return mapOrder(response.data);\n}\n\nexport async function getOrder(\n orderId: string,\n config?: DuffelConfig,\n): Promise<DuffelOrder> {\n const resolvedConfig = config ?? readDuffelConfigFromEnv();\n if (!orderId || orderId.trim().length === 0) {\n throw new Error(\"Duffel getOrder: order id is required\");\n }\n\n const { data: response } = await duffelFetch<DuffelOrderResponse>({\n config: resolvedConfig,\n method: \"GET\",\n directPath: `/air/orders/${encodeURIComponent(orderId.trim())}`,\n cloudRelayPath: `/api/cloud/travel-providers/duffel/orders/${encodeURIComponent(orderId.trim())}`,\n operation: \"order_retrieve\",\n });\n\n return mapOrder(response.data);\n}\n\nexport async function createPayment(\n args: {\n orderId: string;\n amount: string;\n currency: string;\n },\n config?: DuffelConfig,\n): Promise<DuffelPayment> {\n const resolvedConfig = config ?? readDuffelConfigFromEnv();\n if (args.orderId.trim().length === 0) {\n throw new Error(\"Duffel createPayment: order id is required\");\n }\n if (args.amount.trim().length === 0) {\n throw new Error(\"Duffel createPayment: amount is required\");\n }\n if (args.currency.trim().length === 0) {\n throw new Error(\"Duffel createPayment: currency is required\");\n }\n\n const { data: response } = await duffelFetch<DuffelPaymentResponse>({\n config: resolvedConfig,\n method: \"POST\",\n directPath: \"/air/payments\",\n cloudRelayPath: \"/api/cloud/travel-providers/duffel/payments\",\n body: {\n data: {\n order_id: args.orderId.trim(),\n payment: {\n type: \"balance\",\n amount: args.amount.trim(),\n currency: args.currency.trim().toUpperCase(),\n },\n },\n },\n operation: \"payment_create\",\n });\n\n return mapPayment(response.data);\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "5282D4AE856A620064756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|