@neetru/cli 2.14.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/commands/build.d.ts +14 -0
  3. package/dist/commands/build.js +26 -2
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/code.d.ts +10 -31
  6. package/dist/commands/code.js +269 -220
  7. package/dist/commands/code.js.map +1 -1
  8. package/dist/commands/servers.js +8 -7
  9. package/dist/commands/servers.js.map +1 -1
  10. package/dist/lib/agent-commands.d.ts +16 -7
  11. package/dist/lib/agent-commands.js +40 -26
  12. package/dist/lib/agent-commands.js.map +1 -1
  13. package/dist/lib/ai/orchestrator.js +1 -42
  14. package/dist/lib/ai/orchestrator.js.map +1 -1
  15. package/dist/lib/code-agent-files.d.ts +48 -0
  16. package/dist/lib/code-agent-files.js +285 -2
  17. package/dist/lib/code-agent-files.js.map +1 -1
  18. package/dist/lib/code-agent-gateway.d.ts +27 -0
  19. package/dist/lib/code-agent-gateway.js +115 -0
  20. package/dist/lib/code-agent-gateway.js.map +1 -0
  21. package/dist/lib/code-agent-protocol.d.ts +8 -0
  22. package/dist/lib/code-agent-protocol.js +22 -0
  23. package/dist/lib/code-agent-protocol.js.map +1 -1
  24. package/dist/lib/code-agent-session.d.ts +78 -0
  25. package/dist/lib/code-agent-session.js +188 -0
  26. package/dist/lib/code-agent-session.js.map +1 -0
  27. package/dist/lib/code-agent-tools.d.ts +17 -0
  28. package/dist/lib/code-agent-tools.js +52 -0
  29. package/dist/lib/code-agent-tools.js.map +1 -0
  30. package/dist/lib/code-agent-types.d.ts +34 -0
  31. package/dist/lib/code-agent-types.js +7 -0
  32. package/dist/lib/code-agent-types.js.map +1 -0
  33. package/dist/lib/code-agent-ui.d.ts +49 -0
  34. package/dist/lib/code-agent-ui.js +313 -0
  35. package/dist/lib/code-agent-ui.js.map +1 -0
  36. package/dist/lib/sse.d.ts +14 -0
  37. package/dist/lib/sse.js +43 -0
  38. package/dist/lib/sse.js.map +1 -0
  39. package/package.json +1 -1
@@ -13,9 +13,32 @@ const DEFAULT_IGNORES = new Set([
13
13
  '.turbo',
14
14
  ]);
15
15
  const MAX_FILE_BYTES = 250_000;
16
- const MAX_FILE_CHARS = 40_000;
16
+ // GAP-M1-14 (2026-07-10): o AI Gateway do Core valida `messages[].content`
17
+ // com `z.string().max(32_768)` (src/lib/schemas/ai-gateway.ts). Um resultado
18
+ // de tool que chega perto desse teto (ex: MAX_FILE_CHARS antigo de 40_000)
19
+ // SEMPRE estoura, porque o resultado ainda ganha um prefixo em
20
+ // commands/code.ts ("Resultado da tool X:\n\n"). Achado ao rodar `neetru
21
+ // code` de verdade contra o repo neetru_core (CLAUDE.md e
22
+ // graphify-out/GRAPH_REPORT.md têm ~40k chars cada) — 4/4 tentativas
23
+ // falhavam com HTTP 400 `messages.N.content: String must contain at most
24
+ // 32768 character(s)`, sempre no mesmo turno. `MAX_GATEWAY_SAFE_CHARS`
25
+ // deixa ~4.7k de margem pro prefixo — mesmo limite usado tanto pra
26
+ // truncar arquivo lido quanto pra clipar saida de tool (run_tests,
27
+ // git_diff, read_many_files). Uma 2ª camada em commands/code.ts trunca a
28
+ // mensagem final como garantia, caso alguma tool futura esqueça de aplicar
29
+ // este limite.
30
+ export const MAX_GATEWAY_SAFE_CHARS = 28_000;
31
+ const MAX_FILE_CHARS = MAX_GATEWAY_SAFE_CHARS;
17
32
  const MAX_LIST_FILES = 300;
18
33
  const MAX_SEARCH_MATCHES = 80;
