mcp-code-context 3.9.2 → 7.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 (198) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/INSTRUCTIONS.md +15 -4
  3. package/README.md +109 -5
  4. package/dist/src/core/engine.d.ts +1 -1
  5. package/dist/src/core/engine.js +1 -1
  6. package/dist/src/core/indexManager.d.ts +1 -1
  7. package/dist/src/core/indexManager.js +1 -1
  8. package/dist/src/core/sessionManager.d.ts +1 -1
  9. package/dist/src/core/sessionManager.js +1 -1
  10. package/dist/src/core/validator.d.ts +1 -1
  11. package/dist/src/core/validator.js +1 -1
  12. package/dist/src/index.d.ts +4 -2
  13. package/dist/src/index.js +119 -14
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/operations/apiRoutes.d.ts +31 -0
  16. package/dist/src/operations/apiRoutes.js +170 -0
  17. package/dist/src/operations/apiRoutes.js.map +1 -0
  18. package/dist/src/operations/architectureLinter.d.ts +45 -0
  19. package/dist/src/operations/architectureLinter.js +223 -0
  20. package/dist/src/operations/architectureLinter.js.map +1 -0
  21. package/dist/src/operations/astComplexity.d.ts +38 -0
  22. package/dist/src/operations/astComplexity.js +243 -0
  23. package/dist/src/operations/astComplexity.js.map +1 -0
  24. package/dist/src/operations/astMockGenerator.d.ts +34 -0
  25. package/dist/src/operations/astMockGenerator.js +203 -0
  26. package/dist/src/operations/astMockGenerator.js.map +1 -0
  27. package/dist/src/operations/astQuery.d.ts +47 -0
  28. package/dist/src/operations/astQuery.js +169 -0
  29. package/dist/src/operations/astQuery.js.map +1 -0
  30. package/dist/src/operations/astTransform.d.ts +1 -1
  31. package/dist/src/operations/astTransform.js +11 -2
  32. package/dist/src/operations/astTransform.js.map +1 -1
  33. package/dist/src/operations/asyncBlockers.d.ts +33 -0
  34. package/dist/src/operations/asyncBlockers.js +162 -0
  35. package/dist/src/operations/asyncBlockers.js.map +1 -0
  36. package/dist/src/operations/blastRadiusReport.d.ts +43 -0
  37. package/dist/src/operations/blastRadiusReport.js +236 -0
  38. package/dist/src/operations/blastRadiusReport.js.map +1 -0
  39. package/dist/src/operations/callHierarchy.d.ts +28 -0
  40. package/dist/src/operations/callHierarchy.js +166 -0
  41. package/dist/src/operations/callHierarchy.js.map +1 -0
  42. package/dist/src/operations/circularDependencies.d.ts +28 -0
  43. package/dist/src/operations/circularDependencies.js +201 -0
  44. package/dist/src/operations/circularDependencies.js.map +1 -0
  45. package/dist/src/operations/classHierarchyFlattener.d.ts +35 -0
  46. package/dist/src/operations/classHierarchyFlattener.js +185 -0
  47. package/dist/src/operations/classHierarchyFlattener.js.map +1 -0
  48. package/dist/src/operations/compress.d.ts +2 -2
  49. package/dist/src/operations/compress.js +154 -20
  50. package/dist/src/operations/compress.js.map +1 -1
  51. package/dist/src/operations/conceptSearch.d.ts +19 -0
  52. package/dist/src/operations/conceptSearch.js +176 -0
  53. package/dist/src/operations/conceptSearch.js.map +1 -0
  54. package/dist/src/operations/confirmationStore.d.ts +1 -1
  55. package/dist/src/operations/confirmationStore.js +1 -1
  56. package/dist/src/operations/conflictPredictor.d.ts +21 -0
  57. package/dist/src/operations/conflictPredictor.js +139 -0
  58. package/dist/src/operations/conflictPredictor.js.map +1 -0
  59. package/dist/src/operations/contextCompactor.d.ts +38 -0
  60. package/dist/src/operations/contextCompactor.js +348 -0
  61. package/dist/src/operations/contextCompactor.js.map +1 -0
  62. package/dist/src/operations/cstCodemod.d.ts +34 -0
  63. package/dist/src/operations/cstCodemod.js +205 -0
  64. package/dist/src/operations/cstCodemod.js.map +1 -0
  65. package/dist/src/operations/deadSymbols.d.ts +32 -0
  66. package/dist/src/operations/deadSymbols.js +178 -0
  67. package/dist/src/operations/deadSymbols.js.map +1 -0
  68. package/dist/src/operations/envContract.d.ts +35 -0
  69. package/dist/src/operations/envContract.js +194 -0
  70. package/dist/src/operations/envContract.js.map +1 -0
  71. package/dist/src/operations/errorAudit.d.ts +36 -0
  72. package/dist/src/operations/errorAudit.js +201 -0
  73. package/dist/src/operations/errorAudit.js.map +1 -0
  74. package/dist/src/operations/importIntegrity.d.ts +48 -0
  75. package/dist/src/operations/importIntegrity.js +395 -0
  76. package/dist/src/operations/importIntegrity.js.map +1 -0
  77. package/dist/src/operations/incrementalDiff.d.ts +47 -0
  78. package/dist/src/operations/incrementalDiff.js +216 -0
  79. package/dist/src/operations/incrementalDiff.js.map +1 -0
  80. package/dist/src/operations/lexicalScope.d.ts +51 -0
  81. package/dist/src/operations/lexicalScope.js +212 -0
  82. package/dist/src/operations/lexicalScope.js.map +1 -0
  83. package/dist/src/operations/read.d.ts +21 -0
  84. package/dist/src/operations/read.js +21 -0
  85. package/dist/src/operations/read.js.map +1 -1
  86. package/dist/src/operations/readCore.js +37 -17
  87. package/dist/src/operations/readCore.js.map +1 -1
  88. package/dist/src/operations/rename.js +35 -24
  89. package/dist/src/operations/rename.js.map +1 -1
  90. package/dist/src/operations/sqlValidator.d.ts +36 -0
  91. package/dist/src/operations/sqlValidator.js +202 -0
  92. package/dist/src/operations/sqlValidator.js.map +1 -0
  93. package/dist/src/operations/symbolQuery.js +112 -23
  94. package/dist/src/operations/symbolQuery.js.map +1 -1
  95. package/dist/src/operations/taintAnalysis.d.ts +46 -0
  96. package/dist/src/operations/taintAnalysis.js +220 -0
  97. package/dist/src/operations/taintAnalysis.js.map +1 -0
  98. package/dist/src/operations/testImpact.d.ts +31 -0
  99. package/dist/src/operations/testImpact.js +179 -0
  100. package/dist/src/operations/testImpact.js.map +1 -0
  101. package/dist/src/operations/typeInference.d.ts +54 -0
  102. package/dist/src/operations/typeInference.js +565 -0
  103. package/dist/src/operations/typeInference.js.map +1 -0
  104. package/dist/src/operations/wireContract.d.ts +34 -0
  105. package/dist/src/operations/wireContract.js +185 -0
  106. package/dist/src/operations/wireContract.js.map +1 -0
  107. package/dist/src/operations/write.d.ts +2 -2
  108. package/dist/src/operations/write.js +151 -82
  109. package/dist/src/operations/write.js.map +1 -1
  110. package/dist/src/parsers/base.d.ts +9 -1
  111. package/dist/src/parsers/base.js +61 -1
  112. package/dist/src/parsers/base.js.map +1 -1
  113. package/dist/src/parsers/csharp.d.ts +1 -1
  114. package/dist/src/parsers/csharp.js +1 -1
  115. package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
  116. package/dist/src/parsers/dartTreeSitter.js +1 -1
  117. package/dist/src/parsers/go.d.ts +1 -1
  118. package/dist/src/parsers/go.js +1 -1
  119. package/dist/src/parsers/java.d.ts +1 -1
  120. package/dist/src/parsers/java.js +1 -1
  121. package/dist/src/parsers/kotlin.d.ts +1 -1
  122. package/dist/src/parsers/kotlin.js +1 -1
  123. package/dist/src/parsers/php.d.ts +1 -1
  124. package/dist/src/parsers/php.js +1 -1
  125. package/dist/src/parsers/python.d.ts +1 -1
  126. package/dist/src/parsers/python.js +1 -1
  127. package/dist/src/parsers/registry.d.ts +1 -1
  128. package/dist/src/parsers/registry.js +1 -1
  129. package/dist/src/parsers/ruby.d.ts +1 -1
  130. package/dist/src/parsers/ruby.js +1 -1
  131. package/dist/src/parsers/rust.d.ts +1 -1
  132. package/dist/src/parsers/rust.js +1 -1
  133. package/dist/src/parsers/typescript.d.ts +1 -1
  134. package/dist/src/parsers/typescript.js +1 -1
  135. package/dist/src/tools/context.d.ts +4 -0
  136. package/dist/src/tools/context.js +14 -0
  137. package/dist/src/tools/context.js.map +1 -1
  138. package/dist/src/tools/pipeline.js +26 -0
  139. package/dist/src/tools/pipeline.js.map +1 -1
  140. package/dist/src/tools/readHandlers.d.ts +150 -0
  141. package/dist/src/tools/readHandlers.js +622 -17
  142. package/dist/src/tools/readHandlers.js.map +1 -1
  143. package/dist/src/tools/toolDefinitions.d.ts +2184 -0
  144. package/dist/src/tools/toolDefinitionsCore.d.ts +2184 -0
  145. package/dist/src/tools/toolDefinitionsCore.js +381 -1
  146. package/dist/src/tools/toolDefinitionsCore.js.map +1 -1
  147. package/dist/src/tools/writeHandlers.js +3 -1
  148. package/dist/src/tools/writeHandlers.js.map +1 -1
  149. package/dist/src/utils/appDir.d.ts +1 -1
  150. package/dist/src/utils/appDir.js +1 -1
  151. package/dist/src/utils/auditLogger.d.ts +1 -1
  152. package/dist/src/utils/auditLogger.js +1 -1
  153. package/dist/src/utils/backupManager.d.ts +1 -1
  154. package/dist/src/utils/backupManager.js +1 -1
  155. package/dist/src/utils/conceptEngine.d.ts +56 -0
  156. package/dist/src/utils/conceptEngine.js +234 -0
  157. package/dist/src/utils/conceptEngine.js.map +1 -0
  158. package/dist/src/utils/constants.d.ts +1 -1
  159. package/dist/src/utils/constants.js +2 -1
  160. package/dist/src/utils/constants.js.map +1 -1
  161. package/dist/src/utils/diff.d.ts +1 -1
  162. package/dist/src/utils/diff.js +1 -1
  163. package/dist/src/utils/fileLock.d.ts +1 -1
  164. package/dist/src/utils/fileLock.js +1 -1
  165. package/dist/src/utils/fileWalker.d.ts +1 -1
  166. package/dist/src/utils/fileWalker.js +1 -1
  167. package/dist/src/utils/fileWatcher.d.ts +1 -1
  168. package/dist/src/utils/fileWatcher.js +1 -1
  169. package/dist/src/utils/fuzzySearch.d.ts +1 -1
  170. package/dist/src/utils/fuzzySearch.js +1 -1
  171. package/dist/src/utils/gemfileParser.d.ts +1 -1
  172. package/dist/src/utils/gemfileParser.js +1 -1
  173. package/dist/src/utils/logger.d.ts +1 -1
  174. package/dist/src/utils/logger.js +1 -1
  175. package/dist/src/utils/metaprogramming.d.ts +1 -1
  176. package/dist/src/utils/metaprogramming.js +1 -1
  177. package/dist/src/utils/railsRoutes.d.ts +1 -1
  178. package/dist/src/utils/railsRoutes.js +1 -1
  179. package/dist/src/utils/rateLimiter.d.ts +26 -1
  180. package/dist/src/utils/rateLimiter.js +26 -1
  181. package/dist/src/utils/rateLimiter.js.map +1 -1
  182. package/dist/src/utils/streaming.d.ts +1 -1
  183. package/dist/src/utils/streaming.js +1 -1
  184. package/dist/src/utils/telemetry.d.ts +1 -1
  185. package/dist/src/utils/telemetry.js +1 -1
  186. package/dist/src/utils/virtualSchema.d.ts +31 -0
  187. package/dist/src/utils/virtualSchema.js +367 -0
  188. package/dist/src/utils/virtualSchema.js.map +1 -0
  189. package/llms.txt +13 -3
  190. package/package.json +4 -2
  191. package/skills/code-context-logo.png +0 -0
  192. package/skills/code-context-pro/SKILL.md +149 -0
  193. package/skills/code-context-pro/references/benchmarks.md +25 -0
  194. package/skills/code-context-pro/references/decision-tree.md +32 -0
  195. package/skills/code-context-pro/references/multi-ide-setup.md +104 -0
  196. package/skills/code-context-pro.zip +0 -0
  197. package/HIRE_ME.md +0 -234
  198. package/SPONSORS.md +0 -104
