@nahisaho/musubix-codegraph 3.6.0 → 3.7.3
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 +21 -0
- package/dist/integration/codemap-bridge.d.ts +16 -0
- package/dist/integration/codemap-bridge.d.ts.map +1 -0
- package/dist/integration/codemap-bridge.js +597 -0
- package/dist/integration/codemap-bridge.js.map +1 -0
- package/dist/integration/codemap-types.d.ts +259 -0
- package/dist/integration/codemap-types.d.ts.map +1 -0
- package/dist/integration/codemap-types.js +16 -0
- package/dist/integration/codemap-types.js.map +1 -0
- package/dist/integration/index.d.ts +8 -0
- package/dist/integration/index.d.ts.map +1 -0
- package/dist/integration/index.js +8 -0
- package/dist/integration/index.js.map +1 -0
- package/package.json +10 -10
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 nahisaho
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Codemap Bridge Implementation for Agent Skills Integration
|
|
3
|
+
* @traceability REQ-CM-001, REQ-CM-002, REQ-CM-003, REQ-CM-004
|
|
4
|
+
*/
|
|
5
|
+
import type { CodemapBridge, CodemapBridgeConfig, Codemap } from './codemap-types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create a Codemap Bridge for Agent Skills integration
|
|
8
|
+
* @param config Bridge configuration
|
|
9
|
+
* @returns CodemapBridge instance
|
|
10
|
+
*/
|
|
11
|
+
export declare function createCodemapBridge(config?: Partial<CodemapBridgeConfig>): CodemapBridge;
|
|
12
|
+
/**
|
|
13
|
+
* Format codemap structure as Mermaid diagram
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatCodemapAsMermaid(codemap: Codemap): string;
|
|
16
|
+
//# sourceMappingURL=codemap-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemap-bridge.d.ts","sourceRoot":"","sources":["../../src/integration/codemap-bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EAQnB,OAAO,EAGR,MAAM,oBAAoB,CAAC;AAO5B;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACxC,aAAa,CAsNf;AAyaD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAuB/D"}
|
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Codemap Bridge Implementation for Agent Skills Integration
|
|
3
|
+
* @traceability REQ-CM-001, REQ-CM-002, REQ-CM-003, REQ-CM-004
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs/promises';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { createHash } from 'crypto';
|
|
8
|
+
import { DEFAULT_CODEMAP_BRIDGE_CONFIG, } from './codemap-types.js';
|
|
9
|
+
import { LANGUAGE_EXTENSIONS } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a Codemap Bridge for Agent Skills integration
|
|
12
|
+
* @param config Bridge configuration
|
|
13
|
+
* @returns CodemapBridge instance
|
|
14
|
+
*/
|
|
15
|
+
export function createCodemapBridge(config = {}) {
|
|
16
|
+
let currentConfig = {
|
|
17
|
+
...DEFAULT_CODEMAP_BRIDGE_CONFIG,
|
|
18
|
+
...config,
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
async analyzeStructure(rootPath) {
|
|
22
|
+
const packages = await analyzePackages(rootPath);
|
|
23
|
+
const structure = await buildDirectoryTree(rootPath, currentConfig.maxDepth, currentConfig);
|
|
24
|
+
const entryPoints = await detectEntryPoints(rootPath, packages);
|
|
25
|
+
const frameworks = await detectFrameworks(rootPath);
|
|
26
|
+
return { packages, structure, entryPoints, frameworks };
|
|
27
|
+
},
|
|
28
|
+
async analyzeModule(modulePath) {
|
|
29
|
+
const content = await fs.readFile(modulePath, 'utf-8');
|
|
30
|
+
const lines = content.split('\n');
|
|
31
|
+
const exports = extractExports(content, modulePath);
|
|
32
|
+
const imports = extractImports(content);
|
|
33
|
+
const entityCounts = countEntities(content);
|
|
34
|
+
return {
|
|
35
|
+
path: modulePath,
|
|
36
|
+
name: path.basename(modulePath, path.extname(modulePath)),
|
|
37
|
+
exports,
|
|
38
|
+
imports,
|
|
39
|
+
entityCounts,
|
|
40
|
+
linesOfCode: lines.length,
|
|
41
|
+
complexity: calculateComplexity(content),
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
async generateCodemap(rootPath) {
|
|
45
|
+
const { packages, structure, entryPoints, frameworks } = await this.analyzeStructure(rootPath);
|
|
46
|
+
// Read project info
|
|
47
|
+
const packageJsonPath = path.join(rootPath, 'package.json');
|
|
48
|
+
let projectName = path.basename(rootPath);
|
|
49
|
+
let projectVersion;
|
|
50
|
+
try {
|
|
51
|
+
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
|
|
52
|
+
projectName = packageJson.name || projectName;
|
|
53
|
+
projectVersion = packageJson.version;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// No package.json, use directory name
|
|
57
|
+
}
|
|
58
|
+
const documents = await generateDocuments(rootPath, packages, entryPoints, frameworks, structure);
|
|
59
|
+
return {
|
|
60
|
+
projectName,
|
|
61
|
+
projectVersion,
|
|
62
|
+
generatedAt: new Date().toISOString(),
|
|
63
|
+
documents,
|
|
64
|
+
packages,
|
|
65
|
+
entryPoints,
|
|
66
|
+
frameworks,
|
|
67
|
+
structure,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
compareCodemaps(previous, current) {
|
|
71
|
+
const prevHash = hashCodemap(previous);
|
|
72
|
+
const currHash = hashCodemap(current);
|
|
73
|
+
const prevPackageNames = new Set(previous.packages.map(p => p.name));
|
|
74
|
+
const currPackageNames = new Set(current.packages.map(p => p.name));
|
|
75
|
+
const addedPackages = [...currPackageNames].filter(n => !prevPackageNames.has(n));
|
|
76
|
+
const removedPackages = [...prevPackageNames].filter(n => !currPackageNames.has(n));
|
|
77
|
+
const modifiedPackages = [...currPackageNames].filter(n => {
|
|
78
|
+
if (!prevPackageNames.has(n))
|
|
79
|
+
return false;
|
|
80
|
+
const prev = previous.packages.find(p => p.name === n);
|
|
81
|
+
const curr = current.packages.find(p => p.name === n);
|
|
82
|
+
return prev && curr && JSON.stringify(prev) !== JSON.stringify(curr);
|
|
83
|
+
});
|
|
84
|
+
const prevEntryPoints = new Set(previous.entryPoints.map(e => e.path));
|
|
85
|
+
const currEntryPoints = new Set(current.entryPoints.map(e => e.path));
|
|
86
|
+
const addedEntryPoints = [...currEntryPoints].filter(p => !prevEntryPoints.has(p));
|
|
87
|
+
const removedEntryPoints = [...prevEntryPoints].filter(p => !currEntryPoints.has(p));
|
|
88
|
+
const totalChanges = addedPackages.length + removedPackages.length + modifiedPackages.length +
|
|
89
|
+
addedEntryPoints.length + removedEntryPoints.length;
|
|
90
|
+
const totalItems = Math.max(previous.packages.length + previous.entryPoints.length, current.packages.length + current.entryPoints.length);
|
|
91
|
+
const diffPercentage = totalItems > 0 ? (totalChanges / totalItems) * 100 : 0;
|
|
92
|
+
const majorChanges = [];
|
|
93
|
+
if (addedPackages.length > 0)
|
|
94
|
+
majorChanges.push(`Added ${addedPackages.length} package(s)`);
|
|
95
|
+
if (removedPackages.length > 0)
|
|
96
|
+
majorChanges.push(`Removed ${removedPackages.length} package(s)`);
|
|
97
|
+
if (modifiedPackages.length > 0)
|
|
98
|
+
majorChanges.push(`Modified ${modifiedPackages.length} package(s)`);
|
|
99
|
+
return {
|
|
100
|
+
previousHash: prevHash,
|
|
101
|
+
currentHash: currHash,
|
|
102
|
+
diffPercentage: Math.round(diffPercentage * 10) / 10,
|
|
103
|
+
addedPackages,
|
|
104
|
+
removedPackages,
|
|
105
|
+
modifiedPackages,
|
|
106
|
+
addedEntryPoints,
|
|
107
|
+
removedEntryPoints,
|
|
108
|
+
majorChanges,
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
async writeCodemap(codemap, outputDir) {
|
|
112
|
+
const dir = outputDir || currentConfig.outputDir;
|
|
113
|
+
await fs.mkdir(dir, { recursive: true });
|
|
114
|
+
for (const doc of codemap.documents) {
|
|
115
|
+
const fileName = `${doc.type === 'index' ? 'INDEX' : doc.type}.md`;
|
|
116
|
+
const filePath = path.join(dir, fileName);
|
|
117
|
+
await fs.writeFile(filePath, doc.content, 'utf-8');
|
|
118
|
+
}
|
|
119
|
+
// Also write metadata
|
|
120
|
+
const metadataPath = path.join(dir, '.codemap-metadata.json');
|
|
121
|
+
await fs.writeFile(metadataPath, JSON.stringify({
|
|
122
|
+
projectName: codemap.projectName,
|
|
123
|
+
projectVersion: codemap.projectVersion,
|
|
124
|
+
generatedAt: codemap.generatedAt,
|
|
125
|
+
packageCount: codemap.packages.length,
|
|
126
|
+
entryPointCount: codemap.entryPoints.length,
|
|
127
|
+
frameworkCount: codemap.frameworks.length,
|
|
128
|
+
}, null, 2), 'utf-8');
|
|
129
|
+
},
|
|
130
|
+
formatAsMarkdown(codemap) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
lines.push(`# Code Map: ${codemap.projectName}`);
|
|
133
|
+
lines.push('');
|
|
134
|
+
lines.push(`**Generated**: ${codemap.generatedAt}`);
|
|
135
|
+
if (codemap.projectVersion) {
|
|
136
|
+
lines.push(`**Version**: ${codemap.projectVersion}`);
|
|
137
|
+
}
|
|
138
|
+
lines.push('');
|
|
139
|
+
// Package Structure
|
|
140
|
+
lines.push('## Package Structure');
|
|
141
|
+
lines.push('');
|
|
142
|
+
lines.push('| Package | Description | Dependencies |');
|
|
143
|
+
lines.push('|---------|-------------|--------------|');
|
|
144
|
+
for (const pkg of codemap.packages) {
|
|
145
|
+
const deps = pkg.dependencies.slice(0, 3).join(', ') +
|
|
146
|
+
(pkg.dependencies.length > 3 ? ', ...' : '');
|
|
147
|
+
lines.push(`| ${pkg.name} | ${pkg.description || '-'} | ${deps || '-'} |`);
|
|
148
|
+
}
|
|
149
|
+
lines.push('');
|
|
150
|
+
// Entry Points
|
|
151
|
+
lines.push('## Entry Points');
|
|
152
|
+
lines.push('');
|
|
153
|
+
for (const entry of codemap.entryPoints) {
|
|
154
|
+
lines.push(`- **${entry.type}**: \`${entry.path}\`${entry.description ? ` - ${entry.description}` : ''}`);
|
|
155
|
+
}
|
|
156
|
+
lines.push('');
|
|
157
|
+
// Frameworks
|
|
158
|
+
if (codemap.frameworks.length > 0) {
|
|
159
|
+
lines.push('## Detected Frameworks');
|
|
160
|
+
lines.push('');
|
|
161
|
+
for (const fw of codemap.frameworks) {
|
|
162
|
+
lines.push(`- **${fw.name}**${fw.version ? ` (${fw.version})` : ''} - ${fw.type}`);
|
|
163
|
+
}
|
|
164
|
+
lines.push('');
|
|
165
|
+
}
|
|
166
|
+
return lines.join('\n');
|
|
167
|
+
},
|
|
168
|
+
formatDiffReport(diff) {
|
|
169
|
+
const lines = [];
|
|
170
|
+
lines.push('Codemap Diff Report');
|
|
171
|
+
lines.push('===================');
|
|
172
|
+
lines.push(`Date: ${new Date().toISOString()}`);
|
|
173
|
+
lines.push(`Previous Hash: ${diff.previousHash.substring(0, 8)}`);
|
|
174
|
+
lines.push(`Current Hash: ${diff.currentHash.substring(0, 8)}`);
|
|
175
|
+
lines.push('');
|
|
176
|
+
lines.push('Summary:');
|
|
177
|
+
lines.push(`- Packages added: ${diff.addedPackages.length}`);
|
|
178
|
+
lines.push(`- Packages removed: ${diff.removedPackages.length}`);
|
|
179
|
+
lines.push(`- Packages modified: ${diff.modifiedPackages.length}`);
|
|
180
|
+
lines.push(`- Entry points added: ${diff.addedEntryPoints.length}`);
|
|
181
|
+
lines.push(`- Entry points removed: ${diff.removedEntryPoints.length}`);
|
|
182
|
+
lines.push(`- Diff percentage: ${diff.diffPercentage}%`);
|
|
183
|
+
lines.push('');
|
|
184
|
+
if (diff.majorChanges.length > 0) {
|
|
185
|
+
lines.push('Major Changes:');
|
|
186
|
+
for (const change of diff.majorChanges) {
|
|
187
|
+
lines.push(`- ${change}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
},
|
|
192
|
+
getConfig() {
|
|
193
|
+
return { ...currentConfig };
|
|
194
|
+
},
|
|
195
|
+
updateConfig(config) {
|
|
196
|
+
currentConfig = { ...currentConfig, ...config };
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// ============================================================================
|
|
201
|
+
// Helper Functions
|
|
202
|
+
// ============================================================================
|
|
203
|
+
async function analyzePackages(rootPath) {
|
|
204
|
+
const packages = [];
|
|
205
|
+
// Check for monorepo
|
|
206
|
+
const rootPackageJsonPath = path.join(rootPath, 'package.json');
|
|
207
|
+
try {
|
|
208
|
+
const rootPackageJson = JSON.parse(await fs.readFile(rootPackageJsonPath, 'utf-8'));
|
|
209
|
+
// Check workspaces
|
|
210
|
+
const workspaces = rootPackageJson.workspaces || [];
|
|
211
|
+
const workspacePaths = [];
|
|
212
|
+
for (const ws of workspaces) {
|
|
213
|
+
// Handle glob patterns like "packages/*"
|
|
214
|
+
if (ws.includes('*')) {
|
|
215
|
+
const base = ws.replace('/*', '');
|
|
216
|
+
const basePath = path.join(rootPath, base);
|
|
217
|
+
try {
|
|
218
|
+
const dirs = await fs.readdir(basePath, { withFileTypes: true });
|
|
219
|
+
for (const dir of dirs) {
|
|
220
|
+
if (dir.isDirectory()) {
|
|
221
|
+
workspacePaths.push(path.join(base, dir.name));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
// Directory doesn't exist
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
workspacePaths.push(ws);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// Analyze each workspace package
|
|
234
|
+
for (const wsPath of workspacePaths) {
|
|
235
|
+
const pkgJsonPath = path.join(rootPath, wsPath, 'package.json');
|
|
236
|
+
try {
|
|
237
|
+
const pkgJson = JSON.parse(await fs.readFile(pkgJsonPath, 'utf-8'));
|
|
238
|
+
packages.push({
|
|
239
|
+
name: pkgJson.name || path.basename(wsPath),
|
|
240
|
+
version: pkgJson.version,
|
|
241
|
+
path: wsPath,
|
|
242
|
+
description: pkgJson.description,
|
|
243
|
+
main: pkgJson.main,
|
|
244
|
+
exports: pkgJson.exports,
|
|
245
|
+
dependencies: Object.keys(pkgJson.dependencies || {}),
|
|
246
|
+
devDependencies: Object.keys(pkgJson.devDependencies || {}),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// No package.json
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// If no workspaces, add root as single package
|
|
254
|
+
if (packages.length === 0) {
|
|
255
|
+
packages.push({
|
|
256
|
+
name: rootPackageJson.name || path.basename(rootPath),
|
|
257
|
+
version: rootPackageJson.version,
|
|
258
|
+
path: '.',
|
|
259
|
+
description: rootPackageJson.description,
|
|
260
|
+
main: rootPackageJson.main,
|
|
261
|
+
exports: rootPackageJson.exports,
|
|
262
|
+
dependencies: Object.keys(rootPackageJson.dependencies || {}),
|
|
263
|
+
devDependencies: Object.keys(rootPackageJson.devDependencies || {}),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// No package.json at root
|
|
269
|
+
}
|
|
270
|
+
return packages;
|
|
271
|
+
}
|
|
272
|
+
async function buildDirectoryTree(dirPath, maxDepth, config, currentDepth = 0) {
|
|
273
|
+
const name = path.basename(dirPath);
|
|
274
|
+
const node = {
|
|
275
|
+
name,
|
|
276
|
+
path: dirPath,
|
|
277
|
+
isDirectory: true,
|
|
278
|
+
children: [],
|
|
279
|
+
};
|
|
280
|
+
if (currentDepth >= maxDepth) {
|
|
281
|
+
return node;
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
285
|
+
for (const entry of entries) {
|
|
286
|
+
// Skip common excludes
|
|
287
|
+
if (entry.name.startsWith('.') && entry.name !== '.github')
|
|
288
|
+
continue;
|
|
289
|
+
if (entry.name === 'node_modules' && !config.includeNodeModules)
|
|
290
|
+
continue;
|
|
291
|
+
if (entry.name === 'dist' || entry.name === 'build')
|
|
292
|
+
continue;
|
|
293
|
+
if (!config.includeTests && (entry.name === '__tests__' || entry.name === 'tests'))
|
|
294
|
+
continue;
|
|
295
|
+
const entryPath = path.join(dirPath, entry.name);
|
|
296
|
+
if (entry.isDirectory()) {
|
|
297
|
+
const child = await buildDirectoryTree(entryPath, maxDepth, config, currentDepth + 1);
|
|
298
|
+
node.children?.push(child);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
const ext = path.extname(entry.name);
|
|
302
|
+
const language = LANGUAGE_EXTENSIONS[ext];
|
|
303
|
+
node.children?.push({
|
|
304
|
+
name: entry.name,
|
|
305
|
+
path: entryPath,
|
|
306
|
+
isDirectory: false,
|
|
307
|
+
language,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// Directory read error
|
|
314
|
+
}
|
|
315
|
+
return node;
|
|
316
|
+
}
|
|
317
|
+
async function detectEntryPoints(rootPath, packages) {
|
|
318
|
+
const entryPoints = [];
|
|
319
|
+
// Check bin directory
|
|
320
|
+
const binPath = path.join(rootPath, 'bin');
|
|
321
|
+
try {
|
|
322
|
+
const binFiles = await fs.readdir(binPath);
|
|
323
|
+
for (const file of binFiles) {
|
|
324
|
+
entryPoints.push({
|
|
325
|
+
type: 'cli',
|
|
326
|
+
path: `bin/${file}`,
|
|
327
|
+
description: 'CLI entry point',
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
// No bin directory
|
|
333
|
+
}
|
|
334
|
+
// Check package main/exports
|
|
335
|
+
for (const pkg of packages) {
|
|
336
|
+
if (pkg.main) {
|
|
337
|
+
entryPoints.push({
|
|
338
|
+
type: 'library',
|
|
339
|
+
path: path.join(pkg.path, pkg.main),
|
|
340
|
+
description: `Main entry for ${pkg.name}`,
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// Check common patterns
|
|
345
|
+
const commonPatterns = [
|
|
346
|
+
{ pattern: 'src/index.ts', type: 'library' },
|
|
347
|
+
{ pattern: 'src/main.ts', type: 'library' },
|
|
348
|
+
{ pattern: 'src/server.ts', type: 'api' },
|
|
349
|
+
{ pattern: 'src/app.ts', type: 'api' },
|
|
350
|
+
{ pattern: 'src/worker.ts', type: 'worker' },
|
|
351
|
+
{ pattern: 'pages/api', type: 'api' },
|
|
352
|
+
{ pattern: 'app/api', type: 'api' },
|
|
353
|
+
];
|
|
354
|
+
for (const { pattern, type } of commonPatterns) {
|
|
355
|
+
const fullPath = path.join(rootPath, pattern);
|
|
356
|
+
try {
|
|
357
|
+
await fs.access(fullPath);
|
|
358
|
+
// Avoid duplicates
|
|
359
|
+
if (!entryPoints.some(e => e.path === pattern)) {
|
|
360
|
+
entryPoints.push({ type, path: pattern });
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
// File doesn't exist
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return entryPoints;
|
|
368
|
+
}
|
|
369
|
+
async function detectFrameworks(rootPath) {
|
|
370
|
+
const frameworks = [];
|
|
371
|
+
const packageJsonPath = path.join(rootPath, 'package.json');
|
|
372
|
+
try {
|
|
373
|
+
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
|
|
374
|
+
const allDeps = {
|
|
375
|
+
...packageJson.dependencies,
|
|
376
|
+
...packageJson.devDependencies,
|
|
377
|
+
};
|
|
378
|
+
const frameworkPatterns = [
|
|
379
|
+
{ dep: 'next', name: 'Next.js', type: 'fullstack', indicators: ['next.config.js', 'next.config.mjs'] },
|
|
380
|
+
{ dep: 'react', name: 'React', type: 'frontend', indicators: ['src/App.tsx', 'src/App.jsx'] },
|
|
381
|
+
{ dep: 'vue', name: 'Vue.js', type: 'frontend', indicators: ['vue.config.js'] },
|
|
382
|
+
{ dep: 'express', name: 'Express', type: 'backend', indicators: ['src/app.ts', 'src/server.ts'] },
|
|
383
|
+
{ dep: 'fastify', name: 'Fastify', type: 'backend', indicators: ['src/server.ts'] },
|
|
384
|
+
{ dep: 'vitest', name: 'Vitest', type: 'test', indicators: ['vitest.config.ts'] },
|
|
385
|
+
{ dep: 'jest', name: 'Jest', type: 'test', indicators: ['jest.config.js'] },
|
|
386
|
+
{ dep: 'playwright', name: 'Playwright', type: 'test', indicators: ['playwright.config.ts'] },
|
|
387
|
+
{ dep: 'vite', name: 'Vite', type: 'build', indicators: ['vite.config.ts'] },
|
|
388
|
+
{ dep: 'webpack', name: 'Webpack', type: 'build', indicators: ['webpack.config.js'] },
|
|
389
|
+
];
|
|
390
|
+
for (const { dep, name, type, indicators } of frameworkPatterns) {
|
|
391
|
+
if (allDeps[dep]) {
|
|
392
|
+
frameworks.push({
|
|
393
|
+
name,
|
|
394
|
+
version: allDeps[dep],
|
|
395
|
+
type,
|
|
396
|
+
indicators,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// No package.json
|
|
403
|
+
}
|
|
404
|
+
return frameworks;
|
|
405
|
+
}
|
|
406
|
+
function extractExports(content, filePath) {
|
|
407
|
+
const exports = [];
|
|
408
|
+
const lines = content.split('\n');
|
|
409
|
+
const exportPatterns = [
|
|
410
|
+
{ regex: /export\s+default\s+/, type: 'default' },
|
|
411
|
+
{ regex: /export\s+function\s+(\w+)/, type: 'function' },
|
|
412
|
+
{ regex: /export\s+class\s+(\w+)/, type: 'class' },
|
|
413
|
+
{ regex: /export\s+interface\s+(\w+)/, type: 'interface' },
|
|
414
|
+
{ regex: /export\s+type\s+(\w+)/, type: 'type' },
|
|
415
|
+
{ regex: /export\s+const\s+(\w+)/, type: 'const' },
|
|
416
|
+
{ regex: /export\s+enum\s+(\w+)/, type: 'enum' },
|
|
417
|
+
{ regex: /export\s+\{\s*([^}]+)\s*\}/, type: 'const' },
|
|
418
|
+
];
|
|
419
|
+
lines.forEach((line, index) => {
|
|
420
|
+
for (const { regex, type } of exportPatterns) {
|
|
421
|
+
const match = line.match(regex);
|
|
422
|
+
if (match) {
|
|
423
|
+
if (type === 'default') {
|
|
424
|
+
exports.push({
|
|
425
|
+
name: 'default',
|
|
426
|
+
type: 'default',
|
|
427
|
+
isReExport: line.includes('from'),
|
|
428
|
+
sourceFile: filePath,
|
|
429
|
+
line: index + 1,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
else if (match[1]) {
|
|
433
|
+
// Handle multiple exports in braces
|
|
434
|
+
const names = match[1].split(',').map(n => n.trim().split(' ')[0]);
|
|
435
|
+
for (const name of names) {
|
|
436
|
+
if (name) {
|
|
437
|
+
exports.push({
|
|
438
|
+
name,
|
|
439
|
+
type,
|
|
440
|
+
isReExport: line.includes('from'),
|
|
441
|
+
sourceFile: filePath,
|
|
442
|
+
line: index + 1,
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
return exports;
|
|
451
|
+
}
|
|
452
|
+
function extractImports(content) {
|
|
453
|
+
const imports = [];
|
|
454
|
+
const importRegex = /import\s+(?:type\s+)?(?:\{([^}]+)\}|(\w+))\s+from\s+['"]([^'"]+)['"]/g;
|
|
455
|
+
let match;
|
|
456
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
457
|
+
const items = match[1]
|
|
458
|
+
? match[1].split(',').map(i => i.trim().split(' ')[0]).filter(Boolean)
|
|
459
|
+
: match[2] ? [match[2]] : [];
|
|
460
|
+
const source = match[3];
|
|
461
|
+
imports.push({
|
|
462
|
+
source,
|
|
463
|
+
isExternal: !source.startsWith('.') && !source.startsWith('/'),
|
|
464
|
+
items,
|
|
465
|
+
isTypeOnly: match[0].includes('import type'),
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
return imports;
|
|
469
|
+
}
|
|
470
|
+
function countEntities(content) {
|
|
471
|
+
const counts = {};
|
|
472
|
+
const patterns = [
|
|
473
|
+
{ name: 'function', regex: /function\s+\w+/g },
|
|
474
|
+
{ name: 'class', regex: /class\s+\w+/g },
|
|
475
|
+
{ name: 'interface', regex: /interface\s+\w+/g },
|
|
476
|
+
{ name: 'type', regex: /type\s+\w+\s*=/g },
|
|
477
|
+
{ name: 'const', regex: /const\s+\w+/g },
|
|
478
|
+
{ name: 'let', regex: /let\s+\w+/g },
|
|
479
|
+
];
|
|
480
|
+
for (const { name, regex } of patterns) {
|
|
481
|
+
const matches = content.match(regex);
|
|
482
|
+
if (matches) {
|
|
483
|
+
counts[name] = matches.length;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return counts;
|
|
487
|
+
}
|
|
488
|
+
function calculateComplexity(content) {
|
|
489
|
+
let complexity = 1; // Base complexity
|
|
490
|
+
// Count control flow statements
|
|
491
|
+
const controlPatterns = [
|
|
492
|
+
/\bif\s*\(/g,
|
|
493
|
+
/\belse\s+if\s*\(/g,
|
|
494
|
+
/\bwhile\s*\(/g,
|
|
495
|
+
/\bfor\s*\(/g,
|
|
496
|
+
/\bswitch\s*\(/g,
|
|
497
|
+
/\bcase\s+/g,
|
|
498
|
+
/\bcatch\s*\(/g,
|
|
499
|
+
/\?\s*[^:]+\s*:/g, // Ternary
|
|
500
|
+
/&&/g,
|
|
501
|
+
/\|\|/g,
|
|
502
|
+
];
|
|
503
|
+
for (const pattern of controlPatterns) {
|
|
504
|
+
const matches = content.match(pattern);
|
|
505
|
+
if (matches) {
|
|
506
|
+
complexity += matches.length;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return complexity;
|
|
510
|
+
}
|
|
511
|
+
async function generateDocuments(_rootPath, packages, entryPoints, frameworks, _structure) {
|
|
512
|
+
const documents = [];
|
|
513
|
+
const timestamp = new Date().toISOString();
|
|
514
|
+
// INDEX.md
|
|
515
|
+
let indexContent = '# Code Map\n\n';
|
|
516
|
+
indexContent += `**Generated**: ${timestamp}\n\n`;
|
|
517
|
+
indexContent += '## Packages\n\n';
|
|
518
|
+
indexContent += '| Package | Version | Dependencies |\n';
|
|
519
|
+
indexContent += '|---------|---------|-------------|\n';
|
|
520
|
+
for (const pkg of packages) {
|
|
521
|
+
indexContent += `| ${pkg.name} | ${pkg.version || '-'} | ${pkg.dependencies.length} |\n`;
|
|
522
|
+
}
|
|
523
|
+
indexContent += '\n## Entry Points\n\n';
|
|
524
|
+
for (const ep of entryPoints) {
|
|
525
|
+
indexContent += `- **${ep.type}**: \`${ep.path}\`\n`;
|
|
526
|
+
}
|
|
527
|
+
if (frameworks.length > 0) {
|
|
528
|
+
indexContent += '\n## Frameworks\n\n';
|
|
529
|
+
for (const fw of frameworks) {
|
|
530
|
+
indexContent += `- ${fw.name} (${fw.type})\n`;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
documents.push({
|
|
534
|
+
type: 'index',
|
|
535
|
+
title: 'Code Map Index',
|
|
536
|
+
content: indexContent,
|
|
537
|
+
updatedAt: timestamp,
|
|
538
|
+
});
|
|
539
|
+
// packages.md
|
|
540
|
+
let packagesContent = '# Packages\n\n';
|
|
541
|
+
for (const pkg of packages) {
|
|
542
|
+
packagesContent += `## ${pkg.name}\n\n`;
|
|
543
|
+
packagesContent += `**Path**: \`${pkg.path}\`\n\n`;
|
|
544
|
+
if (pkg.description)
|
|
545
|
+
packagesContent += `${pkg.description}\n\n`;
|
|
546
|
+
if (pkg.dependencies.length > 0) {
|
|
547
|
+
packagesContent += '### Dependencies\n\n';
|
|
548
|
+
for (const dep of pkg.dependencies.slice(0, 20)) {
|
|
549
|
+
packagesContent += `- ${dep}\n`;
|
|
550
|
+
}
|
|
551
|
+
if (pkg.dependencies.length > 20) {
|
|
552
|
+
packagesContent += `- ... and ${pkg.dependencies.length - 20} more\n`;
|
|
553
|
+
}
|
|
554
|
+
packagesContent += '\n';
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
documents.push({
|
|
558
|
+
type: 'packages',
|
|
559
|
+
title: 'Package Details',
|
|
560
|
+
content: packagesContent,
|
|
561
|
+
packages: packages.map(p => p.name),
|
|
562
|
+
updatedAt: timestamp,
|
|
563
|
+
});
|
|
564
|
+
return documents;
|
|
565
|
+
}
|
|
566
|
+
function hashCodemap(codemap) {
|
|
567
|
+
const data = JSON.stringify({
|
|
568
|
+
packages: codemap.packages.map(p => ({ name: p.name, deps: p.dependencies })),
|
|
569
|
+
entryPoints: codemap.entryPoints.map(e => e.path),
|
|
570
|
+
});
|
|
571
|
+
return createHash('sha256').update(data).digest('hex');
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Format codemap structure as Mermaid diagram
|
|
575
|
+
*/
|
|
576
|
+
export function formatCodemapAsMermaid(codemap) {
|
|
577
|
+
const lines = ['graph TD'];
|
|
578
|
+
// Add packages
|
|
579
|
+
for (const pkg of codemap.packages) {
|
|
580
|
+
const safeId = pkg.name.replace(/[@/\-]/g, '_');
|
|
581
|
+
lines.push(` ${safeId}["${pkg.name}"]`);
|
|
582
|
+
}
|
|
583
|
+
// Add dependencies
|
|
584
|
+
for (const pkg of codemap.packages) {
|
|
585
|
+
const sourceId = pkg.name.replace(/[@/\-]/g, '_');
|
|
586
|
+
for (const dep of pkg.dependencies) {
|
|
587
|
+
// Only include internal dependencies
|
|
588
|
+
const depPkg = codemap.packages.find(p => p.name === dep);
|
|
589
|
+
if (depPkg) {
|
|
590
|
+
const targetId = dep.replace(/[@/\-]/g, '_');
|
|
591
|
+
lines.push(` ${sourceId} --> ${targetId}`);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
return lines.join('\n');
|
|
596
|
+
}
|
|
597
|
+
//# sourceMappingURL=codemap-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemap-bridge.js","sourceRoot":"","sources":["../../src/integration/codemap-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Codemap Bridge Types for Agent Skills Integration
|
|
3
|
+
* @traceability REQ-CM-001, REQ-CM-002, REQ-CM-003, REQ-CM-004
|
|
4
|
+
*/
|
|
5
|
+
import type { Language } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Workspace/package information
|
|
8
|
+
*/
|
|
9
|
+
export interface PackageInfo {
|
|
10
|
+
/** Package name */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Package version */
|
|
13
|
+
version?: string;
|
|
14
|
+
/** Package path relative to workspace root */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Package description */
|
|
17
|
+
description?: string;
|
|
18
|
+
/** Main entry point */
|
|
19
|
+
main?: string;
|
|
20
|
+
/** Export paths */
|
|
21
|
+
exports?: Record<string, string>;
|
|
22
|
+
/** Internal dependencies */
|
|
23
|
+
dependencies: string[];
|
|
24
|
+
/** Dev dependencies */
|
|
25
|
+
devDependencies?: string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Directory structure node
|
|
29
|
+
*/
|
|
30
|
+
export interface DirectoryNode {
|
|
31
|
+
/** Directory/file name */
|
|
32
|
+
name: string;
|
|
33
|
+
/** Full path */
|
|
34
|
+
path: string;
|
|
35
|
+
/** Is directory */
|
|
36
|
+
isDirectory: boolean;
|
|
37
|
+
/** Children (if directory) */
|
|
38
|
+
children?: DirectoryNode[];
|
|
39
|
+
/** File language (if file) */
|
|
40
|
+
language?: Language;
|
|
41
|
+
/** Entity count (if file) */
|
|
42
|
+
entityCount?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Entry point information
|
|
46
|
+
*/
|
|
47
|
+
export interface EntryPoint {
|
|
48
|
+
/** Entry point type */
|
|
49
|
+
type: 'cli' | 'library' | 'api' | 'worker' | 'test' | 'config';
|
|
50
|
+
/** File path */
|
|
51
|
+
path: string;
|
|
52
|
+
/** Export name (if applicable) */
|
|
53
|
+
exportName?: string;
|
|
54
|
+
/** Description */
|
|
55
|
+
description?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Framework detection result
|
|
59
|
+
*/
|
|
60
|
+
export interface FrameworkInfo {
|
|
61
|
+
/** Framework name */
|
|
62
|
+
name: string;
|
|
63
|
+
/** Framework version */
|
|
64
|
+
version?: string;
|
|
65
|
+
/** Framework type */
|
|
66
|
+
type: 'frontend' | 'backend' | 'fullstack' | 'build' | 'test' | 'other';
|
|
67
|
+
/** Indicator files */
|
|
68
|
+
indicators: string[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Module export information
|
|
72
|
+
*/
|
|
73
|
+
export interface ModuleExport {
|
|
74
|
+
/** Export name */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Export type */
|
|
77
|
+
type: 'function' | 'class' | 'interface' | 'type' | 'const' | 'enum' | 'namespace' | 'default';
|
|
78
|
+
/** Is re-export */
|
|
79
|
+
isReExport: boolean;
|
|
80
|
+
/** Source file */
|
|
81
|
+
sourceFile: string;
|
|
82
|
+
/** Line number */
|
|
83
|
+
line?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Module import information
|
|
87
|
+
*/
|
|
88
|
+
export interface ModuleImport {
|
|
89
|
+
/** Import source */
|
|
90
|
+
source: string;
|
|
91
|
+
/** Is external (node_modules) */
|
|
92
|
+
isExternal: boolean;
|
|
93
|
+
/** Imported items */
|
|
94
|
+
items: string[];
|
|
95
|
+
/** Is type-only import */
|
|
96
|
+
isTypeOnly?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Complete module analysis
|
|
100
|
+
*/
|
|
101
|
+
export interface ModuleAnalysisResult {
|
|
102
|
+
/** Module path */
|
|
103
|
+
path: string;
|
|
104
|
+
/** Module name */
|
|
105
|
+
name: string;
|
|
106
|
+
/** Exports */
|
|
107
|
+
exports: ModuleExport[];
|
|
108
|
+
/** Imports */
|
|
109
|
+
imports: ModuleImport[];
|
|
110
|
+
/** Entity count by type */
|
|
111
|
+
entityCounts: Record<string, number>;
|
|
112
|
+
/** Lines of code */
|
|
113
|
+
linesOfCode?: number;
|
|
114
|
+
/** Complexity score */
|
|
115
|
+
complexity?: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Codemap document structure
|
|
119
|
+
*/
|
|
120
|
+
export interface CodemapDocument {
|
|
121
|
+
/** Document type */
|
|
122
|
+
type: 'index' | 'frontend' | 'backend' | 'packages' | 'database' | 'integrations' | 'workers';
|
|
123
|
+
/** Document title */
|
|
124
|
+
title: string;
|
|
125
|
+
/** Document content (Markdown) */
|
|
126
|
+
content: string;
|
|
127
|
+
/** Related packages */
|
|
128
|
+
packages?: string[];
|
|
129
|
+
/** Last updated */
|
|
130
|
+
updatedAt: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Complete codemap
|
|
134
|
+
*/
|
|
135
|
+
export interface Codemap {
|
|
136
|
+
/** Project name */
|
|
137
|
+
projectName: string;
|
|
138
|
+
/** Project version */
|
|
139
|
+
projectVersion?: string;
|
|
140
|
+
/** Generation timestamp */
|
|
141
|
+
generatedAt: string;
|
|
142
|
+
/** Documents */
|
|
143
|
+
documents: CodemapDocument[];
|
|
144
|
+
/** Package structure */
|
|
145
|
+
packages: PackageInfo[];
|
|
146
|
+
/** Entry points */
|
|
147
|
+
entryPoints: EntryPoint[];
|
|
148
|
+
/** Detected frameworks */
|
|
149
|
+
frameworks: FrameworkInfo[];
|
|
150
|
+
/** Directory structure (top-level) */
|
|
151
|
+
structure: DirectoryNode;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Codemap diff result
|
|
155
|
+
*/
|
|
156
|
+
export interface CodemapDiff {
|
|
157
|
+
/** Previous codemap hash */
|
|
158
|
+
previousHash: string;
|
|
159
|
+
/** Current codemap hash */
|
|
160
|
+
currentHash: string;
|
|
161
|
+
/** Diff percentage */
|
|
162
|
+
diffPercentage: number;
|
|
163
|
+
/** Added packages */
|
|
164
|
+
addedPackages: string[];
|
|
165
|
+
/** Removed packages */
|
|
166
|
+
removedPackages: string[];
|
|
167
|
+
/** Modified packages */
|
|
168
|
+
modifiedPackages: string[];
|
|
169
|
+
/** Added entry points */
|
|
170
|
+
addedEntryPoints: string[];
|
|
171
|
+
/** Removed entry points */
|
|
172
|
+
removedEntryPoints: string[];
|
|
173
|
+
/** Major changes description */
|
|
174
|
+
majorChanges: string[];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Codemap bridge configuration
|
|
178
|
+
*/
|
|
179
|
+
export interface CodemapBridgeConfig {
|
|
180
|
+
/** Output directory */
|
|
181
|
+
outputDir: string;
|
|
182
|
+
/** Include tests */
|
|
183
|
+
includeTests: boolean;
|
|
184
|
+
/** Include node_modules */
|
|
185
|
+
includeNodeModules: boolean;
|
|
186
|
+
/** Max directory depth */
|
|
187
|
+
maxDepth: number;
|
|
188
|
+
/** Diff threshold for user approval */
|
|
189
|
+
diffThreshold: number;
|
|
190
|
+
/** Report output path */
|
|
191
|
+
reportOutputPath: string;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Default codemap bridge configuration
|
|
195
|
+
*/
|
|
196
|
+
export declare const DEFAULT_CODEMAP_BRIDGE_CONFIG: CodemapBridgeConfig;
|
|
197
|
+
/**
|
|
198
|
+
* Codemap skill bridge interface
|
|
199
|
+
*/
|
|
200
|
+
export interface CodemapBridge {
|
|
201
|
+
/**
|
|
202
|
+
* Analyze repository structure
|
|
203
|
+
* @param rootPath Root path to analyze
|
|
204
|
+
* @returns Package and structure information
|
|
205
|
+
*/
|
|
206
|
+
analyzeStructure(rootPath: string): Promise<{
|
|
207
|
+
packages: PackageInfo[];
|
|
208
|
+
structure: DirectoryNode;
|
|
209
|
+
entryPoints: EntryPoint[];
|
|
210
|
+
frameworks: FrameworkInfo[];
|
|
211
|
+
}>;
|
|
212
|
+
/**
|
|
213
|
+
* Analyze a specific module
|
|
214
|
+
* @param modulePath Path to the module
|
|
215
|
+
* @returns Module analysis result
|
|
216
|
+
*/
|
|
217
|
+
analyzeModule(modulePath: string): Promise<ModuleAnalysisResult>;
|
|
218
|
+
/**
|
|
219
|
+
* Generate codemap
|
|
220
|
+
* @param rootPath Root path
|
|
221
|
+
* @returns Generated codemap
|
|
222
|
+
*/
|
|
223
|
+
generateCodemap(rootPath: string): Promise<Codemap>;
|
|
224
|
+
/**
|
|
225
|
+
* Compare codemaps
|
|
226
|
+
* @param previous Previous codemap
|
|
227
|
+
* @param current Current codemap
|
|
228
|
+
* @returns Diff result
|
|
229
|
+
*/
|
|
230
|
+
compareCodemaps(previous: Codemap, current: Codemap): CodemapDiff;
|
|
231
|
+
/**
|
|
232
|
+
* Write codemap to files
|
|
233
|
+
* @param codemap Codemap to write
|
|
234
|
+
* @param outputDir Output directory
|
|
235
|
+
*/
|
|
236
|
+
writeCodemap(codemap: Codemap, outputDir?: string): Promise<void>;
|
|
237
|
+
/**
|
|
238
|
+
* Format codemap as Markdown
|
|
239
|
+
* @param codemap Codemap to format
|
|
240
|
+
* @returns Markdown string
|
|
241
|
+
*/
|
|
242
|
+
formatAsMarkdown(codemap: Codemap): string;
|
|
243
|
+
/**
|
|
244
|
+
* Format diff as report
|
|
245
|
+
* @param diff Diff result
|
|
246
|
+
* @returns Report string
|
|
247
|
+
*/
|
|
248
|
+
formatDiffReport(diff: CodemapDiff): string;
|
|
249
|
+
/**
|
|
250
|
+
* Get configuration
|
|
251
|
+
*/
|
|
252
|
+
getConfig(): CodemapBridgeConfig;
|
|
253
|
+
/**
|
|
254
|
+
* Update configuration
|
|
255
|
+
* @param config Partial config to update
|
|
256
|
+
*/
|
|
257
|
+
updateConfig(config: Partial<CodemapBridgeConfig>): void;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=codemap-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemap-types.d.ts","sourceRoot":"","sources":["../../src/integration/codemap-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Codemap Bridge Types for Agent Skills Integration
|
|
3
|
+
* @traceability REQ-CM-001, REQ-CM-002, REQ-CM-003, REQ-CM-004
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default codemap bridge configuration
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_CODEMAP_BRIDGE_CONFIG = {
|
|
9
|
+
outputDir: 'docs/CODEMAPS',
|
|
10
|
+
includeTests: false,
|
|
11
|
+
includeNodeModules: false,
|
|
12
|
+
maxDepth: 5,
|
|
13
|
+
diffThreshold: 30,
|
|
14
|
+
reportOutputPath: '.reports/codemap-diff.txt',
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=codemap-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemap-types.js","sourceRoot":"","sources":["../../src/integration/codemap-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0NH;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,SAAS,EAAE,eAAe;IAC1B,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,KAAK;IACzB,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,2BAA2B;CAC9C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Integration exports for codegraph package
|
|
3
|
+
* @module @nahisaho/musubix-codegraph/integration
|
|
4
|
+
*/
|
|
5
|
+
export { createCodemapBridge, formatCodemapAsMermaid, } from './codemap-bridge.js';
|
|
6
|
+
export type { PackageInfo, DirectoryNode, EntryPoint, FrameworkInfo, ModuleExport, ModuleImport, ModuleAnalysisResult, CodemapDocument, Codemap, CodemapDiff, CodemapBridgeConfig, CodemapBridge, } from './codemap-types.js';
|
|
7
|
+
export { DEFAULT_CODEMAP_BRIDGE_CONFIG, } from './codemap-types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Integration exports for codegraph package
|
|
3
|
+
* @module @nahisaho/musubix-codegraph/integration
|
|
4
|
+
*/
|
|
5
|
+
// Codemap Bridge
|
|
6
|
+
export { createCodemapBridge, formatCodemapAsMermaid, } from './codemap-bridge.js';
|
|
7
|
+
export { DEFAULT_CODEMAP_BRIDGE_CONFIG, } from './codemap-types.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EACL,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nahisaho/musubix-codegraph",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.3",
|
|
4
4
|
"description": "MUSUBIX CodeGraph - Multi-language Code Graph Analysis Engine supporting 16 programming languages with PR generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,14 +39,6 @@
|
|
|
39
39
|
"dist",
|
|
40
40
|
"README.md"
|
|
41
41
|
],
|
|
42
|
-
"scripts": {
|
|
43
|
-
"build": "tsc -p tsconfig.json",
|
|
44
|
-
"test": "vitest run",
|
|
45
|
-
"test:watch": "vitest",
|
|
46
|
-
"test:coverage": "vitest run --coverage",
|
|
47
|
-
"lint": "eslint src --ext .ts",
|
|
48
|
-
"clean": "rm -rf dist"
|
|
49
|
-
},
|
|
50
42
|
"keywords": [
|
|
51
43
|
"codegraph",
|
|
52
44
|
"ast",
|
|
@@ -97,5 +89,13 @@
|
|
|
97
89
|
"@types/node": "^20.0.0",
|
|
98
90
|
"typescript": "^5.3.0",
|
|
99
91
|
"vitest": "^4.0.16"
|
|
92
|
+
},
|
|
93
|
+
"scripts": {
|
|
94
|
+
"build": "tsc -p tsconfig.json",
|
|
95
|
+
"test": "vitest run",
|
|
96
|
+
"test:watch": "vitest",
|
|
97
|
+
"test:coverage": "vitest run --coverage",
|
|
98
|
+
"lint": "eslint src --ext .ts",
|
|
99
|
+
"clean": "rm -rf dist"
|
|
100
100
|
}
|
|
101
|
-
}
|
|
101
|
+
}
|