mcp-code-context 3.7.1 → 3.8.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/CHANGELOG.md +40 -0
- package/INSTRUCTIONS.md +3 -3
- package/README.md +20 -9
- package/SECURITY.md +10 -10
- package/dist/src/core/engine.d.ts +1 -1
- package/dist/src/core/engine.js +1 -1
- package/dist/src/core/indexManager.d.ts +1 -1
- package/dist/src/core/indexManager.js +1 -1
- package/dist/src/core/sessionManager.d.ts +1 -1
- package/dist/src/core/sessionManager.js +1 -1
- package/dist/src/core/validator.d.ts +1 -1
- package/dist/src/core/validator.js +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/operations/astTransform.d.ts +1 -1
- package/dist/src/operations/astTransform.js +1 -1
- package/dist/src/operations/compress.d.ts +1 -1
- package/dist/src/operations/compress.js +46 -16
- package/dist/src/operations/compress.js.map +1 -1
- package/dist/src/operations/confirmationStore.d.ts +1 -1
- package/dist/src/operations/confirmationStore.js +1 -1
- package/dist/src/operations/impactAnalysis.js +46 -0
- package/dist/src/operations/impactAnalysis.js.map +1 -1
- package/dist/src/operations/write.d.ts +1 -1
- package/dist/src/operations/write.js +3 -3
- package/dist/src/operations/write.js.map +1 -1
- package/dist/src/parsers/base.d.ts +14 -1
- package/dist/src/parsers/base.js +20 -1
- package/dist/src/parsers/base.js.map +1 -1
- package/dist/src/parsers/csharp.d.ts +1 -1
- package/dist/src/parsers/csharp.js +1 -1
- package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
- package/dist/src/parsers/dartTreeSitter.js +1 -1
- package/dist/src/parsers/go.d.ts +1 -1
- package/dist/src/parsers/go.js +1 -1
- package/dist/src/parsers/java.d.ts +1 -1
- package/dist/src/parsers/java.js +1 -1
- package/dist/src/parsers/kotlin.d.ts +1 -1
- package/dist/src/parsers/kotlin.js +1 -1
- package/dist/src/parsers/php.d.ts +1 -1
- package/dist/src/parsers/php.js +1 -1
- package/dist/src/parsers/python.d.ts +12 -1
- package/dist/src/parsers/python.js +26 -1
- package/dist/src/parsers/python.js.map +1 -1
- package/dist/src/parsers/registry.d.ts +1 -1
- package/dist/src/parsers/registry.js +1 -1
- package/dist/src/parsers/ruby.d.ts +20 -1
- package/dist/src/parsers/ruby.js +43 -3
- package/dist/src/parsers/ruby.js.map +1 -1
- package/dist/src/parsers/rust.d.ts +1 -1
- package/dist/src/parsers/rust.js +1 -1
- package/dist/src/parsers/typescript.d.ts +1 -1
- package/dist/src/parsers/typescript.js +1 -1
- package/dist/src/tools/readHandlers.js +26 -0
- package/dist/src/tools/readHandlers.js.map +1 -1
- package/dist/src/tools/toolDefinitionsCore.js +2 -2
- package/dist/src/utils/appDir.d.ts +1 -1
- package/dist/src/utils/appDir.js +1 -1
- package/dist/src/utils/auditLogger.d.ts +1 -1
- package/dist/src/utils/auditLogger.js +1 -1
- package/dist/src/utils/backupManager.d.ts +1 -1
- package/dist/src/utils/backupManager.js +1 -1
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +1 -1
- package/dist/src/utils/diff.d.ts +2 -2
- package/dist/src/utils/diff.js +2 -2
- package/dist/src/utils/fileLock.d.ts +1 -1
- package/dist/src/utils/fileLock.js +1 -1
- package/dist/src/utils/fileWalker.d.ts +1 -1
- package/dist/src/utils/fileWalker.js +1 -1
- package/dist/src/utils/fileWatcher.d.ts +1 -1
- package/dist/src/utils/fileWatcher.js +1 -1
- package/dist/src/utils/fuzzySearch.d.ts +1 -1
- package/dist/src/utils/fuzzySearch.js +1 -1
- package/dist/src/utils/logger.d.ts +1 -1
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/utils/railsSchema.d.ts +10 -0
- package/dist/src/utils/railsSchema.js +104 -0
- package/dist/src/utils/railsSchema.js.map +1 -0
- package/dist/src/utils/rateLimiter.d.ts +1 -1
- package/dist/src/utils/rateLimiter.js +1 -1
- package/dist/src/utils/streaming.d.ts +1 -1
- package/dist/src/utils/streaming.js +1 -1
- package/dist/src/utils/telemetry.d.ts +1 -1
- package/dist/src/utils/telemetry.js +1 -1
- package/llms.txt +11 -9
- package/package.json +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.8.1] - 2026-07-16
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`insertCode` fix for brace-less languages (Ruby, Python)** — `inside_start`/`inside_end` positions now use AST-aware methods instead of `indexOf("{")` / `lastIndexOf("}")`. Added `getInsideStartIndex()` and `getInsideEndIndex()` to `BaseParser` with language-specific overrides in `RubyParser` and `PythonParser`.
|
|
8
|
+
- **Ruby import analysis** — `extractImports` in `compress.ts` now detects `require` and `require_relative` patterns. `analyzeImpact` adds Ruby patterns with file-resolution guard (prevents false positives from stdlib mixins like `include Comparable`).
|
|
9
|
+
- **ActiveRecord schema injection in `get_semantic_repo_map`** — repo map now includes `db_column` symbols for AR models, showing database columns alongside methods in the XML/Markdown output.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **`insert_symbol inside_start/inside_end` for Ruby** — previously returned wrong position (`-1`) for any Ruby class or method. Now inserts correctly after the opening header line (`inside_start`) and before the closing `end` keyword (`inside_end`).
|
|
14
|
+
- **`insert_symbol inside_start/inside_end` for Python** — previously searched for `{`/`}` that don't exist. Now uses colon+newline and indentation-aware end position.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## [3.8.0] - 2026-07-15
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Ruby full support** — `RubyParser` now complete with `search()` method for `search_code_pattern` tool compatibility
|
|
23
|
+
- **ActiveRecord Virtual Schema Extractor** — new `src/utils/railsSchema.ts` utility:
|
|
24
|
+
- Parses `db/schema.rb` via O(n) line-by-line state machine (no backtracking risk)
|
|
25
|
+
- mtime-keyed in-memory cache — zero I/O on repeated reads of unchanged schema
|
|
26
|
+
- `modelToTable()` — Rails CoC PascalCase → snake_case → pluralize (`AdminUser → admin_users`, `Category → categories`)
|
|
27
|
+
- `formatSchemaAnnotation()` — emits XML comment block with column names and types
|
|
28
|
+
- **AR schema injection in `read_file_surgical`** — when reading `.rb` files inheriting from `ApplicationRecord` or `ActiveRecord::Base`, virtual schema columns are prepended as XML comments
|
|
29
|
+
- Context-aware: when `symbolName` is set, reads full file to detect AR inheritance before injecting
|
|
30
|
+
- Graceful: no-op when `db/schema.rb` is absent or table not found
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **`RubyParser.extractSymbol` off-by-one** — `tree.rootNode.text` omits leading whitespace on Windows/WASM, causing `startIndex` drift. Fixed by adjusting indices relative to `tree.rootNode.startIndex`.
|
|
35
|
+
|
|
36
|
+
### Tests
|
|
37
|
+
|
|
38
|
+
- Added `tests/unit/parsers/ruby.spec.ts` — 5 vitest specs: symbol discovery, surgical replace, `extractSymbol` scoping, `parseSchemaRb` column extraction, `modelToTable` CoC mapping
|
|
39
|
+
- All 115 WASM parser tests passing (100%)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
3
43
|
## [3.7.1] - 2026-06-18
|
|
4
44
|
|
|
5
45
|
### Fixed
|
package/INSTRUCTIONS.md
CHANGED
|
@@ -253,7 +253,7 @@ newContent: "{ return 42; }"
|
|
|
253
253
|
|
|
254
254
|
---
|
|
255
255
|
|
|
256
|
-
## 🚀 v3.
|
|
256
|
+
## 🚀 v3.8.1 Features
|
|
257
257
|
|
|
258
258
|
### New Tools
|
|
259
259
|
- **`get_session_stats`**: Session-scoped stats (pending ops, locks held, rate limiter tokens)
|
|
@@ -267,7 +267,7 @@ newContent: "{ return 42; }"
|
|
|
267
267
|
- ✅ **Auto-persist before eviction**: Cache data preserved
|
|
268
268
|
- ✅ **Higher file limits**: MAX_FILES = 2000 (was 500)
|
|
269
269
|
|
|
270
|
-
### Previously Added in v3.7.
|
|
270
|
+
### Previously Added in v3.7.x
|
|
271
271
|
- ✅ **4 New Tools**: `search_symbols`, `explain_symbol`, `batch_read`, `get_rate_limit_status`
|
|
272
272
|
- ✅ **`diffFormat`**: Control diff verbosity (`unified`, `compact`, `summary`, `none`)
|
|
273
273
|
- ✅ **Phase 2 optimized**: No need to resend `newContent`/`code` — server stores it from Phase 1
|
|
@@ -288,6 +288,6 @@ See `llms.txt` for complete API reference and technical details.
|
|
|
288
288
|
|
|
289
289
|
---
|
|
290
290
|
|
|
291
|
-
**Version**: 3.
|
|
291
|
+
**Version**: 3.8.1
|
|
292
292
|
**Last Updated**: June 8, 2026
|
|
293
293
|
**Status**: Production-ready with session-scoped state and crash recovery
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/mcp-code-context)
|
|
5
5
|
[](https://www.npmjs.com/package/mcp-code-context)
|
|
6
6
|
[]()
|
|
7
|
-
[]()
|
|
8
8
|
[](https://ko-fi.com/achatainga)
|
|
9
9
|
[](https://paypal.me/achatainga)
|
|
10
10
|
|
|
@@ -75,7 +75,7 @@ Built to be robust and precise. Both read and write engines are tested against r
|
|
|
75
75
|
|
|
76
76
|
### Production-Ready Features
|
|
77
77
|
|
|
78
|
-
| Feature | v3.6.x | v3.
|
|
78
|
+
| Feature | v3.6.x | v3.8.1 | Benefit |
|
|
79
79
|
|---------|--------|--------|---------|
|
|
80
80
|
| Multi-process safety | ✅ | ✅ | No file corruption |
|
|
81
81
|
| Persistent cache | ✅ | ✅ | <100ms cache hits |
|
|
@@ -88,7 +88,15 @@ Built to be robust and precise. Both read and write engines are tested against r
|
|
|
88
88
|
|
|
89
89
|
## Features
|
|
90
90
|
|
|
91
|
-
### What's New in v3.
|
|
91
|
+
### What's New in v3.8.1
|
|
92
|
+
|
|
93
|
+
| Feature | Description |
|
|
94
|
+
|---------|-------------|
|
|
95
|
+
| 🔧 **`insert_symbol` fix Ruby/Python** | `inside_start`/`inside_end` now uses AST positions — no more broken insertion for `end`-based or indentation-based languages |
|
|
96
|
+
| 🗄️ **Schema in `get_semantic_repo_map`** | Repo map now shows `db_column` symbols for all ActiveRecord models alongside their methods |
|
|
97
|
+
| 🔗 **Ruby import analysis** | `analyze_impact` and dependency index now track `require`/`require_relative` in Ruby files with false-positive guard for stdlib mixins |
|
|
98
|
+
|
|
99
|
+
### Previous: v3.8.0
|
|
92
100
|
|
|
93
101
|
| Feature | Description |
|
|
94
102
|
|---------|-------------|
|
|
@@ -99,6 +107,8 @@ Built to be robust and precise. Both read and write engines are tested against r
|
|
|
99
107
|
| 📊 **Higher file limits** | MAX_FILES_REPO_MAP = 2000 (was 500) |
|
|
100
108
|
| 🧪 **Multi-client tests** | New integration tests for concurrent MCP clients |
|
|
101
109
|
| 📝 **New tools**: `get_session_stats`, `clear_session_cache`, `list_pending_operations` | Session-aware operations |
|
|
110
|
+
| 💎 **Ruby full support** | Complete `RubyParser` with `search()` for `search_code_pattern` compatibility |
|
|
111
|
+
| 🗄️ **ActiveRecord Virtual Schema** | Parses `db/schema.rb` and injects column annotations when reading AR model files |
|
|
102
112
|
|
|
103
113
|
### Previous Versions (v3.6.x)
|
|
104
114
|
|
|
@@ -142,6 +152,7 @@ Built to be robust and precise. Both read and write engines are tested against r
|
|
|
142
152
|
| PHP | ✅ AST (Tree-sitter WASM) | ✅ AST + line-splice | ✅ |
|
|
143
153
|
| Dart | ✅ AST (Tree-sitter WASM) | ✅ AST + line-splice | ✅ |
|
|
144
154
|
| Python | ✅ AST (Tree-sitter WASM) | ✅ Indentation-aware | ✅ |
|
|
155
|
+
| Ruby | ✅ AST (Tree-sitter WASM) + ActiveRecord Virtual Schema | ✅ AST byte-offset splice | ✅ |
|
|
145
156
|
| Others (JSON, YAML, CSS, etc.) | Passthrough / truncation | — | — |
|
|
146
157
|
|
|
147
158
|
---
|
|
@@ -161,7 +172,7 @@ Built to be robust and precise. Both read and write engines are tested against r
|
|
|
161
172
|
|
|
162
173
|
### `get_semantic_repo_map` Tool
|
|
163
174
|
|
|
164
|
-
- **Max files**: Limited to 2000 files to prevent timeouts (increased from 500 in v3.
|
|
175
|
+
- **Max files**: Limited to 2000 files to prevent timeouts (increased from 500 in v3.8.1)
|
|
165
176
|
- **Performance**: Synchronous I/O may take 10-30 seconds on large repositories
|
|
166
177
|
- **Recommendation**: Use `@folder` syntax to target specific directories
|
|
167
178
|
|
|
@@ -188,13 +199,13 @@ npx -y mcp-code-context
|
|
|
188
199
|
|
|
189
200
|
---
|
|
190
201
|
|
|
191
|
-
## Session State (v3.
|
|
202
|
+
## Session State (v3.8.1+)
|
|
192
203
|
|
|
193
|
-
**Important**: v3.
|
|
204
|
+
**Important**: v3.8.1 introduces **session-scoped state** for each MCP client connection. This prevents state leakage when multiple agents (Amazon Q, Kiro, Cursor, etc.) use the same server instance.
|
|
194
205
|
|
|
195
206
|
### What Changed
|
|
196
207
|
|
|
197
|
-
| Before (v3.6.x) | After (v3.
|
|
208
|
+
| Before (v3.6.x) | After (v3.8.1) |
|
|
198
209
|
|----------------|----------------|
|
|
199
210
|
| Global `LockManager` (shared by all clients) | Session-scoped `sessionStates` Map |
|
|
200
211
|
| Global `ConfirmationStore` (in-memory Map) | Session-scoped confirmation store + SQLite persistence |
|
|
@@ -222,7 +233,7 @@ npx -y mcp-code-context
|
|
|
222
233
|
}
|
|
223
234
|
```
|
|
224
235
|
|
|
225
|
-
### New Tools (v3.
|
|
236
|
+
### New Tools (v3.8.1)
|
|
226
237
|
|
|
227
238
|
- `get_session_stats` — Get stats for current session only
|
|
228
239
|
- `clear_session_cache` — Clear cache for current session only
|
|
@@ -526,7 +537,7 @@ npm run dev
|
|
|
526
537
|
- **Portability:** 100% WASM - no native dependencies, works on all platforms
|
|
527
538
|
- **Tests:** 83 passing (unit + integration + performance + stress)
|
|
528
539
|
|
|
529
|
-
### v3.
|
|
540
|
+
### v3.8.1 Key Changes
|
|
530
541
|
|
|
531
542
|
| Component | Change | Benefit |
|
|
532
543
|
|-----------|--------|---------|
|
package/SECURITY.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Security Policy - mcp-code-context v3.
|
|
1
|
+
# Security Policy - mcp-code-context v3.8.1
|
|
2
2
|
|
|
3
|
-
## 🔒 Security Improvements in v3.7.1
|
|
3
|
+
## 🔒 Security Improvements in v3.7.1+
|
|
4
4
|
|
|
5
|
-
This release addresses **all critical security vulnerabilities** from comprehensive adversarial audit, implements full middleware pipeline, and hardens all 13 tool handlers. **NEW**: Session-scoped state isolation prevents cross-client data leakage.
|
|
5
|
+
This release addresses **all critical security vulnerabilities** from comprehensive adversarial audit, implements full middleware pipeline, and hardens all 13 tool handlers. **NEW in v3.7.0**: Session-scoped state isolation prevents cross-client data leakage.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -96,9 +96,9 @@ This release addresses **all critical security vulnerabilities** from comprehens
|
|
|
96
96
|
|
|
97
97
|
---
|
|
98
98
|
|
|
99
|
-
### 10. Session State Leakage (HIGH) — **NEW**
|
|
99
|
+
### 10. Session State Leakage (HIGH) — **NEW in v3.7.0**
|
|
100
100
|
**CVSS Score**: 7.5 (High)
|
|
101
|
-
**Status**: ✅ FIXED in v3.7.
|
|
101
|
+
**Status**: ✅ FIXED in v3.7.0
|
|
102
102
|
|
|
103
103
|
**Description**: Global state (`globalLockManager`, `globalConfirmationStore`, `rateLimiter`) accumulated across client sessions with no cleanup.
|
|
104
104
|
|
|
@@ -108,9 +108,9 @@ This release addresses **all critical security vulnerabilities** from comprehens
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
-
### 11. Pending Operations Not Persistent (HIGH) — **NEW**
|
|
111
|
+
### 11. Pending Operations Not Persistent (HIGH) — **NEW in v3.7.0**
|
|
112
112
|
**CVSS Score**: 7.0 (High)
|
|
113
|
-
**Status**: ✅ FIXED in v3.7.
|
|
113
|
+
**Status**: ✅ FIXED in v3.7.0
|
|
114
114
|
|
|
115
115
|
**Description**: Pending operations stored in `globalConfirmationStore` (in-memory Map). No persistence.
|
|
116
116
|
|
|
@@ -141,7 +141,7 @@ This release addresses **all critical security vulnerabilities** from comprehens
|
|
|
141
141
|
- Audit logging (persistent `.mcp-audit-logs/`)
|
|
142
142
|
- Telemetry (operation metrics, percentiles)
|
|
143
143
|
|
|
144
|
-
4. **Session-Scoped State** (v3.7.
|
|
144
|
+
4. **Session-Scoped State** (v3.7.0)
|
|
145
145
|
- Each MCP client gets isolated locks, confirmation store, rate limiter
|
|
146
146
|
- No state leakage between clients (Amazon Q, Kiro, Cursor, etc.)
|
|
147
147
|
|
|
@@ -191,7 +191,7 @@ node dist-tests/tests/test-security.js
|
|
|
191
191
|
- [x] Syntax validation
|
|
192
192
|
- [x] Bounded memory in compress
|
|
193
193
|
|
|
194
|
-
### v3.7.
|
|
194
|
+
### v3.7.x ✅
|
|
195
195
|
- [x] Regex timeout enforcement (safeRegexTest)
|
|
196
196
|
- [x] Expanded ReDoS detection (15+ patterns)
|
|
197
197
|
- [x] Rate limiting (token bucket)
|
|
@@ -208,4 +208,4 @@ node dist-tests/tests/test-security.js
|
|
|
208
208
|
---
|
|
209
209
|
|
|
210
210
|
**Last Updated**: 2026-06-08
|
|
211
|
-
**Version**: 3.
|
|
211
|
+
**Version**: 3.8.1
|
package/dist/src/core/engine.js
CHANGED
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* mcp-code-context v3.
|
|
3
|
+
* mcp-code-context v3.8.1 - Tree-sitter WASM Edition (thin bootstrap)
|
|
4
4
|
*/
|
|
5
5
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
6
6
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
@@ -13,7 +13,7 @@ import { TOOLS } from "./tools/toolDefinitions.js";
|
|
|
13
13
|
import { setServerInstances } from "./tools/context.js";
|
|
14
14
|
import { registerPipeline } from "./tools/pipeline.js";
|
|
15
15
|
const SERVER_NAME = "mcp-code-context";
|
|
16
|
-
const SERVER_VERSION = "3.
|
|
16
|
+
const SERVER_VERSION = "3.8.1";
|
|
17
17
|
const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
|
|
18
18
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
19
19
|
registerPipeline(server);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Semantic Compression - v3.
|
|
2
|
+
* Semantic Compression - v3.8.1
|
|
3
3
|
* IMPROVEMENTS: Centralized constants + size limits + timeout + index feeding
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from "node:fs/promises";
|
|
@@ -8,6 +8,7 @@ import * as crypto from "node:crypto";
|
|
|
8
8
|
import { EXCLUDE_DIRS, MAX_FILES_REPO_MAP, MAX_TOTAL_SIZE_BYTES } from "../utils/constants.js";
|
|
9
9
|
import { walkDir } from "../utils/fileWalker.js";
|
|
10
10
|
import { IndexManager } from "../core/indexManager.js";
|
|
11
|
+
import { loadRailsSchema, modelToTable } from "../utils/railsSchema.js";
|
|
11
12
|
/**
|
|
12
13
|
* Generate semantic repository map
|
|
13
14
|
*/
|
|
@@ -50,9 +51,30 @@ async function compressRepository(params) {
|
|
|
50
51
|
return syms;
|
|
51
52
|
})();
|
|
52
53
|
totalSymbols += symbols.length;
|
|
54
|
+
// R1: Rails AR schema injection for .rb files in repo map
|
|
55
|
+
let fileSymbols = symbols.map(s => ({ type: s.type, name: s.name }));
|
|
56
|
+
if (path.extname(fullPath) === ".rb") {
|
|
57
|
+
const schema = await loadRailsSchema(params.projectRoot).catch(() => null);
|
|
58
|
+
if (schema) {
|
|
59
|
+
for (const sym of symbols) {
|
|
60
|
+
if (sym.type === "class") {
|
|
61
|
+
const tableName = modelToTable(sym.name);
|
|
62
|
+
const columns = schema[tableName];
|
|
63
|
+
if (columns && Object.keys(columns).length > 0) {
|
|
64
|
+
const dbCols = Object.entries(columns).map(([col, type]) => ({
|
|
65
|
+
type: "db_column",
|
|
66
|
+
name: `${col}:${type}`,
|
|
67
|
+
}));
|
|
68
|
+
fileSymbols = [...fileSymbols, ...dbCols];
|
|
69
|
+
totalSymbols += dbCols.length;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
53
75
|
files.push({
|
|
54
76
|
path: path.relative(params.directoryPath, fullPath),
|
|
55
|
-
symbols:
|
|
77
|
+
symbols: fileSymbols,
|
|
56
78
|
});
|
|
57
79
|
}
|
|
58
80
|
catch {
|
|
@@ -123,31 +145,39 @@ async function compressRepository(params) {
|
|
|
123
145
|
function extractImports(content, filePath, rootDir) {
|
|
124
146
|
const deps = [];
|
|
125
147
|
const dir = path.dirname(filePath);
|
|
126
|
-
//
|
|
127
|
-
const
|
|
148
|
+
// JS/TS: import ... from './path' | import './path' | require('./path')
|
|
149
|
+
const jsPatterns = [
|
|
128
150
|
/from\s+['"](\.[^'"]+)['"]/g,
|
|
129
151
|
/import\s+['"](\.[^'"]+)['"]/g,
|
|
130
152
|
/require\s*\(\s*['"](\.[^'"]+)['"]\s*\)/g,
|
|
131
153
|
];
|
|
132
|
-
for (const pattern of
|
|
154
|
+
for (const pattern of jsPatterns) {
|
|
133
155
|
let match;
|
|
134
156
|
while ((match = pattern.exec(content)) !== null) {
|
|
135
157
|
const importPath = match[1];
|
|
136
158
|
if (!importPath)
|
|
137
159
|
continue;
|
|
138
|
-
|
|
139
|
-
const resolved = path.resolve(dir, importPath);
|
|
140
|
-
// Try common extensions if no extension given
|
|
141
|
-
const ext = path.extname(resolved);
|
|
142
|
-
if (ext) {
|
|
143
|
-
deps.push(resolved);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
// Add the bare path — IndexManager stores what it gets
|
|
147
|
-
deps.push(resolved);
|
|
148
|
-
}
|
|
160
|
+
deps.push(path.resolve(dir, importPath));
|
|
149
161
|
}
|
|
150
162
|
}
|
|
163
|
+
// Ruby: require 'path' | require_relative '../path'
|
|
164
|
+
const rubyRequire = /require\s+['"]([^'"]+)['"]/g;
|
|
165
|
+
const rubyRequireRel = /require_relative\s+['"]([^'"]+)['"]/g;
|
|
166
|
+
let match;
|
|
167
|
+
// require 'path' — treat as relative to projectRoot (lib/ or gems — best effort)
|
|
168
|
+
while ((match = rubyRequire.exec(content)) !== null) {
|
|
169
|
+
const importPath = match[1];
|
|
170
|
+
if (!importPath || importPath.includes("/") === false)
|
|
171
|
+
continue; // skip bare gem names like 'devise'
|
|
172
|
+
deps.push(path.resolve(dir, importPath));
|
|
173
|
+
}
|
|
174
|
+
// require_relative '../path' — always relative to the file doing the require
|
|
175
|
+
while ((match = rubyRequireRel.exec(content)) !== null) {
|
|
176
|
+
const importPath = match[1];
|
|
177
|
+
if (!importPath)
|
|
178
|
+
continue;
|
|
179
|
+
deps.push(path.resolve(dir, importPath));
|
|
180
|
+
}
|
|
151
181
|
return [...new Set(deps)]; // deduplicate
|
|
152
182
|
}
|
|
153
183
|
export { compressRepository };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../../src/operations/compress.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../../src/operations/compress.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,32 @@ import { walkDir } from "../utils/fileWalker.js";
|
|
|
8
8
|
import { IndexManager } from "../core/indexManager.js";
|
|
9
9
|
import { safeRegexAnyTest } from "../utils/safeRegex.js";
|
|
10
10
|
import { sanitizeRegexPattern } from "../utils/regexValidator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Check if a module name resolves to an actual file via Rails convention.
|
|
13
|
+
* Prevents false positives for stdlib mixins like `include Comparable`.
|
|
14
|
+
* Only adds include/extend to impact patterns when a matching file exists.
|
|
15
|
+
*/
|
|
16
|
+
async function rubyModuleResolvesToFile(moduleName, rootDir) {
|
|
17
|
+
// Convert ModuleName → module_name (snake_case)
|
|
18
|
+
const snakeName = moduleName
|
|
19
|
+
.replace(/([A-Z])/g, (c, _, i) => i === 0 ? c.toLowerCase() : `_${c.toLowerCase()}`);
|
|
20
|
+
const candidates = [
|
|
21
|
+
path.join(rootDir, "app", "models", "concerns", `${snakeName}.rb`),
|
|
22
|
+
path.join(rootDir, "app", "controllers", "concerns", `${snakeName}.rb`),
|
|
23
|
+
path.join(rootDir, "lib", `${snakeName}.rb`),
|
|
24
|
+
path.join(rootDir, "app", "models", `${snakeName}.rb`),
|
|
25
|
+
];
|
|
26
|
+
for (const candidate of candidates) {
|
|
27
|
+
try {
|
|
28
|
+
await fs.access(candidate);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// not found — try next
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
11
37
|
export async function analyzeImpact(params) {
|
|
12
38
|
try {
|
|
13
39
|
// ── Fast path: use persistent index if available ──────────────────────
|
|
@@ -22,13 +48,33 @@ export async function analyzeImpact(params) {
|
|
|
22
48
|
// ── Slow path: regex scan (no index yet) ─────────────────────────────
|
|
23
49
|
const dependents = [];
|
|
24
50
|
const fileName = path.basename(params.filePath);
|
|
51
|
+
const fileExt = path.extname(params.filePath);
|
|
25
52
|
const baseName = sanitizeRegexPattern(fileName.replace(/\.[^.]+$/, ""));
|
|
26
53
|
const fullName = sanitizeRegexPattern(fileName);
|
|
54
|
+
// Base patterns (JS/TS/Python)
|
|
27
55
|
const importPatterns = [
|
|
28
56
|
`import.*from.*['"].*${baseName}`,
|
|
29
57
|
`require\\(['"].*${fullName}`,
|
|
30
58
|
`from.*${baseName}.*import`,
|
|
31
59
|
];
|
|
60
|
+
// Ruby-specific patterns — only for .rb files
|
|
61
|
+
if (fileExt === ".rb") {
|
|
62
|
+
// require 'path' and require_relative '../path'
|
|
63
|
+
importPatterns.push(`require\\s+['"].*${baseName}`);
|
|
64
|
+
importPatterns.push(`require_relative\\s+['"].*${baseName}`);
|
|
65
|
+
// include/extend ModuleName — only if the module name resolves to an actual file
|
|
66
|
+
// (prevents false positives for stdlib: `include Comparable` matching comparable.rb)
|
|
67
|
+
const moduleNameFromFile = baseName
|
|
68
|
+
.split("_")
|
|
69
|
+
.map(w => w.charAt(0).toUpperCase() + w.slice(1))
|
|
70
|
+
.join("");
|
|
71
|
+
const moduleResolvable = await rubyModuleResolvesToFile(moduleNameFromFile, params.rootDir);
|
|
72
|
+
if (moduleResolvable) {
|
|
73
|
+
importPatterns.push(`include\\s+${sanitizeRegexPattern(moduleNameFromFile)}`);
|
|
74
|
+
importPatterns.push(`extend\\s+${sanitizeRegexPattern(moduleNameFromFile)}`);
|
|
75
|
+
importPatterns.push(`prepend\\s+${sanitizeRegexPattern(moduleNameFromFile)}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
32
78
|
await walkDir(params.rootDir, {
|
|
33
79
|
extensions: SUPPORTED_EXTENSIONS,
|
|
34
80
|
excludeDirs: EXCLUDE_DIRS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impactAnalysis.js","sourceRoot":"","sources":["../../../src/operations/impactAnalysis.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAInC;IACC,IAAI,CAAC;QACH,yEAAyE;QACzE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,CAAC,SAAS,CACrB,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,EACtD,IAAI,EAAE,CAAC,CACR;aACF,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"impactAnalysis.js","sourceRoot":"","sources":["../../../src/operations/impactAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Write Operations - v3.
|
|
2
|
+
* Write Operations - v3.8.1
|
|
3
3
|
* FIXES: SecurityValidator in renameSymbol, atomic writes, AST-based positioning
|
|
4
4
|
* CRITICAL: renameSymbol Phase 1 is now pure-functional (no disk writes)
|
|
5
5
|
*/
|
|
@@ -104,10 +104,10 @@ export async function insertCode(options) {
|
|
|
104
104
|
insertIndex = anchorNode.endIndex;
|
|
105
105
|
break;
|
|
106
106
|
case "inside_start":
|
|
107
|
-
insertIndex =
|
|
107
|
+
insertIndex = parser.getInsideStartIndex(content, anchorNode);
|
|
108
108
|
break;
|
|
109
109
|
case "inside_end":
|
|
110
|
-
insertIndex =
|
|
110
|
+
insertIndex = parser.getInsideEndIndex(content, anchorNode);
|
|
111
111
|
break;
|
|
112
112
|
default:
|
|
113
113
|
insertIndex = anchorNode.endIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/operations/write.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/operations/write.ts"],"names":[],"mappings":"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"}
|