import type { ModelMessage } from 'ai';

/**
 * 待办项状态
 */
export type TodoStatus = 'pending' | 'in_progress' | 'completed';

/**
 * 待办项
 */
export interface Todo {
  id: string;
  content: string;
  status: TodoStatus;
  createdAt: string;
  updatedAt: string;
}

/**
 * 会话元数据（存储格式，不含消息内容）
 */
export interface SessionMetadata {
  /** 会话 ID */
  id: string;
  /** 项目 ID */
  projectId: string;
  /** 父会话 ID（子会话时存在） */
  parentId?: string;
  /** 关联的 Agent 名称（子会话时存在） */
  agentName?: string;
  /** 创建时间 */
  createdAt: string;
  /** 最后更新时间 */
  updatedAt: string;
  /** 工作目录 */
  workdir: string;
  /** 会话标题（可选，从第一条消息生成） */
  title?: string;
  /** 消息数量 */
  messageCount: number;
  /** 已发现的工具 */
  discoveredTools: string[];
  /** 待办事项 */
  todos: Todo[];
}

/**
 * 存储的消息格式
 */
export interface StoredMessage {
  /** 消息序号 (1-based) */
  index: number;
  /** 消息角色 */
  role: 'user' | 'assistant' | 'system' | 'tool';
  /** 消息内容 */
  content: ModelMessage['content'];
  /** 创建时间 */
  createdAt: string;
}

/**
 * 会话数据（运行时格式，包含消息内容）
 */
export interface SessionData extends Omit<SessionMetadata, 'messageCount'> {
  /** 对话历史 */
  messages: ModelMessage[];
}

/**
 * 会话摘要（用于列表展示）
 */
export interface SessionSummary {
  id: string;
  title: string;
  workdir: string;
  messageCount: number;
  createdAt: string;
  updatedAt: string;
}

/**
 * 当前会话指针（存储在 current-session.json）
 */
export interface CurrentSessionPointer {
  sessionId: string;
}

/**
 * 项目元数据
 */
export interface ProjectMetadata {
  /** 项目 ID (Git root commit hash 或路径 hash) */
  id: string;
  /** 工作目录 */
  workdir: string;
  /** 创建时间 */
  createdAt: string;
  /** 是否为 Git 仓库 */
  isGitRepo: boolean;
}

/**
 * 会话管理器配置
 */
export interface SessionManagerConfig {
  /** 存储目录 */
  storageDir: string;
  /** 最大历史会话数量 */
  maxHistorySessions?: number;
}
