@jmtrin/opencode-kevin 0.2.0 → 0.3.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/README.md +76 -35
- package/dist/migrations/004_v03_knowledge.sql +138 -0
- package/dist/plugin/CausalChain.d.ts +11 -0
- package/dist/plugin/CausalChain.js +109 -0
- package/dist/plugin/CausalChain.js.map +1 -0
- package/dist/plugin/ContextInjector.d.ts +12 -0
- package/dist/plugin/ContextInjector.js +31 -0
- package/dist/plugin/ContextInjector.js.map +1 -1
- package/dist/plugin/MemoryService.d.ts +62 -2
- package/dist/plugin/MemoryService.js +260 -15
- package/dist/plugin/MemoryService.js.map +1 -1
- package/dist/plugin/Migrate.js +12 -0
- package/dist/plugin/Migrate.js.map +1 -1
- package/dist/plugin/Reflector.d.ts +16 -0
- package/dist/plugin/Reflector.js +58 -19
- package/dist/plugin/Reflector.js.map +1 -1
- package/dist/plugin/ToolCallObserver.js +1 -1
- package/dist/plugin/ToolCallObserver.js.map +1 -1
- package/dist/plugin/index.js +130 -10
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/kevin_why.d.ts +19 -0
- package/dist/plugin/kevin_why.js +92 -0
- package/dist/plugin/kevin_why.js.map +1 -0
- package/dist/plugin/metrics.d.ts +1 -1
- package/dist/plugin/metrics.js +3 -0
- package/dist/plugin/metrics.js.map +1 -1
- package/dist/plugin/okf-export.d.ts +3 -0
- package/dist/plugin/okf-export.js +86 -0
- package/dist/plugin/okf-export.js.map +1 -0
- package/dist/plugin/okf-import.d.ts +73 -0
- package/dist/plugin/okf-import.js +239 -0
- package/dist/plugin/okf-import.js.map +1 -0
- package/migrations/004_v03_knowledge.sql +138 -0
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Store } from "./Store.js";
|
|
2
2
|
import type { Metrics } from "./metrics.js";
|
|
3
|
-
export type MemoryType = "error" | "pattern" | "decision" | "context";
|
|
3
|
+
export type MemoryType = "error" | "pattern" | "decision" | "context" | "rule" | "solution";
|
|
4
4
|
export type MemoryScope = "project" | "session";
|
|
5
|
-
export type MemoryOrigin = "reflector" | "agent" | "pattern" | "retrospective";
|
|
5
|
+
export type MemoryOrigin = "reflector" | "agent" | "pattern" | "retrospective" | "causal" | "imported";
|
|
6
6
|
export interface Memory {
|
|
7
7
|
id: string;
|
|
8
8
|
type: MemoryType;
|
|
@@ -21,6 +21,14 @@ export interface Memory {
|
|
|
21
21
|
fingerprint?: string | null;
|
|
22
22
|
/** v0.2.0 — origin of the memory. */
|
|
23
23
|
origin?: MemoryOrigin | null;
|
|
24
|
+
/** v0.3.0 — confidence derived from causal evidence (0..1). Only set by CausalChain. */
|
|
25
|
+
confidence?: number | null;
|
|
26
|
+
/** v0.3.0 — number of confirmed causal fix confirmations. */
|
|
27
|
+
evidenceCount?: number | null;
|
|
28
|
+
/** v0.3.0 — last time causal evidence was observed. */
|
|
29
|
+
lastVerifiedAt?: string | null;
|
|
30
|
+
/** v0.3.0 — lifecycle status. Default 'active'. */
|
|
31
|
+
status?: string | null;
|
|
24
32
|
}
|
|
25
33
|
export interface SaveInput {
|
|
26
34
|
type: MemoryType;
|
|
@@ -37,6 +45,12 @@ export interface SaveInput {
|
|
|
37
45
|
origin?: MemoryOrigin;
|
|
38
46
|
/** v0.2.0 — explicit fingerprint. Auto-derived for `type='error'` if absent. */
|
|
39
47
|
fingerprint?: string;
|
|
48
|
+
/** v0.3.0 — number of confirmed causal fix confirmations. */
|
|
49
|
+
evidenceCount?: number;
|
|
50
|
+
/** v0.3.0 — last time causal evidence was observed. */
|
|
51
|
+
lastVerifiedAt?: string;
|
|
52
|
+
/** v0.3.0 — lifecycle status. Default 'active'. */
|
|
53
|
+
status?: string;
|
|
40
54
|
}
|
|
41
55
|
export interface QueryInput {
|
|
42
56
|
text: string;
|
|
@@ -48,6 +62,9 @@ export interface QueryInput {
|
|
|
48
62
|
* behavior, per plan §B6.3 / K2-010).
|
|
49
63
|
*/
|
|
50
64
|
full?: boolean;
|
|
65
|
+
/** v0.3.0 — when true, includes rows where status = 'superseded'.
|
|
66
|
+
* Default false (only active rows). */
|
|
67
|
+
includeSuperseded?: boolean;
|
|
51
68
|
}
|
|
52
69
|
/** v0.2.0 — slim query payload (K2-010). Snippet is a short content prefix;
|
|
53
70
|
* `score` is the FTS5 BM25 score when available, falling back to
|
|
@@ -63,6 +80,9 @@ export interface GetRelevantInput {
|
|
|
63
80
|
query?: string;
|
|
64
81
|
maxTokens?: number;
|
|
65
82
|
scope?: MemoryScope | "all";
|
|
83
|
+
/** v0.3.0 — when true, includes rows where status = 'superseded'.
|
|
84
|
+
* Default false (only active rows). */
|
|
85
|
+
includeSuperseded?: boolean;
|
|
66
86
|
}
|
|
67
87
|
export declare class MemoryService {
|
|
68
88
|
private readonly metrics;
|
|
@@ -78,9 +98,20 @@ export declare class MemoryService {
|
|
|
78
98
|
}): Memory[];
|
|
79
99
|
/** v0.2.0 default — returns `SlimMemory` rows. */
|
|
80
100
|
query(input: QueryInput): SlimMemory[];
|
|
101
|
+
private isCrossProjectEnabled;
|
|
81
102
|
private loadAll;
|
|
82
103
|
private queryRelevant;
|
|
83
104
|
getRelevant(input: GetRelevantInput): Memory[];
|
|
105
|
+
/**
|
|
106
|
+
* v0.3.0 (K3-004) — Promote an error memory to a causal pattern.
|
|
107
|
+
*
|
|
108
|
+
* Creates a new `pattern` memory with `origin = 'causal'`, derived
|
|
109
|
+
* confidence, and evidence count. The original error memory is NOT
|
|
110
|
+
* deleted — the audit trail is preserved. Returns the new memory id,
|
|
111
|
+
* or null when the source error is not eligible (missing fingerprint,
|
|
112
|
+
* wrong type, or already promoted).
|
|
113
|
+
*/
|
|
114
|
+
promoteToPattern(errorId: string, evidenceCount: number): string | null;
|
|
84
115
|
/**
|
|
85
116
|
* v0.2.0 (K2-026) — Feedback loop positive half (plan §B6.10 / D2-10).
|
|
86
117
|
*
|
|
@@ -93,4 +124,33 @@ export declare class MemoryService {
|
|
|
93
124
|
* Returns the number of memories that received a positive boost.
|
|
94
125
|
*/
|
|
95
126
|
boostPositiveReflectors(sessionId: string): number;
|
|
127
|
+
/**
|
|
128
|
+
* v0.3.0 (K3-013) — Feedback loop negative half.
|
|
129
|
+
*
|
|
130
|
+
* For each reflector-sourced error memory from this session whose
|
|
131
|
+
* fingerprint DID recur as a failing tool_call (the lesson didn't
|
|
132
|
+
* prevent the error), decrement `relevance_score` by `RELEVANCE_PENALTY`
|
|
133
|
+
* (down to zero) and increment `evidence_count` as a negative signal.
|
|
134
|
+
* Agent-saved memories are NEVER penalized.
|
|
135
|
+
*
|
|
136
|
+
* Returns the number of memories penalized.
|
|
137
|
+
*/
|
|
138
|
+
/**
|
|
139
|
+
* v0.3.0 fix — Mirror of the free function `countSupersedeCandidates`
|
|
140
|
+
* exposed as an instance method so `okf-import` (which holds a
|
|
141
|
+
* `MemoryService` reference but not the underlying `Store`) can count
|
|
142
|
+
* rows that `save()` will mark as superseded.
|
|
143
|
+
*/
|
|
144
|
+
countSupersedeCandidates(type: MemoryType, fingerprint: string | null | undefined, projectId: string | null): number;
|
|
145
|
+
penalizeRecurringReflectors(sessionId: string): number;
|
|
96
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* v0.3.0 fix — Count active memories that would be superseded by a new
|
|
149
|
+
* row with the given (type, fingerprint, projectId) tuple. Used by
|
|
150
|
+
* `okf-import` to populate `ImportResult.superseded` accurately.
|
|
151
|
+
*
|
|
152
|
+
* Matches the supersede logic in `save()`: only `decision` and `rule`
|
|
153
|
+
* types supersede prior rows with the same fingerprint. Returns 0 for
|
|
154
|
+
* any other type.
|
|
155
|
+
*/
|
|
156
|
+
export declare function countSupersedeCandidates(store: Store, type: MemoryType, fingerprint: string | null | undefined, projectId: string | null): number;
|
|
@@ -14,6 +14,8 @@ function toSlim(mem) {
|
|
|
14
14
|
const TYPE_PRIORITY = {
|
|
15
15
|
error: 0,
|
|
16
16
|
pattern: 1,
|
|
17
|
+
rule: 1,
|
|
18
|
+
solution: 1,
|
|
17
19
|
decision: 2,
|
|
18
20
|
context: 3,
|
|
19
21
|
};
|
|
@@ -26,6 +28,7 @@ const RELEVANCE_MAX = 1.0;
|
|
|
26
28
|
// notes, all else equal. No embeddings, no RRF.
|
|
27
29
|
const ORIGIN_BOOST_REFLECTOR = 2;
|
|
28
30
|
const ORIGIN_BOOST_PATTERN = 1.5;
|
|
31
|
+
const ORIGIN_BOOST_CASUAL = 2;
|
|
29
32
|
const ORIGIN_BOOST_AGENT = 1;
|
|
30
33
|
const RECENCY_DECAY_PER_DAY = 0.95; // newer = closer to 1 (less penalty)
|
|
31
34
|
function sqliteUtcToMs(createdAt) {
|
|
@@ -63,6 +66,12 @@ function mapRow(row, score) {
|
|
|
63
66
|
projectId: row.project_id ?? null,
|
|
64
67
|
fingerprint: row.fingerprint ?? null,
|
|
65
68
|
origin: row.origin ?? null,
|
|
69
|
+
confidence: typeof row.evidence_count === "number"
|
|
70
|
+
? Math.min(1, 0.5 + 0.1 * (row.evidence_count ?? 0))
|
|
71
|
+
: null,
|
|
72
|
+
evidenceCount: row.evidence_count ?? null,
|
|
73
|
+
lastVerifiedAt: row.last_verified_at ?? null,
|
|
74
|
+
status: row.status ?? "active",
|
|
66
75
|
};
|
|
67
76
|
if (score !== undefined) {
|
|
68
77
|
if (!mem.metadata)
|
|
@@ -103,6 +112,7 @@ export class MemoryService {
|
|
|
103
112
|
const metadata = input.metadata ? JSON.stringify(input.metadata) : null;
|
|
104
113
|
const origin = input.origin ?? "agent";
|
|
105
114
|
const projectId = input.projectId ?? null;
|
|
115
|
+
const status = input.status ?? "active";
|
|
106
116
|
// Fingerprint is used for dedup (error memories via migration 003
|
|
107
117
|
// partial unique index) AND for pattern idempotency (K2-021 — pattern
|
|
108
118
|
// memories store an explicit fingerprint so PatternMiner's SELECT-before-
|
|
@@ -122,13 +132,28 @@ export class MemoryService {
|
|
|
122
132
|
expiresAt = sqliteUtcNowPlusHours(SESSION_DEFAULT_TTL_HOURS);
|
|
123
133
|
}
|
|
124
134
|
const id = uuidv7();
|
|
135
|
+
// v0.3.0 (K3-014) — supersede model: when saving a decision/rule with
|
|
136
|
+
// the same fingerprint as an existing active row, mark the old as
|
|
137
|
+
// superseded and insert the fresh version as active.
|
|
138
|
+
const supersedableTypes = ["decision", "rule"];
|
|
139
|
+
if (fp !== null && supersedableTypes.includes(input.type)) {
|
|
140
|
+
this.store
|
|
141
|
+
.prepare(`UPDATE memories
|
|
142
|
+
SET status = 'superseded', updated_at = datetime('now')
|
|
143
|
+
WHERE fingerprint = ?
|
|
144
|
+
AND type = ?
|
|
145
|
+
AND status = 'active'
|
|
146
|
+
AND (project_id IS ? OR (project_id IS NULL AND ? IS NULL))`)
|
|
147
|
+
.run(fp, input.type, projectId, projectId);
|
|
148
|
+
}
|
|
125
149
|
try {
|
|
126
150
|
this.store
|
|
127
151
|
.prepare(`INSERT INTO memories
|
|
128
152
|
(id, type, content, scope, relevance_score, source_tool, source_session,
|
|
129
|
-
metadata, expires_at, project_id, fingerprint, origin
|
|
130
|
-
|
|
131
|
-
|
|
153
|
+
metadata, expires_at, project_id, fingerprint, origin,
|
|
154
|
+
evidence_count, last_verified_at, status)
|
|
155
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
156
|
+
.run(id, input.type, input.content, scope, relevanceScore, input.sourceTool ?? null, input.sourceSession ?? null, metadata, expiresAt, projectId, fp, origin, input.evidenceCount ?? 0, input.lastVerifiedAt ?? null, status);
|
|
132
157
|
return id;
|
|
133
158
|
}
|
|
134
159
|
catch (err) {
|
|
@@ -162,7 +187,8 @@ export class MemoryService {
|
|
|
162
187
|
const row = this.store
|
|
163
188
|
.prepare(`SELECT id, type, content, scope, relevance_score, source_tool, source_session,
|
|
164
189
|
metadata, created_at, updated_at, expires_at,
|
|
165
|
-
project_id, fingerprint, origin
|
|
190
|
+
project_id, fingerprint, origin,
|
|
191
|
+
evidence_count, last_verified_at, status
|
|
166
192
|
FROM memories WHERE id = ?`)
|
|
167
193
|
.get(id);
|
|
168
194
|
return row ? mapRow(row) : null;
|
|
@@ -194,6 +220,18 @@ export class MemoryService {
|
|
|
194
220
|
cols.push("expires_at = ?");
|
|
195
221
|
vals.push(fields.expiresAt);
|
|
196
222
|
}
|
|
223
|
+
if (fields.evidenceCount !== undefined) {
|
|
224
|
+
cols.push("evidence_count = ?");
|
|
225
|
+
vals.push(fields.evidenceCount);
|
|
226
|
+
}
|
|
227
|
+
if (fields.lastVerifiedAt !== undefined) {
|
|
228
|
+
cols.push("last_verified_at = ?");
|
|
229
|
+
vals.push(fields.lastVerifiedAt);
|
|
230
|
+
}
|
|
231
|
+
if (fields.status !== undefined) {
|
|
232
|
+
cols.push("status = ?");
|
|
233
|
+
vals.push(fields.status);
|
|
234
|
+
}
|
|
197
235
|
if (cols.length === 0)
|
|
198
236
|
return;
|
|
199
237
|
cols.push("updated_at = datetime('now')");
|
|
@@ -217,12 +255,16 @@ export class MemoryService {
|
|
|
217
255
|
m.source_tool, m.source_session, m.metadata,
|
|
218
256
|
m.created_at, m.updated_at, m.expires_at,
|
|
219
257
|
m.project_id, m.fingerprint, m.origin,
|
|
258
|
+
m.evidence_count, m.last_verified_at, m.status,
|
|
220
259
|
bm25(memories_fts) AS score
|
|
221
260
|
FROM memories_fts
|
|
222
261
|
JOIN memories m ON m.rowid = memories_fts.rowid
|
|
223
262
|
WHERE memories_fts MATCH ?
|
|
224
263
|
AND (m.expires_at IS NULL OR m.expires_at > datetime('now'))`;
|
|
225
264
|
const params = [match];
|
|
265
|
+
if (!input.includeSuperseded) {
|
|
266
|
+
sql += "\n AND m.status = 'active'";
|
|
267
|
+
}
|
|
226
268
|
if (input.type) {
|
|
227
269
|
sql += " AND m.type = ?";
|
|
228
270
|
params.push(input.type);
|
|
@@ -234,18 +276,38 @@ export class MemoryService {
|
|
|
234
276
|
sql += " ORDER BY bm25(memories_fts) LIMIT ?";
|
|
235
277
|
params.push(limit);
|
|
236
278
|
const rows = this.store.prepare(sql).all(...params);
|
|
279
|
+
// v0.3.0 (K3-019) — cross-project opt-in must also gate kevin_query
|
|
280
|
+
// (bug #12 fix): when cross_project_enabled is OFF, imported rows
|
|
281
|
+
// (project_id IS NULL AND origin='imported') are hidden.
|
|
282
|
+
const crossProjectOn = this.isCrossProjectEnabled();
|
|
237
283
|
const memories = rows
|
|
238
284
|
.map((r) => mapRow(r, r.score))
|
|
239
|
-
.filter((m) => !isNotSearchable(m))
|
|
285
|
+
.filter((m) => !isNotSearchable(m))
|
|
286
|
+
.filter((m) => crossProjectOn || m.projectId !== null || m.origin !== "imported");
|
|
240
287
|
return input.full === true ? memories : memories.map(toSlim);
|
|
241
288
|
}
|
|
242
|
-
|
|
289
|
+
isCrossProjectEnabled() {
|
|
290
|
+
try {
|
|
291
|
+
const row = this.store
|
|
292
|
+
.prepare("SELECT value FROM kevin_settings WHERE key = 'cross_project_enabled'")
|
|
293
|
+
.get();
|
|
294
|
+
return (row?.value ?? 0) === 1;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
loadAll(scope, includeSuperseded = false) {
|
|
243
301
|
let sql = `
|
|
244
302
|
SELECT id, type, content, scope, relevance_score, source_tool, source_session,
|
|
245
303
|
metadata, created_at, updated_at, expires_at,
|
|
246
|
-
project_id, fingerprint, origin
|
|
304
|
+
project_id, fingerprint, origin,
|
|
305
|
+
evidence_count, last_verified_at, status
|
|
247
306
|
FROM memories
|
|
248
307
|
WHERE (expires_at IS NULL OR expires_at > datetime('now'))`;
|
|
308
|
+
if (!includeSuperseded) {
|
|
309
|
+
sql += "\n AND status = 'active'";
|
|
310
|
+
}
|
|
249
311
|
const params = [];
|
|
250
312
|
if (scope !== "all") {
|
|
251
313
|
sql += " AND scope = ?";
|
|
@@ -254,7 +316,7 @@ export class MemoryService {
|
|
|
254
316
|
sql += " ORDER BY relevance_score DESC, created_at DESC";
|
|
255
317
|
return this.store.prepare(sql).all(...params);
|
|
256
318
|
}
|
|
257
|
-
queryRelevant(text, scope) {
|
|
319
|
+
queryRelevant(text, scope, includeSuperseded = false) {
|
|
258
320
|
const tokens = stripUnbalancedQuotes(text.trim())
|
|
259
321
|
.split(/\s+/)
|
|
260
322
|
.filter((t) => t.length > 0)
|
|
@@ -267,11 +329,15 @@ export class MemoryService {
|
|
|
267
329
|
m.source_tool, m.source_session, m.metadata,
|
|
268
330
|
m.created_at, m.updated_at, m.expires_at,
|
|
269
331
|
m.project_id, m.fingerprint, m.origin,
|
|
332
|
+
m.evidence_count, m.last_verified_at, m.status,
|
|
270
333
|
bm25(memories_fts) AS score
|
|
271
334
|
FROM memories_fts
|
|
272
335
|
JOIN memories m ON m.rowid = memories_fts.rowid
|
|
273
336
|
WHERE memories_fts MATCH ?
|
|
274
337
|
AND (m.expires_at IS NULL OR m.expires_at > datetime('now'))`;
|
|
338
|
+
if (!includeSuperseded) {
|
|
339
|
+
sql += "\n AND m.status = 'active'";
|
|
340
|
+
}
|
|
275
341
|
const params = [match];
|
|
276
342
|
if (scope !== "all") {
|
|
277
343
|
sql += " AND m.scope = ?";
|
|
@@ -287,15 +353,26 @@ export class MemoryService {
|
|
|
287
353
|
const maxTokens = input.maxTokens ?? 2000;
|
|
288
354
|
const charBudget = maxTokens * 4;
|
|
289
355
|
const scope = input.scope ?? "project";
|
|
356
|
+
const includeSuperseded = input.includeSuperseded === true;
|
|
290
357
|
let candidates;
|
|
291
358
|
if (input.query && input.query.trim().length > 0) {
|
|
292
|
-
candidates = this.queryRelevant(input.query, scope);
|
|
359
|
+
candidates = this.queryRelevant(input.query, scope, includeSuperseded);
|
|
293
360
|
}
|
|
294
361
|
else {
|
|
295
|
-
candidates = this.loadAll(scope)
|
|
362
|
+
candidates = this.loadAll(scope, includeSuperseded)
|
|
296
363
|
.map((r) => mapRow(r))
|
|
297
364
|
.filter((m) => !isNotSearchable(m));
|
|
298
365
|
}
|
|
366
|
+
// v0.3.0 (K3-019) — cross-project opt-in.
|
|
367
|
+
// When cross_project_enabled is OFF (default), exclude imported
|
|
368
|
+
// cross-project rows (project_id IS NULL AND origin='imported').
|
|
369
|
+
// OKF import is the cross-project bridge per plan §B12; imported
|
|
370
|
+
// memories always carry project_id NULL (bug #12 fix — the old
|
|
371
|
+
// filter only excluded imported RULES, leaking imported
|
|
372
|
+
// decisions/patterns into recall).
|
|
373
|
+
if (!this.isCrossProjectEnabled()) {
|
|
374
|
+
candidates = candidates.filter((m) => m.projectId !== null || m.origin !== "imported");
|
|
375
|
+
}
|
|
299
376
|
// v0.2.0 (K2-023) origin-aware rank: BM25 × origin-boost × recency-decay.
|
|
300
377
|
// Tie-breakers preserve the v0.1.x spirit (errors/patterns before
|
|
301
378
|
// context; newer before older when nothing else decides).
|
|
@@ -318,6 +395,53 @@ export class MemoryService {
|
|
|
318
395
|
}
|
|
319
396
|
return result;
|
|
320
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* v0.3.0 (K3-004) — Promote an error memory to a causal pattern.
|
|
400
|
+
*
|
|
401
|
+
* Creates a new `pattern` memory with `origin = 'causal'`, derived
|
|
402
|
+
* confidence, and evidence count. The original error memory is NOT
|
|
403
|
+
* deleted — the audit trail is preserved. Returns the new memory id,
|
|
404
|
+
* or null when the source error is not eligible (missing fingerprint,
|
|
405
|
+
* wrong type, or already promoted).
|
|
406
|
+
*/
|
|
407
|
+
promoteToPattern(errorId, evidenceCount) {
|
|
408
|
+
const error = this.getById(errorId);
|
|
409
|
+
if (!error || error.type !== "error" || !error.fingerprint)
|
|
410
|
+
return null;
|
|
411
|
+
const confidence = Math.min(1.0, 0.5 + 0.1 * evidenceCount);
|
|
412
|
+
const now = new Date().toISOString();
|
|
413
|
+
const summary = error.content.split("\n")[0].slice(0, 200);
|
|
414
|
+
const content = `Causal pattern: ${summary}\n\nEvidence: ${evidenceCount} confirmed fix(es)\nConfidence: ${(confidence * 100).toFixed(0)}%\n\nOriginal: ${error.content.slice(0, 1000)}`;
|
|
415
|
+
// v0.3.0 fix (bug #4) — idempotent promotion: the supersede model
|
|
416
|
+
// only covers decision/rule, so the old code inserted a duplicate
|
|
417
|
+
// pattern on every subsequent session.idle with a new fix. When an
|
|
418
|
+
// active causal pattern already exists for this fingerprint, refresh
|
|
419
|
+
// it (content, evidence_count, last_verified_at) instead. The FTS
|
|
420
|
+
// sync trigger (memories_au) keeps searchable content up to date.
|
|
421
|
+
const existing = this.store
|
|
422
|
+
.prepare(`SELECT id FROM memories
|
|
423
|
+
WHERE fingerprint = ? AND type = 'pattern'
|
|
424
|
+
AND origin = 'causal' AND status = 'active'
|
|
425
|
+
ORDER BY created_at DESC LIMIT 1`)
|
|
426
|
+
.get(error.fingerprint);
|
|
427
|
+
if (existing) {
|
|
428
|
+
this.update(existing.id, { content, evidenceCount, lastVerifiedAt: now });
|
|
429
|
+
return existing.id;
|
|
430
|
+
}
|
|
431
|
+
return this.save({
|
|
432
|
+
type: "pattern",
|
|
433
|
+
content,
|
|
434
|
+
scope: "project",
|
|
435
|
+
origin: "causal",
|
|
436
|
+
sourceTool: error.sourceTool ?? undefined,
|
|
437
|
+
sourceSession: error.sourceSession ?? undefined,
|
|
438
|
+
fingerprint: error.fingerprint,
|
|
439
|
+
evidenceCount,
|
|
440
|
+
lastVerifiedAt: now,
|
|
441
|
+
status: "active",
|
|
442
|
+
projectId: error.projectId ?? undefined,
|
|
443
|
+
});
|
|
444
|
+
}
|
|
321
445
|
/**
|
|
322
446
|
* v0.2.0 (K2-026) — Feedback loop positive half (plan §B6.10 / D2-10).
|
|
323
447
|
*
|
|
@@ -333,25 +457,33 @@ export class MemoryService {
|
|
|
333
457
|
if (!sessionId)
|
|
334
458
|
return 0;
|
|
335
459
|
const lessons = this.store
|
|
336
|
-
.prepare(`SELECT id, fingerprint, project_id
|
|
460
|
+
.prepare(`SELECT id, fingerprint, project_id, metadata
|
|
337
461
|
FROM memories
|
|
338
462
|
WHERE origin = 'reflector'
|
|
339
463
|
AND type = 'error'
|
|
340
464
|
AND source_session = ?
|
|
341
|
-
AND fingerprint IS NOT NULL
|
|
465
|
+
AND fingerprint IS NOT NULL
|
|
466
|
+
AND status = 'active'`)
|
|
342
467
|
.all(sessionId);
|
|
343
468
|
if (lessons.length === 0)
|
|
344
469
|
return 0;
|
|
470
|
+
// v0.3.0 fix — recurrence is now matched via `error_fingerprint`
|
|
471
|
+
// (set by Reflector.onLinkError) OR the legacy `fingerprint` column
|
|
472
|
+
// (preserved for tests and pre-fix tool_call rows). The original
|
|
473
|
+
// failing call is excluded when its id is recorded in the memory
|
|
474
|
+
// metadata as `origin_call_id` (set by Reflector from `callID`).
|
|
345
475
|
const recurrenceCheck = this.store.prepare(`SELECT COUNT(*) AS c
|
|
346
476
|
FROM tool_calls
|
|
347
|
-
WHERE fingerprint = ?
|
|
477
|
+
WHERE (error_fingerprint = ? OR fingerprint = ?)
|
|
348
478
|
AND success = 0
|
|
349
|
-
AND (project_id IS ? OR (project_id IS NULL AND ? IS NULL))
|
|
479
|
+
AND (project_id IS ? OR (project_id IS NULL AND ? IS NULL))
|
|
480
|
+
AND (? IS NULL OR id <> ?)`);
|
|
350
481
|
const bumpOne = this.store.prepare("UPDATE memories SET relevance_score = MIN(?, relevance_score + ?) WHERE id = ?");
|
|
351
482
|
let boosted = 0;
|
|
352
483
|
this.store.transaction(() => {
|
|
353
484
|
for (const l of lessons) {
|
|
354
|
-
const
|
|
485
|
+
const originCallId = readOriginCallId(l.metadata);
|
|
486
|
+
const row = recurrenceCheck.get(l.fingerprint, l.fingerprint, l.project_id, l.project_id, originCallId, originCallId);
|
|
355
487
|
const c = row?.c ?? 0;
|
|
356
488
|
if (c === 0) {
|
|
357
489
|
bumpOne.run(RELEVANCE_MAX, RELEVANCE_BUMP, l.id);
|
|
@@ -361,10 +493,79 @@ export class MemoryService {
|
|
|
361
493
|
});
|
|
362
494
|
return boosted;
|
|
363
495
|
}
|
|
496
|
+
/**
|
|
497
|
+
* v0.3.0 (K3-013) — Feedback loop negative half.
|
|
498
|
+
*
|
|
499
|
+
* For each reflector-sourced error memory from this session whose
|
|
500
|
+
* fingerprint DID recur as a failing tool_call (the lesson didn't
|
|
501
|
+
* prevent the error), decrement `relevance_score` by `RELEVANCE_PENALTY`
|
|
502
|
+
* (down to zero) and increment `evidence_count` as a negative signal.
|
|
503
|
+
* Agent-saved memories are NEVER penalized.
|
|
504
|
+
*
|
|
505
|
+
* Returns the number of memories penalized.
|
|
506
|
+
*/
|
|
507
|
+
/**
|
|
508
|
+
* v0.3.0 fix — Mirror of the free function `countSupersedeCandidates`
|
|
509
|
+
* exposed as an instance method so `okf-import` (which holds a
|
|
510
|
+
* `MemoryService` reference but not the underlying `Store`) can count
|
|
511
|
+
* rows that `save()` will mark as superseded.
|
|
512
|
+
*/
|
|
513
|
+
countSupersedeCandidates(type, fingerprint, projectId) {
|
|
514
|
+
return countSupersedeCandidates(this.store, type, fingerprint, projectId);
|
|
515
|
+
}
|
|
516
|
+
penalizeRecurringReflectors(sessionId) {
|
|
517
|
+
if (!sessionId)
|
|
518
|
+
return 0;
|
|
519
|
+
const RELEVANCE_PENALTY = 0.05;
|
|
520
|
+
// v0.3.0 fix — to support cross-session feedback we drop the
|
|
521
|
+
// memory-side `source_session` filter: any reflector error whose
|
|
522
|
+
// fingerprint recurs as a failing tool_call IN THIS session is
|
|
523
|
+
// eligible for penalization (the lesson didn't prevent the error).
|
|
524
|
+
// The recurrence check narrows on `tool_calls.session_id = ?` and
|
|
525
|
+
// excludes the original failing call via `origin_call_id` metadata,
|
|
526
|
+
// matching both new `error_fingerprint` and legacy `fingerprint`.
|
|
527
|
+
const lessons = this.store
|
|
528
|
+
.prepare(`SELECT id, fingerprint, project_id, metadata
|
|
529
|
+
FROM memories
|
|
530
|
+
WHERE origin = 'reflector'
|
|
531
|
+
AND type = 'error'
|
|
532
|
+
AND fingerprint IS NOT NULL
|
|
533
|
+
AND status = 'active'`)
|
|
534
|
+
.all();
|
|
535
|
+
if (lessons.length === 0)
|
|
536
|
+
return 0;
|
|
537
|
+
const recurrenceCheck = this.store.prepare(`SELECT COUNT(*) AS c
|
|
538
|
+
FROM tool_calls
|
|
539
|
+
WHERE session_id = ?
|
|
540
|
+
AND success = 0
|
|
541
|
+
AND (error_fingerprint = ? OR fingerprint = ?)
|
|
542
|
+
AND (project_id IS ? OR (project_id IS NULL AND ? IS NULL))
|
|
543
|
+
AND (? IS NULL OR id <> ?)`);
|
|
544
|
+
const penalizeOne = this.store.prepare(`UPDATE memories
|
|
545
|
+
SET relevance_score = MAX(0, relevance_score - ?),
|
|
546
|
+
evidence_count = evidence_count + 1,
|
|
547
|
+
last_verified_at = datetime('now')
|
|
548
|
+
WHERE id = ?`);
|
|
549
|
+
let penalized = 0;
|
|
550
|
+
this.store.transaction(() => {
|
|
551
|
+
for (const l of lessons) {
|
|
552
|
+
const originCallId = readOriginCallId(l.metadata);
|
|
553
|
+
const row = recurrenceCheck.get(sessionId, l.fingerprint, l.fingerprint, l.project_id, l.project_id, originCallId, originCallId);
|
|
554
|
+
const c = row?.c ?? 0;
|
|
555
|
+
if (c > 0) {
|
|
556
|
+
penalizeOne.run(RELEVANCE_PENALTY, l.id);
|
|
557
|
+
penalized += 1;
|
|
558
|
+
this.metrics?.incr("memories_superseded", 1);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
return penalized;
|
|
563
|
+
}
|
|
364
564
|
}
|
|
365
565
|
function originBoost(mem) {
|
|
366
566
|
switch (mem.origin ?? "agent") {
|
|
367
567
|
case "reflector":
|
|
568
|
+
case "causal":
|
|
368
569
|
return ORIGIN_BOOST_REFLECTOR;
|
|
369
570
|
case "pattern":
|
|
370
571
|
return ORIGIN_BOOST_PATTERN;
|
|
@@ -372,6 +573,50 @@ function originBoost(mem) {
|
|
|
372
573
|
return ORIGIN_BOOST_AGENT;
|
|
373
574
|
}
|
|
374
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* v0.3.0 fix — Extract `origin_call_id` from the memory metadata blob.
|
|
578
|
+
*
|
|
579
|
+
* Reflector stores the failing tool_call id in metadata.origin_call_id
|
|
580
|
+
* (when available) so the feedback loop can exclude the original call
|
|
581
|
+
* from the recurrence count. Returns null when metadata is absent,
|
|
582
|
+
* malformed, or lacks the field.
|
|
583
|
+
*/
|
|
584
|
+
function readOriginCallId(metadata) {
|
|
585
|
+
if (!metadata)
|
|
586
|
+
return null;
|
|
587
|
+
try {
|
|
588
|
+
const parsed = JSON.parse(metadata);
|
|
589
|
+
const id = parsed?.origin_call_id;
|
|
590
|
+
return typeof id === "string" && id.length > 0 ? id : null;
|
|
591
|
+
}
|
|
592
|
+
catch {
|
|
593
|
+
return null;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* v0.3.0 fix — Count active memories that would be superseded by a new
|
|
598
|
+
* row with the given (type, fingerprint, projectId) tuple. Used by
|
|
599
|
+
* `okf-import` to populate `ImportResult.superseded` accurately.
|
|
600
|
+
*
|
|
601
|
+
* Matches the supersede logic in `save()`: only `decision` and `rule`
|
|
602
|
+
* types supersede prior rows with the same fingerprint. Returns 0 for
|
|
603
|
+
* any other type.
|
|
604
|
+
*/
|
|
605
|
+
export function countSupersedeCandidates(store, type, fingerprint, projectId) {
|
|
606
|
+
if (!fingerprint)
|
|
607
|
+
return 0;
|
|
608
|
+
if (type !== "decision" && type !== "rule")
|
|
609
|
+
return 0;
|
|
610
|
+
const row = store
|
|
611
|
+
.prepare(`SELECT COUNT(*) AS c
|
|
612
|
+
FROM memories
|
|
613
|
+
WHERE type IN ('decision', 'rule')
|
|
614
|
+
AND fingerprint = ?
|
|
615
|
+
AND status = 'active'
|
|
616
|
+
AND (project_id IS ? OR (project_id IS NULL AND ? IS NULL))`)
|
|
617
|
+
.get(fingerprint, projectId, projectId);
|
|
618
|
+
return row?.c ?? 0;
|
|
619
|
+
}
|
|
375
620
|
function rankScore(mem) {
|
|
376
621
|
// FTS5 bm25 returns a negative score (more negative = better match).
|
|
377
622
|
// For non-FTS rows (loadAll path), fall back to -relevance_score so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryService.js","sourceRoot":"","sources":["../../plugin/MemoryService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAkEnC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,SAAS,MAAM,CAAC,GAAW;IAC1B,MAAM,QAAQ,GAAI,GAAG,CAAC,QAA2C,EAAE,KAAK,CAAC;IACzE,OAAO;QACN,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc;QACnE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC;KAChD,CAAC;AACH,CAAC;AA0BD,MAAM,aAAa,GAA+B;IACjD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,4DAA4D;AAC5D,4EAA4E;AAC5E,uEAAuE;AACvE,gDAAgD;AAChD,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,qCAAqC;AAEzE,SAAS,aAAa,CAAC,SAAiB;IACvC,iEAAiE;IACjE,+CAA+C;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,mBAAmB,GACxB,oDAAoD,CAAC;AAEtD,SAAS,qBAAqB,CAAC,KAAa;IAC3C,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAC9D,CAAC,CAAC,UAAU,EAAE,CACd,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,MAAM,CAAC,GAAc,EAAE,KAAc;IAC7C,MAAM,GAAG,GAAW;QACnB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,cAAc,EAAE,GAAG,CAAC,eAAe;QACnC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACrB,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAA6B;YACvD,CAAC,CAAC,IAAI;QACP,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;QACjC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QACpC,MAAM,EAAG,GAAG,CAAC,MAA0C,IAAI,IAAI;KAC/D,CAAC;IACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,GAAG,CAAC,QAAoC,CAAC,KAAK,GAAG,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC/C,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAS;IACvC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IACnC,OAAO,CACL,GAAG,CAAC,QAA2C,EAAE,cAAc,KAAK,IAAI,CACzE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,aAAa;IACR,OAAO,CAAiB;IAEzC,YAAY,KAAY,EAAE,OAAwB;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IAChC,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,gCAAgC;IACxB,KAAK,CAAQ;IAErB,IAAI,CAAC,KAAgB;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QACvC,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,MAAM,GAAiB,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;QACrD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAE1C,kEAAkE;QAClE,sEAAsE;QACtE,0EAA0E;QAC1E,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,aAAa;QACb,IAAI,EAAE,GAAkB,IAAI,CAAC;QAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,SAAS,GAAkB,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC7C,SAAS,GAAG,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpB,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK;iBACR,OAAO,CACP;;;uDAGkD,CAClD;iBACA,GAAG,CACH,EAAE,EACF,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,EACb,KAAK,EACL,cAAc,EACd,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,EAAE,EACF,MAAM,CACN,CAAC;YACH,OAAO,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,GAAI,GAAwC,EAAE,OAAO,IAAI,EAAE,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC9C,2DAA2D;YAC3D,mDAAmD;YACnD,mEAAmE;YACnE,iEAAiE;YACjE,IAAI,EAAE,KAAK,IAAI,IAAI,MAAM,KAAK,WAAW;gBAAE,MAAM,GAAG,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;iBACzB,OAAO,CACP;;;;;oBAKe,CACf;iBACA,GAAG,CAAC,SAAS,EAAE,EAAE,CAA+B,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;YACjC,gEAAgE;YAChE,iEAAiE;YACjE,mBAAmB;YACnB,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,OAAO,CAAC,EAAU;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;aACpB,OAAO,CACP;;;oCAGgC,CAChC;aACA,GAAG,CAAC,EAAE,CAA0B,CAAC;QACnC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,MAAuB;QACzC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9B,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,KAAK;aACR,OAAO,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;aAC9D,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,EAAU;QAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAMD,KAAK,CAAC,KAAiB;QACtB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAEhC,IAAI,GAAG,GAAG;;;;;;;;;qEASyD,CAAC;QACpE,MAAM,MAAM,GAAc,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,GAAG,IAAI,iBAAiB,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,GAAG,IAAI,kBAAkB,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,GAAG,IAAI,sCAAsC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAE9C,CAAC;QACL,MAAM,QAAQ,GAAG,IAAI;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEO,OAAO,CAAC,KAA0B;QACzC,IAAI,GAAG,GAAG;;;;;iEAKqD,CAAC;QAChE,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,GAAG,IAAI,gBAAgB,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,GAAG,IAAI,iDAAiD,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAgB,CAAC;IAC9D,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,KAA0B;QAC7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC/C,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,GAAG,GAAG;;;;;;;;;qEASyD,CAAC;QACpE,MAAM,MAAM,GAAc,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,GAAG,IAAI,kBAAkB,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,GAAG,IAAI,wCAAwC,CAAC;QAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAE9C,CAAC;QACL,OAAO,IAAI;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,KAAuB;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;QAEvC,IAAI,UAAoB,CAAC;QACzB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,0EAA0E;QAC1E,kEAAkE;QAClE,0DAA0D;QAC1D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;YACpC,IAAI,IAAI,GAAG,GAAG,GAAG,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM;YACxD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,IAAI,GAAG,CAAC;QACb,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAC9B,gFAAgF,CAChF,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;gBAC3B,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,SAAiB;QACxC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK;aACxB,OAAO,CACP;;;;;mCAK+B,CAC/B;aACA,GAAG,CAAC,SAAS,CAIb,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CACzC;;;;kEAI+D,CAC/D,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CACjC,gFAAgF,CAChF,CAAC;QACF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAC9B,CAAC,CAAC,WAAW,EACb,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,UAAU,CACiB,CAAC;gBAC/B,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjD,OAAO,IAAI,CAAC,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AAED,SAAS,WAAW,CAAC,GAAW;IAC/B,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAC/B,KAAK,WAAW;YACf,OAAO,sBAAsB,CAAC;QAC/B,KAAK,SAAS;YACb,OAAO,oBAAoB,CAAC;QAC7B;YACC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC7B,qEAAqE;IACrE,oEAAoE;IACpE,4EAA4E;IAC5E,MAAM,QAAQ,GAAI,GAAG,CAAC,QAA2C,EAAE,KAAK,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CACxD,CAAC;IACF,MAAM,YAAY,GAAG,qBAAqB,IAAI,OAAO,CAAC;IACtD,OAAO,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,wCAAwC;IACvE,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;AAC/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"MemoryService.js","sourceRoot":"","sources":["../../plugin/MemoryService.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/Migrate.js
CHANGED
|
@@ -15,6 +15,18 @@ const DEFAULT_POST_APPLY_HOOKS = {
|
|
|
15
15
|
.prepare("UPDATE memories SET origin = 'agent' WHERE origin IS NULL OR origin = ''")
|
|
16
16
|
.run();
|
|
17
17
|
},
|
|
18
|
+
// v0.3.0 Knowledge + Causality: backfill evidence_count and status for
|
|
19
|
+
// legacy rows. Columns have NOT NULL DEFAULT, so SQLite already populates
|
|
20
|
+
// pre-existing rows. This hook is belt-and-braces in case a partial DB
|
|
21
|
+
// skipped the defaults.
|
|
22
|
+
"004": (store) => {
|
|
23
|
+
store
|
|
24
|
+
.prepare("UPDATE memories SET evidence_count = 0 WHERE evidence_count IS NULL")
|
|
25
|
+
.run();
|
|
26
|
+
store
|
|
27
|
+
.prepare("UPDATE memories SET status = 'active' WHERE status IS NULL OR status = ''")
|
|
28
|
+
.run();
|
|
29
|
+
},
|
|
18
30
|
};
|
|
19
31
|
export class Migrate {
|
|
20
32
|
store;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../plugin/Migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../plugin/Migrate.ts"],"names":[],"mappings":"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"}
|