UNPKG

@composio/core

Version:

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

1,167 lines (1,161 loc) 317 kB
const require_chunk = require('./chunk-CQwRTUmo.cjs'); const require_ComposioError = require('./ComposioError-CYaI68Mo.cjs'); const require_CustomTool = require('./CustomTool-Cyo1aJ2l.cjs'); const require_Telemetry = require('./Telemetry-A89k5RTv.cjs'); const require_buffer = require('./buffer-BjWptbNH.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", S2S_OAUTH2: "S2S_OAUTH2" }; 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", "S2S_OAUTH2" ]); 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 S2SOauth2BaseSchema = BaseSchemeRaw.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIALIZING) }).catchall(zod_v3.z.unknown()); const S2SOauth2ConnectionDataSchema = zod_v3.z.discriminatedUnion("status", [ S2SOauth2BaseSchema, S2SOauth2BaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INITIATED) }).catchall(zod_v3.z.unknown()), S2SOauth2BaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.ACTIVE), access_token: zod_v3.z.string().optional(), 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() }).catchall(zod_v3.z.unknown()), S2SOauth2BaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.INACTIVE), access_token: zod_v3.z.string().optional(), 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() }).catchall(zod_v3.z.unknown()), S2SOauth2BaseSchema.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()), S2SOauth2BaseSchema.extend({ status: zod_v3.z.literal(ConnectionStatuses.EXPIRED), expired_at: zod_v3.z.string().optional() }).catchall(zod_v3.z.unknown()) ]); const CustomS2SOauth2ConnectionDataSchema = BaseSchemeRaw.extend({ access_token: zod_v3.z.string().optional(), id_token: zod_v3.z.string().optional(), token_type: zod_v3.z.string().optional(), refresh_token: zod_v3.z.string().nullish().optional(), 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() }).catchall(zod_v3.z.unknown()); 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.S2S_OAUTH2), val: S2SOauth2ConnectionDataSchema }), 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.S2S_OAUTH2), toolkitSlug: zod_v3.z.string(), val: CustomS2SOauth2ConnectionDataSchema }), 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/types/connectedAccounts.types.ts /** * Connected Account create parameters */ const ConnectedAccountStatuses = { INITIALIZING: "INITIALIZING", INITIATED: "INITIATED", ACTIVE: "ACTIVE", FAILED: "FAILED", EXPIRED: "EXPIRED", INACTIVE: "INACTIVE" }; const ConnectedAccountStatusSchema = zod_v3.z.enum([ ConnectedAccountStatuses.INITIALIZING, ConnectedAccountStatuses.INITIATED, ConnectedAccountStatuses.ACTIVE, ConnectedAccountStatuses.FAILED, ConnectedAccountStatuses.EXPIRED, ConnectedAccountStatuses.INACTIVE ]); const CreateConnectedAccountParamsSchema = zod_v3.z.object({ authConfig: zod_v3.z.object({ id: zod_v3.z.string() }), connection: zod_v3.z.object({ data: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), callbackUrl: zod_v3.z.string().optional(), userId: zod_v3.z.string().optional() }) }); const DefaultCreateConnectedAccountParamsSchema = zod_v3.z.object({ auth_config: zod_v3.z.object({ id: zod_v3.z.string() }), connection: zod_v3.z.object({ state: ConnectionDataSchema.optional(), data: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), callback_url: zod_v3.z.string().optional(), user_id: zod_v3.z.string().optional() }) }); const CreateConnectedAccountOptionsSchema = zod_v3.z.object({ allowMultiple: zod_v3.z.boolean().optional(), callbackUrl: zod_v3.z.string().optional(), config: ConnectionDataSchema.optional() }); /** * Connected Account create response */ const CreateConnectedAccountResponseSchema = zod_v3.z.object({ id: zod_v3.z.string(), status: ConnectedAccountStatusSchema, redirectUrl: zod_v3.z.string().nullable() }); const ConnectedAccountAuthConfigSchema = zod_v3.z.object({ id: zod_v3.z.string(), authScheme: AuthSchemeEnum.optional(), isComposioManaged: zod_v3.z.boolean(), isDisabled: zod_v3.z.boolean() }); const ConnectedAccountRetrieveResponseSchema = zod_v3.z.object({ id: zod_v3.z.string(), authConfig: ConnectedAccountAuthConfigSchema, data: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), params: zod_v3.z.record(zod_v3.z.string(), zod_v3.z.unknown()).optional(), status: ConnectedAccountStatusSchema, statusReason: zod_v3.z.string().nullable(), toolkit: zod_v3.z.object({ slug: zod_v3.z.string() }), state: ConnectionDataSchema.optional(), testRequestEndpoint: zod_v3.z.string().optional(), isDisabled: zod_v3.z.boolean(), createdAt: zod_v3.z.string(), updatedAt: zod_v3.z.string() }); const ConnectedAccountListParamsSchema = zod_v3.z.object({ authConfigIds: zod_v3.z.array(zod_v3.z.string()).nullable().optional().describe("The auth config ids of the connected accounts"), cursor: zod_v3.z.string().nullish().describe("The cursor to paginate through the connected accounts"), limit: zod_v3.z.number().nullable().optional().describe("The limit of the connected accounts to return"), orderBy: zod_v3.z.enum(["created_at", "updated_at"]).optional().describe("The order by of the connected accounts"), statuses: zod_v3.z.array(ConnectedAccountStatusSchema).nullable().optional().describe("The statuses of the connected accounts"), toolkitSlugs: zod_v3.z.array(zod_v3.z.string()).nullable().optional().describe("The toolkit slugs of the connected accounts"), userIds: zod_v3.z.array(zod_v3.z.string()).nullable().optional().describe("The user ids of the connected accounts") }); const ConnectedAccountListResponseSchema = zod_v3.z.object({ items: zod_v3.z.array(ConnectedAccountRetrieveResponseSchema).describe("The list of connected accounts"), nextCursor: zod_v3.z.string().nullish().describe("The next cursor to paginate through the connected accounts"), totalPages: zod_v3.z.number().describe("The total number of pages of connected accounts") }); const CreateConnectedAccountLinkOptionsSchema = zod_v3.z.object({ callbackUrl: zod_v3.z.string().optional() }); const CreateConnectedAccountLinkResponseSchema = zod_v3.z.object({ redirectUrl: zod_v3.z.string() }); const ConnectedAccountRefreshOptionsSchema = zod_v3.z.object({ redirectUrl: zod_v3.z.string().optional(), validateCredentials: zod_v3.z.boolean().optional() }); //#endregion //#region src/utils/transform.ts function transform(raw) { return { with(schema) { return { using(transformer, options) { const transformed = transformer(raw); const result = schema.safeParse(transformed); if (!result.success) { const label = options?.label ? ` for ${options.label}` : ""; const issues = result.error.issues.map((issue) => ` - ${issue.path.join(".") || "parameter"}: ${issue.message}`).join("\n"); require_ComposioError.logger_default.warn(`Transform validation failed${label}:\n${issues}`); return transformed; } return result.data; } }; } }; } //#endregion //#region src/utils/transformers/connectedAccounts.ts /** * Transforms the raw connected account response from the Composio API to the SDK format. * * This method converts property names from snake_case to camelCase and reorganizes * the data structure to match the SDK's standardized format. * * @param {RawConnectedAccountListResponse['items'][0]|RawConnectedAccountRetrieveResponse} response - The raw API response to transform * @returns {Promise<ConnectedAccountRetrieveResponse>} The transformed response * @throws {ZodError} If the response fails validation against the expected schema * * @private */ function transformConnectedAccountResponse(response) { const parseState = (state) => { try { return state ? ConnectionDataSchema.parse(state) : void 0; } catch (error) { require_ComposioError.logger_default.warn("Unsupported auth scheme in connected account state, ignoring state field", { error }); return; } }; return transform(response).with(ConnectedAccountRetrieveResponseSchema).using((response$1) => ({ ...response$1, authConfig: { ...response$1.auth_config, id: response$1.auth_config.id, authScheme: response$1.auth_config.auth_scheme, isComposioManaged: response$1.auth_config.is_composio_managed, isDisabled: response$1.auth_config.is_disabled }, data: response$1.data ?? void 0, state: parseState(response$1.state), status: response$1.status, statusReason: response$1.status_reason, isDisabled: response$1.is_disabled, createdAt: response$1.created_at, updatedAt: response$1.updated_at, testRequestEndpoint: response$1.test_request_endpoint })); } /** * Transforms the raw connected account list response from the Composio API to the SDK format. * * This method converts property names from snake_case to camelCase and reorganizes * the data structure to match the SDK's standardized format. * * @param {RawConnectedAccountListResponse} response - The raw API response to transform * @retu