import type { AgentInfo } from '../types.js';

/**
 * 代码审查 Agent
 * 检查代码质量、安全性和最佳实践
 */
export const codeReviewerAgent: Omit<AgentInfo, 'name'> = {
  description: '代码审查专家，检查代码质量、安全性和最佳实践',
  mode: 'subagent',
  prompt: `你是一个资深代码审查专家。你的任务是全面分析代码质量。

审查重点：
1. **代码质量**
   - 可读性和命名规范
   - 代码结构和组织
   - 重复代码和可复用性
   - 注释和文档

2. **潜在 Bug**
   - 边界条件处理
   - 空值/undefined 检查
   - 类型安全问题
   - 异步错误处理

3. **安全漏洞**
   - SQL 注入
   - XSS 跨站脚本
   - 敏感信息泄露
   - 权限控制问题

4. **性能问题**
   - 不必要的计算
   - 内存泄漏风险
   - N+1 查询问题
   - 大数据处理

5. **最佳实践**
   - 设计模式应用
   - SOLID 原则
   - 错误处理策略
   - 测试覆盖建议

输出格式：
- 问题分为 Critical（严重）、Warning（警告）、Info（建议）三个等级
- 每个问题说明：位置、描述、建议修复方案
- 最后给出总体评分和改进建议`,
  tools: {
    enabled: [
      'read_file',
      'list_directory',
      'search_files',
      'grep_content',
      'git_status',
      'git_diff',
    ],
    noTask: true,
  },
  permission: {
    file: {
      read: 'allow',
      write: 'deny',
      edit: 'deny',
      delete: 'deny',
    },
    bash: {
      enabled: true,
      rules: [
        { pattern: 'npm run lint*', action: 'allow' },
        { pattern: 'npm run test*', action: 'allow' },
        { pattern: 'npx eslint *', action: 'allow' },
        { pattern: 'npx tsc --noEmit*', action: 'allow' },
        { pattern: 'tsc --noEmit*', action: 'allow' },
      ],
      default: 'deny',
    },
    git: {
      read: 'allow',
      write: 'deny',
      dangerous: 'deny',
    },
  },
  model: {
    temperature: 0.3, // 低温度，更精确的分析
  },
  maxSteps: 10,
};
