@ruso-0/nreki 6.0.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 (150) hide show
  1. package/CHANGELOG.md +648 -0
  2. package/LICENSE +21 -0
  3. package/README.md +425 -0
  4. package/dist/ast-navigator.d.ts +29 -0
  5. package/dist/ast-navigator.d.ts.map +1 -0
  6. package/dist/ast-navigator.js +279 -0
  7. package/dist/ast-navigator.js.map +1 -0
  8. package/dist/ast-sandbox.d.ts +74 -0
  9. package/dist/ast-sandbox.d.ts.map +1 -0
  10. package/dist/ast-sandbox.js +242 -0
  11. package/dist/ast-sandbox.js.map +1 -0
  12. package/dist/chronos-memory.d.ts +69 -0
  13. package/dist/chronos-memory.d.ts.map +1 -0
  14. package/dist/chronos-memory.js +247 -0
  15. package/dist/chronos-memory.js.map +1 -0
  16. package/dist/circuit-breaker.d.ts +107 -0
  17. package/dist/circuit-breaker.d.ts.map +1 -0
  18. package/dist/circuit-breaker.js +330 -0
  19. package/dist/circuit-breaker.js.map +1 -0
  20. package/dist/compressor-advanced.d.ts +80 -0
  21. package/dist/compressor-advanced.d.ts.map +1 -0
  22. package/dist/compressor-advanced.js +555 -0
  23. package/dist/compressor-advanced.js.map +1 -0
  24. package/dist/compressor.d.ts +81 -0
  25. package/dist/compressor.d.ts.map +1 -0
  26. package/dist/compressor.js +227 -0
  27. package/dist/compressor.js.map +1 -0
  28. package/dist/database.d.ts +169 -0
  29. package/dist/database.d.ts.map +1 -0
  30. package/dist/database.js +1029 -0
  31. package/dist/database.js.map +1 -0
  32. package/dist/embedder.d.ts +73 -0
  33. package/dist/embedder.d.ts.map +1 -0
  34. package/dist/embedder.js +165 -0
  35. package/dist/embedder.js.map +1 -0
  36. package/dist/engine.d.ts +224 -0
  37. package/dist/engine.d.ts.map +1 -0
  38. package/dist/engine.js +582 -0
  39. package/dist/engine.js.map +1 -0
  40. package/dist/hologram/harvester.d.ts +41 -0
  41. package/dist/hologram/harvester.d.ts.map +1 -0
  42. package/dist/hologram/harvester.js +129 -0
  43. package/dist/hologram/harvester.js.map +1 -0
  44. package/dist/hologram/shadow-cache.d.ts +49 -0
  45. package/dist/hologram/shadow-cache.d.ts.map +1 -0
  46. package/dist/hologram/shadow-cache.js +165 -0
  47. package/dist/hologram/shadow-cache.js.map +1 -0
  48. package/dist/hologram/shadow-generator.d.ts +32 -0
  49. package/dist/hologram/shadow-generator.d.ts.map +1 -0
  50. package/dist/hologram/shadow-generator.js +828 -0
  51. package/dist/hologram/shadow-generator.js.map +1 -0
  52. package/dist/hooks/preToolUse.d.ts +63 -0
  53. package/dist/hooks/preToolUse.d.ts.map +1 -0
  54. package/dist/hooks/preToolUse.js +103 -0
  55. package/dist/hooks/preToolUse.js.map +1 -0
  56. package/dist/index.d.ts +19 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +367 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/kernel/kernel-manager.d.ts +52 -0
  61. package/dist/kernel/kernel-manager.d.ts.map +1 -0
  62. package/dist/kernel/kernel-manager.js +197 -0
  63. package/dist/kernel/kernel-manager.js.map +1 -0
  64. package/dist/kernel/kernel-worker.d.ts +9 -0
  65. package/dist/kernel/kernel-worker.d.ts.map +1 -0
  66. package/dist/kernel/kernel-worker.js +76 -0
  67. package/dist/kernel/kernel-worker.js.map +1 -0
  68. package/dist/kernel/nreki-kernel.d.ts +244 -0
  69. package/dist/kernel/nreki-kernel.d.ts.map +1 -0
  70. package/dist/kernel/nreki-kernel.js +1656 -0
  71. package/dist/kernel/nreki-kernel.js.map +1 -0
  72. package/dist/middleware/circuit-breaker.d.ts +32 -0
  73. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  74. package/dist/middleware/circuit-breaker.js +160 -0
  75. package/dist/middleware/circuit-breaker.js.map +1 -0
  76. package/dist/middleware/file-lock.d.ts +33 -0
  77. package/dist/middleware/file-lock.d.ts.map +1 -0
  78. package/dist/middleware/file-lock.js +55 -0
  79. package/dist/middleware/file-lock.js.map +1 -0
  80. package/dist/middleware/validator.d.ts +26 -0
  81. package/dist/middleware/validator.d.ts.map +1 -0
  82. package/dist/middleware/validator.js +39 -0
  83. package/dist/middleware/validator.js.map +1 -0
  84. package/dist/monitor.d.ts +94 -0
  85. package/dist/monitor.d.ts.map +1 -0
  86. package/dist/monitor.js +221 -0
  87. package/dist/monitor.js.map +1 -0
  88. package/dist/parser-pool.d.ts +28 -0
  89. package/dist/parser-pool.d.ts.map +1 -0
  90. package/dist/parser-pool.js +81 -0
  91. package/dist/parser-pool.js.map +1 -0
  92. package/dist/parser.d.ts +91 -0
  93. package/dist/parser.d.ts.map +1 -0
  94. package/dist/parser.js +311 -0
  95. package/dist/parser.js.map +1 -0
  96. package/dist/pin-memory.d.ts +35 -0
  97. package/dist/pin-memory.d.ts.map +1 -0
  98. package/dist/pin-memory.js +161 -0
  99. package/dist/pin-memory.js.map +1 -0
  100. package/dist/repo-map.d.ts +81 -0
  101. package/dist/repo-map.d.ts.map +1 -0
  102. package/dist/repo-map.js +550 -0
  103. package/dist/repo-map.js.map +1 -0
  104. package/dist/router.d.ts +102 -0
  105. package/dist/router.d.ts.map +1 -0
  106. package/dist/router.js +1989 -0
  107. package/dist/router.js.map +1 -0
  108. package/dist/semantic-edit.d.ts +82 -0
  109. package/dist/semantic-edit.d.ts.map +1 -0
  110. package/dist/semantic-edit.js +529 -0
  111. package/dist/semantic-edit.js.map +1 -0
  112. package/dist/terminal-filter.d.ts +27 -0
  113. package/dist/terminal-filter.d.ts.map +1 -0
  114. package/dist/terminal-filter.js +257 -0
  115. package/dist/terminal-filter.js.map +1 -0
  116. package/dist/undo.d.ts +21 -0
  117. package/dist/undo.d.ts.map +1 -0
  118. package/dist/undo.js +55 -0
  119. package/dist/undo.js.map +1 -0
  120. package/dist/utils/code-tokenizer.d.ts +25 -0
  121. package/dist/utils/code-tokenizer.d.ts.map +1 -0
  122. package/dist/utils/code-tokenizer.js +52 -0
  123. package/dist/utils/code-tokenizer.js.map +1 -0
  124. package/dist/utils/file-filter.d.ts +23 -0
  125. package/dist/utils/file-filter.d.ts.map +1 -0
  126. package/dist/utils/file-filter.js +48 -0
  127. package/dist/utils/file-filter.js.map +1 -0
  128. package/dist/utils/imports.d.ts +32 -0
  129. package/dist/utils/imports.d.ts.map +1 -0
  130. package/dist/utils/imports.js +155 -0
  131. package/dist/utils/imports.js.map +1 -0
  132. package/dist/utils/path-jail.d.ts +27 -0
  133. package/dist/utils/path-jail.d.ts.map +1 -0
  134. package/dist/utils/path-jail.js +95 -0
  135. package/dist/utils/path-jail.js.map +1 -0
  136. package/dist/utils/read-source.d.ts +18 -0
  137. package/dist/utils/read-source.d.ts.map +1 -0
  138. package/dist/utils/read-source.js +22 -0
  139. package/dist/utils/read-source.js.map +1 -0
  140. package/dist/utils/safe-parse.d.ts +20 -0
  141. package/dist/utils/safe-parse.d.ts.map +1 -0
  142. package/dist/utils/safe-parse.js +25 -0
  143. package/dist/utils/safe-parse.js.map +1 -0
  144. package/package.json +75 -0
  145. package/scripts/download-wasm.js +46 -0
  146. package/wasm/.gitkeep +0 -0
  147. package/wasm/tree-sitter-go.wasm +0 -0
  148. package/wasm/tree-sitter-javascript.wasm +0 -0
  149. package/wasm/tree-sitter-python.wasm +0 -0
  150. package/wasm/tree-sitter-typescript.wasm +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-generator.js","sourceRoot":"","sources":["../../src/hologram/shadow-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * hooks/preToolUse.ts - Pre-tool-use interceptor for NREKI.
