sigmap 6.10.2 → 6.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/gen-context.js +84 -6
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/mcp/server.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,27 @@ Format: [Semantic Versioning](https://semver.org/)
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## [6.10.4] — 2026-05-11
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **Bundled MCP tools extractImports export** — Fixed `extractImports` function not being exported from the import-graph factory in bundled gen-context.js, which caused `explain_file` (imports/callers) and `get_impact` MCP tools to fail with "extractImports is not a function" when running via `--mcp` server. Added comprehensive tests to prevent regression.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## [6.10.3] — 2026-05-11
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **MCP tools import graph analysis** — Fixed `extractImports` not being exported in bundled gen-context.js, which caused `explain_file` (imports/callers), `get_impact`, and `get_routing` tools to fail with "extractImports is not a function" error. Now all three tools correctly analyze file dependencies and impact blast radius.
|
|
26
|
+
- **Contributor attribution** — Added direct author commits for Denis Solonenko (GDScript extractor), Sean Campbell (Willow adapter, Python AST extractor), kumamaki (Claude adapter per-module), and Matt Van Horn (R language support) so they appear in GitHub contributors graph.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Auto-sync workflow** — Added GitHub Actions workflow to automatically sync `develop` branch with `main` after each release, preventing future branch drift.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
13
34
|
## [6.10.2] — 2026-05-11
|
|
14
35
|
|
|
15
36
|
### Added
|
package/gen-context.js
CHANGED
|
@@ -729,6 +729,84 @@ __factories["./src/extractors/go"] = function(module, exports) {
|
|
|
729
729
|
|
|
730
730
|
};
|
|
731
731
|
|
|
732
|
+
// ── ./src/extractors/gdscript ──
|
|
733
|
+
__factories["./src/extractors/gdscript"] = function(module, exports) {
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* Extract signatures from Godot GDScript source code.
|
|
737
|
+
* @param {string} src - Raw file content
|
|
738
|
+
* @returns {string[]} Array of signature strings
|
|
739
|
+
*/
|
|
740
|
+
|
|
741
|
+
function extract(src) {
|
|
742
|
+
if (!src || typeof src !== 'string') return [];
|
|
743
|
+
const sigs = [];
|
|
744
|
+
|
|
745
|
+
const stripped = src.replace(/#.*$/gm, '');
|
|
746
|
+
|
|
747
|
+
let className = null;
|
|
748
|
+
let baseName = null;
|
|
749
|
+
const addedClasses = new Set();
|
|
750
|
+
|
|
751
|
+
const cm = stripped.match(/^class_name\s+(\w+)(?:\s+extends\s+([\w.]+))?/m);
|
|
752
|
+
if (cm) {
|
|
753
|
+
className = cm[1];
|
|
754
|
+
if (cm[2]) baseName = cm[2];
|
|
755
|
+
}
|
|
756
|
+
if (!baseName) {
|
|
757
|
+
const em = stripped.match(/^extends\s+([\w."/]+)/m);
|
|
758
|
+
if (em) baseName = em[1];
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
if (className) {
|
|
762
|
+
sigs.push(baseName ? `class ${className}(${baseName})` : `class ${className}`);
|
|
763
|
+
addedClasses.add(className);
|
|
764
|
+
} else if (baseName) {
|
|
765
|
+
sigs.push(`extends ${baseName}`);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
const indent = (className || baseName) ? ' ' : '';
|
|
769
|
+
|
|
770
|
+
for (const m of stripped.matchAll(/^signal\s+(\w+)(?:\s*\(([^)]*)\))?/gm)) {
|
|
771
|
+
sigs.push(`${indent}signal ${m[1]}(${normalizeParams(m[2] || '')})`);
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
for (const m of stripped.matchAll(/^enum\s+(\w+)\s*\{([^}]*)\}/gm)) {
|
|
775
|
+
const members = m[2]
|
|
776
|
+
.split(',')
|
|
777
|
+
.map((s) => s.trim().split(/\s*=/)[0].trim())
|
|
778
|
+
.filter(Boolean);
|
|
779
|
+
sigs.push(`${indent}enum ${m[1]} { ${members.slice(0, 6).join(', ')} }`);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
let constCount = 0;
|
|
783
|
+
for (const m of stripped.matchAll(/^(?:const|var)\s+([A-Z_]\w*)\s*(?::\s*\w+)?\s*=/gm)) {
|
|
784
|
+
if (constCount++ > 15) break;
|
|
785
|
+
sigs.push(`${indent}const ${m[1]}`);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
for (const m of stripped.matchAll(/^(?:static\s+)?func\s+(_\w+|\w+)\s*\(([^)]*)\)(?:\s*->\s*(\w+))?/gm)) {
|
|
789
|
+
if (m[1].startsWith('_')) continue;
|
|
790
|
+
const retStr = m[3] ? ` → ${m[3]}` : '';
|
|
791
|
+
sigs.push(`${indent}func ${m[1]}(${normalizeParams(m[2])})${retStr}`);
|
|
792
|
+
if (sigs.length > 30) break;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
return sigs;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
function normalizeParams(raw) {
|
|
799
|
+
if (!raw) return '';
|
|
800
|
+
return raw
|
|
801
|
+
.split(',')
|
|
802
|
+
.map((p) => p.trim())
|
|
803
|
+
.join(', ');
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
module.exports = { extract };
|
|
807
|
+
|
|
808
|
+
};
|
|
809
|
+
|
|
732
810
|
// ── ./src/extractors/html ──
|
|
733
811
|
__factories["./src/extractors/html"] = function(module, exports) {
|
|
734
812
|
|
|
@@ -4381,7 +4459,7 @@ __factories["./src/map/class-hierarchy"] = function(module, exports) {
|
|
|
4381
4459
|
.join('\n');
|
|
4382
4460
|
}
|
|
4383
4461
|
|
|
4384
|
-
module.exports = { analyze };
|
|
4462
|
+
module.exports = { analyze, extractImports };
|
|
4385
4463
|
|
|
4386
4464
|
};
|
|
4387
4465
|
|
|
@@ -4532,9 +4610,9 @@ __factories["./src/map/import-graph"] = function(module, exports) {
|
|
|
4532
4610
|
|
|
4533
4611
|
return lines.join('\n');
|
|
4534
4612
|
}
|
|
4535
|
-
|
|
4536
|
-
module.exports = { analyze };
|
|
4537
|
-
|
|
4613
|
+
|
|
4614
|
+
module.exports = { analyze, extractImports };
|
|
4615
|
+
|
|
4538
4616
|
};
|
|
4539
4617
|
|
|
4540
4618
|
// ── ./src/map/route-table ──
|
|
@@ -5529,7 +5607,7 @@ __factories["./src/mcp/server"] = function(module, exports) {
|
|
|
5529
5607
|
|
|
5530
5608
|
const SERVER_INFO = {
|
|
5531
5609
|
name: 'sigmap',
|
|
5532
|
-
version: '6.10.
|
|
5610
|
+
version: '6.10.4',
|
|
5533
5611
|
description: 'SigMap MCP server — code signatures on demand',
|
|
5534
5612
|
};
|
|
5535
5613
|
|
|
@@ -8156,7 +8234,7 @@ const path = require('path');
|
|
|
8156
8234
|
const os = require('os');
|
|
8157
8235
|
const { execSync } = require('child_process');
|
|
8158
8236
|
|
|
8159
|
-
const VERSION = '6.10.
|
|
8237
|
+
const VERSION = '6.10.4';
|
|
8160
8238
|
const MARKER = '\n\n## Auto-generated signatures\n<!-- Updated by gen-context.js -->\n';
|
|
8161
8239
|
|
|
8162
8240
|
function requireSourceOrBundled(key) {
|
package/package.json
CHANGED
package/src/mcp/server.js
CHANGED