@cisco_open/linting-orchestrator 1.0.0-rc.4
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/LICENSE +201 -0
- package/NOTICE +5 -0
- package/README.md +43 -0
- package/build/cli/api-client.d.ts +170 -0
- package/build/cli/api-client.d.ts.map +1 -0
- package/build/cli/api-client.js +284 -0
- package/build/cli/api-client.js.map +1 -0
- package/build/cli/commands/agents.d.ts +7 -0
- package/build/cli/commands/agents.d.ts.map +1 -0
- package/build/cli/commands/agents.js +694 -0
- package/build/cli/commands/agents.js.map +1 -0
- package/build/cli/commands/completion.d.ts +9 -0
- package/build/cli/commands/completion.d.ts.map +1 -0
- package/build/cli/commands/completion.js +177 -0
- package/build/cli/commands/completion.js.map +1 -0
- package/build/cli/commands/config.d.ts +10 -0
- package/build/cli/commands/config.d.ts.map +1 -0
- package/build/cli/commands/config.js +284 -0
- package/build/cli/commands/config.js.map +1 -0
- package/build/cli/commands/health.d.ts +11 -0
- package/build/cli/commands/health.d.ts.map +1 -0
- package/build/cli/commands/health.js +38 -0
- package/build/cli/commands/health.js.map +1 -0
- package/build/cli/commands/help.d.ts +6 -0
- package/build/cli/commands/help.d.ts.map +1 -0
- package/build/cli/commands/help.js +20 -0
- package/build/cli/commands/help.js.map +1 -0
- package/build/cli/commands/history.d.ts +11 -0
- package/build/cli/commands/history.d.ts.map +1 -0
- package/build/cli/commands/history.js +50 -0
- package/build/cli/commands/history.js.map +1 -0
- package/build/cli/commands/jobs.d.ts +12 -0
- package/build/cli/commands/jobs.d.ts.map +1 -0
- package/build/cli/commands/jobs.js +84 -0
- package/build/cli/commands/jobs.js.map +1 -0
- package/build/cli/commands/lint.d.ts +15 -0
- package/build/cli/commands/lint.d.ts.map +1 -0
- package/build/cli/commands/lint.js +384 -0
- package/build/cli/commands/lint.js.map +1 -0
- package/build/cli/commands/ps.d.ts +8 -0
- package/build/cli/commands/ps.d.ts.map +1 -0
- package/build/cli/commands/ps.js +74 -0
- package/build/cli/commands/ps.js.map +1 -0
- package/build/cli/commands/reproduce.d.ts +9 -0
- package/build/cli/commands/reproduce.d.ts.map +1 -0
- package/build/cli/commands/reproduce.js +31 -0
- package/build/cli/commands/reproduce.js.map +1 -0
- package/build/cli/commands/reset.d.ts +5 -0
- package/build/cli/commands/reset.d.ts.map +1 -0
- package/build/cli/commands/reset.js +13 -0
- package/build/cli/commands/reset.js.map +1 -0
- package/build/cli/commands/results.d.ts +13 -0
- package/build/cli/commands/results.d.ts.map +1 -0
- package/build/cli/commands/results.js +129 -0
- package/build/cli/commands/results.js.map +1 -0
- package/build/cli/commands/rulesets/check.d.ts +12 -0
- package/build/cli/commands/rulesets/check.d.ts.map +1 -0
- package/build/cli/commands/rulesets/check.js +226 -0
- package/build/cli/commands/rulesets/check.js.map +1 -0
- package/build/cli/commands/rulesets/index.d.ts +5 -0
- package/build/cli/commands/rulesets/index.d.ts.map +1 -0
- package/build/cli/commands/rulesets/index.js +6 -0
- package/build/cli/commands/rulesets/index.js.map +1 -0
- package/build/cli/commands/rulesets/view.d.ts +16 -0
- package/build/cli/commands/rulesets/view.d.ts.map +1 -0
- package/build/cli/commands/rulesets/view.js +100 -0
- package/build/cli/commands/rulesets/view.js.map +1 -0
- package/build/cli/commands/start.d.ts +16 -0
- package/build/cli/commands/start.d.ts.map +1 -0
- package/build/cli/commands/start.js +167 -0
- package/build/cli/commands/start.js.map +1 -0
- package/build/cli/commands/status.d.ts +9 -0
- package/build/cli/commands/status.d.ts.map +1 -0
- package/build/cli/commands/status.js +46 -0
- package/build/cli/commands/status.js.map +1 -0
- package/build/cli/commands/stop.d.ts +11 -0
- package/build/cli/commands/stop.d.ts.map +1 -0
- package/build/cli/commands/stop.js +78 -0
- package/build/cli/commands/stop.js.map +1 -0
- package/build/cli/config-manager.d.ts +134 -0
- package/build/cli/config-manager.d.ts.map +1 -0
- package/build/cli/config-manager.js +288 -0
- package/build/cli/config-manager.js.map +1 -0
- package/build/cli/formatters.d.ts +62 -0
- package/build/cli/formatters.d.ts.map +1 -0
- package/build/cli/formatters.js +715 -0
- package/build/cli/formatters.js.map +1 -0
- package/build/cli/history-manager.d.ts +97 -0
- package/build/cli/history-manager.d.ts.map +1 -0
- package/build/cli/history-manager.js +201 -0
- package/build/cli/history-manager.js.map +1 -0
- package/build/cli/index.d.ts +16 -0
- package/build/cli/index.d.ts.map +1 -0
- package/build/cli/index.js +335 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/list-rulesets.d.ts +15 -0
- package/build/cli/list-rulesets.d.ts.map +1 -0
- package/build/cli/list-rulesets.js +193 -0
- package/build/cli/list-rulesets.js.map +1 -0
- package/build/cli/utils/connection-error.d.ts +9 -0
- package/build/cli/utils/connection-error.d.ts.map +1 -0
- package/build/cli/utils/connection-error.js +30 -0
- package/build/cli/utils/connection-error.js.map +1 -0
- package/build/cli/utils/embedded-server.d.ts +21 -0
- package/build/cli/utils/embedded-server.d.ts.map +1 -0
- package/build/cli/utils/embedded-server.js +61 -0
- package/build/cli/utils/embedded-server.js.map +1 -0
- package/build/cli/utils/mode-validator.d.ts +13 -0
- package/build/cli/utils/mode-validator.d.ts.map +1 -0
- package/build/cli/utils/mode-validator.js +31 -0
- package/build/cli/utils/mode-validator.js.map +1 -0
- package/build/cli/utils/port-checker.d.ts +20 -0
- package/build/cli/utils/port-checker.d.ts.map +1 -0
- package/build/cli/utils/port-checker.js +49 -0
- package/build/cli/utils/port-checker.js.map +1 -0
- package/build/config.d.ts +57 -0
- package/build/config.d.ts.map +1 -0
- package/build/config.js +527 -0
- package/build/config.js.map +1 -0
- package/build/document-accessor.d.ts +79 -0
- package/build/document-accessor.d.ts.map +1 -0
- package/build/document-accessor.js +148 -0
- package/build/document-accessor.js.map +1 -0
- package/build/formatters/reproduce-markdown.d.ts +14 -0
- package/build/formatters/reproduce-markdown.d.ts.map +1 -0
- package/build/formatters/reproduce-markdown.js +182 -0
- package/build/formatters/reproduce-markdown.js.map +1 -0
- package/build/formatters/sarif-builder.d.ts +86 -0
- package/build/formatters/sarif-builder.d.ts.map +1 -0
- package/build/formatters/sarif-builder.js +276 -0
- package/build/formatters/sarif-builder.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +174 -0
- package/build/index.js.map +1 -0
- package/build/logger.d.ts +38 -0
- package/build/logger.d.ts.map +1 -0
- package/build/logger.js +105 -0
- package/build/logger.js.map +1 -0
- package/build/mock-server.d.ts +2 -0
- package/build/mock-server.d.ts.map +1 -0
- package/build/mock-server.js +290 -0
- package/build/mock-server.js.map +1 -0
- package/build/orchestrator.d.ts +149 -0
- package/build/orchestrator.d.ts.map +1 -0
- package/build/orchestrator.js +874 -0
- package/build/orchestrator.js.map +1 -0
- package/build/ruleset-loader.d.ts +79 -0
- package/build/ruleset-loader.d.ts.map +1 -0
- package/build/ruleset-loader.js +514 -0
- package/build/ruleset-loader.js.map +1 -0
- package/build/schemas.d.ts +2568 -0
- package/build/schemas.d.ts.map +1 -0
- package/build/schemas.js +674 -0
- package/build/schemas.js.map +1 -0
- package/build/server.d.ts +39 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +834 -0
- package/build/server.js.map +1 -0
- package/build/storage/memory-storage.d.ts +190 -0
- package/build/storage/memory-storage.d.ts.map +1 -0
- package/build/storage/memory-storage.js +629 -0
- package/build/storage/memory-storage.js.map +1 -0
- package/build/storage/redis-storage.d.ts +134 -0
- package/build/storage/redis-storage.d.ts.map +1 -0
- package/build/storage/redis-storage.js +236 -0
- package/build/storage/redis-storage.js.map +1 -0
- package/build/storage/storage-adapter.d.ts +189 -0
- package/build/storage/storage-adapter.d.ts.map +1 -0
- package/build/storage/storage-adapter.js +36 -0
- package/build/storage/storage-adapter.js.map +1 -0
- package/build/types.d.ts +981 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +5 -0
- package/build/types.js.map +1 -0
- package/build/utils/version.d.ts +40 -0
- package/build/utils/version.d.ts.map +1 -0
- package/build/utils/version.js +94 -0
- package/build/utils/version.js.map +1 -0
- package/build/validation.d.ts +95 -0
- package/build/validation.d.ts.map +1 -0
- package/build/validation.js +150 -0
- package/build/validation.js.map +1 -0
- package/build/worker-pool.d.ts +137 -0
- package/build/worker-pool.d.ts.map +1 -0
- package/build/worker-pool.js +549 -0
- package/build/worker-pool.js.map +1 -0
- package/build/worker.d.ts +2 -0
- package/build/worker.d.ts.map +1 -0
- package/build/worker.js +427 -0
- package/build/worker.js.map +1 -0
- package/package.json +110 -0
- package/rulesets/CHANGELOG.md +25 -0
- package/rulesets/config/rulesets.yaml +96 -0
- package/rulesets/sources/README.md +47 -0
- package/rulesets/sources/example/oas-recommended/v1.0.0/ruleset.yaml +6 -0
- package/rulesets/sources/example/oas-recommended/v2.0.0/ruleset.yaml +14 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SARIF 2.1.0 Builder
|
|
3
|
+
*
|
|
4
|
+
* Transforms LintJobResult into SARIF (Static Analysis Results Interchange Format)
|
|
5
|
+
* Spec: https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html
|
|
6
|
+
*
|
|
7
|
+
* @module formatters/sarif-builder
|
|
8
|
+
*/
|
|
9
|
+
import crypto from 'crypto';
|
|
10
|
+
/**
|
|
11
|
+
* SarifBuilder - Converts lint results to SARIF 2.1.0 format
|
|
12
|
+
*/
|
|
13
|
+
export class SarifBuilder {
|
|
14
|
+
/**
|
|
15
|
+
* Build a complete SARIF report from lint job result
|
|
16
|
+
*/
|
|
17
|
+
buildSarif(result, options) {
|
|
18
|
+
return {
|
|
19
|
+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
20
|
+
version: '2.1.0',
|
|
21
|
+
runs: [this.buildRun(result, options)],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build a SARIF run from lint result
|
|
26
|
+
*/
|
|
27
|
+
buildRun(result, options) {
|
|
28
|
+
return {
|
|
29
|
+
tool: this.buildTool(result),
|
|
30
|
+
artifacts: this.buildArtifacts(result),
|
|
31
|
+
results: this.buildResults(result, options),
|
|
32
|
+
properties: this.buildRunProperties(result),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build tool metadata
|
|
37
|
+
*/
|
|
38
|
+
buildTool(result) {
|
|
39
|
+
// Use a simple version string or parse from result
|
|
40
|
+
const version = '0.7.0'; // Updated when server version changes
|
|
41
|
+
return {
|
|
42
|
+
driver: {
|
|
43
|
+
name: 'cisco-linting-orchestrator',
|
|
44
|
+
version: version,
|
|
45
|
+
informationUri: 'https://github.com/cisco-open/linting-orchestrator',
|
|
46
|
+
rules: this.buildRules(result),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build rule catalog from lint issues
|
|
52
|
+
* Creates unique rule entries from all issues
|
|
53
|
+
*/
|
|
54
|
+
buildRules(result) {
|
|
55
|
+
const rulesMap = new Map();
|
|
56
|
+
for (const issue of result.results) {
|
|
57
|
+
if (!rulesMap.has(issue.code)) {
|
|
58
|
+
rulesMap.set(issue.code, {
|
|
59
|
+
id: issue.code,
|
|
60
|
+
shortDescription: {
|
|
61
|
+
text: this.extractShortDescription(issue.message),
|
|
62
|
+
},
|
|
63
|
+
fullDescription: {
|
|
64
|
+
text: issue.message,
|
|
65
|
+
},
|
|
66
|
+
defaultConfiguration: {
|
|
67
|
+
level: this.mapSeverityToSarifLevel(issue.severity),
|
|
68
|
+
},
|
|
69
|
+
helpUri: this.buildHelpUri(result, issue),
|
|
70
|
+
properties: {
|
|
71
|
+
category: this.extractCategory(issue),
|
|
72
|
+
tags: this.extractTags(issue),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return Array.from(rulesMap.values());
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extract short description from message (first sentence or up to 80 chars)
|
|
81
|
+
*/
|
|
82
|
+
extractShortDescription(message) {
|
|
83
|
+
// Try to find first sentence
|
|
84
|
+
const firstSentence = message.match(/^[^.!?]+[.!?]/);
|
|
85
|
+
if (firstSentence) {
|
|
86
|
+
return firstSentence[0];
|
|
87
|
+
}
|
|
88
|
+
// Fallback: truncate at 80 chars
|
|
89
|
+
if (message.length > 80) {
|
|
90
|
+
return message.substring(0, 77) + '...';
|
|
91
|
+
}
|
|
92
|
+
return message;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build help URI for a rule
|
|
96
|
+
*/
|
|
97
|
+
buildHelpUri(result, issue) {
|
|
98
|
+
// For PubHub ruleset, use PubHub docs
|
|
99
|
+
if (result.rulesetName === 'pubhub') {
|
|
100
|
+
return `https://pubhub.cisco.com/docs/spectify/rules/${issue.code}`;
|
|
101
|
+
}
|
|
102
|
+
// Generic orchestrator docs
|
|
103
|
+
return `https://github.com/cisco-open/spectify/docs/rules/${issue.code}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extract category from issue (if available in path or code)
|
|
107
|
+
*/
|
|
108
|
+
extractCategory(issue) {
|
|
109
|
+
// Try to extract from code (e.g., "devx-publishing-001" → "publishing")
|
|
110
|
+
const categoryMatch = issue.code.match(/^[a-z]+-([a-z]+)-/);
|
|
111
|
+
if (categoryMatch) {
|
|
112
|
+
return categoryMatch[1];
|
|
113
|
+
}
|
|
114
|
+
return 'general';
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Extract tags from issue
|
|
118
|
+
*/
|
|
119
|
+
extractTags(issue) {
|
|
120
|
+
const tags = [];
|
|
121
|
+
// Add severity as tag (map number to string)
|
|
122
|
+
const severityNames = ['error', 'warning', 'info', 'hint'];
|
|
123
|
+
tags.push(severityNames[issue.severity] || 'warning');
|
|
124
|
+
// Add category
|
|
125
|
+
const category = this.extractCategory(issue);
|
|
126
|
+
if (category !== 'general') {
|
|
127
|
+
tags.push(category);
|
|
128
|
+
}
|
|
129
|
+
return tags;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Map severity to SARIF level
|
|
133
|
+
*/
|
|
134
|
+
mapSeverityToSarifLevel(severity) {
|
|
135
|
+
// 0=error, 1=warn, 2=info, 3=hint
|
|
136
|
+
switch (severity) {
|
|
137
|
+
case 0:
|
|
138
|
+
return 'error';
|
|
139
|
+
case 1:
|
|
140
|
+
return 'warning';
|
|
141
|
+
case 2:
|
|
142
|
+
case 3:
|
|
143
|
+
return 'note';
|
|
144
|
+
default:
|
|
145
|
+
return 'warning';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Build artifact metadata (document being analyzed)
|
|
150
|
+
*/
|
|
151
|
+
buildArtifacts(result) {
|
|
152
|
+
return [
|
|
153
|
+
{
|
|
154
|
+
location: {
|
|
155
|
+
uri: `file://${result.documentId}`,
|
|
156
|
+
},
|
|
157
|
+
properties: {
|
|
158
|
+
documentId: result.documentId,
|
|
159
|
+
documentName: result.documentId, // Could be enriched with actual name
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Build SARIF results from lint issues
|
|
166
|
+
*/
|
|
167
|
+
buildResults(result, options) {
|
|
168
|
+
return result.results.map((issue) => this.buildResult(result, issue, options));
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Build a single SARIF result from a lint issue
|
|
172
|
+
*/
|
|
173
|
+
buildResult(result, issue, options) {
|
|
174
|
+
// Map numeric severity to string for properties
|
|
175
|
+
const severityNames = ['error', 'warning', 'info', 'hint'];
|
|
176
|
+
const severityString = severityNames[issue.severity] || 'warning';
|
|
177
|
+
return {
|
|
178
|
+
ruleId: issue.code,
|
|
179
|
+
level: this.mapSeverityToSarifLevel(issue.severity),
|
|
180
|
+
message: {
|
|
181
|
+
text: issue.message,
|
|
182
|
+
},
|
|
183
|
+
locations: this.buildLocations(result, issue, options),
|
|
184
|
+
fingerprints: this.generateFingerprints(result, issue),
|
|
185
|
+
properties: {
|
|
186
|
+
severity: severityString,
|
|
187
|
+
path: issue.path,
|
|
188
|
+
rulesetName: result.rulesetName,
|
|
189
|
+
rulesetVersion: result.rulesetVersion,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Build locations for an issue
|
|
195
|
+
*/
|
|
196
|
+
buildLocations(result, issue, options) {
|
|
197
|
+
const location = {
|
|
198
|
+
physicalLocation: {
|
|
199
|
+
artifactLocation: {
|
|
200
|
+
uri: `file://${result.documentId}`,
|
|
201
|
+
},
|
|
202
|
+
region: this.buildRegion(issue, options),
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
return [location];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Build region (line/column range) for an issue
|
|
209
|
+
*/
|
|
210
|
+
buildRegion(issue, _options) {
|
|
211
|
+
if (!issue.range) {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
const region = {
|
|
215
|
+
startLine: issue.range.start.line,
|
|
216
|
+
startColumn: issue.range.start.character,
|
|
217
|
+
};
|
|
218
|
+
if (issue.range.end) {
|
|
219
|
+
region.endLine = issue.range.end.line;
|
|
220
|
+
region.endColumn = issue.range.end.character;
|
|
221
|
+
}
|
|
222
|
+
// Note: the orchestrator's LintIssue doesn't have snippet field currently
|
|
223
|
+
// This can be added in future if needed
|
|
224
|
+
return region;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Generate fingerprints for deduplication
|
|
228
|
+
* Uses primaryLocationLineHash scheme (path + line + rule)
|
|
229
|
+
*/
|
|
230
|
+
generateFingerprints(result, issue) {
|
|
231
|
+
const fingerprints = {};
|
|
232
|
+
// Primary location line hash (standard scheme)
|
|
233
|
+
const primaryLocation = this.buildPrimaryLocationHash(result, issue);
|
|
234
|
+
fingerprints.primaryLocationLineHash = primaryLocation;
|
|
235
|
+
return fingerprints;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Build primary location hash for fingerprinting
|
|
239
|
+
* Format: hash(documentId + path + line + ruleId)
|
|
240
|
+
*/
|
|
241
|
+
buildPrimaryLocationHash(result, issue) {
|
|
242
|
+
const components = [
|
|
243
|
+
result.documentId,
|
|
244
|
+
issue.path.map(String).join('/'),
|
|
245
|
+
issue.range?.start.line ?? 0,
|
|
246
|
+
issue.code,
|
|
247
|
+
];
|
|
248
|
+
const input = components.join(':');
|
|
249
|
+
return crypto.createHash('sha256').update(input).digest('hex').substring(0, 16);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Build run properties (orchestrator-specific metadata)
|
|
253
|
+
*/
|
|
254
|
+
buildRunProperties(result) {
|
|
255
|
+
return {
|
|
256
|
+
spectify: {
|
|
257
|
+
jobId: result.jobId,
|
|
258
|
+
documentId: result.documentId,
|
|
259
|
+
rulesetName: result.rulesetName,
|
|
260
|
+
rulesetVersion: result.rulesetVersion,
|
|
261
|
+
executionTime: result.totalExecutionTime,
|
|
262
|
+
timestamp: result.timestamp.toISOString(),
|
|
263
|
+
summary: {
|
|
264
|
+
totalIssues: result.summary.totalIssues,
|
|
265
|
+
bySeverity: {
|
|
266
|
+
error: result.summary.errorCount,
|
|
267
|
+
warning: result.summary.warningCount,
|
|
268
|
+
info: result.summary.infoCount,
|
|
269
|
+
hint: result.summary.hintCount,
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=sarif-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif-builder.js","sourceRoot":"","sources":["../../src/formatters/sarif-builder.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/build/index.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copyright 2026 Cisco Systems, Inc. and its affiliates
|
|
3
|
+
//
|
|
4
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
/**
|
|
6
|
+
* Orchestrator server CLI
|
|
7
|
+
*
|
|
8
|
+
* Primary entrypoint for running orchestrator as a server.
|
|
9
|
+
* Supports two modes:
|
|
10
|
+
* - standalone: Independent server with own document store (~/.spectify/uploads)
|
|
11
|
+
* - companion: Integrates with MCP, requires --document-store path
|
|
12
|
+
*
|
|
13
|
+
* Used when running:
|
|
14
|
+
* - `npm start`
|
|
15
|
+
* - `node build/index.js`
|
|
16
|
+
* - `spectifyd` (global binary)
|
|
17
|
+
*
|
|
18
|
+
* @module index
|
|
19
|
+
*/
|
|
20
|
+
import { Command } from 'commander';
|
|
21
|
+
import { startServer } from './server.js';
|
|
22
|
+
import { API_VERSION } from './utils/version.js';
|
|
23
|
+
import { createStandaloneModeConfig, createCompanionModeConfig, spectifyHome } from './config.js';
|
|
24
|
+
import * as path from 'path';
|
|
25
|
+
import chalk from 'chalk';
|
|
26
|
+
const program = new Command();
|
|
27
|
+
program
|
|
28
|
+
.name('spectifyd')
|
|
29
|
+
.description('Linting orchestrator daemon (spectifyd)')
|
|
30
|
+
.option('-p, --port <port>', 'server port (local: 3003, passthrough: 3004)', (val) => parseInt(val, 10))
|
|
31
|
+
.option('-H, --host <host>', 'server host', '0.0.0.0')
|
|
32
|
+
.option('-d, --store-directory <path>', 'directory where documents are stored')
|
|
33
|
+
.option('-t, --store-type <type>', 'document store type: local or passthrough', 'local')
|
|
34
|
+
.option('-r, --rulesets-directory <path>', 'directory containing rulesets (or set SPECTIFYD_RULESETS_DIR)')
|
|
35
|
+
.option('--max-workers <count>', 'maximum total workers', (val) => parseInt(val, 10))
|
|
36
|
+
.option('--log-level <level>', 'log level: error, warn, info, debug, trace', 'info')
|
|
37
|
+
.version(API_VERSION, '-V, --version', 'output the API server version')
|
|
38
|
+
.helpOption('-h, --help', 'display help for command')
|
|
39
|
+
.addHelpText('after', `
|
|
40
|
+
Examples:
|
|
41
|
+
${chalk.cyan('Standalone')} (local document storage, default):
|
|
42
|
+
$ spectifyd
|
|
43
|
+
$ spectifyd --store-type local --store-directory $HOME/.spectify/uploads
|
|
44
|
+
|
|
45
|
+
${chalk.cyan('Companion')} (passthrough store of an MCP server):
|
|
46
|
+
$ spectifyd --store-type passthrough --store-directory /path/to/mcp/documents
|
|
47
|
+
`);
|
|
48
|
+
program.parse(process.argv);
|
|
49
|
+
const options = program.opts();
|
|
50
|
+
/**
|
|
51
|
+
* Main function - starts server with graceful shutdown
|
|
52
|
+
*/
|
|
53
|
+
async function main() {
|
|
54
|
+
try {
|
|
55
|
+
// Validate store type
|
|
56
|
+
const storeType = options.storeType;
|
|
57
|
+
if (storeType !== 'local' && storeType !== 'passthrough') {
|
|
58
|
+
console.error(chalk.red(`Error: Invalid store type '${storeType}'. Must be 'local' or 'passthrough'`));
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
// Determine port (default based on store type)
|
|
62
|
+
const defaultPort = storeType === 'passthrough' ? 3004 : 3003;
|
|
63
|
+
const port = options.port || parseInt(process.env.SPECTIFYD_PORT || '', 10) || defaultPort;
|
|
64
|
+
// Determine store directory
|
|
65
|
+
let storeDirectory;
|
|
66
|
+
if (storeType === 'passthrough') {
|
|
67
|
+
// Passthrough: require explicit directory
|
|
68
|
+
storeDirectory = options.storeDirectory || process.env.SPECTIFYD_DOCUMENT_STORE_DIR || '';
|
|
69
|
+
if (!storeDirectory) {
|
|
70
|
+
console.error(chalk.red('\nError: --store-directory is required for passthrough type'));
|
|
71
|
+
console.log(chalk.yellow('\nPassthrough storage integrates with external systems like MCP.'));
|
|
72
|
+
console.log(chalk.yellow('You must specify the path to the external document directory:\n'));
|
|
73
|
+
console.log(chalk.gray(' spectifyd --store-type passthrough --store-directory /path/to/documents\n'));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Local: default to $SPECTIFY_HOME/uploads
|
|
79
|
+
const defaultDir = path.join(spectifyHome(), 'uploads');
|
|
80
|
+
storeDirectory = options.storeDirectory || process.env.SPECTIFYD_DOCUMENT_STORE_DIR || defaultDir;
|
|
81
|
+
}
|
|
82
|
+
// Build configuration (use companion/standalone configs for convenience)
|
|
83
|
+
let config;
|
|
84
|
+
if (storeType === 'passthrough') {
|
|
85
|
+
config = createCompanionModeConfig();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
config = createStandaloneModeConfig();
|
|
89
|
+
}
|
|
90
|
+
// Apply CLI overrides
|
|
91
|
+
config.server.port = port;
|
|
92
|
+
config.server.host = options.host || config.server.host;
|
|
93
|
+
if (config.documentStore) {
|
|
94
|
+
config.documentStore.baseDir = storeDirectory;
|
|
95
|
+
config.documentStore.type = storeType;
|
|
96
|
+
}
|
|
97
|
+
const rulesetsDir = options.rulesetsDirectory || process.env.SPECTIFYD_RULESETS_DIR;
|
|
98
|
+
if (rulesetsDir) {
|
|
99
|
+
config.rulesets.directory = rulesetsDir;
|
|
100
|
+
}
|
|
101
|
+
if (options.logLevel) {
|
|
102
|
+
config.logging.level = options.logLevel;
|
|
103
|
+
}
|
|
104
|
+
if (options.maxWorkers) {
|
|
105
|
+
config.workerPool.totalMaxWorkers = options.maxWorkers;
|
|
106
|
+
}
|
|
107
|
+
// Validate Report Service availability (if enabled and required)
|
|
108
|
+
if (config.reportService?.enabled && config.reportService?.stopIfUnavailable) {
|
|
109
|
+
try {
|
|
110
|
+
console.log(chalk.gray('Checking Report Service availability...'));
|
|
111
|
+
const response = await fetch(`${config.reportService.url}/health`, {
|
|
112
|
+
method: 'GET',
|
|
113
|
+
signal: AbortSignal.timeout(5000) // 5 second timeout
|
|
114
|
+
});
|
|
115
|
+
if (!response.ok) {
|
|
116
|
+
throw new Error(`Report Service returned status ${response.status}`);
|
|
117
|
+
}
|
|
118
|
+
console.log(chalk.green('✓ Report Service available'));
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
const mode = storeType === 'passthrough' ? 'Companion' : 'Standalone';
|
|
122
|
+
console.error(chalk.red(`\nError: ${mode} mode requires Report Service to be running.`));
|
|
123
|
+
console.error(chalk.yellow('\nReport Service is not available at:'), config.reportService.url);
|
|
124
|
+
console.error(chalk.yellow('\nPlease start the Report Service:'));
|
|
125
|
+
console.error(chalk.gray(' spectifyr'));
|
|
126
|
+
console.error(chalk.yellow('\nOr disable report integration in .env:'));
|
|
127
|
+
console.error(chalk.gray(' SPECTIFYD_REPORTS_ENABLED=false\n'));
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (config.reportService?.enabled && !config.reportService?.stopIfUnavailable) {
|
|
132
|
+
// Light mode: just log warning if unavailable
|
|
133
|
+
try {
|
|
134
|
+
const response = await fetch(`${config.reportService.url}/health`, {
|
|
135
|
+
method: 'GET',
|
|
136
|
+
signal: AbortSignal.timeout(2000) // Shorter timeout for non-critical check
|
|
137
|
+
});
|
|
138
|
+
if (response.ok) {
|
|
139
|
+
console.log(chalk.green('✓ Report Service available'));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.log(chalk.yellow('⚠ Report Service unavailable - notifications will be queued'));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
console.log(chalk.yellow('⚠ Report Service unavailable - notifications will be queued'));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Start server
|
|
150
|
+
const instance = await startServer(config);
|
|
151
|
+
// Setup graceful shutdown handlers
|
|
152
|
+
const shutdownHandler = async (signal) => {
|
|
153
|
+
console.log(chalk.yellow(`\n\nReceived ${signal}, shutting down gracefully...`));
|
|
154
|
+
try {
|
|
155
|
+
await instance.shutdown();
|
|
156
|
+
console.log(chalk.green('✅ Server stopped'));
|
|
157
|
+
process.exit(0);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error(chalk.red('Error during shutdown:'), error);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
process.on('SIGINT', () => shutdownHandler('SIGINT'));
|
|
165
|
+
process.on('SIGTERM', () => shutdownHandler('SIGTERM'));
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.error(chalk.red('Fatal error:'), error instanceof Error ? error.message : String(error));
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Start the server
|
|
173
|
+
main();
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
2
|
+
export interface LogContext {
|
|
3
|
+
correlationId?: string;
|
|
4
|
+
jobId?: string;
|
|
5
|
+
documentId?: string;
|
|
6
|
+
rulesetName?: string;
|
|
7
|
+
workerId?: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
export interface LogEntry {
|
|
11
|
+
timestamp: string;
|
|
12
|
+
level: LogLevel;
|
|
13
|
+
message: string;
|
|
14
|
+
context?: LogContext;
|
|
15
|
+
error?: {
|
|
16
|
+
message: string;
|
|
17
|
+
stack?: string;
|
|
18
|
+
code?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
declare class Logger {
|
|
22
|
+
private level;
|
|
23
|
+
private format;
|
|
24
|
+
configure(level: LogLevel, format?: 'json' | 'text'): void;
|
|
25
|
+
private shouldLog;
|
|
26
|
+
private formatLog;
|
|
27
|
+
private log;
|
|
28
|
+
debug(message: string, context?: LogContext): void;
|
|
29
|
+
info(message: string, context?: LogContext): void;
|
|
30
|
+
warn(message: string, context?: LogContext, error?: Error): void;
|
|
31
|
+
error(message: string, context?: LogContext, error?: Error): void;
|
|
32
|
+
}
|
|
33
|
+
export declare const logger: Logger;
|
|
34
|
+
export declare function generateCorrelationId(): string;
|
|
35
|
+
export declare function createRequestContext(correlationId?: string): LogContext;
|
|
36
|
+
export declare function withContext(baseContext: LogContext, additionalContext: Partial<LogContext>): LogContext;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,cAAM,MAAM;IACV,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAA2B;IAEzC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAM,GAAG,MAAe;IAK3D,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IA8BjB,OAAO,CAAC,GAAG;IA+BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAI1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK;IAIzD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK;CAG3D;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC;AAMnC,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAIvE;AAMD,wBAAgB,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAEvG"}
|
package/build/logger.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Copyright 2026 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* Structured Logging with Correlation IDs
|
|
6
|
+
*
|
|
7
|
+
* Provides consistent logging format with request correlation
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
class Logger {
|
|
11
|
+
level = 'info';
|
|
12
|
+
format = 'json';
|
|
13
|
+
configure(level, format = 'json') {
|
|
14
|
+
this.level = level;
|
|
15
|
+
this.format = format;
|
|
16
|
+
}
|
|
17
|
+
shouldLog(level) {
|
|
18
|
+
const levels = ['debug', 'info', 'warn', 'error'];
|
|
19
|
+
return levels.indexOf(level) >= levels.indexOf(this.level);
|
|
20
|
+
}
|
|
21
|
+
formatLog(entry) {
|
|
22
|
+
if (this.format === 'json') {
|
|
23
|
+
return JSON.stringify(entry);
|
|
24
|
+
}
|
|
25
|
+
// Text format
|
|
26
|
+
const timestamp = entry.timestamp;
|
|
27
|
+
const level = entry.level.toUpperCase().padEnd(5);
|
|
28
|
+
const correlationId = entry.context?.correlationId
|
|
29
|
+
? `[${entry.context.correlationId.substring(0, 8)}]`
|
|
30
|
+
: '';
|
|
31
|
+
let message = `${timestamp} ${level} ${correlationId} ${entry.message}`;
|
|
32
|
+
if (entry.context && Object.keys(entry.context).length > 1) {
|
|
33
|
+
const ctx = { ...entry.context };
|
|
34
|
+
delete ctx.correlationId;
|
|
35
|
+
message += ` ${JSON.stringify(ctx)}`;
|
|
36
|
+
}
|
|
37
|
+
if (entry.error) {
|
|
38
|
+
message += `\n Error: ${entry.error.message}`;
|
|
39
|
+
if (entry.error.stack) {
|
|
40
|
+
message += `\n${entry.error.stack}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return message;
|
|
44
|
+
}
|
|
45
|
+
log(level, message, context, error) {
|
|
46
|
+
if (!this.shouldLog(level)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const entry = {
|
|
50
|
+
timestamp: new Date().toISOString(),
|
|
51
|
+
level,
|
|
52
|
+
message,
|
|
53
|
+
context
|
|
54
|
+
};
|
|
55
|
+
if (error) {
|
|
56
|
+
entry.error = {
|
|
57
|
+
message: error.message,
|
|
58
|
+
stack: error.stack,
|
|
59
|
+
code: error.code
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const formatted = this.formatLog(entry);
|
|
63
|
+
if (level === 'error') {
|
|
64
|
+
console.error(formatted);
|
|
65
|
+
}
|
|
66
|
+
else if (level === 'warn') {
|
|
67
|
+
console.warn(formatted);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(formatted);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
debug(message, context) {
|
|
74
|
+
this.log('debug', message, context);
|
|
75
|
+
}
|
|
76
|
+
info(message, context) {
|
|
77
|
+
this.log('info', message, context);
|
|
78
|
+
}
|
|
79
|
+
warn(message, context, error) {
|
|
80
|
+
this.log('warn', message, context, error);
|
|
81
|
+
}
|
|
82
|
+
error(message, context, error) {
|
|
83
|
+
this.log('error', message, context, error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Singleton instance
|
|
87
|
+
export const logger = new Logger();
|
|
88
|
+
// ============================================
|
|
89
|
+
// Correlation ID Management
|
|
90
|
+
// ============================================
|
|
91
|
+
export function generateCorrelationId() {
|
|
92
|
+
return randomUUID();
|
|
93
|
+
}
|
|
94
|
+
export function createRequestContext(correlationId) {
|
|
95
|
+
return {
|
|
96
|
+
correlationId: correlationId || generateCorrelationId()
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// ============================================
|
|
100
|
+
// Helper Functions
|
|
101
|
+
// ============================================
|
|
102
|
+
export function withContext(baseContext, additionalContext) {
|
|
103
|
+
return { ...baseContext, ...additionalContext };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-server.d.ts","sourceRoot":"","sources":["../src/mock-server.ts"],"names":[],"mappings":""}
|