From c3153953badc390d0da7066922cadfc0b7003db7 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Mon, 12 Oct 2026 09:59:45 +0300 Subject: [PATCH] =?UTF-8?q?fix(filemode):=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BB=D0=B0=208=20=D0=9A=D0=91=20(=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B2,=20=D0=B7=D0=B0=D0=BF=D0=B0=D1=81=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D1=8B)=20+=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BD=D1=8F=D1=82=D0=BD=D0=BE=D0=B5=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D0=B2=D1=8B=D1=88=D0=B5=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filemode.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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;