viberadar 0.3.205 → 0.3.207

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAOlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAiuED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAggG1G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,OAAO,EAAE,UAAU,EAA4H,MAAM,YAAY,CAAC;AAOlK,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AA0vED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAggG1G"}
@@ -1253,8 +1253,11 @@ function buildObsFeatureReviewPrompt(featureKey, data) {
1253
1253
  .slice(0, 5)
1254
1254
  .map(fp => ` - строка ~${fp.lineApprox}: ${FP_TYPE_LABELS[fp.type] || fp.type} — \`${fp.snippet}\``)
1255
1255
  .join('\n');
1256
+ const coverageState = item.hasAnyWarnError
1257
+ ? 'часть warn/error уже есть, но не все точки покрыты'
1258
+ : 'warn/error покрытия не найдено';
1256
1259
  return [
1257
- `- ${item.modulePath} (${item.roleHint}, ${item.riskTier}, score ${item.riskScore})`,
1260
+ `- ${item.modulePath} (${item.failurePoints.length} точек отказа; ${coverageState})`,
1258
1261
  fpLines || ` - Нет warn/error покрытия: найди точки отказа вручную`,
1259
1262
  ].join('\n');
1260
1263
  });
@@ -1301,7 +1304,7 @@ function buildObsFeatureReviewPrompt(featureKey, data) {
1301
1304
  ...catalogLines,
1302
1305
  ``,
1303
1306
  `Правила принятия решений:`,
1304
- `- Для каждого изменения сначала определи: add_error_log | enrich_fields | remove_noise | downgrade_to_debug | keep | needs_human_review.`,
1307
+ `- Для каждой точки/лога сначала определи: add_error_log | add_warn_log | enrich_fields | remove_noise | downgrade_to_debug | keep_without_log | keep | needs_human_review.`,
1305
1308
  `- Никогда не трогай logger.warn/logger.error/logger.fatal как "шум".`,
1306
1309
  `- Не понижай ERROR/WARN уровни.`,
1307
1310
  `- Не добавляй ERROR-лог для штатных 400/401/403/404/409/422, validation/not-found/conflict/domain ошибок, если это ожидаемый ответ API.`,
@@ -1311,7 +1314,7 @@ function buildObsFeatureReviewPrompt(featureKey, data) {
1311
1314
  `- В payload логгера используй только переменные из текущего scope; не угадывай поля из типов.`,
1312
1315
  `- Не добавляй process.env в клиентские Vite/React файлы; используй import.meta.env.MODE, если env реально нужен.`,
1313
1316
  ``,
1314
- `Перед правками выведи краткий план: файл, действие, причина. Если уверенность низкая — не меняй код, пометь как needs_human_review.`,
1317
+ `Перед правками выведи краткий план: файл, действие, причина. Меняй код только для add_error_log/add_warn_log/enrich_fields/remove_noise/downgrade_to_debug. Если уверенность низкая — не меняй код, пометь как needs_human_review.`,
1315
1318
  ``,
1316
1319
  `Проверка после изменений:`,
1317
1320
  `- npm run check -- --pretty false или npm run typecheck, если check отсутствует.`,
@@ -1324,17 +1327,24 @@ function buildObsAddCriticalLogsPrompt(modulePath, catalog) {
1324
1327
  const moduleItem = catalog.find(c => c.modulePath === modulePath);
1325
1328
  const missingFields = moduleItem?.missingFields || [];
1326
1329
  return [
1327
- `Добавь критичные логи (warn/error) в модуль \`${modulePath}\`.`,
1330
+ `Проверь точки отказа и добавь нужные warn/error логи в модуль \`${modulePath}\`.`,
1328
1331
  ``,
1329
- `Сейчас в модуле нет warn/error событий. При сбоях мы не увидим ошибку в логах.`,
1332
+ `VibeRadar не нашёл достаточного warn/error покрытия. Это статический сигнал, а не приказ логировать всё подряд.`,
1330
1333
  ``,
1331
1334
  moduleItem
1332
1335
  ? `Текущее состояние модуля:\n- Формат: ${moduleItem.format}\n- Уровень: ${moduleItem.level}\n- Пропущенные поля: ${missingFields.length > 0 ? missingFields.join(', ') : 'нет'}`
1333
1336
  : '',
1334
1337
  ``,
1338
+ `Важно: VibeRadar дал кандидатов, а не список обязательных правок.`,
1339
+ `Сначала классифицируй каждую точку:`,
1340
+ `- add_error_log — реальный неожиданный сбой операции, должен быть виден в production`,
1341
+ `- add_warn_log — деградация, retry, graceful fallback или частичный результат`,
1342
+ `- keep_without_log — ожидаемый domain/validation/not-found/conflict/permission ответ, UI validation или intentional fallback`,
1343
+ `- needs_human_review — контекст спорный`,
1344
+ ``,
1335
1345
  `Что сделать:`,
1336
1346
  `- Найди в модуле точки, где может произойти ошибка (catch-блоки, проверки null/undefined, HTTP-ответы с ошибкой, DB-ошибки)`,
1337
- `- Добавь logger.warn или logger.error с обязательными полями по стандарту`,
1347
+ `- Меняй код только для add_error_log/add_warn_log`,
1338
1348
  `- НЕ добавляй ERROR-лог для штатных validation/not-found/conflict/domain throws, если это ожидаемый ответ API`,
1339
1349
  `- НЕ логируй намеренные .catch(() => null/undefined) cleanup/json-parse fallbacks без реального operational риска`,
1340
1350
  `- Каждый лог должен включать: event_name, outcome, error_code (для error)`,
@@ -1357,9 +1367,8 @@ function buildObsAddCriticalLogsPromptV2(item, catalog) {
1357
1367
  const catalogEntry = catalog.find(c => c.modulePath === item.modulePath);
1358
1368
  const fpDescriptions = item.failurePoints.map(fp => `- Строка ~${fp.lineApprox}: ${FP_TYPE_LABELS[fp.type] || fp.type}\n \`${fp.snippet}\``).join('\n');
1359
1369
  return [
1360
- `Добавь критичные логи (warn/error) в модуль \`${item.modulePath}\`.`,
1370
+ `Проверь точки отказа и добавь нужные warn/error логи в модуль \`${item.modulePath}\`.`,
1361
1371
  ``,
1362
- `Роль модуля: ${item.roleHint} (приоритет: ${item.riskTier})`,
1363
1372
  item.hasAnyWarnError
1364
1373
  ? `В модуле есть некоторые warn/error, но обнаружены незакрытые точки отказа.`
1365
1374
  : `В модуле НЕТ ни одного warn/error. При сбоях мы не увидим ошибку в логах.`,
@@ -1371,13 +1380,17 @@ function buildObsAddCriticalLogsPromptV2(item, catalog) {
1371
1380
  `Обнаруженные точки отказа без логирования (${item.failurePoints.length}):`,
1372
1381
  fpDescriptions,
1373
1382
  ``,
1383
+ `Важно: VibeRadar дал кандидатов, а не список обязательных правок.`,
1374
1384
  `Что сделать с каждой точкой:`,
1375
- `- Пустые catch-блоки: добавь logger.error с контекстом, event_name, error_code, outcome:failure`,
1376
- `- catch без лога: добавь logger.error/warn рядом с обработкой ошибки`,
1377
- `- .catch() без лога: добавь logger.error в обработчик промиса`,
1378
- `- HTTP/DB без обработки: оберни в try/catch с logger.error`,
1379
- `- throw без лога: добавь logger.error ДО throw`,
1380
- `- if(err) без лога: добавь logger.warn/error в ветку ошибки`,
1385
+ `- Сначала прочитай контекст и реши: add_error_log | add_warn_log | keep_without_log | needs_human_review.`,
1386
+ `- Меняй код только для add_error_log/add_warn_log.`,
1387
+ `- Пустые catch-блоки: добавь logger.error только если ошибка реально теряется и влияет на операцию.`,
1388
+ `- catch без лога: добавь logger.error/warn рядом с обработкой ошибки, если это operational-сбой.`,
1389
+ `- .catch() без лога: добавь лог только если это не намеренный безопасный fallback/cleanup.`,
1390
+ `- HTTP/DB без обработки: оберни в try/catch с logger.error только при реальном риске потери сбоя.`,
1391
+ `- throw без лога: НЕ добавляй лог для штатных validation/not-found/conflict/domain ошибок.`,
1392
+ `- if(err) без лога: добавь logger.warn/error в ветку ошибки, если ошибка должна быть видна в production.`,
1393
+ `- Для keep_without_log не добавляй лог даже если VibeRadar подсветил точку.`,
1381
1394
  ``,
1382
1395
  `Каждый лог: event_name, outcome, error_code (для error).`,
1383
1396
  `event_name: <domain>.<entity>.<action> (lower_snake_case через точку)`,
@@ -1395,7 +1408,8 @@ function guessTestFile(modulePath) {
1395
1408
  function buildObsBatchAddCriticalLogsPrompt(items, catalog) {
1396
1409
  const moduleBlocks = items.map(item => {
1397
1410
  const fpSummary = item.failurePoints.map(fp => ` - строка ~${fp.lineApprox}: ${FP_TYPE_LABELS[fp.type] || fp.type} — \`${fp.snippet}\``).join('\n');
1398
- return `### \`${item.modulePath}\` (${item.roleHint}, ${item.riskTier})\n${fpSummary || ' - Нет warn/error, проверь весь модуль на точки отказа'}`;
1411
+ const coverageState = item.hasAnyWarnError ? 'частично покрыто warn/error' : 'warn/error не найдено';
1412
+ return `### \`${item.modulePath}\` (${item.failurePoints.length} точек отказа; ${coverageState})\n${fpSummary || ' - Нет warn/error, проверь весь модуль на точки отказа'}`;
1399
1413
  }).join('\n\n');
1400
1414
  const testCommands = items
1401
1415
  .map(item => guessTestFile(item.modulePath))
@@ -1404,9 +1418,20 @@ function buildObsBatchAddCriticalLogsPrompt(items, catalog) {
1404
1418
  .map(f => ` npm run test -- ${f}`)
1405
1419
  .join('\n');
1406
1420
  return [
1407
- `Добавь критичные логи в ${items.length} модулей.`,
1421
+ `Проверь точки отказа и добавь нужные warn/error логи в ${items.length} модулей.`,
1422
+ ``,
1423
+ `Для каждого модуля: прочитай контекст точек отказа (указаны ниже) и добавь logger.warn/error только там, где это реальный operational-сбой.`,
1424
+ ``,
1425
+ `Важно: VibeRadar дал список кандидатов, а не список обязательных правок.`,
1426
+ `Перед любым изменением классифицируй каждую точку:`,
1427
+ `- add_error_log — реальный неожиданный сбой операции, должен быть виден в production`,
1428
+ `- add_warn_log — деградация, retry, graceful fallback или частичный результат`,
1429
+ `- keep_without_log — ожидаемый domain/validation/not-found/conflict/permission ответ, UI validation, intentional cleanup или best-effort fallback`,
1430
+ `- needs_human_review — контекст спорный или уверенность низкая`,
1408
1431
  ``,
1409
- `Для каждого модуля: найди точки отказа (указаны ниже) и добавь logger.warn/error с обязательными полями.`,
1432
+ `Меняй код только для add_error_log/add_warn_log.`,
1433
+ `Для keep_without_log не добавляй лог даже если VibeRadar подсветил точку.`,
1434
+ `В финальном ответе отдельно перечисли: что изменил, что оставил без изменений и почему.`,
1410
1435
  ``,
1411
1436
  moduleBlocks,
1412
1437
  ``,
@@ -1415,8 +1440,8 @@ function buildObsBatchAddCriticalLogsPrompt(items, catalog) {
1415
1440
  `- outcome: failure|partial`,
1416
1441
  `- error_code из словаря (VALIDATION_ERROR, DEPENDENCY_TIMEOUT, INTERNAL_ERROR и т.д.)`,
1417
1442
  `- Не стремись обнулить все сигналы VibeRadar: validation/not-found/conflict/domain throws и intentional silent fallbacks можно оставить без ERROR-лога`,
1418
- `- Пустые catch: добавь logger.error, не оставляй пустыми`,
1419
- `- HTTP/DB без обработки: оберни в try/catch с logger.error`,
1443
+ `- Пустые catch: добавь logger.error только если ошибка теряется и влияет на операцию; intentional cleanup/best-effort fallback можно оставить без error-лога или оформить как debug/warn по контексту`,
1444
+ `- HTTP/DB без обработки: оберни в try/catch с logger.error только если ошибка не обрабатывается выше и должна быть видна в production`,
1420
1445
  `- В payload-объекте логгера используй ТОЛЬКО переменные из текущего скоупа (не угадывай имена полей из типов)`,
1421
1446
  ``,
1422
1447
  `⚠️ ВАЖНО — React / Vite файлы (.tsx):`,
@@ -3327,7 +3352,7 @@ function startServer({ data: initialData, port, projectRoot }) {
3327
3352
  }
3328
3353
  else if (task === 'obs-add-critical-logs') {
3329
3354
  const modulePath = meta?.modulePath || 'unknown';
3330
- title = `${agentLabel} — добавить критичные логи в "${modulePath}"`;
3355
+ title = `${agentLabel} — добавить логи точек отказа в "${modulePath}"`;
3331
3356
  }
3332
3357
  else if (task === 'obs-enrich-field') {
3333
3358
  const fieldName = meta?.fieldName || 'unknown';