@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.
Files changed (50) hide show
  1. package/README.md +20 -2
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.js +43 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/constants.d.ts +3 -0
  6. package/dist/constants.js +19 -3
  7. package/dist/constants.js.map +1 -1
  8. package/dist/daemon/client.d.ts +5 -0
  9. package/dist/daemon/client.js +15 -6
  10. package/dist/daemon/client.js.map +1 -1
  11. package/dist/daemon/http.d.ts +1 -1
  12. package/dist/daemon/http.js +159 -53
  13. package/dist/daemon/http.js.map +1 -1
  14. package/dist/daemon/main.js +15 -1
  15. package/dist/daemon/main.js.map +1 -1
  16. package/dist/daemon/scheduler.d.ts +17 -0
  17. package/dist/daemon/scheduler.js +77 -0
  18. package/dist/daemon/scheduler.js.map +1 -0
  19. package/dist/daemon/single-instance.d.ts +32 -0
  20. package/dist/daemon/single-instance.js +131 -0
  21. package/dist/daemon/single-instance.js.map +1 -0
  22. package/dist/db.d.ts +13 -1
  23. package/dist/db.js +166 -105
  24. package/dist/db.js.map +1 -1
  25. package/dist/hooks.js +28 -3
  26. package/dist/hooks.js.map +1 -1
  27. package/dist/install.d.ts +2 -0
  28. package/dist/install.js +41 -7
  29. package/dist/install.js.map +1 -1
  30. package/dist/mcp/server.js +30 -4
  31. package/dist/mcp/server.js.map +1 -1
  32. package/dist/recall.d.ts +2 -0
  33. package/dist/recall.js +1 -0
  34. package/dist/recall.js.map +1 -1
  35. package/dist/service.d.ts +64 -1
  36. package/dist/service.js +269 -35
  37. package/dist/service.js.map +1 -1
  38. package/dist/sleep.d.ts +43 -0
  39. package/dist/sleep.js +129 -0
  40. package/dist/sleep.js.map +1 -0
  41. package/dist/tally.d.ts +46 -0
  42. package/dist/tally.js +94 -0
  43. package/dist/tally.js.map +1 -0
  44. package/dist/types.d.ts +6 -0
  45. package/dist/util/text.d.ts +3 -0
  46. package/dist/util/text.js +26 -2
  47. package/dist/util/text.js.map +1 -1
  48. package/docs/FEATURES.md +155 -50
  49. package/docs/verify-memory-flow.md +28 -9
  50. package/package.json +1 -1
