@skip-ai/scanner 0.4.0 → 0.6.0

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.
package/dist/index.js CHANGED
@@ -2,11 +2,9 @@
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
4
  import chalk from 'chalk';
5
- import { parseCli } from './cli.js';
6
- import { maskObject } from './scanner/secrets.js';
7
- import { uploadReport, pollStatus } from './uploader.js';
8
- import { banner, spinner, printSummary, fail } from './ui.js';
9
- // Modo legado de extração
5
+ import { parseCli, maskToken } from './cli.js';
6
+ import { uploadArtifactBundle } from './uploader.js';
7
+ import { banner, spinner, fail } from './ui.js';
10
8
  import { detectProject } from './detector.js';
11
9
  import { extractRoutes } from './scanner/routes.js';
12
10
  import { extractComponents } from './scanner/components.js';
@@ -16,7 +14,12 @@ import { buildBriefing } from './scanner/briefing.js';
16
14
  import { buildWidgetSnippet } from './scanner/widget-snippet.js';
17
15
  import { auditWcag, summarize, WCAG_RULES_VERSION } from './scanner/wcag.js';
18
16
  import { calculateScore, scoreColor } from './scanner/score.js';
19
- /** Aplica cor do chalk conforme o score (necessário porque chalk não é indexável por string). */
17
+ import { detectGuidedFlows } from './scanner/guided-flows.js';
18
+ import { appendHistory } from './scanner/history.js';
19
+ import { buildReport, maskReportSecrets, CLI_VERSION } from './reporter.js';
20
+ import { DEFAULT_IGNORE_PATTERNS } from './scanner/ignore.js';
21
+ import { buildScanArtifact, detectArtifactType, loadJsonFile, validateFileManifestArtifact, validateReportArtifact, validateUploadManifestArtifact, validateValidationArtifact, validateWcagAuditArtifact, } from './artifacts.js';
22
+ import { buildSemanticApplicationMap, createFileManifest, validateSamArtifact, writeSkipSamFile, } from './sam.js';
20
23
  function colorScore(score) {
21
24
  const c = scoreColor(score);
22
25
  if (c === 'green')
@@ -27,113 +30,145 @@ function colorScore(score) {
27
30
  return chalk.bold.magenta(`${score}/100`);
28
31
  return chalk.bold.red(`${score}/100`);
29
32
  }
30
- import { detectGuidedFlows } from './scanner/guided-flows.js';
31
- import { appendHistory } from './scanner/history.js';
32
- import { buildReport, maskReportSecrets, CLI_VERSION } from './reporter.js';
33
- import { DEFAULT_IGNORE_PATTERNS } from './scanner/ignore.js';
34
- // ============ MODO SEND (transportador puro) ============
33
+ function createScanId() {
34
+ return `scan_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
35
+ }
36
+ function writeJson(filePath, value) {
37
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
38
+ fs.writeFileSync(filePath, JSON.stringify(value, null, 2));
39
+ }
40
+ function validateArtifactByType(filePath, type, context) {
41
+ const payload = loadJsonFile(filePath);
42
+ if (type === 'semantic-map')
43
+ return validateSamArtifact(payload, context);
44
+ if (type === 'report')
45
+ return validateReportArtifact(payload);
46
+ if (type === 'wcag-audit')
47
+ return validateWcagAuditArtifact(payload);
48
+ if (type === 'file-manifest')
49
+ return validateFileManifestArtifact(payload);
50
+ if (type === 'upload-manifest')
51
+ return validateUploadManifestArtifact(payload);
52
+ if (type === 'validation')
53
+ return validateValidationArtifact(payload);
54
+ return { valid: true, errors: [], warnings: [], artifactType: type };
55
+ }
35
56
  async function sendMode(opts) {
36
57
  console.log(banner(CLI_VERSION));
37
- console.log(chalk.dim(` Modo: send (transportador)`));
58
+ console.log(chalk.dim(' Modo: send (artefatos)'));
38
59
  console.log(chalk.dim(` Plataforma: ${opts.url}`));
39
- console.log(chalk.dim(` Arquivo: ${opts.file}\n`));
40
- // 1. Ler o payload do arquivo
41
- if (!fs.existsSync(opts.file)) {
42
- throw new Error(`Arquivo não encontrado: ${opts.file}`);
43
- }
44
- const readSpinner = spinner('Lendo payload...');
45
- let payload;
46
- try {
47
- payload = JSON.parse(fs.readFileSync(opts.file, 'utf-8'));
48
- }
49
- catch (e) {
50
- readSpinner.fail();
51
- throw new Error(`JSON inválido em ${opts.file}: ${e instanceof Error ? e.message : String(e)}`);
52
- }
53
- readSpinner.succeed('Payload carregado.');
54
- // 2. Checagem mínima de estrutura
55
- if (!payload.navigationMap && !payload.routes) {
56
- throw new Error('O payload não contém navigationMap nem routes. Use o validador da skill antes de enviar: node validate-report.js <arquivo>');
57
- }
58
- // 3. Preencher metadados se faltarem
59
- if (!payload.metadata) {
60
- payload.metadata = {
61
- framework: payload.framework ?? 'unknown',
62
- language: payload.language ?? 'TypeScript',
63
- packageCount: 0,
64
- typescript: payload.language === 'TypeScript',
65
- scannedAt: new Date().toISOString(),
66
- cliVersion: CLI_VERSION,
67
- };
68
- }
69
- // 4. Mascara secrets
70
- const { result: masked, count: secretsFound } = maskObject(payload);
71
- const report = { ...masked, secretsFound };
72
- if (secretsFound > 0) {
73
- console.log(chalk.yellow(`⚠ ${secretsFound} possível(eis) secret(s) mascarado(s) antes do envio.`));
74
- }
75
- if (opts.verbose) {
76
- console.log('\n' + chalk.dim('Payload a enviar:'));
77
- console.log(chalk.dim(JSON.stringify(report, null, 2).slice(0, 2000) + (JSON.stringify(report).length > 2000 ? '...' : '')));
78
- }
79
- // 5. Enviar
80
- const uploadSpinner = spinner('Enviando para o Skip Cloud...');
81
- const scanId = await uploadReport(report, opts.token, opts.url);
82
- uploadSpinner.succeed(`Scan enviado! ID: ${chalk.yellow(scanId)}`);
83
- // 6. Polling (opcional)
84
- if (opts.noPolling) {
85
- console.log(chalk.dim('\n--no-polling: não aguardando enriquecimento.\n'));
86
- return;
60
+ console.log(chalk.dim(` Token: ${maskToken(opts.token)}`));
61
+ console.log(chalk.dim(` Arquivos: ${opts.file.join(', ')}\n`));
62
+ const artifacts = [];
63
+ let expectedScanId = opts.scanId;
64
+ for (const file of opts.file) {
65
+ if (!fs.existsSync(file))
66
+ throw new Error(`Arquivo não encontrado: ${file}`);
67
+ let payload;
68
+ try {
69
+ payload = loadJsonFile(file);
70
+ }
71
+ catch (e) {
72
+ throw new Error(`JSON inválido em ${file}: ${e instanceof Error ? e.message : String(e)}`);
73
+ }
74
+ const detected = opts.type ?? detectArtifactType(file, payload);
75
+ if (detected === 'semantic-map') {
76
+ const result = validateSamArtifact(payload, {
77
+ currentScanId: expectedScanId,
78
+ expectedFilename: '.skip-sam.json',
79
+ });
80
+ if (!result.valid)
81
+ throw new Error(result.errors.join('\n'));
82
+ expectedScanId = String(payload.scanId ?? expectedScanId ?? '');
83
+ }
84
+ else {
85
+ const result = validateArtifactByType(file, detected, {});
86
+ if (!result.valid)
87
+ throw new Error(result.errors.join('\n'));
88
+ }
89
+ const scanId = String(payload.scanId ?? expectedScanId ?? createScanId());
90
+ artifacts.push(buildScanArtifact(path.dirname(path.resolve(file)), path.basename(file), detected, scanId));
87
91
  }
88
- const status = await pollStatus(scanId, opts.token, opts.url);
89
- printSummary({ scanId, entitiesCount: status.entitiesCount, baseUrl: opts.url, status: status.status });
90
- if (status.status !== 'COMPLETED')
91
- process.exitCode = 1;
92
+ const manifest = {
93
+ schemaVersion: '1.0.0',
94
+ artifactType: 'upload-manifest',
95
+ scanId: expectedScanId ?? artifacts[0].scanId,
96
+ artifacts: artifacts.map(({ absolutePath, ...artifact }) => artifact),
97
+ };
98
+ const uploadSpinner = spinner('Enviando artefatos para o Skip Cloud...');
99
+ const result = await uploadArtifactBundle(artifacts, opts.token, opts.url, manifest);
100
+ uploadSpinner.succeed(`Artefatos enviados e confirmados. Scan ID: ${chalk.yellow(result.scanId)}`);
92
101
  }
93
- // ============ MODO SCAN (legado, extração por regex) ============
94
102
  async function scanMode(opts) {
95
103
  console.log(banner(CLI_VERSION));
96
- console.log(chalk.dim(` Modo: scan (legado, regex)`));
97
104
  const rootDir = path.resolve(opts.dir);
98
- console.log(chalk.dim(` Diretório: ${rootDir}`));
99
- console.log(chalk.dim(` Plataforma: ${opts.url}\n`));
100
- console.log(chalk.yellow(' ⚠ Modo scan usa extração por regex (menos inteligente que o agente).\n'));
105
+ const outputDir = path.resolve(opts.outputDir ?? rootDir);
106
+ const scanId = createScanId();
107
+ const startedAt = new Date().toISOString();
101
108
  const ignorePatterns = [...DEFAULT_IGNORE_PATTERNS, ...opts.ignore];
102
- const detectSpinner = spinner('Detectando projeto...');
109
+ console.log(chalk.dim(' Modo: scan'));
110
+ console.log(chalk.dim(` Diretório: ${rootDir}`));
111
+ console.log(chalk.dim(` Output: ${outputDir}`));
112
+ console.log(chalk.dim(` Plataforma: ${opts.url}`));
113
+ console.log(chalk.dim(` Scan ID: ${scanId}\n`));
114
+ console.log('[1/10] Detectando projeto');
103
115
  const signature = detectProject(rootDir);
104
- detectSpinner.succeed(`Framework detectado: ${chalk.cyan(signature.framework)} (${signature.language})`);
105
- const routeSpinner = spinner('Extraindo rotas...');
116
+ const projectName = path.basename(rootDir);
117
+ console.log('[2/10] Descobrindo arquivos');
118
+ const fileManifest = await createFileManifest(rootDir, ignorePatterns);
119
+ console.log('[3/10] Detectando rotas e telas');
106
120
  const routes = await extractRoutes(rootDir, signature.srcDir, ignorePatterns);
107
- routeSpinner.succeed(`${routes.length} rotas encontradas`);
108
- const compSpinner = spinner('Extraindo componentes e eventos...');
109
- const { components, events } = await extractComponents(rootDir, opts.ignore);
110
- compSpinner.succeed(`${components.length} componentes, ${events.length} eventos`);
111
- const apiSpinner = spinner('Extraindo chamadas de API...');
112
- const apiCalls = await extractApiCalls(rootDir, opts.ignore);
113
- apiSpinner.succeed(`${apiCalls.length} chamadas de API detectadas`);
114
- const navSpinner = spinner('Construindo mapa de navegação...');
115
121
  const navigationMap = await extractNavigation(rootDir, opts.ignore, {
116
122
  pagesRoutes: routes.map((r) => ({ physicalPath: r.physicalPath, logicalRoute: r.logicalRoute })),
117
123
  srcDir: signature.srcDir,
118
124
  });
119
- const totalActions = navigationMap.screens.reduce((acc, s) => acc + s.actions.length, 0);
120
- navSpinner.succeed(`${navigationMap.screens.length} telas mapeadas, ${totalActions} ações, ${navigationMap.navigationGraph.length} arestas de navegação`);
125
+ console.log('[4/10] Analisando componentes');
126
+ const { components, events } = await extractComponents(rootDir, opts.ignore);
127
+ const apiCalls = await extractApiCalls(rootDir, opts.ignore);
121
128
  const briefing = buildBriefing(navigationMap);
122
129
  const widgetSnippet = buildWidgetSnippet();
123
- // ---- Auditoria WCAG ----
124
- // Lê os arquivos das telas LOCALMENTE (não envia o conteúdo ao servidor).
125
- const auditSpinner = spinner('Auditando WCAG...');
130
+ const guidedFlows = detectGuidedFlows(navigationMap);
131
+ console.log('[5/10] Gerando `.skip-sam.json`');
132
+ let sam = buildSemanticApplicationMap({
133
+ scanId,
134
+ startedAt,
135
+ rootDir,
136
+ signature,
137
+ routes,
138
+ components,
139
+ apiCalls,
140
+ navigationMap,
141
+ guidedFlows,
142
+ fileManifest: fileManifest.files,
143
+ sourceManifestSha256: fileManifest.sha256,
144
+ projectName,
145
+ });
146
+ console.log('[6/10] Validando `.skip-sam.json`');
147
+ const samValidation = validateSamArtifact(sam, {
148
+ currentScanId: scanId,
149
+ scanStartedAt: startedAt,
150
+ fileManifest: fileManifest.files,
151
+ sourceManifestSha256: fileManifest.sha256,
152
+ expectedFilename: '.skip-sam.json',
153
+ });
154
+ sam.validation = { valid: samValidation.valid, errors: samValidation.errors, warnings: samValidation.warnings };
155
+ if (!samValidation.valid) {
156
+ sam.status = sam.status === 'complete' ? 'partial' : sam.status;
157
+ if (opts.validateSam)
158
+ throw new Error(`Falha ao validar .skip-sam.json:\n${samValidation.errors.join('\n')}`);
159
+ }
160
+ const samPath = writeSkipSamFile(outputDir, sam);
161
+ console.log('[7/10] Gerando auditoria WCAG');
126
162
  const contentsByFile = {};
127
163
  for (const s of navigationMap.screens) {
128
- const abs = path.join(rootDir, s.filePath);
129
164
  try {
130
- contentsByFile[s.filePath] = fs.readFileSync(abs, 'utf-8');
165
+ contentsByFile[s.filePath] = fs.readFileSync(path.join(rootDir, s.filePath), 'utf-8');
131
166
  }
132
167
  catch {
133
168
  contentsByFile[s.filePath] = '';
134
169
  }
135
170
  }
136
- const violations = auditWcag(navigationMap.screens, contentsByFile);
171
+ const { violations, checks } = auditWcag(navigationMap.screens, contentsByFile);
137
172
  const summary = summarize(violations);
138
173
  const { score, level, total } = calculateScore(violations);
139
174
  const wcag = {
@@ -141,13 +176,10 @@ async function scanMode(opts) {
141
176
  level,
142
177
  violations,
143
178
  summary,
179
+ checks,
144
180
  auditedAt: new Date().toISOString(),
145
181
  rulesVersion: WCAG_RULES_VERSION,
146
182
  };
147
- auditSpinner.succeed(`WCAG: score ${colorScore(score)} (${level}), ${total} violação(ões) [${summary.critical}c/${summary.serious}s/${summary.moderate}m/${summary.minor}i]`);
148
- // ---- Fluxos guiados ----
149
- const guidedFlows = detectGuidedFlows(navigationMap);
150
- // ---- Histórico (local, enviado junto pra o dashboard) ----
151
183
  const historyEntry = {
152
184
  scannedAt: wcag.auditedAt,
153
185
  score,
@@ -156,6 +188,7 @@ async function scanMode(opts) {
156
188
  serious: summary.serious,
157
189
  moderate: summary.moderate,
158
190
  minor: summary.minor,
191
+ unknown: summary.unknown,
159
192
  };
160
193
  const history = appendHistory(rootDir, historyEntry);
161
194
  const uniqueFiles = new Set([
@@ -164,52 +197,130 @@ async function scanMode(opts) {
164
197
  ...apiCalls.map((a) => a.filepath),
165
198
  ...navigationMap.screens.map((s) => s.filePath),
166
199
  ]);
167
- const projectName = path.basename(rootDir);
168
200
  const rawReport = buildReport({
169
- signature, routes, components, events, apiCalls,
170
- navigationMap, widgetSnippet, briefing, wcag, guidedFlows, history,
171
- filesScanned: uniqueFiles.size, projectName,
201
+ signature,
202
+ routes,
203
+ components,
204
+ events,
205
+ apiCalls,
206
+ navigationMap,
207
+ widgetSnippet,
208
+ briefing,
209
+ wcag,
210
+ guidedFlows,
211
+ history,
212
+ filesScanned: uniqueFiles.size,
213
+ projectName,
172
214
  });
215
+ rawReport.scanId = scanId;
216
+ rawReport.semanticMapSummary = {
217
+ status: sam.status,
218
+ entities: sam.entities.length,
219
+ relationships: sam.relationships.length,
220
+ routes: sam.stats.routes,
221
+ components: sam.stats.components,
222
+ coverage: sam.coverage.percentage,
223
+ };
224
+ const wcagPayload = { schemaVersion: '1.0.0', artifactType: 'wcag-audit', scanId, ...wcag };
225
+ const fileManifestPayload = { schemaVersion: '1.0.0', artifactType: 'file-manifest', scanId, files: fileManifest.files, sha256: fileManifest.sha256 };
226
+ writeJson(path.join(outputDir, '.skip-wcag-audit.json'), wcagPayload);
227
+ writeJson(path.join(outputDir, 'scan-file-manifest.json'), fileManifestPayload);
228
+ const samArtifact = buildScanArtifact(outputDir, '.skip-sam.json', 'semantic-map', scanId);
229
+ rawReport.relatedArtifacts = [
230
+ {
231
+ artifactType: 'semantic-map',
232
+ filename: '.skip-sam.json',
233
+ path: path.relative(outputDir, samPath) || '.skip-sam.json',
234
+ required: true,
235
+ scanId,
236
+ sizeBytes: samArtifact.sizeBytes,
237
+ sha256: samArtifact.sha256,
238
+ },
239
+ ];
173
240
  const { report, secretsFound } = maskReportSecrets(rawReport);
174
- if (secretsFound > 0) {
175
- console.log(chalk.yellow(`⚠ ${secretsFound} possível(eis) secret(s) mascarado(s) antes do envio.`));
241
+ if (secretsFound > 0)
242
+ console.log(chalk.yellow(`${secretsFound} possível(eis) secret(s) mascarado(s) antes do envio.`));
243
+ writeJson(path.join(outputDir, '.skip-report.json'), report);
244
+ console.log('[8/10] Validando artefatos');
245
+ const baseArtifacts = [
246
+ buildScanArtifact(outputDir, '.skip-report.json', 'report', scanId),
247
+ samArtifact,
248
+ buildScanArtifact(outputDir, '.skip-wcag-audit.json', 'wcag-audit', scanId),
249
+ buildScanArtifact(outputDir, 'scan-file-manifest.json', 'file-manifest', scanId),
250
+ ];
251
+ const uploadManifestPayload = {
252
+ schemaVersion: '1.0.0',
253
+ artifactType: 'upload-manifest',
254
+ scanId,
255
+ artifacts: baseArtifacts.map(({ absolutePath, ...artifact }) => artifact),
256
+ };
257
+ writeJson(path.join(outputDir, 'upload-manifest.json'), uploadManifestPayload);
258
+ const uploadArtifact = buildScanArtifact(outputDir, 'upload-manifest.json', 'upload-manifest', scanId);
259
+ const validationPayload = {
260
+ schemaVersion: '1.0.0',
261
+ artifactType: 'validation',
262
+ scanId,
263
+ valid: true,
264
+ generatedAt: new Date().toISOString(),
265
+ artifacts: [...baseArtifacts, uploadArtifact].map((artifact) => ({
266
+ filename: artifact.filename,
267
+ artifactType: artifact.artifactType,
268
+ valid: true,
269
+ sha256: artifact.sha256,
270
+ })),
271
+ };
272
+ writeJson(path.join(outputDir, 'scan-validation.json'), validationPayload);
273
+ const artifacts = [...baseArtifacts, uploadArtifact, buildScanArtifact(outputDir, 'scan-validation.json', 'validation', scanId)];
274
+ for (const artifact of artifacts) {
275
+ const validation = validateArtifactByType(artifact.absolutePath, artifact.artifactType, {
276
+ currentScanId: scanId,
277
+ scanStartedAt: startedAt,
278
+ fileManifest: fileManifest.files,
279
+ sourceManifestSha256: fileManifest.sha256,
280
+ expectedFilename: '.skip-sam.json',
281
+ });
282
+ if (!validation.valid)
283
+ throw new Error(`Artefato inválido (${artifact.filename}):\n${validation.errors.join('\n')}`);
176
284
  }
177
- if (opts.verbose) {
178
- console.log('\n' + chalk.dim('Briefing:'));
179
- console.log(chalk.dim(briefing));
180
- console.log('\n' + chalk.dim('Top violações WCAG:'));
181
- for (const v of violations.slice(0, 8)) {
182
- console.log(chalk.dim(` [${v.severity}] ${v.title} — ${v.screen} (${v.selector})`));
183
- }
285
+ let uploaded = false;
286
+ let confirmed = false;
287
+ console.log('[9/10] Enviando artefatos');
288
+ if (opts.send) {
289
+ const bundleManifestPayload = {
290
+ ...uploadManifestPayload,
291
+ artifacts: artifacts.map(({ absolutePath, ...artifact }) => artifact),
292
+ };
293
+ const result = await uploadArtifactBundle(artifacts, opts.token, opts.url, bundleManifestPayload);
294
+ uploaded = true;
295
+ confirmed = result.confirmations.some((item) => item.filename === '.skip-sam.json' && item.persisted === true);
184
296
  }
185
- if (opts.dryRun) {
186
- console.log(chalk.bold.cyan('\n🏃 Modo dry-run: pulando envio.\n'));
187
- console.log(` Telas mapeadas: ${chalk.bold(navigationMap.screens.length)}`);
188
- console.log(` Ações: ${chalk.bold(totalActions)}`);
189
- console.log(` Arestas: ${chalk.bold(navigationMap.navigationGraph.length)}`);
190
- console.log(` Fluxos guiados: ${chalk.bold(guidedFlows.length)}`);
191
- console.log(` Score WCAG: ${colorScore(score)} (${level})`);
192
- console.log(` Violações WCAG: ${chalk.bold(String(total))} [${summary.critical} critical, ${summary.serious} serious, ${summary.moderate} moderate, ${summary.minor} minor]`);
193
- console.log(` Histórico: ${chalk.bold(String(history.length))} scan(s)\n`);
194
- return;
297
+ else {
298
+ console.log(chalk.dim(' --send não informado: upload pulado.'));
195
299
  }
196
- const uploadSpinner = spinner('Enviando para o Skip Cloud...');
197
- const scanId = await uploadReport(report, opts.token, opts.url);
198
- uploadSpinner.succeed(`Scan enviado! ID: ${chalk.yellow(scanId)}`);
199
- const status = await pollStatus(scanId, opts.token, opts.url);
200
- printSummary({ scanId, entitiesCount: status.entitiesCount, baseUrl: opts.url, status: status.status });
201
- if (status.status !== 'COMPLETED')
202
- process.exitCode = 1;
300
+ console.log('[10/10] Confirmando a API');
301
+ if (opts.send && !confirmed)
302
+ throw new Error('Upload incompleto:\n`.skip-sam.json` não foi confirmado pela API.');
303
+ console.log('\nSAM');
304
+ console.log(`- Arquivo: .skip-sam.json`);
305
+ console.log(`- Caminho: ${samPath}`);
306
+ console.log(`- Criado no scan atual: sim`);
307
+ console.log(`- Scan ID: ${scanId}`);
308
+ console.log(`- Gerado em: ${sam.generatedAt}`);
309
+ console.log(`- Entidades: ${sam.entities.length}`);
310
+ console.log(`- Relacionamentos: ${sam.relationships.length}`);
311
+ console.log(`- Status: ${sam.status}`);
312
+ console.log(`- Validação: ${sam.validation.valid ? 'aprovada' : 'reprovada'}`);
313
+ console.log(`- SHA-256: ${samArtifact.sha256}`);
314
+ console.log(`- Enviado: ${uploaded ? 'sim' : 'não'}`);
315
+ console.log(`- Confirmado pela API: ${confirmed ? 'sim' : 'não'}`);
316
+ console.log(`- Score WCAG: ${colorScore(score)} (${level})`);
203
317
  }
204
- // ============ Entry point ============
205
318
  async function main() {
206
319
  const { command, opts } = parseCli();
207
- if (command === 'send') {
320
+ if (command === 'send')
208
321
  await sendMode(opts);
209
- }
210
- else {
322
+ else
211
323
  await scanMode(opts);
212
- }
213
324
  }
214
325
  main().catch((err) => {
215
326
  const msg = err instanceof Error ? err.message : String(err);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { NavigationMap } from './scanner/navigation.js';
6
6
  import type { WcagReport } from './scanner/wcag.js';
7
7
  import type { GuidedFlow } from './scanner/guided-flows.js';
8
8
  import type { HistoryEntry } from './scanner/history.js';
9
- export declare const CLI_VERSION = "0.4.0";
9
+ export declare const CLI_VERSION = "0.6.0";
10
10
  export interface ScanMetadata {
11
11
  framework: string;
12
12
  language: string;
@@ -16,6 +16,7 @@ export interface ScanMetadata {
16
16
  cliVersion: string;
17
17
  }
18
18
  export interface ScanReport {
19
+ scanId?: string;
19
20
  projectName: string;
20
21
  filesScanned: number;
21
22
  routes: RouteEntry[];
@@ -36,6 +37,23 @@ export interface ScanReport {
36
37
  history: HistoryEntry[];
37
38
  secretsFound: number;
38
39
  metadata: ScanMetadata;
40
+ semanticMapSummary?: {
41
+ status: string;
42
+ entities: number;
43
+ relationships: number;
44
+ routes: number;
45
+ components: number;
46
+ coverage: number;
47
+ };
48
+ relatedArtifacts?: Array<{
49
+ artifactType: string;
50
+ filename: string;
51
+ path: string;
52
+ required: boolean;
53
+ scanId: string;
54
+ sizeBytes: number;
55
+ sha256: string;
56
+ }>;
39
57
  }
40
58
  export interface BuildReportInput {
41
59
  signature: ProjectSignature;
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,mFAAmF;IACnF,aAAa,EAAE,aAAa,CAAC;IAC7B,qFAAqF;IACrF,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,IAAI,EAAE,UAAU,CAAC;IACjB,qEAAqE;IACrE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kEAAkE;IAClE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CA2B/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAGlG"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
package/dist/reporter.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { maskObject } from './scanner/secrets.js';
2
- export const CLI_VERSION = '0.4.0';
2
+ export const CLI_VERSION = '0.6.0';
3
3
  /**
4
4
  * Monta o payload final (ScanReport) enviado para a API.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAkDnC;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjK,MAAM,MAAM,GAAe;QACzB,WAAW;QACX,YAAY;QACZ,MAAM;QACN,UAAU;QACV,MAAM;QACN,QAAQ;QACR,aAAa;QACb,aAAa;QACb,QAAQ;QACR,IAAI;QACJ,WAAW;QACX,OAAO;QACP,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE;YACR,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,UAAU,EAAE,SAAS,CAAC,QAAQ,KAAK,YAAY;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,WAAW;SACxB;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAoEnC;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjK,MAAM,MAAM,GAAe;QACzB,WAAW;QACX,YAAY;QACZ,MAAM;QACN,UAAU;QACV,MAAM;QACN,QAAQ;QACR,aAAa;QACb,aAAa;QACb,QAAQ;QACR,IAAI;QACJ,WAAW;QACX,OAAO;QACP,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE;YACR,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,UAAU,EAAE,SAAS,CAAC,QAAQ,KAAK,YAAY;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,WAAW;SACxB;KACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAC7E,CAAC"}