@justmpm/ai-tool 0.5.0 → 0.5.1

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.
@@ -760,7 +760,7 @@ function formatAreasText(result) {
760
760
  `;
761
761
  out += `\u{1F4A1} Use 'ai-tool area <nome>' para ver detalhes de uma \xE1rea
762
762
  `;
763
- out += ` Exemplo: ai-tool area meus-pets
763
+ out += ` Exemplo: ai-tool area auth
764
764
  `;
765
765
  return out;
766
766
  }
@@ -1150,24 +1150,20 @@ import { minimatch } from "minimatch";
1150
1150
  // src/areas/patterns.ts
1151
1151
  var FOLDER_PATTERNS = [
1152
1152
  // ============================================================================
1153
- // NEXT.JS APP ROUTER - Rotas específicas (alta prioridade)
1153
+ // NEXT.JS APP ROUTER - Rotas genéricas (alta prioridade)
1154
1154
  // ============================================================================
1155
- { pattern: /app\/.*\/meus-pets\//, area: "meus-pets", priority: 100 },
1156
- { pattern: /app\/.*\/pets\//, area: "meus-pets", priority: 100 },
1157
- { pattern: /app\/.*\/consultas\//, area: "consultas-ia", priority: 100 },
1158
1155
  { pattern: /app\/.*\/dashboard\//, area: "dashboard", priority: 100 },
1159
1156
  { pattern: /app\/.*\/admin\//, area: "admin", priority: 100 },
1160
- { pattern: /app\/.*\/assinatura\//, area: "stripe", priority: 100 },
1161
- { pattern: /app\/.*\/guias\//, area: "training", priority: 100 },
1162
- { pattern: /app\/.*\/treino\//, area: "training", priority: 100 },
1163
1157
  { pattern: /app\/.*\/login\//, area: "auth", priority: 100 },
1164
1158
  { pattern: /app\/.*\/cadastro\//, area: "auth", priority: 100 },
1159
+ { pattern: /app\/.*\/signup\//, area: "auth", priority: 100 },
1160
+ { pattern: /app\/.*\/register\//, area: "auth", priority: 100 },
1165
1161
  { pattern: /app\/.*\/auth\//, area: "auth", priority: 100 },
1166
1162
  { pattern: /app\/.*\/perfil\//, area: "profile", priority: 100 },
1163
+ { pattern: /app\/.*\/profile\//, area: "profile", priority: 100 },
1167
1164
  { pattern: /app\/.*\/configuracoes\//, area: "settings", priority: 100 },
1168
1165
  { pattern: /app\/.*\/settings\//, area: "settings", priority: 100 },
1169
1166
  { pattern: /app\/.*\/onboarding/, area: "onboarding", priority: 100 },
1170
- { pattern: /app\/.*\/beta\//, area: "beta", priority: 100 },
1171
1167
  { pattern: /app\/.*\/precos\//, area: "pricing", priority: 100 },
1172
1168
  { pattern: /app\/.*\/pricing\//, area: "pricing", priority: 100 },
1173
1169
  { pattern: /app\/.*\/checkout\//, area: "checkout", priority: 100 },
@@ -1185,7 +1181,6 @@ var FOLDER_PATTERNS = [
1185
1181
  { pattern: /app\/.*\/faq\//, area: "faq", priority: 100 },
1186
1182
  { pattern: /app\/.*\/help\//, area: "help", priority: 100 },
1187
1183
  { pattern: /app\/.*\/support\//, area: "support", priority: 100 },
1188
- { pattern: /app\/.*\/feedback\//, area: "feedback", priority: 100 },
1189
1184
  // ============================================================================
1190
1185
  // VITE / CRA - src/pages/ ou src/views/ (alta prioridade)
1191
1186
  // ============================================================================
@@ -1238,30 +1233,22 @@ var FOLDER_PATTERNS = [
1238
1233
  // COMPONENTS - Por subpasta (alta prioridade)
1239
1234
  // Funciona em qualquer framework (com ou sem src/)
1240
1235
  // ============================================================================
1241
- { pattern: /components\/pets\//, area: "meus-pets", priority: 90 },
1242
- { pattern: /components\/pet\//, area: "meus-pets", priority: 90 },
1243
- { pattern: /components\/consultation\//, area: "consultas-ia", priority: 90 },
1244
1236
  { pattern: /components\/chat\//, area: "chat", priority: 90 },
1245
- { pattern: /components\/training\//, area: "training", priority: 90 },
1246
- { pattern: /components\/health\//, area: "health-tracking", priority: 90 },
1247
1237
  { pattern: /components\/auth\//, area: "auth", priority: 90 },
1248
1238
  { pattern: /components\/admin\//, area: "admin", priority: 90 },
1249
1239
  { pattern: /components\/landing\//, area: "landing", priority: 90 },
1250
1240
  { pattern: /components\/marketing\//, area: "landing", priority: 90 },
1251
1241
  { pattern: /components\/dashboard\//, area: "dashboard", priority: 90 },
1252
- { pattern: /components\/subscription\//, area: "stripe", priority: 90 },
1253
- { pattern: /components\/stripe\//, area: "stripe", priority: 90 },
1254
- { pattern: /components\/payment\//, area: "payments", priority: 90 },
1242
+ { pattern: /components\/subscription\//, area: "billing", priority: 90 },
1243
+ { pattern: /components\/stripe\//, area: "billing", priority: 90 },
1244
+ { pattern: /components\/payment\//, area: "billing", priority: 90 },
1255
1245
  { pattern: /components\/checkout\//, area: "checkout", priority: 90 },
1256
1246
  { pattern: /components\/cart\//, area: "cart", priority: 90 },
1257
1247
  { pattern: /components\/notification\//, area: "notifications", priority: 90 },
1258
- { pattern: /components\/pdf\//, area: "pdf", priority: 90 },
1259
1248
  { pattern: /components\/seo\//, area: "seo", priority: 90 },
1260
1249
  { pattern: /components\/blog\//, area: "blog", priority: 90 },
1261
1250
  { pattern: /components\/docs\//, area: "docs", priority: 90 },
1262
1251
  { pattern: /components\/legal\//, area: "legal", priority: 90 },
1263
- { pattern: /components\/feedback\//, area: "feedback", priority: 90 },
1264
- { pattern: /components\/beta\//, area: "beta", priority: 90 },
1265
1252
  { pattern: /components\/onboarding\//, area: "onboarding", priority: 90 },
1266
1253
  { pattern: /components\/settings\//, area: "settings", priority: 90 },
1267
1254
  { pattern: /components\/profile\//, area: "profile", priority: 90 },
@@ -1281,8 +1268,8 @@ var FOLDER_PATTERNS = [
1281
1268
  { pattern: /components\/core\//, area: "shared-ui", priority: 30 },
1282
1269
  { pattern: /components\/primitives\//, area: "shared-ui", priority: 30 },
1283
1270
  { pattern: /components\/providers\//, area: "core", priority: 40 },
1284
- { pattern: /components\/layout\//, area: "core", priority: 40 },
1285
- { pattern: /components\/layouts\//, area: "core", priority: 40 },
1271
+ { pattern: /components\/layout\//, area: "layout", priority: 40 },
1272
+ { pattern: /components\/layouts\//, area: "layout", priority: 40 },
1286
1273
  // ============================================================================
1287
1274
  // FEATURES (padrão comum em projetos maiores)
1288
1275
  // ============================================================================
@@ -1308,41 +1295,21 @@ var FOLDER_PATTERNS = [
1308
1295
  // ============================================================================
1309
1296
  // LIB - Módulos específicos
1310
1297
  // ============================================================================
1311
- { pattern: /lib\/firebase\/ai\//, area: "firebase-ai", priority: 85 },
1312
- { pattern: /lib\/firebase\/aiExtraction\//, area: "firebase-ai", priority: 85 },
1313
- { pattern: /lib\/firebase\/firestore\//, area: "firebase-firestore", priority: 85 },
1314
- { pattern: /lib\/firebase\/prompts\//, area: "firebase-ai", priority: 85 },
1315
- { pattern: /lib\/firebase\/analytics\//, area: "analytics", priority: 85 },
1316
- { pattern: /lib\/firebase\//, area: "firebase-core", priority: 80 },
1317
- { pattern: /lib\/stripe\//, area: "stripe", priority: 80 },
1298
+ { pattern: /lib\/firebase\//, area: "firebase", priority: 80 },
1299
+ { pattern: /lib\/stripe\//, area: "billing", priority: 80 },
1318
1300
  { pattern: /lib\/i18n\//, area: "i18n", priority: 80 },
1301
+ { pattern: /lib\/analytics\//, area: "analytics", priority: 80 },
1319
1302
  // ============================================================================
1320
- // HOOKS - Por nome
1303
+ // HOOKS - Por nome genérico
1321
1304
  // ============================================================================
1322
- { pattern: /hooks\/.*[Pp]et/, area: "meus-pets", priority: 70 },
1323
1305
  { pattern: /hooks\/.*[Aa]uth/, area: "auth", priority: 70 },
1324
- { pattern: /hooks\/.*[Ss]ubscription/, area: "stripe", priority: 70 },
1306
+ { pattern: /hooks\/.*[Ss]ubscription/, area: "billing", priority: 70 },
1325
1307
  { pattern: /hooks\/.*[Nn]otification/, area: "notifications", priority: 70 },
1326
- { pattern: /hooks\/.*[Hh]ealth/, area: "health-tracking", priority: 70 },
1327
- { pattern: /hooks\/.*[Tt]raining/, area: "training", priority: 70 },
1328
1308
  // ============================================================================
1329
- // STORE - Por nome
1309
+ // STORE - Por nome genérico
1330
1310
  // ============================================================================
1331
- { pattern: /store\/.*[Pp]et/, area: "meus-pets", priority: 70 },
1332
1311
  { pattern: /store\/.*[Aa]uth/, area: "auth", priority: 70 },
1333
- { pattern: /store\/.*[Uu]ser/, area: "auth", priority: 70 },
1334
- // ============================================================================
1335
- // SCHEMAS - Por nome
1336
- // ============================================================================
1337
- { pattern: /schemas\/.*[Pp]et/, area: "meus-pets", priority: 70 },
1338
- { pattern: /schemas\/.*[Aa]uth/, area: "auth", priority: 70 },
1339
- // ============================================================================
1340
- // TYPES - Por nome
1341
- // ============================================================================
1342
- { pattern: /types\/.*[Pp]et/, area: "meus-pets", priority: 70 },
1343
- { pattern: /types\/.*[Aa]uth/, area: "auth", priority: 70 },
1344
- { pattern: /types\/.*[Ss]tripe/, area: "stripe", priority: 70 },
1345
- { pattern: /types\/.*[Ss]ubscription/, area: "stripe", priority: 70 },
1312
+ { pattern: /store\/.*[Uu]ser/, area: "user", priority: 70 },
1346
1313
  // ============================================================================
1347
1314
  // CLOUD FUNCTIONS
1348
1315
  // ============================================================================
@@ -1352,83 +1319,61 @@ var FOLDER_PATTERNS = [
1352
1319
  // ============================================================================
1353
1320
  { pattern: /messages\//, area: "i18n", priority: 60 },
1354
1321
  { pattern: /i18n\//, area: "i18n", priority: 60 },
1322
+ { pattern: /locales\//, area: "i18n", priority: 60 },
1355
1323
  { pattern: /public\//, area: "assets", priority: 50 },
1356
1324
  { pattern: /scripts\//, area: "scripts", priority: 50 }
1357
1325
  ];
1358
1326
  var KEYWORD_PATTERNS = [
1359
- // Pets
1360
- { keyword: /[Pp]et/, area: "meus-pets", priority: 60 },
1361
- { keyword: /[Vv]accin/, area: "meus-pets", priority: 60 },
1362
- { keyword: /[Dd]eworm/, area: "meus-pets", priority: 60 },
1363
- { keyword: /[Mm]edication/, area: "meus-pets", priority: 60 },
1364
- { keyword: /[Ss]urgery/, area: "meus-pets", priority: 60 },
1365
- { keyword: /[Vv]eterinary/, area: "meus-pets", priority: 60 },
1366
- // Consultas IA
1367
- { keyword: /[Cc]onsultation/, area: "consultas-ia", priority: 60 },
1368
- { keyword: /[Cc]hat/, area: "consultas-ia", priority: 50 },
1369
- { keyword: /[Gg]emini/, area: "firebase-ai", priority: 60 },
1370
- // Health
1371
- { keyword: /[Hh]ealth[Tt]racking/, area: "health-tracking", priority: 65 },
1372
- { keyword: /[Hh]ome[Cc]are/, area: "health-tracking", priority: 65 },
1373
- // Training
1374
- { keyword: /[Tt]raining/, area: "training", priority: 60 },
1375
- { keyword: /[Gg]uide/, area: "training", priority: 55 },
1376
- { keyword: /[Aa]destramento/, area: "training", priority: 60 },
1377
- // Auth
1378
- { keyword: /[Aa]uth/, area: "auth", priority: 60 },
1327
+ // Auth (genérico)
1328
+ { keyword: /[Aa]uth(?!or)/, area: "auth", priority: 60 },
1329
+ // auth mas não author
1379
1330
  { keyword: /[Ll]ogin/, area: "auth", priority: 60 },
1380
1331
  { keyword: /[Rr]egister/, area: "auth", priority: 60 },
1381
1332
  { keyword: /[Ss]ignup/, area: "auth", priority: 60 },
1382
1333
  { keyword: /[Ss]ignin/, area: "auth", priority: 60 },
1383
- // Stripe
1384
- { keyword: /[Ss]tripe/, area: "stripe", priority: 65 },
1385
- { keyword: /[Ss]ubscription/, area: "stripe", priority: 60 },
1386
- { keyword: /[Pp]ayment/, area: "stripe", priority: 60 },
1387
- { keyword: /[Cc]heckout/, area: "stripe", priority: 60 },
1388
- { keyword: /[Pp]rice/, area: "pricing", priority: 55 },
1334
+ { keyword: /[Ss]ignout/, area: "auth", priority: 60 },
1335
+ { keyword: /[Ll]ogout/, area: "auth", priority: 60 },
1336
+ // Billing/Payments (genérico)
1337
+ { keyword: /[Ss]tripe/, area: "billing", priority: 65 },
1338
+ { keyword: /[Ss]ubscription/, area: "billing", priority: 60 },
1339
+ { keyword: /[Pp]ayment/, area: "billing", priority: 60 },
1340
+ { keyword: /[Bb]illing/, area: "billing", priority: 65 },
1341
+ { keyword: /[Ii]nvoice/, area: "billing", priority: 60 },
1342
+ // Checkout (genérico)
1343
+ { keyword: /[Cc]heckout/, area: "checkout", priority: 60 },
1344
+ // Pricing (genérico)
1389
1345
  { keyword: /[Pp]ricing/, area: "pricing", priority: 60 },
1390
- // Notifications
1346
+ // Notifications (genérico)
1391
1347
  { keyword: /[Nn]otification/, area: "notifications", priority: 60 },
1392
1348
  { keyword: /[Ff][Cc][Mm]/, area: "notifications", priority: 65 },
1393
- { keyword: /[Pp]ush/, area: "notifications", priority: 55 },
1394
- // i18n
1349
+ // i18n (genérico)
1395
1350
  { keyword: /[Ii]18n/, area: "i18n", priority: 60 },
1396
1351
  { keyword: /[Ll]ocale/, area: "i18n", priority: 55 },
1397
1352
  { keyword: /[Tt]ranslat/, area: "i18n", priority: 55 },
1398
- // SEO
1353
+ // SEO (genérico)
1399
1354
  { keyword: /[Ss][Ee][Oo]/, area: "seo", priority: 60 },
1400
1355
  { keyword: /[Ss]itemap/, area: "seo", priority: 60 },
1401
- { keyword: /[Mm]eta/, area: "seo", priority: 50 },
1402
- // Analytics
1356
+ // Analytics (genérico)
1403
1357
  { keyword: /[Aa]nalytics/, area: "analytics", priority: 60 },
1404
- { keyword: /[Uu]tm/, area: "analytics", priority: 55 },
1405
- { keyword: /[Tt]racking/, area: "analytics", priority: 50 },
1406
- // Admin
1407
- { keyword: /[Aa]dmin/, area: "admin", priority: 60 },
1408
- // PWA
1358
+ // Admin (genérico)
1359
+ { keyword: /[Aa]dmin/, area: "admin", priority: 55 },
1360
+ // PWA (genérico)
1409
1361
  { keyword: /[Pp][Ww][Aa]/, area: "pwa", priority: 60 },
1410
1362
  { keyword: /[Ss]ervice[Ww]orker/, area: "pwa", priority: 60 },
1411
1363
  { keyword: /[Mm]anifest/, area: "pwa", priority: 55 },
1412
- { keyword: /[Oo]ffline/, area: "pwa", priority: 55 },
1413
- // PDF
1414
- { keyword: /[Pp]df/, area: "pdf", priority: 60 },
1415
- { keyword: /[Rr]eport/, area: "pdf", priority: 50 }
1364
+ // PDF (genérico)
1365
+ { keyword: /[Pp]df[Ee]xport/, area: "export", priority: 60 },
1366
+ { keyword: /[Dd]ocx[Ee]xport/, area: "export", priority: 60 }
1416
1367
  ];
1417
1368
  var AREA_NAMES = {
1418
- // Áreas específicas de domínio
1419
- "meus-pets": "Meus Pets",
1420
- "consultas-ia": "Consultas IA",
1421
- "health-tracking": "Health Tracking",
1422
- training: "Adestramento",
1423
1369
  // Autenticação e usuário
1424
1370
  auth: "Autentica\xE7\xE3o",
1425
1371
  user: "Usu\xE1rio",
1426
1372
  profile: "Perfil",
1427
1373
  settings: "Configura\xE7\xF5es",
1428
1374
  onboarding: "Onboarding",
1429
- // E-commerce
1430
- stripe: "Pagamentos (Stripe)",
1431
- payments: "Pagamentos",
1375
+ // E-commerce / Billing
1376
+ billing: "Pagamentos",
1432
1377
  checkout: "Checkout",
1433
1378
  cart: "Carrinho",
1434
1379
  shop: "Loja",
@@ -1444,9 +1389,7 @@ var AREA_NAMES = {
1444
1389
  faq: "FAQ",
1445
1390
  contact: "Contato",
1446
1391
  // Firebase
1447
- "firebase-core": "Firebase Core",
1448
- "firebase-ai": "Firebase AI",
1449
- "firebase-firestore": "Firestore",
1392
+ firebase: "Firebase",
1450
1393
  // Conteúdo
1451
1394
  blog: "Blog",
1452
1395
  docs: "Documenta\xE7\xE3o",
@@ -1456,16 +1399,16 @@ var AREA_NAMES = {
1456
1399
  landing: "Landing Pages",
1457
1400
  seo: "SEO",
1458
1401
  analytics: "Analytics",
1459
- beta: "Programa Beta",
1460
1402
  // Admin e Dashboard
1461
1403
  admin: "Admin",
1462
1404
  dashboard: "Dashboard",
1463
1405
  // Técnico
1464
1406
  i18n: "Internacionaliza\xE7\xE3o",
1465
1407
  pwa: "PWA",
1466
- pdf: "PDF",
1408
+ export: "Exporta\xE7\xE3o",
1467
1409
  core: "Core",
1468
- "shared-ui": "UI Compartilhado",
1410
+ layout: "Layout",
1411
+ "shared-ui": "UI Compartilhada",
1469
1412
  "cloud-functions": "Cloud Functions",
1470
1413
  assets: "Assets",
1471
1414
  scripts: "Scripts",
@@ -1477,64 +1420,56 @@ var AREA_NAMES = {
1477
1420
  app: "Aplica\xE7\xE3o"
1478
1421
  };
1479
1422
  var AREA_DESCRIPTIONS = {
1480
- // Áreas específicas de domínio
1481
- "meus-pets": "Gerenciamento completo de pets do usu\xE1rio",
1482
- "consultas-ia": "Chat com IA para consultas veterin\xE1rias",
1483
- "health-tracking": "Acompanhamento de sa\xFAde e sintomas",
1484
- training: "Sistema de adestramento com guias e progresso",
1485
1423
  // Autenticação e usuário
1486
1424
  auth: "Autentica\xE7\xE3o e gerenciamento de sess\xE3o",
1487
1425
  user: "Gerenciamento de dados do usu\xE1rio",
1488
1426
  profile: "Perfil do usu\xE1rio",
1489
1427
  settings: "Configura\xE7\xF5es do usu\xE1rio",
1490
1428
  onboarding: "Fluxo de onboarding de novos usu\xE1rios",
1491
- // E-commerce
1492
- stripe: "Integra\xE7\xE3o Stripe para pagamentos e assinaturas",
1493
- payments: "Sistema de pagamentos",
1494
- checkout: "Fluxo de checkout e finaliza\xE7\xE3o de compra",
1429
+ // E-commerce / Billing
1430
+ billing: "Sistema de pagamentos e assinaturas",
1431
+ checkout: "Fluxo de checkout e finaliza\xE7\xE3o",
1495
1432
  cart: "Carrinho de compras",
1496
- shop: "Loja e cat\xE1logo de produtos",
1433
+ shop: "Loja e cat\xE1logo",
1497
1434
  products: "Gerenciamento de produtos",
1498
1435
  orders: "Gerenciamento de pedidos",
1499
1436
  pricing: "P\xE1gina de pre\xE7os e planos",
1500
1437
  // Comunicação
1501
- notifications: "Sistema de notifica\xE7\xF5es push",
1438
+ notifications: "Sistema de notifica\xE7\xF5es",
1502
1439
  chat: "Sistema de chat e mensagens",
1503
- feedback: "Coleta de feedback dos usu\xE1rios",
1440
+ feedback: "Coleta de feedback",
1504
1441
  support: "Suporte ao cliente",
1505
1442
  help: "Central de ajuda",
1506
1443
  faq: "Perguntas frequentes",
1507
1444
  contact: "P\xE1gina de contato",
1508
1445
  // Firebase
1509
- "firebase-core": "Configura\xE7\xE3o e servi\xE7os Firebase client-side",
1510
- "firebase-ai": "Integra\xE7\xE3o com Firebase AI (Gemini)",
1511
- "firebase-firestore": "Opera\xE7\xF5es CRUD no Firestore",
1446
+ firebase: "Configura\xE7\xE3o e servi\xE7os Firebase",
1512
1447
  // Conteúdo
1513
1448
  blog: "Blog e artigos",
1514
1449
  docs: "Documenta\xE7\xE3o e guias",
1515
1450
  legal: "Termos de uso, privacidade e pol\xEDticas",
1516
- about: "P\xE1gina sobre a empresa",
1451
+ about: "P\xE1gina sobre",
1517
1452
  // Marketing e SEO
1518
1453
  landing: "Landing pages e marketing",
1519
1454
  seo: "SEO, meta tags e sitemaps",
1520
- analytics: "Analytics e tracking de eventos",
1521
- beta: "Programa de beta testers",
1455
+ analytics: "Analytics e tracking",
1522
1456
  // Admin e Dashboard
1523
1457
  admin: "Painel administrativo",
1524
1458
  dashboard: "Dashboard do usu\xE1rio",
1525
1459
  // Técnico
1526
1460
  i18n: "Internacionaliza\xE7\xE3o e tradu\xE7\xF5es",
1527
- pwa: "Progressive Web App (offline, install)",
1528
- pdf: "Gera\xE7\xE3o de relat\xF3rios PDF",
1529
- core: "Providers e layout principal",
1461
+ pwa: "Progressive Web App",
1462
+ export: "Exporta\xE7\xE3o de documentos",
1463
+ core: "Providers e configura\xE7\xE3o principal",
1464
+ layout: "Layout e navega\xE7\xE3o",
1530
1465
  "shared-ui": "Componentes de UI compartilhados",
1531
1466
  "cloud-functions": "Cloud Functions (serverless)",
1532
- assets: "Assets p\xFAblicos (imagens, fontes)",
1467
+ assets: "Assets p\xFAblicos",
1533
1468
  scripts: "Scripts de automa\xE7\xE3o",
1534
1469
  // UI patterns
1535
- forms: "Componentes de formul\xE1rio reutiliz\xE1veis",
1536
- tables: "Componentes de tabela reutiliz\xE1veis",
1537
- modals: "Modais e dialogs reutiliz\xE1veis",
1470
+ forms: "Componentes de formul\xE1rio",
1471
+ tables: "Componentes de tabela",
1472
+ modals: "Modais e dialogs",
1538
1473
  // Genéricos
1539
1474
  app: "\xC1rea principal da aplica\xE7\xE3o"
1540
1475
  };
@@ -1543,11 +1478,16 @@ var AREA_DESCRIPTIONS = {
1543
1478
  function detectFileAreas(filePath, config) {
1544
1479
  const normalizedPath = filePath.replace(/\\/g, "/");
1545
1480
  const matches = [];
1481
+ const autoDetect = config.settings?.autoDetect !== false;
1546
1482
  for (const [areaId, areaConfig] of Object.entries(config.areas)) {
1547
1483
  if (matchesAreaConfig(normalizedPath, areaConfig)) {
1548
1484
  matches.push({ area: areaId, priority: 200, source: "config" });
1549
1485
  }
1550
1486
  }
1487
+ if (!autoDetect) {
1488
+ const unique2 = [...new Set(matches.map((m) => m.area))];
1489
+ return unique2;
1490
+ }
1551
1491
  for (const { pattern, area: area2, priority } of FOLDER_PATTERNS) {
1552
1492
  if (pattern.test(normalizedPath)) {
1553
1493
  if (!matches.some((m) => m.area === area2 && m.source === "config")) {
@@ -2976,7 +2916,7 @@ async function area(target, options = {}) {
2976
2916
  const filterType = options.type;
2977
2917
  const full = options.full ?? false;
2978
2918
  if (!target) {
2979
- throw new Error("Nome da \xE1rea \xE9 obrigat\xF3rio. Exemplo: ai-tool area meus-pets");
2919
+ throw new Error("Nome da \xE1rea \xE9 obrigat\xF3rio. Exemplo: ai-tool area auth");
2980
2920
  }
2981
2921
  try {
2982
2922
  const config = readConfig(cwd);
@@ -3095,7 +3035,7 @@ function formatAreaNotFound(target, availableAreas) {
3095
3035
  }
3096
3036
  out += `\u{1F4A1} Dicas:
3097
3037
  `;
3098
- out += ` - Use o ID exato da \xE1rea (ex: ai-tool area meus-pets)
3038
+ out += ` - Use o ID exato da \xE1rea (ex: ai-tool area auth)
3099
3039
  `;
3100
3040
  out += ` - Use 'ai-tool areas' para listar todas as \xE1reas
3101
3041
  `;
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  impact,
11
11
  map,
12
12
  suggest
13
- } from "./chunk-IIUNJRGG.js";
13
+ } from "./chunk-A3QVUKVA.js";
14
14
 
15
15
  // src/cli.ts
16
16
  var HELP = `
@@ -62,9 +62,9 @@ EXEMPLOS:
62
62
  ai-tool context Button
63
63
  ai-tool areas
64
64
  ai-tool areas init
65
- ai-tool area meus-pets
66
- ai-tool area meus-pets --type=hook
67
- ai-tool area firebase --full
65
+ ai-tool area auth
66
+ ai-tool area auth --type=hook
67
+ ai-tool area dashboard --full
68
68
  ai-tool --mcp
69
69
 
70
70
  SOBRE:
@@ -87,7 +87,7 @@ async function main() {
87
87
  }
88
88
  }
89
89
  if (flags.mcp) {
90
- const { startMcpServer } = await import("./server-FG4LYSEG.js");
90
+ const { startMcpServer } = await import("./server-DMLKPY45.js");
91
91
  await startMcpServer();
92
92
  return;
93
93
  }
@@ -159,7 +159,7 @@ async function main() {
159
159
  case "area":
160
160
  if (!target) {
161
161
  console.error("\u274C Erro: nome da \xE1rea \xE9 obrigat\xF3rio para o comando area");
162
- console.error(" Exemplo: ai-tool area meus-pets");
162
+ console.error(" Exemplo: ai-tool area auth");
163
163
  console.error(" Use 'ai-tool areas' para listar \xE1reas dispon\xEDveis");
164
164
  process.exit(1);
165
165
  }
package/dist/index.d.ts CHANGED
@@ -418,13 +418,17 @@ declare function getFileDescription(cwd: string, filePath: string): string | und
418
418
  *
419
419
  * Detecta automaticamente a área de cada arquivo baseado em:
420
420
  * 1. Configuração manual (areas.config.json)
421
- * 2. Padrões de pasta
422
- * 3. Keywords no nome
421
+ * 2. Padrões de pasta (se autoDetect estiver habilitado)
422
+ * 3. Keywords no nome (se autoDetect estiver habilitado)
423
423
  */
424
424
 
425
425
  /**
426
426
  * Detecta a(s) área(s) de um arquivo
427
427
  * Retorna array porque um arquivo pode pertencer a múltiplas áreas
428
+ *
429
+ * Respeita settings.autoDetect:
430
+ * - true (default): usa config + padrões automáticos
431
+ * - false: usa APENAS a configuração manual
428
432
  */
429
433
  declare function detectFileAreas(filePath: string, config: AreasConfigFile): string[];
430
434
  /**
@@ -443,10 +447,13 @@ declare function inferFileDescription(filePath: string, category: FileCategory):
443
447
  /**
444
448
  * Padrões de detecção automática de áreas
445
449
  *
446
- * Define regras para detectar áreas baseado em:
450
+ * Define regras GENÉRICAS para detectar áreas baseado em:
447
451
  * - Padrões de pasta (glob)
448
452
  * - Keywords no nome do arquivo
449
453
  *
454
+ * IMPORTANTE: Estes padrões são usados apenas quando autoDetect: true
455
+ * Para projetos específicos, use areas.config.json com autoDetect: false
456
+ *
450
457
  * Suporta múltiplos frameworks:
451
458
  * - Next.js (App Router e Pages Router)
452
459
  * - Vite (React, Vue)
@@ -459,6 +466,9 @@ declare function inferFileDescription(filePath: string, category: FileCategory):
459
466
  /**
460
467
  * Padrões de pasta → área
461
468
  * Ordem importa: mais específico primeiro
469
+ *
470
+ * NOTA: Apenas padrões genéricos que funcionam em qualquer projeto
471
+ * Evitar padrões específicos de domínio (ex: pets, veterinary, etc)
462
472
  */
463
473
  declare const FOLDER_PATTERNS: Array<{
464
474
  pattern: RegExp;
@@ -467,6 +477,8 @@ declare const FOLDER_PATTERNS: Array<{
467
477
  }>;
468
478
  /**
469
479
  * Keywords no nome do arquivo → área
480
+ *
481
+ * NOTA: Apenas keywords genéricas que não são específicas de domínio
470
482
  */
471
483
  declare const KEYWORD_PATTERNS: Array<{
472
484
  keyword: RegExp;
@@ -474,11 +486,11 @@ declare const KEYWORD_PATTERNS: Array<{
474
486
  priority: number;
475
487
  }>;
476
488
  /**
477
- * Nomes amigáveis das áreas
489
+ * Nomes amigáveis das áreas (genéricos)
478
490
  */
479
491
  declare const AREA_NAMES: Record<string, string>;
480
492
  /**
481
- * Descrições padrão das áreas
493
+ * Descrições padrão das áreas (genéricas)
482
494
  */
483
495
  declare const AREA_DESCRIPTIONS: Record<string, string>;
484
496
 
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ import {
36
36
  setFileDescription,
37
37
  suggest,
38
38
  writeConfig
39
- } from "./chunk-IIUNJRGG.js";
39
+ } from "./chunk-A3QVUKVA.js";
40
40
  export {
41
41
  AREA_DESCRIPTIONS,
42
42
  AREA_NAMES,
@@ -8,7 +8,7 @@ import {
8
8
  impact,
9
9
  map,
10
10
  suggest
11
- } from "./chunk-IIUNJRGG.js";
11
+ } from "./chunk-A3QVUKVA.js";
12
12
 
13
13
  // src/mcp/server.ts
14
14
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -263,7 +263,7 @@ server.registerTool(
263
263
  description: `Mostra arquivos de uma area especifica, agrupados por categoria.
264
264
  Parametros: target (nome da area), type (filtrar categoria), full (todos arquivos).`,
265
265
  inputSchema: {
266
- target: z.string().min(1).describe("Nome da area: meus-pets, auth, stripe, etc"),
266
+ target: z.string().min(1).describe("Nome da area: auth, dashboard, billing, etc"),
267
267
  type: z.enum([
268
268
  "page",
269
269
  "layout",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justmpm/ai-tool",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Ferramenta de análise de dependências e impacto para projetos TypeScript/JavaScript. Usa Skott + Knip internamente.",
5
5
  "keywords": [
6
6
  "dependency-analysis",