@principal-ai/codebase-composition 0.2.10 → 0.2.11

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 (109) hide show
  1. package/dist/adapters/NodeFileSystemAdapter.d.ts +28 -0
  2. package/dist/adapters/NodeFileSystemAdapter.d.ts.map +1 -0
  3. package/dist/adapters/NodeFileSystemAdapter.js +128 -0
  4. package/dist/adapters/NodeFileSystemAdapter.js.map +1 -0
  5. package/dist/helpers/QualityMetricsCalculator.d.ts +46 -0
  6. package/dist/helpers/QualityMetricsCalculator.d.ts.map +1 -0
  7. package/dist/helpers/QualityMetricsCalculator.js +163 -0
  8. package/dist/helpers/QualityMetricsCalculator.js.map +1 -0
  9. package/dist/helpers/packageLayerHelpers.d.ts +30 -0
  10. package/dist/helpers/packageLayerHelpers.d.ts.map +1 -0
  11. package/dist/helpers/packageLayerHelpers.js +88 -0
  12. package/dist/helpers/packageLayerHelpers.js.map +1 -0
  13. package/dist/index.d.ts +11 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +14 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/modules/DependencyLayerModule.d.ts +44 -0
  18. package/dist/modules/DependencyLayerModule.d.ts.map +1 -0
  19. package/dist/modules/DependencyLayerModule.js +282 -0
  20. package/dist/modules/DependencyLayerModule.js.map +1 -0
  21. package/dist/modules/FileSystemModule.d.ts +30 -0
  22. package/dist/modules/FileSystemModule.d.ts.map +1 -0
  23. package/dist/modules/FileSystemModule.js +43 -0
  24. package/dist/modules/FileSystemModule.js.map +1 -0
  25. package/dist/modules/FileTypeLayerModule.d.ts +34 -0
  26. package/dist/modules/FileTypeLayerModule.d.ts.map +1 -0
  27. package/dist/modules/FileTypeLayerModule.js +165 -0
  28. package/dist/modules/FileTypeLayerModule.js.map +1 -0
  29. package/dist/modules/FrameworkLayerModule.d.ts +22 -0
  30. package/dist/modules/FrameworkLayerModule.d.ts.map +1 -0
  31. package/dist/modules/FrameworkLayerModule.js +384 -0
  32. package/dist/modules/FrameworkLayerModule.js.map +1 -0
  33. package/dist/modules/PackageLayerModule.d.ts +23 -0
  34. package/dist/modules/PackageLayerModule.d.ts.map +1 -0
  35. package/dist/modules/PackageLayerModule.js +866 -0
  36. package/dist/modules/PackageLayerModule.js.map +1 -0
  37. package/dist/modules/TypeExtractionModule.d.ts +37 -0
  38. package/dist/modules/TypeExtractionModule.d.ts.map +1 -0
  39. package/dist/modules/TypeExtractionModule.js +141 -0
  40. package/dist/modules/TypeExtractionModule.js.map +1 -0
  41. package/dist/modules/VersionControlLayerModule.d.ts +10 -0
  42. package/dist/modules/VersionControlLayerModule.d.ts.map +1 -0
  43. package/dist/modules/VersionControlLayerModule.js +26 -0
  44. package/dist/modules/VersionControlLayerModule.js.map +1 -0
  45. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts +4 -0
  46. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts.map +1 -0
  47. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js +3 -0
  48. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js.map +1 -0
  49. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts +15 -0
  50. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts.map +1 -0
  51. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js +2 -0
  52. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js.map +1 -0
  53. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts +34 -0
  54. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts.map +1 -0
  55. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js +19 -0
  56. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js.map +1 -0
  57. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts +39 -0
  58. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts.map +1 -0
  59. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js +36 -0
  60. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js.map +1 -0
  61. package/dist/modules/extractors/TypeScriptExtractor.d.ts +18 -0
  62. package/dist/modules/extractors/TypeScriptExtractor.d.ts.map +1 -0
  63. package/dist/modules/extractors/TypeScriptExtractor.js +322 -0
  64. package/dist/modules/extractors/TypeScriptExtractor.js.map +1 -0
  65. package/dist/modules/index.d.ts +13 -0
  66. package/dist/modules/index.d.ts.map +1 -0
  67. package/dist/modules/index.js +10 -0
  68. package/dist/modules/index.js.map +1 -0
  69. package/dist/providers/GitVersionControlProvider.d.ts +108 -0
  70. package/dist/providers/GitVersionControlProvider.d.ts.map +1 -0
  71. package/dist/providers/GitVersionControlProvider.js +375 -0
  72. package/dist/providers/GitVersionControlProvider.js.map +1 -0
  73. package/dist/providers/PackageManagerApiProvider.d.ts +78 -0
  74. package/dist/providers/PackageManagerApiProvider.d.ts.map +1 -0
  75. package/dist/providers/PackageManagerApiProvider.js +10 -0
  76. package/dist/providers/PackageManagerApiProvider.js.map +1 -0
  77. package/dist/providers/index.d.ts +4 -0
  78. package/dist/providers/index.d.ts.map +1 -0
  79. package/dist/providers/index.js +5 -0
  80. package/dist/providers/index.js.map +1 -0
  81. package/dist/services/FilesystemService.d.ts +59 -0
  82. package/dist/services/FilesystemService.d.ts.map +1 -0
  83. package/dist/services/FilesystemService.js +394 -0
  84. package/dist/services/FilesystemService.js.map +1 -0
  85. package/dist/services/index.d.ts +2 -0
  86. package/dist/services/index.d.ts.map +1 -0
  87. package/dist/services/index.js +3 -0
  88. package/dist/services/index.js.map +1 -0
  89. package/dist/types/file-system.d.ts +6 -0
  90. package/dist/types/file-system.d.ts.map +1 -0
  91. package/dist/types/file-system.js +6 -0
  92. package/dist/types/file-system.js.map +1 -0
  93. package/dist/types/index.d.ts +4 -0
  94. package/dist/types/index.d.ts.map +1 -0
  95. package/dist/types/index.js +2 -0
  96. package/dist/types/index.js.map +1 -0
  97. package/dist/types/layer-types.d.ts +212 -0
  98. package/dist/types/layer-types.d.ts.map +1 -0
  99. package/dist/types/layer-types.js +6 -0
  100. package/dist/types/layer-types.js.map +1 -0
  101. package/dist/types/version-control-layer.d.ts +53 -0
  102. package/dist/types/version-control-layer.d.ts.map +1 -0
  103. package/dist/types/version-control-layer.js +2 -0
  104. package/dist/types/version-control-layer.js.map +1 -0
  105. package/dist/types/workspace-boundaries.d.ts +17 -0
  106. package/dist/types/workspace-boundaries.d.ts.map +1 -0
  107. package/dist/types/workspace-boundaries.js +6 -0
  108. package/dist/types/workspace-boundaries.js.map +1 -0
  109. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Node.js FileSystem Adapter for testing
