@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
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { SecurityScanner } from '../../security/index.js';
|
|
8
|
-
import { shouldQuarantine, DEFAULT_TRUST_CONFIG } from './trust-scorer.js';
|
|
9
|
-
import { determineSeverityCategory } from './categorizer.js';
|
|
8
|
+
import { shouldQuarantine, getPassFailStats, calculateAverageRiskScore, calculateMaxRiskScore, DEFAULT_TRUST_CONFIG, } from './trust-scorer.js';
|
|
9
|
+
import { determineSeverityCategory, countBySeverity } from './categorizer.js';
|
|
10
10
|
import { extractScannableContent, readImportedSkills, ensureDirectoryExists, fileExists, writeJsonFile, } from './file-scanner.js';
|
|
11
|
-
import { formatDuration, logHeader, logFindings, logProgress, logCompletion, logFileOutput, } from './logger.js';
|
|
11
|
+
import { formatDuration, logHeader, logFindings, logProgress, logCompletion, logFileOutput, logScanStart, logProgressBar, clearProgressLine, logQuarantineTable, logCategorizedResults, } from './logger.js';
|
|
12
12
|
import { logSummary, generateSecurityReport, generateQuarantineOutput, generateSafeSkillsOutput, logRecommendations, } from './reporter.js';
|
|
13
13
|
/** Default scanner configuration */
|
|
14
14
|
export const DEFAULT_CONFIG = {
|
|
@@ -44,44 +44,116 @@ export function scanSkill(skill, scanner, config = DEFAULT_TRUST_CONFIG) {
|
|
|
44
44
|
scanTimestamp: new Date().toISOString(),
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
+
/** Default CLI options */
|
|
48
|
+
export const DEFAULT_CLI_OPTIONS = {
|
|
49
|
+
json: false,
|
|
50
|
+
verbose: false,
|
|
51
|
+
quiet: false,
|
|
52
|
+
inputPath: DEFAULT_CONFIG.defaultInput,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Generate JSON output for machine-readable format
|
|
56
|
+
*/
|
|
57
|
+
function generateJsonOutput(results, config, durationMs) {
|
|
58
|
+
const { passed, quarantined: quarantinedCount } = getPassFailStats(results);
|
|
59
|
+
const bySeverity = countBySeverity(results);
|
|
60
|
+
const avgRiskScore = calculateAverageRiskScore(results);
|
|
61
|
+
const maxRiskScore = calculateMaxRiskScore(results);
|
|
62
|
+
const quarantinedSkills = results
|
|
63
|
+
.filter((r) => r.isQuarantined)
|
|
64
|
+
.sort((a, b) => b.scanReport.riskScore - a.scanReport.riskScore)
|
|
65
|
+
.map((r) => ({
|
|
66
|
+
skillId: r.skillId,
|
|
67
|
+
riskScore: r.scanReport.riskScore,
|
|
68
|
+
severity: r.severityCategory,
|
|
69
|
+
topFinding: r.scanReport.findings.length > 0
|
|
70
|
+
? `${r.scanReport.findings[0].type}: ${r.scanReport.findings[0].message}`
|
|
71
|
+
: 'N/A',
|
|
72
|
+
}));
|
|
73
|
+
const safeSkills = results
|
|
74
|
+
.filter((r) => !r.isQuarantined)
|
|
75
|
+
.sort((a, b) => a.scanReport.riskScore - b.scanReport.riskScore)
|
|
76
|
+
.map((r) => ({
|
|
77
|
+
skillId: r.skillId,
|
|
78
|
+
riskScore: r.scanReport.riskScore,
|
|
79
|
+
}));
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
summary: {
|
|
83
|
+
totalScanned: results.length,
|
|
84
|
+
passed,
|
|
85
|
+
quarantined: quarantinedCount,
|
|
86
|
+
bySeverity,
|
|
87
|
+
averageRiskScore: Math.round(avgRiskScore * 100) / 100,
|
|
88
|
+
maxRiskScore,
|
|
89
|
+
duration: Math.round(durationMs),
|
|
90
|
+
skillsPerSecond: Math.round((results.length / durationMs) * 1000 * 10) / 10,
|
|
91
|
+
},
|
|
92
|
+
quarantined: quarantinedSkills,
|
|
93
|
+
safe: safeSkills,
|
|
94
|
+
outputFiles: {
|
|
95
|
+
report: path.join(config.outputDir, 'security-report.json'),
|
|
96
|
+
quarantine: path.join(config.outputDir, 'quarantine-skills.json'),
|
|
97
|
+
safe: path.join(config.outputDir, 'safe-skills.json'),
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
47
101
|
/**
|
|
48
102
|
* Scan all imported skills
|
|
49
103
|
*
|
|
50
104
|
* @param inputPath - Path to the imported skills JSON file
|
|
51
105
|
* @param config - Scanner configuration
|
|
106
|
+
* @param cliOptions - CLI options for output control
|
|
52
107
|
*/
|
|
53
|
-
export async function scanImportedSkills(inputPath, config = DEFAULT_CONFIG) {
|
|
108
|
+
export async function scanImportedSkills(inputPath, config = DEFAULT_CONFIG, cliOptions = {}) {
|
|
109
|
+
const options = { ...DEFAULT_CLI_OPTIONS, ...cliOptions, inputPath };
|
|
54
110
|
const startTime = performance.now();
|
|
55
|
-
|
|
56
|
-
console.log(`Input file: ${inputPath}`);
|
|
57
|
-
console.log(`Output directory: ${config.outputDir}`);
|
|
58
|
-
console.log();
|
|
59
|
-
// Validate input file exists
|
|
111
|
+
// Validate input file exists (always check, regardless of output mode)
|
|
60
112
|
if (!fileExists(inputPath)) {
|
|
61
|
-
|
|
62
|
-
|
|
113
|
+
if (options.json) {
|
|
114
|
+
console.log(JSON.stringify({ success: false, error: `Input file not found: ${inputPath}` }));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.error(`Error: Input file not found: ${inputPath}`);
|
|
118
|
+
console.error('Usage: npx tsx packages/core/src/scripts/scan-imported-skills.ts [options] [path-to-imported-skills.json]');
|
|
119
|
+
console.error('\nOptions:');
|
|
120
|
+
console.error(' --json Output results in JSON format (machine-readable)');
|
|
121
|
+
console.error(' --verbose Show detailed output');
|
|
122
|
+
console.error(' --quiet Minimal output');
|
|
123
|
+
}
|
|
63
124
|
process.exit(1);
|
|
64
125
|
}
|
|
65
126
|
// Ensure output directory exists
|
|
66
127
|
ensureDirectoryExists(config.outputDir);
|
|
67
128
|
// Read and parse imported skills
|
|
68
|
-
console.log('Reading imported skills...');
|
|
69
129
|
let skills;
|
|
70
130
|
try {
|
|
71
131
|
skills = await readImportedSkills(inputPath);
|
|
72
132
|
}
|
|
73
133
|
catch (error) {
|
|
74
|
-
|
|
134
|
+
if (options.json) {
|
|
135
|
+
console.log(JSON.stringify({
|
|
136
|
+
success: false,
|
|
137
|
+
error: `Failed to read input: ${error.message}`,
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.error(`Error reading/parsing input file: ${error.message}`);
|
|
142
|
+
}
|
|
75
143
|
process.exit(1);
|
|
76
144
|
}
|
|
77
|
-
console
|
|
145
|
+
// For JSON output, skip all console logging until the end
|
|
146
|
+
if (!options.json && !options.quiet) {
|
|
147
|
+
logScanStart(skills.length, inputPath, config.outputDir);
|
|
148
|
+
}
|
|
78
149
|
// Initialize scanner
|
|
79
150
|
const scanner = new SecurityScanner(config.scannerOptions);
|
|
80
151
|
// Scan all skills
|
|
81
152
|
const results = [];
|
|
82
153
|
const allFindings = [];
|
|
83
154
|
let processedCount = 0;
|
|
84
|
-
|
|
155
|
+
// Use progress bar for interactive output
|
|
156
|
+
const useProgressBar = !options.json && !options.quiet && process.stdout.isTTY;
|
|
85
157
|
for (const skill of skills) {
|
|
86
158
|
processedCount++;
|
|
87
159
|
const result = scanSkill(skill, scanner, config.trustConfig);
|
|
@@ -91,50 +163,95 @@ export async function scanImportedSkills(inputPath, config = DEFAULT_CONFIG) {
|
|
|
91
163
|
allFindings.push({ ...finding, skillId: skill.id });
|
|
92
164
|
}
|
|
93
165
|
// Log progress
|
|
94
|
-
if (
|
|
166
|
+
if (useProgressBar) {
|
|
167
|
+
logProgressBar(processedCount, skills.length, true);
|
|
168
|
+
}
|
|
169
|
+
else if (!options.json && !options.quiet && processedCount % config.progressInterval === 0) {
|
|
95
170
|
logProgress(processedCount, skills.length);
|
|
96
171
|
}
|
|
97
172
|
}
|
|
98
|
-
|
|
99
|
-
|
|
173
|
+
// Clear progress bar line
|
|
174
|
+
if (useProgressBar) {
|
|
175
|
+
clearProgressLine();
|
|
176
|
+
}
|
|
177
|
+
if (!options.json && !options.quiet) {
|
|
178
|
+
logCompletion(processedCount, skills.length);
|
|
179
|
+
}
|
|
180
|
+
// Log critical and high findings (if not JSON mode)
|
|
100
181
|
const criticalFindings = allFindings.filter((f) => f.severity === 'critical');
|
|
101
182
|
const highFindings = allFindings.filter((f) => f.severity === 'high');
|
|
102
|
-
|
|
103
|
-
|
|
183
|
+
if (!options.json && !options.quiet) {
|
|
184
|
+
logFindings(criticalFindings, 20, 'CRITICAL FINDINGS');
|
|
185
|
+
logFindings(highFindings, 10, 'HIGH SEVERITY FINDINGS');
|
|
186
|
+
}
|
|
187
|
+
// Print categorized results
|
|
188
|
+
if (!options.json && !options.quiet) {
|
|
189
|
+
logCategorizedResults(results);
|
|
190
|
+
}
|
|
191
|
+
// Print quarantine table (if not JSON mode)
|
|
192
|
+
if (!options.json && !options.quiet) {
|
|
193
|
+
logHeader('QUARANTINED SKILLS');
|
|
194
|
+
logQuarantineTable(results);
|
|
195
|
+
}
|
|
104
196
|
// Print summary
|
|
105
|
-
|
|
197
|
+
if (!options.json && !options.quiet) {
|
|
198
|
+
logSummary(results);
|
|
199
|
+
}
|
|
106
200
|
// Generate output files
|
|
107
|
-
|
|
201
|
+
if (!options.json && !options.quiet) {
|
|
202
|
+
console.log('Generating output files...\n');
|
|
203
|
+
}
|
|
108
204
|
// 1. Full security report
|
|
109
205
|
const securityReport = generateSecurityReport(results, allFindings, inputPath);
|
|
110
206
|
const reportPath = path.join(config.outputDir, 'security-report.json');
|
|
111
207
|
await writeJsonFile(reportPath, securityReport);
|
|
112
|
-
|
|
208
|
+
if (!options.json && !options.quiet) {
|
|
209
|
+
logFileOutput('security-report.json', results.length);
|
|
210
|
+
}
|
|
113
211
|
// 2. Quarantine list
|
|
114
212
|
const quarantineOutput = generateQuarantineOutput(results);
|
|
115
213
|
const quarantinePath = path.join(config.outputDir, 'quarantine-skills.json');
|
|
116
214
|
await writeJsonFile(quarantinePath, quarantineOutput);
|
|
117
|
-
|
|
215
|
+
if (!options.json && !options.quiet) {
|
|
216
|
+
logFileOutput('quarantine-skills.json', quarantineOutput.count, 'blocked');
|
|
217
|
+
}
|
|
118
218
|
// 3. Safe skills list
|
|
119
219
|
const safeOutput = generateSafeSkillsOutput(results);
|
|
120
220
|
const safePath = path.join(config.outputDir, 'safe-skills.json');
|
|
121
221
|
await writeJsonFile(safePath, safeOutput);
|
|
122
|
-
|
|
222
|
+
if (!options.json && !options.quiet) {
|
|
223
|
+
logFileOutput('safe-skills.json', safeOutput.count, 'approved');
|
|
224
|
+
}
|
|
123
225
|
// Final timing
|
|
124
226
|
const endTime = performance.now();
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
227
|
+
const durationMs = endTime - startTime;
|
|
228
|
+
const duration = formatDuration(durationMs);
|
|
229
|
+
// JSON output mode
|
|
230
|
+
if (options.json) {
|
|
231
|
+
const jsonOutput = generateJsonOutput(results, config, durationMs);
|
|
232
|
+
console.log(JSON.stringify(jsonOutput, null, 2));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
// Human-readable completion output
|
|
236
|
+
if (!options.quiet) {
|
|
237
|
+
const border = '═'.repeat(60);
|
|
238
|
+
console.log();
|
|
239
|
+
console.log('\x1b[36m' + border + '\x1b[0m');
|
|
240
|
+
console.log('\x1b[1m SCAN COMPLETE\x1b[0m');
|
|
241
|
+
console.log('\x1b[36m' + border + '\x1b[0m');
|
|
242
|
+
console.log();
|
|
243
|
+
console.log(` Duration: ${duration}`);
|
|
244
|
+
console.log(` Skills per second: ${((results.length / durationMs) * 1000).toFixed(1)}`);
|
|
245
|
+
console.log();
|
|
246
|
+
console.log(' Output files:');
|
|
247
|
+
console.log(` - ${reportPath}`);
|
|
248
|
+
console.log(` - ${quarantinePath}`);
|
|
249
|
+
console.log(` - ${safePath}`);
|
|
250
|
+
console.log();
|
|
251
|
+
console.log('\x1b[36m' + border + '\x1b[0m');
|
|
252
|
+
console.log();
|
|
253
|
+
// Recommendations
|
|
254
|
+
logRecommendations(results, criticalFindings.length);
|
|
255
|
+
}
|
|
139
256
|
}
|
|
140
257
|
//# sourceMappingURL=scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,5 +94,49 @@ export interface SafeSkillsOutput {
|
|
|
94
94
|
export interface FindingWithContext extends SecurityFinding {
|
|
95
95
|
skillId: string;
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* CLI options for the scanner
|
|
99
|
+
*/
|
|
100
|
+
export interface ScannerCliOptions {
|
|
101
|
+
/** Output JSON format for machine-readable output */
|
|
102
|
+
json: boolean;
|
|
103
|
+
/** Show verbose output */
|
|
104
|
+
verbose: boolean;
|
|
105
|
+
/** Quiet mode - minimal output */
|
|
106
|
+
quiet: boolean;
|
|
107
|
+
/** Input file path */
|
|
108
|
+
inputPath: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* JSON output structure for --json flag
|
|
112
|
+
*/
|
|
113
|
+
export interface JsonOutput {
|
|
114
|
+
success: boolean;
|
|
115
|
+
summary: {
|
|
116
|
+
totalScanned: number;
|
|
117
|
+
passed: number;
|
|
118
|
+
quarantined: number;
|
|
119
|
+
bySeverity: Record<SeverityCategory, number>;
|
|
120
|
+
averageRiskScore: number;
|
|
121
|
+
maxRiskScore: number;
|
|
122
|
+
duration: number;
|
|
123
|
+
skillsPerSecond: number;
|
|
124
|
+
};
|
|
125
|
+
quarantined: Array<{
|
|
126
|
+
skillId: string;
|
|
127
|
+
riskScore: number;
|
|
128
|
+
severity: SeverityCategory;
|
|
129
|
+
topFinding: string;
|
|
130
|
+
}>;
|
|
131
|
+
safe: Array<{
|
|
132
|
+
skillId: string;
|
|
133
|
+
riskScore: number;
|
|
134
|
+
}>;
|
|
135
|
+
outputFiles: {
|
|
136
|
+
report: string;
|
|
137
|
+
quarantine: string;
|
|
138
|
+
safe: string;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
97
141
|
export type { ScanReport, SecurityFinding, SecuritySeverity };
|
|
98
142
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE5F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QAC5C,gBAAgB,EAAE,MAAM,CAAA;QACxB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,WAAW,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,gBAAgB,CAAA;KAC3B,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,gBAAgB,EAAE,gBAAgB,CAAA;QAClC,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,OAAO,EAAE,MAAM,CAAA;CAChB;AAGD,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scripts/skill-scanner/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BackgroundSyncService - Session-based automatic sync
|
|
3
|
+
*
|
|
4
|
+
* Runs sync operations during active MCP server sessions based on
|
|
5
|
+
* user-configured frequency (daily/weekly). Uses non-blocking timers
|
|
6
|
+
* that don't prevent process exit.
|
|
7
|
+
*/
|
|
8
|
+
import type { SyncEngine, SyncResult } from './SyncEngine.js';
|
|
9
|
+
import type { SyncConfigRepository } from '../repositories/SyncConfigRepository.js';
|
|
10
|
+
/**
|
|
11
|
+
* Background sync service options
|
|
12
|
+
*/
|
|
13
|
+
export interface BackgroundSyncOptions {
|
|
14
|
+
/** Check interval in ms (default: 60000 = 1 minute) */
|
|
15
|
+
checkIntervalMs?: number;
|
|
16
|
+
/** Run sync immediately on start if due */
|
|
17
|
+
syncOnStart?: boolean;
|
|
18
|
+
/** Callback when sync completes */
|
|
19
|
+
onSyncComplete?: (result: SyncResult) => void;
|
|
20
|
+
/** Callback when sync fails */
|
|
21
|
+
onSyncError?: (error: Error) => void;
|
|
22
|
+
/** Enable debug logging */
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Service state
|
|
27
|
+
*/
|
|
28
|
+
export interface BackgroundSyncState {
|
|
29
|
+
isStarted: boolean;
|
|
30
|
+
isRunning: boolean;
|
|
31
|
+
lastResult: SyncResult | null;
|
|
32
|
+
lastError: Error | null;
|
|
33
|
+
checksPerformed: number;
|
|
34
|
+
syncsTriggered: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Background sync service for automatic registry synchronization
|
|
38
|
+
*/
|
|
39
|
+
export declare class BackgroundSyncService {
|
|
40
|
+
private syncEngine;
|
|
41
|
+
private configRepo;
|
|
42
|
+
private options;
|
|
43
|
+
private timer;
|
|
44
|
+
private isRunning;
|
|
45
|
+
private isStopped;
|
|
46
|
+
private state;
|
|
47
|
+
constructor(syncEngine: SyncEngine, configRepo: SyncConfigRepository, options?: BackgroundSyncOptions);
|
|
48
|
+
private log;
|
|
49
|
+
/**
|
|
50
|
+
* Start the background sync service
|
|
51
|
+
*/
|
|
52
|
+
start(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Stop the background sync service
|
|
55
|
+
*/
|
|
56
|
+
stop(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Check if sync should run now
|
|
59
|
+
*/
|
|
60
|
+
private shouldSyncNow;
|
|
61
|
+
/**
|
|
62
|
+
* Check if sync is due and trigger if needed
|
|
63
|
+
*/
|
|
64
|
+
private checkAndSync;
|
|
65
|
+
/**
|
|
66
|
+
* Trigger a sync operation
|
|
67
|
+
*/
|
|
68
|
+
private triggerSync;
|
|
69
|
+
/**
|
|
70
|
+
* Manually trigger a sync (for testing or manual intervention)
|
|
71
|
+
*/
|
|
72
|
+
manualSync(): Promise<SyncResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Get current service state
|
|
75
|
+
*/
|
|
76
|
+
getState(): BackgroundSyncState;
|
|
77
|
+
/**
|
|
78
|
+
* Check if service is actively running syncs
|
|
79
|
+
*/
|
|
80
|
+
isSyncRunning(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Check if service is started
|
|
83
|
+
*/
|
|
84
|
+
isServiceStarted(): boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create and start a background sync service
|
|
88
|
+
*/
|
|
89
|
+
export declare function createBackgroundSyncService(syncEngine: SyncEngine, configRepo: SyncConfigRepository, options?: BackgroundSyncOptions): BackgroundSyncService;
|
|
90
|
+
//# sourceMappingURL=BackgroundSyncService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundSyncService.d.ts","sourceRoot":"","sources":["../../../src/sync/BackgroundSyncService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAEnF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,mCAAmC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IAC7C,+BAA+B;IAC/B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,SAAS,EAAE,KAAK,GAAG,IAAI,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,OAAO,CAAiC;IAEhD,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,KAAK,CAOZ;gBAGC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,oBAAoB,EAChC,OAAO,GAAE,qBAA0B;IAarC,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,KAAK,IAAI,IAAI;IAmCb;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,WAAW;IAqCzB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IA4BvC;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAI/B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,gBAAgB,IAAI,OAAO;CAG5B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,oBAAoB,EAChC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB,CAIvB"}
|