kodingo-core 0.2.2 → 0.2.4
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/domain/memory/project-memory.d.ts +16 -0
- package/dist/src/domain/memory/project-memory.d.ts.map +1 -1
- package/dist/src/domain/memory/project-memory.js +3 -0
- package/dist/src/domain/memory/project-memory.js.map +1 -1
- package/dist/src/query/query-engine.d.ts +60 -0
- package/dist/src/query/query-engine.d.ts.map +1 -0
- package/dist/src/query/query-engine.js +116 -0
- package/dist/src/query/query-engine.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export * from "./src/domain/decision/decision";
|
|
|
11
11
|
export * from "./src/domain/decision/decision-outcome";
|
|
12
12
|
export * from "./src/domain/decision/decision-event";
|
|
13
13
|
export * from "./src/domain/decision/decision-errors";
|
|
14
|
+
export * from "./src/query/query-engine";
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AAErD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAElD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AAErD,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAElD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,4 +27,5 @@ __exportStar(require("./src/domain/decision/decision"), exports);
|
|
|
27
27
|
__exportStar(require("./src/domain/decision/decision-outcome"), exports);
|
|
28
28
|
__exportStar(require("./src/domain/decision/decision-event"), exports);
|
|
29
29
|
__exportStar(require("./src/domain/decision/decision-errors"), exports);
|
|
30
|
+
__exportStar(require("./src/query/query-engine"), exports);
|
|
30
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,uEAAqD;AAErD,0DAAwC;AACxC,6DAA2C;AAC3C,yDAAuC;AACvC,yDAAuC;AAEvC,qEAAmD;AACnD,oEAAkD;AAElD,yEAAuD;AACvD,iEAA+C;AAC/C,yEAAuD;AACvD,uEAAqD;AACrD,wEAAsD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,uEAAqD;AAErD,0DAAwC;AACxC,6DAA2C;AAC3C,yDAAuC;AACvC,yDAAuC;AAEvC,qEAAmD;AACnD,oEAAkD;AAElD,yEAAuD;AACvD,iEAA+C;AAC/C,yEAAuD;AACvD,uEAAqD;AACrD,wEAAsD;AACtD,2DAAyC"}
|
|
@@ -88,6 +88,19 @@ export interface MemoryRecord {
|
|
|
88
88
|
* Generated by normalising and hashing the function body content.
|
|
89
89
|
*/
|
|
90
90
|
fingerprint?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Document source — filename of the document this memory was extracted from.
|
|
93
|
+
* Only present on memories created via document upload.
|
|
94
|
+
*/
|
|
95
|
+
sourceDocument?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Document type classification.
|
|
98
|
+
*/
|
|
99
|
+
sourceDocumentType?: "prd" | "architecture" | "concept_note" | "other";
|
|
100
|
+
/**
|
|
101
|
+
* ID of the kodingo_documents record this memory was extracted from.
|
|
102
|
+
*/
|
|
103
|
+
documentId?: string;
|
|
91
104
|
}
|
|
92
105
|
/**
|
|
93
106
|
* Project memory state for a project.
|
|
@@ -128,6 +141,9 @@ export declare function createProposedMemory(input: {
|
|
|
128
141
|
correctsId?: string;
|
|
129
142
|
machineId?: string;
|
|
130
143
|
displayName?: string;
|
|
144
|
+
sourceDocument?: string;
|
|
145
|
+
sourceDocumentType?: "prd" | "architecture" | "concept_note" | "other";
|
|
146
|
+
documentId?: string;
|
|
131
147
|
now?: Date;
|
|
132
148
|
}): MemoryRecord;
|
|
133
149
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE;QACR,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,9 @@ function createProposedMemory(input) {
|
|
|
56
56
|
correctsId: input.correctsId,
|
|
57
57
|
machineId: input.machineId,
|
|
58
58
|
displayName: input.displayName,
|
|
59
|
+
sourceDocument: input.sourceDocument,
|
|
60
|
+
sourceDocumentType: input.sourceDocumentType,
|
|
61
|
+
documentId: input.documentId,
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-memory.js","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"project-memory.js","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* query-engine.ts
|
|
3
|
+
*
|
|
4
|
+
* Core domain logic for the Kortex query engine.
|
|
5
|
+
* Defines types, ranking, and synthesis interface.
|
|
6
|
+
* No LLM calls, no DB access — pure deterministic domain logic.
|
|
7
|
+
*/
|
|
8
|
+
import type { MemoryRecord } from "../domain/memory/project-memory";
|
|
9
|
+
export type QueryIntentType = "concept" | "symbol" | "decision_history" | "comparison" | "general";
|
|
10
|
+
export interface QueryIntent {
|
|
11
|
+
raw: string;
|
|
12
|
+
type: QueryIntentType;
|
|
13
|
+
entities: string[];
|
|
14
|
+
symbolHint?: string;
|
|
15
|
+
confidence: number;
|
|
16
|
+
}
|
|
17
|
+
export interface QuerySource {
|
|
18
|
+
memory: MemoryRecord;
|
|
19
|
+
relevanceScore: number;
|
|
20
|
+
vectorScore: number;
|
|
21
|
+
domainScore: number;
|
|
22
|
+
}
|
|
23
|
+
export interface QueryResult {
|
|
24
|
+
answer: string;
|
|
25
|
+
sources: QuerySource[];
|
|
26
|
+
intent: QueryIntent;
|
|
27
|
+
synthesisedAt: Date;
|
|
28
|
+
totalCandidates: number;
|
|
29
|
+
}
|
|
30
|
+
export interface SynthesisPort {
|
|
31
|
+
/**
|
|
32
|
+
* Generate a natural language answer grounded in the provided memories.
|
|
33
|
+
* Implementations use an LLM with the memories as context.
|
|
34
|
+
*/
|
|
35
|
+
synthesise(params: {
|
|
36
|
+
intent: QueryIntent;
|
|
37
|
+
memories: MemoryRecord[];
|
|
38
|
+
projectName?: string;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
answer: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Re-ranks vector search candidates using domain scoring.
|
|
45
|
+
* Called after pgvector retrieval to apply Kortex-specific ranking rules.
|
|
46
|
+
*
|
|
47
|
+
* Combined score = (vectorScore * 0.6) + (domainScore * 0.4)
|
|
48
|
+
* Vector similarity is weighted higher but domain scoring prevents
|
|
49
|
+
* low-confidence or denied memories from surfacing.
|
|
50
|
+
*/
|
|
51
|
+
export declare function rankMemoriesForQuery(candidates: Array<{
|
|
52
|
+
memory: MemoryRecord;
|
|
53
|
+
vectorScore: number;
|
|
54
|
+
}>, intent: QueryIntent): QuerySource[];
|
|
55
|
+
/**
|
|
56
|
+
* Builds the context string passed to the LLM for synthesis.
|
|
57
|
+
* Formats ranked memories into a structured prompt context.
|
|
58
|
+
*/
|
|
59
|
+
export declare function buildQueryContext(sources: QuerySource[], maxSources?: number): string;
|
|
60
|
+
//# sourceMappingURL=query-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-engine.d.ts","sourceRoot":"","sources":["../../../src/query/query-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAuCD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,MAAM,EAAE,WAAW,GAClB,WAAW,EAAE,CAoDf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,SAAI,GACb,MAAM,CAgBR"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* query-engine.ts
|
|
4
|
+
*
|
|
5
|
+
* Core domain logic for the Kortex query engine.
|
|
6
|
+
* Defines types, ranking, and synthesis interface.
|
|
7
|
+
* No LLM calls, no DB access — pure deterministic domain logic.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.rankMemoriesForQuery = rankMemoriesForQuery;
|
|
11
|
+
exports.buildQueryContext = buildQueryContext;
|
|
12
|
+
// ── Ranking ───────────────────────────────────────────────────────────────────
|
|
13
|
+
const STATUS_WEIGHT = {
|
|
14
|
+
affirmed: 1.0,
|
|
15
|
+
proposed: 0.6,
|
|
16
|
+
ignored: 0.3,
|
|
17
|
+
denied: 0.0,
|
|
18
|
+
};
|
|
19
|
+
const INTENT_TYPE_WEIGHT = {
|
|
20
|
+
concept: {
|
|
21
|
+
decision: 1.0,
|
|
22
|
+
context: 0.8,
|
|
23
|
+
note: 0.6,
|
|
24
|
+
},
|
|
25
|
+
symbol: {
|
|
26
|
+
context: 1.0,
|
|
27
|
+
decision: 0.8,
|
|
28
|
+
note: 0.6,
|
|
29
|
+
},
|
|
30
|
+
decision_history: {
|
|
31
|
+
decision: 1.0,
|
|
32
|
+
note: 0.7,
|
|
33
|
+
context: 0.5,
|
|
34
|
+
},
|
|
35
|
+
comparison: {
|
|
36
|
+
decision: 1.0,
|
|
37
|
+
context: 0.8,
|
|
38
|
+
note: 0.6,
|
|
39
|
+
},
|
|
40
|
+
general: {
|
|
41
|
+
decision: 0.9,
|
|
42
|
+
context: 0.9,
|
|
43
|
+
note: 0.7,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Re-ranks vector search candidates using domain scoring.
|
|
48
|
+
* Called after pgvector retrieval to apply Kortex-specific ranking rules.
|
|
49
|
+
*
|
|
50
|
+
* Combined score = (vectorScore * 0.6) + (domainScore * 0.4)
|
|
51
|
+
* Vector similarity is weighted higher but domain scoring prevents
|
|
52
|
+
* low-confidence or denied memories from surfacing.
|
|
53
|
+
*/
|
|
54
|
+
function rankMemoriesForQuery(candidates, intent) {
|
|
55
|
+
const intentWeights = INTENT_TYPE_WEIGHT[intent.type] ?? INTENT_TYPE_WEIGHT.general;
|
|
56
|
+
return candidates
|
|
57
|
+
.map(({ memory, vectorScore }) => {
|
|
58
|
+
const statusScore = STATUS_WEIGHT[memory.status] ?? 0;
|
|
59
|
+
const typeScore = intentWeights[memory.type] ?? 0.5;
|
|
60
|
+
const confidenceScore = memory.confidence;
|
|
61
|
+
// Boost if symbol matches the hint exactly
|
|
62
|
+
const symbolBoost = intent.symbolHint &&
|
|
63
|
+
memory.symbol?.toLowerCase().includes(intent.symbolHint.toLowerCase())
|
|
64
|
+
? 0.2
|
|
65
|
+
: 0;
|
|
66
|
+
// Boost if any entity matches tags or symbol
|
|
67
|
+
const entityBoost = intent.entities.some(e => memory.tags?.some(t => t.toLowerCase().includes(e.toLowerCase())) ||
|
|
68
|
+
memory.symbol?.toLowerCase().includes(e.toLowerCase()) ||
|
|
69
|
+
memory.title?.toLowerCase().includes(e.toLowerCase()))
|
|
70
|
+
? 0.15
|
|
71
|
+
: 0;
|
|
72
|
+
// Recency boost — memories updated in last 30 days get a small boost
|
|
73
|
+
const daysSinceUpdate = (Date.now() - new Date(memory.updatedAt).getTime()) / (1000 * 60 * 60 * 24);
|
|
74
|
+
const recencyBoost = daysSinceUpdate < 30 ? 0.05 : 0;
|
|
75
|
+
const domainScore = Math.min(1, statusScore * 0.4 +
|
|
76
|
+
typeScore * 0.25 +
|
|
77
|
+
confidenceScore * 0.2 +
|
|
78
|
+
symbolBoost +
|
|
79
|
+
entityBoost +
|
|
80
|
+
recencyBoost);
|
|
81
|
+
// Denied memories never surface regardless of vector score
|
|
82
|
+
if (memory.status === "denied") {
|
|
83
|
+
return { memory, vectorScore, domainScore: 0, relevanceScore: 0 };
|
|
84
|
+
}
|
|
85
|
+
const relevanceScore = vectorScore * 0.6 + domainScore * 0.4;
|
|
86
|
+
return { memory, vectorScore, domainScore, relevanceScore };
|
|
87
|
+
})
|
|
88
|
+
.filter(s => s.relevanceScore > 0)
|
|
89
|
+
.sort((a, b) => b.relevanceScore - a.relevanceScore);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Builds the context string passed to the LLM for synthesis.
|
|
93
|
+
* Formats ranked memories into a structured prompt context.
|
|
94
|
+
*/
|
|
95
|
+
function buildQueryContext(sources, maxSources = 8) {
|
|
96
|
+
return sources
|
|
97
|
+
.slice(0, maxSources)
|
|
98
|
+
.map((s, i) => {
|
|
99
|
+
const m = s.memory;
|
|
100
|
+
const lines = [];
|
|
101
|
+
lines.push(`[Source ${i + 1}]`);
|
|
102
|
+
if (m.title)
|
|
103
|
+
lines.push(`Title: ${m.title}`);
|
|
104
|
+
if (m.symbol)
|
|
105
|
+
lines.push(`Symbol: ${m.symbol}`);
|
|
106
|
+
if (m.repo)
|
|
107
|
+
lines.push(`Repo: ${m.repo}`);
|
|
108
|
+
lines.push(`Type: ${m.type} | Status: ${m.status} | Confidence: ${Math.round(m.confidence * 100)}%`);
|
|
109
|
+
if (m.tags?.length)
|
|
110
|
+
lines.push(`Tags: ${m.tags.join(", ")}`);
|
|
111
|
+
lines.push(`Content: ${m.content}`);
|
|
112
|
+
return lines.join("\n");
|
|
113
|
+
})
|
|
114
|
+
.join("\n\n---\n\n");
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=query-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-engine.js","sourceRoot":"","sources":["../../../src/query/query-engine.ts"],"names":[],"mappings":"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"}
|