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 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
  [![Zero deps](https://img.shields.io/badge/dependencies-zero-22c55e)](package.json)
13
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-7c6af7.svg)](LICENSE)
14
14
  [![GitHub Stars](https://img.shields.io/github/stars/manojmallick/sigmap?style=flat&color=f59e0b&logo=github)](https://github.com/manojmallick/sigmap/stargazers)
15
+ [![Hacker News](https://img.shields.io/badge/Hacker%20News-Discussion-orange?logo=ycombinator)](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
- - **81.1% hit@5** — right file found in top 5 results (vs 13.6% baseline)
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.69 prompts per task** — down from 2.84
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.5-main
79
- Date : 2026-04-25
79
+ Benchmark : sigmap-v6.6-main
80
+ Date : 2026-04-30
80
81
 
81
- Hit@5 : 81.1% (baseline 13.6% — 6.0× lift)
82
- Prompt reduction : 41.4%
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.69 (baseline 2.84)
85
- Token reduction: 40–98% (avg 96.9% across 18 real repos)
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
- [Full methodology →](https://manojmallick.github.io/sigmap/guide/benchmark.html)
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.6.4',
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.6.4';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigmap",
3
- "version": "6.6.4",
3
+ "version": "6.7.0",
4
4
  "description": "Zero-dependency AI context engine — 97% token reduction. No npm install. Runs on Node 18+.",
5
5
  "main": "gen-context.js",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigmap-cli",
3
- "version": "6.6.4",
3
+ "version": "6.7.0",
4
4
  "description": "SigMap CLI wrapper — thin adapter for programmatic CLI invocation",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigmap-core",
3
- "version": "6.6.4",
3
+ "version": "6.7.0",
4
4
  "description": "SigMap core library — zero-dependency code signature extraction, retrieval, and security scanning",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -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
@@ -18,7 +18,7 @@ const { readContext, searchSignatures, getMap, createCheckpoint, getRouting, exp
18
18
 
19
19
  const SERVER_INFO = {
20
20
  name: 'sigmap',
21
- version: '6.6.4',
21
+ version: '6.7.0',
22
22
  description: 'SigMap MCP server — code signatures on demand',
23
23
  };
24
24