@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
package/build/config.js
ADDED
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
// Copyright 2026 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
/**
|
|
5
|
+
* Configuration loader for OpenAPI Lint Orchestrator
|
|
6
|
+
*
|
|
7
|
+
* Zero-config by default with sensible defaults
|
|
8
|
+
* Optional YAML file for advanced configuration
|
|
9
|
+
* Environment variable overrides always available
|
|
10
|
+
*/
|
|
11
|
+
import 'dotenv/config'; // Load .env file before any config loading
|
|
12
|
+
import { readFile } from 'fs/promises';
|
|
13
|
+
import { parse as parseYaml } from 'yaml';
|
|
14
|
+
import path from 'path';
|
|
15
|
+
import { fileURLToPath } from 'url';
|
|
16
|
+
import os from 'os';
|
|
17
|
+
// Resolve installation directory for default paths
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = path.dirname(__filename);
|
|
20
|
+
const INSTALL_DIR = path.resolve(__dirname, '..');
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a resolver module name to its absolute file path.
|
|
23
|
+
* Module lives in `{packageRoot}/resolvers/{name}.js`.
|
|
24
|
+
* Returns `undefined` if `name` is falsy (disabled).
|
|
25
|
+
*/
|
|
26
|
+
export function resolveResolverPath(name) {
|
|
27
|
+
if (!name)
|
|
28
|
+
return undefined;
|
|
29
|
+
// INSTALL_DIR is the package root (one level above build/)
|
|
30
|
+
return path.resolve(INSTALL_DIR, 'resolvers', `${name}.js`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the orchestrator home directory.
|
|
34
|
+
* SPECTIFY_HOME env var overrides the default ~/.spectify.
|
|
35
|
+
* Used as the base for all runtime data (uploads, reports, config).
|
|
36
|
+
*/
|
|
37
|
+
export function spectifyHome() {
|
|
38
|
+
return process.env.SPECTIFY_HOME || path.join(os.homedir(), '.spectify');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Default configuration (zero-config defaults)
|
|
42
|
+
*/
|
|
43
|
+
const DEFAULT_CONFIG = {
|
|
44
|
+
server: {
|
|
45
|
+
port: 3003,
|
|
46
|
+
host: '0.0.0.0',
|
|
47
|
+
maxDocumentSizeMB: 20 // 20MB default for large OpenAPI documents
|
|
48
|
+
},
|
|
49
|
+
documentStore: {
|
|
50
|
+
type: 'local',
|
|
51
|
+
baseDir: './uploads',
|
|
52
|
+
fallbackHttp: 'http://localhost:3002'
|
|
53
|
+
},
|
|
54
|
+
workerPool: {
|
|
55
|
+
minWorkersPerRuleset: 1,
|
|
56
|
+
maxWorkersPerRuleset: 2,
|
|
57
|
+
totalMaxWorkers: 15,
|
|
58
|
+
taskTimeout: 30000,
|
|
59
|
+
maxRetries: 2,
|
|
60
|
+
workerWaitTimeout: 30000, // Max ms to wait for a busy worker to become ready
|
|
61
|
+
scaleUpThreshold: 10,
|
|
62
|
+
scaleDownThreshold: 1,
|
|
63
|
+
exponentialBackoff: {
|
|
64
|
+
initialDelay: 1000,
|
|
65
|
+
maxDelay: 30000,
|
|
66
|
+
multiplier: 2
|
|
67
|
+
},
|
|
68
|
+
documentCache: {
|
|
69
|
+
enabled: true,
|
|
70
|
+
maxDocumentsPerWorker: 1,
|
|
71
|
+
maxCacheSizePerWorker: 52428800, // 50MB
|
|
72
|
+
evictAfterMinutes: 5
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
rulesets: {
|
|
76
|
+
directory: path.join(INSTALL_DIR, 'rulesets'),
|
|
77
|
+
defaultVersion: 'latest',
|
|
78
|
+
cacheEnabled: true
|
|
79
|
+
},
|
|
80
|
+
storage: {
|
|
81
|
+
type: 'memory'
|
|
82
|
+
},
|
|
83
|
+
logging: {
|
|
84
|
+
level: 'info',
|
|
85
|
+
format: 'json',
|
|
86
|
+
destination: 'console'
|
|
87
|
+
},
|
|
88
|
+
resolver: 'ignore-external-refs'
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Load configuration from optional file or use defaults
|
|
92
|
+
*/
|
|
93
|
+
export async function loadConfig(configPath) {
|
|
94
|
+
let config = JSON.parse(JSON.stringify(DEFAULT_CONFIG)); // Deep clone
|
|
95
|
+
// If config file provided via --config flag, load it
|
|
96
|
+
if (configPath) {
|
|
97
|
+
try {
|
|
98
|
+
const configContent = await readFile(configPath, 'utf-8');
|
|
99
|
+
const fileConfig = parseYaml(configContent);
|
|
100
|
+
config = mergeConfig(config, fileConfig);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.warn(`Warning: Could not load config file ${configPath}, using defaults`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Apply environment variable overrides (always available)
|
|
107
|
+
applyEnvOverrides(config);
|
|
108
|
+
// Auto-detect CPU-based limits
|
|
109
|
+
applyAutoDetection(config);
|
|
110
|
+
// Resolve rulesets directory relative to binary location if relative path
|
|
111
|
+
resolveRulesetsDirectory(config);
|
|
112
|
+
return config;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Deep merge two configuration objects
|
|
116
|
+
*/
|
|
117
|
+
function mergeConfig(base, override) {
|
|
118
|
+
const result = { ...base };
|
|
119
|
+
for (const key in override) {
|
|
120
|
+
if (override[key] && typeof override[key] === 'object' && !Array.isArray(override[key])) {
|
|
121
|
+
result[key] = mergeConfig(base[key] || {}, override[key]);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
result[key] = override[key];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolve rulesets directory to absolute path
|
|
131
|
+
* If relative path, resolve relative to the binary location (build/ directory)
|
|
132
|
+
* This allows spectifyd to run from any directory
|
|
133
|
+
*/
|
|
134
|
+
function resolveRulesetsDirectory(config) {
|
|
135
|
+
const rulesetsDir = config.rulesets.directory;
|
|
136
|
+
// If already absolute, leave it
|
|
137
|
+
if (path.isAbsolute(rulesetsDir)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Get the directory containing this config module
|
|
141
|
+
// In production: /path/to/spectify/build/config.js
|
|
142
|
+
// We want: /path/to/spectify/rulesets
|
|
143
|
+
const moduleDir = new URL('.', import.meta.url).pathname;
|
|
144
|
+
const projectRoot = path.resolve(moduleDir, '..');
|
|
145
|
+
const absoluteRulesetsDir = path.resolve(projectRoot, rulesetsDir);
|
|
146
|
+
config.rulesets.directory = absoluteRulesetsDir;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get default pending reports directory based on environment
|
|
150
|
+
* Production: ~/.spectify/reports/pending
|
|
151
|
+
* Development: ./pending-reports (local to project)
|
|
152
|
+
*/
|
|
153
|
+
function getPendingDir() {
|
|
154
|
+
if (process.env.SPECTIFYD_REPORTS_PENDING_DIR) {
|
|
155
|
+
return process.env.SPECTIFYD_REPORTS_PENDING_DIR;
|
|
156
|
+
}
|
|
157
|
+
return path.join(spectifyHome(), 'reports', 'pending');
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get reports-service mode with auto-detection from deployment context
|
|
161
|
+
*/
|
|
162
|
+
function getReportServiceMode(deploymentMode) {
|
|
163
|
+
return deploymentMode;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Determine if the daemon should stop on linting-reporting-service unavailability
|
|
167
|
+
* Mode-based defaults:
|
|
168
|
+
* - Light mode: false (optional, continue if unavailable)
|
|
169
|
+
* - Companion/Standalone: true (required, fail if unavailable)
|
|
170
|
+
*/
|
|
171
|
+
function getStopIfUnavailable(mode) {
|
|
172
|
+
// Environment override takes precedence
|
|
173
|
+
if (process.env.SPECTIFYD_REPORTS_STOP_IF_UNAVAILABLE !== undefined) {
|
|
174
|
+
return process.env.SPECTIFYD_REPORTS_STOP_IF_UNAVAILABLE === 'true';
|
|
175
|
+
}
|
|
176
|
+
// Mode-based defaults:
|
|
177
|
+
// - Light mode: optional (continue if unavailable)
|
|
178
|
+
// - Companion/Standalone: required (fail if unavailable)
|
|
179
|
+
return mode === 'companion' || mode === 'standalone';
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Apply environment variable overrides
|
|
183
|
+
*
|
|
184
|
+
* Daemon-side env vars are prefixed SPECTIFYD_*. Client-side connection
|
|
185
|
+
* config for the linting reporting service is prefixed
|
|
186
|
+
* SPECTIFYD_REPORTS_* (the reports service itself reads SPECTIFYR_*).
|
|
187
|
+
*/
|
|
188
|
+
function applyEnvOverrides(config) {
|
|
189
|
+
// Rulesets directory (allow override via environment)
|
|
190
|
+
if (process.env.SPECTIFYD_RULESETS_DIR) {
|
|
191
|
+
config.rulesets.directory = process.env.SPECTIFYD_RULESETS_DIR;
|
|
192
|
+
}
|
|
193
|
+
// Server configuration
|
|
194
|
+
if (process.env.SPECTIFYD_PORT) {
|
|
195
|
+
config.server.port = parseInt(process.env.SPECTIFYD_PORT, 10);
|
|
196
|
+
}
|
|
197
|
+
if (process.env.SPECTIFYD_HOST) {
|
|
198
|
+
config.server.host = process.env.SPECTIFYD_HOST;
|
|
199
|
+
}
|
|
200
|
+
// Document store
|
|
201
|
+
if (process.env.SPECTIFYD_DOCUMENT_STORE_TYPE) {
|
|
202
|
+
config.documentStore.type = process.env.SPECTIFYD_DOCUMENT_STORE_TYPE;
|
|
203
|
+
}
|
|
204
|
+
if (process.env.SPECTIFYD_DOCUMENT_STORE_DIR) {
|
|
205
|
+
config.documentStore.baseDir = process.env.SPECTIFYD_DOCUMENT_STORE_DIR;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// Default to SPECTIFY_HOME/uploads rather than ./uploads
|
|
209
|
+
config.documentStore.baseDir = path.join(spectifyHome(), 'uploads');
|
|
210
|
+
}
|
|
211
|
+
if (process.env.SPECTIFYD_DOCUMENT_STORE_FALLBACK_HTTP) {
|
|
212
|
+
config.documentStore.fallbackHttp = process.env.SPECTIFYD_DOCUMENT_STORE_FALLBACK_HTTP;
|
|
213
|
+
}
|
|
214
|
+
// Worker pool
|
|
215
|
+
if (process.env.SPECTIFYD_MIN_WORKERS_PER_RULESET) {
|
|
216
|
+
config.workerPool.minWorkersPerRuleset = parseInt(process.env.SPECTIFYD_MIN_WORKERS_PER_RULESET, 10);
|
|
217
|
+
}
|
|
218
|
+
if (process.env.SPECTIFYD_MAX_WORKERS_PER_RULESET) {
|
|
219
|
+
config.workerPool.maxWorkersPerRuleset = parseInt(process.env.SPECTIFYD_MAX_WORKERS_PER_RULESET, 10);
|
|
220
|
+
}
|
|
221
|
+
if (process.env.SPECTIFYD_TOTAL_MAX_WORKERS) {
|
|
222
|
+
config.workerPool.totalMaxWorkers = parseInt(process.env.SPECTIFYD_TOTAL_MAX_WORKERS, 10);
|
|
223
|
+
}
|
|
224
|
+
if (process.env.SPECTIFYD_WORKER_TIMEOUT) {
|
|
225
|
+
config.workerPool.taskTimeout = parseInt(process.env.SPECTIFYD_WORKER_TIMEOUT, 10);
|
|
226
|
+
}
|
|
227
|
+
if (process.env.SPECTIFYD_WORKER_WAIT_TIMEOUT) {
|
|
228
|
+
config.workerPool.workerWaitTimeout = parseInt(process.env.SPECTIFYD_WORKER_WAIT_TIMEOUT, 10);
|
|
229
|
+
}
|
|
230
|
+
// Document cache
|
|
231
|
+
if (process.env.SPECTIFYD_DOCUMENT_CACHE_ENABLED) {
|
|
232
|
+
config.workerPool.documentCache.enabled = process.env.SPECTIFYD_DOCUMENT_CACHE_ENABLED === 'true';
|
|
233
|
+
}
|
|
234
|
+
// Storage
|
|
235
|
+
if (process.env.SPECTIFYD_STORAGE_TYPE) {
|
|
236
|
+
config.storage.type = process.env.SPECTIFYD_STORAGE_TYPE;
|
|
237
|
+
}
|
|
238
|
+
if (process.env.SPECTIFYD_REDIS_URL) {
|
|
239
|
+
config.storage.connectionString = process.env.SPECTIFYD_REDIS_URL;
|
|
240
|
+
}
|
|
241
|
+
// Logging
|
|
242
|
+
if (process.env.SPECTIFYD_LOG_LEVEL) {
|
|
243
|
+
config.logging.level = process.env.SPECTIFYD_LOG_LEVEL;
|
|
244
|
+
}
|
|
245
|
+
if (process.env.SPECTIFYD_LOG_FORMAT) {
|
|
246
|
+
config.logging.format = process.env.SPECTIFYD_LOG_FORMAT;
|
|
247
|
+
}
|
|
248
|
+
// Resolver (custom $ref resolver module name)
|
|
249
|
+
if (process.env.SPECTIFYD_RESOLVER !== undefined) {
|
|
250
|
+
config.resolver = process.env.SPECTIFYD_RESOLVER;
|
|
251
|
+
}
|
|
252
|
+
// Linting reporting service integration (client-side connection config)
|
|
253
|
+
if (process.env.SPECTIFYD_REPORTS_ENABLED === 'true') {
|
|
254
|
+
// Get deployment mode from config (will be set by factory functions)
|
|
255
|
+
const deploymentMode = config.mode || 'standalone';
|
|
256
|
+
const mode = getReportServiceMode(deploymentMode);
|
|
257
|
+
config.reportService = {
|
|
258
|
+
enabled: true,
|
|
259
|
+
url: process.env.SPECTIFYD_REPORTS_URL || 'http://localhost:3010',
|
|
260
|
+
apiKey: process.env.SPECTIFYD_REPORTS_API_KEY || '',
|
|
261
|
+
mode,
|
|
262
|
+
timeout: parseInt(process.env.SPECTIFYD_REPORTS_TIMEOUT || '5000', 10),
|
|
263
|
+
maxRetries: parseInt(process.env.SPECTIFYD_REPORTS_MAX_RETRIES || '3', 10),
|
|
264
|
+
baseRetryDelay: parseInt(process.env.SPECTIFYD_REPORTS_BASE_RETRY_DELAY || '1000', 10),
|
|
265
|
+
pendingDir: getPendingDir(),
|
|
266
|
+
enableRetryJob: process.env.SPECTIFYD_REPORTS_RETRY_JOB_ENABLED !== 'false',
|
|
267
|
+
retryJobInterval: parseInt(process.env.SPECTIFYD_REPORTS_RETRY_JOB_INTERVAL || '300000', 10),
|
|
268
|
+
stopIfUnavailable: getStopIfUnavailable(mode),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
else if (process.env.SPECTIFYD_REPORTS_ENABLED === 'false') {
|
|
272
|
+
config.reportService = undefined;
|
|
273
|
+
}
|
|
274
|
+
// If SPECTIFYD_REPORTS_ENABLED not set, leave as undefined (not configured)
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Auto-detect optimal worker pool size based on CPU cores
|
|
278
|
+
*/
|
|
279
|
+
function applyAutoDetection(config) {
|
|
280
|
+
const cpuCount = os.cpus().length;
|
|
281
|
+
// Auto-detect total max workers if not explicitly set
|
|
282
|
+
// Use 75% of CPU cores, capped at configured max
|
|
283
|
+
const autoDetectedMax = Math.max(4, Math.floor(cpuCount * 0.75));
|
|
284
|
+
const configuredMax = config.workerPool.totalMaxWorkers || 15;
|
|
285
|
+
// Use the minimum of auto-detected and configured
|
|
286
|
+
config.workerPool.totalMaxWorkers = Math.min(autoDetectedMax, configuredMax);
|
|
287
|
+
// Adjust max workers per ruleset to be reasonable
|
|
288
|
+
const maxPerRuleset = config.workerPool.maxWorkersPerRuleset || 2;
|
|
289
|
+
// Ensure we can support at least 3-4 rulesets concurrently
|
|
290
|
+
const minTotalForRulesets = maxPerRuleset * 4;
|
|
291
|
+
if (config.workerPool.totalMaxWorkers < minTotalForRulesets) {
|
|
292
|
+
console.warn(`Warning: totalMaxWorkers (${config.workerPool.totalMaxWorkers}) may be too low. ` +
|
|
293
|
+
`Recommended: at least ${minTotalForRulesets} for ${maxPerRuleset} workers per ruleset × 4 rulesets`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Validate configuration
|
|
298
|
+
*/
|
|
299
|
+
export function validateConfig(config) {
|
|
300
|
+
if (config.server.port < 1 || config.server.port > 65535) {
|
|
301
|
+
throw new Error(`Invalid port: ${config.server.port}`);
|
|
302
|
+
}
|
|
303
|
+
if (config.workerPool.minWorkersPerRuleset < 1) {
|
|
304
|
+
throw new Error('minWorkersPerRuleset must be at least 1');
|
|
305
|
+
}
|
|
306
|
+
if (config.workerPool.maxWorkersPerRuleset < config.workerPool.minWorkersPerRuleset) {
|
|
307
|
+
throw new Error('maxWorkersPerRuleset must be >= minWorkersPerRuleset');
|
|
308
|
+
}
|
|
309
|
+
if (config.workerPool.totalMaxWorkers < config.workerPool.maxWorkersPerRuleset) {
|
|
310
|
+
throw new Error('totalMaxWorkers must be >= maxWorkersPerRuleset');
|
|
311
|
+
}
|
|
312
|
+
if (config.workerPool.taskTimeout < 1000) {
|
|
313
|
+
throw new Error('taskTimeout must be at least 1000ms');
|
|
314
|
+
}
|
|
315
|
+
if (config.workerPool.workerWaitTimeout < 1000) {
|
|
316
|
+
throw new Error('workerWaitTimeout must be at least 1000ms');
|
|
317
|
+
}
|
|
318
|
+
if (!['memory', 'redis', 'custom'].includes(config.storage.type)) {
|
|
319
|
+
throw new Error(`Invalid storage type: ${config.storage.type}`);
|
|
320
|
+
}
|
|
321
|
+
if (!['local', 'passthrough', 'filesystem', 'http', 'hybrid'].includes(config.documentStore.type)) {
|
|
322
|
+
throw new Error(`Invalid documentStore type: ${config.documentStore.type}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Get configuration summary for logging
|
|
327
|
+
*/
|
|
328
|
+
export function getConfigSummary(config) {
|
|
329
|
+
return {
|
|
330
|
+
port: config.server.port,
|
|
331
|
+
workerPool: {
|
|
332
|
+
minPerRuleset: config.workerPool.minWorkersPerRuleset,
|
|
333
|
+
maxPerRuleset: config.workerPool.maxWorkersPerRuleset,
|
|
334
|
+
totalMax: config.workerPool.totalMaxWorkers,
|
|
335
|
+
timeout: config.workerPool.taskTimeout,
|
|
336
|
+
cacheEnabled: config.workerPool.documentCache.enabled
|
|
337
|
+
},
|
|
338
|
+
storage: config.storage.type,
|
|
339
|
+
documentStore: config.documentStore.type,
|
|
340
|
+
logging: config.logging.level
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Create lightweight configuration for embedded mode
|
|
345
|
+
*
|
|
346
|
+
* Used by CLI when starting embedded server
|
|
347
|
+
* Optimized for single-user, developer laptop use
|
|
348
|
+
*/
|
|
349
|
+
export function createEmbeddedModeConfig(overrides) {
|
|
350
|
+
const homeDir = os.homedir();
|
|
351
|
+
const config = {
|
|
352
|
+
mode: 'embedded',
|
|
353
|
+
server: {
|
|
354
|
+
port: 3005, // Separate port for embedded mode (avoid conflict with standalone)
|
|
355
|
+
host: '0.0.0.0',
|
|
356
|
+
maxDocumentSizeMB: 20
|
|
357
|
+
},
|
|
358
|
+
documentStore: {
|
|
359
|
+
type: 'local',
|
|
360
|
+
baseDir: `${homeDir}/.spectify/uploads`,
|
|
361
|
+
fallbackHttp: 'http://localhost:3002'
|
|
362
|
+
},
|
|
363
|
+
workerPool: {
|
|
364
|
+
minWorkersPerRuleset: 1,
|
|
365
|
+
maxWorkersPerRuleset: 2,
|
|
366
|
+
totalMaxWorkers: 10, // Lighter footprint for laptops
|
|
367
|
+
taskTimeout: 30000,
|
|
368
|
+
maxRetries: 2,
|
|
369
|
+
workerWaitTimeout: 30000,
|
|
370
|
+
scaleUpThreshold: 10,
|
|
371
|
+
scaleDownThreshold: 1,
|
|
372
|
+
exponentialBackoff: {
|
|
373
|
+
initialDelay: 1000,
|
|
374
|
+
maxDelay: 30000,
|
|
375
|
+
multiplier: 2
|
|
376
|
+
},
|
|
377
|
+
documentCache: {
|
|
378
|
+
enabled: true,
|
|
379
|
+
maxDocumentsPerWorker: 1,
|
|
380
|
+
maxCacheSizePerWorker: 52428800, // 50MB
|
|
381
|
+
evictAfterMinutes: 5
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
rulesets: {
|
|
385
|
+
directory: path.join(INSTALL_DIR, 'rulesets'),
|
|
386
|
+
defaultVersion: 'latest',
|
|
387
|
+
cacheEnabled: true
|
|
388
|
+
},
|
|
389
|
+
storage: {
|
|
390
|
+
type: 'memory' // No persistence needed in embedded mode
|
|
391
|
+
},
|
|
392
|
+
logging: {
|
|
393
|
+
level: 'info',
|
|
394
|
+
format: 'text',
|
|
395
|
+
destination: 'console'
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
// Apply overrides
|
|
399
|
+
if (overrides) {
|
|
400
|
+
return mergeConfig(config, overrides);
|
|
401
|
+
}
|
|
402
|
+
return config;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Create production configuration for standalone server mode
|
|
406
|
+
*
|
|
407
|
+
* Used when running spectifyd as dedicated process
|
|
408
|
+
* Optimized for production, multi-user, always-on deployments
|
|
409
|
+
* Document store defaults to ~/.spectify/uploads (user home directory)
|
|
410
|
+
*/
|
|
411
|
+
export function createStandaloneModeConfig(overrides) {
|
|
412
|
+
const homeDir = os.homedir();
|
|
413
|
+
const config = {
|
|
414
|
+
mode: 'standalone',
|
|
415
|
+
server: {
|
|
416
|
+
port: 3003,
|
|
417
|
+
host: '0.0.0.0',
|
|
418
|
+
maxDocumentSizeMB: 20
|
|
419
|
+
},
|
|
420
|
+
documentStore: {
|
|
421
|
+
type: 'local',
|
|
422
|
+
baseDir: `${homeDir}/.spectify/uploads`, // Default to user's home directory
|
|
423
|
+
fallbackHttp: 'http://localhost:3002'
|
|
424
|
+
},
|
|
425
|
+
workerPool: {
|
|
426
|
+
minWorkersPerRuleset: 2,
|
|
427
|
+
maxWorkersPerRuleset: 10,
|
|
428
|
+
totalMaxWorkers: 40, // Production-grade capacity (see docs/SCALABILITY.md)
|
|
429
|
+
taskTimeout: 30000,
|
|
430
|
+
maxRetries: 3,
|
|
431
|
+
workerWaitTimeout: 30000,
|
|
432
|
+
scaleUpThreshold: 10,
|
|
433
|
+
scaleDownThreshold: 2,
|
|
434
|
+
exponentialBackoff: {
|
|
435
|
+
initialDelay: 1000,
|
|
436
|
+
maxDelay: 30000,
|
|
437
|
+
multiplier: 2
|
|
438
|
+
},
|
|
439
|
+
documentCache: {
|
|
440
|
+
enabled: true,
|
|
441
|
+
maxDocumentsPerWorker: 1,
|
|
442
|
+
maxCacheSizePerWorker: 52428800, // 50MB
|
|
443
|
+
evictAfterMinutes: 10
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
rulesets: {
|
|
447
|
+
directory: path.join(INSTALL_DIR, 'rulesets'),
|
|
448
|
+
defaultVersion: 'latest',
|
|
449
|
+
cacheEnabled: true
|
|
450
|
+
},
|
|
451
|
+
storage: {
|
|
452
|
+
type: 'memory' // Can be overridden to 'redis' for persistence
|
|
453
|
+
},
|
|
454
|
+
logging: {
|
|
455
|
+
level: 'info',
|
|
456
|
+
format: 'json',
|
|
457
|
+
destination: 'console'
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
// Apply overrides
|
|
461
|
+
if (overrides) {
|
|
462
|
+
return mergeConfig(config, overrides);
|
|
463
|
+
}
|
|
464
|
+
return config;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Create configuration for MCP companion mode
|
|
468
|
+
*
|
|
469
|
+
* Used when the orchestrator is started by MCP OpenAPI Analyzer
|
|
470
|
+
* Shares MCP's document store, lighter resource footprint
|
|
471
|
+
* Document store path MUST be provided explicitly (no default)
|
|
472
|
+
*/
|
|
473
|
+
export function createCompanionModeConfig(overrides) {
|
|
474
|
+
const config = {
|
|
475
|
+
mode: 'companion',
|
|
476
|
+
server: {
|
|
477
|
+
port: 3004, // Use 3004 to avoid conflicts with standalone (3003)
|
|
478
|
+
host: '0.0.0.0',
|
|
479
|
+
maxDocumentSizeMB: 20
|
|
480
|
+
},
|
|
481
|
+
documentStore: {
|
|
482
|
+
type: 'passthrough',
|
|
483
|
+
baseDir: '', // MUST be provided via CLI or environment - no default!
|
|
484
|
+
fallbackHttp: 'http://localhost:3002'
|
|
485
|
+
},
|
|
486
|
+
workerPool: {
|
|
487
|
+
minWorkersPerRuleset: 2,
|
|
488
|
+
maxWorkersPerRuleset: 8,
|
|
489
|
+
totalMaxWorkers: 30, // Scaled up for batch workloads (see docs/SCALABILITY.md)
|
|
490
|
+
taskTimeout: 30000,
|
|
491
|
+
maxRetries: 2,
|
|
492
|
+
workerWaitTimeout: 30000,
|
|
493
|
+
scaleUpThreshold: 10,
|
|
494
|
+
scaleDownThreshold: 1,
|
|
495
|
+
exponentialBackoff: {
|
|
496
|
+
initialDelay: 1000,
|
|
497
|
+
maxDelay: 30000,
|
|
498
|
+
multiplier: 2
|
|
499
|
+
},
|
|
500
|
+
documentCache: {
|
|
501
|
+
enabled: true,
|
|
502
|
+
maxDocumentsPerWorker: 1,
|
|
503
|
+
maxCacheSizePerWorker: 52428800, // 50MB
|
|
504
|
+
evictAfterMinutes: 5
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
rulesets: {
|
|
508
|
+
directory: path.join(INSTALL_DIR, 'rulesets'),
|
|
509
|
+
defaultVersion: 'latest',
|
|
510
|
+
cacheEnabled: true
|
|
511
|
+
},
|
|
512
|
+
storage: {
|
|
513
|
+
type: 'memory' // MCP handles persistence
|
|
514
|
+
},
|
|
515
|
+
logging: {
|
|
516
|
+
level: 'debug', // More verbose for troubleshooting
|
|
517
|
+
format: 'json',
|
|
518
|
+
destination: 'console'
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
// Apply overrides
|
|
522
|
+
if (overrides) {
|
|
523
|
+
return mergeConfig(config, overrides);
|
|
524
|
+
}
|
|
525
|
+
return config;
|
|
526
|
+
}
|
|
527
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface DocumentAccessorConfig {
|
|
2
|
+
/**
|
|
3
|
+
* Path to MCP server's document upload directory
|
|
4
|
+
* Example: '../mcp-openapi-analysis/uploads'
|
|
5
|
+
*/
|
|
6
|
+
documentStorePath: string;
|
|
7
|
+
/**
|
|
8
|
+
* Fallback HTTP URL if file not found (optional)
|
|
9
|
+
* Example: 'http://localhost:3002'
|
|
10
|
+
*/
|
|
11
|
+
fallbackHttpUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface DocumentMetadata {
|
|
14
|
+
documentId: string;
|
|
15
|
+
filePath: string;
|
|
16
|
+
exists: boolean;
|
|
17
|
+
size?: number;
|
|
18
|
+
createdAt?: Date;
|
|
19
|
+
modifiedAt?: Date;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* DocumentAccessor - Direct filesystem access to MCP document store
|
|
23
|
+
*/
|
|
24
|
+
export declare class DocumentAccessor {
|
|
25
|
+
private config;
|
|
26
|
+
constructor(config: DocumentAccessorConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Get absolute file path for a document ID
|
|
29
|
+
*
|
|
30
|
+
* @param documentId - Document UUID from MCP server
|
|
31
|
+
* @returns Absolute path to document JSON file
|
|
32
|
+
*/
|
|
33
|
+
getDocumentPath(documentId: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Check if document exists in filesystem
|
|
36
|
+
*
|
|
37
|
+
* @param documentId - Document UUID
|
|
38
|
+
* @returns True if file exists
|
|
39
|
+
*/
|
|
40
|
+
documentExists(documentId: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Get metadata about a document without loading content
|
|
43
|
+
*
|
|
44
|
+
* @param documentId - Document UUID
|
|
45
|
+
* @returns Document metadata including file stats
|
|
46
|
+
*/
|
|
47
|
+
getDocumentMetadata(documentId: string): Promise<DocumentMetadata>;
|
|
48
|
+
/**
|
|
49
|
+
* Load document content from filesystem
|
|
50
|
+
*
|
|
51
|
+
* NOTE: Workers should use this directly in their threads to avoid
|
|
52
|
+
* passing large document content across thread boundaries.
|
|
53
|
+
*
|
|
54
|
+
* @param documentId - Document UUID
|
|
55
|
+
* @returns Parsed OpenAPI document
|
|
56
|
+
*/
|
|
57
|
+
loadDocument(documentId: string): Promise<any>;
|
|
58
|
+
/**
|
|
59
|
+
* Validate document store accessibility
|
|
60
|
+
*
|
|
61
|
+
* @throws {Error} If document store directory is not accessible
|
|
62
|
+
*/
|
|
63
|
+
validateDocumentStore(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* List all documents in the store
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of document IDs (without .json extension)
|
|
68
|
+
*/
|
|
69
|
+
listDocuments(): Promise<string[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Get document store statistics
|
|
72
|
+
*/
|
|
73
|
+
getStoreStats(): Promise<{
|
|
74
|
+
documentCount: number;
|
|
75
|
+
totalSize: number;
|
|
76
|
+
storePath: string;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=document-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-accessor.d.ts","sourceRoot":"","sources":["../src/document-accessor.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAI1C;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK3C;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1D;;;;;OAKG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBxE;;;;;;;;OAQG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAepD;;;;OAIG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAexC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CAiBH"}
|