@mcp-graph-workflow/mcp-graph 5.22.0 → 5.25.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 (225) hide show
  1. package/dist/api/routes/benchmark.d.ts.map +1 -1
  2. package/dist/api/routes/benchmark.js +22 -6
  3. package/dist/api/routes/benchmark.js.map +1 -1
  4. package/dist/api/routes/code-graph.d.ts.map +1 -1
  5. package/dist/api/routes/code-graph.js +2 -1
  6. package/dist/api/routes/code-graph.js.map +1 -1
  7. package/dist/api/routes/folder.d.ts +6 -0
  8. package/dist/api/routes/folder.d.ts.map +1 -1
  9. package/dist/api/routes/folder.js +53 -8
  10. package/dist/api/routes/folder.js.map +1 -1
  11. package/dist/api/routes/import.js +2 -1
  12. package/dist/api/routes/import.js.map +1 -1
  13. package/dist/api/routes/siebel.d.ts.map +1 -1
  14. package/dist/api/routes/siebel.js +4 -2
  15. package/dist/api/routes/siebel.js.map +1 -1
  16. package/dist/api/routes/skills.d.ts.map +1 -1
  17. package/dist/api/routes/skills.js +5 -2
  18. package/dist/api/routes/skills.js.map +1 -1
  19. package/dist/api/routes/translation.d.ts.map +1 -1
  20. package/dist/api/routes/translation.js +33 -9
  21. package/dist/api/routes/translation.js.map +1 -1
  22. package/dist/core/context/context-assembler.d.ts.map +1 -1
  23. package/dist/core/context/context-assembler.js +7 -0
  24. package/dist/core/context/context-assembler.js.map +1 -1
  25. package/dist/core/docs/docs-cache-store.js +1 -1
  26. package/dist/core/docs/docs-cache-store.js.map +1 -1
  27. package/dist/core/docs/stack-detector.js +6 -3
  28. package/dist/core/docs/stack-detector.js.map +1 -1
  29. package/dist/core/events/event-bus.d.ts +1 -1
  30. package/dist/core/events/event-bus.d.ts.map +1 -1
  31. package/dist/core/events/event-bus.js +13 -3
  32. package/dist/core/events/event-bus.js.map +1 -1
  33. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  34. package/dist/core/importer/prd-to-graph.js +20 -5
  35. package/dist/core/importer/prd-to-graph.js.map +1 -1
  36. package/dist/core/integrations/integration-orchestrator.d.ts +1 -0
  37. package/dist/core/integrations/integration-orchestrator.d.ts.map +1 -1
  38. package/dist/core/integrations/integration-orchestrator.js +40 -19
  39. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  40. package/dist/core/knowledge/knowledge-packager.d.ts +44 -0
  41. package/dist/core/knowledge/knowledge-packager.d.ts.map +1 -0
  42. package/dist/core/knowledge/knowledge-packager.js +311 -0
  43. package/dist/core/knowledge/knowledge-packager.js.map +1 -0
  44. package/dist/core/parser/classify.js +2 -2
  45. package/dist/core/parser/classify.js.map +1 -1
  46. package/dist/core/parser/file-reader.d.ts.map +1 -1
  47. package/dist/core/parser/file-reader.js +9 -2
  48. package/dist/core/parser/file-reader.js.map +1 -1
  49. package/dist/core/parser/read-pdf.d.ts.map +1 -1
  50. package/dist/core/parser/read-pdf.js +5 -1
  51. package/dist/core/parser/read-pdf.js.map +1 -1
  52. package/dist/core/rag/knowledge-synthesizer.js +2 -2
  53. package/dist/core/rag/knowledge-synthesizer.js.map +1 -1
  54. package/dist/core/rag/node-indexer.d.ts.map +1 -1
  55. package/dist/core/rag/node-indexer.js +3 -2
  56. package/dist/core/rag/node-indexer.js.map +1 -1
  57. package/dist/core/store/migrations.d.ts.map +1 -1
  58. package/dist/core/store/migrations.js +10 -0
  59. package/dist/core/store/migrations.js.map +1 -1
  60. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  61. package/dist/core/store/sqlite-store.js +39 -19
  62. package/dist/core/store/sqlite-store.js.map +1 -1
  63. package/dist/core/translation/chunked-analyzer.d.ts +36 -0
  64. package/dist/core/translation/chunked-analyzer.d.ts.map +1 -0
  65. package/dist/core/translation/chunked-analyzer.js +146 -0
  66. package/dist/core/translation/chunked-analyzer.js.map +1 -0
  67. package/dist/core/translation/confidence/ambiguity-detector.d.ts.map +1 -1
  68. package/dist/core/translation/confidence/ambiguity-detector.js +3 -1
  69. package/dist/core/translation/confidence/ambiguity-detector.js.map +1 -1
  70. package/dist/core/translation/language-detect.d.ts.map +1 -1
  71. package/dist/core/translation/language-detect.js +131 -0
  72. package/dist/core/translation/language-detect.js.map +1 -1
  73. package/dist/core/translation/memory/translation-memory.d.ts +14 -0
  74. package/dist/core/translation/memory/translation-memory.d.ts.map +1 -1
  75. package/dist/core/translation/memory/translation-memory.js +93 -0
  76. package/dist/core/translation/memory/translation-memory.js.map +1 -1
  77. package/dist/core/translation/parsers/cpp-parser-adapter.d.ts +9 -0
  78. package/dist/core/translation/parsers/cpp-parser-adapter.d.ts.map +1 -0
  79. package/dist/core/translation/parsers/cpp-parser-adapter.js +45 -0
  80. package/dist/core/translation/parsers/cpp-parser-adapter.js.map +1 -0
  81. package/dist/core/translation/parsers/csharp-parser-adapter.d.ts.map +1 -1
  82. package/dist/core/translation/parsers/csharp-parser-adapter.js +19 -22
  83. package/dist/core/translation/parsers/csharp-parser-adapter.js.map +1 -1
  84. package/dist/core/translation/parsers/dart-parser-adapter.d.ts +9 -0
  85. package/dist/core/translation/parsers/dart-parser-adapter.d.ts.map +1 -0
  86. package/dist/core/translation/parsers/dart-parser-adapter.js +44 -0
  87. package/dist/core/translation/parsers/dart-parser-adapter.js.map +1 -0
  88. package/dist/core/translation/parsers/elixir-parser-adapter.d.ts +9 -0
  89. package/dist/core/translation/parsers/elixir-parser-adapter.d.ts.map +1 -0
  90. package/dist/core/translation/parsers/elixir-parser-adapter.js +45 -0
  91. package/dist/core/translation/parsers/elixir-parser-adapter.js.map +1 -0
  92. package/dist/core/translation/parsers/go-parser-adapter.d.ts.map +1 -1
  93. package/dist/core/translation/parsers/go-parser-adapter.js +5 -2
  94. package/dist/core/translation/parsers/go-parser-adapter.js.map +1 -1
  95. package/dist/core/translation/parsers/haskell-parser-adapter.d.ts +9 -0
  96. package/dist/core/translation/parsers/haskell-parser-adapter.d.ts.map +1 -0
  97. package/dist/core/translation/parsers/haskell-parser-adapter.js +38 -0
  98. package/dist/core/translation/parsers/haskell-parser-adapter.js.map +1 -0
  99. package/dist/core/translation/parsers/java-parser-adapter.d.ts.map +1 -1
  100. package/dist/core/translation/parsers/java-parser-adapter.js +6 -1
  101. package/dist/core/translation/parsers/java-parser-adapter.js.map +1 -1
  102. package/dist/core/translation/parsers/kotlin-parser-adapter.d.ts +9 -0
  103. package/dist/core/translation/parsers/kotlin-parser-adapter.d.ts.map +1 -0
  104. package/dist/core/translation/parsers/kotlin-parser-adapter.js +43 -0
  105. package/dist/core/translation/parsers/kotlin-parser-adapter.js.map +1 -0
  106. package/dist/core/translation/parsers/lua-parser-adapter.d.ts +9 -0
  107. package/dist/core/translation/parsers/lua-parser-adapter.d.ts.map +1 -0
  108. package/dist/core/translation/parsers/lua-parser-adapter.js +42 -0
  109. package/dist/core/translation/parsers/lua-parser-adapter.js.map +1 -0
  110. package/dist/core/translation/parsers/php-parser-adapter.d.ts +9 -0
  111. package/dist/core/translation/parsers/php-parser-adapter.d.ts.map +1 -0
  112. package/dist/core/translation/parsers/php-parser-adapter.js +44 -0
  113. package/dist/core/translation/parsers/php-parser-adapter.js.map +1 -0
  114. package/dist/core/translation/parsers/rust-parser-adapter.js +1 -1
  115. package/dist/core/translation/parsers/scala-parser-adapter.d.ts +9 -0
  116. package/dist/core/translation/parsers/scala-parser-adapter.d.ts.map +1 -0
  117. package/dist/core/translation/parsers/scala-parser-adapter.js +43 -0
  118. package/dist/core/translation/parsers/scala-parser-adapter.js.map +1 -0
  119. package/dist/core/translation/parsers/swift-parser-adapter.d.ts +9 -0
  120. package/dist/core/translation/parsers/swift-parser-adapter.d.ts.map +1 -0
  121. package/dist/core/translation/parsers/swift-parser-adapter.js +44 -0
  122. package/dist/core/translation/parsers/swift-parser-adapter.js.map +1 -0
  123. package/dist/core/translation/pre-indexed-analyzer.d.ts +19 -0
  124. package/dist/core/translation/pre-indexed-analyzer.d.ts.map +1 -0
  125. package/dist/core/translation/pre-indexed-analyzer.js +100 -0
  126. package/dist/core/translation/pre-indexed-analyzer.js.map +1 -0
  127. package/dist/core/translation/prompt-builder.d.ts +2 -0
  128. package/dist/core/translation/prompt-builder.d.ts.map +1 -1
  129. package/dist/core/translation/prompt-builder.js +56 -8
  130. package/dist/core/translation/prompt-builder.js.map +1 -1
  131. package/dist/core/translation/prompt-paginator.d.ts +20 -0
  132. package/dist/core/translation/prompt-paginator.d.ts.map +1 -0
  133. package/dist/core/translation/prompt-paginator.js +108 -0
  134. package/dist/core/translation/prompt-paginator.js.map +1 -0
  135. package/dist/core/translation/translation-orchestrator.d.ts +9 -2
  136. package/dist/core/translation/translation-orchestrator.d.ts.map +1 -1
  137. package/dist/core/translation/translation-orchestrator.js +116 -16
  138. package/dist/core/translation/translation-orchestrator.js.map +1 -1
  139. package/dist/core/translation/translation-store.d.ts +6 -0
  140. package/dist/core/translation/translation-store.d.ts.map +1 -1
  141. package/dist/core/translation/translation-store.js +28 -0
  142. package/dist/core/translation/translation-store.js.map +1 -1
  143. package/dist/core/utils/circularity.d.ts +13 -0
  144. package/dist/core/utils/circularity.d.ts.map +1 -0
  145. package/dist/core/utils/circularity.js +30 -0
  146. package/dist/core/utils/circularity.js.map +1 -0
  147. package/dist/mcp/code-intelligence-wrapper.d.ts.map +1 -1
  148. package/dist/mcp/code-intelligence-wrapper.js +4 -2
  149. package/dist/mcp/code-intelligence-wrapper.js.map +1 -1
  150. package/dist/mcp/init-project.d.ts.map +1 -1
  151. package/dist/mcp/init-project.js +4 -2
  152. package/dist/mcp/init-project.js.map +1 -1
  153. package/dist/mcp/server.js +21 -4
  154. package/dist/mcp/server.js.map +1 -1
  155. package/dist/mcp/tool-classification.d.ts.map +1 -1
  156. package/dist/mcp/tool-classification.js +0 -1
  157. package/dist/mcp/tool-classification.js.map +1 -1
  158. package/dist/mcp/tools/analyze-translation.d.ts.map +1 -1
  159. package/dist/mcp/tools/analyze-translation.js +48 -8
  160. package/dist/mcp/tools/analyze-translation.js.map +1 -1
  161. package/dist/mcp/tools/clone-node.d.ts.map +1 -1
  162. package/dist/mcp/tools/clone-node.js +8 -3
  163. package/dist/mcp/tools/clone-node.js.map +1 -1
  164. package/dist/mcp/tools/edge.js +1 -1
  165. package/dist/mcp/tools/edge.js.map +1 -1
  166. package/dist/mcp/tools/import-graph.d.ts.map +1 -1
  167. package/dist/mcp/tools/import-graph.js +4 -2
  168. package/dist/mcp/tools/import-graph.js.map +1 -1
  169. package/dist/mcp/tools/index.d.ts.map +1 -1
  170. package/dist/mcp/tools/index.js +4 -0
  171. package/dist/mcp/tools/index.js.map +1 -1
  172. package/dist/mcp/tools/knowledge-export.d.ts +8 -0
  173. package/dist/mcp/tools/knowledge-export.d.ts.map +1 -0
  174. package/dist/mcp/tools/knowledge-export.js +100 -0
  175. package/dist/mcp/tools/knowledge-export.js.map +1 -0
  176. package/dist/mcp/tools/memory.d.ts.map +1 -1
  177. package/dist/mcp/tools/memory.js +1 -0
  178. package/dist/mcp/tools/memory.js.map +1 -1
  179. package/dist/mcp/tools/move-node.d.ts.map +1 -1
  180. package/dist/mcp/tools/move-node.js +4 -14
  181. package/dist/mcp/tools/move-node.js.map +1 -1
  182. package/dist/mcp/tools/node.d.ts.map +1 -1
  183. package/dist/mcp/tools/node.js +5 -16
  184. package/dist/mcp/tools/node.js.map +1 -1
  185. package/dist/mcp/tools/siebel-generate-sif.js +4 -2
  186. package/dist/mcp/tools/siebel-generate-sif.js.map +1 -1
  187. package/dist/mcp/tools/translate-code.d.ts.map +1 -1
  188. package/dist/mcp/tools/translate-code.js +54 -7
  189. package/dist/mcp/tools/translate-code.js.map +1 -1
  190. package/dist/mcp/tools/translation-jobs.d.ts +8 -0
  191. package/dist/mcp/tools/translation-jobs.d.ts.map +1 -0
  192. package/dist/mcp/tools/translation-jobs.js +100 -0
  193. package/dist/mcp/tools/translation-jobs.js.map +1 -0
  194. package/dist/schemas/knowledge-package.schema.d.ts +87 -0
  195. package/dist/schemas/knowledge-package.schema.d.ts.map +1 -0
  196. package/dist/schemas/knowledge-package.schema.js +48 -0
  197. package/dist/schemas/knowledge-package.schema.js.map +1 -0
  198. package/dist/web/dashboard/dist/assets/benchmark-tab-sjsZBd-4.js +1 -0
  199. package/dist/web/dashboard/dist/assets/{circle-alert-vaRHjxbG.js → circle-alert-DcTbCUEa.js} +1 -1
  200. package/dist/web/dashboard/dist/assets/{context-tab-DRUGmBRL.js → context-tab-DNMJ2Pv-.js} +1 -1
  201. package/dist/web/dashboard/dist/assets/{gitnexus-tab-h8BwIua3.js → gitnexus-tab-CZ9LJbwz.js} +1 -1
  202. package/dist/web/dashboard/dist/assets/{graph-section-C4ymXtzh.js → graph-section-BdcXKKoS.js} +1 -1
  203. package/dist/web/dashboard/dist/assets/{graph-tab-C6nWMQkR.js → graph-tab-CFzux3kf.js} +1 -1
  204. package/dist/web/dashboard/dist/assets/{graph-utils-DkRXfigF.js → graph-utils-_8jpWA5z.js} +1 -1
  205. package/dist/web/dashboard/dist/assets/{index-DmT4Jne7.js → index-Bny20bel.js} +1 -1
  206. package/dist/web/dashboard/dist/assets/index-CITYTuX5.js +218 -0
  207. package/dist/web/dashboard/dist/assets/{index-BW0cq1-5.js → index-DSI2SYWO.js} +1 -1
  208. package/dist/web/dashboard/dist/assets/{insights-tab-CL9LCuow.js → insights-tab-DUA76KUY.js} +2 -2
  209. package/dist/web/dashboard/dist/assets/{journey-tab-CbJSfdpz.js → journey-tab-FTd6jBta.js} +1 -1
  210. package/dist/web/dashboard/dist/assets/{languages-tab-Vjkz6r99.js → languages-tab-B_nhFL2q.js} +1 -1
  211. package/dist/web/dashboard/dist/assets/{loader-circle-CrUmRfZB.js → loader-circle-D1DpGd2u.js} +1 -1
  212. package/dist/web/dashboard/dist/assets/{logs-tab-CeH_wY9u.js → logs-tab-CzL36_Qy.js} +1 -1
  213. package/dist/web/dashboard/dist/assets/{lsp-tab-BLIpJrAk.js → lsp-tab-DdHhJq_H.js} +1 -1
  214. package/dist/web/dashboard/dist/assets/memories-tab-CzgCahnV.js +1 -0
  215. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-BBUG4V7M.js → prd-backlog-tab-C8Cl7swI.js} +1 -1
  216. package/dist/web/dashboard/dist/assets/{refresh-cw-DRsAUgYq.js → refresh-cw-DSYiHmbh.js} +1 -1
  217. package/dist/web/dashboard/dist/assets/{siebel-tab-DZXhcoUu.js → siebel-tab-B4XOaUGz.js} +3 -3
  218. package/dist/web/dashboard/dist/assets/{skills-tab-_A8OYt_b.js → skills-tab-CkpnwPJY.js} +1 -1
  219. package/dist/web/dashboard/dist/assets/{style-DpBYmOVU.js → style-BOQDk6qp.js} +1 -1
  220. package/dist/web/dashboard/dist/assets/{triangle-alert-N0TixBQV.js → triangle-alert-Bf6Ly19h.js} +1 -1
  221. package/dist/web/dashboard/dist/index.html +1 -1
  222. package/package.json +2 -2
  223. package/dist/web/dashboard/dist/assets/benchmark-tab-D7nae4k4.js +0 -1
  224. package/dist/web/dashboard/dist/assets/index-DSPPavjF.js +0 -218
  225. package/dist/web/dashboard/dist/assets/memories-tab-BHOvEW0o.js +0 -1
