speclock 4.5.5 → 4.5.6

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 CHANGED
@@ -409,6 +409,21 @@ The AI opens the file and sees:
409
409
 
410
410
  ---
411
411
 
412
+ ## Configuration
413
+
414
+ | Variable | Default | Description |
415
+ |----------|---------|-------------|
416
+ | `SPECLOCK_API_KEY` | — | API key for authenticated access |
417
+ | `SPECLOCK_ENCRYPTION_KEY` | — | Enables AES-256-GCM encryption at rest |
418
+ | `SPECLOCK_NO_PROXY` | `false` | Set `true` for heuristic-only mode (~250ms). Skips the Gemini proxy (~2s) |
419
+ | `SPECLOCK_LLM_KEY` | — | Your own LLM API key (Gemini/OpenAI/Anthropic) |
420
+ | `GEMINI_API_KEY` | — | Google Gemini API key for hybrid conflict detection |
421
+ | `SPECLOCK_TELEMETRY` | `false` | Opt-in anonymous usage analytics |
422
+
423
+ > **Tip:** The heuristic engine alone scores 95%+ accuracy at ~250ms. The Gemini proxy adds cross-domain coverage but takes ~2s. For fastest response, set `SPECLOCK_NO_PROXY=true`.
424
+
425
+ ---
426
+
412
427
  ## Test Results
413
428
 
414
429
  | Suite | Tests | Pass Rate |
