projscan 3.4.0 → 3.5.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 +25 -23
- package/dist/cli/commands/plugin.js +134 -2
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/cli/commands/workplan.js +1 -1
- package/dist/cli/commands/workplan.js.map +1 -1
- package/dist/cli/commands/workspace.js +3 -2
- package/dist/cli/commands/workspace.js.map +1 -1
- package/dist/core/pluginDx.d.ts +1 -0
- package/dist/core/pluginDx.js +77 -18
- package/dist/core/pluginDx.js.map +1 -1
- package/dist/core/pluginTrust.d.ts +56 -0
- package/dist/core/pluginTrust.js +138 -0
- package/dist/core/pluginTrust.js.map +1 -0
- package/dist/core/plugins.d.ts +1 -1
- package/dist/core/plugins.js +33 -0
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/preflight.js +4 -16
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/privacy.js +8 -2
- package/dist/core/privacy.js.map +1 -1
- package/dist/core/workspace.d.ts +4 -2
- package/dist/core/workspace.js +63 -4
- package/dist/core/workspace.js.map +1 -1
- package/dist/fixes/eslintFix.js +6 -2
- package/dist/fixes/eslintFix.js.map +1 -1
- package/dist/fixes/prettierFix.js +5 -2
- package/dist/fixes/prettierFix.js.map +1 -1
- package/dist/fixes/testFix.js +8 -2
- package/dist/fixes/testFix.js.map +1 -1
- package/dist/mcp/tools/plugin.js +72 -20
- package/dist/mcp/tools/plugin.js.map +1 -1
- package/dist/mcp/tools/workplan.js +3 -2
- package/dist/mcp/tools/workplan.js.map +1 -1
- package/dist/mcp/tools/workspaceGraph.js +31 -0
- package/dist/mcp/tools/workspaceGraph.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +87 -185
- package/dist/tool-manifest.json +5 -5
- package/dist/types.d.ts +7 -0
- package/dist/utils/formatSupport.d.ts +2 -0
- package/dist/utils/formatSupport.js +2 -0
- package/dist/utils/formatSupport.js.map +1 -1
- package/docs/PLUGIN-AUTHORING.md +41 -13
- package/docs/PLUGIN-GALLERY.md +2 -1
- package/package.json +2 -2
package/dist/core/preflight.js
CHANGED
|
@@ -3,7 +3,7 @@ import { collectIssues } from './issueEngine.js';
|
|
|
3
3
|
import { analyzeHotspots } from './hotspotAnalyzer.js';
|
|
4
4
|
import { computeReview } from './review.js';
|
|
5
5
|
import { loadSession } from './session.js';
|
|
6
|
-
import {
|
|
6
|
+
import { pluginsEnabled } from './plugins.js';
|
|
7
7
|
import { getChangedFiles } from '../utils/changedFiles.js';
|
|
8
8
|
import { loadConfig, applyConfigToIssues } from '../utils/config.js';
|
|
9
9
|
import { calculateScore } from '../utils/scoreCalculator.js';
|
|
@@ -48,7 +48,7 @@ export async function computePreflight(rootPath, options = {}) {
|
|
|
48
48
|
session,
|
|
49
49
|
hotspots,
|
|
50
50
|
issues,
|
|
51
|
-
pluginsEnabledForRun:
|
|
51
|
+
pluginsEnabledForRun: pluginsEnabled(),
|
|
52
52
|
review,
|
|
53
53
|
releaseScale,
|
|
54
54
|
});
|
|
@@ -92,20 +92,8 @@ export function summarizePreflight(report) {
|
|
|
92
92
|
}
|
|
93
93
|
return `${report.verdict}: ${report.reasons[0].message}`;
|
|
94
94
|
}
|
|
95
|
-
async function collectIssuesWithPluginOption(rootPath, files,
|
|
96
|
-
|
|
97
|
-
return collectIssues(rootPath, files);
|
|
98
|
-
const previous = process.env[PLUGIN_PREVIEW_FLAG];
|
|
99
|
-
process.env[PLUGIN_PREVIEW_FLAG] = '1';
|
|
100
|
-
try {
|
|
101
|
-
return await collectIssues(rootPath, files);
|
|
102
|
-
}
|
|
103
|
-
finally {
|
|
104
|
-
if (previous === undefined)
|
|
105
|
-
delete process.env[PLUGIN_PREVIEW_FLAG];
|
|
106
|
-
else
|
|
107
|
-
process.env[PLUGIN_PREVIEW_FLAG] = previous;
|
|
108
|
-
}
|
|
95
|
+
async function collectIssuesWithPluginOption(rootPath, files, _enablePlugins) {
|
|
96
|
+
return collectIssues(rootPath, files);
|
|
109
97
|
}
|
|
110
98
|
async function safeChangedFiles(rootPath, mode, baseRef) {
|
|
111
99
|
if (mode === 'before_edit') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/core/preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/core/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/core/privacy.js
CHANGED
|
@@ -53,6 +53,12 @@ export function knownLocalWriteSurfaces() {
|
|
|
53
53
|
trigger: 'MCP tool results, explicit session commands, and file-watch events',
|
|
54
54
|
containsUserData: true,
|
|
55
55
|
},
|
|
56
|
+
{
|
|
57
|
+
name: 'cross-repo workspace registration',
|
|
58
|
+
path: '.projscan-cache/workspace.json',
|
|
59
|
+
trigger: 'projscan workspace add for locally trusted sibling repo registration',
|
|
60
|
+
containsUserData: true,
|
|
61
|
+
},
|
|
56
62
|
{
|
|
57
63
|
name: 'project memory',
|
|
58
64
|
path: '.projscan-memory/memory.json',
|
|
@@ -109,8 +115,8 @@ export async function buildPrivacyCheckReport(rootPath, scan, config = {}) {
|
|
|
109
115
|
discoveredManifestCount: pluginManifests.length,
|
|
110
116
|
localCodeExecution: pluginExecutionEnabled,
|
|
111
117
|
note: pluginExecutionEnabled
|
|
112
|
-
? 'Local
|
|
113
|
-
: `Local plugins are disabled unless ${PLUGIN_PREVIEW_FLAG}=1 is
|
|
118
|
+
? 'Local plugin execution is enabled, but each plugin module additionally requires explicit trust-on-first-use approval (`projscan plugin trust <name>`) before it runs.'
|
|
119
|
+
: `Local plugins are disabled unless ${PLUGIN_PREVIEW_FLAG}=1 is set, and each module must then be approved with \`projscan plugin trust\`.`,
|
|
114
120
|
},
|
|
115
121
|
localWrites: {
|
|
116
122
|
surfaces: knownLocalWriteSurfaces(),
|
package/dist/core/privacy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/core/privacy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/core/privacy.ts"],"names":[],"mappings":"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"}
|
package/dist/core/workspace.d.ts
CHANGED
|
@@ -9,13 +9,14 @@
|
|
|
9
9
|
* Disambiguation: this is DIFFERENT from `src/core/monorepo.ts`'s
|
|
10
10
|
* `WorkspaceInfo`, which detects intra-repo packages (npm/yarn/pnpm/
|
|
11
11
|
* Lerna/Nx) within a single repo. The cross-repo workspace lives at
|
|
12
|
-
* `<cwd>/.projscan-workspace.json`; the monorepo workspace is
|
|
12
|
+
* `<cwd>/.projscan-cache/workspace.json`; the monorepo workspace is
|
|
13
13
|
* detected from package.json/pnpm-workspace.yaml/etc.
|
|
14
14
|
*
|
|
15
15
|
* Local-only state. No network. Schema-versioned. Best-effort writes
|
|
16
16
|
* (mirrors the session and memory modules' posture).
|
|
17
17
|
*/
|
|
18
18
|
export declare const WORKSPACE_SCHEMA_VERSION = 1;
|
|
19
|
+
export declare const WORKSPACE_MAX_REPOS = 20;
|
|
19
20
|
export interface WorkspaceRepo {
|
|
20
21
|
/** Absolute path to the registered repo's root. */
|
|
21
22
|
path: string;
|
|
@@ -34,7 +35,7 @@ export interface Workspace {
|
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Load the workspace at `rootPath` (the directory whose
|
|
37
|
-
* `.projscan-workspace.json` we read). Returns null if the file is
|
|
38
|
+
* `.projscan-cache/workspace.json` we read). Returns null if the file is
|
|
38
39
|
* missing, corrupt, or schema-mismatched. Never throws.
|
|
39
40
|
*/
|
|
40
41
|
export declare function loadWorkspace(rootPath: string): Promise<Workspace | null>;
|
|
@@ -43,6 +44,7 @@ export declare function loadWorkspace(rootPath: string): Promise<Workspace | nul
|
|
|
43
44
|
* `add` flow where the file may not yet exist.
|
|
44
45
|
*/
|
|
45
46
|
export declare function loadOrCreateWorkspace(rootPath: string): Promise<Workspace>;
|
|
47
|
+
export declare function resolveTrustedWorkspaceRepoPath(rootPath: string, repoPath: string): Promise<string>;
|
|
46
48
|
/**
|
|
47
49
|
* Add a sibling repo to the workspace. `repoPath` is resolved to an
|
|
48
50
|
* absolute path. Duplicate detection is by absolute path. Returns
|
package/dist/core/workspace.js
CHANGED
|
@@ -11,17 +11,18 @@ import path from 'node:path';
|
|
|
11
11
|
* Disambiguation: this is DIFFERENT from `src/core/monorepo.ts`'s
|
|
12
12
|
* `WorkspaceInfo`, which detects intra-repo packages (npm/yarn/pnpm/
|
|
13
13
|
* Lerna/Nx) within a single repo. The cross-repo workspace lives at
|
|
14
|
-
* `<cwd>/.projscan-workspace.json`; the monorepo workspace is
|
|
14
|
+
* `<cwd>/.projscan-cache/workspace.json`; the monorepo workspace is
|
|
15
15
|
* detected from package.json/pnpm-workspace.yaml/etc.
|
|
16
16
|
*
|
|
17
17
|
* Local-only state. No network. Schema-versioned. Best-effort writes
|
|
18
18
|
* (mirrors the session and memory modules' posture).
|
|
19
19
|
*/
|
|
20
20
|
export const WORKSPACE_SCHEMA_VERSION = 1;
|
|
21
|
-
const
|
|
21
|
+
export const WORKSPACE_MAX_REPOS = 20;
|
|
22
|
+
const WORKSPACE_FILENAME = path.join('.projscan-cache', 'workspace.json');
|
|
22
23
|
/**
|
|
23
24
|
* Load the workspace at `rootPath` (the directory whose
|
|
24
|
-
* `.projscan-workspace.json` we read). Returns null if the file is
|
|
25
|
+
* `.projscan-cache/workspace.json` we read). Returns null if the file is
|
|
25
26
|
* missing, corrupt, or schema-mismatched. Never throws.
|
|
26
27
|
*/
|
|
27
28
|
export async function loadWorkspace(rootPath) {
|
|
@@ -43,7 +44,7 @@ export async function loadWorkspace(rootPath) {
|
|
|
43
44
|
if (!isWorkspaceShape(parsed) || parsed.schemaVersion !== WORKSPACE_SCHEMA_VERSION) {
|
|
44
45
|
return null;
|
|
45
46
|
}
|
|
46
|
-
return parsed;
|
|
47
|
+
return trustWorkspace(rootPath, parsed);
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Load the workspace, or create a fresh empty one. Useful for the
|
|
@@ -59,6 +60,24 @@ export async function loadOrCreateWorkspace(rootPath) {
|
|
|
59
60
|
repos: [],
|
|
60
61
|
};
|
|
61
62
|
}
|
|
63
|
+
export async function resolveTrustedWorkspaceRepoPath(rootPath, repoPath) {
|
|
64
|
+
if (typeof repoPath !== 'string' || repoPath.length === 0) {
|
|
65
|
+
throw new Error('Repo path is required.');
|
|
66
|
+
}
|
|
67
|
+
const rootReal = await realpathOrResolve(rootPath);
|
|
68
|
+
const resolved = path.resolve(repoPath);
|
|
69
|
+
let repoReal;
|
|
70
|
+
try {
|
|
71
|
+
repoReal = await fs.realpath(resolved);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
throw new Error(`Repo "${resolved}" must exist before registration: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
75
|
+
}
|
|
76
|
+
if (!isTrustedSiblingRepo(rootReal, repoReal)) {
|
|
77
|
+
throw new Error(`Repo "${repoReal}" is outside the trusted sibling workspace boundary for "${rootReal}". Register repos that live beside the current project under the same parent directory.`);
|
|
78
|
+
}
|
|
79
|
+
return repoReal;
|
|
80
|
+
}
|
|
62
81
|
/**
|
|
63
82
|
* Add a sibling repo to the workspace. `repoPath` is resolved to an
|
|
64
83
|
* absolute path. Duplicate detection is by absolute path. Returns
|
|
@@ -103,12 +122,52 @@ export function removeRepo(workspace, pathOrName) {
|
|
|
103
122
|
export async function saveWorkspace(rootPath, workspace) {
|
|
104
123
|
try {
|
|
105
124
|
const filePath = workspaceFilePath(rootPath);
|
|
125
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
106
126
|
await fs.writeFile(filePath, JSON.stringify(workspace, null, 2), 'utf-8');
|
|
107
127
|
}
|
|
108
128
|
catch {
|
|
109
129
|
// best-effort
|
|
110
130
|
}
|
|
111
131
|
}
|
|
132
|
+
async function trustWorkspace(rootPath, workspace) {
|
|
133
|
+
const rootReal = await realpathOrResolve(rootPath);
|
|
134
|
+
const repos = [];
|
|
135
|
+
const seenPaths = new Set();
|
|
136
|
+
const seenNames = new Set();
|
|
137
|
+
for (const repo of workspace.repos) {
|
|
138
|
+
let repoReal;
|
|
139
|
+
try {
|
|
140
|
+
repoReal = await fs.realpath(repo.path);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (!isTrustedSiblingRepo(rootReal, repoReal))
|
|
146
|
+
continue;
|
|
147
|
+
if (seenPaths.has(repoReal) || seenNames.has(repo.name))
|
|
148
|
+
continue;
|
|
149
|
+
seenPaths.add(repoReal);
|
|
150
|
+
seenNames.add(repo.name);
|
|
151
|
+
repos.push({ path: repoReal, name: repo.name });
|
|
152
|
+
if (repos.length >= WORKSPACE_MAX_REPOS)
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
if (repos.length === 0)
|
|
156
|
+
return null;
|
|
157
|
+
return { ...workspace, repos };
|
|
158
|
+
}
|
|
159
|
+
async function realpathOrResolve(inputPath) {
|
|
160
|
+
return fs.realpath(inputPath).catch(() => path.resolve(inputPath));
|
|
161
|
+
}
|
|
162
|
+
function isTrustedSiblingRepo(rootReal, repoReal) {
|
|
163
|
+
if (repoReal === rootReal)
|
|
164
|
+
return false;
|
|
165
|
+
const base = path.dirname(rootReal);
|
|
166
|
+
const relative = path.relative(base, repoReal);
|
|
167
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative))
|
|
168
|
+
return false;
|
|
169
|
+
return relative.split(path.sep).length === 1;
|
|
170
|
+
}
|
|
112
171
|
function workspaceFilePath(rootPath) {
|
|
113
172
|
return path.join(rootPath, WORKSPACE_FILENAME);
|
|
114
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/fixes/eslintFix.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileExists } from '../utils/fileHelpers.js';
|
|
@@ -13,7 +13,11 @@ export const eslintFix = {
|
|
|
13
13
|
if (hasTypeScript) {
|
|
14
14
|
packages.push('@typescript-eslint/parser', '@typescript-eslint/eslint-plugin');
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
// execFile (no shell) keeps the package names off any shell command line,
|
|
17
|
+
// and `--ignore-scripts` blocks the scanned repo's npm lifecycle scripts —
|
|
18
|
+
// rootPath is potentially untrusted, so a plain `npm install` here would be
|
|
19
|
+
// an RCE vector the moment a user runs `projscan fix`. See testFix.
|
|
20
|
+
execFileSync('npm', ['install', '--save-dev', '--ignore-scripts', ...packages], {
|
|
17
21
|
cwd: rootPath,
|
|
18
22
|
stdio: 'pipe',
|
|
19
23
|
timeout: 60_000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslintFix.js","sourceRoot":"","sources":["../../src/fixes/eslintFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"eslintFix.js","sourceRoot":"","sources":["../../src/fixes/eslintFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,SAAS,GAAQ;IAC5B,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,kDAAkD;IAC/D,OAAO,EAAE,gBAAgB;IAEzB,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAE7E,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;QACjF,CAAC;QAED,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,oEAAoE;QACpE,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,QAAQ,CAAC,EAAE;YAC9E,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa;YAC1B,CAAC,CAAC;gBACE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;gBACjC,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,OAAO,EAAE,CAAC,oBAAoB,EAAE,uCAAuC,CAAC;gBACxE,aAAa,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAC9D,KAAK,EAAE,EAAE;aACV;YACH,CAAC,CAAC;gBACE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;gBACjC,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,aAAa,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAC9D,KAAK,EAAE,EAAE;aACV,CAAC;QAEN,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACtC,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
export const prettierFix = {
|
|
@@ -7,7 +7,10 @@ export const prettierFix = {
|
|
|
7
7
|
description: 'Installs Prettier and creates a configuration file',
|
|
8
8
|
issueId: 'missing-prettier',
|
|
9
9
|
async apply(rootPath) {
|
|
10
|
-
|
|
10
|
+
// `--ignore-scripts`: see testFix — rootPath is untrusted, so block the
|
|
11
|
+
// scanned repo's npm lifecycle scripts (RCE vector). execFile (no shell)
|
|
12
|
+
// avoids putting anything on a shell command line.
|
|
13
|
+
execFileSync('npm', ['install', '--save-dev', '--ignore-scripts', 'prettier'], {
|
|
11
14
|
cwd: rootPath,
|
|
12
15
|
stdio: 'pipe',
|
|
13
16
|
timeout: 60_000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prettierFix.js","sourceRoot":"","sources":["../../src/fixes/prettierFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prettierFix.js","sourceRoot":"","sources":["../../src/fixes/prettierFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,MAAM,WAAW,GAAQ;IAC9B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,gCAAgC;IACvC,WAAW,EAAE,oDAAoD;IACjE,OAAO,EAAE,kBAAkB;IAE3B,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,wEAAwE;QACxE,yEAAyE;QACzE,mDAAmD;QACnD,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE;YAC7E,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACtC,OAAO,CACR,CAAC;QAEF,mDAAmD;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACxB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC;gBAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnE,OAAO,CAAC,sCAAsC;YAChD,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,oDAAoD;QACjE,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/fixes/testFix.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileExists } from '../utils/fileHelpers.js';
|
|
@@ -8,7 +8,13 @@ export const testFix = {
|
|
|
8
8
|
description: 'Installs Vitest and creates a sample test file',
|
|
9
9
|
issueId: 'missing-test-framework',
|
|
10
10
|
async apply(rootPath) {
|
|
11
|
-
|
|
11
|
+
// `--ignore-scripts`: rootPath is the scanned (potentially untrusted) repo.
|
|
12
|
+
// Without it, `npm install` would run that repo's preinstall/install/
|
|
13
|
+
// postinstall/prepare lifecycle scripts — and any installed dependency's
|
|
14
|
+
// install scripts — turning `projscan fix` into arbitrary code execution
|
|
15
|
+
// on a hostile repo. execFile (no shell) also keeps package names off any
|
|
16
|
+
// shell command line.
|
|
17
|
+
execFileSync('npm', ['install', '--save-dev', '--ignore-scripts', 'vitest'], {
|
|
12
18
|
cwd: rootPath,
|
|
13
19
|
stdio: 'pipe',
|
|
14
20
|
timeout: 60_000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testFix.js","sourceRoot":"","sources":["../../src/fixes/testFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"testFix.js","sourceRoot":"","sources":["../../src/fixes/testFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAQ;IAC1B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,gDAAgD;IAC7D,OAAO,EAAE,wBAAwB;IAEjC,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,4EAA4E;QAC5E,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,sBAAsB;QACtB,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE;YAC3E,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACtB,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;YACvC,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnE,OAAO,CAAC,sCAAsC;YAChD,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,oDAAoD;QACjE,CAAC;QAED,yCAAyC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAExC,MAAM,UAAU,GAAG;;;;;;;CAOtB,CAAC;QAEE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/mcp/tools/plugin.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
1
2
|
import path from 'node:path';
|
|
2
|
-
import { PLUGIN_PREVIEW_FLAG, discoverPluginManifests, pluginsEnabled, readPluginManifestFile, } from '../../core/plugins.js';
|
|
3
|
+
import { PLUGIN_DIR, PLUGIN_MANIFEST_EXT, PLUGIN_PREVIEW_FLAG, discoverPluginManifests, pluginsEnabled, readPluginManifestFile, } from '../../core/plugins.js';
|
|
4
|
+
import { getPluginTrustStatus } from '../../core/pluginTrust.js';
|
|
3
5
|
/**
|
|
4
6
|
* `projscan_plugin` — discover and validate stable local analyzer/reporter
|
|
5
7
|
* plugins under `<root>/.projscan-plugins/*.projscan-plugin.json`.
|
|
@@ -10,7 +12,7 @@ import { PLUGIN_PREVIEW_FLAG, discoverPluginManifests, pluginsEnabled, readPlugi
|
|
|
10
12
|
*/
|
|
11
13
|
export const pluginTool = {
|
|
12
14
|
name: 'projscan_plugin',
|
|
13
|
-
description: 'Discover and validate stable local analyzer and reporter plugins under .projscan-plugins/. Execution is opt-in via the PROJSCAN_PLUGINS_PREVIEW=1 env flag
|
|
15
|
+
description: 'Discover and validate stable local analyzer and reporter plugins under .projscan-plugins/. Execution is opt-in via the PROJSCAN_PLUGINS_PREVIEW=1 env flag AND each module must be approved with trust-on-first-use; the list reports a per-plugin `trust` status (trusted / untrusted / changed). Approving a plugin is a deliberate human action via the `projscan plugin trust <name>` CLI — it is intentionally not exposed here. Use action:"list" to see what is discoverable and whether it would run, action:"validate" to check a manifest before committing it.',
|
|
14
16
|
inputSchema: {
|
|
15
17
|
type: 'object',
|
|
16
18
|
properties: {
|
|
@@ -21,7 +23,7 @@ export const pluginTool = {
|
|
|
21
23
|
},
|
|
22
24
|
manifest_path: {
|
|
23
25
|
type: 'string',
|
|
24
|
-
description: '"validate" only — repo-relative
|
|
26
|
+
description: '"validate" only — repo-relative path under .projscan-plugins/ to a *.projscan-plugin.json file.',
|
|
25
27
|
},
|
|
26
28
|
},
|
|
27
29
|
},
|
|
@@ -30,33 +32,42 @@ export const pluginTool = {
|
|
|
30
32
|
switch (action) {
|
|
31
33
|
case 'list': {
|
|
32
34
|
const entries = await discoverPluginManifests(rootPath);
|
|
35
|
+
const plugins = await Promise.all(entries.map(async (e) => {
|
|
36
|
+
if (!e.manifest) {
|
|
37
|
+
return { manifestPath: e.manifestPath, ok: false, error: e.error, diagnostic: e.diagnostic };
|
|
38
|
+
}
|
|
39
|
+
const modulePath = path.resolve(path.dirname(e.manifestPath), e.manifest.module);
|
|
40
|
+
const trust = await getPluginTrustStatus(modulePath);
|
|
41
|
+
return {
|
|
42
|
+
manifestPath: e.manifestPath,
|
|
43
|
+
ok: true,
|
|
44
|
+
name: e.manifest.name,
|
|
45
|
+
kind: e.manifest.kind,
|
|
46
|
+
module: e.manifest.module,
|
|
47
|
+
...(e.manifest.kind === 'analyzer'
|
|
48
|
+
? { category: e.manifest.category }
|
|
49
|
+
: { commands: e.manifest.commands }),
|
|
50
|
+
description: e.manifest.description,
|
|
51
|
+
// Whether this module would actually execute: even with the
|
|
52
|
+
// preview flag on, an untrusted/changed module is skipped.
|
|
53
|
+
trust: trust.status,
|
|
54
|
+
};
|
|
55
|
+
}));
|
|
33
56
|
return {
|
|
34
57
|
enabled: pluginsEnabled(),
|
|
35
58
|
envFlag: PLUGIN_PREVIEW_FLAG,
|
|
36
59
|
count: entries.length,
|
|
37
|
-
plugins
|
|
38
|
-
manifestPath: e.manifestPath,
|
|
39
|
-
ok: e.manifest !== null,
|
|
40
|
-
...(e.manifest
|
|
41
|
-
? {
|
|
42
|
-
name: e.manifest.name,
|
|
43
|
-
kind: e.manifest.kind,
|
|
44
|
-
module: e.manifest.module,
|
|
45
|
-
...(e.manifest.kind === 'analyzer'
|
|
46
|
-
? { category: e.manifest.category }
|
|
47
|
-
: { commands: e.manifest.commands }),
|
|
48
|
-
description: e.manifest.description,
|
|
49
|
-
}
|
|
50
|
-
: { error: e.error, diagnostic: e.diagnostic }),
|
|
51
|
-
})),
|
|
60
|
+
plugins,
|
|
52
61
|
};
|
|
53
62
|
}
|
|
54
63
|
case 'validate': {
|
|
55
64
|
const p = typeof args.manifest_path === 'string' ? args.manifest_path : '';
|
|
56
65
|
if (!p)
|
|
57
66
|
throw new Error('validate action requires a "manifest_path" argument');
|
|
58
|
-
const
|
|
59
|
-
|
|
67
|
+
const resolved = await resolveMcpManifestPath(rootPath, p);
|
|
68
|
+
if (!resolved.ok)
|
|
69
|
+
return resolved.failure;
|
|
70
|
+
const result = await readPluginManifestFile(resolved.manifestPath);
|
|
60
71
|
return result.ok
|
|
61
72
|
? { ok: true, manifest: result.manifest }
|
|
62
73
|
: { ok: false, error: result.reason, diagnostic: result.diagnostic };
|
|
@@ -66,4 +77,45 @@ export const pluginTool = {
|
|
|
66
77
|
}
|
|
67
78
|
},
|
|
68
79
|
};
|
|
80
|
+
async function resolveMcpManifestPath(rootPath, inputPath) {
|
|
81
|
+
if (path.isAbsolute(inputPath)) {
|
|
82
|
+
return invalidManifestPath('manifest_path must be relative to the project root');
|
|
83
|
+
}
|
|
84
|
+
if (inputPath.split(/[/\\]/).some((segment) => segment === '..')) {
|
|
85
|
+
return invalidManifestPath('manifest_path must not contain ".." path segments');
|
|
86
|
+
}
|
|
87
|
+
if (!inputPath.endsWith(PLUGIN_MANIFEST_EXT)) {
|
|
88
|
+
return invalidManifestPath(`manifest_path must end with ${PLUGIN_MANIFEST_EXT}`);
|
|
89
|
+
}
|
|
90
|
+
const rootReal = await fs.realpath(rootPath).catch(() => path.resolve(rootPath));
|
|
91
|
+
const pluginDir = path.join(rootReal, PLUGIN_DIR);
|
|
92
|
+
const pluginDirReal = await fs.realpath(pluginDir).catch(() => pluginDir);
|
|
93
|
+
const candidate = path.resolve(rootReal, inputPath);
|
|
94
|
+
if (!isInsideDirectory(candidate, pluginDirReal)) {
|
|
95
|
+
return invalidManifestPath(`manifest_path must live under ${PLUGIN_DIR}/`);
|
|
96
|
+
}
|
|
97
|
+
const candidateReal = await fs.realpath(candidate).catch(() => candidate);
|
|
98
|
+
if (!isInsideDirectory(candidateReal, pluginDirReal)) {
|
|
99
|
+
return invalidManifestPath(`manifest_path must resolve under ${PLUGIN_DIR}/`);
|
|
100
|
+
}
|
|
101
|
+
return { ok: true, manifestPath: candidateReal };
|
|
102
|
+
}
|
|
103
|
+
function isInsideDirectory(candidate, directory) {
|
|
104
|
+
const relative = path.relative(directory, candidate);
|
|
105
|
+
return relative.length > 0 && !relative.startsWith('..') && !path.isAbsolute(relative);
|
|
106
|
+
}
|
|
107
|
+
function invalidManifestPath(message) {
|
|
108
|
+
return {
|
|
109
|
+
ok: false,
|
|
110
|
+
failure: {
|
|
111
|
+
ok: false,
|
|
112
|
+
error: message,
|
|
113
|
+
diagnostic: {
|
|
114
|
+
code: 'invalid-manifest-path',
|
|
115
|
+
message,
|
|
116
|
+
hint: `Use a path like ${PLUGIN_DIR}/policy${PLUGIN_MANIFEST_EXT}.`,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
69
121
|
//# sourceMappingURL=plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/mcp/tools/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/mcp/tools/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pluginsEnabled } from '../../core/plugins.js';
|
|
1
2
|
import { computeWorkplan, isWorkplanMode } from '../../core/workplan.js';
|
|
2
3
|
const WORKPLAN_MODES = [
|
|
3
4
|
'before_edit',
|
|
@@ -37,7 +38,7 @@ export const workplanTool = {
|
|
|
37
38
|
},
|
|
38
39
|
enable_plugins: {
|
|
39
40
|
type: 'boolean',
|
|
40
|
-
description: '
|
|
41
|
+
description: 'Request local analyzer plugin evidence only when this MCP server process already has PROJSCAN_PLUGINS_PREVIEW=1. This argument never enables plugin execution by itself.',
|
|
41
42
|
},
|
|
42
43
|
max_tokens: {
|
|
43
44
|
type: 'number',
|
|
@@ -57,7 +58,7 @@ export const workplanTool = {
|
|
|
57
58
|
maxTasks: typeof args.max_tasks === 'number' && Number.isFinite(args.max_tasks)
|
|
58
59
|
? args.max_tasks
|
|
59
60
|
: undefined,
|
|
60
|
-
enablePlugins: args.enable_plugins === true,
|
|
61
|
+
enablePlugins: args.enable_plugins === true && pluginsEnabled(),
|
|
61
62
|
}),
|
|
62
63
|
};
|
|
63
64
|
},
|