import type { ToolResult } from '../../types/index.js';
import type { ToolWithMetadata } from '../types.js';
import { todoManager } from './todo-manager.js';

export const todoReadTool: ToolWithMetadata = {
  name: 'todoread',
  description: `读取当前会话的待办事项列表。

使用场景：
- 在对话开始时查看待处理的任务
- 开始新任务前了解当前进度
- 用户询问之前的任务或计划时
- 不确定下一步做什么时
- 完成任务后更新对剩余工作的理解
- 每隔几条消息检查一次以确保进度正常

返回格式：
- 返回 JSON 格式的待办事项列表
- 每个事项包含 id、content（内容）、status（状态）
- 状态：pending（待处理）、in_progress（进行中）、completed（已完成）`,
  metadata: {
    name: 'todoread',
    category: 'core',
    description: '读取待办事项列表',
    keywords: ['todo', 'task', 'list', 'read', '待办', '任务', '列表', '进度'],
    deferLoading: false, // 核心工具，始终加载
  },
  parameters: {},
  execute: async (): Promise<ToolResult> => {
    if (!todoManager.isInitialized()) {
      return {
        success: false,
        output: '',
        error: '会话管理器未初始化，无法读取待办事项',
      };
    }

    const todos = todoManager.getTodos();
    const pendingCount = todos.filter((t) => t.status !== 'completed').length;

    return {
      success: true,
      output: JSON.stringify(todos, null, 2),
      metadata: {
        todos,
        pendingCount,
        totalCount: todos.length,
      },
    };
  },
};
