UNPKG

@composio/core

Version:

![Composio Banner](https://github.com/user-attachments/assets/9ba0e9c1-85a4-4b51-ae60-f9fe7992e819)

1,165 lines (1,158 loc) 279 kB
const require_chunk = require('./chunk-CQwRTUmo.cjs'); const require_buffer = require('./buffer-CYf1Z6Sd.cjs'); const require_Telemetry = require('./Telemetry-DErMJqj0.cjs'); let _composio_client = require("@composio/client"); _composio_client = require_chunk.__toESM(_composio_client); let _file_tool_modifier = require("#file_tool_modifier"); let zod_v3 = require("zod/v3"); zod_v3 = require_chunk.__toESM(zod_v3); let zod_to_json_schema = require("zod-to-json-schema"); zod_to_json_schema = require_chunk.__toESM(zod_to_json_schema); let _config_defaults = require("#config_defaults"); let openai = require("openai"); let _platform = require("#platform"); let semver = require("semver"); semver = require_chunk.__toESM(semver); let _files = require("#files"); let _composio_json_schema_to_zod = require("@composio/json-schema-to-zod"); //#region src/types/authConfigs.types.ts const AuthConfigTypes = { CUSTOM: "use_custom_auth", COMPOSIO_MANAGED: "use_composio_managed_auth" }; const AuthSchemeTypes = { OAUTH1: "OAUTH1", OAUTH2: "OAUTH2", API_KEY: "API_KEY", BASIC: "BASIC", BEARER_TOKEN: "BEARER_TOKEN", BILLCOM_AUTH: "BILLCOM_AUTH", GOOGLE_SERVICE_ACCOUNT: "GOOGLE_SERVICE_ACCOUNT", NO_AUTH: "NO_AUTH", BASIC_WITH_JWT: "BASIC_WITH_JWT", CALCOM_AUTH: "CALCOM_AUTH", SERVICE_ACCOUNT: "SERVICE_ACCOUNT", SAML: "SAML", DCR_OAUTH: "DCR_OAUTH" }; const AuthConfigCreationToolAccessConfigSchema = zod_v3.z.object({ toolsForConnectedAccountCreation: zod_v3.z.array(zod_v3.z.string()).optional() }); const AuthConfigToolAccessConfigSchema = zod_v3.z.object({ toolsAvailableForExecution: zod_v3.z.array(zod_v3.z.string()).optional(), toolsForConnectedAccountCreation: zod_v3.z.array(zod_v3.z.string()).optional() }); const AuthSchemeEnum = zod_v3.z.enum([ "OAUTH2", "OAUTH1", "API_KEY", "BASIC", "BILLCOM_AUTH", "BEARER_TOKEN", "GOOGLE_SERVICE_ACCOUNT", "NO_AUTH", "BASIC_WITH_JWT", "CALCOM_AUTH", "SERVICE_ACCOUNT", "SAML", "DCR_OAUTH" ]); const CreateCustomAuthConfigParamsSchema = zod_v3.z.object({ type: zod_v3.z.literal("use_custom_auth"), name: zod_v3.z.string().optional(), credentials: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.number(), zod_v3.z.boolean() ])), authScheme: AuthSchemeEnum, proxyConfig: zod_v3.z.object({ proxyUrl: zod_v3.z.string(), proxyAuthKey: zod_v3.z.string().optional() }).optional(), toolAccessConfig: AuthConfigCreationToolAccessConfigSchema.optional(), isEnabledForToolRouter: zod_v3.z.boolean().optional() }); const CreateComposioManagedAuthConfigParamsSchema = zod_v3.z.object({ type: zod_v3.z.literal("use_composio_managed_auth"), name: zod_v3.z.string().optional(), credentials: zod_v3.z.object({ scopes: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string())]).optional(), user_scopes: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string())]).optional() }).passthrough().optional(), toolAccessConfig: AuthConfigCreationToolAccessConfigSchema.optional(), isEnabledForToolRouter: zod_v3.z.boolean().optional() }); /** * Discriminated union of all possible auth config types. */ const CreateAuthConfigParamsSchema = zod_v3.z.discriminatedUnion("type", [CreateCustomAuthConfigParamsSchema, CreateComposioManagedAuthConfigParamsSchema]); const CreateAuthConfigResponseSchema = zod_v3.z.object({ id: zod_v3.z.string(), authScheme: zod_v3.z.string(), isComposioManaged: zod_v3.z.boolean(), toolkit: zod_v3.z.string() }); const AuthConfigRetrieveResponseSchema = zod_v3.z.object({ id: zod_v3.z.string(), name: zod_v3.z.string(), toolkit: zod_v3.z.object({ logo: zod_v3.z.string(), slug: zod_v3.z.string() }), noOfConnections: zod_v3.z.number(), status: zod_v3.z.enum(["ENABLED", "DISABLED"]), uuid: zod_v3.z.string(), authScheme: AuthSchemeEnum.optional(), credentials: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), expectedInputFields: zod_v3.z.array(zod_v3.z.unknown()).optional(), isEnabledForToolRouter: zod_v3.z.boolean().optional(), restrictToFollowingTools: zod_v3.z.array(zod_v3.z.string()).optional(), isComposioManaged: zod_v3.z.boolean().optional(), createdBy: zod_v3.z.string().optional(), createdAt: zod_v3.z.string().optional(), lastUpdatedAt: zod_v3.z.string().optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthConfigListParamsSchema = zod_v3.z.object({ cursor: zod_v3.z.string().optional(), isComposioManaged: zod_v3.z.boolean().optional(), limit: zod_v3.z.number().optional(), toolkit: zod_v3.z.string().optional() }); const AuthConfigListResponseSchema = zod_v3.z.object({ items: zod_v3.z.array(AuthConfigRetrieveResponseSchema), nextCursor: zod_v3.z.string().nullable(), totalPages: zod_v3.z.number() }); const AuthCustomConfigUpdateParamsSchema = zod_v3.z.object({ type: zod_v3.z.literal("custom"), credentials: zod_v3.z.object({ scopes: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string())]).optional(), user_scopes: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string())]).optional() }).passthrough().optional(), isEnabledForToolRouter: zod_v3.z.boolean().optional(), restrictToFollowingTools: zod_v3.z.array(zod_v3.z.string()).optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthDefaultConfigUpdateParamsSchema = zod_v3.z.object({ type: zod_v3.z.literal("default"), scopes: zod_v3.z.string().optional(), isEnabledForToolRouter: zod_v3.z.boolean().optional(), restrictToFollowingTools: zod_v3.z.array(zod_v3.z.string()).optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthConfigUpdateParamsSchema = zod_v3.z.discriminatedUnion("type", [AuthCustomConfigUpdateParamsSchema, AuthDefaultConfigUpdateParamsSchema]); //#endregion //#region src/types/connectedAccountAuthStates.types.ts const ConnectionStatuses = { INITIALIZING: "INITIALIZING", INITIATED: "INITIATED", ACTIVE: "ACTIVE", FAILED: "FAILED", EXPIRED: "EXPIRED", INACTIVE: "INACTIVE" }; const RedirectableAuthSchemeSchema = zod_v3.z.enum([AuthSchemeTypes.OAUTH1, AuthSchemeTypes.OAUTH2]); const BaseSchemeRaw = zod_v3.z.object({ subdomain: zod_v3.z.string().optional(), ["your-domain"]: zod_v3.z.string().optional(), region: zod_v3.z.string().optional(), shop: zod_v3.z.string().optional(), account_url: zod_v3.z.string().optional(), COMPANYDOMAIN: zod_v3.z.string().optional(), extension: zod_v3.z.string().optional(), form_api_base_url: zod_v3.z.string().optional(), instanceEndpoint: zod_v3.z.string().optional(), api_url: zod_v3.z.string().optional(), borneo_dashboard_url: zod_v3.z.string().optional(), proxy_username: zod_v3.z.string().optional(), proxy_password: zod_v3.z.string().optional(), domain: zod_v3.z.string().optional(), version: zod_v3.z.string().optional(), dc: zod_v3.z.string().optional(), site_name: zod_v3.z.string().optional(), instanceName: zod_v3.z.string().optional(), account_id: zod_v3.z.string().optional(), your_server: zod_v3.z.string().optional(), server_location: zod_v3.z.string().optional(), base_url: zod_v3.z.string().optional(), api_key: zod_v3.z.string().optional(), generic_api_key: zod_v3.z.string().optional(), bearer_token: zod_v3.z.string().optional(), basic_encoded: zod_v3.z.string().optional(), long_redirect_url: zod_v3.z.boolean().optional(), state_prefix: zod_v3.z.string().optional(), registration_access_token: zod_v3.z.string().optional(), registration_client_uri: zod_v3.z.string().optional(), composio_link_redirect_url: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth2InitiatingConnectionDataSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const Oauth2InitiatedConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED), code_verifier: zod_v3.z.string().optional(), redirectUrl: zod_v3.z.string(), callback_url: zod_v3.z.string().optional(), finalRedirectUri: zod_v3.z.string().optional(), webhook_signature: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth2ActiveConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), access_token: zod_v3.z.string(), id_token: zod_v3.z.string().optional(), token_type: zod_v3.z.string().optional(), refresh_token: zod_v3.z.string().nullish(), expires_in: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.number(), zod_v3.z.null() ]).optional(), scope: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string()), zod_v3.z.null() ]).optional(), webhook_signature: zod_v3.z.string().optional(), authed_user: zod_v3.z.object({ access_token: zod_v3.z.string().optional(), scope: zod_v3.z.string().optional() }).optional().describe("for slack user scopes") }).catchall(zod_v3.z.unknown()); const Oauth2FailedConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth2ExpiredConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth2InactiveConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), access_token: zod_v3.z.string(), id_token: zod_v3.z.string().optional(), token_type: zod_v3.z.string().optional(), refresh_token: zod_v3.z.string().nullish(), expires_in: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.number(), zod_v3.z.null() ]).optional(), scope: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string()), zod_v3.z.null() ]).optional(), webhook_signature: zod_v3.z.string().optional(), authed_user: zod_v3.z.object({ access_token: zod_v3.z.string().optional(), scope: zod_v3.z.string().optional() }).optional().describe("for slack user scopes") }).catchall(zod_v3.z.unknown()); const Oauth2ConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ Oauth2InitiatingConnectionDataSchema, Oauth2InitiatedConnectionDataSchema, Oauth2ActiveConnectionDataSchema, Oauth2FailedConnectionDataSchema, Oauth2ExpiredConnectionDataSchema, Oauth2InactiveConnectionDataSchema ]); const CustomOauth2ConnectionDataSchema = Oauth2ActiveConnectionDataSchema.omit({ status: true }); const Oauth1InitiatingConnectionDataSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const Oauth1InitiatedConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED), authUri: zod_v3.z.string(), oauth_token: zod_v3.z.string(), oauth_token_secret: zod_v3.z.string(), redirectUrl: zod_v3.z.string(), callbackUrl: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth1ActiveConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), oauth_token: zod_v3.z.string(), oauth_token_secret: zod_v3.z.string(), consumer_key: zod_v3.z.string().optional(), oauth_verifier: zod_v3.z.string().optional(), redirectUrl: zod_v3.z.string().optional(), callback_url: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth1FailedConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth1ExpiredConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth1InactiveConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), oauth_token: zod_v3.z.string(), oauth_token_secret: zod_v3.z.string(), consumer_key: zod_v3.z.string().optional(), oauth_verifier: zod_v3.z.string().optional(), redirectUrl: zod_v3.z.string().optional(), callback_url: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const Oauth1ConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ Oauth1InitiatingConnectionDataSchema, Oauth1InitiatedConnectionDataSchema, Oauth1ActiveConnectionDataSchema, Oauth1FailedConnectionDataSchema, Oauth1ExpiredConnectionDataSchema, Oauth1InactiveConnectionDataSchema ]); const CustomOauth1ConnectionDataSchema = Oauth1ActiveConnectionDataSchema.omit({ status: true }); const BillcomAuthInitiatingSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const BillcomAuthConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ BillcomAuthInitiatingSchema, BillcomAuthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED), redirectUrl: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BillcomAuthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), sessionId: zod_v3.z.string(), devKey: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BillcomAuthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), BillcomAuthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), BillcomAuthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE) }).catchall(zod_v3.z.unknown()) ]); const BasicBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const BasicConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ BasicBaseSchema, BasicBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), BasicBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BasicBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BasicBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), username: zod_v3.z.string(), password: zod_v3.z.string(), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), BasicBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), username: zod_v3.z.string(), password: zod_v3.z.string(), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomBasicConnectionDataSchema = BaseSchemeRaw.extend({ username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()); const ApiKeyBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const ApiKeyConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ ApiKeyBaseSchema, ApiKeyBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), ApiKeyBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), api_key: zod_v3.z.string().optional(), generic_api_key: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), ApiKeyBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), api_key: zod_v3.z.string().optional(), generic_api_key: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), ApiKeyBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), ApiKeyBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomApiKeyConnectionDataSchema = BaseSchemeRaw.extend({ api_key: zod_v3.z.string().optional(), generic_api_key: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()); const BearerTokenBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const BearerTokenConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ BearerTokenBaseSchema, BearerTokenBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), BearerTokenBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), token: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BearerTokenBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), token: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BearerTokenBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), BearerTokenBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomBearerTokenConnectionDataSchema = BaseSchemeRaw.extend({ token: zod_v3.z.string() }).catchall(zod_v3.z.unknown()); const GoogleServiceAccountBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const GoogleServiceAccountConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ GoogleServiceAccountBaseSchema, GoogleServiceAccountBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED), redirectUrl: zod_v3.z.string(), composio_link_redirect_url: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), GoogleServiceAccountBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), credentials_json: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), GoogleServiceAccountBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), credentials_json: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), GoogleServiceAccountBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), GoogleServiceAccountBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const NoAuthBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const NoAuthConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ NoAuthBaseSchema, NoAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), NoAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE) }).catchall(zod_v3.z.unknown()), NoAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE) }).catchall(zod_v3.z.unknown()), NoAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), NoAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomNoAuthConnectionDataSchema = BaseSchemeRaw.catchall(zod_v3.z.unknown()); const CalcomAuthBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const CalcomAuthConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ CalcomAuthBaseSchema, CalcomAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), CalcomAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE) }).catchall(zod_v3.z.unknown()), CalcomAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE) }).catchall(zod_v3.z.unknown()), CalcomAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), CalcomAuthBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const BasicWithJwtBaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const BasicWithJwtConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ BasicWithJwtBaseSchema, BasicWithJwtBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), BasicWithJwtBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BasicWithJwtBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), BasicWithJwtBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), username: zod_v3.z.string(), password: zod_v3.z.string(), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), BasicWithJwtBaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), username: zod_v3.z.string(), password: zod_v3.z.string(), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomBasicWithJwtConnectionDataSchema = BaseSchemeRaw.extend({ username: zod_v3.z.string(), password: zod_v3.z.string() }).catchall(zod_v3.z.unknown()); const ServiceAccountInitiatingSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const ServiceAccountConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ ServiceAccountInitiatingSchema, ServiceAccountInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), ServiceAccountInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), application_id: zod_v3.z.string(), installation_id: zod_v3.z.string(), private_key: zod_v3.z.string() }).catchall(zod_v3.z.unknown()), ServiceAccountInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), application_id: zod_v3.z.string(), installation_id: zod_v3.z.string(), private_key: zod_v3.z.string() }).catchall(zod_v3.z.unknown()) ]); const CustomServiceAccountConnectionDataSchema = zod_v3.z.object({ application_id: zod_v3.z.string(), installation_id: zod_v3.z.string(), private_key: zod_v3.z.string() }).merge(BaseSchemeRaw).catchall(zod_v3.z.unknown()); const SamlInitiatingSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const SamlConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ SamlInitiatingSchema, SamlInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), SamlInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE) }).catchall(zod_v3.z.unknown()), SamlInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE) }).catchall(zod_v3.z.unknown()), SamlInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), SamlInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); BaseSchemeRaw.catchall(zod_v3.z.unknown()); const DcrOauthInitiatingSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const DcrOauthConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ DcrOauthInitiatingSchema, DcrOauthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED), client_id: zod_v3.z.string(), redirectUrl: zod_v3.z.string(), client_secret: zod_v3.z.string().optional(), callback_url: zod_v3.z.string().optional(), client_id_issued_at: zod_v3.z.number().optional(), client_secret_expires_at: zod_v3.z.number().optional(), code_verifier: zod_v3.z.string().optional(), finalRedirectUri: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), DcrOauthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), access_token: zod_v3.z.string(), client_id: zod_v3.z.string(), token_type: zod_v3.z.string().optional(), refresh_token: zod_v3.z.string().nullish(), expires_in: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.number(), zod_v3.z.null() ]).optional(), scope: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string()), zod_v3.z.null() ]).optional(), id_token: zod_v3.z.string().optional(), client_secret: zod_v3.z.string().optional(), client_id_issued_at: zod_v3.z.number().optional(), client_secret_expires_at: zod_v3.z.number().optional() }).catchall(zod_v3.z.unknown()), DcrOauthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), access_token: zod_v3.z.string(), client_id: zod_v3.z.string(), token_type: zod_v3.z.string().optional(), refresh_token: zod_v3.z.string().nullish(), expires_in: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.number(), zod_v3.z.null() ]).optional(), scope: zod_v3.z.union([ zod_v3.z.string(), zod_v3.z.array(zod_v3.z.string()), zod_v3.z.null() ]).optional(), id_token: zod_v3.z.string().optional(), client_secret: zod_v3.z.string().optional(), client_id_issued_at: zod_v3.z.number().optional(), client_secret_expires_at: zod_v3.z.number().optional() }).catchall(zod_v3.z.unknown()), DcrOauthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.FAILED), error: zod_v3.z.string().optional(), error_description: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()), DcrOauthInitiatingSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomDcrOauthConnectionDataSchema = zod_v3.z.object({ access_token: zod_v3.z.string(), client_id: zod_v3.z.string() }).merge(BaseSchemeRaw).catchall(zod_v3.z.unknown()); const ConnectionDataSchema = zod_v3.z.discriminatedUnion("authScheme", [ zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.OAUTH1), val: Oauth1ConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.OAUTH2), val: Oauth2ConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.API_KEY), val: ApiKeyConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BASIC), val: BasicConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BEARER_TOKEN), val: BearerTokenConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.GOOGLE_SERVICE_ACCOUNT), val: GoogleServiceAccountConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.NO_AUTH), val: NoAuthConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.CALCOM_AUTH), val: CalcomAuthConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BILLCOM_AUTH), val: BillcomAuthConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BASIC_WITH_JWT), val: BasicWithJwtConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.SERVICE_ACCOUNT), val: ServiceAccountConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.SAML), val: SamlConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.DCR_OAUTH), val: DcrOauthConnectionDataSchema }) ]); const CustomConnectionDataSchema = zod_v3.z.discriminatedUnion("authScheme", [ zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.OAUTH2), toolkitSlug: zod_v3.z.string(), val: CustomOauth2ConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.DCR_OAUTH), toolkitSlug: zod_v3.z.string(), val: CustomDcrOauthConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.API_KEY), toolkitSlug: zod_v3.z.string(), val: CustomApiKeyConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BASIC_WITH_JWT), toolkitSlug: zod_v3.z.string(), val: CustomBasicWithJwtConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BASIC), toolkitSlug: zod_v3.z.string(), val: CustomBasicConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.BEARER_TOKEN), toolkitSlug: zod_v3.z.string(), val: CustomBearerTokenConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.OAUTH1), toolkitSlug: zod_v3.z.string(), val: CustomOauth1ConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.NO_AUTH), toolkitSlug: zod_v3.z.string(), val: CustomNoAuthConnectionDataSchema }), zod_v3.z.object({ authScheme: zod_v3.z.literal(AuthSchemeTypes.SERVICE_ACCOUNT), toolkitSlug: zod_v3.z.string(), val: CustomServiceAccountConnectionDataSchema }) ]); //#endregion //#region src/types/tool.types.ts /** * Toolkit is the collection of tools, * A toolkit can be thought of as an app which provides a set of tools/actions/triggers. * * eg. Google Toolkit, which provides tools like Google Search, Google Maps, Google Translate, etc. */ const ToolkitSchema = zod_v3.z.object({ slug: zod_v3.z.string().describe("The slug of the toolkit"), name: zod_v3.z.string().describe("The name of the toolkit"), logo: zod_v3.z.string().describe("The logo of the toolkit").optional() }); const JSONSchemaType = zod_v3.z.enum([ "string", "number", "integer", "boolean", "object", "array", "null" ]); const JSONSchemaPropertySchema = zod_v3.z.object({ type: zod_v3.z.union([JSONSchemaType, zod_v3.z.array(JSONSchemaType)]).optional(), description: zod_v3.z.string().optional(), anyOf: zod_v3.z.lazy(() => zod_v3.z.array(JSONSchemaPropertySchema)).optional(), oneOf: zod_v3.z.lazy(() => zod_v3.z.array(JSONSchemaPropertySchema)).optional(), allOf: zod_v3.z.lazy(() => zod_v3.z.array(JSONSchemaPropertySchema)).optional(), not: zod_v3.z.lazy(() => JSONSchemaPropertySchema).optional(), title: zod_v3.z.string().optional(), default: zod_v3.z.any().optional(), nullable: zod_v3.z.boolean().optional(), properties: zod_v3.z.lazy(() => zod_v3.z.record(zod_v3.z.string(), JSONSchemaPropertySchema)).optional(), required: zod_v3.z.array(zod_v3.z.string()).optional(), file_uploadable: zod_v3.z.boolean().optional(), file_downloadable: zod_v3.z.boolean().optional(), items: zod_v3.z.lazy(() => zod_v3.z.union([JSONSchemaPropertySchema, zod_v3.z.array(JSONSchemaPropertySchema)])).optional(), enum: zod_v3.z.array(zod_v3.z.any()).optional(), const: zod_v3.z.any().optional(), minimum: zod_v3.z.number().optional(), maximum: zod_v3.z.number().optional(), exclusiveMinimum: zod_v3.z.number().optional(), exclusiveMaximum: zod_v3.z.number().optional(), multipleOf: zod_v3.z.number().optional(), minLength: zod_v3.z.number().optional(), maxLength: zod_v3.z.number().optional(), pattern: zod_v3.z.string().optional(), format: zod_v3.z.string().optional(), minItems: zod_v3.z.number().optional(), maxItems: zod_v3.z.number().optional(), uniqueItems: zod_v3.z.boolean().optional(), minProperties: zod_v3.z.number().optional(), maxProperties: zod_v3.z.number().optional(), patternProperties: zod_v3.z.lazy(() => zod_v3.z.record(zod_v3.z.string(), JSONSchemaPropertySchema)).optional(), additionalProperties: zod_v3.z.union([zod_v3.z.boolean(), zod_v3.z.lazy(() => JSONSchemaPropertySchema)]).optional(), examples: zod_v3.z.array(zod_v3.z.any()).optional(), readOnly: zod_v3.z.boolean().optional(), writeOnly: zod_v3.z.boolean().optional(), if: zod_v3.z.lazy(() => JSONSchemaPropertySchema).optional(), then: zod_v3.z.lazy(() => JSONSchemaPropertySchema).optional(), else: zod_v3.z.lazy(() => JSONSchemaPropertySchema).optional(), $ref: zod_v3.z.string().optional(), definitions: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.lazy(() => JSONSchemaPropertySchema)).optional(), $defs: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.lazy(() => JSONSchemaPropertySchema)).optional() }); const ParametersSchema = zod_v3.z.object({ type: zod_v3.z.literal("object"), anyOf: zod_v3.z.array(JSONSchemaPropertySchema).optional(), oneOf: zod_v3.z.array(JSONSchemaPropertySchema).optional(), allOf: zod_v3.z.array(JSONSchemaPropertySchema).optional(), not: JSONSchemaPropertySchema.optional(), properties: zod_v3.z.record(zod_v3.z.string(), JSONSchemaPropertySchema), required: zod_v3.z.array(zod_v3.z.string()).optional(), title: zod_v3.z.string().optional(), default: zod_v3.z.any().optional(), nullable: zod_v3.z.boolean().optional(), description: zod_v3.z.string().optional(), additionalProperties: zod_v3.z.boolean().default(false).optional() }); /** * Tool is a single action that can be performed by a toolkit. * Tool is simlar to an action that an app can perform. * * eg. Google Search, Google Maps, Google Translate, etc. */ const ToolSchema = zod_v3.z.object({ slug: zod_v3.z.string().describe("The slug of the tool. eg. \"GOOGLE_SEARCH\""), name: zod_v3.z.string().describe(`The name of the tool. eg. "Google Search"`), description: zod_v3.z.string().optional().describe("The description of the tool"), inputParameters: ParametersSchema.optional().describe("The input parameters of the tool"), outputParameters: ParametersSchema.optional().describe("The output parameters of the tool"), tags: zod_v3.z.array(zod_v3.z.string()).describe("The tags of the tool. eg: Important").default([]).optional(), toolkit: ToolkitSchema.describe("The toolkit of the tool").optional(), version: zod_v3.z.string().describe("The version of the tool, e.g. \"20250909_00\"").optional(), isDeprecated: zod_v3.z.boolean().describe("Whether the tool is deprecated").optional(), availableVersions: zod_v3.z.array(zod_v3.z.string()).describe("Available versions of the tool.").default([]).optional(), scopes: zod_v3.z.array(zod_v3.z.string()).describe("The scopes of the tool. eg: [\"task:add\"]").optional(), isNoAuth: zod_v3.z.boolean().describe("Do the tool support no auth?").optional() }); /** * ToolListResponse Schema */ const ToolListResponseSchema = zod_v3.z.object({ items: zod_v3.z.array(ToolSchema), nextCursor: zod_v3.z.string().nullable().optional(), totalPages: zod_v3.z.number() }); const ToolkitLatestVersionSchema = zod_v3.z.literal("latest"); const ToolkitVersionSchema = zod_v3.z.union([ToolkitLatestVersionSchema, zod_v3.z.string()]); const ToolkitVersionsSchema = zod_v3.z.record(zod_v3.z.string(), ToolkitVersionSchema); const ToolkitVersionParamSchema = zod_v3.z.union([ ToolkitVersionsSchema, ToolkitLatestVersionSchema, zod_v3.z.undefined() ]).describe("The versioning of the toolkits. eg: { \"github\": \"latest\", \"slack\": \"20250902_00\" }"); const ToolListParamsSchema = zod_v3.z.object({ tools: zod_v3.z.array(zod_v3.z.string()).optional(), toolkits: zod_v3.z.array(zod_v3.z.string()).optional(), scopes: zod_v3.z.array(zod_v3.z.string()).optional(), tags: zod_v3.z.array(zod_v3.z.string()).optional(), limit: zod_v3.z.number().optional(), search: zod_v3.z.string().optional(), authConfigIds: zod_v3.z.array(zod_v3.z.string()).optional(), important: zod_v3.z.boolean().optional() }); /** * CustomAuthParams is the parameters for the custom authentication. */ const CustomAuthParamsSchema = zod_v3.z.object({ baseURL: zod_v3.z.string().optional(), body: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), parameters: zod_v3.z.array(zod_v3.z.object({ in: zod_v3.z.enum(["query", "header"]), name: zod_v3.z.string(), value: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.number()]) })) }); /** * Parameters for tool execution. * * @property {boolean} [allowTracing] - Enable tracing for this tool execution * @property {string} [connectedAccountId] - The connected account ID to use for authenticated tools * @property {CustomAuthParams} [customAuthParams] - Custom authentication parameters * @property {CustomConnectionData} [customConnectionData] - Custom connection data (takes priority over customAuthParams) * @property {Record<string, unknown>} [arguments] - The arguments to pass to the tool * @property {string} [userId] - The user ID to execute the tool for (required for no-auth apps) * @property {string} [version] - The specific version of the tool to execute (e.g., "20250909_00" or "latest") * @property {boolean} [dangerouslySkipVersionCheck] - Skip version validation when using "latest" version. * **Warning:** This may cause unexpected behavior when new toolkit versions are released. * Only use this if you understand the risks. Recommended alternatives: * - Specify a concrete version in the `version` parameter * - Configure toolkit versions at SDK initialization level * - Set toolkit version via environment variable (COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_SLUG>) * @property {string} [text] - Additional text input for the tool * * @example Recommended: Execute with a specific version * ```typescript * const params: ToolExecuteParams = { * userId: 'default', * version: '20250909_00', * arguments: { owner: 'composio', repo: 'sdk' } * }; * ``` * * @example With dangerouslySkipVersionCheck (use with caution) * ```typescript * const params: ToolExecuteParams = { * userId: 'default', * dangerouslySkipVersionCheck: true, * arguments: { userId: 'pg' } * }; * ``` */ const ToolExecuteParamsSchema = zod_v3.z.object({ allowTracing: zod_v3.z.boolean().optional(), connectedAccountId: zod_v3.z.string().optional(), customAuthParams: CustomAuthParamsSchema.optional(), customConnectionData: CustomConnectionDataSchema.optional(), arguments: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), userId: zod_v3.z.string().optional(), version: zod_v3.z.union([zod_v3.z.literal("latest"), zod_v3.z.string()]).optional(), dangerouslySkipVersionCheck: zod_v3.z.boolean().optional(), text: zod_v3.z.string().optional() }); const ToolExecuteMetaParamsSchema = zod_v3.z.object({ sessionId: zod_v3.z.string(), arguments: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional() }); /** * ToolResponse Schema */ const ToolExecuteResponseSchema = zod_v3.z.object({ data: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()), error: zod_v3.z.string().nullable(), successful: zod_v3.z.boolean(), logId: zod_v3.z.string().optional(), sessionInfo: zod_v3.z.unknown().optional() }); const ToolProxyParamsSchema = zod_v3.z.object({ endpoint: zod_v3.z.string(), method: zod_v3.z.enum([ "GET", "POST", "PUT", "DELETE", "PATCH" ]), body: zod_v3.z.unknown().optional(), parameters: zod_v3.z.array(zod_v3.z.object({ in: zod_v3.z.enum(["query", "header"]), name: zod_v3.z.string(), value: zod_v3.z.union([zod_v3.z.string(), zod_v3.z.number()]) })).optional(), connectedAccountId: zod_v3.z.string().optional(), customConnectionData: CustomConnectionDataSchema.describe("DEPRECATED: This field is deprecated and will be removed in the future.").optional() }); //#endregion //#region src/errors/ConnectedAccountsErrors.ts const ConnectedAccountErrorCodes = { CONNECTED_ACCOUNT_NOT_FOUND: "CONNECTED_ACCOUNT_NOT_FOUND", MULTIPLE_CONNECTED_ACCOUNTS: "MULTIPLE_CONNECTED_ACCOUNTS", FAILED_TO_CREATE_CONNECTED_ACCOUNT_LINK: "FAILED_TO_CREATE_CONNECTED_ACCOUNT_LINK" }; var ComposioConnectedAccountNotFoundError = class extends require_buffer.ComposioError { constructor(message = "Connected account not found", options = {}) { super(message, { ...options, code: ConnectedAccountErrorCodes.CONNECTED_ACCOUNT_NOT_FOUND, statusCode: 404, possibleFixes: options.possibleFixes || ["Ensure the connected account exists and is active in your Composio dashboard"] }); this.name = "ComposioConnectedAccountNotFoundError"; } }; var ComposioMultipleConnectedAccountsError = class extends require_buffer.ComposioError { constructor(message = "Multiple connected accounts found", options = {}) { super(message, { ...options, code: ConnectedAccountErrorCodes.MULTIPLE_CONNECTED_ACCOUNTS, possibleFixes: options.possibleFixes || ["Use the allowMultiple flag to allow multiple connected accounts per user for an auth config"] }); this.name = "ComposioMultipleConnectedAccountsError"; } }; var ComposioFailedToCreateConnectedAccountLink = class extends require_buffer.ComposioError { constructor(message = "Failed to create connected account link", options = {}) { super(message, { ...options, code: ConnectedAccountErrorCodes.FAILED_TO_CREATE_CONNECTED_ACCOUNT_LINK }); this.name = "ComposioFailedToCreateConnectedAccountLink"; } }; //#endregion //#region src/errors/ToolErrors.ts const ToolErrorCodes = { TOOLSET_NOT_DEFINED: "TOOLSET_NOT_DEFINED", TOOL_NOT_FOUND: "TOOL_NOT_FOUND", INVALID_MODIFIER: "INVALID_MODIFIER", CUSTOM_TOOLS_NOT_INITIALIZED: "CUSTOM_TOOLS_NOT_INITIALIZED", TOOL_EXECUTION_ERROR: "TOOL_EXECUTION_ERROR", INVALID_EXECUTE_FUNCTION: "INVALID_EXECUTE_FUNCTION", GLOBAL_EXECUTE_TOOL_FN_NOT_SET: "GLOBAL_EXECUTE_TOOL_FN_NOT_SET", TOOL_VERSION_REQUIRED: "TOOL_VERSION_REQUIRED" }; var ComposioProviderNotDefinedError = class extends require_buffer.ComposioError { constructor(message = "Provider not defined", options = {}) { super(message, { ...options, code: ToolErrorCodes.TOOLSET_NOT_DEFINED, possibleFixes: options.possibleFixes || ["Ensure that the provider is defined in the Composio project and passed into the tool instance"] }); this.name = "ComposioProviderNotDefinedError"; } }; var ComposioToolNotFoundError = class extends require_buffer.ComposioError { constructor(message = "Tool not found", options = {}) { super(message, { ...options, code: ToolErrorCodes.TOOL_NOT_FOUND, possibleFixes: options.possibleFixes || ["Ensure the tool slug is correct and exists in the Composio project"] }); this.name = "ComposioToolNotFoundError"; } }; var ComposioInvalidModifierError = class extends require_buffer.ComposioError { constructor(message = "Invalid modifier", options = {}) { super(message, { ...options, code: ToolErrorCodes.INVALID_MODIFIER, possibleFixes: options.possibleFixes || ["Ensure the modifier is a function and returns a valid result"] }); this.name = "ComposioInvalidModifierError"; } }; var ComposioCustomToolsNotInitializedError = class extends require_buffer.ComposioError { constructor(message = "Custom tools not initialized", options = {}) { super(message, { ...options, code: ToolErrorCodes.CUSTOM_TOOLS_NOT_INITIALIZED, possibleFixes: options.possibleFixes || ["Ensure the custom tools class is initialized in the Tools instance"] }); this.name = "ComposioCustomToolsNotInitializedError"; } }; var ComposioToolExecutionError = class extends require_buffer.ComposioError { constructor(message = "Tool execution error", options = {}) { super(message, { ...options, code: options.code || ToolErrorCodes.TOOL_EXECUTION_ERROR, cause: options.cause, possibleFixes: options.possibleFixes || ["Ensure the tool is correctly configured and the input is valid", "Ensure the userId is correct and has an active connected account for the user in case of non NoAuth toolkits"] }); this.name = "ComposioToolExecutionError"; } }; var ComposioInvalidExecuteFunctionError = class extends require_buffer.ComposioError { constructor(message = "Invalid execute function", options = {}) { super(message, { ...options, code: ToolErrorCodes.INVALID_EXECUTE_FUNCTION, possibleFixes: options.possibleFixes || ["Ensure the execute function is a valid function and returns a valid result"] }); this.name = "ComposioInvalidExecuteFunctionError"; } }; var ComposioGlobalExecuteToolFnNotSetError = class extends require_buffer.ComposioError { constructor(message = "Global execute tool function not set", options = {}) { super(message, { ...options, code: ToolErrorCodes.GLOBAL_EXECUTE_TOOL_FN_NOT_SET, possibleFixes: options.possibleFixes || ["Ensure the global execute tool function is set in the provider"] }); this.name = "ComposioGlobalExecuteToolFnNotSetError"; } }; /** * Error thrown when toolkit version is not specified for manual tool execution. * * This error is thrown when attempting to execute a tool manually (via `tools.execute()`) * and the resolved version is "latest" without `dangerouslySkipVersionCheck` set to true. * * **Why this error exists:** * Using "latest" version in manual execution can lead to unexpected behavior when new * toolkit versions are released, potentially breaking your application. For production * use, it's recommended to pin specific toolkit versions. * * **How to fix:** * 1. Specify a concrete version in the execute call * 2. Configure toolkit versions at SDK initialization * 3. Set toolkit version via environment variable * 4. Use dangerouslySkipVersionCheck (not recommended for production) * * @example ❌ This will throw ComposioToolVersionRequiredError if toolkitVersions is 'latest' * ```typescript * await composio.tools.execute('GITHUB_GET_REPOS', { * userId: 'default', * arguments: { owner: 'composio' } * }); * ``` * * @example ✅ Fix 1: Pass specific version in execute call * ```typescript * await composio.tools.execute('GITHUB_GET_REPOS', { * userId: 'default', * version: '20250909_00', * arguments: { owner: 'composio' } * }); * ``` * * @example ✅ Fix 2: Configure toolkit versions at SDK level * ```typescript * const composio = new Composio({ * toolkitVersions: { github: '20250909_00' } * }); * await composio.tools.execute('GITHUB_GET_REPOS', { * userId: 'default', * arguments: { owner: 'composio' } * }); * ``` * * @example ✅ Fix 3: Use environment variable * ```typescript * // Set: COMPOSIO_TOOLKIT_VERSION_GITHUB=20250909_00 * await composio.tools.execute('GITHUB_GET_REPOS', { * userId: 'default', * arguments: { owner: 'composio' } * }); * ``` * * @example ⚠️ Fix 4: Skip version check (not recommended for production) * ```typescript * await composio.tools.execute('GITHUB_GET_REPOS', { * userId: 'default', * dangerouslySkipVersionCheck: true, * arguments: { owner: 'composio' } * }); * ``` */ var ComposioToolVersionRequiredError = class extends require_buffer.ComposioError { constructor(message = "Toolkit version not specified. For manual execution of the tool please pass a specific toolkit version", options = {}) { super(message, { ...options, code: ToolErrorCodes.TOOL_VERSION_REQUIRED, possibleFixes: options.possibleFixes || [ "Pass the toolkit version as a parameter to the execute function (\"latest\" is not supported in manual execution)", "Set the toolkit versions in the Composio config (toolkitVersions: { <toolkit-slug>: \"<toolkit-version>\" })", "Set the toolkit version in the environment variable (COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_SLUG>)", "Set dangerouslySkipVersionCheck to true (this might cause unexpected behavior when new versions of the tools are released)" ] }); } }; const ERROR_CODE_HANDLERS = new Map([[1803, (msg) => new ComposioConnectedAccountNotFoundError(msg)]]); const handleToolExecutionError = (tool, actualError) => { if (actualError instanceof _composio_client.APIError && actualError.error) { const errorBody = actualError.error; const errorCode = errorBody?.error?.code; const errorMessage = errorBody?.error?.message; if (errorCode && ERROR_CODE_HANDLERS.has(errorCode)) return ERROR_CODE_HANDLERS.get(errorCode)(errorMessage || "An error occurred"); } return new ComposioToolExecutionError(`Error executing the tool ${tool}`, { cause: actualError, possibleFixes: ["Ensure the tool slug is correct and the input arguments for the tool is valid"] }); }; //#endregion //#region src/errors/AuthConfigErrors.ts const AuthConfigErrorCodes = { AUTH_CONFIG_NOT_FOUND: "AUTH_CONFIG_NOT_FOUND" }; var ComposioAuthConfigNotFoundError = class extends require_buffer.ComposioError { constructor(message = "Auth config not found", options = {}) { super(message, { ...options, code: AuthConfigErrorCodes.AUTH_CONFIG_NOT_FOUND, possibleFixes: options.possibleFixes || [ "Check if the auth config exists", "Check if the auth config id is correct", "Check if the auth config is enabled" ] }); this.name = "ComposioAuthConfigNotFoundError"; } }; //#endregion //#region src/errors/ConnectionRequestErrors.ts const ConnectionRequestErrorCodes = { CONNECTION_REQUEST_TIMEOUT: "CONNECTION_REQUEST_TIMEOUT", CONNECTION_REQUEST_