@duckcodeailabs/dql-agent 1.4.4 → 1.5.1
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/answer-loop.d.ts +88 -1
- package/dist/answer-loop.d.ts.map +1 -1
- package/dist/answer-loop.js +459 -48
- package/dist/answer-loop.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -5
- package/dist/index.js.map +1 -1
- package/dist/kg/build.d.ts +5 -0
- package/dist/kg/build.d.ts.map +1 -1
- package/dist/kg/build.js +283 -0
- package/dist/kg/build.js.map +1 -1
- package/dist/kg/sqlite-fts.d.ts +1 -0
- package/dist/kg/sqlite-fts.d.ts.map +1 -1
- package/dist/kg/sqlite-fts.js +77 -24
- package/dist/kg/sqlite-fts.js.map +1 -1
- package/dist/kg/types.d.ts +23 -1
- package/dist/kg/types.d.ts.map +1 -1
- package/dist/memory/sqlite-memory.d.ts +62 -0
- package/dist/memory/sqlite-memory.d.ts.map +1 -0
- package/dist/memory/sqlite-memory.js +242 -0
- package/dist/memory/sqlite-memory.js.map +1 -0
- package/dist/providers/ollama.d.ts +4 -1
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +77 -28
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +8 -6
- package/dist/providers/openai.js.map +1 -1
- package/package.json +5 -5
package/dist/kg/sqlite-fts.js
CHANGED
|
@@ -33,6 +33,7 @@ export class KGStore {
|
|
|
33
33
|
llm_context TEXT,
|
|
34
34
|
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
35
35
|
examples_json TEXT NOT NULL DEFAULT '[]',
|
|
36
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
36
37
|
source_path TEXT,
|
|
37
38
|
git_sha TEXT NOT NULL DEFAULT '',
|
|
38
39
|
updated_at TEXT NOT NULL
|
|
@@ -80,6 +81,13 @@ export class KGStore {
|
|
|
80
81
|
value TEXT NOT NULL
|
|
81
82
|
);
|
|
82
83
|
`);
|
|
84
|
+
this.ensureColumn('kg_nodes', 'metadata_json', `TEXT NOT NULL DEFAULT '{}'`);
|
|
85
|
+
}
|
|
86
|
+
ensureColumn(table, column, definition) {
|
|
87
|
+
const rows = this.db.prepare(`PRAGMA table_info(${table})`).all();
|
|
88
|
+
if (!rows.some((row) => row.name === column)) {
|
|
89
|
+
this.db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
90
|
+
}
|
|
83
91
|
}
|
|
84
92
|
/**
|
|
85
93
|
* Wholesale rebuild — clears every node/edge then inserts the supplied
|
|
@@ -90,8 +98,8 @@ export class KGStore {
|
|
|
90
98
|
const insertNode = this.db.prepare(`
|
|
91
99
|
INSERT INTO kg_nodes (
|
|
92
100
|
node_id, kind, name, domain, status, owner, description, llm_context,
|
|
93
|
-
tags_json, examples_json, source_path, git_sha, updated_at
|
|
94
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
101
|
+
tags_json, examples_json, metadata_json, source_path, git_sha, updated_at
|
|
102
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
95
103
|
`);
|
|
96
104
|
const insertFts = this.db.prepare(`
|
|
97
105
|
INSERT INTO kg_nodes_fts (node_id, name, description, llm_context, tags, kind, domain)
|
|
@@ -106,7 +114,7 @@ export class KGStore {
|
|
|
106
114
|
this.db.prepare('DELETE FROM kg_nodes_fts').run();
|
|
107
115
|
this.db.prepare('DELETE FROM kg_nodes').run();
|
|
108
116
|
for (const n of nodes) {
|
|
109
|
-
insertNode.run(n.nodeId, n.kind, n.name, n.domain ?? null, n.status ?? null, n.owner ?? null, n.description ?? null, n.llmContext ?? null, JSON.stringify(n.tags ?? []), JSON.stringify(n.examples ?? []), n.sourcePath ?? null, n.gitSha ?? '', now);
|
|
117
|
+
insertNode.run(n.nodeId, n.kind, n.name, n.domain ?? null, n.status ?? null, n.owner ?? null, n.description ?? null, n.llmContext ?? null, JSON.stringify(n.tags ?? []), JSON.stringify(n.examples ?? []), JSON.stringify(nodeMetadata(n)), n.sourcePath ?? null, n.gitSha ?? '', now);
|
|
110
118
|
insertFts.run(n.nodeId, n.name, n.description ?? '', n.llmContext ?? '', (n.tags ?? []).join(' '), n.kind, n.domain ?? '');
|
|
111
119
|
}
|
|
112
120
|
for (const e of edges) {
|
|
@@ -204,6 +212,7 @@ export class KGStore {
|
|
|
204
212
|
}
|
|
205
213
|
}
|
|
206
214
|
function rowToNode(row) {
|
|
215
|
+
const metadata = safeJSON(row.metadata_json, {});
|
|
207
216
|
return {
|
|
208
217
|
nodeId: row.node_id,
|
|
209
218
|
kind: row.kind,
|
|
@@ -217,8 +226,39 @@ function rowToNode(row) {
|
|
|
217
226
|
examples: safeJSON(row.examples_json, []),
|
|
218
227
|
sourcePath: row.source_path ?? undefined,
|
|
219
228
|
gitSha: row.git_sha ?? undefined,
|
|
229
|
+
sourceTier: metadata.sourceTier,
|
|
230
|
+
certification: metadata.certification,
|
|
231
|
+
provenance: metadata.provenance,
|
|
232
|
+
freshness: metadata.freshness,
|
|
233
|
+
businessOutcome: metadata.businessOutcome,
|
|
234
|
+
businessOwner: metadata.businessOwner,
|
|
235
|
+
decisionUse: metadata.decisionUse,
|
|
236
|
+
reviewCadence: metadata.reviewCadence,
|
|
237
|
+
businessRules: metadata.businessRules,
|
|
238
|
+
caveats: metadata.caveats,
|
|
220
239
|
};
|
|
221
240
|
}
|
|
241
|
+
function nodeMetadata(node) {
|
|
242
|
+
const metadata = {};
|
|
243
|
+
for (const key of [
|
|
244
|
+
'sourceTier',
|
|
245
|
+
'certification',
|
|
246
|
+
'provenance',
|
|
247
|
+
'freshness',
|
|
248
|
+
'businessOutcome',
|
|
249
|
+
'businessOwner',
|
|
250
|
+
'decisionUse',
|
|
251
|
+
'reviewCadence',
|
|
252
|
+
'businessRules',
|
|
253
|
+
'caveats',
|
|
254
|
+
]) {
|
|
255
|
+
const value = node[key];
|
|
256
|
+
if (value !== undefined) {
|
|
257
|
+
metadata[key] = value;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return metadata;
|
|
261
|
+
}
|
|
222
262
|
function safeJSON(raw, fallback) {
|
|
223
263
|
if (!raw)
|
|
224
264
|
return fallback;
|
|
@@ -229,29 +269,42 @@ function safeJSON(raw, fallback) {
|
|
|
229
269
|
return fallback;
|
|
230
270
|
}
|
|
231
271
|
}
|
|
272
|
+
const STOP_WORDS = new Set([
|
|
273
|
+
'a', 'about', 'above', 'after', 'again', 'against', 'all', 'am', 'an', 'and', 'any', 'are', 'as', 'at',
|
|
274
|
+
'be', 'because', 'been', 'before', 'being', 'below', 'between', 'both', 'but', 'by',
|
|
275
|
+
'can', 'could', 'current', 'did', 'do', 'does', 'doing', 'down', 'during',
|
|
276
|
+
'each', 'explain', 'few', 'find', 'for', 'from', 'further',
|
|
277
|
+
'get', 'give',
|
|
278
|
+
'had', 'has', 'have', 'having', 'he', 'her', 'here', 'hers', 'herself', 'him', 'himself', 'his', 'how',
|
|
279
|
+
'i', 'if', 'in', 'into', 'is', 'it', 'its', 'itself',
|
|
280
|
+
'just',
|
|
281
|
+
'me', 'more', 'most', 'my', 'myself',
|
|
282
|
+
'no', 'nor', 'not', 'now',
|
|
283
|
+
'of', 'off', 'on', 'once', 'only', 'or', 'other', 'our', 'ours', 'ourselves', 'out', 'over', 'own',
|
|
284
|
+
'please',
|
|
285
|
+
'query',
|
|
286
|
+
'same', 'she', 'should', 'show', 'so', 'some', 'sql', 'such',
|
|
287
|
+
'than', 'that', 'the', 'their', 'theirs', 'them', 'themselves', 'then', 'there', 'these', 'they', 'this', 'those', 'through', 'to', 'too',
|
|
288
|
+
'under', 'until', 'up', 'using',
|
|
289
|
+
'very',
|
|
290
|
+
'was', 'we', 'were', 'what', 'when', 'where', 'which', 'while', 'who', 'whom', 'why', 'will', 'with', 'would',
|
|
291
|
+
'you', 'your', 'yours', 'yourself', 'yourselves',
|
|
292
|
+
]);
|
|
232
293
|
/**
|
|
233
|
-
* Defang FTS5 query syntax
|
|
234
|
-
*
|
|
235
|
-
*
|
|
294
|
+
* Defang FTS5 query syntax from arbitrary user/chat input.
|
|
295
|
+
*
|
|
296
|
+
* FTS5 treats `foo:bar` as a column-scoped query. That is useful for hand
|
|
297
|
+
* written searches, but it is unsafe for notebook chat because upstream
|
|
298
|
+
* context often includes labels like `Current upstream SQL:`. Tokenize to
|
|
299
|
+
* quoted terms so SQL snippets, punctuation, and boolean words are plain text.
|
|
236
300
|
*/
|
|
237
301
|
function sanitizeFtsQuery(raw) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
.
|
|
242
|
-
.
|
|
243
|
-
.
|
|
244
|
-
|
|
245
|
-
return '';
|
|
246
|
-
// If no quotes and no boolean keyword, fall back to a tokenized OR query
|
|
247
|
-
// for better recall — FTS5 default is implicit AND.
|
|
248
|
-
if (!/["()]|\b(AND|OR|NOT|NEAR)\b/.test(cleaned)) {
|
|
249
|
-
return cleaned
|
|
250
|
-
.split(/\s+/)
|
|
251
|
-
.map((t) => t.replace(/[^\w]/g, ''))
|
|
252
|
-
.filter(Boolean)
|
|
253
|
-
.join(' OR ');
|
|
254
|
-
}
|
|
255
|
-
return cleaned;
|
|
302
|
+
return raw
|
|
303
|
+
.split(/\s+/)
|
|
304
|
+
.map((t) => t.replace(/[^\p{L}\p{N}_]/gu, ''))
|
|
305
|
+
.filter((t) => t.length > 1 && !STOP_WORDS.has(t.toLowerCase()))
|
|
306
|
+
.slice(0, 48)
|
|
307
|
+
.map((t) => `"${t}"`)
|
|
308
|
+
.join(' OR ');
|
|
256
309
|
}
|
|
257
310
|
//# sourceMappingURL=sqlite-fts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-fts.js","sourceRoot":"","sources":["../../src/kg/sqlite-fts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASpC,MAAM,OAAO,OAAO;IACV,EAAE,CAAoB;IAE9B,YAAY,MAAc;QACxB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"sqlite-fts.js","sourceRoot":"","sources":["../../src/kg/sqlite-fts.ts"],"names":[],"mappings":"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"}
|
package/dist/kg/types.d.ts
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* Skills folder. It is stored in SQLite at `.dql/cache/agent-kg.sqlite` with
|
|
7
7
|
* an FTS5 index for keyword search and structured filters for domain/kind.
|
|
8
8
|
*/
|
|
9
|
-
export type KGNodeKind = 'block' | 'metric' | 'dimension' | 'domain' | 'dbt_model' | 'dbt_source' | 'dashboard' | 'app' | 'skill';
|
|
9
|
+
export type KGNodeKind = 'block' | 'metric' | 'dimension' | 'measure' | 'entity' | 'semantic_model' | 'saved_query' | 'domain' | 'dbt_model' | 'dbt_source' | 'notebook' | 'dashboard' | 'app' | 'skill';
|
|
10
|
+
export type KGSourceTier = 'certified_artifact' | 'semantic_layer' | 'dbt_manifest' | 'business_context' | 'memory' | 'project';
|
|
11
|
+
export type KGCertification = 'certified' | 'ai_generated' | 'analyst_review_required' | 'uncertified';
|
|
10
12
|
export interface KGNode {
|
|
11
13
|
/** Stable identifier — `${kind}:${name}` (lower-cased). */
|
|
12
14
|
nodeId: string;
|
|
@@ -28,6 +30,26 @@ export interface KGNode {
|
|
|
28
30
|
sourcePath?: string;
|
|
29
31
|
/** Pinned git SHA at index time. */
|
|
30
32
|
gitSha?: string;
|
|
33
|
+
/** Governing source tier used by the agent's precedence policy. */
|
|
34
|
+
sourceTier?: KGSourceTier;
|
|
35
|
+
/** Certification/review state. Kept advisory; block.status remains authoritative for blocks. */
|
|
36
|
+
certification?: KGCertification;
|
|
37
|
+
/** Human-readable provenance label, e.g. "dbt semantic_manifest.json". */
|
|
38
|
+
provenance?: string;
|
|
39
|
+
/** ISO timestamp or source freshness marker when available. */
|
|
40
|
+
freshness?: string;
|
|
41
|
+
/** Business outcome the artifact or semantic object is meant to support. */
|
|
42
|
+
businessOutcome?: string;
|
|
43
|
+
/** Business owner for the outcome, when distinct from the technical owner. */
|
|
44
|
+
businessOwner?: string;
|
|
45
|
+
/** Decision or workflow this asset is intended to inform. */
|
|
46
|
+
decisionUse?: string;
|
|
47
|
+
/** Expected review cadence for certification/freshness. */
|
|
48
|
+
reviewCadence?: string;
|
|
49
|
+
/** Business rules attached to this asset. */
|
|
50
|
+
businessRules?: string[];
|
|
51
|
+
/** Known caveats or interpretation constraints. */
|
|
52
|
+
caveats?: string[];
|
|
31
53
|
}
|
|
32
54
|
export interface KGEdge {
|
|
33
55
|
src: string;
|
package/dist/kg/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kg/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,WAAW,GACX,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,WAAW,MAAM;IACrB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kg/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local, scoped agent memory for DQL analytics.
|
|
3
|
+
*
|
|
4
|
+
* Memory is advisory context only. The governed answer loop always ranks
|
|
5
|
+
* certified artifacts, semantic metadata, and dbt manifest facts above memory.
|
|
6
|
+
*/
|
|
7
|
+
export type AgentMemoryScope = 'thread' | 'notebook' | 'project' | 'user' | 'artifact';
|
|
8
|
+
export interface AgentMemory {
|
|
9
|
+
id: string;
|
|
10
|
+
scope: AgentMemoryScope;
|
|
11
|
+
scopeId?: string;
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
tags: string[];
|
|
15
|
+
source: string;
|
|
16
|
+
confidence: number;
|
|
17
|
+
importance: number;
|
|
18
|
+
validFrom?: string;
|
|
19
|
+
validTo?: string;
|
|
20
|
+
supersedes?: string;
|
|
21
|
+
lastUsed?: string;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface AgentMemoryInput {
|
|
27
|
+
id?: string;
|
|
28
|
+
scope: AgentMemoryScope;
|
|
29
|
+
scopeId?: string;
|
|
30
|
+
title: string;
|
|
31
|
+
content: string;
|
|
32
|
+
tags?: string[];
|
|
33
|
+
source?: string;
|
|
34
|
+
confidence?: number;
|
|
35
|
+
importance?: number;
|
|
36
|
+
validFrom?: string;
|
|
37
|
+
validTo?: string;
|
|
38
|
+
supersedes?: string;
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface MemorySearchOptions {
|
|
42
|
+
query: string;
|
|
43
|
+
scopes?: AgentMemoryScope[];
|
|
44
|
+
scopeId?: string;
|
|
45
|
+
limit?: number;
|
|
46
|
+
now?: Date;
|
|
47
|
+
}
|
|
48
|
+
export declare function defaultMemoryPath(projectRoot: string): string;
|
|
49
|
+
export declare function ensureDefaultMemoryFiles(projectRoot: string): string[];
|
|
50
|
+
export declare class MemoryStore {
|
|
51
|
+
private db;
|
|
52
|
+
constructor(dbPath: string);
|
|
53
|
+
private initSchema;
|
|
54
|
+
upsert(input: AgentMemoryInput): AgentMemory;
|
|
55
|
+
get(id: string): AgentMemory | null;
|
|
56
|
+
list(scope?: AgentMemoryScope): AgentMemory[];
|
|
57
|
+
search(options: MemorySearchOptions): AgentMemory[];
|
|
58
|
+
setEnabled(id: string, enabled: boolean): void;
|
|
59
|
+
delete(id: string): void;
|
|
60
|
+
close(): void;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=sqlite-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-memory.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBtE;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,UAAU;IAmClB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW;IA0D5C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKnC,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,WAAW,EAAE;IAO7C,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,EAAE;IA4CnD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAK9C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local, scoped agent memory for DQL analytics.
|
|
3
|
+
*
|
|
4
|
+
* Memory is advisory context only. The governed answer loop always ranks
|
|
5
|
+
* certified artifacts, semantic metadata, and dbt manifest facts above memory.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { dirname, join } from 'node:path';
|
|
10
|
+
export function defaultMemoryPath(projectRoot) {
|
|
11
|
+
return join(projectRoot, '.dql', 'cache', 'agent-memory.sqlite');
|
|
12
|
+
}
|
|
13
|
+
export function ensureDefaultMemoryFiles(projectRoot) {
|
|
14
|
+
const dir = join(projectRoot, '.dql', 'memory');
|
|
15
|
+
mkdirSync(dir, { recursive: true });
|
|
16
|
+
const files = [
|
|
17
|
+
['business-context.md', '# Business Context\n\n'],
|
|
18
|
+
['glossary.md', '# Glossary\n\n'],
|
|
19
|
+
['decisions.md', '# Analyst Decisions\n\n'],
|
|
20
|
+
['rules.md', '# Agent Rules\n\n'],
|
|
21
|
+
];
|
|
22
|
+
const paths = [];
|
|
23
|
+
for (const [name, body] of files) {
|
|
24
|
+
const path = join(dir, name);
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
writeFileSync(path, body, 'utf-8');
|
|
27
|
+
paths.push(path);
|
|
28
|
+
}
|
|
29
|
+
return paths;
|
|
30
|
+
}
|
|
31
|
+
export class MemoryStore {
|
|
32
|
+
db;
|
|
33
|
+
constructor(dbPath) {
|
|
34
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
35
|
+
this.db = new Database(dbPath);
|
|
36
|
+
this.db.pragma('journal_mode = WAL');
|
|
37
|
+
this.initSchema();
|
|
38
|
+
}
|
|
39
|
+
initSchema() {
|
|
40
|
+
this.db.exec(`
|
|
41
|
+
CREATE TABLE IF NOT EXISTS agent_memory (
|
|
42
|
+
id TEXT PRIMARY KEY,
|
|
43
|
+
scope TEXT NOT NULL,
|
|
44
|
+
scope_id TEXT,
|
|
45
|
+
title TEXT NOT NULL,
|
|
46
|
+
content TEXT NOT NULL,
|
|
47
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
48
|
+
source TEXT NOT NULL DEFAULT 'manual',
|
|
49
|
+
confidence REAL NOT NULL DEFAULT 0.7,
|
|
50
|
+
importance REAL NOT NULL DEFAULT 0.5,
|
|
51
|
+
valid_from TEXT,
|
|
52
|
+
valid_to TEXT,
|
|
53
|
+
supersedes TEXT,
|
|
54
|
+
last_used TEXT,
|
|
55
|
+
created_at TEXT NOT NULL,
|
|
56
|
+
updated_at TEXT NOT NULL,
|
|
57
|
+
enabled INTEGER NOT NULL DEFAULT 1
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE INDEX IF NOT EXISTS idx_agent_memory_scope ON agent_memory(scope, scope_id);
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_agent_memory_enabled ON agent_memory(enabled);
|
|
62
|
+
|
|
63
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS agent_memory_fts USING fts5(
|
|
64
|
+
id UNINDEXED,
|
|
65
|
+
title,
|
|
66
|
+
content,
|
|
67
|
+
tags,
|
|
68
|
+
scope,
|
|
69
|
+
tokenize = 'porter unicode61'
|
|
70
|
+
);
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
upsert(input) {
|
|
74
|
+
const now = new Date().toISOString();
|
|
75
|
+
const id = input.id ?? `mem_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
76
|
+
const existing = this.get(id);
|
|
77
|
+
const row = {
|
|
78
|
+
id,
|
|
79
|
+
scope: input.scope,
|
|
80
|
+
scopeId: input.scopeId,
|
|
81
|
+
title: input.title.trim(),
|
|
82
|
+
content: input.content.trim(),
|
|
83
|
+
tags: input.tags ?? [],
|
|
84
|
+
source: input.source ?? 'manual',
|
|
85
|
+
confidence: clamp(input.confidence ?? existing?.confidence ?? 0.7),
|
|
86
|
+
importance: clamp(input.importance ?? existing?.importance ?? 0.5),
|
|
87
|
+
validFrom: input.validFrom,
|
|
88
|
+
validTo: input.validTo,
|
|
89
|
+
supersedes: input.supersedes,
|
|
90
|
+
lastUsed: existing?.lastUsed,
|
|
91
|
+
createdAt: existing?.createdAt ?? now,
|
|
92
|
+
updatedAt: now,
|
|
93
|
+
enabled: input.enabled ?? existing?.enabled ?? true,
|
|
94
|
+
};
|
|
95
|
+
const txn = this.db.transaction(() => {
|
|
96
|
+
this.db.prepare(`
|
|
97
|
+
INSERT OR REPLACE INTO agent_memory (
|
|
98
|
+
id, scope, scope_id, title, content, tags_json, source, confidence,
|
|
99
|
+
importance, valid_from, valid_to, supersedes, last_used, created_at,
|
|
100
|
+
updated_at, enabled
|
|
101
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
102
|
+
`).run(row.id, row.scope, row.scopeId ?? null, row.title, row.content, JSON.stringify(row.tags), row.source, row.confidence, row.importance, row.validFrom ?? null, row.validTo ?? null, row.supersedes ?? null, row.lastUsed ?? null, row.createdAt, row.updatedAt, row.enabled ? 1 : 0);
|
|
103
|
+
this.db.prepare('DELETE FROM agent_memory_fts WHERE id = ?').run(row.id);
|
|
104
|
+
this.db.prepare(`
|
|
105
|
+
INSERT INTO agent_memory_fts (id, title, content, tags, scope)
|
|
106
|
+
VALUES (?, ?, ?, ?, ?)
|
|
107
|
+
`).run(row.id, row.title, row.content, row.tags.join(' '), row.scope);
|
|
108
|
+
});
|
|
109
|
+
txn();
|
|
110
|
+
return row;
|
|
111
|
+
}
|
|
112
|
+
get(id) {
|
|
113
|
+
const row = this.db.prepare('SELECT * FROM agent_memory WHERE id = ?').get(id);
|
|
114
|
+
return row ? rowToMemory(row) : null;
|
|
115
|
+
}
|
|
116
|
+
list(scope) {
|
|
117
|
+
const rows = scope
|
|
118
|
+
? this.db.prepare('SELECT * FROM agent_memory WHERE scope = ? ORDER BY importance DESC, updated_at DESC').all(scope)
|
|
119
|
+
: this.db.prepare('SELECT * FROM agent_memory ORDER BY importance DESC, updated_at DESC').all();
|
|
120
|
+
return rows.map(rowToMemory);
|
|
121
|
+
}
|
|
122
|
+
search(options) {
|
|
123
|
+
const query = sanitizeFtsQuery(options.query);
|
|
124
|
+
if (!query)
|
|
125
|
+
return [];
|
|
126
|
+
const filters = ['m.enabled = 1'];
|
|
127
|
+
const params = [query];
|
|
128
|
+
const now = (options.now ?? new Date()).toISOString();
|
|
129
|
+
filters.push('(m.valid_from IS NULL OR m.valid_from <= ?)');
|
|
130
|
+
params.push(now);
|
|
131
|
+
filters.push('(m.valid_to IS NULL OR m.valid_to >= ?)');
|
|
132
|
+
params.push(now);
|
|
133
|
+
if (options.scopes && options.scopes.length > 0) {
|
|
134
|
+
filters.push(`m.scope IN (${options.scopes.map(() => '?').join(', ')})`);
|
|
135
|
+
params.push(...options.scopes);
|
|
136
|
+
}
|
|
137
|
+
if (options.scopeId) {
|
|
138
|
+
filters.push('(m.scope_id IS NULL OR m.scope_id = ?)');
|
|
139
|
+
params.push(options.scopeId);
|
|
140
|
+
}
|
|
141
|
+
const rows = this.db.prepare(`
|
|
142
|
+
SELECT m.*, bm25(agent_memory_fts) AS rank
|
|
143
|
+
FROM agent_memory_fts AS f
|
|
144
|
+
JOIN agent_memory AS m ON m.id = f.id
|
|
145
|
+
WHERE agent_memory_fts MATCH ?
|
|
146
|
+
AND ${filters.join(' AND ')}
|
|
147
|
+
ORDER BY (m.importance + m.confidence) DESC, rank
|
|
148
|
+
LIMIT ?
|
|
149
|
+
`).all(...params, options.limit ?? 6);
|
|
150
|
+
const ids = rows.map((row) => row.id);
|
|
151
|
+
if (ids.length > 0) {
|
|
152
|
+
const mark = this.db.prepare('UPDATE agent_memory SET last_used = ? WHERE id = ?');
|
|
153
|
+
const nowUsed = new Date().toISOString();
|
|
154
|
+
const txn = this.db.transaction(() => {
|
|
155
|
+
for (const id of ids)
|
|
156
|
+
mark.run(nowUsed, id);
|
|
157
|
+
});
|
|
158
|
+
txn();
|
|
159
|
+
}
|
|
160
|
+
return rows.map(rowToMemory);
|
|
161
|
+
}
|
|
162
|
+
setEnabled(id, enabled) {
|
|
163
|
+
this.db.prepare('UPDATE agent_memory SET enabled = ?, updated_at = ? WHERE id = ?')
|
|
164
|
+
.run(enabled ? 1 : 0, new Date().toISOString(), id);
|
|
165
|
+
}
|
|
166
|
+
delete(id) {
|
|
167
|
+
const txn = this.db.transaction(() => {
|
|
168
|
+
this.db.prepare('DELETE FROM agent_memory_fts WHERE id = ?').run(id);
|
|
169
|
+
this.db.prepare('DELETE FROM agent_memory WHERE id = ?').run(id);
|
|
170
|
+
});
|
|
171
|
+
txn();
|
|
172
|
+
}
|
|
173
|
+
close() {
|
|
174
|
+
this.db.close();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function rowToMemory(row) {
|
|
178
|
+
return {
|
|
179
|
+
id: row.id,
|
|
180
|
+
scope: row.scope,
|
|
181
|
+
scopeId: row.scope_id ?? undefined,
|
|
182
|
+
title: row.title,
|
|
183
|
+
content: row.content,
|
|
184
|
+
tags: safeJSON(row.tags_json, []),
|
|
185
|
+
source: row.source,
|
|
186
|
+
confidence: row.confidence,
|
|
187
|
+
importance: row.importance,
|
|
188
|
+
validFrom: row.valid_from ?? undefined,
|
|
189
|
+
validTo: row.valid_to ?? undefined,
|
|
190
|
+
supersedes: row.supersedes ?? undefined,
|
|
191
|
+
lastUsed: row.last_used ?? undefined,
|
|
192
|
+
createdAt: row.created_at,
|
|
193
|
+
updatedAt: row.updated_at,
|
|
194
|
+
enabled: Boolean(row.enabled),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function safeJSON(raw, fallback) {
|
|
198
|
+
if (!raw)
|
|
199
|
+
return fallback;
|
|
200
|
+
try {
|
|
201
|
+
return JSON.parse(raw);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return fallback;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function clamp(value) {
|
|
208
|
+
if (!Number.isFinite(value))
|
|
209
|
+
return 0.5;
|
|
210
|
+
return Math.max(0, Math.min(1, value));
|
|
211
|
+
}
|
|
212
|
+
const STOP_WORDS = new Set([
|
|
213
|
+
'a', 'about', 'above', 'after', 'again', 'against', 'all', 'am', 'an', 'and', 'any', 'are', 'as', 'at',
|
|
214
|
+
'be', 'because', 'been', 'before', 'being', 'below', 'between', 'both', 'but', 'by',
|
|
215
|
+
'can', 'could', 'current', 'did', 'do', 'does', 'doing', 'down', 'during',
|
|
216
|
+
'each', 'explain', 'few', 'find', 'for', 'from', 'further',
|
|
217
|
+
'get', 'give',
|
|
218
|
+
'had', 'has', 'have', 'having', 'he', 'her', 'here', 'hers', 'herself', 'him', 'himself', 'his', 'how',
|
|
219
|
+
'i', 'if', 'in', 'into', 'is', 'it', 'its', 'itself',
|
|
220
|
+
'just',
|
|
221
|
+
'me', 'more', 'most', 'my', 'myself',
|
|
222
|
+
'no', 'nor', 'not', 'now',
|
|
223
|
+
'of', 'off', 'on', 'once', 'only', 'or', 'other', 'our', 'ours', 'ourselves', 'out', 'over', 'own',
|
|
224
|
+
'please',
|
|
225
|
+
'query',
|
|
226
|
+
'same', 'she', 'should', 'show', 'so', 'some', 'sql', 'such',
|
|
227
|
+
'than', 'that', 'the', 'their', 'theirs', 'them', 'themselves', 'then', 'there', 'these', 'they', 'this', 'those', 'through', 'to', 'too',
|
|
228
|
+
'under', 'until', 'up', 'using',
|
|
229
|
+
'very',
|
|
230
|
+
'was', 'we', 'were', 'what', 'when', 'where', 'which', 'while', 'who', 'whom', 'why', 'will', 'with', 'would',
|
|
231
|
+
'you', 'your', 'yours', 'yourself', 'yourselves',
|
|
232
|
+
]);
|
|
233
|
+
function sanitizeFtsQuery(raw) {
|
|
234
|
+
return raw
|
|
235
|
+
.split(/\s+/)
|
|
236
|
+
.map((t) => t.replace(/[^\p{L}\p{N}_]/gu, ''))
|
|
237
|
+
.filter((t) => t.length > 1 && !STOP_WORDS.has(t.toLowerCase()))
|
|
238
|
+
.slice(0, 48)
|
|
239
|
+
.map((t) => `"${t}"`)
|
|
240
|
+
.join(' OR ');
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=sqlite-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-memory.js","sourceRoot":"","sources":["../../src/memory/sqlite-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,16 @@ import type { AgentProvider, AgentMessage, ProviderRunOptions } from './types.js
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class OllamaProvider implements AgentProvider {
|
|
11
11
|
readonly name: "ollama";
|
|
12
|
-
private readonly
|
|
12
|
+
private readonly baseUrls;
|
|
13
13
|
private readonly defaultModel;
|
|
14
|
+
private resolvedBaseUrl?;
|
|
14
15
|
constructor(opts?: {
|
|
15
16
|
baseUrl?: string;
|
|
16
17
|
model?: string;
|
|
17
18
|
});
|
|
18
19
|
available(): Promise<boolean>;
|
|
19
20
|
generate(messages: AgentMessage[], options?: ProviderRunOptions): Promise<string>;
|
|
21
|
+
private resolveBaseUrl;
|
|
22
|
+
private orderedBaseUrls;
|
|
20
23
|
}
|
|
21
24
|
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,eAAe,CAAC,CAAS;gBAErB,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAKrD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;YAkC7E,cAAc;YAad,eAAe;CAK9B"}
|