projscan 3.7.0 → 4.0.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/README.md CHANGED
@@ -9,9 +9,9 @@
9
9
 
10
10
  **Agent-first code intelligence.** An MCP server that lets AI coding agents (Claude Code, Codex, Cursor, Gemini, Windsurf, Cline, Continue, Zed — any MCP-aware client) query your codebase — with a CLI for humans and a local plugin layer for team-specific policy and reporting.
11
11
 
12
- [AI Agent Quick Start](#ai-agent-integration-mcp) · [CLI Quick Start](#quick-start) · [Commands](#commands) · [Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/GUIDE.md) · [Roadmap](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/ROADMAP.md)
12
+ [AI Agent Quick Start](#ai-agent-integration-mcp) · [CLI Quick Start](#quick-start) · [Commands](#commands) · [Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/GUIDE.md) · [Roadmap](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/ROADMAP.md)
13
13
 
14
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/projscan-reporter-plugin.png" alt="projscan reporter plugin running in a macOS-style terminal window with a team health summary" width="700">
14
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/projscan-reporter-plugin.png" alt="projscan reporter plugin running in a macOS-style terminal window with a team health summary" width="700">
15
15
 
16
16
  </div>
17
17
 
@@ -33,7 +33,7 @@ The local plugin platform lets teams add project-specific findings and render `d
33
33
  npx projscan
34
34
  ```
35
35
 
36
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/projscan-reporter-plugin.gif" alt="projscan doctor rendered through a local reporter plugin in a macOS-style terminal window" width="700">
36
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/projscan-reporter-plugin.gif" alt="projscan doctor rendered through a local reporter plugin in a macOS-style terminal window" width="700">
37
37
 
38
38
  Run `projscan doctor` for a focused health check:
39
39
 
@@ -41,7 +41,7 @@ Run `projscan doctor` for a focused health check:
41
41
  npx projscan doctor
42
42
  ```
43
43
 
44
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
44
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
45
45
 
46
46
  ## Install
47
47
 
@@ -94,9 +94,9 @@ npm run test:trust-smoke
94
94
 
95
95
  The full command catalog is below. Most users should start with the five-command path above instead of scanning the catalog.
96
96
 
97
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
97
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
98
98
 
99
- For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/GUIDE.md)**.
99
+ For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/GUIDE.md)**.
100
100
 
101
101
  ## Repo Understanding
102
102
 
@@ -149,7 +149,6 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
149
149
  | `projscan fix` | Auto-fix issues (ESLint, Prettier, Vitest, .editorconfig) |
150
150
  | `projscan ci` | CI health gate - SARIF output, `--changed-only` PR-diff mode, exits 1 if score below threshold |
151
151
  | `projscan diff` | Compare current health **and hotspot trends** against a baseline |
152
- | `projscan explain <file>` | Explain a file's purpose, imports, exports, and issues |
153
152
  | `projscan diagram` | ASCII architecture diagram of your project |
154
153
  | `projscan structure` | Directory tree with file counts |
155
154
  | `projscan dependencies` | Dependency analysis - counts, risks, recommendations |
@@ -177,31 +176,25 @@ projscan --help
177
176
  <details>
178
177
  <summary><strong>projscan structure</strong> - Directory tree with file counts</summary>
179
178
 
180
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
179
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
181
180
  </details>
182
181
 
183
182
  <details>
184
183
  <summary><strong>projscan diagram</strong> - Architecture visualization</summary>
185
184
 
186
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
185
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
187
186
  </details>
188
187
 
189
188
  <details>
190
189
  <summary><strong>projscan dependencies</strong> - Dependency analysis</summary>
191
190
 
192
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
193
- </details>
194
-
195
- <details>
196
- <summary><strong>projscan explain</strong> - File explanation</summary>
197
-
198
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20explain.gif" alt="npx projscan explain" width="700">
191
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
199
192
  </details>
200
193
 
201
194
  <details>
202
195
  <summary><strong>projscan badge</strong> - Health badge generation</summary>
203
196
 
204
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
197
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
205
198
  </details>
206
199
 
207
200
  ### Output Formats
@@ -223,7 +216,7 @@ Run `projscan help` for the generated command-by-command support matrix.
223
216
 
224
217
  projscan can load local plugins from `.projscan-plugins/` when `PROJSCAN_PLUGINS_PREVIEW=1` is set. The environment flag is kept for explicit local-code opt-in. Analyzer plugins emit normal projscan issues; reporter plugins render supported CLI commands with team-specific output.
225
218
 
226
- **2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/plugin.schema.json) as the stable contract.
219
+ **2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/plugin.schema.json) as the stable contract.
227
220
 
228
221
  ```bash
229
222
  projscan plugin list
@@ -234,9 +227,9 @@ PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
234
227
  PROJSCAN_PLUGINS_PREVIEW=1 projscan ci --reporter team-radar --min-score 80
235
228
  ```
236
229
 
237
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
230
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
238
231
 
239
- Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
232
+ Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
240
233
 
241
234
  ### Options
242
235
 
@@ -291,7 +284,7 @@ Python repos now get the same treatment JS/TS has had since 0.6:
291
284
  - **Python-aware analyzers.** Missing pytest / ruff / black config. Deprecated packages (nose, simplejson, pycrypto). Unused `pyproject.toml` / `requirements.txt` deps. Missing lockfile.
292
285
  - **Code search.** BM25 and semantic modes work on `.py` files out of the box.
293
286
  - **Hotspots + dead code.** Same scoring as JS/TS, with `__init__.py` and pytest test-file conventions understood.
294
- - **MCP tools work unchanged.** `projscan_graph`, `projscan_search`, `projscan_doctor`, `projscan_hotspots`, etc. all accept Python projects. Agents can ask "which files import `pkg.core`?" and get an answer in milliseconds.
287
+ - **MCP tools work unchanged.** `projscan_semantic_graph`, `projscan_search`, `projscan_doctor`, `projscan_hotspots`, etc. all accept Python projects. Agents can ask "which files import `pkg.core`?" and get an answer in milliseconds.
295
288
 
296
289
  `projscan_upgrade` remains Node-only for now - a Python equivalent (reading pip / poetry metadata) is on the roadmap.
297
290
 
@@ -401,7 +394,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
401
394
  ### Audit it yourself
402
395
 
403
396
  - **Source is open** at [github.com/abhiyoheswaran1/projscan](https://github.com/abhiyoheswaran1/projscan). The npm tarball matches the `dist/` produced by `npm run build` at the matching tag.
404
- - **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/STABILITY.md).
397
+ - **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/STABILITY.md).
405
398
  - **Run it offline:** `npm install -g projscan` followed by anything except `audit` and `--mode semantic` works without network.
406
399
  - **Drop privilege further:** in CI, run projscan in a sandbox that disallows network egress; everything except `audit` will pass.
407
400
 
@@ -452,7 +445,7 @@ projscan ci --changed-only # Gate only on this PR's diff
452
445
  projscan ci --format sarif > projscan.sarif # SARIF for Code Scanning
453
446
  ```
454
447
 
455
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
448
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
456
449
 
457
450
  ### GitHub Action (recommended)
458
451
 
@@ -529,7 +522,7 @@ Fields:
529
522
  - `hotspots.limit` / `hotspots.since` - defaults for the `hotspots` command
530
523
  - `monorepo.importPolicy` - cross-package import allow/deny rules in monorepos *(0.14+)*
531
524
 
532
- See [`docs/GUIDE.md` → Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
525
+ See [`docs/GUIDE.md` → Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
533
526
 
534
527
  ## Tracking Health Over Time
535
528
 
@@ -542,7 +535,7 @@ projscan diff # Compare against baseline
542
535
  projscan diff --format markdown # Markdown diff for PRs
543
536
  ```
544
537
 
545
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
538
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
546
539
 
547
540
  ## Hotspots - Where to Fix First
548
541
 
@@ -631,7 +624,7 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
631
624
 
632
625
  **This is the primary way to use projscan.** `projscan mcp` starts an [MCP](https://modelcontextprotocol.io) server over stdio so AI coding agents can query your codebase with real structural accuracy - not regex, not grep.
633
626
 
634
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.7.0/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
627
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.0.0/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
635
628
 
636
629
  Two questions an agent asks; structural answers in milliseconds. *"What breaks if I rename `buildCodeGraph`?"* → 31 direct callers, 97 files reachable. *"Where should I fix first?"* → ranked hotspots with AST cyclomatic complexity, churn, and ownership signals.
637
630
 
@@ -653,7 +646,7 @@ command = "npx"
653
646
  args = ["-y", "projscan", "mcp"]
654
647
  ```
655
648
 
656
- Restart `codex` and the tool surface (`projscan_graph`, `projscan_review`, …) appears alongside Codex's built-ins.
649
+ Restart `codex` and the tool surface (`projscan_semantic_graph`, `projscan_review`, …) appears alongside Codex's built-ins.
657
650
 
658
651
  ### Gemini CLI (Google)
659
652
 
@@ -758,7 +751,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
758
751
 
759
752
  ### What agents can ask
760
753
 
761
- - *"Who imports `src/auth/jwt.ts`?"* → `projscan_graph { file, direction: "importers" }`
754
+ - *"Who imports `src/auth/jwt.ts`?"* → `projscan_semantic_graph { query: { direction: "importers", file: "src/auth/jwt.ts" } }`
762
755
  - *"Give me the whole agent-safe graph contract."* → `projscan_semantic_graph`
763
756
  - *"Did this wrapper connect a source reader to a dangerous sink?"* → `projscan_dataflow`
764
757
  - *"Where is `runAudit` defined?"* → `projscan_search { query: "runAudit", scope: "symbols" }`
@@ -777,13 +770,12 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
777
770
  - *"How do I plan the next six product lines?"* → `projscan_release_train`
778
771
  - *"How do I wire projscan into this MCP client?"* → `projscan_adoption { action: "mcp_config", client: "codex" }`
779
772
 
780
- ### The 47 MCP tools
773
+ ### The 45 MCP tools
781
774
 
782
775
  **Structural (0.6.0 / 0.11 / 0.13 / 0.14 / 0.15 - agent-native):**
783
776
  - **`projscan_start`** *(3.0.4)* - first-60-seconds repo orientation. Composes setup diagnostics, `firstTenMinutes`, workflow recipes, workplan, quality scorecard, top risks, adoption gaps, next commands, and optional handoff payload.
784
777
  - **`projscan_understand`** *(3.4)* - cited repo-comprehension report with `map`, `flow`, `contracts`, `change`, and `verify` views, read-first files, unknowns, change readiness, verification tiers, and exact next commands.
785
- - **`projscan_graph`** - query the AST-based code graph. Directions: `imports`, `exports`, `importers`, `symbol_defs`, `package_importers`. Millisecond responses on a warm cache.
786
- - **`projscan_semantic_graph`** *(3.0)* - stable v3 semantic graph contract with file, function, package, and symbol nodes plus `defines`, `imports`, `imports_package`, `exports`, and `calls` edges.
778
+ - **`projscan_semantic_graph`** *(3.0; query mode 4.0)* - the code graph, two ways. With no `query`: the stable v3 semantic graph contract (file, function, package, and symbol nodes plus `defines`, `imports`, `imports_package`, `exports`, and `calls` edges). With `query: { direction, file?, symbol? }`: one cheap targeted lookup — `imports`, `exports`, `importers`, `symbol_defs`, `package_importers` with millisecond responses on a warm cache. (Subsumes the former `projscan_graph`, removed in 4.0.)
787
779
  - **`projscan_dataflow`** *(3.0)* - focused direct, propagated, and bridge source-to-sink dataflow risks. Next.js and Express request sources are framework-aware, DB/write sinks are receiver-sensitive, and defaults suppress test-file paths, broad readFile/writeFile noise, JavaScript RegExp.exec false positives, and generated-code anxiety; opt into broader scans with `include_tests` / `include_broad_file_io` / `include_generated` or the matching CLI flags.
788
780
  - **`projscan_search`** - fast search across `symbols` (exported names), `files` (path substring), or `content` (source substring with line + excerpt). Sub-file mode (`sub_file: true`) embeds per-function for sharper semantic results *(0.15)*.
789
781
  - **`projscan_coupling`** *(0.11)* - per-file fan-in / fan-out / instability + circular-import cycles (Tarjan SCC). Filter by `direction: cycles_only | high_fan_in | high_fan_out`.
@@ -811,8 +803,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
811
803
  - `projscan_analyze` - full project report
812
804
  - `projscan_doctor` - health score + issues (now includes `cycle-detected-N` for circular imports as of 0.13)
813
805
  - `projscan_hotspots` - risk-ranked files (churn × **AST cyclomatic complexity** × issues × ownership × coverage; falls back to LOC for non-AST languages). Pass `view: "functions"` *(0.13)* for top-N risky individual functions.
814
- - `projscan_file` - per-file risk + ownership + related issues + CC + fan-in/fan-out + per-function CC table *(0.13)*
815
- - `projscan_explain` - per-file purpose, imports, exports, smells
806
+ - `projscan_file` - per-file purpose, imports, exports, smells + risk + ownership + related issues + CC + fan-in/fan-out + per-function CC table *(0.13)*
816
807
  - `projscan_structure` - directory tree
817
808
  - `projscan_coverage` - scariest untested files (coverage × hotspots)
818
809
 
@@ -836,7 +827,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
836
827
  - **`projscan_apply_fix`** *(1.6)* - mechanically execute the safe fix templates. Default is dry-run; pass `confirm: true` to write. Atomic writes, per-apply rollback record at `.projscan-cache/rollbacks/<id>.json`. Reverse with `action: "rollback", rollback_id: ...`. Six templates supported at this release: `unused-dependency-*`, `missing-test-framework`, `missing-eslint`, `missing-prettier`, `missing-editorconfig`, `missing-readme`.
837
828
  - **`projscan_taint`** *(1.6)* - source-to-sink reachability over the per-function call graph. Built-in defaults cover common JS / Python sources (`process.env`, `req.body`, etc.) and sinks (`exec`, `eval`, `db.query`, etc.). Project-specific names go in `.projscanrc.json` `taint`. `projscan_review` automatically diffs taint flows between base and head and **blocks any PR that introduces a new flow**. In 3.0.2, review surfaces hardened `newDataflowRisks`, compact `graphEvidence`, and graph-readiness gates for safer handoff.
838
829
 
839
- Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v3.7.0/docs/PLUGIN-AUTHORING.md).
830
+ Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.0.0/docs/PLUGIN-AUTHORING.md).
840
831
 
841
832
  ### Context-window budgeting
842
833
 
package/dist/cli/index.js CHANGED
@@ -6,7 +6,6 @@ import { registerCi } from './commands/ci.js';
6
6
  import { registerDiff } from './commands/diff.js';
7
7
  import { registerFix } from './commands/fix.js';
8
8
  import { registerFile } from './commands/file.js';
9
- import { registerExplain } from './commands/explain.js';
10
9
  import { registerDiagram } from './commands/diagram.js';
11
10
  import { registerStructure } from './commands/structure.js';
12
11
  import { registerDependencies } from './commands/dependencies.js';
@@ -64,7 +63,6 @@ registerCi();
64
63
  registerDiff();
65
64
  registerFix();
66
65
  registerFile();
67
- registerExplain();
68
66
  registerDiagram();
69
67
  registerStructure();
70
68
  registerDependencies();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Tool/command deprecation primitives (3.8 deprecation pass).
3
+ *
4
+ * projscan ships a 1.0 stability contract: tools and CLI commands are not
5
+ * removed or renamed within a major. The 4.0 surface consolidation removes a
6
+ * long tail of tools, so 3.8 introduces a *deprecation* signal first — a
7
+ * non-breaking, reversible marker that tells agents and humans "this still
8
+ * works today, but is going away; here is the replacement". Removal happens in
9
+ * {@link REMOVAL_VERSION}, never before.
10
+ *
11
+ * This module is the single source of truth for how a deprecation renders, so
12
+ * the MCP tool surface (description prefix) and the CLI (stderr notice) stay
13
+ * in lockstep. See docs/MIGRATION-4.0.md.
14
+ */
15
+ import type { ToolDeprecation } from '../types.js';
16
+ export type { ToolDeprecation };
17
+ /** The major release in which deprecated tools/commands are actually removed. */
18
+ export declare const REMOVAL_VERSION = "4.0";
19
+ /**
20
+ * Prefix prepended to a deprecated MCP tool's description. Machine-greppable
21
+ * (`[DEPRECATED`) and human-readable, with a trailing space so it composes
22
+ * cleanly in front of the existing description.
23
+ */
24
+ export declare function deprecationDescriptionPrefix(dep: ToolDeprecation): string;
25
+ /**
26
+ * One-line stderr notice for a deprecated CLI command. `command` is the bare
27
+ * subcommand name (e.g. "explain"); `replacedBy` should read as the
28
+ * replacement invocation (e.g. "projscan file").
29
+ */
30
+ export declare function formatCliDeprecationNotice(command: string, dep: ToolDeprecation): string;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Tool/command deprecation primitives (3.8 deprecation pass).
3
+ *
4
+ * projscan ships a 1.0 stability contract: tools and CLI commands are not
5
+ * removed or renamed within a major. The 4.0 surface consolidation removes a
6
+ * long tail of tools, so 3.8 introduces a *deprecation* signal first — a
7
+ * non-breaking, reversible marker that tells agents and humans "this still
8
+ * works today, but is going away; here is the replacement". Removal happens in
9
+ * {@link REMOVAL_VERSION}, never before.
10
+ *
11
+ * This module is the single source of truth for how a deprecation renders, so
12
+ * the MCP tool surface (description prefix) and the CLI (stderr notice) stay
13
+ * in lockstep. See docs/MIGRATION-4.0.md.
14
+ */
15
+ /** The major release in which deprecated tools/commands are actually removed. */
16
+ export const REMOVAL_VERSION = '4.0';
17
+ /**
18
+ * Prefix prepended to a deprecated MCP tool's description. Machine-greppable
19
+ * (`[DEPRECATED`) and human-readable, with a trailing space so it composes
20
+ * cleanly in front of the existing description.
21
+ */
22
+ export function deprecationDescriptionPrefix(dep) {
23
+ return `[DEPRECATED since ${dep.since}, removed in ${REMOVAL_VERSION} — use ${dep.replacedBy}] `;
24
+ }
25
+ /**
26
+ * One-line stderr notice for a deprecated CLI command. `command` is the bare
27
+ * subcommand name (e.g. "explain"); `replacedBy` should read as the
28
+ * replacement invocation (e.g. "projscan file").
29
+ */
30
+ export function formatCliDeprecationNotice(command, dep) {
31
+ const base = `projscan ${command} is deprecated (since ${dep.since}) and will be removed in ${REMOVAL_VERSION} — use ${dep.replacedBy} instead.`;
32
+ return dep.note ? `${base} ${dep.note}` : base;
33
+ }
34
+ //# sourceMappingURL=deprecations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecations.js","sourceRoot":"","sources":["../../src/core/deprecations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAoB;IAC/D,OAAO,qBAAqB,GAAG,CAAC,KAAK,gBAAgB,eAAe,UAAU,GAAG,CAAC,UAAU,IAAI,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,GAAoB;IAC9E,MAAM,IAAI,GAAG,YAAY,OAAO,yBAAyB,GAAG,CAAC,KAAK,4BAA4B,eAAe,UAAU,GAAG,CAAC,UAAU,WAAW,CAAC;IACjJ,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
@@ -86,7 +86,7 @@ const TEMPLATES = [
86
86
  why: 'High dependency counts compound supply-chain risk and slow installs. Beyond ~50 prod deps, projects rarely need every one - some are dead, some are duplicates, some have native replacements.',
87
87
  where: [{ file: 'package.json' }],
88
88
  instruction: 'Run `projscan_dependencies` to see the full list, then `projscan_outdated` and `projscan_audit` for surface area. ' +
89
- 'For each dep that looks suspicious, run `projscan_graph { direction: "package_importers", target: "<name>" }` to see what (if anything) actually uses it. ' +
89
+ 'For each dep that looks suspicious, run `projscan_semantic_graph { query: { direction: "package_importers", symbol: "<name>" } }` to see what (if anything) actually uses it. ' +
90
90
  'Drop the ones with zero importers; consider native replacements for shimming-shaped deps (e.g. `lodash/get` → optional chaining).',
91
91
  }),
92
92
  },
