package tools import "strconv" // util.go — небольшие помощники MCP-слоя. // truncateText ограничивает длинный вывод (задачи, compose, env), чтобы он не // съел контекст модели. По умолчанию оставляем хвост: ошибки сборки/деплоя // обычно в конце вывода. Второй результат — был ли вывод обрезан. func truncateText(s string, maxBytes int, tail bool) (string, bool) { if maxBytes <= 0 || len(s) <= maxBytes { return s, false } cut := len(s) - maxBytes if tail { return "…(обрезано " + strconv.Itoa(cut) + " байт, показан хвост)\n" + s[len(s)-maxBytes:], true } return s[:maxBytes] + "\n…(обрезано " + strconv.Itoa(cut) + " байт, показано начало)", true }