@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,290 @@
|
|
|
1
|
+
// Copyright 2026 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* Mock HTTP Server for OpenAPI Lint Orchestrator
|
|
6
|
+
*
|
|
7
|
+
* Provides realistic responses with simulated delays for testing
|
|
8
|
+
* before implementing the full worker pool and orchestration logic.
|
|
9
|
+
*
|
|
10
|
+
* Now integrated with RulesetLoader to serve real ruleset data!
|
|
11
|
+
*
|
|
12
|
+
* Usage: npm run mock
|
|
13
|
+
*/
|
|
14
|
+
import Fastify from 'fastify';
|
|
15
|
+
import { RulesetLoader } from './ruleset-loader.js';
|
|
16
|
+
import { loadConfig } from './config.js';
|
|
17
|
+
const mockServer = Fastify({ logger: true });
|
|
18
|
+
// Initialize RulesetLoader
|
|
19
|
+
let rulesetLoader;
|
|
20
|
+
const mockJobs = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* Generate mock job ID
|
|
23
|
+
*/
|
|
24
|
+
function generateJobId() {
|
|
25
|
+
return `mock-job-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* POST /lint - Submit lint job
|
|
29
|
+
*/
|
|
30
|
+
mockServer.post('/lint', async (request, reply) => {
|
|
31
|
+
const { documentId, rulesetName } = request.body;
|
|
32
|
+
// Validate request
|
|
33
|
+
if (!documentId || !rulesetName) {
|
|
34
|
+
return reply.code(400).send({
|
|
35
|
+
error: 'Invalid request',
|
|
36
|
+
details: {
|
|
37
|
+
documentId: documentId ? undefined : 'Required field missing',
|
|
38
|
+
rulesetName: rulesetName ? undefined : 'Required field missing'
|
|
39
|
+
},
|
|
40
|
+
timestamp: new Date().toISOString()
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const jobId = generateJobId();
|
|
44
|
+
const mockJob = {
|
|
45
|
+
jobId,
|
|
46
|
+
request: request.body,
|
|
47
|
+
status: 'queued',
|
|
48
|
+
startTime: new Date(),
|
|
49
|
+
progress: {
|
|
50
|
+
totalTasks: 1,
|
|
51
|
+
completedTasks: 0,
|
|
52
|
+
failedTasks: 0,
|
|
53
|
+
runningTasks: 0,
|
|
54
|
+
queuedTasks: 1
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
mockJobs.set(jobId, mockJob);
|
|
58
|
+
// Simulate async processing
|
|
59
|
+
simulateJobProcessing(jobId);
|
|
60
|
+
return reply.code(202).send({
|
|
61
|
+
jobId,
|
|
62
|
+
status: 'queued',
|
|
63
|
+
estimatedCompletion: new Date(Date.now() + 3000).toISOString(),
|
|
64
|
+
message: 'Lint job queued successfully'
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* GET /lint/:jobId - Get job status
|
|
69
|
+
*/
|
|
70
|
+
mockServer.get('/lint/:jobId', async (request, reply) => {
|
|
71
|
+
const { jobId } = request.params;
|
|
72
|
+
const job = mockJobs.get(jobId);
|
|
73
|
+
if (!job) {
|
|
74
|
+
return reply.code(404).send({
|
|
75
|
+
error: 'Job not found',
|
|
76
|
+
details: { jobId },
|
|
77
|
+
timestamp: new Date().toISOString()
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
jobId: job.jobId,
|
|
82
|
+
documentId: job.request.documentId,
|
|
83
|
+
rulesetName: job.request.rulesetName,
|
|
84
|
+
rulesetVersion: job.request.rulesetVersion || '1.1.0',
|
|
85
|
+
status: job.status,
|
|
86
|
+
progress: job.progress,
|
|
87
|
+
startTime: job.startTime.toISOString(),
|
|
88
|
+
endTime: job.endTime?.toISOString(),
|
|
89
|
+
estimatedCompletion: job.status === 'running'
|
|
90
|
+
? new Date(Date.now() + 2000).toISOString()
|
|
91
|
+
: undefined
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* GET /lint/:jobId/results - Get job results
|
|
96
|
+
*/
|
|
97
|
+
mockServer.get('/lint/:jobId/results', async (request, reply) => {
|
|
98
|
+
const { jobId } = request.params;
|
|
99
|
+
const job = mockJobs.get(jobId);
|
|
100
|
+
if (!job) {
|
|
101
|
+
return reply.code(404).send({
|
|
102
|
+
error: 'Job not found',
|
|
103
|
+
details: { jobId },
|
|
104
|
+
timestamp: new Date().toISOString()
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (job.status !== 'completed' && job.status !== 'completed_with_errors') {
|
|
108
|
+
return reply.code(202).send({
|
|
109
|
+
status: job.status,
|
|
110
|
+
message: 'Job still in progress',
|
|
111
|
+
progress: job.progress
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// Return mock results
|
|
115
|
+
const mockResult = {
|
|
116
|
+
jobId: job.jobId,
|
|
117
|
+
documentId: job.request.documentId,
|
|
118
|
+
rulesetName: job.request.rulesetName,
|
|
119
|
+
rulesetVersion: job.request.rulesetVersion || '1.1.0',
|
|
120
|
+
status: job.status,
|
|
121
|
+
timestamp: job.endTime,
|
|
122
|
+
totalExecutionTime: 2500,
|
|
123
|
+
summary: {
|
|
124
|
+
totalIssues: 15,
|
|
125
|
+
errorCount: 5,
|
|
126
|
+
warningCount: 8,
|
|
127
|
+
infoCount: 2,
|
|
128
|
+
hintCount: 0
|
|
129
|
+
},
|
|
130
|
+
results: [
|
|
131
|
+
{
|
|
132
|
+
ruleId: 'typed-enum',
|
|
133
|
+
code: 'typed-enum',
|
|
134
|
+
message: 'Enum values must be typed',
|
|
135
|
+
severity: 0,
|
|
136
|
+
path: ['paths', '/pets', 'get', 'responses', '200', 'content', 'application/json', 'schema', 'properties', 'status'],
|
|
137
|
+
range: {
|
|
138
|
+
start: { line: 45, character: 10 },
|
|
139
|
+
end: { line: 45, character: 30 }
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
ruleId: 'operation-tag-defined',
|
|
144
|
+
code: 'operation-tag-defined',
|
|
145
|
+
message: 'Operation tags must be defined in global tags',
|
|
146
|
+
severity: 1,
|
|
147
|
+
path: ['paths', '/pets', 'post', 'tags', 0]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
ruleId: 'info-contact',
|
|
151
|
+
code: 'info-contact',
|
|
152
|
+
message: 'Info object must contain contact information',
|
|
153
|
+
severity: 1,
|
|
154
|
+
path: ['info']
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
executionDetails: {
|
|
158
|
+
rulesetName: job.request.rulesetName,
|
|
159
|
+
rulesetVersion: job.request.rulesetVersion || '1.1.0',
|
|
160
|
+
executionTime: 2500,
|
|
161
|
+
success: true,
|
|
162
|
+
issueCount: 15,
|
|
163
|
+
issues: [],
|
|
164
|
+
metadata: {
|
|
165
|
+
ruleEngine: 'spectral',
|
|
166
|
+
documentId: job.request.documentId,
|
|
167
|
+
cacheHit: false
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
return mockResult;
|
|
172
|
+
});
|
|
173
|
+
/**
|
|
174
|
+
* GET /rulesets - List available rulesets
|
|
175
|
+
*/
|
|
176
|
+
mockServer.get('/rulesets', async () => {
|
|
177
|
+
const rulesets = rulesetLoader.listRulesets();
|
|
178
|
+
return { rulesets };
|
|
179
|
+
});
|
|
180
|
+
/**
|
|
181
|
+
* GET /rulesets/:name - Get ruleset details
|
|
182
|
+
*/
|
|
183
|
+
mockServer.get('/rulesets/:name', async (request, reply) => {
|
|
184
|
+
const { name } = request.params;
|
|
185
|
+
try {
|
|
186
|
+
const ruleset = await rulesetLoader.loadVersion(name);
|
|
187
|
+
return ruleset;
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return reply.code(404).send({
|
|
191
|
+
error: 'Ruleset not found',
|
|
192
|
+
details: {
|
|
193
|
+
name,
|
|
194
|
+
message: error instanceof Error ? error.message : String(error)
|
|
195
|
+
},
|
|
196
|
+
timestamp: new Date().toISOString()
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
/**
|
|
201
|
+
* GET /health - Health check
|
|
202
|
+
*/
|
|
203
|
+
mockServer.get('/health', async () => {
|
|
204
|
+
return {
|
|
205
|
+
status: 'healthy',
|
|
206
|
+
timestamp: new Date().toISOString(),
|
|
207
|
+
version: '0.1.0',
|
|
208
|
+
workerPool: {
|
|
209
|
+
activeWorkers: 3,
|
|
210
|
+
maxWorkers: 15,
|
|
211
|
+
idleWorkers: 2,
|
|
212
|
+
busyWorkers: 1,
|
|
213
|
+
queueDepth: 0
|
|
214
|
+
},
|
|
215
|
+
storage: {
|
|
216
|
+
connected: true,
|
|
217
|
+
type: 'memory'
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
/**
|
|
222
|
+
* Simulate job processing lifecycle
|
|
223
|
+
*/
|
|
224
|
+
function simulateJobProcessing(jobId) {
|
|
225
|
+
const job = mockJobs.get(jobId);
|
|
226
|
+
if (!job)
|
|
227
|
+
return;
|
|
228
|
+
// After 500ms: transition to running
|
|
229
|
+
setTimeout(() => {
|
|
230
|
+
job.status = 'running';
|
|
231
|
+
job.progress.queuedTasks = 0;
|
|
232
|
+
job.progress.runningTasks = 1;
|
|
233
|
+
}, 500);
|
|
234
|
+
// After 2500ms: transition to completed
|
|
235
|
+
setTimeout(() => {
|
|
236
|
+
job.status = 'completed';
|
|
237
|
+
job.endTime = new Date();
|
|
238
|
+
job.progress.runningTasks = 0;
|
|
239
|
+
job.progress.completedTasks = 1;
|
|
240
|
+
}, 2500);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Start mock server
|
|
244
|
+
*/
|
|
245
|
+
async function start() {
|
|
246
|
+
try {
|
|
247
|
+
// Initialize RulesetLoader
|
|
248
|
+
console.log('🔧 Initializing RulesetLoader...');
|
|
249
|
+
const config = await loadConfig();
|
|
250
|
+
rulesetLoader = new RulesetLoader({
|
|
251
|
+
configPath: `${config.rulesets.directory}/config/rulesets.yaml`,
|
|
252
|
+
sourcesBasePath: `${config.rulesets.directory}/sources`,
|
|
253
|
+
enableCache: config.rulesets.cacheEnabled,
|
|
254
|
+
});
|
|
255
|
+
await rulesetLoader.initialize();
|
|
256
|
+
const rulesets = rulesetLoader.listRulesets();
|
|
257
|
+
console.log(`✅ Loaded ${rulesets.length} rulesets:`);
|
|
258
|
+
for (const ruleset of rulesets) {
|
|
259
|
+
console.log(` - ${ruleset.displayName} (${ruleset.name}): ${ruleset.ruleCount} rules`);
|
|
260
|
+
}
|
|
261
|
+
await mockServer.listen({ port: 3003, host: '0.0.0.0' });
|
|
262
|
+
console.log('\n🚀 Mock OpenAPI Lint Orchestrator running on port 3003');
|
|
263
|
+
console.log('\nAvailable endpoints:');
|
|
264
|
+
console.log(' POST /lint - Submit lint job');
|
|
265
|
+
console.log(' GET /lint/:jobId - Get job status');
|
|
266
|
+
console.log(' GET /lint/:jobId/results - Get job results');
|
|
267
|
+
console.log(' GET /rulesets - List rulesets (REAL DATA!)');
|
|
268
|
+
console.log(' GET /rulesets/:name - Get ruleset details (REAL DATA!)');
|
|
269
|
+
console.log(' GET /health - Health check');
|
|
270
|
+
console.log('\nExample:');
|
|
271
|
+
console.log(' curl -X POST http://localhost:3003/lint \\');
|
|
272
|
+
console.log(' -H "Content-Type: application/json" \\');
|
|
273
|
+
console.log(' -d \'{"documentId": "test-doc", "rulesetName": "pubhub"}\'');
|
|
274
|
+
console.log('\n curl http://localhost:3003/rulesets');
|
|
275
|
+
console.log(' curl http://localhost:3003/rulesets/pubhub | jq .rules | head -50');
|
|
276
|
+
console.log('\n');
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
mockServer.log.error(err);
|
|
280
|
+
process.exit(1);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Handle shutdown gracefully
|
|
284
|
+
process.on('SIGINT', async () => {
|
|
285
|
+
console.log('\n\nShutting down mock server...');
|
|
286
|
+
await mockServer.close();
|
|
287
|
+
process.exit(0);
|
|
288
|
+
});
|
|
289
|
+
start();
|
|
290
|
+
//# sourceMappingURL=mock-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../src/mock-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { WorkerPoolManager } from './worker-pool.js';
|
|
2
|
+
import { RulesetLoader } from './ruleset-loader.js';
|
|
3
|
+
import type { DocumentStoreAdapter } from '@cisco_open/linting-document-store';
|
|
4
|
+
import { LintResultStorage } from './storage/storage-adapter.js';
|
|
5
|
+
import type { ReportServiceConfig } from './types.js';
|
|
6
|
+
import type { LintJob, LintJobRequest, LintJobResult, WorkerPoolConfig, ListJobsOptions, ListJobsResponse, DocumentLintActivity } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Thrown when the orchestrator has reached its maximum concurrent job capacity.
|
|
9
|
+
* The HTTP layer should translate this into a 429 Too Many Requests response.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CapacityExceededError extends Error {
|
|
12
|
+
readonly activeJobs: number;
|
|
13
|
+
readonly maxJobs: number;
|
|
14
|
+
constructor(message: string, activeJobs: number, maxJobs: number);
|
|
15
|
+
}
|
|
16
|
+
export interface OrchestratorConfig {
|
|
17
|
+
workerPool: WorkerPoolConfig;
|
|
18
|
+
maxConcurrentJobs?: number;
|
|
19
|
+
enableCache?: boolean;
|
|
20
|
+
reportService?: ReportServiceConfig;
|
|
21
|
+
/** Maximum number of issues to collect per job (safety limit). Default: 100000 */
|
|
22
|
+
maxIssuesPerJob?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class Orchestrator {
|
|
25
|
+
private workerPool;
|
|
26
|
+
private storage;
|
|
27
|
+
private rulesetLoader;
|
|
28
|
+
private documentStore;
|
|
29
|
+
private jobs;
|
|
30
|
+
private config;
|
|
31
|
+
private initialized;
|
|
32
|
+
private cacheHits;
|
|
33
|
+
private cacheMisses;
|
|
34
|
+
private activeJobCount;
|
|
35
|
+
private reportClient;
|
|
36
|
+
private reportServiceConfig;
|
|
37
|
+
constructor(workerPool: WorkerPoolManager, storage: LintResultStorage, rulesetLoader: RulesetLoader, documentStore: DocumentStoreAdapter, config: OrchestratorConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Initialize orchestrator
|
|
40
|
+
*/
|
|
41
|
+
initialize(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize Report Service client integration
|
|
44
|
+
*
|
|
45
|
+
* Requirements:
|
|
46
|
+
* - Info logs on successful start showing version compatibility
|
|
47
|
+
* - Always try to start if configured, warn if unavailable (graceful degradation)
|
|
48
|
+
* - stopIfUnavailable flag to fail startup for production safety
|
|
49
|
+
*/
|
|
50
|
+
private initializeReportClient;
|
|
51
|
+
/**
|
|
52
|
+
* Submit a new lint job
|
|
53
|
+
*/
|
|
54
|
+
submitJob(request: LintJobRequest): Promise<string>;
|
|
55
|
+
/**
|
|
56
|
+
* Execute a job (run tasks via worker pool)
|
|
57
|
+
*/
|
|
58
|
+
private executeJob;
|
|
59
|
+
/**
|
|
60
|
+
* Execute task with exponential backoff retry
|
|
61
|
+
*/
|
|
62
|
+
private executeTaskWithRetry;
|
|
63
|
+
/**
|
|
64
|
+
* Get job status
|
|
65
|
+
*/
|
|
66
|
+
getJobStatus(jobId: string): Promise<LintJob | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Get job result
|
|
69
|
+
*/
|
|
70
|
+
getJobResult(jobId: string): Promise<LintJobResult | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Check cache for existing result
|
|
73
|
+
*/
|
|
74
|
+
private checkCache;
|
|
75
|
+
/**
|
|
76
|
+
* Invalidate cache for a document
|
|
77
|
+
*/
|
|
78
|
+
invalidateCache(documentId: string): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Get orchestrator statistics
|
|
81
|
+
*/
|
|
82
|
+
getStats(): {
|
|
83
|
+
jobs: {
|
|
84
|
+
total: number;
|
|
85
|
+
queued: number;
|
|
86
|
+
running: number;
|
|
87
|
+
completed: number;
|
|
88
|
+
failed: number;
|
|
89
|
+
};
|
|
90
|
+
capacity: {
|
|
91
|
+
activeJobs: number;
|
|
92
|
+
maxConcurrentJobs: number;
|
|
93
|
+
utilizationPercent: number;
|
|
94
|
+
};
|
|
95
|
+
cache: {
|
|
96
|
+
hits: number;
|
|
97
|
+
misses: number;
|
|
98
|
+
hitRate: number;
|
|
99
|
+
};
|
|
100
|
+
workers: {
|
|
101
|
+
total: number;
|
|
102
|
+
active: number;
|
|
103
|
+
idle: number;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* List jobs with filtering and pagination (lightweight - documentId only)
|
|
108
|
+
*/
|
|
109
|
+
listJobs(options?: ListJobsOptions, runtimeSessionId?: string): Promise<ListJobsResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* List jobs with document metadata enrichment (detailed)
|
|
112
|
+
*/
|
|
113
|
+
listJobsDetailed(options?: ListJobsOptions, runtimeSessionId?: string): Promise<ListJobsResponse>;
|
|
114
|
+
/**
|
|
115
|
+
* Get lint activity for a specific document
|
|
116
|
+
*/
|
|
117
|
+
getDocumentLintActivity(documentId: string): Promise<DocumentLintActivity | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Build JobNotification from LintJobResult for Report Service
|
|
120
|
+
*/
|
|
121
|
+
private buildJobNotification;
|
|
122
|
+
/**
|
|
123
|
+
* Notify Report Service about completed job (fire-and-forget)
|
|
124
|
+
*
|
|
125
|
+
* On errors, checks compatibility to diagnose version incompatibility issues
|
|
126
|
+
*/
|
|
127
|
+
private notifyReportService;
|
|
128
|
+
/**
|
|
129
|
+
* Deliver job result to callback URL (fire-and-forget).
|
|
130
|
+
* Attempts one delivery with a 10s timeout.
|
|
131
|
+
*/
|
|
132
|
+
private deliverCallback;
|
|
133
|
+
/**
|
|
134
|
+
* Check if Report Service client is active
|
|
135
|
+
*/
|
|
136
|
+
hasReportClient(): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Get Report Service client status
|
|
139
|
+
*
|
|
140
|
+
* Note: Compatibility check is done once at startup, not on every health check
|
|
141
|
+
* for performance reasons. This method returns current client state only.
|
|
142
|
+
*/
|
|
143
|
+
getReportClientStatus(): Promise<any | null>;
|
|
144
|
+
/**
|
|
145
|
+
* Shutdown orchestrator
|
|
146
|
+
*/
|
|
147
|
+
shutdown(): Promise<void>;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|