projscan 3.0.1 → 3.0.2

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.0.1/docs/GUIDE.md) · [Roadmap](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/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/v3.0.2/docs/GUIDE.md) · [Roadmap](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/ROADMAP.md)
13
13
 
14
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/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/v3.0.2/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 @@ Humans get the same thing through the CLI.
33
33
  npx projscan
34
34
  ```
35
35
 
36
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/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/v3.0.2/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.0.1/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
44
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
45
45
 
46
46
  ## Install
47
47
 
@@ -97,9 +97,9 @@ projscan plugin test .projscan-plugins/policy.projscan-plugin.json
97
97
  PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
98
98
  ```
99
99
 
100
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
100
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
101
101
 
102
- For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/docs/GUIDE.md)**.
102
+ For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/GUIDE.md)**.
103
103
 
104
104
  ## Commands
105
105
 
@@ -155,31 +155,31 @@ projscan --help
155
155
  <details>
156
156
  <summary><strong>projscan structure</strong> - Directory tree with file counts</summary>
157
157
 
158
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
158
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
159
159
  </details>
160
160
 
161
161
  <details>
162
162
  <summary><strong>projscan diagram</strong> - Architecture visualization</summary>
163
163
 
164
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
164
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
165
165
  </details>
166
166
 
167
167
  <details>
168
168
  <summary><strong>projscan dependencies</strong> - Dependency analysis</summary>
169
169
 
170
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
170
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
171
171
  </details>
172
172
 
173
173
  <details>
174
174
  <summary><strong>projscan explain</strong> - File explanation</summary>
175
175
 
176
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20explain.gif" alt="npx projscan explain" width="700">
176
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20explain.gif" alt="npx projscan explain" width="700">
177
177
  </details>
178
178
 
179
179
  <details>
180
180
  <summary><strong>projscan badge</strong> - Health badge generation</summary>
181
181
 
182
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
182
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
183
183
  </details>
184
184
 
185
185
  ### Output Formats
@@ -201,7 +201,7 @@ Run `projscan help` for the generated command-by-command support matrix.
201
201
 
202
202
  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.
203
203
 
204
- **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.0.1/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/docs/plugin.schema.json) as the stable contract.
204
+ **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.0.2/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/plugin.schema.json) as the stable contract.
205
205
 
206
206
  ```bash
207
207
  projscan plugin list
@@ -210,9 +210,9 @@ PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
210
210
  PROJSCAN_PLUGINS_PREVIEW=1 projscan ci --reporter team-radar --min-score 80
211
211
  ```
212
212
 
213
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
213
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
214
214
 
215
- 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.0.1/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
215
+ 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.0.2/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
216
216
 
217
217
  ### Options
218
218
 
@@ -373,7 +373,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
373
373
  ### Audit it yourself
374
374
 
375
375
  - **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.
376
- - **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.0.1/docs/STABILITY.md).
376
+ - **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.0.2/docs/STABILITY.md).
377
377
  - **Run it offline:** `npm install -g projscan` followed by anything except `audit` and `--mode semantic` works without network.
378
378
  - **Drop privilege further:** in CI, run projscan in a sandbox that disallows network egress; everything except `audit` will pass.
379
379
 
@@ -411,7 +411,7 @@ projscan ci --changed-only # Gate only on this PR's diff
411
411
  projscan ci --format sarif > projscan.sarif # SARIF for Code Scanning
412
412
  ```
413
413
 
414
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
414
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
415
415
 
416
416
  ### GitHub Action (recommended)
417
417
 
@@ -480,7 +480,7 @@ Fields:
480
480
  - `hotspots.limit` / `hotspots.since` - defaults for the `hotspots` command
481
481
  - `monorepo.importPolicy` - cross-package import allow/deny rules in monorepos *(0.14+)*
482
482
 
483
- See [`docs/GUIDE.md` → Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.1/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
483
+ See [`docs/GUIDE.md` → Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v3.0.2/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
484
484
 
485
485
  ## Tracking Health Over Time
486
486
 
@@ -493,7 +493,7 @@ projscan diff # Compare against baseline
493
493
  projscan diff --format markdown # Markdown diff for PRs
494
494
  ```
