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.
- package/README.md +44 -35
- package/dist/agent-onboarding/agent-instructions.d.ts.map +1 -1
- package/dist/agent-onboarding/agent-instructions.js +2 -2
- package/dist/agent-onboarding/agent-instructions.js.map +1 -1
- package/dist/cli/args.d.ts +57 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +209 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/commands.d.ts +8 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +170 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/entrypoint.d.ts +2 -0
- package/dist/cli/entrypoint.d.ts.map +1 -0
- package/dist/cli/entrypoint.js +18 -0
- package/dist/cli/entrypoint.js.map +1 -0
- package/dist/cli/git-hooks.d.ts +2 -0
- package/dist/cli/git-hooks.d.ts.map +1 -0
- package/dist/cli/git-hooks.js +31 -0
- package/dist/cli/git-hooks.js.map +1 -0
- package/dist/cli/help.d.ts +4 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +151 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/io.d.ts +3 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +16 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +76 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/result.d.ts +4 -0
- package/dist/cli/result.d.ts.map +1 -0
- package/dist/cli/result.js +107 -0
- package/dist/cli/result.js.map +1 -0
- package/dist/cli/types.d.ts +30 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +7 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli.d.ts +5 -18
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -759
- package/dist/cli.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/cli/help.js
ADDED
|
@@ -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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"}
|
package/dist/cli/io.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/cli/main.js
ADDED
|
@@ -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 @@
|
|
|
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 {
|
|
3
|
-
export
|
|
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
|
|
11
|
-
|
|
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":";
|
|
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"}
|