'use strict'; var v4 = require('zod/v4'); // src/server/schemas/tool-providers.ts var labelSchema = v4.z.string().min(1, "Connection label is required").max(32, "Connection label must be \u2264 32 characters").regex(/^[A-Za-z0-9 _-]+$/, "Connection label may only contain letters, digits, spaces, _ and -"); var connectionScopeSchema = v4.z.enum(["shared", "per-author", "caller-supplied"]); var connectionSchema = v4.z.object({ kind: v4.z.enum(["author", "invoker", "platform"]), toolkit: v4.z.string().min(1), connectionId: v4.z.string(), label: labelSchema.optional(), scope: connectionScopeSchema.optional() }); var toolMetaSchema = v4.z.object({ toolkit: v4.z.string().min(1).optional(), description: v4.z.string().optional() }); var toolProviderConfigSchema = v4.z.object({ tools: v4.z.record(v4.z.string(), toolMetaSchema), connections: v4.z.record(v4.z.string(), v4.z.array(connectionSchema)) }).superRefine((value, ctx) => { for (const [toolkit, connections] of Object.entries(value.connections)) { if (connections.length < 2) continue; const seen = /* @__PURE__ */ new Map(); for (let i = 0; i < connections.length; i++) { const conn = connections[i]; const trimmed = conn.label?.trim() ?? ""; if (trimmed.length === 0) { ctx.addIssue({ code: "custom", path: ["connections", toolkit, i, "label"], message: `Connection label is required on toolkit "${toolkit}" once it has two or more connections` }); continue; } const key = trimmed.toLocaleLowerCase(); const prevIndex = seen.get(key); if (prevIndex !== void 0) { ctx.addIssue({ code: "custom", path: ["connections", toolkit, i, "label"], message: `Duplicate connection label "${conn.label}" on toolkit "${toolkit}" (labels must be unique case-insensitively)` }); } else { seen.set(key, i); } } } }); var toolProvidersSchema = v4.z.record(v4.z.string(), toolProviderConfigSchema); var toolProviderIdPathParams = v4.z.object({ providerId: v4.z.string().describe("Unique identifier for the tool provider") }); var toolSlugPathParams = toolProviderIdPathParams.extend({ toolSlug: v4.z.string().describe("Slug identifier for the tool") }); var toolProviderAuthStatusPathParams = toolProviderIdPathParams.extend({ authId: v4.z.string().describe("Opaque auth handle returned by authorize") }); var toolProviderConnectionPathParams = toolProviderIdPathParams.extend({ connectionId: v4.z.string().describe("Adapter-native connection id (e.g. Composio ca_...)") }); var listToolProviderToolsQuerySchema = v4.z.object({ toolkit: v4.z.string().optional().describe("Filter tools by toolkit slug"), search: v4.z.string().optional().describe("Search tools by name or description"), page: v4.z.coerce.number().optional().describe("Page number for pagination (1-indexed)"), perPage: v4.z.coerce.number().optional().describe("Number of items per page") }); var listConnectionFieldsQuerySchema = v4.z.object({ toolkit: v4.z.string().describe("Toolkit slug whose connection field schema to list") }); var listConnectionsQuerySchema = v4.z.object({ toolkit: v4.z.string().describe("Toolkit slug whose connections to list"), authorId: v4.z.string().optional().describe("Admin-only: restrict listing to a specific author. Silently ignored for non-admin callers."), scope: connectionScopeSchema.optional().describe("Filter results by scope. Omit to include shared + per-author pins for the caller."), page: v4.z.coerce.number().int().positive().optional().describe("Page number for pagination (1-indexed)"), perPage: v4.z.coerce.number().int().positive().max(200).optional().describe("Number of items per page (default 50, max 200)") }); var disconnectConnectionQuerySchema = v4.z.object({ force: v4.z.union([v4.z.boolean(), v4.z.enum(["true", "false"])]).optional().describe("When true, revoke at the provider and drop the row even if pinned by agents"), toolkit: v4.z.string().optional().describe("Toolkit slug for the connection (used when the row was upserted with one)") }); var connectionUsageQuerySchema = v4.z.object({ toolkit: v4.z.string().optional().describe("Optional toolkit slug to scope the usage scan") }); var authorizeToolProviderBodySchema = v4.z.object({ toolkit: v4.z.string().describe("Toolkit slug being authorized"), connectionId: v4.z.string().optional().describe("Existing connection bucket id when re-authorizing; omit for a brand-new connection"), toolName: v4.z.string().optional().describe("Optional tool slug for tool-scoped authorization"), config: v4.z.record(v4.z.string(), v4.z.unknown()).optional().describe("Provider-specific user-supplied connection fields (e.g. subdomain)"), label: v4.z.string().min(1, "Connection label is required").max(32, "Connection label must be \u2264 32 characters").regex(/^[A-Za-z0-9 _-]+$/, "Connection label may only contain letters, digits, spaces, _ and -").nullish().describe( "Optional human label to persist on the resulting tool_provider_connections row. Must match the stored connection label rules (\u2264 32 chars, [A-Za-z0-9 _-]+)." ), scope: connectionScopeSchema.optional().describe( 'Identity bucket. "shared" pins under SHARED_BUCKET_ID. "caller-supplied" pins under the request-context resourceId (returns 400 when missing). Defaults to "per-author".' ) }); var connectionStatusToolProviderBodySchema = v4.z.object({ items: v4.z.array( v4.z.object({ connectionId: v4.z.string(), toolkit: v4.z.string() }) ).describe("Connection tuples to batch-check") }); var paginationSchema = v4.z.object({ total: v4.z.number().optional(), page: v4.z.number().optional(), perPage: v4.z.number().optional(), hasMore: v4.z.boolean() }).optional(); var capabilitiesSchema = v4.z.object({ multipleConnectionsPerToolkit: v4.z.boolean(), batchConnectionStatus: v4.z.boolean(), reauthorizeReusesConnectionId: v4.z.boolean(), supportsRevoke: v4.z.boolean().optional() }); var listToolProvidersResponseSchema = v4.z.object({ providers: v4.z.array( v4.z.object({ id: v4.z.string(), name: v4.z.string(), description: v4.z.string().optional(), displayName: v4.z.string().optional(), capabilities: capabilitiesSchema.optional() }) ) }); var listToolProviderToolkitsResponseSchema = v4.z.object({ data: v4.z.array( v4.z.object({ slug: v4.z.string(), name: v4.z.string(), description: v4.z.string().optional(), icon: v4.z.string().optional() }) ), pagination: paginationSchema }); var listToolProviderToolsResponseSchema = v4.z.object({ data: v4.z.array( v4.z.object({ slug: v4.z.string(), name: v4.z.string(), description: v4.z.string().optional(), toolkit: v4.z.string().optional() }) ), pagination: paginationSchema }); var getToolProviderToolSchemaResponseSchema = v4.z.record(v4.z.string(), v4.z.unknown()); var authorizeToolProviderResponseSchema = v4.z.object({ url: v4.z.string(), authId: v4.z.string() }); var authStatusToolProviderResponseSchema = v4.z.object({ status: v4.z.enum(["pending", "completed", "failed"]) }); var connectionStatusToolProviderResponseSchema = v4.z.object({ items: v4.z.record(v4.z.string(), v4.z.object({ connected: v4.z.boolean() })) }); var listConnectionsResponseSchema = v4.z.object({ items: v4.z.array( v4.z.object({ connectionId: v4.z.string(), status: v4.z.enum(["active", "pending", "failed", "inactive"]), createdAt: v4.z.string().optional(), label: v4.z.string().nullish().describe("Persisted display label from tool_provider_connections, if any"), authorId: v4.z.string().optional().describe("Owner of the connection (when known)"), scope: connectionScopeSchema.optional().describe("Persisted scope from tool_provider_connections. Missing for rows that predate the scope field.") }) ), pagination: paginationSchema }); var listConnectionFieldsResponseSchema = v4.z.object({ fields: v4.z.array( v4.z.object({ name: v4.z.string(), displayName: v4.z.string().optional(), description: v4.z.string().optional(), type: v4.z.enum(["string", "number", "boolean"]), required: v4.z.boolean(), default: v4.z.unknown().optional() }) ) }); var disconnectConnectionResponseSchema = v4.z.object({ ok: v4.z.literal(true), revoked: v4.z.boolean().describe("Whether the provider-side connection was revoked") }); var updateConnectionBodySchema = v4.z.object({ label: v4.z.union([labelSchema, v4.z.literal(""), v4.z.null()]).describe("New display label for the connection. Pass null (or empty string) to clear the existing label.") }); var updateConnectionResponseSchema = v4.z.object({ ok: v4.z.literal(true), label: v4.z.string().nullable().describe("The persisted label after the update (null when cleared)") }); var connectionUsageResponseSchema = v4.z.object({ agents: v4.z.array( v4.z.object({ id: v4.z.string(), name: v4.z.string() }) ) }); var toolProviderHealthResponseSchema = v4.z.object({ ok: v4.z.boolean(), message: v4.z.string().optional(), details: v4.z.record(v4.z.string(), v4.z.unknown()).optional() }); exports.authStatusToolProviderResponseSchema = authStatusToolProviderResponseSchema; exports.authorizeToolProviderBodySchema = authorizeToolProviderBodySchema; exports.authorizeToolProviderResponseSchema = authorizeToolProviderResponseSchema; exports.connectionSchema = connectionSchema; exports.connectionScopeSchema = connectionScopeSchema; exports.connectionStatusToolProviderBodySchema = connectionStatusToolProviderBodySchema; exports.connectionStatusToolProviderResponseSchema = connectionStatusToolProviderResponseSchema; exports.connectionUsageQuerySchema = connectionUsageQuerySchema; exports.connectionUsageResponseSchema = connectionUsageResponseSchema; exports.disconnectConnectionQuerySchema = disconnectConnectionQuerySchema; exports.disconnectConnectionResponseSchema = disconnectConnectionResponseSchema; exports.getToolProviderToolSchemaResponseSchema = getToolProviderToolSchemaResponseSchema; exports.listConnectionFieldsQuerySchema = listConnectionFieldsQuerySchema; exports.listConnectionFieldsResponseSchema = listConnectionFieldsResponseSchema; exports.listConnectionsQuerySchema = listConnectionsQuerySchema; exports.listConnectionsResponseSchema = listConnectionsResponseSchema; exports.listToolProviderToolkitsResponseSchema = listToolProviderToolkitsResponseSchema; exports.listToolProviderToolsQuerySchema = listToolProviderToolsQuerySchema; exports.listToolProviderToolsResponseSchema = listToolProviderToolsResponseSchema; exports.listToolProvidersResponseSchema = listToolProvidersResponseSchema; exports.toolProviderAuthStatusPathParams = toolProviderAuthStatusPathParams; exports.toolProviderConfigSchema = toolProviderConfigSchema; exports.toolProviderConnectionPathParams = toolProviderConnectionPathParams; exports.toolProviderHealthResponseSchema = toolProviderHealthResponseSchema; exports.toolProviderIdPathParams = toolProviderIdPathParams; exports.toolProvidersSchema = toolProvidersSchema; exports.toolSlugPathParams = toolSlugPathParams; exports.updateConnectionBodySchema = updateConnectionBodySchema; exports.updateConnectionResponseSchema = updateConnectionResponseSchema; //# sourceMappingURL=chunk-PXLC5SNM.cjs.map //# sourceMappingURL=chunk-PXLC5SNM.cjs.map