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.
Files changed (44) hide show
  1. package/README.md +25 -23
  2. package/dist/cli/commands/plugin.js +134 -2
  3. package/dist/cli/commands/plugin.js.map +1 -1
  4. package/dist/cli/commands/workplan.js +1 -1
  5. package/dist/cli/commands/workplan.js.map +1 -1
  6. package/dist/cli/commands/workspace.js +3 -2
  7. package/dist/cli/commands/workspace.js.map +1 -1
  8. package/dist/core/pluginDx.d.ts +1 -0
  9. package/dist/core/pluginDx.js +77 -18
  10. package/dist/core/pluginDx.js.map +1 -1
  11. package/dist/core/pluginTrust.d.ts +56 -0
  12. package/dist/core/pluginTrust.js +138 -0
  13. package/dist/core/pluginTrust.js.map +1 -0
  14. package/dist/core/plugins.d.ts +1 -1
  15. package/dist/core/plugins.js +33 -0
  16. package/dist/core/plugins.js.map +1 -1
  17. package/dist/core/preflight.js +4 -16
  18. package/dist/core/preflight.js.map +1 -1
  19. package/dist/core/privacy.js +8 -2
  20. package/dist/core/privacy.js.map +1 -1
  21. package/dist/core/workspace.d.ts +4 -2
  22. package/dist/core/workspace.js +63 -4
  23. package/dist/core/workspace.js.map +1 -1
  24. package/dist/fixes/eslintFix.js +6 -2
  25. package/dist/fixes/eslintFix.js.map +1 -1
  26. package/dist/fixes/prettierFix.js +5 -2
  27. package/dist/fixes/prettierFix.js.map +1 -1
  28. package/dist/fixes/testFix.js +8 -2
  29. package/dist/fixes/testFix.js.map +1 -1
  30. package/dist/mcp/tools/plugin.js +72 -20
  31. package/dist/mcp/tools/plugin.js.map +1 -1
  32. package/dist/mcp/tools/workplan.js +3 -2
  33. package/dist/mcp/tools/workplan.js.map +1 -1
  34. package/dist/mcp/tools/workspaceGraph.js +31 -0
  35. package/dist/mcp/tools/workspaceGraph.js.map +1 -1
  36. package/dist/projscan-sbom.cdx.json +87 -185
  37. package/dist/tool-manifest.json +5 -5
  38. package/dist/types.d.ts +7 -0
  39. package/dist/utils/formatSupport.d.ts +2 -0
  40. package/dist/utils/formatSupport.js +2 -0
  41. package/dist/utils/formatSupport.js.map +1 -1
  42. package/docs/PLUGIN-AUTHORING.md +41 -13
  43. package/docs/PLUGIN-GALLERY.md +2 -1
  44. package/package.json +2 -2
@@ -2,7 +2,7 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import { scanRepository } from './repositoryScanner.js';
5
- import { PLUGIN_DIR, PLUGIN_MANIFEST_EXT, PLUGIN_REPORTER_COMMANDS, readPluginManifestFile, } from './plugins.js';
5
+ import { PLUGIN_DIR, PLUGIN_PREVIEW_FLAG, PLUGIN_MANIFEST_EXT, PLUGIN_REPORTER_COMMANDS, pluginsEnabled, readPluginManifestFile, } from './plugins.js';
6
6
  const dynamicImport = new Function('specifier', 'return import(specifier)');
7
7
  export async function initPlugin(rootPath, options = {}) {
8
8
  const kind = options.kind ?? 'analyzer';
@@ -34,7 +34,34 @@ export async function testPlugin(manifestPath, options = {}) {
34
34
  }
35
35
  const manifest = manifestResult.manifest;
36
36
  const modulePath = path.resolve(path.dirname(resolvedManifestPath), manifest.module);
37
+ const guidance = await buildPluginTestGuidance(resolvedManifestPath, modulePath);
38
+ const staticCheck = await checkModuleReadable(modulePath);
39
+ if (!staticCheck.ok) {
40
+ return failResult(resolvedManifestPath, {
41
+ code: 'module-load-error',
42
+ severity: 'error',
43
+ message: staticCheck.message,
44
+ }, guidance, staticExecution());
45
+ }
46
+ if (options.execute !== true) {
47
+ return {
48
+ schemaVersion: 1,
49
+ manifestPath: resolvedManifestPath,
50
+ ok: true,
51
+ diagnostics: [],
52
+ ...guidance,
53
+ execution: staticExecution(),
54
+ };
55
+ }
56
+ if (!pluginsEnabled()) {
57
+ return failResult(resolvedManifestPath, {
58
+ code: 'plugin-execution-disabled',
59
+ severity: 'error',
60
+ message: `plugin execution requires ${PLUGIN_PREVIEW_FLAG}=1 and --execute`,
61
+ }, guidance, staticExecution(`Set ${PLUGIN_PREVIEW_FLAG}=1 and pass --execute to import and run local plugin code.`));
62
+ }
37
63
  let exportsObj;
64
+ const executed = executeMode();
38
65
  try {
39
66
  const mod = await importPluginModule(modulePath);
40
67
  exportsObj = (mod.default ?? mod);
@@ -44,12 +71,11 @@ export async function testPlugin(manifestPath, options = {}) {
44
71
  code: 'module-load-error',
45
72
  severity: 'error',
46
73
  message: `plugin module failed to load: ${err instanceof Error ? err.message : String(err)}`,
47
- });
74
+ }, guidance, executed);
48
75
  }
