@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,9 @@
|
|
|
1
|
+
export { type CloudLoginOptions, type CloudLoginResult, cloudLogin, } from "./auth.js";
|
|
2
|
+
export { BackupScheduler } from "./backup.js";
|
|
3
|
+
export { normalizeCloudSiteUrl, resolveCloudApiBaseUrl, } from "./base-url.js";
|
|
4
|
+
export { type BackupInfo, type CloudAgent, type CloudAgentCreateParams, ElizaCloudClient, type ProvisionInfo, } from "./bridge-client.js";
|
|
5
|
+
export { type CloudConnectionStatus, CloudManager, type CloudManagerCallbacks, } from "./cloud-manager.js";
|
|
6
|
+
export { CloudRuntimeProxy } from "./cloud-proxy.js";
|
|
7
|
+
export { ConnectionMonitor, type ConnectionMonitorCallbacks, } from "./reconnect.js";
|
|
8
|
+
export { validateCloudBaseUrl } from "./validate-url.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloud/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,qBAAqB,EAC1B,YAAY,EACZ,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,GAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
export {
|
|
19
|
+
validateCloudBaseUrl,
|
|
20
|
+
resolveCloudApiBaseUrl,
|
|
21
|
+
normalizeCloudSiteUrl,
|
|
22
|
+
cloudLogin,
|
|
23
|
+
ElizaCloudClient,
|
|
24
|
+
ConnectionMonitor,
|
|
25
|
+
CloudRuntimeProxy,
|
|
26
|
+
CloudManager,
|
|
27
|
+
BackupScheduler
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
//# debugId=D795A73DE077BF4564756E2164756E21
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat monitor with auto-reconnect via exponential backoff.
|
|
3
|
+
*/
|
|
4
|
+
import type { ElizaCloudClient } from "./bridge-client.js";
|
|
5
|
+
export interface ConnectionMonitorCallbacks {
|
|
6
|
+
onDisconnect: () => void;
|
|
7
|
+
onReconnect: () => void;
|
|
8
|
+
onStatusChange?: (status: "connected" | "reconnecting" | "disconnected") => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class ConnectionMonitor {
|
|
11
|
+
private client;
|
|
12
|
+
private agentId;
|
|
13
|
+
private callbacks;
|
|
14
|
+
private heartbeatIntervalMs;
|
|
15
|
+
private maxFailures;
|
|
16
|
+
private timer;
|
|
17
|
+
private consecutiveFailures;
|
|
18
|
+
private reconnecting;
|
|
19
|
+
constructor(client: ElizaCloudClient, agentId: string, callbacks: ConnectionMonitorCallbacks, heartbeatIntervalMs?: number, maxFailures?: number);
|
|
20
|
+
start(): void;
|
|
21
|
+
stop(): void;
|
|
22
|
+
isMonitoring(): boolean;
|
|
23
|
+
private tick;
|
|
24
|
+
private attemptReconnect;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=reconnect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/cloud/reconnect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,cAAc,KAClD,IAAI,CAAC;CACX;AAED,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,WAAW;IATrB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,YAAY,CAAS;gBAGnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,0BAA0B,EACrC,mBAAmB,GAAE,MAAe,EACpC,WAAW,GAAE,MAAU;IAGjC,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;IAUZ,YAAY,IAAI,OAAO;YAIT,IAAI;YA4BJ,gBAAgB;CA6B/B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
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/cloud/reconnect.ts
|
|
20
|
+
import { logger } from "@elizaos/core";
|
|
21
|
+
|
|
22
|
+
class ConnectionMonitor {
|
|
23
|
+
client;
|
|
24
|
+
agentId;
|
|
25
|
+
callbacks;
|
|
26
|
+
heartbeatIntervalMs;
|
|
27
|
+
maxFailures;
|
|
28
|
+
timer = null;
|
|
29
|
+
consecutiveFailures = 0;
|
|
30
|
+
reconnecting = false;
|
|
31
|
+
constructor(client, agentId, callbacks, heartbeatIntervalMs = 30000, maxFailures = 3) {
|
|
32
|
+
this.client = client;
|
|
33
|
+
this.agentId = agentId;
|
|
34
|
+
this.callbacks = callbacks;
|
|
35
|
+
this.heartbeatIntervalMs = heartbeatIntervalMs;
|
|
36
|
+
this.maxFailures = maxFailures;
|
|
37
|
+
}
|
|
38
|
+
start() {
|
|
39
|
+
if (this.timer)
|
|
40
|
+
return;
|
|
41
|
+
logger.info(`[cloud-monitor] Starting connection monitor (interval: ${this.heartbeatIntervalMs}ms, maxFailures: ${this.maxFailures})`);
|
|
42
|
+
this.consecutiveFailures = 0;
|
|
43
|
+
this.timer = setInterval(() => {
|
|
44
|
+
this.tick();
|
|
45
|
+
}, this.heartbeatIntervalMs);
|
|
46
|
+
}
|
|
47
|
+
stop() {
|
|
48
|
+
if (this.timer) {
|
|
49
|
+
clearInterval(this.timer);
|
|
50
|
+
this.timer = null;
|
|
51
|
+
}
|
|
52
|
+
this.consecutiveFailures = 0;
|
|
53
|
+
this.reconnecting = false;
|
|
54
|
+
logger.info("[cloud-monitor] Connection monitor stopped");
|
|
55
|
+
}
|
|
56
|
+
isMonitoring() {
|
|
57
|
+
return this.timer !== null;
|
|
58
|
+
}
|
|
59
|
+
async tick() {
|
|
60
|
+
if (this.reconnecting)
|
|
61
|
+
return;
|
|
62
|
+
const alive = await this.client.heartbeat(this.agentId).catch(() => false);
|
|
63
|
+
if (alive) {
|
|
64
|
+
if (this.consecutiveFailures > 0) {
|
|
65
|
+
this.consecutiveFailures = 0;
|
|
66
|
+
this.callbacks.onStatusChange?.("connected");
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.consecutiveFailures++;
|
|
71
|
+
logger.warn(`[cloud-monitor] Heartbeat failed (${this.consecutiveFailures}/${this.maxFailures})`);
|
|
72
|
+
if (this.consecutiveFailures >= this.maxFailures) {
|
|
73
|
+
this.callbacks.onDisconnect();
|
|
74
|
+
await this.attemptReconnect();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async attemptReconnect() {
|
|
78
|
+
this.reconnecting = true;
|
|
79
|
+
this.callbacks.onStatusChange?.("reconnecting");
|
|
80
|
+
let delay = 3000;
|
|
81
|
+
for (let attempt = 1;attempt <= 10; attempt++) {
|
|
82
|
+
logger.info(`[cloud-monitor] Reconnect attempt ${attempt}/10...`);
|
|
83
|
+
const ok = await this.client.provision(this.agentId).then(() => true).catch(() => false);
|
|
84
|
+
if (ok) {
|
|
85
|
+
logger.info("[cloud-monitor] Reconnection successful");
|
|
86
|
+
this.consecutiveFailures = 0;
|
|
87
|
+
this.reconnecting = false;
|
|
88
|
+
this.callbacks.onStatusChange?.("connected");
|
|
89
|
+
this.callbacks.onReconnect();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
93
|
+
delay = Math.min(delay * 2, 60000);
|
|
94
|
+
}
|
|
95
|
+
logger.error("[cloud-monitor] Failed to reconnect after 10 attempts");
|
|
96
|
+
this.reconnecting = false;
|
|
97
|
+
this.callbacks.onStatusChange?.("disconnected");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export {
|
|
101
|
+
ConnectionMonitor
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//# debugId=430B8E5B9401539164756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cloud/reconnect.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Heartbeat monitor with auto-reconnect via exponential backoff.\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type { ElizaCloudClient } from \"./bridge-client.js\";\n\nexport interface ConnectionMonitorCallbacks {\n onDisconnect: () => void;\n onReconnect: () => void;\n onStatusChange?: (\n status: \"connected\" | \"reconnecting\" | \"disconnected\",\n ) => void;\n}\n\nexport class ConnectionMonitor {\n private timer: ReturnType<typeof setInterval> | null = null;\n private consecutiveFailures = 0;\n private reconnecting = false;\n\n constructor(\n private client: ElizaCloudClient,\n private agentId: string,\n private callbacks: ConnectionMonitorCallbacks,\n private heartbeatIntervalMs: number = 30_000,\n private maxFailures: number = 3,\n ) {}\n\n start(): void {\n if (this.timer) return;\n logger.info(\n `[cloud-monitor] Starting connection monitor (interval: ${this.heartbeatIntervalMs}ms, maxFailures: ${this.maxFailures})`,\n );\n this.consecutiveFailures = 0;\n this.timer = setInterval(() => {\n this.tick();\n }, this.heartbeatIntervalMs);\n }\n\n stop(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this.consecutiveFailures = 0;\n this.reconnecting = false;\n logger.info(\"[cloud-monitor] Connection monitor stopped\");\n }\n\n isMonitoring(): boolean {\n return this.timer !== null;\n }\n\n private async tick(): Promise<void> {\n if (this.reconnecting) return;\n\n const alive = await this.client.heartbeat(this.agentId).catch(() => false);\n\n if (alive) {\n if (this.consecutiveFailures > 0) {\n this.consecutiveFailures = 0;\n this.callbacks.onStatusChange?.(\"connected\");\n }\n return;\n }\n\n this.consecutiveFailures++;\n logger.warn(\n `[cloud-monitor] Heartbeat failed (${this.consecutiveFailures}/${this.maxFailures})`,\n );\n\n if (this.consecutiveFailures >= this.maxFailures) {\n // Don't emit \"disconnected\" here — attemptReconnect() will emit\n // \"reconnecting\" first, and only emits \"disconnected\" if all\n // retry attempts fail. This avoids a misleading disconnected→\n // reconnecting flicker for callers.\n this.callbacks.onDisconnect();\n await this.attemptReconnect();\n }\n }\n\n private async attemptReconnect(): Promise<void> {\n this.reconnecting = true;\n this.callbacks.onStatusChange?.(\"reconnecting\");\n\n let delay = 3_000;\n for (let attempt = 1; attempt <= 10; attempt++) {\n logger.info(`[cloud-monitor] Reconnect attempt ${attempt}/10...`);\n const ok = await this.client\n .provision(this.agentId)\n .then(() => true)\n .catch(() => false);\n\n if (ok) {\n logger.info(\"[cloud-monitor] Reconnection successful\");\n this.consecutiveFailures = 0;\n this.reconnecting = false;\n this.callbacks.onStatusChange?.(\"connected\");\n this.callbacks.onReconnect();\n return;\n }\n\n await new Promise((r) => setTimeout(r, delay));\n delay = Math.min(delay * 2, 60_000);\n }\n\n logger.error(\"[cloud-monitor] Failed to reconnect after 10 attempts\");\n this.reconnecting = false;\n this.callbacks.onStatusChange?.(\"disconnected\");\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAIA;AAAA;AAWO,MAAM,kBAAkB;AAAA,EAMnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EATF,QAA+C;AAAA,EAC/C,sBAAsB;AAAA,EACtB,eAAe;AAAA,EAEvB,WAAW,CACD,QACA,SACA,WACA,sBAA8B,OAC9B,cAAsB,GAC9B;AAAA,IALQ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGV,KAAK,GAAS;AAAA,IACZ,IAAI,KAAK;AAAA,MAAO;AAAA,IAChB,OAAO,KACL,0DAA0D,KAAK,uCAAuC,KAAK,cAC7G;AAAA,IACA,KAAK,sBAAsB;AAAA,IAC3B,KAAK,QAAQ,YAAY,MAAM;AAAA,MAC7B,KAAK,KAAK;AAAA,OACT,KAAK,mBAAmB;AAAA;AAAA,EAG7B,IAAI,GAAS;AAAA,IACX,IAAI,KAAK,OAAO;AAAA,MACd,cAAc,KAAK,KAAK;AAAA,MACxB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,sBAAsB;AAAA,IAC3B,KAAK,eAAe;AAAA,IACpB,OAAO,KAAK,4CAA4C;AAAA;AAAA,EAG1D,YAAY,GAAY;AAAA,IACtB,OAAO,KAAK,UAAU;AAAA;AAAA,OAGV,KAAI,GAAkB;AAAA,IAClC,IAAI,KAAK;AAAA,MAAc;AAAA,IAEvB,MAAM,QAAQ,MAAM,KAAK,OAAO,UAAU,KAAK,OAAO,EAAE,MAAM,MAAM,KAAK;AAAA,IAEzE,IAAI,OAAO;AAAA,MACT,IAAI,KAAK,sBAAsB,GAAG;AAAA,QAChC,KAAK,sBAAsB;AAAA,QAC3B,KAAK,UAAU,iBAAiB,WAAW;AAAA,MAC7C;AAAA,MACA;AAAA,IACF;AAAA,IAEA,KAAK;AAAA,IACL,OAAO,KACL,qCAAqC,KAAK,uBAAuB,KAAK,cACxE;AAAA,IAEA,IAAI,KAAK,uBAAuB,KAAK,aAAa;AAAA,MAKhD,KAAK,UAAU,aAAa;AAAA,MAC5B,MAAM,KAAK,iBAAiB;AAAA,IAC9B;AAAA;AAAA,OAGY,iBAAgB,GAAkB;AAAA,IAC9C,KAAK,eAAe;AAAA,IACpB,KAAK,UAAU,iBAAiB,cAAc;AAAA,IAE9C,IAAI,QAAQ;AAAA,IACZ,SAAS,UAAU,EAAG,WAAW,IAAI,WAAW;AAAA,MAC9C,OAAO,KAAK,qCAAqC,eAAe;AAAA,MAChE,MAAM,KAAK,MAAM,KAAK,OACnB,UAAU,KAAK,OAAO,EACtB,KAAK,MAAM,IAAI,EACf,MAAM,MAAM,KAAK;AAAA,MAEpB,IAAI,IAAI;AAAA,QACN,OAAO,KAAK,yCAAyC;AAAA,QACrD,KAAK,sBAAsB;AAAA,QAC3B,KAAK,eAAe;AAAA,QACpB,KAAK,UAAU,iBAAiB,WAAW;AAAA,QAC3C,KAAK,UAAU,YAAY;AAAA,QAC3B;AAAA,MACF;AAAA,MAEA,MAAM,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAAA,MAC7C,QAAQ,KAAK,IAAI,QAAQ,GAAG,KAAM;AAAA,IACpC;AAAA,IAEA,OAAO,MAAM,uDAAuD;AAAA,IACpE,KAAK,eAAe;AAAA,IACpB,KAAK,UAAU,iBAAiB,cAAc;AAAA;AAElD;",
|
|
8
|
+
"debugId": "430B8E5B9401539164756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-url.d.ts","sourceRoot":"","sources":["../../src/cloud/validate-url.ts"],"names":[],"mappings":"AA4HA,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsDxB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
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/cloud/validate-url.ts
|
|
20
|
+
import dns from "node:dns";
|
|
21
|
+
import net from "node:net";
|
|
22
|
+
import { promisify } from "node:util";
|
|
23
|
+
function normalizeHostLike(value) {
|
|
24
|
+
return value.trim().toLowerCase().replace(/^\[|\]$/g, "");
|
|
25
|
+
}
|
|
26
|
+
function decodeIpv6MappedHex(mapped) {
|
|
27
|
+
const parts = mapped.split(":");
|
|
28
|
+
if (parts.length < 1 || parts.length > 2)
|
|
29
|
+
return null;
|
|
30
|
+
const parsed = parts.map((part) => {
|
|
31
|
+
if (!/^[0-9a-f]{1,4}$/i.test(part))
|
|
32
|
+
return Number.NaN;
|
|
33
|
+
return Number.parseInt(part, 16);
|
|
34
|
+
});
|
|
35
|
+
if (parsed.some((value) => !Number.isFinite(value)))
|
|
36
|
+
return null;
|
|
37
|
+
const [hi, lo] = parsed.length === 1 ? [0, parsed[0]] : parsed;
|
|
38
|
+
const octets = [hi >> 8, hi & 255, lo >> 8, lo & 255];
|
|
39
|
+
return octets.join(".");
|
|
40
|
+
}
|
|
41
|
+
function canonicalizeIpv6(ip) {
|
|
42
|
+
try {
|
|
43
|
+
return new URL(`http://[${ip}]/`).hostname.replace(/^\[|\]$/g, "");
|
|
44
|
+
} catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function normalizeIpForPolicy(ip) {
|
|
49
|
+
const base = normalizeHostLike(ip).split("%")[0];
|
|
50
|
+
if (!base)
|
|
51
|
+
return base;
|
|
52
|
+
let normalized = base;
|
|
53
|
+
if (net.isIP(normalized) === 6) {
|
|
54
|
+
normalized = canonicalizeIpv6(normalized) ?? normalized;
|
|
55
|
+
}
|
|
56
|
+
let mapped = null;
|
|
57
|
+
if (normalized.startsWith("::ffff:")) {
|
|
58
|
+
mapped = normalized.slice("::ffff:".length);
|
|
59
|
+
} else if (normalized.startsWith("0:0:0:0:0:ffff:")) {
|
|
60
|
+
mapped = normalized.slice("0:0:0:0:0:ffff:".length);
|
|
61
|
+
}
|
|
62
|
+
if (!mapped)
|
|
63
|
+
return normalized;
|
|
64
|
+
if (net.isIP(mapped) === 4)
|
|
65
|
+
return mapped;
|
|
66
|
+
return decodeIpv6MappedHex(mapped) ?? normalized;
|
|
67
|
+
}
|
|
68
|
+
function cidrV4(base, prefix) {
|
|
69
|
+
const parsed = parseIpv4ToInt(base);
|
|
70
|
+
if (parsed === null) {
|
|
71
|
+
throw new Error(`Invalid CIDR base IPv4 address: ${base}`);
|
|
72
|
+
}
|
|
73
|
+
const shift = 32 - prefix;
|
|
74
|
+
const mask = shift === 32 ? 0 : 4294967295 << shift >>> 0;
|
|
75
|
+
return { base: parsed & mask, mask };
|
|
76
|
+
}
|
|
77
|
+
function parseIpv4ToInt(ip) {
|
|
78
|
+
const parts = ip.split(".");
|
|
79
|
+
if (parts.length !== 4)
|
|
80
|
+
return null;
|
|
81
|
+
let value = 0;
|
|
82
|
+
for (const part of parts) {
|
|
83
|
+
if (!/^\d{1,3}$/.test(part))
|
|
84
|
+
return null;
|
|
85
|
+
const octet = Number.parseInt(part, 10);
|
|
86
|
+
if (!Number.isInteger(octet) || octet < 0 || octet > 255)
|
|
87
|
+
return null;
|
|
88
|
+
value = value << 8 | octet;
|
|
89
|
+
}
|
|
90
|
+
return value >>> 0;
|
|
91
|
+
}
|
|
92
|
+
function isBlockedIpv4(ip) {
|
|
93
|
+
const asInt = parseIpv4ToInt(ip);
|
|
94
|
+
if (asInt === null)
|
|
95
|
+
return true;
|
|
96
|
+
return BLOCKED_IPV4_CIDRS.some((cidr) => (asInt & cidr.mask) === cidr.base);
|
|
97
|
+
}
|
|
98
|
+
function isBlockedIpv6(ip) {
|
|
99
|
+
const normalized = ip.toLowerCase();
|
|
100
|
+
return normalized === "::" || normalized === "::1" || /^fe[89ab][0-9a-f]:/.test(normalized) || /^f[cd][0-9a-f]{2}:/i.test(normalized) || normalized.startsWith("ff");
|
|
101
|
+
}
|
|
102
|
+
function isBlockedIp(ip) {
|
|
103
|
+
const normalized = normalizeIpForPolicy(ip);
|
|
104
|
+
const family = net.isIP(normalized);
|
|
105
|
+
if (family === 4)
|
|
106
|
+
return isBlockedIpv4(normalized);
|
|
107
|
+
if (family === 6)
|
|
108
|
+
return isBlockedIpv6(normalized);
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
async function validateCloudBaseUrl(rawUrl) {
|
|
112
|
+
let parsed;
|
|
113
|
+
try {
|
|
114
|
+
parsed = new URL(rawUrl);
|
|
115
|
+
} catch {
|
|
116
|
+
return `Invalid cloud base URL: "${rawUrl}"`;
|
|
117
|
+
}
|
|
118
|
+
if (parsed.protocol !== "https:") {
|
|
119
|
+
return `Cloud base URL must use HTTPS, got "${parsed.protocol}" in "${rawUrl}"`;
|
|
120
|
+
}
|
|
121
|
+
const hostname = normalizeHostLike(parsed.hostname);
|
|
122
|
+
if (!hostname) {
|
|
123
|
+
return `Invalid cloud base URL: "${rawUrl}"`;
|
|
124
|
+
}
|
|
125
|
+
if (hostname === "localhost" || hostname.endsWith(".localhost") || hostname.endsWith(".local")) {
|
|
126
|
+
return `Cloud base URL "${rawUrl}" points to a blocked local hostname.`;
|
|
127
|
+
}
|
|
128
|
+
if (true) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
if (isBlockedIp(hostname)) {
|
|
132
|
+
return `Cloud base URL "${rawUrl}" points to a blocked address.`;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const results = await dnsLookupAll(hostname, { all: true });
|
|
136
|
+
const addresses = Array.isArray(results) ? results : [results];
|
|
137
|
+
for (const entry of addresses) {
|
|
138
|
+
const ip = typeof entry === "string" ? entry : entry.address;
|
|
139
|
+
if (isBlockedIp(ip)) {
|
|
140
|
+
return `Cloud base URL "${rawUrl}" resolves to ${ip}, ` + "which is a blocked internal/metadata address.";
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
} catch {
|
|
144
|
+
return `Cloud base URL "${rawUrl}" could not be resolved via DNS.`;
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
var dnsLookupAll, BLOCKED_IPV4_CIDRS;
|
|
149
|
+
var init_validate_url = __esm(() => {
|
|
150
|
+
dnsLookupAll = promisify(dns.lookup);
|
|
151
|
+
BLOCKED_IPV4_CIDRS = [
|
|
152
|
+
cidrV4("0.0.0.0", 8),
|
|
153
|
+
cidrV4("10.0.0.0", 8),
|
|
154
|
+
cidrV4("172.16.0.0", 12),
|
|
155
|
+
cidrV4("192.168.0.0", 16),
|
|
156
|
+
cidrV4("100.64.0.0", 10),
|
|
157
|
+
cidrV4("127.0.0.0", 8),
|
|
158
|
+
cidrV4("169.254.0.0", 16),
|
|
159
|
+
cidrV4("192.0.0.0", 24),
|
|
160
|
+
cidrV4("198.18.0.0", 15),
|
|
161
|
+
cidrV4("192.0.2.0", 24),
|
|
162
|
+
cidrV4("198.51.100.0", 24),
|
|
163
|
+
cidrV4("203.0.113.0", 24),
|
|
164
|
+
cidrV4("224.0.0.0", 4),
|
|
165
|
+
cidrV4("240.0.0.0", 4)
|
|
166
|
+
];
|
|
167
|
+
});
|
|
168
|
+
init_validate_url();
|
|
169
|
+
|
|
170
|
+
export {
|
|
171
|
+
validateCloudBaseUrl
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
//# debugId=A6F87DAF3800D9FC64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cloud/validate-url.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import dns from \"node:dns\";\nimport net from \"node:net\";\nimport { promisify } from \"node:util\";\n\nconst dnsLookupAll = promisify(dns.lookup);\n\nconst BLOCKED_IPV4_CIDRS: Array<{ base: number; mask: number }> = [\n cidrV4(\"0.0.0.0\", 8),\n cidrV4(\"10.0.0.0\", 8),\n cidrV4(\"172.16.0.0\", 12),\n cidrV4(\"192.168.0.0\", 16),\n cidrV4(\"100.64.0.0\", 10),\n cidrV4(\"127.0.0.0\", 8),\n cidrV4(\"169.254.0.0\", 16),\n cidrV4(\"192.0.0.0\", 24),\n cidrV4(\"198.18.0.0\", 15),\n cidrV4(\"192.0.2.0\", 24),\n cidrV4(\"198.51.100.0\", 24),\n cidrV4(\"203.0.113.0\", 24),\n cidrV4(\"224.0.0.0\", 4),\n cidrV4(\"240.0.0.0\", 4),\n];\n\nfunction normalizeHostLike(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction decodeIpv6MappedHex(mapped: string): string | null {\n const parts = mapped.split(\":\");\n if (parts.length < 1 || parts.length > 2) return null;\n\n const parsed = parts.map((part) => {\n if (!/^[0-9a-f]{1,4}$/i.test(part)) return Number.NaN;\n return Number.parseInt(part, 16);\n });\n if (parsed.some((value) => !Number.isFinite(value))) return null;\n\n const [hi, lo] = parsed.length === 1 ? [0, parsed[0]] : parsed;\n const octets = [hi >> 8, hi & 0xff, lo >> 8, lo & 0xff];\n return octets.join(\".\");\n}\n\nfunction canonicalizeIpv6(ip: string): string | null {\n try {\n return new URL(`http://[${ip}]/`).hostname.replace(/^\\[|\\]$/g, \"\");\n } catch {\n return null;\n }\n}\n\nfunction normalizeIpForPolicy(ip: string): string {\n const base = normalizeHostLike(ip).split(\"%\")[0];\n if (!base) return base;\n\n let normalized = base;\n if (net.isIP(normalized) === 6) {\n normalized = canonicalizeIpv6(normalized) ?? normalized;\n }\n\n let mapped: string | null = null;\n if (normalized.startsWith(\"::ffff:\")) {\n mapped = normalized.slice(\"::ffff:\".length);\n } else if (normalized.startsWith(\"0:0:0:0:0:ffff:\")) {\n mapped = normalized.slice(\"0:0:0:0:0:ffff:\".length);\n }\n if (!mapped) return normalized;\n\n if (net.isIP(mapped) === 4) return mapped;\n return decodeIpv6MappedHex(mapped) ?? normalized;\n}\n\nfunction cidrV4(base: string, prefix: number): { base: number; mask: number } {\n const parsed = parseIpv4ToInt(base);\n if (parsed === null) {\n throw new Error(`Invalid CIDR base IPv4 address: ${base}`);\n }\n const shift = 32 - prefix;\n const mask = shift === 32 ? 0 : (0xffffffff << shift) >>> 0;\n return { base: parsed & mask, mask };\n}\n\nfunction parseIpv4ToInt(ip: string): number | null {\n const parts = ip.split(\".\");\n if (parts.length !== 4) return null;\n\n let value = 0;\n for (const part of parts) {\n if (!/^\\d{1,3}$/.test(part)) return null;\n const octet = Number.parseInt(part, 10);\n if (!Number.isInteger(octet) || octet < 0 || octet > 255) return null;\n value = (value << 8) | octet;\n }\n\n return value >>> 0;\n}\n\nfunction isBlockedIpv4(ip: string): boolean {\n const asInt = parseIpv4ToInt(ip);\n if (asInt === null) return true;\n return BLOCKED_IPV4_CIDRS.some((cidr) => (asInt & cidr.mask) === cidr.base);\n}\n\nfunction isBlockedIpv6(ip: string): boolean {\n const normalized = ip.toLowerCase();\n return (\n normalized === \"::\" ||\n normalized === \"::1\" ||\n /^fe[89ab][0-9a-f]:/.test(normalized) ||\n /^f[cd][0-9a-f]{2}:/i.test(normalized) ||\n normalized.startsWith(\"ff\")\n );\n}\n\nfunction isBlockedIp(ip: string): boolean {\n const normalized = normalizeIpForPolicy(ip);\n const family = net.isIP(normalized);\n if (family === 4) return isBlockedIpv4(normalized);\n if (family === 6) return isBlockedIpv6(normalized);\n return false;\n}\n\nexport async function validateCloudBaseUrl(\n rawUrl: string,\n): Promise<string | null> {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n return `Invalid cloud base URL: \"${rawUrl}\"`;\n }\n\n if (parsed.protocol !== \"https:\") {\n return `Cloud base URL must use HTTPS, got \"${parsed.protocol}\" in \"${rawUrl}\"`;\n }\n\n const hostname = normalizeHostLike(parsed.hostname);\n if (!hostname) {\n return `Invalid cloud base URL: \"${rawUrl}\"`;\n }\n\n if (\n hostname === \"localhost\" ||\n hostname.endsWith(\".localhost\") ||\n hostname.endsWith(\".local\")\n ) {\n return `Cloud base URL \"${rawUrl}\" points to a blocked local hostname.`;\n }\n\n // Dev-mode bypass: skip IP-range blocking but keep URL format checks above.\n if (process.env.NODE_ENV === \"development\" || process.env.ELIZA_DEV) {\n return null;\n }\n\n if (isBlockedIp(hostname)) {\n return `Cloud base URL \"${rawUrl}\" points to a blocked address.`;\n }\n\n try {\n const results = await dnsLookupAll(hostname, { all: true });\n const addresses = Array.isArray(results) ? results : [results];\n for (const entry of addresses) {\n const ip =\n typeof entry === \"string\"\n ? entry\n : (entry as { address: string }).address;\n if (isBlockedIp(ip)) {\n return (\n `Cloud base URL \"${rawUrl}\" resolves to ${ip}, ` +\n \"which is a blocked internal/metadata address.\"\n );\n }\n }\n } catch {\n return `Cloud base URL \"${rawUrl}\" could not be resolved via DNS.`;\n }\n\n return null;\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "A6F87DAF3800D9FC64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-status.d.ts","sourceRoot":"","sources":["../../cloud-providers/cloud-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cloud-status.d.ts","sourceRoot":"","sources":["../../src/cloud-providers/cloud-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAO5F,eAAO,MAAM,mBAAmB,EAAE,QA+DjC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
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/cloud-providers/cloud-status.ts
|
|
20
|
+
var MAX_CONTAINER_SUMMARIES = 10;
|
|
21
|
+
var cloudStatusProvider = {
|
|
22
|
+
name: "elizacloud_status",
|
|
23
|
+
description: "ElizaCloud container and connection status",
|
|
24
|
+
descriptionCompressed: "ElizaCloud container/connection status.",
|
|
25
|
+
dynamic: true,
|
|
26
|
+
position: 90,
|
|
27
|
+
contexts: ["settings", "finance"],
|
|
28
|
+
contextGate: { anyOf: ["settings", "finance"] },
|
|
29
|
+
cacheStable: false,
|
|
30
|
+
cacheScope: "turn",
|
|
31
|
+
async get(runtime, _message, _state) {
|
|
32
|
+
try {
|
|
33
|
+
const auth = runtime.getService("CLOUD_AUTH");
|
|
34
|
+
if (!auth?.isAuthenticated()) {
|
|
35
|
+
return {
|
|
36
|
+
text: "ElizaCloud: Not authenticated",
|
|
37
|
+
values: { cloudAuthenticated: false }
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const containerSvc = runtime.getService("CLOUD_CONTAINER");
|
|
41
|
+
const bridgeSvc = runtime.getService("CLOUD_BRIDGE");
|
|
42
|
+
const containers = containerSvc?.getTrackedContainers() ?? [];
|
|
43
|
+
const connected = bridgeSvc?.getConnectedContainerIds() ?? [];
|
|
44
|
+
const running = containers.filter((c) => c.status === "running").length;
|
|
45
|
+
const deploying = containers.filter((c) => c.status === "pending" || c.status === "building" || c.status === "deploying").length;
|
|
46
|
+
const summaries = containers.slice(0, MAX_CONTAINER_SUMMARIES).map((c) => ({
|
|
47
|
+
id: c.id,
|
|
48
|
+
name: c.name,
|
|
49
|
+
status: c.status,
|
|
50
|
+
url: c.load_balancer_url,
|
|
51
|
+
billing: c.billing_status,
|
|
52
|
+
bridged: connected.includes(c.id)
|
|
53
|
+
}));
|
|
54
|
+
const lines = [
|
|
55
|
+
`ElizaCloud: ${containers.length} container(s), ${running} running, ${connected.length} bridged`,
|
|
56
|
+
...summaries.map((c) => ` - ${c.name} [${c.status}]${c.url ? ` @ ${c.url}` : ""}${c.bridged ? " (bridged)" : ""}`)
|
|
57
|
+
];
|
|
58
|
+
return {
|
|
59
|
+
text: lines.join(`
|
|
60
|
+
`),
|
|
61
|
+
values: {
|
|
62
|
+
cloudAuthenticated: true,
|
|
63
|
+
totalContainers: containers.length,
|
|
64
|
+
runningContainers: running,
|
|
65
|
+
deployingContainers: deploying
|
|
66
|
+
},
|
|
67
|
+
data: { containers: summaries, truncated: containers.length > summaries.length }
|
|
68
|
+
};
|
|
69
|
+
} catch {
|
|
70
|
+
return { text: "", values: {}, data: {} };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
export {
|
|
75
|
+
cloudStatusProvider
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
//# debugId=54C6BB91BF17536764756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cloud-providers/cloud-status.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * cloudStatusProvider — Container and connection status in agent state.\n */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State } from \"@elizaos/core\";\nimport type { CloudAuthService } from \"../services/cloud-auth\";\nimport type { CloudBridgeService } from \"../services/cloud-bridge\";\nimport type { CloudContainerService } from \"../services/cloud-container\";\n\nconst MAX_CONTAINER_SUMMARIES = 10;\n\nexport const cloudStatusProvider: Provider = {\n name: \"elizacloud_status\",\n description: \"ElizaCloud container and connection status\",\n descriptionCompressed: \"ElizaCloud container/connection status.\",\n dynamic: true,\n position: 90,\n contexts: [\"settings\", \"finance\"],\n contextGate: { anyOf: [\"settings\", \"finance\"] },\n cacheStable: false,\n cacheScope: \"turn\",\n async get(runtime: IAgentRuntime, _message: Memory, _state: State): Promise<ProviderResult> {\n try {\n const auth = runtime.getService(\"CLOUD_AUTH\") as CloudAuthService | undefined;\n if (!auth?.isAuthenticated()) {\n return {\n text: \"ElizaCloud: Not authenticated\",\n values: { cloudAuthenticated: false },\n };\n }\n\n const containerSvc = runtime.getService(\"CLOUD_CONTAINER\") as\n | CloudContainerService\n | undefined;\n const bridgeSvc = runtime.getService(\"CLOUD_BRIDGE\") as CloudBridgeService | undefined;\n const containers = containerSvc?.getTrackedContainers() ?? [];\n const connected = bridgeSvc?.getConnectedContainerIds() ?? [];\n\n const running = containers.filter((c) => c.status === \"running\").length;\n const deploying = containers.filter(\n (c) => c.status === \"pending\" || c.status === \"building\" || c.status === \"deploying\"\n ).length;\n\n const summaries = containers.slice(0, MAX_CONTAINER_SUMMARIES).map((c) => ({\n id: c.id,\n name: c.name,\n status: c.status,\n url: c.load_balancer_url,\n billing: c.billing_status,\n bridged: connected.includes(c.id),\n }));\n\n const lines = [\n `ElizaCloud: ${containers.length} container(s), ${running} running, ${connected.length} bridged`,\n ...summaries.map(\n (c) =>\n ` - ${c.name} [${c.status}]${c.url ? ` @ ${c.url}` : \"\"}${c.bridged ? \" (bridged)\" : \"\"}`\n ),\n ];\n\n return {\n text: lines.join(\"\\n\"),\n values: {\n cloudAuthenticated: true,\n totalContainers: containers.length,\n runningContainers: running,\n deployingContainers: deploying,\n },\n data: { containers: summaries, truncated: containers.length > summaries.length },\n };\n } catch {\n return { text: \"\", values: {}, data: {} };\n }\n },\n};\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AASA,IAAM,0BAA0B;AAEzB,IAAM,sBAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,aAAa,EAAE,OAAO,CAAC,YAAY,SAAS,EAAE;AAAA,EAC9C,aAAa;AAAA,EACb,YAAY;AAAA,OACN,IAAG,CAAC,SAAwB,UAAkB,QAAwC;AAAA,IAC1F,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ,WAAW,YAAY;AAAA,MAC5C,IAAI,CAAC,MAAM,gBAAgB,GAAG;AAAA,QAC5B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,EAAE,oBAAoB,MAAM;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,MAAM,eAAe,QAAQ,WAAW,iBAAiB;AAAA,MAGzD,MAAM,YAAY,QAAQ,WAAW,cAAc;AAAA,MACnD,MAAM,aAAa,cAAc,qBAAqB,KAAK,CAAC;AAAA,MAC5D,MAAM,YAAY,WAAW,yBAAyB,KAAK,CAAC;AAAA,MAE5D,MAAM,UAAU,WAAW,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS,EAAE;AAAA,MACjE,MAAM,YAAY,WAAW,OAC3B,CAAC,MAAM,EAAE,WAAW,aAAa,EAAE,WAAW,cAAc,EAAE,WAAW,WAC3E,EAAE;AAAA,MAEF,MAAM,YAAY,WAAW,MAAM,GAAG,uBAAuB,EAAE,IAAI,CAAC,OAAO;AAAA,QACzE,IAAI,EAAE;AAAA,QACN,MAAM,EAAE;AAAA,QACR,QAAQ,EAAE;AAAA,QACV,KAAK,EAAE;AAAA,QACP,SAAS,EAAE;AAAA,QACX,SAAS,UAAU,SAAS,EAAE,EAAE;AAAA,MAClC,EAAE;AAAA,MAEF,MAAM,QAAQ;AAAA,QACZ,eAAe,WAAW,wBAAwB,oBAAoB,UAAU;AAAA,QAChF,GAAG,UAAU,IACX,CAAC,MACC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,EAAE,QAAQ,KAAK,EAAE,UAAU,eAAe,IAC1F;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,MAAM,MAAM,KAAK;AAAA,CAAI;AAAA,QACrB,QAAQ;AAAA,UACN,oBAAoB;AAAA,UACpB,iBAAiB,WAAW;AAAA,UAC5B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,QACvB;AAAA,QACA,MAAM,EAAE,YAAY,WAAW,WAAW,WAAW,SAAS,UAAU,OAAO;AAAA,MACjF;AAAA,MACA,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,MAAM,CAAC,EAAE;AAAA;AAAA;AAG9C;",
|
|
8
|
+
"debugId": "54C6BB91BF17536764756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-health.d.ts","sourceRoot":"","sources":["../../cloud-providers/container-health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"container-health.d.ts","sourceRoot":"","sources":["../../src/cloud-providers/container-health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAM5F,eAAO,MAAM,uBAAuB,EAAE,QAyDrC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
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/cloud-providers/container-health.ts
|
|
20
|
+
var MAX_HEALTH_REPORTS = 10;
|
|
21
|
+
var containerHealthProvider = {
|
|
22
|
+
name: "elizacloud_health",
|
|
23
|
+
description: "ElizaCloud container health",
|
|
24
|
+
descriptionCompressed: "ElizaCloud container health.",
|
|
25
|
+
dynamic: true,
|
|
26
|
+
position: 92,
|
|
27
|
+
private: true,
|
|
28
|
+
contexts: ["settings", "finance"],
|
|
29
|
+
contextGate: { anyOf: ["settings", "finance"] },
|
|
30
|
+
cacheStable: false,
|
|
31
|
+
cacheScope: "turn",
|
|
32
|
+
async get(runtime, _message, _state) {
|
|
33
|
+
try {
|
|
34
|
+
const auth = runtime.getService("CLOUD_AUTH");
|
|
35
|
+
if (!auth?.isAuthenticated())
|
|
36
|
+
return { text: "" };
|
|
37
|
+
const svc = runtime.getService("CLOUD_CONTAINER");
|
|
38
|
+
const running = svc?.getTrackedContainers().filter((c) => c.status === "running") ?? [];
|
|
39
|
+
if (running.length === 0)
|
|
40
|
+
return {
|
|
41
|
+
text: "No running containers.",
|
|
42
|
+
values: { healthyContainers: 0 }
|
|
43
|
+
};
|
|
44
|
+
const reports = running.slice(0, MAX_HEALTH_REPORTS).map((c) => ({
|
|
45
|
+
id: c.id,
|
|
46
|
+
name: c.name,
|
|
47
|
+
healthy: c.status === "running" && c.billing_status === "active" && !c.error_message,
|
|
48
|
+
status: c.status,
|
|
49
|
+
billing: c.billing_status
|
|
50
|
+
}));
|
|
51
|
+
const healthy = reports.filter((r) => r.healthy).length;
|
|
52
|
+
const text = [
|
|
53
|
+
`Health: ${healthy}/${reports.length} healthy`,
|
|
54
|
+
...reports.map((r) => ` - ${r.name}: ${r.healthy ? "OK" : "UNHEALTHY"} (status=${r.status}, billing=${r.billing})`)
|
|
55
|
+
].join(`
|
|
56
|
+
`);
|
|
57
|
+
return {
|
|
58
|
+
text,
|
|
59
|
+
values: {
|
|
60
|
+
healthyContainers: healthy,
|
|
61
|
+
unhealthyContainers: reports.length - healthy
|
|
62
|
+
},
|
|
63
|
+
data: { reports, truncated: running.length > reports.length }
|
|
64
|
+
};
|
|
65
|
+
} catch {
|
|
66
|
+
return { text: "", values: {}, data: {} };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
export {
|
|
71
|
+
containerHealthProvider
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
//# debugId=5B32294E9C8366D164756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cloud-providers/container-health.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * containerHealthProvider — Container health in agent state (private, on-demand).\n */\n\nimport type { IAgentRuntime, Memory, Provider, ProviderResult, State } from \"@elizaos/core\";\nimport type { CloudAuthService } from \"../services/cloud-auth\";\nimport type { CloudContainerService } from \"../services/cloud-container\";\n\nconst MAX_HEALTH_REPORTS = 10;\n\nexport const containerHealthProvider: Provider = {\n name: \"elizacloud_health\",\n description: \"ElizaCloud container health\",\n descriptionCompressed: \"ElizaCloud container health.\",\n dynamic: true,\n position: 92,\n private: true,\n contexts: [\"settings\", \"finance\"],\n contextGate: { anyOf: [\"settings\", \"finance\"] },\n cacheStable: false,\n cacheScope: \"turn\",\n async get(runtime: IAgentRuntime, _message: Memory, _state: State): Promise<ProviderResult> {\n try {\n const auth = runtime.getService(\"CLOUD_AUTH\") as CloudAuthService | undefined;\n if (!auth?.isAuthenticated()) return { text: \"\" };\n\n const svc = runtime.getService(\"CLOUD_CONTAINER\") as CloudContainerService | undefined;\n const running = svc?.getTrackedContainers().filter((c) => c.status === \"running\") ?? [];\n if (running.length === 0)\n return {\n text: \"No running containers.\",\n values: { healthyContainers: 0 },\n };\n\n // NOTE: True health would require hitting each container's health_check_path\n // endpoint over the network. We approximate here using locally-cached state:\n // a container is considered healthy when it is running, billing is active,\n // and there is no recorded error message.\n const reports = running.slice(0, MAX_HEALTH_REPORTS).map((c) => ({\n id: c.id,\n name: c.name,\n healthy: c.status === \"running\" && c.billing_status === \"active\" && !c.error_message,\n status: c.status,\n billing: c.billing_status,\n }));\n\n const healthy = reports.filter((r) => r.healthy).length;\n const text = [\n `Health: ${healthy}/${reports.length} healthy`,\n ...reports.map(\n (r) =>\n ` - ${r.name}: ${r.healthy ? \"OK\" : \"UNHEALTHY\"} (status=${r.status}, billing=${r.billing})`\n ),\n ].join(\"\\n\");\n\n return {\n text,\n values: {\n healthyContainers: healthy,\n unhealthyContainers: reports.length - healthy,\n },\n data: { reports, truncated: running.length > reports.length },\n };\n } catch {\n return { text: \"\", values: {}, data: {} };\n }\n },\n};\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAQA,IAAM,qBAAqB;AAEpB,IAAM,0BAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU,CAAC,YAAY,SAAS;AAAA,EAChC,aAAa,EAAE,OAAO,CAAC,YAAY,SAAS,EAAE;AAAA,EAC9C,aAAa;AAAA,EACb,YAAY;AAAA,OACN,IAAG,CAAC,SAAwB,UAAkB,QAAwC;AAAA,IAC1F,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ,WAAW,YAAY;AAAA,MAC5C,IAAI,CAAC,MAAM,gBAAgB;AAAA,QAAG,OAAO,EAAE,MAAM,GAAG;AAAA,MAEhD,MAAM,MAAM,QAAQ,WAAW,iBAAiB;AAAA,MAChD,MAAM,UAAU,KAAK,qBAAqB,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS,KAAK,CAAC;AAAA,MACtF,IAAI,QAAQ,WAAW;AAAA,QACrB,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,EAAE,mBAAmB,EAAE;AAAA,QACjC;AAAA,MAMF,MAAM,UAAU,QAAQ,MAAM,GAAG,kBAAkB,EAAE,IAAI,CAAC,OAAO;AAAA,QAC/D,IAAI,EAAE;AAAA,QACN,MAAM,EAAE;AAAA,QACR,SAAS,EAAE,WAAW,aAAa,EAAE,mBAAmB,YAAY,CAAC,EAAE;AAAA,QACvE,QAAQ,EAAE;AAAA,QACV,SAAS,EAAE;AAAA,MACb,EAAE;AAAA,MAEF,MAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,MACjD,MAAM,OAAO;AAAA,QACX,WAAW,WAAW,QAAQ;AAAA,QAC9B,GAAG,QAAQ,IACT,CAAC,MACC,OAAO,EAAE,SAAS,EAAE,UAAU,OAAO,uBAAuB,EAAE,mBAAmB,EAAE,UACvF;AAAA,MACF,EAAE,KAAK;AAAA,CAAI;AAAA,MAEX,OAAO;AAAA,QACL;AAAA,QACA,QAAQ;AAAA,UACN,mBAAmB;AAAA,UACnB,qBAAqB,QAAQ,SAAS;AAAA,QACxC;AAAA,QACA,MAAM,EAAE,SAAS,WAAW,QAAQ,SAAS,QAAQ,OAAO;AAAA,MAC9D;AAAA,MACA,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,MAAM,CAAC,EAAE;AAAA;AAAA;AAG9C;",
|
|
8
|
+
"debugId": "5B32294E9C8366D164756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credit-balance.d.ts","sourceRoot":"","sources":["../../cloud-providers/credit-balance.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"credit-balance.d.ts","sourceRoot":"","sources":["../../src/cloud-providers/credit-balance.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAU5F,eAAO,MAAM,qBAAqB,EAAE,QAwCnC,CAAC"}
|