@@ -0,0 +1,348 @@
1
+ /**
2
+ * Lossless AST Snapshot Context Compactor (v4.7.0)
3
+ *
4
+ * Compresses source files into pure AST contract outlines (interfaces, type definitions,
5
+ * class structures, field types, and method signatures) while dropping implementation bodies.
6
+ * Preserves 100% of structural and type fidelity for AI LLMs while saving 80% to 90% of tokens.
7
+ */
8
+ import * as fs from "node:fs/promises";
9
+ import * as path from "node:path";
10
+ import { existsSync } from "node:fs";
11
+ import { ParserRegistry } from "../parsers/registry.js";
12
+ import { CodeContextEngine } from "../core/engine.js";
13
+ /**
14
+ * Estimates token count from string length (~4 characters per token)
15
+ */
16
+ function estimateTokens(text) {
17
+ return Math.ceil(text.length / 4);
18
+ }
19
+ /**
20
+ * Compacts a TypeScript/JavaScript AST node into signatures
21
+ */
22
+ function compactTypeScriptNode(node, dropPrivate, includeDocstrings) {
23
+ const lines = [];
24
+ for (let i = 0; i < node.namedChildCount; i++) {
25
+ const child = node.namedChild(i);
26
+ if (!child)
27
+ continue;
28
+ // Comments / JSDoc
29
+ if (child.type === "comment") {
30
+ if (includeDocstrings && (child.text.startsWith("/**") || child.text.startsWith("/*"))) {
31
+ lines.push(child.text);
32
+ }
33
+ continue;
34
+ }
35
+ // Exported or plain interface / type alias / enum
36
+ if (child.type === "interface_declaration" ||
37
+ child.type === "type_alias_declaration" ||
38
+ child.type === "enum_declaration") {
39
+ lines.push(child.text);
40
+ lines.push("");
41
+ continue;
42
+ }
43
+ // Export statement wrapping an interface, type, class, or function
44
+ if (child.type === "export_statement") {
45
+ const decl = child.childForFieldName("declaration");
46
+ if (decl) {
47
+ if (decl.type === "interface_declaration" ||
48
+ decl.type === "type_alias_declaration" ||
49
+ decl.type === "enum_declaration") {
50
+ lines.push(child.text);
51
+ lines.push("");
52
+ continue;
53
+ }
54
+ else if (decl.type === "class_declaration") {
55
+ lines.push(...compactClassDeclaration(decl, "export ", dropPrivate));
56
+ lines.push("");
57
+ continue;
58
+ }
59
+ else if (decl.type === "function_declaration") {
60
+ const fnSig = compactFunctionSignature(decl, "export ");
61
+ if (fnSig) {
62
+ lines.push(fnSig);
63
+ lines.push("");
64
+ }
65
+ continue;
66
+ }
67
+ }
68
+ else {
69
+ // export { a, b }
70
+ lines.push(child.text);
71
+ continue;
72
+ }
73
+ }
74
+ // Standalone class declaration
75
+ if (child.type === "class_declaration") {
76
+ lines.push(...compactClassDeclaration(child, "", dropPrivate));
77
+ lines.push("");
78
+ continue;
79
+ }
80
+ // Standalone function declaration
81
+ if (child.type === "function_declaration") {
82
+ const fnSig = compactFunctionSignature(child, "");
83
+ if (fnSig) {
84
+ lines.push(fnSig);
85
+ lines.push("");
86
+ }
87
+ continue;
88
+ }
89
+ // Top-level const / variable export
90
+ if (child.type === "lexical_declaration" || child.type === "variable_declaration") {
91
+ for (let j = 0; j < child.namedChildCount; j++) {
92
+ const vd = child.namedChild(j);
93
+ if (vd && vd.type === "variable_declarator") {
94
+ const name = vd.childForFieldName("name")?.text || "";
95
+ const typeAnn = vd.childForFieldName("type")?.text || "";
96
+ lines.push(`const ${name}${typeAnn ? `: ${typeAnn}` : ""};`);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ return lines;
102
+ }
103
+ /**
104
+ * Compacts TypeScript class declaration into signatures
105
+ */
106
+ function compactClassDeclaration(classNode, prefix, dropPrivate) {
107
+ const result = [];
108
+ const className = classNode.childForFieldName("name")?.text || "AnonymousClass";
109
+ const body = classNode.childForFieldName("body");
110
+ // Heritage: extends / implements
111
+ let heritage = "";
112
+ for (let i = 0; i < classNode.childCount; i++) {
113
+ const c = classNode.child(i);
114
+ if (c && (c.type === "class_heritage" || c.type === "heritage_clause")) {
115
+ heritage += ` ${c.text}`;
116
+ }
117
+ }
118
+ result.push(`${prefix}class ${className}${heritage} {`);
119
+ if (body) {
120
+ for (let i = 0; i < body.namedChildCount; i++) {
121
+ const member = body.namedChild(i);
122
+ if (!member)
123
+ continue;
124
+ const isPrivate = member.text.startsWith("private ") || member.text.startsWith("#");
125
+ if (dropPrivate && isPrivate)
126
+ continue;
127
+ if (member.type === "field_definition" || member.type === "public_field_definition") {
128
+ const fieldName = member.childForFieldName("property")?.text || member.text.split("=")[0].trim();
129
+ const typeNode = member.childForFieldName("type");
130
+ const typeStr = typeNode ? `: ${typeNode.text}` : "";
131
+ result.push(` ${fieldName}${typeStr};`);
132
+ }
133
+ else if (member.type === "method_definition") {
134
+ const methodBody = member.childForFieldName("body");
135
+ if (methodBody) {
136
+ const sig = member.text.slice(0, methodBody.startIndex - member.startIndex).trim();
137
+ result.push(` ${sig} { /* ... */ }`);
138
+ }
139
+ else {
140
+ result.push(` ${member.text.trim()};`);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ result.push("}");
146
+ return result;
147
+ }
148
+ /**
149
+ * Extracts signature of a function declaration, replacing body with stub
150
+ */
151
+ function compactFunctionSignature(fnNode, prefix) {
152
+ const body = fnNode.childForFieldName("body");
153
+ if (body) {
154
+ const sig = fnNode.text.slice(0, body.startIndex - fnNode.startIndex).trim();
155
+ return `${prefix}${sig} { /* ... */ }`;
156
+ }
157
+ return `${prefix}${fnNode.text.trim()};`;
158
+ }
159
+ /**
160
+ * Compacts a Python AST module into signatures
161
+ */
162
+ function compactPythonNode(node, dropPrivate, includeDocstrings) {
163
+ const lines = [];
164
+ for (let i = 0; i < node.namedChildCount; i++) {
165
+ const child = node.namedChild(i);
166
+ if (!child)
167
+ continue;
168
+ // Docstrings
169
+ if (child.type === "expression_statement") {
170
+ const expr = child.namedChild(0);
171
+ if (expr && expr.type === "string" && includeDocstrings) {
172
+ lines.push(child.text);
173
+ }
174
+ continue;
175
+ }
176
+ // Imports
177
+ if (child.type === "import_statement" || child.type === "import_from_statement") {
178
+ lines.push(child.text);
179
+ continue;
180
+ }
181
+ // Class definition
182
+ if (child.type === "class_definition") {
183
+ const className = child.childForFieldName("name")?.text || "Anonymous";
184
+ const superClasses = child.childForFieldName("superclasses")?.text || "";
185
+ const classHeader = `class ${className}${superClasses ? `(${superClasses})` : ""}:`;
186
+ lines.push(classHeader);
187
+ const body = child.childForFieldName("body");
188
+ if (body) {
189
+ let hasMembers = false;
190
+ for (let j = 0; j < body.namedChildCount; j++) {
191
+ const m = body.namedChild(j);
192
+ if (!m)
193
+ continue;
194
+ if (m.type === "function_definition") {
195
+ const mName = m.childForFieldName("name")?.text || "";
196
+ if (dropPrivate && mName.startsWith("_") && !mName.startsWith("__init__"))
197
+ continue;
198
+ const mBody = m.childForFieldName("body");
199
+ if (mBody) {
200
+ const sig = m.text.slice(0, mBody.startIndex - m.startIndex).trim();
201
+ lines.push(` ${sig}`);
202
+ lines.push(" ...");
203
+ hasMembers = true;
204
+ }
205
+ }
206
+ else if (m.type === "expression_statement") {
207
+ // Type annotated field e.g. id: int
208
+ if (m.text.includes(":")) {
209
+ lines.push(` ${m.text}`);
210
+ hasMembers = true;
211
+ }
212
+ }
213
+ }
214
+ if (!hasMembers) {
215
+ lines.push(" pass");
216
+ }
217
+ }
218
+ else {
219
+ lines.push(" pass");
220
+ }
221
+ lines.push("");
222
+ continue;
223
+ }
224
+ // Function definition
225
+ if (child.type === "function_definition") {
226
+ const fnName = child.childForFieldName("name")?.text || "";
227
+ if (dropPrivate && fnName.startsWith("_"))
228
+ continue;
229
+ const body = child.childForFieldName("body");
230
+ if (body) {
231
+ const sig = child.text.slice(0, body.startIndex - child.startIndex).trim();
232
+ lines.push(sig);
233
+ lines.push(" ...");
234
+ lines.push("");
235
+ }
236
+ continue;
237
+ }
238
+ }
239
+ return lines;
240
+ }
241
+ /**
242
+ * Main compactContextLedger operation
243
+ */
244
+ export async function compactContextLedger(params) {
245
+ try {
246
+ const rawPaths = Array.isArray(params.filePaths)
247
+ ? params.filePaths
248
+ : params.filePaths.split(",").map(p => p.trim()).filter(Boolean);
249
+ if (rawPaths.length === 0) {
250
+ return {
251
+ success: false,
252
+ error: "filePaths is required for compact_context_ledger",
253
+ };
254
+ }
255
+ const dropPrivate = params.dropPrivate ?? false;
256
+ const includeDocstrings = params.includeDocstrings ?? true;
257
+ // Initialize Parser Registry
258
+ let registry = params.registry;
259
+ if (!registry) {
260
+ const engine = new CodeContextEngine();
261
+ await engine.init();
262
+ registry = new ParserRegistry(engine);
263
+ await registry.init();
264
+ }
265
+ const compactedEntries = [];
266
+ let totalOriginalTokens = 0;
267
+ let totalCompactedTokens = 0;
268
+ const ledgerSections = [];
269
+ for (const rawPath of rawPaths) {
270
+ const absPath = path.isAbsolute(rawPath) ? rawPath : path.resolve(params.projectRoot, rawPath);
271
+ let content = params.content;
272
+ if (!content) {
273
+ if (!existsSync(absPath)) {
274
+ continue; // Skip non-existent files gracefully
275
+ }
276
+ content = await fs.readFile(absPath, "utf-8");
277
+ }
278
+ const ext = path.extname(absPath).toLowerCase();
279
+ const parser = registry.getParser(ext === ".py" ? ".py" : ".ts");
280
+ if (!parser)
281
+ continue;
282
+ let tree = null;
283
+ try {
284
+ tree = parser.parse(content);
285
+ const rootNode = tree.rootNode;
286
+ let outlineLines = [];
287
+ if (ext === ".py") {
288
+ outlineLines = compactPythonNode(rootNode, dropPrivate, includeDocstrings);
289
+ }
290
+ else {
291
+ outlineLines = compactTypeScriptNode(rootNode, dropPrivate, includeDocstrings);
292
+ }
293
+ const astOutline = outlineLines.join("\n").trim();
294
+ const origChars = content.length;
295
+ const compChars = astOutline.length;
296
+ const origTokens = estimateTokens(content);
297
+ const compTokens = estimateTokens(astOutline);
298
+ const savingsPct = origTokens > 0
299
+ ? Number((((origTokens - compTokens) / origTokens) * 100).toFixed(1))
300
+ : 0;
301
+ totalOriginalTokens += origTokens;
302
+ totalCompactedTokens += compTokens;
303
+ const relPath = path.relative(params.projectRoot, absPath).replace(/\\/g, "/");
304
+ compactedEntries.push({
305
+ filePath: relPath,
306
+ language: ext === ".py" ? "python" : "typescript",
307
+ originalChars: origChars,
308
+ compactedChars: compChars,
309
+ originalTokensEst: origTokens,
310
+ compactedTokensEst: compTokens,
311
+ savingsPercentage: savingsPct,
312
+ astOutline,
313
+ });
314
+ const langFence = ext === ".py" ? "python" : "typescript";
315
+ ledgerSections.push(`### File: \`${relPath}\` (${savingsPct}% token reduction)\n\`\`\`${langFence}\n${astOutline}\n\`\`\``);
316
+ }
317
+ finally {
318
+ // SRE Guardrail: Strict WASM Linear Memory Disposal
319
+ try {
320
+ tree?.delete();
321
+ }
322
+ catch { }
323
+ }
324
+ }
325
+ const overallSavings = totalOriginalTokens > 0
326
+ ? Number((((totalOriginalTokens - totalCompactedTokens) / totalOriginalTokens) * 100).toFixed(1))
327
+ : 0;
328
+ const report = {
329
+ filesCount: compactedEntries.length,
330
+ totalOriginalTokensEst: totalOriginalTokens,
331
+ totalCompactedTokensEst: totalCompactedTokens,
332
+ overallSavingsPercentage: overallSavings,
333
+ files: compactedEntries,
334
+ combinedLedger: ledgerSections.join("\n\n"),
335
+ };
336
+ return {
337
+ success: true,
338
+ content: JSON.stringify(report, null, 2),
339
+ };
340
+ }
341
+ catch (error) {
342
+ return {
343
+ success: false,
344
+ error: `compact_context_ledger failed: ${error instanceof Error ? error.message : String(error)}`,
345
+ };
346
+ }
347
+ }
348
+ //# sourceMappingURL=contextCompactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCompactor.js","sourceRoot":"","sources":["../../../src/operations/contextCompactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Lossless CST Structural Codemod Engine
3
+ * v6.0.0 Enterprise AST Intelligence
4
+ */
5
+ import { ParserRegistry } from "../parsers/registry.js";
6
+ import type { ReadResult } from "./readCore.js";
7
+ export type CodemodRule = "cjs-to-esm" | "strip-console" | "named-to-arrow";
8
+ export interface CodemodChange {
9
+ rule: string;
10
+ startLine: number;
11
+ endLine: number;
12
+ originalSnippet: string;
13
+ transformedSnippet: string;
14
+ }
15
+ export interface CstCodemodReport {
16
+ filePath?: string;
17
+ ruleApplied: string;
18
+ changesApplied: number;
19
+ changes: CodemodChange[];
20
+ transformedCode: string;
21
+ summary: string;
22
+ }
23
+ export interface CstCodemodOptions {
24
+ filePath?: string;
25
+ code?: string;
26
+ content?: string;
27
+ rule: CodemodRule;
28
+ projectRoot?: string;
29
+ registry?: ParserRegistry;
30
+ }
31
+ /**
32
+ * Main CST Codemod Transpile Operation
33
+ */
34
+ export declare function astCodemodTranspile(params: CstCodemodOptions): Promise<ReadResult>;
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Lossless CST Structural Codemod Engine
3
+ * v6.0.0 Enterprise AST Intelligence
4
+ */
5
+ import * as fs from "node:fs/promises";
6
+ import * as path from "node:path";
7
+ import { existsSync } from "node:fs";
8
+ import { ParserRegistry } from "../parsers/registry.js";
9
+ import { CodeContextEngine } from "../core/engine.js";
10
+ /**
11
+ * Transforms CommonJS require statements into ESM import statements
12
+ */
13
+ function applyCjsToEsm(root, source) {
14
+ const changes = [];
15
+ const replacements = [];
16
+ function walk(n) {
17
+ // const x = require('x');
18
+ if (n.type === "lexical_declaration" ||
19
+ n.type === "variable_declaration") {
20
+ for (let i = 0; i < n.namedChildCount; i++) {
21
+ const decl = n.namedChild(i);
22
+ if (decl && decl.type === "variable_declarator") {
23
+ const init = decl.childForFieldName("value");
24
+ if (init &&
25
+ init.type === "call_expression" &&
26
+ init.childForFieldName("function")?.text === "require") {
27
+ const varName = decl.childForFieldName("name")?.text;
28
+ const args = init.childForFieldName("arguments");
29
+ const modPath = args?.namedChild(0)?.text;
30
+ if (varName && modPath) {
31
+ const esm = `import ${varName} from ${modPath};`;
32
+ replacements.push({
33
+ start: n.startIndex,
34
+ end: n.endIndex,
35
+ text: esm,
36
+ });
37
+ changes.push({
38
+ rule: "cjs-to-esm",
39
+ startLine: n.startPosition.row + 1,
40
+ endLine: n.endPosition.row + 1,
41
+ originalSnippet: n.text,
42
+ transformedSnippet: esm,
43
+ });
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ // module.exports = x;
50
+ if (n.type === "expression_statement") {
51
+ const expr = n.namedChild(0);
52
+ if (expr && expr.type === "assignment_expression") {
53
+ const left = expr.childForFieldName("left")?.text;
54
+ const right = expr.childForFieldName("right")?.text;
55
+ if (left === "module.exports" && right) {
56
+ const esm = `export default ${right};`;
57
+ replacements.push({
58
+ start: n.startIndex,
59
+ end: n.endIndex,
60
+ text: esm,
61
+ });
62
+ changes.push({
63
+ rule: "cjs-to-esm",
64
+ startLine: n.startPosition.row + 1,
65
+ endLine: n.endPosition.row + 1,
66
+ originalSnippet: n.text,
67
+ transformedSnippet: esm,
68
+ });
69
+ }
70
+ }
71
+ }
72
+ for (let i = 0; i < n.namedChildCount; i++) {
73
+ const child = n.namedChild(i);
74
+ if (child)
75
+ walk(child);
76
+ }
77
+ }
78
+ walk(root);
79
+ // Apply replacements from end to start to maintain indices
80
+ replacements.sort((a, b) => b.start - a.start);
81
+ let transformed = source;
82
+ for (const r of replacements) {
83
+ transformed = transformed.slice(0, r.start) + r.text + transformed.slice(r.end);
84
+ }
85
+ return { transformed, changes };
86
+ }
87
+ /**
88
+ * Strips console.log calls
89
+ */
90
+ function applyStripConsole(root, source) {
91
+ const changes = [];
92
+ const replacements = [];
93
+ function walk(n) {
94
+ if (n.type === "expression_statement") {
95
+ const expr = n.namedChild(0);
96
+ if (expr &&
97
+ expr.type === "call_expression" &&
98
+ expr.childForFieldName("function")?.text?.startsWith("console.")) {
99
+ replacements.push({
100
+ start: n.startIndex,
101
+ end: n.endIndex,
102
+ text: "",
103
+ });
104
+ changes.push({
105
+ rule: "strip-console",
106
+ startLine: n.startPosition.row + 1,
107
+ endLine: n.endPosition.row + 1,
108
+ originalSnippet: n.text,
109
+ transformedSnippet: "/* removed */",
110
+ });
111
+ }
112
+ }
113
+ for (let i = 0; i < n.namedChildCount; i++) {
114
+ const child = n.namedChild(i);
115
+ if (child)
116
+ walk(child);
117
+ }
118
+ }
119
+ walk(root);
120
+ replacements.sort((a, b) => b.start - a.start);
121
+ let transformed = source;
122
+ for (const r of replacements) {
123
+ transformed = transformed.slice(0, r.start) + r.text + transformed.slice(r.end);
124
+ }
125
+ return { transformed, changes };
126
+ }
127
+ /**
128
+ * Main CST Codemod Transpile Operation
129
+ */
130
+ export async function astCodemodTranspile(params) {
131
+ let tree = null;
132
+ try {
133
+ const targetPath = params.filePath || "in_memory.ts";
134
+ let content = params.code ?? params.content;
135
+ if (content === undefined) {
136
+ if (params.filePath && existsSync(params.filePath)) {
137
+ content = await fs.readFile(params.filePath, "utf-8");
138
+ }
139
+ else {
140
+ return {
141
+ success: false,
142
+ error: `File does not exist: ${params.filePath || "none"}`,
143
+ };
144
+ }
145
+ }
146
+ const ext = path.extname(targetPath).toLowerCase();
147
+ let registry = params.registry;
148
+ if (!registry) {
149
+ const engine = new CodeContextEngine();
150
+ await engine.init();
151
+ registry = new ParserRegistry(engine);
152
+ await registry.init();
153
+ }
154
+ const parser = registry.getParser(ext === ".py" ? ".py" : ".ts");
155
+ if (!parser) {
156
+ return {
157
+ success: false,
158
+ error: `No parser available for extension: ${ext}`,
159
+ };
160
+ }
161
+ tree = parser.parse(content);
162
+ let result = { transformed: content, changes: [] };
163
+ if (params.rule === "cjs-to-esm") {
164
+ result = applyCjsToEsm(tree.rootNode, content);
165
+ }
166
+ else if (params.rule === "strip-console") {
167
+ result = applyStripConsole(tree.rootNode, content);
168
+ }
169
+ else {
170
+ return {
171
+ success: false,
172
+ error: `Unsupported codemod rule: '${params.rule}'. Supported: 'cjs-to-esm', 'strip-console'.`,
173
+ };
174
+ }
175
+ const report = {
176
+ filePath: params.filePath,
177
+ ruleApplied: params.rule,
178
+ changesApplied: result.changes.length,
179
+ changes: result.changes,
180
+ transformedCode: result.transformed,
181
+ summary: `Successfully applied codemod '${params.rule}'. Performed ${result.changes.length} lossless CST transformations.`,
182
+ };
183
+ return {
184
+ success: true,
185
+ content: JSON.stringify(report, null, 2),
186
+ };
187
+ }
188
+ catch (error) {
189
+ return {
190
+ success: false,
191
+ error: `ast_codemod_transpile failed: ${error instanceof Error ? error.message : String(error)}`,
192
+ };
193
+ }
194
+ finally {
195
+ if (tree) {
196
+ try {
197
+ tree.delete();
198
+ }
199
+ catch {
200
+ // ignore
201
+ }
202
+ }
203
+ }
204
+ }
205
+ //# sourceMappingURL=cstCodemod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cstCodemod.js","sourceRoot":"","sources":["../../../src/operations/cstCodemod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * AST Reachability & Zombie Export Eliminator
3
+ * v5.7.0 Enterprise AST Intelligence
4
+ */
5
+ import { ParserRegistry } from "../parsers/registry.js";
6
+ import type { ReadResult } from "./readCore.js";
7
+ export interface DeadSymbolItem {
8
+ name: string;
9
+ kind: "function" | "class" | "interface" | "variable" | "export";
10
+ line: number;
11
+ column: number;
12
+ reason: "UNUSED_EXPORT" | "UNUSED_INTERNAL" | "UNREACHABLE_AFTER_RETURN";
13
+ snippet: string;
14
+ }
15
+ export interface DeadSymbolsReport {
16
+ filePath?: string;
17
+ totalSymbolsScanned: number;
18
+ deadSymbolsCount: number;
19
+ deadSymbols: DeadSymbolItem[];
20
+ summary: string;
21
+ }
22
+ export interface DeadSymbolsOptions {
23
+ filePath?: string;
24
+ code?: string;
25
+ content?: string;
26
+ projectRoot?: string;
27
+ registry?: ParserRegistry;
28
+ }
29
+ /**
30
+ * Extracts declared symbols and counts their identifier references
31
+ */
32
+ export declare function detectDeadAstSymbols(params: DeadSymbolsOptions): Promise<ReadResult>;