@@ -96,6 +96,137 @@ const PROFILES = [
96
96
  /\blet\s+\w+/, /\breturn\s+/,
97
97
  ],
98
98
  },
99
+ {
100
+ id: "ruby",
101
+ unique: [
102
+ /\bdef\s+\w+.*\bend\b/, /\bdo\s*\|/, /\battr_accessor\b/,
103
+ /\brequire\b/, /puts\b/,
104
+ ],
105
+ strong: [
106
+ /\bclass\s+\w+\s*</, /\bmodule\b/, /@\w+/,
107
+ ],
108
+ weak: [
109
+ /\bdef\b/, /\bend\b/,
110
+ ],
111
+ },
112
+ {
113
+ id: "php",
114
+ unique: [
115
+ /<\?php/, /\$\w+/, /->/, /\bfunction\s+\w+\s*\(/,
116
+ /\becho\b/,
117
+ ],
118
+ strong: [
119
+ /\bnamespace\b/, /\buse\s+/, /\barray\(/,
120
+ ],
121
+ weak: [
122
+ /\bclass\b/, /\breturn\b/,
123
+ ],
124
+ },
125
+ {
126
+ id: "swift",
127
+ unique: [
128
+ /\bfunc\s+\w+.*->/, /\blet\s+\w+\s*:/, /\bvar\s+\w+\s*:/,
129
+ /\bguard\b/, /\bprotocol\b/,
130
+ ],
131
+ strong: [
132
+ /\bstruct\b/, /\benum\b.*\bcase\b/, /\bimport\s+Foundation/,
133
+ ],
134
+ weak: [
135
+ /\bif\b/, /\breturn\b/,
136
+ ],
137
+ },
138
+ {
139
+ id: "kotlin",
140
+ unique: [
141
+ /\bfun\s+\w+/, /\bval\s+\w+/, /\bvar\s+\w+/,
142
+ /\bwhen\s*\(/, /\bdata\s+class\b/,
143
+ ],
144
+ strong: [
145
+ /\bcompanion\s+object\b/, /\bsealed\s+class\b/,
146
+ /\bimport\s+\w+\.\w+/,
147
+ ],
148
+ weak: [
149
+ /\bclass\b/, /\bif\b/,
150
+ ],
151
+ },
152
+ {
153
+ id: "scala",
154
+ unique: [
155
+ /\bdef\s+\w+.*:\s*\w+\s*=/, /\bcase\s+class\b/,
156
+ /\bcase\s+object\b/, /\bobject\s+\w+/, /\btrait\s+\w+/,
157
+ ],
158
+ strong: [
159
+ /\bval\s+\w+/, /\bvar\s+\w+/, /\bimplicit\b/,
160
+ ],
161
+ weak: [
162
+ /\bimport\b/, /\bif\b/,
163
+ ],
164
+ },
165
+ {
166
+ id: "elixir",
167
+ unique: [
168
+ /\bdefmodule\b/, /\bdef\s+\w+.*\bdo\b/, /\bdefp\b/,
169
+ /\|>\b/, /@\w+/,
170
+ ],
171
+ strong: [
172
+ /\bcase\s+\w+\s+do\b/, /\bwith\b.*<-/, /\bGenServer\b/,
173
+ ],
174
+ weak: [
175
+ /\bif\b/, /\bend\b/,
176
+ ],
177
+ },
178
+ {
179
+ id: "dart",
180
+ unique: [
181
+ /\bvoid\s+main\b.*\{/, /\bfinal\s+\w+\s*=/, /\bFuture</,
182
+ /\bStream</, /\brequired\s+this\./,
183
+ ],
184
+ strong: [
185
+ /\bclass\s+\w+\s+extends\b/, /\bimport\s+'/, /\basync\b/,
186
+ ],
187
+ weak: [
188
+ /\bif\b/, /\breturn\b/,
189
+ ],
190
+ },
191
+ {
192
+ id: "haskell",
193
+ unique: [
194
+ /\b::\s*/, /\bwhere\b$/, /\bmodule\s+\w+/,
195
+ /<-/, /->/,
196
+ ],
197
+ strong: [
198
+ /\bdata\b/, /\binstance\b/, /\bderiving\b/, /\bimport\s+/,
199
+ ],
200
+ weak: [
201
+ /\bif\b/, /\blet\b/,
202
+ ],
203
+ },
204
+ {
205
+ id: "cpp",
206
+ unique: [
207
+ /#include\s*</, /\bstd::\b/, /\btemplate\s*</,
208
+ /\bnamespace\b/, /::/,
209
+ ],
210
+ strong: [
211
+ /\bcout\b/, /\bnew\b/, /\bdelete\b/, /\bvirtual\b/,
212
+ ],
213
+ weak: [
214
+ /\bclass\b/, /\breturn\b/,
215
+ ],
216
+ },
217
+ {
218
+ id: "lua",
219
+ unique: [
220
+ /\bfunction\s+\w+.*\)\s*$/, /\blocal\s+\w+\s*=/,
221
+ /\btable\.\w+/, /\brequire\s*\(/, /\bself\.\w+/,
222
+ ],
223
+ strong: [
224
+ /\bfor\s+\w+\s*,/, /\bipairs\b/, /\bpairs\b/,
225
+ ],
226
+ weak: [
227
+ /\bif\b/, /\bend\b/,
228
+ ],
229
+ },
99
230
  ];
100
231
  const UNIQUE_WEIGHT = 3;
101
232
  const STRONG_WEIGHT = 1.5;
@@ -1 +1 @@
1
- {"version":3,"file":"language-detect.js","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language-detect.js","sourceRoot":"","sources":["../../../src/core/translation/language-detect.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,10 @@
4
4
  * Records which rule/template/AI choice was accepted or corrected.
5
5
  * Accepted translations boost confidence; corrected ones reduce it.
6
6
  * Queryable by construct + language pair.
7
+ *
8
+ * Persisted to SQLite with an in-memory Map cache for fast reads.
7
9
  */
10
+ import type Database from "better-sqlite3";
8
11
  export interface MemoryEntry {
9
12
  constructId: string;
10
13
  sourceLanguage: string;
@@ -37,6 +40,12 @@ export interface MemoryStats {
37
40
  }
38
41
  export declare class TranslationMemory {
39
42
  private entries;
43
+ private boostCache;
44
+ private readonly db;
45
+ constructor(db?: Database.Database);
46
+ private initTable;
47
+ private loadFromDb;
48
+ private makeId;
40
49
  /**
41
50
  * Record an accepted translation (positive signal).
42
51
  */
@@ -47,11 +56,15 @@ export declare class TranslationMemory {
47
56
  recordCorrected(input: CorrectedInput): void;
48
57
  /**
49
58
  * Query entries by construct + language pair.
59
+ * Uses DB if available, falls back to in-memory entries.
50
60
  */
51
61
  query(constructId: string, sourceLanguage: string, targetLanguage: string): MemoryEntry[];
52
62
  /**
53
63
  * Get confidence boost for a rule based on historical acceptance/correction.
54
64
  * Positive = rule works well. Negative = rule has been corrected.
65
+ *
66
+ * When DB is available, reads aggregated boost from DB via cache.
67
+ * Falls back to computing from in-memory entries.
55
68
  */
56
69
  getConfidenceBoost(ruleId: string): number;
57
70
  /**
@@ -60,6 +73,7 @@ export declare class TranslationMemory {
60
73
  getAllEntries(): MemoryEntry[];
61
74
  /**
62
75
  * Get statistics.
76
+ * When DB is available, reads aggregated counts from DB.
63
77
  */
64
78
  getStats(): MemoryStats;
65
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"translation-memory.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/memory/translation-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAqB;IAEpC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAY1C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAa5C;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,WAAW,EAAE;IASzF;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAgB1C;;OAEG;IACH,aAAa,IAAI,WAAW,EAAE;IAI9B;;OAEG;IACH,QAAQ,IAAI,WAAW;CAOxB"}
1
+ {"version":3,"file":"translation-memory.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/memory/translation-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgC;gBAEvC,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ;IAQlC,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,MAAM;IAId;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA4B1C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IA6B5C;;;OAGG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,WAAW,EAAE;IASzF;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAqB1C;;OAEG;IACH,aAAa,IAAI,WAAW,EAAE;IAI9B;;;OAGG;IACH,QAAQ,IAAI,WAAW;CAsBxB"}
@@ -4,11 +4,50 @@
4
4
  * Records which rule/template/AI choice was accepted or corrected.
5
5
  * Accepted translations boost confidence; corrected ones reduce it.
6
6
  * Queryable by construct + language pair.
7
+ *
8
+ * Persisted to SQLite with an in-memory Map cache for fast reads.
7
9
  */
8
10
  import { now } from "../../utils/time.js";
9
11
  // ── Translation Memory ─────────────────────────────
10
12
  export class TranslationMemory {
11
13
  entries = [];
14
+ boostCache = new Map();
15
+ db;
16
+ constructor(db) {
17
+ this.db = db;
18
+ if (this.db) {
19
+ this.initTable();
20
+ this.loadFromDb();
21
+ }
22
+ }
23
+ initTable() {
24
+ if (!this.db)
25
+ return;
26
+ this.db.exec(`
27
+ CREATE TABLE IF NOT EXISTS translation_memory (
28
+ id TEXT PRIMARY KEY,
29
+ construct_id TEXT NOT NULL,
30
+ source_language TEXT NOT NULL,
31
+ target_language TEXT NOT NULL,
32
+ correction_count INTEGER DEFAULT 0,
33
+ acceptance_count INTEGER DEFAULT 0,
34
+ confidence_boost REAL DEFAULT 0,
35
+ created_at TEXT NOT NULL,
36
+ updated_at TEXT NOT NULL
37
+ )
38
+ `);
39
+ }
40
+ loadFromDb() {
41
+ if (!this.db)
42
+ return;
43
+ const rows = this.db.prepare("SELECT * FROM translation_memory").all();
44
+ for (const row of rows) {
45
+ this.boostCache.set(row.id, row.confidence_boost);
46
+ }
47
+ }
48
+ makeId(constructId, sourceLanguage, targetLanguage) {
49
+ return `${constructId}:${sourceLanguage}:${targetLanguage}`;
50
+ }
12
51
  /**
13
52
  * Record an accepted translation (positive signal).
14
53
  */
@@ -22,6 +61,21 @@ export class TranslationMemory {
22
61
  confidence: input.confidence,
23
62
  timestamp: now(),
24
63
  });
64
+ if (this.db) {
65
+ const id = this.makeId(input.constructId, input.sourceLanguage, input.targetLanguage);
66
+ const timestamp = now();
67
+ this.db.prepare(`
68
+ INSERT INTO translation_memory (id, construct_id, source_language, target_language, acceptance_count, confidence_boost, created_at, updated_at)
69
+ VALUES (?, ?, ?, ?, 1, 0.05, ?, ?)
70
+ ON CONFLICT(id) DO UPDATE SET
71
+ acceptance_count = acceptance_count + 1,
72
+ confidence_boost = confidence_boost + 0.05,
73
+ updated_at = ?
74
+ `).run(id, input.constructId, input.sourceLanguage, input.targetLanguage, timestamp, timestamp, timestamp);
75
+ const row = this.db.prepare("SELECT confidence_boost FROM translation_memory WHERE id = ?").get(id);
76
+ if (row)
77
+ this.boostCache.set(id, row.confidence_boost);
78
+ }
25
79
  }
26
80
  /**
27
81
  * Record a corrected translation (negative signal).
@@ -37,9 +91,25 @@ export class TranslationMemory {
37
91
  correctionReason: input.correctionReason,
38
92
  timestamp: now(),
39
93
  });
94
+ if (this.db) {
95
+ const id = this.makeId(input.constructId, input.sourceLanguage, input.targetLanguage);
96
+ const timestamp = now();
97
+ this.db.prepare(`
98
+ INSERT INTO translation_memory (id, construct_id, source_language, target_language, correction_count, confidence_boost, created_at, updated_at)
99
+ VALUES (?, ?, ?, ?, 1, -0.1, ?, ?)
100
+ ON CONFLICT(id) DO UPDATE SET
101
+ correction_count = correction_count + 1,
102
+ confidence_boost = confidence_boost - 0.1,
103
+ updated_at = ?
104
+ `).run(id, input.constructId, input.sourceLanguage, input.targetLanguage, timestamp, timestamp, timestamp);
105
+ const row = this.db.prepare("SELECT confidence_boost FROM translation_memory WHERE id = ?").get(id);
106
+ if (row)
107
+ this.boostCache.set(id, row.confidence_boost);
108
+ }
40
109
  }
41
110
  /**
42
111
  * Query entries by construct + language pair.
112
+ * Uses DB if available, falls back to in-memory entries.
43
113
  */
44
114
  query(constructId, sourceLanguage, targetLanguage) {
45
115
  return this.entries.filter((e) => e.constructId === constructId &&
@@ -49,8 +119,16 @@ export class TranslationMemory {
49
119
  /**
50
120
  * Get confidence boost for a rule based on historical acceptance/correction.
51
121
  * Positive = rule works well. Negative = rule has been corrected.
122
+ *
123
+ * When DB is available, reads aggregated boost from DB via cache.
124
+ * Falls back to computing from in-memory entries.
52
125
  */
53
126
  getConfidenceBoost(ruleId) {
127
+ // Check DB cache first (keyed by construct:source:target)
128
+ const cachedBoost = this.boostCache.get(ruleId);
129
+ if (cachedBoost !== undefined)
130
+ return cachedBoost;
131
+ // Fall back to in-memory calculation
54
132
  const ruleEntries = this.entries.filter((e) => e.ruleId === ruleId);
55
133
  if (ruleEntries.length === 0)
56
134
  return 0;
@@ -73,8 +151,23 @@ export class TranslationMemory {
73
151
  }
74
152
  /**
75
153
  * Get statistics.
154
+ * When DB is available, reads aggregated counts from DB.
76
155
  */
77
156
  getStats() {
157
+ if (this.db) {
158
+ const row = this.db.prepare(`
159
+ SELECT
160
+ COALESCE(SUM(acceptance_count + correction_count), 0) AS total,
161
+ COALESCE(SUM(acceptance_count), 0) AS accepted,
162
+ COALESCE(SUM(correction_count), 0) AS corrected
163
+ FROM translation_memory
164
+ `).get();
165
+ return {
166
+ totalEntries: row.total,
167
+ accepted: row.accepted,
168
+ corrected: row.corrected,
169
+ };
170
+ }
78
171
  return {
79
172
  totalEntries: this.entries.length,
80
173
  accepted: this.entries.filter((e) => e.accepted).length,
@@ -1 +1 @@
1
- {"version":3,"file":"translation-memory.js","sourceRoot":"","sources":["../../../../src/core/translation/memory/translation-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAsC1C,sDAAsD;AAEtD,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAkB,EAAE,CAAC;IAEpC;;OAEG;IACH,cAAc,CAAC,KAAoB;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,GAAG,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAqB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK,CAAC,kBAAkB;YACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,SAAS,EAAE,GAAG,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAmB,EAAE,cAAsB,EAAE,cAAsB;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,WAAW;YAC7B,CAAC,CAAC,cAAc,KAAK,cAAc;YACnC,CAAC,CAAC,cAAc,KAAK,cAAc,CACtC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,MAAc;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACpE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,IAAI,IAAI,CAAC,CAAC,sCAAsC;YACvD,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,GAAG,CAAC,CAAC,uCAAuC;YACvD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YACjC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;YACvD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;SAC1D,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"translation-memory.js","sourceRoot":"","sources":["../../../../src/core/translation/memory/translation-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * C++ Parser Adapter — heuristic regex-based parser for C++ code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class CppParserAdapter implements ParserAdapter {
6
+ readonly languageId = "cpp";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=cpp-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/cpp-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2B1E,qBAAa,gBAAiB,YAAW,aAAa;IACpD,QAAQ,CAAC,UAAU,SAAS;IAE5B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}
@@ -0,0 +1,45 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*#include\s+/, constructId: "uc_import_named" },
3
+ { pattern: /^\s*using\s+namespace\s+/, constructId: "uc_import_named" },
4
+ { pattern: /^\s*template\s*</, constructId: "uc_class_def" },
5
+ { pattern: /^\s*class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
6
+ { pattern: /^\s*struct\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
7
+ { pattern: /^\s*namespace\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
8
+ { pattern: /^\s*enum\s+/, constructId: "uc_type_enum" },
9
+ { pattern: /^\s*try\s*\{/, constructId: "uc_try_catch" },
10
+ { pattern: /^\s*catch\s*\(/, constructId: "uc_try_catch" },
11
+ { pattern: /^\s*throw\s+/, constructId: "uc_throw" },
12
+ { pattern: /^\s*if\s*\(/, constructId: "uc_if_else" },
13
+ { pattern: /^\s*for\s*\(/, constructId: "uc_for_loop" },
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: /^\s*(?:[\w:*&<>]+\s+)+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 1 },
18
+ ];
19
+ export class CppParserAdapter {
20
+ languageId = "cpp";
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=cpp-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/cpp-parser-adapter.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAC9D,EAAE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACvE,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE;IAC5D,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,uBAAuB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC/E,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE;IACvD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;IAC1D,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,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE;IACtD,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,kCAAkC,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;CACxF,CAAC;AAEF,MAAM,OAAO,gBAAgB;IAClB,UAAU,GAAG,KAAK,CAAC;IAE5B,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"csharp-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/csharp-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA4B1E,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,UAAU,YAAY;IAE/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAqC9C"}
1
+ {"version":3,"file":"csharp-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/csharp-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiC1E,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,UAAU,YAAY;IAE/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAgC9C"}
@@ -1,16 +1,21 @@
1
1
  const LINE_RULES = [
2
2
  { pattern: /^\s*using\s+[\w.]+;/, constructId: "uc_import_named" },
3
+ // class with inheritance (: BaseClass)
4
+ // eslint-disable-next-line security/detect-unsafe-regex
5
+ { pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(abstract\s+|sealed\s+)?class\s+(\w+)\s*:\s*\w+/,
6
+ constructId: "uc_class_def", nameGroup: 4, also: [{ constructId: "uc_extends" }] },
3
7
  // eslint-disable-next-line security/detect-unsafe-regex
4
8
  { pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(abstract\s+)?class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 4 },
5
9
  { pattern: /^\s*(public|private|protected|internal)?\s*interface\s+(\w+)/, constructId: "uc_interface", nameGroup: 2 },
10
+ { pattern: /^\s*(public|private|protected|internal)?\s*enum\s+(\w+)/, constructId: "uc_type_enum", nameGroup: 2 },
6
11
  // eslint-disable-next-line security/detect-unsafe-regex
7
12
  { pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(async\s+)?([\w<>?[\]]+)\s+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 5,
8
13
  also: [{ constructId: "uc_async_fn" }] },
9
14
  { pattern: /^\s*try\s*\{/, constructId: "uc_try_catch" },
10
15
  { pattern: /^\s*throw\s+/, constructId: "uc_throw" },
11
16
  { 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" },
17
+ { pattern: /^\s*}\s*else\b/, constructId: "uc_if_else" },
18
+ { pattern: /^\s*(for|foreach)\s*\(/, constructId: "uc_for_each" },
14
19
  { pattern: /^\s*while\s*\(/, constructId: "uc_while" },
15
20
  { pattern: /^\s*switch\s*\(/, constructId: "uc_switch" },
16
21
  { pattern: /^\s*return\b/, constructId: "uc_return" },
@@ -30,26 +35,18 @@ export class CSharpParserAdapter {
30
35
  const match = rule.pattern.exec(line);
31
36
  if (!match)
32
37
  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
- }
38
+ constructs.push({
39
+ constructId: rule.constructId,
40
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
41
+ startLine: lineNum,
42
+ endLine: lineNum,
43
+ });
44
+ if (rule.also) {
45
+ for (const extra of rule.also) {
46
+ // uc_async_fn should only be emitted if "async" actually appears in the line
47
+ if (extra.constructId === "uc_async_fn" && !line.includes("async"))
48
+ continue;
49
+ constructs.push({ constructId: extra.constructId, startLine: lineNum, endLine: lineNum });
53
50
  }
54
51
  }
55
52
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"csharp-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/csharp-parser-adapter.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClE,wDAAwD;IACxD,EAAE,OAAO,EAAE,oFAAoF,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC5I,EAAE,OAAO,EAAE,8DAA8D,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACtH,wDAAwD;IACxD,EAAE,OAAO,EAAE,8FAA8F,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC/I,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE;IAC1C,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,aAAa,EAAE;IAC3D,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE;IACtD,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,mBAAmB;IACrB,UAAU,GAAG,QAAQ,CAAC;IAE/B,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,gEAAgE;gBAChE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvF,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;wBACxD,SAAS,EAAE,OAAO;wBAClB,OAAO,EAAE,OAAO;qBACjB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,IAAI,CAAC;wBACd,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;wBACxD,SAAS,EAAE,OAAO;wBAClB,OAAO,EAAE,OAAO;qBACjB,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;4BAC9B,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;wBAC5F,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
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
+ * Dart Parser Adapter — heuristic regex-based parser for Dart code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class DartParserAdapter implements ParserAdapter {
6
+ readonly languageId = "dart";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=dart-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dart-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/dart-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;CAsB9C"}
@@ -0,0 +1,44 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*import\s+['"]/, constructId: "uc_import_named" },
3
+ { pattern: /^\s*abstract\s+class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
4
+ { pattern: /^\s*class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
5
+ { pattern: /^\s*mixin\s+(\w+)/, constructId: "uc_class_def", nameGroup: 1 },
6
+ { pattern: /^\s*enum\s+(\w+)/, constructId: "uc_type_enum", nameGroup: 1 },
7
+ { pattern: /^\s*(?:async\s+)?Future\s*</, constructId: "uc_async_fn" },
8
+ { pattern: /^\s*(?:\w+\s+)+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 1 },
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*switch\s*\(/, constructId: "uc_switch" },
13
+ { pattern: /^\s*for\s*\(/, constructId: "uc_for_loop" },
14
+ { pattern: /^\s*while\s*\(/, constructId: "uc_while" },
15
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
16
+ { pattern: /\basync\b/, constructId: "uc_async_fn" },
17
+ ];
18
+ export class DartParserAdapter {
19
+ languageId = "dart";
20
+ parseSnippet(code) {
21
+ if (!code.trim())
22
+ return [];
23
+ const lines = code.split("\n");
24
+ const constructs = [];
25
+ for (let i = 0; i < lines.length; i++) {
26
+ const line = lines[i];
27
+ const lineNum = i + 1;
28
+ for (const rule of LINE_RULES) {
29
+ const match = rule.pattern.exec(line);
30
+ if (!match)
31
+ continue;
32
+ constructs.push({
33
+ constructId: rule.constructId,
34
+ name: rule.nameGroup ? match[rule.nameGroup] : undefined,
35
+ startLine: lineNum,
36
+ endLine: lineNum,
37
+ });
38
+ break;
39
+ }
40
+ }
41
+ return constructs;
42
+ }
43
+ }
44
+ //# sourceMappingURL=dart-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dart-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/dart-parser-adapter.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAChE,EAAE,OAAO,EAAE,8BAA8B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACtF,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC3E,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC3E,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IAC1E,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,aAAa,EAAE;IACtE,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IAChF,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,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE;IACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE;IACtD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;IACrD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,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
+ * Elixir Parser Adapter — heuristic regex-based parser for Elixir code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class ElixirParserAdapter implements ParserAdapter {
6
+ readonly languageId = "elixir";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=elixir-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/elixir-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2B1E,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,UAAU,YAAY;IAE/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}