pr-checkmate 3.3.0 → 4.0.1

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 (127) hide show
  1. package/LICENSE +8 -3
  2. package/README.md +59 -4
  3. package/cspell.json +1 -0
  4. package/dist/cjs/agent/hook.d.ts +38 -0
  5. package/dist/cjs/agent/hook.js +175 -0
  6. package/dist/cjs/agent/registration.d.ts +10 -0
  7. package/dist/cjs/agent/registration.js +28 -0
  8. package/dist/cjs/agent/setup.d.ts +21 -0
  9. package/dist/cjs/agent/setup.js +229 -0
  10. package/dist/cjs/cli.js +88 -0
  11. package/dist/cjs/config/constants.d.ts +2 -0
  12. package/dist/cjs/config/constants.js +5 -1
  13. package/dist/cjs/config/pr-checkmate.template.json +10 -0
  14. package/dist/cjs/core/checks/findings.js +33 -7
  15. package/dist/cjs/core/checks/git/diff-smell.js +3 -1
  16. package/dist/cjs/core/checks/git/large-files.d.ts +1 -0
  17. package/dist/cjs/core/checks/git/large-files.js +3 -3
  18. package/dist/cjs/core/checks/languages/lint.js +27 -0
  19. package/dist/cjs/core/checks/languages/locate.d.ts +7 -0
  20. package/dist/cjs/core/checks/languages/locate.js +68 -0
  21. package/dist/cjs/core/checks/languages/prettier.js +15 -2
  22. package/dist/cjs/core/checks/languages/typecheck.js +4 -1
  23. package/dist/cjs/core/checks/pr/pr-size-check.d.ts +2 -0
  24. package/dist/cjs/core/checks/pr/pr-size-check.js +5 -5
  25. package/dist/cjs/core/checks/security/agent-instructions.d.ts +4 -0
  26. package/dist/cjs/core/checks/security/agent-instructions.js +149 -0
  27. package/dist/cjs/core/checks/security/diff-security.d.ts +7 -0
  28. package/dist/cjs/core/checks/security/diff-security.js +21 -1
  29. package/dist/cjs/core/checks/security/security.d.ts +0 -13
  30. package/dist/cjs/core/checks/security/security.js +27 -0
  31. package/dist/cjs/core/checks/security/workflow-security.js +33 -0
  32. package/dist/cjs/core/commands.d.ts +6 -0
  33. package/dist/cjs/core/commands.js +11 -1
  34. package/dist/cjs/core/finding-store.d.ts +16 -0
  35. package/dist/cjs/core/finding-store.js +73 -0
  36. package/dist/cjs/core/registry.js +2 -0
  37. package/dist/cjs/core/reporters.js +9 -0
  38. package/dist/cjs/core/run-checks.js +15 -5
  39. package/dist/cjs/core/sarif.d.ts +15 -0
  40. package/dist/cjs/core/sarif.js +60 -0
  41. package/dist/cjs/core/types.d.ts +7 -2
  42. package/dist/cjs/index.d.ts +2 -1
  43. package/dist/cjs/index.js +4 -1
  44. package/dist/cjs/init.js +11 -0
  45. package/dist/cjs/interfaces/index.d.ts +12 -0
  46. package/dist/cjs/mcp/config-tools.d.ts +30 -0
  47. package/dist/cjs/mcp/config-tools.js +320 -0
  48. package/dist/cjs/mcp/dependency.d.ts +34 -0
  49. package/dist/cjs/mcp/dependency.js +413 -0
  50. package/dist/cjs/mcp/protocol.d.ts +91 -0
  51. package/dist/cjs/mcp/protocol.js +181 -0
  52. package/dist/cjs/mcp/review.d.ts +64 -0
  53. package/dist/cjs/mcp/review.js +150 -0
  54. package/dist/cjs/mcp/serve.d.ts +8 -0
  55. package/dist/cjs/mcp/serve.js +49 -0
  56. package/dist/cjs/mcp/settings.d.ts +13 -0
  57. package/dist/cjs/mcp/settings.js +50 -0
  58. package/dist/cjs/mcp/tools.d.ts +23 -0
  59. package/dist/cjs/mcp/tools.js +618 -0
  60. package/dist/cjs/utils/execa.d.ts +7 -0
  61. package/dist/cjs/utils/execa.js +41 -1
  62. package/dist/cjs/utils/result-collector.d.ts +17 -1
  63. package/dist/cjs/utils/result-collector.js +7 -2
  64. package/dist/esm/agent/hook.d.ts +38 -0
  65. package/dist/esm/agent/hook.js +167 -0
  66. package/dist/esm/agent/registration.d.ts +10 -0
  67. package/dist/esm/agent/registration.js +21 -0
  68. package/dist/esm/agent/setup.d.ts +21 -0
  69. package/dist/esm/agent/setup.js +220 -0
  70. package/dist/esm/cli.js +86 -1
  71. package/dist/esm/config/constants.d.ts +2 -0
  72. package/dist/esm/config/constants.js +4 -0
  73. package/dist/esm/config/pr-checkmate.template.json +10 -0
  74. package/dist/esm/core/checks/findings.js +33 -7
  75. package/dist/esm/core/checks/git/diff-smell.js +3 -1
  76. package/dist/esm/core/checks/git/large-files.d.ts +1 -0
  77. package/dist/esm/core/checks/git/large-files.js +1 -1
  78. package/dist/esm/core/checks/languages/lint.js +28 -1
  79. package/dist/esm/core/checks/languages/locate.d.ts +7 -0
  80. package/dist/esm/core/checks/languages/locate.js +60 -0
  81. package/dist/esm/core/checks/languages/prettier.js +15 -2
  82. package/dist/esm/core/checks/languages/typecheck.js +4 -1
  83. package/dist/esm/core/checks/pr/pr-size-check.d.ts +2 -0
  84. package/dist/esm/core/checks/pr/pr-size-check.js +2 -2
  85. package/dist/esm/core/checks/security/agent-instructions.d.ts +4 -0
  86. package/dist/esm/core/checks/security/agent-instructions.js +146 -0
  87. package/dist/esm/core/checks/security/diff-security.d.ts +7 -0
  88. package/dist/esm/core/checks/security/diff-security.js +20 -0
  89. package/dist/esm/core/checks/security/security.d.ts +0 -13
  90. package/dist/esm/core/checks/security/security.js +27 -0
  91. package/dist/esm/core/checks/security/workflow-security.js +33 -0
  92. package/dist/esm/core/commands.d.ts +6 -0
  93. package/dist/esm/core/commands.js +10 -0
  94. package/dist/esm/core/finding-store.d.ts +16 -0
  95. package/dist/esm/core/finding-store.js +67 -0
  96. package/dist/esm/core/registry.js +2 -0
  97. package/dist/esm/core/reporters.js +9 -0
  98. package/dist/esm/core/run-checks.js +15 -5
  99. package/dist/esm/core/sarif.d.ts +15 -0
  100. package/dist/esm/core/sarif.js +57 -0
  101. package/dist/esm/core/types.d.ts +7 -2
  102. package/dist/esm/index.d.ts +2 -1
  103. package/dist/esm/index.js +2 -0
  104. package/dist/esm/init.js +12 -1
  105. package/dist/esm/interfaces/index.d.ts +12 -0
  106. package/dist/esm/mcp/config-tools.d.ts +30 -0
  107. package/dist/esm/mcp/config-tools.js +310 -0
  108. package/dist/esm/mcp/dependency.d.ts +34 -0
  109. package/dist/esm/mcp/dependency.js +408 -0
  110. package/dist/esm/mcp/protocol.d.ts +91 -0
  111. package/dist/esm/mcp/protocol.js +175 -0
  112. package/dist/esm/mcp/review.d.ts +64 -0
  113. package/dist/esm/mcp/review.js +139 -0
  114. package/dist/esm/mcp/serve.d.ts +8 -0
  115. package/dist/esm/mcp/serve.js +43 -0
  116. package/dist/esm/mcp/settings.d.ts +13 -0
  117. package/dist/esm/mcp/settings.js +43 -0
  118. package/dist/esm/mcp/tools.d.ts +23 -0
  119. package/dist/esm/mcp/tools.js +611 -0
  120. package/dist/esm/utils/execa.d.ts +7 -0
  121. package/dist/esm/utils/execa.js +40 -1
  122. package/dist/esm/utils/result-collector.d.ts +17 -1
  123. package/dist/esm/utils/result-collector.js +7 -2
  124. package/package.json +7 -3
  125. package/pr-checkmate.schema.json +35 -0
  126. package/src/config/cspell.json +1 -0
  127. package/src/config/pr-checkmate.schema.json +35 -0
