@composio/core
Version:

1,167 lines (1,161 loc) • 317 kB
JavaScript
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