49
- const guidance = await buildPluginTestGuidance(resolvedManifestPath, modulePath);
50
76
  return manifest.kind === 'analyzer'
51
- ? testAnalyzerPlugin(resolvedManifestPath, manifest, exportsObj, options, guidance)
52
- : testReporterPlugin(resolvedManifestPath, manifest, exportsObj, options, guidance);
77
+ ? testAnalyzerPlugin(resolvedManifestPath, manifest, exportsObj, options, guidance, executed)
78
+ : testReporterPlugin(resolvedManifestPath, manifest, exportsObj, options, guidance, executed);
53
79
  }
54
80
  function analyzerManifest(name, modulePath) {
55
81
  return {
@@ -115,13 +141,13 @@ function reporterTemplate(name) {
115
141
  };
116
142
  `;
117
143
  }
118
- async function testAnalyzerPlugin(manifestPath, manifest, exportsObj, options, guidance) {
144
+ async function testAnalyzerPlugin(manifestPath, manifest, exportsObj, options, guidance, execution) {
119
145
  if (typeof exportsObj.check !== 'function') {
120
146
  return failResult(manifestPath, {
121
147
  code: 'invalid-analyzer-export',
122
148
  severity: 'error',
123
149
  message: `analyzer plugin "${manifest.name}" missing required export "check"`,
124
- });
150
+ }, guidance, execution);
125
151
  }
126
152
  const rootPath = options.fixtureRoot ?? path.dirname(path.dirname(manifestPath));
127
153
  const scan = await scanRepository(rootPath);
@@ -134,14 +160,14 @@ async function testAnalyzerPlugin(manifestPath, manifest, exportsObj, options, g
134
160
  code: 'analyzer-runtime-error',
135
161
  severity: 'error',
136
162
  message: `analyzer plugin "${manifest.name}" threw: ${err instanceof Error ? err.message : String(err)}`,
137
- });
163
+ }, guidance, execution);
138
164
  }
139
165
  if (!Array.isArray(rawIssues)) {
140
166
  return failResult(manifestPath, {
141
167
  code: 'invalid-analyzer-result',
142
168
  severity: 'error',
143
169
  message: `analyzer plugin "${manifest.name}" returned ${typeof rawIssues}; expected Issue[]`,
144
- });
170
+ }, guidance, execution);
145
171
  }
146
172
  const issues = rawIssues;
147
173
  const malformed = issues.find((issue) => !isIssueShape(issue));
@@ -150,7 +176,7 @@ async function testAnalyzerPlugin(manifestPath, manifest, exportsObj, options, g
150
176
  code: 'invalid-analyzer-issue',
151
177
  severity: 'error',
152
178
  message: `analyzer plugin "${manifest.name}" returned a malformed issue`,
153
- });
179
+ }, guidance, execution);
154
180
  }
155
181
  return {
156
182
  schemaVersion: 1,
@@ -158,16 +184,17 @@ async function testAnalyzerPlugin(manifestPath, manifest, exportsObj, options, g
158
184
  ok: true,
159
185
  diagnostics: [],
160
186
  ...guidance,
187
+ execution,
161
188
  analyzer: { issues },
162
189
  };
163
190
  }
164
- async function testReporterPlugin(manifestPath, manifest, exportsObj, options, guidance) {
191
+ async function testReporterPlugin(manifestPath, manifest, exportsObj, options, guidance, execution) {
165
192
  if (typeof exportsObj.render !== 'function') {
166
193
  return failResult(manifestPath, {
167
194
  code: 'invalid-reporter-export',
168
195
  severity: 'error',
169
196
  message: `reporter plugin "${manifest.name}" missing required export "render"`,
170
- });
197
+ }, guidance, execution);
171
198
  }
172
199
  const rootPath = options.fixtureRoot ?? path.dirname(path.dirname(manifestPath));
173
200
  const outputs = [];
@@ -187,14 +214,14 @@ async function testReporterPlugin(manifestPath, manifest, exportsObj, options, g
187
214
  code: 'reporter-render-error',
188
215
  severity: 'error',
189
216
  message: `reporter plugin "${manifest.name}" threw for ${command}: ${err instanceof Error ? err.message : String(err)}`,
190
- });
217
+ }, guidance, execution);
191
218
  }
192
219
  if (typeof text !== 'string') {
193
220
  return failResult(manifestPath, {
194
221
  code: 'reporter-render-error',
195
222
  severity: 'error',
196
223
  message: `reporter plugin "${manifest.name}" returned ${typeof text}; expected string`,
197
- });
224
+ }, guidance, execution);
198
225
  }
199
226
  outputs.push({ command, text });
200
227
  }
@@ -204,6 +231,7 @@ async function testReporterPlugin(manifestPath, manifest, exportsObj, options, g
204
231
  ok: true,
205
232
  diagnostics: [],
206
233
  ...guidance,
234
+ execution,
207
235
  reporter: { outputs },
208
236
  };
209
237
  }
@@ -235,7 +263,8 @@ async function buildPluginTestGuidance(manifestPath, modulePath) {
235
263
  commands: {
236
264
  validate: `projscan plugin validate ${manifestPath}`,
237
265
  test: `projscan plugin test ${manifestPath} --format json`,
238
- enable: `PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor`,
266
+ execute: `${PLUGIN_PREVIEW_FLAG}=1 projscan plugin test ${manifestPath} --execute --format json`,
267
+ enable: `${PLUGIN_PREVIEW_FLAG}=1 projscan doctor`,
239
268
  },
240
269
  context: {
241
270
  requested,
@@ -246,13 +275,42 @@ async function buildPluginTestGuidance(manifestPath, modulePath) {
246
275
  },
247
276
  };
248
277
  }
249
- function failResult(manifestPath, diagnostic) {
278
+ function failResult(manifestPath, diagnostic, guidance = defaultPluginTestGuidance(manifestPath), execution = staticExecution()) {
250
279
  return {
251
280
  schemaVersion: 1,
252
281
  manifestPath,
253
282
  ok: false,
254
283
  diagnostics: [diagnostic],
255
- ...defaultPluginTestGuidance(manifestPath),
284
+ ...guidance,
285
+ execution,
286
+ };
287
+ }
288
+ async function checkModuleReadable(modulePath) {
289
+ try {
290
+ await fs.access(modulePath);
291
+ return { ok: true };
292
+ }
293
+ catch (err) {
294
+ return {
295
+ ok: false,
296
+ message: `plugin module is not readable at ${modulePath}: ${err instanceof Error ? err.message : String(err)}`,
297
+ };
298
+ }
299
+ }
300
+ function staticExecution(note = 'Static validation completed without importing or running local plugin code.') {
301
+ return {
302
+ requested: false,
303
+ executed: false,
304
+ mode: 'static',
305
+ note,
306
+ };
307
+ }
308
+ function executeMode() {
309
+ return {
310
+ requested: true,
311
+ executed: true,
312
+ mode: 'execute',
313
+ note: 'Local plugin module was imported and executed because --execute was requested and the preview flag was enabled.',
256
314
  };
257
315
  }
258
316
  function defaultPluginTestGuidance(manifestPath) {
@@ -265,7 +323,8 @@ function defaultPluginTestGuidance(manifestPath) {
265
323
  commands: {
266
324
  validate: `projscan plugin validate ${manifestPath}`,
267
325
  test: `projscan plugin test ${manifestPath} --format json`,
268
- enable: 'PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor',
326
+ execute: `${PLUGIN_PREVIEW_FLAG}=1 projscan plugin test ${manifestPath} --execute --format json`,
327
+ enable: `${PLUGIN_PREVIEW_FLAG}=1 projscan doctor`,
269
328
  },
270
329
  context: {
271
330
  requested: false,
@@ -1 +1 @@
1
- {"version":3,"file":"pluginDx.js","sourceRoot":"","sources":["../../src/core/pluginDx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GAOvB,MAAM,cAAc,CAAC;AAItB,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAkB,CAAC;AAgB7F,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAgB,EAChB,UAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,GAAG,mBAAmB,EAAE,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;IAE3D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAErC,MAAM,QAAQ,GACZ,IAAI,KAAK,UAAU;QACjB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,QAAQ,MAAM,CAAC;QAC7C,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,QAAQ,MAAM,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE3F,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,YAAoB,EACpB,UAA6B,EAAE;IAE/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;IAC1E,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,oBAAoB,EAAE;YACtC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI;YACpC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,OAAO;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,UAAmC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAA4B,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,UAAU,CAAC,oBAAoB,EAAE;YACtC,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC7F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;QACjC,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;QACnF,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,UAAkB;IACxD,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,gCAAgC;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,UAAkB;IACxD,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,CAAC,GAAG,wBAAwB,CAAC;QACvC,WAAW,EAAE,yBAAyB;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO;;;;;;;;;;;;;;;;kBAgBS,uBAAuB,CAAC,IAAI,CAAC;;;;;;;;;;;CAW9C,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO;;;;;;;;cAQK,uBAAuB,CAAC,IAAI,CAAC;;;CAG1C,CAAC;AACF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,QAAgC,EAChC,UAAmC,EACnC,OAA0B,EAC1B,QAA8B;IAE9B,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,mCAAmC;SAC9E,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,SAAkB,CAAC;IACvB,IAAI,CAAC;QACH,SAAS,GAAG,MAAO,UAAU,CAAC,KAAwC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,UAAU,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACzG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,cAAc,OAAO,SAAS,oBAAoB;SAC7F,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,SAAoB,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,8BAA8B;SACzE,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,YAAY;QACZ,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,EAAE;QACf,GAAG,QAAQ;QACX,QAAQ,EAAE,EAAE,MAAM,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,QAAgC,EAChC,UAAmC,EACnC,OAA0B,EAC1B,QAA8B;IAE9B,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,oCAAoC;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,OAAO,GAA0B;YACrC,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACxC,CAAC;QACF,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAO,UAAU,CAAC,MAA0C,CAAC,OAAO,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,UAAU,CAAC,YAAY,EAAE;gBAC9B,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,eAAe,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACxH,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC,YAAY,EAAE;gBAC9B,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,cAAc,OAAO,IAAI,mBAAmB;aACvF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,YAAY;QACZ,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,EAAE;QACf,GAAG,QAAQ;QACX,QAAQ,EAAE,EAAE,OAAO,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA8B;IAC3D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACxD,KAAK,SAAS;YACZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAChD,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAChG,CAAC;AACH,CAAC;AAID,KAAK,UAAU,uBAAuB,CAAC,YAAoB,EAAE,UAAmB;IAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,YAAY,GAAgD,EAAE,CAAC;IACrE,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7E,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxG,OAAO;QACL,KAAK,EAAE;YACL,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,iFAAiF;SAC5F;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,4BAA4B,YAAY,EAAE;YACpD,IAAI,EAAE,wBAAwB,YAAY,gBAAgB;YAC1D,MAAM,EAAE,4CAA4C;SACrD;QACD,OAAO,EAAE;YACP,SAAS;YACT,YAAY;YACZ,IAAI,EAAE,SAAS;gBACb,CAAC,CAAC,8GAA8G;gBAChH,CAAC,CAAC,mEAAmE;SACxE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,YAAoB,EACpB,UAAsE;IAEtE,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,YAAY;QACZ,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,GAAG,yBAAyB,CAAC,YAAY,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,YAAoB;IACrD,OAAO;QACL,KAAK,EAAE;YACL,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,iFAAiF;SAC5F;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,4BAA4B,YAAY,EAAE;YACpD,IAAI,EAAE,wBAAwB,YAAY,gBAAgB;YAC1D,MAAM,EAAE,4CAA4C;SACrD;QACD,OAAO,EAAE;YACP,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,EAAE;YAChB,IAAI,EAAE,iGAAiG;SACxG;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,MAAM,GAAG,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,IAAI,GAAG,IAAI;SACd,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,QAAQ,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;QACzF,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvE,IAAI,CAAC,CAAC,GAAG,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE,CAAC;YACtG,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,UAAkB;IAC5D,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,IAAI,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,UAAU,IAAI,CAAC,CACxE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAChB;SACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,8DAA8D,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAClH,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,4CAA4C,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QAC3F,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzB,OAAO,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,GAAG,WAAW,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAA6B,CAAC;AACtG,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAI3C,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAC7B,yEAAyE,EACzE,GAAG,EAAE;QACH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC,CACF,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"pluginDx.js","sourceRoot":"","sources":["../../src/core/pluginDx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Plugin trust-on-first-use (TOFU) store.
3
+ *
4
+ * The plugin preview (PROJSCAN_PLUGINS_PREVIEW=1) executes JavaScript from the
5
+ * SCANNED repository's `.projscan-plugins/` directory. The env flag is a coarse
6
+ * on/off switch; once a user sets it (e.g. globally in a shell profile), every
7
+ * repo they later scan could silently run attacker-authored code.
8
+ *
9
+ * TOFU narrows that: a plugin module only executes if its exact bytes have been
10
+ * explicitly approved via `projscan plugin trust <name>`. Approval is recorded
11
+ * as a SHA-256 of the module file, keyed by its canonical (realpath) location.
12
+ * If the module's content later changes, it reverts to "changed" (untrusted)
13
+ * and must be re-approved — so a trusted plugin can't be swapped for a hostile
14
+ * payload behind the user's back.
15
+ *
16
+ * SECURITY-CRITICAL: the store lives OUTSIDE any scanned repo (user config dir,
17
+ * overridable for tests via PROJSCAN_PLUGIN_TRUST_HOME). A repo-local store
18
+ * would let a malicious repo ship a pre-seeded trust file that auto-approves
19
+ * its own plugin, defeating the whole mechanism.
20
+ */
21
+ export declare const PLUGIN_TRUST_HOME_ENV = "PROJSCAN_PLUGIN_TRUST_HOME";
22
+ export type PluginTrustStatus = 'trusted' | 'untrusted' | 'changed';
23
+ export interface PluginTrustEntry {
24
+ /** Canonical (realpath) absolute path of the approved module file. */
25
+ modulePath: string;
26
+ /** SHA-256 of the module file's bytes at the time it was trusted. */
27
+ sha256: string;
28
+ /** Plugin name from the manifest, for human-readable listings. */
29
+ name: string;
30
+ /** ISO timestamp of approval. */
31
+ trustedAt: string;
32
+ }
33
+ export interface PluginTrustResult {
34
+ status: PluginTrustStatus;
35
+ /** Hash of the module file as it exists on disk now; null if unreadable. */
36
+ sha256: string | null;
37
+ /** The stored approval for this module path, if any. */
38
+ entry: PluginTrustEntry | null;
39
+ }
40
+ /** SHA-256 of a file's bytes, or null when the file can't be read. */
41
+ export declare function hashModuleFile(modulePath: string): Promise<string | null>;
42
+ /**
43
+ * Determine whether a plugin module is trusted to execute. Compares the module
44
+ * file's current hash against the approved hash recorded for its canonical path.
45
+ */
46
+ export declare function getPluginTrustStatus(modulePath: string): Promise<PluginTrustResult>;
47
+ /**
48
+ * Record approval for the module's current bytes. Upserts by canonical path, so
49
+ * re-trusting after a content change replaces the stale hash. Throws if the
50
+ * module file cannot be read (you cannot approve a module that isn't there).
51
+ */
52
+ export declare function trustPlugin(modulePath: string, name: string): Promise<PluginTrustEntry>;
53
+ /** Remove a module's approval. Returns true if an entry was removed. */
54
+ export declare function untrustPlugin(modulePath: string): Promise<boolean>;
55
+ /** All recorded approvals. */
56
+ export declare function listTrustedPlugins(): Promise<PluginTrustEntry[]>;
@@ -0,0 +1,138 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { atomicWriteFile } from '../utils/atomicWrite.js';
6
+ /**
7
+ * Plugin trust-on-first-use (TOFU) store.
8
+ *
9
+ * The plugin preview (PROJSCAN_PLUGINS_PREVIEW=1) executes JavaScript from the
10
+ * SCANNED repository's `.projscan-plugins/` directory. The env flag is a coarse
11
+ * on/off switch; once a user sets it (e.g. globally in a shell profile), every
12
+ * repo they later scan could silently run attacker-authored code.
13
+ *
14
+ * TOFU narrows that: a plugin module only executes if its exact bytes have been
15
+ * explicitly approved via `projscan plugin trust <name>`. Approval is recorded
16
+ * as a SHA-256 of the module file, keyed by its canonical (realpath) location.
17
+ * If the module's content later changes, it reverts to "changed" (untrusted)
18
+ * and must be re-approved — so a trusted plugin can't be swapped for a hostile
19
+ * payload behind the user's back.
20
+ *
21
+ * SECURITY-CRITICAL: the store lives OUTSIDE any scanned repo (user config dir,
22
+ * overridable for tests via PROJSCAN_PLUGIN_TRUST_HOME). A repo-local store
23
+ * would let a malicious repo ship a pre-seeded trust file that auto-approves
24
+ * its own plugin, defeating the whole mechanism.
25
+ */
26
+ export const PLUGIN_TRUST_HOME_ENV = 'PROJSCAN_PLUGIN_TRUST_HOME';
27
+ const TRUST_FILE = 'plugin-trust.json';
28
+ const SCHEMA_VERSION = 1;
29
+ function trustHomeDir() {
30
+ const override = process.env[PLUGIN_TRUST_HOME_ENV];
31
+ if (override)
32
+ return path.resolve(override);
33
+ if (process.env.XDG_CONFIG_HOME)
34
+ return path.join(process.env.XDG_CONFIG_HOME, 'projscan');
35
+ return path.join(os.homedir(), '.config', 'projscan');
36
+ }
37
+ function trustFilePath() {
38
+ return path.join(trustHomeDir(), TRUST_FILE);
39
+ }
40
+ /** Canonical key for a module path: realpath if it exists, else resolved. */
41
+ async function canonicalize(modulePath) {
42
+ try {
43
+ return await fs.realpath(modulePath);
44
+ }
45
+ catch {
46
+ return path.resolve(modulePath);
47
+ }
48
+ }
49
+ /** SHA-256 of a file's bytes, or null when the file can't be read. */
50
+ export async function hashModuleFile(modulePath) {
51
+ try {
52
+ const bytes = await fs.readFile(modulePath);
53
+ return crypto.createHash('sha256').update(bytes).digest('hex');
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ async function readStore() {
60
+ try {
61
+ const raw = await fs.readFile(trustFilePath(), 'utf-8');
62
+ const parsed = JSON.parse(raw);
63
+ const entries = Array.isArray(parsed.entries)
64
+ ? parsed.entries.filter(isWellShapedEntry)
65
+ : [];
66
+ return { schemaVersion: SCHEMA_VERSION, entries };
67
+ }
68
+ catch {
69
+ return { schemaVersion: SCHEMA_VERSION, entries: [] };
70
+ }
71
+ }
72
+ async function writeStore(store) {
73
+ const dir = trustHomeDir();
74
+ await fs.mkdir(dir, { recursive: true });
75
+ await atomicWriteFile(trustFilePath(), JSON.stringify(store, null, 2) + '\n');
76
+ }
77
+ function isWellShapedEntry(value) {
78
+ if (!value || typeof value !== 'object')
79
+ return false;
80
+ const e = value;
81
+ return (typeof e.modulePath === 'string' &&
82
+ typeof e.sha256 === 'string' &&
83
+ typeof e.name === 'string' &&
84
+ typeof e.trustedAt === 'string');
85
+ }
86
+ /**
87
+ * Determine whether a plugin module is trusted to execute. Compares the module
88
+ * file's current hash against the approved hash recorded for its canonical path.
89
+ */
90
+ export async function getPluginTrustStatus(modulePath) {
91
+ const key = await canonicalize(modulePath);
92
+ const [store, sha256] = await Promise.all([readStore(), hashModuleFile(modulePath)]);
93
+ const entry = store.entries.find((e) => e.modulePath === key) ?? null;
94
+ if (!entry)
95
+ return { status: 'untrusted', sha256, entry: null };
96
+ if (sha256 !== null && sha256 === entry.sha256)
97
+ return { status: 'trusted', sha256, entry };
98
+ return { status: 'changed', sha256, entry };
99
+ }
100
+ /**
101
+ * Record approval for the module's current bytes. Upserts by canonical path, so
102
+ * re-trusting after a content change replaces the stale hash. Throws if the
103
+ * module file cannot be read (you cannot approve a module that isn't there).
104
+ */
105
+ export async function trustPlugin(modulePath, name) {
106
+ const key = await canonicalize(modulePath);
107
+ const sha256 = await hashModuleFile(modulePath);
108
+ if (sha256 === null) {
109
+ throw new Error(`Cannot trust "${modulePath}": module file is unreadable or missing.`);
110
+ }
111
+ const entry = {
112
+ modulePath: key,
113
+ sha256,
114
+ name,
115
+ trustedAt: new Date().toISOString(),
116
+ };
117
+ const store = await readStore();
118
+ store.entries = store.entries.filter((e) => e.modulePath !== key);
119
+ store.entries.push(entry);
120
+ await writeStore(store);
121
+ return entry;
122
+ }
123
+ /** Remove a module's approval. Returns true if an entry was removed. */
124
+ export async function untrustPlugin(modulePath) {
125
+ const key = await canonicalize(modulePath);
126
+ const store = await readStore();
127
+ const before = store.entries.length;
128
+ store.entries = store.entries.filter((e) => e.modulePath !== key);
129
+ if (store.entries.length === before)
130
+ return false;
131
+ await writeStore(store);
132
+ return true;
133
+ }
134
+ /** All recorded approvals. */
135
+ export async function listTrustedPlugins() {
136
+ return (await readStore()).entries;
137
+ }
138
+ //# sourceMappingURL=pluginTrust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginTrust.js","sourceRoot":"","sources":["../../src/core/pluginTrust.ts"],"names":[],"mappings":"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"}
@@ -134,7 +134,7 @@ export declare function renderReporterPlugin(plugin: LoadedReporterPlugin, conte
134
134
  */
135
135
  export declare function runAnalyzerPlugins(plugins: LoadedPlugin[], rootPath: string, files: FileEntry[], context?: PluginAnalyzerContext): Promise<Issue[]>;
136
136
  export interface PluginDiagnostic {
137
- code: 'invalid-manifest' | 'unsupported-schema-version' | 'invalid-name' | 'unsupported-kind' | 'invalid-module' | 'invalid-category' | 'invalid-commands' | 'invalid-description' | 'invalid-json' | 'read-error' | 'plugins-disabled' | 'reporter-not-found' | 'reporter-unsupported-command' | 'invalid-reporter-export' | 'reporter-load-error' | 'reporter-render-error';
137
+ code: 'invalid-manifest' | 'unsupported-schema-version' | 'invalid-name' | 'unsupported-kind' | 'invalid-module' | 'invalid-category' | 'invalid-commands' | 'invalid-description' | 'invalid-manifest-path' | 'invalid-json' | 'read-error' | 'plugins-disabled' | 'reporter-not-found' | 'reporter-unsupported-command' | 'invalid-reporter-export' | 'reporter-load-error' | 'reporter-render-error' | 'plugin-untrusted';
138
138
  message: string;
139
139
  field?: string;
140
140
  hint?: string;
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
+ import { getPluginTrustStatus } from './pluginTrust.js';
4
5
  /**
5
6
  * Stable local plugin API (2.0+).
6
7
  *
@@ -118,6 +119,14 @@ export async function loadPlugins(rootPath) {
118
119
  const modulePath = path.resolve(path.dirname(entry.manifestPath), entry.manifest.module);
119
120
  try {
120
121
  await assertPluginModuleReadable(entry.manifest.module, modulePath);
122
+ // Trust-on-first-use gate: never import (execute) a module the user
123
+ // hasn't explicitly approved. The preview flag opts a user into the
124
+ // plugin *system*; trust opts them into each specific module's bytes.
125
+ const trust = await getPluginTrustStatus(modulePath);
126
+ if (trust.status !== 'trusted') {
127
+ process.stderr.write(untrustedAnalyzerWarning(entry.manifest.name, trust.status));
128
+ continue;
129
+ }
121
130
  const mod = await importPluginModule(modulePath);
122
131
  const exportsObj = (mod.default ?? mod);
123
132
  if (typeof exportsObj.check !== 'function') {
@@ -189,6 +198,13 @@ async function loadReporterPlugin(manifest, manifestPath) {
189
198
  const modulePath = path.resolve(path.dirname(manifestPath), manifest.module);
190
199
  try {
191
200
  await assertPluginModuleReadable(manifest.module, modulePath);
201
+ // Trust-on-first-use gate — see loadPlugins. Reporters render to stdout,
202
+ // but importing the module still runs its top-level code, so the same
203
+ // approval requirement applies.
204
+ const trust = await getPluginTrustStatus(modulePath);
205
+ if (trust.status !== 'trusted') {
206
+ return pluginRuntimeFail(untrustedReporterDiagnostic(manifest.name, trust.status));
207
+ }
192
208
  const mod = await importPluginModule(modulePath);
193
209
  const exportsObj = (mod.default ?? mod);
194
210
  if (typeof exportsObj.render !== 'function') {
@@ -267,6 +283,23 @@ function describePluginModuleLoadError(err, manifestModule, modulePath, manifest
267
283
  }
268
284
  return { message: formatError(err) };
269
285
  }
286
+ function untrustedAnalyzerWarning(name, status) {
287
+ const reason = status === 'changed'
288
+ ? 'module changed since it was trusted'
289
+ : 'module is not trusted';
290
+ const verb = status === 'changed' ? 'Re-run' : 'Run';
291
+ return `[projscan] plugin "${name}" ${reason}; skipped (not executed). ${verb} \`projscan plugin trust ${name}\` to approve this module.\n`;
292
+ }
293
+ function untrustedReporterDiagnostic(name, status) {
294
+ const changed = status === 'changed';
295
+ return {
296
+ code: 'plugin-untrusted',
297
+ message: changed
298
+ ? `reporter plugin "${name}" changed since it was trusted; not executed`
299
+ : `reporter plugin "${name}" is not trusted; not executed`,
300
+ hint: `${changed ? 'Re-run' : 'Run'} \`projscan plugin trust ${name}\` to approve this reporter.`,
301
+ };
302
+ }
270
303
  function importPluginModule(modulePath) {
271
304
  return dynamicImport(pathToFileURL(modulePath).href).catch(async (err) => {
272
305
  if (!isMissingDynamicImportCallback(err))
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAA0B,MAAM,kBAAkB,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAG3D,gFAAgF;AAChF,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAkB,CAAC;AAK7F,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAU,CAAC;AAsF7E,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,YAAoB;IAC/D,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/F,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,OAAO;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,YAAY;gBAClB,OAAO;gBACP,IAAI,EAAE,uCAAuC;aAC9C;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,OAAO;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,cAAc;gBACpB,OAAO;gBACP,IAAI,EAAE,uCAAuC;aAC9C;SACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,EAAE;QAClB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE;QAC7C,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAAE,SAAS;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC;gBACP,YAAY;gBACZ,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,SAAS;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzF,IAAI,CAAC;YACH,MAAM,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACpE,oEAAoE;YACpE,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClF,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAmC,CAAC;YAC1E,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,KAAK,CAAC,QAAQ,CAAC,IAAI,mIAAmI,CAC7K,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU;gBACV,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAuC,EAAE;aACvE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,6BAA6B,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACjG,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,KAAK,CAAC,QAAQ,CAAC,IAAI,qBAAqB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAClI,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,YAAoB,EACpB,OAA8B;IAE9B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,4BAA4B,mBAAmB,IAAI;YAC5D,IAAI,EAAE,OAAO,mBAAmB,mDAAmD;SACpF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,KAAK,EAAwE,EAAE,CAC9E,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU,CACtC,CAAC;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IACtF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,oBAAoB,YAAY,iBAAiB;YAC1D,IAAI,EAAE,gEAAgE;SACvE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,oBAAoB,YAAY,+BAA+B,OAAO,GAAG;YAClF,IAAI,EAAE,QAAQ,OAAO,6EAA6E;SACnG,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA4B,EAC5B,OAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,iBAAiB,CAAC;gBACvB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc,OAAO,MAAM,mBAAmB;gBAC/F,IAAI,EAAE,uDAAuD;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE;YAC9F,IAAI,EAAE,gEAAgE;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,QAAgC,EAChC,YAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,0BAA0B,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9D,yEAAyE;QACzE,sEAAsE;QACtE,gCAAgC;QAChC,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,iBAAiB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAmC,CAAC;QAC1E,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5C,OAAO,iBAAiB,CAAC;gBACvB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,oCAAoC;gBAC9E,IAAI,EAAE,mFAAmF;aAC1F,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,MAAM,EAAE;gBACN,QAAQ;gBACR,YAAY;gBACZ,UAAU;gBACV,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAyC,EAAE;aAC1E;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,6BAA6B,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;QACpG,OAAO,iBAAiB,CAAC;YACvB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,oBAAoB,QAAQ,CAAC,IAAI,qBAAqB,MAAM,CAAC,OAAO,EAAE;YAC/E,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,mDAAmD;SACzE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,wBAAyB,SAAQ,KAAK;IACrB;IAAiC;IAAtD,YAAqB,cAAsB,EAAW,UAAkB;QACtE,KAAK,CAAC,WAAW,cAAc,sBAAsB,UAAU,EAAE,CAAC,CAAC;QADhD,mBAAc,GAAd,cAAc,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAQ;IAExE,CAAC;CACF;AAED,MAAM,qBAAsB,SAAQ,KAAK;IAClB;IAAiC;IAAtD,YAAqB,cAAsB,EAAW,UAAkB,EAAE,GAAY;QACpF,KAAK,CAAC,WAAW,cAAc,0BAA0B,UAAU,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QADzE,mBAAc,GAAd,cAAc,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAQ;IAExE,CAAC;CACF;AAED,KAAK,UAAU,0BAA0B,CAAC,cAAsB,EAAE,UAAkB;IAClF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,GAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrH,IAAI,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,wBAAwB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACtF,MAAM,IAAI,qBAAqB,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,GAAY,EACZ,cAAsB,EACtB,UAAkB,EAClB,aAA+C;IAE/C,IAAI,GAAG,YAAY,wBAAwB,EAAE,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,aAAa,aAAa,iBAAiB;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,kCAAkC,aAAa,iBAAiB;SACvE,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,2BAA2B,cAAc,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE;YAC1E,IAAI,EAAE,aAAa,UAAU,kCAAkC;SAChE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,MAAyB;IACvE,MAAM,MAAM,GACV,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,uBAAuB,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,OAAO,sBAAsB,IAAI,KAAK,MAAM,6BAA6B,IAAI,4BAA4B,IAAI,8BAA8B,CAAC;AAC9I,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,MAAyB;IAC1E,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,oBAAoB,IAAI,8CAA8C;YACxE,CAAC,CAAC,oBAAoB,IAAI,gCAAgC;QAC5D,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,4BAA4B,IAAI,8BAA8B;KAClG,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACvE,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QACpD,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CAAC,GAAY;IAClD,OAAO,GAAG,YAAY,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;AACvG,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,UAAkB;IAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,QAAQ,CAAC,WAAW,UAAU,IAAI,CAAC,EAAa,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,8DAA8D,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAClH,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,4CAA4C,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QAC3F,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzB,OAAO,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,GAAG,WAAW,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAA6B,CAAC;AACtG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,QAAgB,EAChB,KAAkB,EAClB,OAA+B;IAE/B,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,CAAC,CAAC,QAAQ,CAAC,IAAI,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAC1I,CAAC;YACF,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAAE,SAAS;YACxC,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,KAAK;gBACR,EAAE,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE;gBAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAqCD,SAAS,cAAc,CAAC,UAA4B;IAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA4B;IACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,gCAAgC;YACzC,IAAI,EAAE,4EAA4E;SACnF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,GAAG,CAAC,aAAa,KAAK,qBAAqB,EAAE,CAAC;QAChD,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,6BAA6B,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,qBAAqB,EAAE;YACpG,IAAI,EAAE,wBAAwB,qBAAqB,GAAG;SACvD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpF,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,iFAAiF;SACxF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACvD,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,uCAAuC;YAChD,IAAI,EAAE,kGAAkG;SACzG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,gDAAgD;YACzD,IAAI,EAAE,sFAAsF;SAC7F,CAAC,CAAC;IACL,CAAC;IACD,2EAA2E;IAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;QACzF,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,qDAAqD;SAC5D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACzE,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,cAAc,CAAC;gBACpB,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,2CAA2C;gBACpD,IAAI,EAAE,sFAAsF;aAC7F,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE;gBACR,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,GAAG,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,CAAC,iBAAiB,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC;IAEpD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,QAAQ,EAAE;YACR,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;YACpC,GAAG,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,0DAA0D;SACjE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,oCAAoC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjE,IAAI,EAAE,uDAAuD;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAQ,wBAA8C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU;IACnC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,GAAG,GAAG,CAA4B,CAAC;IACzC,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,CAAC;AAC1D,CAAC"}