mcp-code-context 2.6.0 → 3.0.6

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 (128) hide show
  1. package/CHANGELOG.md +92 -260
  2. package/README.md +304 -298
  3. package/dist/src/core/engine.d.ts +21 -0
  4. package/dist/src/core/engine.js +68 -0
  5. package/dist/src/core/engine.js.map +1 -0
  6. package/dist/src/core/validator.d.ts +15 -0
  7. package/dist/src/core/validator.js +44 -0
  8. package/dist/src/core/validator.js.map +1 -0
  9. package/dist/src/index.d.ts +7 -11
  10. package/dist/src/index.js +182 -397
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/operations/write.d.ts +51 -0
  13. package/dist/src/operations/write.js +169 -0
  14. package/dist/src/operations/write.js.map +1 -0
  15. package/dist/src/parsers/base.d.ts +28 -0
  16. package/dist/src/parsers/base.js +27 -0
  17. package/dist/src/parsers/base.js.map +1 -0
  18. package/dist/src/parsers/dartTreeSitter.d.ts +13 -0
  19. package/dist/src/parsers/dartTreeSitter.js +91 -0
  20. package/dist/src/parsers/dartTreeSitter.js.map +1 -0
  21. package/dist/src/parsers/php.d.ts +12 -0
  22. package/dist/src/parsers/php.js +86 -0
  23. package/dist/src/parsers/php.js.map +1 -0
  24. package/dist/src/parsers/python.d.ts +12 -0
  25. package/dist/src/parsers/python.js +86 -0
  26. package/dist/src/parsers/python.js.map +1 -0
  27. package/dist/src/parsers/registry.d.ts +15 -0
  28. package/dist/src/parsers/registry.js +70 -0
  29. package/dist/src/parsers/registry.js.map +1 -0
  30. package/dist/src/parsers/typescript.d.ts +13 -0
  31. package/dist/src/parsers/typescript.js +98 -0
  32. package/dist/src/parsers/typescript.js.map +1 -0
  33. package/llms.txt +246 -236
  34. package/mcp-code-context-3.0.2.tgz +0 -0
  35. package/package.json +59 -57
  36. package/tsconfig.tests.json +27 -0
  37. package/.io/RULES.md +0 -12
  38. package/CONTRIBUTING.md +0 -243
  39. package/TROUBLESHOOTING.md +0 -38
  40. package/dist/src/ast/dartCompressor.d.ts +0 -27
  41. package/dist/src/ast/dartCompressor.js +0 -859
  42. package/dist/src/ast/dartCompressor.js.map +0 -1
  43. package/dist/src/ast/phpCompressor.d.ts +0 -24
  44. package/dist/src/ast/phpCompressor.js +0 -634
  45. package/dist/src/ast/phpCompressor.js.map +0 -1
  46. package/dist/src/ast/semanticCompressor.d.ts +0 -22
  47. package/dist/src/ast/semanticCompressor.js +0 -677
  48. package/dist/src/ast/semanticCompressor.js.map +0 -1
  49. package/dist/src/ast/writers/dartWriter.d.ts +0 -37
  50. package/dist/src/ast/writers/dartWriter.js +0 -544
  51. package/dist/src/ast/writers/dartWriter.js.map +0 -1
  52. package/dist/src/ast/writers/phpWriter.d.ts +0 -37
  53. package/dist/src/ast/writers/phpWriter.js +0 -411
  54. package/dist/src/ast/writers/phpWriter.js.map +0 -1
  55. package/dist/src/ast/writers/pyWriter.d.ts +0 -37
  56. package/dist/src/ast/writers/pyWriter.js +0 -355
  57. package/dist/src/ast/writers/pyWriter.js.map +0 -1
  58. package/dist/src/ast/writers/safeRename.d.ts +0 -14
  59. package/dist/src/ast/writers/safeRename.js +0 -258
  60. package/dist/src/ast/writers/safeRename.js.map +0 -1
  61. package/dist/src/ast/writers/symbolWriter.d.ts +0 -64
  62. package/dist/src/ast/writers/symbolWriter.js +0 -174
  63. package/dist/src/ast/writers/symbolWriter.js.map +0 -1
  64. package/dist/src/ast/writers/tsWriter.d.ts +0 -38
  65. package/dist/src/ast/writers/tsWriter.js +0 -344
  66. package/dist/src/ast/writers/tsWriter.js.map +0 -1
  67. package/dist/src/cache/astCache.d.ts +0 -39
  68. package/dist/src/cache/astCache.js +0 -169
  69. package/dist/src/cache/astCache.js.map +0 -1
  70. package/dist/src/handlers/readHandlers.d.ts +0 -70
  71. package/dist/src/handlers/readHandlers.js +0 -455
  72. package/dist/src/handlers/readHandlers.js.map +0 -1
  73. package/dist/src/handlers/utilHandlers.d.ts +0 -31
  74. package/dist/src/handlers/utilHandlers.js +0 -69
  75. package/dist/src/handlers/utilHandlers.js.map +0 -1
  76. package/dist/src/handlers/writeHandlers.d.ts +0 -57
  77. package/dist/src/handlers/writeHandlers.js +0 -499
  78. package/dist/src/handlers/writeHandlers.js.map +0 -1
  79. package/dist/src/tools/readFileLines.d.ts +0 -26
  80. package/dist/src/tools/readFileLines.js +0 -77
  81. package/dist/src/tools/readFileLines.js.map +0 -1
  82. package/dist/src/tools/searchCodePattern.d.ts +0 -37
  83. package/dist/src/tools/searchCodePattern.js +0 -144
  84. package/dist/src/tools/searchCodePattern.js.map +0 -1
  85. package/dist/src/utils/arrayUtils.d.ts +0 -12
  86. package/dist/src/utils/arrayUtils.js +0 -27
  87. package/dist/src/utils/arrayUtils.js.map +0 -1
  88. package/dist/src/utils/backupManager.d.ts +0 -31
  89. package/dist/src/utils/backupManager.js +0 -124
  90. package/dist/src/utils/backupManager.js.map +0 -1
  91. package/dist/src/utils/confirmationCache.d.ts +0 -16
  92. package/dist/src/utils/confirmationCache.js +0 -40
  93. package/dist/src/utils/confirmationCache.js.map +0 -1
  94. package/dist/src/utils/constants.d.ts +0 -46
  95. package/dist/src/utils/constants.js +0 -112
  96. package/dist/src/utils/constants.js.map +0 -1
  97. package/dist/src/utils/dependencyChecker.d.ts +0 -1
  98. package/dist/src/utils/dependencyChecker.js +0 -55
  99. package/dist/src/utils/dependencyChecker.js.map +0 -1
  100. package/dist/src/utils/diffEngine.d.ts +0 -21
  101. package/dist/src/utils/diffEngine.js +0 -163
  102. package/dist/src/utils/diffEngine.js.map +0 -1
  103. package/dist/src/utils/fuzzyMatch.d.ts +0 -8
  104. package/dist/src/utils/fuzzyMatch.js +0 -70
  105. package/dist/src/utils/fuzzyMatch.js.map +0 -1
  106. package/dist/src/utils/ignoreManager.d.ts +0 -29
  107. package/dist/src/utils/ignoreManager.js +0 -144
  108. package/dist/src/utils/ignoreManager.js.map +0 -1
  109. package/dist/src/utils/normalization.d.ts +0 -49
  110. package/dist/src/utils/normalization.js +0 -173
  111. package/dist/src/utils/normalization.js.map +0 -1
  112. package/dist/src/utils/projectRoot.d.ts +0 -17
  113. package/dist/src/utils/projectRoot.js +0 -42
  114. package/dist/src/utils/projectRoot.js.map +0 -1
  115. package/dist/src/utils/secureValidation.d.ts +0 -15
  116. package/dist/src/utils/secureValidation.js +0 -41
  117. package/dist/src/utils/secureValidation.js.map +0 -1
  118. package/dist/src/utils/syntaxValidator.d.ts +0 -15
  119. package/dist/src/utils/syntaxValidator.js +0 -218
  120. package/dist/src/utils/syntaxValidator.js.map +0 -1
  121. package/dist/src/utils/transactionManager.d.ts +0 -46
  122. package/dist/src/utils/transactionManager.js +0 -123
  123. package/dist/src/utils/transactionManager.js.map +0 -1
  124. package/dist/src/utils/validation.d.ts +0 -87
  125. package/dist/src/utils/validation.js +0 -231
  126. package/dist/src/utils/validation.js.map +0 -1
  127. package/docs/ARCHITECTURE.md +0 -300
  128. package/docs/architecture/ADR-001-modular-handlers.md +0 -119
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Python Parser - v3.0.0
3
+ */
4
+ import { BaseParser } from "./base.js";
5
+ export class PythonParser extends BaseParser {
6
+ constructor() {
7
+ super("python");
8
+ }
9
+ extractSymbol(tree, symbolName, className) {
10
+ const cursor = tree.walk();
11
+ const search = () => {
12
+ const node = cursor.currentNode;
13
+ if (node.type === "function_definition" || node.type === "class_definition") {
14
+ const nameNode = node.childForFieldName("name");
15
+ if (nameNode && nameNode.text === symbolName) {
16
+ if (className) {
17
+ const classNode = this.findParentClass(node);
18
+ if (!classNode || classNode.childForFieldName("name")?.text !== className) {
19
+ }
20
+ else {
21
+ return tree.rootNode.text.substring(node.startIndex, node.endIndex);
22
+ }
23
+ }
24
+ else {
25
+ return tree.rootNode.text.substring(node.startIndex, node.endIndex);
26
+ }
27
+ }
28
+ }
29
+ if (cursor.gotoFirstChild()) {
30
+ do {
31
+ const result = search();
32
+ if (result)
33
+ return result;
34
+ } while (cursor.gotoNextSibling());
35
+ cursor.gotoParent();
36
+ }
37
+ return null;
38
+ };
39
+ return search();
40
+ }
41
+ replaceSymbol(content, tree, symbolName, newContent, className) {
42
+ const extracted = this.extractSymbol(tree, symbolName, className);
43
+ if (!extracted)
44
+ throw new Error(`Symbol "${symbolName}" not found`);
45
+ const index = content.indexOf(extracted);
46
+ if (index === -1)
47
+ throw new Error("Could not locate symbol in content");
48
+ return content.substring(0, index) + newContent + content.substring(index + extracted.length);
49
+ }
50
+ findSymbols(tree) {
51
+ const symbols = [];
52
+ const cursor = tree.walk();
53
+ const visit = () => {
54
+ const node = cursor.currentNode;
55
+ if (node.type === "function_definition" || node.type === "class_definition") {
56
+ const nameNode = node.childForFieldName("name");
57
+ if (nameNode) {
58
+ symbols.push({
59
+ name: nameNode.text,
60
+ type: node.type,
61
+ startIndex: node.startIndex,
62
+ endIndex: node.endIndex,
63
+ });
64
+ }
65
+ }
66
+ if (cursor.gotoFirstChild()) {
67
+ do {
68
+ visit();
69
+ } while (cursor.gotoNextSibling());
70
+ cursor.gotoParent();
71
+ }
72
+ };
73
+ visit();
74
+ return symbols;
75
+ }
76
+ findParentClass(node) {
77
+ let current = node.parent;
78
+ while (current) {
79
+ if (current.type === "class_definition")
80
+ return current;
81
+ current = current.parent;
82
+ }
83
+ return null;
84
+ }
85
+ }
86
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/parsers/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Parser Registry - v3.0.0
3
+ * Manages all language parsers
4
+ */
5
+ import { BaseParser } from "./base.js";
6
+ import { CodeContextEngine } from "../core/engine.js";
7
+ export declare class ParserRegistry {
8
+ private parsers;
9
+ private engine;
10
+ private extensionMap;
11
+ constructor(engine: CodeContextEngine);
12
+ init(): Promise<void>;
13
+ getParser(fileExtension: string): BaseParser | undefined;
14
+ getSupportedExtensions(): string[];
15
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Parser Registry - v3.0.0
3
+ * Manages all language parsers
4
+ */
5
+ import { TypeScriptParser } from "./typescript.js";
6
+ import { PythonParser } from "./python.js";
7
+ import { PHPParser } from "./php.js";
8
+ import { DartTreeSitterParser } from "./dartTreeSitter.js";
9
+ export class ParserRegistry {
10
+ parsers = new Map();
11
+ engine;
12
+ extensionMap = new Map([
13
+ [".ts", "typescript"],
14
+ [".tsx", "typescript"],
15
+ [".js", "typescript"],
16
+ [".jsx", "typescript"],
17
+ [".mts", "typescript"],
18
+ [".mjs", "typescript"],
19
+ [".py", "python"],
20
+ [".pyi", "python"],
21
+ [".php", "php"],
22
+ [".dart", "dart"],
23
+ ]);
24
+ constructor(engine) {
25
+ this.engine = engine;
26
+ }
27
+ async init() {
28
+ // Load TypeScript
29
+ await this.engine.loadLanguage("typescript");
30
+ const tsLang = this.engine.getLanguage("typescript");
31
+ if (!tsLang)
32
+ throw new Error("Failed to load TypeScript language");
33
+ const tsParser = new TypeScriptParser();
34
+ await tsParser.init(this.engine.createParser(), tsLang);
35
+ this.parsers.set("typescript", tsParser);
36
+ // Load Python
37
+ await this.engine.loadLanguage("python");
38
+ const pyLang = this.engine.getLanguage("python");
39
+ if (!pyLang)
40
+ throw new Error("Failed to load Python language");
41
+ const pyParser = new PythonParser();
42
+ await pyParser.init(this.engine.createParser(), pyLang);
43
+ this.parsers.set("python", pyParser);
44
+ // Load PHP
45
+ await this.engine.loadLanguage("php");
46
+ const phpLang = this.engine.getLanguage("php");
47
+ if (!phpLang)
48
+ throw new Error("Failed to load PHP language");
49
+ const phpParser = new PHPParser();
50
+ await phpParser.init(this.engine.createParser(), phpLang);
51
+ this.parsers.set("php", phpParser);
52
+ // Load Dart (Tree-sitter WASM)
53
+ await this.engine.loadLanguage("dart");
54
+ const dartLang = this.engine.getLanguage("dart");
55
+ if (!dartLang)
56
+ throw new Error("Failed to load Dart language");
57
+ const dartParser = new DartTreeSitterParser();
58
+ await dartParser.init(this.engine.createParser(), dartLang);
59
+ this.parsers.set("dart", dartParser);
60
+ console.log("✅ Parsers loaded: TS/Python/PHP/Dart (WASM)");
61
+ }
62
+ getParser(fileExtension) {
63
+ const language = this.extensionMap.get(fileExtension);
64
+ return language ? this.parsers.get(language) : undefined;
65
+ }
66
+ getSupportedExtensions() {
67
+ return Array.from(this.extensionMap.keys());
68
+ }
69
+ }
70
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/parsers/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TypeScript Parser - v3.0.0
3
+ * Tree-sitter based TS/JS parser
4
+ */
5
+ import { Tree } from "web-tree-sitter";
6
+ import { BaseParser, SymbolInfo } from "./base.js";
7
+ export declare class TypeScriptParser extends BaseParser {
8
+ constructor();
9
+ extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
10
+ replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
11
+ findSymbols(tree: Tree): SymbolInfo[];
12
+ private findParentClass;
13
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * TypeScript Parser - v3.0.0
3
+ * Tree-sitter based TS/JS parser
4
+ */
5
+ import { BaseParser } from "./base.js";
6
+ export class TypeScriptParser extends BaseParser {
7
+ constructor() {
8
+ super("typescript");
9
+ }
10
+ extractSymbol(tree, symbolName, className) {
11
+ const cursor = tree.walk();
12
+ const search = () => {
13
+ const node = cursor.currentNode;
14
+ if (node.type === "function_declaration" ||
15
+ node.type === "class_declaration" ||
16
+ node.type === "interface_declaration" ||
17
+ node.type === "type_alias_declaration" ||
18
+ node.type === "method_definition") {
19
+ const nameNode = node.childForFieldName("name");
20
+ if (nameNode && nameNode.text === symbolName) {
21
+ if (className) {
22
+ const classNode = this.findParentClass(node);
23
+ if (!classNode || classNode.childForFieldName("name")?.text !== className) {
24
+ // Continue searching
25
+ }
26
+ else {
27
+ return tree.rootNode.text.substring(node.startIndex, node.endIndex);
28
+ }
29
+ }
30
+ else {
31
+ return tree.rootNode.text.substring(node.startIndex, node.endIndex);
32
+ }
33
+ }
34
+ }
35
+ if (cursor.gotoFirstChild()) {
36
+ do {
37
+ const result = search();
38
+ if (result)
39
+ return result;
40
+ } while (cursor.gotoNextSibling());
41
+ cursor.gotoParent();
42
+ }
43
+ return null;
44
+ };
45
+ return search();
46
+ }
47
+ replaceSymbol(content, tree, symbolName, newContent, className) {
48
+ const extracted = this.extractSymbol(tree, symbolName, className);
49
+ if (!extracted) {
50
+ throw new Error(`Symbol "${symbolName}" not found`);
51
+ }
52
+ const index = content.indexOf(extracted);
53
+ if (index === -1) {
54
+ throw new Error("Could not locate symbol in content");
55
+ }
56
+ return content.substring(0, index) + newContent + content.substring(index + extracted.length);
57
+ }
58
+ findSymbols(tree) {
59
+ const symbols = [];
60
+ const cursor = tree.walk();
61
+ const visit = () => {
62
+ const node = cursor.currentNode;
63
+ if (node.type === "function_declaration" ||
64
+ node.type === "class_declaration" ||
65
+ node.type === "interface_declaration" ||
66
+ node.type === "type_alias_declaration" ||
67
+ node.type === "method_definition") {
68
+ const nameNode = node.childForFieldName("name");
69
+ if (nameNode) {
70
+ symbols.push({
71
+ name: nameNode.text,
72
+ type: node.type,
73
+ startIndex: node.startIndex,
74
+ endIndex: node.endIndex,
75
+ });
76
+ }
77
+ }
78
+ if (cursor.gotoFirstChild()) {
79
+ do {
80
+ visit();
81
+ } while (cursor.gotoNextSibling());
82
+ cursor.gotoParent();
83
+ }
84
+ };
85
+ visit();
86
+ return symbols;
87
+ }
88
+ findParentClass(node) {
89
+ let current = node.parent;
90
+ while (current) {
91
+ if (current.type === "class_declaration")
92
+ return current;
93
+ current = current.parent;
94
+ }
95
+ return null;
96
+ }
97
+ }
98
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/parsers/typescript.ts"],"names":[],"mappings":"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"}