@fingerskier/augment 0.1.10 → 0.2.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 +20 -2
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +43 -2
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +19 -3
- package/dist/constants.js.map +1 -1
- package/dist/daemon/client.d.ts +5 -0
- package/dist/daemon/client.js +15 -6
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/http.d.ts +1 -1
- package/dist/daemon/http.js +159 -53
- package/dist/daemon/http.js.map +1 -1
- package/dist/daemon/main.js +15 -1
- package/dist/daemon/main.js.map +1 -1
- package/dist/daemon/scheduler.d.ts +17 -0
- package/dist/daemon/scheduler.js +77 -0
- package/dist/daemon/scheduler.js.map +1 -0
- package/dist/daemon/single-instance.d.ts +32 -0
- package/dist/daemon/single-instance.js +131 -0
- package/dist/daemon/single-instance.js.map +1 -0
- package/dist/db.d.ts +13 -1
- package/dist/db.js +166 -105
- package/dist/db.js.map +1 -1
- package/dist/hooks.js +28 -3
- package/dist/hooks.js.map +1 -1
- package/dist/install.d.ts +2 -0
- package/dist/install.js +41 -7
- package/dist/install.js.map +1 -1
- package/dist/mcp/server.js +30 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/recall.d.ts +2 -0
- package/dist/recall.js +1 -0
- package/dist/recall.js.map +1 -1
- package/dist/service.d.ts +64 -1
- package/dist/service.js +269 -35
- package/dist/service.js.map +1 -1
- package/dist/sleep.d.ts +43 -0
- package/dist/sleep.js +129 -0
- package/dist/sleep.js.map +1 -0
- package/dist/tally.d.ts +46 -0
- package/dist/tally.js +94 -0
- package/dist/tally.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/util/text.d.ts +3 -0
- package/dist/util/text.js +26 -2
- package/dist/util/text.js.map +1 -1
- package/docs/FEATURES.md +155 -50
- package/docs/verify-memory-flow.md +28 -9
- package/package.json +1 -1
package/dist/service.js
CHANGED
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { DEFAULT_MEMORY_HARD_LIMIT_CHARS, DEFAULT_SEARCH_LIMIT, DEFAULT_SEARCH_MAX_CHARS, DEFAULT_SEARCH_MIN_SCORE, SEMANTIC_COSINE_BASELINE, SEMANTIC_COSINE_MATCH, SLEEP_MAX_CLUSTERS, SLEEP_MIN_AGE_DAYS, SLEEP_MIN_COSINE, } from "./constants.js";
|
|
2
4
|
import { ensureConfigDirs } from "./config.js";
|
|
3
5
|
import { AugmentDatabase } from "./db.js";
|
|
4
6
|
import { TransformersEmbeddingProvider } from "./embeddings.js";
|
|
5
|
-
import { deleteMemoryFile, normalizeKind, normalizeLinkType, memoryRelativePath, readMemory, writeMemory } from "./memory/files.js";
|
|
7
|
+
import { deleteMemoryFile, normalizeKind, normalizeLinkType, normalizeRelativePath, memoryRelativePath, readMemory, writeMemory } from "./memory/files.js";
|
|
6
8
|
import { inferProjectName } from "./memory/project.js";
|
|
7
9
|
import { findMemoryFiles } from "./memory/scan.js";
|
|
8
|
-
import {
|
|
10
|
+
import { clusterSleepCandidates, renderSleepCandidatesText } from "./sleep.js";
|
|
11
|
+
import { clamp01, cosineSimilarity, lexicalScoreWith, tokens } from "./util/text.js";
|
|
12
|
+
/** How long a self-write marker stays claimable. Long enough to cover the watcher's
|
|
13
|
+
* write-settle debounce; short enough that a marker the watcher never consumed (missed
|
|
14
|
+
* event) cannot mask a genuine external edit much later. */
|
|
15
|
+
const SELF_WRITE_TTL_MS = 30_000;
|
|
16
|
+
/** Repeated queries (hooks re-fire the same file path) skip the model entirely;
|
|
17
|
+
* beyond this many distinct queries the least recently used vector is evicted. */
|
|
18
|
+
const QUERY_EMBEDDING_CACHE_MAX = 128;
|
|
9
19
|
export class AugmentService {
|
|
10
20
|
config;
|
|
11
21
|
embeddingProvider;
|
|
12
22
|
db;
|
|
13
23
|
initialized = false;
|
|
24
|
+
/** relative_path → timestamp of the service's own most recent write/delete of that file. */
|
|
25
|
+
selfWrites = new Map();
|
|
26
|
+
/** The daemon is the corpus's only writer, so between writes this stays valid.
|
|
27
|
+
* Every mutation path clears it (in a finally, so failed writes can't leave a
|
|
28
|
+
* stale snapshot serving deleted or outdated rows). Held as a promise assigned
|
|
29
|
+
* synchronously in {@link corpus}: a mutation completing while a build is
|
|
30
|
+
* mid-read clears THIS field, so the late-finishing build's pre-mutation data
|
|
31
|
+
* is only ever seen by requests already awaiting it — never cached for later
|
|
32
|
+
* searches. */
|
|
33
|
+
corpusPromise;
|
|
34
|
+
queryEmbeddingCache = new Map();
|
|
14
35
|
constructor(config, embeddingProvider = new TransformersEmbeddingProvider()) {
|
|
15
36
|
this.config = config;
|
|
16
37
|
this.embeddingProvider = embeddingProvider;
|
|
@@ -40,21 +61,98 @@ export class AugmentService {
|
|
|
40
61
|
return this.db.listProjects(name);
|
|
41
62
|
}
|
|
42
63
|
async rebuildIndex() {
|
|
64
|
+
try {
|
|
65
|
+
return await this.rebuildIndexCore();
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
this.invalidateCorpusSnapshot();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async rebuildIndexCore() {
|
|
43
72
|
await ensureConfigDirs(this.config);
|
|
44
73
|
await this.db.init();
|
|
45
74
|
const relativePaths = await findMemoryFiles(this.config.memoryRoot);
|
|
75
|
+
const known = await this.db.listMemoryFileStats();
|
|
76
|
+
let indexed = 0;
|
|
77
|
+
let skipped = 0;
|
|
46
78
|
for (const relativePath of relativePaths) {
|
|
79
|
+
// mtime short-circuit: an unchanged file needs no re-read, re-upsert, or re-embed.
|
|
80
|
+
// Any real write (editor, Dropbox sync, our own upsert) advances the file's mtime.
|
|
81
|
+
const stats = await stat(path.join(this.config.memoryRoot, relativePath)).catch(() => undefined);
|
|
82
|
+
if (stats && known.get(relativePath) === stats.mtimeMs) {
|
|
83
|
+
skipped += 1;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
47
86
|
const parsed = await readMemory(this.config.memoryRoot, relativePath);
|
|
48
87
|
const record = await this.db.upsertMemory(parsed);
|
|
49
88
|
await this.ensureEmbedding(record).catch((error) => {
|
|
50
89
|
console.error(`Embedding failed for ${relativePath}:`, error);
|
|
51
90
|
});
|
|
91
|
+
indexed += 1;
|
|
92
|
+
}
|
|
93
|
+
const removed = await this.db.removeMissingMemories(relativePaths);
|
|
94
|
+
if (indexed > 0 || removed > 0) {
|
|
95
|
+
await this.db.rebuildLinks();
|
|
96
|
+
}
|
|
97
|
+
return { indexed, skipped };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Incremental single-file (re)index — the watcher's per-event path. Re-reads just the changed
|
|
101
|
+
* file, preserves its row id (path-keyed upsert), and repairs only the link subgraph touching
|
|
102
|
+
* it. A path whose file no longer exists is dropped from the index (cascade cleans its
|
|
103
|
+
* embeddings and link rows); the file's frontmatter in OTHER memories is left alone — external
|
|
104
|
+
* deletion is not authorization to rewrite other files (unlike {@link deleteMemory}).
|
|
105
|
+
*/
|
|
106
|
+
async indexPath(relativePath) {
|
|
107
|
+
try {
|
|
108
|
+
await this.indexPathCore(relativePath);
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
this.invalidateCorpusSnapshot();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async indexPathCore(relativePath) {
|
|
115
|
+
await this.init();
|
|
116
|
+
const normalized = normalizeRelativePath(relativePath);
|
|
117
|
+
const stats = await stat(path.join(this.config.memoryRoot, normalized)).catch(() => undefined);
|
|
118
|
+
if (!stats) {
|
|
119
|
+
await this.db.deleteMemoryByPath(normalized);
|
|
120
|
+
return;
|
|
52
121
|
}
|
|
53
|
-
await this.
|
|
54
|
-
await this.db.
|
|
55
|
-
|
|
122
|
+
const parsed = await readMemory(this.config.memoryRoot, normalized);
|
|
123
|
+
const record = await this.db.upsertMemory(parsed);
|
|
124
|
+
await this.ensureEmbedding(record).catch((error) => {
|
|
125
|
+
console.error(`Embedding failed for ${normalized}:`, error);
|
|
126
|
+
});
|
|
127
|
+
await this.db.rebuildLinksForMemory(record);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Claims a pending self-write marker for `relativePath`. The watcher calls this on every
|
|
131
|
+
* filesystem event: `true` means the service itself just wrote/deleted that file (its index
|
|
132
|
+
* work is already done inline) and the event should be ignored; `false` means the edit came
|
|
133
|
+
* from outside (editor, Dropbox sync) and must be re-indexed. Markers are one-shot and expire.
|
|
134
|
+
*/
|
|
135
|
+
consumeSelfWrite(relativePath) {
|
|
136
|
+
const normalized = normalizeRelativePath(relativePath);
|
|
137
|
+
const recorded = this.selfWrites.get(normalized);
|
|
138
|
+
if (recorded === undefined) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
this.selfWrites.delete(normalized);
|
|
142
|
+
return Date.now() - recorded < SELF_WRITE_TTL_MS;
|
|
143
|
+
}
|
|
144
|
+
recordSelfWrite(relativePath) {
|
|
145
|
+
this.selfWrites.set(normalizeRelativePath(relativePath), Date.now());
|
|
56
146
|
}
|
|
57
147
|
async upsert(input) {
|
|
148
|
+
try {
|
|
149
|
+
return await this.upsertCore(input);
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
this.invalidateCorpusSnapshot();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async upsertCore(input) {
|
|
58
156
|
await this.init();
|
|
59
157
|
if (input.content.length > DEFAULT_MEMORY_HARD_LIMIT_CHARS) {
|
|
60
158
|
throw new Error(`Memory content exceeds hard maximum of ${DEFAULT_MEMORY_HARD_LIMIT_CHARS} characters`);
|
|
@@ -97,7 +195,7 @@ export class AugmentService {
|
|
|
97
195
|
// memory at its deterministic path instead. Both versions stay
|
|
98
196
|
// recoverable from the store and the prior body never pollutes the new
|
|
99
197
|
// memory's embedding/lexical document.
|
|
100
|
-
if (similar &&
|
|
198
|
+
if (similar && lexicalScoreWith(new Set(tokens(similar.body)), input.content) >= 1) {
|
|
101
199
|
existing = similar;
|
|
102
200
|
relativePath = similar.relative_path;
|
|
103
201
|
action = "similar-updated";
|
|
@@ -124,10 +222,13 @@ export class AugmentService {
|
|
|
124
222
|
updated_at: now,
|
|
125
223
|
};
|
|
126
224
|
await writeMemory(this.config.memoryRoot, relativePath, normalizeMemoryFrontmatter(metadata), input.content);
|
|
225
|
+
this.recordSelfWrite(relativePath);
|
|
127
226
|
const parsed = await readMemory(this.config.memoryRoot, relativePath);
|
|
128
227
|
const memory = await this.db.upsertMemory(parsed);
|
|
129
228
|
await this.ensureEmbedding(memory);
|
|
130
|
-
|
|
229
|
+
// Repair only this memory's link subgraph: a truncate-all rebuild would
|
|
230
|
+
// reassign every links.id, invalidating ids other callers are holding.
|
|
231
|
+
await this.db.rebuildLinksForMemory(memory);
|
|
131
232
|
return {
|
|
132
233
|
memory,
|
|
133
234
|
action,
|
|
@@ -159,16 +260,27 @@ export class AugmentService {
|
|
|
159
260
|
return { project, memories, links };
|
|
160
261
|
}
|
|
161
262
|
async deleteMemory(id) {
|
|
263
|
+
try {
|
|
264
|
+
return await this.deleteMemoryCore(id);
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
this.invalidateCorpusSnapshot();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
async deleteMemoryCore(id) {
|
|
162
271
|
await this.init();
|
|
163
272
|
const memory = await this.read(id);
|
|
164
273
|
await deleteMemoryFile(this.config.memoryRoot, memory.relative_path);
|
|
274
|
+
this.recordSelfWrite(memory.relative_path);
|
|
165
275
|
await this.db.deleteMemory(id);
|
|
166
276
|
// Scrub inbound frontmatter references in other memories so a future memory
|
|
167
277
|
// recreated at this deterministic path can't silently inherit links that were
|
|
168
278
|
// pointing at the now-deleted one. `unlink` rewrites source frontmatter for the
|
|
169
279
|
// same reason; deletion needs the analogous cleanup.
|
|
280
|
+
// No link-table repair needed here: ON DELETE CASCADE already dropped every
|
|
281
|
+
// row touching the deleted memory, and the scrub only removes frontmatter
|
|
282
|
+
// entries whose rows that cascade just deleted.
|
|
170
283
|
await this.scrubInboundLinks(memory.relative_path);
|
|
171
|
-
await this.db.rebuildLinks();
|
|
172
284
|
return { id, relative_path: memory.relative_path, text: `deleted memory ${id} at ${memory.relative_path}` };
|
|
173
285
|
}
|
|
174
286
|
/** Remove every frontmatter link pointing at `targetPath` from all other memories. */
|
|
@@ -187,14 +299,42 @@ export class AugmentService {
|
|
|
187
299
|
updated_at: new Date().toISOString(),
|
|
188
300
|
});
|
|
189
301
|
await writeMemory(this.config.memoryRoot, memory.relative_path, frontmatter, memory.body);
|
|
302
|
+
this.recordSelfWrite(memory.relative_path);
|
|
190
303
|
const parsed = await readMemory(this.config.memoryRoot, memory.relative_path);
|
|
191
304
|
await this.db.upsertMemory(parsed);
|
|
192
305
|
}
|
|
193
306
|
}
|
|
194
|
-
|
|
307
|
+
/** Resolve a memory by numeric id or by relative path. Ids churn whenever the
|
|
308
|
+
* index rebuilds; the relative path is the durable identity, so link callers
|
|
309
|
+
* may pass either. */
|
|
310
|
+
async resolveMemoryRef(ref) {
|
|
311
|
+
if (typeof ref === "number") {
|
|
312
|
+
return this.read(ref);
|
|
313
|
+
}
|
|
314
|
+
// JSON/query-string plumbing has always delivered ids as strings; a valid
|
|
315
|
+
// relative path (org/repo/KIND/name.md) can never be all digits.
|
|
316
|
+
if (/^\d+$/.test(ref)) {
|
|
317
|
+
return this.read(Number(ref));
|
|
318
|
+
}
|
|
319
|
+
const normalized = normalizeRelativePath(ref);
|
|
320
|
+
const memory = await this.db.getMemoryByPath(normalized);
|
|
321
|
+
if (!memory) {
|
|
322
|
+
throw new Error(`Unknown memory path: ${ref}`);
|
|
323
|
+
}
|
|
324
|
+
return memory;
|
|
325
|
+
}
|
|
326
|
+
async link(fromRef, toRef, typeInput) {
|
|
327
|
+
try {
|
|
328
|
+
return await this.linkCore(fromRef, toRef, typeInput);
|
|
329
|
+
}
|
|
330
|
+
finally {
|
|
331
|
+
this.invalidateCorpusSnapshot();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
async linkCore(fromRef, toRef, typeInput) {
|
|
195
335
|
await this.init();
|
|
196
|
-
const from = await this.
|
|
197
|
-
const to = await this.
|
|
336
|
+
const from = await this.resolveMemoryRef(fromRef);
|
|
337
|
+
const to = await this.resolveMemoryRef(toRef);
|
|
198
338
|
const type = normalizeLinkType(typeInput);
|
|
199
339
|
const frontmatter = normalizeMemoryFrontmatter({
|
|
200
340
|
project: from.project_name,
|
|
@@ -206,9 +346,10 @@ export class AugmentService {
|
|
|
206
346
|
updated_at: new Date().toISOString(),
|
|
207
347
|
});
|
|
208
348
|
await writeMemory(this.config.memoryRoot, from.relative_path, frontmatter, from.body);
|
|
349
|
+
this.recordSelfWrite(from.relative_path);
|
|
209
350
|
const parsed = await readMemory(this.config.memoryRoot, from.relative_path);
|
|
210
|
-
await this.db.upsertMemory(parsed);
|
|
211
|
-
await this.db.
|
|
351
|
+
const record = await this.db.upsertMemory(parsed);
|
|
352
|
+
await this.db.rebuildLinksForMemory(record);
|
|
212
353
|
const links = await this.db.listLinks(from.id);
|
|
213
354
|
const link = links.find((candidate) => candidate.to_memory_id === to.id && candidate.type === type);
|
|
214
355
|
if (!link) {
|
|
@@ -224,6 +365,14 @@ export class AugmentService {
|
|
|
224
365
|
return this.db.listLinks(memoryId);
|
|
225
366
|
}
|
|
226
367
|
async unlink(linkId) {
|
|
368
|
+
try {
|
|
369
|
+
return await this.unlinkCore(linkId);
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
this.invalidateCorpusSnapshot();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
async unlinkCore(linkId) {
|
|
227
376
|
await this.init();
|
|
228
377
|
const link = await this.db.getLinkById(linkId);
|
|
229
378
|
if (!link) {
|
|
@@ -240,25 +389,69 @@ export class AugmentService {
|
|
|
240
389
|
updated_at: new Date().toISOString(),
|
|
241
390
|
});
|
|
242
391
|
await writeMemory(this.config.memoryRoot, from.relative_path, frontmatter, from.body);
|
|
392
|
+
this.recordSelfWrite(from.relative_path);
|
|
243
393
|
const parsed = await readMemory(this.config.memoryRoot, from.relative_path);
|
|
244
|
-
await this.db.upsertMemory(parsed);
|
|
245
|
-
await this.db.
|
|
394
|
+
const record = await this.db.upsertMemory(parsed);
|
|
395
|
+
await this.db.rebuildLinksForMemory(record);
|
|
246
396
|
return { text: `removed link ${linkId}` };
|
|
247
397
|
}
|
|
398
|
+
invalidateCorpusSnapshot() {
|
|
399
|
+
this.corpusPromise = undefined;
|
|
400
|
+
}
|
|
401
|
+
corpus() {
|
|
402
|
+
if (!this.corpusPromise) {
|
|
403
|
+
const build = (async () => ({
|
|
404
|
+
memories: await this.db.listMemories(),
|
|
405
|
+
embeddings: await this.db.getAllEmbeddings(),
|
|
406
|
+
links: await this.db.getAllLinks(),
|
|
407
|
+
}))();
|
|
408
|
+
this.corpusPromise = build;
|
|
409
|
+
// A failed build must not stay cached as the corpus.
|
|
410
|
+
build.catch(() => {
|
|
411
|
+
if (this.corpusPromise === build) {
|
|
412
|
+
this.corpusPromise = undefined;
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return this.corpusPromise;
|
|
417
|
+
}
|
|
418
|
+
/** Query vectors depend only on the query text and the (process-pinned) model,
|
|
419
|
+
* so unlike the corpus snapshot they never need invalidating on writes. */
|
|
420
|
+
async embedQuery(query) {
|
|
421
|
+
const cached = this.queryEmbeddingCache.get(query);
|
|
422
|
+
if (cached) {
|
|
423
|
+
this.queryEmbeddingCache.delete(query);
|
|
424
|
+
this.queryEmbeddingCache.set(query, cached);
|
|
425
|
+
return cached;
|
|
426
|
+
}
|
|
427
|
+
const vector = await this.embeddingProvider.embed(query).catch(() => undefined);
|
|
428
|
+
if (vector) {
|
|
429
|
+
this.queryEmbeddingCache.set(query, vector);
|
|
430
|
+
if (this.queryEmbeddingCache.size > QUERY_EMBEDDING_CACHE_MAX) {
|
|
431
|
+
const oldest = this.queryEmbeddingCache.keys().next().value;
|
|
432
|
+
if (oldest !== undefined) {
|
|
433
|
+
this.queryEmbeddingCache.delete(oldest);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return vector;
|
|
438
|
+
}
|
|
248
439
|
async search(input) {
|
|
249
440
|
await this.init();
|
|
250
441
|
const limit = input.limit ?? DEFAULT_SEARCH_LIMIT;
|
|
251
442
|
const maxChars = input.max_chars ?? DEFAULT_SEARCH_MAX_CHARS;
|
|
252
443
|
const minScore = clamp01(input.min_score ?? DEFAULT_SEARCH_MIN_SCORE);
|
|
253
444
|
const includeLinked = input.include_linked ?? true;
|
|
254
|
-
const
|
|
255
|
-
const
|
|
256
|
-
const
|
|
257
|
-
const
|
|
445
|
+
const snapshot = await this.corpus();
|
|
446
|
+
const memories = snapshot.memories.filter((memory) => !input.kinds || input.kinds.includes(memory.kind));
|
|
447
|
+
const embeddings = snapshot.embeddings;
|
|
448
|
+
const queryEmbedding = await this.embedQuery(input.query);
|
|
449
|
+
const links = includeLinked ? snapshot.links : [];
|
|
450
|
+
const queryTokens = new Set(tokens(input.query));
|
|
258
451
|
const direct = new Map();
|
|
259
452
|
for (const memory of memories) {
|
|
260
453
|
const semanticScore = queryEmbedding ? normalizedCosine(queryEmbedding, embeddings.get(memory.id)) : 0;
|
|
261
|
-
const lexScore =
|
|
454
|
+
const lexScore = lexicalScoreWith(queryTokens, searchDocument(memory));
|
|
262
455
|
const metadataScore = metadataScoreFor(input.project_name, memory);
|
|
263
456
|
const score = clamp01(semanticScore * 0.55 + lexScore * 0.25 + metadataScore * 0.1);
|
|
264
457
|
direct.set(memory.id, {
|
|
@@ -298,11 +491,39 @@ export class AugmentService {
|
|
|
298
491
|
text: renderSearchText(input.query, input.project_name, results, maxChars),
|
|
299
492
|
};
|
|
300
493
|
}
|
|
494
|
+
/**
|
|
495
|
+
* READ-ONLY sleep preview: which settled WORK memories WOULD consolidate.
|
|
496
|
+
* Performs zero writes — the actual write-back (`sleep_apply`) is deferred
|
|
497
|
+
* behind the Phase-2 go/no-go and does not exist.
|
|
498
|
+
*/
|
|
499
|
+
async sleepCandidates(input = {}, now = Date.now()) {
|
|
500
|
+
await this.init();
|
|
501
|
+
const minCosine = clamp01(input.min_cosine ?? SLEEP_MIN_COSINE);
|
|
502
|
+
const minAgeDays = input.min_age_days ?? SLEEP_MIN_AGE_DAYS;
|
|
503
|
+
const limit = input.limit ?? SLEEP_MAX_CLUSTERS;
|
|
504
|
+
const snapshot = await this.corpus();
|
|
505
|
+
const cutoff = now - minAgeDays * 86_400_000;
|
|
506
|
+
const eligible = snapshot.memories.filter((memory) => memory.kind === "WORK" &&
|
|
507
|
+
(!input.project_name || memory.project_name === input.project_name) &&
|
|
508
|
+
Date.parse(memory.updated_at) <= cutoff);
|
|
509
|
+
const clusters = clusterSleepCandidates({
|
|
510
|
+
memories: eligible,
|
|
511
|
+
embeddings: snapshot.embeddings,
|
|
512
|
+
links: snapshot.links,
|
|
513
|
+
minCosine,
|
|
514
|
+
}).slice(0, limit);
|
|
515
|
+
return {
|
|
516
|
+
clusters,
|
|
517
|
+
eligible: eligible.length,
|
|
518
|
+
text: renderSleepCandidatesText(clusters, eligible.length, minCosine, minAgeDays),
|
|
519
|
+
};
|
|
520
|
+
}
|
|
301
521
|
async findSimilarMemory(projectId, kind, content) {
|
|
302
522
|
const candidates = await this.db.listMemoriesForProject(projectId, kind);
|
|
523
|
+
const contentTokens = new Set(tokens(content));
|
|
303
524
|
let best;
|
|
304
525
|
for (const memory of candidates) {
|
|
305
|
-
const score =
|
|
526
|
+
const score = lexicalScoreWith(contentTokens, memory.body);
|
|
306
527
|
if (!best || score > best.score) {
|
|
307
528
|
best = { memory, score };
|
|
308
529
|
}
|
|
@@ -404,27 +625,40 @@ function linkWeight(type) {
|
|
|
404
625
|
return 0.3;
|
|
405
626
|
}
|
|
406
627
|
}
|
|
628
|
+
// A truncated body shorter than this carries no usable context — skip the
|
|
629
|
+
// result instead so a smaller one can use the space.
|
|
630
|
+
const MIN_TRUNCATED_BODY_CHARS = 80;
|
|
631
|
+
const TRUNCATION_MARKER = "\n[truncated]";
|
|
407
632
|
function renderSearchText(query, projectName, results, maxChars) {
|
|
408
633
|
if (results.length === 0) {
|
|
409
634
|
return `No memory met the relevance threshold for \`${query}\`. Nothing injected.\n`;
|
|
410
635
|
}
|
|
411
|
-
|
|
412
|
-
let
|
|
413
|
-
for (
|
|
636
|
+
let out = `Relevant memories for \`${query}\`:\n`;
|
|
637
|
+
let rendered = 0;
|
|
638
|
+
for (let index = 0; index < results.length; index += 1) {
|
|
639
|
+
const result = results[index];
|
|
414
640
|
const memory = result.memory;
|
|
415
641
|
const provenance = provenanceLabel(projectName, memory.project_name);
|
|
416
642
|
const linkAnnotation = result.linkedFrom && result.linkType ? ` link:${result.linkType} linked_from:${result.linkedFrom}` : "";
|
|
417
|
-
const header =
|
|
418
|
-
const
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
643
|
+
const header = `\n[memory:${memory.id} kind:${memory.kind} project:${memory.project_name}${provenance} path:${memory.relative_path} score:${result.score.toFixed(2)}${linkAnnotation}]\n`;
|
|
644
|
+
const body = memory.body.trim();
|
|
645
|
+
// Fair-share budget: an oversized result may take at most an even split of
|
|
646
|
+
// what remains, so it cannot starve the results ranked below it. Unused
|
|
647
|
+
// share rolls forward to the next result.
|
|
648
|
+
const allowance = Math.floor((maxChars - out.length) / (results.length - index));
|
|
649
|
+
if (header.length + body.length + 1 <= allowance) {
|
|
650
|
+
out += `${header}${body}\n`;
|
|
651
|
+
rendered += 1;
|
|
652
|
+
continue;
|
|
653
|
+
}
|
|
654
|
+
const bodyRoom = allowance - header.length - TRUNCATION_MARKER.length - 1;
|
|
655
|
+
if (bodyRoom >= MIN_TRUNCATED_BODY_CHARS) {
|
|
656
|
+
out += `${header}${body.slice(0, bodyRoom)}${TRUNCATION_MARKER}\n`;
|
|
657
|
+
rendered += 1;
|
|
424
658
|
}
|
|
425
|
-
|
|
426
|
-
used += block.length;
|
|
659
|
+
// Either way, keep going: a smaller result further down may still fit.
|
|
427
660
|
}
|
|
428
|
-
|
|
661
|
+
// Nothing carried any body text — inject nothing rather than bare headers.
|
|
662
|
+
return rendered === 0 ? "" : out;
|
|
429
663
|
}
|
|
430
664
|
//# sourceMappingURL=service.js.map
|
package/dist/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/sleep.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { LinkRecord, MemoryRecord } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* READ-ONLY preview of sleep consolidation (SPEC/sleep-consolidation-work-to-spec-arch):
|
|
4
|
+
* cluster settled WORK memories so a human can eyeball what a future `sleep`
|
|
5
|
+
* pass WOULD fold together. This module mutates nothing and must stay that way
|
|
6
|
+
* until the Phase-2 go/no-go — the write-back (`sleep_apply`) is a separate,
|
|
7
|
+
* gated feature with its own invariant harness.
|
|
8
|
+
*
|
|
9
|
+
* Edges: an existing link of any type, or raw cosine >= minCosine. The
|
|
10
|
+
* threshold is raw cosine, NOT the blended recall score — council 2026-06-30:
|
|
11
|
+
* clustering must use a semantic-only floor above the band where unrelated
|
|
12
|
+
* same-domain memories land (~0.485 raw on bge-small; paraphrase ~0.882).
|
|
13
|
+
* Clusters never span projects: cross-project cosine is indistinguishable from
|
|
14
|
+
* same-project noise and provenance collapses under synthesis.
|
|
15
|
+
*/
|
|
16
|
+
export interface SleepClusterMember {
|
|
17
|
+
id: number;
|
|
18
|
+
/** The durable identity — ids churn on index rebuilds, paths do not. */
|
|
19
|
+
relative_path: string;
|
|
20
|
+
name: string;
|
|
21
|
+
updated_at: string;
|
|
22
|
+
size: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SleepCluster {
|
|
25
|
+
project_name: string;
|
|
26
|
+
/** Ordered oldest-first by updated_at. */
|
|
27
|
+
members: SleepClusterMember[];
|
|
28
|
+
/** Mean pairwise raw cosine over member pairs that both have embeddings. */
|
|
29
|
+
mean_cosine: number;
|
|
30
|
+
link_edges: number;
|
|
31
|
+
cosine_edges: number;
|
|
32
|
+
oldest: string;
|
|
33
|
+
newest: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ClusterInput {
|
|
36
|
+
/** Eligible memories (already filtered to kind WORK and settled age). */
|
|
37
|
+
memories: MemoryRecord[];
|
|
38
|
+
embeddings: Map<number, number[]>;
|
|
39
|
+
links: LinkRecord[];
|
|
40
|
+
minCosine: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function clusterSleepCandidates(input: ClusterInput): SleepCluster[];
|
|
43
|
+
export declare function renderSleepCandidatesText(clusters: SleepCluster[], eligible: number, minCosine: number, minAgeDays: number): string;
|