@devflow-tools/memory-engine 0.15.0 → 0.16.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/README.md +27 -26
- package/dist/consolidator.d.ts.map +1 -1
- package/dist/consolidator.js +31 -146
- package/dist/consolidator.js.map +1 -1
- package/dist/embedding-provider.d.ts +21 -1
- package/dist/embedding-provider.d.ts.map +1 -1
- package/dist/embedding-provider.js +157 -24
- package/dist/embedding-provider.js.map +1 -1
- package/dist/event-grouper.d.ts.map +1 -1
- package/dist/event-grouper.js +43 -1
- package/dist/event-grouper.js.map +1 -1
- package/dist/hybrid-search.d.ts +1 -1
- package/dist/hybrid-search.d.ts.map +1 -1
- package/dist/hybrid-search.js +44 -43
- package/dist/hybrid-search.js.map +1 -1
- package/dist/index.d.ts +6 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/lease-store.d.ts +33 -0
- package/dist/lease-store.d.ts.map +1 -0
- package/dist/lease-store.js +178 -0
- package/dist/lease-store.js.map +1 -0
- package/dist/lease-store.test.d.ts +2 -0
- package/dist/lease-store.test.d.ts.map +1 -0
- package/dist/lease-store.test.js +167 -0
- package/dist/lease-store.test.js.map +1 -0
- package/dist/memory-engine.d.ts +12 -18
- package/dist/memory-engine.d.ts.map +1 -1
- package/dist/memory-engine.js +220 -148
- package/dist/memory-engine.js.map +1 -1
- package/dist/memory-gate.d.ts +64 -39
- package/dist/memory-gate.d.ts.map +1 -1
- package/dist/memory-gate.js +379 -45
- package/dist/memory-gate.js.map +1 -1
- package/dist/memory-store.d.ts +36 -1
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/memory-store.js +142 -21
- package/dist/memory-store.js.map +1 -1
- package/dist/migrations/v2-to-v3.d.ts +3 -0
- package/dist/migrations/v2-to-v3.d.ts.map +1 -0
- package/dist/migrations/v2-to-v3.js +122 -0
- package/dist/migrations/v2-to-v3.js.map +1 -0
- package/dist/migrations/v2-to-v3.test.d.ts +2 -0
- package/dist/migrations/v2-to-v3.test.d.ts.map +1 -0
- package/dist/migrations/v2-to-v3.test.js +88 -0
- package/dist/migrations/v2-to-v3.test.js.map +1 -0
- package/dist/observation-types.d.ts +7 -0
- package/dist/observation-types.d.ts.map +1 -0
- package/dist/observation-types.js +27 -0
- package/dist/observation-types.js.map +1 -0
- package/dist/project-validator.d.ts.map +1 -1
- package/dist/project-validator.js +1 -2
- package/dist/project-validator.js.map +1 -1
- package/dist/rule-extractor.d.ts +14 -0
- package/dist/rule-extractor.d.ts.map +1 -0
- package/dist/rule-extractor.js +109 -0
- package/dist/rule-extractor.js.map +1 -0
- package/dist/session-summarizer.d.ts +16 -8
- package/dist/session-summarizer.d.ts.map +1 -1
- package/dist/session-summarizer.js +171 -160
- package/dist/session-summarizer.js.map +1 -1
- package/dist/{signal-detector.d.ts → signal-analyzer.d.ts} +6 -2
- package/dist/signal-analyzer.d.ts.map +1 -0
- package/dist/{signal-detector.js → signal-analyzer.js} +34 -3
- package/dist/signal-analyzer.js.map +1 -0
- package/dist/signal-buffer.d.ts +3 -0
- package/dist/signal-buffer.d.ts.map +1 -1
- package/dist/signal-buffer.js.map +1 -1
- package/package.json +6 -6
- package/dist/extractor.d.ts +0 -39
- package/dist/extractor.d.ts.map +0 -1
- package/dist/extractor.js +0 -275
- package/dist/extractor.js.map +0 -1
- package/dist/l2-evaluator.d.ts +0 -31
- package/dist/l2-evaluator.d.ts.map +0 -1
- package/dist/l2-evaluator.js +0 -103
- package/dist/l2-evaluator.js.map +0 -1
- package/dist/llm-provider.d.ts +0 -9
- package/dist/llm-provider.d.ts.map +0 -1
- package/dist/llm-provider.js +0 -37
- package/dist/llm-provider.js.map +0 -1
- package/dist/ollama-checker.d.ts +0 -10
- package/dist/ollama-checker.d.ts.map +0 -1
- package/dist/ollama-checker.js +0 -43
- package/dist/ollama-checker.js.map +0 -1
- package/dist/signal-detector.d.ts.map +0 -1
- package/dist/signal-detector.js.map +0 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
+
import Database from "better-sqlite3";
|
|
3
|
+
import { applyV2ToV3Migration } from "./migrations/v2-to-v3.js";
|
|
4
|
+
import { LeaseStore } from "./lease-store.js";
|
|
5
|
+
describe("LeaseStore", () => {
|
|
6
|
+
let db;
|
|
7
|
+
let store;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
db = new Database(":memory:");
|
|
10
|
+
db.exec(`CREATE TABLE schema_versions (version INTEGER PRIMARY KEY, applied_at INTEGER)`);
|
|
11
|
+
db.prepare(`INSERT INTO schema_versions VALUES (2, ?)`).run(Date.now());
|
|
12
|
+
applyV2ToV3Migration(db);
|
|
13
|
+
store = new LeaseStore(db);
|
|
14
|
+
});
|
|
15
|
+
it("createLease returns a ULID and persists", () => {
|
|
16
|
+
const id = store.createLease(["e1", "e2"], ["s1"], 600_000);
|
|
17
|
+
expect(id).toMatch(/^[0-9A-Z]{26}$/);
|
|
18
|
+
const lease = store.getLease(id);
|
|
19
|
+
expect(lease?.status).toBe("pending");
|
|
20
|
+
expect(lease?.eventIds).toEqual(["e1", "e2"]);
|
|
21
|
+
expect(lease?.sessionIds).toEqual(["s1"]);
|
|
22
|
+
expect(lease?.eventCount).toBe(2);
|
|
23
|
+
});
|
|
24
|
+
it("commitLease transitions pending -> committed", () => {
|
|
25
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
26
|
+
store.commitLease(id);
|
|
27
|
+
expect(store.getLease(id)?.status).toBe("committed");
|
|
28
|
+
});
|
|
29
|
+
it("commitLease throws when lease missing or already committed", () => {
|
|
30
|
+
expect(() => store.commitLease("missing")).toThrow(/not found or already committed/);
|
|
31
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
32
|
+
store.commitLease(id);
|
|
33
|
+
expect(() => store.commitLease(id)).toThrow();
|
|
34
|
+
});
|
|
35
|
+
it("commitLease throws when lease is overdue but not swept", () => {
|
|
36
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
37
|
+
db.prepare("UPDATE distill_leases SET expires_at = 0 WHERE batch_id = ?").run(id);
|
|
38
|
+
expect(() => store.commitLease(id)).toThrow(/expired/);
|
|
39
|
+
});
|
|
40
|
+
it("expireOverdueLeases moves expired pending -> expired", () => {
|
|
41
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
42
|
+
db.prepare("UPDATE distill_leases SET expires_at = 0 WHERE batch_id = ?").run(id);
|
|
43
|
+
const n = store.expireOverdueLeases();
|
|
44
|
+
expect(n).toBe(1);
|
|
45
|
+
expect(store.getLease(id)?.status).toBe("expired");
|
|
46
|
+
});
|
|
47
|
+
it("getPendingEventIds returns only pending lease event_ids", () => {
|
|
48
|
+
const p = store.createLease(["e1", "e2"], ["s1"]);
|
|
49
|
+
const c = store.createLease(["e3"], ["s2"]);
|
|
50
|
+
store.commitLease(c);
|
|
51
|
+
const overdue = store.createLease(["e4"], ["s3"]);
|
|
52
|
+
db.prepare("UPDATE distill_leases SET expires_at = 0 WHERE batch_id = ?").run(overdue);
|
|
53
|
+
const pending = store.getPendingEventIds();
|
|
54
|
+
expect(pending).toEqual(new Set(["e1", "e2"]));
|
|
55
|
+
expect(pending.has("e3")).toBe(false);
|
|
56
|
+
expect(pending.has("e4")).toBe(false); // overdue pending
|
|
57
|
+
});
|
|
58
|
+
it("releases pending leases for one session without consuming other sessions", () => {
|
|
59
|
+
const first = store.createLease(["event-a"], ["session-a"]);
|
|
60
|
+
const second = store.createLease(["event-b"], ["session-b"]);
|
|
61
|
+
expect(store.releasePendingLeases("session-a")).toBe(1);
|
|
62
|
+
expect(store.getLease(first)?.status).toBe("expired");
|
|
63
|
+
expect(store.getLease(second)?.status).toBe("pending");
|
|
64
|
+
});
|
|
65
|
+
it("createLease rejects empty eventIds", () => {
|
|
66
|
+
expect(() => store.createLease([], ["s1"])).toThrow(/nonempty unique array/);
|
|
67
|
+
});
|
|
68
|
+
it.each([
|
|
69
|
+
{ label: "blank event ID", eventIds: [" "], sessionIds: ["s1"], ttlMs: 1_000 },
|
|
70
|
+
{ label: "non-string event ID", eventIds: [123], sessionIds: ["s1"], ttlMs: 1_000 },
|
|
71
|
+
{ label: "duplicate event IDs", eventIds: ["e1", "e1"], sessionIds: ["s1"], ttlMs: 1_000 },
|
|
72
|
+
{ label: "blank session ID", eventIds: ["e1"], sessionIds: [" "], ttlMs: 1_000 },
|
|
73
|
+
{ label: "non-string session ID", eventIds: ["e1"], sessionIds: [123], ttlMs: 1_000 },
|
|
74
|
+
{ label: "duplicate session IDs", eventIds: ["e1"], sessionIds: ["s1", "s1"], ttlMs: 1_000 },
|
|
75
|
+
{ label: "zero TTL", eventIds: ["e1"], sessionIds: ["s1"], ttlMs: 0 },
|
|
76
|
+
{ label: "negative TTL", eventIds: ["e1"], sessionIds: ["s1"], ttlMs: -1 },
|
|
77
|
+
{ label: "fractional TTL", eventIds: ["e1"], sessionIds: ["s1"], ttlMs: 1.5 },
|
|
78
|
+
{ label: "non-number TTL", eventIds: ["e1"], sessionIds: ["s1"], ttlMs: "1000" },
|
|
79
|
+
{
|
|
80
|
+
label: "TTL producing an unsafe expiry",
|
|
81
|
+
eventIds: ["e1"],
|
|
82
|
+
sessionIds: ["s1"],
|
|
83
|
+
ttlMs: Number.MAX_SAFE_INTEGER,
|
|
84
|
+
},
|
|
85
|
+
])("rejects $label before persisting a lease", ({ eventIds, sessionIds, ttlMs }) => {
|
|
86
|
+
expect(() => store.createLease(eventIds, sessionIds, ttlMs)).toThrow();
|
|
87
|
+
expect(db.prepare("SELECT COUNT(*) AS count FROM distill_leases").get())
|
|
88
|
+
.toEqual({ count: 0 });
|
|
89
|
+
});
|
|
90
|
+
it.each([
|
|
91
|
+
["event_ids", "not-json"],
|
|
92
|
+
["event_ids", JSON.stringify(["e1", " "])],
|
|
93
|
+
["event_ids", JSON.stringify(["e1", "e1"])],
|
|
94
|
+
["session_ids", JSON.stringify([""])],
|
|
95
|
+
["session_ids", JSON.stringify(["s1", "s1"])],
|
|
96
|
+
["event_count", 2],
|
|
97
|
+
["created_at", -1],
|
|
98
|
+
["expires_at", 1.5],
|
|
99
|
+
["status", "queued"],
|
|
100
|
+
])("rejects malformed %s with an actionable typed error", (column, value) => {
|
|
101
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
102
|
+
if (column === "status")
|
|
103
|
+
db.pragma("ignore_check_constraints = ON");
|
|
104
|
+
db.prepare(`UPDATE distill_leases SET ${column} = ? WHERE batch_id = ?`).run(value, id);
|
|
105
|
+
if (column === "status")
|
|
106
|
+
db.pragma("ignore_check_constraints = OFF");
|
|
107
|
+
expectMalformedLease(id, () => store.getLease(id));
|
|
108
|
+
});
|
|
109
|
+
it("fails closed when an active lease row is malformed", () => {
|
|
110
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
111
|
+
db.prepare("UPDATE distill_leases SET session_ids = ? WHERE batch_id = ?")
|
|
112
|
+
.run(JSON.stringify([" "]), id);
|
|
113
|
+
expectMalformedLease(id, () => store.getPendingEventIds());
|
|
114
|
+
});
|
|
115
|
+
it("validates a malformed pending expiry before auto-expiring the lease", () => {
|
|
116
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
117
|
+
db.prepare("UPDATE distill_leases SET expires_at = -1 WHERE batch_id = ?").run(id);
|
|
118
|
+
expectMalformedLease(id, () => store.expireOverdueLeases());
|
|
119
|
+
expect(db.prepare("SELECT status FROM distill_leases WHERE batch_id = ?").get(id))
|
|
120
|
+
.toEqual({ status: "pending" });
|
|
121
|
+
});
|
|
122
|
+
it("accepts safe bigint integer fields and converts them to numbers", () => {
|
|
123
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
124
|
+
db.defaultSafeIntegers(true);
|
|
125
|
+
const lease = store.getLease(id);
|
|
126
|
+
expect(lease).not.toBeNull();
|
|
127
|
+
expect(lease).toMatchObject({ eventCount: 1, status: "pending" });
|
|
128
|
+
expect(typeof lease.eventCount).toBe("number");
|
|
129
|
+
expect(typeof lease.createdAt).toBe("number");
|
|
130
|
+
expect(typeof lease.expiresAt).toBe("number");
|
|
131
|
+
});
|
|
132
|
+
it.each([
|
|
133
|
+
["event_count", BigInt(Number.MAX_SAFE_INTEGER) + 1n],
|
|
134
|
+
["created_at", BigInt(Number.MAX_SAFE_INTEGER) + 1n],
|
|
135
|
+
["expires_at", BigInt(Number.MAX_SAFE_INTEGER) + 1n],
|
|
136
|
+
["event_count", -1n],
|
|
137
|
+
["created_at", -1n],
|
|
138
|
+
["expires_at", -1n],
|
|
139
|
+
["event_count", 1.5],
|
|
140
|
+
["created_at", 1.5],
|
|
141
|
+
])("rejects unsafe lease integer %s=%s", (column, value) => {
|
|
142
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
143
|
+
db.prepare(`UPDATE distill_leases SET ${column} = ? WHERE batch_id = ?`).run(value, id);
|
|
144
|
+
expectMalformedLease(id, () => store.getLease(id));
|
|
145
|
+
});
|
|
146
|
+
it("commit is idempotent within same transaction via check-and-update", () => {
|
|
147
|
+
const id = store.createLease(["e1"], ["s1"]);
|
|
148
|
+
store.commitLease(id);
|
|
149
|
+
expect(() => store.commitLease(id)).toThrow();
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
function expectMalformedLease(batchId, read) {
|
|
153
|
+
let error;
|
|
154
|
+
try {
|
|
155
|
+
read();
|
|
156
|
+
}
|
|
157
|
+
catch (caught) {
|
|
158
|
+
error = caught;
|
|
159
|
+
}
|
|
160
|
+
expect(error).toMatchObject({
|
|
161
|
+
name: "MalformedDistillLeaseError",
|
|
162
|
+
batchId,
|
|
163
|
+
});
|
|
164
|
+
expect(error.message).toContain(batchId);
|
|
165
|
+
expect(error.message).toMatch(/repair or remove/i);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=lease-store.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease-store.test.js","sourceRoot":"","sources":["../src/lease-store.test.ts"],"names":[],"mappings":"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"}
|
package/dist/memory-engine.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { IMemoryEngine, UserPrefs, Convention, ProjectContext, SessionEntry, SessionMemory, MemoryCandidate, KnowledgeEntry, MemoryEntryRecord, MemoryFilter, MemorySearchOptions, MemorySearchResult,
|
|
1
|
+
import type { IMemoryEngine, UserPrefs, Convention, ProjectContext, SessionEntry, SessionMemory, MemoryCandidate, KnowledgeEntry, MemoryEntryRecord, MemoryFilter, MemorySearchOptions, MemorySearchResult, GetMemoryOptions, GetMemoryResult, MemorySnapshotItem } from '@devflow-tools/sdk';
|
|
2
2
|
import { MemoryStore } from './memory-store.js';
|
|
3
|
-
import type { Signal } from './signal-
|
|
3
|
+
import type { Signal } from './signal-analyzer.js';
|
|
4
4
|
import { EmbeddingProvider } from './embedding-provider.js';
|
|
5
5
|
export declare class MemoryEngine implements IMemoryEngine {
|
|
6
6
|
readonly store: MemoryStore;
|
|
@@ -8,7 +8,7 @@ export declare class MemoryEngine implements IMemoryEngine {
|
|
|
8
8
|
private searcher;
|
|
9
9
|
private graph;
|
|
10
10
|
private rootPath;
|
|
11
|
-
constructor(rootPath: string, embedder?: EmbeddingProvider
|
|
11
|
+
constructor(rootPath: string, embedder?: EmbeddingProvider);
|
|
12
12
|
private _initPromise;
|
|
13
13
|
private _embedderAvailable;
|
|
14
14
|
private ensureInit;
|
|
@@ -25,17 +25,19 @@ export declare class MemoryEngine implements IMemoryEngine {
|
|
|
25
25
|
closeSession(sessionId: string): Promise<void>;
|
|
26
26
|
searchGlobal(query: string): Promise<KnowledgeEntry[]>;
|
|
27
27
|
upsertGlobal(_entries: KnowledgeEntry[]): Promise<void>;
|
|
28
|
-
getAll(): Promise<{
|
|
29
|
-
project: ProjectContext;
|
|
30
|
-
user: UserPrefs;
|
|
28
|
+
getAll(options?: string | GetMemoryOptions): Promise<GetMemoryResult & {
|
|
31
29
|
relevant: KnowledgeEntry[];
|
|
32
30
|
}>;
|
|
31
|
+
saveExplicitMemoryIntent(content: string, sessionId?: string): Promise<MemorySnapshotItem>;
|
|
32
|
+
listObservationMemories(source?: string): MemorySnapshotItem[];
|
|
33
33
|
getCandidates(): Promise<MemoryCandidate[]>;
|
|
34
34
|
approveCandidate(id: string): Promise<void>;
|
|
35
35
|
rejectCandidate(id: string): Promise<void>;
|
|
36
36
|
search(query: string, options?: MemorySearchOptions): Promise<MemorySearchResult[]>;
|
|
37
37
|
listMemories(filter?: MemoryFilter): Promise<MemoryEntryRecord[]>;
|
|
38
38
|
addMemory(entry: Omit<MemoryEntryRecord, 'id' | 'createdAt' | 'status'>): Promise<MemoryEntryRecord>;
|
|
39
|
+
private addMemoryWithStatus;
|
|
40
|
+
private reconcileRuleStatus;
|
|
39
41
|
/** Map internal MemoryRow → SDK MemoryEntryRecord */
|
|
40
42
|
private _rowToRecord;
|
|
41
43
|
updateMemory(id: string, updates: Partial<Pick<MemoryEntryRecord, 'content' | 'status' | 'scope'>>): Promise<void>;
|
|
@@ -43,8 +45,6 @@ export declare class MemoryEngine implements IMemoryEngine {
|
|
|
43
45
|
getPendingMemories(): Promise<MemoryEntryRecord[]>;
|
|
44
46
|
approveMemory(id: string): Promise<void>;
|
|
45
47
|
rejectMemory(id: string): Promise<void>;
|
|
46
|
-
extractMemories(events: Array<Record<string, unknown>>): Promise<MemoryEntryRecord[]>;
|
|
47
|
-
getOllamaStatus(): Promise<import("./ollama-checker.js").OllamaStatus>;
|
|
48
48
|
consolidateSession(sessionId: string): Promise<MemoryEntryRecord | null>;
|
|
49
49
|
/**
|
|
50
50
|
* Pre-write contradiction check with LLM arbitration.
|
|
@@ -70,6 +70,8 @@ export declare class MemoryEngine implements IMemoryEngine {
|
|
|
70
70
|
l1Score?: number;
|
|
71
71
|
dialogScore?: number;
|
|
72
72
|
userMessage?: string;
|
|
73
|
+
kind?: string;
|
|
74
|
+
payload?: Record<string, unknown>;
|
|
73
75
|
}): Promise<void>;
|
|
74
76
|
recordSignals(signals: Signal[]): void;
|
|
75
77
|
getEffectiveConfidence(entry: {
|
|
@@ -85,15 +87,7 @@ export declare class MemoryEngine implements IMemoryEngine {
|
|
|
85
87
|
exitCode?: number;
|
|
86
88
|
stderr?: string;
|
|
87
89
|
}>): Promise<MemoryEntryRecord[]>;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
approved: number;
|
|
91
|
-
pending: number;
|
|
92
|
-
}>;
|
|
93
|
-
/** New: summarize a specific session's events into observations. */
|
|
94
|
-
summarizeSessionEvents(sessionId: string, projectRoot: string): Promise<{
|
|
95
|
-
observationCount: number;
|
|
96
|
-
provider: string;
|
|
97
|
-
}>;
|
|
90
|
+
extractRecordedSessionEventsRealtime(sessionId: string): Promise<MemoryEntryRecord[]>;
|
|
91
|
+
private saveRuleMemories;
|
|
98
92
|
}
|
|
99
93
|
//# sourceMappingURL=memory-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-engine.d.ts","sourceRoot":"","sources":["../src/memory-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EACpD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAC5D,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EACxE,
|
|
1
|
+
{"version":3,"file":"memory-engine.d.ts","sourceRoot":"","sources":["../src/memory-engine.ts"],"names":[],"mappings":"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"}
|