34
+ const MAX_TOOL_OUTPUT_CHARS = MAX_GATEWAY_SAFE_CHARS;
35
+ // Fase 3 (NEETRU_CODE_ARCHITECTURE.md): limites das ferramentas produtivas.
36
+ const MAX_READ_MANY_FILES = 20;
37
+ const MAX_REGEX_PATTERN_CHARS = 200;
38
+ const MAX_REGEX_LINE_CHARS = 2_000; // pula linhas absurdamente longas (ex: minificado) — reduz risco de ReDoS.
39
+ const MAX_SYMBOL_FILES = 200;
40
+ const MAX_SYMBOLS = 300;
41
+ const RUN_TESTS_TIMEOUT_MS = 120_000;
19
42
  function normalizeForCompare(value) {
20
43
  return process.platform === 'win32' ? value.toLowerCase() : value;
21
44
  }
@@ -57,9 +80,35 @@ function isSecretPath(relativePath) {
57
80
  // Redação defense-in-depth: mesmo em arquivos "normais", uma linha com cara
58
81
  // de segredo hardcoded nao vai pro contexto do gateway em texto claro.
59
82
  const SECRET_LINE_PATTERN = /((?:api[_-]?key|secret|token|password|passwd)\s*[:=]\s*['"]?)([A-Za-z0-9_\-.\/+]{12,})/gi;
60
- function redactSecrets(content) {
83
+ export function redactSecrets(content) {
61
84
  return content.replace(SECRET_LINE_PATTERN, '$1[REDACTED]');
62
85
  }
86
+ function clipToolOutput(label, content, maxChars = MAX_TOOL_OUTPUT_CHARS) {
87
+ if (content.length <= maxChars)
88
+ return content;
89
+ return `${content.slice(0, maxChars)}\n\n[TRUNCADO: ${label} maior que ${maxChars} chars]`;
90
+ }
91
+ /**
92
+ * 2ª camada de segurança (GAP-M1-14) — aplicada em commands/code.ts sobre a
93
+ * mensagem JÁ MONTADA (prefixo "Resultado da tool X:\n\n" + resultado). Os
94
+ * limites individuais acima (MAX_FILE_CHARS/MAX_TOOL_OUTPUT_CHARS) cobrem o
95
+ * caso normal, mas essa é a garantia final: nenhuma mensagem enviada ao AI
96
+ * Gateway pode passar de MAX_GATEWAY_SAFE_CHARS, mesmo que uma tool futura
97
+ * esqueça de aplicar o limite por conta própria.
98
+ */
99
+ export function truncateForGateway(message) {
100
+ if (message.length <= MAX_GATEWAY_SAFE_CHARS)
101
+ return message;
102
+ return `${message.slice(0, MAX_GATEWAY_SAFE_CHARS)}\n\n[TRUNCADO: mensagem maior que ${MAX_GATEWAY_SAFE_CHARS} chars]`;
103
+ }
104
+ function runGit(rootDir, args) {
105
+ const result = spawnSync('git', args, { cwd: rootDir, encoding: 'utf8' });
106
+ return {
107
+ ok: result.status === 0,
108
+ stdout: result.stdout ?? '',
109
+ stderr: result.stderr ?? '',
110
+ };
111
+ }
63
112
  export function readFileContext(rootDir, inputPath) {
64
113
  const fullPath = resolveInside(rootDir, inputPath);
65
114
  const relative = toRelative(rootDir, fullPath);
@@ -141,6 +190,209 @@ export function searchFiles(rootDir, query) {
141
190
  }
142
191
  return matches;
143
192
  }
193
+ export function getGitStatusSummary(rootDir) {
194
+ const branch = runGit(rootDir, ['branch', '--show-current']);
195
+ const status = runGit(rootDir, ['status', '--short']);
196
+ if (!status.ok) {
197
+ return `ERRO: git status falhou: ${(status.stderr || status.stdout || 'repo sem git?').trim()}`;
198
+ }
199
+ const changed = status.stdout.split(/\r?\n/).filter(Boolean);
200
+ return [
201
+ `branch: ${branch.ok && branch.stdout.trim() ? branch.stdout.trim() : '(sem branch)'}`,
202
+ `arquivos alterados: ${changed.length}`,
203
+ changed.length ? changed.join('\n') : '(worktree limpo)',
204
+ ].join('\n');
205
+ }
206
+ export function getGitDiff(rootDir) {
207
+ const diff = runGit(rootDir, ['diff', '--', '.']);
208
+ if (!diff.ok) {
209
+ return `ERRO: git diff falhou: ${(diff.stderr || diff.stdout || 'repo sem git?').trim()}`;
210
+ }
211
+ const redacted = redactSecrets(diff.stdout);
212
+ return clipToolOutput('git diff', redacted || '(sem diff)');
213
+ }
214
+ export function getProjectOverview(rootDir) {
215
+ const files = listFiles(rootDir);
216
+ const rows = [
217
+ `pasta: ${path.resolve(rootDir)}`,
218
+ `arquivos rastreados/listados: ${files.length}`,
219
+ ];
220
+ const packageJson = path.join(path.resolve(rootDir), 'package.json');
221
+ if (fs.existsSync(packageJson)) {
222
+ try {
223
+ const pkg = JSON.parse(fs.readFileSync(packageJson, 'utf8'));
224
+ if (typeof pkg.name === 'string')
225
+ rows.push(`package: ${pkg.name}`);
226
+ if (typeof pkg.version === 'string')
227
+ rows.push(`versao: ${pkg.version}`);
228
+ const scripts = pkg.scripts ? Object.keys(pkg.scripts).slice(0, 12) : [];
229
+ if (scripts.length)
230
+ rows.push(`scripts: ${scripts.join(', ')}`);
231
+ rows.push(`deps: ${pkg.dependencies ? Object.keys(pkg.dependencies).length : 0}`);
232
+ rows.push(`devDeps: ${pkg.devDependencies ? Object.keys(pkg.devDependencies).length : 0}`);
233
+ }
234
+ catch (error) {
235
+ rows.push(`package.json: erro ao ler (${error instanceof Error ? error.message : String(error)})`);
236
+ }
237
+ }
238
+ rows.push('');
239
+ rows.push('arquivos principais:');
240
+ rows.push(...files.slice(0, 80));
241
+ if (files.length > 80)
242
+ rows.push(`... mais ${files.length - 80} arquivo(s)`);
243
+ return rows.join('\n');
244
+ }
245
+ /**
246
+ * Le varios arquivos numa so chamada (Fase 3) — bounded pra nao estourar o
247
+ * contexto do gateway numa unica tool call. Reusa readFileContext (mesma
248
+ * contencao de path/symlink + bloqueio de segredo + truncamento por arquivo).
249
+ * Um path invalido nao aborta os demais — devolve a mensagem de erro inline
250
+ * no lugar do conteudo, como o resto das tools.
251
+ */
252
+ export function readManyFiles(rootDir, paths) {
253
+ const bounded = paths.slice(0, MAX_READ_MANY_FILES);
254
+ const blocks = bounded.map((p) => {
255
+ try {
256
+ return readFileContext(rootDir, p);
257
+ }
258
+ catch (error) {
259
+ return `--- ${p} ---\nERRO: ${error instanceof Error ? error.message : String(error)}`;
260
+ }
261
+ });
262
+ if (paths.length > MAX_READ_MANY_FILES) {
263
+ blocks.push(`[TRUNCADO: pedidos ${paths.length}, lidos ${MAX_READ_MANY_FILES}]`);
264
+ }
265
+ return clipToolOutput('read_many_files', blocks.join('\n\n'));
266
+ }
267
+ /**
268
+ * Busca por regex (Fase 3) — mesma varredura arquivo-a-arquivo de searchFiles,
269
+ * mas casando `pattern` como expressao regular em vez de substring literal.
270
+ *
271
+ * Mitigacao ReDoS (defense-in-depth, nao prova formal): pattern vem do
272
+ * modelo, entao (1) limita tamanho do pattern, (2) testa linha-a-linha (nao
273
+ * o arquivo inteiro) e pula linhas absurdamente longas, (3) constroi UM
274
+ * RegExp por chamada (nao por linha) mas sempre sem estado global preso
275
+ * entre chamadas (`String.prototype.match`, nao `exec` com `g` reaproveitado).
276
+ */
277
+ export function searchFilesRegex(rootDir, pattern, flags = '') {
278
+ if (!pattern)
279
+ return [];
280
+ if (pattern.length > MAX_REGEX_PATTERN_CHARS) {
281
+ throw new Error(`Pattern regex maior que ${MAX_REGEX_PATTERN_CHARS} chars.`);
282
+ }
283
+ const safeFlags = Array.from(new Set(flags.split(''))).filter((f) => 'imsu'.includes(f)).join('');
284
+ let regex;
285
+ try {
286
+ regex = new RegExp(pattern, safeFlags);
287
+ }
288
+ catch (error) {
289
+ throw new Error(`Regex invalida: ${error instanceof Error ? error.message : String(error)}`);
290
+ }
291
+ const matches = [];
292
+ for (const file of listFiles(rootDir)) {
293
+ if (matches.length >= MAX_SEARCH_MATCHES)
294
+ break;
295
+ if (isSecretPath(file))
296
+ continue;
297
+ try {
298
+ const full = resolveInside(rootDir, file);
299
+ const stat = fs.statSync(full);
300
+ if (!stat.isFile() || stat.size > MAX_FILE_BYTES)
301
+ continue;
302
+ const lines = redactSecrets(fs.readFileSync(full, 'utf8')).split(/\r?\n/);
303
+ for (let i = 0; i < lines.length; i++) {
304
+ if (lines[i].length > MAX_REGEX_LINE_CHARS)
305
+ continue;
306
+ if (regex.test(lines[i])) {
307
+ matches.push(`${file}:${i + 1}: ${lines[i].slice(0, 240)}`);
308
+ if (matches.length >= MAX_SEARCH_MATCHES)
309
+ break;
310
+ }
311
+ }
312
+ }
313
+ catch {
314
+ continue;
315
+ }
316
+ }
317
+ return matches;
318
+ }
319
+ /**
320
+ * Roda o script `test` do package.json (Fase 3) — SEM aceitar comando livre
321
+ * do modelo. O modelo so pode disparar exatamente o script ja configurado
322
+ * pelo dev no projeto (allowlist = "so o que ja existe em package.json.scripts
323
+ * .test"); isso fecha a porta pra um "run_tests" virar backdoor de execucao
324
+ * arbitraria de comando via prompt injection.
325
+ */
326
+ export function runProjectTests(rootDir) {
327
+ const pkgPath = path.join(path.resolve(rootDir), 'package.json');
328
+ if (!fs.existsSync(pkgPath)) {
329
+ return 'ERRO: package.json nao encontrado — sem script de teste configurado.';
330
+ }
331
+ let scripts = {};
332
+ try {
333
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
334
+ scripts = pkg.scripts ?? {};
335
+ }
336
+ catch (error) {
337
+ return `ERRO: package.json invalido: ${error instanceof Error ? error.message : String(error)}`;
338
+ }
339
+ if (typeof scripts.test !== 'string' || !scripts.test.trim()) {
340
+ return 'ERRO: package.json nao tem script "test" configurado.';
341
+ }
342
+ const result = spawnSync('npm', ['test', '--silent'], {
343
+ cwd: rootDir,
344
+ encoding: 'utf8',
345
+ timeout: RUN_TESTS_TIMEOUT_MS,
346
+ // Windows resolve `npm` como `npm.cmd` — spawnSync sem shell falha (ENOENT
347
+ // silencioso, status null) sem isso. Mesmo padrao de build.ts/bootstrap.ts.
348
+ shell: process.platform === 'win32',
349
+ });
350
+ const output = [result.stdout, result.stderr].filter(Boolean).join('\n');
351
+ const redacted = redactSecrets(output);
352
+ const status = result.status === 0 ? 'PASSOU' : `FALHOU (exit ${result.status ?? 'timeout'})`;
353
+ return clipToolOutput('run_tests', `status: ${status}\n\n${redacted || '(sem saida)'}`);
354
+ }
355
+ const SYMBOL_PATTERN = /^\s*export\s+(?:default\s+)?(?:async\s+)?(function\*?|class|const|let|interface|type|enum)\s+([A-Za-z_$][\w$]*)/;
356
+ /**
357
+ * Outline leve de simbolos exportados (Fase 3) — sem language server: regex
358
+ * sobre `export function/class/const/interface/type/enum` no topo do
359
+ * arquivo. Suficiente pra IA se orientar sem ler o arquivo inteiro; nao
360
+ * substitui `read_file` quando precisar do corpo real.
361
+ */
362
+ export function projectSymbols(rootDir, targetPath) {
363
+ const files = targetPath ? [targetPath] : listFiles(rootDir).filter((f) => /\.(ts|tsx|js|jsx)$/.test(f));
364
+ const bounded = files.slice(0, MAX_SYMBOL_FILES);
365
+ const rows = [];
366
+ for (const file of bounded) {
367
+ if (rows.length >= MAX_SYMBOLS)
368
+ break;
369
+ if (isSecretPath(file))
370
+ continue;
371
+ try {
372
+ const full = resolveInside(rootDir, file);
373
+ const stat = fs.statSync(full);
374
+ if (!stat.isFile() || stat.size > MAX_FILE_BYTES)
375
+ continue;
376
+ const lines = fs.readFileSync(full, 'utf8').split(/\r?\n/);
377
+ for (let i = 0; i < lines.length; i++) {
378
+ const match = SYMBOL_PATTERN.exec(lines[i]);
379
+ if (match) {
380
+ rows.push(`${file}:${i + 1}: ${match[1]} ${match[2]}`);
381
+ if (rows.length >= MAX_SYMBOLS)
382
+ break;
383
+ }
384
+ }
385
+ }
386
+ catch {
387
+ continue;
388
+ }
389
+ }
390
+ if (rows.length === 0)
391
+ return '(nenhum simbolo exportado encontrado)';
392
+ if (files.length > bounded.length)
393
+ rows.push(`[TRUNCADO: ${files.length} arquivo(s) elegiveis, ${bounded.length} varridos]`);
394
+ return rows.join('\n');
395
+ }
144
396
  export function runCodeTool(rootDir, request) {
145
397
  try {
146
398
  if (request.tool === 'read_file') {
@@ -159,6 +411,37 @@ export function runCodeTool(rootDir, request) {
159
411
  }
160
412
  return searchFiles(rootDir, request.query).join('\n') || '(nenhuma ocorrencia encontrada)';
161
413
  }
414
+ if (request.tool === 'git_status') {
415
+ return getGitStatusSummary(rootDir);
416
+ }
417
+ if (request.tool === 'git_diff') {
418
+ return getGitDiff(rootDir);
419
+ }
420
+ if (request.tool === 'project_overview') {
421
+ return getProjectOverview(rootDir);
422
+ }
423
+ if (request.tool === 'read_many_files') {
424
+ const paths = Array.isArray(request.paths)
425
+ ? request.paths.filter((p) => typeof p === 'string' && !!p.trim())
426
+ : [];
427
+ if (paths.length === 0)
428
+ return 'ERRO: read_many_files exige paths: string[] nao vazio.';
429
+ return readManyFiles(rootDir, paths);
430
+ }
431
+ if (request.tool === 'search_regex') {
432
+ if (typeof request.pattern !== 'string' || !request.pattern) {
433
+ return 'ERRO: search_regex exige pattern string.';
434
+ }
435
+ const flags = typeof request.flags === 'string' ? request.flags : '';
436
+ return searchFilesRegex(rootDir, request.pattern, flags).join('\n') || '(nenhuma ocorrencia encontrada)';
437
+ }
438
+ if (request.tool === 'run_tests') {
439
+ return runProjectTests(rootDir);
440
+ }
441
+ if (request.tool === 'project_symbols') {
442
+ const targetPath = typeof request.path === 'string' && request.path.trim() ? request.path : undefined;
443
+ return projectSymbols(rootDir, targetPath);
444
+ }
162
445
  if (request.tool === 'invalid')
163
446
  return `ERRO: ${request.error ?? 'tool invalida'}`;
164
447
  return `ERRO: tool desconhecida: ${request.tool}`;
@@ -1 +1 @@
1
- {"version":3,"file":"code-agent-files.js","sourceRoot":"","sources":["../../src/lib/code-agent-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-agent-files.js","sourceRoot":"","sources":["../../src/lib/code-agent-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CodeMessage, CodeSettings } from './code-agent-types.js';
2
+ export declare const AI_GATEWAY_CHAT_PATH = "/api/cli/v1/ai/chat";
3
+ export interface GatewayChatResponse {
4
+ choices?: Array<{
5
+ message?: {
6
+ role?: CodeMessage['role'];
7
+ content?: string;
8
+ };
9
+ }>;
10
+ model?: string;
11
+ provider?: string;
12
+ }
13
+ export declare function callGateway(settings: CodeSettings, messages: CodeMessage[]): Promise<string>;
14
+ /**
15
+ * Chamada com streaming (Fase 5, NEETRU_CODE_ARCHITECTURE.md: "streaming de
16
+ * resposta se o AI Gateway suportar"). Mesmo padrão de `streamGateway` em
17
+ * `src/lib/ai/orchestrator.ts` (fetch direto + `readSseLines` compartilhado) —
18
+ * não passa por `apiRequest`/`apiStream` porque nenhum dos dois fala SSE, e
19
+ * não importa o orchestrator inteiro só por essa função (ele carrega
20
+ * @anthropic-ai/sdk + openai, que `neetru code` não precisa).
21
+ *
22
+ * Acumula os deltas e retorna o texto completo — o protocolo
23
+ * `NEETRU_TOOL`/`NEETRU_PATCH` só pode ser parseado sobre a resposta inteira,
24
+ * então `onDelta` serve só para feedback visual (ex: contador de chars
25
+ * recebidos), não para processar a resposta aos poucos.
26
+ */
27
+ export declare function streamGatewayChat(settings: CodeSettings, messages: CodeMessage[], onDelta?: (delta: string, totalChars: number) => void): Promise<string>;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Chamada ao AI Gateway do Core pro `neetru code` — extraído de
3
+ * commands/code.ts (Fase 2, NEETRU_CODE_ARCHITECTURE.md: "separar núcleo de
4
+ * interface"). Sem lógica de UI/REPL — só monta e envia a requisição.
5
+ */
6
+ import { apiRequest, maybeWarnUntrustedHost } from './api-client.js';
7
+ import { getActiveTokenSync } from './token-resolver.js';
8
+ import { config } from './config.js';
9
+ import { readSseLines } from './sse.js';
10
+ export const AI_GATEWAY_CHAT_PATH = '/api/cli/v1/ai/chat';
11
+ export async function callGateway(settings, messages) {
12
+ const response = await apiRequest(AI_GATEWAY_CHAT_PATH, {
13
+ method: 'POST',
14
+ body: {
15
+ model: settings.model,
16
+ messages,
17
+ stream: false,
18
+ maxTokens: settings.maxTokens,
19
+ temperature: settings.temperature,
20
+ },
21
+ timeoutMs: settings.timeoutMs,
22
+ });
23
+ const content = response.choices?.[0]?.message?.content;
24
+ if (typeof content !== 'string') {
25
+ throw new Error('AI Gateway retornou resposta sem choices[0].message.content.');
26
+ }
27
+ return content;
28
+ }
29
+ /**
30
+ * Chamada com streaming (Fase 5, NEETRU_CODE_ARCHITECTURE.md: "streaming de
31
+ * resposta se o AI Gateway suportar"). Mesmo padrão de `streamGateway` em
32
+ * `src/lib/ai/orchestrator.ts` (fetch direto + `readSseLines` compartilhado) —
33
+ * não passa por `apiRequest`/`apiStream` porque nenhum dos dois fala SSE, e
34
+ * não importa o orchestrator inteiro só por essa função (ele carrega
35
+ * @anthropic-ai/sdk + openai, que `neetru code` não precisa).
36
+ *
37
+ * Acumula os deltas e retorna o texto completo — o protocolo
38
+ * `NEETRU_TOOL`/`NEETRU_PATCH` só pode ser parseado sobre a resposta inteira,
39
+ * então `onDelta` serve só para feedback visual (ex: contador de chars
40
+ * recebidos), não para processar a resposta aos poucos.
41
+ */
42
+ export async function streamGatewayChat(settings, messages, onDelta) {
43
+ const token = getActiveTokenSync();
44
+ if (!token) {
45
+ throw new Error('Sessao Neetru ausente ou expirada. Rode `neetru login`.');
46
+ }
47
+ const baseUrl = (config.get('neetruApiUrl') ?? 'https://api.neetru.com').replace(/\/+$/, '');
48
+ maybeWarnUntrustedHost(baseUrl);
49
+ const url = `${baseUrl}${AI_GATEWAY_CHAT_PATH}`;
50
+ const ctrl = new AbortController();
51
+ const timer = setTimeout(() => ctrl.abort(new Error(`neetru code stream timeout (${settings.timeoutMs}ms)`)), settings.timeoutMs);
52
+ try {
53
+ let resp;
54
+ try {
55
+ resp = await fetch(url, {
56
+ method: 'POST',
57
+ headers: {
58
+ 'content-type': 'application/json',
59
+ accept: 'text/event-stream',
60
+ authorization: `Bearer ${token}`,
61
+ },
62
+ body: JSON.stringify({
63
+ model: settings.model,
64
+ messages,
65
+ stream: true,
66
+ maxTokens: settings.maxTokens,
67
+ temperature: settings.temperature,
68
+ }),
69
+ signal: ctrl.signal,
70
+ });
71
+ }
72
+ catch (error) {
73
+ if (ctrl.signal.aborted)
74
+ throw error;
75
+ throw new Error(`Falha ao contactar o AI Gateway (${url}): ${error?.message ?? String(error)}`);
76
+ }
77
+ if (!resp.ok) {
78
+ const bodyText = await resp.text().catch(() => '');
79
+ let detail = bodyText;
80
+ try {
81
+ const parsed = JSON.parse(bodyText);
82
+ if (parsed?.error?.message)
83
+ detail = parsed.error.message;
84
+ }
85
+ catch {
86
+ // corpo nao-JSON — usa o texto cru (truncado abaixo).
87
+ }
88
+ throw new Error(`AI Gateway retornou ${resp.status}: ${detail.slice(0, 300) || 'erro sem detalhe'}`);
89
+ }
90
+ if (!resp.body)
91
+ throw new Error('AI Gateway retornou resposta sem body.');
92
+ let content = '';
93
+ await readSseLines(resp.body, (payload) => {
94
+ if (payload === '[DONE]')
95
+ return;
96
+ let obj;
97
+ try {
98
+ obj = JSON.parse(payload);
99
+ }
100
+ catch {
101
+ return; // linha nao-JSON (keep-alive) — ignora.
102
+ }
103
+ const delta = obj?.choices?.[0]?.delta?.content;
104
+ if (typeof delta === 'string' && delta) {
105
+ content += delta;
106
+ onDelta?.(delta, content.length);
107
+ }
108
+ });
109
+ return content;
110
+ }
111
+ finally {
112
+ clearTimeout(timer);
113
+ }
114
+ }
115
+ //# sourceMappingURL=code-agent-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-agent-gateway.js","sourceRoot":"","sources":["../../src/lib/code-agent-gateway.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  export interface CodeToolRequest {
2
2
  tool: string;
3
3
  path?: unknown;
4
+ paths?: unknown;
4
5
  pattern?: unknown;
6
+ flags?: unknown;
5
7
  query?: unknown;
6
8
  error?: string;
7
9
  }
10
+ export interface PatchFileSummary {
11
+ file: string;
12
+ added: number;
13
+ removed: number;
14
+ }
8
15
  export declare function parseToolRequest(text: string): CodeToolRequest | null;
9
16
  /**
10
17
  * So aceita o bloco explicito `NEETRU_PATCH ... NEETRU_END` do protocolo —
@@ -14,3 +21,4 @@ export declare function parseToolRequest(text: string): CodeToolRequest | null;
14
21
  * review 2026-07-09).
15
22
  */
16
23
  export declare function extractPatch(text: string): string | null;
24
+ export declare function summarizePatch(patch: string): PatchFileSummary[];
@@ -31,4 +31,26 @@ export function extractPatch(text) {
31
31
  const marker = source.match(/NEETRU_PATCH\s*([\s\S]*?)\s*NEETRU_END/);
32
32
  return marker?.[1] ? `${marker[1].trim()}\n` : null;
33
33
  }
34
+ export function summarizePatch(patch) {
35
+ const summaries = new Map();
36
+ let current = null;
37
+ for (const line of patch.split(/\r?\n/)) {
38
+ const match = line.match(/^diff --git a\/(.+?) b\/(.+)$/);
39
+ if (match) {
40
+ const file = match[2] || match[1];
41
+ current = summaries.get(file) ?? { file, added: 0, removed: 0 };
42
+ summaries.set(file, current);
43
+ continue;
44
+ }
45
+ if (!current)
46
+ continue;
47
+ if (line.startsWith('+++') || line.startsWith('---'))
48
+ continue;
49
+ if (line.startsWith('+'))
50
+ current.added += 1;
51
+ if (line.startsWith('-'))
52
+ current.removed += 1;
53
+ }
54
+ return Array.from(summaries.values());
55
+ }
34
56
  //# sourceMappingURL=code-agent-protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-agent-protocol.js","sourceRoot":"","sources":["../../src/lib/code-agent-protocol.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;YAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpG,OAAO,MAAyB,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iCAAiC,GAAG,EAAE,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"code-agent-protocol.js","sourceRoot":"","sources":["../../src/lib/code-agent-protocol.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;YAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpG,OAAO,MAAyB,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iCAAiC,GAAG,EAAE,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IACtD,IAAI,OAAO,GAA4B,IAAI,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1D,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YAChE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC"}