/**
 * Command 系统类型定义
 *
 * Command 是用户可通过斜杠命令触发的可复用提示词模板。
 * 与 Skill 不同，Command 面向用户，可控制完整执行流程。
 */

/**
 * Command 定义
 */
export interface Command {
  /** Command 名称（从文件路径推断，如 deploy/staging） */
  name: string;
  /** Command 描述 */
  description?: string;
  /** 提示词模板 */
  template: string;
  /** 指定使用的 Agent */
  agent?: string;
  /** 指定使用的模型 (sonnet/opus/haiku) */
  model?: string;
  /** 是否作为子任务执行 */
  subtask?: boolean;
  /** 来源 */
  source: 'builtin' | 'user' | 'project';
  /** 来源路径 */
  sourcePath?: string;
}

/**
 * Command 执行输入
 */
export interface CommandInput {
  /** Command 名称 */
  command: string;
  /** 原始参数字符串 */
  arguments: string;
  /** 解析后的参数数组 */
  args: string[];
  /** 当前工作目录 */
  workdir: string;
}

/**
 * Command 执行结果
 */
export interface CommandExecutionResult {
  /** 是否成功 */
  success: boolean;
  /** 渲染后的提示 */
  prompt?: string;
  /** 指定的 Agent */
  agent?: string;
  /** 指定的模型 */
  model?: string;
  /** 是否作为子任务 */
  subtask?: boolean;
  /** 错误信息 */
  error?: string;
}

/**
 * Command 搜索结果
 */
export interface CommandSearchResult {
  /** Command */
  command: Command;
  /** 匹配分数 */
  score: number;
}

/**
 * Command Frontmatter（Markdown 头部配置）
 */
export interface CommandFrontmatter {
  description?: string;
  agent?: string;
  model?: string;
  subtask?: boolean;
}
