@mcp-graph-workflow/mcp-graph 5.19.2 → 5.20.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 (116) hide show
  1. package/dist/core/context/compact-context.d.ts +2 -1
  2. package/dist/core/context/compact-context.d.ts.map +1 -1
  3. package/dist/core/context/compact-context.js +29 -16
  4. package/dist/core/context/compact-context.js.map +1 -1
  5. package/dist/core/context/context-assembler.d.ts +9 -0
  6. package/dist/core/context/context-assembler.d.ts.map +1 -1
  7. package/dist/core/context/context-assembler.js +25 -2
  8. package/dist/core/context/context-assembler.js.map +1 -1
  9. package/dist/core/context/rag-context.d.ts +9 -0
  10. package/dist/core/context/rag-context.d.ts.map +1 -1
  11. package/dist/core/context/rag-context.js +29 -3
  12. package/dist/core/context/rag-context.js.map +1 -1
  13. package/dist/core/context/task-context-cache.d.ts +33 -0
  14. package/dist/core/context/task-context-cache.d.ts.map +1 -0
  15. package/dist/core/context/task-context-cache.js +61 -0
  16. package/dist/core/context/task-context-cache.js.map +1 -0
  17. package/dist/core/designer/interface-checker.d.ts.map +1 -1
  18. package/dist/core/designer/interface-checker.js +2 -1
  19. package/dist/core/designer/interface-checker.js.map +1 -1
  20. package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -1
  21. package/dist/core/rag/multi-strategy-retrieval.js +3 -6
  22. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -1
  23. package/dist/core/rag/phase-boost-cache.d.ts +20 -0
  24. package/dist/core/rag/phase-boost-cache.d.ts.map +1 -0
  25. package/dist/core/rag/phase-boost-cache.js +50 -0
  26. package/dist/core/rag/phase-boost-cache.js.map +1 -0
  27. package/dist/core/rag/query-cache.d.ts +6 -8
  28. package/dist/core/rag/query-cache.d.ts.map +1 -1
  29. package/dist/core/rag/query-cache.js +21 -38
  30. package/dist/core/rag/query-cache.js.map +1 -1
  31. package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
  32. package/dist/core/rag/rag-pipeline.js +14 -3
  33. package/dist/core/rag/rag-pipeline.js.map +1 -1
  34. package/dist/core/rag/tfidf-embedding-cache.d.ts +20 -0
  35. package/dist/core/rag/tfidf-embedding-cache.d.ts.map +1 -0
  36. package/dist/core/rag/tfidf-embedding-cache.js +46 -0
  37. package/dist/core/rag/tfidf-embedding-cache.js.map +1 -0
  38. package/dist/core/store/graph-snapshot-cache.d.ts +40 -0
  39. package/dist/core/store/graph-snapshot-cache.d.ts.map +1 -0
  40. package/dist/core/store/graph-snapshot-cache.js +39 -0
  41. package/dist/core/store/graph-snapshot-cache.js.map +1 -0
  42. package/dist/core/store/knowledge-store.d.ts +11 -0
  43. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  44. package/dist/core/store/knowledge-store.js +48 -1
  45. package/dist/core/store/knowledge-store.js.map +1 -1
  46. package/dist/core/store/migrations.d.ts.map +1 -1
  47. package/dist/core/store/migrations.js +9 -0
  48. package/dist/core/store/migrations.js.map +1 -1
  49. package/dist/core/translation/ir/ir-converter.d.ts +17 -0
  50. package/dist/core/translation/ir/ir-converter.d.ts.map +1 -0
  51. package/dist/core/translation/ir/ir-converter.js +103 -0
  52. package/dist/core/translation/ir/ir-converter.js.map +1 -0
  53. package/dist/core/translation/ir/ir-types.d.ts +50 -0
  54. package/dist/core/translation/ir/ir-types.d.ts.map +1 -0
  55. package/dist/core/translation/ir/ir-types.js +42 -0
  56. package/dist/core/translation/ir/ir-types.js.map +1 -0
  57. package/dist/core/translation/memory/translation-memory.d.ts +66 -0
  58. package/dist/core/translation/memory/translation-memory.d.ts.map +1 -0
  59. package/dist/core/translation/memory/translation-memory.js +85 -0
  60. package/dist/core/translation/memory/translation-memory.js.map +1 -0
  61. package/dist/core/translation/parsers/csharp-parser-adapter.d.ts +9 -0
  62. package/dist/core/translation/parsers/csharp-parser-adapter.d.ts.map +1 -0
  63. package/dist/core/translation/parsers/csharp-parser-adapter.js +61 -0
  64. package/dist/core/translation/parsers/csharp-parser-adapter.js.map +1 -0
  65. package/dist/core/translation/parsers/go-parser-adapter.d.ts +9 -0
  66. package/dist/core/translation/parsers/go-parser-adapter.d.ts.map +1 -0
  67. package/dist/core/translation/parsers/go-parser-adapter.js +40 -0
  68. package/dist/core/translation/parsers/go-parser-adapter.js.map +1 -0
  69. package/dist/core/translation/parsers/java-parser-adapter.d.ts +9 -0
  70. package/dist/core/translation/parsers/java-parser-adapter.d.ts.map +1 -0
  71. package/dist/core/translation/parsers/java-parser-adapter.js +48 -0
  72. package/dist/core/translation/parsers/java-parser-adapter.js.map +1 -0
  73. package/dist/core/translation/parsers/ruby-parser-adapter.d.ts +9 -0
  74. package/dist/core/translation/parsers/ruby-parser-adapter.d.ts.map +1 -0
  75. package/dist/core/translation/parsers/ruby-parser-adapter.js +45 -0
  76. package/dist/core/translation/parsers/ruby-parser-adapter.js.map +1 -0
  77. package/dist/core/translation/parsers/rust-parser-adapter.d.ts +9 -0
  78. package/dist/core/translation/parsers/rust-parser-adapter.d.ts.map +1 -0
  79. package/dist/core/translation/parsers/rust-parser-adapter.js +47 -0
  80. package/dist/core/translation/parsers/rust-parser-adapter.js.map +1 -0
  81. package/dist/core/translation/pipeline/translation-pipeline.d.ts +42 -0
  82. package/dist/core/translation/pipeline/translation-pipeline.d.ts.map +1 -0
  83. package/dist/core/translation/pipeline/translation-pipeline.js +127 -0
  84. package/dist/core/translation/pipeline/translation-pipeline.js.map +1 -0
  85. package/dist/core/translation/repair/repair-loop.d.ts +40 -0
  86. package/dist/core/translation/repair/repair-loop.d.ts.map +1 -0
  87. package/dist/core/translation/repair/repair-loop.js +68 -0
  88. package/dist/core/translation/repair/repair-loop.js.map +1 -0
  89. package/dist/core/translation/rules/python-to-ts-rules.d.ts +7 -0
  90. package/dist/core/translation/rules/python-to-ts-rules.d.ts.map +1 -0
  91. package/dist/core/translation/rules/python-to-ts-rules.js +160 -0
  92. package/dist/core/translation/rules/python-to-ts-rules.js.map +1 -0
  93. package/dist/core/translation/rules/rule-engine.d.ts +38 -0
  94. package/dist/core/translation/rules/rule-engine.d.ts.map +1 -0
  95. package/dist/core/translation/rules/rule-engine.js +95 -0
  96. package/dist/core/translation/rules/rule-engine.js.map +1 -0
  97. package/dist/core/translation/rules/rule-schema.d.ts +53 -0
  98. package/dist/core/translation/rules/rule-schema.d.ts.map +1 -0
  99. package/dist/core/translation/rules/rule-schema.js +62 -0
  100. package/dist/core/translation/rules/rule-schema.js.map +1 -0
  101. package/dist/core/translation/rules/ts-to-python-rules.d.ts +7 -0
  102. package/dist/core/translation/rules/ts-to-python-rules.d.ts.map +1 -0
  103. package/dist/core/translation/rules/ts-to-python-rules.js +188 -0
  104. package/dist/core/translation/rules/ts-to-python-rules.js.map +1 -0
  105. package/dist/core/translation/ucr/construct-seed-data.json +7132 -0
  106. package/dist/core/translation/validators/code-validator.d.ts +30 -0
  107. package/dist/core/translation/validators/code-validator.d.ts.map +1 -0
  108. package/dist/core/translation/validators/code-validator.js +159 -0
  109. package/dist/core/translation/validators/code-validator.js.map +1 -0
  110. package/dist/mcp/code-intelligence-wrapper.d.ts.map +1 -1
  111. package/dist/mcp/code-intelligence-wrapper.js +9 -7
  112. package/dist/mcp/code-intelligence-wrapper.js.map +1 -1
  113. package/dist/mcp/tools/metrics.d.ts.map +1 -1
  114. package/dist/mcp/tools/metrics.js +5 -1
  115. package/dist/mcp/tools/metrics.js.map +1 -1
  116. package/package.json +7 -5