package/dist/service.js CHANGED
@@ -1,16 +1,37 @@
1
- import { DEFAULT_MEMORY_HARD_LIMIT_CHARS, DEFAULT_SEARCH_LIMIT, DEFAULT_SEARCH_MAX_CHARS, DEFAULT_SEARCH_MIN_SCORE, SEMANTIC_COSINE_BASELINE, SEMANTIC_COSINE_MATCH, } from "./constants.js";
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 { clamp01, cosineSimilarity, lexicalScore } from "./util/text.js";
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.db.removeMissingMemories(relativePaths);
54
- await this.db.rebuildLinks();
55
- return { indexed: relativePaths.length };
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 && lexicalScore(similar.body, input.content) >= 1) {
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
- await this.db.rebuildLinks();
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
- async link(fromMemoryId, toMemoryId, typeInput) {
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.read(fromMemoryId);
197
- const to = await this.read(toMemoryId);
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.rebuildLinks();
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.rebuildLinks();
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 memories = (await this.db.listMemories()).filter((memory) => !input.kinds || input.kinds.includes(memory.kind));
255
- const embeddings = await this.db.getAllEmbeddings();
256
- const queryEmbedding = await this.embeddingProvider.embed(input.query).catch(() => undefined);
257
- const links = includeLinked ? await this.db.getAllLinks() : [];
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 = lexicalScore(input.query, searchDocument(memory));
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 = lexicalScore(content, memory.body);
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
- const parts = [`Relevant memories for \`${query}\`:\n`];
412
- let used = parts[0].length;
413
- for (const result of results) {
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 = `[memory:${memory.id} kind:${memory.kind} project:${memory.project_name}${provenance} path:${memory.relative_path} score:${result.score.toFixed(2)}${linkAnnotation}]\n`;
418
- const block = `${header}${memory.body.trim()}\n`;
419
- if (used + block.length > maxChars) {
420
- if (parts.length === 1) {
421
- parts.push(`${header}[omitted: memory exceeds max_chars]\n`);
422
- }
423
- break;
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
- parts.push(block);
426
- used += block.length;
659
+ // Either way, keep going: a smaller result further down may still fit.
427
660
  }
428
- return parts.join("\n");
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
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpI,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiBzE,MAAM,OAAO,cAAc;IAKN;IACA;IALV,EAAE,CAAkB;IACrB,WAAW,GAAG,KAAK,CAAC;IAE5B,YACmB,MAAqB,EACrB,oBAAuC,IAAI,6BAA6B,EAAE;QAD1E,WAAM,GAAN,MAAM,CAAe;QACrB,sBAAiB,GAAjB,iBAAiB,CAAyD;QAE3F,IAAI,CAAC,EAAE,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAA0B,EAAE;QAC5C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAa;QAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpE,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC1D,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,+BAA+B,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,0CAA0C,+BAA+B,aAAa,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,YAAoB,CAAC;QACzB,IAAI,QAAkC,CAAC;QACvC,IAAI,MAAM,GAA2B,SAAS,CAAC;QAE/C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC;YACtC,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClE,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9E,mEAAmE;gBACnE,uEAAuE;gBACvE,qEAAqE;gBACrE,oEAAoE;gBACpE,uEAAuE;gBACvE,wEAAwE;gBACxE,sEAAsE;gBACtE,kEAAkE;gBAClE,yEAAyE;gBACzE,uEAAuE;gBACvE,+DAA+D;gBAC/D,uEAAuE;gBACvE,uCAAuC;gBACvC,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9D,QAAQ,GAAG,OAAO,CAAC;oBACnB,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;oBACrC,MAAM,GAAG,iBAAiB,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC;gBACE,OAAO,EAAE,QAAQ,CAAC,YAAY;gBAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;gBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,UAAU,EAAE,GAAG;aAChB;YACH,CAAC,CAAC;gBACE,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,GAAG;aAChB,CAAC;QAEN,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QAE7B,OAAO;YACL,MAAM;YACN,MAAM;YACN,IAAI,EAAE,GAAG,MAAM,WAAW,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QAC3C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CACrE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,4EAA4E;QAC5E,8EAA8E;QAC9E,gFAAgF;QAChF,qDAAqD;QACrD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;IAC9G,CAAC;IAED,sFAAsF;IAC9E,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QAChD,KAAK,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;gBACzD,SAAS;YACX,CAAC;YACD,MAAM,WAAW,GAAG,0BAA0B,CAAC;gBAC7C,OAAO,EAAE,MAAM,CAAC,YAAY;gBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC;gBAC5D,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,UAAkB,EAAE,SAAkB;QACrE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE1C,MAAM,WAAW,GAAG,0BAA0B,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;YACvE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACpG,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,iBAAiB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,EAAE;SACxD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,0BAA0B,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAClH,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,gBAAgB,MAAM,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,oBAAoB,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,wBAAwB,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9D,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9F,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YACnE,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;YACpF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;gBACpB,MAAM;gBACN,KAAK;gBACL,aAAa;gBACb,YAAY,EAAE,QAAQ;gBACtB,SAAS,EAAE,CAAC;gBACZ,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAExC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;gBACxC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;oBAC1G,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,SAAS;oBACX,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;oBAC7D,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBACzD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;oBACvD,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;aAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnB,OAAO;YACL,OAAO;YACP,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC3E,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,IAAY,EAAE,OAAe;QAC9E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,IAAyD,CAAC;QAE9D,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAoB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;CACF;AAED,SAAS,0BAA0B,CAAC,KAAwB;IAC1D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiC,EAAE,IAAwC;IACvG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB;IAC1C,OAAO;QACL,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,IAAI;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,mEAAmE;AACnE,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,iFAAiF;AACjF,kFAAkF;AAClF,yEAAyE;AACzE,gFAAgF;AAChF,uBAAuB;AACvB,SAAS,gBAAgB,CAAC,cAAwB,EAAE,eAAqC;IACvF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,CAAC,GAAG,GAAG,wBAAwB,CAAC,GAAG,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,iFAAiF;AACjF,mFAAmF;AACnF,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,+DAA+D;AAC/D,SAAS,eAAe,CAAC,WAA+B,EAAE,iBAAyB;IACjF,IAAI,CAAC,WAAW,IAAI,iBAAiB,KAAK,WAAW,EAAE,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,QAAQ,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,+BAA+B,CAAC;AACjH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAA+B,EAAE,MAAoB;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,QAAQ,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,cAAc,CAAC,KAAmB,EAAE,QAAgB;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAa,EACb,WAA+B,EAC/B,OAAuB,EACvB,QAAgB;IAEhB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,+CAA+C,KAAK,yBAAyB,CAAC;IACvF,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,2BAA2B,KAAK,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,cAAc,GAClB,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,MAAM,MAAM,GAAG,WAAW,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,YAAY,GAAG,UAAU,SAAS,MAAM,CAAC,aAAa,UAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,KAAK,CAAC;QACxL,MAAM,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QAEjD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,uCAAuC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -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;