@neetru/cli 2.24.1 → 2.25.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 (40) hide show
  1. package/dist/commands/ai.js +8 -8
  2. package/dist/commands/bootstrap.js +18 -1
  3. package/dist/commands/bootstrap.js.map +1 -1
  4. package/dist/commands/dev-up.js +82 -12
  5. package/dist/commands/dev-up.js.map +1 -1
  6. package/dist/commands/doctor.js +10 -4
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/init.js +147 -147
  9. package/dist/index.js +5 -10
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/ai/context.js +91 -91
  12. package/dist/lib/compose-generator.d.ts +36 -0
  13. package/dist/lib/compose-generator.js +148 -0
  14. package/dist/lib/compose-generator.js.map +1 -0
  15. package/dist/lib/config-schema.d.ts +18 -0
  16. package/dist/lib/config-schema.js +4 -0
  17. package/dist/lib/config-schema.js.map +1 -1
  18. package/package.json +1 -1
  19. package/templates/auth/callback.ts +22 -22
  20. package/templates/auth/sign-in.tsx +41 -41
  21. package/templates/billing/checkout.ts +22 -22
  22. package/templates/billing/page.tsx +43 -43
  23. package/templates/dev/Dockerfile.agent +39 -0
  24. package/templates/dev/agent-entrypoint.sh +41 -0
  25. package/templates/dev/docker-compose.dev.yml +63 -0
  26. package/templates/support/ticket-form.tsx +68 -68
  27. package/templates/usage/track.ts +30 -30
  28. package/templates/users/profile.tsx +43 -43
  29. package/dist/commands/fn.d.ts +0 -6
  30. package/dist/commands/fn.js +0 -88
  31. package/dist/commands/fn.js.map +0 -1
  32. package/dist/commands/marketplace.d.ts +0 -36
  33. package/dist/commands/marketplace.js +0 -585
  34. package/dist/commands/marketplace.js.map +0 -1
  35. package/dist/lib/code-agent-neetru-tools.d.ts +0 -15
  36. package/dist/lib/code-agent-neetru-tools.js +0 -571
  37. package/dist/lib/code-agent-neetru-tools.js.map +0 -1
  38. package/dist/lib/code-agent-report.d.ts +0 -22
  39. package/dist/lib/code-agent-report.js +0 -43
  40. package/dist/lib/code-agent-report.js.map +0 -1