@@ -1,8 +1,24 @@
1
1
  export type CheckStatus = 'pass' | 'warn' | 'fail' | 'skip';
2
+ /**
3
+ * One thing a check found, with where it is. Optional on every result: only the
4
+ * checks that can say where report it, and a result without any is not an error —
5
+ * it just has a summary and no location.
6
+ */
7
+ export interface Finding {
8
+ file: string;
9
+ /** 1-based line in the file as it will be committed. */
10
+ line?: number;
11
+ /** Which rule or pattern matched, as the check names it. */
12
+ rule: string;
13
+ /** The offending text, shortened. Never a secret: scanners that find those leave it out. */
14
+ snippet?: string;
15
+ severity: 'error' | 'warn';
16
+ }
2
17
  export interface CheckResult {
3
18
  name: string;
4
19
  status: CheckStatus;
5
20
  details?: string;
21
+ findings?: Finding[];
6
22
  }
7
23
  /**
8
24
  *
@@ -12,7 +28,7 @@ export declare class ResultCollector {
12
28
  /**
13
29
  *
14
30
  */
15
- register(name: string, status: CheckStatus, details?: string): void;
31
+ register(name: string, status: CheckStatus, details?: string, findings?: Finding[]): void;
16
32
  /**
17
33
  *
18
34
  */
