UNPKG

cnb-mcp-server

Version:

MCP Server for the cnb API, enabling file operations, repository management, search functionality, and more.

171 lines (170 loc) 5.03 kB
/** * CNB API 类型定义 */ import { z } from 'zod'; // 用户类型定义 export const UserInfoSchema = z.object({ id: z.string(), username: z.string(), nickname: z.string().optional(), avatar: z.string().optional(), email: z.string().optional(), type: z.string().optional(), verified: z.number().optional(), verified_expire_in: z.string().optional(), freeze: z.boolean().optional(), is_follow: z.boolean().optional(), created_at: z.string().optional(), updated_at: z.string().optional() }); // 签名类型定义 export const SignatureSchema = z.object({ name: z.string(), email: z.string(), date: z.string().optional() }); // Commit类型定义 export const CommitObjectTreeSchema = z.object({ sha: z.string() }); export const CommitObjectVerificationSchema = z.object({ verified: z.boolean(), signature: z.string().optional(), payload: z.string().optional(), resone: z.string().optional() }); export const CommitObjectSchema = z.object({ author: SignatureSchema, committer: SignatureSchema, message: z.string(), tree: CommitObjectTreeSchema, comment_count: z.number().optional(), verification: CommitObjectVerificationSchema.optional() }); export const CommitParentSchema = z.object({ sha: z.string() }); export const CommitSchema = z.object({ sha: z.string(), commit: CommitObjectSchema, author: UserInfoSchema.optional(), committer: UserInfoSchema.optional(), parents: z.array(CommitParentSchema).optional() }); // 分支类型定义 export const BranchSchema = z.object({ name: z.string(), commit: z.object({ sha: z.string() }), protected: z.boolean().optional() }); // 仓库类型定义 export const RepositorySchema = z.object({ id: z.string(), name: z.string(), full_name: z.string(), owner: UserInfoSchema, private: z.boolean().optional(), description: z.string().optional(), fork: z.boolean().optional(), default_branch: z.string().optional(), visibility: z.string().optional(), created_at: z.string().optional(), updated_at: z.string().optional(), pushed_at: z.string().optional(), star_count: z.number().optional(), fork_count: z.number().optional(), has_issues: z.boolean().optional(), has_wiki: z.boolean().optional(), has_downloads: z.boolean().optional() }); // 文件内容类型定义 export const ContentSchema = z.object({ type: z.string(), encoding: z.string().optional(), size: z.number().optional(), name: z.string(), path: z.string(), content: z.string().optional(), sha: z.string().optional(), entries: z.array(z.object({ name: z.string(), path: z.string(), type: z.string(), size: z.number().optional(), sha: z.string() })).optional() }); // 文件推送内容类型定义 export const FileContentSchema = z.object({ path: z.string(), content: z.string(), encoding: z.enum(['utf-8', 'base64']).optional().default('utf-8'), mode: z.string().optional().default('100644') }); // Issue类型定义 export const LabelSchema = z.object({ id: z.string(), name: z.string(), color: z.string().optional(), description: z.string().optional() }); export const IssueSchema = z.object({ id: z.string(), number: z.number(), title: z.string(), body: z.string().optional(), author: UserInfoSchema, assignees: z.array(UserInfoSchema).optional(), labels: z.array(LabelSchema).optional(), state: z.string(), created_at: z.string(), updated_at: z.string().optional(), closed_at: z.string().optional(), comment_count: z.number().optional() }); // Pull Request类型定义 export const PullRequestSchema = z.object({ id: z.string(), number: z.number(), title: z.string(), body: z.string().optional(), author: UserInfoSchema, assignees: z.array(UserInfoSchema).optional(), labels: z.array(LabelSchema).optional(), state: z.string(), created_at: z.string(), updated_at: z.string().optional(), closed_at: z.string().optional(), merged_at: z.string().optional(), comment_count: z.number().optional(), base: z.object({ ref: z.string(), sha: z.string(), repo: RepositorySchema }), head: z.object({ ref: z.string(), sha: z.string(), repo: RepositorySchema }), mergeable: z.boolean().optional(), merged: z.boolean().optional(), merge_commit_sha: z.string().optional() }); // 组织类型定义 export const GroupSchema = z.object({ id: z.number(), name: z.string(), path: z.string(), access_role: z.string(), description: z.string().optional(), email: z.string().optional(), freeze: z.boolean().optional(), remark: z.string().optional(), site: z.string().optional(), wechat_mp: z.string().optional(), created_at: z.string().optional(), updated_at: z.string().optional() });