@@ -1,571 +0,0 @@
1
- import fs from 'node:fs';
2
- import net from 'node:net';
3
- import path from 'node:path';
4
- import { spawn, spawnSync } from 'node:child_process';
5
- import { fileURLToPath } from 'node:url';
6
- import { resolveDevContext, describeDevContext, loadLocalProductConfig } from './dev-local-context.js';
7
- import { readDbJson } from './db-local/index.js';
8
- const MAX_OUTPUT_CHARS = 28_000;
9
- const MAX_DOC_FILES = 120;
10
- const MAX_DOC_MATCHES = 80;
11
- const DEFAULT_LOG_TAIL_LINES = 160;
12
- const CLI_COMMAND_TIMEOUT_MS = 10 * 60_000;
13
- const DEV_PROCESS_DIR = path.join('.neetru', 'code');
14
- const DEV_PID_FILE = path.join(DEV_PROCESS_DIR, 'dev-up.pid');
15
- const DEV_LOG_FILE = path.join(DEV_PROCESS_DIR, 'dev-up.log');
16
- const CLI_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
17
- function clip(label, content) {
18
- if (content.length <= MAX_OUTPUT_CHARS)
19
- return content;
20
- return `${content.slice(0, MAX_OUTPUT_CHARS)}\n\n[TRUNCADO: ${label} maior que ${MAX_OUTPUT_CHARS} chars]`;
21
- }
22
- function normalizeForCompare(value) {
23
- return process.platform === 'win32' ? value.toLowerCase() : value;
24
- }
25
- function isInside(root, target) {
26
- const rootCmp = normalizeForCompare(path.resolve(root));
27
- const targetCmp = normalizeForCompare(path.resolve(target));
28
- return targetCmp === rootCmp || targetCmp.startsWith(`${rootCmp}${path.sep}`);
29
- }
30
- function rel(rootDir, fullPath) {
31
- return path.relative(rootDir, fullPath).replace(/\\/g, '/');
32
- }
33
- function readJson(filePath) {
34
- try {
35
- return JSON.parse(fs.readFileSync(filePath, 'utf8'));
36
- }
37
- catch {
38
- return null;
39
- }
40
- }
41
- function stringField(value) {
42
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
43
- }
44
- function boolField(value) {
45
- return value === true || value === 'true' || value === '1';
46
- }
47
- function numberField(value) {
48
- if (typeof value === 'number' && Number.isFinite(value))
49
- return value;
50
- if (typeof value === 'string' && value.trim()) {
51
- const n = Number(value);
52
- if (Number.isFinite(n))
53
- return n;
54
- }
55
- return undefined;
56
- }
57
- function redactSecrets(content) {
58
- return content.replace(/((?:api[_-]?key|secret|token|password|passwd)\s*[:=]\s*['"]?)([A-Za-z0-9_\-.\/+]{12,})/gi, '$1[REDACTED]');
59
- }
60
- function cliCommand() {
61
- return process.platform === 'win32' ? 'neetru.cmd' : 'neetru';
62
- }
63
- function runLocalCommand(rootDir, args, label, timeoutMs = CLI_COMMAND_TIMEOUT_MS) {
64
- if (args.some((arg) => /[\r\n]/.test(arg) || arg.length > 500)) {
65
- return `ERRO: argumento invalido para ${label}.`;
66
- }
67
- const command = cliCommand();
68
- const result = spawnSync(command, args, {
69
- cwd: rootDir,
70
- encoding: 'utf8',
71
- timeout: timeoutMs,
72
- maxBuffer: 1024 * 1024,
73
- });
74
- const output = redactSecrets([result.stdout, result.stderr].filter(Boolean).join('\n').trim());
75
- if (result.error) {
76
- return clip(label, `ERRO: ${command} ${args.join(' ')} falhou: ${result.error.message}\n${output}`);
77
- }
78
- const status = result.status === 0 ? 'OK' : `ERRO: exit ${result.status ?? 'timeout'}`;
79
- return clip(label, [`${status}: ${command} ${args.join(' ')}`, output || '(sem saida)'].join('\n\n'));
80
- }
81
- async function confirmMutation(ctx, question) {
82
- return isAutoMode(ctx) || await ctx.confirm(question);
83
- }
84
- function readFirebasePorts(rootDir) {
85
- const firebaseJson = readJson(path.join(rootDir, 'firebase.json'));
86
- return [
87
- { label: 'Firestore', port: firebaseJson?.emulators?.firestore?.port ?? 8080 },
88
- { label: 'Auth', port: firebaseJson?.emulators?.auth?.port ?? 9099 },
89
- { label: 'Functions', port: firebaseJson?.emulators?.functions?.port ?? 5001 },
90
- { label: 'Core', port: 9003 },
91
- ];
92
- }
93
- async function isPortOpen(port) {
94
- return new Promise((resolve) => {
95
- const socket = net.connect({ host: '127.0.0.1', port });
96
- const done = (value) => {
97
- socket.destroy();
98
- resolve(value);
99
- };
100
- socket.setTimeout(500);
101
- socket.once('connect', () => done(true));
102
- socket.once('timeout', () => done(false));
103
- socket.once('error', () => done(false));
104
- });
105
- }
106
- function pidPath(rootDir) {
107
- return path.join(rootDir, DEV_PID_FILE);
108
- }
109
- function logPath(rootDir) {
110
- return path.join(rootDir, DEV_LOG_FILE);
111
- }
112
- function readPid(rootDir) {
113
- try {
114
- const raw = fs.readFileSync(pidPath(rootDir), 'utf8').trim();
115
- const pid = Number(raw);
116
- return Number.isInteger(pid) && pid > 0 ? pid : null;
117
- }
118
- catch {
119
- return null;
120
- }
121
- }
122
- function isPidAlive(pid) {
123
- try {
124
- process.kill(pid, 0);
125
- return true;
126
- }
127
- catch {
128
- return false;
129
- }
130
- }
131
- function isAutoMode(ctx) {
132
- return ctx.settings.yes === true && ctx.settings.objectiveMode === true;
133
- }
134
- export async function neetruDevStatusTool(rootDir) {
135
- const context = resolveDevContext(rootDir);
136
- const local = loadLocalProductConfig(rootDir);
137
- const dbJson = readDbJson(path.join(rootDir, '.neetru/db.json'));
138
- const pkg = readJson(path.join(rootDir, 'package.json'));
139
- const ports = await Promise.all(readFirebasePorts(rootDir).map(async (entry) => ({
140
- ...entry,
141
- open: await isPortOpen(entry.port),
142
- })));
143
- const pid = readPid(rootDir);
144
- const pidLine = pid ? `dev-up pid: ${pid} (${isPidAlive(pid) ? 'ativo' : 'morto'})` : 'dev-up pid: nenhum';
145
- const rows = [
146
- `cwd: ${path.resolve(rootDir)}`,
147
- `contexto: ${describeDevContext(context)}`,
148
- `config: ${local?.slug ?? '(sem neetru.config.json)'}${local?.productId ? ` (${local.productId})` : ''}`,
149
- `bancos dev-local: ${dbJson.databases.length}`,
150
- pidLine,
151
- '',
152
- 'portas:',
153
- ...ports.map((entry) => `- ${entry.label} :${entry.port} ${entry.open ? 'aberta' : 'fechada'}`),
154
- '',
155
- 'scripts package.json:',
156
- ...Object.keys(pkg?.scripts ?? {}).slice(0, 20).map((script) => `- ${script}`),
157
- '',
158
- 'comandos uteis:',
159
- '- neetru dev status',
160
- '- neetru dev sync --write-db',
161
- '- neetru dev up',
162
- '- neetru dev exec "npm run test:integration"',
163
- ];
164
- return clip('neetru_dev_status', rows.join('\n'));
165
- }
166
- export async function neetruDevHealthTool(rootDir) {
167
- const context = resolveDevContext(rootDir);
168
- const local = loadLocalProductConfig(rootDir);
169
- const dbJson = readDbJson(path.join(rootDir, '.neetru/db.json'));
170
- const pkg = readJson(path.join(rootDir, 'package.json'));
171
- const scripts = pkg?.scripts ?? {};
172
- const ports = await Promise.all(readFirebasePorts(rootDir).map(async (entry) => ({
173
- ...entry,
174
- open: await isPortOpen(entry.port),
175
- })));
176
- const checks = [
177
- ['node', ['--version']],
178
- ['npm', ['--version']],
179
- ['git', ['--version']],
180
- [cliCommand(), ['--version']],
181
- ].map(([cmd, args]) => {
182
- const res = spawnSync(cmd, args, { cwd: rootDir, encoding: 'utf8', timeout: 5_000 });
183
- return `${cmd}: ${res.status === 0 ? 'ok' : 'falhou'}${res.stdout ? ` (${res.stdout.trim().split(/\r?\n/)[0]})` : ''}`;
184
- });
185
- const problems = [];
186
- if (!local?.slug && !context?.productSlug && !context?.productId)
187
- problems.push('produto/prototipo nao definido');
188
- if (!scripts.test)
189
- problems.push('package.json sem script test');
190
- if (!scripts.build)
191
- problems.push('package.json sem script build');
192
- if (dbJson.databases.length === 0)
193
- problems.push('.neetru/db.json sem bancos dev-local');
194
- const openEmulators = ports.filter((p) => p.open).map((p) => p.label);
195
- return clip('neetru_dev_health', [
196
- `cwd: ${path.resolve(rootDir)}`,
197
- `contexto: ${describeDevContext(context)}`,
198
- `produto local: ${local?.slug ?? '(sem neetru.config.json)'}`,
199
- '',
200
- 'binarios:',
201
- ...checks.map((line) => `- ${line}`),
202
- '',
203
- 'emuladores:',
204
- ...ports.map((entry) => `- ${entry.label} :${entry.port} ${entry.open ? 'aberto' : 'fechado'}`),
205
- '',
206
- 'scripts esperados:',
207
- `- test: ${scripts.test ? 'ok' : 'ausente'}`,
208
- `- build: ${scripts.build ? 'ok' : 'ausente'}`,
209
- '',
210
- `bancos dev-local: ${dbJson.databases.length}`,
211
- `emuladores abertos: ${openEmulators.length ? openEmulators.join(', ') : 'nenhum'}`,
212
- '',
213
- 'diagnostico:',
214
- ...(problems.length ? problems.map((p) => `- ${p}`) : ['- sem problema obvio no contexto local']),
215
- '',
216
- 'proximas acoes comuns:',
217
- '- neetru_docs_search para consultar docs locais antes de assumir contrato',
218
- '- neetru_dev_start para subir ambiente em auto mode',
219
- '- run_tests depois de mudancas de codigo',
220
- ].join('\n'));
221
- }
222
- export async function neetruDevStartTool(rootDir, request, ctx) {
223
- const pid = readPid(rootDir);
224
- if (pid && isPidAlive(pid)) {
225
- return `OK: ambiente dev-local ja parece estar rodando (pid ${pid}). Log: ${DEV_LOG_FILE}`;
226
- }
227
- const approved = isAutoMode(ctx) || (await ctx.confirm(`Iniciar 'neetru dev up' em background em ${rootDir}? Log: ${DEV_LOG_FILE} [y/N] `));
228
- if (!approved)
229
- return 'ERRO: inicio do dev-local cancelado pelo usuario.';
230
- fs.mkdirSync(path.join(rootDir, DEV_PROCESS_DIR), { recursive: true });
231
- const out = fs.openSync(logPath(rootDir), 'a');
232
- const err = fs.openSync(logPath(rootDir), 'a');
233
- const only = typeof request.only === 'string' && request.only.trim() ? request.only.trim() : undefined;
234
- const args = ['dev', 'up'];
235
- if (only)
236
- args.push('--only', only);
237
- if (request.skip_core === true)
238
- args.push('--skip-core');
239
- const command = process.platform === 'win32' ? 'neetru.cmd' : 'neetru';
240
- const child = spawn(command, args, {
241
- cwd: rootDir,
242
- detached: true,
243
- stdio: ['ignore', out, err],
244
- windowsHide: true,
245
- });
246
- child.unref();
247
- fs.writeFileSync(pidPath(rootDir), String(child.pid ?? ''), 'utf8');
248
- return [
249
- `OK: neetru dev up iniciado em background.`,
250
- `pid: ${child.pid ?? '(desconhecido)'}`,
251
- `log: ${DEV_LOG_FILE}`,
252
- `comando: ${command} ${args.join(' ')}`,
253
- ].join('\n');
254
- }
255
- function resolveLogFile(rootDir, requested) {
256
- const root = path.resolve(rootDir);
257
- const candidate = requested?.trim() ? path.resolve(root, requested.trim()) : logPath(root);
258
- if (!isInside(root, candidate))
259
- return null;
260
- const name = path.basename(candidate).toLowerCase();
261
- if (!name.endsWith('.log') && !name.endsWith('.txt'))
262
- return null;
263
- return candidate;
264
- }
265
- export function neetruDevLogsTool(rootDir, request) {
266
- const file = resolveLogFile(rootDir, stringField(request.path));
267
- if (!file)
268
- return 'ERRO: log fora do cwd ou extensao nao permitida.';
269
- if (!fs.existsSync(file))
270
- return `ERRO: log nao encontrado: ${rel(rootDir, file)}`;
271
- const tail = Math.max(1, Math.min(numberField(request.limit) ?? DEFAULT_LOG_TAIL_LINES, 500));
272
- const lines = redactSecrets(fs.readFileSync(file, 'utf8')).split(/\r?\n/);
273
- while (lines.length > 0 && lines[lines.length - 1] === '')
274
- lines.pop();
275
- const shown = lines.slice(-tail);
276
- return clip('neetru_dev_logs', [
277
- `--- ${rel(rootDir, file)} (ultimas ${shown.length} linha(s) de ${lines.length}) ---`,
278
- ...shown,
279
- ].join('\n'));
280
- }
281
- export async function neetruDevStopTool(rootDir, ctx) {
282
- const pid = readPid(rootDir);
283
- if (!pid)
284
- return 'ERRO: nenhum pid salvo para dev-local.';
285
- const approved = isAutoMode(ctx) || (await ctx.confirm(`Parar ambiente dev-local iniciado pelo neetru code (pid ${pid})? [y/N] `));
286
- if (!approved)
287
- return 'ERRO: parada do dev-local cancelada pelo usuario.';
288
- if (process.platform === 'win32') {
289
- const res = spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], { encoding: 'utf8' });
290
- if (res.status !== 0)
291
- return `ERRO: taskkill falhou: ${(res.stderr || res.stdout || 'sem saida').trim()}`;
292
- }
293
- else {
294
- try {
295
- process.kill(-pid, 'SIGTERM');
296
- }
297
- catch {
298
- process.kill(pid, 'SIGTERM');
299
- }
300
- }
301
- fs.rmSync(pidPath(rootDir), { force: true });
302
- return `OK: dev-local parado (pid ${pid}).`;
303
- }
304
- function docsRoots(rootDir) {
305
- return Array.from(new Set([path.resolve(rootDir), CLI_ROOT]));
306
- }
307
- function isDocFile(filePath) {
308
- const name = path.basename(filePath).toLowerCase();
309
- return (name.endsWith('.md') ||
310
- name.endsWith('.mdx') ||
311
- name === 'readme' ||
312
- name === 'claude.md' ||
313
- name === 'agents.md');
314
- }
315
- function walkDocs(rootDir) {
316
- const out = [];
317
- const ignored = new Set(['.git', 'node_modules', 'dist', '.next', 'coverage']);
318
- function walk(dir) {
319
- if (out.length >= MAX_DOC_FILES)
320
- return;
321
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
322
- if (ignored.has(entry.name))
323
- continue;
324
- const full = path.join(dir, entry.name);
325
- if (entry.isDirectory()) {
326
- if (entry.name === 'docs' || entry.name === '.neetru' || dir === rootDir)
327
- walk(full);
328
- }
329
- else if (entry.isFile() && isDocFile(full)) {
330
- out.push(full);
331
- }
332
- if (out.length >= MAX_DOC_FILES)
333
- return;
334
- }
335
- }
336
- if (fs.existsSync(rootDir))
337
- walk(rootDir);
338
- return out;
339
- }
340
- export function neetruDocsIndexTool(rootDir) {
341
- const rows = [];
342
- for (const root of docsRoots(rootDir)) {
343
- rows.push(`# ${root === path.resolve(rootDir) ? 'projeto' : 'neetru_cli'}: ${root}`);
344
- for (const file of walkDocs(root)) {
345
- try {
346
- const content = fs.readFileSync(file, 'utf8');
347
- const heading = content.split(/\r?\n/).find((line) => /^#{1,3}\s+\S/.test(line))?.replace(/^#+\s+/, '');
348
- rows.push(`- ${rel(root, file)}${heading ? ` :: ${heading.slice(0, 100)}` : ''}`);
349
- }
350
- catch {
351
- rows.push(`- ${rel(root, file)}`);
352
- }
353
- }
354
- rows.push('');
355
- }
356
- return clip('neetru_docs_index', rows.join('\n').trim() || '(nenhum doc local encontrado)');
357
- }
358
- export function neetruDocsSearchTool(rootDir, query) {
359
- const needle = query.trim().toLowerCase();
360
- if (!needle)
361
- return 'ERRO: neetru_docs_search exige query string.';
362
- const matches = [];
363
- for (const root of docsRoots(rootDir)) {
364
- for (const file of walkDocs(root)) {
365
- if (matches.length >= MAX_DOC_MATCHES)
366
- break;
367
- try {
368
- const lines = fs.readFileSync(file, 'utf8').split(/\r?\n/);
369
- for (let i = 0; i < lines.length; i++) {
370
- if (lines[i].toLowerCase().includes(needle)) {
371
- matches.push(`${rel(root, file)}:${i + 1}: ${lines[i].slice(0, 220)}`);
372
- if (matches.length >= MAX_DOC_MATCHES)
373
- break;
374
- }
375
- }
376
- }
377
- catch {
378
- continue;
379
- }
380
- }
381
- }
382
- return matches.length ? clip('neetru_docs_search', matches.join('\n')) : '(nenhuma ocorrencia em docs locais)';
383
- }
384
- export function neetruDocsReadTool(rootDir, inputPath) {
385
- const requested = inputPath.trim();
386
- if (!requested)
387
- return 'ERRO: neetru_docs_read exige path.';
388
- for (const root of docsRoots(rootDir)) {
389
- const full = path.resolve(root, requested);
390
- if (!isInside(root, full) || !fs.existsSync(full) || !fs.statSync(full).isFile() || !isDocFile(full)) {
391
- continue;
392
- }
393
- return clip('neetru_docs_read', `--- ${rel(root, full)} ---\n${fs.readFileSync(full, 'utf8')}`);
394
- }
395
- return `ERRO: doc nao encontrado ou nao permitido: ${requested}`;
396
- }
397
- export function neetruProductStatusTool(rootDir) {
398
- const context = resolveDevContext(rootDir);
399
- const local = loadLocalProductConfig(rootDir);
400
- const dbJson = readDbJson(path.join(rootDir, '.neetru/db.json'));
401
- const manifest = readJson(path.join(rootDir, '.neetru-build', 'manifest.json'));
402
- const rows = [
403
- `cwd: ${path.resolve(rootDir)}`,
404
- `contexto: ${describeDevContext(context)}`,
405
- `slug local: ${local?.slug ?? context?.productSlug ?? '(indefinido)'}`,
406
- `productId: ${context?.productId ?? local?.productId ?? '(indefinido)'}`,
407
- `workspaceId: ${context?.workspaceId ?? local?.tenantId ?? '(indefinido)'}`,
408
- `environmentId: ${context?.environmentId ?? '(indefinido)'}`,
409
- `runtime: ${local?.runtime ?? '(indefinido)'}`,
410
- `bancos dev-local: ${dbJson.databases.length}`,
411
- '',
412
- 'ultimo build local:',
413
- manifest
414
- ? `- ${String(manifest.slug ?? '?')} ${String(manifest.version ?? '?')} ${String(manifest.stack ?? '?')} ${String(manifest.tarball ?? '?')}`
415
- : '- nenhum manifest em .neetru-build/manifest.json',
416
- '',
417
- 'comandos uteis:',
418
- '- neetru dev use --product <slug> --sync --write-db',
419
- '- neetru products create --name <nome> --slug <slug> --yes',
420
- '- neetru build --product <slug>',
421
- '- neetru deploy --product <slug> --target workspace --env prod --non-interactive',
422
- ];
423
- return clip('neetru_product_status', rows.join('\n'));
424
- }
425
- export async function neetruProductSelectTool(rootDir, request, ctx) {
426
- const args = ['dev', 'use'];
427
- const prototype = stringField(request.prototype);
428
- const product = stringField(request.product);
429
- const productId = stringField(request.product_id) ?? stringField(request.productId);
430
- if (prototype)
431
- args.push('--prototype', prototype);
432
- if (product)
433
- args.push('--product', product);
434
- if (productId)
435
- args.push('--product-id', productId);
436
- const workspace = stringField(request.workspace);
437
- const env = stringField(request.env);
438
- const corePath = stringField(request.core_path) ?? stringField(request.corePath);
439
- const only = stringField(request.only);
440
- if (workspace)
441
- args.push('--workspace', workspace);
442
- if (env)
443
- args.push('--env', env);
444
- if (corePath)
445
- args.push('--core-path', corePath);
446
- if (only)
447
- args.push('--only', only);
448
- if (boolField(request.sync))
449
- args.push('--sync');
450
- if (boolField(request.write_db) || boolField(request.writeDb))
451
- args.push('--write-db');
452
- args.push('--json');
453
- if (!prototype && !product && !productId) {
454
- return 'ERRO: neetru_product_select exige prototype, product ou product_id.';
455
- }
456
- const approved = await confirmMutation(ctx, `Selecionar contexto de produto com '${cliCommand()} ${args.join(' ')}'? [y/N] `);
457
- if (!approved)
458
- return 'ERRO: selecao de produto cancelada pelo usuario.';
459
- return runLocalCommand(rootDir, args, 'neetru_product_select');
460
- }
461
- export async function neetruProductSyncTool(rootDir, request, ctx) {
462
- const args = ['dev', 'sync'];
463
- const product = stringField(request.product);
464
- const productId = stringField(request.product_id) ?? stringField(request.productId);
465
- const env = stringField(request.env);
466
- if (product)
467
- args.push('--product', product);
468
- if (productId)
469
- args.push('--product-id', productId);
470
- if (env)
471
- args.push('--env', env);
472
- if (boolField(request.write_db) || boolField(request.writeDb))
473
- args.push('--write-db');
474
- args.push('--json');
475
- const approved = await confirmMutation(ctx, `Sincronizar contexto dev-local com '${cliCommand()} ${args.join(' ')}'? [y/N] `);
476
- if (!approved)
477
- return 'ERRO: sync de produto cancelado pelo usuario.';
478
- return runLocalCommand(rootDir, args, 'neetru_product_sync');
479
- }
480
- export async function neetruProductCreateTool(rootDir, request, ctx) {
481
- const name = stringField(request.name);
482
- if (!name)
483
- return 'ERRO: neetru_product_create exige name string.';
484
- const args = ['products', 'create', '--name', name, '--yes', '--json'];
485
- const slug = stringField(request.slug);
486
- const description = stringField(request.description);
487
- const ownerTeam = stringField(request.owner_team) ?? stringField(request.ownerTeam);
488
- const planTemplate = stringField(request.plan_template) ?? stringField(request.planTemplate);
489
- const env = stringField(request.env);
490
- if (slug)
491
- args.push('--slug', slug);
492
- if (description)
493
- args.push('--description', description);
494
- if (ownerTeam)
495
- args.push('--owner-team', ownerTeam);
496
- if (planTemplate)
497
- args.push('--plan-template', planTemplate);
498
- if (env)
499
- args.push('--env', env);
500
- const approved = await confirmMutation(ctx, `Criar produto no Core com '${cliCommand()} ${args.join(' ')}'? [y/N] `);
501
- if (!approved)
502
- return 'ERRO: criacao de produto cancelada pelo usuario.';
503
- return runLocalCommand(rootDir, args, 'neetru_product_create');
504
- }
505
- export async function neetruProductDeployTool(rootDir, request, ctx) {
506
- const phase = (stringField(request.phase) ?? stringField(request.action) ?? 'build').toLowerCase();
507
- const product = stringField(request.product);
508
- const args = [];
509
- if (phase === 'build') {
510
- args.push('build');
511
- if (product)
512
- args.push('--product', product);
513
- const stack = stringField(request.stack);
514
- const version = stringField(request.version);
515
- const envFile = stringField(request.env_file) ?? stringField(request.envFile);
516
- if (stack)
517
- args.push('--stack', stack);
518
- if (version)
519
- args.push('--version', version);
520
- if (envFile)
521
- args.push('--env-file', envFile);
522
- if (boolField(request.no_install) || boolField(request.noInstall))
523
- args.push('--no-install');
524
- }
525
- else if (phase === 'deploy') {
526
- args.push('deploy', '--non-interactive');
527
- if (product)
528
- args.push('--product', product);
529
- const version = stringField(request.version);
530
- const stack = stringField(request.stack);
531
- const target = stringField(request.target);
532
- const server = stringField(request.server);
533
- const domain = stringField(request.domain);
534
- const artifact = stringField(request.artifact);
535
- const env = stringField(request.env);
536
- const port = numberField(request.port);
537
- if (version)
538
- args.push('--version', version);
539
- if (stack)
540
- args.push('--stack', stack);
541
- if (target)
542
- args.push('--target', target);
543
- if (server)
544
- args.push('--server', server);
545
- if (domain)
546
- args.push('--domain', domain);
547
- if (port)
548
- args.push('--port', String(port));
549
- if (artifact)
550
- args.push('--artifact', artifact);
551
- if (env)
552
- args.push('--env', env);
553
- if (boolField(request.force))
554
- args.push('--force');
555
- }
556
- else if (phase === 'publish') {
557
- args.push('publish');
558
- if (product)
559
- args.push('--slug', product);
560
- if (boolField(request.draft))
561
- args.push('--draft');
562
- }
563
- else {
564
- return 'ERRO: neetru_product_deploy phase deve ser build, deploy ou publish.';
565
- }
566
- const approved = await confirmMutation(ctx, `Executar '${cliCommand()} ${args.join(' ')}'? [y/N] `);
567
- if (!approved)
568
- return 'ERRO: operacao de produto/deploy cancelada pelo usuario.';
569
- return runLocalCommand(rootDir, args, 'neetru_product_deploy');
570
- }
571
- //# sourceMappingURL=code-agent-neetru-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-agent-neetru-tools.js","sourceRoot":"","sources":["../../src/lib/code-agent-neetru-tools.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Relatorio final estruturado do `neetru code` (GAP-CODEX-3, 2026-07-13).
3
- *
4
- * Antes, o fim de uma sessao so imprimia o texto cru da ultima resposta do
5
- * modelo (ou o erro) — nenhuma agregacao de turnos usados/tools chamadas/
6
- * arquivos tocados/patches aplicados-vs-falhos. `runAgentTask` acumula este
7
- * relatorio nos MESMOS pontos que ja existem no loop (nenhum novo call site
8
- * de logica de negocio) e imprime um resumo num `finally`, cobrindo TODOS os
9
- * caminhos de saida (text/patch/applied/aborted/budget_exceeded/excecao).
10
- */
11
- export interface SessionReport {
12
- toolCallCounts: Record<string, number>;
13
- filesTouched: Set<string>;
14
- patchesApplied: number;
15
- patchesFailed: number;
16
- patchesProposedNotApplied: number;
17
- }
18
- export declare function createSessionReport(): SessionReport;
19
- export declare function recordToolCall(report: SessionReport, toolName: string): void;
20
- export declare function recordFileTouched(report: SessionReport, file: string | undefined | null): void;
21
- /** Formata o resumo pra exibicao via `emit`/`printEvent` — uma linha, denso. */
22
- export declare function formatSessionReportDetail(report: SessionReport, turnsUsed: number): string;