@@ -8,9 +8,14 @@ export class ResultCollector {
8
8
  /**
9
9
  *
10
10
  */
11
- register(name, status, details) {
11
+ register(name, status, details, findings) {
12
12
  const idx = this.results.findIndex(r => r.name === name);
13
- const entry = { name, status, ...(details && { details }) };
13
+ const entry = {
14
+ name,
15
+ status,
16
+ ...(details && { details }),
17
+ ...(findings && findings.length > 0 && { findings }),
18
+ };
14
19
  if (idx >= 0) {
15
20
  this.results[idx] = entry;
16
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pr-checkmate",
3
- "version": "3.3.0",
3
+ "version": "4.0.1",
4
4
  "description": "Security-first PR gate for CI: secret scanning, grype dependency scanning, SBOM — plus linting and formatting across 11 languages",
5
5
  "keywords": [
6
6
  "github-actions",
@@ -9,7 +9,11 @@
9
9
  "eslint",
10
10
  "prettier",
11
11
  "code-quality",
12
- "automation"
12
+ "automation",
13
+ "mcp",
14
+ "model-context-protocol",
15
+ "ai-agents",
16
+ "claude-code"
13
17
  ],
14
18
  "main": "./dist/cjs/index.js",
15
19
  "module": "./dist/esm/index.js",
@@ -76,7 +80,7 @@
76
80
  },
77
81
  "homepage": "https://github.com/Mybono/pr_checkmate_public#readme",
78
82
  "author": "Artur Polishchuk",
79
- "license": "SEE LICENSE IN LICENSE",
83
+ "license": "LicenseRef-PR-Checkmate-Proprietary",
80
84
  "dependencies": {
81
85
  "execa": "^9.6.0",
82
86
  "gitleaks-secret-scanner-fixed": "3.0.4",
@@ -309,6 +309,41 @@
309
309
  "dockerfileSecurity": {
310
310
  "$ref": "#/$defs/toggleIgnorePaths"
311
311
  },
312
+ "agentInstructions": {
313
+ "$ref": "#/$defs/toggleIgnorePaths"
314
+ },
315
+ "mcp": {
316
+ "type": "object",
317
+ "description": "What the pr-checkmate MCP server offers an AI agent working in this project. Changes apply to the agent's next request.",
318
+ "additionalProperties": false,
319
+ "properties": {
320
+ "enabled": {
321
+ "type": "boolean",
322
+ "description": "false turns the server off for this project: it still connects, but offers no tools, resources or prompts. Default true."
323
+ },
324
+ "disabledTools": {
325
+ "type": "array",
326
+ "description": "Tools to hide from the agent.",
327
+ "items": {
328
+ "enum": [
329
+ "get_rules",
330
+ "check_changes",
331
+ "apply_fixes",
332
+ "scan_secrets",
333
+ "check_dependency",
334
+ "suggest_config",
335
+ "write_config",
336
+ "explain_config",
337
+ "verify"
338
+ ]
339
+ }
340
+ },
341
+ "readOnly": {
342
+ "type": "boolean",
343
+ "description": "Hide the tools that write files (apply_fixes, write_config), so the agent can only read and report. Default false."
344
+ }
345
+ }
346
+ },
312
347
  "migrationSafety": {
313
348
  "$ref": "#/$defs/toggleSeverity"
314
349
  },
@@ -1377,6 +1377,7 @@
1377
1377
  "samd",
1378
1378
  "samplerate",
1379
1379
  "sandboxing",
1380
+ "sarif",
1380
1381
  "satoshis",
1381
1382
  "savgol",
1382
1383
  "sbom",
@@ -309,6 +309,41 @@
309
309
  "dockerfileSecurity": {
310
310
  "$ref": "#/$defs/toggleIgnorePaths"
311
311
  },
312
+ "agentInstructions": {
313
+ "$ref": "#/$defs/toggleIgnorePaths"
314
+ },
315
+ "mcp": {
316
+ "type": "object",
317
+ "description": "What the pr-checkmate MCP server offers an AI agent working in this project. Changes apply to the agent's next request.",
318
+ "additionalProperties": false,
319
+ "properties": {
320
+ "enabled": {
321
+ "type": "boolean",
322
+ "description": "false turns the server off for this project: it still connects, but offers no tools, resources or prompts. Default true."
323
+ },
324
+ "disabledTools": {
325
+ "type": "array",
326
+ "description": "Tools to hide from the agent.",
327
+ "items": {
328
+ "enum": [
329
+ "get_rules",
330
+ "check_changes",
331
+ "apply_fixes",
332
+ "scan_secrets",
333
+ "check_dependency",
334
+ "suggest_config",
335
+ "write_config",
336
+ "explain_config",
337
+ "verify"
338
+ ]
339
+ }
340
+ },
341
+ "readOnly": {
342
+ "type": "boolean",
343
+ "description": "Hide the tools that write files (apply_fixes, write_config), so the agent can only read and report. Default false."
344
+ }
345
+ }
346
+ },
312
347
  "migrationSafety": {
313
348
  "$ref": "#/$defs/toggleSeverity"
314
349
  },