rebar-mcp 2.6.0 → 2.6.1

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/dist/cli.js CHANGED
@@ -27,7 +27,7 @@ import { loadLicense, loadUsage, canUseLLMReview } from "./services/license.js";
27
27
  import { loadMemory, clearMemory, learnFromHistory, exportMemorySummary, } from "./services/prereview-memory.js";
28
28
  import { analyzeDecisionHistory, formatAnalyticsReport, exportAnalyticsJSON, generateBlockRateChart, } from "./services/prereview-analytics.js";
29
29
  import { COMMAND_COMMIT_PUSH_PR, COMMAND_SIMPLIFY, COMMAND_VERIFY, COMMAND_REVIEW_PLAN, COMMAND_FIX_TESTS, COMMAND_UPDATE_DOCS, AGENT_CODE_SIMPLIFIER, AGENT_VERIFIER, AGENT_EXPLAIN, AGENT_SECURITY_REVIEWER, AGENT_TEST_WRITER, getPostToolUseFormatHook, SAFE_BASH_PERMISSIONS, } from "./services/workflow-templates.js";
30
- const VERSION = "2.6.0";
30
+ const VERSION = "2.6.1";
31
31
  /**
32
32
  * Read stdin if available (non-blocking check)
33
33
  * Returns the parsed JSON if it's a valid hook input, null otherwise
@@ -1,4 +1,4 @@
1
- export type LicenseTier = "free" | "pro" | "team";
1
+ export type LicenseTier = "free" | "pro" | "team" | "enterprise";
2
2
  export interface License {
3
3
  tier: LicenseTier;
4
4
  apiKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/services/license.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAuBD;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsCvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,GAAG,OAAO,EACrB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAqCD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAqBA"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/services/license.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAsCD;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8CvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,GAAG,OAAO,EACrB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CA6CD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CA2BA"}
@@ -5,11 +5,15 @@
5
5
  * - free: Local regex only, no LLM
6
6
  * - pro: 1,000 LLM reviews/month, cross-session memory
7
7
  * - team: 5,000 LLM reviews/month, audit retention 1 year
8
+ * - enterprise: Unlimited (requires REBAR_LICENSE_KEY)
8
9
  */
9
10
  import * as path from "node:path";
10
11
  import * as fs from "node:fs/promises";
12
+ import * as crypto from "node:crypto";
11
13
  import { readFileSafe } from "./file-ops.js";
12
14
  import { atomicWrite } from "./file-ops.js";
15
+ // Enterprise license validation - hash of valid license key
16
+ const ENTERPRISE_KEY_HASH = "da62916ff18248ddd4a397fedeba2dddc6baf3db6eca8b5a87009463744be083";
13
17
  const TIER_LIMITS = {
14
18
  free: {
15
19
  monthlyLimit: 0,
@@ -29,14 +33,30 @@ const TIER_LIMITS = {
29
33
  crossSessionMemory: true,
30
34
  auditRetentionDays: 365,
31
35
  },
36
+ enterprise: {
37
+ monthlyLimit: Infinity,
38
+ llmReview: true,
39
+ crossSessionMemory: true,
40
+ auditRetentionDays: 365 * 10,
41
+ },
32
42
  };
43
+ /**
44
+ * Validate enterprise license key
45
+ */
46
+ function isValidEnterpriseKey(licenseKey) {
47
+ if (!licenseKey)
48
+ return false;
49
+ const hash = crypto.createHash("sha256").update(licenseKey).digest("hex");
50
+ return hash === ENTERPRISE_KEY_HASH;
51
+ }
33
52
  /**
34
53
  * Load license from project or environment
35
54
  */
36
55
  export async function loadLicense(projectPath) {
37
- // Check environment variable first
56
+ // Check environment variables first
38
57
  const envApiKey = process.env.REBAR_API_KEY;
39
58
  const envTier = process.env.REBAR_TIER;
59
+ const envLicenseKey = process.env.REBAR_LICENSE_KEY;
40
60
  // Check project license file
41
61
  const licensePath = path.join(projectPath, ".rebar", "license.json");
42
62
  const content = await readFileSafe(licensePath);
@@ -51,9 +71,15 @@ export async function loadLicense(projectPath) {
51
71
  }
52
72
  // Environment overrides file
53
73
  const apiKey = envApiKey || license.apiKey;
54
- const tier = envTier || license.tier || "free";
74
+ let tier = envTier || license.tier || "free";
75
+ // Enterprise tier requires valid license key
76
+ if (tier === "enterprise") {
77
+ if (!isValidEnterpriseKey(envLicenseKey)) {
78
+ tier = "team"; // Downgrade to team if invalid key
79
+ }
80
+ }
55
81
  // Validate tier
56
- const validTier = ["free", "pro", "team"].includes(tier) ? tier : "free";
82
+ const validTier = ["free", "pro", "team", "enterprise"].includes(tier) ? tier : "free";
57
83
  const tierConfig = TIER_LIMITS[validTier];
58
84
  return {
59
85
  tier: validTier,
@@ -152,6 +178,13 @@ export async function canUseLLMReview(projectPath) {
152
178
  };
153
179
  }
154
180
  }
181
+ // Enterprise has unlimited reviews
182
+ if (license.tier === "enterprise") {
183
+ return {
184
+ allowed: true,
185
+ remaining: Infinity,
186
+ };
187
+ }
155
188
  const usage = await loadUsage(projectPath);
156
189
  const remaining = license.monthlyLimit - usage.llmReviews;
157
190
  if (remaining <= 0) {
@@ -189,6 +222,12 @@ export function getTierInfo(tier) {
189
222
  description: "5,000 LLM reviews/month + 1 year audit retention",
190
223
  price: "$49/user/month",
191
224
  };
225
+ case "enterprise":
226
+ return {
227
+ name: "Enterprise",
228
+ description: "Unlimited LLM reviews + 10 year audit retention",
229
+ price: "Contact sales",
230
+ };
192
231
  }
193
232
  }
