diff --git a/scripts/check/check-db-rules.mjs b/scripts/check/check-db-rules.mjs index cc348d69f5..667a0c3e01 100644 --- a/scripts/check/check-db-rules.mjs +++ b/scripts/check/check-db-rules.mjs @@ -82,16 +82,19 @@ export const INTENTIONALLY_INTERNAL = new Set([ export const KNOWN_UNEXPORTED = INTENTIONALLY_INTERNAL; // (c) Leituras de SQL contra bancos EXTERNOS, permitidas por design (#3500). -// Estas rotas NÃO consultam o DB do OmniRoute (getDbInstance) — elas abrem o -// SQLite de OUTRO aplicativo (Cursor / Kiro) para auto-importar credenciais. -// Por isso NÃO podem viver em src/lib/db/ (que é o domínio do DB do OmniRoute): -// são leituras read-only de um arquivo externo, com caminho/escopo próprios. -// Continuam no allowlist como exceção DOCUMENTADA — o gate ainda bloqueia +// Esta rota NÃO consulta o DB do OmniRoute (getDbInstance) — ela abre o +// SQLite de OUTRO aplicativo (Kiro) para auto-importar credenciais. +// Por isso NÃO pode viver em src/lib/db/ (que é o domínio do DB do OmniRoute): +// é uma leitura read-only de um arquivo externo, com caminho/escopo próprio. +// Continua no allowlist como exceção DOCUMENTADA — o gate ainda bloqueia // QUALQUER novo SQL cru contra o DB do OmniRoute em rotas/handlers. // Toda a dívida real da Hard Rule #5 (15 rotas internas) foi migrada para // módulos src/lib/db/ nas slices do #3500; este set ficou só com as exceções. +// O análogo do Cursor (src/app/api/oauth/cursor/auto-import/route.ts) NÃO +// precisa de entrada aqui: o SQL contra o state.vscdb externo do Cursor vive +// em src/lib/cursor/tokenExtractor.ts, fora do escopo desta checagem (que só +// varre src/app/api/**/route.ts e open-sse/handlers/*.ts). const EXTERNAL_DB_ALLOWED = new Set([ - "src/app/api/oauth/cursor/auto-import/route.ts", // read-only no itemTable do SQLite do Cursor (DB externo) "src/app/api/oauth/kiro/auto-import/route.ts", // read-only no SQLite do Kiro (DB externo) ]);