495
495
 
496
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
496
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
497
497
 
498
498
  ## Hotspots - Where to Fix First
499
499
 
@@ -582,7 +582,7 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
582
582
 
583
583
  **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.
584
584
 
585
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.1/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">
585
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v3.0.2/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">
586
586
 
587
587
  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.
588
588
 
@@ -775,9 +775,9 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
775
775
  **Operator (1.6):**
776
776
  - **`projscan_workspace_graph`** *(1.6)* - cross-repo intelligence over sibling repos registered with `projscan workspace add`. Subactions: `list` (registered repos + parsed-file + export counts), `graph` (every symbol exported by ≥ 2 repos — the candidate refactor / API contract surface), `file_importers` (given a file in one repo, every other repo whose graph imports it). Read-only.
777
777
  - **`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`.
778
- - **`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.1, review also surfaces hardened `newDataflowRisks` plus compact `graphEvidence` for graph-backed handoff.
778
+ - **`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.
779
779
 
780
- 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.0.1/docs/PLUGIN-AUTHORING.md).
780
+ 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.0.2/docs/PLUGIN-AUTHORING.md).
781
781
 
782
782
  ### Context-window budgeting
783
783
 
@@ -13,8 +13,10 @@ export function shouldIncludeDataflowRisk(risk, context, sinkFile = risk.files[r
13
13
  function isDefaultBroadFileIoRisk(risk, context) {
14
14
  const defaultSource = !context.customSources.has(risk.source);
15
15
  const defaultSink = !context.customSinks.has(risk.sink);
16
- return ((defaultSource && BROAD_FILE_IO_DATAFLOW_SOURCES.has(risk.source)) ||
17
- (defaultSink && BROAD_FILE_IO_DATAFLOW_SINKS.has(risk.sink)));
16
+ if (!defaultSource || !defaultSink)
17
+ return false;
18
+ return (BROAD_FILE_IO_DATAFLOW_SOURCES.has(risk.source) ||
19
+ BROAD_FILE_IO_DATAFLOW_SINKS.has(risk.sink));
18
20
  }
19
21
  function isDefaultMisidentifiedJavaScriptShellSink(risk, context, sinkFile) {
20
22
  if (!sinkFile)
@@ -1 +1 @@
1
- {"version":3,"file":"dataflowFilters.js","sourceRoot":"","sources":["../../src/core/dataflowFilters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataflowFilters.js","sourceRoot":"","sources":["../../src/core/dataflowFilters.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CodeGraph } from './codeGraph.js';
2
+ import type { OwnershipLookup } from './ownership.js';
2
3
  import type { ImpactReport } from '../types.js';
3
4
  export interface ImpactOptions {
4
5
  /** Stop BFS after this many hops. Default 10. Capped at 1 (lower bound). */
@@ -11,6 +12,8 @@ export interface ImpactOptions {
11
12
  * name from the workspace); values are the per-repo CodeGraph.
12
13
  */
13
14
  crossRepoGraphs?: Map<string, CodeGraph>;
15
+ /** Optional per-repo owner lookup used to annotate cross-repo boundary summaries. */
16
+ crossRepoOwnership?: Map<string, OwnershipLookup>;
14
17
  }
15
18
  /**
16
19
  * Compute the transitive blast radius of a file or symbol against the local
@@ -27,11 +27,11 @@ export function computeImpact(graph, target, options = {}) {
27
27
  // mode: any sibling-repo file whose callSites includes the symbol
28
28
  // name is a cross-repo direct caller (distance 1).
29
29
  if (options.crossRepoGraphs && options.crossRepoGraphs.size > 0) {
30
- return foldInCrossRepo(base, target, options.crossRepoGraphs);
30
+ return foldInCrossRepo(base, target, options.crossRepoGraphs, options.crossRepoOwnership);
31
31
  }
32
32
  return base;
33
33
  }
34
- function foldInCrossRepo(base, target, crossRepoGraphs) {
34
+ function foldInCrossRepo(base, target, crossRepoGraphs, crossRepoOwnership) {
35
35
  if (!base.available)
36
36
  return base;
37
37
  if (target.kind !== 'symbol') {
@@ -53,7 +53,7 @@ function foldInCrossRepo(base, target, crossRepoGraphs) {
53
53
  }
54
54
  if (count > 0)
55
55
  totalsByRepo[repoName] = count;
56
- boundarySummary.push(...boundarySummariesForRepo(repoName, repoGraph, target.value));
56
+ boundarySummary.push(...boundarySummariesForRepo(repoName, repoGraph, target.value, crossRepoOwnership?.get(repoName)));
57
57
  }
58
58
  const reachable = [...base.reachable, ...extra].sort(compareNodes);
59
59
  const sortedBoundaries = boundarySummary.sort((a, b) => a.repo.localeCompare(b.repo) || a.packageName.localeCompare(b.packageName));
@@ -65,7 +65,7 @@ function foldInCrossRepo(base, target, crossRepoGraphs) {
65
65
  ...(sortedBoundaries.length > 0 ? { boundarySummary: sortedBoundaries } : {}),
66
66
  };
67
67
  }
68
- function boundarySummariesForRepo(repoName, repoGraph, targetValue) {
68
+ function boundarySummariesForRepo(repoName, repoGraph, targetValue, ownerForFile) {
69
69
  const out = [];
70
70
  for (const [packageName, importers] of repoGraph.packageImporters) {
71
71
  if (!packageMatchesTarget(packageName, targetValue))
@@ -74,13 +74,23 @@ function boundarySummariesForRepo(repoName, repoGraph, targetValue) {
74
74
  out.push({
75
75
  repo: repoName,
76
76
  packageName,
77
- owner: repoName,
77
+ owner: ownerForBoundary(files, ownerForFile) ?? repoName,
78
78
  files,
79
79
  reachableFiles: files.length,
80
80
  });
81
81
  }
82
82
  return out;
83
83
  }
84
+ function ownerForBoundary(files, ownerForFile) {
85
+ if (!ownerForFile)
86
+ return undefined;
87
+ for (const file of files) {
88
+ const owner = ownerForFile(file);
89
+ if (owner)
90
+ return owner;
91
+ }
92
+ return undefined;
93
+ }
84
94
  function packageMatchesTarget(packageName, targetValue) {
85
95
  const normalizedTarget = targetValue
86
96
  .split(/[/#]/)
@@ -1 +1 @@
1
- {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../src/core/impact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../src/core/impact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type OwnershipLookup = (relativePath: string) => string | undefined;
2
+ export declare function loadOwnership(rootPath: string): Promise<OwnershipLookup | undefined>;
3
+ export declare function createOwnershipLookup(content: string): OwnershipLookup;
@@ -0,0 +1,84 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ const CODEOWNERS_CANDIDATES = ['.github/CODEOWNERS', 'CODEOWNERS', 'docs/CODEOWNERS'];
4
+ export async function loadOwnership(rootPath) {
5
+ for (const candidate of CODEOWNERS_CANDIDATES) {
6
+ try {
7
+ const content = await fs.readFile(path.join(rootPath, candidate), 'utf-8');
8
+ return createOwnershipLookup(content);
9
+ }
10
+ catch (error) {
11
+ const code = typeof error === 'object' && error !== null && 'code' in error ? String(error.code) : '';
12
+ if (code !== 'ENOENT')
13
+ return undefined;
14
+ }
15
+ }
16
+ return undefined;
17
+ }
18
+ export function createOwnershipLookup(content) {
19
+ const rules = parseOwnershipRules(content);
20
+ return (relativePath) => {
21
+ const normalizedPath = normalizePath(relativePath);
22
+ let owner;
23
+ for (const rule of rules) {
24
+ if (matchesRule(rule, normalizedPath))
25
+ owner = rule.owner;
26
+ }
27
+ return owner;
28
+ };
29
+ }
30
+ function parseOwnershipRules(content) {
31
+ return content
32
+ .split(/\r?\n/)
33
+ .map((line) => line.trim())
34
+ .filter((line) => line.length > 0 && !line.startsWith('#'))
35
+ .map((line) => line.split(/\s+/))
36
+ .filter((parts) => parts.length >= 2)
37
+ .map(([rawPattern, ...owners]) => buildRule(rawPattern, owners.join(' ')))
38
+ .filter((rule) => rule !== null);
39
+ }
40
+ function buildRule(rawPattern, owner) {
41
+ if (!rawPattern || owner.length === 0)
42
+ return null;
43
+ const pattern = normalizePattern(rawPattern);
44
+ if (!pattern)
45
+ return null;
46
+ if (pattern.endsWith('/')) {
47
+ return {
48
+ pattern,
49
+ owner,
50
+ matcher: /^$/,
51
+ basenameOnly: false,
52
+ directoryPrefix: pattern,
53
+ };
54
+ }
55
+ return {
56
+ pattern,
57
+ owner,
58
+ matcher: wildcardToRegExp(pattern),
59
+ basenameOnly: !pattern.includes('/'),
60
+ };
61
+ }
62
+ function matchesRule(rule, relativePath) {
63
+ if (rule.directoryPrefix)
64
+ return relativePath.startsWith(rule.directoryPrefix);
65
+ if (rule.basenameOnly) {
66
+ const base = relativePath.split('/').pop() ?? relativePath;
67
+ return rule.matcher.test(base);
68
+ }
69
+ return rule.matcher.test(relativePath);
70
+ }
71
+ function normalizePattern(pattern) {
72
+ return normalizePath(pattern.replace(/^\/+/, ''));
73
+ }
74
+ function normalizePath(value) {
75
+ return value.replace(/\\/g, '/').replace(/^\.\//, '');
76
+ }
77
+ function wildcardToRegExp(pattern) {
78
+ const escaped = pattern
79
+ .split('*')
80
+ .map((part) => part.replace(/[.+?^${}()|[\]\\]/g, '\\$&'))
81
+ .join('.*');
82
+ return new RegExp(`^${escaped}$`);
83
+ }
84
+ //# sourceMappingURL=ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/core/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,MAAM,qBAAqB,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAE,KAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9H,IAAI,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAoB,EAAE,EAAE;QAC9B,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,KAAyB,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,OAAO;SACX,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,UAA8B,EAAE,KAAa;IAC9D,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO;YACP,KAAK;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,OAAO;SACzB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;QACP,KAAK;QACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAmB,EAAE,YAAoB;IAC5D,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,OAAO;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;SACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACpC,CAAC"}
@@ -57,6 +57,42 @@ export async function computeReleaseTrain(rootPath, options = {}) {
57
57
  };
58
58
  }
59
59
  function trackForLine(line) {
60
+ if (line.startsWith('3.0')) {
61
+ return {
62
+ line,
63
+ theme: 'Graph Operations Readiness',
64
+ outcome: 'Agents can trust graph-backed review, impact, dataflow, and release gates during everyday repo work.',
65
+ includedInPlan: true,
66
+ scope: [
67
+ 'graph corpus release gate',
68
+ 'dataflow precision hardening',
69
+ 'ownership-aware impact',
70
+ ],
71
+ successCriteria: [
72
+ 'release readiness runs the graph corpus baseline gate',
73
+ 'custom dataflow rules stay visible when users configure them',
74
+ 'impact boundary summaries identify likely owners when metadata exists',
75
+ ],
76
+ };
77
+ }
78
+ if (line.startsWith('3.1')) {
79
+ return {
80
+ line,
81
+ theme: 'Graph Intelligence Expansion',
82
+ outcome: 'Agents get narrower package-scoped evidence and richer framework-aware dataflow before editing high-risk paths.',
83
+ includedInPlan: true,
84
+ scope: [
85
+ 'package-scoped review evidence',
86
+ 'framework route dataflow precision',
87
+ 'deeper ownership and package boundary metadata',
88
+ ],
89
+ successCriteria: [
90
+ 'review package filters apply to taint, dataflow, graph evidence, and verdicts',
91
+ 'route and request-handler dataflow avoids generated-code noise',
92
+ 'impact reports keep ownership context without expanding the stable schema',
93
+ ],
94
+ };
95
+ }
60
96
  if (line.startsWith('2.3')) {
61
97
  return {
62
98
  line,
@@ -175,6 +211,38 @@ function trackForLine(line) {
175
211
  };
176
212
  }
177
213
  function tasksForTrack(track) {
214
+ if (track.line.startsWith('3.0')) {
215
+ return [
216
+ {
217
+ id: 'rt-3-0-graph-readiness',
218
+ priority: 'p0',
219
+ title: 'Harden graph operations readiness',
220
+ why: 'Agents trust projscan when graph/dataflow signals are gated, precise, and routed to the right owners.',
221
+ track: track.line,
222
+ files: ['scripts/release-check.mjs', 'src/core/dataflowFilters.ts', 'src/core/impact.ts'],
223
+ verification: {
224
+ commands: ['npm run release:check', 'npm run check:graph-corpus', 'projscan impact --symbol foo --cross-repo --format json'],
225
+ expected: 'Release readiness includes graph corpus checks, custom dataflow rules remain visible, and impact reports ownership boundaries.',
226
+ },
227
+ },
228
+ ];
229
+ }
230
+ if (track.line.startsWith('3.1')) {
231
+ return [
232
+ {
233
+ id: 'rt-3-1-graph-expansion',
234
+ priority: 'p1',
235
+ title: 'Expand graph intelligence precision',
236
+ why: 'The next product step should make high-risk review evidence narrower and framework-aware without forcing agents to inspect full graphs.',
237
+ track: track.line,
238
+ files: ['src/core/review.ts', 'src/core/dataflow.ts', 'src/core/impact.ts'],
239
+ verification: {
240
+ commands: ['projscan review --base main --head HEAD --format json', 'projscan dataflow --format json'],
241
+ expected: 'Review and dataflow evidence are scoped to the relevant package, route, and ownership boundaries.',
242
+ },
243
+ },
244
+ ];
245
+ }
178
246
  if (track.line.startsWith('2.3')) {
179
247
  return [
180
248
  {
@@ -1 +1 @@
1
- {"version":3,"file":"releaseTrain.js","sourceRoot":"","sources":["../../src/core/releaseTrain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"releaseTrain.js","sourceRoot":"","sources":["../../src/core/releaseTrain.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { scanRepository } from '../../core/repositoryScanner.js';
2
2
  import { buildCodeGraph } from '../../core/codeGraph.js';
3
3
  import { loadCachedGraph, saveCachedGraph } from '../../core/indexCache.js';
4
4
  import { computeImpact } from '../../core/impact.js';
5
+ import { loadOwnership } from '../../core/ownership.js';
5
6
  import { loadWorkspace } from '../../core/workspace.js';
6
7
  import { paginate, listChecksum, readPageParams } from '../pagination.js';
7
8
  import { emitProgress } from '../progress.js';
@@ -51,10 +52,10 @@ export const impactTool = {
51
52
  emitProgress(2, 3, 'computing impact');
52
53
  const target = file ? { kind: 'file', value: file } : { kind: 'symbol', value: symbol };
53
54
  const crossRepo = args.cross_repo === true;
54
- const crossRepoGraphs = crossRepo ? await buildCrossRepoGraphs(rootPath) : undefined;
55
+ const crossRepoContext = crossRepo ? await buildCrossRepoContext(rootPath) : undefined;
55
56
  const report = computeImpact(graph, target, {
56
57
  ...(maxDistance !== undefined ? { maxDistance } : {}),
57
- ...(crossRepoGraphs ? { crossRepoGraphs } : {}),
58
+ ...(crossRepoContext ? { crossRepoGraphs: crossRepoContext.graphs, crossRepoOwnership: crossRepoContext.ownership } : {}),
58
59
  });
59
60
  const page = paginate(report.reachable, readPageParams(args), listChecksum(report.reachable));
60
61
  emitProgress(3, 3, 'done');
@@ -72,21 +73,25 @@ export const impactTool = {
72
73
  * registered or no siblings exist; the impact module handles that
73
74
  * case as a no-op cross-repo fold.
74
75
  */
75
- async function buildCrossRepoGraphs(rootPath) {
76
- const out = new Map();
76
+ async function buildCrossRepoContext(rootPath) {
77
+ const graphs = new Map();
78
+ const ownership = new Map();
77
79
  const workspace = await loadWorkspace(rootPath);
78
80
  if (!workspace || workspace.repos.length === 0)
79
- return out;
81
+ return { graphs, ownership };
80
82
  for (const repo of workspace.repos) {
81
83
  try {
82
84
  const scan = await scanRepository(repo.path);
83
85
  const repoGraph = await buildCodeGraph(repo.path, scan.files);
84
- out.set(repo.name, repoGraph);
86
+ graphs.set(repo.name, repoGraph);
87
+ const ownerLookup = await loadOwnership(repo.path);
88
+ if (ownerLookup)
89
+ ownership.set(repo.name, ownerLookup);
85
90
  }
86
91
  catch {
87
92
  // Skip repos that fail to scan (transient I/O, missing dir, etc.).
88
93
  }
89
94
  }
90
- return out;
95
+ return { graphs, ownership };
91
96
  }
92
97
  //# sourceMappingURL=impact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/mcp/tools/impact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/mcp/tools/impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAwB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,qaAAqa;IACva,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uDAAuD;aACrE;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wFAAwF;aACtG;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,gQAAgQ;aACnQ;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;YAClF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;YACnF,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;SACzF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9F,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,6MAA6M,CAC9M,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,2IAA2I,CAC5I,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1F,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC1C,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;QAEvC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,MAAO,EAAE,CAAC;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;QAC3C,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;YAC1C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1H,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9F,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO;YACL,GAAG,MAAM;YACT,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,WAAW;gBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC"}
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:43e993dc-55dd-4723-a95a-ad09b6117db4",
4
+ "serialNumber": "urn:uuid:03f28292-6293-424b-8acd-d2d4715032c7",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-05-26T20:40:36.688Z",
7
+ "timestamp": "2026-05-27T03:57:27.876Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "projscan",
11
11
  "name": "projscan-sbom-generator",
12
- "version": "3.0.1"
12
+ "version": "3.0.2"
13
13
  }
14
14
  ],
15
15
  "component": {
16
16
  "type": "application",
17
- "bom-ref": "pkg:npm/projscan@3.0.1",
17
+ "bom-ref": "pkg:npm/projscan@3.0.2",
18
18
  "name": "projscan",
19
- "version": "3.0.1",
20
- "purl": "pkg:npm/projscan@3.0.1"
19
+ "version": "3.0.2",
20
+ "purl": "pkg:npm/projscan@3.0.2"
21
21
  }
22
22
  },
23
23
  "components": [
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "projscan",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "mcpProtocolVersion": "2025-03-26",
5
- "generatedAt": "2026-05-26T20:40:40.856Z",
5
+ "generatedAt": "2026-05-27T03:57:32.888Z",
6
6
  "toolCount": 39,
7
7
  "tools": [
8
8
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
3
  "mcpName": "io.github.abhiyoheswaran1/projscan",
4
- "version": "3.0.1",
4
+ "version": "3.0.2",
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++; 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), 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",