viberadar 0.3.3 → 0.3.5

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.
@@ -40,17 +40,191 @@ exports.startServer = startServer;
40
40
  const http = __importStar(require("http"));
41
41
  const fs = __importStar(require("fs"));
42
42
  const path = __importStar(require("path"));
43
+ const child_process_1 = require("child_process");
44
+ const readline = __importStar(require("readline"));
43
45
  const chokidar_1 = __importDefault(require("chokidar"));
44
46
  const scanner_1 = require("../scanner");
45
47
  const DASHBOARD_HTML = fs.readFileSync(path.join(__dirname, '../ui/dashboard.html'), 'utf-8');
48
+ // ─── Agent CLI commands ───────────────────────────────────────────────────────
49
+ const WIN = process.platform === 'win32';
50
+ /**
51
+ * Build shell command that pipes task file into the agent CLI.
52
+ * --output-format stream-json gives real-time events (tool calls, writes, etc.)
53
+ * File piping avoids TUI mode in Claude Code v2+.
54
+ */
55
+ function buildAgentShellCmd(agent, taskFile) {
56
+ const escaped = taskFile.replace(/\\/g, '\\\\');
57
+ if (WIN) {
58
+ if (agent === 'claude')
59
+ return `type "${escaped}" | claude.cmd --print --output-format stream-json`;
60
+ if (agent === 'codex')
61
+ return `type "${escaped}" | codex.cmd`;
62
+ }
63
+ else {
64
+ if (agent === 'claude')
65
+ return `claude --print --output-format stream-json < "${escaped}"`;
66
+ if (agent === 'codex')
67
+ return `codex < "${escaped}"`;
68
+ }
69
+ return `claude --print --output-format stream-json < "${escaped}"`;
70
+ }
71
+ /** Parse a Claude Code stream-json event into a human-readable line, or null to skip */
72
+ function parseClaudeEvent(raw) {
73
+ let event;
74
+ try {
75
+ event = JSON.parse(raw);
76
+ }
77
+ catch {
78
+ return raw.trim() || null;
79
+ }
80
+ switch (event.type) {
81
+ case 'assistant': {
82
+ const blocks = event.message?.content ?? [];
83
+ const parts = [];
84
+ for (const b of blocks) {
85
+ if (b.type === 'text' && b.text?.trim()) {
86
+ // Show first non-empty line of assistant reasoning
87
+ const line = b.text.trim().split('\n').find((l) => l.trim());
88
+ if (line)
89
+ parts.push(line.length > 120 ? line.slice(0, 120) + '…' : line);
90
+ }
91
+ if (b.type === 'tool_use')
92
+ parts.push(fmtTool(b.name, b.input));
93
+ }
94
+ return parts.join('\n') || null;
95
+ }
96
+ case 'tool_use':
97
+ return fmtTool(event.name, event.input);
98
+ case 'result':
99
+ if (event.subtype === 'success' && event.result) {
100
+ // Return full result text (multiline), caller splits it
101
+ return '§RESULT§' + event.result.trim();
102
+ }
103
+ if (event.subtype === 'error_during_execution')
104
+ return '❌ ' + (event.error ?? 'error');
105
+ return null;
106
+ case 'system':
107
+ case 'tool_result':
108
+ return null; // skip noise
109
+ default:
110
+ return null;
111
+ }
112
+ }
113
+ function fmtTool(name, input = {}) {
114
+ const fp = input.file_path || input.path || input.notebook_path || '';
115
+ switch (name) {
116
+ case 'Write': return `✏️ Пишу: ${fp}`;
117
+ case 'Edit': return `✏️ Правлю: ${fp}`;
118
+ case 'Read': return `📖 Читаю: ${fp}`;
119
+ case 'Bash': return `⚡ $ ${(input.command ?? '').slice(0, 100)}`;
120
+ case 'Glob': return `🔍 Glob: ${input.pattern ?? ''}`;
121
+ case 'Grep': return `🔍 Grep: ${input.pattern ?? ''}`;
122
+ case 'NotebookEdit': return `✏️ Notebook: ${fp}`;
123
+ default: return `🔧 ${name}${fp ? ': ' + fp : ''}`;
124
+ }
125
+ }
126
+ // ─── Test runner after agent ──────────────────────────────────────────────────
127
+ const TEST_FILE_RE = /\.(test|spec)\.(ts|tsx|js|jsx)$/;
128
+ function runTestFiles(files, projectRoot) {
129
+ return new Promise((resolve) => {
130
+ const proc = (0, child_process_1.spawn)('npx', ['vitest', 'run', '--reporter=json', ...files], { cwd: projectRoot, shell: true, stdio: 'pipe' });
131
+ let stdout = '';
132
+ proc.stdout?.on('data', (d) => stdout += d.toString());
133
+ proc.on('close', () => {
134
+ try {
135
+ // vitest --reporter=json wraps output; find the JSON object
136
+ const match = stdout.match(/\{[\s\S]*"testResults"[\s\S]*\}/);
137
+ const json = JSON.parse(match ? match[0] : stdout);
138
+ resolve({
139
+ passed: json.numPassedTests ?? 0,
140
+ failed: json.numFailedTests ?? 0,
141
+ files,
142
+ });
143
+ }
144
+ catch {
145
+ resolve({ passed: 0, failed: 0, files });
146
+ }
147
+ });
148
+ proc.on('error', () => resolve({ passed: 0, failed: 0, files }));
149
+ });
150
+ }
151
+ // ─── Prompt builders ──────────────────────────────────────────────────────────
152
+ function buildWriteTestsPrompt(feat, modules, testRunner) {
153
+ const untested = modules
154
+ .filter(m => m.featureKeys.includes(feat.key) && m.type !== 'test' && !m.hasTests && !m.isInfra)
155
+ .map(m => '- ' + m.relativePath.replace(/\\/g, '/'));
156
+ const existing = modules
157
+ .filter(m => m.featureKeys.includes(feat.key) && m.type === 'test')
158
+ .map(m => '- ' + m.relativePath.replace(/\\/g, '/'));
159
+ return [
160
+ `Напиши тесты для фичи "${feat.label}".`,
161
+ ``,
162
+ `Файлов без тестов (${untested.length}):`,
163
+ ...untested,
164
+ ``,
165
+ existing.length > 0
166
+ ? `Существующие тест-файлы (для справки по паттернам):\n${existing.join('\n')}`
167
+ : '',
168
+ ``,
169
+ `Требования:`,
170
+ `- Используй ${testRunner}`,
171
+ `- Следуй паттернам существующих тестов в проекте`,
172
+ `- Для каждого файла создай соответствующий тест-файл`,
173
+ `- Не изменяй существующие тесты`,
174
+ ].filter(l => l !== null).join('\n');
175
+ }
176
+ function buildMapUnmappedPrompt(modules, features) {
177
+ const unmapped = modules
178
+ .filter(m => m.type !== 'test' && !m.isInfra && (!m.featureKeys || m.featureKeys.length === 0))
179
+ .map(m => '- ' + m.relativePath.replace(/\\/g, '/'));
180
+ const featureList = features.map(f => ` • ${f.key} — ${f.label}`).join('\n');
181
+ return [
182
+ `В проекте ${unmapped.length} файлов без привязки к фичам.`,
183
+ ``,
184
+ `Для каждого файла реши:`,
185
+ `1. Относится к существующей фиче → добавь путь в "include" этой фичи в viberadar.config.json`,
186
+ `2. Это инфраструктура (конфиги, типы, middleware, bootstrap) → добавь glob в массив "ignore"`,
187
+ `3. Явно новая бизнес-фича → создай новую запись в "features"`,
188
+ `4. Непонятно → пропусти`,
189
+ ``,
190
+ `Существующие фичи:`,
191
+ featureList,
192
+ ``,
193
+ `Файлы:`,
194
+ ...unmapped,
195
+ ].join('\n');
196
+ }
197
+ // ─── Coverage command detection ───────────────────────────────────────────────
198
+ function detectCoverageCommand(projectRoot) {
199
+ try {
200
+ const pkgPath = path.join(projectRoot, 'package.json');
201
+ if (fs.existsSync(pkgPath)) {
202
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
203
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
204
+ const scripts = pkg.scripts || {};
205
+ if (deps['vitest'] || scripts['test']?.includes('vitest')) {
206
+ return { cmd: 'npx', args: ['vitest', 'run', '--coverage'] };
207
+ }
208
+ if (deps['jest'] || scripts['test']?.includes('jest')) {
209
+ return { cmd: 'npx', args: ['jest', '--coverage', '--coverageReporters=json-summary'] };
210
+ }
211
+ }
212
+ }
213
+ catch { }
214
+ return { cmd: 'npm', args: ['test', '--', '--coverage'] };
215
+ }
216
+ // ─── Main server ──────────────────────────────────────────────────────────────
46
217
  function startServer({ data: initialData, port, projectRoot }) {
47
218
  return new Promise((resolve, reject) => {
48
- // ── Mutable data reference ──────────────────────────────────────────────────
49
219
  let currentData = initialData;
50
- // ── SSE clients ─────────────────────────────────────────────────────────────
220
+ // ── State ──────────────────────────────────────────────────────────────────
221
+ let coverageRunning = false;
222
+ let coverageError = false;
223
+ let agentRunning = false;
224
+ // ── SSE clients ────────────────────────────────────────────────────────────
51
225
  const sseClients = new Set();
52
- function broadcast(event) {
53
- const msg = `event: ${event}\ndata: {}\n\n`;
226
+ function broadcast(event, payload = {}) {
227
+ const msg = `event: ${event}\ndata: ${JSON.stringify(payload)}\n\n`;
54
228
  for (const client of sseClients) {
55
229
  try {
56
230
  client.write(msg);
@@ -60,7 +234,7 @@ function startServer({ data: initialData, port, projectRoot }) {
60
234
  }
61
235
  }
62
236
  }
63
- // ── File watcher + re-scan ──────────────────────────────────────────────────
237
+ // ── File watcher + re-scan ─────────────────────────────────────────────────
64
238
  let scanDebounce = null;
65
239
  async function scheduleRescan(changedFile) {
66
240
  if (scanDebounce)
@@ -82,6 +256,182 @@ function startServer({ data: initialData, port, projectRoot }) {
82
256
  }
83
257
  }, 600);
84
258
  }
259
+ // ── Coverage runner ────────────────────────────────────────────────────────
260
+ function triggerCoverage() {
261
+ if (coverageRunning) {
262
+ process.stdout.write(' ⏳ Coverage already running, skipping\n');
263
+ return;
264
+ }
265
+ coverageRunning = true;
266
+ coverageError = false;
267
+ broadcast('coverage-started');
268
+ const { cmd, args } = detectCoverageCommand(projectRoot);
269
+ process.stdout.write(` 🧪 Running coverage: ${cmd} ${args.join(' ')}\n`);
270
+ const proc = (0, child_process_1.spawn)(cmd, args, { cwd: projectRoot, shell: true, stdio: 'pipe' });
271
+ let coverageStderr = '';
272
+ proc.stderr?.on('data', (d) => { coverageStderr += d.toString(); });
273
+ proc.on('close', async (code) => {
274
+ coverageRunning = false;
275
+ if (code === 0) {
276
+ process.stdout.write(' ✅ Coverage done, rescanning...\n');
277
+ try {
278
+ currentData = await (0, scanner_1.scanProject)(projectRoot);
279
+ broadcast('data-updated');
280
+ broadcast('coverage-done');
281
+ }
282
+ catch (err) {
283
+ process.stdout.write(' ❌ Rescan after coverage failed: ' + err.message + '\n');
284
+ broadcast('coverage-error');
285
+ }
286
+ }
287
+ else {
288
+ coverageError = true;
289
+ // Check for missing coverage provider
290
+ if (coverageStderr.includes('@vitest/coverage') || coverageStderr.includes('coverage provider')) {
291
+ process.stdout.write(' ❌ Coverage: missing package. Run: npm i -D @vitest/coverage-v8\n');
292
+ }
293
+ else {
294
+ process.stdout.write(` ❌ Coverage failed (exit code ${code})\n`);
295
+ }
296
+ broadcast('coverage-error');
297
+ }
298
+ });
299
+ proc.on('error', (err) => {
300
+ coverageRunning = false;
301
+ coverageError = true;
302
+ process.stdout.write(' ❌ Coverage spawn error: ' + err.message + '\n');
303
+ broadcast('coverage-error');
304
+ });
305
+ }
306
+ // ── Agent runner ───────────────────────────────────────────────────────────
307
+ function runAgent(task, featureKey) {
308
+ if (agentRunning) {
309
+ process.stdout.write(' ⏳ Agent already running\n');
310
+ return;
311
+ }
312
+ const agent = currentData.agent;
313
+ if (!agent) {
314
+ broadcast('agent-error', { message: 'Агент не выбран. Укажи agent в viberadar.config.json' });
315
+ return;
316
+ }
317
+ // Build prompt
318
+ let prompt;
319
+ let title;
320
+ if (task === 'write-tests') {
321
+ const feat = currentData.features?.find(f => f.key === featureKey);
322
+ if (!feat) {
323
+ broadcast('agent-error', { message: `Фича не найдена: ${featureKey}` });
324
+ return;
325
+ }
326
+ prompt = buildWriteTestsPrompt(feat, currentData.modules, currentData.testRunner || 'vitest');
327
+ title = `${agent === 'claude' ? 'Claude Code' : 'Codex'} — тесты для "${feat.label}"`;
328
+ }
329
+ else {
330
+ prompt = buildMapUnmappedPrompt(currentData.modules, currentData.features || []);
331
+ title = `${agent === 'claude' ? 'Claude Code' : 'Codex'} — разобрать unmapped`;
332
+ }
333
+ agentRunning = true;
334
+ broadcast('agent-started', { title, task, featureKey });
335
+ process.stdout.write(` 🤖 Running agent (${agent}): ${task}\n`);
336
+ // Write prompt to .viberadar/task.md for reference
337
+ const taskDir = path.join(projectRoot, '.viberadar');
338
+ const taskFile = path.join(taskDir, 'task.md');
339
+ try {
340
+ fs.mkdirSync(taskDir, { recursive: true });
341
+ fs.writeFileSync(taskFile, prompt, 'utf-8');
342
+ }
343
+ catch { }
344
+ // Spawn via shell, piping prompt from file (avoids TUI mode, supports stream-json)
345
+ const shellCmd = buildAgentShellCmd(agent, taskFile);
346
+ const proc = (0, child_process_1.spawn)(shellCmd, [], {
347
+ cwd: projectRoot,
348
+ shell: true,
349
+ stdio: ['ignore', 'pipe', 'pipe'],
350
+ });
351
+ // Track test files written/edited by agent (for auto-run after)
352
+ const createdTestFiles = [];
353
+ function trackWrittenFiles(raw) {
354
+ try {
355
+ const ev = JSON.parse(raw);
356
+ const blocks = ev.type === 'assistant'
357
+ ? (ev.message?.content ?? [])
358
+ : ev.type === 'tool_use' ? [ev] : [];
359
+ for (const b of blocks) {
360
+ if ((b.name === 'Write' || b.name === 'Edit') && b.input?.file_path) {
361
+ const fp = b.input.file_path;
362
+ if (TEST_FILE_RE.test(fp) && !createdTestFiles.includes(fp)) {
363
+ createdTestFiles.push(fp);
364
+ }
365
+ }
366
+ }
367
+ }
368
+ catch { }
369
+ }
370
+ // Stream stdout — parse Claude stream-json events into readable lines
371
+ const rl = readline.createInterface({ input: proc.stdout, crlfDelay: Infinity });
372
+ rl.on('line', (raw) => {
373
+ if (!raw.trim())
374
+ return;
375
+ trackWrittenFiles(raw);
376
+ const parsed = agent === 'claude' ? parseClaudeEvent(raw) : raw;
377
+ if (!parsed)
378
+ return;
379
+ if (parsed.startsWith('§RESULT§')) {
380
+ // Full result summary — split into lines and prefix with indent
381
+ broadcast('agent-output', { line: '─────────────────────────────' });
382
+ for (const l of parsed.slice('§RESULT§'.length).split('\n')) {
383
+ if (l.trim())
384
+ broadcast('agent-output', { line: ' ' + l });
385
+ }
386
+ }
387
+ else {
388
+ for (const l of parsed.split('\n')) {
389
+ if (l.trim())
390
+ broadcast('agent-output', { line: l });
391
+ }
392
+ }
393
+ });
394
+ // Stderr — show as-is (warnings, errors from the CLI)
395
+ proc.stderr.on('data', (chunk) => {
396
+ const lines = chunk.toString().split('\n').filter(Boolean);
397
+ for (const line of lines) {
398
+ broadcast('agent-output', { line, isError: true });
399
+ }
400
+ });
401
+ proc.on('close', async (code) => {
402
+ agentRunning = false;
403
+ if (code === 0) {
404
+ // Auto-run created test files and show results
405
+ if (task === 'write-tests' && createdTestFiles.length > 0) {
406
+ broadcast('agent-output', { line: '─────────────────────────────' });
407
+ broadcast('agent-output', { line: `🧪 Запускаю тесты (${createdTestFiles.length} файлов)...` });
408
+ const result = await runTestFiles(createdTestFiles, projectRoot);
409
+ const summary = result.failed === 0
410
+ ? `✅ Все тесты прошли: ${result.passed} passed`
411
+ : `⚠️ ${result.passed} passed, ${result.failed} failed`;
412
+ broadcast('agent-output', { line: summary });
413
+ broadcast('agent-summary', result);
414
+ }
415
+ process.stdout.write(' ✅ Agent done, rescanning...\n');
416
+ try {
417
+ currentData = await (0, scanner_1.scanProject)(projectRoot);
418
+ broadcast('data-updated');
419
+ }
420
+ catch { }
421
+ broadcast('agent-done');
422
+ }
423
+ else {
424
+ process.stdout.write(` ❌ Agent failed (exit code ${code})\n`);
425
+ broadcast('agent-error', { message: `Агент завершился с кодом ${code}` });
426
+ }
427
+ });
428
+ proc.on('error', (err) => {
429
+ agentRunning = false;
430
+ process.stdout.write(' ❌ Agent spawn error: ' + err.message + '\n');
431
+ broadcast('agent-error', { message: `Не удалось запустить ${agent}: ${err.message}` });
432
+ });
433
+ }
434
+ // ── Chokidar watcher ───────────────────────────────────────────────────────
85
435
  chokidar_1.default.watch([
86
436
  '**/*.{ts,tsx,js,jsx,vue,svelte}',
87
437
  'viberadar.config.json',
@@ -97,7 +447,7 @@ function startServer({ data: initialData, port, projectRoot }) {
97
447
  .on('add', f => scheduleRescan(path.join(projectRoot, f)))
98
448
  .on('change', f => scheduleRescan(path.join(projectRoot, f)))
99
449
  .on('unlink', f => scheduleRescan(path.join(projectRoot, f)));
100
- // ── HTTP server ─────────────────────────────────────────────────────────────
450
+ // ── HTTP server ────────────────────────────────────────────────────────────
101
451
  const server = http.createServer((req, res) => {
102
452
  const url = req.url ?? '/';
103
453
  if (url === '/') {
@@ -110,6 +460,55 @@ function startServer({ data: initialData, port, projectRoot }) {
110
460
  res.end(JSON.stringify(currentData));
111
461
  return;
112
462
  }
463
+ if (url === '/api/status') {
464
+ res.writeHead(200, { 'Content-Type': 'application/json' });
465
+ res.end(JSON.stringify({ coverageRunning, coverageError, agentRunning }));
466
+ return;
467
+ }
468
+ if (url === '/api/run-coverage' && req.method === 'POST') {
469
+ triggerCoverage();
470
+ res.writeHead(200, { 'Content-Type': 'application/json' });
471
+ res.end(JSON.stringify({ ok: true }));
472
+ return;
473
+ }
474
+ if (url === '/api/run-agent' && req.method === 'POST') {
475
+ let body = '';
476
+ req.on('data', d => body += d);
477
+ req.on('end', () => {
478
+ try {
479
+ const { task, featureKey } = JSON.parse(body);
480
+ runAgent(task, featureKey);
481
+ res.writeHead(200, { 'Content-Type': 'application/json' });
482
+ res.end(JSON.stringify({ ok: true }));
483
+ }
484
+ catch (err) {
485
+ res.writeHead(400);
486
+ res.end(JSON.stringify({ error: err.message }));
487
+ }
488
+ });
489
+ return;
490
+ }
491
+ if (url === '/api/set-agent' && req.method === 'POST') {
492
+ let body = '';
493
+ req.on('data', d => body += d);
494
+ req.on('end', () => {
495
+ try {
496
+ const { agent } = JSON.parse(body);
497
+ const configPath = path.join(projectRoot, 'viberadar.config.json');
498
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
499
+ config.agent = agent;
500
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
501
+ scheduleRescan();
502
+ res.writeHead(200, { 'Content-Type': 'application/json' });
503
+ res.end(JSON.stringify({ ok: true, agent }));
504
+ }
505
+ catch (err) {
506
+ res.writeHead(500);
507
+ res.end(JSON.stringify({ error: err.message }));
508
+ }
509
+ });
510
+ return;
511
+ }
113
512
  // Server-Sent Events endpoint
114
513
  if (url === '/api/events') {
115
514
  res.writeHead(200, {
@@ -117,7 +516,7 @@ function startServer({ data: initialData, port, projectRoot }) {
117
516
  'Cache-Control': 'no-cache',
118
517
  'Connection': 'keep-alive',
119
518
  });
120
- res.write('data: connected\n\n'); // initial ping
519
+ res.write('data: connected\n\n');
121
520
  sseClients.add(res);
122
521
  req.on('close', () => sseClients.delete(res));
123
522
  return;
@@ -133,10 +532,20 @@ function startServer({ data: initialData, port, projectRoot }) {
133
532
  reject(err);
134
533
  }
135
534
  });
136
- server.listen(port, '127.0.0.1', () => resolve(server));
137
- process.on('SIGINT', () => {
535
+ server.listen(port, '127.0.0.1', () => resolve({ server, triggerCoverage }));
536
+ process.once('SIGINT', () => {
138
537
  console.log('\n👋 VibeRadar stopped.');
538
+ // Destroy all SSE connections so server.close() doesn't hang waiting for them
539
+ for (const client of sseClients) {
540
+ try {
541
+ client.destroy();
542
+ }
543
+ catch { }
544
+ }
545
+ sseClients.clear();
139
546
  server.close(() => process.exit(0));
547
+ // Force exit after 500ms in case something is still hanging
548
+ setTimeout(() => process.exit(0), 500).unref();
140
549
  });
141
550
  });
142
551
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}