diff --git a/filemode.js b/filemode.js index 2601cc7..54d155c 100644 --- a/filemode.js +++ b/filemode.js @@ -20,8 +20,13 @@ const { llmChat, jsonError } = require('./assist.js'); const { search, stripHtml } = require('./search.js'); const { fetchIndex, clientIp } = require('./orchestrator.js'); -const MAX_BODY = intEnv('FILE_MAX_BODY', 65536); // макс. размер файла юзера, байт +// Лимит на тело запроса (JSON {content, instruction}). terraform.tfvars — файл +// ПАРАМЕТРОВ: в примерах он ≤ ~2.5 КБ; 8 КБ даёт запас на комментарии. Больше — +// это «запихнул весь проект», такое отклоняем понятным сообщением. +const MAX_BODY = intEnv('FILE_MAX_BODY', 8192); const MAX_TOKENS = intEnv('FILE_MAX_TOKENS', 4096); // бюджет ответа LLM (полный файл) +const TOO_BIG_MSG = 'слишком много данных: это файл параметров (terraform.tfvars), ' + + 'а не весь проект. Лимит ' + MAX_BODY + ' байт.'; function intEnv(name, fallback) { const raw = process.env[name]; @@ -113,14 +118,14 @@ async function handleFile(req, res, config) { // и клиент получает обрыв соединения вместо чистого 413. См. assist.js. const declaredLen = Number.parseInt(req.headers['content-length'], 10); if (Number.isFinite(declaredLen) && declaredLen > MAX_BODY) { - jsonError(res, 413, 413, 'body too large'); + jsonError(res, 413, 413, TOO_BIG_MSG); return; } // 2) Тело с лимитом + разбор {content, instruction}. const read = await readBody(req); if (!read.ok) { - jsonError(res, read.code, read.code, 'body too large'); + jsonError(res, read.code, read.code, read.code === 413 ? TOO_BIG_MSG : 'bad request body'); return; } let parsed;