@elizaos/plugin-elizacloud 2.0.0-alpha.7 → 2.0.0-beta.1
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 +220 -0
- package/auto-enable.ts +17 -0
- package/dist/browser/index.browser.js +2 -21
- package/dist/browser/index.browser.js.map +5 -37
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.node.cjs +12173 -2271
- package/dist/cjs/index.node.js.map +135 -27
- package/dist/cloud/auth.d.ts +19 -0
- package/dist/cloud/auth.d.ts.map +1 -0
- package/dist/cloud/auth.js +330 -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 +3 -0
- package/dist/cloud/base-url.d.ts.map +1 -0
- package/dist/cloud/base-url.js +77 -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 +432 -0
- package/dist/cloud/bridge-client.js.map +11 -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 +853 -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 +5195 -0
- package/dist/cloud/cloud-wallet.js.map +92 -0
- package/dist/cloud/index.d.ts +9 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +30 -0
- package/dist/cloud/index.js.map +9 -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/validate-url.d.ts +2 -0
- package/dist/cloud/validate-url.d.ts.map +1 -0
- package/dist/cloud/validate-url.js +174 -0
- package/dist/cloud/validate-url.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/index.browser.d.ts +4 -2
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12851 -0
- package/dist/index.js.map +145 -0
- package/dist/index.node.d.ts +15 -2
- package/dist/index.node.d.ts.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +169 -0
- package/dist/init.js.map +12 -0
- package/dist/lib/cloud-connection.d.ts +78 -0
- package/dist/lib/cloud-connection.d.ts.map +1 -0
- package/dist/lib/cloud-connection.js +731 -0
- package/dist/lib/cloud-connection.js.map +14 -0
- package/dist/lib/cloud-secrets.d.ts +23 -0
- package/dist/lib/cloud-secrets.d.ts.map +1 -0
- package/dist/lib/cloud-secrets.js +64 -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 +22 -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 +34 -0
- package/dist/lib/server-cloud-tts.d.ts.map +1 -0
- package/dist/lib/server-cloud-tts.js +549 -0
- package/dist/lib/server-cloud-tts.js.map +13 -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 +4 -0
- package/dist/lib/tts-debug.d.ts.map +1 -0
- package/dist/lib/tts-debug.js +57 -0
- package/dist/lib/tts-debug.js.map +10 -0
- package/dist/models/embeddings.d.ts.map +1 -1
- package/dist/models/embeddings.js +319 -0
- package/dist/models/embeddings.js.map +13 -0
- package/dist/models/image.d.ts.map +1 -1
- package/dist/models/image.js +374 -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 +1386 -0
- package/dist/models/index.js.map +20 -0
- package/dist/models/research.d.ts.map +1 -1
- package/dist/models/research.js +324 -0
- package/dist/models/research.js.map +13 -0
- package/dist/models/speech.d.ts.map +1 -1
- package/dist/models/speech.js +273 -0
- package/dist/models/speech.js.map +13 -0
- package/dist/models/text.d.ts +5 -2
- package/dist/models/text.d.ts.map +1 -1
- package/dist/models/text.js +803 -0
- package/dist/models/text.js.map +15 -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 +283 -0
- package/dist/models/transcription.js.map +13 -0
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.node.js +12171 -2266
- package/dist/node/index.node.js.map +135 -27
- package/dist/onboarding.d.ts +35 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +883 -0
- package/dist/onboarding.js.map +14 -0
- package/dist/plugin.d.ts +20 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +7611 -0
- package/dist/plugin.js.map +104 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +127 -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 +7612 -0
- package/dist/register-routes.js.map +105 -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 +807 -0
- package/dist/routes/cloud-billing-routes.js.map +14 -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 +538 -0
- package/dist/routes/cloud-compat-routes.js.map +14 -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 +22 -0
- package/dist/routes/cloud-relay-routes.d.ts.map +1 -0
- package/dist/routes/cloud-relay-routes.js +60 -0
- package/dist/routes/cloud-relay-routes.js.map +10 -0
- package/dist/routes/cloud-routes-autonomous.d.ts +83 -0
- package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -0
- package/dist/routes/cloud-routes-autonomous.js +6134 -0
- package/dist/routes/cloud-routes-autonomous.js.map +97 -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 +6888 -0
- package/dist/routes/cloud-routes.js.map +100 -0
- package/dist/routes/cloud-status-routes-autonomous.d.ts +15 -0
- package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -0
- package/dist/routes/cloud-status-routes-autonomous.js +396 -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 +771 -0
- package/dist/routes/cloud-status-routes.js.map +15 -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 +363 -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.map +1 -1
- package/dist/services/cloud-container.js +241 -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 +41 -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 +3561 -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 +5377 -0
- package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -0
- package/dist/utils/cloud-sdk/public-routes.js +2950 -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 +655 -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 +7 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +137 -0
- package/dist/utils/config.js.map +10 -0
- package/dist/utils/events.d.ts.map +1 -1
- package/dist/utils/events.js +43 -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 +144 -0
- package/dist/utils/sdk-client.js.map +11 -0
- package/package.json +108 -19
- package/src/cloud/auth.ts +175 -0
- package/src/cloud/backup.ts +46 -0
- package/src/cloud/base-url.ts +62 -0
- package/src/cloud/bridge-client.ts +602 -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/index.ts +28 -0
- package/src/cloud/reconnect.ts +111 -0
- package/src/cloud/validate-url.ts +181 -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/index.browser.ts +10 -0
- package/src/index.node.ts +39 -0
- package/src/index.ts +347 -0
- package/src/init.ts +39 -0
- package/src/lib/cloud-connection.ts +663 -0
- package/src/lib/cloud-secrets.ts +58 -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 +139 -0
- package/src/lib/server-cloud-tts.ts +609 -0
- package/src/lib/state-paths.ts +28 -0
- package/src/lib/tts-debug.ts +34 -0
- package/src/models/embeddings.ts +234 -0
- package/src/models/image.ts +219 -0
- package/src/models/index.ts +16 -0
- package/src/models/research.ts +265 -0
- package/src/models/speech.ts +78 -0
- package/src/models/text.ts +899 -0
- package/src/models/tokenization.ts +67 -0
- package/src/models/transcription.ts +97 -0
- package/src/onboarding.ts +396 -0
- package/src/plugin.ts +243 -0
- package/src/providers/openai.ts +16 -0
- package/src/register-routes.ts +6 -0
- package/src/routes/cloud-billing-routes.ts +754 -0
- package/src/routes/cloud-compat-routes.ts +314 -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 +89 -0
- package/src/routes/cloud-routes-autonomous.ts +996 -0
- package/src/routes/cloud-routes.ts +576 -0
- package/src/routes/cloud-status-routes-autonomous.ts +234 -0
- package/src/routes/cloud-status-routes.ts +73 -0
- package/src/services/cloud-auth.ts +567 -0
- package/src/services/cloud-backup.ts +208 -0
- package/src/services/cloud-bootstrap.ts +108 -0
- package/src/services/cloud-bridge.ts +386 -0
- package/src/services/cloud-container.ts +297 -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 +52 -29
- package/{types → src/types}/index.ts +6 -0
- package/src/utils/cloud-api.ts +10 -0
- package/src/utils/cloud-sdk/client.ts +735 -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 +5070 -0
- package/src/utils/cloud-sdk/types.cloud-api.ts +120 -0
- package/src/utils/cloud-sdk/types.ts +762 -0
- package/src/utils/config.ts +174 -0
- package/src/utils/events.ts +37 -0
- package/src/utils/helpers.ts +107 -0
- package/src/utils/responses-output.ts +115 -0
- package/src/utils/sdk-client.ts +37 -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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping from workflow-plugin credential type names → Eliza Cloud connector slugs.
|
|
3
|
+
*
|
|
4
|
+
* The workflow plugin's LLM emits credential type strings (e.g. `gmailOAuth2`,
|
|
5
|
+
* `slackOAuth2Api`) on each node that needs an external account. The cloud
|
|
6
|
+
* exposes per-connector OAuth flows under `/api/v1/eliza/<connector>/...`.
|
|
7
|
+
*
|
|
8
|
+
* This map is the single source of truth for which workflow credential type
|
|
9
|
+
* resolves through which cloud connector + with which OAuth scopes. Add new
|
|
10
|
+
* entries when the cloud gains support for additional connectors; do not
|
|
11
|
+
* scatter cred-type → connector logic elsewhere.
|
|
12
|
+
*
|
|
13
|
+
* Cloud-side endpoint convention (see cloud/apps/api/v1/eliza/<connector>/):
|
|
14
|
+
* POST /api/v1/eliza/<connector>/connect/initiate → { authUrl }
|
|
15
|
+
* GET /api/v1/eliza/<connector>/status → { connected, ... }
|
|
16
|
+
*
|
|
17
|
+
* Not every connector below has a fully-implemented cloud endpoint yet — the
|
|
18
|
+
* provider returns `null` for unmapped types and `needs_auth` (with the
|
|
19
|
+
* cloud-issued OAuth URL) for mapped-but-not-connected accounts. See
|
|
20
|
+
* `cloud-credential-provider.ts` for the resolution logic.
|
|
21
|
+
*/
|
|
22
|
+
export interface CredentialTypeMapping {
|
|
23
|
+
/**
|
|
24
|
+
* Cloud connector slug used in the URL path
|
|
25
|
+
* (`/api/v1/eliza/<connector>/connect/initiate`).
|
|
26
|
+
*/
|
|
27
|
+
connector: string;
|
|
28
|
+
/**
|
|
29
|
+
* Optional capability tokens passed to the cloud's `connect/initiate`
|
|
30
|
+
* endpoint. The cloud translates these to provider-specific OAuth scopes
|
|
31
|
+
* (e.g. Google's `google.gmail.send` → `https://www.googleapis.com/auth/gmail.send`).
|
|
32
|
+
*/
|
|
33
|
+
capabilities?: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Friendly description used in `needs_auth` UI prompts. The runtime may
|
|
36
|
+
* surface this verbatim to the end-user.
|
|
37
|
+
*/
|
|
38
|
+
friendlyName: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Workflow credential type → cloud connector mapping.
|
|
42
|
+
*
|
|
43
|
+
* Names mirror the n8n / workflows-plugin convention used by the LLM in
|
|
44
|
+
* `plugins/plugin-workflow/src/utils/workflow-prompts/workflowGeneration.ts`.
|
|
45
|
+
* Both `gmailOAuth2` and `gmailOAuth2Api` map to the same connector — the
|
|
46
|
+
* workflow resolver does fuzzy `Api`-suffix matching upstream, but we keep
|
|
47
|
+
* both keys here so `checkCredentialTypes` answers truthfully without the
|
|
48
|
+
* caller having to know about that fuzziness.
|
|
49
|
+
*/
|
|
50
|
+
export declare const credTypeToConnector: ReadonlyMap<string, CredentialTypeMapping>;
|
|
51
|
+
/** Set used by `checkCredentialTypes` for O(1) supported-set membership. */
|
|
52
|
+
export declare const supportedCredTypes: ReadonlySet<string>;
|
|
53
|
+
//# sourceMappingURL=credential-type-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-type-map.d.ts","sourceRoot":"","sources":["../../src/lib/credential-type-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CA2EzE,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAuC,CAAC"}
|
|
@@ -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 cloud/apps/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 // cloud/apps/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,22 @@
|
|
|
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 interface RouteRequestMeta {
|
|
9
|
+
req: http.IncomingMessage;
|
|
10
|
+
res: http.ServerResponse;
|
|
11
|
+
method: string;
|
|
12
|
+
pathname: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RouteHelpers {
|
|
15
|
+
json: (res: http.ServerResponse, data: unknown, status?: number) => void;
|
|
16
|
+
error: (res: http.ServerResponse, message: string, status?: number) => void;
|
|
17
|
+
readJsonBody: <T extends object>(req: http.IncomingMessage, res: http.ServerResponse, options?: ReadJsonBodyOptions) => Promise<T | null>;
|
|
18
|
+
}
|
|
19
|
+
export declare function sendJson(res: http.ServerResponse, body: unknown, status?: number): void;
|
|
20
|
+
export declare function sendJsonError(res: http.ServerResponse, message: string, status?: number): void;
|
|
21
|
+
export declare function readJsonBody<T extends object = Record<string, unknown>>(req: http.IncomingMessage, res: http.ServerResponse, options?: ReadJsonBodyOptions): Promise<T | null>;
|
|
22
|
+
//# 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;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;IAC1B,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,EAC7B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACxB;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\nexport interface RouteRequestMeta {\n req: http.IncomingMessage;\n res: http.ServerResponse;\n method: string;\n pathname: string;\n}\n\nexport interface RouteHelpers {\n json: (res: http.ServerResponse, data: unknown, status?: number) => void;\n error: (res: http.ServerResponse, message: string, status?: number) => void;\n readJsonBody: <T extends object>(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n options?: ReadJsonBodyOptions,\n ) => Promise<T | null>;\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,34 @@
|
|
|
1
|
+
import type http from "node:http";
|
|
2
|
+
/** Browser → API correlation (never forwarded to Eliza Cloud). */
|
|
3
|
+
export declare function readTtsDebugClientHeaders(req: Pick<http.IncomingMessage, "headers">): {
|
|
4
|
+
messageId?: string;
|
|
5
|
+
clipSegment?: string;
|
|
6
|
+
hearingFull?: string;
|
|
7
|
+
};
|
|
8
|
+
/** Matches `MAX_TEXT_LENGTH` in eliza-cloud-v2 `app/api/v1/voice/tts/route.ts`. */
|
|
9
|
+
export declare const ELIZA_CLOUD_TTS_MAX_TEXT_CHARS = 5000;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve `voiceId` for Eliza Cloud TTS (ElevenLabs ids). OpenAI-style names
|
|
12
|
+
* in the request are replaced with the default premade voice.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveElizaCloudTtsVoiceId(bodyVoiceId: unknown, env?: NodeJS.ProcessEnv): string;
|
|
15
|
+
export declare function __resetCloudBaseUrlCache(): void;
|
|
16
|
+
/**
|
|
17
|
+
* After a non-OK upstream response, only try the next URL for likely-transient /
|
|
18
|
+
* wrong-route issues. Avoid retrying 401/402/429 etc. so we do not double-charge TTS.
|
|
19
|
+
*/
|
|
20
|
+
export declare function shouldRetryCloudTtsUpstream(status: number): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Coerce stored/configured values to an ElevenLabs model id Eliza Cloud accepts.
|
|
23
|
+
* Maps OpenAI TTS ids and common copy-paste mistakes; passes through real `eleven_*` ids.
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeElizaCloudTtsModelId(raw: string): string;
|
|
26
|
+
/** Eliza Cloud TTS `modelId` (ElevenLabs), from body or env or default. */
|
|
27
|
+
export declare function resolveCloudProxyTtsModel(bodyModel: unknown, env?: NodeJS.ProcessEnv): string;
|
|
28
|
+
export declare function resolveElevenLabsApiKeyForCloudMode(env?: NodeJS.ProcessEnv): string | null;
|
|
29
|
+
export declare function ensureCloudTtsApiKeyAlias(env?: NodeJS.ProcessEnv): boolean;
|
|
30
|
+
export declare function resolveCloudTtsBaseUrl(env?: NodeJS.ProcessEnv): string;
|
|
31
|
+
export declare function resolveCloudTtsCandidateUrls(env?: NodeJS.ProcessEnv): string[];
|
|
32
|
+
export declare function handleCloudTtsPreviewRoute(req: http.IncomingMessage, res: http.ServerResponse): Promise<boolean>;
|
|
33
|
+
export declare function mirrorCompatHeaders(req: Pick<http.IncomingMessage, "headers">): void;
|
|
34
|
+
//# 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":"AAQA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAyBlC,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;AA4CD,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAqBnD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,OAAO,EACpB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CASR;AAqCD,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AA+DD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnE;AA4BD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBjE;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,OAAO,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAOR;AAMD,wBAAgB,mCAAmC,CACjD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAwBf;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAWT;AAED,wBAAgB,sBAAsB,CACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAmBR;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAmCV;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CA2JlB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GACzC,IAAI,CAsBN"}
|