import { z } from 'zod';
// AI服务类型
export const AIServiceSchema = z.enum(['gemini', 'claudecode']);
// 审查状态
export const ReviewStatusSchema = z.enum(['✅', '⚠️', '❌', '🔍', '📝']);
// 代码审查请求（传统方式，保留向后兼容）
export const ReviewCodeRequestSchema = z.object({
    code: z.string().describe('要审查的代码内容'),
    language: z.string().optional().describe('代码语言（可选，用于更好的分析）'),
    context: z.string().optional().describe('代码上下文信息（可选）'),
    ai_service: AIServiceSchema.optional().describe('指定使用的AI服务（可选）'),
    custom_prompt: z.string().optional().describe('自定义审查提示词（可选）'),
});
// Git变更审查请求（新的自动化方式）
export const ReviewChangesRequestSchema = z.object({
    repository_path: z
        .string()
        .optional()
        .describe('Git仓库路径（可选，默认为当前目录）'),
    ai_service: AIServiceSchema.optional().describe('指定使用的AI服务（可选）'),
    custom_prompt: z.string().optional().describe('自定义审查提示词（可选）'),
    include_staged: z
        .boolean()
        .optional()
        .default(true)
        .describe('是否包含已暂存的变更'),
    include_unstaged: z
        .boolean()
        .optional()
        .default(true)
        .describe('是否包含未暂存的变更'),
});
// Git提交审查请求
export const ReviewCommitRequestSchema = z.object({
    commit_hash: z
        .string()
        .optional()
        .describe('提交哈希（可选，默认为最新提交）'),
    repository_path: z
        .string()
        .optional()
        .describe('Git仓库路径（可选，默认为当前目录）'),
    ai_service: AIServiceSchema.optional().describe('指定使用的AI服务（可选）'),
    custom_prompt: z.string().optional().describe('自定义审查提示词（可选）'),
});
// 文件审查请求
export const ReviewFilesRequestSchema = z.object({
    files: z.array(z.string()).describe('要审查的文件路径列表'),
    repository_path: z
        .string()
        .optional()
        .describe('Git仓库路径（可选，默认为当前目录）'),
    ai_service: AIServiceSchema.optional().describe('指定使用的AI服务（可选）'),
    custom_prompt: z.string().optional().describe('自定义审查提示词（可选）'),
});
// 审查结果
export const ReviewResultSchema = z.object({
    status: ReviewStatusSchema.describe('审查状态'),
    summary: z.string().describe('审查摘要'),
    details: z.string().describe('详细审查内容'),
    ai_service_used: AIServiceSchema.describe('使用的AI服务'),
    timestamp: z.string().describe('审查时间'),
    report_file: z.string().optional().describe('生成的报告文件路径（如果有）'),
});
// 各种审查操作的响应类型
export const ReviewCodeResponseSchema = z.object({
    status: ReviewStatusSchema.describe('审查状态'),
    summary: z.string().describe('审查摘要'),
    review: z.string().describe('审查结果'),
    ai_service_used: AIServiceSchema.describe('使用的AI服务'),
    timestamp: z.string().describe('审查时间'),
});
export const ReviewChangesResponseSchema = z.object({
    status: ReviewStatusSchema.describe('审查状态'),
    summary: z.string().describe('审查摘要'),
    review: z.string().describe('审查结果'),
    ai_service_used: AIServiceSchema.describe('使用的AI服务'),
    timestamp: z.string().describe('审查时间'),
});
export const ReviewCommitResponseSchema = z.object({
    status: ReviewStatusSchema.describe('审查状态'),
    summary: z.string().describe('审查摘要'),
    review: z.string().describe('审查结果'),
    ai_service_used: AIServiceSchema.describe('使用的AI服务'),
    timestamp: z.string().describe('审查时间'),
});
export const ReviewFilesResponseSchema = z.object({
    status: ReviewStatusSchema.describe('审查状态'),
    summary: z.string().describe('审查摘要'),
    review: z.string().describe('审查结果'),
    ai_service_used: AIServiceSchema.describe('使用的AI服务'),
    timestamp: z.string().describe('审查时间'),
});
// AI服务状态
export const AIServiceStatusSchema = z.object({
    service: AIServiceSchema.describe('AI服务名称'),
    available: z.boolean().describe('是否可用'),
    configured: z.boolean().describe('是否已配置'),
    install_command: z.string().optional().describe('安装命令（如果未安装）'),
    config_command: z.string().optional().describe('配置命令（如果未配置）'),
    error_message: z.string().optional().describe('错误信息（如果有）'),
});
// 错误响应
export const ErrorResponseSchema = z.object({
    error: z.string().describe('错误信息'),
    error_code: z.string().optional().describe('错误代码'),
    suggestions: z.array(z.string()).optional().describe('解决建议'),
});
// 配置AI服务请求
export const ConfigureAIServiceRequestSchema = z.object({
    service: AIServiceSchema.describe('要配置的AI服务（gemini/claudecode）'),
    scope: z.enum(['project', 'global']).optional().default('project').describe('配置范围（project: 项目级别, global: 全局级别）'),
    api_key: z.string().optional().describe('API密钥'),
    timeout: z.number().optional().describe('超时时间（秒）'),
    max_retries: z.number().optional().describe('最大重试次数'),
});
// 获取AI服务状态请求（无参数）
export const GetAIServiceStatusRequestSchema = z.object({});
// 配置AI服务响应
export const ConfigureAIServiceResponseSchema = z.object({
    success: z.boolean().describe('配置是否成功'),
    message: z.string().describe('成功或错误信息'),
    config_path: z.string().optional().describe('配置文件保存路径'),
    restart_required: z.boolean().optional().describe('是否需要重启服务'),
});
// 获取AI服务状态响应
export const GetAIServiceStatusResponseSchema = z.object({
    services: z.array(AIServiceStatusSchema).describe('所有AI服务的状态信息'),
    current_service: z.string().describe('当前激活的AI服务'),
    auto_switch_enabled: z.boolean().describe('是否启用自动切换'),
});
//# sourceMappingURL=types.js.map