mcp-code-context 3.8.0 → 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.
Files changed (82) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/INSTRUCTIONS.md +2 -2
  3. package/README.md +16 -8
  4. package/SECURITY.md +2 -2
  5. package/dist/src/core/engine.d.ts +1 -1
  6. package/dist/src/core/engine.js +1 -1
  7. package/dist/src/core/indexManager.d.ts +1 -1
  8. package/dist/src/core/indexManager.js +1 -1
  9. package/dist/src/core/sessionManager.d.ts +1 -1
  10. package/dist/src/core/sessionManager.js +1 -1
  11. package/dist/src/core/validator.d.ts +1 -1
  12. package/dist/src/core/validator.js +1 -1
  13. package/dist/src/index.d.ts +1 -1
  14. package/dist/src/index.js +2 -2
  15. package/dist/src/operations/astTransform.d.ts +1 -1
  16. package/dist/src/operations/astTransform.js +1 -1
  17. package/dist/src/operations/compress.d.ts +1 -1
  18. package/dist/src/operations/compress.js +46 -16
  19. package/dist/src/operations/compress.js.map +1 -1
  20. package/dist/src/operations/confirmationStore.d.ts +1 -1
  21. package/dist/src/operations/confirmationStore.js +1 -1
  22. package/dist/src/operations/impactAnalysis.js +46 -0
  23. package/dist/src/operations/impactAnalysis.js.map +1 -1
  24. package/dist/src/operations/write.d.ts +1 -1
  25. package/dist/src/operations/write.js +3 -3
  26. package/dist/src/operations/write.js.map +1 -1
  27. package/dist/src/parsers/base.d.ts +14 -1
  28. package/dist/src/parsers/base.js +20 -1
  29. package/dist/src/parsers/base.js.map +1 -1
  30. package/dist/src/parsers/csharp.d.ts +1 -1
  31. package/dist/src/parsers/csharp.js +1 -1
  32. package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
  33. package/dist/src/parsers/dartTreeSitter.js +1 -1
  34. package/dist/src/parsers/go.d.ts +1 -1
  35. package/dist/src/parsers/go.js +1 -1
  36. package/dist/src/parsers/java.d.ts +1 -1
  37. package/dist/src/parsers/java.js +1 -1
  38. package/dist/src/parsers/kotlin.d.ts +1 -1
  39. package/dist/src/parsers/kotlin.js +1 -1
  40. package/dist/src/parsers/php.d.ts +1 -1
  41. package/dist/src/parsers/php.js +1 -1
  42. package/dist/src/parsers/python.d.ts +12 -1
  43. package/dist/src/parsers/python.js +26 -1
  44. package/dist/src/parsers/python.js.map +1 -1
  45. package/dist/src/parsers/registry.d.ts +1 -1
  46. package/dist/src/parsers/registry.js +1 -1
  47. package/dist/src/parsers/ruby.d.ts +13 -1
  48. package/dist/src/parsers/ruby.js +26 -1
  49. package/dist/src/parsers/ruby.js.map +1 -1
  50. package/dist/src/parsers/rust.d.ts +1 -1
  51. package/dist/src/parsers/rust.js +1 -1
  52. package/dist/src/parsers/typescript.d.ts +1 -1
  53. package/dist/src/parsers/typescript.js +1 -1
  54. package/dist/src/tools/toolDefinitionsCore.js +2 -2
  55. package/dist/src/utils/appDir.d.ts +1 -1
  56. package/dist/src/utils/appDir.js +1 -1
  57. package/dist/src/utils/auditLogger.d.ts +1 -1
  58. package/dist/src/utils/auditLogger.js +1 -1
  59. package/dist/src/utils/backupManager.d.ts +1 -1
  60. package/dist/src/utils/backupManager.js +1 -1
  61. package/dist/src/utils/constants.d.ts +1 -1
  62. package/dist/src/utils/constants.js +1 -1
  63. package/dist/src/utils/diff.d.ts +2 -2
  64. package/dist/src/utils/diff.js +2 -2
  65. package/dist/src/utils/fileLock.d.ts +1 -1
  66. package/dist/src/utils/fileLock.js +1 -1
  67. package/dist/src/utils/fileWalker.d.ts +1 -1
  68. package/dist/src/utils/fileWalker.js +1 -1
  69. package/dist/src/utils/fileWatcher.d.ts +1 -1
  70. package/dist/src/utils/fileWatcher.js +1 -1
  71. package/dist/src/utils/fuzzySearch.d.ts +1 -1
  72. package/dist/src/utils/fuzzySearch.js +1 -1
  73. package/dist/src/utils/logger.d.ts +1 -1
  74. package/dist/src/utils/logger.js +1 -1
  75. package/dist/src/utils/rateLimiter.d.ts +1 -1
  76. package/dist/src/utils/rateLimiter.js +1 -1
  77. package/dist/src/utils/streaming.d.ts +1 -1
  78. package/dist/src/utils/streaming.js +1 -1
  79. package/dist/src/utils/telemetry.d.ts +1 -1
  80. package/dist/src/utils/telemetry.js +1 -1
  81. package/llms.txt +8 -8
  82. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
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
+
3
18
  ## [3.8.0] - 2026-07-15
