critical-gate 2.3.1 → 2.4.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 (47) hide show
  1. package/README.md +44 -35
  2. package/dist/agent-onboarding/agent-instructions.d.ts.map +1 -1
  3. package/dist/agent-onboarding/agent-instructions.js +2 -2
  4. package/dist/agent-onboarding/agent-instructions.js.map +1 -1
  5. package/dist/cli/args.d.ts +57 -0
  6. package/dist/cli/args.d.ts.map +1 -0
  7. package/dist/cli/args.js +209 -0
  8. package/dist/cli/args.js.map +1 -0
  9. package/dist/cli/commands.d.ts +8 -0
  10. package/dist/cli/commands.d.ts.map +1 -0
  11. package/dist/cli/commands.js +170 -0
  12. package/dist/cli/commands.js.map +1 -0
  13. package/dist/cli/entrypoint.d.ts +2 -0
  14. package/dist/cli/entrypoint.d.ts.map +1 -0
  15. package/dist/cli/entrypoint.js +18 -0
  16. package/dist/cli/entrypoint.js.map +1 -0
  17. package/dist/cli/git-hooks.d.ts +2 -0
  18. package/dist/cli/git-hooks.d.ts.map +1 -0
  19. package/dist/cli/git-hooks.js +31 -0
  20. package/dist/cli/git-hooks.js.map +1 -0
  21. package/dist/cli/help.d.ts +4 -0
  22. package/dist/cli/help.d.ts.map +1 -0
  23. package/dist/cli/help.js +151 -0
  24. package/dist/cli/help.js.map +1 -0
  25. package/dist/cli/io.d.ts +3 -0
  26. package/dist/cli/io.d.ts.map +1 -0
  27. package/dist/cli/io.js +16 -0
  28. package/dist/cli/io.js.map +1 -0
  29. package/dist/cli/main.d.ts +4 -0
  30. package/dist/cli/main.d.ts.map +1 -0
  31. package/dist/cli/main.js +76 -0
  32. package/dist/cli/main.js.map +1 -0
  33. package/dist/cli/result.d.ts +4 -0
  34. package/dist/cli/result.d.ts.map +1 -0
  35. package/dist/cli/result.js +107 -0
  36. package/dist/cli/result.js.map +1 -0
  37. package/dist/cli/types.d.ts +30 -0
  38. package/dist/cli/types.d.ts.map +1 -0
  39. package/dist/cli/types.js +7 -0
  40. package/dist/cli/types.js.map +1 -0
  41. package/dist/cli.d.ts +5 -18
  42. package/dist/cli.d.ts.map +1 -1
  43. package/dist/cli.js +6 -759
  44. package/dist/cli.js.map +1 -1
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.js +1 -1
  47. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isCliEntrypoint(importMetaUrl: string, argvPath?: string): boolean;
