sigmap 6.6.4 → 6.7.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.
- package/CHANGELOG.md +19 -0
- package/README.md +13 -9
- package/gen-context.js +2 -2
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/discovery/source-root-resolver.js +14 -1
- package/src/mcp/server.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,25 @@ Format: [Semantic Versioning](https://semver.org/)
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## [6.7.0] — 2026-05-03
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **2-hop graph traversal with decay** — Extended graph-boosted retrieval from 1-hop (0.40 boost) to 2-hop (0.15 boost for transitive dependencies), improving retrieval accuracy by catching cross-module architecture patterns. Exported `GRAPH_BOOST_AMOUNTS` constants for transparency.
|
|
18
|
+
- **Hub suppression** — Automatically suppress common utility files (`utils/`, `helpers/`, `shared/`, `common/`, `index`) and high-fanout files (>20% of codebase) from graph boosts to reduce false-positive boosts and improve ranking signal quality.
|
|
19
|
+
- **Incremental signature cache** — Introduced `sigCache: true` config key to enable incremental extraction, caching extracted signatures by mtime. Only re-extracts changed files on subsequent runs, dramatically improving performance on large codebases.
|
|
20
|
+
- **Cache health statistics** — Display cache file size, entry count, and freshness in `--health` output (text and JSON formats) for visibility into cache state and efficiency.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## [6.6.5] — 2026-04-30
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- **Monorepo JVM project detection** — Enhanced source root resolver to detect `src/main/{java,kotlin,scala}` and `app/src/main/{java,kotlin,scala}` in monorepo workspace packages (packages/*, apps/*, services/*, modules/*). Added `src/test/{java,kotlin}` and `app/src/main/scala` to DEEP_PATHS for consistent detection across monorepo and non-monorepo structures.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
13
32
|
## [6.6.4] — 2026-04-29
|
|
14
33
|
|
|
15
34
|
### Changed
|
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
[](package.json)
|
|
13
13
|
[](LICENSE)
|
|
14
14
|
[](https://github.com/manojmallick/sigmap/stargazers)
|
|
15
|
+
[](https://news.ycombinator.com/item?id=47956790)
|
|
15
16
|
|
|
16
17
|
</div>
|
|
17
18
|
|
|
@@ -38,10 +39,10 @@ Works with Copilot, Claude, Cursor, Windsurf, and any LLM.
|
|
|
38
39
|
|
|
39
40
|
## Why SigMap?
|
|
40
41
|
|
|
41
|
-
- **
|
|
42
|
+
- **80.0% hit@5** — right file found in top 5 results (vs 13.6% baseline)
|
|
42
43
|
- **40–98% token reduction** — 2K–4K tokens instead of 80K+
|
|
43
44
|
- **52.2% task success rate** — up from 10% without context
|
|
44
|
-
- **1.
|
|
45
|
+
- **1.68 prompts per task** — down from 2.84
|
|
45
46
|
- **Works with any LLM** — no API key, no cloud, no accounts
|
|
46
47
|
- **Zero npm dependencies** — `npx sigmap` on any machine
|
|
47
48
|
|
|
@@ -75,19 +76,22 @@ Ask → Rank → Context → Validate → Judge → Learn
|
|
|
75
76
|
## Benchmark
|
|
76
77
|
|
|
77
78
|
```
|
|
78
|
-
Benchmark : sigmap-v6.
|
|
79
|
-
Date : 2026-04-
|
|
79
|
+
Benchmark : sigmap-v6.6-main
|
|
80
|
+
Date : 2026-04-30
|
|
80
81
|
|
|
81
|
-
Hit@5 :
|
|
82
|
-
Prompt reduction : 41.
|
|
82
|
+
Hit@5 : 80.0% (baseline 13.6% — 5.9× lift)
|
|
83
|
+
Prompt reduction : 41.0%
|
|
83
84
|
Task success : 52.2% (baseline 10%)
|
|
84
|
-
Prompts / task : 1.
|
|
85
|
-
Token reduction: 40–98% (avg 96.
|
|
85
|
+
Prompts / task : 1.68 (baseline 2.84)
|
|
86
|
+
Token reduction: 40–98% (avg 96.8% across 18 real repos)
|
|
86
87
|
```
|
|
87
88
|
|
|
88
89
|
Measured on 90 coding tasks across 18 real public repos. No LLM API — fully reproducible.
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
**Resources:**
|
|
92
|
+
- [Full methodology →](https://manojmallick.github.io/sigmap/guide/benchmark.html)
|
|
93
|
+
- [Benchmark suite (GitHub)](https://github.com/manojmallick/sigmap-benchmark-suite) — scripts, tasks, and raw data
|
|
94
|
+
- [Benchmark data (Zenodo)](https://zenodo.org/records/19898842) — archived results for reproducibility
|
|
91
95
|
|
|
92
96
|
<div align="center">
|
|
93
97
|
<img src="docs/comparison-chart.svg" alt="SigMap benchmark — before vs after across 3 RAG quality metrics" width="700" />
|
package/gen-context.js
CHANGED
|
@@ -5387,7 +5387,7 @@ __factories["./src/mcp/server"] = function(module, exports) {
|
|
|
5387
5387
|
|
|
5388
5388
|
const SERVER_INFO = {
|
|
5389
5389
|
name: 'sigmap',
|
|
5390
|
-
version: '6.
|
|
5390
|
+
version: '6.7.0',
|
|
5391
5391
|
description: 'SigMap MCP server — code signatures on demand',
|
|
5392
5392
|
};
|
|
5393
5393
|
|
|
@@ -7855,7 +7855,7 @@ const path = require('path');
|
|
|
7855
7855
|
const os = require('os');
|
|
7856
7856
|
const { execSync } = require('child_process');
|
|
7857
7857
|
|
|
7858
|
-
const VERSION = '6.
|
|
7858
|
+
const VERSION = '6.7.0';
|
|
7859
7859
|
const MARKER = '\n\n## Auto-generated signatures\n<!-- Updated by gen-context.js -->\n';
|
|
7860
7860
|
|
|
7861
7861
|
function requireSourceOrBundled(key) {
|
package/package.json
CHANGED
|
@@ -110,6 +110,18 @@ function _enumerateCandidates(cwd, isMonorepo, ignorePatterns, excludeList) {
|
|
|
110
110
|
}
|
|
111
111
|
// Also consider the package root itself
|
|
112
112
|
candidates.push({ name: `${top}/${pkg.name}`, full: path.join(topFull, pkg.name) });
|
|
113
|
+
|
|
114
|
+
// JVM project structures in monorepo packages (Java, Kotlin, Scala)
|
|
115
|
+
for (const jvmLang of ['java', 'kotlin', 'scala']) {
|
|
116
|
+
const srcMainJvm = path.join(topFull, pkg.name, 'src', 'main', jvmLang);
|
|
117
|
+
if (fs.existsSync(srcMainJvm)) {
|
|
118
|
+
candidates.push({ name: `${top}/${pkg.name}/src/main/${jvmLang}`, full: srcMainJvm });
|
|
119
|
+
}
|
|
120
|
+
const appSrcMainJvm = path.join(topFull, pkg.name, 'app', 'src', 'main', jvmLang);
|
|
121
|
+
if (fs.existsSync(appSrcMainJvm)) {
|
|
122
|
+
candidates.push({ name: `${top}/${pkg.name}/app/src/main/${jvmLang}`, full: appSrcMainJvm });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
113
125
|
}
|
|
114
126
|
} catch (_) {}
|
|
115
127
|
}
|
|
@@ -118,7 +130,8 @@ function _enumerateCandidates(cwd, isMonorepo, ignorePatterns, excludeList) {
|
|
|
118
130
|
// Deep paths known by language/framework (e.g. src/main/java, src-tauri/src)
|
|
119
131
|
const DEEP_PATHS = [
|
|
120
132
|
'src/main/java','src/main/kotlin','src/main/scala',
|
|
121
|
-
'src-tauri/src','Sources/App','app/src/main/java','app/src/main/kotlin',
|
|
133
|
+
'src-tauri/src','Sources/App','app/src/main/java','app/src/main/kotlin','app/src/main/scala',
|
|
134
|
+
'src/test/java','src/test/kotlin',
|
|
122
135
|
];
|
|
123
136
|
for (const dp of DEEP_PATHS) {
|
|
124
137
|
const full = path.join(cwd, dp);
|
package/src/mcp/server.js
CHANGED