@@ -102,7 +102,7 @@ const TEMPLATES = [
102
102
  headline: i.title,
103
103
  why: i.description,
104
104
  where: i.locations ?? [{ file: 'package.json' }],
105
- instruction: `Audit "${name}": call \`projscan_graph { direction: "package_importers", target: "${name}" }\` to see who imports it. ` +
105
+ instruction: `Audit "${name}": call \`projscan_semantic_graph { query: { direction: "package_importers", symbol: "${name}" } }\` to see who imports it. ` +
106
106
  `If it can be replaced with a lighter/native alternative, plan that migration; if it must stay, pin to an exact version (drop the \`^\` / \`>=\`) and document the choice.`,
107
107
  };
108
108
  },
@@ -151,7 +151,7 @@ const TEMPLATES = [
151
151
  headline: i.title,
152
152
  why: 'Catch-all directories (utils/helpers/lib/shared) are the project graveyard. Every file under one is implicitly "miscellaneous", which means changes touching it also rarely have a clear owner.',
153
153
  where: i.locations ?? [],
154
- instruction: 'Group the files under the flagged directory by domain (e.g. `auth/`, `format/`, `validation/`) using `projscan_graph` to see which symbols are imported together. ' +
154
+ instruction: 'Group the files under the flagged directory by domain (e.g. `auth/`, `format/`, `validation/`) using `projscan_semantic_graph` to see which symbols are imported together. ' +
155
155
  'Move them into domain-named subdirectories. Update imports - your editor\'s rename-and-update should handle the bulk; finish with a `projscan analyze` to verify no leftover imports broke.',
156
156
  }),
