sigmap 8.11.0 → 8.13.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/AGENTS.md +99 -80
- package/CHANGELOG.md +18 -0
- package/README.md +3 -3
- package/gen-context.js +516 -10
- package/llms-full.txt +13 -4
- package/llms.txt +3 -3
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/graph/blast-radius.js +132 -0
- package/src/mcp/handlers.js +23 -1
- package/src/mcp/server.js +3 -2
- package/src/mcp/tools.js +34 -5
- package/src/review/pr-evidence.js +17 -0
- package/src/review/review-pr.js +23 -1
- package/src/wiki/generate.js +250 -0
package/AGENTS.md
CHANGED
|
@@ -33,21 +33,16 @@ Always run `sigmap ask` (or `sigmap --query`) before searching for files relevan
|
|
|
33
33
|
src/extractors/python_ast.py ← ast
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
## changes (last 5 commits —
|
|
37
|
-
```
|
|
38
|
-
src/
|
|
39
|
-
src/
|
|
40
|
-
src/
|
|
41
|
-
src/
|
|
42
|
-
src/
|
|
43
|
-
src/
|
|
44
|
-
src/
|
|
45
|
-
src/
|
|
46
|
-
src/judge/judge-engine.js +extracts +claimGrounding ~groundedness ~judge
|
|
47
|
-
src/plan/planner.js +createPlan ~createPlan
|
|
48
|
-
src/review/pr-evidence.js ~formatPrEvidenceMarkdown
|
|
49
|
-
src/review/review-pr.js ~reviewPr
|
|
50
|
-
src/util/truncate.js +members +capWithNotice +block +capMembersWithNotice
|
|
36
|
+
## changes (last 5 commits — 1 second ago)
|
|
37
|
+
```
|
|
38
|
+
src/format/terse.js +splitAnchor +encodeTerseSig +encodeTerseSigs +_tokens
|
|
39
|
+
src/graph/blast-radius.js +tierFor +_normRel +_bfs +methodBlastRadius
|
|
40
|
+
src/mcp/handlers.js +that +getMethodImpact ~queryContext ~squeezeOutput
|
|
41
|
+
src/mcp/server.js ~dispatch
|
|
42
|
+
src/mcp/tools.js +it
|
|
43
|
+
src/review/pr-evidence.js ~buildPrEvidence ~formatPrEvidenceMarkdown
|
|
44
|
+
src/review/review-pr.js ~isSource ~reviewPr
|
|
45
|
+
src/wiki/generate.js +_rel +_pct +_identity +_modules
|
|
51
46
|
```
|
|
52
47
|
|
|
53
48
|
## packages
|
|
@@ -179,13 +174,99 @@ code-fence ---
|
|
|
179
174
|
|
|
180
175
|
## src
|
|
181
176
|
|
|
177
|
+
### src/config/defaults.js
|
|
178
|
+
```
|
|
179
|
+
module.exports = { DEFAULTS } :161-161
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### src/format/terse.js
|
|
183
|
+
```
|
|
184
|
+
module.exports = { encodeTerseSig, encodeTerseSigs, measureTerse, splitAnchor } :86-86
|
|
185
|
+
function splitAnchor(sig) → { text: string, suffix: s :25-30
|
|
186
|
+
function encodeTerseSig(sig) → string :37-50
|
|
187
|
+
function encodeTerseSigs(sigs) → string[] :57-59
|
|
188
|
+
function _tokens(sigs) :62-64
|
|
189
|
+
function measureTerse(sigsList) → { beforeTokens: number, a :72-84
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### src/graph/blast-radius.js
|
|
193
|
+
```
|
|
194
|
+
module.exports = { methodBlastRadius, tierFor, DIRECT_WEIGHT, TRANSITIVE_WEIGHT } :132-132
|
|
195
|
+
function tierFor(score) :25-31
|
|
196
|
+
function _normRel(p) :33-35
|
|
197
|
+
function _bfs(seedIds, reverse, maxDepth) :38-60
|
|
198
|
+
function methodBlastRadius(changedFiles, cwd, opts = {}) → { * available: boolean, * :78-130
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### src/mcp/handlers.js
|
|
202
|
+
```
|
|
203
|
+
module.exports = { readContext, searchSignatures, getMap, createCheckpoint, getRouting, explainFile, listModules, queryContext, getMethodImpact, getImpact, getLines, readMemory, getCalleeSignatures, notifyFileCreated, notifySymbolAdded, notifyFileDeleted, getDiffContext, getArchitectureOverview, verifySuggestion, squeezeOutput } :966-966
|
|
204
|
+
function _readContextFiles(cwd) :10-17
|
|
205
|
+
function readContext(args, cwd) :36-66
|
|
206
|
+
function searchSignatures(args, cwd) :74-100
|
|
207
|
+
function getMap(args, cwd) :108-131
|
|
208
|
+
function createCheckpoint(args, cwd) :143-215
|
|
209
|
+
function getRouting(args, cwd) :224-261
|
|
210
|
+
function explainFile(args, cwd) :269-356
|
|
211
|
+
function listModules(args, cwd) :364-403
|
|
212
|
+
function queryContext(args, cwd) :411-429
|
|
213
|
+
function getMethodImpact(args, cwd) :437-451
|
|
214
|
+
function getImpact(args, cwd) :459-471
|
|
215
|
+
function getLines(args, cwd) :480-528
|
|
216
|
+
function readMemory(args, cwd) :536-571
|
|
217
|
+
function getCalleeSignatures(args, cwd) :580-625
|
|
218
|
+
function _pkgVersion(cwd) :632-635
|
|
219
|
+
function notifyFileCreated(args, cwd) :639-661
|
|
220
|
+
function notifySymbolAdded(args, cwd) :664-684
|
|
221
|
+
function notifyFileDeleted(args, cwd) :687-701
|
|
222
|
+
function _changedFiles(cwd, args) :707-719
|
|
223
|
+
function getDiffContext(args, cwd) :728-799
|
|
224
|
+
function getArchitectureOverview(args, cwd) :808-876
|
|
225
|
+
function verifySuggestion(args, cwd) :886-921
|
|
226
|
+
function squeezeOutput(args, cwd) :931-964
|
|
227
|
+
```
|
|
228
|
+
|
|
182
229
|
### src/mcp/server.js
|
|
183
230
|
```
|
|
184
|
-
module.exports = { start } :
|
|
231
|
+
module.exports = { start } :141-141
|
|
185
232
|
function respond(id, result) :28-30
|
|
186
233
|
function respondError(id, code, message) :32-36
|
|
187
|
-
function dispatch(msg, cwd) :41-
|
|
188
|
-
function start(cwd) :
|
|
234
|
+
function dispatch(msg, cwd) :41-108
|
|
235
|
+
function start(cwd) :113-139
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### src/mcp/tools.js
|
|
239
|
+
```
|
|
240
|
+
module.exports = { TOOLS } :392-392
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### src/review/pr-evidence.js
|
|
244
|
+
```
|
|
245
|
+
module.exports = { buildPrEvidence, formatPrEvidenceMarkdown } :157-157
|
|
246
|
+
function buildPrEvidence(changedFiles, cwd, opts = {}) → { scope:string, files:obj :31-84
|
|
247
|
+
function formatPrEvidenceMarkdown(evidence, opts = {}) :89-155
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### src/review/review-pr.js
|
|
251
|
+
```
|
|
252
|
+
module.exports = { reviewPr, SECURITY_PATTERNS, GOD_NODE_THRESHOLD, SCOPE_DIR_THRESHOLD } :150-150
|
|
253
|
+
function isTestFile(p) :32-34
|
|
254
|
+
function isSource(p) :35-37
|
|
255
|
+
function reviewPr(changedFiles, cwd, opts = {}) → { findings: object[], bla :48-148
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### src/wiki/generate.js
|
|
259
|
+
```
|
|
260
|
+
module.exports = { buildWiki, renderWikiMarkdown } :250-250
|
|
261
|
+
function _rel(cwd, f) :22-24
|
|
262
|
+
function _pct(fraction) :26-28
|
|
263
|
+
function _identity(cwd) :31-37
|
|
264
|
+
function _modules(index) :40-67
|
|
265
|
+
function _flow(cwd) :70-97
|
|
266
|
+
function _conventions(cwd, index) :100-117
|
|
267
|
+
function _health(cwd) :119-127
|
|
268
|
+
function buildWiki(cwd, opts = {}) → { data: object, markdown: :137-162
|
|
269
|
+
function renderWikiMarkdown(data, sigmapVersion) → string :171-248
|
|
189
270
|
```
|
|
190
271
|
|
|
191
272
|
### src/analysis/coverage-score.js
|
|
@@ -225,11 +306,6 @@ function getChangedFiles(files, cache) → { changed: string[], unch :71-88
|
|
|
225
306
|
function updateCacheEntries(cache, extracted) :96-103
|
|
226
307
|
```
|
|
227
308
|
|
|
228
|
-
### src/config/defaults.js
|
|
229
|
-
```
|
|
230
|
-
module.exports = { DEFAULTS } :161-161
|
|
231
|
-
```
|
|
232
|
-
|
|
233
309
|
### src/config/loader.js
|
|
234
310
|
```
|
|
235
311
|
module.exports = { loadConfig, loadBaseConfig } :313-313
|
|
@@ -904,16 +980,6 @@ function detectVersion(cwd) :13-19
|
|
|
904
980
|
function format(context, cwd, writtenFiles, sigmapVersion) :21-69
|
|
905
981
|
```
|
|
906
982
|
|
|
907
|
-
### src/format/terse.js
|
|
908
|
-
```
|
|
909
|
-
module.exports = { encodeTerseSig, encodeTerseSigs, measureTerse, splitAnchor } :86-86
|
|
910
|
-
function splitAnchor(sig) → { text: string, suffix: s :25-30
|
|
911
|
-
function encodeTerseSig(sig) → string :37-50
|
|
912
|
-
function encodeTerseSigs(sigs) → string[] :57-59
|
|
913
|
-
function _tokens(sigs) :62-64
|
|
914
|
-
function measureTerse(sigsList) → { beforeTokens: number, a :72-84
|
|
915
|
-
```
|
|
916
|
-
|
|
917
983
|
### src/format/usage-guidance.js
|
|
918
984
|
```
|
|
919
985
|
module.exports = { usageBlock } :28-28
|
|
@@ -1084,33 +1150,6 @@ function shouldSkipFile(rel) :18-21
|
|
|
1084
1150
|
function analyze(files, cwd) :23-125
|
|
1085
1151
|
```
|
|
1086
1152
|
|
|
1087
|
-
### src/mcp/handlers.js
|
|
1088
|
-
```
|
|
1089
|
-
module.exports = { readContext, searchSignatures, getMap, createCheckpoint, getRouting, explainFile, listModules, queryContext, getImpact, getLines, readMemory, getCalleeSignatures, notifyFileCreated, notifySymbolAdded, notifyFileDeleted, getDiffContext, getArchitectureOverview, verifySuggestion, squeezeOutput } :944-944
|
|
1090
|
-
function _readContextFiles(cwd) :10-17
|
|
1091
|
-
function readContext(args, cwd) :36-66
|
|
1092
|
-
function searchSignatures(args, cwd) :74-100
|
|
1093
|
-
function getMap(args, cwd) :108-131
|
|
1094
|
-
function createCheckpoint(args, cwd) :143-215
|
|
1095
|
-
function getRouting(args, cwd) :224-261
|
|
1096
|
-
function explainFile(args, cwd) :269-356
|
|
1097
|
-
function listModules(args, cwd) :364-403
|
|
1098
|
-
function queryContext(args, cwd) :411-429
|
|
1099
|
-
function getImpact(args, cwd) :437-449
|
|
1100
|
-
function getLines(args, cwd) :458-506
|
|
1101
|
-
function readMemory(args, cwd) :514-549
|
|
1102
|
-
function getCalleeSignatures(args, cwd) :558-603
|
|
1103
|
-
function _pkgVersion(cwd) :610-613
|
|
1104
|
-
function notifyFileCreated(args, cwd) :617-639
|
|
1105
|
-
function notifySymbolAdded(args, cwd) :642-662
|
|
1106
|
-
function notifyFileDeleted(args, cwd) :665-679
|
|
1107
|
-
function _changedFiles(cwd, args) :685-697
|
|
1108
|
-
function getDiffContext(args, cwd) :706-777
|
|
1109
|
-
function getArchitectureOverview(args, cwd) :786-854
|
|
1110
|
-
function verifySuggestion(args, cwd) :864-899
|
|
1111
|
-
function squeezeOutput(args, cwd) :909-942
|
|
1112
|
-
```
|
|
1113
|
-
|
|
1114
1153
|
### src/mcp/install.js
|
|
1115
1154
|
```
|
|
1116
1155
|
module.exports = { CLIENTS, listClients, installClient, resolveTarget } :142-142
|
|
@@ -1123,11 +1162,6 @@ function _installYaml(filePath, scriptPath) :99-117
|
|
|
1123
1162
|
function installClient(client, opts = {}) → client, label, path, stat :124-140
|
|
1124
1163
|
```
|
|
1125
1164
|
|
|
1126
|
-
### src/mcp/tools.js
|
|
1127
|
-
```
|
|
1128
|
-
module.exports = { TOOLS } :363-363
|
|
1129
|
-
```
|
|
1130
|
-
|
|
1131
1165
|
### src/nudge.js
|
|
1132
1166
|
```
|
|
1133
1167
|
module.exports = { checkStarNudge, readUsage, usagePath, showStarNudge, RUN_THRESHOLD, SUCCESS_THRESHOLD } :92-92
|
|
@@ -1185,21 +1219,6 @@ module.exports = { tokenize, STOP_WORDS } :54-54
|
|
|
1185
1219
|
function tokenize(text, opts) → string[] :31-52
|
|
1186
1220
|
```
|
|
1187
1221
|
|
|
1188
|
-
### src/review/pr-evidence.js
|
|
1189
|
-
```
|
|
1190
|
-
module.exports = { buildPrEvidence, formatPrEvidenceMarkdown } :140-140
|
|
1191
|
-
function buildPrEvidence(changedFiles, cwd, opts = {}) → { scope:string, files:obj :31-77
|
|
1192
|
-
function formatPrEvidenceMarkdown(evidence, opts = {}) :82-138
|
|
1193
|
-
```
|
|
1194
|
-
|
|
1195
|
-
### src/review/review-pr.js
|
|
1196
|
-
```
|
|
1197
|
-
module.exports = { reviewPr, SECURITY_PATTERNS, GOD_NODE_THRESHOLD, SCOPE_DIR_THRESHOLD } :128-128
|
|
1198
|
-
function isTestFile(p) :32-34
|
|
1199
|
-
function isSource(p) :35-37
|
|
1200
|
-
function reviewPr(changedFiles, cwd, opts = {}) → { findings: object[], bla :48-126
|
|
1201
|
-
```
|
|
1202
|
-
|
|
1203
1222
|
### src/routing/classifier.js
|
|
1204
1223
|
```
|
|
1205
1224
|
module.exports = { classify, classifyAll } :102-102
|
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,24 @@ Format: [Semantic Versioning](https://semver.org/)
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## [8.13.0] — 2026-07-11
|
|
14
|
+
|
|
15
|
+
Minor release — **method-level blast-radius scoring** (GR2, the biggest Phase-2 lever in the master plan §7.4). The D4 call-graph finally has consumers: review findings, the PR Evidence report, and a 20th MCP tool now answer *which functions break*, not just which files.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Method-level blast-radius scoring (#468, PR #469):** new `src/graph/blast-radius.js` — for each changed file, reverse-BFS the method call-graph and score the change with a documented deterministic formula (`min(100, direct×4 + transitive×1)`; tiers none/low/medium/high/critical). Wired into three consumers: `review-pr` gains a `methodBlast` result field and a `method-blast` finding on high/critical tiers; the **PR Evidence** report gains a per-file `Method blast radius: N function(s) impacted (score X/100, tier)` line with top caller ids; and the new **`get_method_impact`** MCP tool (`symbol`, `direction: callers|callees`, `depth`) exposes per-symbol blast radius to agents — **19 → 20 MCP tools**. Graceful degradation when no call graph resolves; byte-stable output for a fixed tree.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [8.12.0] — 2026-07-11
|
|
23
|
+
|
|
24
|
+
Minor release — **`sigmap wiki`** (D9, the final unstarted in-boundary item from the master plan §3.5 backlog). With this, every in-boundary initiative D1–D9 has shipped.
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- **`sigmap wiki` — deterministic architecture narrative (#465, PR #466):** writes `.context/WIKI.md` composed entirely from data SigMap already computes — overview (indexed files, modules, signature tokens, health grade), module rollup with key files, dependency flow (hub files, entry points, cycle count from the import graph), conventions summary, and navigation pointers. Template prose only: **no LLM, no network, no timestamps** — two consecutive runs on an unchanged repo are byte-identical (regression-tested). `--out <path>` overrides the target; `--json` emits the structured data instead. Graph paths are relativized against the builder's normalized base so hubs/entries render repo-relative on macOS tmpdirs.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
13
31
|
## [8.11.0] — 2026-07-11
|
|
14
32
|
|
|
15
33
|
Minor release — the **terse signature encoder** (D7 from the master plan), shipped under its measure-first gate: the public reduction number comes from a benchmark run on this repo, never borrowed from another tool's prose-compression claims.
|
package/README.md
CHANGED
|
@@ -122,7 +122,7 @@ Ask → Rank → Context → Validate → Judge → Learn
|
|
|
122
122
|
|
|
123
123
|
<!--SM:benchmarkBlock-->
|
|
124
124
|
```
|
|
125
|
-
Benchmark : sigmap-v8.
|
|
125
|
+
Benchmark : sigmap-v8.13-main (21 repositories, including R language)
|
|
126
126
|
Date : 2026-07-11
|
|
127
127
|
|
|
128
128
|
Hit@5 : 87.8% (baseline 13.6% — 6.5× lift)
|
|
@@ -222,7 +222,7 @@ Use SigMap with open-source tools and fully self-hosted setups:
|
|
|
222
222
|
| **JetBrains** | [Marketplace](https://plugins.jetbrains.com/plugin/31109-sigmap--ai-context-engine/) | [github.com/manojmallick/sigmap-jetbrains](https://github.com/manojmallick/sigmap-jetbrains) | IntelliJ IDEA, WebStorm, PyCharm, GoLand — tool window + actions |
|
|
223
223
|
| **Neovim** | lazy.nvim / packer / vim-plug | [github.com/manojmallick/sigmap.nvim](https://github.com/manojmallick/sigmap.nvim) | `:SigMap`, `:SigMapQuery` float window, statusline widget |
|
|
224
224
|
|
|
225
|
-
**MCP server** —
|
|
225
|
+
**MCP server** — 20 on-demand tools for Claude Code and Cursor:
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
228
|
sigmap --mcp
|
|
@@ -267,7 +267,7 @@ SigMap treats coding agents as **consumers, not competitors**: it hands them a d
|
|
|
267
267
|
|
|
268
268
|
| Agent | One-time setup | How it consumes SigMap |
|
|
269
269
|
|---|---|---|
|
|
270
|
-
| **Claude Code** | `sigmap mcp install claude` |
|
|
270
|
+
| **Claude Code** | `sigmap mcp install claude` | 20 MCP tools (`search_signatures`, `get_lines`, `get_diff_context`, `squeeze_output`…) |
|
|
271
271
|
| **Cursor** | `sigmap mcp install cursor` | MCP tools, plus the `cursor` adapter writes `.cursorrules` |
|
|
272
272
|
| **Cline** | `sigmap mcp install cursor` | Reads `.cursorrules`; same MCP server |
|
|
273
273
|
| **Continue** | `sigmap mcp install vscode` | MCP tools inside the Continue extension |
|