/**
 * Metona IR — 上下文与记忆类型定义
 *
 * @see docs/MetonaAI-Desktop 内部API请求与响应标准.html
 */

import type { MetonaMessage, MetonaSystemPrompt, MetonaToolDef } from './metona-request';

// ===== 上下文标准 =====

export interface MetonaContext {
  /** 上下文唯一标识 */
  id: string;
  /** 关联的会话 */
  sessionId: string;
  /** System Prompt 分区 */
  systemPrompt: MetonaSystemPrompt;
  /** 会话历史（最近 N 轮） */
  history: MetonaMessage[];
  /** 检索到的相关记忆 */
  relevantMemories: MetonaMemoryItem[];
  /** 当前任务信息 */
  currentTask: {
    userInput: string;
    iteration: number;
    taskGoal?: string;
  };
  /** 可用工具列表 */
  availableTools: MetonaToolDef[];
  /** 预估 Token 数 */
  estimatedTokens: number;
  /** 上下文使用率（estimatedTokens / contextWindow） */
  usageRatio: number;
  /** 是否需要压缩 */
  needsCompression: boolean;
}

// ===== 记忆格式 =====

export interface MetonaMemoryItem {
  id: string;
  type: 'episodic' | 'semantic' | 'working';

  /** 可被 LLM 阅读的记忆内容 */
  content: string;
  /** 精简摘要（上下文紧张时使用） */
  summary?: string;

  /** 来源 */
  source: 'user_input' | 'tool_result' | 'agent_thought' | 'imported';

  /** 重要程度 0-1 */
  importance: number;

  /** 检索相关性分数（仅在检索结果中出现） */
  relevanceScore?: number;

  sessionId?: string;
  createdAt: number;
  expiresAt?: number;
}
