@elizaos/plugin-elizacloud 2.0.0-alpha.8 → 2.0.11-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/auto-enable.ts +22 -0
- package/dist/browser/index.browser.js +2 -21
- package/dist/browser/index.browser.js.map +5 -38
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.node.cjs +9112 -2265
- package/dist/cjs/index.node.js.map +68 -30
- 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.d.ts +19 -0
- package/dist/cloud/auth.d.ts.map +1 -0
- package/dist/cloud/auth.js +283 -0
- package/dist/cloud/auth.js.map +12 -0
- package/dist/cloud/backup.d.ts +18 -0
- package/dist/cloud/backup.d.ts.map +1 -0
- package/dist/cloud/backup.js +63 -0
- package/dist/cloud/backup.js.map +10 -0
- package/dist/cloud/base-url.d.ts +7 -0
- package/dist/cloud/base-url.d.ts.map +1 -0
- package/dist/cloud/base-url.js +29 -0
- package/dist/cloud/base-url.js.map +10 -0
- package/dist/cloud/bridge-client.d.ts +126 -0
- package/dist/cloud/bridge-client.d.ts.map +1 -0
- package/dist/cloud/bridge-client.js +384 -0
- package/dist/cloud/bridge-client.js.map +11 -0
- 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-api-key.d.ts +26 -0
- package/dist/cloud/cloud-api-key.d.ts.map +1 -0
- package/dist/cloud/cloud-api-key.js +60 -0
- package/dist/cloud/cloud-api-key.js.map +10 -0
- package/dist/cloud/cloud-manager.d.ts +33 -0
- package/dist/cloud/cloud-manager.d.ts.map +1 -0
- package/dist/cloud/cloud-manager.js +806 -0
- package/dist/cloud/cloud-manager.js.map +16 -0
- package/dist/cloud/cloud-proxy.d.ts +20 -0
- package/dist/cloud/cloud-proxy.d.ts.map +1 -0
- package/dist/cloud/cloud-proxy.js +54 -0
- package/dist/cloud/cloud-proxy.js.map +10 -0
- package/dist/cloud/cloud-wallet.d.ts +94 -0
- package/dist/cloud/cloud-wallet.d.ts.map +1 -0
- package/dist/cloud/cloud-wallet.js +362 -0
- package/dist/cloud/cloud-wallet.js.map +13 -0
- 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 +15 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +1811 -0
- package/dist/cloud/index.js.map +24 -0
- 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/reconnect.d.ts +26 -0
- package/dist/cloud/reconnect.d.ts.map +1 -0
- package/dist/cloud/reconnect.js +104 -0
- package/dist/cloud/reconnect.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 +2 -0
- package/dist/cloud/validate-url.d.ts.map +1 -0
- package/dist/cloud/validate-url.js +175 -0
- package/dist/cloud/validate-url.js.map +10 -0
- 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-providers/cloud-status.d.ts.map +1 -1
- package/dist/cloud-providers/cloud-status.js +78 -0
- package/dist/cloud-providers/cloud-status.js.map +10 -0
- package/dist/cloud-providers/container-health.d.ts.map +1 -1
- package/dist/cloud-providers/container-health.js +74 -0
- package/dist/cloud-providers/container-health.js.map +10 -0
- package/dist/cloud-providers/credit-balance.d.ts.map +1 -1
- package/dist/cloud-providers/credit-balance.js +85 -0
- package/dist/cloud-providers/credit-balance.js.map +10 -0
- package/dist/cloud-providers/index.d.ts.map +1 -1
- package/dist/cloud-providers/index.js +24 -0
- package/dist/cloud-providers/index.js.map +9 -0
- package/dist/cloud-providers/model-registry.d.ts.map +1 -1
- package/dist/cloud-providers/model-registry.js +71 -0
- package/dist/cloud-providers/model-registry.js.map +10 -0
- package/dist/cloud-setup.d.ts +36 -0
- package/dist/cloud-setup.d.ts.map +1 -0
- package/dist/cloud-setup.js +883 -0
- 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 +15 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9862 -0
- package/dist/index.js.map +77 -0
- package/dist/index.node.d.ts +21 -2
- package/dist/index.node.d.ts.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +182 -0
- package/dist/init.js.map +12 -0
- package/dist/lib/cloud-connection.d.ts +77 -0
- package/dist/lib/cloud-connection.d.ts.map +1 -0
- package/dist/lib/cloud-connection.js +654 -0
- package/dist/lib/cloud-connection.js.map +14 -0
- package/dist/lib/cloud-secrets.d.ts +10 -0
- package/dist/lib/cloud-secrets.d.ts.map +1 -0
- package/dist/lib/cloud-secrets.js +36 -0
- package/dist/lib/cloud-secrets.js.map +10 -0
- package/dist/lib/config-env.d.ts +5 -0
- package/dist/lib/config-env.d.ts.map +1 -0
- package/dist/lib/config-env.js +191 -0
- package/dist/lib/config-env.js.map +11 -0
- package/dist/lib/config-like.d.ts +40 -0
- package/dist/lib/config-like.d.ts.map +1 -0
- package/dist/lib/config-like.js +103 -0
- package/dist/lib/config-like.js.map +10 -0
- package/dist/lib/credential-type-map.d.ts +53 -0
- package/dist/lib/credential-type-map.d.ts.map +1 -0
- package/dist/lib/credential-type-map.js +88 -0
- package/dist/lib/credential-type-map.js.map +10 -0
- package/dist/lib/feature-flags.d.ts +2 -0
- package/dist/lib/feature-flags.d.ts.map +1 -0
- package/dist/lib/feature-flags.js +40 -0
- package/dist/lib/feature-flags.js.map +10 -0
- package/dist/lib/http.d.ts +11 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +107 -0
- package/dist/lib/http.js.map +10 -0
- package/dist/lib/server-cloud-tts.d.ts +21 -0
- package/dist/lib/server-cloud-tts.d.ts.map +1 -0
- package/dist/lib/server-cloud-tts.js +251 -0
- package/dist/lib/server-cloud-tts.js.map +10 -0
- package/dist/lib/state-paths.d.ts +4 -0
- package/dist/lib/state-paths.d.ts.map +1 -0
- package/dist/lib/state-paths.js +52 -0
- package/dist/lib/state-paths.js.map +10 -0
- package/dist/lib/tts-debug.d.ts +6 -0
- package/dist/lib/tts-debug.d.ts.map +1 -0
- package/dist/lib/tts-debug.js +24 -0
- package/dist/lib/tts-debug.js.map +9 -0
- package/dist/models/embeddings.d.ts.map +1 -1
- package/dist/models/embeddings.js +329 -0
- package/dist/models/embeddings.js.map +13 -0
- package/dist/models/image.d.ts.map +1 -1
- package/dist/models/image.js +401 -0
- package/dist/models/image.js.map +14 -0
- package/dist/models/index.d.ts +1 -2
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1896 -0
- package/dist/models/index.js.map +19 -0
- package/dist/models/research.d.ts.map +1 -1
- package/dist/models/research.js +341 -0
- package/dist/models/research.js.map +13 -0
- package/dist/models/speech.d.ts +61 -3
- package/dist/models/speech.d.ts.map +1 -1
- package/dist/models/speech.js +429 -0
- package/dist/models/speech.js.map +13 -0
- package/dist/models/text.d.ts +111 -3
- package/dist/models/text.d.ts.map +1 -1
- package/dist/models/text.js +1173 -0
- package/dist/models/text.js.map +14 -0
- package/dist/models/tokenization.d.ts.map +1 -1
- package/dist/models/tokenization.js +65 -0
- package/dist/models/tokenization.js.map +10 -0
- package/dist/models/transcription.d.ts.map +1 -1
- package/dist/models/transcription.js +297 -0
- package/dist/models/transcription.js.map +13 -0
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.node.js +9189 -2295
- package/dist/node/index.node.js.map +68 -30
- package/dist/plugin.d.ts +20 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +2937 -0
- package/dist/plugin.js.map +28 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +136 -0
- package/dist/providers/openai.js.map +11 -0
- package/dist/register-routes.d.ts +2 -0
- package/dist/register-routes.d.ts.map +1 -0
- package/dist/register-routes.js +2938 -0
- package/dist/register-routes.js.map +29 -0
- package/dist/routes/cloud-billing-routes.d.ts +9 -0
- package/dist/routes/cloud-billing-routes.d.ts.map +1 -0
- package/dist/routes/cloud-billing-routes.js +764 -0
- package/dist/routes/cloud-billing-routes.js.map +15 -0
- 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 +10 -0
- package/dist/routes/cloud-compat-routes.d.ts.map +1 -0
- package/dist/routes/cloud-compat-routes.js +495 -0
- package/dist/routes/cloud-compat-routes.js.map +15 -0
- package/dist/routes/cloud-features-routes.d.ts +9 -0
- package/dist/routes/cloud-features-routes.d.ts.map +1 -0
- package/dist/routes/cloud-features-routes.js +124 -0
- package/dist/routes/cloud-features-routes.js.map +11 -0
- package/dist/routes/cloud-provisioning.d.ts +14 -0
- package/dist/routes/cloud-provisioning.d.ts.map +1 -0
- package/dist/routes/cloud-provisioning.js +37 -0
- package/dist/routes/cloud-provisioning.js.map +10 -0
- package/dist/routes/cloud-relay-routes.d.ts +23 -0
- package/dist/routes/cloud-relay-routes.d.ts.map +1 -0
- package/dist/routes/cloud-relay-routes.js +142 -0
- package/dist/routes/cloud-relay-routes.js.map +11 -0
- package/dist/routes/cloud-routes-autonomous.d.ts +82 -0
- package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -0
- package/dist/routes/cloud-routes-autonomous.js +1252 -0
- package/dist/routes/cloud-routes-autonomous.js.map +18 -0
- package/dist/routes/cloud-routes.d.ts +35 -0
- package/dist/routes/cloud-routes.d.ts.map +1 -0
- package/dist/routes/cloud-routes.js +2173 -0
- package/dist/routes/cloud-routes.js.map +23 -0
- package/dist/routes/cloud-status-routes-autonomous.d.ts +14 -0
- package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -0
- package/dist/routes/cloud-status-routes-autonomous.js +349 -0
- package/dist/routes/cloud-status-routes-autonomous.js.map +13 -0
- package/dist/routes/cloud-status-routes.d.ts +4 -0
- package/dist/routes/cloud-status-routes.d.ts.map +1 -0
- package/dist/routes/cloud-status-routes.js +695 -0
- package/dist/routes/cloud-status-routes.js.map +15 -0
- 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 +140 -5
- package/dist/services/cloud-auth.d.ts.map +1 -1
- package/dist/services/cloud-auth.js +368 -0
- package/dist/services/cloud-auth.js.map +12 -0
- package/dist/services/cloud-backup.d.ts.map +1 -1
- package/dist/services/cloud-backup.js +176 -0
- package/dist/services/cloud-backup.js.map +11 -0
- package/dist/services/cloud-bootstrap.d.ts +38 -0
- package/dist/services/cloud-bootstrap.d.ts.map +1 -0
- package/dist/services/cloud-bootstrap.js +84 -0
- package/dist/services/cloud-bootstrap.js.map +10 -0
- package/dist/services/cloud-bridge.d.ts +1 -1
- package/dist/services/cloud-bridge.d.ts.map +1 -1
- package/dist/services/cloud-bridge.js +308 -0
- package/dist/services/cloud-bridge.js.map +11 -0
- 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 +292 -0
- package/dist/services/cloud-container.js.map +11 -0
- package/dist/services/cloud-credential-provider.d.ts +55 -0
- package/dist/services/cloud-credential-provider.d.ts.map +1 -0
- package/dist/services/cloud-credential-provider.js +190 -0
- package/dist/services/cloud-credential-provider.js.map +11 -0
- package/dist/services/cloud-managed-gateway-relay.d.ts +38 -0
- package/dist/services/cloud-managed-gateway-relay.d.ts.map +1 -0
- package/dist/services/cloud-managed-gateway-relay.js +479 -0
- package/dist/services/cloud-managed-gateway-relay.js.map +10 -0
- package/dist/services/cloud-model-registry.d.ts.map +1 -1
- package/dist/services/cloud-model-registry.js +175 -0
- package/dist/services/cloud-model-registry.js.map +10 -0
- package/dist/services/index.d.ts +3 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +29 -0
- package/dist/services/index.js.map +9 -0
- package/dist/types/cloud.d.ts +42 -19
- package/dist/types/cloud.d.ts.map +1 -1
- package/dist/types/cloud.js +52 -0
- package/dist/types/cloud.js.map +10 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +9 -0
- package/dist/utils/cloud-api.d.ts +2 -27
- package/dist/utils/cloud-api.d.ts.map +1 -1
- package/dist/utils/cloud-api.js +33 -0
- package/dist/utils/cloud-api.js.map +10 -0
- package/dist/utils/cloud-sdk/client.d.ts +133 -0
- package/dist/utils/cloud-sdk/client.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/client.js +3693 -0
- package/dist/utils/cloud-sdk/client.js.map +13 -0
- package/dist/utils/cloud-sdk/http.d.ts +37 -0
- package/dist/utils/cloud-sdk/http.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/http.js +237 -0
- package/dist/utils/cloud-sdk/http.js.map +11 -0
- package/dist/utils/cloud-sdk/index.d.ts +6 -0
- package/dist/utils/cloud-sdk/index.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/index.js +29 -0
- package/dist/utils/cloud-sdk/index.js.map +9 -0
- package/dist/utils/cloud-sdk/public-routes.d.ts +5563 -0
- package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/public-routes.js +3048 -0
- package/dist/utils/cloud-sdk/public-routes.js.map +10 -0
- package/dist/utils/cloud-sdk/types.cloud-api.d.ts +101 -0
- package/dist/utils/cloud-sdk/types.cloud-api.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/types.cloud-api.js +2 -0
- package/dist/utils/cloud-sdk/types.cloud-api.js.map +9 -0
- package/dist/utils/cloud-sdk/types.d.ts +653 -0
- package/dist/utils/cloud-sdk/types.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/types.js +29 -0
- package/dist/utils/cloud-sdk/types.js.map +10 -0
- package/dist/utils/config.d.ts +16 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +147 -0
- package/dist/utils/config.js.map +10 -0
- package/dist/utils/events.d.ts +23 -2
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/events.js +45 -0
- package/dist/utils/events.js.map +10 -0
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +103 -0
- package/dist/utils/helpers.js.map +10 -0
- package/dist/utils/responses-output.d.ts +13 -0
- package/dist/utils/responses-output.d.ts.map +1 -0
- package/dist/utils/responses-output.js +102 -0
- package/dist/utils/responses-output.js.map +10 -0
- package/dist/utils/sdk-client.d.ts +5 -0
- package/dist/utils/sdk-client.d.ts.map +1 -0
- package/dist/utils/sdk-client.js +157 -0
- package/dist/utils/sdk-client.js.map +11 -0
- 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 +139 -21
- package/src/cloud/auth-service-types.ts +24 -0
- package/src/cloud/auth.ts +175 -0
- package/src/cloud/backup.ts +46 -0
- package/src/cloud/base-url.ts +6 -0
- package/src/cloud/bridge-client.ts +602 -0
- package/src/cloud/clack-observer.ts +189 -0
- package/src/cloud/cloud-api-key.ts +80 -0
- package/src/cloud/cloud-manager.ts +163 -0
- package/src/cloud/cloud-proxy.ts +52 -0
- package/src/cloud/cloud-wallet.ts +341 -0
- package/src/cloud/duffel-client.ts +847 -0
- package/src/cloud/index.ts +38 -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/reconnect.ts +111 -0
- package/src/cloud/setup-observer.ts +125 -0
- package/src/cloud/validate-url.ts +187 -0
- package/src/cloud/x402-payment-handler.ts +215 -0
- package/src/cloud-providers/cloud-status.ts +75 -0
- package/src/cloud-providers/container-health.ts +68 -0
- package/src/cloud-providers/credit-balance.ts +70 -0
- package/src/cloud-providers/index.ts +3 -0
- package/src/cloud-providers/model-registry.ts +74 -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 +39 -0
- package/src/index.node.ts +69 -0
- package/src/index.ts +419 -0
- package/src/init.ts +39 -0
- package/src/lib/cloud-connection.ts +661 -0
- package/src/lib/cloud-secrets.ts +14 -0
- package/src/lib/config-env.ts +168 -0
- package/src/lib/config-like.ts +149 -0
- package/src/lib/credential-type-map.ts +130 -0
- package/src/lib/feature-flags.ts +26 -0
- package/src/lib/http.ts +122 -0
- package/src/lib/server-cloud-tts.ts +301 -0
- package/src/lib/state-paths.ts +28 -0
- package/src/lib/tts-debug.ts +5 -0
- package/src/models/embeddings.ts +298 -0
- package/src/models/image.ts +234 -0
- package/src/models/index.ts +16 -0
- package/src/models/research.ts +275 -0
- package/src/models/speech.ts +324 -0
- package/src/models/text.ts +1493 -0
- package/src/models/tokenization.ts +67 -0
- package/src/models/transcription.ts +101 -0
- package/src/plugin.ts +281 -0
- package/src/providers/openai.ts +16 -0
- package/src/register-routes.ts +6 -0
- package/src/routes/cloud-billing-routes.ts +744 -0
- package/src/routes/cloud-coding-container-routes.ts +198 -0
- package/src/routes/cloud-compat-routes.ts +304 -0
- package/src/routes/cloud-features-routes.ts +57 -0
- package/src/routes/cloud-provisioning.ts +37 -0
- package/src/routes/cloud-relay-routes.ts +135 -0
- package/src/routes/cloud-routes-autonomous.ts +993 -0
- package/src/routes/cloud-routes.ts +637 -0
- package/src/routes/cloud-status-routes-autonomous.ts +238 -0
- package/src/routes/cloud-status-routes.ts +73 -0
- 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 +574 -0
- package/src/services/cloud-backup.ts +208 -0
- package/src/services/cloud-bootstrap.ts +106 -0
- package/src/services/cloud-bridge.ts +386 -0
- package/src/services/cloud-container.ts +390 -0
- package/src/services/cloud-credential-provider.ts +210 -0
- package/src/services/cloud-managed-gateway-relay.ts +663 -0
- package/src/services/cloud-model-registry.ts +202 -0
- package/src/services/index.ts +17 -0
- package/{types → src/types}/cloud.ts +74 -29
- package/{types → src/types}/index.ts +25 -0
- package/src/utils/cloud-api.ts +10 -0
- package/src/utils/cloud-sdk/client.ts +774 -0
- package/src/utils/cloud-sdk/http.ts +291 -0
- package/src/utils/cloud-sdk/index.ts +23 -0
- package/src/utils/cloud-sdk/public-routes.ts +5238 -0
- package/src/utils/cloud-sdk/types.cloud-api.ts +120 -0
- package/src/utils/cloud-sdk/types.ts +760 -0
- package/src/utils/config.ts +193 -0
- package/src/utils/events.ts +65 -0
- package/src/utils/helpers.ts +107 -0
- package/src/utils/responses-output.ts +115 -0
- package/src/utils/sdk-client.ts +41 -0
- package/src/utils/waifu-metering.ts +302 -0
- package/dist/actions/check-credits.d.ts +0 -6
- package/dist/actions/check-credits.d.ts.map +0 -1
- package/dist/actions/freeze-agent.d.ts +0 -9
- package/dist/actions/freeze-agent.d.ts.map +0 -1
- package/dist/actions/index.d.ts +0 -5
- package/dist/actions/index.d.ts.map +0 -1
- package/dist/actions/provision-agent.d.ts +0 -8
- package/dist/actions/provision-agent.d.ts.map +0 -1
- package/dist/actions/resume-agent.d.ts +0 -9
- package/dist/actions/resume-agent.d.ts.map +0 -1
- package/dist/build.d.ts +0 -3
- package/dist/build.d.ts.map +0 -1
- package/dist/generated/specs/specs.d.ts +0 -55
- package/dist/generated/specs/specs.d.ts.map +0 -1
- package/dist/models/object.d.ts +0 -4
- package/dist/models/object.d.ts.map +0 -1
- package/dist/utils/forwarded-settings.d.ts +0 -8
- package/dist/utils/forwarded-settings.d.ts.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
18
|
+
|
|
19
|
+
// src/lib/credential-type-map.ts
|
|
20
|
+
var credTypeToConnector = new Map([
|
|
21
|
+
[
|
|
22
|
+
"gmailOAuth2",
|
|
23
|
+
{
|
|
24
|
+
connector: "google",
|
|
25
|
+
capabilities: ["google.gmail.triage", "google.gmail.send", "google.gmail.manage"],
|
|
26
|
+
friendlyName: "Gmail"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
"gmailOAuth2Api",
|
|
31
|
+
{
|
|
32
|
+
connector: "google",
|
|
33
|
+
capabilities: ["google.gmail.triage", "google.gmail.send", "google.gmail.manage"],
|
|
34
|
+
friendlyName: "Gmail"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
"googleCalendarOAuth2Api",
|
|
39
|
+
{
|
|
40
|
+
connector: "google",
|
|
41
|
+
capabilities: ["google.calendar.read", "google.calendar.write"],
|
|
42
|
+
friendlyName: "Google Calendar"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
"googleSheetsOAuth2Api",
|
|
47
|
+
{
|
|
48
|
+
connector: "google",
|
|
49
|
+
capabilities: ["google.basic_identity"],
|
|
50
|
+
friendlyName: "Google Sheets"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
"githubOAuth2Api",
|
|
55
|
+
{
|
|
56
|
+
connector: "github",
|
|
57
|
+
friendlyName: "GitHub"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
[
|
|
61
|
+
"githubApi",
|
|
62
|
+
{
|
|
63
|
+
connector: "github",
|
|
64
|
+
friendlyName: "GitHub"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
"discordApi",
|
|
69
|
+
{
|
|
70
|
+
connector: "discord",
|
|
71
|
+
friendlyName: "Discord"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
"discordBotApi",
|
|
76
|
+
{
|
|
77
|
+
connector: "discord",
|
|
78
|
+
friendlyName: "Discord (Bot)"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
]);
|
|
82
|
+
var supportedCredTypes = new Set(credTypeToConnector.keys());
|
|
83
|
+
export {
|
|
84
|
+
supportedCredTypes,
|
|
85
|
+
credTypeToConnector
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//# debugId=ABCE65BAC140795564756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/credential-type-map.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Mapping from workflow-plugin credential type names → Eliza Cloud connector slugs.\n *\n * The workflow plugin's LLM emits credential type strings (e.g. `gmailOAuth2`,\n * `slackOAuth2Api`) on each node that needs an external account. The cloud\n * exposes per-connector OAuth flows under `/api/v1/eliza/<connector>/...`.\n *\n * This map is the single source of truth for which workflow credential type\n * resolves through which cloud connector + with which OAuth scopes. Add new\n * entries when the cloud gains support for additional connectors; do not\n * scatter cred-type → connector logic elsewhere.\n *\n * Cloud-side endpoint convention (see packages/cloud-api/v1/eliza/<connector>/):\n * POST /api/v1/eliza/<connector>/connect/initiate → { authUrl }\n * GET /api/v1/eliza/<connector>/status → { connected, ... }\n *\n * Not every connector below has a fully-implemented cloud endpoint yet — the\n * provider returns `null` for unmapped types and `needs_auth` (with the\n * cloud-issued OAuth URL) for mapped-but-not-connected accounts. See\n * `cloud-credential-provider.ts` for the resolution logic.\n */\n\nexport interface CredentialTypeMapping {\n /**\n * Cloud connector slug used in the URL path\n * (`/api/v1/eliza/<connector>/connect/initiate`).\n */\n connector: string;\n /**\n * Optional capability tokens passed to the cloud's `connect/initiate`\n * endpoint. The cloud translates these to provider-specific OAuth scopes\n * (e.g. Google's `google.gmail.send` → `https://www.googleapis.com/auth/gmail.send`).\n */\n capabilities?: string[];\n /**\n * Friendly description used in `needs_auth` UI prompts. The runtime may\n * surface this verbatim to the end-user.\n */\n friendlyName: string;\n}\n\n/**\n * Workflow credential type → cloud connector mapping.\n *\n * Names mirror the n8n / workflows-plugin convention used by the LLM in\n * `plugins/plugin-workflow/src/utils/workflow-prompts/workflowGeneration.ts`.\n * Both `gmailOAuth2` and `gmailOAuth2Api` map to the same connector — the\n * workflow resolver does fuzzy `Api`-suffix matching upstream, but we keep\n * both keys here so `checkCredentialTypes` answers truthfully without the\n * caller having to know about that fuzziness.\n */\nexport const credTypeToConnector: ReadonlyMap<string, CredentialTypeMapping> = new Map([\n // ─── Google ──────────────────────────────────────────────────────────\n // Cloud endpoint: /api/v1/eliza/google/{connect/initiate,status,disconnect}\n // The cloud's capability tokens are documented in\n // packages/cloud-api/v1/eliza/google/connect/initiate/route.ts.\n [\n \"gmailOAuth2\",\n {\n connector: \"google\",\n capabilities: [\"google.gmail.triage\", \"google.gmail.send\", \"google.gmail.manage\"],\n friendlyName: \"Gmail\",\n },\n ],\n [\n \"gmailOAuth2Api\",\n {\n connector: \"google\",\n capabilities: [\"google.gmail.triage\", \"google.gmail.send\", \"google.gmail.manage\"],\n friendlyName: \"Gmail\",\n },\n ],\n [\n \"googleCalendarOAuth2Api\",\n {\n connector: \"google\",\n capabilities: [\"google.calendar.read\", \"google.calendar.write\"],\n friendlyName: \"Google Calendar\",\n },\n ],\n [\n \"googleSheetsOAuth2Api\",\n {\n connector: \"google\",\n capabilities: [\"google.basic_identity\"],\n friendlyName: \"Google Sheets\",\n },\n ],\n\n // ─── GitHub ──────────────────────────────────────────────────────────\n // Cloud endpoint: /api/v1/eliza/github-oauth-complete/ (callback only).\n // The initiate flow is host-driven; the provider returns `needs_auth`\n // pointing at the cloud's GitHub install URL when not connected.\n [\n \"githubOAuth2Api\",\n {\n connector: \"github\",\n friendlyName: \"GitHub\",\n },\n ],\n [\n \"githubApi\",\n {\n connector: \"github\",\n friendlyName: \"GitHub\",\n },\n ],\n\n // ─── Discord ─────────────────────────────────────────────────────────\n // Cloud endpoint: /api/v1/eliza/discord/gateway-agent/ (gateway pairing).\n // No OAuth-token-issuance flow yet — provider returns `null` so the\n // workflow resolver falls back to its default missing-connection report.\n [\n \"discordApi\",\n {\n connector: \"discord\",\n friendlyName: \"Discord\",\n },\n ],\n [\n \"discordBotApi\",\n {\n connector: \"discord\",\n friendlyName: \"Discord (Bot)\",\n },\n ],\n]);\n\n/** Set used by `checkCredentialTypes` for O(1) supported-set membership. */\nexport const supportedCredTypes: ReadonlySet<string> = new Set(credTypeToConnector.keys());\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAmDO,IAAM,sBAAkE,IAAI,IAAI;AAAA,EAKrF;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc,CAAC,uBAAuB,qBAAqB,qBAAqB;AAAA,MAChF,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc,CAAC,uBAAuB,qBAAqB,qBAAqB;AAAA,MAChF,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc,CAAC,wBAAwB,uBAAuB;AAAA,MAC9D,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc,CAAC,uBAAuB;AAAA,MACtC,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAMA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAMA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,EACF;AACF,CAAC;AAGM,IAAM,qBAA0C,IAAI,IAAI,oBAAoB,KAAK,CAAC;",
|
|
8
|
+
"debugId": "ABCE65BAC140795564756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/lib/feature-flags.ts"],"names":[],"mappings":"AAuBA,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
18
|
+
|
|
19
|
+
// src/lib/feature-flags.ts
|
|
20
|
+
function readBoolFlag(name, fallback = false) {
|
|
21
|
+
const raw = process.env[name];
|
|
22
|
+
if (raw === undefined || raw === null || raw === "")
|
|
23
|
+
return fallback;
|
|
24
|
+
const trimmed = String(raw).trim().toLowerCase();
|
|
25
|
+
if (trimmed === "1" || trimmed === "true" || trimmed === "yes" || trimmed === "on") {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
if (trimmed === "0" || trimmed === "false" || trimmed === "no" || trimmed === "off") {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return fallback;
|
|
32
|
+
}
|
|
33
|
+
function isCloudWalletEnabled() {
|
|
34
|
+
return readBoolFlag("ENABLE_CLOUD_WALLET");
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
isCloudWalletEnabled
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//# debugId=F2AC4B357531E84364756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/feature-flags.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"function readBoolFlag(name: string, fallback = false): boolean {\n const raw = process.env[name];\n if (raw === undefined || raw === null || raw === \"\") return fallback;\n const trimmed = String(raw).trim().toLowerCase();\n if (\n trimmed === \"1\" ||\n trimmed === \"true\" ||\n trimmed === \"yes\" ||\n trimmed === \"on\"\n ) {\n return true;\n }\n if (\n trimmed === \"0\" ||\n trimmed === \"false\" ||\n trimmed === \"no\" ||\n trimmed === \"off\"\n ) {\n return false;\n }\n return fallback;\n}\n\nexport function isCloudWalletEnabled(): boolean {\n return readBoolFlag(\"ENABLE_CLOUD_WALLET\");\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY,CAAC,MAAc,WAAW,OAAgB;AAAA,EAC7D,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,IAAI,QAAQ,aAAa,QAAQ,QAAQ,QAAQ;AAAA,IAAI,OAAO;AAAA,EAC5D,MAAM,UAAU,OAAO,GAAG,EAAE,KAAK,EAAE,YAAY;AAAA,EAC/C,IACE,YAAY,OACZ,YAAY,UACZ,YAAY,SACZ,YAAY,MACZ;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IACE,YAAY,OACZ,YAAY,WACZ,YAAY,QACZ,YAAY,OACZ;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,oBAAoB,GAAY;AAAA,EAC9C,OAAO,aAAa,qBAAqB;AAAA;",
|
|
8
|
+
"debugId": "F2AC4B357531E84364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type http from "node:http";
|
|
2
|
+
export interface ReadJsonBodyOptions {
|
|
3
|
+
maxBytes?: number;
|
|
4
|
+
tooLargeMessage?: string;
|
|
5
|
+
destroyOnTooLarge?: boolean;
|
|
6
|
+
requireObject?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function sendJson(res: http.ServerResponse, body: unknown, status?: number): void;
|
|
9
|
+
export declare function sendJsonError(res: http.ServerResponse, message: string, status?: number): void;
|
|
10
|
+
export declare function readJsonBody<T extends object = Record<string, unknown>>(req: http.IncomingMessage, res: http.ServerResponse, options?: ReadJsonBodyOptions): Promise<T | null>;
|
|
11
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoBD,wBAAgB,QAAQ,CACtB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,IAAI,EAAE,OAAO,EACb,MAAM,SAAM,GACX,IAAI,CAKN;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,SAAM,GACX,IAAI,CAEN;AAwBD,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3E,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAiDnB"}
|
package/dist/lib/http.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
18
|
+
|
|
19
|
+
// src/lib/http.ts
|
|
20
|
+
function scrubStackFields(value) {
|
|
21
|
+
if (value instanceof Error) {
|
|
22
|
+
return { error: value.message || "Internal error" };
|
|
23
|
+
}
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return value.map(scrubStackFields);
|
|
26
|
+
}
|
|
27
|
+
if (value && typeof value === "object") {
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const [key, nested] of Object.entries(value)) {
|
|
30
|
+
if (key === "stack" || key === "stackTrace")
|
|
31
|
+
continue;
|
|
32
|
+
out[key] = scrubStackFields(nested);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
function sendJson(res, body, status = 200) {
|
|
39
|
+
if (res.headersSent)
|
|
40
|
+
return;
|
|
41
|
+
res.statusCode = status;
|
|
42
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
43
|
+
res.end(JSON.stringify(scrubStackFields(body)));
|
|
44
|
+
}
|
|
45
|
+
function sendJsonError(res, message, status = 400) {
|
|
46
|
+
sendJson(res, { error: message }, status);
|
|
47
|
+
}
|
|
48
|
+
async function readRequestBody(req, options) {
|
|
49
|
+
const maxBytes = options.maxBytes ?? 1048576;
|
|
50
|
+
const chunks = [];
|
|
51
|
+
let size = 0;
|
|
52
|
+
for await (const chunk of req) {
|
|
53
|
+
const buffer = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
54
|
+
size += buffer.length;
|
|
55
|
+
if (size > maxBytes) {
|
|
56
|
+
if (options.destroyOnTooLarge)
|
|
57
|
+
req.destroy();
|
|
58
|
+
throw new Error(options.tooLargeMessage ?? "Request body too large");
|
|
59
|
+
}
|
|
60
|
+
chunks.push(buffer);
|
|
61
|
+
}
|
|
62
|
+
if (chunks.length === 0)
|
|
63
|
+
return null;
|
|
64
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
65
|
+
}
|
|
66
|
+
async function readJsonBody(req, res, options = {}) {
|
|
67
|
+
const cached = req.body;
|
|
68
|
+
if (cached !== undefined) {
|
|
69
|
+
if (options.requireObject !== false && (!cached || typeof cached !== "object" || Array.isArray(cached))) {
|
|
70
|
+
sendJsonError(res, "Request body must be a JSON object", 400);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return cached;
|
|
74
|
+
}
|
|
75
|
+
let raw;
|
|
76
|
+
try {
|
|
77
|
+
raw = await readRequestBody(req, options);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
sendJsonError(res, error instanceof Error ? error.message : "Failed to read request body", 413);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
if (!raw?.trim()) {
|
|
83
|
+
const empty = {};
|
|
84
|
+
req.body = empty;
|
|
85
|
+
return empty;
|
|
86
|
+
}
|
|
87
|
+
let parsed;
|
|
88
|
+
try {
|
|
89
|
+
parsed = JSON.parse(raw);
|
|
90
|
+
} catch {
|
|
91
|
+
sendJsonError(res, "Invalid JSON in request body", 400);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
if (options.requireObject !== false && (!parsed || typeof parsed !== "object" || Array.isArray(parsed))) {
|
|
95
|
+
sendJsonError(res, "Request body must be a JSON object", 400);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
req.body = parsed;
|
|
99
|
+
return parsed;
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
sendJsonError,
|
|
103
|
+
sendJson,
|
|
104
|
+
readJsonBody
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
//# debugId=35C1D1B4C679F52364756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/http.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type http from \"node:http\";\n\nexport interface ReadJsonBodyOptions {\n maxBytes?: number;\n tooLargeMessage?: string;\n destroyOnTooLarge?: boolean;\n requireObject?: boolean;\n}\n\nfunction scrubStackFields(value: unknown): unknown {\n if (value instanceof Error) {\n return { error: value.message || \"Internal error\" };\n }\n if (Array.isArray(value)) {\n return value.map(scrubStackFields);\n }\n if (value && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value)) {\n if (key === \"stack\" || key === \"stackTrace\") continue;\n out[key] = scrubStackFields(nested);\n }\n return out;\n }\n return value;\n}\n\nexport function sendJson(\n res: http.ServerResponse,\n body: unknown,\n status = 200,\n): void {\n if (res.headersSent) return;\n res.statusCode = status;\n res.setHeader(\"content-type\", \"application/json; charset=utf-8\");\n res.end(JSON.stringify(scrubStackFields(body)));\n}\n\nexport function sendJsonError(\n res: http.ServerResponse,\n message: string,\n status = 400,\n): void {\n sendJson(res, { error: message }, status);\n}\n\nasync function readRequestBody(\n req: http.IncomingMessage,\n options: ReadJsonBodyOptions,\n): Promise<string | null> {\n const maxBytes = options.maxBytes ?? 1_048_576;\n const chunks: Buffer[] = [];\n let size = 0;\n\n for await (const chunk of req) {\n const buffer = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n size += buffer.length;\n if (size > maxBytes) {\n if (options.destroyOnTooLarge) req.destroy();\n throw new Error(options.tooLargeMessage ?? \"Request body too large\");\n }\n chunks.push(buffer);\n }\n\n if (chunks.length === 0) return null;\n return Buffer.concat(chunks).toString(\"utf8\");\n}\n\nexport async function readJsonBody<T extends object = Record<string, unknown>>(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n options: ReadJsonBodyOptions = {},\n): Promise<T | null> {\n const cached = (req as http.IncomingMessage & { body?: unknown }).body;\n if (cached !== undefined) {\n if (\n options.requireObject !== false &&\n (!cached || typeof cached !== \"object\" || Array.isArray(cached))\n ) {\n sendJsonError(res, \"Request body must be a JSON object\", 400);\n return null;\n }\n return cached as T;\n }\n\n let raw: string | null;\n try {\n raw = await readRequestBody(req, options);\n } catch (error) {\n sendJsonError(\n res,\n error instanceof Error ? error.message : \"Failed to read request body\",\n 413,\n );\n return null;\n }\n\n if (!raw?.trim()) {\n const empty = {} as T;\n (req as http.IncomingMessage & { body?: unknown }).body = empty;\n return empty;\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n sendJsonError(res, \"Invalid JSON in request body\", 400);\n return null;\n }\n\n if (\n options.requireObject !== false &&\n (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed))\n ) {\n sendJsonError(res, \"Request body must be a JSON object\", 400);\n return null;\n }\n\n (req as http.IncomingMessage & { body?: unknown }).body = parsed;\n return parsed as T;\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "35C1D1B4C679F52364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud TTS helpers — proxy to Eliza Cloud (`elizacloud.ai`).
|
|
3
|
+
*
|
|
4
|
+
* Pure / config-driven helpers (TTS API key resolution, base URL resolution,
|
|
5
|
+
* voice / model id normalization, compat header mirroring) live in
|
|
6
|
+
* `@elizaos/shared/elizacloud/server-cloud-tts` so host-layer packages can
|
|
7
|
+
* resolve cloud TTS configuration without reverse-importing this plugin.
|
|
8
|
+
*
|
|
9
|
+
* The HTTP request handler (`handleCloudTtsPreviewRoute`) stays here because
|
|
10
|
+
* it wires together the runtime route system.
|
|
11
|
+
*/
|
|
12
|
+
import type http from "node:http";
|
|
13
|
+
export { __resetCloudBaseUrlCache, ELIZA_CLOUD_TTS_MAX_TEXT_CHARS, ensureCloudTtsApiKeyAlias, mirrorCompatHeaders, normalizeElizaCloudTtsModelId, resolveCloudProxyTtsModel, resolveCloudTtsBaseUrl, resolveCloudTtsCandidateUrls, resolveElevenLabsApiKeyForCloudMode, resolveElizaCloudTtsVoiceId, shouldRetryCloudTtsUpstream, } from "@elizaos/shared";
|
|
14
|
+
/** Browser → API correlation (never forwarded to Eliza Cloud). */
|
|
15
|
+
export declare function readTtsDebugClientHeaders(req: Pick<http.IncomingMessage, "headers">): {
|
|
16
|
+
messageId?: string;
|
|
17
|
+
clipSegment?: string;
|
|
18
|
+
hearingFull?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function handleCloudTtsPreviewRoute(req: http.IncomingMessage, res: http.ServerResponse): Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=server-cloud-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-cloud-tts.d.ts","sourceRoot":"","sources":["../../src/lib/server-cloud-tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAalC,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,mCAAmC,EACnC,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAEzB,kEAAkE;AAClE,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GACzC;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAoBA;AA6ED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CA2JlB"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
18
|
+
|
|
19
|
+
// src/lib/server-cloud-tts.ts
|
|
20
|
+
import { sanitizeSpeechText } from "@elizaos/core";
|
|
21
|
+
import {
|
|
22
|
+
_internalResolveCloudApiKey,
|
|
23
|
+
ELIZA_CLOUD_TTS_MAX_TEXT_CHARS,
|
|
24
|
+
resolveCloudProxyTtsModel,
|
|
25
|
+
resolveCloudTtsCandidateUrls,
|
|
26
|
+
resolveElizaCloudTtsVoiceId,
|
|
27
|
+
shouldRetryCloudTtsUpstream,
|
|
28
|
+
ttsDebug,
|
|
29
|
+
ttsDebugTextPreview
|
|
30
|
+
} from "@elizaos/shared";
|
|
31
|
+
import {
|
|
32
|
+
__resetCloudBaseUrlCache,
|
|
33
|
+
ELIZA_CLOUD_TTS_MAX_TEXT_CHARS as ELIZA_CLOUD_TTS_MAX_TEXT_CHARS2,
|
|
34
|
+
ensureCloudTtsApiKeyAlias,
|
|
35
|
+
mirrorCompatHeaders,
|
|
36
|
+
normalizeElizaCloudTtsModelId,
|
|
37
|
+
resolveCloudProxyTtsModel as resolveCloudProxyTtsModel2,
|
|
38
|
+
resolveCloudTtsBaseUrl,
|
|
39
|
+
resolveCloudTtsCandidateUrls as resolveCloudTtsCandidateUrls2,
|
|
40
|
+
resolveElevenLabsApiKeyForCloudMode,
|
|
41
|
+
resolveElizaCloudTtsVoiceId as resolveElizaCloudTtsVoiceId2,
|
|
42
|
+
shouldRetryCloudTtsUpstream as shouldRetryCloudTtsUpstream2
|
|
43
|
+
} from "@elizaos/shared";
|
|
44
|
+
function readTtsDebugClientHeaders(req) {
|
|
45
|
+
const pick = (name) => {
|
|
46
|
+
const raw = req.headers[name];
|
|
47
|
+
if (raw == null)
|
|
48
|
+
return;
|
|
49
|
+
const v = Array.isArray(raw) ? raw[0] : raw;
|
|
50
|
+
return typeof v === "string" && v.trim() ? v.trim() : undefined;
|
|
51
|
+
};
|
|
52
|
+
const decode = (enc) => {
|
|
53
|
+
if (!enc)
|
|
54
|
+
return;
|
|
55
|
+
try {
|
|
56
|
+
return decodeURIComponent(enc);
|
|
57
|
+
} catch {
|
|
58
|
+
return enc;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
messageId: decode(pick("x-elizaos-tts-message-id")),
|
|
63
|
+
clipSegment: decode(pick("x-elizaos-tts-clip-segment")),
|
|
64
|
+
hearingFull: decode(pick("x-elizaos-tts-full-preview"))
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function ttsClientDbgFields(hdr) {
|
|
68
|
+
const o = {};
|
|
69
|
+
if (hdr.messageId)
|
|
70
|
+
o.messageId = hdr.messageId;
|
|
71
|
+
if (hdr.clipSegment)
|
|
72
|
+
o.clipSegment = hdr.clipSegment;
|
|
73
|
+
if (hdr.hearingFull)
|
|
74
|
+
o.hearingFull = hdr.hearingFull;
|
|
75
|
+
return o;
|
|
76
|
+
}
|
|
77
|
+
function pickBodyString(body, camel, snake) {
|
|
78
|
+
const a = body[camel];
|
|
79
|
+
if (typeof a === "string" && a.trim())
|
|
80
|
+
return a;
|
|
81
|
+
const b = body[snake];
|
|
82
|
+
if (typeof b === "string" && b.trim())
|
|
83
|
+
return b;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
async function readRawRequestBody(req) {
|
|
87
|
+
const chunks = [];
|
|
88
|
+
for await (const chunk of req) {
|
|
89
|
+
chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
|
|
90
|
+
}
|
|
91
|
+
return Buffer.concat(chunks);
|
|
92
|
+
}
|
|
93
|
+
function sendJsonResponse(res, status, body) {
|
|
94
|
+
if (res.headersSent)
|
|
95
|
+
return;
|
|
96
|
+
res.statusCode = status;
|
|
97
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
98
|
+
res.end(JSON.stringify(body));
|
|
99
|
+
}
|
|
100
|
+
function sendJsonErrorResponse(res, status, message) {
|
|
101
|
+
sendJsonResponse(res, status, { error: message });
|
|
102
|
+
}
|
|
103
|
+
function forwardCloudTtsUpstreamError(res, status, bodyText) {
|
|
104
|
+
if (res.headersSent)
|
|
105
|
+
return;
|
|
106
|
+
const trimmed = bodyText.trim();
|
|
107
|
+
if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
108
|
+
try {
|
|
109
|
+
const parsed = JSON.parse(trimmed);
|
|
110
|
+
sendJsonResponse(res, status, parsed);
|
|
111
|
+
return;
|
|
112
|
+
} catch {}
|
|
113
|
+
}
|
|
114
|
+
res.statusCode = status;
|
|
115
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
116
|
+
res.end(JSON.stringify({ error: trimmed || "Eliza Cloud TTS request failed" }));
|
|
117
|
+
}
|
|
118
|
+
async function handleCloudTtsPreviewRoute(req, res) {
|
|
119
|
+
const clientTtsDbg = readTtsDebugClientHeaders(req);
|
|
120
|
+
const dbgExtra = ttsClientDbgFields(clientTtsDbg);
|
|
121
|
+
const cloudApiKey = _internalResolveCloudApiKey();
|
|
122
|
+
if (!cloudApiKey) {
|
|
123
|
+
ttsDebug("server:cloud-tts:reject", {
|
|
124
|
+
reason: "no_api_key",
|
|
125
|
+
...dbgExtra
|
|
126
|
+
});
|
|
127
|
+
sendJsonErrorResponse(res, 401, "Eliza Cloud is not connected. Connect your Eliza Cloud account first.");
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
const rawBody = await readRawRequestBody(req);
|
|
131
|
+
let body;
|
|
132
|
+
try {
|
|
133
|
+
body = JSON.parse(rawBody.toString("utf8"));
|
|
134
|
+
} catch {
|
|
135
|
+
sendJsonErrorResponse(res, 400, "Invalid JSON request body");
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
const text = sanitizeSpeechText(typeof body.text === "string" ? body.text : "");
|
|
139
|
+
if (!text) {
|
|
140
|
+
sendJsonErrorResponse(res, 400, "Missing text");
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
if (text.length > ELIZA_CLOUD_TTS_MAX_TEXT_CHARS) {
|
|
144
|
+
sendJsonErrorResponse(res, 400, `Text too long. Maximum length is ${ELIZA_CLOUD_TTS_MAX_TEXT_CHARS} characters`);
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
const cloudModel = resolveCloudProxyTtsModel(pickBodyString(body, "modelId", "model_id"));
|
|
148
|
+
const cloudVoice = resolveElizaCloudTtsVoiceId(pickBodyString(body, "voiceId", "voice_id"));
|
|
149
|
+
const cloudUrls = resolveCloudTtsCandidateUrls();
|
|
150
|
+
const ttsPreview = ttsDebugTextPreview(text);
|
|
151
|
+
ttsDebug("server:cloud-tts:proxy", {
|
|
152
|
+
textChars: text.length,
|
|
153
|
+
preview: ttsPreview,
|
|
154
|
+
modelId: cloudModel,
|
|
155
|
+
voiceId: cloudVoice,
|
|
156
|
+
urlCandidates: cloudUrls.length,
|
|
157
|
+
...dbgExtra
|
|
158
|
+
});
|
|
159
|
+
try {
|
|
160
|
+
let lastStatus = 0;
|
|
161
|
+
let lastDetails = "unknown error";
|
|
162
|
+
let cloudResponse = null;
|
|
163
|
+
for (let i = 0;i < cloudUrls.length; i++) {
|
|
164
|
+
const cloudUrl = cloudUrls[i];
|
|
165
|
+
if (cloudUrl === undefined) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const attempt = await fetch(cloudUrl, {
|
|
169
|
+
method: "POST",
|
|
170
|
+
headers: {
|
|
171
|
+
Authorization: `Bearer ${cloudApiKey}`,
|
|
172
|
+
"x-api-key": cloudApiKey,
|
|
173
|
+
"Content-Type": "application/json",
|
|
174
|
+
Accept: "audio/mpeg"
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify({
|
|
177
|
+
text,
|
|
178
|
+
voiceId: cloudVoice,
|
|
179
|
+
modelId: cloudModel
|
|
180
|
+
})
|
|
181
|
+
});
|
|
182
|
+
if (attempt.ok) {
|
|
183
|
+
cloudResponse = attempt;
|
|
184
|
+
ttsDebug("server:cloud-tts:upstream-ok", {
|
|
185
|
+
urlIndex: i,
|
|
186
|
+
status: attempt.status,
|
|
187
|
+
preview: ttsPreview,
|
|
188
|
+
...dbgExtra
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
lastStatus = attempt.status;
|
|
193
|
+
lastDetails = await attempt.text().catch(() => "unknown error");
|
|
194
|
+
ttsDebug("server:cloud-tts:upstream-retry", {
|
|
195
|
+
urlIndex: i,
|
|
196
|
+
status: attempt.status,
|
|
197
|
+
preview: ttsPreview,
|
|
198
|
+
...dbgExtra
|
|
199
|
+
});
|
|
200
|
+
const hasMoreCandidates = i < cloudUrls.length - 1;
|
|
201
|
+
if (!hasMoreCandidates || !shouldRetryCloudTtsUpstream(attempt.status)) {
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (!cloudResponse) {
|
|
206
|
+
ttsDebug("server:cloud-tts:reject", {
|
|
207
|
+
reason: "upstream_failed",
|
|
208
|
+
lastStatus,
|
|
209
|
+
preview: ttsPreview,
|
|
210
|
+
...dbgExtra
|
|
211
|
+
});
|
|
212
|
+
if (lastStatus === 400 || lastStatus === 401 || lastStatus === 402 || lastStatus === 403 || lastStatus === 429) {
|
|
213
|
+
forwardCloudTtsUpstreamError(res, lastStatus, lastDetails);
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
sendJsonErrorResponse(res, 502, `Eliza Cloud TTS failed (${lastStatus || 502}): ${lastDetails}`);
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
const audioBuffer = Buffer.from(await cloudResponse.arrayBuffer());
|
|
220
|
+
ttsDebug("server:cloud-tts:success", {
|
|
221
|
+
bytes: audioBuffer.length,
|
|
222
|
+
preview: ttsPreview,
|
|
223
|
+
...dbgExtra
|
|
224
|
+
});
|
|
225
|
+
res.statusCode = 200;
|
|
226
|
+
res.setHeader("Content-Type", "audio/mpeg");
|
|
227
|
+
res.setHeader("Cache-Control", "no-store");
|
|
228
|
+
res.end(audioBuffer);
|
|
229
|
+
return true;
|
|
230
|
+
} catch (err) {
|
|
231
|
+
sendJsonErrorResponse(res, 502, `Eliza Cloud TTS request failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export {
|
|
236
|
+
shouldRetryCloudTtsUpstream2 as shouldRetryCloudTtsUpstream,
|
|
237
|
+
resolveElizaCloudTtsVoiceId2 as resolveElizaCloudTtsVoiceId,
|
|
238
|
+
resolveElevenLabsApiKeyForCloudMode,
|
|
239
|
+
resolveCloudTtsCandidateUrls2 as resolveCloudTtsCandidateUrls,
|
|
240
|
+
resolveCloudTtsBaseUrl,
|
|
241
|
+
resolveCloudProxyTtsModel2 as resolveCloudProxyTtsModel,
|
|
242
|
+
readTtsDebugClientHeaders,
|
|
243
|
+
normalizeElizaCloudTtsModelId,
|
|
244
|
+
mirrorCompatHeaders,
|
|
245
|
+
handleCloudTtsPreviewRoute,
|
|
246
|
+
ensureCloudTtsApiKeyAlias,
|
|
247
|
+
__resetCloudBaseUrlCache,
|
|
248
|
+
ELIZA_CLOUD_TTS_MAX_TEXT_CHARS2 as ELIZA_CLOUD_TTS_MAX_TEXT_CHARS
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
//# debugId=8E6B79F7D105205464756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/server-cloud-tts.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Cloud TTS helpers — proxy to Eliza Cloud (`elizacloud.ai`).\n *\n * Pure / config-driven helpers (TTS API key resolution, base URL resolution,\n * voice / model id normalization, compat header mirroring) live in\n * `@elizaos/shared/elizacloud/server-cloud-tts` so host-layer packages can\n * resolve cloud TTS configuration without reverse-importing this plugin.\n *\n * The HTTP request handler (`handleCloudTtsPreviewRoute`) stays here because\n * it wires together the runtime route system.\n */\nimport type http from \"node:http\";\nimport { sanitizeSpeechText } from \"@elizaos/core\";\nimport {\n _internalResolveCloudApiKey,\n ELIZA_CLOUD_TTS_MAX_TEXT_CHARS,\n resolveCloudProxyTtsModel,\n resolveCloudTtsCandidateUrls,\n resolveElizaCloudTtsVoiceId,\n shouldRetryCloudTtsUpstream,\n ttsDebug,\n ttsDebugTextPreview,\n} from \"@elizaos/shared\";\n\nexport {\n __resetCloudBaseUrlCache,\n ELIZA_CLOUD_TTS_MAX_TEXT_CHARS,\n ensureCloudTtsApiKeyAlias,\n mirrorCompatHeaders,\n normalizeElizaCloudTtsModelId,\n resolveCloudProxyTtsModel,\n resolveCloudTtsBaseUrl,\n resolveCloudTtsCandidateUrls,\n resolveElevenLabsApiKeyForCloudMode,\n resolveElizaCloudTtsVoiceId,\n shouldRetryCloudTtsUpstream,\n} from \"@elizaos/shared\";\n\n/** Browser → API correlation (never forwarded to Eliza Cloud). */\nexport function readTtsDebugClientHeaders(\n req: Pick<http.IncomingMessage, \"headers\">,\n): {\n messageId?: string;\n clipSegment?: string;\n hearingFull?: string;\n} {\n const pick = (name: string): string | undefined => {\n const raw = req.headers[name];\n if (raw == null) return undefined;\n const v = Array.isArray(raw) ? raw[0] : raw;\n return typeof v === \"string\" && v.trim() ? v.trim() : undefined;\n };\n const decode = (enc: string | undefined): string | undefined => {\n if (!enc) return undefined;\n try {\n return decodeURIComponent(enc);\n } catch {\n return enc;\n }\n };\n return {\n messageId: decode(pick(\"x-elizaos-tts-message-id\")),\n clipSegment: decode(pick(\"x-elizaos-tts-clip-segment\")),\n hearingFull: decode(pick(\"x-elizaos-tts-full-preview\")),\n };\n}\n\nfunction ttsClientDbgFields(\n hdr: ReturnType<typeof readTtsDebugClientHeaders>,\n): Record<string, string> {\n const o: Record<string, string> = {};\n if (hdr.messageId) o.messageId = hdr.messageId;\n if (hdr.clipSegment) o.clipSegment = hdr.clipSegment;\n if (hdr.hearingFull) o.hearingFull = hdr.hearingFull;\n return o;\n}\n\nfunction pickBodyString(\n body: Record<string, unknown>,\n camel: string,\n snake: string,\n): unknown {\n const a = body[camel];\n if (typeof a === \"string\" && a.trim()) return a;\n const b = body[snake];\n if (typeof b === \"string\" && b.trim()) return b;\n return undefined;\n}\n\nasync function readRawRequestBody(req: http.IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(typeof chunk === \"string\" ? Buffer.from(chunk) : chunk);\n }\n return Buffer.concat(chunks);\n}\n\nfunction sendJsonResponse(\n res: http.ServerResponse,\n status: number,\n body: unknown,\n): void {\n if (res.headersSent) return;\n res.statusCode = status;\n res.setHeader(\"content-type\", \"application/json; charset=utf-8\");\n res.end(JSON.stringify(body));\n}\n\nfunction sendJsonErrorResponse(\n res: http.ServerResponse,\n status: number,\n message: string,\n): void {\n sendJsonResponse(res, status, { error: message });\n}\n\nfunction forwardCloudTtsUpstreamError(\n res: http.ServerResponse,\n status: number,\n bodyText: string,\n): void {\n if (res.headersSent) return;\n const trimmed = bodyText.trim();\n if (\n (trimmed.startsWith(\"{\") && trimmed.endsWith(\"}\")) ||\n (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\"))\n ) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n sendJsonResponse(res, status, parsed);\n return;\n } catch {\n /* fall through */\n }\n }\n res.statusCode = status;\n res.setHeader(\"content-type\", \"application/json; charset=utf-8\");\n res.end(\n JSON.stringify({ error: trimmed || \"Eliza Cloud TTS request failed\" }),\n );\n}\n\nexport async function handleCloudTtsPreviewRoute(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n): Promise<boolean> {\n const clientTtsDbg = readTtsDebugClientHeaders(req);\n const dbgExtra = ttsClientDbgFields(clientTtsDbg);\n\n const cloudApiKey = _internalResolveCloudApiKey();\n if (!cloudApiKey) {\n ttsDebug(\"server:cloud-tts:reject\", {\n reason: \"no_api_key\",\n ...dbgExtra,\n });\n sendJsonErrorResponse(\n res,\n 401,\n \"Eliza Cloud is not connected. Connect your Eliza Cloud account first.\",\n );\n return true;\n }\n\n const rawBody = await readRawRequestBody(req);\n let body: Record<string, unknown>;\n try {\n body = JSON.parse(rawBody.toString(\"utf8\")) as Record<string, unknown>;\n } catch {\n sendJsonErrorResponse(res, 400, \"Invalid JSON request body\");\n return true;\n }\n\n const text = sanitizeSpeechText(\n typeof body.text === \"string\" ? body.text : \"\",\n );\n if (!text) {\n sendJsonErrorResponse(res, 400, \"Missing text\");\n return true;\n }\n\n if (text.length > ELIZA_CLOUD_TTS_MAX_TEXT_CHARS) {\n sendJsonErrorResponse(\n res,\n 400,\n `Text too long. Maximum length is ${ELIZA_CLOUD_TTS_MAX_TEXT_CHARS} characters`,\n );\n return true;\n }\n\n const cloudModel = resolveCloudProxyTtsModel(\n pickBodyString(body, \"modelId\", \"model_id\"),\n );\n const cloudVoice = resolveElizaCloudTtsVoiceId(\n pickBodyString(body, \"voiceId\", \"voice_id\"),\n );\n const cloudUrls = resolveCloudTtsCandidateUrls();\n\n const ttsPreview = ttsDebugTextPreview(text);\n ttsDebug(\"server:cloud-tts:proxy\", {\n textChars: text.length,\n preview: ttsPreview,\n modelId: cloudModel,\n voiceId: cloudVoice,\n urlCandidates: cloudUrls.length,\n ...dbgExtra,\n });\n\n try {\n let lastStatus = 0;\n let lastDetails = \"unknown error\";\n let cloudResponse: Response | null = null;\n for (let i = 0; i < cloudUrls.length; i++) {\n const cloudUrl = cloudUrls[i];\n if (cloudUrl === undefined) {\n continue;\n }\n const attempt = await fetch(cloudUrl, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${cloudApiKey}`,\n \"x-api-key\": cloudApiKey,\n \"Content-Type\": \"application/json\",\n Accept: \"audio/mpeg\",\n },\n body: JSON.stringify({\n text,\n voiceId: cloudVoice,\n modelId: cloudModel,\n }),\n });\n\n if (attempt.ok) {\n cloudResponse = attempt;\n ttsDebug(\"server:cloud-tts:upstream-ok\", {\n urlIndex: i,\n status: attempt.status,\n preview: ttsPreview,\n ...dbgExtra,\n });\n break;\n }\n\n lastStatus = attempt.status;\n lastDetails = await attempt.text().catch(() => \"unknown error\");\n ttsDebug(\"server:cloud-tts:upstream-retry\", {\n urlIndex: i,\n status: attempt.status,\n preview: ttsPreview,\n ...dbgExtra,\n });\n\n const hasMoreCandidates = i < cloudUrls.length - 1;\n if (!hasMoreCandidates || !shouldRetryCloudTtsUpstream(attempt.status)) {\n break;\n }\n }\n if (!cloudResponse) {\n ttsDebug(\"server:cloud-tts:reject\", {\n reason: \"upstream_failed\",\n lastStatus,\n preview: ttsPreview,\n ...dbgExtra,\n });\n if (\n lastStatus === 400 ||\n lastStatus === 401 ||\n lastStatus === 402 ||\n lastStatus === 403 ||\n lastStatus === 429\n ) {\n forwardCloudTtsUpstreamError(res, lastStatus, lastDetails);\n return true;\n }\n sendJsonErrorResponse(\n res,\n 502,\n `Eliza Cloud TTS failed (${lastStatus || 502}): ${lastDetails}`,\n );\n return true;\n }\n\n const audioBuffer = Buffer.from(await cloudResponse.arrayBuffer());\n ttsDebug(\"server:cloud-tts:success\", {\n bytes: audioBuffer.length,\n preview: ttsPreview,\n ...dbgExtra,\n });\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"audio/mpeg\");\n res.setHeader(\"Cache-Control\", \"no-store\");\n res.end(audioBuffer);\n return true;\n } catch (err) {\n sendJsonErrorResponse(\n res,\n 502,\n `Eliza Cloud TTS request failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n return true;\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "8E6B79F7D105205464756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { getElizaNamespace, resolveStateDir, resolveUserPath } from "@elizaos/core";
|
|
2
|
+
export { getElizaNamespace, resolveStateDir, resolveUserPath };
|
|
3
|
+
export declare function resolveConfigPath(env?: NodeJS.ProcessEnv, stateDirPath?: string): string;
|
|
4
|
+
//# sourceMappingURL=state-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-paths.d.ts","sourceRoot":"","sources":["../../src/lib/state-paths.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAE/D,wBAAgB,iBAAiB,CAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,YAAY,GAAE,MAA6B,GAC1C,MAAM,CAcR"}
|