4
19
 
5
20
  ### Added
package/INSTRUCTIONS.md CHANGED
@@ -253,7 +253,7 @@ newContent: "{ return 42; }"
253
253
 
254
254
  ---
255
255
 
256
- ## 🚀 v3.8.0 Features
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)
@@ -288,6 +288,6 @@ See `llms.txt` for complete API reference and technical details.
288
288
 
289
289
  ---
290
290
 
291
- **Version**: 3.8.0
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
@@ -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.8.0 | Benefit |
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.8.0
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
  |---------|-------------|
@@ -164,7 +172,7 @@ Built to be robust and precise. Both read and write engines are tested against r
164
172
 
165
173
  ### `get_semantic_repo_map` Tool
166
174
 
167
- - **Max files**: Limited to 2000 files to prevent timeouts (increased from 500 in v3.8.0)
175
+ - **Max files**: Limited to 2000 files to prevent timeouts (increased from 500 in v3.8.1)
168
176
  - **Performance**: Synchronous I/O may take 10-30 seconds on large repositories
169
177
  - **Recommendation**: Use `@folder` syntax to target specific directories
170
178
 
@@ -191,13 +199,13 @@ npx -y mcp-code-context
191
199
 
192
200
  ---
193
201
 
194
- ## Session State (v3.8.0+)
202
+ ## Session State (v3.8.1+)
195
203
 
196
- **Important**: v3.8.0 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.
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.
197
205
 
198
206
  ### What Changed
199
207
 
200
- | Before (v3.6.x) | After (v3.8.0) |
208
+ | Before (v3.6.x) | After (v3.8.1) |
201
209
  |----------------|----------------|
202
210
  | Global `LockManager` (shared by all clients) | Session-scoped `sessionStates` Map |
203
211
  | Global `ConfirmationStore` (in-memory Map) | Session-scoped confirmation store + SQLite persistence |
@@ -225,7 +233,7 @@ npx -y mcp-code-context
225
233
  }