2
+ //# sourceMappingURL=entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/cli/entrypoint.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,SAAkB,GAAG,OAAO,CAK1F"}
@@ -0,0 +1,18 @@
1
+ import { realpathSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export function isCliEntrypoint(importMetaUrl, argvPath = process.argv[1]) {
5
+ return (argvPath !== undefined &&
6
+ normalizeExecutablePath(fileURLToPath(importMetaUrl)) === normalizeExecutablePath(argvPath));
7
+ }
8
+ function normalizeExecutablePath(path) {
9
+ let normalized = resolve(path);
10
+ try {
11
+ normalized = realpathSync.native(normalized);
12
+ }
13
+ catch {
14
+ // Fall back to the resolved path when the target is virtual or has already been removed.
15
+ }
16
+ return process.platform === "win32" ? normalized.toLowerCase() : normalized;
17
+ }
18
+ //# sourceMappingURL=entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/cli/entrypoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,eAAe,CAAC,aAAqB,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,OAAO,CACL,QAAQ,KAAK,SAAS;QACtB,uBAAuB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,KAAK,uBAAuB,CAAC,QAAQ,CAAC,CAC5F,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,yFAAyF;IAC3F,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function renderGitHookScript(hook: "pre-commit" | "pre-push", cliCommand: string): string;
2
+ //# sourceMappingURL=git-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../src/cli/git-hooks.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAyB/F"}
@@ -0,0 +1,31 @@
1
+ export function renderGitHookScript(hook, cliCommand) {
2
+ const quotedCli = shellQuote(cliCommand);
3
+ if (hook === "pre-commit") {
4
+ return [
5
+ "#!/bin/sh",
6
+ "# Critical Gate pre-commit hook.",
7
+ "# Generated by `critical-gate install-hooks`; review before trusting.",
8
+ "set -eu",
9
+ 'TASK="${CRITICAL_GATE_TASK:-Pre-commit staged change}"',
10
+ `${quotedCli} check --staged --task "$TASK" --format repair --fail-on blocker`,
11
+ ""
12
+ ].join("\n");
13
+ }
14
+ return [
15
+ "#!/bin/sh",
16
+ "# Critical Gate pre-push hook.",
17
+ "# Generated by `critical-gate install-hooks`; review before trusting.",
18
+ "set -eu",
19
+ 'TASK="${CRITICAL_GATE_TASK:-Pre-push branch change}"',
20
+ 'BASE="${CRITICAL_GATE_BASE:-origin/main}"',
21
+ `${quotedCli} check --base "$BASE" --task "$TASK" --format repair --fail-on high`,
22
+ ""
23
+ ].join("\n");
24
+ }
25
+ function shellQuote(value) {
26
+ if (/^[A-Za-z0-9_./:-]+$/.test(value)) {
27
+ return value;
28
+ }
29
+ return `'${value.replaceAll("'", "'\\''")}'`;
30
+ }
31
+ //# sourceMappingURL=git-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../src/cli/git-hooks.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,IAA+B,EAAE,UAAkB;IACrF,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO;YACL,WAAW;YACX,kCAAkC;YAClC,uEAAuE;YACvE,SAAS;YACT,wDAAwD;YACxD,GAAG,SAAS,kEAAkE;YAC9E,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO;QACL,WAAW;QACX,gCAAgC;QAChC,uEAAuE;QACvE,SAAS;QACT,sDAAsD;QACtD,2CAA2C;QAC3C,GAAG,SAAS,qEAAqE;QACjF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type CommandName = "check" | "hook" | "accept" | "teach" | "snapshot-api" | "install-hooks" | "init-policy" | "init-agent";
2
+ export declare function getHelpText(): string;
3
+ export declare function getCommandHelpText(command: CommandName): string;
4
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,OAAO,GACP,cAAc,GACd,eAAe,GACf,aAAa,GACb,YAAY,CAAC;AAEjB,wBAAgB,WAAW,IAAI,MAAM,CAiBpC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA8B/D"}
@@ -0,0 +1,151 @@
1
+ import { CRITICAL_GATE_CONFIG_FILE } from "../config/index.js";
2
+ export function getHelpText() {
3
+ return [
4
+ "critical-gate",
5
+ "",
6
+ "Usage:",
7
+ " critical-gate check --task <text> [--base <ref>] [--format json|markdown|sarif|repair|pr-comment] [--strict] [--output <path>]",
8
+ " critical-gate hook [--task <text>] [--base <ref>] [--output <path>]",
9
+ " critical-gate accept --finding <id> --reason <text>",
10
+ " critical-gate teach --id <id> --when-changed <glob> --allow <glob[,glob]> --reason <text>",
11
+ " critical-gate snapshot-api [--entrypoint <path>] [--output <path>]",
12
+ " critical-gate install-hooks [--hook pre-commit|pre-push|all] [--cli <command>] [--force]",
13
+ " critical-gate init-policy [--force]",
14
+ " critical-gate init-agent [--cli <command>]",
15
+ " critical-gate --version",
16
+ " critical-gate --help",
17
+ ""
18
+ ].join("\n");
19
+ }
20
+ export function getCommandHelpText(command) {
21
+ if (command === "hook") {
22
+ return getHookHelpText();
23
+ }
24
+ if (command === "accept") {
25
+ return getAcceptHelpText();
26
+ }
27
+ if (command === "teach") {
28
+ return getTeachHelpText();
29
+ }
30
+ if (command === "snapshot-api") {
31
+ return getSnapshotApiHelpText();
32
+ }
33
+ if (command === "install-hooks") {
34
+ return getInstallHooksHelpText();
35
+ }
36
+ if (command === "init-policy") {
37
+ return getInitPolicyHelpText();
38
+ }
39
+ if (command === "init-agent") {
40
+ return getInitAgentHelpText();
41
+ }
42
+ return getCheckHelpText();
43
+ }
44
+ function getCheckHelpText() {
45
+ return [
46
+ "critical-gate check",
47
+ "",
48
+ "Required:",
49
+ " --task <text> Task intent, issue summary, or prompt",
50
+ "",
51
+ "Options:",
52
+ " --base <ref> Git baseline reference",
53
+ " --format <format> json, markdown, sarif, repair, or pr-comment",
54
+ " --fail-on <level> blocker, high, or medium; defaults to high",
55
+ " --staged Analyze staged changes with git diff --cached",
56
+ " --strict Fail on strict-mode findings once detectors exist",
57
+ " --output <path> Write report to a file instead of stdout",
58
+ ""
59
+ ].join("\n");
60
+ }
61
+ function getHookHelpText() {
62
+ return [
63
+ "critical-gate hook",
64
+ "",
65
+ "Options:",
66
+ " --task <text> Optional task intent; defaults to Codex completed feature implementation",
67
+ " --base <ref> Git baseline reference",
68
+ " --output <path> Write compact repair report to a file instead of stdout",
69
+ ""
70
+ ].join("\n");
71
+ }
72
+ function getAcceptHelpText() {
73
+ return [
74
+ "critical-gate accept",
75
+ "",
76
+ "Records an explicit accepted finding in .critical-gate.json.",
77
+ "",
78
+ "Required:",
79
+ " --finding <id> Exact finding id to accept",
80
+ " --reason <text> Reviewable reason for accepting the finding",
81
+ ""
82
+ ].join("\n");
83
+ }
84
+ function getTeachHelpText() {
85
+ return [
86
+ "critical-gate teach",
87
+ "",
88
+ "Records a repository-specific expected support-file rule in .critical-gate.json.",
89
+ "",
90
+ "Required:",
91
+ " --id <id> Stable rule id",
92
+ " --when-changed <glob> Changed file glob that activates the rule",
93
+ " --allow <glob[,glob]> Support-file glob or comma-separated globs to allow",
94
+ " --reason <text> Reviewable reason for the rule",
95
+ ""
96
+ ].join("\n");
97
+ }
98
+ function getSnapshotApiHelpText() {
99
+ return [
100
+ "critical-gate snapshot-api",
101
+ "",
102
+ "Generates a reviewable public API surface snapshot.",
103
+ "",
104
+ "Options:",
105
+ " --entrypoint <path> Public entrypoint to snapshot; may be passed more than once",
106
+ " --output <path> Snapshot path; defaults to .critical-gate/api-surface.json",
107
+ ""
108
+ ].join("\n");
109
+ }
110
+ function getInstallHooksHelpText() {
111
+ return [
112
+ "critical-gate install-hooks",
113
+ "",
114
+ "Installs reviewable local git hooks.",
115
+ "",
116
+ "Options:",
117
+ " --hook <hook> pre-commit, pre-push, or all; defaults to all",
118
+ " --cli <command> Critical Gate command/path used by the hook; defaults to critical-gate",
119
+ " --force Overwrite an existing generated or custom hook",
120
+ "",
121
+ "Defaults:",
122
+ " pre-commit runs staged changes with --fail-on blocker.",
123
+ " pre-push runs branch changes against ${CRITICAL_GATE_BASE:-origin/main} with --fail-on high.",
124
+ ""
125
+ ].join("\n");
126
+ }
127
+ function getInitPolicyHelpText() {
128
+ return [
129
+ "critical-gate init-policy",
130
+ "",
131
+ `Writes a starter ${CRITICAL_GATE_CONFIG_FILE} policy file.`,
132
+ "",
133
+ "Options:",
134
+ " --force Overwrite an existing policy file",
135
+ ""
136
+ ].join("\n");
137
+ }
138
+ function getInitAgentHelpText() {
139
+ return [
140
+ "critical-gate init-agent",
141
+ "",
142
+ "Creates or updates the managed Critical Gate section in AGENTS.md.",
143
+ "",
144
+ "Options:",
145
+ " --cli <command> Critical Gate command/path agents should run; defaults to npx critical-gate",
146
+ "",
147
+ "The command preserves existing AGENTS.md content and replaces only the managed Critical Gate block.",
148
+ ""
149
+ ].join("\n");
150
+ }
151
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliIo } from "./types.js";
2
+ export declare const defaultIo: CliIo;
3
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/cli/io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,SAAS,EAAE,KAYvB,CAAC"}
package/dist/cli/io.js ADDED
@@ -0,0 +1,16 @@
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { getApiSnapshotOutputDirectory, readGitDiff } from "../index.js";
3
+ export const defaultIo = {
4
+ stdout: (message) => console.log(message),
5
+ stderr: (message) => console.error(message),
6
+ writeFile: (path, content) => {
7
+ mkdirSync(getApiSnapshotOutputDirectory(path), { recursive: true });
8
+ writeFileSync(path, content, "utf8");
9
+ },
10
+ now: () => new Date(),
11
+ exists: (path) => existsSync(path),
12
+ readFile: (path) => readFileSync(path, "utf8"),
13
+ chmodFile: (path, mode) => chmodSync(path, mode),
14
+ readDiff: (baseRef, options) => readGitDiff({ baseRef, staged: options?.staged })
15
+ };
16
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/cli/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExF,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzE,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACzC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAC3C,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QAC3B,SAAS,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;CAClF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ExitCode, type CliIo } from "./types.js";
2
+ export declare const CLI_VERSION = "2.4.0";
3
+ export declare function main(argv?: string[], io?: CliIo): ExitCode;
4
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,WAAW,UAAwB,CAAC;AAEjD,wBAAgB,IAAI,CAAC,IAAI,WAAwB,EAAE,EAAE,QAAY,GAAG,QAAQ,CAQ3E"}
@@ -0,0 +1,76 @@
1
+ import { renderReport } from "../index.js";
2
+ import { CRITICAL_GATE_VERSION } from "../version.js";
3
+ import { parseCheckArgs, isCommandName } from "./args.js";
4
+ import { runAcceptCommand, runInitAgentCommand, runInitPolicyCommand, runInstallHooksCommand, runSnapshotApiCommand, runTeachCommand } from "./commands.js";
5
+ import { getCommandHelpText, getHelpText } from "./help.js";
6
+ import { defaultIo } from "./io.js";
7
+ import { createGateResult } from "./result.js";
8
+ import { ExitCode } from "./types.js";
9
+ export const CLI_VERSION = CRITICAL_GATE_VERSION;
10
+ export function main(argv = process.argv.slice(2), io = defaultIo) {
11
+ try {
12
+ return runCli(argv, io);
13
+ }
14
+ catch (error) {
15
+ const message = error instanceof Error ? error.message : "Unknown internal error";
16
+ io.stderr(`critical-gate: ${message}`);
17
+ return ExitCode.InternalError;
18
+ }
19
+ }
20
+ function runCli(argv, io) {
21
+ if (argv.includes("--version")) {
22
+ io.stdout(`critical-gate ${CLI_VERSION}`);
23
+ return ExitCode.Pass;
24
+ }
25
+ if (argv[0] === "--help" || argv[0] === "-h") {
26
+ io.stdout(getHelpText());
27
+ return ExitCode.Pass;
28
+ }
29
+ const [command = "check", ...args] = argv;
30
+ if (!isCommandName(command)) {
31
+ io.stderr(`Unknown command: ${command}`);
32
+ io.stderr("Run critical-gate --help for usage.");
33
+ return ExitCode.UsageError;
34
+ }
35
+ if (args.includes("--help") || args.includes("-h")) {
36
+ io.stdout(getCommandHelpText(command));
37
+ return ExitCode.Pass;
38
+ }
39
+ if (command === "accept") {
40
+ return runAcceptCommand(args, io);
41
+ }
42
+ if (command === "teach") {
43
+ return runTeachCommand(args, io);
44
+ }
45
+ if (command === "snapshot-api") {
46
+ return runSnapshotApiCommand(args, io);
47
+ }
48
+ if (command === "install-hooks") {
49
+ return runInstallHooksCommand(args, io);
50
+ }
51
+ if (command === "init-policy") {
52
+ return runInitPolicyCommand(args, io);
53
+ }
54
+ if (command === "init-agent") {
55
+ return runInitAgentCommand(args, io);
56
+ }
57
+ const parsed = parseCheckArgs(args, command);
58
+ if (!parsed.ok) {
59
+ io.stderr(parsed.error);
60
+ io.stderr("Run critical-gate check --help for usage.");
61
+ return ExitCode.UsageError;
62
+ }
63
+ const diff = io.readDiff(parsed.options.base, { staged: parsed.options.staged });
64
+ const result = createGateResult(parsed.options, io.now(), diff, io);
65
+ const rendered = command === "hook"
66
+ ? renderReport(result.summary.decision === "pass" ? { ...result, findings: [] } : result, "repair")
67
+ : renderReport(result, parsed.options.format);
68
+ if (parsed.options.output !== undefined) {
69
+ io.writeFile(parsed.options.output, rendered);
70
+ }
71
+ else {
72
+ io.stdout(rendered);
73
+ }
74
+ return result.summary.decision === "fail" ? ExitCode.FindingsFailed : ExitCode.Pass;
75
+ }
76
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type GateResult, type GitDiffResult } from "../index.js";
2
+ import type { CheckOptions, CliIo } from "./types.js";
3
+ export declare function createGateResult(options: CheckOptions, generatedAt: Date, diffResult: GitDiffResult, io?: Pick<CliIo, "exists" | "readFile">): GateResult;
4
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/cli/result.ts"],"names":[],"mappings":"AAEA,OAAO,EAmBL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGtD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,aAAa,EACzB,EAAE,GAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAM,GAC1C,UAAU,CAiGZ"}
@@ -0,0 +1,107 @@
1
+ import { join } from "node:path";
2
+ import { GATE_RESULT_SCHEMA_VERSION, applyLearningPolicy, analyzeTaskIntentQuality, buildRepositoryTokenIndex, detectFrameworkPacks, detectMonorepoContext, getConfiguredExpectedSupportFiles, getConfiguredFailOn, getConfiguredPublicApiEntrypoints, getPolicyBlockingDetectors, getPolicyObservationDetectors, loadApiSurfaceSnapshot, loadCriticalGateConfig, resolvePublicApiEntrypoints, runDetectors, summarizeApiSurfaceSnapshot, summarizeFindings, summarizeIntentVerification } from "../index.js";
3
+ import { CRITICAL_GATE_VERSION } from "../version.js";
4
+ export function createGateResult(options, generatedAt, diffResult, io = {}) {
5
+ const configResult = loadCriticalGateConfig(diffResult.root, {
6
+ exists: io.exists,
7
+ readFile: io.readFile
8
+ });
9
+ const task = {
10
+ source: "cli",
11
+ text: options.task
12
+ };
13
+ const diff = {
14
+ baseRef: diffResult.baseRef,
15
+ headRef: diffResult.headRef,
16
+ files: diffResult.files
17
+ };
18
+ const packageJson = readOptionalPackageJson(diffResult.root, io);
19
+ const frameworkPacks = detectFrameworkPacks({
20
+ files: diff.files,
21
+ packageJson,
22
+ config: configResult.config
23
+ });
24
+ const monorepo = detectMonorepoContext(diffResult.root, diff.files, io);
25
+ const repositoryTokenIndex = buildRepositoryTokenIndex({
26
+ files: diff.files,
27
+ packageJson
28
+ });
29
+ const publicApiEntrypoints = resolvePublicApiEntrypoints(diffResult.root, io, getConfiguredPublicApiEntrypoints(configResult.config));
30
+ const publicApiEntrypointContext = publicApiEntrypoints.length > 0 ? publicApiEntrypoints : undefined;
31
+ const apiSnapshot = loadApiSurfaceSnapshot(diffResult.root, io);
32
+ const context = {
33
+ root: diffResult.root,
34
+ packageManager: "pnpm",
35
+ monorepo,
36
+ apiSnapshot: summarizeApiSurfaceSnapshot(apiSnapshot),
37
+ publicEntrypoints: publicApiEntrypointContext?.map((entrypoint) => entrypoint.path),
38
+ publicApiEntrypoints: publicApiEntrypointContext,
39
+ frameworkPacks: frameworkPacks.map((pack) => pack.id),
40
+ repositoryProfile: diffResult.repositoryProfile,
41
+ utilityIndex: diffResult.utilityIndex,
42
+ repositoryTokenIndex,
43
+ git: {
44
+ baseRef: diffResult.baseRef,
45
+ headRef: diffResult.headRef
46
+ }
47
+ };
48
+ const detectorContext = {
49
+ ...context,
50
+ apiSurfaceSnapshot: apiSnapshot,
51
+ publicApiEntrypoints: publicApiEntrypointContext,
52
+ knowledge: diffResult.knowledge
53
+ };
54
+ const detectorFindings = runDetectors(task, diff, detectorContext);
55
+ const learningResult = applyLearningPolicy(detectorFindings, diff.files, {
56
+ ...configResult.config.learning,
57
+ expectedSupportFiles: getConfiguredExpectedSupportFiles(configResult.config)
58
+ });
59
+ const findings = learningResult.findings;
60
+ const loadedHistoryIndex = diffResult.knowledge?.getLoadedHistoryIndex?.();
61
+ const loadedSolutionIndex = diffResult.knowledge?.getLoadedSolutionIndex?.();
62
+ context.repositoryProfile ??= loadedHistoryIndex?.profile;
63
+ context.utilityIndex ??= loadedSolutionIndex?.utilityIndex;
64
+ return {
65
+ schemaVersion: GATE_RESULT_SCHEMA_VERSION,
66
+ generatedAt: generatedAt.toISOString(),
67
+ task,
68
+ diff,
69
+ context,
70
+ findings,
71
+ summary: summarizeFindings(findings, task, diff, {
72
+ observationDetectors: getPolicyObservationDetectors(configResult.config),
73
+ blockingDetectors: getPolicyBlockingDetectors(configResult.config),
74
+ failOn: options.failOn ?? getConfiguredFailOn(configResult.config),
75
+ acceptedFindingIds: learningResult.appliedAcceptedFindings
76
+ }),
77
+ intentVerification: summarizeIntentVerification(task, diff.files),
78
+ intentQuality: analyzeTaskIntentQuality(task),
79
+ metadata: {
80
+ cliVersion: CRITICAL_GATE_VERSION,
81
+ strict: options.strict,
82
+ staged: options.staged,
83
+ failOn: options.failOn ?? getConfiguredFailOn(configResult.config) ?? "high",
84
+ rolloutPolicy: configResult.config.rollout,
85
+ policy: configResult.config.policy,
86
+ frameworkPacks: frameworkPacks.map((pack) => pack.id),
87
+ learning: {
88
+ acceptedFindingsApplied: learningResult.appliedAcceptedFindings,
89
+ expectedSupportRulesApplied: learningResult.appliedExpectedSupportRules
90
+ },
91
+ configWarnings: configResult.warnings
92
+ }
93
+ };
94
+ }
95
+ function readOptionalPackageJson(root, io) {
96
+ const path = join(root, "package.json");
97
+ if (io.exists?.(path) !== true) {
98
+ return undefined;
99
+ }
100
+ try {
101
+ return JSON.parse(io.readFile?.(path) ?? "");
102
+ }
103
+ catch {
104
+ return undefined;
105
+ }
106
+ }
107
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/cli/result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { GitDiffResult, ReportFormat } from "../index.js";
2
+ export declare const ExitCode: {
3
+ readonly Pass: 0;
4
+ readonly FindingsFailed: 1;
5
+ readonly UsageError: 2;
6
+ readonly InternalError: 3;
7
+ };
8
+ export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
9
+ export interface CheckOptions {
10
+ task: string;
11
+ base?: string;
12
+ format: ReportFormat;
13
+ strict: boolean;
14
+ staged: boolean;
15
+ failOn?: "blocker" | "high" | "medium";
16
+ output?: string;
17
+ }
18
+ export interface CliIo {
19
+ stdout: (message: string) => void;
20
+ stderr: (message: string) => void;
21
+ writeFile: (path: string, content: string) => void;
22
+ chmodFile?: (path: string, mode: number) => void;
23
+ now: () => Date;
24
+ readDiff: (baseRef?: string, options?: {
25
+ staged?: boolean;
26
+ }) => GitDiffResult;
27
+ exists?: (path: string) => boolean;
28
+ readFile?: (path: string) => string;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,aAAa,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC"}
@@ -0,0 +1,7 @@
1
+ export const ExitCode = {
2
+ Pass: 0,
3
+ FindingsFailed: 1,
4
+ UsageError: 2,
5
+ InternalError: 3
6
+ };
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,CAAC;IACP,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;CACR,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -1,26 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { type GitDiffResult } from "./index.js";
3
- export declare const CLI_VERSION = "2.3.1";
2
+ import type { CheckOptions, CliIo, ExitCode as ExitCodeTypeInternal } from "./cli/types.js";
3
+ export { isCliEntrypoint } from "./cli/entrypoint.js";
4
+ export { CLI_VERSION, main } from "./cli/main.js";
4
5
  export declare const ExitCode: {
5
6
  readonly Pass: 0;
6
7
  readonly FindingsFailed: 1;
7
8
  readonly UsageError: 2;
8
9
  readonly InternalError: 3;
9
10
  };
10
- export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
11
- interface CliIo {
12
- stdout: (message: string) => void;
13
- stderr: (message: string) => void;
14
- writeFile: (path: string, content: string) => void;
15
- chmodFile?: (path: string, mode: number) => void;
16
- now: () => Date;
17
- readDiff: (baseRef?: string, options?: {
18
- staged?: boolean;
19
- }) => GitDiffResult;
20
- exists?: (path: string) => boolean;
21
- readFile?: (path: string) => string;
22
- }
23
- export declare function main(argv?: string[], io?: CliIo): ExitCode;
24
- export declare function isCliEntrypoint(importMetaUrl: string, argvPath?: string): boolean;
25
- export {};
11
+ export type { CheckOptions, CliIo };
12
+ export type ExitCode = ExitCodeTypeInternal;
26
13
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,OAAO,EA6BL,KAAK,aAAa,EAEnB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,WAAW,UAAwB,CAAC;AAEjD,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAYhE,UAAU,KAAK;IACb,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,aAAa,CAAC;IAC9E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AA0BD,wBAAgB,IAAI,CAAC,IAAI,WAAwB,EAAE,EAAE,QAAY,GAAG,QAAQ,CAQ3E;AAk7BD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,SAAkB,GAAG,OAAO,CAK1F"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAClD,eAAO,MAAM,QAAQ;;;;;CAAgB,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACpC,MAAM,MAAM,QAAQ,GAAG,oBAAoB,CAAC"}