UNPKG

@composio/core

Version:

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

1,247 lines (1,240 loc) 296 kB
import "./chunk-CWQeghP5.mjs"; import { a as DEFAULT_BASE_URL, c as TEMP_FILES_DIRECTORY_NAME, d as getEnvVariable, f as getEnvsWithPrefix, i as COMPOSIO_LOG_LEVEL, l as USER_DATA_FILE_NAME, n as logger_default, o as DEFAULT_TOOL_ROUTER_SESSION_FILES_MOUNT_ID, r as COMPOSIO_DIR, s as IS_DEVELOPMENT_OR_CI, t as ComposioError, u as constants_exports } from "./ComposioError-ChkSdxqU.mjs"; import { A as AuthConfigErrorCodes, B as ToolErrorCodes, C as ValidationErrorCodes, D as ConnectionRequestErrorCodes, E as ToolkitErrorCodes, F as ComposioInvalidModifierError, G as ConnectedAccountErrorCodes, H as ComposioConnectedAccountNotFoundError, I as ComposioProviderNotDefinedError, L as ComposioToolExecutionError, M as ComposioCustomToolsNotInitializedError, N as ComposioGlobalExecuteToolFnNotSetError, O as ConnectionRequestFailedError, P as ComposioInvalidExecuteFunctionError, R as ComposioToolNotFoundError, S as ValidationError, T as ComposioToolkitNotFoundError, U as ComposioFailedToCreateConnectedAccountLink, V as handleToolExecutionError, W as ComposioMultipleConnectedAccountsError, _ as ComposioWebhookSignatureVerificationError, a as serializeCustomTools, b as SDKErrorCodes, c as CustomToolSlugSchema, d as ComposioFailedToCreatePusherClientError, f as ComposioFailedToGetSDKRealtimeCredentialsError, g as ComposioWebhookPayloadError, h as ComposioTriggerTypeNotFoundError, i as serializeCustomToolkits, j as ComposioAuthConfigNotFoundError, k as ConnectionRequestTimeoutError, l as RemoteFileDownloadError, m as ComposioFailedToUnsubscribeFromPusherChannelError, n as createCustomTool, o as CreateCustomToolBaseSchema, p as ComposioFailedToSubscribeToPusherChannelError, r as createCustomToolkit, s as CreateCustomToolkitBaseSchema, t as buildCustomToolsMapFromResponse, u as RemoteFileErrorCodes, v as TriggerErrorCodes, w as ComposioToolkitFetchError, x as JsonSchemaToZodError, y as ComposioNoAPIKeyError, z as ComposioToolVersionRequiredError } from "./CustomTool-AYNimqhf.mjs"; import { t as telemetry } from "./Telemetry-CjVa99gU.mjs"; import { i as getRandomShortId, t as arrayBufferToBase64 } from "./buffer-yOtEsT4J.mjs"; import ComposioClient, { APIError } from "@composio/client"; import { FileToolModifier } from "#file_tool_modifier"; import z, { 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", S2S_OAUTH2: "S2S_OAUTH2" }; 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", "S2S_OAUTH2" ]); 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 S2SOauth2BaseSchema = BaseSchemeRaw.extend({ status: z$1.literal(ConnectionStatuses.INITIALIZING) }).catchall(z$1.unknown()); const S2SOauth2ConnectionDataSchema = z$1.discriminatedUnion("status", [ S2SOauth2BaseSchema, S2SOauth2BaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INITIATED) }).catchall(z$1.unknown()), S2SOauth2BaseSchema.extend({ status: z$1.literal(ConnectionStatuses.ACTIVE), access_token: z$1.string().optional(), 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() }).catchall(z$1.unknown()), S2SOauth2BaseSchema.extend({ status: z$1.literal(ConnectionStatuses.INACTIVE), access_token: z$1.string().optional(), 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() }).catchall(z$1.unknown()), S2SOauth2BaseSchema.extend({ status: z$1.literal(ConnectionStatuses.FAILED), error: z$1.string().optional(), error_description: z$1.string().optional() }).catchall(z$1.unknown()), S2SOauth2BaseSchema.extend({ status: z$1.literal(ConnectionStatuses.EXPIRED), expired_at: z$1.string().optional() }).catchall(z$1.unknown()) ]); const CustomS2SOauth2ConnectionDataSchema = BaseSchemeRaw.extend({ access_token: z$1.string().optional(), id_token: z$1.string().optional(), token_type: z$1.string().optional(), refresh_token: z$1.string().nullish().optional(), 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() }).catchall(z$1.unknown()); 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.S2S_OAUTH2), val: S2SOauth2ConnectionDataSchema }), 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.S2S_OAUTH2), toolkitSlug: z$1.string(), val: CustomS2SOauth2ConnectionDataSchema }), 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/types/connectedAccounts.types.ts /** * Connected Account create parameters */ const ConnectedAccountStatuses = { INITIALIZING: "INITIALIZING", INITIATED: "INITIATED", ACTIVE: "ACTIVE", FAILED: "FAILED", EXPIRED: "EXPIRED", INACTIVE: "INACTIVE" }; const ConnectedAccountStatusSchema = z$1.enum([ ConnectedAccountStatuses.INITIALIZING, ConnectedAccountStatuses.INITIATED, ConnectedAccountStatuses.ACTIVE, ConnectedAccountStatuses.FAILED, ConnectedAccountStatuses.EXPIRED, ConnectedAccountStatuses.INACTIVE ]); const CreateConnectedAccountParamsSchema = z$1.object({ authConfig: z$1.object({ id: z$1.string() }), connection: z$1.object({ data: z$1.record(z$1.string(), z$1.unknown()).optional(), callbackUrl: z$1.string().optional(), userId: z$1.string().optional() }) }); const DefaultCreateConnectedAccountParamsSchema = z$1.object({ auth_config: z$1.object({ id: z$1.string() }), connection: z$1.object({ state: ConnectionDataSchema.optional(), data: z$1.record(z$1.string(), z$1.unknown()).optional(), callback_url: z$1.string().optional(), user_id: z$1.string().optional() }) }); const CreateConnectedAccountOptionsSchema = z$1.object({ allowMultiple: z$1.boolean().optional(), callbackUrl: z$1.string().optional(), config: ConnectionDataSchema.optional() }); /** * Connected Account create response */ const CreateConnectedAccountResponseSchema = z$1.object({ id: z$1.string(), status: ConnectedAccountStatusSchema, redirectUrl: z$1.string().nullable() }); const ConnectedAccountAuthConfigSchema = z$1.object({ id: z$1.string(), authScheme: AuthSchemeEnum.optional(), isComposioManaged: z$1.boolean(), isDisabled: z$1.boolean() }); const ConnectedAccountRetrieveResponseSchema = z$1.object({ id: z$1.string(), authConfig: ConnectedAccountAuthConfigSchema, data: z$1.record(z$1.string(), z$1.unknown()).optional(), params: z$1.record(z$1.string(), z$1.unknown()).optional(), status: ConnectedAccountStatusSchema, statusReason: z$1.string().nullable(), toolkit: z$1.object({ slug: z$1.string() }), state: ConnectionDataSchema.optional(), testRequestEndpoint: z$1.string().optional(), isDisabled: z$1.boolean(), createdAt: z$1.string(), updatedAt: z$1.string() }); const ConnectedAccountListParamsSchema = z$1.object({ authConfigIds: z$1.array(z$1.string()).nullable().optional().describe("The auth config ids of the connected accounts"), cursor: z$1.string().nullish().describe("The cursor to paginate through the connected accounts"), limit: z$1.number().nullable().optional().describe("The limit of the connected accounts to return"), orderBy: z$1.enum(["created_at", "updated_at"]).optional().describe("The order by of the connected accounts"), statuses: z$1.array(ConnectedAccountStatusSchema).nullable().optional().describe("The statuses of the connected accounts"), toolkitSlugs: z$1.array(z$1.string()).nullable().optional().describe("The toolkit slugs of the connected accounts"), userIds: z$1.array(z$1.string()).nullable().optional().describe("The user ids of the connected accounts") }); const ConnectedAccountListResponseSchema = z$1.object({ items: z$1.array(ConnectedAccountRetrieveResponseSchema).describe("The list of connected accounts"), nextCursor: z$1.string().nullish().describe("The next cursor to paginate through the connected accounts"), totalPages: z$1.number().describe("The total number of pages of connected accounts") }); const CreateConnectedAccountLinkOptionsSchema = z$1.object({ callbackUrl: z$1.string().optional() }); const CreateConnectedAccountLinkResponseSchema = z$1.object({ redirectUrl: z$1.string() }); const ConnectedAccountRefreshOptionsSchema = z$1.object({ redirectUrl: z$1.string().optional(), validateCredentials: z$1.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"); 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) { 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 * @returns {ConnectedAccountListResponse} The transformed response * @throws {ZodError} If the response fails validation against the expected schema * * @private */ function transformConnectedAccountListResponse(response) { return transform(response).with(ConnectedAccountListResponseSchema).using((response$1) => ({ items: response$1.items.map(transformConnectedAccountResponse), nextCursor: response$1.next_cursor ?? null, totalPages: response$1.total_pages })); } //#endregion //#region src/models/CustomTools.ts var CustomTools = class { client; customToolsRegistry; constructor(client) { if (!client) throw new ComposioError("ComposioClient is required"); this.client = client; this.customToolsRegistry = /* @__PURE__ */ new Map(); telemetry.instrument(this, "CustomTools"); } /** * Create a custom tool and registers it in the registry. * This is just an in memory registry and is not persisted. * @param {CustomToolOptions} toolOptions CustomToolOptions * @returns {Tool} The tool created * * @example * ```typescript * // Create a custom tool with input parameters * const customTool = await composio.customTools.createTool({ * name: 'My Custom Tool', * description: 'A tool that performs a custom operation', * slug: 'MY_CUSTOM_TOOL', * inputParams: z.object({ * query: z.string().describe('The search query'), * limit: z.number().optional().describe('Maximum number of results') * }), * execute: async (input, connectionConfig, executeToolRequest) => { * // Custom implementation logic * return { * data: { results: ['result1', 'result2'] } * }; * } * }); * ``` */ async createTool(toolOptions) { const { slug, execute, inputParams, name, description } = toolOptions; if (!slug || !execute || !inputParams || !name) throw new Error("Invalid tool options"); const paramsSchemaJson = zodToJsonSchema.default(inputParams, { name: "input" }).definitions.input; const toolSchema = { name, slug, description, inputParameters: { title: name, type: "object", description, properties: paramsSchemaJson.properties, required: paramsSchemaJson.required }, outputParameters: { type: "object", title: `Response for ${name}`, properties: {} }, tags: [], toolkit: { name: "custom", slug: "custom" } }; this.customToolsRegistry.set(slug.toLowerCase(), { options: toolOptions, schema: toolSchema }); return toolSchema; } /** * Get all the custom tools from the registry. * @param {str