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 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 — 2 days ago)
37
- ```
38
- src/conventions/extract.js ~classifyNaming ~scoreConvention
39
- src/conventions/fix.js ~buildFixList
40
- src/daemon/daemon.js +daemonDir +pidFile +logFile +isAlive
41
- src/extractors/javascript.js ~extract ~extractClassMembers ~extractBlock ~buildReturnHints
42
- src/extractors/typescript.js ~extract ~extractInterfaceMembers ~extractClassMembers ~extractBlock
43
- src/graph/builder.js +probeJs +resolveJsPath +stripJsonc +loadAliasMap
44
- src/graph/impact.js ~formatImpact
45
- src/health/scorer.js +gradeFor +composeHealth +score ~score
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 } :140-140
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-107
188
- function start(cwd) :112-138
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.11-main (21 repositories, including R language)
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** — 19 on-demand tools for Claude Code and Cursor:
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` | 19 MCP tools (`search_signatures`, `get_lines`, `get_diff_context`, `squeeze_output`…) |
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 |