UNPKG

@composio/core

Version:

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

1,266 lines (1,256 loc) 262 kB
import "./chunk-Dx2NuYGI.mjs"; import { c as COMPOSIO_DIR, d as IS_DEVELOPMENT_OR_CI, g as getEnvsWithPrefix, h as getEnvVariable, l as COMPOSIO_LOG_LEVEL, m as constants_exports, o as ComposioError, p as USER_DATA_FILE_NAME, s as logger_default, t as arrayBufferToBase64, u as DEFAULT_BASE_URL } from "./buffer-BFpVRahf.mjs"; import { t as telemetry } from "./Telemetry-Bn5VseVi.mjs"; import ComposioClient, { APIError } from "@composio/client"; import { FileToolModifier } from "#file_tool_modifier"; import z, { ZodError, z as z$1 } from "zod/v3"; import * as zodToJsonSchema from "zod-to-json-schema"; import { CONFIG_DEFAULTS } from "#config_defaults"; import { APIError as APIError$1 } from "openai"; import { platform } from "#platform"; import semver from "semver"; import { Files } from "#files"; import { jsonSchemaToZod } from "@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 = z$1.object({ toolsForConnectedAccountCreation: z$1.array(z$1.string()).optional() }); const AuthConfigToolAccessConfigSchema = z$1.object({ toolsAvailableForExecution: z$1.array(z$1.string()).optional(), toolsForConnectedAccountCreation: z$1.array(z$1.string()).optional() }); const AuthSchemeEnum = z$1.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 = z$1.object({ type: z$1.literal("use_custom_auth"), name: z$1.string().optional(), credentials: z$1.record(z$1.string(), z$1.union([ z$1.string(), z$1.number(), z$1.boolean() ])), authScheme: AuthSchemeEnum, proxyConfig: z$1.object({ proxyUrl: z$1.string(), proxyAuthKey: z$1.string().optional() }).optional(), toolAccessConfig: AuthConfigCreationToolAccessConfigSchema.optional(), isEnabledForToolRouter: z$1.boolean().optional() }); const CreateComposioManagedAuthConfigParamsSchema = z$1.object({ type: z$1.literal("use_composio_managed_auth"), name: z$1.string().optional(), credentials: z$1.object({ scopes: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional(), user_scopes: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional() }).passthrough().optional(), toolAccessConfig: AuthConfigCreationToolAccessConfigSchema.optional(), isEnabledForToolRouter: z$1.boolean().optional() }); /** * Discriminated union of all possible auth config types. */ const CreateAuthConfigParamsSchema = z$1.discriminatedUnion("type", [CreateCustomAuthConfigParamsSchema, CreateComposioManagedAuthConfigParamsSchema]); const CreateAuthConfigResponseSchema = z$1.object({ id: z$1.string(), authScheme: z$1.string(), isComposioManaged: z$1.boolean(), toolkit: z$1.string() }); const AuthConfigRetrieveResponseSchema = z$1.object({ id: z$1.string(), name: z$1.string(), toolkit: z$1.object({ logo: z$1.string(), slug: z$1.string() }), noOfConnections: z$1.number(), status: z$1.enum(["ENABLED", "DISABLED"]), uuid: z$1.string(), authScheme: AuthSchemeEnum.optional(), credentials: z$1.record(z$1.string(), z$1.unknown()).optional(), expectedInputFields: z$1.array(z$1.unknown()).optional(), isEnabledForToolRouter: z$1.boolean().optional(), restrictToFollowingTools: z$1.array(z$1.string()).optional(), isComposioManaged: z$1.boolean().optional(), createdBy: z$1.string().optional(), createdAt: z$1.string().optional(), lastUpdatedAt: z$1.string().optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthConfigListParamsSchema = z$1.object({ cursor: z$1.string().optional(), isComposioManaged: z$1.boolean().optional(), limit: z$1.number().optional(), toolkit: z$1.string().optional() }); const AuthConfigListResponseSchema = z$1.object({ items: z$1.array(AuthConfigRetrieveResponseSchema), nextCursor: z$1.string().nullable(), totalPages: z$1.number() }); const AuthCustomConfigUpdateParamsSchema = z$1.object({ type: z$1.literal("custom"), credentials: z$1.object({ scopes: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional(), user_scopes: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional() }).passthrough().optional(), isEnabledForToolRouter: z$1.boolean().optional(), restrictToFollowingTools: z$1.array(z$1.string()).optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthDefaultConfigUpdateParamsSchema = z$1.object({ type: z$1.literal("default"), scopes: z$1.string().optional(), isEnabledForToolRouter: z$1.boolean().optional(), restrictToFollowingTools: z$1.array(z$1.string()).optional(), toolAccessConfig: AuthConfigToolAccessConfigSchema.optional() }); const AuthConfigUpdateParamsSchema = z$1.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 = z$1.enum([AuthSchemeTypes.OAUTH1, AuthSchemeTypes.OAUTH2]); const BaseSchemeRaw = z$1.object({ subdomain: z$1.string().optional(), ["your-domain"]: z$1.string().optional(), region: z$1.string().optional(), shop: z$1.string().optional(), account_url: z$1.string().optional(), COMPANYDOMAIN: z$1.string().optional(), extension: z$1.string().optional(), form_api_base_url: z$1.string().optional(), instanceEndpoint: z$1.string().optional(), api_url: z$1.string().optional(), borneo_dashboard_url: z$1.string().optional(), proxy_username: z$1.string().optional(), proxy_password: z$1.string().optional(), domain: z$1.string().optional(), version: z$1.string().optional(), dc: z$1.string().optional(), site_name: z$1.string().optional(), instanceName: z$1.string().optional(), account_id: z$1.string().optional(), your_server: z$1.string().optional(), server_location: z$1.string().optional(), base_url: z$1.string().optional(), api_key: z$1.string().optional(), generic_api_key: z$1.string().optional(), bearer_token: z$1.string().optional(), basic_encoded: z$1.string().optional(), long_redirect_url: z$1.boolean().optional(), state_prefix: z$1.string().optional(), registration_access_token: z$1.string().optional(), registration_client_uri: z$1.string().optional(), composio_link_redirect_url: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth2InitiatingConnectionDataSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const Oauth2InitiatedConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED), code_verifier: z$1.string().optional(), redirectUrl: z$1.string(), callback_url: z$1.string().optional(), finalRedirectUri: z$1.string().optional(), webhook_signature: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth2ActiveConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), access_token: z$1.string(), id_token: z$1.string().optional(), token_type: z$1.string().optional(), refresh_token: z$1.string().nullish(), expires_in: z$1.union([ z$1.string(), z$1.number(), z$1.null() ]).optional(), scope: z$1.union([ z$1.string(), z$1.array(z$1.string()), z$1.null() ]).optional(), webhook_signature: z$1.string().optional(), authed_user: z$1.object({ access_token: z$1.string().optional(), scope: z$1.string().optional() }).optional().describe("for slack user scopes") }).catchall(z$1.unknown()); const Oauth2FailedConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth2ExpiredConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth2InactiveConnectionDataSchema = Oauth2InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), access_token: z$1.string(), id_token: z$1.string().optional(), token_type: z$1.string().optional(), refresh_token: z$1.string().nullish(), expires_in: z$1.union([ z$1.string(), z$1.number(), z$1.null() ]).optional(), scope: z$1.union([ z$1.string(), z$1.array(z$1.string()), z$1.null() ]).optional(), webhook_signature: z$1.string().optional(), authed_user: z$1.object({ access_token: z$1.string().optional(), scope: z$1.string().optional() }).optional().describe("for slack user scopes") }).catchall(z$1.unknown()); const Oauth2ConnectionDataSchema = z$1.discriminatedUnion("status", [ Oauth2InitiatingConnectionDataSchema, Oauth2InitiatedConnectionDataSchema, Oauth2ActiveConnectionDataSchema, Oauth2FailedConnectionDataSchema, Oauth2ExpiredConnectionDataSchema, Oauth2InactiveConnectionDataSchema ]); const CustomOauth2ConnectionDataSchema = Oauth2ActiveConnectionDataSchema.omit({ status: true }); const Oauth1InitiatingConnectionDataSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const Oauth1InitiatedConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED), authUri: z$1.string(), oauth_token: z$1.string(), oauth_token_secret: z$1.string(), redirectUrl: z$1.string(), callbackUrl: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth1ActiveConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), oauth_token: z$1.string(), oauth_token_secret: z$1.string(), consumer_key: z$1.string().optional(), oauth_verifier: z$1.string().optional(), redirectUrl: z$1.string().optional(), callback_url: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth1FailedConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth1ExpiredConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth1InactiveConnectionDataSchema = Oauth1InitiatingConnectionDataSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), oauth_token: z$1.string(), oauth_token_secret: z$1.string(), consumer_key: z$1.string().optional(), oauth_verifier: z$1.string().optional(), redirectUrl: z$1.string().optional(), callback_url: z$1.string().optional() }).catchall(z$1.unknown()); const Oauth1ConnectionDataSchema = z$1.discriminatedUnion("status", [ Oauth1InitiatingConnectionDataSchema, Oauth1InitiatedConnectionDataSchema, Oauth1ActiveConnectionDataSchema, Oauth1FailedConnectionDataSchema, Oauth1ExpiredConnectionDataSchema, Oauth1InactiveConnectionDataSchema ]); const CustomOauth1ConnectionDataSchema = Oauth1ActiveConnectionDataSchema.omit({ status: true }); const BillcomAuthInitiatingSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const BillcomAuthConnectionDataSchema = z$1.discriminatedUnion("status", [ BillcomAuthInitiatingSchema, BillcomAuthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED), redirectUrl: z$1.string() }).catchall(z$1.unknown()), BillcomAuthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), sessionId: z$1.string(), devKey: z$1.string() }).catchall(z$1.unknown()), BillcomAuthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), BillcomAuthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()), BillcomAuthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE) }).catchall(z$1.unknown()) ]); const BasicBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const BasicConnectionDataSchema = z$1.discriminatedUnion("status", [ BasicBaseSchema, BasicBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), BasicBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()), BasicBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()), BasicBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), username: z$1.string(), password: z$1.string(), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), BasicBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), username: z$1.string(), password: z$1.string(), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomBasicConnectionDataSchema = BaseSchemeRaw.extend({ username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()); const ApiKeyBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const ApiKeyConnectionDataSchema = z$1.discriminatedUnion("status", [ ApiKeyBaseSchema, ApiKeyBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), ApiKeyBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), api_key: z$1.string().optional(), generic_api_key: z$1.string().optional() }).catchall(z$1.unknown()), ApiKeyBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), api_key: z$1.string().optional(), generic_api_key: z$1.string().optional() }).catchall(z$1.unknown()), ApiKeyBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), ApiKeyBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomApiKeyConnectionDataSchema = BaseSchemeRaw.extend({ api_key: z$1.string().optional(), generic_api_key: z$1.string().optional() }).catchall(z$1.unknown()); const BearerTokenBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const BearerTokenConnectionDataSchema = z$1.discriminatedUnion("status", [ BearerTokenBaseSchema, BearerTokenBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), BearerTokenBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), token: z$1.string() }).catchall(z$1.unknown()), BearerTokenBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), token: z$1.string() }).catchall(z$1.unknown()), BearerTokenBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), BearerTokenBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomBearerTokenConnectionDataSchema = BaseSchemeRaw.extend({ token: z$1.string() }).catchall(z$1.unknown()); const GoogleServiceAccountBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const GoogleServiceAccountConnectionDataSchema = z$1.discriminatedUnion("status", [ GoogleServiceAccountBaseSchema, GoogleServiceAccountBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED), redirectUrl: z$1.string(), composio_link_redirect_url: z$1.string().optional() }).catchall(z$1.unknown()), GoogleServiceAccountBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), credentials_json: z$1.string() }).catchall(z$1.unknown()), GoogleServiceAccountBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), credentials_json: z$1.string() }).catchall(z$1.unknown()), GoogleServiceAccountBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), GoogleServiceAccountBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const NoAuthBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const NoAuthConnectionDataSchema = z$1.discriminatedUnion("status", [ NoAuthBaseSchema, NoAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), NoAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE) }).catchall(z$1.unknown()), NoAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE) }).catchall(z$1.unknown()), NoAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), NoAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomNoAuthConnectionDataSchema = BaseSchemeRaw.catchall(z$1.unknown()); const CalcomAuthBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const CalcomAuthConnectionDataSchema = z$1.discriminatedUnion("status", [ CalcomAuthBaseSchema, CalcomAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), CalcomAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE) }).catchall(z$1.unknown()), CalcomAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE) }).catchall(z$1.unknown()), CalcomAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), CalcomAuthBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const BasicWithJwtBaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const BasicWithJwtConnectionDataSchema = z$1.discriminatedUnion("status", [ BasicWithJwtBaseSchema, BasicWithJwtBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), BasicWithJwtBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()), BasicWithJwtBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()), BasicWithJwtBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), username: z$1.string(), password: z$1.string(), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), BasicWithJwtBaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), username: z$1.string(), password: z$1.string(), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomBasicWithJwtConnectionDataSchema = BaseSchemeRaw.extend({ username: z$1.string(), password: z$1.string() }).catchall(z$1.unknown()); const ServiceAccountInitiatingSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const ServiceAccountConnectionDataSchema = z$1.discriminatedUnion("status", [ ServiceAccountInitiatingSchema, ServiceAccountInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), ServiceAccountInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), application_id: z$1.string(), installation_id: z$1.string(), private_key: z$1.string() }).catchall(z$1.unknown()), ServiceAccountInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), application_id: z$1.string(), installation_id: z$1.string(), private_key: z$1.string() }).catchall(z$1.unknown()) ]); const CustomServiceAccountConnectionDataSchema = z$1.object({ application_id: z$1.string(), installation_id: z$1.string(), private_key: z$1.string() }).merge(BaseSchemeRaw).catchall(z$1.unknown()); const SamlInitiatingSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const SamlConnectionDataSchema = z$1.discriminatedUnion("status", [ SamlInitiatingSchema, SamlInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), SamlInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE) }).catchall(z$1.unknown()), SamlInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE) }).catchall(z$1.unknown()), SamlInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), SamlInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); BaseSchemeRaw.catchall(z$1.unknown()); const DcrOauthInitiatingSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const DcrOauthConnectionDataSchema = z$1.discriminatedUnion("status", [ DcrOauthInitiatingSchema, DcrOauthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED), client_id: z$1.string(), redirectUrl: z$1.string(), client_secret: z$1.string().optional(), callback_url: z$1.string().optional(), client_id_issued_at: z$1.number().optional(), client_secret_expires_at: z$1.number().optional(), code_verifier: z$1.string().optional(), finalRedirectUri: z$1.string().optional() }).catchall(z$1.unknown()), DcrOauthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), access_token: z$1.string(), client_id: z$1.string(), token_type: z$1.string().optional(), refresh_token: z$1.string().nullish(), expires_in: z$1.union([ z$1.string(), z$1.number(), z$1.null() ]).optional(), scope: z$1.union([ z$1.string(), z$1.array(z$1.string()), z$1.null() ]).optional(), id_token: z$1.string().optional(), client_secret: z$1.string().optional(), client_id_issued_at: z$1.number().optional(), client_secret_expires_at: z$1.number().optional() }).catchall(z$1.unknown()), DcrOauthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), access_token: z$1.string(), client_id: z$1.string(), token_type: z$1.string().optional(), refresh_token: z$1.string().nullish(), expires_in: z$1.union([ z$1.string(), z$1.number(), z$1.null() ]).optional(), scope: z$1.union([ z$1.string(), z$1.array(z$1.string()), z$1.null() ]).optional(), id_token: z$1.string().optional(), client_secret: z$1.string().optional(), client_id_issued_at: z$1.number().optional(), client_secret_expires_at: z$1.number().optional() }).catchall(z$1.unknown()), DcrOauthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), DcrOauthInitiatingSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomDcrOauthConnectionDataSchema = z$1.object({ access_token: z$1.string(), client_id: z$1.string() }).merge(BaseSchemeRaw).catchall(z$1.unknown()); const ConnectionDataSchema = z$1.discriminatedUnion("authScheme", [ z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.OAUTH1), val: Oauth1ConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.OAUTH2), val: Oauth2ConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.API_KEY), val: ApiKeyConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BASIC), val: BasicConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BEARER_TOKEN), val: BearerTokenConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.GOOGLE_SERVICE_ACCOUNT), val: GoogleServiceAccountConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.NO_AUTH), val: NoAuthConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.CALCOM_AUTH), val: CalcomAuthConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BILLCOM_AUTH), val: BillcomAuthConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BASIC_WITH_JWT), val: BasicWithJwtConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.SERVICE_ACCOUNT), val: ServiceAccountConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.SAML), val: SamlConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.DCR_OAUTH), val: DcrOauthConnectionDataSchema }) ]); const CustomConnectionDataSchema = z$1.discriminatedUnion("authScheme", [ z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.OAUTH2), toolkitSlug: z$1.string(), val: CustomOauth2ConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.DCR_OAUTH), toolkitSlug: z$1.string(), val: CustomDcrOauthConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.API_KEY), toolkitSlug: z$1.string(), val: CustomApiKeyConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BASIC_WITH_JWT), toolkitSlug: z$1.string(), val: CustomBasicWithJwtConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BASIC), toolkitSlug: z$1.string(), val: CustomBasicConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.BEARER_TOKEN), toolkitSlug: z$1.string(), val: CustomBearerTokenConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.OAUTH1), toolkitSlug: z$1.string(), val: CustomOauth1ConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.NO_AUTH), toolkitSlug: z$1.string(), val: CustomNoAuthConnectionDataSchema }), z$1.object({ authScheme: z$1.literal(AuthSchemeTypes.SERVICE_ACCOUNT), toolkitSlug: z$1.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 = z$1.object({ slug: z$1.string().describe("The slug of the toolkit"), name: z$1.string().describe("The name of the toolkit"), logo: z$1.string().describe("The logo of the toolkit").optional() }); const JSONSchemaType = z$1.enum([ "string", "number", "integer", "boolean", "object", "array", "null" ]); const JSONSchemaPropertySchema = z$1.object({ type: z$1.union([JSONSchemaType, z$1.array(JSONSchemaType)]).optional(), description: z$1.string().optional(), anyOf: z$1.lazy(() => z$1.array(JSONSchemaPropertySchema)).optional(), oneOf: z$1.lazy(() => z$1.array(JSONSchemaPropertySchema)).optional(), allOf: z$1.lazy(() => z$1.array(JSONSchemaPropertySchema)).optional(), not: z$1.lazy(() => JSONSchemaPropertySchema).optional(), title: z$1.string().optional(), default: z$1.any().optional(), nullable: z$1.boolean().optional(), properties: z$1.lazy(() => z$1.record(z$1.string(), JSONSchemaPropertySchema)).optional(), required: z$1.array(z$1.string()).optional(), file_uploadable: z$1.boolean().optional(), file_downloadable: z$1.boolean().optional(), items: z$1.lazy(() => z$1.union([JSONSchemaPropertySchema, z$1.array(JSONSchemaPropertySchema)])).optional(), enum: z$1.array(z$1.any()).optional(), const: z$1.any().optional(), minimum: z$1.number().optional(), maximum: z$1.number().optional(), exclusiveMinimum: z$1.number().optional(), exclusiveMaximum: z$1.number().optional(), multipleOf: z$1.number().optional(), minLength: z$1.number().optional(), maxLength: z$1.number().optional(), pattern: z$1.string().optional(), format: z$1.string().optional(), minItems: z$1.number().optional(), maxItems: z$1.number().optional(), uniqueItems: z$1.boolean().optional(), minProperties: z$1.number().optional(), maxProperties: z$1.number().optional(), patternProperties: z$1.lazy(() => z$1.record(z$1.string(), JSONSchemaPropertySchema)).optional(), additionalProperties: z$1.union([z$1.boolean(), z$1.lazy(() => JSONSchemaPropertySchema)]).optional(), examples: z$1.array(z$1.any()).optional(), readOnly: z$1.boolean().optional(), writeOnly: z$1.boolean().optional(), if: z$1.lazy(() => JSONSchemaPropertySchema).optional(), then: z$1.lazy(() => JSONSchemaPropertySchema).optional(), else: z$1.lazy(() => JSONSchemaPropertySchema).optional(), $ref: z$1.string().optional(), definitions: z$1.record(z$1.string(), z$1.lazy(() => JSONSchemaPropertySchema)).optional(), $defs: z$1.record(z$1.string(), z$1.lazy(() => JSONSchemaPropertySchema)).optional() }); const ParametersSchema = z$1.object({ type: z$1.literal("object"), anyOf: z$1.array(JSONSchemaPropertySchema).optional(), oneOf: z$1.array(JSONSchemaPropertySchema).optional(), allOf: z$1.array(JSONSchemaPropertySchema).optional(), not: JSONSchemaPropertySchema.optional(), properties: z$1.record(z$1.string(), JSONSchemaPropertySchema), required: z$1.array(z$1.string()).optional(), title: z$1.string().optional(), default: z$1.any().optional(), nullable: z$1.boolean().optional(), description: z$1.string().optional(), additionalProperties: z$1.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 = z$1.object({ slug: z$1.string().describe("The slug of the tool. eg. \"GOOGLE_SEARCH\""), name: z$1.string().describe(`The name of the tool. eg. "Google Search"`), description: z$1.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: z$1.array(z$1.string()).describe("The tags of the tool. eg: Important").default([]).optional(), toolkit: ToolkitSchema.describe("The toolkit of the tool").optional(), version: z$1.string().describe("The version of the tool, e.g. \"20250909_00\"").optional(), isDeprecated: z$1.boolean().describe("Whether the tool is deprecated").optional(), availableVersions: z$1.array(z$1.string()).describe("Available versions of the tool.").default([]).optional(), scopes: z$1.array(z$1.string()).describe("The scopes of the tool. eg: [\"task:add\"]").optional(), isNoAuth: z$1.boolean().describe("Do the tool support no auth?").optional() }); /** * ToolListResponse Schema */ const ToolListResponseSchema = z$1.object({ items: z$1.array(ToolSchema), nextCursor: z$1.string().nullable().optional(), totalPages: z$1.number() }); const ToolkitLatestVersionSchema = z$1.literal("latest"); const ToolkitVersionSchema = z$1.union([ToolkitLatestVersionSchema, z$1.string()]); const ToolkitVersionsSchema = z$1.record(z$1.string(), ToolkitVersionSchema); const ToolkitVersionParamSchema = z$1.union([ ToolkitVersionsSchema, ToolkitLatestVersionSchema, z$1.undefined() ]).describe("The versioning of the toolkits. eg: { \"github\": \"latest\", \"slack\": \"20250902_00\" }"); const ToolListParamsSchema = z$1.object({ tools: z$1.array(z$1.string()).optional(), toolkits: z$1.array(z$1.string()).optional(), scopes: z$1.array(z$1.string()).optional(), tags: z$1.array(z$1.string()).optional(), limit: z$1.number().optional(), search: z$1.string().optional(), authConfigIds: z$1.array(z$1.string()).optional(), important: z$1.boolean().optional() }); /** * CustomAuthParams is the parameters for the custom authentication. */ const CustomAuthParamsSchema = z$1.object({ baseURL: z$1.string().optional(), body: z$1.record(z$1.string(), z$1.unknown()).optional(), parameters: z$1.array(z$1.object({ in: z$1.enum(["query", "header"]), name: z$1.string(), value: z$1.union([z$1.string(), z$1.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 = z$1.object({ allowTracing: z$1.boolean().optional(), connectedAccountId: z$1.string().optional(), customAuthParams: CustomAuthParamsSchema.optional(), customConnectionData: CustomConnectionDataSchema.optional(), arguments: z$1.record(z$1.string(), z$1.unknown()).optional(), userId: z$1.string().optional(), version: z$1.union([z$1.literal("latest"), z$1.string()]).optional(), dangerouslySkipVersionCheck: z$1.boolean().optional(), text: z$1.string().optional() }); const ToolExecuteMetaParamsSchema = z$1.object({ sessionId: z$1.string(), arguments: z$1.record(z$1.string(), z$1.unknown()).optional() }); /** * ToolResponse Schema */ const ToolExecuteResponseSchema = z$1.object({ data: z$1.record(z$1.string(), z$1.unknown()), error: z$1.string().nullable(), successful: z$1.boolean(), logId: z$1.string().optional(), sessionInfo: z$1.unknown().optional() }); const ToolProxyParamsSchema = z$1.object({ endpoint: z$1.string(), method: z$1.enum([ "GET", "POST", "PUT", "DELETE", "PATCH" ]), body: z$1.unknown().optional(), parameters: z$1.array(z$1.object({ in: z$1.enum(["query", "header"]), name: z$1.string(), value: z$1.union([z$1.string(), z$1.number()]) })).optional(), connectedAccountId: z$1.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 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 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 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 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 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 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 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 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 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 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 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 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 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_FAILED: "CONNECTION_REQUEST_FAILED" }; var ConnectionRequestTimeoutError = class extends ComposioError { constructor(message = "Connection request timed out", options = {}) { super(message, { ...options, code: ConnectionRequestErrorCodes.CONNECTION_REQUEST_TIMEOUT }); this.name = "ConnectionRequestTimeoutError"; } }; var ConnectionRequestFailedError = class extends ComposioError { constructor(message = "Connection request failed", options = {}) { super(message, { ...options, code: ConnectionRequestErrorCodes.CONNECTION_REQUEST_FAILED }); this.name = "ConnectionRequestFailedError"; } }; //#endregion //#region src/errors/ToolkitErrors.ts const ToolkitErrorCodes = { TOOLKIT_NOT_FOUND: "TOOLKIT_NOT_FOUND" }; var ComposioToolkitNotFoundError = class extends ComposioError { constructor(message = "Toolkit not found", options = {}) { super(message, { ...options, code: "TOOLKIT_NOT_FOUND", possibleFixes: options.possibleFixes || ["Ensure the toolkit is correctly configured and the slug is valid"] }); this.name = "ComposioToolkitNotFoundError"; } }; var ComposioToolkitFetchError = class extends ComposioError { constructor(message = "Failed to fetch toolkit", options = {}) { super(message, { ...options, code: "TOOLKIT_FETCH_ERROR", possibleFixes: options.possibleFixes || [ "Ensure the toolkit slug is valid", "Ensure you are using the correct API key", "Ensure you are using the correct API endpoint / Base URL and it is working" ] }); this.name = "ComposioToolkitFetchError"; } }; //#endregion //#region src/errors/ValidationErrors.ts /** * Represents an input validation error using Zod. */ const ValidationErrorCodes = { VALIDATION_ERROR: "VALIDATION_ERROR", JSON_SCHEMA_TO_ZOD_ERROR: "JSON_SCHEMA_TO_ZOD_ERROR" }; var ValidationError = class extends ComposioError { constructor(message = "Input validation failed", options = {}) { const { cause: providedZodError, ...restOptions } = options; let zodErrorInstance; if (providedZodError instanceof ZodError) zodErrorInstance = providedZodError; else zodErrorInstance = new ZodError([{ path: [], message: "Invalid input", code: "custom" }]); const issues = zodErrorInstance.issues.map((issue) => `[${issue.code}] ${issue.path.join(".")} - ${issue.message}`); super(message, { ...restOptions, code: options.code || ValidationErrorCodes.VALIDATION_ERROR, possibleFixes: issues, cause: zodErrorInstance }); this.name = "ValidationError"; this.message = `${message}: ${this.generateUserFriendlyMessage()}`; } generateUserFriendlyMessage() { if (this.cause instanceof ZodError && this.cause.issues.length > 0) { const issue = this.cause.issues[0]; const param = issue.path.join(".") || "parameter"; if (issue.code === "invalid_type") return `The ${param} should be a ${issue.expected}, but you provided a ${issue.received}`; return issue.message; } return "Please check your input parameters"; } }; var JsonSchemaToZodError = class extends ComposioError { constructor(message = "Failed to convert JSON schema to Zod schema", options = {}) { super(message, { ...options, code: options.code || ValidationErrorCodes.JSON_SCHEMA_TO_ZOD_ERROR }); } }; //#endregion //#region src/errors/SDKErrors.ts const SDKErrorCodes = { NO_API_KEY_PROVIDED: "NO_API_KEY_PROVIDED" }; var ComposioNoAPIKeyError = class extends ComposioError { constructor(message = "No Composio API key provided", options = {}) { const defaultCause = "Couldn't find an API key in the params, environment variables or in the user config file"; super(message, { ...options, code: SDKErrorCodes.NO_API_K