UNPKG

@gohcltech/bitbucket-mcp

Version:

Bitbucket integration for Claude via Model Context Protocol

357 lines 12 kB
/** * @fileoverview Type definitions for v2.1 consolidated tools. * * This module defines all TypeScript types and Zod schemas for the 12 consolidated tools * using discriminated unions for type-safe action routing. * * Each consolidated tool has: * - Action type union (e.g., WorkspaceAction = 'list' | 'get') * - Base argument interface with action field * - Action-specific interfaces extending base (discriminated unions) * - Union type combining all action variants * - Zod schema for runtime validation * * This ensures full type safety and runtime validation for all tool operations. */ import { z } from 'zod'; /** Zod schema for workspace management arguments */ export const ManageWorkspacesArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), }), z.object({ action: z.literal('get'), workspace: z.string().min(1), }), ]); /** Zod schema for repository management arguments */ export const ManageRepositoriesArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), workspaceSlug: z.string().min(1), }), z.object({ action: z.literal('get'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), z.object({ action: z.literal('create'), workspaceSlug: z.string().min(1), name: z.string().min(1), description: z.string().optional(), isPrivate: z.boolean().optional(), }), z.object({ action: z.literal('update'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), name: z.string().optional(), description: z.string().optional(), isPrivate: z.boolean().optional(), language: z.string().optional(), website: z.string().optional(), hasIssues: z.boolean().optional(), hasWiki: z.boolean().optional(), forkPolicy: z.enum(['allow_forks', 'no_public_forks', 'no_forks']).optional(), }), z.object({ action: z.literal('delete'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), ]); /** Zod schema for branch management arguments */ export const ManageBranchesArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), z.object({ action: z.literal('get'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), branchName: z.string().min(1), }), z.object({ action: z.literal('create'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), branchName: z.string().min(1), sourceBranch: z.string().optional(), }), z.object({ action: z.literal('delete'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), branchName: z.string().min(1), }), z.object({ action: z.literal('get_model'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), z.object({ action: z.literal('get_permissions'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), z.object({ action: z.literal('get_reviewers'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), ]); /** Zod schema for commit management arguments */ export const QueryCommitsArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), branch: z.string().optional(), include: z.string().optional(), exclude: z.string().optional(), }), z.object({ action: z.literal('get'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), commitHash: z.string().min(40).max(40), }), z.object({ action: z.literal('get_diff'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), commitHash: z.string().min(40).max(40), path: z.string().optional(), context: z.number().optional(), }), z.object({ action: z.literal('get_patch'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), commitHash: z.string().min(40).max(40), }), ]); /** Zod schema for pull request management arguments */ export const ManagePullRequestsArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), state: z.enum(['OPEN', 'MERGED', 'DECLINED', 'SUPERSEDED']).optional(), }), z.object({ action: z.literal('get'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('create'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), title: z.string().min(1), sourceBranch: z.string().min(1), destinationBranch: z.string().optional(), description: z.string().optional(), closeSourceBranch: z.boolean().optional(), }), z.object({ action: z.literal('update'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), title: z.string().optional(), description: z.string().optional(), }), z.object({ action: z.literal('approve'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('unapprove'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('merge'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('decline'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('list_comments'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), }), z.object({ action: z.literal('add_comment'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), pullRequestId: z.number().positive(), content: z.string().min(1), }), ]); /** Zod schema for issue management arguments */ export const ManageIssuesArgsSchema = z.discriminatedUnion('action', [ z.object({ action: z.literal('list'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), state: z.string().optional(), priority: z.string().optional(), kind: z.string().optional(), assignee: z.string().optional(), reporter: z.string().optional(), component: z.string().optional(), milestone: z.string().optional(), version: z.string().optional(), limit: z.number().optional(), }), z.object({ action: z.literal('get'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), }), z.object({ action: z.literal('create'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), title: z.string().min(1), description: z.string().optional(), kind: z.enum(['bug', 'enhancement', 'proposal', 'task']).optional(), priority: z.enum(['trivial', 'minor', 'major', 'critical', 'blocker']).optional(), assignee: z.string().optional(), component: z.string().optional(), milestone: z.string().optional(), version: z.string().optional(), }), z.object({ action: z.literal('update'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), title: z.string().optional(), description: z.string().optional(), kind: z.enum(['bug', 'enhancement', 'proposal', 'task']).optional(), priority: z.enum(['trivial', 'minor', 'major', 'critical', 'blocker']).optional(), state: z.string().optional(), assignee: z.string().optional(), component: z.string().optional(), milestone: z.string().optional(), version: z.string().optional(), }), z.object({ action: z.literal('delete'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), }), z.object({ action: z.literal('search'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), query: z.string().min(1), state: z.string().optional(), priority: z.string().optional(), kind: z.string().optional(), limit: z.number().optional(), }), z.object({ action: z.literal('get_changes'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), }), z.object({ action: z.literal('get_watchers'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), }), z.object({ action: z.literal('list_comments'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), limit: z.number().optional(), }), z.object({ action: z.literal('get_comment'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), commentId: z.number().positive(), }), z.object({ action: z.literal('add_comment'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), content: z.string().min(1), }), z.object({ action: z.literal('update_comment'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), commentId: z.number().positive(), content: z.string().min(1), }), z.object({ action: z.literal('delete_comment'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), issueId: z.number().positive(), commentId: z.number().positive(), }), z.object({ action: z.literal('list_components'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), }), z.object({ action: z.literal('get_component'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), componentId: z.number().positive(), }), z.object({ action: z.literal('list_milestones'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), state: z.enum(['open', 'closed']).optional(), }), z.object({ action: z.literal('get_milestone'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), milestoneId: z.number().positive(), }), z.object({ action: z.literal('list_versions'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), released: z.boolean().optional(), }), z.object({ action: z.literal('get_version'), workspaceSlug: z.string().min(1), repoSlug: z.string().min(1), versionId: z.number().positive(), }), ]); //# sourceMappingURL=consolidated-tools.js.map