"""MCP Prompts — workflow templates for common Cerebro operations."""


def register_prompts(mcp):

    @mcp.prompt()
    def review_task(task_id: str) -> list:
        """Проанализировать задачу: статус, сообщения, прогресс, предложить действия."""
        return [
            {
                "role": "user",
                "content": (
                    f"Проанализируй задачу Cerebro с ID {task_id}.\n\n"
                    "1. Получи полную информацию о задаче через get_task()\n"
                    "2. Получи все сообщения через get_task_messages()\n"
                    "3. Получи вложения через get_task_attachments()\n"
                    "4. Получи допустимые статусы через get_possible_statuses()\n\n"
                    "На основе анализа:\n"
                    "- Опиши текущий статус и прогресс\n"
                    "- Перечисли последние активности (отчёты, рецензии)\n"
                    "- Укажи, кто назначен и сколько времени потрачено\n"
                    "- Предложи следующие шаги (изменить статус, оставить рецензию и т.д.)"
                ),
            }
        ]

    @mcp.prompt()
    def daily_report(project_id: str) -> list:
        """Составить дневной отчёт по проекту: что сделано, что в работе."""
        return [
            {
                "role": "user",
                "content": (
                    f"Составь дневной отчёт по проекту Cerebro с ID {project_id}.\n\n"
                    "1. Получи дерево задач проекта через get_task_children()\n"
                    "2. Для каждой подзадачи получи сообщения\n"
                    "3. Найди отчёты (type=2) за последние сутки\n\n"
                    "Сформируй отчёт:\n"
                    "- Что было сделано (завершённые задачи, новые отчёты)\n"
                    "- Что в работе (задачи в прогрессе)\n"
                    "- Что блокировано или требует внимания\n"
                    "- Общая статистика по часам"
                ),
            }
        ]

    @mcp.prompt()
    def find_publishes(project_id: str, keyword: str = "") -> list:
        """Найти паблиши в проекте, опционально по ключевому слову."""
        keyword_part = f" по ключевому слову '{keyword}'" if keyword else ""
        text_param = f', text_contains="{keyword}"' if keyword else ""
        return [
            {
                "role": "user",
                "content": (
                    f"Найди все паблиши в проекте Cerebro с ID {project_id}{keyword_part}.\n\n"
                    f"Используй search_messages_in_project(project_id={project_id}, "
                    f"message_types=[2]{text_param})\n\n"
                    "Для каждого найденного паблиша покажи:\n"
                    "- Имя задачи и путь\n"
                    "- Автор и дата\n"
                    "- Текст отчёта\n"
                    "- Есть ли видео-превью\n"
                    "- Потраченное время"
                ),
            }
        ]
