@principal-ai/codebase-composition 0.2.24 → 0.2.27
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/dist/helpers/QualityMetricsCalculator.d.ts +26 -7
- package/dist/helpers/QualityMetricsCalculator.d.ts.map +1 -1
- package/dist/helpers/QualityMetricsCalculator.js +129 -131
- package/dist/helpers/QualityMetricsCalculator.js.map +1 -1
- package/dist/helpers/WorkspaceCommandHelper.d.ts +140 -0
- package/dist/helpers/WorkspaceCommandHelper.d.ts.map +1 -0
- package/dist/helpers/WorkspaceCommandHelper.js +298 -0
- package/dist/helpers/WorkspaceCommandHelper.js.map +1 -0
- package/dist/helpers/packageLayerHelpers.d.ts.map +1 -1
- package/dist/helpers/packageLayerHelpers.js +50 -24
- package/dist/helpers/packageLayerHelpers.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/PackageLayerModule.d.ts.map +1 -1
- package/dist/modules/PackageLayerModule.js +169 -3
- package/dist/modules/PackageLayerModule.js.map +1 -1
- package/dist/strategies/go-tools.d.ts +27 -0
- package/dist/strategies/go-tools.d.ts.map +1 -0
- package/dist/strategies/go-tools.js +185 -0
- package/dist/strategies/go-tools.js.map +1 -0
- package/dist/strategies/index.d.ts +37 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +73 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/strategies/node-tools.d.ts +21 -0
- package/dist/strategies/node-tools.d.ts.map +1 -0
- package/dist/strategies/node-tools.js +142 -0
- package/dist/strategies/node-tools.js.map +1 -0
- package/dist/strategies/python-tools.d.ts +25 -0
- package/dist/strategies/python-tools.d.ts.map +1 -0
- package/dist/strategies/python-tools.js +192 -0
- package/dist/strategies/python-tools.js.map +1 -0
- package/dist/strategies/rust-tools.d.ts +23 -0
- package/dist/strategies/rust-tools.d.ts.map +1 -0
- package/dist/strategies/rust-tools.js +177 -0
- package/dist/strategies/rust-tools.js.map +1 -0
- package/dist/strategies/tool-detection.d.ts +137 -0
- package/dist/strategies/tool-detection.d.ts.map +1 -0
- package/dist/strategies/tool-detection.js +13 -0
- package/dist/strategies/tool-detection.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Command Helper
|
|
3
|
+
*
|
|
4
|
+
* Handles workspace-aware command execution for monorepos.
|
|
5
|
+
* Detects workspace commands, groups packages by workspace,
|
|
6
|
+
* and provides utilities for distributing results to packages.
|
|
7
|
+
*
|
|
8
|
+
* Supports:
|
|
9
|
+
* - Cargo workspaces (--workspace, --manifest-path)
|
|
10
|
+
* - npm/pnpm workspaces (--workspaces, -w, --recursive)
|
|
11
|
+
* - Yarn workspaces
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Detect if a command is a workspace-wide command and extract workspace info.
|
|
15
|
+
*
|
|
16
|
+
* Detects:
|
|
17
|
+
* - Cargo: --workspace, --manifest-path
|
|
18
|
+
* - pnpm: -r, --recursive, -w, --workspace-root, --filter
|
|
19
|
+
* - npm: --workspaces, -ws
|
|
20
|
+
* - yarn: workspaces foreach
|
|
21
|
+
*
|
|
22
|
+
* @param command - The command being executed (e.g., "cargo", "pnpm")
|
|
23
|
+
* @param args - Command arguments as an array
|
|
24
|
+
* @returns WorkspaceCommandInfo with detection results
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* // Cargo workspace command
|
|
29
|
+
* detectWorkspaceCommand('cargo', ['clippy', '--manifest-path', 'codex-rs/Cargo.toml', '--workspace'])
|
|
30
|
+
* // => { isWorkspaceCommand: true, workspaceRoot: 'codex-rs', ecosystem: 'rust' }
|
|
31
|
+
*
|
|
32
|
+
* // pnpm recursive command
|
|
33
|
+
* detectWorkspaceCommand('pnpm', ['-r', 'run', 'lint'])
|
|
34
|
+
* // => { isWorkspaceCommand: true, ecosystem: 'node' }
|
|
35
|
+
*
|
|
36
|
+
* // Regular command (not workspace-wide)
|
|
37
|
+
* detectWorkspaceCommand('cargo', ['clippy'])
|
|
38
|
+
* // => { isWorkspaceCommand: false }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function detectWorkspaceCommand(command, args) {
|
|
42
|
+
const fullCommand = `${command} ${args.join(' ')}`;
|
|
43
|
+
const argsSet = new Set(args);
|
|
44
|
+
// Cargo workspace detection
|
|
45
|
+
if (command === 'cargo' || command.startsWith('cargo-') || fullCommand.includes('cargo ')) {
|
|
46
|
+
// Check for --workspace flag
|
|
47
|
+
if (argsSet.has('--workspace') || fullCommand.includes('--workspace')) {
|
|
48
|
+
const workspaceRoot = extractManifestPath(args, fullCommand);
|
|
49
|
+
return {
|
|
50
|
+
isWorkspaceCommand: true,
|
|
51
|
+
workspaceRoot,
|
|
52
|
+
ecosystem: 'rust',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Check for --manifest-path (implies running from outside the workspace)
|
|
56
|
+
const manifestPath = extractManifestPath(args, fullCommand);
|
|
57
|
+
if (manifestPath) {
|
|
58
|
+
return {
|
|
59
|
+
isWorkspaceCommand: true,
|
|
60
|
+
workspaceRoot: manifestPath,
|
|
61
|
+
ecosystem: 'rust',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Check for --all flag (older cargo syntax)
|
|
65
|
+
if (argsSet.has('--all') || fullCommand.includes(' --all')) {
|
|
66
|
+
return {
|
|
67
|
+
isWorkspaceCommand: true,
|
|
68
|
+
ecosystem: 'rust',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// pnpm workspace detection
|
|
73
|
+
if (command === 'pnpm' || fullCommand.includes('pnpm ')) {
|
|
74
|
+
if (argsSet.has('-r') ||
|
|
75
|
+
argsSet.has('--recursive') ||
|
|
76
|
+
argsSet.has('-w') ||
|
|
77
|
+
argsSet.has('--workspace-root') ||
|
|
78
|
+
fullCommand.includes(' -r ') ||
|
|
79
|
+
fullCommand.includes(' --recursive') ||
|
|
80
|
+
fullCommand.includes(' -w ') ||
|
|
81
|
+
fullCommand.includes(' --workspace-root')) {
|
|
82
|
+
return {
|
|
83
|
+
isWorkspaceCommand: true,
|
|
84
|
+
ecosystem: 'node',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Check for --filter which can target multiple packages
|
|
88
|
+
if (argsSet.has('--filter') || fullCommand.includes('--filter')) {
|
|
89
|
+
return {
|
|
90
|
+
isWorkspaceCommand: true,
|
|
91
|
+
ecosystem: 'node',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// npm workspace detection
|
|
96
|
+
if (command === 'npm' || fullCommand.includes('npm ')) {
|
|
97
|
+
if (argsSet.has('--workspaces') ||
|
|
98
|
+
argsSet.has('-ws') ||
|
|
99
|
+
fullCommand.includes(' --workspaces') ||
|
|
100
|
+
fullCommand.includes(' -ws')) {
|
|
101
|
+
return {
|
|
102
|
+
isWorkspaceCommand: true,
|
|
103
|
+
ecosystem: 'node',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// yarn workspace detection
|
|
108
|
+
if (command === 'yarn' || fullCommand.includes('yarn ')) {
|
|
109
|
+
if (fullCommand.includes('workspaces foreach') ||
|
|
110
|
+
fullCommand.includes('workspace foreach') ||
|
|
111
|
+
argsSet.has('--all')) {
|
|
112
|
+
return {
|
|
113
|
+
isWorkspaceCommand: true,
|
|
114
|
+
ecosystem: 'node',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { isWorkspaceCommand: false };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extract the manifest path directory from command arguments.
|
|
122
|
+
*
|
|
123
|
+
* @param args - Command arguments array
|
|
124
|
+
* @param fullCommand - Full command string for fallback parsing
|
|
125
|
+
* @returns The directory containing the manifest, or undefined
|
|
126
|
+
*/
|
|
127
|
+
function extractManifestPath(args, fullCommand) {
|
|
128
|
+
// Check args array for --manifest-path
|
|
129
|
+
const manifestPathIndex = args.indexOf('--manifest-path');
|
|
130
|
+
if (manifestPathIndex !== -1 && args[manifestPathIndex + 1]) {
|
|
131
|
+
const manifestPath = args[manifestPathIndex + 1];
|
|
132
|
+
// Extract directory from "codex-rs/Cargo.toml" -> "codex-rs"
|
|
133
|
+
return manifestPath.replace(/\/Cargo\.toml$/, '');
|
|
134
|
+
}
|
|
135
|
+
// Fallback to regex on full command
|
|
136
|
+
const match = fullCommand.match(/--manifest-path\s+([^\s]+)/);
|
|
137
|
+
if (match) {
|
|
138
|
+
return match[1].replace(/\/Cargo\.toml$/, '');
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Group discovered packages by their workspace.
|
|
144
|
+
*
|
|
145
|
+
* Uses the package's `isWorkspace`, `parentPackage`, and `isMonorepoRoot`
|
|
146
|
+
* fields to determine workspace membership.
|
|
147
|
+
*
|
|
148
|
+
* @param packages - Array of discovered packages
|
|
149
|
+
* @returns Array of workspace groups
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* const packages = await packageModule.discoverPackages(fileTree);
|
|
154
|
+
* const workspaceGroups = groupPackagesByWorkspace(packages);
|
|
155
|
+
*
|
|
156
|
+
* for (const group of workspaceGroups) {
|
|
157
|
+
* console.log(`Workspace: ${group.workspaceRoot}`);
|
|
158
|
+
* console.log(`Members: ${group.memberPackages.map(p => p.packageData.name)}`);
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export function groupPackagesByWorkspace(packages) {
|
|
163
|
+
const groups = [];
|
|
164
|
+
const processedPaths = new Set();
|
|
165
|
+
// Find all workspace roots (packages marked as monorepo roots)
|
|
166
|
+
const workspaceRoots = packages.filter((pkg) => pkg.packageData.isMonorepoRoot);
|
|
167
|
+
for (const root of workspaceRoots) {
|
|
168
|
+
const rootPath = root.packageData.path || '';
|
|
169
|
+
if (processedPaths.has(rootPath))
|
|
170
|
+
continue;
|
|
171
|
+
processedPaths.add(rootPath);
|
|
172
|
+
// Determine ecosystem from package type
|
|
173
|
+
const ecosystem = packageTypeToEcosystem(root.type);
|
|
174
|
+
// Find all member packages
|
|
175
|
+
const members = packages.filter((pkg) => {
|
|
176
|
+
// Skip the root itself
|
|
177
|
+
if (pkg === root)
|
|
178
|
+
return false;
|
|
179
|
+
// Check if this package is a workspace member of this root
|
|
180
|
+
if (pkg.packageData.isWorkspace) {
|
|
181
|
+
// Check if parent matches or path is under root path
|
|
182
|
+
if (pkg.packageData.parentPackage === root.packageData.name) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
// Check by path - if package path starts with root path
|
|
186
|
+
const pkgPath = pkg.packageData.path || '';
|
|
187
|
+
if (rootPath && pkgPath.startsWith(rootPath + '/')) {
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
// If root is at repo root (empty path), all workspaces belong to it
|
|
191
|
+
if (rootPath === '' && pkg.packageData.isWorkspace) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return false;
|
|
196
|
+
});
|
|
197
|
+
groups.push({
|
|
198
|
+
workspaceRoot: rootPath,
|
|
199
|
+
manifestPath: root.packageData.manifestPath,
|
|
200
|
+
ecosystem,
|
|
201
|
+
memberPackages: members,
|
|
202
|
+
rootPackage: root,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return groups;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Convert package layer type to ecosystem
|
|
209
|
+
*/
|
|
210
|
+
function packageTypeToEcosystem(packageType) {
|
|
211
|
+
switch (packageType) {
|
|
212
|
+
case 'cargo':
|
|
213
|
+
return 'rust';
|
|
214
|
+
case 'python':
|
|
215
|
+
return 'python';
|
|
216
|
+
case 'go':
|
|
217
|
+
return 'go';
|
|
218
|
+
case 'node':
|
|
219
|
+
case 'package':
|
|
220
|
+
default:
|
|
221
|
+
return 'node';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Match a file path to its package within a workspace.
|
|
226
|
+
*
|
|
227
|
+
* Used to distribute lens results to the correct packages.
|
|
228
|
+
* Takes a file path (relative to workspace root) and finds
|
|
229
|
+
* which package it belongs to.
|
|
230
|
+
*
|
|
231
|
+
* @param filePath - File path relative to workspace root (e.g., "protocol/src/lib.rs")
|
|
232
|
+
* @param workspaceRoot - Workspace root directory (e.g., "codex-rs")
|
|
233
|
+
* @param packages - Array of packages to search
|
|
234
|
+
* @returns The matching package, or undefined if not found
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```ts
|
|
238
|
+
* // Clippy outputs: "protocol/src/lib.rs" (relative to codex-rs/)
|
|
239
|
+
* // We need to find which package this belongs to
|
|
240
|
+
*
|
|
241
|
+
* const pkg = matchPathToPackage(
|
|
242
|
+
* 'protocol/src/lib.rs',
|
|
243
|
+
* 'codex-rs',
|
|
244
|
+
* packages
|
|
245
|
+
* );
|
|
246
|
+
* // => PackageLayer for "codex-rs/protocol"
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
export function matchPathToPackage(filePath, workspaceRoot, packages) {
|
|
250
|
+
// Normalize paths
|
|
251
|
+
const normalizedFilePath = filePath.replace(/\\/g, '/');
|
|
252
|
+
const normalizedWorkspaceRoot = workspaceRoot.replace(/\\/g, '/');
|
|
253
|
+
// Build full path from repo root
|
|
254
|
+
const fullPath = normalizedWorkspaceRoot
|
|
255
|
+
? `${normalizedWorkspaceRoot}/${normalizedFilePath}`
|
|
256
|
+
: normalizedFilePath;
|
|
257
|
+
// Find the package whose path is the longest prefix of the file path
|
|
258
|
+
let bestMatch;
|
|
259
|
+
let bestMatchLength = -1;
|
|
260
|
+
for (const pkg of packages) {
|
|
261
|
+
const pkgPath = (pkg.packageData.path || '').replace(/\\/g, '/');
|
|
262
|
+
// Check if file path starts with package path
|
|
263
|
+
if (fullPath.startsWith(pkgPath + '/') || fullPath === pkgPath) {
|
|
264
|
+
if (pkgPath.length > bestMatchLength) {
|
|
265
|
+
bestMatch = pkg;
|
|
266
|
+
bestMatchLength = pkgPath.length;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return bestMatch;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Prefix a file path with the workspace root.
|
|
274
|
+
*
|
|
275
|
+
* Utility function to convert paths from workspace-relative
|
|
276
|
+
* to repo-relative.
|
|
277
|
+
*
|
|
278
|
+
* @param filePath - File path relative to workspace root
|
|
279
|
+
* @param workspaceRoot - Workspace root directory
|
|
280
|
+
* @returns Full path relative to repo root
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* ```ts
|
|
284
|
+
* prefixWithWorkspaceRoot('protocol/src/lib.rs', 'codex-rs')
|
|
285
|
+
* // => 'codex-rs/protocol/src/lib.rs'
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
export function prefixWithWorkspaceRoot(filePath, workspaceRoot) {
|
|
289
|
+
if (!workspaceRoot || workspaceRoot === '') {
|
|
290
|
+
return filePath;
|
|
291
|
+
}
|
|
292
|
+
// Don't double-prefix
|
|
293
|
+
if (filePath.startsWith(workspaceRoot + '/')) {
|
|
294
|
+
return filePath;
|
|
295
|
+
}
|
|
296
|
+
return `${workspaceRoot}/${filePath}`;
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=WorkspaceCommandHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceCommandHelper.js","sourceRoot":"","sources":["../../src/helpers/WorkspaceCommandHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageLayerHelpers.d.ts","sourceRoot":"","sources":["../../src/helpers/packageLayerHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"packageLayerHelpers.d.ts","sourceRoot":"","sources":["../../src/helpers/packageLayerHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGzE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,GAAG,IAAI,CAelF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAUzE;AAgCD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CA2BhF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Helper functions for PackageLayer
|
|
3
3
|
*/
|
|
4
|
+
import { getDefaultCommand } from '@principal-ai/quality-lens-registry';
|
|
4
5
|
/**
|
|
5
6
|
* Convert PackageLayer quality metrics to complete QualityMetrics object
|
|
6
7
|
* Fills in defaults for missing metrics
|
|
@@ -50,6 +51,35 @@ export function getOverallQualityScore(packageLayer) {
|
|
|
50
51
|
return 0;
|
|
51
52
|
return Math.round(nonZeroValues.reduce((sum, val) => sum + val, 0) / nonZeroValues.length);
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Specialized command overrides for lenses that need specific output formats
|
|
56
|
+
* These override the registry defaults for lens recommendations
|
|
57
|
+
*/
|
|
58
|
+
const LENS_COMMAND_OVERRIDES = {
|
|
59
|
+
eslint: {
|
|
60
|
+
check: 'eslint . --format json',
|
|
61
|
+
coverage: 'eslint . --format json --no-inline-config',
|
|
62
|
+
},
|
|
63
|
+
typescript: {
|
|
64
|
+
check: 'tsc --noEmit',
|
|
65
|
+
coverage: 'tsc --listFiles',
|
|
66
|
+
},
|
|
67
|
+
test: {
|
|
68
|
+
check: 'jest --json',
|
|
69
|
+
coverage: 'jest --coverage --json',
|
|
70
|
+
},
|
|
71
|
+
prettier: {
|
|
72
|
+
check: 'prettier --check .',
|
|
73
|
+
coverage: 'prettier --list-different .',
|
|
74
|
+
},
|
|
75
|
+
knip: {
|
|
76
|
+
check: 'knip --reporter json',
|
|
77
|
+
},
|
|
78
|
+
typedoc: {
|
|
79
|
+
check: 'typedoc --emit none',
|
|
80
|
+
coverage: 'typedoc --json .quality/typedoc.json',
|
|
81
|
+
},
|
|
82
|
+
};
|
|
53
83
|
/**
|
|
54
84
|
* Generate recommendations for adding missing lens commands
|
|
55
85
|
*/
|
|
@@ -57,30 +87,26 @@ export function generateLensRecommendations(packageLayer) {
|
|
|
57
87
|
const missing = getMissingLenses(packageLayer);
|
|
58
88
|
const recommendations = [];
|
|
59
89
|
for (const lensId of missing) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
recommendations.push(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
recommendations.push(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
recommendations.push(
|
|
79
|
-
|
|
80
|
-
case 'typedoc':
|
|
81
|
-
recommendations.push('"lens:typedoc:check": "typedoc --emit none"');
|
|
82
|
-
recommendations.push('"lens:typedoc:coverage": "typedoc --json .quality/typedoc.json"');
|
|
83
|
-
break;
|
|
90
|
+
// Check for specialized overrides first
|
|
91
|
+
const override = LENS_COMMAND_OVERRIDES[lensId];
|
|
92
|
+
if (override) {
|
|
93
|
+
if (override.check) {
|
|
94
|
+
recommendations.push(`"lens:${lensId}:check": "${override.check}"`);
|
|
95
|
+
}
|
|
96
|
+
if (override.coverage) {
|
|
97
|
+
recommendations.push(`"lens:${lensId}:coverage": "${override.coverage}"`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Use registry default command
|
|
102
|
+
const defaultCmd = getDefaultCommand(lensId);
|
|
103
|
+
if (defaultCmd) {
|
|
104
|
+
recommendations.push(`"lens:${lensId}:check": "${defaultCmd.command}"`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Fallback to lens ID as command
|
|
108
|
+
recommendations.push(`"lens:${lensId}:check": "${lensId}"`);
|
|
109
|
+
}
|
|
84
110
|
}
|
|
85
111
|
}
|
|
86
112
|
return recommendations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageLayerHelpers.js","sourceRoot":"","sources":["../../src/helpers/packageLayerHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"packageLayerHelpers.js","sourceRoot":"","sources":["../../src/helpers/packageLayerHelpers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,12 @@ export type { FileTypeInfo, FileSystemModuleConfig, FileSystemLoadResult, TypeEx
|
|
|
4
4
|
export { TypeScriptExtractor } from './modules';
|
|
5
5
|
export { FilesystemService } from './services';
|
|
6
6
|
export { QualityMetricsCalculator } from './helpers/QualityMetricsCalculator';
|
|
7
|
+
export type { LensReadinessExtended } from './helpers/QualityMetricsCalculator';
|
|
7
8
|
export { toQualityMetrics, hasQualityMetrics, getAvailableLenses, getMissingLenses, getOverallQualityScore, generateLensRecommendations, } from './helpers/packageLayerHelpers';
|
|
9
|
+
export { detectWorkspaceCommand, groupPackagesByWorkspace, matchPathToPackage, prefixWithWorkspaceRoot, } from './helpers/WorkspaceCommandHelper';
|
|
10
|
+
export type { WorkspaceEcosystem, WorkspaceCommandInfo, WorkspaceGroup, } from './helpers/WorkspaceCommandHelper';
|
|
11
|
+
export { getToolDetectionStrategy, getAllStrategies, isEcosystemSupported, packageTypeToEcosystem, nodeToolDetection, pythonToolDetection, goToolDetection, rustToolDetection, } from './strategies';
|
|
12
|
+
export type { Ecosystem, ToolSource, ToolAvailability, PackageData, InstallInstruction, ToolDetectionStrategy, ToolMetadata, ToolRegistry, } from './strategies';
|
|
8
13
|
export { NodeFileSystemAdapter } from './adapters/NodeFileSystemAdapter';
|
|
9
14
|
export { GitVersionControlProvider, PackageManagerApiProvider } from './providers';
|
|
10
15
|
export type { FileSystemAdapter, GitAdapter, ShellAdapter, PackageManager, PackageVersionInfo, VersionCheckResult, VulnerabilityInfo, VulnerabilityCheckResult, LicenseInfo, LicenseCheckResult, DependencyCheckProgress, BatchCheckOptions, } from './providers';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EAEtB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EAEtB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,YAAY,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,GACf,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@ export { FilesystemService } from './services/index.js';
|
|
|
7
7
|
// Helpers
|
|
8
8
|
export { QualityMetricsCalculator } from './helpers/QualityMetricsCalculator.js';
|
|
9
9
|
export { toQualityMetrics, hasQualityMetrics, getAvailableLenses, getMissingLenses, getOverallQualityScore, generateLensRecommendations, } from './helpers/packageLayerHelpers.js';
|
|
10
|
+
export { detectWorkspaceCommand, groupPackagesByWorkspace, matchPathToPackage, prefixWithWorkspaceRoot, } from './helpers/WorkspaceCommandHelper.js';
|
|
11
|
+
// Strategies (multi-ecosystem tool detection)
|
|
12
|
+
export { getToolDetectionStrategy, getAllStrategies, isEcosystemSupported, packageTypeToEcosystem, nodeToolDetection, pythonToolDetection, goToolDetection, rustToolDetection, } from './strategies/index.js';
|
|
10
13
|
// Adapters
|
|
11
14
|
export { NodeFileSystemAdapter } from './adapters/NodeFileSystemAdapter.js';
|
|
12
15
|
// Providers
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAiCrC,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAQnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,WAAW;AACX,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU;AACV,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAiCrC,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAQnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,WAAW;AACX,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU;AACV,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAO1C,8CAA8C;AAC9C,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAYtB,WAAW;AACX,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,YAAY;AACZ,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageLayerModule.d.ts","sourceRoot":"","sources":["../../src/modules/PackageLayerModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,YAAY,EAA+E,MAAM,sBAAsB,CAAC;AACjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PackageLayerModule.d.ts","sourceRoot":"","sources":["../../src/modules/PackageLayerModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,YAAY,EAA+E,MAAM,sBAAsB,CAAC;AACjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AA2hClE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAIb;IAEF;;;;OAIG;IACG,gBAAgB,CACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC7C,OAAO,CAAC,YAAY,EAAE,CAAC;IA4O1B;;OAEG;IACH,iCAAiC,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,YAAY,EAAE;IAgDlF,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,6BAA6B;IAwBrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAsBlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;YACW,qBAAqB;IA4DnC;;OAEG;IACH,OAAO,CAAC,cAAc;IA0EtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;;OAGG;IACH,OAAO,CAAC,uCAAuC;CAoEhD"}
|