@@ -0,0 +1,61 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*using\s+[\w.]+;/, constructId: "uc_import_named" },
3
+ // eslint-disable-next-line security/detect-unsafe-regex
4
+ { pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(abstract\s+)?class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 4 },
5
+ { pattern: /^\s*(public|private|protected|internal)?\s*interface\s+(\w+)/, constructId: "uc_interface", nameGroup: 2 },
6
+ // eslint-disable-next-line security/detect-unsafe-regex
7
+ { pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(async\s+)?([\w<>?[\]]+)\s+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 5,
8
+ also: [{ constructId: "uc_async_fn" }] },
9
+ { pattern: /^\s*try\s*\{/, constructId: "uc_try_catch" },
10
+ { pattern: /^\s*throw\s+/, constructId: "uc_throw" },
11
+ { pattern: /^\s*if\s*\(/, constructId: "uc_if_else" },
12
+ { pattern: /^\s*for\s*\(/, constructId: "uc_for_loop" },
13
+ { pattern: /^\s*foreach\s*\(/, constructId: "uc_for_each" },
14
+ { pattern: /^\s*while\s*\(/, constructId: "uc_while" },
15
+ { pattern: /^\s*switch\s*\(/, constructId: "uc_switch" },
16
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
17
+ { pattern: /\bawait\s+/, constructId: "uc_await" },
18
+ ];
19
+ export class CSharpParserAdapter {
20
+ languageId = "csharp";
21
+ parseSnippet(code) {
22
+ if (!code.trim())
23
+ return [];
24
+ const lines = code.split("\n");
25
+ const constructs = [];
26
+ for (let i = 0; i < lines.length; i++) {
27
+ const line = lines[i];
28
+ const lineNum = i + 1;
29
+ for (const rule of LINE_RULES) {
30
+ const match = rule.pattern.exec(line);
31
+ if (!match)
32
+ continue;
33
+ // For async detection, only emit async_fn if "async" is in line
34
+ if (rule.also && rule.also[0].constructId === "uc_async_fn" && !line.includes("async")) {
35
+ constructs.push({
36
+ constructId: rule.constructId,
37
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
38
+ startLine: lineNum,
39
+ endLine: lineNum,
40
+ });
41
+ }
42
+ else {
43
+ constructs.push({
44
+ constructId: rule.constructId,
45
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
46
+ startLine: lineNum,
47
+ endLine: lineNum,
48
+ });
49
+ if (rule.also && line.includes("async")) {
50
+ for (const extra of rule.also) {
51
+ constructs.push({ constructId: extra.constructId, startLine: lineNum, endLine: lineNum });
52
+ }
53
+ }
54
+ }
55
+ break;
56
+ }
57
+ }
58
+ return constructs;
59
+ }
60
+ }
61
+ //# sourceMappingURL=csharp-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/csharp-parser-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Go Parser Adapter — heuristic regex-based parser for Go code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class GoParserAdapter implements ParserAdapter {
6
+ readonly languageId = "go";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=go-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/go-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAuB1E,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,UAAU,QAAQ;IAE3B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}
@@ -0,0 +1,40 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^import\s+/, constructId: "uc_import_named" },
3
+ { pattern: /^type\s+(\w+)\s+struct\s*\{/, constructId: "uc_class_def", nameGroup: 1 },
4
+ { pattern: /^type\s+(\w+)\s+interface\s*\{/, constructId: "uc_interface", nameGroup: 1 },
5
+ { pattern: /^func\s+\(\w+\s+\*?\w+\)\s+(\w+)/, constructId: "uc_fn_def", nameGroup: 1 }, // method
6
+ { pattern: /^func\s+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 1 },
7
+ { pattern: /^\s*go\s+func/, constructId: "uc_async_fn" },
8
+ { pattern: /^\s*if\s+/, constructId: "uc_if_else" },
9
+ { pattern: /^\s*for\s+/, constructId: "uc_for_loop" },
10
+ { pattern: /^\s*switch\s+/, constructId: "uc_switch" },
11
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
12
+ { pattern: /^\s*defer\s+/, constructId: "uc_try_catch" }, // Go defer ~ finally
13
+ ];
14
+ export class GoParserAdapter {
15
+ languageId = "go";
16
+ parseSnippet(code) {
17
+ if (!code.trim())
18
+ return [];
19
+ const lines = code.split("\n");
20
+ const constructs = [];
21
+ for (let i = 0; i < lines.length; i++) {
22
+ const line = lines[i];
23
+ const lineNum = i + 1;
24
+ for (const rule of LINE_RULES) {
25
+ const match = rule.pattern.exec(line);
26
+ if (!match)
27
+ continue;
28
+ constructs.push({
29
+ constructId: rule.constructId,
30
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
31
+ startLine: lineNum,
32
+ endLine: lineNum,
33
+ });
34
+ break;
35
+ }
36
+ }
37
+ return constructs;
38
+ }
39
+ }
40
+ //# sourceMappingURL=go-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/go-parser-adapter.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACzD,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACrF,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACxF,EAAE,OAAO,EAAE,kCAAkC,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS;IAClG,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IACzE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE;IACxD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;IACnD,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;IACrD,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE;IACtD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,qBAAqB;CAChF,CAAC;AAEF,MAAM,OAAO,eAAe;IACjB,UAAU,GAAG,IAAI,CAAC;IAE3B,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,SAAS,EAAE,OAAO;oBAClB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Java Parser Adapter — heuristic regex-based parser for Java code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class JavaParserAdapter implements ParserAdapter {
6
+ readonly languageId = "java";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=java-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/java-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA0B1E,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,UAAU,UAAU;IAE7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CA2B9C"}
@@ -0,0 +1,48 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*import\s+[\w.]+;/, constructId: "uc_import_named" },
3
+ // eslint-disable-next-line security/detect-unsafe-regex
4
+ { pattern: /^\s*(public|private|protected)?\s*(abstract\s+)?class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 3 },
5
+ { pattern: /^\s*(public|private|protected)?\s*interface\s+(\w+)/, constructId: "uc_interface", nameGroup: 2 },
6
+ // eslint-disable-next-line security/detect-unsafe-regex
7
+ { pattern: /^\s*(public|private|protected)?\s*(static\s+)?(synchronized\s+)?([\w<>[\]]+)\s+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 5 },
8
+ { pattern: /^\s*try\s*\{/, constructId: "uc_try_catch" },
9
+ { pattern: /^\s*throw\s+/, constructId: "uc_throw" },
10
+ { pattern: /^\s*if\s*\(/, constructId: "uc_if_else" },
11
+ { pattern: /^\s*for\s*\(/, constructId: "uc_for_loop" },
12
+ { pattern: /^\s*(while)\s*\(/, constructId: "uc_while" },
13
+ { pattern: /^\s*switch\s*\(/, constructId: "uc_switch" },
14
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
15
+ { pattern: /\bawait\s+/, constructId: "uc_await" },
16
+ ];
17
+ export class JavaParserAdapter {
18
+ languageId = "java";
19
+ parseSnippet(code) {
20
+ if (!code.trim())
21
+ return [];
22
+ const lines = code.split("\n");
23
+ const constructs = [];
24
+ for (let i = 0; i < lines.length; i++) {
25
+ const line = lines[i];
26
+ const lineNum = i + 1;
27
+ for (const rule of LINE_RULES) {
28
+ const match = rule.pattern.exec(line);
29
+ if (!match)
30
+ continue;
31
+ constructs.push({
32
+ constructId: rule.constructId,
33
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
34
+ startLine: lineNum,
35
+ endLine: lineNum,
36
+ });
37
+ if (rule.also) {
38
+ for (const extra of rule.also) {
39
+ constructs.push({ constructId: extra.constructId, startLine: lineNum, endLine: lineNum });
40
+ }
41
+ }
42
+ break;
43
+ }
44
+ }
45
+ return constructs;
46
+ }
47
+ }
48
+ //# sourceMappingURL=java-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/java-parser-adapter.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACnE,wDAAwD;IACxD,EAAE,OAAO,EAAE,+DAA+D,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACvH,EAAE,OAAO,EAAE,qDAAqD,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC7G,wDAAwD;IACxD,EAAE,OAAO,EAAE,2FAA2F,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IAChJ,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE;IACrD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE;IACvD,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE;IACxD,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE;CACnD,CAAC;AAEF,MAAM,OAAO,iBAAiB;IACnB,UAAU,GAAG,MAAM,CAAC;IAE7B,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,SAAS,EAAE,OAAO;oBAClB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC9B,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Ruby Parser Adapter — heuristic regex-based parser for Ruby code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class RubyParserAdapter implements ParserAdapter {
6
+ readonly languageId = "ruby";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=ruby-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/ruby-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2B1E,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,UAAU,UAAU;IAE7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}
@@ -0,0 +1,45 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*require\s+['"]/, constructId: "uc_import_named" },
3
+ { pattern: /^\s*require_relative\s+['"]/, constructId: "uc_import_named" },
4
+ { pattern: /^\s*class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
5
+ { pattern: /^\s*module\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
6
+ { pattern: /^\s*def\s+(\w+[?!]?)/, constructId: "uc_fn_def", nameGroup: 1 },
7
+ { pattern: /^\s*begin\s*$/, constructId: "uc_try_catch" },
8
+ { pattern: /^\s*rescue\b/, constructId: "uc_try_catch" },
9
+ { pattern: /^\s*raise\s+/, constructId: "uc_throw" },
10
+ { pattern: /^\s*if\s+/, constructId: "uc_if_else" },
11
+ { pattern: /^\s*unless\s+/, constructId: "uc_if_else" },
12
+ { pattern: /^\s*while\s+/, constructId: "uc_while" },
13
+ { pattern: /^\s*until\s+/, constructId: "uc_while" },
14
+ { pattern: /^\s*for\s+\w+\s+in\s+/, constructId: "uc_for_each" },
15
+ { pattern: /\.each\s+do/, constructId: "uc_for_each" },
16
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
17
+ { pattern: /^\s*yield\b/, constructId: "uc_return" },
18
+ ];
19
+ export class RubyParserAdapter {
20
+ languageId = "ruby";
21
+ parseSnippet(code) {
22
+ if (!code.trim())
23
+ return [];
24
+ const lines = code.split("\n");
25
+ const constructs = [];
26
+ for (let i = 0; i < lines.length; i++) {
27
+ const line = lines[i];
28
+ const lineNum = i + 1;
29
+ for (const rule of LINE_RULES) {
30
+ const match = rule.pattern.exec(line);
31
+ if (!match)
32
+ continue;
33
+ constructs.push({
34
+ constructId: rule.constructId,
35
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
36
+ startLine: lineNum,
37
+ endLine: lineNum,
38
+ });
39
+ break;
40
+ }
41
+ }
42
+ return constructs;
43
+ }
44
+ }
45
+ //# sourceMappingURL=ruby-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/ruby-parser-adapter.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACjE,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAC1E,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC3E,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC5E,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IAC3E,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE;IACzD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;IACnD,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE;IACvD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE;IAChE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE;IACtD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE;CACrD,CAAC;AAEF,MAAM,OAAO,iBAAiB;IACnB,UAAU,GAAG,MAAM,CAAC;IAE7B,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,SAAS,EAAE,OAAO;oBAClB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Rust Parser Adapter — heuristic regex-based parser for Rust code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class RustParserAdapter implements ParserAdapter {
6
+ readonly languageId = "rust";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=rust-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/rust-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA6B1E,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,UAAU,UAAU;IAE7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}
@@ -0,0 +1,47 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*use\s+[\w:]+/, constructId: "uc_import_named" },
3
+ { pattern: /^\s*async\s+fn\s+(\w+)/, constructId: "uc_async_fn", nameGroup: 1 },
4
+ // eslint-disable-next-line security/detect-unsafe-regex
5
+ { pattern: /^\s*(pub\s+)?(unsafe\s+)?fn\s+(\w+)/, constructId: "uc_fn_def", nameGroup: 3 },
6
+ // eslint-disable-next-line security/detect-unsafe-regex
7
+ { pattern: /^\s*(pub\s+)?struct\s+(\w+)/, constructId: "uc_class_def", nameGroup: 2 },
8
+ // eslint-disable-next-line security/detect-unsafe-regex
9
+ { pattern: /^\s*(pub\s+)?enum\s+(\w+)/, constructId: "uc_class_def", nameGroup: 2 },
10
+ // eslint-disable-next-line security/detect-unsafe-regex
11
+ { pattern: /^\s*(pub\s+)?trait\s+(\w+)/, constructId: "uc_interface", nameGroup: 2 },
12
+ { pattern: /^\s*impl\s+([\w<>]+)/, constructId: "uc_class_def", nameGroup: 1 },
13
+ { pattern: /^\s*match\s+/, constructId: "uc_switch" },
14
+ { pattern: /^\s*if\s+/, constructId: "uc_if_else" },
15
+ { pattern: /^\s*loop\s*\{/, constructId: "uc_while" },
16
+ { pattern: /^\s*while\s+/, constructId: "uc_while" },
17
+ { pattern: /^\s*for\s+\w+\s+in\s+/, constructId: "uc_for_each" },
18
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
19
+ { pattern: /\.await\b/, constructId: "uc_await" },
20
+ ];
21
+ export class RustParserAdapter {
22
+ languageId = "rust";
23
+ parseSnippet(code) {
24
+ if (!code.trim())
25
+ return [];
26
+ const lines = code.split("\n");
27
+ const constructs = [];
28
+ for (let i = 0; i < lines.length; i++) {
29
+ const line = lines[i];
30
+ const lineNum = i + 1;
31
+ for (const rule of LINE_RULES) {
32
+ const match = rule.pattern.exec(line);
33
+ if (!match)
34
+ continue;
35
+ constructs.push({
36
+ constructId: rule.constructId,
37
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
38
+ startLine: lineNum,
39
+ endLine: lineNum,
40
+ });
41
+ break;
42
+ }
43
+ }
44
+ return constructs;
45
+ }
46
+ }
47
+ //# sourceMappingURL=rust-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/rust-parser-adapter.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAC/D,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE;IAC/E,wDAAwD;IACxD,EAAE,OAAO,EAAE,qCAAqC,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IAC1F,wDAAwD;IACxD,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACrF,wDAAwD;IACxD,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACnF,wDAAwD;IACxD,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACpF,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC9E,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;IACnD,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE;IACrD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE;IAChE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE;CAClD,CAAC;AAEF,MAAM,OAAO,iBAAiB;IACnB,UAAU,GAAG,MAAM,CAAC;IAE7B,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,SAAS,EAAE,OAAO;oBAClB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Translation Pipeline — end-to-end automated translation.
3
+ *
4
+ * Pipeline: parse → IR → rules → (optional AI) → validate → (optional repair) → result.
5
+ * Supports rule-only mode (no AI) and full AI-assisted mode.
6
+ */
7
+ import type { ParsedConstruct } from "../parsers/parser-adapter.js";
8
+ import type { IRNode } from "../ir/ir-types.js";
9
+ import { type ApplyRulesResult } from "../rules/rule-engine.js";
10
+ import { type ValidationResult } from "../validators/code-validator.js";
11
+ export type ParserFunction = (code: string) => ParsedConstruct[];
12
+ export type TranslateFn = (prompt: string) => Promise<string>;
13
+ export interface TranslationPipelineOptions {
14
+ sourceLanguage: string;
15
+ targetLanguage: string;
16
+ parser: ParserFunction;
17
+ translateFn?: TranslateFn;
18
+ maxRepairIterations?: number;
19
+ }
20
+ export interface PipelineResult {
21
+ success: boolean;
22
+ targetCode: string;
23
+ irTree: IRNode;
24
+ ruleResults: ApplyRulesResult;
25
+ validation: ValidationResult;
26
+ repairAttempted: boolean;
27
+ repairIterations: number;
28
+ }
29
+ export declare class TranslationPipeline {
30
+ private sourceLanguage;
31
+ private targetLanguage;
32
+ private parser;
33
+ private translateFn?;
34
+ private maxRepairIterations;
35
+ constructor(options: TranslationPipelineOptions);
36
+ translate(sourceCode: string): Promise<PipelineResult>;
37
+ private getRuleEngine;
38
+ private getValidator;
39
+ private buildPrompt;
40
+ private buildRepairPrompt;
41
+ }
42
+ //# sourceMappingURL=translation-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation-pipeline.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/pipeline/translation-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAM5G,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,mBAAmB,CAAS;gBAExB,OAAO,EAAE,0BAA0B;IAQzC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA4D5D,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,iBAAiB;CAgB1B"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Translation Pipeline — end-to-end automated translation.
3
+ *
4
+ * Pipeline: parse → IR → rules → (optional AI) → validate → (optional repair) → result.
5
+ * Supports rule-only mode (no AI) and full AI-assisted mode.
6
+ */
7
+ import { convertToIR, } from "../ir/ir-converter.js";
8
+ import { RuleEngine } from "../rules/rule-engine.js";
9
+ import { TS_TO_PYTHON_RULES } from "../rules/ts-to-python-rules.js";
10
+ import { PYTHON_TO_TS_RULES } from "../rules/python-to-ts-rules.js";
11
+ import { validateTypescript, validatePython } from "../validators/code-validator.js";
12
+ import { RepairLoop } from "../repair/repair-loop.js";
13
+ // ── Pipeline ───────────────────────────────────────
14
+ export class TranslationPipeline {
15
+ sourceLanguage;
16
+ targetLanguage;
17
+ parser;
18
+ translateFn;
19
+ maxRepairIterations;
20
+ constructor(options) {
21
+ this.sourceLanguage = options.sourceLanguage;
22
+ this.targetLanguage = options.targetLanguage;
23
+ this.parser = options.parser;
24
+ this.translateFn = options.translateFn;
25
+ this.maxRepairIterations = options.maxRepairIterations ?? 3;
26
+ }
27
+ async translate(sourceCode) {
28
+ // Step 1: Parse source code into constructs
29
+ const constructs = this.parser(sourceCode);
30
+ // Step 2: Convert to IR tree
31
+ const irTree = convertToIR(constructs);
32
+ // Step 3: Match rules
33
+ const ruleEngine = this.getRuleEngine();
34
+ const ruleResults = ruleEngine.applyRules(irTree.children);
35
+ // Step 4: Generate target code
36
+ let targetCode;
37
+ if (this.translateFn) {
38
+ // AI-assisted: build prompt from IR + rules and call AI
39
+ const prompt = this.buildPrompt(sourceCode, ruleResults);
40
+ targetCode = await this.translateFn(prompt);
41
+ }
42
+ else {
43
+ // Rule-only: combine matched rule templates
44
+ targetCode = ruleResults.matched
45
+ .map((m) => m.rule.transformation.template)
46
+ .join("\n\n");
47
+ }
48
+ // Step 5: Validate target code
49
+ const validator = this.getValidator();
50
+ let validation = validator(targetCode);
51
+ // Step 6: Repair if needed
52
+ let repairAttempted = false;
53
+ let repairIterations = 0;
54
+ if (!validation.valid && this.translateFn) {
55
+ repairAttempted = true;
56
+ const repairLoop = new RepairLoop({
57
+ maxIterations: this.maxRepairIterations,
58
+ repairFn: async (code, errors) => {
59
+ const repairPrompt = this.buildRepairPrompt(code, errors);
60
+ return this.translateFn(repairPrompt);
61
+ },
62
+ validator,
63
+ });
64
+ const repairResult = await repairLoop.repair(targetCode);
65
+ targetCode = repairResult.finalCode;
66
+ repairIterations = repairResult.iterations;
67
+ validation = validator(targetCode);
68
+ }
69
+ return {
70
+ success: validation.valid,
71
+ targetCode,
72
+ irTree,
73
+ ruleResults,
74
+ validation,
75
+ repairAttempted,
76
+ repairIterations,
77
+ };
78
+ }
79
+ getRuleEngine() {
80
+ if (this.sourceLanguage === "typescript" && this.targetLanguage === "python") {
81
+ return new RuleEngine(TS_TO_PYTHON_RULES);
82
+ }
83
+ if (this.sourceLanguage === "python" && this.targetLanguage === "typescript") {
84
+ return new RuleEngine(PYTHON_TO_TS_RULES);
85
+ }
86
+ // Fallback: use ts-to-python rules (default)
87
+ return new RuleEngine(TS_TO_PYTHON_RULES);
88
+ }
89
+ getValidator() {
90
+ if (this.targetLanguage === "python")
91
+ return validatePython;
92
+ return validateTypescript;
93
+ }
94
+ buildPrompt(sourceCode, ruleResults) {
95
+ const matchedTemplates = ruleResults.matched
96
+ .map((m) => `${m.node.type}: ${m.rule.transformation.template}`)
97
+ .join("\n");
98
+ const unmatchedTypes = ruleResults.unmatched
99
+ .map((n) => n.type)
100
+ .join(", ");
101
+ return [
102
+ `Translate the following ${this.sourceLanguage} code to ${this.targetLanguage}:`,
103
+ "",
104
+ sourceCode,
105
+ "",
106
+ "Use these patterns for matched constructs:",
107
+ matchedTemplates,
108
+ unmatchedTypes ? `\nThese constructs need your judgment: ${unmatchedTypes}` : "",
109
+ ].join("\n");
110
+ }
111
+ buildRepairPrompt(code, errors) {
112
+ const errorList = errors
113
+ .map((e) => `Line ${e.line}: ${e.message}`)
114
+ .join("\n");
115
+ return [
116
+ `Fix the following ${this.targetLanguage} code that has validation errors:`,
117
+ "",
118
+ code,
119
+ "",
120
+ "Errors:",
121
+ errorList,
122
+ "",
123
+ "Return only the fixed code.",
124
+ ].join("\n");
125
+ }
126
+ }
127
+ //# sourceMappingURL=translation-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation-pipeline.js","sourceRoot":"","sources":["../../../../src/core/translation/pipeline/translation-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Repair Loop — iterative repair of translated code using AI.
3
+ *
4
+ * Validates code, sends errors to a repair function (AI), and retries
5
+ * up to maxIterations. Tracks repair history for auditing.
6
+ */
7
+ import type { ValidationError, ValidationResult } from "../validators/code-validator.js";
8
+ /** Function that attempts to repair code given validation errors. */
9
+ export type RepairFunction = (code: string, errors: ValidationError[]) => Promise<string>;
10
+ /** Validator function signature. */
11
+ export type ValidatorFunction = (code: string) => ValidationResult;
12
+ export interface RepairHistoryEntry {
13
+ iteration: number;
14
+ errors: ValidationError[];
15
+ codeAfterRepair: string;
16
+ }
17
+ export interface RepairResult {
18
+ success: boolean;
19
+ finalCode: string;
20
+ iterations: number;
21
+ errors: ValidationError[];
22
+ history: RepairHistoryEntry[];
23
+ }
24
+ export interface RepairLoopOptions {
25
+ maxIterations: number;
26
+ repairFn: RepairFunction;
27
+ validator: ValidatorFunction;
28
+ }
29
+ export declare class RepairLoop {
30
+ private maxIterations;
31
+ private repairFn;
32
+ private validator;
33
+ constructor(options: RepairLoopOptions);
34
+ /**
35
+ * Attempt to repair code by iteratively validating and fixing errors.
36
+ * Returns immediately if code is already valid (0 iterations).
37
+ */
38
+ repair(code: string): Promise<RepairResult>;
39
+ }
40
+ //# sourceMappingURL=repair-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-loop.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/repair/repair-loop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAIzF,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1F,oCAAoC;AACpC,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAoB;gBAEzB,OAAO,EAAE,iBAAiB;IAMtC;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAqDlD"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Repair Loop — iterative repair of translated code using AI.
3
+ *
4
+ * Validates code, sends errors to a repair function (AI), and retries
5
+ * up to maxIterations. Tracks repair history for auditing.
6
+ */
7
+ // ── Repair Loop ────────────────────────────────────
8
+ export class RepairLoop {
9
+ maxIterations;
10
+ repairFn;
11
+ validator;
12
+ constructor(options) {
13
+ this.maxIterations = options.maxIterations;
14
+ this.repairFn = options.repairFn;
15
+ this.validator = options.validator;
16
+ }
17
+ /**
18
+ * Attempt to repair code by iteratively validating and fixing errors.
19
+ * Returns immediately if code is already valid (0 iterations).
20
+ */
21
+ async repair(code) {
22
+ const history = [];
23
+ // Check if already valid
24
+ const initial = this.validator(code);
25
+ if (initial.valid) {
26
+ return {
27
+ success: true,
28
+ finalCode: code,
29
+ iterations: 0,
30
+ errors: [],
31
+ history,
32
+ };
33
+ }
34
+ let currentCode = code;
35
+ let lastErrors = initial.errors;
36
+ for (let i = 0; i < this.maxIterations; i++) {
37
+ // Attempt repair
38
+ const repairedCode = await this.repairFn(currentCode, lastErrors);
39
+ history.push({
40
+ iteration: i + 1,
41
+ errors: lastErrors,
42
+ codeAfterRepair: repairedCode,
43
+ });
44
+ // Validate repaired code
45
+ const result = this.validator(repairedCode);
46
+ if (result.valid) {
47
+ return {
48
+ success: true,
49
+ finalCode: repairedCode,
50
+ iterations: i + 1,
51
+ errors: [],
52
+ history,
53
+ };
54
+ }
55
+ currentCode = repairedCode;
56
+ lastErrors = result.errors;
57
+ }
58
+ // Max iterations reached without success
59
+ return {
60
+ success: false,
61
+ finalCode: currentCode,
62
+ iterations: this.maxIterations,
63
+ errors: lastErrors,
64
+ history,
65
+ };
66
+ }
67
+ }
68
+ //# sourceMappingURL=repair-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-loop.js","sourceRoot":"","sources":["../../../../src/core/translation/repair/repair-loop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH,sDAAsD;AAEtD,MAAM,OAAO,UAAU;IACb,aAAa,CAAS;IACtB,QAAQ,CAAiB;IACzB,SAAS,CAAoB;IAErC,YAAY,OAA0B;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,OAAO,GAAyB,EAAE,CAAC;QAEzC,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,EAAE;gBACV,OAAO;aACR,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,iBAAiB;YACjB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAElE,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,YAAY;aAC9B,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,YAAY;oBACvB,UAAU,EAAE,CAAC,GAAG,CAAC;oBACjB,MAAM,EAAE,EAAE;oBACV,OAAO;iBACR,CAAC;YACJ,CAAC;YAED,WAAW,GAAG,YAAY,CAAC;YAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,yCAAyC;QACzC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,IAAI,CAAC,aAAa;YAC9B,MAAM,EAAE,UAAU;YAClB,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}