3
+ * Simple implementation for local testing of the bridge
4
+ */
5
+ import type { FileSystemAdapter } from '../providers';
6
+ export declare class NodeFileSystemAdapter implements FileSystemAdapter {
7
+ readFile(filePath: string): Promise<{
8
+ content: string;
9
+ } | null>;
10
+ fileExists(filePath: string): Promise<boolean>;
11
+ isDirectory(filePath: string): Promise<boolean>;
12
+ readDirectory(dirPath: string): Promise<string[]>;
13
+ getFileStats(filePath: string): Promise<{
14
+ size: number;
15
+ isDirectory: boolean;
16
+ lastModified: Date;
17
+ } | null>;
18
+ buildFilteredFileTree(directoryPath: string, patterns?: string[], sourceDirectory?: string): Promise<{
19
+ paths: string[];
20
+ stats?: Map<string, {
21
+ size: number;
22
+ isDirectory: boolean;
23
+ lastModified: Date;
24
+ }>;
25
+ }>;
26
+ private shouldSkipDirectory;
27
+ }
28
+ //# sourceMappingURL=NodeFileSystemAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/NodeFileSystemAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMtD,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAS/D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQjD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,IAAI,CAAC;KACpB,GAAG,IAAI,CAAC;IAaH,qBAAqB,CACzB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,OAAO,CAAC;YACrB,YAAY,EAAE,IAAI,CAAC;SACpB,CAAC,CAAC;KACJ,CAAC;IAmEF,OAAO,CAAC,mBAAmB;CAiB5B"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Node.js FileSystem Adapter for testing
3
+ * Simple implementation for local testing of the bridge
4
+ */
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import ignore from 'ignore';
8
+ export class NodeFileSystemAdapter {
9
+ async readFile(filePath) {
10
+ try {
11
+ const content = await fs.readFile(filePath, 'utf-8');
12
+ return { content };
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ async fileExists(filePath) {
19
+ try {
20
+ await fs.access(filePath);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ async isDirectory(filePath) {
28
+ try {
29
+ const stats = await fs.stat(filePath);
30
+ return stats.isDirectory();
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ async readDirectory(dirPath) {
37
+ try {
38
+ return await fs.readdir(dirPath);
39
+ }
40
+ catch {
41
+ return [];
42
+ }
43
+ }
44
+ async getFileStats(filePath) {
45
+ try {
46
+ const stats = await fs.stat(filePath);
47
+ return {
48
+ size: stats.size,
49
+ isDirectory: stats.isDirectory(),
50
+ lastModified: stats.mtime,
51
+ };
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ async buildFilteredFileTree(directoryPath, patterns, sourceDirectory) {
58
+ const paths = [];
59
+ const stats = new Map();
60
+ // Create ignore instance if patterns provided
61
+ const ig = patterns && patterns.length > 0 ? ignore().add(patterns) : null;
62
+ // Recursive function to walk directory
63
+ const walkDir = async (dir, relativePath = '') => {
64
+ try {
65
+ const entries = await fs.readdir(dir, { withFileTypes: true });
66
+ for (const entry of entries) {
67
+ const fullPath = path.join(dir, entry.name);
68
+ const relPath = relativePath ? path.join(relativePath, entry.name) : entry.name;
69
+ // Check if should be ignored
70
+ if (ig && ig.ignores(relPath)) {
71
+ continue;
72
+ }
73
+ // Skip common directories that should be ignored
74
+ if (entry.isDirectory() && this.shouldSkipDirectory(entry.name)) {
75
+ continue;
76
+ }
77
+ if (entry.isDirectory()) {
78
+ // Add directory path with trailing slash
79
+ paths.push(relPath + '/');
80
+ // Get stats
81
+ const stat = await fs.stat(fullPath);
82
+ stats.set(relPath + '/', {
83
+ size: 0,
84
+ isDirectory: true,
85
+ lastModified: stat.mtime,
86
+ });
87
+ // Recurse into directory
88
+ await walkDir(fullPath, relPath);
89
+ }
90
+ else {
91
+ // Add file path
92
+ paths.push(relPath);
93
+ // Get stats
94
+ const stat = await fs.stat(fullPath);
95
+ stats.set(relPath, {
96
+ size: stat.size,
97
+ isDirectory: false,
98
+ lastModified: stat.mtime,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ catch (error) {
104
+ console.warn(`Error walking directory ${dir}:`, error);
105
+ }
106
+ };
107
+ await walkDir(directoryPath);
108
+ return { paths, stats };
109
+ }
110
+ shouldSkipDirectory(name) {
111
+ // Skip common directories that shouldn't be included
112
+ const skipDirs = [
113
+ 'node_modules',
114
+ '.git',
115
+ 'dist',
116
+ 'build',
117
+ 'coverage',
118
+ '.next',
119
+ '.turbo',
120
+ '.cache',
121
+ 'tmp',
122
+ '.vscode',
123
+ '.idea',
124
+ ];
125
+ return skipDirs.includes(name);
126
+ }
127
+ }
128
+ //# sourceMappingURL=NodeFileSystemAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemAdapter.js","sourceRoot":"","sources":["../../src/adapters/NodeFileSystemAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Calculate quality metrics from lens commands
3
+ */
4
+ import type { PackageCommand, QualityMetrics, LensOperation } from '../types/layer-types';
5
+ interface DetectedLens {
6
+ lensId: string;
7
+ operations: Set<LensOperation>;
8
+ }
9
+ export declare class QualityMetricsCalculator {
10
+ /**
11
+ * Detect lens commands from package commands
12
+ */
13
+ static detectLensCommands(commands: PackageCommand[]): Map<string, DetectedLens>;
14
+ /**
15
+ * Apply fallback detection for common script patterns
16
+ */
17
+ private static applyFallbackDetection;
18
+ /**
19
+ * Calculate quality metrics from detected lenses
20
+ * @param detectedLenses - Map of detected lens IDs to lens info
21
+ * @param lensScores - Optional map of lens IDs to real quality scores (0-100)
22
+ * @returns Partial quality metrics hexagon with scores for available lenses
23
+ */
24
+ static calculateMetrics(detectedLenses: Map<string, DetectedLens>, lensScores?: Map<string, number>): Partial<QualityMetrics>;
25
+ /**
26
+ * Get list of available lenses
27
+ */
28
+ static getAvailableLenses(detectedLenses: Map<string, DetectedLens>): string[];
29
+ /**
30
+ * Get list of missing standard lenses
31
+ */
32
+ static getMissingLenses(detectedLenses: Map<string, DetectedLens>): string[];
33
+ /**
34
+ * Full calculation - convenience method
35
+ * @param commands - Package commands to analyze
36
+ * @param lensScores - Optional map of lens IDs to real quality scores (0-100)
37
+ * @returns Quality profile with hexagon, available lenses, and missing lenses
38
+ */
39
+ static calculateQualityProfile(commands: PackageCommand[], lensScores?: Map<string, number>): {
40
+ hexagon: Partial<QualityMetrics>;
41
+ availableLenses: string[];
42
+ missingLenses: string[];
43
+ };
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=QualityMetricsCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QualityMetricsCalculator.d.ts","sourceRoot":"","sources":["../../src/helpers/QualityMetricsCalculator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAmE1F,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAED,qBAAa,wBAAwB;IACnC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAoChF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA0BrC;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CACrB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC;IAkB1B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,EAAE;IAI9E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,EAAE;IAK5E;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,cAAc,EAAE,EAC1B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;CAanC"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Calculate quality metrics from lens commands
3
+ */
4
+ // Standard lens IDs and their corresponding hexagon metrics
5
+ const LENS_TO_METRIC_MAP = {
6
+ // Linting tools
7
+ 'eslint': 'linting',
8
+ 'biome': 'linting',
9
+ 'oxlint': 'linting',
10
+ // Type checking tools
11
+ 'typescript': 'types',
12
+ 'flow': 'types',
13
+ // Testing tools
14
+ 'test': 'tests',
15
+ 'jest': 'tests',
16
+ 'vitest': 'tests',
17
+ 'mocha': 'tests',
18
+ 'playwright': 'tests',
19
+ 'cypress': 'tests',
20
+ // Formatting tools
21
+ 'prettier': 'formatting',
22
+ // Dead code detection
23
+ 'knip': 'deadCode',
24
+ 'depcheck': 'deadCode',
25
+ // Documentation
26
+ 'typedoc': 'documentation',
27
+ 'jsdoc': 'documentation',
28
+ 'alexandria': 'documentation',
29
+ };
30
+ // Standard lenses we expect to find
31
+ const STANDARD_LENSES = ['eslint', 'typescript', 'test', 'prettier', 'knip', 'typedoc', 'alexandria'];
32
+ // Fallback patterns for common script names
33
+ const SCRIPT_TO_LENS_MAP = {
34
+ // Linting
35
+ 'lint': 'eslint',
36
+ 'eslint': 'eslint',
37
+ // Type checking
38
+ 'typecheck': 'typescript',
39
+ 'type-check': 'typescript',
40
+ 'tsc': 'typescript',
41
+ // Testing
42
+ 'test': 'test',
43
+ 'jest': 'jest',
44
+ 'vitest': 'vitest',
45
+ // Formatting
46
+ 'format': 'prettier',
47
+ 'prettier': 'prettier',
48
+ // Dead code
49
+ 'knip': 'knip',
50
+ 'unused': 'knip',
51
+ // Documentation
52
+ 'docs': 'alexandria',
53
+ 'alexandria': 'alexandria',
54
+ 'typedoc': 'typedoc',
55
+ };
56
+ export class QualityMetricsCalculator {
57
+ /**
58
+ * Detect lens commands from package commands
59
+ */
60
+ static detectLensCommands(commands) {
61
+ const detectedLenses = new Map();
62
+ // First pass: explicit lens: commands
63
+ for (const command of commands) {
64
+ if (command.name.startsWith('lens:')) {
65
+ const parts = command.name.split(':');
66
+ if (parts.length >= 3) {
67
+ const lensId = parts[1];
68
+ const operation = parts[2];
69
+ if (!detectedLenses.has(lensId)) {
70
+ detectedLenses.set(lensId, {
71
+ lensId,
72
+ operations: new Set()
73
+ });
74
+ }
75
+ detectedLenses.get(lensId).operations.add(operation);
76
+ // Mark the command as a lens command
77
+ command.isLensCommand = true;
78
+ command.lensId = lensId;
79
+ command.lensOperation = operation;
80
+ }
81
+ }
82
+ }
83
+ // Second pass: fallback detection if no explicit lens commands found
84
+ if (detectedLenses.size === 0) {
85
+ this.applyFallbackDetection(commands, detectedLenses);
86
+ }
87
+ return detectedLenses;
88
+ }
89
+ /**
90
+ * Apply fallback detection for common script patterns
91
+ */
92
+ static applyFallbackDetection(commands, detectedLenses) {
93
+ for (const command of commands) {
94
+ const lensId = SCRIPT_TO_LENS_MAP[command.name];
95
+ if (lensId) {
96
+ if (!detectedLenses.has(lensId)) {
97
+ detectedLenses.set(lensId, {
98
+ lensId,
99
+ operations: new Set()
100
+ });
101
+ }
102
+ // Infer operation type from command name
103
+ const operation = command.name.includes('coverage') ? 'coverage' : 'check';
104
+ detectedLenses.get(lensId).operations.add(operation);
105
+ // Mark the command
106
+ command.isLensCommand = true;
107
+ command.lensId = lensId;
108
+ command.lensOperation = operation;
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Calculate quality metrics from detected lenses
114
+ * @param detectedLenses - Map of detected lens IDs to lens info
115
+ * @param lensScores - Optional map of lens IDs to real quality scores (0-100)
116
+ * @returns Partial quality metrics hexagon with scores for available lenses
117
+ */
118
+ static calculateMetrics(detectedLenses, lensScores) {
119
+ const metrics = {};
120
+ for (const [lensId] of detectedLenses) {
121
+ const metricKey = LENS_TO_METRIC_MAP[lensId];
122
+ if (metricKey) {
123
+ // Use real score if provided
124
+ const score = lensScores?.get(lensId);
125
+ if (score !== undefined) {
126
+ metrics[metricKey] = score;
127
+ }
128
+ }
129
+ }
130
+ return metrics;
131
+ }
132
+ /**
133
+ * Get list of available lenses
134
+ */
135
+ static getAvailableLenses(detectedLenses) {
136
+ return Array.from(detectedLenses.keys());
137
+ }
138
+ /**
139
+ * Get list of missing standard lenses
140
+ */
141
+ static getMissingLenses(detectedLenses) {
142
+ const availableLenses = new Set(detectedLenses.keys());
143
+ return STANDARD_LENSES.filter(lens => !availableLenses.has(lens));
144
+ }
145
+ /**
146
+ * Full calculation - convenience method
147
+ * @param commands - Package commands to analyze
148
+ * @param lensScores - Optional map of lens IDs to real quality scores (0-100)
149
+ * @returns Quality profile with hexagon, available lenses, and missing lenses
150
+ */
151
+ static calculateQualityProfile(commands, lensScores) {
152
+ const detectedLenses = this.detectLensCommands(commands);
153
+ const hexagon = this.calculateMetrics(detectedLenses, lensScores);
154
+ const availableLenses = this.getAvailableLenses(detectedLenses);
155
+ const missingLenses = this.getMissingLenses(detectedLenses);
156
+ return {
157
+ hexagon,
158
+ availableLenses,
159
+ missingLenses
160
+ };
161
+ }
162
+ }
163
+ //# sourceMappingURL=QualityMetricsCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QualityMetricsCalculator.js","sourceRoot":"","sources":["../../src/helpers/QualityMetricsCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Helper functions for PackageLayer
3
+ */
4
+ import type { PackageLayer, QualityMetrics } from '../types/layer-types';
5
+ /**
6
+ * Convert PackageLayer quality metrics to complete QualityMetrics object
7
+ * Fills in defaults for missing metrics
8
+ */
9
+ export declare function toQualityMetrics(packageLayer: PackageLayer): QualityMetrics | null;
10
+ /**
11
+ * Check if a package has any quality metrics
12
+ */
13
+ export declare function hasQualityMetrics(packageLayer: PackageLayer): boolean;
14
+ /**
15
+ * Get list of available quality lenses for a package
16
+ */
17
+ export declare function getAvailableLenses(packageLayer: PackageLayer): string[];
18
+ /**
19
+ * Get list of missing standard lenses for a package
20
+ */
21
+ export declare function getMissingLenses(packageLayer: PackageLayer): string[];
22
+ /**
23
+ * Calculate overall quality score (0-100) based on available metrics
24
+ */
25
+ export declare function getOverallQualityScore(packageLayer: PackageLayer): number;
26
+ /**
27
+ * Generate recommendations for adding missing lens commands
28
+ */
29
+ export declare function generateLensRecommendations(packageLayer: PackageLayer): string[];
30
+ //# sourceMappingURL=packageLayerHelpers.d.ts.map
@@ -0,0 +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;AAEzE;;;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;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAiChF"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Helper functions for PackageLayer
3
+ */
4
+ /**
5
+ * Convert PackageLayer quality metrics to complete QualityMetrics object
6
+ * Fills in defaults for missing metrics
7
+ */
8
+ export function toQualityMetrics(packageLayer) {
9
+ if (!packageLayer.qualityMetrics?.hexagon) {
10
+ return null;
11
+ }
12
+ const hexagon = packageLayer.qualityMetrics.hexagon;
13
+ return {
14
+ tests: hexagon.tests ?? 0,
15
+ deadCode: hexagon.deadCode ?? 0,
16
+ linting: hexagon.linting ?? 0,
17
+ formatting: hexagon.formatting ?? 0,
18
+ types: hexagon.types ?? 0,
19
+ documentation: hexagon.documentation ?? 0,
20
+ };
21
+ }
22
+ /**
23
+ * Check if a package has any quality metrics
24
+ */
25
+ export function hasQualityMetrics(packageLayer) {
26
+ return Boolean(packageLayer.qualityMetrics?.hexagon);
27
+ }
28
+ /**
29
+ * Get list of available quality lenses for a package
30
+ */
31
+ export function getAvailableLenses(packageLayer) {
32
+ return packageLayer.qualityMetrics?.availableLenses ?? [];
33
+ }
34
+ /**
35
+ * Get list of missing standard lenses for a package
36
+ */
37
+ export function getMissingLenses(packageLayer) {
38
+ return packageLayer.qualityMetrics?.missingLenses ?? [];
39
+ }
40
+ /**
41
+ * Calculate overall quality score (0-100) based on available metrics
42
+ */
43
+ export function getOverallQualityScore(packageLayer) {
44
+ const metrics = toQualityMetrics(packageLayer);
45
+ if (!metrics)
46
+ return 0;
47
+ const values = Object.values(metrics);
48
+ const nonZeroValues = values.filter(v => v > 0);
49
+ if (nonZeroValues.length === 0)
50
+ return 0;
51
+ return Math.round(nonZeroValues.reduce((sum, val) => sum + val, 0) / nonZeroValues.length);
52
+ }
53
+ /**
54
+ * Generate recommendations for adding missing lens commands
55
+ */
56
+ export function generateLensRecommendations(packageLayer) {
57
+ const missing = getMissingLenses(packageLayer);
58
+ const recommendations = [];
59
+ for (const lensId of missing) {
60
+ switch (lensId) {
61
+ case 'eslint':
62
+ recommendations.push('"lens:eslint:check": "eslint . --format json"');
63
+ recommendations.push('"lens:eslint:coverage": "eslint . --format json --no-inline-config"');
64
+ break;
65
+ case 'typescript':
66
+ recommendations.push('"lens:typescript:check": "tsc --noEmit"');
67
+ recommendations.push('"lens:typescript:coverage": "tsc --listFiles"');
68
+ break;
69
+ case 'test':
70
+ recommendations.push('"lens:test:check": "jest --json"');
71
+ recommendations.push('"lens:test:coverage": "jest --coverage --json"');
72
+ break;
73
+ case 'prettier':
74
+ recommendations.push('"lens:prettier:check": "prettier --check ."');
75
+ recommendations.push('"lens:prettier:coverage": "prettier --list-different ."');
76
+ break;
77
+ case 'knip':
78
+ recommendations.push('"lens:knip:check": "knip --reporter json"');
79
+ break;
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;
84
+ }
85
+ }
86
+ return recommendations;
87
+ }
88
+ //# sourceMappingURL=packageLayerHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageLayerHelpers.js","sourceRoot":"","sources":["../../src/helpers/packageLayerHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type { FilePattern, FileSet, BaseLayer, PackageCommand, ConfigFile, PackageLayer, FileSystemFilterLayer, VersionControlLayer, VersionControlIgnorePattern, VersionControlProvider, FileInfo, DirectoryInfo, FileTree, ExtractedType, PackageTypes, TypeDefinitionLayer, TypeExtractor, QualityMetrics, LensOperation, } from './types';
2
+ export { FileTypeLayerModule, PackageLayerModule, VersionControlLayerFactory, DependencyLayerModule, FrameworkLayerModule, FileSystemModule, TypeExtractionModule, } from './modules';
3
+ export type { FileTypeInfo, FileSystemModuleConfig, FileSystemLoadResult, TypeExtractionOptions, TypeScriptExtractionOptions, } from './modules';
4
+ export { TypeScriptExtractor } from './modules';
5
+ export { FilesystemService } from './services';
6
+ export { QualityMetricsCalculator } from './helpers/QualityMetricsCalculator';
7
+ export { toQualityMetrics, hasQualityMetrics, getAvailableLenses, getMissingLenses, getOverallQualityScore, generateLensRecommendations, } from './helpers/packageLayerHelpers';
8
+ export { NodeFileSystemAdapter } from './adapters/NodeFileSystemAdapter';
9
+ export { GitVersionControlProvider, PackageManagerApiProvider } from './providers';
10
+ export type { FileSystemAdapter, GitAdapter, ShellAdapter, PackageManager, PackageVersionInfo, VersionCheckResult, VulnerabilityInfo, VulnerabilityCheckResult, LicenseInfo, LicenseCheckResult, DependencyCheckProgress, BatchCheckOptions, } from './providers';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,GACd,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;AAGvC,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 ADDED
@@ -0,0 +1,14 @@
1
+ // Main export file for layers module
2
+ // Modules
3
+ export { FileTypeLayerModule, PackageLayerModule, VersionControlLayerFactory, DependencyLayerModule, FrameworkLayerModule, FileSystemModule, TypeExtractionModule, } from './modules/index.js';
4
+ export { TypeScriptExtractor } from './modules/index.js';
5
+ // Services
6
+ export { FilesystemService } from './services/index.js';
7
+ // Helpers
8
+ export { QualityMetricsCalculator } from './helpers/QualityMetricsCalculator.js';
9
+ export { toQualityMetrics, hasQualityMetrics, getAvailableLenses, getMissingLenses, getOverallQualityScore, generateLensRecommendations, } from './helpers/packageLayerHelpers.js';
10
+ // Adapters
11
+ export { NodeFileSystemAdapter } from './adapters/NodeFileSystemAdapter.js';
12
+ // Providers
13
+ export { GitVersionControlProvider, PackageManagerApiProvider } from './providers/index.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAyBrC,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;AAC9E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,WAAW;AACX,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,YAAY;AACZ,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { DependencyLayer, PackageLayer } from '../types/layer-types';
2
+ export declare class DependencyLayerModule {
3
+ /**
4
+ * Create dependency layers from package layers
5
+ */
6
+ createDependencyLayers(packageLayers: PackageLayer[]): DependencyLayer[];
7
+ /**
8
+ * Add a dependency to the map
9
+ */
10
+ private addDependency;
11
+ /**
12
+ * Get JSON paths for content extraction
13
+ */
14
+ private getJsonPaths;
15
+ /**
16
+ * Get color for dependency based on type and name
17
+ */
18
+ private getDependencyColor;
19
+ /**
20
+ * Get icon for dependency based on its name/type
21
+ */
22
+ private getDependencyIcon;
23
+ /**
24
+ * Analyze dependency health and conflicts
25
+ */
26
+ analyzeDependencyHealth(dependencyLayers: DependencyLayer[]): {
27
+ duplicates: Array<{
28
+ name: string;
29
+ versions: string[];
30
+ packages: Record<string, string>;
31
+ }>;
32
+ outdated: Array<{
33
+ name: string;
34
+ version: string;
35
+ latest?: string;
36
+ }>;
37
+ security: Array<{
38
+ name: string;
39
+ severity: 'low' | 'medium' | 'high';
40
+ issue: string;
41
+ }>;
42
+ };
43
+ }
44
+ //# sourceMappingURL=DependencyLayerModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependencyLayerModule.d.ts","sourceRoot":"","sources":["../../src/modules/DependencyLayerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAW9E,qBAAa,qBAAqB;IAChC;;OAEG;IACH,sBAAsB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE;IAuGxE;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,uBAAuB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG;QAC5D,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC,CAAC;QAC1F,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvF;CAoEF"}