@mcp-graph-workflow/mcp-graph 5.19.3 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/context/compact-context.d.ts +2 -1
- package/dist/core/context/compact-context.d.ts.map +1 -1
- package/dist/core/context/compact-context.js +29 -16
- package/dist/core/context/compact-context.js.map +1 -1
- package/dist/core/context/context-assembler.d.ts +9 -0
- package/dist/core/context/context-assembler.d.ts.map +1 -1
- package/dist/core/context/context-assembler.js +25 -2
- package/dist/core/context/context-assembler.js.map +1 -1
- package/dist/core/context/rag-context.d.ts +9 -0
- package/dist/core/context/rag-context.d.ts.map +1 -1
- package/dist/core/context/rag-context.js +29 -3
- package/dist/core/context/rag-context.js.map +1 -1
- package/dist/core/context/task-context-cache.d.ts +33 -0
- package/dist/core/context/task-context-cache.d.ts.map +1 -0
- package/dist/core/context/task-context-cache.js +61 -0
- package/dist/core/context/task-context-cache.js.map +1 -0
- package/dist/core/rag/multi-strategy-retrieval.d.ts.map +1 -1
- package/dist/core/rag/multi-strategy-retrieval.js +3 -6
- package/dist/core/rag/multi-strategy-retrieval.js.map +1 -1
- package/dist/core/rag/phase-boost-cache.d.ts +20 -0
- package/dist/core/rag/phase-boost-cache.d.ts.map +1 -0
- package/dist/core/rag/phase-boost-cache.js +50 -0
- package/dist/core/rag/phase-boost-cache.js.map +1 -0
- package/dist/core/rag/query-cache.d.ts +6 -8
- package/dist/core/rag/query-cache.d.ts.map +1 -1
- package/dist/core/rag/query-cache.js +21 -38
- package/dist/core/rag/query-cache.js.map +1 -1
- package/dist/core/rag/rag-pipeline.d.ts.map +1 -1
- package/dist/core/rag/rag-pipeline.js +14 -3
- package/dist/core/rag/rag-pipeline.js.map +1 -1
- package/dist/core/rag/tfidf-embedding-cache.d.ts +20 -0
- package/dist/core/rag/tfidf-embedding-cache.d.ts.map +1 -0
- package/dist/core/rag/tfidf-embedding-cache.js +46 -0
- package/dist/core/rag/tfidf-embedding-cache.js.map +1 -0
- package/dist/core/store/graph-snapshot-cache.d.ts +40 -0
- package/dist/core/store/graph-snapshot-cache.d.ts.map +1 -0
- package/dist/core/store/graph-snapshot-cache.js +39 -0
- package/dist/core/store/graph-snapshot-cache.js.map +1 -0
- package/dist/core/store/knowledge-store.d.ts +11 -0
- package/dist/core/store/knowledge-store.d.ts.map +1 -1
- package/dist/core/store/knowledge-store.js +48 -1
- package/dist/core/store/knowledge-store.js.map +1 -1
- package/dist/core/store/migrations.d.ts.map +1 -1
- package/dist/core/store/migrations.js +9 -0
- package/dist/core/store/migrations.js.map +1 -1
- package/dist/core/translation/ir/ir-converter.d.ts +17 -0
- package/dist/core/translation/ir/ir-converter.d.ts.map +1 -0
- package/dist/core/translation/ir/ir-converter.js +103 -0
- package/dist/core/translation/ir/ir-converter.js.map +1 -0
- package/dist/core/translation/ir/ir-types.d.ts +50 -0
- package/dist/core/translation/ir/ir-types.d.ts.map +1 -0
- package/dist/core/translation/ir/ir-types.js +42 -0
- package/dist/core/translation/ir/ir-types.js.map +1 -0
- package/dist/core/translation/memory/translation-memory.d.ts +66 -0
- package/dist/core/translation/memory/translation-memory.d.ts.map +1 -0
- package/dist/core/translation/memory/translation-memory.js +85 -0
- package/dist/core/translation/memory/translation-memory.js.map +1 -0
- package/dist/core/translation/parsers/csharp-parser-adapter.d.ts +9 -0
- package/dist/core/translation/parsers/csharp-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/csharp-parser-adapter.js +61 -0
- package/dist/core/translation/parsers/csharp-parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/go-parser-adapter.d.ts +9 -0
- package/dist/core/translation/parsers/go-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/go-parser-adapter.js +40 -0
- package/dist/core/translation/parsers/go-parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/java-parser-adapter.d.ts +9 -0
- package/dist/core/translation/parsers/java-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/java-parser-adapter.js +48 -0
- package/dist/core/translation/parsers/java-parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/ruby-parser-adapter.d.ts +9 -0
- package/dist/core/translation/parsers/ruby-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/ruby-parser-adapter.js +45 -0
- package/dist/core/translation/parsers/ruby-parser-adapter.js.map +1 -0
- package/dist/core/translation/parsers/rust-parser-adapter.d.ts +9 -0
- package/dist/core/translation/parsers/rust-parser-adapter.d.ts.map +1 -0
- package/dist/core/translation/parsers/rust-parser-adapter.js +47 -0
- package/dist/core/translation/parsers/rust-parser-adapter.js.map +1 -0
- package/dist/core/translation/pipeline/translation-pipeline.d.ts +42 -0
- package/dist/core/translation/pipeline/translation-pipeline.d.ts.map +1 -0
- package/dist/core/translation/pipeline/translation-pipeline.js +127 -0
- package/dist/core/translation/pipeline/translation-pipeline.js.map +1 -0
- package/dist/core/translation/repair/repair-loop.d.ts +40 -0
- package/dist/core/translation/repair/repair-loop.d.ts.map +1 -0
- package/dist/core/translation/repair/repair-loop.js +68 -0
- package/dist/core/translation/repair/repair-loop.js.map +1 -0
- package/dist/core/translation/rules/python-to-ts-rules.d.ts +7 -0
- package/dist/core/translation/rules/python-to-ts-rules.d.ts.map +1 -0
- package/dist/core/translation/rules/python-to-ts-rules.js +160 -0
- package/dist/core/translation/rules/python-to-ts-rules.js.map +1 -0
- package/dist/core/translation/rules/rule-engine.d.ts +38 -0
- package/dist/core/translation/rules/rule-engine.d.ts.map +1 -0
- package/dist/core/translation/rules/rule-engine.js +95 -0
- package/dist/core/translation/rules/rule-engine.js.map +1 -0
- package/dist/core/translation/rules/rule-schema.d.ts +53 -0
- package/dist/core/translation/rules/rule-schema.d.ts.map +1 -0
- package/dist/core/translation/rules/rule-schema.js +62 -0
- package/dist/core/translation/rules/rule-schema.js.map +1 -0
- package/dist/core/translation/rules/ts-to-python-rules.d.ts +7 -0
- package/dist/core/translation/rules/ts-to-python-rules.d.ts.map +1 -0
- package/dist/core/translation/rules/ts-to-python-rules.js +188 -0
- package/dist/core/translation/rules/ts-to-python-rules.js.map +1 -0
- package/dist/core/translation/ucr/construct-seed-data.json +7132 -0
- package/dist/core/translation/validators/code-validator.d.ts +30 -0
- package/dist/core/translation/validators/code-validator.d.ts.map +1 -0
- package/dist/core/translation/validators/code-validator.js +159 -0
- package/dist/core/translation/validators/code-validator.js.map +1 -0
- package/package.json +7 -5
|
@@ -8,6 +8,7 @@ import { generateId } from "../utils/id.js";
|
|
|
8
8
|
import { now } from "../utils/time.js";
|
|
9
9
|
import { logger } from "../utils/logger.js";
|
|
10
10
|
import { getPhaseBoost, applyPhaseBoost } from "../rag/phase-metadata.js";
|
|
11
|
+
import { PhaseBoostCache } from "../rag/phase-boost-cache.js";
|
|
11
12
|
function rowToDoc(row) {
|
|
12
13
|
return {
|
|
13
14
|
id: row.id,
|
|
@@ -30,6 +31,7 @@ export function contentHash(content) {
|
|
|
30
31
|
}
|
|
31
32
|
export class KnowledgeStore {
|
|
32
33
|
db;
|
|
34
|
+
phaseBoostCache = new PhaseBoostCache({ maxSize: 100, ttlMs: 2 * 60 * 1000 });
|
|
33
35
|
constructor(db) {
|
|
34
36
|
this.db = db;
|
|
35
37
|
}
|
|
@@ -121,6 +123,11 @@ export class KnowledgeStore {
|
|
|
121
123
|
* Documents tagged with phases relevant to the current phase are ranked higher.
|
|
122
124
|
*/
|
|
123
125
|
searchWithPhaseBoost(query, currentPhase, limit = 20) {
|
|
126
|
+
// Check cache first
|
|
127
|
+
const cached = this.phaseBoostCache.get(query, currentPhase);
|
|
128
|
+
if (cached) {
|
|
129
|
+
return cached;
|
|
130
|
+
}
|
|
124
131
|
// Fetch more results than needed to allow re-ranking (Bug #051: cap at 200)
|
|
125
132
|
const rawResults = this.search(query, Math.min(limit * 2, 200));
|
|
126
133
|
const boosted = rawResults.map((result) => {
|
|
@@ -135,7 +142,17 @@ export class KnowledgeStore {
|
|
|
135
142
|
});
|
|
136
143
|
// Re-sort by boosted score (higher = better)
|
|
137
144
|
boosted.sort((a, b) => b.score - a.score);
|
|
138
|
-
|
|
145
|
+
const results = boosted.slice(0, limit);
|
|
146
|
+
// Cache results
|
|
147
|
+
this.phaseBoostCache.set(query, currentPhase, results);
|
|
148
|
+
return results;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Invalidate the phase-boosted search cache.
|
|
152
|
+
* Call on knowledge:indexed events or phase changes.
|
|
153
|
+
*/
|
|
154
|
+
invalidatePhaseBoostCache() {
|
|
155
|
+
this.phaseBoostCache.invalidateAll();
|
|
139
156
|
}
|
|
140
157
|
/**
|
|
141
158
|
* Delete a knowledge document by ID.
|
|
@@ -234,6 +251,36 @@ export class KnowledgeStore {
|
|
|
234
251
|
}
|
|
235
252
|
return updated;
|
|
236
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Batch update pre-computed recency_score for all documents.
|
|
256
|
+
* Formula: pow(0.5, ageDays / 30) — 30-day half-life exponential decay.
|
|
257
|
+
*/
|
|
258
|
+
batchUpdateRecencyScores() {
|
|
259
|
+
const PAGE_SIZE = 1000;
|
|
260
|
+
const update = this.db.prepare("UPDATE knowledge_documents SET recency_score = ? WHERE id = ?");
|
|
261
|
+
const select = this.db.prepare("SELECT id, created_at FROM knowledge_documents LIMIT ? OFFSET ?");
|
|
262
|
+
let updated = 0;
|
|
263
|
+
let offset = 0;
|
|
264
|
+
while (true) {
|
|
265
|
+
const rows = select.all(PAGE_SIZE, offset);
|
|
266
|
+
if (rows.length === 0)
|
|
267
|
+
break;
|
|
268
|
+
this.db.transaction(() => {
|
|
269
|
+
for (const row of rows) {
|
|
270
|
+
const ageMs = Date.now() - new Date(row.created_at).getTime();
|
|
271
|
+
const ageDays = Math.max(0, ageMs / (24 * 60 * 60 * 1000));
|
|
272
|
+
const score = Math.pow(0.5, ageDays / 30);
|
|
273
|
+
update.run(score, row.id);
|
|
274
|
+
updated++;
|
|
275
|
+
}
|
|
276
|
+
})();
|
|
277
|
+
offset += PAGE_SIZE;
|
|
278
|
+
if (rows.length < PAGE_SIZE)
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
logger.debug("Recency scores updated", { updated });
|
|
282
|
+
return updated;
|
|
283
|
+
}
|
|
237
284
|
/**
|
|
238
285
|
* Search with quality score weighting applied to BM25 results.
|
|
239
286
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,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,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge-store.js","sourceRoot":"","sources":["../../../src/core/store/knowledge-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,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,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAyB9D,SAAS,QAAQ,CAAC,GAAiB;IACjC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,WAAkC;QAClD,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7D,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IACtB,eAAe,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAEtF,YAAY,EAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,MAAM,CAAU,gBAAgB,GAAG,OAAO,CAAC,CAAC,eAAe;IAEnE,MAAM,CAAC,GAAuB;QAC5B,6DAA6D;QAC7D,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,MAAM,eAAe,cAAc,CAAC,gBAAgB,uCAAuC,CAAC,CAAC;QACjJ,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtC,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;aACrB,OAAO,CAAC,4EAA4E,CAAC;aACrF,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAA6B,CAAC;QAEvD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5F,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;;6CAEuC,CACxC,CAAC,GAAG,CACH,EAAE,EACF,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,OAAO,EACX,IAAI,EACJ,GAAG,CAAC,UAAU,IAAI,CAAC,EACnB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAClD,SAAS,EACT,SAAS,CACV,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAsB,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,IAA0B;QACrC,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,EAAU;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,gDAAgD,CAAC;aACzD,GAAG,CAAC,EAAE,CAA6B,CAAC;QACvC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAA+E;QAClF,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QAEpC,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;iBACjB,OAAO,CACN,mGAAmG,CACpG;iBACA,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAmB,CAAC;YAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,6EAA6E,CAC9E;aACA,GAAG,CAAC,KAAK,EAAE,MAAM,CAAmB,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,QAAgB,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;iBAKS,CACV;aACA,GAAG,CAAC,KAAK,EAAE,KAAK,CAA4C,CAAC;QAEhE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,GAAG,QAAQ,CAAC,GAAG,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,KAAa,EACb,YAA4B,EAC5B,QAAgB,EAAE;QAElB,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAA0E,CAAC;QACpF,CAAC;QAED,4EAA4E;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,KAA2B,CAAC;YAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO;gBACL,GAAG,MAAM;gBACT,KAAK,EAAE,YAAY;gBACnB,UAAU,EAAE,KAAK;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAExC,gBAAgB;QAChB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAEvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,yBAAyB;QACvB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CAAC,8CAA8C,CAAC;aACvD,GAAG,CAAC,EAAE,CAAC,CAAC;QACX,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAA+B,EAAE,QAAgB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CAAC,yEAAyE,CAAC;aAClF,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAgC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CAAC,uEAAuE,CAAC;iBAChF,GAAG,CAAC,UAAU,CAAoB,CAAC;YACtC,OAAO,GAAG,CAAC,GAAG,CAAC;QACjB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,iDAAiD,CAAC;aAC1D,GAAG,EAAqB,CAAC;QAC5B,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,kEAAkE,CAAC;aAC3E,GAAG,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,4EAA4E,CAAC;aACrF,GAAG,CAAC,QAAQ,CAAmB,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,EAAU,EAAE,KAAa;QAC1C,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,+DAA+D,CAAC;aACxE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAU;QACrB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE;aACJ,OAAO,CAAC,iGAAiG,CAAC;aAC1G,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,2DAA2D;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC;QAClG,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAA8C,CAAC;YACxF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAE7B,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACpE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACzB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,IAAI,SAAS,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS;gBAAE,MAAM;QACrC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC;QAClG,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAA8C,CAAC;YACxF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAE7B,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;oBAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;oBAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,IAAI,SAAS,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS;gBAAE,MAAM;QACrC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB,CACf,KAAa,EACb,QAAgB,EAAE,EAClB,OAAiC;QAEjC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;iBAMS,CACV;aACA,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAkE,CAAC;QAElG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,GAAG,QAAQ,CAAC,GAAG,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO;YAC7C,YAAY,EAAE,GAAG,CAAC,OAAO;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;;;;iBAOS,CACV;aACA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAmB,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,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;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/core/store/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AA2pB3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA6BzD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAQvD"}
|
|
@@ -647,6 +647,14 @@ const migrations = [
|
|
|
647
647
|
);
|
|
648
648
|
`,
|
|
649
649
|
},
|
|
650
|
+
{
|
|
651
|
+
version: 18,
|
|
652
|
+
description: "Add pre-computed recency_score column to knowledge_documents",
|
|
653
|
+
sql: `
|
|
654
|
+
ALTER TABLE knowledge_documents ADD COLUMN recency_score REAL DEFAULT 1.0;
|
|
655
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_recency ON knowledge_documents(recency_score);
|
|
656
|
+
`,
|
|
657
|
+
},
|
|
650
658
|
];
|
|
651
659
|
export function runMigrations(db) {
|
|
652
660
|
// Create migrations tracking table
|
|
@@ -679,5 +687,6 @@ export function configureDb(db) {
|
|
|
679
687
|
db.pragma("cache_size = -8000");
|
|
680
688
|
db.pragma("busy_timeout = 5000");
|
|
681
689
|
db.pragma("temp_store = MEMORY");
|
|
690
|
+
db.pragma("mmap_size = 67108864");
|
|
682
691
|
}
|
|
683
692
|
//# sourceMappingURL=migrations.js.map
|
|
@@ -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":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,oEAAoE;QACjF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsEJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,6DAA6D;QAC1E,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,uEAAuE;QACpF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE;;;;;;;;KAQJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,oEAAoE;QACjF,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkEJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE;;;;;;;;;;;;;KAaJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,sEAAsE;QACnF,GAAG,EAAE;;;;;;KAMJ;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;KAuBJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+DAA+D;QAC5E,GAAG,EAAE;;;;;;KAMJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,sFAAsF;QACnG,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2FJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iEAAiE;QAC9E,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8CJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,oEAAoE;QACjF,GAAG,EAAE;;;;;;;;;;;;;;;;KAgBJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iEAAiE;QAC9E,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,8DAA8D;QAC3E,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwEJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE;;;;;;;;;;;KAWJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mEAAmE;QAChF,GAAG,EAAE;;;;;KAKJ;KACF;IACD;QACE,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,8DAA8D;QAC3E,GAAG,EAAE;;;KAGJ;KACF;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,EAAE;SACC,OAAO,CAAC,iCAAiC,CAAC;SAC1C,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAA2B,CAAC,OAAO,CAAC,CACtD,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QAE7C,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACjG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvB,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAqB;IAC/C,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IR Converter — converts ParsedConstruct[] from parser adapters to IR tree.
|
|
3
|
+
*
|
|
4
|
+
* Maps UCR construct IDs to language-agnostic IRNodeType values.
|
|
5
|
+
* Unknown constructs fall back to "Expression" type.
|
|
6
|
+
*/
|
|
7
|
+
import type { ParsedConstruct } from "../parsers/parser-adapter.js";
|
|
8
|
+
import { type IRNode } from "./ir-types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Convert an array of ParsedConstruct (from any parser adapter) into an IR tree.
|
|
11
|
+
*
|
|
12
|
+
* Each construct becomes a flat child of the Program root.
|
|
13
|
+
* Nesting (e.g., function containing if-statements) is handled
|
|
14
|
+
* separately by the IR builder in task 4.1b.
|
|
15
|
+
*/
|
|
16
|
+
export declare function convertToIR(constructs: ParsedConstruct[]): IRNode;
|
|
17
|
+
//# sourceMappingURL=ir-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-converter.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/ir/ir-converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAA8B,KAAK,MAAM,EAAmB,MAAM,eAAe,CAAC;AA8FzF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAWjE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IR Converter — converts ParsedConstruct[] from parser adapters to IR tree.
|
|
3
|
+
*
|
|
4
|
+
* Maps UCR construct IDs to language-agnostic IRNodeType values.
|
|
5
|
+
* Unknown constructs fall back to "Expression" type.
|
|
6
|
+
*/
|
|
7
|
+
import { createIRNode, createIRTree } from "./ir-types.js";
|
|
8
|
+
// ── UCR → IR Mapping ──────────────────────────────
|
|
9
|
+
/** Maps UCR construct ID prefixes/names to IR node types. */
|
|
10
|
+
const CONSTRUCT_TO_IR = {
|
|
11
|
+
// Functions
|
|
12
|
+
uc_fn_def: "FunctionDecl",
|
|
13
|
+
uc_fn_call: "Expression",
|
|
14
|
+
uc_arrow_fn: "ArrowFunction",
|
|
15
|
+
uc_method_def: "MethodDecl",
|
|
16
|
+
uc_constructor: "MethodDecl",
|
|
17
|
+
uc_getter: "MethodDecl",
|
|
18
|
+
uc_setter: "MethodDecl",
|
|
19
|
+
uc_generator: "FunctionDecl",
|
|
20
|
+
uc_default_param: "Expression",
|
|
21
|
+
uc_rest_param: "Expression",
|
|
22
|
+
// Async
|
|
23
|
+
uc_async_fn: "AsyncFunction",
|
|
24
|
+
uc_await: "AwaitExpr",
|
|
25
|
+
uc_promise_all: "Expression",
|
|
26
|
+
// Classes
|
|
27
|
+
uc_class_def: "ClassDecl",
|
|
28
|
+
uc_interface: "InterfaceDecl",
|
|
29
|
+
uc_abstract_class: "ClassDecl",
|
|
30
|
+
uc_extends: "Expression",
|
|
31
|
+
uc_implements: "Expression",
|
|
32
|
+
uc_property: "PropertyDecl",
|
|
33
|
+
uc_static_method: "MethodDecl",
|
|
34
|
+
// Control flow
|
|
35
|
+
uc_if_else: "IfStatement",
|
|
36
|
+
uc_ternary: "Expression",
|
|
37
|
+
uc_switch: "SwitchCase",
|
|
38
|
+
uc_for_loop: "ForLoop",
|
|
39
|
+
uc_for_each: "ForLoop",
|
|
40
|
+
uc_while: "WhileLoop",
|
|
41
|
+
uc_do_while: "WhileLoop",
|
|
42
|
+
uc_break: "Expression",
|
|
43
|
+
uc_continue: "Expression",
|
|
44
|
+
uc_return: "ReturnStatement",
|
|
45
|
+
// Error handling
|
|
46
|
+
uc_try_catch: "TryCatch",
|
|
47
|
+
uc_try_finally: "TryCatch",
|
|
48
|
+
uc_throw: "ThrowStatement",
|
|
49
|
+
// Modules
|
|
50
|
+
uc_import_named: "Import",
|
|
51
|
+
uc_import_default: "Import",
|
|
52
|
+
uc_import_namespace: "Import",
|
|
53
|
+
uc_export_named: "Export",
|
|
54
|
+
uc_export_default: "Export",
|
|
55
|
+
// Decorators & types
|
|
56
|
+
uc_type_alias: "TypeAnnotation",
|
|
57
|
+
uc_type_enum: "TypeAnnotation",
|
|
58
|
+
uc_type_generic: "TypeAnnotation",
|
|
59
|
+
// Variables
|
|
60
|
+
uc_const_decl: "VariableDecl",
|
|
61
|
+
uc_let_decl: "VariableDecl",
|
|
62
|
+
uc_var_decl: "VariableDecl",
|
|
63
|
+
uc_assign: "Expression",
|
|
64
|
+
// Collections (map to Expression — they are method calls)
|
|
65
|
+
uc_arr_map: "Expression",
|
|
66
|
+
uc_arr_filter: "Expression",
|
|
67
|
+
uc_arr_reduce: "Expression",
|
|
68
|
+
uc_arr_push: "Expression",
|
|
69
|
+
uc_arr_includes: "Expression",
|
|
70
|
+
uc_obj_keys: "Expression",
|
|
71
|
+
// Operators
|
|
72
|
+
uc_nullish: "Expression",
|
|
73
|
+
uc_optional_chain: "Expression",
|
|
74
|
+
uc_spread: "Expression",
|
|
75
|
+
uc_destruct_obj: "Expression",
|
|
76
|
+
uc_destruct_arr: "Expression",
|
|
77
|
+
uc_template_lit: "Expression",
|
|
78
|
+
};
|
|
79
|
+
// ── Converter ──────────────────────────────────────
|
|
80
|
+
/**
|
|
81
|
+
* Resolve IR node type from UCR construct ID.
|
|
82
|
+
* Falls back to "Expression" for unknown constructs.
|
|
83
|
+
*/
|
|
84
|
+
function resolveIRType(constructId) {
|
|
85
|
+
return CONSTRUCT_TO_IR[constructId] ?? "Expression";
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Convert an array of ParsedConstruct (from any parser adapter) into an IR tree.
|
|
89
|
+
*
|
|
90
|
+
* Each construct becomes a flat child of the Program root.
|
|
91
|
+
* Nesting (e.g., function containing if-statements) is handled
|
|
92
|
+
* separately by the IR builder in task 4.1b.
|
|
93
|
+
*/
|
|
94
|
+
export function convertToIR(constructs) {
|
|
95
|
+
const nodes = constructs.map((c) => createIRNode(resolveIRType(c.constructId), {
|
|
96
|
+
name: c.name,
|
|
97
|
+
startLine: c.startLine,
|
|
98
|
+
endLine: c.endLine,
|
|
99
|
+
metadata: { constructId: c.constructId },
|
|
100
|
+
}));
|
|
101
|
+
return createIRTree(nodes);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=ir-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-converter.js","sourceRoot":"","sources":["../../../../src/core/translation/ir/ir-converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAgC,MAAM,eAAe,CAAC;AAEzF,qDAAqD;AAErD,6DAA6D;AAC7D,MAAM,eAAe,GAA+B;IAClD,YAAY;IACZ,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,eAAe;IAC5B,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,YAAY;IAC5B,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,YAAY;IAC9B,aAAa,EAAE,YAAY;IAE3B,QAAQ;IACR,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,YAAY;IAE5B,UAAU;IACV,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,eAAe;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,cAAc;IAC3B,gBAAgB,EAAE,YAAY;IAE9B,eAAe;IACf,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,iBAAiB;IAE5B,iBAAiB;IACjB,YAAY,EAAE,UAAU;IACxB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,gBAAgB;IAE1B,UAAU;IACV,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,mBAAmB,EAAE,QAAQ;IAC7B,eAAe,EAAE,QAAQ;IACzB,iBAAiB,EAAE,QAAQ;IAE3B,qBAAqB;IACrB,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,gBAAgB;IAC9B,eAAe,EAAE,gBAAgB;IAEjC,YAAY;IACZ,aAAa,EAAE,cAAc;IAC7B,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,YAAY;IAEvB,0DAA0D;IAC1D,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,YAAY;IAC3B,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,YAAY;IACzB,eAAe,EAAE,YAAY;IAC7B,WAAW,EAAE,YAAY;IAEzB,YAAY;IACZ,UAAU,EAAE,YAAY;IACxB,iBAAiB,EAAE,YAAY;IAC/B,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,YAAY;IAC7B,eAAe,EAAE,YAAY;IAC7B,eAAe,EAAE,YAAY;CAC9B,CAAC;AAEF,sDAAsD;AAEtD;;;GAGG;AACH,SAAS,aAAa,CAAC,WAAmB;IACxC,OAAO,eAAe,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,UAA6B;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;QACzC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;KACzC,CAAC,CACH,CAAC;IAEF,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IR (Intermediate Representation) — language-agnostic canonical node types.
|
|
3
|
+
*
|
|
4
|
+
* Represents code constructs in a language-neutral form for translation.
|
|
5
|
+
* Maps 1:1 with UCR canonical construct categories but uses simplified
|
|
6
|
+
* node types for tree representation.
|
|
7
|
+
*
|
|
8
|
+
* Design principles:
|
|
9
|
+
* - Language-agnostic: no TS-specific or Python-specific naming
|
|
10
|
+
* - Tree-structured: parent/child relationships via children[]
|
|
11
|
+
* - Metadata-extensible: constructId, sourceLanguage, etc.
|
|
12
|
+
* - Compatible with existing UCR construct IDs
|
|
13
|
+
*/
|
|
14
|
+
/** All supported IR node types (language-agnostic). */
|
|
15
|
+
export type IRNodeType = "Program" | "Block" | "FunctionDecl" | "ArrowFunction" | "MethodDecl" | "AsyncFunction" | "ClassDecl" | "InterfaceDecl" | "PropertyDecl" | "IfStatement" | "SwitchCase" | "ForLoop" | "WhileLoop" | "ReturnStatement" | "TryCatch" | "ThrowStatement" | "Import" | "Export" | "AwaitExpr" | "Decorator" | "TypeAnnotation" | "VariableDecl" | "Expression";
|
|
16
|
+
export interface IRNode {
|
|
17
|
+
/** Unique identifier for this IR node. */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Language-agnostic node type. */
|
|
20
|
+
type: IRNodeType;
|
|
21
|
+
/** Name of the construct (function name, class name, import path, etc.). */
|
|
22
|
+
name?: string;
|
|
23
|
+
/** Source code start line (1-based). */
|
|
24
|
+
startLine: number;
|
|
25
|
+
/** Source code end line (1-based). */
|
|
26
|
+
endLine: number;
|
|
27
|
+
/** Original source text for this construct. */
|
|
28
|
+
sourceText?: string;
|
|
29
|
+
/** Child nodes (nested constructs). */
|
|
30
|
+
children: IRNode[];
|
|
31
|
+
/** Extensible metadata (constructId, sourceLanguage, isAsync, etc.). */
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
export interface CreateIRNodeOptions {
|
|
35
|
+
name?: string;
|
|
36
|
+
startLine: number;
|
|
37
|
+
endLine: number;
|
|
38
|
+
sourceText?: string;
|
|
39
|
+
children?: IRNode[];
|
|
40
|
+
metadata?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a new IR node with a unique ID.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createIRNode(type: IRNodeType, options: CreateIRNodeOptions): IRNode;
|
|
46
|
+
/**
|
|
47
|
+
* Create a Program root node from a list of top-level IR nodes.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createIRTree(nodes: IRNode[]): IRNode;
|
|
50
|
+
//# sourceMappingURL=ir-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-types.d.ts","sourceRoot":"","sources":["../../../../src/core/translation/ir/ir-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAElB,SAAS,GACT,OAAO,GAEP,cAAc,GACd,eAAe,GACf,YAAY,GACZ,eAAe,GAEf,WAAW,GACX,eAAe,GACf,cAAc,GAEd,aAAa,GACb,YAAY,GACZ,SAAS,GACT,WAAW,GACX,iBAAiB,GAEjB,UAAU,GACV,gBAAgB,GAEhB,QAAQ,GACR,QAAQ,GAER,WAAW,GAEX,WAAW,GACX,gBAAgB,GAEhB,cAAc,GAEd,YAAY,CAAC;AAIjB,MAAM,WAAW,MAAM;IACrB,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAWnF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CASpD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IR (Intermediate Representation) — language-agnostic canonical node types.
|
|
3
|
+
*
|
|
4
|
+
* Represents code constructs in a language-neutral form for translation.
|
|
5
|
+
* Maps 1:1 with UCR canonical construct categories but uses simplified
|
|
6
|
+
* node types for tree representation.
|
|
7
|
+
*
|
|
8
|
+
* Design principles:
|
|
9
|
+
* - Language-agnostic: no TS-specific or Python-specific naming
|
|
10
|
+
* - Tree-structured: parent/child relationships via children[]
|
|
11
|
+
* - Metadata-extensible: constructId, sourceLanguage, etc.
|
|
12
|
+
* - Compatible with existing UCR construct IDs
|
|
13
|
+
*/
|
|
14
|
+
import { generateId } from "../../utils/id.js";
|
|
15
|
+
/**
|
|
16
|
+
* Create a new IR node with a unique ID.
|
|
17
|
+
*/
|
|
18
|
+
export function createIRNode(type, options) {
|
|
19
|
+
return {
|
|
20
|
+
id: generateId("ir"),
|
|
21
|
+
type,
|
|
22
|
+
name: options.name,
|
|
23
|
+
startLine: options.startLine,
|
|
24
|
+
endLine: options.endLine,
|
|
25
|
+
sourceText: options.sourceText,
|
|
26
|
+
children: options.children ?? [],
|
|
27
|
+
metadata: options.metadata,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a Program root node from a list of top-level IR nodes.
|
|
32
|
+
*/
|
|
33
|
+
export function createIRTree(nodes) {
|
|
34
|
+
const startLine = nodes.length > 0 ? Math.min(...nodes.map((n) => n.startLine)) : 1;
|
|
35
|
+
const endLine = nodes.length > 0 ? Math.max(...nodes.map((n) => n.endLine)) : 1;
|
|
36
|
+
return createIRNode("Program", {
|
|
37
|
+
startLine,
|
|
38
|
+
endLine,
|
|
39
|
+
children: nodes,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ir-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-types.js","sourceRoot":"","sources":["../../../../src/core/translation/ir/ir-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAwE/C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,OAA4B;IACzE,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC;QACpB,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhF,OAAO,YAAY,CAAC,SAAS,EAAE;QAC7B,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translation Memory — tracks accepted/corrected translations for rule ranking.
|
|
3
|
+
*
|
|
4
|
+
* Records which rule/template/AI choice was accepted or corrected.
|
|
5
|
+
* Accepted translations boost confidence; corrected ones reduce it.
|
|
6
|
+
* Queryable by construct + language pair.
|
|
7
|
+
*/
|
|
8
|
+
export interface MemoryEntry {
|
|
9
|
+
constructId: string;
|
|
10
|
+
sourceLanguage: string;
|
|
11
|
+
targetLanguage: string;
|
|
12
|
+
ruleId: string;
|
|
13
|
+
accepted: boolean;
|
|
14
|
+
confidence: number;
|
|
15
|
+
correctionReason?: string;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AcceptedInput {
|
|
19
|
+
constructId: string;
|
|
20
|
+
sourceLanguage: string;
|
|
21
|
+
targetLanguage: string;
|
|
22
|
+
ruleId: string;
|
|
23
|
+
confidence: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CorrectedInput {
|
|
26
|
+
constructId: string;
|
|
27
|
+
sourceLanguage: string;
|
|
28
|
+
targetLanguage: string;
|
|
29
|
+
ruleId: string;
|
|
30
|
+
originalConfidence: number;
|
|
31
|
+
correctionReason: string;
|
|
32
|
+
}
|
|
33
|
+
export interface MemoryStats {
|
|
34
|
+
totalEntries: number;
|
|
35
|
+
accepted: number;
|
|
36
|
+
corrected: number;
|
|
37
|
+
}
|
|
38
|
+
export declare class TranslationMemory {
|
|
39
|
+
private entries;
|
|
40
|
+
/**
|
|
41
|
+
* Record an accepted translation (positive signal).
|
|
42
|
+
*/
|
|
43
|
+
recordAccepted(input: AcceptedInput): void;
|
|
44
|
+
/**
|
|
45
|
+
* Record a corrected translation (negative signal).
|
|
46
|
+
*/
|
|
47
|
+
recordCorrected(input: CorrectedInput): void;
|
|
48
|
+
/**
|
|
49
|
+
* Query entries by construct + language pair.
|
|
50
|
+
*/
|
|
51
|
+
query(constructId: string, sourceLanguage: string, targetLanguage: string): MemoryEntry[];
|
|
52
|
+
/**
|
|
53
|
+
* Get confidence boost for a rule based on historical acceptance/correction.
|
|
54
|
+
* Positive = rule works well. Negative = rule has been corrected.
|
|
55
|
+
*/
|
|
56
|
+
getConfidenceBoost(ruleId: string): number;
|
|
57
|
+
/**
|
|
58
|
+
* Get all entries.
|
|
59
|
+
*/
|
|
60
|
+
getAllEntries(): MemoryEntry[];
|
|
61
|
+
/**
|
|
62
|
+
* Get statistics.
|
|
63
|
+
*/
|
|
64
|
+
getStats(): MemoryStats;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=translation-memory.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translation Memory — tracks accepted/corrected translations for rule ranking.
|
|
3
|
+
*
|
|
4
|
+
* Records which rule/template/AI choice was accepted or corrected.
|
|
5
|
+
* Accepted translations boost confidence; corrected ones reduce it.
|
|
6
|
+
* Queryable by construct + language pair.
|
|
7
|
+
*/
|
|
8
|
+
import { now } from "../../utils/time.js";
|
|
9
|
+
// ── Translation Memory ─────────────────────────────
|
|
10
|
+
export class TranslationMemory {
|
|
11
|
+
entries = [];
|
|
12
|
+
/**
|
|
13
|
+
* Record an accepted translation (positive signal).
|
|
14
|
+
*/
|
|
15
|
+
recordAccepted(input) {
|
|
16
|
+
this.entries.push({
|
|
17
|
+
constructId: input.constructId,
|
|
18
|
+
sourceLanguage: input.sourceLanguage,
|
|
19
|
+
targetLanguage: input.targetLanguage,
|
|
20
|
+
ruleId: input.ruleId,
|
|
21
|
+
accepted: true,
|
|
22
|
+
confidence: input.confidence,
|
|
23
|
+
timestamp: now(),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Record a corrected translation (negative signal).
|
|
28
|
+
*/
|
|
29
|
+
recordCorrected(input) {
|
|
30
|
+
this.entries.push({
|
|
31
|
+
constructId: input.constructId,
|
|
32
|
+
sourceLanguage: input.sourceLanguage,
|
|
33
|
+
targetLanguage: input.targetLanguage,
|
|
34
|
+
ruleId: input.ruleId,
|
|
35
|
+
accepted: false,
|
|
36
|
+
confidence: input.originalConfidence,
|
|
37
|
+
correctionReason: input.correctionReason,
|
|
38
|
+
timestamp: now(),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Query entries by construct + language pair.
|
|
43
|
+
*/
|
|
44
|
+
query(constructId, sourceLanguage, targetLanguage) {
|
|
45
|
+
return this.entries.filter((e) => e.constructId === constructId &&
|
|
46
|
+
e.sourceLanguage === sourceLanguage &&
|
|
47
|
+
e.targetLanguage === targetLanguage);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get confidence boost for a rule based on historical acceptance/correction.
|
|
51
|
+
* Positive = rule works well. Negative = rule has been corrected.
|
|
52
|
+
*/
|
|
53
|
+
getConfidenceBoost(ruleId) {
|
|
54
|
+
const ruleEntries = this.entries.filter((e) => e.ruleId === ruleId);
|
|
55
|
+
if (ruleEntries.length === 0)
|
|
56
|
+
return 0;
|
|
57
|
+
let boost = 0;
|
|
58
|
+
for (const entry of ruleEntries) {
|
|
59
|
+
if (entry.accepted) {
|
|
60
|
+
boost += 0.05; // small positive boost per acceptance
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
boost -= 0.1; // larger negative boost per correction
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return boost;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get all entries.
|
|
70
|
+
*/
|
|
71
|
+
getAllEntries() {
|
|
72
|
+
return [...this.entries];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get statistics.
|
|
76
|
+
*/
|
|
77
|
+
getStats() {
|
|
78
|
+
return {
|
|
79
|
+
totalEntries: this.entries.length,
|
|
80
|
+
accepted: this.entries.filter((e) => e.accepted).length,
|
|
81
|
+
corrected: this.entries.filter((e) => !e.accepted).length,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=translation-memory.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -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 CSharpParserAdapter implements ParserAdapter {
|
|
6
|
+
readonly languageId = "csharp";
|
|
7
|
+
parseSnippet(code: string): ParsedConstruct[];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=csharp-parser-adapter.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const LINE_RULES = [
|
|
2
|
+
{ pattern: /^\s*using\s+[\w.]+;/, constructId: "uc_import_named" },
|
|
3
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
4
|
+
{ pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(abstract\s+)?class\s+(\w+)/, constructId: "uc_class_def", nameGroup: 4 },
|
|
5
|
+
{ pattern: /^\s*(public|private|protected|internal)?\s*interface\s+(\w+)/, constructId: "uc_interface", nameGroup: 2 },
|
|
6
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
7
|
+
{ pattern: /^\s*(public|private|protected|internal)?\s*(static\s+)?(async\s+)?([\w<>?[\]]+)\s+(\w+)\s*\(/, constructId: "uc_fn_def", nameGroup: 5,
|
|
8
|
+
also: [{ constructId: "uc_async_fn" }] },
|
|
9
|
+
{ pattern: /^\s*try\s*\{/, constructId: "uc_try_catch" },
|
|
10
|
+
{ pattern: /^\s*throw\s+/, constructId: "uc_throw" },
|
|
11
|
+
{ pattern: /^\s*if\s*\(/, constructId: "uc_if_else" },
|
|
12
|
+
{ pattern: /^\s*for\s*\(/, constructId: "uc_for_loop" },
|
|
13
|
+
{ pattern: /^\s*foreach\s*\(/, constructId: "uc_for_each" },
|
|
14
|
+
{ pattern: /^\s*while\s*\(/, constructId: "uc_while" },
|
|
15
|
+
{ pattern: /^\s*switch\s*\(/, constructId: "uc_switch" },
|
|
16
|
+
{ pattern: /^\s*return\b/, constructId: "uc_return" },
|
|
17
|
+
{ pattern: /\bawait\s+/, constructId: "uc_await" },
|
|
18
|
+
];
|
|
19
|
+
export class CSharpParserAdapter {
|
|
20
|
+
languageId = "csharp";
|
|
21
|
+
parseSnippet(code) {
|
|
22
|
+
if (!code.trim())
|
|
23
|
+
return [];
|
|
24
|
+
const lines = code.split("\n");
|
|
25
|
+
const constructs = [];
|
|
26
|
+
for (let i = 0; i < lines.length; i++) {
|
|
27
|
+
const line = lines[i];
|
|
28
|
+
const lineNum = i + 1;
|
|
29
|
+
for (const rule of LINE_RULES) {
|
|
30
|
+
const match = rule.pattern.exec(line);
|
|
31
|
+
if (!match)
|
|
32
|
+
continue;
|
|
33
|
+
// For async detection, only emit async_fn if "async" is in line
|
|
34
|
+
if (rule.also && rule.also[0].constructId === "uc_async_fn" && !line.includes("async")) {
|
|
35
|
+
constructs.push({
|
|
36
|
+
constructId: rule.constructId,
|
|
37
|
+
name: rule.nameGroup ? match[rule.nameGroup] : undefined,
|
|
38
|
+
startLine: lineNum,
|
|
39
|
+
endLine: lineNum,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
constructs.push({
|
|
44
|
+
constructId: rule.constructId,
|
|
45
|
+
name: rule.nameGroup ? match[rule.nameGroup] : undefined,
|
|
46
|
+
startLine: lineNum,
|
|
47
|
+
endLine: lineNum,
|
|
48
|
+
});
|
|
49
|
+
if (rule.also && line.includes("async")) {
|
|
50
|
+
for (const extra of rule.also) {
|
|
51
|
+
constructs.push({ constructId: extra.constructId, startLine: lineNum, endLine: lineNum });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return constructs;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=csharp-parser-adapter.js.map
|