@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.
Files changed (197) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +5 -0
  3. package/README.md +43 -0
  4. package/build/cli/api-client.d.ts +170 -0
  5. package/build/cli/api-client.d.ts.map +1 -0
  6. package/build/cli/api-client.js +284 -0
  7. package/build/cli/api-client.js.map +1 -0
  8. package/build/cli/commands/agents.d.ts +7 -0
  9. package/build/cli/commands/agents.d.ts.map +1 -0
  10. package/build/cli/commands/agents.js +694 -0
  11. package/build/cli/commands/agents.js.map +1 -0
  12. package/build/cli/commands/completion.d.ts +9 -0
  13. package/build/cli/commands/completion.d.ts.map +1 -0
  14. package/build/cli/commands/completion.js +177 -0
  15. package/build/cli/commands/completion.js.map +1 -0
  16. package/build/cli/commands/config.d.ts +10 -0
  17. package/build/cli/commands/config.d.ts.map +1 -0
  18. package/build/cli/commands/config.js +284 -0
  19. package/build/cli/commands/config.js.map +1 -0
  20. package/build/cli/commands/health.d.ts +11 -0
  21. package/build/cli/commands/health.d.ts.map +1 -0
  22. package/build/cli/commands/health.js +38 -0
  23. package/build/cli/commands/health.js.map +1 -0
  24. package/build/cli/commands/help.d.ts +6 -0
  25. package/build/cli/commands/help.d.ts.map +1 -0
  26. package/build/cli/commands/help.js +20 -0
  27. package/build/cli/commands/help.js.map +1 -0
  28. package/build/cli/commands/history.d.ts +11 -0
  29. package/build/cli/commands/history.d.ts.map +1 -0
  30. package/build/cli/commands/history.js +50 -0
  31. package/build/cli/commands/history.js.map +1 -0
  32. package/build/cli/commands/jobs.d.ts +12 -0
  33. package/build/cli/commands/jobs.d.ts.map +1 -0
  34. package/build/cli/commands/jobs.js +84 -0
  35. package/build/cli/commands/jobs.js.map +1 -0
  36. package/build/cli/commands/lint.d.ts +15 -0
  37. package/build/cli/commands/lint.d.ts.map +1 -0
  38. package/build/cli/commands/lint.js +384 -0
  39. package/build/cli/commands/lint.js.map +1 -0
  40. package/build/cli/commands/ps.d.ts +8 -0
  41. package/build/cli/commands/ps.d.ts.map +1 -0
  42. package/build/cli/commands/ps.js +74 -0
  43. package/build/cli/commands/ps.js.map +1 -0
  44. package/build/cli/commands/reproduce.d.ts +9 -0
  45. package/build/cli/commands/reproduce.d.ts.map +1 -0
  46. package/build/cli/commands/reproduce.js +31 -0
  47. package/build/cli/commands/reproduce.js.map +1 -0
  48. package/build/cli/commands/reset.d.ts +5 -0
  49. package/build/cli/commands/reset.d.ts.map +1 -0
  50. package/build/cli/commands/reset.js +13 -0
  51. package/build/cli/commands/reset.js.map +1 -0
  52. package/build/cli/commands/results.d.ts +13 -0
  53. package/build/cli/commands/results.d.ts.map +1 -0
  54. package/build/cli/commands/results.js +129 -0
  55. package/build/cli/commands/results.js.map +1 -0
  56. package/build/cli/commands/rulesets/check.d.ts +12 -0
  57. package/build/cli/commands/rulesets/check.d.ts.map +1 -0
  58. package/build/cli/commands/rulesets/check.js +226 -0
  59. package/build/cli/commands/rulesets/check.js.map +1 -0
  60. package/build/cli/commands/rulesets/index.d.ts +5 -0
  61. package/build/cli/commands/rulesets/index.d.ts.map +1 -0
  62. package/build/cli/commands/rulesets/index.js +6 -0
  63. package/build/cli/commands/rulesets/index.js.map +1 -0
  64. package/build/cli/commands/rulesets/view.d.ts +16 -0
  65. package/build/cli/commands/rulesets/view.d.ts.map +1 -0
  66. package/build/cli/commands/rulesets/view.js +100 -0
  67. package/build/cli/commands/rulesets/view.js.map +1 -0
  68. package/build/cli/commands/start.d.ts +16 -0
  69. package/build/cli/commands/start.d.ts.map +1 -0
  70. package/build/cli/commands/start.js +167 -0
  71. package/build/cli/commands/start.js.map +1 -0
  72. package/build/cli/commands/status.d.ts +9 -0
  73. package/build/cli/commands/status.d.ts.map +1 -0
  74. package/build/cli/commands/status.js +46 -0
  75. package/build/cli/commands/status.js.map +1 -0
  76. package/build/cli/commands/stop.d.ts +11 -0
  77. package/build/cli/commands/stop.d.ts.map +1 -0
  78. package/build/cli/commands/stop.js +78 -0
  79. package/build/cli/commands/stop.js.map +1 -0
  80. package/build/cli/config-manager.d.ts +134 -0
  81. package/build/cli/config-manager.d.ts.map +1 -0
  82. package/build/cli/config-manager.js +288 -0
  83. package/build/cli/config-manager.js.map +1 -0
  84. package/build/cli/formatters.d.ts +62 -0
  85. package/build/cli/formatters.d.ts.map +1 -0
  86. package/build/cli/formatters.js +715 -0
  87. package/build/cli/formatters.js.map +1 -0
  88. package/build/cli/history-manager.d.ts +97 -0
  89. package/build/cli/history-manager.d.ts.map +1 -0
  90. package/build/cli/history-manager.js +201 -0
  91. package/build/cli/history-manager.js.map +1 -0
  92. package/build/cli/index.d.ts +16 -0
  93. package/build/cli/index.d.ts.map +1 -0
  94. package/build/cli/index.js +335 -0
  95. package/build/cli/index.js.map +1 -0
  96. package/build/cli/list-rulesets.d.ts +15 -0
  97. package/build/cli/list-rulesets.d.ts.map +1 -0
  98. package/build/cli/list-rulesets.js +193 -0
  99. package/build/cli/list-rulesets.js.map +1 -0
  100. package/build/cli/utils/connection-error.d.ts +9 -0
  101. package/build/cli/utils/connection-error.d.ts.map +1 -0
  102. package/build/cli/utils/connection-error.js +30 -0
  103. package/build/cli/utils/connection-error.js.map +1 -0
  104. package/build/cli/utils/embedded-server.d.ts +21 -0
  105. package/build/cli/utils/embedded-server.d.ts.map +1 -0
  106. package/build/cli/utils/embedded-server.js +61 -0
  107. package/build/cli/utils/embedded-server.js.map +1 -0
  108. package/build/cli/utils/mode-validator.d.ts +13 -0
  109. package/build/cli/utils/mode-validator.d.ts.map +1 -0
  110. package/build/cli/utils/mode-validator.js +31 -0
  111. package/build/cli/utils/mode-validator.js.map +1 -0
  112. package/build/cli/utils/port-checker.d.ts +20 -0
  113. package/build/cli/utils/port-checker.d.ts.map +1 -0
  114. package/build/cli/utils/port-checker.js +49 -0
  115. package/build/cli/utils/port-checker.js.map +1 -0
  116. package/build/config.d.ts +57 -0
  117. package/build/config.d.ts.map +1 -0
  118. package/build/config.js +527 -0
  119. package/build/config.js.map +1 -0
  120. package/build/document-accessor.d.ts +79 -0
  121. package/build/document-accessor.d.ts.map +1 -0
  122. package/build/document-accessor.js +148 -0
  123. package/build/document-accessor.js.map +1 -0
  124. package/build/formatters/reproduce-markdown.d.ts +14 -0
  125. package/build/formatters/reproduce-markdown.d.ts.map +1 -0
  126. package/build/formatters/reproduce-markdown.js +182 -0
  127. package/build/formatters/reproduce-markdown.js.map +1 -0
  128. package/build/formatters/sarif-builder.d.ts +86 -0
  129. package/build/formatters/sarif-builder.d.ts.map +1 -0
  130. package/build/formatters/sarif-builder.js +276 -0
  131. package/build/formatters/sarif-builder.js.map +1 -0
  132. package/build/index.d.ts +3 -0
  133. package/build/index.d.ts.map +1 -0
  134. package/build/index.js +174 -0
  135. package/build/index.js.map +1 -0
  136. package/build/logger.d.ts +38 -0
  137. package/build/logger.d.ts.map +1 -0
  138. package/build/logger.js +105 -0
  139. package/build/logger.js.map +1 -0
  140. package/build/mock-server.d.ts +2 -0
  141. package/build/mock-server.d.ts.map +1 -0
  142. package/build/mock-server.js +290 -0
  143. package/build/mock-server.js.map +1 -0
  144. package/build/orchestrator.d.ts +149 -0
  145. package/build/orchestrator.d.ts.map +1 -0
  146. package/build/orchestrator.js +874 -0
  147. package/build/orchestrator.js.map +1 -0
  148. package/build/ruleset-loader.d.ts +79 -0
  149. package/build/ruleset-loader.d.ts.map +1 -0
  150. package/build/ruleset-loader.js +514 -0
  151. package/build/ruleset-loader.js.map +1 -0
  152. package/build/schemas.d.ts +2568 -0
  153. package/build/schemas.d.ts.map +1 -0
  154. package/build/schemas.js +674 -0
  155. package/build/schemas.js.map +1 -0
  156. package/build/server.d.ts +39 -0
  157. package/build/server.d.ts.map +1 -0
  158. package/build/server.js +834 -0
  159. package/build/server.js.map +1 -0
  160. package/build/storage/memory-storage.d.ts +190 -0
  161. package/build/storage/memory-storage.d.ts.map +1 -0
  162. package/build/storage/memory-storage.js +629 -0
  163. package/build/storage/memory-storage.js.map +1 -0
  164. package/build/storage/redis-storage.d.ts +134 -0
  165. package/build/storage/redis-storage.d.ts.map +1 -0
  166. package/build/storage/redis-storage.js +236 -0
  167. package/build/storage/redis-storage.js.map +1 -0
  168. package/build/storage/storage-adapter.d.ts +189 -0
  169. package/build/storage/storage-adapter.d.ts.map +1 -0
  170. package/build/storage/storage-adapter.js +36 -0
  171. package/build/storage/storage-adapter.js.map +1 -0
  172. package/build/types.d.ts +981 -0
  173. package/build/types.d.ts.map +1 -0
  174. package/build/types.js +5 -0
  175. package/build/types.js.map +1 -0
  176. package/build/utils/version.d.ts +40 -0
  177. package/build/utils/version.d.ts.map +1 -0
  178. package/build/utils/version.js +94 -0
  179. package/build/utils/version.js.map +1 -0
  180. package/build/validation.d.ts +95 -0
  181. package/build/validation.d.ts.map +1 -0
  182. package/build/validation.js +150 -0
  183. package/build/validation.js.map +1 -0
  184. package/build/worker-pool.d.ts +137 -0
  185. package/build/worker-pool.d.ts.map +1 -0
  186. package/build/worker-pool.js +549 -0
  187. package/build/worker-pool.js.map +1 -0
  188. package/build/worker.d.ts +2 -0
  189. package/build/worker.d.ts.map +1 -0
  190. package/build/worker.js +427 -0
  191. package/build/worker.js.map +1 -0
  192. package/package.json +110 -0
  193. package/rulesets/CHANGELOG.md +25 -0
  194. package/rulesets/config/rulesets.yaml +96 -0
  195. package/rulesets/sources/README.md +47 -0
  196. package/rulesets/sources/example/oas-recommended/v1.0.0/ruleset.yaml +6 -0
  197. 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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"}