critical-gate 2.0.0 → 2.1.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 (176) hide show
  1. package/README.md +163 -0
  2. package/dist/cli.d.ts +7 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +469 -20
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config/critical-gate-config.d.ts +41 -0
  7. package/dist/config/critical-gate-config.d.ts.map +1 -1
  8. package/dist/config/critical-gate-config.js +193 -4
  9. package/dist/config/critical-gate-config.js.map +1 -1
  10. package/dist/config/index.d.ts +2 -1
  11. package/dist/config/index.d.ts.map +1 -1
  12. package/dist/config/index.js +2 -1
  13. package/dist/config/index.js.map +1 -1
  14. package/dist/config/learning-policy.d.ts +9 -0
  15. package/dist/config/learning-policy.d.ts.map +1 -0
  16. package/dist/config/learning-policy.js +34 -0
  17. package/dist/config/learning-policy.js.map +1 -0
  18. package/dist/detectors/api-surface-detector.d.ts.map +1 -1
  19. package/dist/detectors/api-surface-detector.js +123 -5
  20. package/dist/detectors/api-surface-detector.js.map +1 -1
  21. package/dist/detectors/confidence-calibration.d.ts +11 -0
  22. package/dist/detectors/confidence-calibration.d.ts.map +1 -0
  23. package/dist/detectors/confidence-calibration.js +53 -0
  24. package/dist/detectors/confidence-calibration.js.map +1 -0
  25. package/dist/detectors/existing-solution-detector.js +6 -0
  26. package/dist/detectors/existing-solution-detector.js.map +1 -1
  27. package/dist/detectors/expected-companions-detector.d.ts.map +1 -1
  28. package/dist/detectors/expected-companions-detector.js +208 -10
  29. package/dist/detectors/expected-companions-detector.js.map +1 -1
  30. package/dist/detectors/index.d.ts +1 -0
  31. package/dist/detectors/index.d.ts.map +1 -1
  32. package/dist/detectors/index.js +1 -0
  33. package/dist/detectors/index.js.map +1 -1
  34. package/dist/detectors/intent-verification-detector.d.ts.map +1 -1
  35. package/dist/detectors/intent-verification-detector.js +64 -1
  36. package/dist/detectors/intent-verification-detector.js.map +1 -1
  37. package/dist/detectors/reason-chain.d.ts +4 -0
  38. package/dist/detectors/reason-chain.d.ts.map +1 -0
  39. package/dist/detectors/reason-chain.js +102 -0
  40. package/dist/detectors/reason-chain.js.map +1 -0
  41. package/dist/detectors/repair-contract.d.ts +4 -0
  42. package/dist/detectors/repair-contract.d.ts.map +1 -0
  43. package/dist/detectors/repair-contract.js +45 -0
  44. package/dist/detectors/repair-contract.js.map +1 -0
  45. package/dist/detectors/repository-intelligence-detector.d.ts.map +1 -1
  46. package/dist/detectors/repository-intelligence-detector.js +17 -4
  47. package/dist/detectors/repository-intelligence-detector.js.map +1 -1
  48. package/dist/detectors/rewrite-detector.d.ts.map +1 -1
  49. package/dist/detectors/rewrite-detector.js +5 -2
  50. package/dist/detectors/rewrite-detector.js.map +1 -1
  51. package/dist/detectors/runner.d.ts +1 -0
  52. package/dist/detectors/runner.d.ts.map +1 -1
  53. package/dist/detectors/runner.js +50 -3
  54. package/dist/detectors/runner.js.map +1 -1
  55. package/dist/detectors/scope-detector.js +1 -1
  56. package/dist/detectors/scope-detector.js.map +1 -1
  57. package/dist/detectors/secret-path-detector.js +1 -1
  58. package/dist/detectors/secret-path-detector.js.map +1 -1
  59. package/dist/detectors/test-weakening-detector.d.ts.map +1 -1
  60. package/dist/detectors/test-weakening-detector.js +188 -39
  61. package/dist/detectors/test-weakening-detector.js.map +1 -1
  62. package/dist/detectors/types.d.ts +2 -0
  63. package/dist/detectors/types.d.ts.map +1 -1
  64. package/dist/diff/git-diff-reader.d.ts +1 -0
  65. package/dist/diff/git-diff-reader.d.ts.map +1 -1
  66. package/dist/diff/git-diff-reader.js +11 -4
  67. package/dist/diff/git-diff-reader.js.map +1 -1
  68. package/dist/diff/path-classifier.d.ts.map +1 -1
  69. package/dist/diff/path-classifier.js +9 -1
  70. package/dist/diff/path-classifier.js.map +1 -1
  71. package/dist/frameworks/detect.d.ts +11 -0
  72. package/dist/frameworks/detect.d.ts.map +1 -0
  73. package/dist/frameworks/detect.js +29 -0
  74. package/dist/frameworks/detect.js.map +1 -0
  75. package/dist/frameworks/index.d.ts +5 -0
  76. package/dist/frameworks/index.d.ts.map +1 -0
  77. package/dist/frameworks/index.js +4 -0
  78. package/dist/frameworks/index.js.map +1 -0
  79. package/dist/frameworks/packs.d.ts +3 -0
  80. package/dist/frameworks/packs.d.ts.map +1 -0
  81. package/dist/frameworks/packs.js +146 -0
  82. package/dist/frameworks/packs.js.map +1 -0
  83. package/dist/frameworks/path-patterns.d.ts +3 -0
  84. package/dist/frameworks/path-patterns.d.ts.map +1 -0
  85. package/dist/frameworks/path-patterns.js +16 -0
  86. package/dist/frameworks/path-patterns.js.map +1 -0
  87. package/dist/frameworks/types.d.ts +15 -0
  88. package/dist/frameworks/types.d.ts.map +1 -0
  89. package/dist/frameworks/types.js +2 -0
  90. package/dist/frameworks/types.js.map +1 -0
  91. package/dist/index.d.ts +2 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +2 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/intent/diff-coherence-score.d.ts +13 -0
  96. package/dist/intent/diff-coherence-score.d.ts.map +1 -0
  97. package/dist/intent/diff-coherence-score.js +125 -0
  98. package/dist/intent/diff-coherence-score.js.map +1 -0
  99. package/dist/intent/index.d.ts +2 -0
  100. package/dist/intent/index.d.ts.map +1 -1
  101. package/dist/intent/index.js +2 -0
  102. package/dist/intent/index.js.map +1 -1
  103. package/dist/intent/intent-core.d.ts.map +1 -1
  104. package/dist/intent/intent-core.js +17 -1
  105. package/dist/intent/intent-core.js.map +1 -1
  106. package/dist/intent/intent-model.d.ts.map +1 -1
  107. package/dist/intent/intent-model.js +39 -2
  108. package/dist/intent/intent-model.js.map +1 -1
  109. package/dist/intent/task-intent-quality.d.ts +4 -0
  110. package/dist/intent/task-intent-quality.d.ts.map +1 -0
  111. package/dist/intent/task-intent-quality.js +98 -0
  112. package/dist/intent/task-intent-quality.js.map +1 -0
  113. package/dist/knowledge/cache.d.ts +1 -0
  114. package/dist/knowledge/cache.d.ts.map +1 -1
  115. package/dist/knowledge/cache.js +5 -1
  116. package/dist/knowledge/cache.js.map +1 -1
  117. package/dist/knowledge/history-index.d.ts.map +1 -1
  118. package/dist/knowledge/history-index.js +10 -3
  119. package/dist/knowledge/history-index.js.map +1 -1
  120. package/dist/knowledge/index.d.ts +3 -2
  121. package/dist/knowledge/index.d.ts.map +1 -1
  122. package/dist/knowledge/index.js +2 -1
  123. package/dist/knowledge/index.js.map +1 -1
  124. package/dist/knowledge/normal-change-model.d.ts +8 -0
  125. package/dist/knowledge/normal-change-model.d.ts.map +1 -0
  126. package/dist/knowledge/normal-change-model.js +121 -0
  127. package/dist/knowledge/normal-change-model.js.map +1 -0
  128. package/dist/knowledge/solution-index.d.ts.map +1 -1
  129. package/dist/knowledge/solution-index.js +43 -3
  130. package/dist/knowledge/solution-index.js.map +1 -1
  131. package/dist/knowledge/types.d.ts +11 -0
  132. package/dist/knowledge/types.d.ts.map +1 -1
  133. package/dist/reporters/index.d.ts +4 -1
  134. package/dist/reporters/index.d.ts.map +1 -1
  135. package/dist/reporters/index.js +6 -0
  136. package/dist/reporters/index.js.map +1 -1
  137. package/dist/reporters/markdown-reporter.d.ts.map +1 -1
  138. package/dist/reporters/markdown-reporter.js +67 -0
  139. package/dist/reporters/markdown-reporter.js.map +1 -1
  140. package/dist/reporters/pr-comment-reporter.d.ts +3 -0
  141. package/dist/reporters/pr-comment-reporter.d.ts.map +1 -0
  142. package/dist/reporters/pr-comment-reporter.js +105 -0
  143. package/dist/reporters/pr-comment-reporter.js.map +1 -0
  144. package/dist/reporters/repair-contract.d.ts +3 -0
  145. package/dist/reporters/repair-contract.d.ts.map +1 -0
  146. package/dist/reporters/repair-contract.js +25 -0
  147. package/dist/reporters/repair-contract.js.map +1 -0
  148. package/dist/reporters/repair-reporter.d.ts.map +1 -1
  149. package/dist/reporters/repair-reporter.js +19 -1
  150. package/dist/reporters/repair-reporter.js.map +1 -1
  151. package/dist/reporters/reviewer-checklist.d.ts +10 -0
  152. package/dist/reporters/reviewer-checklist.d.ts.map +1 -0
  153. package/dist/reporters/reviewer-checklist.js +112 -0
  154. package/dist/reporters/reviewer-checklist.js.map +1 -0
  155. package/dist/repository/api-snapshot.d.ts +41 -0
  156. package/dist/repository/api-snapshot.d.ts.map +1 -0
  157. package/dist/repository/api-snapshot.js +219 -0
  158. package/dist/repository/api-snapshot.js.map +1 -0
  159. package/dist/repository/index.d.ts +2 -0
  160. package/dist/repository/index.d.ts.map +1 -1
  161. package/dist/repository/index.js +2 -0
  162. package/dist/repository/index.js.map +1 -1
  163. package/dist/repository/monorepo.d.ts +7 -0
  164. package/dist/repository/monorepo.d.ts.map +1 -0
  165. package/dist/repository/monorepo.js +189 -0
  166. package/dist/repository/monorepo.js.map +1 -0
  167. package/dist/schema/gate-result.schema.d.ts +272 -0
  168. package/dist/schema/gate-result.schema.d.ts.map +1 -1
  169. package/dist/schema/gate-result.schema.js +148 -1
  170. package/dist/schema/gate-result.schema.js.map +1 -1
  171. package/dist/schema/index.d.ts +1 -1
  172. package/dist/schema/index.d.ts.map +1 -1
  173. package/dist/schema/index.js.map +1 -1
  174. package/dist/schema/types.d.ts +63 -0
  175. package/dist/schema/types.d.ts.map +1 -1
  176. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { writeFileSync } from "node:fs";
