@nahisaho/musubix-codegraph 3.6.0 → 3.8.0

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.
@@ -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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"}