@@ -457,4 +472,4 @@ Built by **[Sandeep Roy](https://github.com/sgroy10)**
457
472
 
458
473
  ---
459
474
 
460
- <p align="center"><i>v4.5.5 — 600+ tests, 31 MCP tools, 0 false positives, Gemini hybrid. Because remembering isn't enough.</i></p>
475
+ <p align="center"><i>v4.5.6 — 600+ tests, 31 MCP tools, 0 false positives, Gemini hybrid. Because remembering isn't enough.</i></p>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  "name": "speclock",
4
4
 
5
- "version": "4.5.5",
5
+ "version": "4.5.6",
6
6
 
7
7
  "description": "AI constraint engine with Gemini LLM universal detection, Policy-as-Code DSL, OAuth/OIDC SSO, admin dashboard, telemetry, API key auth, RBAC, AES-256-GCM encryption, hard enforcement, semantic pre-commit, HMAC audit chain, SOC 2/HIPAA compliance. Cross-platform: MCP + direct API. 31 MCP tools + CLI. Enterprise platform.",
8
8
 
package/src/cli/index.js CHANGED
@@ -117,7 +117,7 @@ function refreshContext(root) {
117
117
 
118
118
  function printHelp() {
119
119
  console.log(`
120
- SpecLock v4.5.5 — AI Constraint Engine (Gemini LLM + Policy-as-Code + SSO + Dashboard + Telemetry + Auth + RBAC + Encryption)
120
+ SpecLock v4.5.6 — AI Constraint Engine (Gemini LLM + Policy-as-Code + SSO + Dashboard + Telemetry + Auth + RBAC + Encryption)
121
121
  Developed by Sandeep Roy (github.com/sgroy10)
122
122
 
123
123
  Usage: speclock <command> [options]
@@ -9,7 +9,7 @@
9
9
  import { readBrain, readEvents } from "./storage.js";
10
10
  import { verifyAuditChain } from "./audit.js";
11
11
 
12
- const VERSION = "4.5.5";
12
+ const VERSION = "4.5.6";
13
13
 
14
14
  // PHI-related keywords for HIPAA filtering
15
15
  const PHI_KEYWORDS = [
@@ -124,7 +124,7 @@ export const SYNONYM_GROUPS = [
124
124
  "payment service", "payment platform"],
125
125
  ["razorpay", "stripe", "paypal", "phonepe", "paytm", "ccavenue",
126
126
  "cashfree", "braintree", "adyen", "square", "google pay", "gpay",
127
- "juspay", "billdesk", "instamojo"],
127
+ "juspay", "billdesk", "instamojo", "payu"],
128
128
 
129
129
  // --- IoT / firmware ---
130
130
  ["firmware", "firmware update", "ota", "over the air",
@@ -467,6 +467,8 @@ export const CONCEPT_MAP = {
467
467
  "transaction", "billing", "razorpay", "ccavenue"],
468
468
  "instamojo": ["payment gateway", "payment processing", "payment",
469
469
  "transaction", "billing", "razorpay", "cashfree"],
470
+ "payu": ["payment gateway", "payment processing", "payment",
471
+ "transaction", "billing", "razorpay", "stripe", "cashfree"],
470
472
  "upi": ["payment gateway", "payment processing", "phonepe",
471
473
  "paytm", "google pay", "razorpay",
472
474
  "transaction", "payment"],
@@ -2077,7 +2079,7 @@ export function scoreConflict({ actionText, lockText }) {
2077
2079
  // These are specific nouns (not verbs, not stopwords) that identify the technology
2078
2080
  const TECH_BRANDS = new Set([
2079
2081
  "stripe", "razorpay", "paypal", "phonepe", "paytm", "ccavenue", "cashfree",
2080
- "braintree", "adyen", "square", "billdesk", "instamojo", "juspay",
2082
+ "braintree", "adyen", "square", "billdesk", "instamojo", "juspay", "payu",
2081
2083
  "postgresql", "postgres", "mysql", "mongodb", "mongo", "firebase",
2082
2084
  "firestore", "supabase", "dynamodb", "redis", "sqlite", "mariadb",
2083
2085
  "cassandra", "couchdb", "neo4j",
@@ -257,7 +257,7 @@ export async function flushToRemote(root) {
257
257
  // Build anonymized payload
258
258
  const payload = {
259
259
  instanceId: summary.instanceId,
260
- version: "4.5.5",
260
+ version: "4.5.6",
261
261
  totalCalls: summary.totalCalls,
262
262
  avgResponseMs: summary.avgResponseMs,
263
263
  conflicts: summary.conflicts,
@@ -89,7 +89,7 @@
89
89
  <div class="header">
90
90
  <div>
91
91
  <h1><span>SpecLock</span> Dashboard</h1>
92
- <div class="meta">v4.5.5 &mdash; AI Constraint Engine</div>
92
+ <div class="meta">v4.5.6 &mdash; AI Constraint Engine</div>
93
93
  </div>
94
94
  <div style="display:flex;align-items:center;gap:12px;">
95
95
  <span id="health-badge" class="status-badge healthy">Loading...</span>
@@ -182,7 +182,7 @@
182
182
  </div>
183
183
 
184
184
  <div style="text-align:center;padding:24px;color:var(--muted);font-size:12px;">
185
- SpecLock v4.5.5 &mdash; Developed by Sandeep Roy &mdash; <a href="https://github.com/sgroy10/speclock" style="color:var(--accent)">GitHub</a>
185
+ SpecLock v4.5.6 &mdash; Developed by Sandeep Roy &mdash; <a href="https://github.com/sgroy10/speclock" style="color:var(--accent)">GitHub</a>
186
186
  </div>
187
187
 
188
188
  <script>
@@ -91,7 +91,7 @@ import { fileURLToPath } from "url";
91
91
  import _path from "path";
92
92
 
93
93
  const PROJECT_ROOT = process.env.SPECLOCK_PROJECT_ROOT || process.cwd();
94
- const VERSION = "4.5.5";
94
+ const VERSION = "4.5.6";
95
95
  const AUTHOR = "Sandeep Roy";
96
96
  const START_TIME = Date.now();
97
97
 
package/src/mcp/server.js CHANGED
@@ -100,7 +100,7 @@ const PROJECT_ROOT =
100
100
  args.project || process.env.SPECLOCK_PROJECT_ROOT || process.cwd();
101
101
 
102
102
  // --- MCP Server ---
103
- const VERSION = "4.5.5";
103
+ const VERSION = "4.5.6";
104
104
  const AUTHOR = "Sandeep Roy";
105
105
 
106
106
  const server = new McpServer(