@kevinrabun/judges 3.66.0 → 3.68.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/CHANGELOG.md +17 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +112 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/config-lint.d.ts +5 -0
- package/dist/commands/config-lint.d.ts.map +1 -0
- package/dist/commands/config-lint.js +188 -0
- package/dist/commands/config-lint.js.map +1 -0
- package/dist/commands/finding-age.d.ts +5 -0
- package/dist/commands/finding-age.d.ts.map +1 -0
- package/dist/commands/finding-age.js +146 -0
- package/dist/commands/finding-age.js.map +1 -0
- package/dist/commands/finding-cluster.d.ts +5 -0
- package/dist/commands/finding-cluster.d.ts.map +1 -0
- package/dist/commands/finding-cluster.js +158 -0
- package/dist/commands/finding-cluster.js.map +1 -0
- package/dist/commands/finding-hotspot.d.ts +5 -0
- package/dist/commands/finding-hotspot.d.ts.map +1 -0
- package/dist/commands/finding-hotspot.js +116 -0
- package/dist/commands/finding-hotspot.js.map +1 -0
- package/dist/commands/finding-rank.d.ts +5 -0
- package/dist/commands/finding-rank.d.ts.map +1 -0
- package/dist/commands/finding-rank.js +139 -0
- package/dist/commands/finding-rank.js.map +1 -0
- package/dist/commands/review-ab-test.d.ts +5 -0
- package/dist/commands/review-ab-test.d.ts.map +1 -0
- package/dist/commands/review-ab-test.js +225 -0
- package/dist/commands/review-ab-test.js.map +1 -0
- package/dist/commands/review-audit-log.d.ts +5 -0
- package/dist/commands/review-audit-log.d.ts.map +1 -0
- package/dist/commands/review-audit-log.js +140 -0
- package/dist/commands/review-audit-log.js.map +1 -0
- package/dist/commands/review-badge.d.ts +5 -0
- package/dist/commands/review-badge.d.ts.map +1 -0
- package/dist/commands/review-badge.js +153 -0
- package/dist/commands/review-badge.js.map +1 -0
- package/dist/commands/review-dashboard.d.ts +5 -0
- package/dist/commands/review-dashboard.d.ts.map +1 -0
- package/dist/commands/review-dashboard.js +141 -0
- package/dist/commands/review-dashboard.js.map +1 -0
- package/dist/commands/review-diff-summary.d.ts +5 -0
- package/dist/commands/review-diff-summary.d.ts.map +1 -0
- package/dist/commands/review-diff-summary.js +155 -0
- package/dist/commands/review-diff-summary.js.map +1 -0
- package/dist/commands/review-integration.d.ts +5 -0
- package/dist/commands/review-integration.d.ts.map +1 -0
- package/dist/commands/review-integration.js +237 -0
- package/dist/commands/review-integration.js.map +1 -0
- package/dist/commands/review-notify.d.ts +5 -0
- package/dist/commands/review-notify.d.ts.map +1 -0
- package/dist/commands/review-notify.js +144 -0
- package/dist/commands/review-notify.js.map +1 -0
- package/dist/commands/review-offline.d.ts +5 -0
- package/dist/commands/review-offline.d.ts.map +1 -0
- package/dist/commands/review-offline.js +126 -0
- package/dist/commands/review-offline.js.map +1 -0
- package/dist/commands/review-quota.d.ts +5 -0
- package/dist/commands/review-quota.d.ts.map +1 -0
- package/dist/commands/review-quota.js +127 -0
- package/dist/commands/review-quota.js.map +1 -0
- package/dist/commands/review-sandbox.d.ts +5 -0
- package/dist/commands/review-sandbox.d.ts.map +1 -0
- package/dist/commands/review-sandbox.js +192 -0
- package/dist/commands/review-sandbox.js.map +1 -0
- package/dist/commands/review-streak.d.ts +5 -0
- package/dist/commands/review-streak.d.ts.map +1 -0
- package/dist/commands/review-streak.js +151 -0
- package/dist/commands/review-streak.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-diff-summary.js","sourceRoot":"","sources":["../../src/commands/review-diff-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-integration.d.ts","sourceRoot":"","sources":["../../src/commands/review-integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4LH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAmEzD"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-integration — Verify CI/CD, IDE, and hook integrations are connected.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, readFileSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
// ─── Checks ─────────────────────────────────────────────────────────────────
|
|
7
|
+
function checkJudgesrc() {
|
|
8
|
+
if (existsSync(".judgesrc")) {
|
|
9
|
+
try {
|
|
10
|
+
JSON.parse(readFileSync(".judgesrc", "utf-8"));
|
|
11
|
+
return {
|
|
12
|
+
name: ".judgesrc",
|
|
13
|
+
category: "config",
|
|
14
|
+
status: "connected",
|
|
15
|
+
details: "Configuration file found and valid",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { name: ".judgesrc", category: "config", status: "partial", details: "File exists but has parse errors" };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
name: ".judgesrc",
|
|
24
|
+
category: "config",
|
|
25
|
+
status: "missing",
|
|
26
|
+
details: "No .judgesrc found — run 'judges init'",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function checkGitHooksDir() {
|
|
30
|
+
const huskyHook = join(".husky", "pre-commit");
|
|
31
|
+
const gitHook = join(".git", "hooks", "pre-commit");
|
|
32
|
+
if (existsSync(huskyHook)) {
|
|
33
|
+
const content = readFileSync(huskyHook, "utf-8");
|
|
34
|
+
if (content.includes("judges")) {
|
|
35
|
+
return {
|
|
36
|
+
name: "Git Pre-commit Hook",
|
|
37
|
+
category: "hooks",
|
|
38
|
+
status: "connected",
|
|
39
|
+
details: "Husky pre-commit hook includes judges",
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
name: "Git Pre-commit Hook",
|
|
44
|
+
category: "hooks",
|
|
45
|
+
status: "partial",
|
|
46
|
+
details: "Husky hook exists but doesn't reference judges",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (existsSync(gitHook)) {
|
|
50
|
+
const content = readFileSync(gitHook, "utf-8");
|
|
51
|
+
if (content.includes("judges")) {
|
|
52
|
+
return {
|
|
53
|
+
name: "Git Pre-commit Hook",
|
|
54
|
+
category: "hooks",
|
|
55
|
+
status: "connected",
|
|
56
|
+
details: "Git pre-commit hook includes judges",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
name: "Git Pre-commit Hook",
|
|
61
|
+
category: "hooks",
|
|
62
|
+
status: "partial",
|
|
63
|
+
details: "Git hook exists but doesn't reference judges",
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
name: "Git Pre-commit Hook",
|
|
68
|
+
category: "hooks",
|
|
69
|
+
status: "missing",
|
|
70
|
+
details: "No pre-commit hook — run 'judges hook-install'",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function checkGitHubActions() {
|
|
74
|
+
const workflowDir = join(".github", "workflows");
|
|
75
|
+
if (!existsSync(workflowDir)) {
|
|
76
|
+
return { name: "GitHub Actions", category: "ci", status: "missing", details: "No .github/workflows directory" };
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const files = ["judges.yml", "judges.yaml", "review.yml", "review.yaml", "code-review.yml"];
|
|
80
|
+
for (const f of files) {
|
|
81
|
+
if (existsSync(join(workflowDir, f))) {
|
|
82
|
+
return { name: "GitHub Actions", category: "ci", status: "connected", details: `Workflow file: ${f}` };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Check if any workflow references judges
|
|
86
|
+
const commonFiles = ["ci.yml", "ci.yaml", "main.yml", "main.yaml", "push.yml", "build.yml"];
|
|
87
|
+
for (const f of commonFiles) {
|
|
88
|
+
const path = join(workflowDir, f);
|
|
89
|
+
if (existsSync(path)) {
|
|
90
|
+
const content = readFileSync(path, "utf-8");
|
|
91
|
+
if (content.includes("judges")) {
|
|
92
|
+
return { name: "GitHub Actions", category: "ci", status: "connected", details: `Judges referenced in ${f}` };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
name: "GitHub Actions",
|
|
98
|
+
category: "ci",
|
|
99
|
+
status: "partial",
|
|
100
|
+
details: "Workflows exist but no judges integration found",
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return { name: "GitHub Actions", category: "ci", status: "missing", details: "Could not read workflows" };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function checkVSCodeExtension() {
|
|
108
|
+
const vscodePath = join(".vscode", "extensions.json");
|
|
109
|
+
if (existsSync(vscodePath)) {
|
|
110
|
+
try {
|
|
111
|
+
const content = readFileSync(vscodePath, "utf-8");
|
|
112
|
+
if (content.includes("judges")) {
|
|
113
|
+
return {
|
|
114
|
+
name: "VS Code Extension",
|
|
115
|
+
category: "ide",
|
|
116
|
+
status: "connected",
|
|
117
|
+
details: "Judges in recommended extensions",
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
/* ignore */
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
name: "VS Code Extension",
|
|
127
|
+
category: "ide",
|
|
128
|
+
status: "missing",
|
|
129
|
+
details: "Add judges to .vscode/extensions.json recommendations",
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function checkPackageJson() {
|
|
133
|
+
if (!existsSync("package.json")) {
|
|
134
|
+
return { name: "package.json scripts", category: "config", status: "missing", details: "No package.json found" };
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const pkg = JSON.parse(readFileSync("package.json", "utf-8"));
|
|
138
|
+
const scripts = (pkg.scripts || {});
|
|
139
|
+
const judgesScripts = Object.entries(scripts).filter(([, v]) => v.includes("judges"));
|
|
140
|
+
if (judgesScripts.length > 0) {
|
|
141
|
+
return {
|
|
142
|
+
name: "package.json scripts",
|
|
143
|
+
category: "config",
|
|
144
|
+
status: "connected",
|
|
145
|
+
details: `Scripts: ${judgesScripts.map(([k]) => k).join(", ")}`,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
name: "package.json scripts",
|
|
150
|
+
category: "config",
|
|
151
|
+
status: "missing",
|
|
152
|
+
details: "No judges scripts in package.json",
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return {
|
|
157
|
+
name: "package.json scripts",
|
|
158
|
+
category: "config",
|
|
159
|
+
status: "partial",
|
|
160
|
+
details: "Could not parse package.json",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function checkLocalData() {
|
|
165
|
+
if (existsSync(".judges")) {
|
|
166
|
+
return { name: "Local Data Dir", category: "data", status: "connected", details: ".judges/ directory exists" };
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
name: "Local Data Dir",
|
|
170
|
+
category: "data",
|
|
171
|
+
status: "missing",
|
|
172
|
+
details: "No .judges/ directory — created on first use",
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// ─── CLI ────────────────────────────────────────────────────────────────────
|
|
176
|
+
export function runReviewIntegration(argv) {
|
|
177
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
178
|
+
console.log(`
|
|
179
|
+
judges review-integration — Verify all integrations are connected
|
|
180
|
+
|
|
181
|
+
Usage:
|
|
182
|
+
judges review-integration Run all checks
|
|
183
|
+
judges review-integration --category ci Check specific category
|
|
184
|
+
judges review-integration --fix Show fix suggestions
|
|
185
|
+
|
|
186
|
+
Options:
|
|
187
|
+
--category <cat> Filter by category (config, ci, hooks, ide, data)
|
|
188
|
+
--fix Show how to fix missing integrations
|
|
189
|
+
--format json JSON output
|
|
190
|
+
--help, -h Show this help
|
|
191
|
+
|
|
192
|
+
Verifies CI/CD, git hooks, IDE, and config integrations are properly set up.
|
|
193
|
+
`);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
|
|
197
|
+
const category = argv.find((_a, i) => argv[i - 1] === "--category");
|
|
198
|
+
const showFix = argv.includes("--fix");
|
|
199
|
+
let checks = [
|
|
200
|
+
checkJudgesrc(),
|
|
201
|
+
checkPackageJson(),
|
|
202
|
+
checkGitHooksDir(),
|
|
203
|
+
checkGitHubActions(),
|
|
204
|
+
checkVSCodeExtension(),
|
|
205
|
+
checkLocalData(),
|
|
206
|
+
];
|
|
207
|
+
if (category) {
|
|
208
|
+
checks = checks.filter((c) => c.category === category);
|
|
209
|
+
}
|
|
210
|
+
if (format === "json") {
|
|
211
|
+
console.log(JSON.stringify(checks, null, 2));
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const connected = checks.filter((c) => c.status === "connected").length;
|
|
215
|
+
const total = checks.length;
|
|
216
|
+
console.log("\nIntegration Status:");
|
|
217
|
+
console.log("─".repeat(70));
|
|
218
|
+
for (const c of checks) {
|
|
219
|
+
const icon = c.status === "connected" ? "[OK]" : c.status === "partial" ? "[!!]" : "[--]";
|
|
220
|
+
console.log(` ${icon} ${c.name.padEnd(25)} ${c.details}`);
|
|
221
|
+
}
|
|
222
|
+
console.log("─".repeat(70));
|
|
223
|
+
console.log(` ${connected}/${total} integrations connected`);
|
|
224
|
+
if (showFix) {
|
|
225
|
+
const missing = checks.filter((c) => c.status !== "connected");
|
|
226
|
+
if (missing.length > 0) {
|
|
227
|
+
console.log("\nSuggested Fixes:");
|
|
228
|
+
console.log("─".repeat(70));
|
|
229
|
+
for (const c of missing) {
|
|
230
|
+
console.log(` ${c.name}: ${c.details}`);
|
|
231
|
+
}
|
|
232
|
+
console.log("─".repeat(70));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
console.log();
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=review-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-integration.js","sourceRoot":"","sources":["../../src/commands/review-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-notify.d.ts","sourceRoot":"","sources":["../../src/commands/review-notify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyCH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqIpD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-notify — Local notification configuration for review events.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
5
|
+
import { join, dirname } from "path";
|
|
6
|
+
// ─── Storage ────────────────────────────────────────────────────────────────
|
|
7
|
+
const NOTIFY_FILE = join(".judges", "notify-rules.json");
|
|
8
|
+
function loadNotifyStore() {
|
|
9
|
+
if (!existsSync(NOTIFY_FILE))
|
|
10
|
+
return { version: "1.0.0", rules: [] };
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(readFileSync(NOTIFY_FILE, "utf-8"));
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return { version: "1.0.0", rules: [] };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function saveNotifyStore(store) {
|
|
19
|
+
mkdirSync(dirname(NOTIFY_FILE), { recursive: true });
|
|
20
|
+
writeFileSync(NOTIFY_FILE, JSON.stringify(store, null, 2), "utf-8");
|
|
21
|
+
}
|
|
22
|
+
// ─── CLI ────────────────────────────────────────────────────────────────────
|
|
23
|
+
export function runReviewNotify(argv) {
|
|
24
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
25
|
+
console.log(`
|
|
26
|
+
judges review-notify — Configure notifications for review events
|
|
27
|
+
|
|
28
|
+
Usage:
|
|
29
|
+
judges review-notify list List notification rules
|
|
30
|
+
judges review-notify add --event fail --action log --condition "score<70"
|
|
31
|
+
judges review-notify remove --id nfy-xxx Remove a rule
|
|
32
|
+
judges review-notify enable --id nfy-xxx Enable a rule
|
|
33
|
+
judges review-notify disable --id nfy-xxx Disable a rule
|
|
34
|
+
|
|
35
|
+
Subcommands:
|
|
36
|
+
list List all notification rules
|
|
37
|
+
add Add a notification rule
|
|
38
|
+
remove Remove a notification rule
|
|
39
|
+
enable Enable a rule
|
|
40
|
+
disable Disable a rule
|
|
41
|
+
|
|
42
|
+
Events:
|
|
43
|
+
fail Review verdict is fail
|
|
44
|
+
critical Critical finding detected
|
|
45
|
+
score-drop Score drops below threshold
|
|
46
|
+
new-finding New finding introduced
|
|
47
|
+
|
|
48
|
+
Actions:
|
|
49
|
+
log Write to .judges/notifications.log
|
|
50
|
+
console Print to stderr
|
|
51
|
+
file Write to specified file
|
|
52
|
+
|
|
53
|
+
Options:
|
|
54
|
+
--event <name> Event to trigger on
|
|
55
|
+
--action <type> Action to take
|
|
56
|
+
--condition <expr> Condition expression
|
|
57
|
+
--id <id> Rule ID
|
|
58
|
+
--format json JSON output
|
|
59
|
+
--help, -h Show this help
|
|
60
|
+
|
|
61
|
+
Notification rules are stored in .judges/notify-rules.json.
|
|
62
|
+
No data is sent externally — all notifications are local.
|
|
63
|
+
`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
|
|
67
|
+
const subcommand = argv.find((a) => ["list", "add", "remove", "enable", "disable"].includes(a)) || "list";
|
|
68
|
+
const store = loadNotifyStore();
|
|
69
|
+
if (subcommand === "add") {
|
|
70
|
+
const event = argv.find((_a, i) => argv[i - 1] === "--event") || "fail";
|
|
71
|
+
const action = argv.find((_a, i) => argv[i - 1] === "--action") || "log";
|
|
72
|
+
const condition = argv.find((_a, i) => argv[i - 1] === "--condition") || "";
|
|
73
|
+
const validEvents = ["fail", "critical", "score-drop", "new-finding"];
|
|
74
|
+
if (!validEvents.includes(event)) {
|
|
75
|
+
console.error(`Error: Unknown event '${event}'. Valid: ${validEvents.join(", ")}`);
|
|
76
|
+
process.exitCode = 1;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const validActions = ["log", "console", "file"];
|
|
80
|
+
if (!validActions.includes(action)) {
|
|
81
|
+
console.error(`Error: Unknown action '${action}'. Valid: ${validActions.join(", ")}`);
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const rule = {
|
|
86
|
+
id: `nfy-${Date.now().toString(36)}`,
|
|
87
|
+
event,
|
|
88
|
+
condition,
|
|
89
|
+
action,
|
|
90
|
+
enabled: true,
|
|
91
|
+
createdAt: new Date().toISOString(),
|
|
92
|
+
};
|
|
93
|
+
store.rules.push(rule);
|
|
94
|
+
saveNotifyStore(store);
|
|
95
|
+
console.log(`Added notification rule '${rule.id}' — on ${event} → ${action}`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (subcommand === "remove") {
|
|
99
|
+
const id = argv.find((_a, i) => argv[i - 1] === "--id");
|
|
100
|
+
if (!id) {
|
|
101
|
+
console.error("Error: --id is required.");
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
store.rules = store.rules.filter((r) => r.id !== id);
|
|
106
|
+
saveNotifyStore(store);
|
|
107
|
+
console.log(`Removed notification rule '${id}'.`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (subcommand === "enable" || subcommand === "disable") {
|
|
111
|
+
const id = argv.find((_a, i) => argv[i - 1] === "--id");
|
|
112
|
+
if (!id) {
|
|
113
|
+
console.error("Error: --id is required.");
|
|
114
|
+
process.exitCode = 1;
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const rule = store.rules.find((r) => r.id === id);
|
|
118
|
+
if (!rule) {
|
|
119
|
+
console.error(`Error: Rule '${id}' not found.`);
|
|
120
|
+
process.exitCode = 1;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
rule.enabled = subcommand === "enable";
|
|
124
|
+
saveNotifyStore(store);
|
|
125
|
+
console.log(`Rule '${id}' ${subcommand}d.`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// List
|
|
129
|
+
if (format === "json") {
|
|
130
|
+
console.log(JSON.stringify(store, null, 2));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
console.log(`\n Notification Rules (${store.rules.length})\n ═════════════════════════════`);
|
|
134
|
+
if (store.rules.length === 0) {
|
|
135
|
+
console.log(" No rules. Add one with: judges review-notify add --event fail --action log");
|
|
136
|
+
}
|
|
137
|
+
for (const rule of store.rules) {
|
|
138
|
+
const status = rule.enabled ? "✅" : "⏸️";
|
|
139
|
+
const cond = rule.condition ? ` when ${rule.condition}` : "";
|
|
140
|
+
console.log(` ${status} ${rule.id} — on ${rule.event}${cond} → ${rule.action}`);
|
|
141
|
+
}
|
|
142
|
+
console.log();
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=review-notify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-notify.js","sourceRoot":"","sources":["../../src/commands/review-notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-offline.d.ts","sourceRoot":"","sources":["../../src/commands/review-offline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqIrD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Review-offline — Offline mode support for air-gapped environments.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
5
|
+
import { join, dirname } from "path";
|
|
6
|
+
// ─── Storage ────────────────────────────────────────────────────────────────
|
|
7
|
+
const OFFLINE_DIR = join(".judges", "offline");
|
|
8
|
+
// ─── CLI ────────────────────────────────────────────────────────────────────
|
|
9
|
+
export function runReviewOffline(argv) {
|
|
10
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
11
|
+
console.log(`
|
|
12
|
+
judges review-offline — Offline mode support
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
judges review-offline status Check offline readiness
|
|
16
|
+
judges review-offline prepare Prepare for offline use
|
|
17
|
+
judges review-offline bundle --output bundle.json Create offline bundle
|
|
18
|
+
judges review-offline verify Verify offline bundle
|
|
19
|
+
|
|
20
|
+
Subcommands:
|
|
21
|
+
status Check if judges can run offline
|
|
22
|
+
prepare Cache required data for offline use
|
|
23
|
+
bundle Create a portable offline bundle
|
|
24
|
+
verify Verify offline setup is complete
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
--output <path> Output path for bundle
|
|
28
|
+
--format json JSON output
|
|
29
|
+
--help, -h Show this help
|
|
30
|
+
|
|
31
|
+
Judges runs entirely locally without network access.
|
|
32
|
+
This command helps verify and document offline capabilities.
|
|
33
|
+
`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const format = argv.find((_a, i) => argv[i - 1] === "--format") || "text";
|
|
37
|
+
const subcommand = argv.find((a) => ["status", "prepare", "bundle", "verify"].includes(a)) || "status";
|
|
38
|
+
if (subcommand === "prepare") {
|
|
39
|
+
mkdirSync(OFFLINE_DIR, { recursive: true });
|
|
40
|
+
// Snapshot current config if it exists
|
|
41
|
+
const rcPath = ".judgesrc";
|
|
42
|
+
let config = {};
|
|
43
|
+
if (existsSync(rcPath)) {
|
|
44
|
+
try {
|
|
45
|
+
config = JSON.parse(readFileSync(rcPath, "utf-8"));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
/* skip */
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const manifest = {
|
|
52
|
+
version: "1.0.0",
|
|
53
|
+
createdAt: new Date().toISOString(),
|
|
54
|
+
includes: ["judges-cli", "all-judges", "config"],
|
|
55
|
+
configSnapshot: config,
|
|
56
|
+
};
|
|
57
|
+
writeFileSync(join(OFFLINE_DIR, "manifest.json"), JSON.stringify(manifest, null, 2), "utf-8");
|
|
58
|
+
console.log("Offline preparation complete. Manifest written to .judges/offline/manifest.json");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (subcommand === "bundle") {
|
|
62
|
+
const output = argv.find((_a, i) => argv[i - 1] === "--output") || join(OFFLINE_DIR, "bundle.json");
|
|
63
|
+
const rcPath = ".judgesrc";
|
|
64
|
+
let config = {};
|
|
65
|
+
if (existsSync(rcPath)) {
|
|
66
|
+
try {
|
|
67
|
+
config = JSON.parse(readFileSync(rcPath, "utf-8"));
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
/* skip */
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const bundle = {
|
|
74
|
+
version: "1.0.0",
|
|
75
|
+
createdAt: new Date().toISOString(),
|
|
76
|
+
includes: ["judges-cli", "all-judges", "config", "rules"],
|
|
77
|
+
configSnapshot: config,
|
|
78
|
+
};
|
|
79
|
+
mkdirSync(dirname(output), { recursive: true });
|
|
80
|
+
writeFileSync(output, JSON.stringify(bundle, null, 2), "utf-8");
|
|
81
|
+
console.log(`Offline bundle written to ${output}`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (subcommand === "verify") {
|
|
85
|
+
const manifestPath = join(OFFLINE_DIR, "manifest.json");
|
|
86
|
+
const checks = [
|
|
87
|
+
{ name: "CLI installed", ok: true },
|
|
88
|
+
{ name: "Judges available", ok: true },
|
|
89
|
+
{ name: "Offline manifest", ok: existsSync(manifestPath) },
|
|
90
|
+
{ name: "Config present", ok: existsSync(".judgesrc") },
|
|
91
|
+
];
|
|
92
|
+
if (format === "json") {
|
|
93
|
+
console.log(JSON.stringify({ checks, allPassed: checks.every((c) => c.ok) }, null, 2));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
console.log("\n Offline Verification\n ─────────────────────────────");
|
|
97
|
+
for (const check of checks) {
|
|
98
|
+
console.log(` ${check.ok ? "✅" : "❌"} ${check.name}`);
|
|
99
|
+
}
|
|
100
|
+
const allOk = checks.every((c) => c.ok);
|
|
101
|
+
console.log(`\n ${allOk ? "✅ Ready for offline use" : "⚠️ Some checks failed — run 'judges review-offline prepare'"}`);
|
|
102
|
+
console.log();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Status
|
|
106
|
+
const capabilities = {
|
|
107
|
+
localExecution: true,
|
|
108
|
+
noNetworkRequired: true,
|
|
109
|
+
allJudgesLocal: true,
|
|
110
|
+
configLocal: existsSync(".judgesrc"),
|
|
111
|
+
offlinePrepared: existsSync(join(OFFLINE_DIR, "manifest.json")),
|
|
112
|
+
};
|
|
113
|
+
if (format === "json") {
|
|
114
|
+
console.log(JSON.stringify(capabilities, null, 2));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
console.log("\n Offline Mode Status\n ═════════════════════════════");
|
|
118
|
+
console.log(` Local execution: ✅ All analysis runs locally`);
|
|
119
|
+
console.log(` Network required: ❌ No network access needed`);
|
|
120
|
+
console.log(` All judges local: ✅ All ${45}+ judges are bundled`);
|
|
121
|
+
console.log(` Config present: ${capabilities.configLocal ? "✅" : "⚠️ No .judgesrc found"}`);
|
|
122
|
+
console.log(` Offline prepared: ${capabilities.offlinePrepared ? "✅" : "⚠️ Run 'judges review-offline prepare'"}`);
|
|
123
|
+
console.log(`\n Judges is designed for fully offline, air-gapped operation.`);
|
|
124
|
+
console.log(` No data is sent externally — all processing is local.\n`);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=review-offline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-offline.js","sourceRoot":"","sources":["../../src/commands/review-offline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-quota.d.ts","sourceRoot":"","sources":["../../src/commands/review-quota.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiDH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqHnD"}
|