@mcp-graph-workflow/mcp-graph 5.24.1 → 5.26.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 (135) hide show
  1. package/dist/api/router.d.ts.map +1 -1
  2. package/dist/api/router.js +2 -0
  3. package/dist/api/router.js.map +1 -1
  4. package/dist/api/routes/translation-project.d.ts +8 -0
  5. package/dist/api/routes/translation-project.d.ts.map +1 -0
  6. package/dist/api/routes/translation-project.js +338 -0
  7. package/dist/api/routes/translation-project.js.map +1 -0
  8. package/dist/api/routes/translation.d.ts.map +1 -1
  9. package/dist/api/routes/translation.js +105 -1
  10. package/dist/api/routes/translation.js.map +1 -1
  11. package/dist/core/code/code-indexer.d.ts +2 -0
  12. package/dist/core/code/code-indexer.d.ts.map +1 -1
  13. package/dist/core/code/code-indexer.js +9 -3
  14. package/dist/core/code/code-indexer.js.map +1 -1
  15. package/dist/core/code/code-types.d.ts +4 -0
  16. package/dist/core/code/code-types.d.ts.map +1 -1
  17. package/dist/core/code/code-types.js +1 -0
  18. package/dist/core/code/code-types.js.map +1 -1
  19. package/dist/core/code/ts-analyzer.d.ts.map +1 -1
  20. package/dist/core/code/ts-analyzer.js +77 -6
  21. package/dist/core/code/ts-analyzer.js.map +1 -1
  22. package/dist/core/knowledge/knowledge-packager.d.ts +44 -0
  23. package/dist/core/knowledge/knowledge-packager.d.ts.map +1 -0
  24. package/dist/core/knowledge/knowledge-packager.js +311 -0
  25. package/dist/core/knowledge/knowledge-packager.js.map +1 -0
  26. package/dist/core/store/migrations.d.ts.map +1 -1
  27. package/dist/core/store/migrations.js +41 -0
  28. package/dist/core/store/migrations.js.map +1 -1
  29. package/dist/core/translation/parsers/cpp-parser-adapter.d.ts +9 -0
  30. package/dist/core/translation/parsers/cpp-parser-adapter.d.ts.map +1 -0
  31. package/dist/core/translation/parsers/cpp-parser-adapter.js +45 -0
  32. package/dist/core/translation/parsers/cpp-parser-adapter.js.map +1 -0
  33. package/dist/core/translation/parsers/dart-parser-adapter.d.ts +9 -0
  34. package/dist/core/translation/parsers/dart-parser-adapter.d.ts.map +1 -0
  35. package/dist/core/translation/parsers/dart-parser-adapter.js +44 -0
  36. package/dist/core/translation/parsers/dart-parser-adapter.js.map +1 -0
  37. package/dist/core/translation/parsers/elixir-parser-adapter.d.ts +9 -0
  38. package/dist/core/translation/parsers/elixir-parser-adapter.d.ts.map +1 -0
  39. package/dist/core/translation/parsers/elixir-parser-adapter.js +45 -0
  40. package/dist/core/translation/parsers/elixir-parser-adapter.js.map +1 -0
  41. package/dist/core/translation/parsers/haskell-parser-adapter.d.ts +9 -0
  42. package/dist/core/translation/parsers/haskell-parser-adapter.d.ts.map +1 -0
  43. package/dist/core/translation/parsers/haskell-parser-adapter.js +38 -0
  44. package/dist/core/translation/parsers/haskell-parser-adapter.js.map +1 -0
  45. package/dist/core/translation/parsers/kotlin-parser-adapter.d.ts +9 -0
  46. package/dist/core/translation/parsers/kotlin-parser-adapter.d.ts.map +1 -0
  47. package/dist/core/translation/parsers/kotlin-parser-adapter.js +43 -0
  48. package/dist/core/translation/parsers/kotlin-parser-adapter.js.map +1 -0
  49. package/dist/core/translation/parsers/lua-parser-adapter.d.ts +9 -0
  50. package/dist/core/translation/parsers/lua-parser-adapter.d.ts.map +1 -0
  51. package/dist/core/translation/parsers/lua-parser-adapter.js +42 -0
  52. package/dist/core/translation/parsers/lua-parser-adapter.js.map +1 -0
  53. package/dist/core/translation/parsers/php-parser-adapter.d.ts +9 -0
  54. package/dist/core/translation/parsers/php-parser-adapter.d.ts.map +1 -0
  55. package/dist/core/translation/parsers/php-parser-adapter.js +44 -0
  56. package/dist/core/translation/parsers/php-parser-adapter.js.map +1 -0
  57. package/dist/core/translation/parsers/scala-parser-adapter.d.ts +9 -0
  58. package/dist/core/translation/parsers/scala-parser-adapter.d.ts.map +1 -0
  59. package/dist/core/translation/parsers/scala-parser-adapter.js +43 -0
  60. package/dist/core/translation/parsers/scala-parser-adapter.js.map +1 -0
  61. package/dist/core/translation/parsers/swift-parser-adapter.d.ts +9 -0
  62. package/dist/core/translation/parsers/swift-parser-adapter.d.ts.map +1 -0
  63. package/dist/core/translation/parsers/swift-parser-adapter.js +44 -0
  64. package/dist/core/translation/parsers/swift-parser-adapter.js.map +1 -0
  65. package/dist/core/translation/project-translation-orchestrator.d.ts +65 -0
  66. package/dist/core/translation/project-translation-orchestrator.d.ts.map +1 -0
  67. package/dist/core/translation/project-translation-orchestrator.js +336 -0
  68. package/dist/core/translation/project-translation-orchestrator.js.map +1 -0
  69. package/dist/core/translation/translation-orchestrator.d.ts +6 -2
  70. package/dist/core/translation/translation-orchestrator.d.ts.map +1 -1
  71. package/dist/core/translation/translation-orchestrator.js +35 -2
  72. package/dist/core/translation/translation-orchestrator.js.map +1 -1
  73. package/dist/core/translation/translation-project-store.d.ts +40 -0
  74. package/dist/core/translation/translation-project-store.d.ts.map +1 -0
  75. package/dist/core/translation/translation-project-store.js +195 -0
  76. package/dist/core/translation/translation-project-store.js.map +1 -0
  77. package/dist/core/translation/translation-project-types.d.ts +98 -0
  78. package/dist/core/translation/translation-project-types.d.ts.map +1 -0
  79. package/dist/core/translation/translation-project-types.js +84 -0
  80. package/dist/core/translation/translation-project-types.js.map +1 -0
  81. package/dist/core/translation/zip-extractor.d.ts +4 -0
  82. package/dist/core/translation/zip-extractor.d.ts.map +1 -0
  83. package/dist/core/translation/zip-extractor.js +194 -0
  84. package/dist/core/translation/zip-extractor.js.map +1 -0
  85. package/dist/mcp/tools/analyze-translation.d.ts.map +1 -1
  86. package/dist/mcp/tools/analyze-translation.js +5 -5
  87. package/dist/mcp/tools/analyze-translation.js.map +1 -1
  88. package/dist/mcp/tools/index.d.ts.map +1 -1
  89. package/dist/mcp/tools/index.js +2 -0
  90. package/dist/mcp/tools/index.js.map +1 -1
  91. package/dist/mcp/tools/knowledge-export.d.ts +8 -0
  92. package/dist/mcp/tools/knowledge-export.d.ts.map +1 -0
  93. package/dist/mcp/tools/knowledge-export.js +100 -0
  94. package/dist/mcp/tools/knowledge-export.js.map +1 -0
  95. package/dist/mcp/tools/reindex-knowledge.js +1 -1
  96. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  97. package/dist/mcp/tools/translate-code.d.ts.map +1 -1
  98. package/dist/mcp/tools/translate-code.js +7 -2
  99. package/dist/mcp/tools/translate-code.js.map +1 -1
  100. package/dist/mcp/tools/translation-jobs.d.ts.map +1 -1
  101. package/dist/mcp/tools/translation-jobs.js +4 -1
  102. package/dist/mcp/tools/translation-jobs.js.map +1 -1
  103. package/dist/schemas/knowledge-package.schema.d.ts +87 -0
  104. package/dist/schemas/knowledge-package.schema.d.ts.map +1 -0
  105. package/dist/schemas/knowledge-package.schema.js +48 -0
  106. package/dist/schemas/knowledge-package.schema.js.map +1 -0
  107. package/dist/web/dashboard/dist/assets/{benchmark-tab-sjsZBd-4.js → benchmark-tab-BAfHRc8R.js} +1 -1
  108. package/dist/web/dashboard/dist/assets/{circle-alert-DcTbCUEa.js → circle-alert-Xp4yHA83.js} +1 -1
  109. package/dist/web/dashboard/dist/assets/{context-tab-DNMJ2Pv-.js → context-tab-WZWpYE4Q.js} +1 -1
  110. package/dist/web/dashboard/dist/assets/{gitnexus-tab-CZ9LJbwz.js → gitnexus-tab-BL3gMYaZ.js} +1 -1
  111. package/dist/web/dashboard/dist/assets/{graph-section-BdcXKKoS.js → graph-section-B-cObR6x.js} +1 -1
  112. package/dist/web/dashboard/dist/assets/{graph-tab-CFzux3kf.js → graph-tab-DC5Iama3.js} +1 -1
  113. package/dist/web/dashboard/dist/assets/{graph-utils-_8jpWA5z.js → graph-utils-CdV9peLO.js} +1 -1
  114. package/dist/web/dashboard/dist/assets/index-CTdsOcRa.css +1 -0
  115. package/dist/web/dashboard/dist/assets/{index-CITYTuX5.js → index-DfEJaZLA.js} +46 -46
  116. package/dist/web/dashboard/dist/assets/{index-DSI2SYWO.js → index-iWhfMJa8.js} +1 -1
  117. package/dist/web/dashboard/dist/assets/{index-Bny20bel.js → index-z9HSPrpH.js} +1 -1
  118. package/dist/web/dashboard/dist/assets/{insights-tab-DUA76KUY.js → insights-tab-Cu1cH-bN.js} +1 -1
  119. package/dist/web/dashboard/dist/assets/{journey-tab-FTd6jBta.js → journey-tab-BtqgC4Wj.js} +1 -1
  120. package/dist/web/dashboard/dist/assets/languages-tab-BeJF5wPH.js +128 -0
  121. package/dist/web/dashboard/dist/assets/{loader-circle-D1DpGd2u.js → loader-circle-MkZSJbxU.js} +1 -1
  122. package/dist/web/dashboard/dist/assets/{logs-tab-CzL36_Qy.js → logs-tab-CA2dPs0v.js} +1 -1
  123. package/dist/web/dashboard/dist/assets/{lsp-tab-DdHhJq_H.js → lsp-tab-DuF6UV_3.js} +9 -19
  124. package/dist/web/dashboard/dist/assets/{memories-tab-CzgCahnV.js → memories-tab-blOtravG.js} +1 -1
  125. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-C8Cl7swI.js → prd-backlog-tab-DtwzxFyr.js} +1 -1
  126. package/dist/web/dashboard/dist/assets/{refresh-cw-DSYiHmbh.js → refresh-cw-VhHh0g7N.js} +1 -1
  127. package/dist/web/dashboard/dist/assets/{siebel-tab-B4XOaUGz.js → siebel-tab-DP6xoWD8.js} +3 -3
  128. package/dist/web/dashboard/dist/assets/{skills-tab-CkpnwPJY.js → skills-tab-Tspln3N1.js} +1 -1
  129. package/dist/web/dashboard/dist/assets/{style-BOQDk6qp.js → style-CsU39IOg.js} +1 -1
  130. package/dist/web/dashboard/dist/assets/triangle-alert-ZnXg11jO.js +26 -0
  131. package/dist/web/dashboard/dist/index.html +2 -2
  132. package/package.json +4 -2
  133. package/dist/web/dashboard/dist/assets/index-CvAguK65.css +0 -1
  134. package/dist/web/dashboard/dist/assets/languages-tab-B_nhFL2q.js +0 -70
  135. package/dist/web/dashboard/dist/assets/triangle-alert-Bf6Ly19h.js +0 -16
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Knowledge Packager — export/import knowledge packages for collaboration.
3
+ *
4
+ * Enables sharing accumulated RAG knowledge between project instances via
5
+ * portable JSON packages containing documents, relations, memories, and
6
+ * translation memory entries.
7
+ */
8
+ import { readAllMemories, writeMemory, listMemories } from "../memory/memory-reader.js";
9
+ import { generateId } from "../utils/id.js";
10
+ import { now } from "../utils/time.js";
11
+ import { logger } from "../utils/logger.js";
12
+ import { KnowledgePackageSchema, } from "../../schemas/knowledge-package.schema.js";
13
+ // ── Export ──────────────────────────────────────────────
14
+ export async function exportKnowledge(db, basePath, options) {
15
+ const includeMemories = options?.includeMemories ?? true;
16
+ const includeTranslationMemory = options?.includeTranslationMemory ?? true;
17
+ const includeRelations = options?.includeRelations ?? true;
18
+ const minQuality = options?.minQuality ?? 0;
19
+ logger.info("knowledge-packager:export:start", {
20
+ sources: options?.sources?.join(","),
21
+ minQuality,
22
+ includeMemories,
23
+ includeRelations,
24
+ includeTranslationMemory,
25
+ });
26
+ // 1. Query knowledge_documents
27
+ const documents = queryDocuments(db, options?.sources, minQuality);
28
+ // 2. Query relations for exported document IDs
29
+ let relations = [];
30
+ if (includeRelations && documents.length > 0) {
31
+ relations = queryRelations(db, documents);
32
+ }
33
+ // 3. Read memories
34
+ let memories = [];
35
+ if (includeMemories) {
36
+ const projectMemories = await readAllMemories(basePath);
37
+ memories = projectMemories.map((m) => ({
38
+ name: m.name,
39
+ content: m.content,
40
+ }));
41
+ }
42
+ // 4. Query translation memory
43
+ let translationMemory = [];
44
+ if (includeTranslationMemory) {
45
+ translationMemory = queryTranslationMemory(db);
46
+ }
47
+ // 5. Build manifest
48
+ const sourceTypes = [...new Set(documents.map((d) => d.sourceType))];
49
+ const projectName = getProjectName(db);
50
+ const pkg = {
51
+ version: "1.0",
52
+ manifest: {
53
+ projectName,
54
+ exportedAt: now(),
55
+ documentCount: documents.length,
56
+ memoryCount: memories.length,
57
+ sourceTypes,
58
+ qualityThreshold: minQuality,
59
+ },
60
+ documents,
61
+ relations: relations.length > 0 ? relations : undefined,
62
+ memories: memories.length > 0 ? memories : undefined,
63
+ translationMemory: translationMemory.length > 0 ? translationMemory : undefined,
64
+ };
65
+ const stats = {
66
+ documents: documents.length,
67
+ memories: memories.length,
68
+ relations: relations.length,
69
+ translationEntries: translationMemory.length,
70
+ };
71
+ logger.info("knowledge-packager:export:done", stats);
72
+ return { package: pkg, stats };
73
+ }
74
+ // ── Import ─────────────────────────────────────────────
75
+ export async function importKnowledge(db, basePath, pkg) {
76
+ // Validate package
77
+ const parsed = KnowledgePackageSchema.safeParse(pkg);
78
+ if (!parsed.success) {
79
+ const errorMsg = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
80
+ throw new Error(`Invalid knowledge package: ${errorMsg}`);
81
+ }
82
+ logger.info("knowledge-packager:import:start", {
83
+ documentCount: pkg.manifest.documentCount,
84
+ memoryCount: pkg.manifest.memoryCount,
85
+ projectName: pkg.manifest.projectName,
86
+ });
87
+ const result = {
88
+ documentsImported: 0,
89
+ documentsSkipped: 0,
90
+ memoriesImported: 0,
91
+ memoriesSkipped: 0,
92
+ relationsImported: 0,
93
+ translationEntriesImported: 0,
94
+ };
95
+ // 1. Import documents (dedup by content_hash)
96
+ const hashToNewId = new Map();
97
+ db.transaction(() => {
98
+ for (const doc of pkg.documents) {
99
+ const existing = db
100
+ .prepare("SELECT id FROM knowledge_documents WHERE content_hash = ?")
101
+ .get(doc.contentHash);
102
+ if (existing) {
103
+ hashToNewId.set(doc.contentHash, existing.id);
104
+ result.documentsSkipped++;
105
+ continue;
106
+ }
107
+ const id = generateId("kdoc");
108
+ const timestamp = now();
109
+ hashToNewId.set(doc.contentHash, id);
110
+ db.prepare(`INSERT INTO knowledge_documents
111
+ (id, source_type, source_id, title, content, content_hash, chunk_index, metadata, quality_score, created_at, updated_at)
112
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, doc.sourceType, doc.sourceId, doc.title, doc.content, doc.contentHash, 0, doc.metadata ? JSON.stringify(doc.metadata) : null, doc.qualityScore ?? null, doc.createdAt, timestamp);
113
+ result.documentsImported++;
114
+ }
115
+ })();
116
+ // 2. Import relations
117
+ const relations = pkg.relations ?? [];
118
+ if (relations.length > 0) {
119
+ // Build a map from sourceId to new doc IDs for relation resolution
120
+ const sourceIdToDocId = buildSourceIdToDocIdMap(db);
121
+ db.transaction(() => {
122
+ for (const rel of relations) {
123
+ const fromId = sourceIdToDocId.get(rel.fromDocSourceId);
124
+ const toId = sourceIdToDocId.get(rel.toDocSourceId);
125
+ if (!fromId || !toId)
126
+ continue;
127
+ // Check if relation already exists
128
+ const existing = db
129
+ .prepare("SELECT 1 FROM knowledge_relations WHERE from_doc_id = ? AND to_doc_id = ? AND relation = ?")
130
+ .get(fromId, toId, rel.relation);
131
+ if (existing)
132
+ continue;
133
+ const id = generateId("krel");
134
+ const timestamp = now();
135
+ db.prepare(`INSERT INTO knowledge_relations (id, from_doc_id, to_doc_id, relation, score, created_at)
136
+ VALUES (?, ?, ?, ?, ?, ?)`).run(id, fromId, toId, rel.relation, rel.score, timestamp);
137
+ result.relationsImported++;
138
+ }
139
+ })();
140
+ }
141
+ // 3. Import memories
142
+ if (pkg.memories && pkg.memories.length > 0) {
143
+ const existingMemories = new Set(await listMemories(basePath));
144
+ for (const mem of pkg.memories) {
145
+ if (existingMemories.has(mem.name)) {
146
+ result.memoriesSkipped++;
147
+ continue;
148
+ }
149
+ await writeMemory(basePath, mem.name, mem.content);
150
+ result.memoriesImported++;
151
+ }
152
+ }
153
+ // 4. Import translation memory
154
+ const tmEntries = pkg.translationMemory ?? [];
155
+ if (tmEntries.length > 0) {
156
+ db.transaction(() => {
157
+ for (const tm of tmEntries) {
158
+ const id = `${tm.constructId}:${tm.sourceLanguage}:${tm.targetLanguage}`;
159
+ const timestamp = now();
160
+ db.prepare(`INSERT INTO translation_memory (id, construct_id, source_language, target_language, acceptance_count, correction_count, confidence_boost, created_at, updated_at)
161
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
162
+ ON CONFLICT(id) DO UPDATE SET
163
+ acceptance_count = acceptance_count + excluded.acceptance_count,
164
+ correction_count = correction_count + excluded.correction_count,
165
+ confidence_boost = confidence_boost + excluded.confidence_boost,
166
+ updated_at = ?`).run(id, tm.constructId, tm.sourceLanguage, tm.targetLanguage, tm.acceptanceCount, tm.correctionCount, tm.confidenceBoost, timestamp, timestamp, timestamp);
167
+ result.translationEntriesImported++;
168
+ }
169
+ })();
170
+ }
171
+ logger.info("knowledge-packager:import:done", {
172
+ documentsImported: result.documentsImported,
173
+ documentsSkipped: result.documentsSkipped,
174
+ memoriesImported: result.memoriesImported,
175
+ memoriesSkipped: result.memoriesSkipped,
176
+ relationsImported: result.relationsImported,
177
+ translationEntriesImported: result.translationEntriesImported,
178
+ });
179
+ return result;
180
+ }
181
+ // ── Preview ────────────────────────────────────────────
182
+ export async function previewImport(db, basePath, pkg) {
183
+ const parsed = KnowledgePackageSchema.safeParse(pkg);
184
+ if (!parsed.success) {
185
+ const errorMsg = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
186
+ throw new Error(`Invalid knowledge package: ${errorMsg}`);
187
+ }
188
+ let newDocuments = 0;
189
+ let existingDocuments = 0;
190
+ for (const doc of pkg.documents) {
191
+ const exists = db
192
+ .prepare("SELECT 1 FROM knowledge_documents WHERE content_hash = ? LIMIT 1")
193
+ .get(doc.contentHash);
194
+ if (exists) {
195
+ existingDocuments++;
196
+ }
197
+ else {
198
+ newDocuments++;
199
+ }
200
+ }
201
+ let newMemories = 0;
202
+ let existingMemories = 0;
203
+ if (pkg.memories && pkg.memories.length > 0) {
204
+ const existingNames = new Set(await listMemories(basePath));
205
+ for (const mem of pkg.memories) {
206
+ if (existingNames.has(mem.name)) {
207
+ existingMemories++;
208
+ }
209
+ else {
210
+ newMemories++;
211
+ }
212
+ }
213
+ }
214
+ const sourceTypes = [...new Set(pkg.documents.map((d) => d.sourceType))];
215
+ return {
216
+ newDocuments,
217
+ existingDocuments,
218
+ newMemories,
219
+ existingMemories,
220
+ sourceTypes,
221
+ };
222
+ }
223
+ // ── Private helpers ────────────────────────────────────
224
+ function queryDocuments(db, sources, minQuality) {
225
+ let sql = "SELECT * FROM knowledge_documents WHERE 1=1";
226
+ const params = [];
227
+ if (sources && sources.length > 0) {
228
+ const placeholders = sources.map(() => "?").join(", ");
229
+ sql += ` AND source_type IN (${placeholders})`;
230
+ params.push(...sources);
231
+ }
232
+ if (minQuality > 0) {
233
+ sql += " AND COALESCE(quality_score, 0) >= ?";
234
+ params.push(minQuality);
235
+ }
236
+ sql += " ORDER BY created_at DESC";
237
+ const rows = db.prepare(sql).all(...params);
238
+ return rows.map((row) => ({
239
+ sourceType: row.source_type,
240
+ sourceId: row.source_id,
241
+ title: row.title,
242
+ content: row.content,
243
+ contentHash: row.content_hash,
244
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
245
+ qualityScore: row.quality_score ?? undefined,
246
+ createdAt: row.created_at,
247
+ }));
248
+ }
249
+ function queryRelations(db, documents) {
250
+ // Build a set of source_ids from exported docs for matching
251
+ const sourceIds = new Set(documents.map((d) => d.sourceId));
252
+ // Get all relations where both sides have docs in our export set
253
+ const rows = db
254
+ .prepare(`SELECT kr.*,
255
+ kd_from.source_id as from_source_id,
256
+ kd_to.source_id as to_source_id
257
+ FROM knowledge_relations kr
258
+ JOIN knowledge_documents kd_from ON kd_from.id = kr.from_doc_id
259
+ JOIN knowledge_documents kd_to ON kd_to.id = kr.to_doc_id`)
260
+ .all();
261
+ return rows
262
+ .filter((r) => sourceIds.has(r.from_source_id) && sourceIds.has(r.to_source_id))
263
+ .map((row) => ({
264
+ fromDocSourceId: row.from_source_id,
265
+ toDocSourceId: row.to_source_id,
266
+ relation: row.relation,
267
+ score: row.score,
268
+ }));
269
+ }
270
+ function queryTranslationMemory(db) {
271
+ try {
272
+ const rows = db
273
+ .prepare("SELECT * FROM translation_memory")
274
+ .all();
275
+ return rows.map((row) => ({
276
+ constructId: row.construct_id,
277
+ sourceLanguage: row.source_language,
278
+ targetLanguage: row.target_language,
279
+ confidenceBoost: row.confidence_boost,
280
+ acceptanceCount: row.acceptance_count,
281
+ correctionCount: row.correction_count,
282
+ }));
283
+ }
284
+ catch {
285
+ // translation_memory table may not exist
286
+ logger.debug("knowledge-packager:no-translation-memory-table");
287
+ return [];
288
+ }
289
+ }
290
+ function getProjectName(db) {
291
+ try {
292
+ const row = db
293
+ .prepare("SELECT name FROM projects LIMIT 1")
294
+ .get();
295
+ return row?.name ?? "unknown";
296
+ }
297
+ catch {
298
+ return "unknown";
299
+ }
300
+ }
301
+ function buildSourceIdToDocIdMap(db) {
302
+ const rows = db
303
+ .prepare("SELECT id, source_id FROM knowledge_documents")
304
+ .all();
305
+ const map = new Map();
306
+ for (const row of rows) {
307
+ map.set(row.source_id, row.id);
308
+ }
309
+ return map;
310
+ }
311
+ //# sourceMappingURL=knowledge-packager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-packager.js","sourceRoot":"","sources":["../../../src/core/knowledge/knowledge-packager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACL,sBAAsB,GAMvB,MAAM,2CAA2C,CAAC;AA4EnD,2DAA2D;AAE3D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAqB,EACrB,QAAgB,EAChB,OAAuB;IAEvB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC;IACzD,MAAM,wBAAwB,GAAG,OAAO,EAAE,wBAAwB,IAAI,IAAI,CAAC;IAC3E,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAC3D,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC;IAE5C,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;QAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;QACpC,UAAU;QACV,eAAe;QACf,gBAAgB;QAChB,wBAAwB;KACzB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnE,+CAA+C;IAC/C,IAAI,SAAS,GAA8B,EAAE,CAAC;IAC9C,IAAI,gBAAgB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,GAAmB,EAAE,CAAC;IAClC,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxD,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8BAA8B;IAC9B,IAAI,iBAAiB,GAA8B,EAAE,CAAC;IACtD,IAAI,wBAAwB,EAAE,CAAC;QAC7B,iBAAiB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAqB;QAC5B,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE;YACR,WAAW;YACX,UAAU,EAAE,GAAG,EAAE;YACjB,aAAa,EAAE,SAAS,CAAC,MAAM;YAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM;YAC5B,WAAW;YACX,gBAAgB,EAAE,UAAU;SAC7B;QACD,SAAS;QACT,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACvD,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACpD,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;KAChF,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,kBAAkB,EAAE,iBAAiB,CAAC,MAAM;KAC7C,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,0DAA0D;AAE1D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAqB,EACrB,QAAgB,EAChB,GAAqB;IAErB,mBAAmB;IACnB,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;QAC7C,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa;QACzC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW;QACrC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAiB;QAC3B,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,0BAA0B,EAAE,CAAC;KAC9B,CAAC;IAEF,8CAA8C;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,EAAE;iBAChB,OAAO,CAAC,2DAA2D,CAAC;iBACpE,GAAG,CAAC,GAAG,CAAC,WAAW,CAA+B,CAAC;YAEtD,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;YACxB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAErC,EAAE,CAAC,OAAO,CACR;;kDAE0C,CAC3C,CAAC,GAAG,CACH,EAAE,EACF,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,WAAW,EACf,CAAC,EACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAClD,GAAG,CAAC,YAAY,IAAI,IAAI,EACxB,GAAG,CAAC,SAAS,EACb,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,sBAAsB;IACtB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,mEAAmE;QACnE,MAAM,eAAe,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAEpD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAEpD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAE/B,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,EAAE;qBAChB,OAAO,CAAC,4FAA4F,CAAC;qBACrG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAEnC,IAAI,QAAQ;oBAAE,SAAS;gBAEvB,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;gBAExB,EAAE,CAAC,OAAO,CACR;qCAC2B,CAC5B,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAE5D,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,qBAAqB;IACrB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE/D,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;gBACzE,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;gBAExB,EAAE,CAAC,OAAO,CACR;;;;;;4BAMkB,CACnB,CAAC,GAAG,CACH,EAAE,EACF,EAAE,CAAC,WAAW,EACd,EAAE,CAAC,cAAc,EACjB,EAAE,CAAC,cAAc,EACjB,EAAE,CAAC,eAAe,EAClB,EAAE,CAAC,eAAe,EAClB,EAAE,CAAC,eAAe,EAClB,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;gBAEF,MAAM,CAAC,0BAA0B,EAAE,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;QAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;KAC9D,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0DAA0D;AAE1D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAqB,EACrB,QAAgB,EAChB,GAAqB;IAErB,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CAAC,kEAAkE,CAAC;aAC3E,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,IAAI,MAAM,EAAE,CAAC;YACX,iBAAiB,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE5D,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,gBAAgB,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY;QACZ,iBAAiB;QACjB,WAAW;QACX,gBAAgB;QAChB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,0DAA0D;AAE1D,SAAS,cAAc,CACrB,EAAqB,EACrB,OAA6B,EAC7B,UAAkB;IAElB,IAAI,GAAG,GAAG,6CAA6C,CAAC;IACxD,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,GAAG,IAAI,wBAAwB,YAAY,GAAG,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,GAAG,IAAI,sCAAsC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,IAAI,2BAA2B,CAAC;IAEnC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAsB,CAAC;IAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7D,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CACrB,EAAqB,EACrB,SAAoC;IAEpC,4DAA4D;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5D,iEAAiE;IACjE,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;;iEAK2D,CAC5D;SACA,GAAG,EAAoF,CAAC;IAE3F,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SAC/E,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,eAAe,EAAE,GAAG,CAAC,cAAc;QACnC,aAAa,EAAE,GAAG,CAAC,YAAY;QAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAqB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CAAC,kCAAkC,CAAC;aAC3C,GAAG,EAA4B,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,eAAe,EAAE,GAAG,CAAC,gBAAgB;YACrC,eAAe,EAAE,GAAG,CAAC,gBAAgB;YACrC,eAAe,EAAE,GAAG,CAAC,gBAAgB;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;QACzC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAqB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CAAC,mCAAmC,CAAC;aAC5C,GAAG,EAAkC,CAAC;QACzC,OAAO,GAAG,EAAE,IAAI,IAAI,SAAS,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAqB;IACpD,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,+CAA+C,CAAC;SACxD,GAAG,EAA8C,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAqqB3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAQvD"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AA8sB3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAQvD"}
@@ -665,6 +665,47 @@ const migrations = [
665
665
  CREATE INDEX IF NOT EXISTS idx_code_symbols_file ON code_symbols(file);
666
666
  `,
667
667
  },
668
+ {
669
+ version: 20,
670
+ description: "Translation projects + project files tables for full project conversion",
671
+ sql: `
672
+ CREATE TABLE IF NOT EXISTS translation_projects (
673
+ id TEXT PRIMARY KEY,
674
+ project_id TEXT NOT NULL,
675
+ name TEXT NOT NULL,
676
+ source_language TEXT,
677
+ target_language TEXT NOT NULL,
678
+ status TEXT NOT NULL DEFAULT 'uploading',
679
+ total_files INTEGER NOT NULL DEFAULT 0,
680
+ processed_files INTEGER NOT NULL DEFAULT 0,
681
+ overall_confidence REAL,
682
+ deterministic_pct REAL,
683
+ created_at TEXT NOT NULL,
684
+ updated_at TEXT NOT NULL
685
+ );
686
+ CREATE INDEX IF NOT EXISTS idx_tp_project ON translation_projects(project_id);
687
+ CREATE INDEX IF NOT EXISTS idx_tp_status ON translation_projects(status);
688
+
689
+ CREATE TABLE IF NOT EXISTS translation_project_files (
690
+ id TEXT PRIMARY KEY,
691
+ translation_project_id TEXT NOT NULL REFERENCES translation_projects(id) ON DELETE CASCADE,
692
+ file_path TEXT NOT NULL,
693
+ source_code TEXT NOT NULL,
694
+ source_language TEXT,
695
+ status TEXT NOT NULL DEFAULT 'pending',
696
+ job_id TEXT REFERENCES translation_jobs(id) ON DELETE SET NULL,
697
+ deterministic INTEGER,
698
+ analysis TEXT,
699
+ confidence_score REAL,
700
+ error_message TEXT,
701
+ created_at TEXT NOT NULL,
702
+ updated_at TEXT NOT NULL
703
+ );
704
+ CREATE INDEX IF NOT EXISTS idx_tpf_project ON translation_project_files(translation_project_id);
705
+ CREATE INDEX IF NOT EXISTS idx_tpf_job ON translation_project_files(job_id);
706
+ CREATE INDEX IF NOT EXISTS idx_tpf_status ON translation_project_files(status);
707
+ `,
708
+ },
668
709
  ];
669
710
  export function runMigrations(db) {
670
711
  // Create migrations tracking table
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/store/migrations.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"}
@@ -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"}
@@ -0,0 +1,45 @@
1
+ const LINE_RULES = [
2
+ { pattern: /^\s*import\s+/, constructId: "uc_import_named" },
3
+ { pattern: /^\s*alias\s+/, constructId: "uc_import_named" },
4
+ { pattern: /^\s*use\s+/, constructId: "uc_import_named" },
5
+ { pattern: /^\s*defmodule\s+(\w[\w.]*)/, constructId: "uc_class_def", nameGroup: 1 },
6
+ { pattern: /^\s*def\s+(\w+[?!]?)\s*\(/, constructId: "uc_fn_def", nameGroup: 1 },
7
+ { pattern: /^\s*defp\s+(\w+[?!]?)\s*\(/, constructId: "uc_fn_def", nameGroup: 1 },
8
+ { pattern: /^\s*try\s+do\b/, constructId: "uc_try_catch" },
9
+ { pattern: /^\s*rescue\b/, constructId: "uc_try_catch" },
10
+ { pattern: /^\s*raise\s+/, constructId: "uc_throw" },
11
+ { pattern: /^\s*cond\s+do\b/, constructId: "uc_if_else" },
12
+ { pattern: /^\s*if\s+/, constructId: "uc_if_else" },
13
+ { pattern: /^\s*unless\s+/, constructId: "uc_if_else" },
14
+ { pattern: /^\s*case\s+.+\s+do\b/, constructId: "uc_switch" },
15
+ { pattern: /^\s*for\s+.+<-\s*.+do\b/, constructId: "uc_for_each" },
16
+ { pattern: /Enum\.each\b/, constructId: "uc_for_each" },
17
+ { pattern: /^\s*return\b/, constructId: "uc_return" },
18
+ ];
19
+ export class ElixirParserAdapter {
20
+ languageId = "elixir";
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=elixir-parser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elixir-parser-adapter.js","sourceRoot":"","sources":["../../../../src/core/translation/parsers/elixir-parser-adapter.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,GAAW;IACzB,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAC5D,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAC3D,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACzD,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE;IACpF,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IAChF,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;IACjF,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;IAC1D,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;IACpD,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE;IACzD,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;IACnD,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE;IACvD,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE;IAC7D,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,aAAa,EAAE;IAClE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE;IACvD,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE;CACtD,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,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
+ * Haskell Parser Adapter — heuristic regex-based parser for Haskell code.
3
+ */
4
+ import type { ParserAdapter, ParsedConstruct } from "./parser-adapter.js";
5
+ export declare class HaskellParserAdapter implements ParserAdapter {
6
+ readonly languageId = "haskell";
7
+ parseSnippet(code: string): ParsedConstruct[];
8
+ }
9
+ //# sourceMappingURL=haskell-parser-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haskell-parser-adapter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/parsers/haskell-parser-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAoB1E,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,UAAU,aAAa;IAEhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;CAsB9C"}