3
- import { resolve } from "node:path";
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { GATE_RESULT_SCHEMA_VERSION, loadCriticalGateConfig, readGitDiff, renderReport, runDetectors, summarizeFindings, summarizeIntentVerification } from "./index.js";
6
- export const CLI_VERSION = "2.0.0";
5
+ import { CRITICAL_GATE_CONFIG_FILE, GATE_RESULT_SCHEMA_VERSION, applyLearningPolicy, analyzeTaskIntentQuality, buildApiSurfaceSnapshot, createDefaultPolicyConfig, detectFrameworkPacks, detectMonorepoContext, getApiSnapshotOutputDirectory, getApiSnapshotOutputPath, getConfiguredExpectedSupportFiles, getConfiguredFailOn, getPolicyBlockingDetectors, getPolicyObservationDetectors, loadApiSurfaceSnapshot, loadCriticalGateConfig, readGitDiff, renderReport, runDetectors, summarizeApiSurfaceSnapshot, summarizeFindings, summarizeIntentVerification, updateCriticalGateConfig } from "./index.js";
6
+ export const CLI_VERSION = "2.1.0";
7
7
  export const ExitCode = {
8
8
  Pass: 0,
9
9
  FindingsFailed: 1,
@@ -13,9 +13,15 @@ export const ExitCode = {
13
13
  const defaultIo = {
14
14
  stdout: (message) => console.log(message),
15
15
  stderr: (message) => console.error(message),
16
- writeFile: (path, content) => writeFileSync(path, content, "utf8"),
16
+ writeFile: (path, content) => {
17
+ mkdirSync(getApiSnapshotOutputDirectory(path), { recursive: true });
18
+ writeFileSync(path, content, "utf8");
19
+ },
17
20
  now: () => new Date(),
18
- readDiff: (baseRef) => readGitDiff({ baseRef })
21
+ exists: (path) => existsSync(path),
22
+ readFile: (path) => readFileSync(path, "utf8"),
23
+ chmodFile: (path, mode) => chmodSync(path, mode),
24
+ readDiff: (baseRef, options) => readGitDiff({ baseRef, staged: options?.staged })
19
25
  };
20
26
  export function main(argv = process.argv.slice(2), io = defaultIo) {
21
27
  try {
@@ -43,17 +49,32 @@ function runCli(argv, io) {
43
49
  return ExitCode.UsageError;
44
50
  }
45
51
  if (args.includes("--help") || args.includes("-h")) {
46
- io.stdout(command === "hook" ? getHookHelpText() : getCheckHelpText());
52
+ io.stdout(getCommandHelpText(command));
47
53
  return ExitCode.Pass;
48
54
  }
55
+ if (command === "accept") {
56
+ return runAcceptCommand(args, io);
57
+ }
58
+ if (command === "teach") {
59
+ return runTeachCommand(args, io);
60
+ }
61
+ if (command === "snapshot-api") {
62
+ return runSnapshotApiCommand(args, io);
63
+ }
64
+ if (command === "install-hooks") {
65
+ return runInstallHooksCommand(args, io);
66
+ }
67
+ if (command === "init-policy") {
68
+ return runInitPolicyCommand(args, io);
69
+ }
49
70
  const parsed = parseCheckArgs(args, command);
50
71
  if (!parsed.ok) {
51
72
  io.stderr(parsed.error);
52
73
  io.stderr("Run critical-gate check --help for usage.");
53
74
  return ExitCode.UsageError;
54
75
  }
55
- const diff = io.readDiff(parsed.options.base);
56
- const result = createGateResult(parsed.options, io.now(), diff);
76
+ const diff = io.readDiff(parsed.options.base, { staged: parsed.options.staged });
77
+ const result = createGateResult(parsed.options, io.now(), diff, io);
57
78
  const rendered = command === "hook"
58
79
  ? renderReport(result.summary.decision === "pass" ? { ...result, findings: [] } : result, "repair")
59
80
  : renderReport(result, parsed.options.format);
@@ -68,7 +89,8 @@ function runCli(argv, io) {
68
89
  function parseCheckArgs(args, command) {
69
90
  const options = {
70
91
  format: "markdown",
71
- strict: false
92
+ strict: false,
93
+ staged: false
72
94
  };
73
95
  for (let index = 0; index < args.length; index += 1) {
74
96
  const arg = args[index];
@@ -76,7 +98,15 @@ function parseCheckArgs(args, command) {
76
98
  options.strict = true;
77
99
  continue;
78
100
  }
79
- if (arg === "--task" || arg === "--base" || arg === "--format" || arg === "--output") {
101
+ if (arg === "--staged") {
102
+ options.staged = true;
103
+ continue;
104
+ }
105
+ if (arg === "--task" ||
106
+ arg === "--base" ||
107
+ arg === "--format" ||
108
+ arg === "--output" ||
109
+ arg === "--fail-on") {
80
110
  const value = args[index + 1];
81
111
  if (value === undefined || value.startsWith("--")) {
82
112
  return { ok: false, error: `Missing value for ${arg}.` };
@@ -92,11 +122,20 @@ function parseCheckArgs(args, command) {
92
122
  if (!isReportFormat(value)) {
93
123
  return {
94
124
  ok: false,
95
- error: "Invalid --format value. Expected json, markdown, sarif, or repair."
125
+ error: "Invalid --format value. Expected json, markdown, sarif, repair, or pr-comment."
96
126
  };
97
127
  }
98
128
  options.format = value;
99
129
  }
130
+ else if (arg === "--fail-on") {
131
+ if (!isFailOnSeverity(value)) {
132
+ return {
133
+ ok: false,
134
+ error: "Invalid --fail-on value. Expected blocker, high, or medium."
135
+ };
136
+ }
137
+ options.failOn = value;
138
+ }
100
139
  else if (arg === "--output") {
101
140
  options.output = value;
102
141
  }
@@ -122,12 +161,17 @@ function parseCheckArgs(args, command) {
122
161
  base: options.base,
123
162
  format: options.format ?? "markdown",
124
163
  strict: options.strict ?? false,
164
+ staged: options.staged ?? false,
165
+ failOn: options.failOn,
125
166
  output: options.output
126
167
  }
127
168
  };
128
169
  }
129
- function createGateResult(options, generatedAt, diffResult) {
130
- const configResult = loadCriticalGateConfig(diffResult.root);
170
+ function createGateResult(options, generatedAt, diffResult, io = {}) {
171
+ const configResult = loadCriticalGateConfig(diffResult.root, {
172
+ exists: io.exists,
173
+ readFile: io.readFile
174
+ });
131
175
  const task = {
132
176
  source: "cli",
133
177
  text: options.task
@@ -137,9 +181,19 @@ function createGateResult(options, generatedAt, diffResult) {
137
181
  headRef: diffResult.headRef,
138
182
  files: diffResult.files
139
183
  };
184
+ const frameworkPacks = detectFrameworkPacks({
185
+ files: diff.files,
186
+ packageJson: readOptionalPackageJson(diffResult.root, io),
187
+ config: configResult.config
188
+ });
189
+ const monorepo = detectMonorepoContext(diffResult.root, diff.files, io);
190
+ const apiSnapshot = loadApiSurfaceSnapshot(diffResult.root, io);
140
191
  const context = {
141
192
  root: diffResult.root,
142
193
  packageManager: "pnpm",
194
+ monorepo,
195
+ apiSnapshot: summarizeApiSurfaceSnapshot(apiSnapshot),
196
+ frameworkPacks: frameworkPacks.map((pack) => pack.id),
143
197
  repositoryProfile: diffResult.repositoryProfile,
144
198
  utilityIndex: diffResult.utilityIndex,
145
199
  git: {
@@ -149,9 +203,15 @@ function createGateResult(options, generatedAt, diffResult) {
149
203
  };
150
204
  const detectorContext = {
151
205
  ...context,
206
+ apiSurfaceSnapshot: apiSnapshot,
152
207
  knowledge: diffResult.knowledge
153
208
  };
154
- const findings = runDetectors(task, diff, detectorContext);
209
+ const detectorFindings = runDetectors(task, diff, detectorContext);
210
+ const learningResult = applyLearningPolicy(detectorFindings, diff.files, {
211
+ ...configResult.config.learning,
212
+ expectedSupportFiles: getConfiguredExpectedSupportFiles(configResult.config)
213
+ });
214
+ const findings = learningResult.findings;
155
215
  const loadedHistoryIndex = diffResult.knowledge?.getLoadedHistoryIndex?.();
156
216
  const loadedSolutionIndex = diffResult.knowledge?.getLoadedSolutionIndex?.();
157
217
  context.repositoryProfile ??= loadedHistoryIndex?.profile;
@@ -163,28 +223,214 @@ function createGateResult(options, generatedAt, diffResult) {
163
223
  diff,
164
224
  context,
165
225
  findings,
166
- summary: summarizeFindings(findings, task, diff, configResult.config.rollout),
226
+ summary: summarizeFindings(findings, task, diff, {
227
+ observationDetectors: getPolicyObservationDetectors(configResult.config),
228
+ blockingDetectors: getPolicyBlockingDetectors(configResult.config),
229
+ failOn: options.failOn ?? getConfiguredFailOn(configResult.config)
230
+ }),
167
231
  intentVerification: summarizeIntentVerification(task, diff.files),
232
+ intentQuality: analyzeTaskIntentQuality(task),
168
233
  metadata: {
169
234
  cliVersion: CLI_VERSION,
170
235
  strict: options.strict,
236
+ staged: options.staged,
237
+ failOn: options.failOn ?? getConfiguredFailOn(configResult.config) ?? "high",
171
238
  rolloutPolicy: configResult.config.rollout,
239
+ policy: configResult.config.policy,
240
+ frameworkPacks: frameworkPacks.map((pack) => pack.id),
241
+ learning: {
242
+ acceptedFindingsApplied: learningResult.appliedAcceptedFindings,
243
+ expectedSupportRulesApplied: learningResult.appliedExpectedSupportRules
244
+ },
172
245
  configWarnings: configResult.warnings
173
246
  }
174
247
  };
175
248
  }
249
+ function runSnapshotApiCommand(args, io) {
250
+ const parsed = parseSnapshotApiArgs(args);
251
+ if (!parsed.ok) {
252
+ io.stderr(parsed.error);
253
+ io.stderr("Run critical-gate snapshot-api --help for usage.");
254
+ return ExitCode.UsageError;
255
+ }
256
+ const root = io.readDiff().root;
257
+ const snapshot = buildApiSurfaceSnapshot({
258
+ root,
259
+ generatedAt: io.now(),
260
+ entrypoints: parsed.options.entrypoints,
261
+ reader: io
262
+ });
263
+ const outputPath = getApiSnapshotOutputPath(root, parsed.options.output);
264
+ io.writeFile(outputPath, `${JSON.stringify(snapshot, null, 2)}\n`);
265
+ io.stdout(`Wrote public API snapshot to ${outputPath} (${snapshot.exports.length} exports across ${snapshot.entrypoints.length} entrypoints).`);
266
+ return ExitCode.Pass;
267
+ }
268
+ function runInstallHooksCommand(args, io) {
269
+ const parsed = parseInstallHooksArgs(args);
270
+ if (!parsed.ok) {
271
+ io.stderr(parsed.error);
272
+ io.stderr("Run critical-gate install-hooks --help for usage.");
273
+ return ExitCode.UsageError;
274
+ }
275
+ const root = io.readDiff().root;
276
+ const hooks = parsed.options.hook === "all" ? ["pre-commit", "pre-push"] : [parsed.options.hook];
277
+ const installed = [];
278
+ for (const hook of hooks) {
279
+ const path = join(root, ".git", "hooks", hook);
280
+ if (io.exists?.(path) === true && parsed.options.force !== true) {
281
+ io.stderr(`Refusing to overwrite existing ${hook} hook at ${path}. Re-run with --force.`);
282
+ return ExitCode.UsageError;
283
+ }
284
+ io.writeFile(path, renderGitHookScript(hook, parsed.options.cli));
285
+ io.chmodFile?.(path, 0o755);
286
+ installed.push(path);
287
+ }
288
+ io.stdout(`Installed Critical Gate hook(s): ${installed.join(", ")}`);
289
+ return ExitCode.Pass;
290
+ }
291
+ function runInitPolicyCommand(args, io) {
292
+ const parsed = parseInitPolicyArgs(args);
293
+ if (!parsed.ok) {
294
+ io.stderr(parsed.error);
295
+ io.stderr("Run critical-gate init-policy --help for usage.");
296
+ return ExitCode.UsageError;
297
+ }
298
+ const root = io.readDiff().root;
299
+ const path = join(root, CRITICAL_GATE_CONFIG_FILE);
300
+ if (io.exists?.(path) === true && parsed.options.force !== true) {
301
+ io.stderr(`Refusing to overwrite existing ${CRITICAL_GATE_CONFIG_FILE}. Re-run with --force.`);
302
+ return ExitCode.UsageError;
303
+ }
304
+ io.writeFile(path, `${JSON.stringify(createDefaultPolicyConfig(io.now()), null, 2)}\n`);
305
+ io.stdout(`Wrote reviewable Critical Gate policy to ${path}.`);
306
+ return ExitCode.Pass;
307
+ }
308
+ function readOptionalPackageJson(root, io) {
309
+ const path = join(root, "package.json");
310
+ if (io.exists?.(path) !== true) {
311
+ return undefined;
312
+ }
313
+ try {
314
+ return JSON.parse(io.readFile?.(path) ?? "");
315
+ }
316
+ catch {
317
+ return undefined;
318
+ }
319
+ }
320
+ function runAcceptCommand(args, io) {
321
+ const parsed = parseFlagArgs(args, ["--finding", "--reason"]);
322
+ if (!parsed.ok) {
323
+ io.stderr(parsed.error);
324
+ io.stderr("Run critical-gate accept --help for usage.");
325
+ return ExitCode.UsageError;
326
+ }
327
+ const finding = parsed.values["--finding"];
328
+ const reason = parsed.values["--reason"];
329
+ if (finding === undefined || reason === undefined) {
330
+ io.stderr("Missing required --finding or --reason value.");
331
+ io.stderr("Run critical-gate accept --help for usage.");
332
+ return ExitCode.UsageError;
333
+ }
334
+ const root = io.readDiff().root;
335
+ const updated = updateCriticalGateConfig(root, (config) => ({
336
+ ...config,
337
+ learning: {
338
+ ...config.learning,
339
+ acceptedFindings: upsertById(config.learning?.acceptedFindings ?? [], {
340
+ id: finding,
341
+ reason,
342
+ createdAt: io.now().toISOString()
343
+ })
344
+ }
345
+ }), {
346
+ exists: io.exists,
347
+ readFile: io.readFile,
348
+ writeFile: io.writeFile
349
+ });
350
+ io.stdout(`Accepted finding ${finding} in ${CRITICAL_GATE_CONFIG_FILE} (${updated.learning?.acceptedFindings?.length ?? 0} accepted finding rules).`);
351
+ return ExitCode.Pass;
352
+ }
353
+ function runTeachCommand(args, io) {
354
+ const parsed = parseFlagArgs(args, ["--id", "--when-changed", "--allow", "--reason"]);
355
+ if (!parsed.ok) {
356
+ io.stderr(parsed.error);
357
+ io.stderr("Run critical-gate teach --help for usage.");
358
+ return ExitCode.UsageError;
359
+ }
360
+ const id = parsed.values["--id"];
361
+ const whenChanged = parsed.values["--when-changed"];
362
+ const allow = parsed.values["--allow"]
363
+ ?.split(",")
364
+ .map((entry) => entry.trim())
365
+ .filter(Boolean);
366
+ const reason = parsed.values["--reason"];
367
+ if (id === undefined ||
368
+ whenChanged === undefined ||
369
+ allow === undefined ||
370
+ reason === undefined) {
371
+ io.stderr("Missing required --id, --when-changed, --allow, or --reason value.");
372
+ io.stderr("Run critical-gate teach --help for usage.");
373
+ return ExitCode.UsageError;
374
+ }
375
+ const root = io.readDiff().root;
376
+ const updated = updateCriticalGateConfig(root, (config) => ({
377
+ ...config,
378
+ learning: {
379
+ ...config.learning,
380
+ expectedSupportFiles: upsertById(config.learning?.expectedSupportFiles ?? [], {
381
+ id,
382
+ whenChanged,
383
+ allow,
384
+ reason,
385
+ createdAt: io.now().toISOString()
386
+ })
387
+ }
388
+ }), {
389
+ exists: io.exists,
390
+ readFile: io.readFile,
391
+ writeFile: io.writeFile
392
+ });
393
+ io.stdout(`Taught expected support rule ${id} in ${CRITICAL_GATE_CONFIG_FILE} (${updated.learning?.expectedSupportFiles?.length ?? 0} support rules).`);
394
+ return ExitCode.Pass;
395
+ }
176
396
  function getHelpText() {
177
397
  return [
178
398
  "critical-gate",
179
399
  "",
180
400
  "Usage:",
181
- " critical-gate check --task <text> [--base <ref>] [--format json|markdown|sarif|repair] [--strict] [--output <path>]",
401
+ " critical-gate check --task <text> [--base <ref>] [--format json|markdown|sarif|repair|pr-comment] [--strict] [--output <path>]",
182
402
  " critical-gate hook [--task <text>] [--base <ref>] [--output <path>]",
403
+ " critical-gate accept --finding <id> --reason <text>",
404
+ " critical-gate teach --id <id> --when-changed <glob> --allow <glob[,glob]> --reason <text>",
405
+ " critical-gate snapshot-api [--entrypoint <path>] [--output <path>]",
406
+ " critical-gate install-hooks [--hook pre-commit|pre-push|all] [--cli <command>] [--force]",
407
+ " critical-gate init-policy [--force]",
183
408
  " critical-gate --version",
184
409
  " critical-gate --help",
185
410
  ""
186
411
  ].join("\n");
187
412
  }
413
+ function getCommandHelpText(command) {
414
+ if (command === "hook") {
415
+ return getHookHelpText();
416
+ }
417
+ if (command === "accept") {
418
+ return getAcceptHelpText();
419
+ }
420
+ if (command === "teach") {
421
+ return getTeachHelpText();
422
+ }
423
+ if (command === "snapshot-api") {
424
+ return getSnapshotApiHelpText();
425
+ }
426
+ if (command === "install-hooks") {
427
+ return getInstallHooksHelpText();
428
+ }
429
+ if (command === "init-policy") {
430
+ return getInitPolicyHelpText();
431
+ }
432
+ return getCheckHelpText();
433
+ }
188
434
  function getCheckHelpText() {
189
435
  return [
190
436
  "critical-gate check",
@@ -194,7 +440,9 @@ function getCheckHelpText() {
194
440
  "",
195
441
  "Options:",
196
442
  " --base <ref> Git baseline reference",
197
- " --format <format> json, markdown, sarif, or repair",
443
+ " --format <format> json, markdown, sarif, repair, or pr-comment",
444
+ " --fail-on <level> blocker, high, or medium; defaults to high",
445
+ " --staged Analyze staged changes with git diff --cached",
198
446
  " --strict Fail on strict-mode findings once detectors exist",
199
447
  " --output <path> Write report to a file instead of stdout",
200
448
  ""
@@ -211,11 +459,212 @@ function getHookHelpText() {
211
459
  ""
212
460
  ].join("\n");
213
461
  }
462
+ function getAcceptHelpText() {
463
+ return [
464
+ "critical-gate accept",
465
+ "",
466
+ "Records an explicit accepted finding in .critical-gate.json.",
467
+ "",
468
+ "Required:",
469
+ " --finding <id> Exact finding id to accept",
470
+ " --reason <text> Reviewable reason for accepting the finding",
471
+ ""
472
+ ].join("\n");
473
+ }
474
+ function getTeachHelpText() {
475
+ return [
476
+ "critical-gate teach",
477
+ "",
478
+ "Records a repository-specific expected support-file rule in .critical-gate.json.",
479
+ "",
480
+ "Required:",
481
+ " --id <id> Stable rule id",
482
+ " --when-changed <glob> Changed file glob that activates the rule",
483
+ " --allow <glob[,glob]> Support-file glob or comma-separated globs to allow",
484
+ " --reason <text> Reviewable reason for the rule",
485
+ ""
486
+ ].join("\n");
487
+ }
488
+ function getSnapshotApiHelpText() {
489
+ return [
490
+ "critical-gate snapshot-api",
491
+ "",
492
+ "Generates a reviewable public API surface snapshot.",
493
+ "",
494
+ "Options:",
495
+ " --entrypoint <path> Public entrypoint to snapshot; may be passed more than once",
496
+ " --output <path> Snapshot path; defaults to .critical-gate/api-surface.json",
497
+ ""
498
+ ].join("\n");
499
+ }
500
+ function getInstallHooksHelpText() {
501
+ return [
502
+ "critical-gate install-hooks",
503
+ "",
504
+ "Installs reviewable local git hooks.",
505
+ "",
506
+ "Options:",
507
+ " --hook <hook> pre-commit, pre-push, or all; defaults to all",
508
+ " --cli <command> Critical Gate command/path used by the hook; defaults to critical-gate",
509
+ " --force Overwrite an existing generated or custom hook",
510
+ "",
511
+ "Defaults:",
512
+ " pre-commit runs staged changes with --fail-on blocker.",
513
+ " pre-push runs branch changes against ${CRITICAL_GATE_BASE:-origin/main} with --fail-on high.",
514
+ ""
515
+ ].join("\n");
516
+ }
517
+ function getInitPolicyHelpText() {
518
+ return [
519
+ "critical-gate init-policy",
520
+ "",
521
+ `Writes a starter ${CRITICAL_GATE_CONFIG_FILE} policy file.`,
522
+ "",
523
+ "Options:",
524
+ " --force Overwrite an existing policy file",
525
+ ""
526
+ ].join("\n");
527
+ }
214
528
  function isCommandName(value) {
215
- return value === "check" || value === "hook";
529
+ return (value === "check" ||
530
+ value === "hook" ||
531
+ value === "accept" ||
532
+ value === "teach" ||
533
+ value === "snapshot-api" ||
534
+ value === "install-hooks" ||
535
+ value === "init-policy");
216
536
  }
217
537
  function isReportFormat(value) {
218
- return value === "json" || value === "markdown" || value === "sarif" || value === "repair";
538
+ return (value === "json" ||
539
+ value === "markdown" ||
540
+ value === "sarif" ||
541
+ value === "repair" ||
542
+ value === "pr-comment");
543
+ }
544
+ function isFailOnSeverity(value) {
545
+ return value === "blocker" || value === "high" || value === "medium";
546
+ }
547
+ function parseFlagArgs(args, allowedFlags) {
548
+ const values = {};
549
+ for (let index = 0; index < args.length; index += 1) {
550
+ const arg = args[index];
551
+ if (!allowedFlags.includes(arg)) {
552
+ return { ok: false, error: `Unknown option: ${arg}.` };
553
+ }
554
+ const value = args[index + 1];
555
+ if (value === undefined || value.startsWith("--")) {
556
+ return { ok: false, error: `Missing value for ${arg}.` };
557
+ }
558
+ values[arg] = value;
559
+ index += 1;
560
+ }
561
+ return { ok: true, values };
562
+ }
563
+ function parseSnapshotApiArgs(args) {
564
+ const options = {
565
+ entrypoints: []
566
+ };
567
+ for (let index = 0; index < args.length; index += 1) {
568
+ const arg = args[index];
569
+ if (arg !== "--entrypoint" && arg !== "--output") {
570
+ return { ok: false, error: `Unknown option: ${arg}.` };
571
+ }
572
+ const value = args[index + 1];
573
+ if (value === undefined || value.startsWith("--")) {
574
+ return { ok: false, error: `Missing value for ${arg}.` };
575
+ }
576
+ if (arg === "--entrypoint") {
577
+ options.entrypoints.push(value);
578
+ }
579
+ else {
580
+ options.output = value;
581
+ }
582
+ index += 1;
583
+ }
584
+ return {
585
+ ok: true,
586
+ options: {
587
+ output: options.output,
588
+ entrypoints: options.entrypoints.length > 0 ? options.entrypoints : undefined
589
+ }
590
+ };
591
+ }
592
+ function parseInstallHooksArgs(args) {
593
+ const options = {
594
+ hook: "all",
595
+ cli: "critical-gate",
596
+ force: false
597
+ };
598
+ for (let index = 0; index < args.length; index += 1) {
599
+ const arg = args[index];
600
+ if (arg === "--force") {
601
+ options.force = true;
602
+ continue;
603
+ }
604
+ if (arg !== "--hook" && arg !== "--cli") {
605
+ return { ok: false, error: `Unknown option: ${arg}.` };
606
+ }
607
+ const value = args[index + 1];
608
+ if (value === undefined || value.startsWith("--")) {
609
+ return { ok: false, error: `Missing value for ${arg}.` };
610
+ }
611
+ if (arg === "--hook") {
612
+ if (value !== "pre-commit" && value !== "pre-push" && value !== "all") {
613
+ return { ok: false, error: "Invalid --hook value. Expected pre-commit, pre-push, or all." };
614
+ }
615
+ options.hook = value;
616
+ }
617
+ else {
618
+ options.cli = value;
619
+ }
620
+ index += 1;
621
+ }
622
+ return { ok: true, options };
623
+ }
624
+ function parseInitPolicyArgs(args) {
625
+ const options = {
626
+ force: false
627
+ };
628
+ for (const arg of args) {
629
+ if (arg !== "--force") {
630
+ return { ok: false, error: `Unknown option: ${arg}.` };
631
+ }
632
+ options.force = true;
633
+ }
634
+ return { ok: true, options };
635
+ }
636
+ function renderGitHookScript(hook, cliCommand) {
637
+ const quotedCli = shellQuote(cliCommand);
638
+ if (hook === "pre-commit") {
639
+ return [
640
+ "#!/bin/sh",
641
+ "# Critical Gate pre-commit hook.",
642
+ "# Generated by `critical-gate install-hooks`; review before trusting.",
643
+ "set -eu",
644
+ 'TASK="${CRITICAL_GATE_TASK:-Pre-commit staged change}"',
645
+ `${quotedCli} check --staged --task "$TASK" --format repair --fail-on blocker`,
646
+ ""
647
+ ].join("\n");
648
+ }
649
+ return [
650
+ "#!/bin/sh",
651
+ "# Critical Gate pre-push hook.",
652
+ "# Generated by `critical-gate install-hooks`; review before trusting.",
653
+ "set -eu",
654
+ 'TASK="${CRITICAL_GATE_TASK:-Pre-push branch change}"',
655
+ 'BASE="${CRITICAL_GATE_BASE:-origin/main}"',
656
+ `${quotedCli} check --base "$BASE" --task "$TASK" --format repair --fail-on high`,
657
+ ""
658
+ ].join("\n");
659
+ }
660
+ function shellQuote(value) {
661
+ if (/^[A-Za-z0-9_./:-]+$/.test(value)) {
662
+ return value;
663
+ }
664
+ return `'${value.replaceAll("'", "'\\''")}'`;
665
+ }
666
+ function upsertById(entries, next) {
667
+ return [...entries.filter((entry) => entry.id !== next.id), next];
219
668
  }
220
669
  const isDirectRun = process.argv[1] !== undefined && fileURLToPath(import.meta.url) === resolve(process.argv[1]);
221
670
  if (isDirectRun) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}