@skillsmith/core 2.0.2 → 2.1.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/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +41 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
- package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
- package/dist/src/repositories/SyncConfigRepository.js +202 -0
- package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
- package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
- package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
- package/dist/src/repositories/SyncHistoryRepository.js +235 -0
- package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
- package/dist/src/scripts/github-import/github-client.d.ts +24 -0
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +103 -0
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/github-import/index.js +3 -10
- package/dist/src/scripts/github-import/index.js.map +1 -1
- package/dist/src/scripts/merge-skills.d.ts +56 -0
- package/dist/src/scripts/merge-skills.d.ts.map +1 -0
- package/dist/src/scripts/merge-skills.js +411 -0
- package/dist/src/scripts/merge-skills.js.map +1 -0
- package/dist/src/scripts/skill-scanner/index.d.ts +9 -2
- package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/index.js +98 -7
- package/dist/src/scripts/skill-scanner/index.js.map +1 -1
- package/dist/src/scripts/skill-scanner/logger.d.ts +51 -0
- package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/logger.js +255 -1
- package/dist/src/scripts/skill-scanner/logger.js.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.js +67 -15
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.d.ts +5 -2
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.js +156 -39
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
- package/dist/src/scripts/skill-scanner/types.d.ts +44 -0
- package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
- package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
- package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
- package/dist/src/sync/BackgroundSyncService.js +214 -0
- package/dist/src/sync/BackgroundSyncService.js.map +1 -0
- package/dist/src/sync/SyncEngine.d.ts +76 -0
- package/dist/src/sync/SyncEngine.d.ts.map +1 -0
- package/dist/src/sync/SyncEngine.js +272 -0
- package/dist/src/sync/SyncEngine.js.map +1 -0
- package/dist/src/sync/index.d.ts +11 -0
- package/dist/src/sync/index.d.ts.map +1 -0
- package/dist/src/sync/index.js +14 -0
- package/dist/src/sync/index.js.map +1 -0
- package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
- package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
- package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
- package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
- package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncEngine.test.js +298 -0
- package/dist/tests/sync/SyncEngine.test.js.map +1 -0
- package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
- package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
- package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
- package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SMI-1189: Logger
|
|
3
|
+
* SMI-XXX: Improved output format with progress bars and tables
|
|
3
4
|
*
|
|
4
5
|
* Logging utilities for the security scanner.
|
|
5
6
|
*/
|
|
6
7
|
import type { SecurityFinding } from '../../security/index.js';
|
|
8
|
+
import type { SkillScanResult } from './types.js';
|
|
7
9
|
/**
|
|
8
10
|
* Formats a duration in milliseconds to human-readable string
|
|
9
11
|
*
|
|
@@ -56,4 +58,53 @@ export declare function logCompletion(processed: number, total: number): void;
|
|
|
56
58
|
* @param description - Optional description of the file
|
|
57
59
|
*/
|
|
58
60
|
export declare function logFileOutput(filename: string, count: number, description?: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Log the initial scan summary banner
|
|
63
|
+
*
|
|
64
|
+
* @param skillCount - Total number of skills to scan
|
|
65
|
+
* @param inputPath - Path to input file
|
|
66
|
+
* @param outputDir - Output directory
|
|
67
|
+
*/
|
|
68
|
+
export declare function logScanStart(skillCount: number, inputPath: string, outputDir: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Create a progress bar string
|
|
71
|
+
*
|
|
72
|
+
* @param current - Current progress value
|
|
73
|
+
* @param total - Total value
|
|
74
|
+
* @param width - Width of the progress bar in characters
|
|
75
|
+
* @returns Progress bar string
|
|
76
|
+
*/
|
|
77
|
+
export declare function createProgressBar(current: number, total: number, width?: number): string;
|
|
78
|
+
/**
|
|
79
|
+
* Log progress with a visual progress bar
|
|
80
|
+
*
|
|
81
|
+
* @param processed - Number of items processed
|
|
82
|
+
* @param total - Total number of items
|
|
83
|
+
* @param inPlace - Whether to update in place (overwrite previous line)
|
|
84
|
+
*/
|
|
85
|
+
export declare function logProgressBar(processed: number, total: number, inPlace?: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* Clear the progress line and move to new line
|
|
88
|
+
*/
|
|
89
|
+
export declare function clearProgressLine(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Log a table of quarantined skills
|
|
92
|
+
*
|
|
93
|
+
* @param results - Array of quarantined scan results
|
|
94
|
+
* @param maxRows - Maximum number of rows to display
|
|
95
|
+
*/
|
|
96
|
+
export declare function logQuarantineTable(results: SkillScanResult[], maxRows?: number): void;
|
|
97
|
+
/**
|
|
98
|
+
* Log a summary of safe skills
|
|
99
|
+
*
|
|
100
|
+
* @param results - Array of safe scan results
|
|
101
|
+
* @param maxDisplay - Maximum number to display
|
|
102
|
+
*/
|
|
103
|
+
export declare function logSafeSkillsSummary(results: SkillScanResult[], maxDisplay?: number): void;
|
|
104
|
+
/**
|
|
105
|
+
* Log categorized results by severity
|
|
106
|
+
*
|
|
107
|
+
* @param results - Array of scan results
|
|
108
|
+
*/
|
|
109
|
+
export declare function logCategorizedResults(results: SkillScanResult[]): void;
|
|
59
110
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAA;AAChF,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,YAAY,CAAA;AA+DnE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK7C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAW1E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,CAAC,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAIzF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAe3F;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAS5F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI,CAS9F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAyBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,GAAE,MAAW,GAAG,IAAI,CAyDzF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI,CAyB7F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CA4DtE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SMI-1189: Logger
|
|
3
|
+
* SMI-XXX: Improved output format with progress bars and tables
|
|
3
4
|
*
|
|
4
5
|
* Logging utilities for the security scanner.
|
|
5
6
|
*/
|
|
@@ -12,6 +13,53 @@ const SEVERITY_ICONS = {
|
|
|
12
13
|
medium: '[MEDIUM] ',
|
|
13
14
|
low: '[LOW] ',
|
|
14
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* ANSI color codes for terminal output
|
|
18
|
+
*/
|
|
19
|
+
const COLORS = {
|
|
20
|
+
reset: '\x1b[0m',
|
|
21
|
+
bold: '\x1b[1m',
|
|
22
|
+
dim: '\x1b[2m',
|
|
23
|
+
red: '\x1b[31m',
|
|
24
|
+
green: '\x1b[32m',
|
|
25
|
+
yellow: '\x1b[33m',
|
|
26
|
+
blue: '\x1b[34m',
|
|
27
|
+
magenta: '\x1b[35m',
|
|
28
|
+
cyan: '\x1b[36m',
|
|
29
|
+
white: '\x1b[37m',
|
|
30
|
+
bgRed: '\x1b[41m',
|
|
31
|
+
bgGreen: '\x1b[42m',
|
|
32
|
+
bgYellow: '\x1b[43m',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Check if colors should be used (TTY and not CI)
|
|
36
|
+
*/
|
|
37
|
+
function useColors() {
|
|
38
|
+
return process.stdout.isTTY && !process.env.CI && !process.env.NO_COLOR;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Apply color to text if colors are enabled
|
|
42
|
+
*/
|
|
43
|
+
function colorize(text, color) {
|
|
44
|
+
return useColors() ? `${COLORS[color]}${text}${COLORS.reset}` : text;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get color for severity level
|
|
48
|
+
*/
|
|
49
|
+
function getSeverityColor(severity) {
|
|
50
|
+
switch (severity.toUpperCase()) {
|
|
51
|
+
case 'CRITICAL':
|
|
52
|
+
return 'red';
|
|
53
|
+
case 'HIGH':
|
|
54
|
+
return 'magenta';
|
|
55
|
+
case 'MEDIUM':
|
|
56
|
+
return 'yellow';
|
|
57
|
+
case 'LOW':
|
|
58
|
+
return 'cyan';
|
|
59
|
+
default:
|
|
60
|
+
return 'white';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
15
63
|
/**
|
|
16
64
|
* Formats a duration in milliseconds to human-readable string
|
|
17
65
|
*
|
|
@@ -99,6 +147,212 @@ export function logCompletion(processed, total) {
|
|
|
99
147
|
*/
|
|
100
148
|
export function logFileOutput(filename, count, description) {
|
|
101
149
|
const desc = description ? ` ${description}` : '';
|
|
102
|
-
|
|
150
|
+
const checkmark = colorize('[OK]', 'green');
|
|
151
|
+
console.log(` ${checkmark} ${filename} (${count} skills${desc})`);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Log the initial scan summary banner
|
|
155
|
+
*
|
|
156
|
+
* @param skillCount - Total number of skills to scan
|
|
157
|
+
* @param inputPath - Path to input file
|
|
158
|
+
* @param outputDir - Output directory
|
|
159
|
+
*/
|
|
160
|
+
export function logScanStart(skillCount, inputPath, outputDir) {
|
|
161
|
+
const border = '='.repeat(60);
|
|
162
|
+
console.log();
|
|
163
|
+
console.log(colorize(border, 'cyan'));
|
|
164
|
+
console.log(colorize(' SKILLSMITH SECURITY SCANNER', 'bold'));
|
|
165
|
+
console.log(colorize(border, 'cyan'));
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(` ${colorize('Input:', 'dim')} ${inputPath}`);
|
|
168
|
+
console.log(` ${colorize('Output:', 'dim')} ${outputDir}`);
|
|
169
|
+
console.log(` ${colorize('Skills:', 'dim')} ${colorize(skillCount.toString(), 'bold')} skills to scan`);
|
|
170
|
+
console.log();
|
|
171
|
+
console.log(colorize(border, 'cyan'));
|
|
172
|
+
console.log();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create a progress bar string
|
|
176
|
+
*
|
|
177
|
+
* @param current - Current progress value
|
|
178
|
+
* @param total - Total value
|
|
179
|
+
* @param width - Width of the progress bar in characters
|
|
180
|
+
* @returns Progress bar string
|
|
181
|
+
*/
|
|
182
|
+
export function createProgressBar(current, total, width = 30) {
|
|
183
|
+
const percentage = Math.min(current / total, 1);
|
|
184
|
+
const filled = Math.round(width * percentage);
|
|
185
|
+
const empty = width - filled;
|
|
186
|
+
const filledChar = useColors() ? '█' : '#';
|
|
187
|
+
const emptyChar = useColors() ? '░' : '-';
|
|
188
|
+
const bar = filledChar.repeat(filled) + emptyChar.repeat(empty);
|
|
189
|
+
const pct = (percentage * 100).toFixed(1).padStart(5);
|
|
190
|
+
return `[${bar}] ${pct}%`;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Log progress with a visual progress bar
|
|
194
|
+
*
|
|
195
|
+
* @param processed - Number of items processed
|
|
196
|
+
* @param total - Total number of items
|
|
197
|
+
* @param inPlace - Whether to update in place (overwrite previous line)
|
|
198
|
+
*/
|
|
199
|
+
export function logProgressBar(processed, total, inPlace = true) {
|
|
200
|
+
const bar = createProgressBar(processed, total);
|
|
201
|
+
const status = `${processed.toString().padStart(total.toString().length)}/${total}`;
|
|
202
|
+
if (inPlace && process.stdout.isTTY) {
|
|
203
|
+
process.stdout.write(`\r Scanning: ${bar} ${status}`);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.log(` Scanning: ${bar} ${status}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Clear the progress line and move to new line
|
|
211
|
+
*/
|
|
212
|
+
export function clearProgressLine() {
|
|
213
|
+
if (process.stdout.isTTY) {
|
|
214
|
+
process.stdout.write('\r' + ' '.repeat(80) + '\r');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Truncate a string to a maximum length with ellipsis
|
|
219
|
+
*
|
|
220
|
+
* @param str - String to truncate
|
|
221
|
+
* @param maxLen - Maximum length
|
|
222
|
+
* @returns Truncated string
|
|
223
|
+
*/
|
|
224
|
+
function truncate(str, maxLen) {
|
|
225
|
+
if (str.length <= maxLen)
|
|
226
|
+
return str;
|
|
227
|
+
return str.slice(0, maxLen - 3) + '...';
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Pad a string to a fixed width
|
|
231
|
+
*
|
|
232
|
+
* @param str - String to pad
|
|
233
|
+
* @param width - Target width
|
|
234
|
+
* @returns Padded string
|
|
235
|
+
*/
|
|
236
|
+
function padRight(str, width) {
|
|
237
|
+
return str.length >= width ? str.slice(0, width) : str + ' '.repeat(width - str.length);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Log a table of quarantined skills
|
|
241
|
+
*
|
|
242
|
+
* @param results - Array of quarantined scan results
|
|
243
|
+
* @param maxRows - Maximum number of rows to display
|
|
244
|
+
*/
|
|
245
|
+
export function logQuarantineTable(results, maxRows = 20) {
|
|
246
|
+
const quarantined = results.filter((r) => r.isQuarantined);
|
|
247
|
+
if (quarantined.length === 0) {
|
|
248
|
+
console.log(colorize(' No quarantined skills found.', 'green'));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
// Sort by risk score descending
|
|
252
|
+
const sorted = [...quarantined].sort((a, b) => b.scanReport.riskScore - a.scanReport.riskScore);
|
|
253
|
+
// Column widths
|
|
254
|
+
const colWidths = { skillId: 35, risk: 6, severity: 10, finding: 40 };
|
|
255
|
+
const totalWidth = colWidths.skillId + colWidths.risk + colWidths.severity + colWidths.finding + 11;
|
|
256
|
+
// Header
|
|
257
|
+
const headerBorder = '-'.repeat(totalWidth);
|
|
258
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
259
|
+
console.log(` ${colorize(padRight('Skill ID', colWidths.skillId), 'bold')} | ` +
|
|
260
|
+
`${colorize(padRight('Risk', colWidths.risk), 'bold')} | ` +
|
|
261
|
+
`${colorize(padRight('Severity', colWidths.severity), 'bold')} | ` +
|
|
262
|
+
`${colorize(padRight('Top Finding', colWidths.finding), 'bold')}`);
|
|
263
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
264
|
+
// Rows
|
|
265
|
+
const displayRows = sorted.slice(0, maxRows);
|
|
266
|
+
for (const result of displayRows) {
|
|
267
|
+
const topFinding = result.scanReport.findings.length > 0
|
|
268
|
+
? `${result.scanReport.findings[0].type}: ${result.scanReport.findings[0].message}`
|
|
269
|
+
: 'N/A';
|
|
270
|
+
const severityColored = colorize(padRight(result.severityCategory, colWidths.severity), getSeverityColor(result.severityCategory));
|
|
271
|
+
console.log(` ${padRight(truncate(result.skillId, colWidths.skillId), colWidths.skillId)} | ` +
|
|
272
|
+
`${padRight(result.scanReport.riskScore.toString(), colWidths.risk)} | ` +
|
|
273
|
+
`${severityColored} | ` +
|
|
274
|
+
`${truncate(topFinding, colWidths.finding)}`);
|
|
275
|
+
}
|
|
276
|
+
console.log(colorize(headerBorder, 'dim'));
|
|
277
|
+
// Show remaining count if truncated
|
|
278
|
+
if (quarantined.length > maxRows) {
|
|
279
|
+
console.log(colorize(` ... and ${quarantined.length - maxRows} more quarantined skills`, 'dim'));
|
|
280
|
+
}
|
|
281
|
+
console.log();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Log a summary of safe skills
|
|
285
|
+
*
|
|
286
|
+
* @param results - Array of safe scan results
|
|
287
|
+
* @param maxDisplay - Maximum number to display
|
|
288
|
+
*/
|
|
289
|
+
export function logSafeSkillsSummary(results, maxDisplay = 5) {
|
|
290
|
+
const safe = results.filter((r) => !r.isQuarantined);
|
|
291
|
+
if (safe.length === 0) {
|
|
292
|
+
console.log(colorize(' No safe skills found.', 'yellow'));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Sort by risk score ascending (lowest risk first)
|
|
296
|
+
const sorted = [...safe].sort((a, b) => a.scanReport.riskScore - b.scanReport.riskScore);
|
|
297
|
+
console.log(colorize(` ${safe.length} skills passed security checks:`, 'green'));
|
|
298
|
+
console.log();
|
|
299
|
+
const displayRows = sorted.slice(0, maxDisplay);
|
|
300
|
+
for (const result of displayRows) {
|
|
301
|
+
const riskLabel = result.scanReport.riskScore === 0 ? 'clean' : `risk: ${result.scanReport.riskScore}`;
|
|
302
|
+
console.log(` ${colorize('[SAFE]', 'green')} ${result.skillId} (${riskLabel})`);
|
|
303
|
+
}
|
|
304
|
+
if (safe.length > maxDisplay) {
|
|
305
|
+
console.log(colorize(` ... and ${safe.length - maxDisplay} more safe skills`, 'dim'));
|
|
306
|
+
}
|
|
307
|
+
console.log();
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Log categorized results by severity
|
|
311
|
+
*
|
|
312
|
+
* @param results - Array of scan results
|
|
313
|
+
*/
|
|
314
|
+
export function logCategorizedResults(results) {
|
|
315
|
+
const categories = {
|
|
316
|
+
CRITICAL: [],
|
|
317
|
+
HIGH: [],
|
|
318
|
+
MEDIUM: [],
|
|
319
|
+
LOW: [],
|
|
320
|
+
SAFE: [],
|
|
321
|
+
};
|
|
322
|
+
for (const result of results) {
|
|
323
|
+
if (result.isQuarantined) {
|
|
324
|
+
categories[result.severityCategory].push(result);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
categories.SAFE.push(result);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
logHeader('RESULTS BY CATEGORY');
|
|
331
|
+
// Safe skills
|
|
332
|
+
if (categories.SAFE.length > 0) {
|
|
333
|
+
console.log(` ${colorize('[SAFE]', 'green')} ${categories.SAFE.length} skills - ` +
|
|
334
|
+
colorize('Ready for import', 'dim'));
|
|
335
|
+
}
|
|
336
|
+
// Low severity
|
|
337
|
+
if (categories.LOW.length > 0) {
|
|
338
|
+
console.log(` ${colorize('[LOW]', 'cyan')} ${categories.LOW.length} skills - ` +
|
|
339
|
+
colorize('Minor findings, generally safe', 'dim'));
|
|
340
|
+
}
|
|
341
|
+
// Medium severity
|
|
342
|
+
if (categories.MEDIUM.length > 0) {
|
|
343
|
+
console.log(` ${colorize('[MEDIUM]', 'yellow')} ${categories.MEDIUM.length} skills - ` +
|
|
344
|
+
colorize('Review recommended', 'dim'));
|
|
345
|
+
}
|
|
346
|
+
// High severity
|
|
347
|
+
if (categories.HIGH.length > 0) {
|
|
348
|
+
console.log(` ${colorize('[HIGH]', 'magenta')} ${categories.HIGH.length} skills - ` +
|
|
349
|
+
colorize('Security review required', 'dim'));
|
|
350
|
+
}
|
|
351
|
+
// Critical severity
|
|
352
|
+
if (categories.CRITICAL.length > 0) {
|
|
353
|
+
console.log(` ${colorize('[CRITICAL]', 'red')} ${categories.CRITICAL.length} skills - ` +
|
|
354
|
+
colorize('Do NOT import without thorough review', 'dim'));
|
|
355
|
+
}
|
|
356
|
+
console.log();
|
|
103
357
|
}
|
|
104
358
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { SecuritySeverity } from '../../security/index.js';
|
|
7
7
|
import type { SkillScanResult, SecurityReportOutput, QuarantineOutput, SafeSkillsOutput, FindingWithContext } from './types.js';
|
|
8
8
|
/**
|
|
9
|
-
* Log summary statistics to console
|
|
9
|
+
* Log summary statistics to console with improved formatting
|
|
10
10
|
*
|
|
11
11
|
* @param results - Array of scan results
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AA8CnB;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CA0D3D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA0BpE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,SAAS,EAAE,MAAM,GAChB,oBAAoB,CAsBtB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAmBrF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAcrF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAkB1F"}
|
|
@@ -6,7 +6,41 @@
|
|
|
6
6
|
import { countBySeverity } from './categorizer.js';
|
|
7
7
|
import { calculateAverageRiskScore, calculateMaxRiskScore, getPassFailStats, } from './trust-scorer.js';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* ANSI color codes for terminal output
|
|
10
|
+
*/
|
|
11
|
+
const COLORS = {
|
|
12
|
+
reset: '\x1b[0m',
|
|
13
|
+
bold: '\x1b[1m',
|
|
14
|
+
dim: '\x1b[2m',
|
|
15
|
+
red: '\x1b[31m',
|
|
16
|
+
green: '\x1b[32m',
|
|
17
|
+
yellow: '\x1b[33m',
|
|
18
|
+
cyan: '\x1b[36m',
|
|
19
|
+
magenta: '\x1b[35m',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Check if colors should be used
|
|
23
|
+
*/
|
|
24
|
+
function useColors() {
|
|
25
|
+
return process.stdout.isTTY && !process.env.CI && !process.env.NO_COLOR;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Apply color to text if colors are enabled
|
|
29
|
+
*/
|
|
30
|
+
function colorize(text, color) {
|
|
31
|
+
return useColors() ? `${COLORS[color]}${text}${COLORS.reset}` : text;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a visual bar for statistics
|
|
35
|
+
*/
|
|
36
|
+
function createStatBar(value, total, width = 20) {
|
|
37
|
+
const percentage = total > 0 ? value / total : 0;
|
|
38
|
+
const filled = Math.round(width * percentage);
|
|
39
|
+
const bar = '█'.repeat(filled) + '░'.repeat(width - filled);
|
|
40
|
+
return bar;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Log summary statistics to console with improved formatting
|
|
10
44
|
*
|
|
11
45
|
* @param results - Array of scan results
|
|
12
46
|
*/
|
|
@@ -16,22 +50,40 @@ export function logSummary(results) {
|
|
|
16
50
|
const bySeverity = countBySeverity(results);
|
|
17
51
|
const avgRiskScore = calculateAverageRiskScore(results);
|
|
18
52
|
const maxRiskScore = calculateMaxRiskScore(results);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
console.log(
|
|
22
|
-
console.log(
|
|
23
|
-
console.log(
|
|
24
|
-
console.log(
|
|
53
|
+
const border = '═'.repeat(60);
|
|
54
|
+
const thinBorder = '─'.repeat(60);
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(colorize(border, 'cyan'));
|
|
57
|
+
console.log(colorize(' SCAN SUMMARY', 'bold'));
|
|
58
|
+
console.log(colorize(border, 'cyan'));
|
|
59
|
+
console.log();
|
|
60
|
+
// Main stats with visual bars
|
|
61
|
+
const passedPct = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
|
|
62
|
+
const quarantinedPct = total > 0 ? ((quarantined / total) * 100).toFixed(1) : '0.0';
|
|
63
|
+
console.log(` ${colorize('Total Skills Scanned:', 'bold')} ${total}`);
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(` ${colorize('Safe (Passed):', 'green')} ${passed.toString().padStart(4)} ${createStatBar(passed, total)} ${passedPct}%`);
|
|
66
|
+
console.log(` ${colorize('Quarantined:', 'red')} ${quarantined.toString().padStart(4)} ${createStatBar(quarantined, total)} ${quarantinedPct}%`);
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(colorize(thinBorder, 'dim'));
|
|
69
|
+
console.log();
|
|
70
|
+
// Severity breakdown
|
|
71
|
+
console.log(` ${colorize('By Severity:', 'bold')}`);
|
|
72
|
+
console.log();
|
|
73
|
+
console.log(` ${colorize('CRITICAL:', 'red')} ${bySeverity.CRITICAL.toString().padStart(4)} ${createStatBar(bySeverity.CRITICAL, total, 15)}`);
|
|
74
|
+
console.log(` ${colorize('HIGH:', 'magenta')} ${bySeverity.HIGH.toString().padStart(4)} ${createStatBar(bySeverity.HIGH, total, 15)}`);
|
|
75
|
+
console.log(` ${colorize('MEDIUM:', 'yellow')} ${bySeverity.MEDIUM.toString().padStart(4)} ${createStatBar(bySeverity.MEDIUM, total, 15)}`);
|
|
76
|
+
console.log(` ${colorize('LOW:', 'cyan')} ${bySeverity.LOW.toString().padStart(4)} ${createStatBar(bySeverity.LOW, total, 15)}`);
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(colorize(thinBorder, 'dim'));
|
|
79
|
+
console.log();
|
|
80
|
+
// Risk score stats
|
|
81
|
+
console.log(` ${colorize('Risk Scores:', 'bold')}`);
|
|
82
|
+
console.log(` Average: ${avgRiskScore.toFixed(1)}`);
|
|
83
|
+
console.log(` Maximum: ${maxRiskScore}`);
|
|
25
84
|
console.log();
|
|
26
|
-
console.log(
|
|
27
|
-
console.log(` CRITICAL: ${bySeverity.CRITICAL}`);
|
|
28
|
-
console.log(` HIGH: ${bySeverity.HIGH}`);
|
|
29
|
-
console.log(` MEDIUM: ${bySeverity.MEDIUM}`);
|
|
30
|
-
console.log(` LOW: ${bySeverity.LOW}`);
|
|
85
|
+
console.log(colorize(border, 'cyan'));
|
|
31
86
|
console.log();
|
|
32
|
-
console.log(` Average Risk Score: ${avgRiskScore.toFixed(1)}`);
|
|
33
|
-
console.log(` Maximum Risk Score: ${maxRiskScore}`);
|
|
34
|
-
console.log('='.repeat(60) + '\n');
|
|
35
87
|
}
|
|
36
88
|
/**
|
|
37
89
|
* Calculate top findings by type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAE1B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAA;IAC5B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAEnD,
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Main scanning logic for imported skills.
|
|
5
5
|
*/
|
|
6
6
|
import { SecurityScanner } from '../../security/index.js';
|
|
7
|
-
import type { ImportedSkill, SkillScanResult } from './types.js';
|
|
7
|
+
import type { ImportedSkill, SkillScanResult, ScannerCliOptions } from './types.js';
|
|
8
8
|
import { type TrustScorerConfig } from './trust-scorer.js';
|
|
9
9
|
/**
|
|
10
10
|
* Scanner configuration
|
|
@@ -34,11 +34,14 @@ export declare const DEFAULT_CONFIG: ScannerConfig;
|
|
|
34
34
|
* @returns The scan result
|
|
35
35
|
*/
|
|
36
36
|
export declare function scanSkill(skill: ImportedSkill, scanner: SecurityScanner, config?: TrustScorerConfig): SkillScanResult;
|
|
37
|
+
/** Default CLI options */
|
|
38
|
+
export declare const DEFAULT_CLI_OPTIONS: ScannerCliOptions;
|
|
37
39
|
/**
|
|
38
40
|
* Scan all imported skills
|
|
39
41
|
*
|
|
40
42
|
* @param inputPath - Path to the imported skills JSON file
|
|
41
43
|
* @param config - Scanner configuration
|
|
44
|
+
* @param cliOptions - CLI options for output control
|
|
42
45
|
*/
|
|
43
|
-
export declare function scanImportedSkills(inputPath: string, config?: ScannerConfig): Promise<void>;
|
|
46
|
+
export declare function scanImportedSkills(inputPath: string, config?: ScannerConfig, cliOptions?: Partial<ScannerCliOptions>): Promise<void>;
|
|
44
47
|
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAEf,iBAAiB,EAElB,MAAM,YAAY,CAAA;AACnB,OAAO,EAKL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAA;AA8B1B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,sBAAsB;IACtB,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,0BAA0B;IAC1B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,oCAAoC;AACpC,eAAO,MAAM,cAAc,EAAE,aAQ5B,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,EACxB,MAAM,GAAE,iBAAwC,GAC/C,eAAe,CAgBjB;AAED,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB,EAAE,iBAKjC,CAAA;AA0DD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,aAA8B,EACtC,UAAU,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAC1C,OAAO,CAAC,IAAI,CAAC,CA8Kf"}
|