@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,193 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { logger } from "@elizaos/core";
|
|
3
|
+
import { DEFAULT_ELIZA_CLOUD_TEXT_MODEL } from "@elizaos/core";
|
|
4
|
+
|
|
5
|
+
export const DEFAULT_ELIZA_CLOUD_LARGE_MODEL = "zai-glm-4.7";
|
|
6
|
+
|
|
7
|
+
function getEnvValue(key: string): string | undefined {
|
|
8
|
+
if (typeof process === "undefined") {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const value = process.env[key];
|
|
12
|
+
return value === undefined ? undefined : String(value);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getSetting(
|
|
16
|
+
runtime: IAgentRuntime,
|
|
17
|
+
key: string,
|
|
18
|
+
defaultValue?: string
|
|
19
|
+
): string | undefined {
|
|
20
|
+
const value = runtime.getSetting(key);
|
|
21
|
+
if (value !== undefined && value !== null) {
|
|
22
|
+
return String(value);
|
|
23
|
+
}
|
|
24
|
+
return getEnvValue(key) ?? defaultValue;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function isBrowser(): boolean {
|
|
28
|
+
return (
|
|
29
|
+
typeof globalThis !== "undefined" &&
|
|
30
|
+
typeof (globalThis as { document?: Document }).document !== "undefined"
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function isProxyMode(runtime: IAgentRuntime): boolean {
|
|
35
|
+
return isBrowser() && !!getSetting(runtime, "ELIZAOS_CLOUD_BROWSER_BASE_URL");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function getBaseURL(runtime: IAgentRuntime): string {
|
|
39
|
+
const browserURL = getSetting(runtime, "ELIZAOS_CLOUD_BROWSER_BASE_URL");
|
|
40
|
+
const baseURL = (
|
|
41
|
+
isBrowser() && browserURL
|
|
42
|
+
? browserURL
|
|
43
|
+
: getSetting(runtime, "ELIZAOS_CLOUD_BASE_URL", "https://www.elizacloud.ai/api/v1")
|
|
44
|
+
) as string;
|
|
45
|
+
return baseURL;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function getEmbeddingBaseURL(runtime: IAgentRuntime): string {
|
|
49
|
+
const embeddingURL = isBrowser()
|
|
50
|
+
? getSetting(runtime, "ELIZAOS_CLOUD_BROWSER_EMBEDDING_URL") ||
|
|
51
|
+
getSetting(runtime, "ELIZAOS_CLOUD_BROWSER_BASE_URL")
|
|
52
|
+
: getSetting(runtime, "ELIZAOS_CLOUD_EMBEDDING_URL");
|
|
53
|
+
if (embeddingURL) {
|
|
54
|
+
logger.debug(`[ELIZAOS_CLOUD] Using specific embedding base URL: ${embeddingURL}`);
|
|
55
|
+
return embeddingURL;
|
|
56
|
+
}
|
|
57
|
+
logger.debug("[ELIZAOS_CLOUD] Falling back to general base URL for embeddings.");
|
|
58
|
+
return getBaseURL(runtime);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function getApiKey(runtime: IAgentRuntime): string | undefined {
|
|
62
|
+
return getSetting(runtime, "ELIZAOS_CLOUD_API_KEY");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {
|
|
66
|
+
const embeddingApiKey = getSetting(runtime, "ELIZAOS_CLOUD_EMBEDDING_API_KEY");
|
|
67
|
+
if (embeddingApiKey) {
|
|
68
|
+
logger.debug("[ELIZAOS_CLOUD] Using specific embedding API key (present)");
|
|
69
|
+
return embeddingApiKey;
|
|
70
|
+
}
|
|
71
|
+
logger.debug("[ELIZAOS_CLOUD] Falling back to general API key for embeddings.");
|
|
72
|
+
return getApiKey(runtime);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function getSmallModel(runtime: IAgentRuntime): string {
|
|
76
|
+
return (
|
|
77
|
+
getSetting(runtime, "ELIZAOS_CLOUD_SMALL_MODEL") ??
|
|
78
|
+
(getSetting(runtime, "SMALL_MODEL", DEFAULT_ELIZA_CLOUD_TEXT_MODEL) as string)
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function getNanoModel(runtime: IAgentRuntime): string {
|
|
83
|
+
return (
|
|
84
|
+
getSetting(runtime, "ELIZAOS_CLOUD_NANO_MODEL") ??
|
|
85
|
+
getSetting(runtime, "NANO_MODEL") ??
|
|
86
|
+
getSmallModel(runtime)
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function getMediumModel(runtime: IAgentRuntime): string {
|
|
91
|
+
return (
|
|
92
|
+
getSetting(runtime, "ELIZAOS_CLOUD_MEDIUM_MODEL") ??
|
|
93
|
+
getSetting(runtime, "MEDIUM_MODEL") ??
|
|
94
|
+
getSmallModel(runtime)
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function getLargeModel(runtime: IAgentRuntime): string {
|
|
99
|
+
return (
|
|
100
|
+
getSetting(runtime, "ELIZAOS_CLOUD_LARGE_MODEL") ??
|
|
101
|
+
(getSetting(runtime, "LARGE_MODEL", DEFAULT_ELIZA_CLOUD_LARGE_MODEL) as string)
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export function getMegaModel(runtime: IAgentRuntime): string {
|
|
106
|
+
return (
|
|
107
|
+
getSetting(runtime, "ELIZAOS_CLOUD_MEGA_MODEL") ??
|
|
108
|
+
getSetting(runtime, "MEGA_MODEL") ??
|
|
109
|
+
getLargeModel(runtime)
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function getResponseHandlerModel(runtime: IAgentRuntime): string {
|
|
114
|
+
return (
|
|
115
|
+
getSetting(runtime, "ELIZAOS_CLOUD_RESPONSE_HANDLER_MODEL") ??
|
|
116
|
+
getSetting(runtime, "ELIZAOS_CLOUD_SHOULD_RESPOND_MODEL") ??
|
|
117
|
+
getSetting(runtime, "RESPONSE_HANDLER_MODEL") ??
|
|
118
|
+
getSetting(runtime, "SHOULD_RESPOND_MODEL") ??
|
|
119
|
+
getSmallModel(runtime)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function getActionPlannerModel(runtime: IAgentRuntime): string {
|
|
124
|
+
return (
|
|
125
|
+
getSetting(runtime, "ELIZAOS_CLOUD_ACTION_PLANNER_MODEL") ??
|
|
126
|
+
getSetting(runtime, "ELIZAOS_CLOUD_PLANNER_MODEL") ??
|
|
127
|
+
getSetting(runtime, "ACTION_PLANNER_MODEL") ??
|
|
128
|
+
getSetting(runtime, "PLANNER_MODEL") ??
|
|
129
|
+
getLargeModel(runtime)
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function getResponseModel(runtime: IAgentRuntime): string {
|
|
134
|
+
return (
|
|
135
|
+
getSetting(runtime, "ELIZAOS_CLOUD_RESPONSE_MODEL") ??
|
|
136
|
+
getSetting(runtime, "RESPONSE_MODEL") ??
|
|
137
|
+
getLargeModel(runtime)
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function getImageDescriptionModel(runtime: IAgentRuntime): string {
|
|
142
|
+
return getSetting(runtime, "ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL", "gpt-5.4-mini") as string;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function getImageGenerationModel(runtime: IAgentRuntime): string {
|
|
146
|
+
return (
|
|
147
|
+
getSetting(runtime, "ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL", "google/gemini-2.5-flash-image") ??
|
|
148
|
+
"google/gemini-2.5-flash-image"
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export function getResearchModel(runtime: IAgentRuntime): string {
|
|
153
|
+
return (
|
|
154
|
+
getSetting(runtime, "ELIZAOS_CLOUD_RESEARCH_MODEL") ??
|
|
155
|
+
(getSetting(runtime, "RESEARCH_MODEL", "o3-deep-research") as string)
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function getTTSModel(runtime: IAgentRuntime): string {
|
|
160
|
+
return getSetting(runtime, "ELIZAOS_CLOUD_TTS_MODEL", "gpt-5-mini-tts") as string;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export function getTranscriptionModel(runtime: IAgentRuntime): string {
|
|
164
|
+
return getSetting(
|
|
165
|
+
runtime,
|
|
166
|
+
"ELIZAOS_CLOUD_TRANSCRIPTION_MODEL",
|
|
167
|
+
"gpt-5-mini-transcribe"
|
|
168
|
+
) as string;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {
|
|
172
|
+
const setting = getSetting(runtime, "ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY", "false");
|
|
173
|
+
return String(setting).toLowerCase() === "true";
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Resolve a client-side timeout (ms) for a cloud model round-trip from `envKey`,
|
|
178
|
+
* falling back to `defaultMs`. `0`/negative/non-numeric → undefined (opt out).
|
|
179
|
+
*
|
|
180
|
+
* cloud-sdk applies NO default timeout (a fetch with no signal hangs until the
|
|
181
|
+
* platform default), so turn-blocking calls (TTS/STT in a voice turn, deep
|
|
182
|
+
* research) need an explicit ceiling or a stalled gateway hangs the turn.
|
|
183
|
+
*/
|
|
184
|
+
export function resolveCloudTimeoutMs(
|
|
185
|
+
envKey: string,
|
|
186
|
+
defaultMs: number
|
|
187
|
+
): number | undefined {
|
|
188
|
+
const raw = typeof process !== "undefined" ? process.env[envKey] : undefined;
|
|
189
|
+
if (raw === undefined || raw.trim() === "") return defaultMs;
|
|
190
|
+
const parsed = Number.parseInt(raw, 10);
|
|
191
|
+
if (!Number.isFinite(parsed)) return defaultMs;
|
|
192
|
+
return parsed <= 0 ? undefined : parsed;
|
|
193
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EventType,
|
|
3
|
+
type IAgentRuntime,
|
|
4
|
+
type ModelEventPayload,
|
|
5
|
+
type ModelTypeName,
|
|
6
|
+
} from "@elizaos/core";
|
|
7
|
+
import type { LanguageModelUsage } from "ai";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Extra metadata that rides along with a {@link ModelEventPayload} so that
|
|
11
|
+
* downstream consumers (e.g. the waifu metering bridge) can attribute spend
|
|
12
|
+
* to a concrete model id and, when the cloud surfaces it, the authoritative
|
|
13
|
+
* post-markup USD cost it just debited from the org's credit balance.
|
|
14
|
+
*
|
|
15
|
+
* These are additive fields layered onto the standard payload — the core
|
|
16
|
+
* {@link ModelEventPayload} shape is unchanged for every other listener.
|
|
17
|
+
*/
|
|
18
|
+
export interface ModelUsageEventMeta {
|
|
19
|
+
/** Resolved provider model id, e.g. "anthropic/claude-opus-4.7". */
|
|
20
|
+
modelName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Authoritative USD cost the metered gateway charged for this call, when
|
|
23
|
+
* available (e.g. from a `usage.cost_usd` field or `X-Eliza-Cost-Usd`
|
|
24
|
+
* response header). Undefined when the cloud does not surface it; consumers
|
|
25
|
+
* then fall back to a token-based estimate.
|
|
26
|
+
*/
|
|
27
|
+
costUsd?: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export type ModelUsageEventPayload = ModelEventPayload & ModelUsageEventMeta;
|
|
31
|
+
|
|
32
|
+
export function emitModelUsageEvent(
|
|
33
|
+
runtime: IAgentRuntime,
|
|
34
|
+
type: ModelTypeName,
|
|
35
|
+
_prompt: string,
|
|
36
|
+
usage: Partial<LanguageModelUsage> & {
|
|
37
|
+
inputTokens?: number;
|
|
38
|
+
outputTokens?: number;
|
|
39
|
+
totalTokens?: number;
|
|
40
|
+
},
|
|
41
|
+
meta: ModelUsageEventMeta = {}
|
|
42
|
+
) {
|
|
43
|
+
const inputTokens = Number(usage.inputTokens || 0);
|
|
44
|
+
const outputTokens = Number(usage.outputTokens || 0);
|
|
45
|
+
const totalTokens = Number(
|
|
46
|
+
usage.totalTokens != null ? usage.totalTokens : inputTokens + outputTokens
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const payload: ModelUsageEventPayload = {
|
|
50
|
+
runtime,
|
|
51
|
+
source: "elizacloud",
|
|
52
|
+
type,
|
|
53
|
+
tokens: {
|
|
54
|
+
prompt: inputTokens,
|
|
55
|
+
completion: outputTokens,
|
|
56
|
+
total: totalTokens,
|
|
57
|
+
},
|
|
58
|
+
...(meta.modelName ? { modelName: meta.modelName } : {}),
|
|
59
|
+
...(typeof meta.costUsd === "number" && Number.isFinite(meta.costUsd)
|
|
60
|
+
? { costUsd: meta.costUsd }
|
|
61
|
+
: {}),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
runtime.emitEvent(EventType.MODEL_USED, payload);
|
|
65
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { logger } from "@elizaos/core";
|
|
2
|
+
import { JSONParseError } from "ai";
|
|
3
|
+
import type { ImageDescriptionResult } from "../types";
|
|
4
|
+
|
|
5
|
+
export function getJsonRepairFunction(): (params: {
|
|
6
|
+
text: string;
|
|
7
|
+
error: unknown;
|
|
8
|
+
}) => Promise<string | null> {
|
|
9
|
+
return async ({ text, error }: { text: string; error: unknown }) => {
|
|
10
|
+
try {
|
|
11
|
+
if (error instanceof JSONParseError) {
|
|
12
|
+
const cleanedText = text.replace(/```json\n|\n```|```/g, "");
|
|
13
|
+
JSON.parse(cleanedText);
|
|
14
|
+
return cleanedText;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
} catch (jsonError) {
|
|
18
|
+
const message = jsonError instanceof Error ? jsonError.message : String(jsonError);
|
|
19
|
+
logger.warn(`Failed to repair JSON text: ${message}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function detectAudioMimeType(buffer: Buffer): string {
|
|
26
|
+
if (buffer.length < 12) {
|
|
27
|
+
return "application/octet-stream";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (
|
|
31
|
+
buffer[0] === 0x52 &&
|
|
32
|
+
buffer[1] === 0x49 &&
|
|
33
|
+
buffer[2] === 0x46 &&
|
|
34
|
+
buffer[3] === 0x46 &&
|
|
35
|
+
buffer[8] === 0x57 &&
|
|
36
|
+
buffer[9] === 0x41 &&
|
|
37
|
+
buffer[10] === 0x56 &&
|
|
38
|
+
buffer[11] === 0x45
|
|
39
|
+
) {
|
|
40
|
+
return "audio/wav";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (
|
|
44
|
+
(buffer[0] === 0x49 && buffer[1] === 0x44 && buffer[2] === 0x33) || // ID3
|
|
45
|
+
(buffer[0] === 0xff && (buffer[1] & 0xe0) === 0xe0) // MPEG sync
|
|
46
|
+
) {
|
|
47
|
+
return "audio/mpeg";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (buffer[0] === 0x4f && buffer[1] === 0x67 && buffer[2] === 0x67 && buffer[3] === 0x53) {
|
|
51
|
+
return "audio/ogg";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (buffer[0] === 0x66 && buffer[1] === 0x4c && buffer[2] === 0x61 && buffer[3] === 0x43) {
|
|
55
|
+
return "audio/flac";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (buffer[4] === 0x66 && buffer[5] === 0x74 && buffer[6] === 0x79 && buffer[7] === 0x70) {
|
|
59
|
+
return "audio/mp4";
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (buffer[0] === 0x1a && buffer[1] === 0x45 && buffer[2] === 0xdf && buffer[3] === 0xa3) {
|
|
63
|
+
return "audio/webm";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
logger.warn("Could not detect audio format from buffer, using generic binary type");
|
|
67
|
+
return "application/octet-stream";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export async function webStreamToNodeStream(webStream: ReadableStream<Uint8Array>) {
|
|
71
|
+
try {
|
|
72
|
+
const { Readable } = await import("node:stream");
|
|
73
|
+
const reader = webStream.getReader();
|
|
74
|
+
|
|
75
|
+
return new Readable({
|
|
76
|
+
async read() {
|
|
77
|
+
try {
|
|
78
|
+
const { done, value } = await reader.read();
|
|
79
|
+
if (done) {
|
|
80
|
+
this.push(null);
|
|
81
|
+
} else {
|
|
82
|
+
this.push(value);
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {
|
|
85
|
+
this.destroy(error as Error);
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
destroy(error, callback) {
|
|
89
|
+
reader.cancel().finally(() => callback(error));
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
} catch (error) {
|
|
93
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
94
|
+
logger.error(`Failed to load node:stream module: ${message}`);
|
|
95
|
+
throw new Error(
|
|
96
|
+
`Cannot convert stream: node:stream module unavailable. This feature requires a Node.js environment.`
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function parseImageDescriptionResponse(responseText: string): ImageDescriptionResult {
|
|
102
|
+
const titleMatch = responseText.match(/title[:\s]+(.+?)(?:\n|$)/i);
|
|
103
|
+
const title = titleMatch?.[1]?.trim() || "Image Analysis";
|
|
104
|
+
const description = responseText.replace(/title[:\s]+(.+?)(?:\n|$)/i, "").trim();
|
|
105
|
+
|
|
106
|
+
return { title, description };
|
|
107
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
type JsonRecord = Record<string, unknown>;
|
|
2
|
+
|
|
3
|
+
function asRecord(value: unknown): JsonRecord | null {
|
|
4
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
return value as JsonRecord;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function normalizeContentItems(value: unknown): unknown[] {
|
|
11
|
+
if (Array.isArray(value)) return value;
|
|
12
|
+
if (typeof value === "string") return [{ type: "text", text: value }];
|
|
13
|
+
return value && typeof value === "object" ? [value] : [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function extractTextFromContentItem(value: unknown): string[] {
|
|
17
|
+
if (typeof value === "string") {
|
|
18
|
+
return [value];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const record = asRecord(value);
|
|
22
|
+
if (!record) return [];
|
|
23
|
+
|
|
24
|
+
const text =
|
|
25
|
+
typeof record.text === "string"
|
|
26
|
+
? record.text
|
|
27
|
+
: typeof record.output_text === "string"
|
|
28
|
+
? record.output_text
|
|
29
|
+
: typeof record.content === "string"
|
|
30
|
+
? record.content
|
|
31
|
+
: "";
|
|
32
|
+
const type = typeof record.type === "string" ? record.type : undefined;
|
|
33
|
+
|
|
34
|
+
if (text && (!type || type === "output_text" || type === "text")) {
|
|
35
|
+
return [text];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function extractTextFromOutputItem(value: unknown): string[] {
|
|
42
|
+
const record = asRecord(value);
|
|
43
|
+
if (!record) return [];
|
|
44
|
+
|
|
45
|
+
const directContent = normalizeContentItems(record.content);
|
|
46
|
+
if (directContent.length > 0) {
|
|
47
|
+
return directContent.flatMap(extractTextFromContentItem);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const nestedMessage = asRecord(record.message);
|
|
51
|
+
if (nestedMessage) {
|
|
52
|
+
return normalizeContentItems(nestedMessage.content).flatMap(extractTextFromContentItem);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const type = typeof record.type === "string" ? record.type : undefined;
|
|
56
|
+
const text =
|
|
57
|
+
typeof record.text === "string"
|
|
58
|
+
? record.text
|
|
59
|
+
: typeof record.output_text === "string"
|
|
60
|
+
? record.output_text
|
|
61
|
+
: "";
|
|
62
|
+
if (text && (type === "output_text" || type === "text")) {
|
|
63
|
+
return [text];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function extractTextFromChoice(value: unknown): string[] {
|
|
70
|
+
const record = asRecord(value);
|
|
71
|
+
if (!record) return [];
|
|
72
|
+
|
|
73
|
+
if (typeof record.text === "string" && record.text) {
|
|
74
|
+
return [record.text];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const message = asRecord(record.message);
|
|
78
|
+
if (!message) {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return normalizeContentItems(message.content).flatMap(extractTextFromContentItem);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Recover text from Responses-style payloads, tolerating both the documented
|
|
87
|
+
* `output_text` field and the common structured `output` item variants.
|
|
88
|
+
*
|
|
89
|
+
* Cloud responses sometimes carry the same body in BOTH `output_text` AND
|
|
90
|
+
* `output[]`/`choices[]`. Joining segments in that case duplicates the model
|
|
91
|
+
* output downstream (caller sees `…json{…}\n``````json{…}…`), which then
|
|
92
|
+
* trips JSON.parse with "Unrecognized token '`'" because of the run of
|
|
93
|
+
* backticks where the two copies meet. Prefer the first non-empty source
|
|
94
|
+
* instead of joining.
|
|
95
|
+
*/
|
|
96
|
+
export function extractResponsesOutputText(data: unknown): string {
|
|
97
|
+
const record = asRecord(data);
|
|
98
|
+
if (!record) return "";
|
|
99
|
+
|
|
100
|
+
if (typeof record.output_text === "string" && record.output_text.trim()) {
|
|
101
|
+
return record.output_text;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (Array.isArray(record.output)) {
|
|
105
|
+
const fromOutput = record.output.flatMap(extractTextFromOutputItem).join("");
|
|
106
|
+
if (fromOutput.trim()) return fromOutput;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (Array.isArray(record.choices)) {
|
|
110
|
+
const fromChoices = record.choices.flatMap(extractTextFromChoice).join("");
|
|
111
|
+
if (fromChoices.trim()) return fromChoices;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return "";
|
|
115
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CloudApiClient, ElizaCloudClient } from "@elizaos/cloud-sdk";
|
|
2
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
3
|
+
import {
|
|
4
|
+
getApiKey,
|
|
5
|
+
getBaseURL,
|
|
6
|
+
getEmbeddingApiKey,
|
|
7
|
+
getEmbeddingBaseURL,
|
|
8
|
+
isBrowser,
|
|
9
|
+
} from "./config";
|
|
10
|
+
|
|
11
|
+
function trimTrailingSlash(value: string): string {
|
|
12
|
+
return value.replace(/\/+$/, "");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function apiBaseToSiteBaseUrl(apiBaseUrl: string): string {
|
|
16
|
+
const trimmed = trimTrailingSlash(apiBaseUrl);
|
|
17
|
+
return trimmed.endsWith("/api/v1") ? trimmed.slice(0, -"/api/v1".length) : trimmed;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function apiKeyForRuntime(runtime: IAgentRuntime, embedding = false): string | undefined {
|
|
21
|
+
if (isBrowser()) return undefined;
|
|
22
|
+
return embedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function createCloudApiClient(runtime: IAgentRuntime, embedding = false): CloudApiClient {
|
|
26
|
+
const baseUrl = embedding ? getEmbeddingBaseURL(runtime) : getBaseURL(runtime);
|
|
27
|
+
return new ElizaCloudClient({
|
|
28
|
+
apiBaseUrl: trimTrailingSlash(baseUrl),
|
|
29
|
+
baseUrl: apiBaseToSiteBaseUrl(baseUrl),
|
|
30
|
+
apiKey: apiKeyForRuntime(runtime, embedding),
|
|
31
|
+
}).v1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function createElizaCloudClient(runtime: IAgentRuntime): ElizaCloudClient {
|
|
35
|
+
const apiBaseUrl = trimTrailingSlash(getBaseURL(runtime));
|
|
36
|
+
return new ElizaCloudClient({
|
|
37
|
+
apiBaseUrl,
|
|
38
|
+
baseUrl: apiBaseToSiteBaseUrl(apiBaseUrl),
|
|
39
|
+
apiKey: apiKeyForRuntime(runtime),
|
|
40
|
+
});
|
|
41
|
+
}
|