// Все тексты, которые бот показывает пользователю или подставляет в промпт // Claude — в одном месте, чтобы менять формулировки не по всему коду. class Lexicon { static const welcome = 'Привет! Я agent-news. Команда /news <тема> — сделаю ресёрч и пришлю ' 'выжимку с источниками. Без темы — возьму главные новости дня. ' 'Ресёрч ведёт Claude Code, обычно несколько минут — по ходу буду ' 'присылать статусы, что происходит.'; static const alreadyBusy = 'Уже выполняю другой запрос, подожди.'; static String starting(String topic) => '🔎 Начинаю ресёрч по теме «$topic». Пришлю статусы по ходу и выжимку в конце.'; static const timedOut = 'Не успел уложиться по времени, попробуй позже.'; static const failed = 'Не получилось выполнить ресёрч, попробуй позже.'; // Тема по умолчанию для /news без аргумента — просто «главные новости», // без привязки к конкретной сфере: тема запроса задаётся пользователем. static const defaultTopic = 'главные новости дня'; static String researchInstruction(String topic) => 'Проведи ресёрч по теме "$topic" за последние 7 дней. Используй поиск ' 'в интернете. Составь выжимку: 5-8 пунктов, у каждого — суть в 1-2 ' 'предложениях и ссылка на источник.'; static String progressInstruction(int chatId) => 'По ходу работы присылай короткие статусы через инструмент ' 'send_to_telegram (chat_id=$chatId, text="⏳ <что делаешь сейчас>") — ' 'например сразу после того как определишь план поиска, и ещё раз ' 'после того как соберёшь основные источники. Это нужно, чтобы ' 'пользователь видел, что процесс идёт, а не просто ждал молча.'; static String finalDeliveryInstruction(int chatId) => 'В конце ОБЯЗАТЕЛЬНО вызови send_to_telegram ещё раз с параметрами ' 'chat_id=$chatId и text=<готовая выжимка в Markdown, с заголовком>. Это ' 'единственный способ доставить результат — не выводи финальный ответ ' 'никак иначе, только через вызов этого инструмента.'; }