194
233
  //# sourceMappingURL=license.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/services/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/services/license.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rebar-mcp",
3
- "version": "2.6.0",
3
+ "version": "2.6.1",
4
4
  "description": "Reinforcement for AI-generated code. Enforcement hooks, quality audits, and opinionated templates that prevent AI coding tools from shipping broken code.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/cli.ts CHANGED
@@ -65,7 +65,7 @@ import {
65
65
  SAFE_BASH_PERMISSIONS,
66
66
  } from "./services/workflow-templates.js";
67
67
 
68
- const VERSION = "2.6.0";
68
+ const VERSION = "2.6.1";
69
69
 
70
70
  interface CLIOptions {
71
71
  path: string;
@@ -5,13 +5,18 @@
5
5
  * - free: Local regex only, no LLM
6
6
  * - pro: 1,000 LLM reviews/month, cross-session memory
7
7
  * - team: 5,000 LLM reviews/month, audit retention 1 year
8
+ * - enterprise: Unlimited (requires REBAR_LICENSE_KEY)
8
9
  */
9
10
  import * as path from "node:path";
10
11
  import * as fs from "node:fs/promises";
12
+ import * as crypto from "node:crypto";
11
13
  import { readFileSafe } from "./file-ops.js";
12
14
  import { atomicWrite } from "./file-ops.js";
13
15
 
14
- export type LicenseTier = "free" | "pro" | "team";
16
+ // Enterprise license validation - hash of valid license key
17
+ const ENTERPRISE_KEY_HASH = "da62916ff18248ddd4a397fedeba2dddc6baf3db6eca8b5a87009463744be083";
18
+
19
+ export type LicenseTier = "free" | "pro" | "team" | "enterprise";
15
20
 
16
21
  export interface License {
17
22
  tier: LicenseTier;
@@ -52,15 +57,31 @@ const TIER_LIMITS: Record<LicenseTier, License["features"] & { monthlyLimit: num
52
57
  crossSessionMemory: true,
53
58
  auditRetentionDays: 365,
54
59
  },
60
+ enterprise: {
61
+ monthlyLimit: Infinity,
62
+ llmReview: true,
63
+ crossSessionMemory: true,
64
+ auditRetentionDays: 365 * 10,
65
+ },
55
66
  };
56
67
 
68
+ /**
69
+ * Validate enterprise license key
70
+ */
71
+ function isValidEnterpriseKey(licenseKey: string | undefined): boolean {
72
+ if (!licenseKey) return false;
73
+ const hash = crypto.createHash("sha256").update(licenseKey).digest("hex");
74
+ return hash === ENTERPRISE_KEY_HASH;
75
+ }
76
+
57
77
  /**
58
78
  * Load license from project or environment
59
79
  */
60
80
  export async function loadLicense(projectPath: string): Promise<License> {
61
- // Check environment variable first
81
+ // Check environment variables first
62
82
  const envApiKey = process.env.REBAR_API_KEY;
63
83
  const envTier = process.env.REBAR_TIER as LicenseTier | undefined;
84
+ const envLicenseKey = process.env.REBAR_LICENSE_KEY;
64
85
 
65
86
  // Check project license file
66
87
  const licensePath = path.join(projectPath, ".rebar", "license.json");
@@ -78,10 +99,17 @@ export async function loadLicense(projectPath: string): Promise<License> {
78
99
 
79
100
  // Environment overrides file
80
101
  const apiKey = envApiKey || license.apiKey;
81
- const tier = envTier || license.tier || "free";
102
+ let tier = envTier || license.tier || "free";
103
+
104
+ // Enterprise tier requires valid license key
105
+ if (tier === "enterprise") {
106
+ if (!isValidEnterpriseKey(envLicenseKey)) {
107
+ tier = "team"; // Downgrade to team if invalid key
108
+ }
109
+ }
82
110
 
83
111
  // Validate tier
84
- const validTier = ["free", "pro", "team"].includes(tier) ? tier as LicenseTier : "free";
112
+ const validTier = ["free", "pro", "team", "enterprise"].includes(tier) ? tier as LicenseTier : "free";
85
113
  const tierConfig = TIER_LIMITS[validTier];
86
114
 
87
115
  return {
@@ -204,6 +232,14 @@ export async function canUseLLMReview(projectPath: string): Promise<{
204
232
  }
205
233
  }
206
234
 
235
+ // Enterprise has unlimited reviews
236
+ if (license.tier === "enterprise") {
237
+ return {
238
+ allowed: true,
239
+ remaining: Infinity,
240
+ };
241
+ }
242
+
207
243
  const usage = await loadUsage(projectPath);
208
244
  const remaining = license.monthlyLimit - usage.llmReviews;
209
245
 
@@ -248,5 +284,11 @@ export function getTierInfo(tier: LicenseTier): {
248
284
  description: "5,000 LLM reviews/month + 1 year audit retention",
249
285
  price: "$49/user/month",
250
286
  };
287
+ case "enterprise":
288
+ return {
289
+ name: "Enterprise",
290
+ description: "Unlimited LLM reviews + 10 year audit retention",
291
+ price: "Contact sales",
292
+ };
251
293
  }
252
294
  }