226
234
  ```
227
235
 
228
- ### New Tools (v3.8.0)
236
+ ### New Tools (v3.8.1)
229
237
 
230
238
  - `get_session_stats` — Get stats for current session only
231
239
  - `clear_session_cache` — Clear cache for current session only
@@ -529,7 +537,7 @@ npm run dev
529
537
  - **Portability:** 100% WASM - no native dependencies, works on all platforms
530
538
  - **Tests:** 83 passing (unit + integration + performance + stress)
531
539
 
532
- ### v3.8.0 Key Changes
540
+ ### v3.8.1 Key Changes
533
541
 
534
542
  | Component | Change | Benefit |
535
543
  |-----------|--------|---------|
package/SECURITY.md CHANGED
@@ -1,4 +1,4 @@
1
- # Security Policy - mcp-code-context v3.8.0
1
+ # Security Policy - mcp-code-context v3.8.1
2
2
 
3
3
  ## 🔒 Security Improvements in v3.7.1+
4
4
 
@@ -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.8.0
211
+ **Version**: 3.8.1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Core Engine - v3.8.0
2
+ * Core Engine - v3.8.1
3
3
  * ASYNC I/O: Migrated to fs.promises
4
4
  */
5
5
  import { Parser, Language } from "web-tree-sitter";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Core Engine - v3.8.0
2
+ * Core Engine - v3.8.1
3
3
  * ASYNC I/O: Migrated to fs.promises
4
4
  */
5
5
  import { Parser, Language } from "web-tree-sitter";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Index Manager - v3.8.0
2
+ * Index Manager - v3.8.1
3
3
  * Persistent symbol index and dependency graph in ~/.mcp-code-context/index/
4
4
  * Enables O(1) search_symbols and analyze_impact queries.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Index Manager - v3.8.0
2
+ * Index Manager - v3.8.1
3
3
  * Persistent symbol index and dependency graph in ~/.mcp-code-context/index/
4
4
  * Enables O(1) search_symbols and analyze_impact queries.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Session Manager - v3.8.0
2
+ * Session Manager - v3.8.1
3
3
  * Manages per-MCP-client state isolation
4
4
  * Prevents state leakage between concurrent clients
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Session Manager - v3.8.0
2
+ * Session Manager - v3.8.1
3
3
  * Manages per-MCP-client state isolation
4
4
  * Prevents state leakage between concurrent clients
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Security Validator - v3.8.0
2
+ * Security Validator - v3.8.1
3
3
  * CRITICAL FIX: Path traversal check AFTER normalization
4
4
  */
5
5
  export interface ValidationResult {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Security Validator - v3.8.0
2
+ * Security Validator - v3.8.1
3
3
  * CRITICAL FIX: Path traversal check AFTER normalization
4
4
  */
5
5
  import * as path from "node:path";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * mcp-code-context v3.8.0 - Tree-sitter WASM Edition (thin bootstrap)
3
+ * mcp-code-context v3.8.1 - Tree-sitter WASM Edition (thin bootstrap)
4
4
  */
5
5
  export {};
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * mcp-code-context v3.8.0 - Tree-sitter WASM Edition (thin bootstrap)
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.8.0";
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
- * AST Transform - v3.8.0
2
+ * AST Transform - v3.8.1
3
3
  * Declarative AST transformations using Tree-sitter.
4
4
  * Operates on symbol positions from the AST — no fragile text matching.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AST Transform - v3.8.0
2
+ * AST Transform - v3.8.1
3
3
  * Declarative AST transformations using Tree-sitter.
4
4
  * Operates on symbol positions from the AST — no fragile text matching.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Semantic Compression - v3.8.0
2
+ * Semantic Compression - v3.8.1
3
3
  * IMPROVEMENTS: Centralized constants + size limits + timeout + index feeding
4
4
  */
5
5
  import { ParserRegistry } from "../parsers/registry.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Semantic Compression - v3.8.0
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: symbols.map(s => ({ type: s.type, name: s.name })),
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
- // Match: import ... from './path' | import './path' | require('./path')
127
- const patterns = [
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 patterns) {
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
- // Resolve to absolute path
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":"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"}
1
+ {"version":3,"file":"compress.js","sourceRoot":"","sources":["../../../src/operations/compress.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Confirmation Store - v3.8.0
2
+ * Confirmation Store - v3.8.1
3
3
  * Two-phase write: dry-run preview → confirm with token
4
4
  * Stores pending write operations with auto-expiry
5
5
  * NOW with SQLite persistence for crash recovery
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Confirmation Store - v3.8.0
2
+ * Confirmation Store - v3.8.1
3
3
  * Two-phase write: dry-run preview → confirm with token
4
4
  * Stores pending write operations with auto-expiry
5
5
  * NOW with SQLite persistence for crash recovery
@@ -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":"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"}
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.8.0
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
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Write Operations - v3.8.0
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 = content.indexOf("{", anchorNode.startIndex) + 1;
107
+ insertIndex = parser.getInsideStartIndex(content, anchorNode);
108
108
  break;
109
109
  case "inside_end":
110
- insertIndex = content.lastIndexOf("}", anchorNode.endIndex);
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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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Base Parser - v3.8.0
2
+ * Base Parser - v3.8.1
3
3
  * Abstract base for all language parsers
4
4
  * IMPROVEMENT: replaceSymbol moved here using AST indices (eliminates indexOf fragility)
5
+ * v3.8.1: getInsideStartIndex/getInsideEndIndex overridable for brace-less languages
5
6
  */
6
7
  import { Parser, Tree, Language } from "web-tree-sitter";
7
8
  export interface ParseResult {
@@ -25,6 +26,18 @@ export declare abstract class BaseParser {
25
26
  init(parser: Parser, language: Language): Promise<void>;
26
27
  parse(content: string, oldTree?: Tree): Tree;
27
28
  abstract extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
29
+ /**
30
+ * Returns the index inside a symbol's body for inside_start insertion.
31
+ * Default: searches for `{` after symbol start (JS/TS/PHP/Java/Go/C#/Rust/Kotlin).
32
+ * Override in parsers for brace-less languages (Ruby, Python).
33
+ */
34
+ getInsideStartIndex(content: string, symbolInfo: SymbolInfo): number;
35
+ /**
36
+ * Returns the index inside a symbol's body for inside_end insertion.
37
+ * Default: searches for last `}` before symbol end (JS/TS/PHP/Java/Go/C#/Rust/Kotlin).
38
+ * Override in parsers for brace-less languages (Ruby, Python).
39
+ */
40
+ getInsideEndIndex(content: string, symbolInfo: SymbolInfo): number;
28
41
  /**
29
42
  * Replace a symbol using AST startIndex/endIndex (no indexOf fragility)
30
43
  * Concrete implementation — subclasses inherit this.
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Base Parser - v3.8.0
2
+ * Base Parser - v3.8.1
3
3
  * Abstract base for all language parsers
4
4
  * IMPROVEMENT: replaceSymbol moved here using AST indices (eliminates indexOf fragility)
5
+ * v3.8.1: getInsideStartIndex/getInsideEndIndex overridable for brace-less languages
5
6
  */
6
7
  export class BaseParser {
7
8
  parser;
@@ -21,6 +22,24 @@ export class BaseParser {
21
22
  throw new Error(`${this.languageName} parsing failed`);
22
23
  return tree;
23
24
  }
25
+ /**
26
+ * Returns the index inside a symbol's body for inside_start insertion.
27
+ * Default: searches for `{` after symbol start (JS/TS/PHP/Java/Go/C#/Rust/Kotlin).
28
+ * Override in parsers for brace-less languages (Ruby, Python).
29
+ */
30
+ getInsideStartIndex(content, symbolInfo) {
31
+ const idx = content.indexOf("{", symbolInfo.startIndex);
32
+ return idx !== -1 ? idx + 1 : symbolInfo.startIndex + 1;
33
+ }
34
+ /**
35
+ * Returns the index inside a symbol's body for inside_end insertion.
36
+ * Default: searches for last `}` before symbol end (JS/TS/PHP/Java/Go/C#/Rust/Kotlin).
37
+ * Override in parsers for brace-less languages (Ruby, Python).
38
+ */
39
+ getInsideEndIndex(content, symbolInfo) {
40
+ const idx = content.lastIndexOf("}", symbolInfo.endIndex);
41
+ return idx !== -1 ? idx : symbolInfo.endIndex - 1;
42
+ }
24
43
  /**
25
44
  * Replace a symbol using AST startIndex/endIndex (no indexOf fragility)
26
45
  * Concrete implementation — subclasses inherit this.
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,OAAgB,UAAU;IACpB,MAAM,CAAU;IAChB,QAAQ,CAAY;IACpB,YAAY,CAAS;IAE/B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAkB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAc;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,iBAAiB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAQD;;;OAGG;IACH,aAAa,CACX,OAAe,EACf,IAAU,EACV,UAAkB,EAClB,UAAkB,EAClB,SAAkB;QAElB,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC9B,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CACnE,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,mEAAmE;QACnE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;YAC5C,UAAU;YACV,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAID,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,MAAM,OAAgB,UAAU;IACpB,MAAM,CAAU;IAChB,QAAQ,CAAY;IACpB,YAAY,CAAS;IAE/B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAkB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAc;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,iBAAiB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAQD;;;;OAIG;IACH,mBAAmB,CAAC,OAAe,EAAE,UAAsB;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACxD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAe,EAAE,UAAsB;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,aAAa,CACX,OAAe,EACf,IAAU,EACV,UAAkB,EAClB,UAAkB,EAClB,SAAkB;QAElB,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC9B,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CACnE,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,mEAAmE;QACnE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;YAC5C,UAAU;YACV,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAID,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * C# Parser - v3.8.0
2
+ * C# Parser - v3.8.1
3
3
  * Tree-sitter based C# parser
4
4
  */
5
5
  import { Tree } from "web-tree-sitter";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * C# Parser - v3.8.0
2
+ * C# Parser - v3.8.1
3
3
  * Tree-sitter based C# parser
4
4
  */
5
5
  import { BaseParser } from "./base.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Dart Tree-sitter Parser - v3.8.0
2
+ * Dart Tree-sitter Parser - v3.8.1
3
3
  * 100% AST accuracy via WASM
4
4
  * CLEANUP: replaceSymbol removed (inherited from BaseParser)
5
5
  */