@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
|
|
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
|
|
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: "
|
|
1253
|
-
{ pattern: /components\/stripe\//, area: "
|
|
1254
|
-
{ pattern: /components\/payment\//, area: "
|
|
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: "
|
|
1285
|
-
{ pattern: /components\/layouts\//, area: "
|
|
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
|
|
1312
|
-
{ pattern: /lib\/
|
|
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: "
|
|
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: "
|
|
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
|
-
//
|
|
1360
|
-
{ keyword: /[
|
|
1361
|
-
|
|
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
|
-
|
|
1384
|
-
{ keyword: /[
|
|
1385
|
-
|
|
1386
|
-
{ keyword: /[
|
|
1387
|
-
{ keyword: /[
|
|
1388
|
-
{ keyword: /[Pp]
|
|
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
|
-
|
|
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
|
-
|
|
1402
|
-
// Analytics
|
|
1356
|
+
// Analytics (genérico)
|
|
1403
1357
|
{ keyword: /[Aa]nalytics/, area: "analytics", priority: 60 },
|
|
1404
|
-
|
|
1405
|
-
{ keyword: /[
|
|
1406
|
-
//
|
|
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
|
-
|
|
1413
|
-
|
|
1414
|
-
{ keyword: /[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1408
|
+
export: "Exporta\xE7\xE3o",
|
|
1467
1409
|
core: "Core",
|
|
1468
|
-
|
|
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
|
-
|
|
1493
|
-
|
|
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
|
|
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
|
|
1438
|
+
notifications: "Sistema de notifica\xE7\xF5es",
|
|
1502
1439
|
chat: "Sistema de chat e mensagens",
|
|
1503
|
-
feedback: "Coleta de feedback
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
1528
|
-
|
|
1529
|
-
core: "Providers e
|
|
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
|
|
1467
|
+
assets: "Assets p\xFAblicos",
|
|
1533
1468
|
scripts: "Scripts de automa\xE7\xE3o",
|
|
1534
1469
|
// UI patterns
|
|
1535
|
-
forms: "Componentes de formul\xE1rio
|
|
1536
|
-
tables: "Componentes de tabela
|
|
1537
|
-
modals: "Modais e dialogs
|
|
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
|
|
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
|
|
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-
|
|
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
|
|
66
|
-
ai-tool area
|
|
67
|
-
ai-tool area
|
|
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-
|
|
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
|
|
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
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
impact,
|
|
9
9
|
map,
|
|
10
10
|
suggest
|
|
11
|
-
} from "./chunk-
|
|
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:
|
|
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