@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":"nreki-kernel.js","sourceRoot":"","sources":["../../src/kernel/nreki-kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * middleware/circuit-breaker.ts - Creative circuit breaker middleware for NREKI.
3
+ *
4
+ * Wraps all router tool handlers with automatic loop detection.
5
+ * Records every tool call result and trips the breaker when it detects
6
+ * destructive patterns (repeated errors, excessive edits, doom loops).
7
+ *
8
+ * v3.1.0: 3-level escalation system ("Break & Build"):
9
+ * Level 1 - Rewrite: stop patching, rewrite the symbol from scratch
10
+ * Level 2 - Decompose: break into smaller helper functions
11
+ * Level 3 - Hard Stop: ask the human for guidance
12
+ */
13
+ import { CircuitBreaker } from "../circuit-breaker.js";
14
+ import type { McpToolResponse } from "../router.js";
15
+ /**
16
+ * Wrap a router handler with passive circuit breaker monitoring.
17
+ *
18
+ * Before executing the handler, checks:
19
+ * 1. If the breaker was tripped but 60s have elapsed → auto-reset
20
+ * 2. If the breaker was tripped but a different tool/action is requested → soft-reset
21
+ * 3. If the breaker is currently tripped → return level-specific redirect
22
+ *
23
+ * After execution, records the result for pattern detection.
24
+ */
25
+ export declare function wrapWithCircuitBreaker(cb: CircuitBreaker, toolName: string, action: string, handler: () => Promise<McpToolResponse>, filePath?: string, symbolName?: string, chronos?: {
26
+ recordTrip: (file: string, reason: string) => void;
27
+ }): Promise<McpToolResponse>;
28
+ /**
29
+ * Reset middleware state (for testing).
30
+ */
31
+ export declare function resetMiddlewareState(): void;
32
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA2GpD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAClC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACjE,OAAO,CAAC,eAAe,CAAC,CAqF1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * middleware/circuit-breaker.ts - Creative circuit breaker middleware for NREKI.
3
+ *
4
+ * Wraps all router tool handlers with automatic loop detection.
5
+ * Records every tool call result and trips the breaker when it detects
6
+ * destructive patterns (repeated errors, excessive edits, doom loops).
7
+ *
8
+ * v3.1.0: 3-level escalation system ("Break & Build"):
9
+ * Level 1 - Rewrite: stop patching, rewrite the symbol from scratch
10
+ * Level 2 - Decompose: break into smaller helper functions
11
+ * Level 3 - Hard Stop: ask the human for guidance
12
+ */
13
+ import { containsError } from "../circuit-breaker.js";
14
+ /** Last activity timestamp for auto-reset. */
15
+ let lastActivityTimestamp = Date.now();
16
+ /** Last tool+action combo for diversity detection. */
17
+ let lastToolAction = "";
18
+ /** Inactivity timeout for auto-reset (60 seconds). */
19
+ const INACTIVITY_TIMEOUT_MS = 60_000;
20
+ // ─── Level-Specific Payloads ─────────────────────────────────────────
21
+ function generateLevel1Redirect(symbol, file, error) {
22
+ const sym = symbol ?? "the failing symbol";
23
+ const fil = file ?? "the current file";
24
+ return (`🔄 **[NREKI: BREAK & BUILD - LEVEL 1]**\n\n` +
25
+ `You are stuck in a syntax/error loop attempting to patch \`${sym}\` in \`${fil}\`.\n` +
26
+ `Repeated fixes to the same code are failing with the same pattern:\n` +
27
+ `> ${error}\n\n` +
28
+ `**STRATEGY SHIFT: Stop patching. Rewrite from scratch.**\n\n` +
29
+ `1. Use \`nreki_code action:"read" compress:false path:"${fil}"\` to read the UNCOMPRESSED code. You CANNOT rewrite the logic if you read it compressed.\n` +
30
+ `2. DO NOT use the native Write tool (it bypasses AST validation).\n` +
31
+ `3. Use \`nreki_code action:"edit" mode:"insert_after" symbol:"${sym}"\` to safely append a NEW function \`${sym}_v2\` below the original. NREKI will validate it.\n` +
32
+ `4. Implement the intended behavior cleanly from zero in \`${sym}_v2\`.\n` +
33
+ `5. Once it compiles (test with Bash), update callers to use \`${sym}_v2\`.\n` +
34
+ `6. Then remove the old \`${sym}\` with \`nreki_code action:"edit"\`.\n\n` +
35
+ `Acknowledge this and start building \`${sym}_v2\`.`);
36
+ }
37
+ function generateLevel2Redirect(symbol, file, error) {
38
+ const sym = symbol ?? "the failing symbol";
39
+ const fil = file ?? "the current file";
40
+ return (`🔄 **[NREKI: BREAK & BUILD - LEVEL 2: DECOMPOSE]**\n\n` +
41
+ `Rewriting \`${sym}\` in \`${fil}\` as a single function also failed.\n` +
42
+ `The complexity is too high for monolithic code. Time to divide and conquer.\n` +
43
+ `> ${error}\n\n` +
44
+ `**MANDATORY STRATEGY: Break the logic into smaller pieces.**\n\n` +
45
+ `1. Use \`nreki_code action:"read" compress:false path:"${fil}"\` to read the full uncompressed code of \`${sym}\` and understand its responsibilities.\n` +
46
+ `2. Identify 2-3 distinct responsibilities inside \`${sym}\`.\n` +
47
+ `3. DO NOT use the native Write tool (it bypasses AST validation).\n` +
48
+ `4. Use \`nreki_code action:"edit" mode:"insert_before" symbol:"${sym}"\` to add small, pure helper functions above \`${sym}\` (data in → data out). NREKI will validate them.\n` +
49
+ `5. Test each helper individually with Bash before moving on.\n` +
50
+ `6. Only after all helpers compile, use \`nreki_code action:"edit"\` to rewrite \`${sym}\` as a thin orchestrator.\n\n` +
51
+ `Acknowledge this and start with the first helper function.`);
52
+ }
53
+ function generateLevel3HardStop(symbol, file, error) {
54
+ const sym = symbol ?? "the failing symbol";
55
+ const fil = file ?? "the current file";
56
+ return (`🛑 **[NREKI: CIRCUIT BREAKER - HARD STOP]**\n\n` +
57
+ `NREKI has tried redirecting you twice and you are still stuck on \`${sym}\` in \`${fil}\`.\n` +
58
+ `> ${error}\n\n` +
59
+ `**STOP. Ask the human how to proceed.**\n\n` +
60
+ `Tell them:\n` +
61
+ `- What you were trying to do\n` +
62
+ `- The error pattern you cannot resolve\n` +
63
+ `- The two strategies NREKI suggested (rewrite + decompose) and why they failed\n\n` +
64
+ `Do not attempt another edit until the human responds.\n\n` +
65
+ `Use \`nreki_guard action:"reset"\` after the human provides guidance to clear this breaker.`);
66
+ }
67
+ function generateBreakerResponse(level, symbol, file, error) {
68
+ let text;
69
+ switch (level) {
70
+ case 1:
71
+ text = generateLevel1Redirect(symbol, file, error);
72
+ break;
73
+ case 2:
74
+ text = generateLevel2Redirect(symbol, file, error);
75
+ break;
76
+ case 3:
77
+ default:
78
+ text = generateLevel3HardStop(symbol, file, error);
79
+ break;
80
+ }
81
+ return {
82
+ content: [{ type: "text", text }],
83
+ isError: true,
84
+ };
85
+ }
86
+ // ─── Middleware ───────────────────────────────────────────────────────
87
+ /**
88
+ * Wrap a router handler with passive circuit breaker monitoring.
89
+ *
90
+ * Before executing the handler, checks:
91
+ * 1. If the breaker was tripped but 60s have elapsed → auto-reset
92
+ * 2. If the breaker was tripped but a different tool/action is requested → soft-reset
93
+ * 3. If the breaker is currently tripped → return level-specific redirect
94
+ *
95
+ * After execution, records the result for pattern detection.
96
+ */
97
+ export function wrapWithCircuitBreaker(cb, toolName, action, handler, filePath, symbolName, chronos) {
98
+ return (async () => {
99
+ const toolAction = `${toolName}:${action}`;
100
+ const now = Date.now();
101
+ // Auto-reset: 60s inactivity
102
+ if (now - lastActivityTimestamp > INACTIVITY_TIMEOUT_MS) {
103
+ const state = cb.getState();
104
+ if (state.tripped) {
105
+ cb.reset();
106
+ }
107
+ }
108
+ // Soft reset on different request type: clears tripped state but
109
+ // preserves per-file failure counters and escalation level.
110
+ if (toolAction !== lastToolAction && lastToolAction !== "") {
111
+ const state = cb.getState();
112
+ if (state.tripped) {
113
+ cb.softReset();
114
+ }
115
+ }
116
+ lastActivityTimestamp = now;
117
+ lastToolAction = toolAction;
118
+ // If breaker is still tripped after potential resets, return level-specific redirect
119
+ const preState = cb.getState();
120
+ if (preState.tripped) {
121
+ // For levels 1-2, soft-reset to allow the retry after redirect
122
+ if (preState.escalationLevel < 3) {
123
+ cb.softReset();
124
+ }
125
+ return generateBreakerResponse(preState.escalationLevel, preState.lastTrippedSymbol, preState.lastTrippedFile, preState.tripReason ?? "Unknown pattern");
126
+ }
127
+ // Execute the actual handler
128
+ const response = await handler();
129
+ // Record the result for pattern detection
130
+ const responseText = response.content.map(c => c.text).join("\n");
131
+ const hasError = response.isError === true || containsError(responseText);
132
+ if (hasError) {
133
+ const loopCheck = cb.recordToolCall(toolAction, responseText, filePath, symbolName, true);
134
+ if (loopCheck.tripped) {
135
+ // Record circuit breaker trip in file fragility tracker
136
+ if (chronos && filePath) {
137
+ chronos.recordTrip(filePath, loopCheck.reason);
138
+ }
139
+ // For levels 1-2, soft-reset to allow retry after redirect
140
+ if (loopCheck.level < 3) {
141
+ cb.softReset();
142
+ }
143
+ return generateBreakerResponse(loopCheck.level, symbolName ?? null, filePath ?? null, loopCheck.reason);
144
+ }
145
+ }
146
+ else {
147
+ // Record non-error calls too (for same-file tracking)
148
+ cb.recordToolCall(toolAction, "", filePath, symbolName);
149
+ }
150
+ return response;
151
+ })();
152
+ }
153
+ /**
154
+ * Reset middleware state (for testing).
155
+ */
156
+ export function resetMiddlewareState() {
157
+ lastActivityTimestamp = Date.now();
158
+ lastToolAction = "";
159
+ }
160
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * file-lock.ts - Synchronous file-level mutex for edit operations.
3
+ *
4
+ * Prevents concurrent edits to the same file from corrupting it.
5
+ * Non-queuing: if the file is already locked, the caller gets an
6
+ * immediate rejection (the LLM should retry on the next turn).
7
+ *
8
+ * Usage:
9
+ * const lock = acquireFileLock(filePath, "nreki_code:edit");
10
+ * if (!lock.acquired) return errorResponse;
11
+ * try { ... } finally { releaseFileLock(filePath); }
12
+ */
13
+ /**
14
+ * Attempt to acquire a lock on a file path.
15
+ * Returns immediately - does NOT queue or wait.
16
+ */
17
+ export declare function acquireFileLock(filePath: string, toolAction: string): {
18
+ acquired: true;
19
+ } | {
20
+ acquired: false;
21
+ heldBy: string;
22
+ heldForMs: number;
23
+ };
24
+ /**
25
+ * Release a previously acquired lock.
26
+ * Safe to call even if the lock doesn't exist (idempotent).
27
+ */
28
+ export declare function releaseFileLock(filePath: string): void;
29
+ /**
30
+ * Clear all locks. For testing only.
31
+ */
32
+ export declare function resetFileLocks(): void;
33
+ //# sourceMappingURL=file-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../../src/middleware/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA2BH;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACnB;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAc7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * file-lock.ts - Synchronous file-level mutex for edit operations.
3
+ *
4
+ * Prevents concurrent edits to the same file from corrupting it.
5
+ * Non-queuing: if the file is already locked, the caller gets an
6
+ * immediate rejection (the LLM should retry on the next turn).
7
+ *
8
+ * Usage:
9
+ * const lock = acquireFileLock(filePath, "nreki_code:edit");
10
+ * if (!lock.acquired) return errorResponse;
11
+ * try { ... } finally { releaseFileLock(filePath); }
12
+ */
13
+ import path from "path";
14
+ // ─── State ───────────────────────────────────────────────────────────
15
+ const activeLocks = new Map();
16
+ /** Auto-expire stale locks after 30 seconds (safety net). */
17
+ const LOCK_TIMEOUT_MS = 30_000;
18
+ // ─── Helpers ─────────────────────────────────────────────────────────
19
+ function normalizeLockKey(filePath) {
20
+ const resolved = path.resolve(filePath).replace(/\\/g, "/");
21
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
22
+ }
23
+ // ─── Public API ──────────────────────────────────────────────────────
24
+ /**
25
+ * Attempt to acquire a lock on a file path.
26
+ * Returns immediately - does NOT queue or wait.
27
+ */
28
+ export function acquireFileLock(filePath, toolAction) {
29
+ const key = normalizeLockKey(filePath);
30
+ const existing = activeLocks.get(key);
31
+ if (existing) {
32
+ const elapsed = Date.now() - existing.acquiredAt;
33
+ if (elapsed < LOCK_TIMEOUT_MS) {
34
+ return { acquired: false, heldBy: existing.toolAction, heldForMs: elapsed };
35
+ }
36
+ // Stale lock - reclaim it
37
+ }
38
+ activeLocks.set(key, { toolAction, acquiredAt: Date.now() });
39
+ return { acquired: true };
40
+ }
41
+ /**
42
+ * Release a previously acquired lock.
43
+ * Safe to call even if the lock doesn't exist (idempotent).
44
+ */
45
+ export function releaseFileLock(filePath) {
46
+ const key = normalizeLockKey(filePath);
47
+ activeLocks.delete(key);
48
+ }
49
+ /**
50
+ * Clear all locks. For testing only.
51
+ */
52
+ export function resetFileLocks() {
53
+ activeLocks.clear();
54
+ }
55
+ //# sourceMappingURL=file-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../src/middleware/file-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB,wEAAwE;AAExE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEjD,6DAA6D;AAC7D,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,wEAAwE;AAExE,SAAS,gBAAgB,CAAC,QAAgB;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC3B,QAAgB,EAChB,UAAkB;IAElB,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;QACjD,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;YAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAChF,CAAC;QACD,0BAA0B;IAC9B,CAAC;IAED,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC1B,WAAW,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * middleware/validator.ts - AST validation middleware for NREKI v3.0.
3
+ *
4
+ * Wraps edit operations with automatic pre-write syntax validation.
5
+ * If the edited code has syntax errors, the write is blocked and the
6
+ * caller gets the exact error with line/column and fix suggestions.
7
+ *
8
+ * This is the former nreki_validate tool, now running automatically
9
+ * as invisible middleware inside nreki_code action:"edit".
10
+ */
11
+ import { AstSandbox, type ValidationResult } from "../ast-sandbox.js";
12
+ /**
13
+ * Validate code before writing to disk.
14
+ *
15
+ * @param code - The code to validate
16
+ * @param language - Programming language (typescript, javascript, python, go)
17
+ * @param sandbox - AstSandbox instance
18
+ * @param originalCode - Optional original file content for diff context
19
+ * @returns ValidationResult with validity status, errors, and suggestions
20
+ */
21
+ export declare function validateBeforeWrite(code: string, language: string, sandbox: AstSandbox, originalCode?: string): Promise<ValidationResult>;
22
+ /**
23
+ * Format validation errors as a human-readable string for MCP responses.
24
+ */
25
+ export declare function formatValidationErrors(result: ValidationResult): string;
26
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/middleware/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,EACnB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAavE"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * middleware/validator.ts - AST validation middleware for NREKI v3.0.
3
+ *
4
+ * Wraps edit operations with automatic pre-write syntax validation.
5
+ * If the edited code has syntax errors, the write is blocked and the
6
+ * caller gets the exact error with line/column and fix suggestions.
7
+ *
8
+ * This is the former nreki_validate tool, now running automatically
9
+ * as invisible middleware inside nreki_code action:"edit".
10
+ */
11
+ /**
12
+ * Validate code before writing to disk.
13
+ *
14
+ * @param code - The code to validate
15
+ * @param language - Programming language (typescript, javascript, python, go)
16
+ * @param sandbox - AstSandbox instance
17
+ * @param originalCode - Optional original file content for diff context
18
+ * @returns ValidationResult with validity status, errors, and suggestions
19
+ */
20
+ export async function validateBeforeWrite(code, language, sandbox, originalCode) {
21
+ await sandbox.initialize();
22
+ if (originalCode) {
23
+ return sandbox.validateDiff(originalCode, code, language);
24
+ }
25
+ return sandbox.validateCode(code, language);
26
+ }
27
+ /**
28
+ * Format validation errors as a human-readable string for MCP responses.
29
+ */
30
+ export function formatValidationErrors(result) {
31
+ if (result.valid)
32
+ return "";
33
+ const errorLines = result.errors.map((e, i) => `${i + 1}. **Line ${e.line}, Col ${e.column}** (${e.nodeType}): \`${e.context.split("\n")[0].trim()}\``);
34
+ return (`## Validation: FAILED - ${result.errors.length} syntax error(s)\n\n` +
35
+ `### Errors\n${errorLines.join("\n")}\n\n` +
36
+ `### Suggestions\n${result.suggestion}\n\n` +
37
+ `Fix these errors before writing the file.`);
38
+ }
39
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/middleware/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,IAAY,EACZ,QAAgB,EAChB,OAAmB,EACnB,YAAqB;IAErB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAE3B,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC3D,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAC1G,CAAC;IAEF,OAAO,CACH,2BAA2B,MAAM,CAAC,MAAM,CAAC,MAAM,sBAAsB;QACrE,eAAe,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QAC1C,oBAAoB,MAAM,CAAC,UAAU,MAAM;QAC3C,2CAA2C,CAC9C,CAAC;AACN,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * monitor.ts - Token consumption monitor for NREKI.
3
+ *
4
+ * Tracks Claude's token usage by reading JSONL session logs,
5
+ * computes real-time burn rate, and predicts when the context
6
+ * budget will be exhausted. Emits proactive alerts at configurable
7
+ * thresholds so you can adjust strategy before hitting limits.
8
+ */
9
+ export interface UsageEntry {
10
+ timestamp: string;
11
+ model: string;
12
+ input_tokens: number;
13
+ output_tokens: number;
14
+ cache_read_tokens?: number;
15
+ cache_write_tokens?: number;
16
+ total_cost_usd?: number;
17
+ }
18
+ export interface BurnRateResult {
19
+ /** Current burn rate in tokens per minute. */
20
+ tokensPerMinute: number;
21
+ /** Current burn rate in tokens per hour. */
22
+ tokensPerHour: number;
23
+ /** Total tokens consumed this session. */
24
+ totalConsumed: number;
25
+ /** Total input tokens. */
26
+ inputTokens: number;
27
+ /** Total output tokens. */
28
+ outputTokens: number;
29
+ /** Total cache read tokens (savings from caching). */
30
+ cacheReadTokens: number;
31
+ /** Estimated cost in USD. */
32
+ estimatedCostUsd: number;
33
+ /** Duration of the session in minutes. */
34
+ sessionDurationMinutes: number;
35
+ /** Number of API calls tracked. */
36
+ apiCalls: number;
37
+ }
38
+ export interface ExhaustionPrediction {
39
+ /** Estimated minutes until context budget is exhausted. */
40
+ minutesRemaining: number;
41
+ /** Estimated time of exhaustion as ISO string. */
42
+ exhaustionTime: string;
43
+ /** Current usage as a fraction of the budget (0.0 - 1.0). */
44
+ usageFraction: number;
45
+ /** Whether an alert should be triggered. */
46
+ shouldAlert: boolean;
47
+ /** Alert severity: info, warning, critical. */
48
+ alertLevel: "info" | "warning" | "critical" | "none";
49
+ /** Human-readable status message. */
50
+ message: string;
51
+ }
52
+ export interface MonitorConfig {
53
+ /** Path to Claude's JSONL usage log. Auto-detected if not provided. */
54
+ logPath?: string;
55
+ /** Total token budget for the session. Default: 1_000_000 */
56
+ budgetTokens?: number;
57
+ /** Warning threshold as fraction of budget. Default: 0.7 */
58
+ warningThreshold?: number;
59
+ /** Critical threshold as fraction of budget. Default: 0.9 */
60
+ criticalThreshold?: number;
61
+ /**
62
+ * Approximate pricing per 1M tokens. Update if Anthropic changes pricing.
63
+ * Defaults reflect Claude Sonnet 4 pricing as of 2025-05.
64
+ */
65
+ pricing?: {
66
+ input?: number;
67
+ output?: number;
68
+ cacheRead?: number;
69
+ cacheWrite?: number;
70
+ };
71
+ }
72
+ export declare class TokenMonitor {
73
+ private entries;
74
+ private config;
75
+ private lastReadPosition;
76
+ constructor(config?: MonitorConfig);
77
+ /**
78
+ * Auto-detect Claude's JSONL usage log path.
79
+ * Checks common locations across operating systems.
80
+ */
81
+ private detectLogPath;
82
+ /**
83
+ * Read and parse the JSONL usage log.
84
+ * Uses incremental reading - only processes new lines since last read.
85
+ */
86
+ readUsageLog(): UsageEntry[];
87
+ /** Calculate the current token burn rate. */
88
+ computeBurnRate(): BurnRateResult;
89
+ /** Predict when the token budget will be exhausted. */
90
+ predictExhaustion(): ExhaustionPrediction;
91
+ /** Generate a formatted status report for the nreki_status tool. */
92
+ generateReport(): string;
93
+ }
94
+ //# sourceMappingURL=monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../src/monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACL;AAkBD,qBAAa,YAAY;IACrB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,MAAM,GAAE,aAAkB;IAYtC;;;OAGG;IACH,OAAO,CAAC,aAAa;IA0BrB;;;OAGG;IACH,YAAY,IAAI,UAAU,EAAE;IAqC5B,6CAA6C;IAC7C,eAAe,IAAI,cAAc;IAgEjC,uDAAuD;IACvD,iBAAiB,IAAI,oBAAoB;IA2DzC,oEAAoE;IACpE,cAAc,IAAI,MAAM;CAyB3B"}