3
+ *
4
+ * Detects when Claude is about to read large files directly and
5
+ * suggests more efficient alternatives. This is a defensive guard
6
+ * that prevents token waste from naive file reads.
7
+ *
8
+ * Intercepted patterns:
9
+ * - Read Tool reading files > threshold
10
+ * - Grep/glob operations that could use nreki_navigate action:"search"
11
+ * - Full file reads that should use nreki_code action:"compress"
12
+ */
13
+ import type { CompressionLevel } from "../compressor-advanced.js";
14
+ export interface InterceptResult {
15
+ /** Whether the operation should be intercepted. */
16
+ shouldIntercept: boolean;
17
+ /** Suggested alternative action. */
18
+ suggestion: string;
19
+ /** Estimated tokens that would be wasted. */
20
+ wastedTokens: number;
21
+ /** Estimated tokens if using the suggested alternative. */
22
+ optimizedTokens: number;
23
+ /** Savings as a percentage. */
24
+ savingsPercent: number;
25
+ /** Pre-compressed content (if compressor is available). */
26
+ compressedContent?: string;
27
+ /** Compression level used. */
28
+ compressionLevel?: CompressionLevel;
29
+ /** Original token count. */
30
+ originalTokens?: number;
31
+ /** Compressed token count. */
32
+ compressedTokens?: number;
33
+ }
34
+ export interface PreToolUseConfig {
35
+ /** File size threshold in bytes to trigger interception. Default: 1024 */
36
+ fileSizeThreshold?: number;
37
+ /** Maximum tokens before suggesting compression. Default: 500 */
38
+ tokenThreshold?: number;
39
+ /** Whether to intercept grep/glob operations. Default: true */
40
+ interceptGrep?: boolean;
41
+ /** Whether to intercept file reads. Default: true */
42
+ interceptRead?: boolean;
43
+ /** Default compression level for interception. Default: "medium" */
44
+ compressionLevel?: CompressionLevel;
45
+ }
46
+ export declare class PreToolUseHook {
47
+ private config;
48
+ constructor(config?: PreToolUseConfig);
49
+ /**
50
+ * Evaluate a file read operation and determine if it should be intercepted.
51
+ *
52
+ * Returns an InterceptResult with:
53
+ * - Whether to intercept
54
+ * - A suggestion message for the LLM
55
+ * - Token savings estimate
56
+ */
57
+ evaluateFileRead(filePath: string, preloadedContent?: string): InterceptResult;
58
+ /** Generate a summary of all interception rules. */
59
+ getRules(): string;
60
+ /** No interception needed - pass through. */
61
+ private passThrough;
62
+ }
63
+ //# sourceMappingURL=preToolUse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preToolUse.d.ts","sourceRoot":"","sources":["../../src/hooks/preToolUse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC5B,mDAAmD;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAID,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAA6B;gBAE/B,MAAM,GAAE,gBAAqB;IAUzC;;;;;;;OAOG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,eAAe;IAyC9E,oDAAoD;IACpD,QAAQ,IAAI,MAAM;IAalB,6CAA6C;IAC7C,OAAO,CAAC,WAAW;CAUtB"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * hooks/preToolUse.ts - Pre-tool-use interceptor for NREKI.
3
+ *
4
+ * Detects when Claude is about to read large files directly and
5
+ * suggests more efficient alternatives. This is a defensive guard
6
+ * that prevents token waste from naive file reads.
7
+ *
8
+ * Intercepted patterns:
9
+ * - Read Tool reading files > threshold
10
+ * - Grep/glob operations that could use nreki_navigate action:"search"
11
+ * - Full file reads that should use nreki_code action:"compress"
12
+ */
13
+ import fs from "fs";
14
+ import path from "path";
15
+ import { Embedder } from "../embedder.js";
16
+ import { readSource } from "../utils/read-source.js";
17
+ // ─── Interceptor ─────────────────────────────────────────────────────
18
+ export class PreToolUseHook {
19
+ config;
20
+ constructor(config = {}) {
21
+ this.config = {
22
+ fileSizeThreshold: config.fileSizeThreshold ?? 1024,
23
+ tokenThreshold: config.tokenThreshold ?? 500,
24
+ interceptGrep: config.interceptGrep ?? true,
25
+ interceptRead: config.interceptRead ?? true,
26
+ compressionLevel: config.compressionLevel ?? "medium",
27
+ };
28
+ }
29
+ /**
30
+ * Evaluate a file read operation and determine if it should be intercepted.
31
+ *
32
+ * Returns an InterceptResult with:
33
+ * - Whether to intercept
34
+ * - A suggestion message for the LLM
35
+ * - Token savings estimate
36
+ */
37
+ evaluateFileRead(filePath, preloadedContent) {
38
+ if (!this.config.interceptRead)
39
+ return this.passThrough();
40
+ let stats;
41
+ try {
42
+ stats = fs.statSync(filePath);
43
+ }
44
+ catch {
45
+ return this.passThrough();
46
+ }
47
+ if (stats.size <= this.config.fileSizeThreshold)
48
+ return this.passThrough();
49
+ const ext = path.extname(filePath).toLowerCase();
50
+ const supported = [".ts", ".tsx", ".js", ".jsx", ".py", ".go"];
51
+ if (!supported.includes(ext))
52
+ return this.passThrough();
53
+ // Use preloaded content to avoid double I/O
54
+ const content = preloadedContent ?? readSource(filePath);
55
+ const fullTokens = Embedder.estimateTokens(content);
56
+ const ratioByLevel = {
57
+ light: 0.50, medium: 0.75, aggressive: 0.92,
58
+ };
59
+ const level = this.config.compressionLevel;
60
+ const estimatedRatio = ratioByLevel[level] ?? 0.75;
61
+ const compressedTokens = Math.round(fullTokens * (1 - estimatedRatio));
62
+ if (fullTokens <= this.config.tokenThreshold)
63
+ return this.passThrough();
64
+ return {
65
+ shouldIntercept: true,
66
+ suggestion: [
67
+ `⚡ **NREKI Advice**: You just read "${path.basename(filePath)}" raw (~${fullTokens.toLocaleString()} tokens).`,
68
+ `→ Reading massive files raw burns your context window unnecessarily.`,
69
+ `→ Next time, omit 'compress: false' (it defaults to true) or use \`nreki_code action:"compress" path:"${filePath}" level:"${level}"\`.`,
70
+ `→ You would have saved ~${(fullTokens - compressedTokens).toLocaleString()} tokens (${Math.round(estimatedRatio * 100)}% reduction) while keeping all structural context.`,
71
+ ].join("\n"),
72
+ wastedTokens: fullTokens,
73
+ optimizedTokens: compressedTokens,
74
+ savingsPercent: Math.round(estimatedRatio * 100),
75
+ compressionLevel: level,
76
+ originalTokens: fullTokens,
77
+ compressedTokens,
78
+ };
79
+ }
80
+ /** Generate a summary of all interception rules. */
81
+ getRules() {
82
+ return [
83
+ "NREKI Pre-Tool-Use Rules:",
84
+ ` • File read threshold: ${this.config.fileSizeThreshold} bytes`,
85
+ ` • Token threshold: ${this.config.tokenThreshold} tokens`,
86
+ ` • Grep interception: ${this.config.interceptGrep ? "enabled" : "disabled"}`,
87
+ ` • Read interception: ${this.config.interceptRead ? "enabled" : "disabled"}`,
88
+ ` • Compression level: ${this.config.compressionLevel}`,
89
+ ].join("\n");
90
+ }
91
+ // ─── Helpers ──────────────────────────────────────────────────
92
+ /** No interception needed - pass through. */
93
+ passThrough() {
94
+ return {
95
+ shouldIntercept: false,
96
+ suggestion: "",
97
+ wastedTokens: 0,
98
+ optimizedTokens: 0,
99
+ savingsPercent: 0,
100
+ };
101
+ }
102
+ }
103
+ //# sourceMappingURL=preToolUse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preToolUse.js","sourceRoot":"","sources":["../../src/hooks/preToolUse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * index.ts - NREKI MCP Server entry point.
4
+ *
5
+ * Exposes 3 router tools to Claude Code (replaces 16 individual tools):
6
+ *
7
+ * 1. nreki_navigate - AST-powered code navigation, semantic search, and refactor analysis
8
+ * 2. nreki_code - Read, compress, surgically edit, and batch edit code files
9
+ * 3. nreki_guard - Safety controls, session monitoring, and persistent memory
10
+ *
11
+ * Middleware (runs automatically, not exposed as tools):
12
+ * - AST Validation: validates code before disk writes (inside nreki_code edit/batch_edit)
13
+ * - Circuit Breaker: detects and stops infinite failure loops
14
+ * - File Lock: prevents concurrent edit corruption
15
+ *
16
+ * All processing is local. Zero cloud dependencies.
17
+ */
18
+ export declare function detectMode(dir: string): "syntax" | "file" | "project" | "hologram";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AA+BH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CA2BlF"}
package/dist/index.js ADDED
@@ -0,0 +1,367 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * index.ts - NREKI MCP Server entry point.
4
+ *
5
+ * Exposes 3 router tools to Claude Code (replaces 16 individual tools):
6
+ *
7
+ * 1. nreki_navigate - AST-powered code navigation, semantic search, and refactor analysis
8
+ * 2. nreki_code - Read, compress, surgically edit, and batch edit code files
9
+ * 3. nreki_guard - Safety controls, session monitoring, and persistent memory
10
+ *
11
+ * Middleware (runs automatically, not exposed as tools):
12
+ * - AST Validation: validates code before disk writes (inside nreki_code edit/batch_edit)
13
+ * - Circuit Breaker: detects and stops infinite failure loops
14
+ * - File Lock: prevents concurrent edit corruption
15
+ *
16
+ * All processing is local. Zero cloud dependencies.
17
+ */
18
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
19
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
20
+ import { z } from "zod";
21
+ import path from "path";
22
+ import fs from "fs";
23
+ import { NrekiEngine } from "./engine.js";
24
+ import { TokenMonitor } from "./monitor.js";
25
+ import { AstSandbox } from "./ast-sandbox.js";
26
+ import { CircuitBreaker } from "./circuit-breaker.js";
27
+ import { handleNavigate, handleCode, handleGuard, } from "./router.js";
28
+ import { wrapWithCircuitBreaker } from "./middleware/circuit-breaker.js";
29
+ import { PreToolUseHook } from "./hooks/preToolUse.js";
30
+ import { NrekiKernel } from "./kernel/nreki-kernel.js";
31
+ import { ChronosMemory } from "./chronos-memory.js";
32
+ // ─── Performance Mode Auto-Detection ────────────────────────────────
33
+ // Bounded DFS. Uses stack.pop() which is O(1) in V8.
34
+ // Array.shift() is O(N) in V8 because it reindexes the contiguous memory block.
35
+ // Do not change pop() to shift().
36
+ export function detectMode(dir) {
37
+ let count = 0;
38
+ const stack = [dir];
39
+ const ignore = new Set(["node_modules", "dist", "build", ".git", ".next", "coverage"]);
40
+ while (stack.length > 0) {
41
+ if (count > 1000)
42
+ return "hologram";
43
+ const current = stack.pop();
44
+ let entries;
45
+ try {
46
+ entries = fs.readdirSync(current, { withFileTypes: true });
47
+ }
48
+ catch {
49
+ continue;
50
+ }
51
+ for (const entry of entries) {
52
+ if (entry.isDirectory()) {
53
+ if (!ignore.has(entry.name) && !entry.name.startsWith(".")) {
54
+ stack.push(path.join(current, entry.name));
55
+ }
56
+ }
57
+ else if (/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/i.test(entry.name) &&
58
+ !entry.name.endsWith(".d.ts")) {
59
+ count++;
60
+ }
61
+ }
62
+ }
63
+ return count < 50 ? "syntax" : "project";
64
+ }
65
+ // ─── CLI Flag Parsing ───────────────────────────────────────────────
66
+ const args = process.argv.slice(2);
67
+ const VERSION = JSON.parse(fs.readFileSync(new URL("../package.json", import.meta.url), "utf-8")).version;
68
+ if (args.includes("--version") || args.includes("-v")) {
69
+ console.log(VERSION);
70
+ process.exit(0);
71
+ }
72
+ if (args.includes("--help") || args.includes("-h")) {
73
+ console.log(`
74
+ NREKI v${VERSION} - Semantic validation for Claude Code
75
+
76
+ Usage:
77
+ npx @ruso-0/nreki [options]
78
+ npx @ruso-0/nreki init # Creates optimal CLAUDE.md instructions
79
+
80
+ Options:
81
+ --enable-embeddings Enable local ONNX semantic search (Pro mode)
82
+ --help, -h Show this help message
83
+ --version, -v Show version
84
+ `);
85
+ process.exit(0);
86
+ }
87
+ const enableEmbeddings = args.includes("--enable-embeddings");
88
+ // ─── Init Subcommand ────────────────────────────────────────────────
89
+ if (args[0] === "init") {
90
+ const claudePath = path.join(process.cwd(), "CLAUDE.md");
91
+ const marker = "# NREKI Active";
92
+ if (fs.existsSync(claudePath)) {
93
+ const existing = fs.readFileSync(claudePath, "utf-8");
94
+ if (existing.includes(marker)) {
95
+ console.error("[NREKI] CLAUDE.md already contains NREKI instructions. Skipping.");
96
+ process.exit(0);
97
+ }
98
+ // Append to existing CLAUDE.md
99
+ fs.appendFileSync(claudePath, "\n\n" + getClaudeMdContent(), "utf-8");
100
+ console.error("[NREKI] Appended NREKI instructions to existing CLAUDE.md");
101
+ }
102
+ else {
103
+ fs.writeFileSync(claudePath, getClaudeMdContent(), "utf-8");
104
+ console.error("[NREKI] Created CLAUDE.md in " + process.cwd());
105
+ }
106
+ process.exit(0);
107
+ }
108
+ function getClaudeMdContent() {
109
+ return `# NREKI Active
110
+
111
+ This workspace has the NREKI MCP plugin installed. It extends your capabilities with AST-aware tools that protect your context window and prevent syntax errors before they reach disk.
112
+
113
+ ## Optimal Workflow
114
+
115
+ 1. **Run tests & commands freely.** Use Bash for npm test, builds, git - NREKI doesn't interfere with your terminal.
116
+ 2. **Navigate with AST precision.** Prefer \`nreki_navigate\` over grep/glob. It returns exact structural matches (functions, classes, references) without flooding your context with noise.
117
+ 3. **Read files efficiently.** ALWAYS prefer \`nreki_code action:"read"\` over native Read. Native Read dumps the entire file into your context - a 2,000-line file burns ~5,000 tokens in one call. \`nreki_code read\` auto-compresses to ~1,200 tokens while keeping all structural context. This is the single biggest token saver available to you.
118
+ 4. **Debugging? Read uncompressed.** If you need to understand a function's internal logic (not just its signature), use \`nreki_code action:"read" compress:false\`. Compression hides function bodies to save tokens - great for navigation, but not for debugging.
119
+ 5. **Edit surgically.** Prefer \`nreki_code action:"edit"\` for modifying existing functions/classes. It validates the AST before writing to disk - if your code has a syntax error, the file stays untouched and you get the exact line/column to fix.
120
+ 6. **Multi-file refactors? Use batch_edit.** \`nreki_code action:"batch_edit" edits:[...]\` edits multiple files atomically. If ANY file has a syntax error, NOTHING is written to disk. All-or-nothing safety.
121
+ 7. **Renaming a symbol? Use prepare_refactor first.** \`nreki_navigate action:"prepare_refactor" symbol:"OldName"\` analyzes every occurrence and classifies it as "high confidence" (safe to rename) or "review" (might be a string, comment, or object key). Then use batch_edit to apply the renames.
122
+ 8. **Watch for blast radius warnings.** When you change a function's signature, NREKI automatically warns you which files import it. Fix those files before running tests.
123
+ 9. **The repo map shows architecture tiers.** \`nreki_navigate action:"map"\` now classifies files as CORE (high import count - modify with caution), BUSINESS LOGIC (medium), or LEAF (safe to experiment).
124
+ 10. **Create new files normally.** Use native Write for brand new files that don't exist yet.
125
+ 11. **Pin rules that matter.** Use \`nreki_guard action:"pin"\` to persist instructions across messages (e.g., "always use fetch, not axios").
126
+ 12. **Anchor your plan.** If you're working on a complex task with strict schemas or architectural constraints, use \`nreki_guard action:"set_plan" text:"PLAN.md"\` at the start. NREKI will silently re-inject your plan every ~15 tool calls to survive context compaction. Use \`nreki_guard action:"memorize" text:"your progress notes"\` to leave notes for yourself.
127
+ 13. **If the circuit breaker triggers, follow its instructions.** It detected a doom loop and is protecting your session from burning tokens on repeated failures.
128
+
129
+ NREKI handles the context heavy-lifting so you can focus on writing correct code on the first try.
130
+ `;
131
+ }
132
+ // ─── Initialization ─────────────────────────────────────────────────
133
+ const engine = new NrekiEngine({
134
+ dbPath: path.join(process.cwd(), ".nreki.db"),
135
+ watchPaths: [process.cwd()],
136
+ enableEmbeddings,
137
+ });
138
+ const monitor = new TokenMonitor();
139
+ const sandbox = new AstSandbox();
140
+ const circuitBreaker = new CircuitBreaker();
141
+ const chronos = new ChronosMemory(process.cwd());
142
+ // ─── NREKI Kernel (opt-in: only activates if tsconfig.json exists) ───
143
+ let kernel;
144
+ let nrekiMode = "syntax";
145
+ const tsconfigPath = path.join(process.cwd(), "tsconfig.json");
146
+ if (fs.existsSync(tsconfigPath)) {
147
+ nrekiMode = detectMode(process.cwd());
148
+ if (nrekiMode === "syntax") {
149
+ console.error("[NREKI] SYNTAX mode. Kernel disabled. Layer 1 AST only.");
150
+ }
151
+ else {
152
+ console.error(`[NREKI] ${nrekiMode.toUpperCase()} mode detected. Kernel boots on first edit.`);
153
+ kernel = new NrekiKernel(); // Instantiated but NOT booted
154
+ }
155
+ }
156
+ else {
157
+ console.error("[NREKI] No tsconfig.json found. Semantic verification disabled. " +
158
+ "Operating in Tree-sitter-only mode (Layer 1).");
159
+ }
160
+ const hook = new PreToolUseHook({ tokenThreshold: 1000 });
161
+ const deps = { engine, monitor, sandbox, circuitBreaker, hook, kernel, chronos, nrekiMode };
162
+ const server = new McpServer({
163
+ name: "NREKI",
164
+ version: VERSION,
165
+ });
166
+ if (!enableEmbeddings) {
167
+ console.error("[NREKI] Running in Lite mode (BM25 keyword search only). " +
168
+ "Run with --enable-embeddings for semantic search.");
169
+ }
170
+ // ─── Tool 1: nreki_navigate ───────────────────────────────────────────
171
+ server.tool("nreki_navigate", "AST-powered code navigation and semantic search. Use for finding code, understanding project structure, and locating symbols.", {
172
+ action: z
173
+ .enum(["search", "definition", "references", "outline", "map", "prepare_refactor"])
174
+ .describe("search: hybrid semantic+keyword search across codebase. " +
175
+ "definition: go-to-definition by symbol name. " +
176
+ "references: find all usages of a symbol. " +
177
+ "outline: list all symbols in a file. " +
178
+ "map: full repo structure map with pinned rules. " +
179
+ "prepare_refactor: analyze a symbol for safe renaming (classifies each occurrence as high-confidence or needs-review)."),
180
+ query: z
181
+ .string()
182
+ .optional()
183
+ .describe("For search: the query string."),
184
+ symbol: z
185
+ .string()
186
+ .optional()
187
+ .describe("For definition/references: the symbol name."),
188
+ path: z
189
+ .string()
190
+ .optional()
191
+ .describe("For outline: the file path."),
192
+ limit: z
193
+ .number()
194
+ .optional()
195
+ .describe("For search: max results to return (1-50, default 10)."),
196
+ include_raw: z
197
+ .boolean()
198
+ .optional()
199
+ .describe("For search: include full source code in results."),
200
+ kind: z
201
+ .string()
202
+ .optional()
203
+ .describe("For definition: filter by symbol kind (function, class, interface, etc.)."),
204
+ signatures: z
205
+ .boolean()
206
+ .optional()
207
+ .describe("For outline: include full signatures."),
208
+ refresh: z
209
+ .boolean()
210
+ .optional()
211
+ .describe("For map: force regeneration, ignoring cache."),
212
+ auto_context: z
213
+ .boolean()
214
+ .optional()
215
+ .describe("Auto-inject signatures of imported dependencies. Set to false for pure output without context."),
216
+ }, async ({ action, query, symbol, path: navPath, limit, include_raw, kind, signatures, refresh, auto_context }) => {
217
+ const params = { action, query, symbol, path: navPath, limit, include_raw, kind, signatures, refresh, auto_context };
218
+ return wrapWithCircuitBreaker(circuitBreaker, "nreki_navigate", action, () => handleNavigate(action, params, deps), undefined, undefined, chronos);
219
+ });
220
+ // ─── Tool 2: nreki_code ───────────────────────────────────────────────
221
+ server.tool("nreki_code", "Read, compress, and surgically edit code files. " +
222
+ "All edits are automatically validated via AST before writing to disk - " +
223
+ "if syntax is invalid, the edit is blocked and you get the exact error. " +
224
+ "Undo reverts the last edit. filter_output strips noisy terminal output.", {
225
+ action: z
226
+ .enum(["read", "compress", "edit", "batch_edit", "undo", "filter_output"])
227
+ .describe("read: read file with optional compression. " +
228
+ "compress: compress file/directory with full control. " +
229
+ "edit: surgically edit a function/class by name (auto-validated). " +
230
+ "batch_edit: atomically edit multiple symbols across multiple files (all-or-nothing). " +
231
+ "undo: revert last edit. " +
232
+ "filter_output: filter noisy terminal output (strips ANSI, deduplicates errors). Does NOT execute commands."),
233
+ path: z
234
+ .string()
235
+ .optional()
236
+ .describe("File or directory path (required for read, compress, edit, undo)."),
237
+ symbol: z
238
+ .string()
239
+ .optional()
240
+ .describe("For edit: the function/class/interface name to replace."),
241
+ new_code: z
242
+ .string()
243
+ .optional()
244
+ .describe("For edit: the complete replacement source code for the symbol."),
245
+ compress: z
246
+ .boolean()
247
+ .optional()
248
+ .describe("For read: enable auto-compression (default true)."),
249
+ level: z
250
+ .string()
251
+ .optional()
252
+ .describe("Compression level: 'light', 'medium', or 'aggressive'."),
253
+ focus: z
254
+ .string()
255
+ .optional()
256
+ .describe("For compress: focus query to rank chunks by relevance."),
257
+ tier: z
258
+ .number()
259
+ .optional()
260
+ .describe("For compress: legacy tier (1-3)."),
261
+ output: z
262
+ .string()
263
+ .optional()
264
+ .describe("For filter_output: the terminal output text to filter."),
265
+ max_lines: z
266
+ .number()
267
+ .optional()
268
+ .describe("For filter_output: max output lines (1-1000, default 100)."),
269
+ mode: z
270
+ .enum(["replace", "insert_before", "insert_after"])
271
+ .optional()
272
+ .describe("For edit: how to apply new_code relative to the symbol. 'replace' (default) replaces the symbol. 'insert_before'/'insert_after' adds new_code adjacent to the symbol without removing it."),
273
+ edits: z
274
+ .array(z.object({
275
+ path: z.string(),
276
+ symbol: z.string(),
277
+ new_code: z.string(),
278
+ mode: z.enum(["replace", "insert_before", "insert_after"]).optional(),
279
+ }))
280
+ .optional()
281
+ .describe("For batch_edit: array of edits to apply atomically. Each edit specifies path, symbol, new_code, and optional mode."),
282
+ auto_context: z
283
+ .boolean()
284
+ .optional()
285
+ .describe("Auto-inject signatures of imported dependencies. Set to false for pure output without context."),
286
+ }, async ({ action, path: filePath, symbol, new_code, compress, level, focus, tier, output, max_lines, mode, edits, auto_context }) => {
287
+ const params = { action, path: filePath, symbol, new_code, compress, level, focus, tier, output, max_lines, mode, edits, auto_context };
288
+ return wrapWithCircuitBreaker(circuitBreaker, "nreki_code", action, () => handleCode(action, params, deps), filePath, symbol, chronos);
289
+ });
290
+ // ─── Tool 3: nreki_guard ──────────────────────────────────────────────
291
+ server.tool("nreki_guard", "Safety controls, session monitoring, and persistent memory. " +
292
+ "Pin rules that persist across messages, check token burn rate, " +
293
+ "and get session reports.", {
294
+ action: z
295
+ .enum(["pin", "unpin", "status", "report", "reset", "set_plan", "memorize"])
296
+ .describe("pin: add a persistent rule (injected into every map response). " +
297
+ "unpin: remove a pinned rule. " +
298
+ "status: token burn rate and alerts. " +
299
+ "report: full session savings receipt. " +
300
+ "reset: clear circuit breaker state to resume editing. " +
301
+ "set_plan: anchor a master plan file to prevent Claude from forgetting it during context compaction. " +
302
+ "memorize: write your current progress/thoughts to NREKI's active memory."),
303
+ text: z
304
+ .string()
305
+ .optional()
306
+ .describe("For pin: the rule text (max 200 chars). For set_plan: the file path to your plan. For memorize: your thoughts/progress to remember."),
307
+ index: z
308
+ .number()
309
+ .optional()
310
+ .describe("For unpin: the pin number to remove (1-based, as shown in map output)."),
311
+ id: z
312
+ .string()
313
+ .optional()
314
+ .describe("For unpin: the pin id to remove."),
315
+ }, async ({ action, text, index, id }) => {
316
+ const params = { action, text, index, id };
317
+ return wrapWithCircuitBreaker(circuitBreaker, "nreki_guard", action, () => handleGuard(action, params, deps), undefined, undefined, chronos);
318
+ });
319
+ // ─── Server Startup ─────────────────────────────────────────────────
320
+ async function main() {
321
+ const transport = new StdioServerTransport();
322
+ // Graceful shutdown
323
+ const gracefulShutdown = () => {
324
+ try {
325
+ if (kernel && kernel.isBooted()) {
326
+ chronos.syncTechDebt(kernel.getInitialErrorCount(), kernel.getCurrentErrorCount());
327
+ }
328
+ chronos.forcePersist();
329
+ }
330
+ catch { /* Never block shutdown */ }
331
+ engine.shutdown();
332
+ process.exit(0);
333
+ };
334
+ process.on("SIGINT", gracefulShutdown);
335
+ process.on("SIGTERM", gracefulShutdown);
336
+ // Connect and serve
337
+ await server.connect(transport);
338
+ // Engine initialization is lazy - each tool calls engine.initialize()
339
+ // (fast: db + parser) or engine.initializeEmbedder() (full: + ONNX model)
340
+ // as needed. This keeps the MCP handshake under 100ms.
341
+ // JIT Holography: pre-load WASM parser (~50ms) without scanning project
342
+ if (nrekiMode === "hologram" && kernel) {
343
+ setImmediate(async () => {
344
+ try {
345
+ const Parser = (await import("web-tree-sitter")).default;
346
+ await Parser.init();
347
+ const jitParser = new Parser();
348
+ const wasmDir = path.join(path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/i, "$1")), "..", "wasm");
349
+ const tsLangPath = path.join(wasmDir, "tree-sitter-typescript.wasm").replace(/\\/g, "/");
350
+ const tsLanguage = await Parser.Language.load(tsLangPath);
351
+ jitParser.setLanguage(tsLanguage);
352
+ const { classifyAndGenerateShadow } = await import("./hologram/shadow-generator.js");
353
+ kernel.setJitParser(jitParser, tsLanguage);
354
+ kernel.setJitClassifier(classifyAndGenerateShadow);
355
+ console.error("[NREKI] WASM parser pre-loaded. JIT Holography ready.");
356
+ }
357
+ catch (err) {
358
+ console.error(`[NREKI] WASM pre-load failed: ${err.message}`);
359
+ }
360
+ });
361
+ }
362
+ }
363
+ main().catch((err) => {
364
+ console.error(`[NREKI] Fatal error: ${err.message}`);
365
+ process.exit(1);
366
+ });
367
+ //# sourceMappingURL=index.js.map