@mcp-graph-workflow/mcp-graph 5.19.3 → 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 (107) 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/rag/multi-strategy-retrieval.d.ts.map +1 -1
  18. package/dist/core/rag/multi-strategy-retrieval.js +3 -6
  19. package/dist/core/rag/multi-strategy-retrieval.js.map +1 -1
  20. package/dist/core/rag/phase-boost-cache.d.ts +20 -0
  21. package/dist/core/rag/phase-boost-cache.d.ts.map +1 -0
  22. package/dist/core/rag/phase-boost-cache.js +50 -0
  23. package/dist/core/rag/phase-boost-cache.js.map +1 -0
  24. package/dist/core/rag/query-cache.d.ts +6 -8
  25. package/dist/core/rag/query-cache.d.ts.map +1 -1
  26. package/dist/core/rag/query-cache.js +21 -38
  27. package/dist/core/rag/query-cache.js.map +1 -1
  28. package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
  29. package/dist/core/rag/rag-pipeline.js +14 -3
  30. package/dist/core/rag/rag-pipeline.js.map +1 -1
  31. package/dist/core/rag/tfidf-embedding-cache.d.ts +20 -0
  32. package/dist/core/rag/tfidf-embedding-cache.d.ts.map +1 -0
  33. package/dist/core/rag/tfidf-embedding-cache.js +46 -0
  34. package/dist/core/rag/tfidf-embedding-cache.js.map +1 -0
  35. package/dist/core/store/graph-snapshot-cache.d.ts +40 -0
  36. package/dist/core/store/graph-snapshot-cache.d.ts.map +1 -0
  37. package/dist/core/store/graph-snapshot-cache.js +39 -0
  38. package/dist/core/store/graph-snapshot-cache.js.map +1 -0
  39. package/dist/core/store/knowledge-store.d.ts +11 -0
  40. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  41. package/dist/core/store/knowledge-store.js +48 -1
  42. package/dist/core/store/knowledge-store.js.map +1 -1
  43. package/dist/core/store/migrations.d.ts.map +1 -1
  44. package/dist/core/store/migrations.js +9 -0
  45. package/dist/core/store/migrations.js.map +1 -1
  46. package/dist/core/translation/ir/ir-converter.d.ts +17 -0
  47. package/dist/core/translation/ir/ir-converter.d.ts.map +1 -0
  48. package/dist/core/translation/ir/ir-converter.js +103 -0
  49. package/dist/core/translation/ir/ir-converter.js.map +1 -0
  50. package/dist/core/translation/ir/ir-types.d.ts +50 -0
  51. package/dist/core/translation/ir/ir-types.d.ts.map +1 -0
  52. package/dist/core/translation/ir/ir-types.js +42 -0
  53. package/dist/core/translation/ir/ir-types.js.map +1 -0
  54. package/dist/core/translation/memory/translation-memory.d.ts +66 -0
  55. package/dist/core/translation/memory/translation-memory.d.ts.map +1 -0
  56. package/dist/core/translation/memory/translation-memory.js +85 -0
  57. package/dist/core/translation/memory/translation-memory.js.map +1 -0
  58. package/dist/core/translation/parsers/csharp-parser-adapter.d.ts +9 -0
  59. package/dist/core/translation/parsers/csharp-parser-adapter.d.ts.map +1 -0
  60. package/dist/core/translation/parsers/csharp-parser-adapter.js +61 -0
  61. package/dist/core/translation/parsers/csharp-parser-adapter.js.map +1 -0
  62. package/dist/core/translation/parsers/go-parser-adapter.d.ts +9 -0
  63. package/dist/core/translation/parsers/go-parser-adapter.d.ts.map +1 -0
  64. package/dist/core/translation/parsers/go-parser-adapter.js +40 -0
  65. package/dist/core/translation/parsers/go-parser-adapter.js.map +1 -0
  66. package/dist/core/translation/parsers/java-parser-adapter.d.ts +9 -0
  67. package/dist/core/translation/parsers/java-parser-adapter.d.ts.map +1 -0
  68. package/dist/core/translation/parsers/java-parser-adapter.js +48 -0
  69. package/dist/core/translation/parsers/java-parser-adapter.js.map +1 -0
  70. package/dist/core/translation/parsers/ruby-parser-adapter.d.ts +9 -0
  71. package/dist/core/translation/parsers/ruby-parser-adapter.d.ts.map +1 -0
  72. package/dist/core/translation/parsers/ruby-parser-adapter.js +45 -0
  73. package/dist/core/translation/parsers/ruby-parser-adapter.js.map +1 -0
  74. package/dist/core/translation/parsers/rust-parser-adapter.d.ts +9 -0
  75. package/dist/core/translation/parsers/rust-parser-adapter.d.ts.map +1 -0
  76. package/dist/core/translation/parsers/rust-parser-adapter.js +47 -0
  77. package/dist/core/translation/parsers/rust-parser-adapter.js.map +1 -0
  78. package/dist/core/translation/pipeline/translation-pipeline.d.ts +42 -0
  79. package/dist/core/translation/pipeline/translation-pipeline.d.ts.map +1 -0
  80. package/dist/core/translation/pipeline/translation-pipeline.js +127 -0
  81. package/dist/core/translation/pipeline/translation-pipeline.js.map +1 -0
  82. package/dist/core/translation/repair/repair-loop.d.ts +40 -0
  83. package/dist/core/translation/repair/repair-loop.d.ts.map +1 -0
  84. package/dist/core/translation/repair/repair-loop.js +68 -0
  85. package/dist/core/translation/repair/repair-loop.js.map +1 -0
  86. package/dist/core/translation/rules/python-to-ts-rules.d.ts +7 -0
  87. package/dist/core/translation/rules/python-to-ts-rules.d.ts.map +1 -0
  88. package/dist/core/translation/rules/python-to-ts-rules.js +160 -0
  89. package/dist/core/translation/rules/python-to-ts-rules.js.map +1 -0
  90. package/dist/core/translation/rules/rule-engine.d.ts +38 -0
  91. package/dist/core/translation/rules/rule-engine.d.ts.map +1 -0
  92. package/dist/core/translation/rules/rule-engine.js +95 -0
  93. package/dist/core/translation/rules/rule-engine.js.map +1 -0
  94. package/dist/core/translation/rules/rule-schema.d.ts +53 -0
  95. package/dist/core/translation/rules/rule-schema.d.ts.map +1 -0
  96. package/dist/core/translation/rules/rule-schema.js +62 -0
  97. package/dist/core/translation/rules/rule-schema.js.map +1 -0
  98. package/dist/core/translation/rules/ts-to-python-rules.d.ts +7 -0
  99. package/dist/core/translation/rules/ts-to-python-rules.d.ts.map +1 -0
  100. package/dist/core/translation/rules/ts-to-python-rules.js +188 -0
  101. package/dist/core/translation/rules/ts-to-python-rules.js.map +1 -0
  102. package/dist/core/translation/ucr/construct-seed-data.json +7132 -0
  103. package/dist/core/translation/validators/code-validator.d.ts +30 -0
  104. package/dist/core/translation/validators/code-validator.d.ts.map +1 -0
  105. package/dist/core/translation/validators/code-validator.js +159 -0
  106. package/dist/core/translation/validators/code-validator.js.map +1 -0
  107. package/package.json +7 -5
@@ -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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Python → TS translation rules.
3
+ * Covers ~60-70% of common constructs deterministically.
4
+ */
5
+ import type { RuleSet } from "./rule-schema.js";
6
+ export declare const PYTHON_TO_TS_RULES: RuleSet;
7
+ //# sourceMappingURL=python-to-ts-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-to-ts-rules.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/rules/python-to-ts-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,OA8JhC,CAAC"}