@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.
Files changed (70) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +112 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/config-lint.d.ts +5 -0
  6. package/dist/commands/config-lint.d.ts.map +1 -0
  7. package/dist/commands/config-lint.js +188 -0
  8. package/dist/commands/config-lint.js.map +1 -0
  9. package/dist/commands/finding-age.d.ts +5 -0
  10. package/dist/commands/finding-age.d.ts.map +1 -0
  11. package/dist/commands/finding-age.js +146 -0
  12. package/dist/commands/finding-age.js.map +1 -0
  13. package/dist/commands/finding-cluster.d.ts +5 -0
  14. package/dist/commands/finding-cluster.d.ts.map +1 -0
  15. package/dist/commands/finding-cluster.js +158 -0
  16. package/dist/commands/finding-cluster.js.map +1 -0
  17. package/dist/commands/finding-hotspot.d.ts +5 -0
  18. package/dist/commands/finding-hotspot.d.ts.map +1 -0
  19. package/dist/commands/finding-hotspot.js +116 -0
  20. package/dist/commands/finding-hotspot.js.map +1 -0
  21. package/dist/commands/finding-rank.d.ts +5 -0
  22. package/dist/commands/finding-rank.d.ts.map +1 -0
  23. package/dist/commands/finding-rank.js +139 -0
  24. package/dist/commands/finding-rank.js.map +1 -0
  25. package/dist/commands/review-ab-test.d.ts +5 -0
  26. package/dist/commands/review-ab-test.d.ts.map +1 -0
  27. package/dist/commands/review-ab-test.js +225 -0
  28. package/dist/commands/review-ab-test.js.map +1 -0
  29. package/dist/commands/review-audit-log.d.ts +5 -0
  30. package/dist/commands/review-audit-log.d.ts.map +1 -0
  31. package/dist/commands/review-audit-log.js +140 -0
  32. package/dist/commands/review-audit-log.js.map +1 -0
  33. package/dist/commands/review-badge.d.ts +5 -0
  34. package/dist/commands/review-badge.d.ts.map +1 -0
  35. package/dist/commands/review-badge.js +153 -0
  36. package/dist/commands/review-badge.js.map +1 -0
  37. package/dist/commands/review-dashboard.d.ts +5 -0
  38. package/dist/commands/review-dashboard.d.ts.map +1 -0
  39. package/dist/commands/review-dashboard.js +141 -0
  40. package/dist/commands/review-dashboard.js.map +1 -0
  41. package/dist/commands/review-diff-summary.d.ts +5 -0
  42. package/dist/commands/review-diff-summary.d.ts.map +1 -0
  43. package/dist/commands/review-diff-summary.js +155 -0
  44. package/dist/commands/review-diff-summary.js.map +1 -0
  45. package/dist/commands/review-integration.d.ts +5 -0
  46. package/dist/commands/review-integration.d.ts.map +1 -0
  47. package/dist/commands/review-integration.js +237 -0
  48. package/dist/commands/review-integration.js.map +1 -0
  49. package/dist/commands/review-notify.d.ts +5 -0
  50. package/dist/commands/review-notify.d.ts.map +1 -0
  51. package/dist/commands/review-notify.js +144 -0
  52. package/dist/commands/review-notify.js.map +1 -0
  53. package/dist/commands/review-offline.d.ts +5 -0
  54. package/dist/commands/review-offline.d.ts.map +1 -0
  55. package/dist/commands/review-offline.js +126 -0
  56. package/dist/commands/review-offline.js.map +1 -0
  57. package/dist/commands/review-quota.d.ts +5 -0
  58. package/dist/commands/review-quota.d.ts.map +1 -0
  59. package/dist/commands/review-quota.js +127 -0
  60. package/dist/commands/review-quota.js.map +1 -0
  61. package/dist/commands/review-sandbox.d.ts +5 -0
  62. package/dist/commands/review-sandbox.d.ts.map +1 -0
  63. package/dist/commands/review-sandbox.js +192 -0
  64. package/dist/commands/review-sandbox.js.map +1 -0
  65. package/dist/commands/review-streak.d.ts +5 -0
  66. package/dist/commands/review-streak.d.ts.map +1 -0
  67. package/dist/commands/review-streak.js +151 -0
  68. package/dist/commands/review-streak.js.map +1 -0
  69. package/package.json +1 -1
  70. 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":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAG9C,+EAA+E;AAE/E,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBf,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,MAAM,CAAC;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAE3G,kBAAkB;IAClB,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,MAAuB,CAAC;QAC5B,IAAI,KAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAoB,CAAC;YAC1E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAoB,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEnE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;gBACrC,UAAU,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;gBACnC,UAAU;gBACV,cAAc,EAAE,cAAc,CAAC,MAAM;gBACrC,aAAa,EAAE,aAAa,CAAC,MAAM;gBACnC,aAAa;gBACb,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,UAAU,EAAE,UAAU,CAAC,MAAM;aAC9B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CACT,cAAc,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,GAAG,CACnH,CAAC;QACF,OAAO,CAAC,GAAG,CACT,iBAAiB,cAAc,CAAC,MAAM,MAAM,aAAa,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,GAAG,CACtH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAoB,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;QACpC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC;YAChC,OAAO,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;YACxC,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,cAAc;YACd,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;SAC/B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CACT,cAAc,OAAO,CAAC,YAAY,IAAI,CAAC,mBAAmB,OAAO,CAAC,cAAc,IAAI,KAAK,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAC3H,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,MAAM,GAAG,QAAQ,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,CAAU;IACtB,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3F,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Review-integration — Verify CI/CD, IDE, and hook integrations are connected.
3
+ */
4
+ export declare function runReviewIntegration(argv: string[]): void;
5
+ //# sourceMappingURL=review-integration.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Review-notify — Local notification configuration for review events.
3
+ */
4
+ export declare function runReviewNotify(argv: string[]): void;
5
+ //# sourceMappingURL=review-notify.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Review-offline — Offline mode support for air-gapped environments.
3
+ */
4
+ export declare function runReviewOffline(argv: string[]): void;
5
+ //# sourceMappingURL=review-offline.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Review-quota — Track review usage quotas locally.
3
+ */
4
+ export declare function runReviewQuota(argv: string[]): void;
5
+ //# sourceMappingURL=review-quota.d.ts.map
@@ -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"}