157
157
  },
@@ -165,7 +165,7 @@ const TEMPLATES = [
165
165
  why: "An export with zero importers either (a) was orphaned by a refactor and is genuinely dead, or (b) is part of the project's public API and projscan can't see who consumes it. " +
166
166
  'Either case deserves resolution: cleanup or an explicit "public" annotation.',
167
167
  where: i.locations ?? [],
168
- instruction: 'For each flagged file: confirm with `projscan_graph { direction: "importers", target: "<file>" }`. ' +
168
+ instruction: 'For each flagged file: confirm with `projscan_semantic_graph { query: { direction: "importers", file: "<file>" } }`. ' +
169
169
  'If the result is genuinely empty AND this isn\'t package.json#main / #exports, delete the file (or just the unused exports). ' +
170
170
  'If it IS public surface (entry point, re-exported), add it to package.json#exports or list the file in .projscanrc `disableRules: ["dead-code"]`.',
171
171
  }),
@@ -497,7 +497,7 @@ function staticHeadlineFor(issue) {
497
497
  if (issue.id.startsWith('large-') && issue.id.endsWith('-dir'))
498
498
  return 'Split the directory by domain.';
499
499
  if (issue.id === 'dead-code' || issue.id.startsWith('dead-code-'))
500
- return 'Confirm with `projscan_graph importers` then delete or expose.';
500
+ return 'Confirm with `projscan_semantic_graph { query: { direction: "importers", file: "<file>" } }` then delete or expose.';
501
501
  if (issue.id === 'missing-test-framework' || issue.id === 'missing-python-test-framework')
502
502
  return issue.id.includes('python') ? 'Install pytest + write one smoke test.' : 'Install vitest + write one smoke test.';
503
503
  if (issue.id === 'no-test-files' || issue.id === 'no-python-test-files')
@@ -1 +1 @@
1
- {"version":3,"file":"fixSuggest.js","sourceRoot":"","sources":["../../src/core/fixSuggest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixSuggest.js","sourceRoot":"","sources":["../../src/core/fixSuggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Targeted code-graph queries (4.0 consolidation).
3
+ *
4
+ * Extracted from the (removed) `projscan_graph` tool so the capability lives in
5
+ * one tested place and folds into `projscan_semantic_graph` — which previously
6
+ * only dumped the whole graph. This is what makes semantic_graph a true
7
+ * superset of the old graph tool: it answers the same targeted "who imports X",
8
+ * "what does X export", "where is symbol S defined" questions without serializing
9
+ * the entire graph.
10
+ */
11
+ import { type CodeGraph } from './codeGraph.js';
12
+ export type GraphQueryDirection = 'imports' | 'exports' | 'importers' | 'symbol_defs' | 'package_importers';
13
+ export interface GraphQueryInput {
14
+ direction: GraphQueryDirection;
15
+ /** Repo-relative file path (for imports/exports/importers). */
16
+ file?: string;
17
+ /** Symbol or package name (for symbol_defs/package_importers). */
18
+ symbol?: string;
19
+ /** Max entries returned (1–500, default 50). */
20
+ limit?: number;
21
+ }
22
+ /** Run one targeted query against a built code graph. Throws on missing args. */
23
+ export declare function runGraphQuery(graph: CodeGraph, input: GraphQueryInput): Record<string, unknown>;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Targeted code-graph queries (4.0 consolidation).
3
+ *
4
+ * Extracted from the (removed) `projscan_graph` tool so the capability lives in
5
+ * one tested place and folds into `projscan_semantic_graph` — which previously
6
+ * only dumped the whole graph. This is what makes semantic_graph a true
7
+ * superset of the old graph tool: it answers the same targeted "who imports X",
8
+ * "what does X export", "where is symbol S defined" questions without serializing
9
+ * the entire graph.
10
+ */
11
+ import { filesImportingFile, filesImportingPackage, filesDefiningSymbol, exportsOf, importsOf, } from './codeGraph.js';
12
+ const DEFAULT_LIMIT = 50;
13
+ /** Run one targeted query against a built code graph. Throws on missing args. */
14
+ export function runGraphQuery(graph, input) {
15
+ const { direction, file, symbol } = input;
16
+ const limit = Math.max(1, Math.min(500, typeof input.limit === 'number' ? input.limit : DEFAULT_LIMIT));
17
+ switch (direction) {
18
+ case 'imports': {
19
+ if (!file)
20
+ throw new Error('direction=imports requires a `file` argument (repo-relative path, e.g. "src/auth.ts").');
21
+ return { file, imports: importsOf(graph, file).slice(0, limit) };
22
+ }
23
+ case 'exports': {
24
+ if (!file)
25
+ throw new Error('direction=exports requires a `file` argument (repo-relative path).');
26
+ return { file, exports: exportsOf(graph, file).slice(0, limit) };
27
+ }
28
+ case 'importers': {
29
+ if (!file)
30
+ throw new Error('direction=importers requires a `file` argument (repo-relative path).');
31
+ return { file, importers: filesImportingFile(graph, file).slice(0, limit) };
32
+ }
33
+ case 'symbol_defs': {
34
+ if (!symbol)
35
+ throw new Error('direction=symbol_defs requires a `symbol` argument (the exported name, e.g. "authenticate").');
36
+ return { symbol, definedIn: filesDefiningSymbol(graph, symbol).slice(0, limit) };
37
+ }
38
+ case 'package_importers': {
39
+ const pkg = symbol ?? file;
40
+ if (!pkg)
41
+ throw new Error('direction=package_importers requires a `symbol` (or `file`) arg (the npm package name, e.g. "chalk").');
42
+ return { package: pkg, importers: filesImportingPackage(graph, pkg).slice(0, limit) };
43
+ }
44
+ default:
45
+ throw new Error(`unknown direction "${String(direction)}". Valid: imports, exports, importers, symbol_defs, package_importers.`);
46
+ }
47
+ }
48
+ //# sourceMappingURL=graphQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphQuery.js","sourceRoot":"","sources":["../../src/core/graphQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,SAAS,GAEV,MAAM,gBAAgB,CAAC;AAmBxB,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,KAAgB,EAAE,KAAsB;IACpE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAExG,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;YACrH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACnE,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACjG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACnE,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACnG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9E,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;YAC7H,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACnF,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;YACnI,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACxF,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;IACrI,CAAC;AACH,CAAC"}
@@ -347,12 +347,10 @@ const STATIC_EXPECTED_TOKENS = {
347
347
  projscan_audit: 1500,
348
348
  projscan_upgrade: 1000,
349
349
  projscan_search: 2500,
350
- projscan_graph: 4500,
351
350
  projscan_semantic_graph: 6000,
352
351
  projscan_dataflow: 3500,
353
352
  projscan_structure: 3000,
354
353
  projscan_analyze: 3500,
355
- projscan_explain: 1500,
356
354
  projscan_explain_issue: 800,
357
355
  projscan_fix_suggest: 800,
358
356
  projscan_apply_fix: 1500,
@@ -1 +1 @@
1
- {"version":3,"file":"costSummary.js","sourceRoot":"","sources":["../../../src/mcp/tools/costSummary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"costSummary.js","sourceRoot":"","sources":["../../../src/mcp/tools/costSummary.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,36 @@
1
1
  import { scanRepository } from '../../core/repositoryScanner.js';
2
2
  import { buildCodeGraph } from '../../core/codeGraph.js';
3
3
  import { buildSemanticGraph } from '../../core/semanticGraph.js';
4
+ import { runGraphQuery } from '../../core/graphQuery.js';
4
5
  import { loadCachedGraph, saveCachedGraph } from '../../core/indexCache.js';
5
6
  export const semanticGraphTool = {
6
7
  name: 'projscan_semantic_graph',
7
- description: 'Return the stable v3 semantic graph: file/function/package/symbol nodes plus imports, exports, defines, and calls edges. Use when an agent needs one normalized graph contract instead of several targeted graph queries.',
8
+ description: 'The code graph, two ways. With no `query`: returns the stable v3 semantic graph (file/function/package/symbol nodes plus imports, exports, defines, and calls edges). With `query`: answers one cheap, targeted question instead of serializing the whole graph — who imports a file, what a file imports/exports, where a symbol is defined, or which files import a package. (The targeted mode subsumes the former projscan_graph tool, removed in 4.0.)',
8
9
  inputSchema: {
9
10
  type: 'object',
10
11
  properties: {
12
+ query: {
13
+ type: 'object',
14
+ description: 'Optional. Ask one targeted question instead of returning the whole graph.',
15
+ properties: {
16
+ direction: {
17
+ type: 'string',
18
+ enum: ['imports', 'exports', 'importers', 'symbol_defs', 'package_importers'],
19
+ description: '"imports" (what the file imports), "exports" (what the file exports), "importers" (who imports the file), "symbol_defs" (files defining the symbol), "package_importers" (files importing a package by name).',
20
+ },
21
+ file: { type: 'string', description: 'Repo-relative file path (for imports/exports/importers).' },
22
+ symbol: { type: 'string', description: 'Symbol or package name (for symbol_defs/package_importers).' },
23
+ limit: { type: 'number', description: 'Max entries returned (default 50, max 500).' },
24
+ },
25
+ required: ['direction'],
26
+ },
11
27
  max_nodes: {
12
28
  type: 'number',
13
- description: 'Maximum graph nodes to return. Default 10000.',
29
+ description: 'Full-graph mode only. Maximum graph nodes to return. Default 10000.',
14
30
  },
15
31
  max_edges: {
16
32
  type: 'number',
17
- description: 'Maximum graph edges to return. Default 25000.',
33
+ description: 'Full-graph mode only. Maximum graph edges to return. Default 25000.',
18
34
  },
19
35
  max_tokens: {
20
36
  type: 'number',
@@ -27,6 +43,15 @@ export const semanticGraphTool = {
27
43
  const cached = await loadCachedGraph(rootPath);
28
44
  const graph = await buildCodeGraph(rootPath, scan.files, cached);
29
45
  await saveCachedGraph(rootPath, graph);
46
+ const query = args.query;
47
+ if (query && typeof query.direction === 'string') {
48
+ return runGraphQuery(graph, {
49
+ direction: query.direction,
50
+ file: typeof query.file === 'string' ? query.file : undefined,
51
+ symbol: typeof query.symbol === 'string' ? query.symbol : undefined,
52
+ limit: typeof query.limit === 'number' ? query.limit : undefined,
53
+ });
54
+ }
30
55
  return buildSemanticGraph(graph, {
31
56
  maxNodes: typeof args.max_nodes === 'number' && Number.isFinite(args.max_nodes)
32
57
  ? args.max_nodes
@@ -1 +1 @@
1
- {"version":3,"file":"semanticGraph.js","sourceRoot":"","sources":["../../../src/mcp/tools/semanticGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG5E,MAAM,CAAC,MAAM,iBAAiB,GAAY;IACxC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,2NAA2N;IAC7N,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,kBAAkB,CAAC,KAAK,EAAE;YAC/B,QAAQ,EACN,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnE,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,SAAS;YACf,QAAQ,EACN,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnE,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"semanticGraph.js","sourceRoot":"","sources":["../../../src/mcp/tools/semanticGraph.ts"],"names":[],"mappings":"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"}
package/dist/mcp/tools.js CHANGED
@@ -11,7 +11,6 @@
11
11
  import { analyzeTool } from './tools/analyze.js';
12
12
  import { doctorTool } from './tools/doctor.js';
13
13
  import { hotspotsTool } from './tools/hotspots.js';
14
- import { explainTool } from './tools/explain.js';
15
14
  import { fileTool } from './tools/file.js';
16
15
  import { structureTool } from './tools/structure.js';
17
16
  import { dependenciesTool } from './tools/dependencies.js';
@@ -19,7 +18,6 @@ import { outdatedTool } from './tools/outdated.js';
19
18
  import { auditTool } from './tools/audit.js';
20
19
  import { upgradeTool } from './tools/upgrade.js';
21
20
  import { coverageTool } from './tools/coverage.js';
22
- import { graphTool } from './tools/graph.js';
23
21
  import { semanticGraphTool } from './tools/semanticGraph.js';
24
22
  import { couplingTool } from './tools/coupling.js';
25
23
  import { workspacesTool } from './tools/workspaces.js';
@@ -55,11 +53,11 @@ import { qualityScorecardTool } from './tools/qualityScorecard.js';
55
53
  import { adoptionTool } from './tools/adoption.js';
56
54
  import { startTool } from './tools/start.js';
57
55
  import { understandTool } from './tools/understand.js';
56
+ import { deprecationDescriptionPrefix } from '../core/deprecations.js';
58
57
  const tools = [
59
58
  analyzeTool,
60
59
  doctorTool,
61
60
  hotspotsTool,
62
- explainTool,
63
61
  fileTool,
64
62
  structureTool,
65
63
  dependenciesTool,
@@ -67,7 +65,6 @@ const tools = [
67
65
  auditTool,
68
66
  upgradeTool,
69
67
  coverageTool,
70
- graphTool,
71
68
  semanticGraphTool,
72
69
  couplingTool,
73
70
  workspacesTool,
@@ -105,7 +102,16 @@ const tools = [
105
102
  coordinateWatchTool,
106
103
  ];
107
104
  export function getToolDefinitions() {
108
- return tools.map(({ name, description, inputSchema }) => ({ name, description, inputSchema }));
105
+ return tools.map(({ name, description, inputSchema, deprecated }) => {
106
+ const def = {
107
+ name,
108
+ description: deprecated ? deprecationDescriptionPrefix(deprecated) + description : description,
109
+ inputSchema,
110
+ };
111
+ if (deprecated)
112
+ def.deprecated = deprecated;
113
+ return def;
114
+ });
109
115
  }
110
116
  export function getToolHandler(name) {
111
117
  return tools.find((t) => t.name === name)?.handler;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:6dab452f-f2df-4c0a-b793-e7ba294a3df5",
4
+ "serialNumber": "urn:uuid:89f8c0f1-482c-4e76-b7b6-64830539ffdc",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-06-05T15:33:32.104Z",
7
+ "timestamp": "2026-06-05T19:19:59.691Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "projscan",
11
11
  "name": "projscan-sbom-generator",
12
- "version": "3.7.0"
12
+ "version": "4.0.0"
13
13
  }
14
14
  ],
15
15
  "component": {
16
16
  "type": "application",
17
- "bom-ref": "pkg:npm/projscan@3.7.0",
17
+ "bom-ref": "pkg:npm/projscan@4.0.0",
18
18
  "name": "projscan",
19
- "version": "3.7.0",
20
- "purl": "pkg:npm/projscan@3.7.0"
19
+ "version": "4.0.0",
20
+ "purl": "pkg:npm/projscan@4.0.0"
21
21
  }
22
22
  },
23
23
  "components": [
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "projscan",
3
- "version": "3.7.0",
3
+ "version": "4.0.0",
4
4
  "mcpProtocolVersion": "2025-03-26",
5
- "generatedAt": "2026-06-05T15:33:37.612Z",
6
- "toolCount": 47,
5
+ "generatedAt": "2026-06-05T19:20:05.305Z",
6
+ "toolCount": 45,
7
7
  "tools": [
8
8
  {
9
9
  "name": "projscan_analyze",
@@ -76,22 +76,6 @@
76
76
  }
77
77
  }
78
78
  },
79
- {
80
- "name": "projscan_explain",
81
- "description": "Explain a single file: purpose, imports, exports, and potential issues. Useful for understanding unfamiliar code before editing.",
82
- "inputSchema": {
83
- "type": "object",
84
- "properties": {
85
- "file": {
86
- "type": "string",
87
- "description": "Path to the file relative to the project root."
88
- }
89
- },
90
- "required": [
91
- "file"
92
- ]
93
- }
94
- },
95
79
  {
96
80
  "name": "projscan_file",
97
81
  "description": "Drill into a single file: purpose, imports, exports, churn/risk/ownership, related health issues, AST cyclomatic complexity, coupling (fan-in / fan-out), and per-function CC ranked by complexity. Use this after projscan_hotspots when deciding how to approach a specific risky file.",
@@ -226,57 +210,50 @@
226
210
  }
227
211
  },
228
212
  {
229
- "name": "projscan_graph",
230
- "description": "Query the AST-based code graph directly. Returns imports, exports, importers, or symbol definitions for a file or symbol. Agents should prefer this over analyze/doctor/explain for targeted structural questions - it is much cheaper and more accurate.",
213
+ "name": "projscan_semantic_graph",
214
+ "description": "The code graph, two ways. With no `query`: returns the stable v3 semantic graph (file/function/package/symbol nodes plus imports, exports, defines, and calls edges). With `query`: answers one cheap, targeted question instead of serializing the whole graph — who imports a file, what a file imports/exports, where a symbol is defined, or which files import a package. (The targeted mode subsumes the former projscan_graph tool, removed in 4.0.)",
231
215
  "inputSchema": {
232
216
  "type": "object",
233
217
  "properties": {
234
- "file": {
235
- "type": "string",
236
- "description": "File path (relative to project root) to query."
237
- },
238
- "symbol": {
239
- "type": "string",
240
- "description": "Symbol name to query (e.g. a function or class). Use instead of `file` to find where a symbol is defined."
241
- },
242
- "direction": {
243
- "type": "string",
244
- "description": "What to return: \"imports\" (what the file imports), \"exports\" (what the file exports), \"importers\" (who imports the file), \"symbol_defs\" (files defining the symbol), \"package_importers\" (files importing a package by name).",
245
- "enum": [
246
- "imports",
247
- "exports",
248
- "importers",
249
- "symbol_defs",
250
- "package_importers"
218
+ "query": {
219
+ "type": "object",
220
+ "description": "Optional. Ask one targeted question instead of returning the whole graph.",
221
+ "properties": {
222
+ "direction": {
223
+ "type": "string",
224
+ "enum": [
225
+ "imports",
226
+ "exports",
227
+ "importers",
228
+ "symbol_defs",
229
+ "package_importers"
230
+ ],
231
+ "description": "\"imports\" (what the file imports), \"exports\" (what the file exports), \"importers\" (who imports the file), \"symbol_defs\" (files defining the symbol), \"package_importers\" (files importing a package by name)."
232
+ },
233
+ "file": {
234
+ "type": "string",
235
+ "description": "Repo-relative file path (for imports/exports/importers)."
236
+ },
237
+ "symbol": {
238
+ "type": "string",
239
+ "description": "Symbol or package name (for symbol_defs/package_importers)."
240
+ },
241
+ "limit": {
242
+ "type": "number",
243
+ "description": "Max entries returned (default 50, max 500)."
244
+ }
245
+ },
246
+ "required": [
247
+ "direction"
251
248
  ]
252
249
  },
253
- "limit": {
254
- "type": "number",
255
- "description": "Max entries returned (default 50)."
256
- },
257
- "max_tokens": {
258
- "type": "number",
259
- "description": "Cap the response to roughly this many tokens."
260
- }
261
- },
262
- "required": [
263
- "direction"
264
- ]
265
- }
266
- },
267
- {
268
- "name": "projscan_semantic_graph",
269
- "description": "Return the stable v3 semantic graph: file/function/package/symbol nodes plus imports, exports, defines, and calls edges. Use when an agent needs one normalized graph contract instead of several targeted graph queries.",
270
- "inputSchema": {
271
- "type": "object",
272
- "properties": {
273
250
  "max_nodes": {
274
251
  "type": "number",
275
- "description": "Maximum graph nodes to return. Default 10000."
252
+ "description": "Full-graph mode only. Maximum graph nodes to return. Default 10000."
276
253
  },
277
254
  "max_edges": {
278
255
  "type": "number",
279
- "description": "Maximum graph edges to return. Default 25000."
256
+ "description": "Full-graph mode only. Maximum graph edges to return. Default 25000."
280
257
  },
281
258
  "max_tokens": {
282
259
  "type": "number",
package/dist/types.d.ts CHANGED
@@ -1941,6 +1941,18 @@ export interface FunctionDetail {
1941
1941
  */
1942
1942
  fanIn?: number;
1943
1943
  }
1944
+ /**
1945
+ * A reversible deprecation marker (3.8 deprecation pass). Present on a tool
1946
+ * means "still works, but slated for removal in 4.0 — prefer `replacedBy`".
1947
+ */
1948
+ export interface ToolDeprecation {
1949
+ /** Version the deprecation was announced in (e.g. "3.8.0"). */
1950
+ since: string;
1951
+ /** The recommended replacement (tool name for MCP, invocation for CLI). */
1952
+ replacedBy: string;
1953
+ /** Optional one-line rationale shown to humans/agents. */
1954
+ note?: string;
1955
+ }
1944
1956
  export interface McpToolDefinition {
1945
1957
  name: string;
1946
1958
  description: string;
@@ -1949,6 +1961,8 @@ export interface McpToolDefinition {
1949
1961
  properties: Record<string, unknown>;
1950
1962
  required?: string[];
1951
1963
  };
1964
+ /** Set when the tool is deprecated and scheduled for removal in 4.0. */
1965
+ deprecated?: ToolDeprecation;
1952
1966
  }
1953
1967
  export interface McpPromptArgument {
1954
1968
  name: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
3
  "mcpName": "io.github.abhiyoheswaran1/projscan",
4
- "version": "3.7.0",
4
+ "version": "4.0.0",
5
5
  "description": "Agent-first code intelligence. MCP server (2025-03-26) with AST parsing for JavaScript, TypeScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++; repo understanding maps (projscan_understand), stable v3 semantic graph (projscan_semantic_graph), dataflow risk engine with bridge-helper detection (projscan_dataflow), code graph, file + per-function AST cyclomatic complexity, per-function fan-in + fan-out, coupling + cycle detection, structural PR diff with HTML reporter, coverage report with HTML reporter, intent-grounded one-call PR review (projscan_review with optional `intent` arg, new taint flows, contract changes, and newDataflowRisks) and long-running PR-watch mode with structured per-bucket deltas (projscan_review_watch), first-60-seconds workflow orientation (projscan_start), agent workplans (projscan_workplan), bug-hunt queues (projscan_bug_hunt), product-line planning (projscan_release_train), evidence packs (projscan_evidence_pack), regression planning (projscan_regression_plan), agent briefs (projscan_agent_brief), quality scorecards (projscan_quality_scorecard), and preflight with supply-chain IOC evidence, rule-driven fix suggestions + mechanical apply layer with rollback (projscan_apply_fix, projscan_fix_suggest, projscan_explain_issue), source-to-sink taint analysis (projscan_taint) with truncation reporting, transitive blast-radius analysis with cross-repo mode (projscan_impact for files and symbols), cross-repo workspace registration + intelligence (projscan_workspace_graph), per-function semantic search chunks (sub-file embeddings), per-rule confidence + severity drift + cost-summary analytics with live streaming (projscan_cost_summary), stable local analyzer + reporter plugin API (projscan_plugin, CLI --reporter, opt-in via PROJSCAN_PLUGINS_PREVIEW=1), monorepo workspace awareness with cross-package import policy + per-package dependencies / outdated / audit, BM25 + optional semantic search, cursor pagination, progress notifications, context-budgeted output, and a stable-surface CI guard. CLI on the side.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- export declare function registerExplain(): void;
@@ -1,42 +0,0 @@
1
- import chalk from 'chalk';
2
- import path from 'node:path';
3
- import { program, setupLogLevel, maybeCompactBanner, analyzeFile, assertFormatSupported } from '../_shared.js';
4
- import { reportExplanation } from '../../reporters/consoleReporter.js';
5
- import { reportExplanationJson } from '../../reporters/jsonReporter.js';
6
- import { reportExplanationMarkdown } from '../../reporters/markdownReporter.js';
7
- export function registerExplain() {
8
- program
9
- .command('explain <file>')
10
- .description('Explain a file - its purpose, dependencies, and exports')
11
- .action(async (filePath) => {
12
- setupLogLevel();
13
- maybeCompactBanner();
14
- const format = assertFormatSupported('explain');
15
- const absolutePath = path.resolve(filePath);
16
- try {
17
- const explanation = await analyzeFile(absolutePath);
18
- switch (format) {
19
- case 'json':
20
- reportExplanationJson(explanation);
21
- break;
22
- case 'markdown':
23
- reportExplanationMarkdown(explanation);
24
- break;
25
- default:
26
- reportExplanation(explanation);
27
- }
28
- }
29
- catch (error) {
30
- const message = error instanceof Error ? error.message : String(error);
31
- if (error.code === 'ENOENT' || /not found/i.test(message)) {
32
- console.error(chalk.red(`File not found: ${filePath}`));
33
- console.error(chalk.dim(` Tip: paths are repo-relative. Run \`projscan structure\` to see the file tree.`));
34
- }
35
- else {
36
- console.error(chalk.red(message));
37
- }
38
- process.exit(1);
39
- }
40
- });
41
- }
42
- //# sourceMappingURL=explain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,MAAM,UAAU,eAAe;IAC7B,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;YAEpD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,qBAAqB,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,UAAU;oBACb,yBAAyB,CAAC,WAAW,CAAC,CAAC;oBACvC,MAAM;gBACR;oBACE,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAC9F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +0,0 @@
1
- import { type McpTool } from './_shared.js';
2
- export declare const explainTool: McpTool;
@@ -1,29 +0,0 @@
1
- import path from 'node:path';
2
- import { explainFile } from './_shared.js';
3
- export const explainTool = {
4
- name: 'projscan_explain',
5
- description: 'Explain a single file: purpose, imports, exports, and potential issues. Useful for understanding unfamiliar code before editing.',
6
- inputSchema: {
7
- type: 'object',
8
- properties: {
9
- file: {
10
- type: 'string',
11
- description: 'Path to the file relative to the project root.',
12
- },
13
- },
14
- required: ['file'],
15
- },
16
- handler: async (args, rootPath) => {
17
- const rel = typeof args.file === 'string' ? args.file : '';
18
- if (!rel) {
19
- throw new Error('file argument is required: pass a repo-relative path (e.g. "src/auth.ts").');
20
- }
21
- const absolutePath = path.resolve(rootPath, rel);
22
- const resolvedRoot = path.resolve(rootPath);
23
- if (!absolutePath.startsWith(resolvedRoot + path.sep) && absolutePath !== resolvedRoot) {
24
- throw new Error(`file must be inside the project root (got "${rel}"; absolute or "../" paths are rejected for security).`);
25
- }
26
- return await explainFile(absolutePath, rootPath);
27
- },
28
- };
29
- //# sourceMappingURL=explain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/mcp/tools/explain.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,kIAAkI;IACpI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;YACvF,MAAM,IAAI,KAAK,CACb,8CAA8C,GAAG,wDAAwD,CAC1G,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { McpTool } from './_shared.js';
2
- export declare const graphTool: McpTool;
@@ -1,74 +0,0 @@
1
- import { scanRepository } from '../../core/repositoryScanner.js';
2
- import { buildCodeGraph, filesImportingFile, filesImportingPackage, filesDefiningSymbol, exportsOf, importsOf, } from '../../core/codeGraph.js';
3
- import { loadCachedGraph, saveCachedGraph } from '../../core/indexCache.js';
4
- export const graphTool = {
5
- name: 'projscan_graph',
6
- description: 'Query the AST-based code graph directly. Returns imports, exports, importers, or symbol definitions for a file or symbol. Agents should prefer this over analyze/doctor/explain for targeted structural questions - it is much cheaper and more accurate.',
7
- inputSchema: {
8
- type: 'object',
9
- properties: {
10
- file: {
11
- type: 'string',
12
- description: 'File path (relative to project root) to query.',
13
- },
14
- symbol: {
15
- type: 'string',
16
- description: 'Symbol name to query (e.g. a function or class). Use instead of `file` to find where a symbol is defined.',
17
- },
18
- direction: {
19
- type: 'string',
20
- description: 'What to return: "imports" (what the file imports), "exports" (what the file exports), "importers" (who imports the file), "symbol_defs" (files defining the symbol), "package_importers" (files importing a package by name).',
21
- enum: ['imports', 'exports', 'importers', 'symbol_defs', 'package_importers'],
22
- },
23
- limit: { type: 'number', description: 'Max entries returned (default 50).' },
24
- max_tokens: { type: 'number', description: 'Cap the response to roughly this many tokens.' },
25
- },
26
- required: ['direction'],
27
- },
28
- handler: async (args, rootPath) => {
29
- const scan = await scanRepository(rootPath);
30
- const cached = await loadCachedGraph(rootPath);
31
- const graph = await buildCodeGraph(rootPath, scan.files, cached);
32
- await saveCachedGraph(rootPath, graph);
33
- const direction = String(args.direction);
34
- const file = typeof args.file === 'string' ? args.file : undefined;
35
- const symbol = typeof args.symbol === 'string' ? args.symbol : undefined;
36
- const limit = Math.max(1, Math.min(500, typeof args.limit === 'number' ? args.limit : 50));
37
- switch (direction) {
38
- case 'imports': {
39
- if (!file) {
40
- throw new Error('direction=imports requires a `file` argument (repo-relative path, e.g. "src/auth.ts").');
41
- }
42
- return { file, imports: importsOf(graph, file).slice(0, limit) };
43
- }
44
- case 'exports': {
45
- if (!file) {
46
- throw new Error('direction=exports requires a `file` argument (repo-relative path).');
47
- }
48
- return { file, exports: exportsOf(graph, file).slice(0, limit) };
49
- }
50
- case 'importers': {
51
- if (!file) {
52
- throw new Error('direction=importers requires a `file` argument (repo-relative path).');
53
- }
54
- return { file, importers: filesImportingFile(graph, file).slice(0, limit) };
55
- }
56
- case 'symbol_defs': {
57
- if (!symbol) {
58
- throw new Error('direction=symbol_defs requires a `symbol` argument (the exported name to look up, e.g. "authenticate").');
59
- }
60
- return { symbol, definedIn: filesDefiningSymbol(graph, symbol).slice(0, limit) };
61
- }
62
- case 'package_importers': {
63
- const pkg = symbol ?? file;
64
- if (!pkg) {
65
- throw new Error('direction=package_importers requires either `symbol` or `file` arg (the npm package name, e.g. "chalk").');
66
- }
67
- return { package: pkg, importers: filesImportingPackage(graph, pkg).slice(0, limit) };
68
- }
69
- default:
70
- throw new Error(`unknown direction "${direction}". Valid: imports, exports, importers, symbol_defs, package_importers.`);
71
- }
72
- },
73
- };
74
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/mcp/tools/graph.ts"],"names":[],"mappings":"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"}