draken 0.2.0 → 0.4.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 (134) hide show
  1. package/ACCEPTANCE.md +6 -3
  2. package/CHANGELOG.md +64 -0
  3. package/CONTRIBUTING.md +1 -1
  4. package/MEMORY.md +30 -8
  5. package/README.md +25 -9
  6. package/SETUP.md +2 -2
  7. package/SOURCES.md +1 -1
  8. package/VOICE.md +11 -3
  9. package/dist/db/schema.d.ts.map +1 -1
  10. package/dist/db/schema.js +6 -0
  11. package/dist/db/schema.js.map +1 -1
  12. package/dist/memory/automatic.d.ts +12 -6
  13. package/dist/memory/automatic.d.ts.map +1 -1
  14. package/dist/memory/automatic.js +65 -21
  15. package/dist/memory/automatic.js.map +1 -1
  16. package/dist/memory/context.d.ts +4 -4
  17. package/dist/memory/context.d.ts.map +1 -1
  18. package/dist/memory/context.js +64 -16
  19. package/dist/memory/context.js.map +1 -1
  20. package/dist/memory/embedding-pool.d.ts +1 -1
  21. package/dist/memory/embedding-pool.d.ts.map +1 -1
  22. package/dist/memory/embedding-pool.js +1 -1
  23. package/dist/memory/embedding-pool.js.map +1 -1
  24. package/dist/memory/index.d.ts +8 -2
  25. package/dist/memory/index.d.ts.map +1 -1
  26. package/dist/memory/index.js +195 -37
  27. package/dist/memory/index.js.map +1 -1
  28. package/dist/memory/model-files.d.ts +9 -0
  29. package/dist/memory/model-files.d.ts.map +1 -0
  30. package/dist/memory/model-files.js +13 -0
  31. package/dist/memory/model-files.js.map +1 -0
  32. package/dist/memory/model.d.ts +1 -1
  33. package/dist/memory/model.d.ts.map +1 -1
  34. package/dist/memory/model.js +11 -16
  35. package/dist/memory/model.js.map +1 -1
  36. package/dist/memory/readiness.d.ts +16 -0
  37. package/dist/memory/readiness.d.ts.map +1 -0
  38. package/dist/memory/readiness.js +131 -0
  39. package/dist/memory/readiness.js.map +1 -0
  40. package/dist/memory/reconcile.d.ts +11 -0
  41. package/dist/memory/reconcile.d.ts.map +1 -0
  42. package/dist/memory/reconcile.js +132 -0
  43. package/dist/memory/reconcile.js.map +1 -0
  44. package/dist/memory/service.d.ts +4 -2
  45. package/dist/memory/service.d.ts.map +1 -1
  46. package/dist/memory/service.js +34 -8
  47. package/dist/memory/service.js.map +1 -1
  48. package/dist/memory/sources.d.ts +2 -2
  49. package/dist/memory/sources.d.ts.map +1 -1
  50. package/dist/memory/sources.js +12 -5
  51. package/dist/memory/sources.js.map +1 -1
  52. package/dist/memory/storage.d.ts.map +1 -1
  53. package/dist/memory/storage.js +9 -0
  54. package/dist/memory/storage.js.map +1 -1
  55. package/dist/memory/types.d.ts +22 -1
  56. package/dist/memory/types.d.ts.map +1 -1
  57. package/dist/memory/types.js.map +1 -1
  58. package/dist/memory/worker.js +4 -2
  59. package/dist/memory/worker.js.map +1 -1
  60. package/dist/routes/live-voice.d.ts.map +1 -1
  61. package/dist/routes/live-voice.js +7 -1
  62. package/dist/routes/live-voice.js.map +1 -1
  63. package/dist/routes/memory.d.ts.map +1 -1
  64. package/dist/routes/memory.js +12 -2
  65. package/dist/routes/memory.js.map +1 -1
  66. package/dist/routes/sync.d.ts.map +1 -1
  67. package/dist/routes/sync.js +44 -10
  68. package/dist/routes/sync.js.map +1 -1
  69. package/dist/sync/answer-references.d.ts +10 -0
  70. package/dist/sync/answer-references.d.ts.map +1 -0
  71. package/dist/sync/answer-references.js +47 -0
  72. package/dist/sync/answer-references.js.map +1 -0
  73. package/dist/sync/automatic.d.ts +7 -0
  74. package/dist/sync/automatic.d.ts.map +1 -0
  75. package/dist/sync/automatic.js +56 -0
  76. package/dist/sync/automatic.js.map +1 -0
  77. package/dist/sync/collector.d.ts +1 -1
  78. package/dist/sync/collector.d.ts.map +1 -1
  79. package/dist/sync/collector.js +109 -69
  80. package/dist/sync/collector.js.map +1 -1
  81. package/dist/sync/cost.d.ts +2 -1
  82. package/dist/sync/cost.d.ts.map +1 -1
  83. package/dist/sync/cost.js +10 -6
  84. package/dist/sync/cost.js.map +1 -1
  85. package/dist/sync/manager.d.ts +7 -1
  86. package/dist/sync/manager.d.ts.map +1 -1
  87. package/dist/sync/manager.js +104 -19
  88. package/dist/sync/manager.js.map +1 -1
  89. package/dist/sync/reconciliation.d.ts +16 -0
  90. package/dist/sync/reconciliation.d.ts.map +1 -0
  91. package/dist/sync/reconciliation.js +22 -0
  92. package/dist/sync/reconciliation.js.map +1 -0
  93. package/dist/sync/store.d.ts +8 -1
  94. package/dist/sync/store.d.ts.map +1 -1
  95. package/dist/sync/store.js +51 -5
  96. package/dist/sync/store.js.map +1 -1
  97. package/dist/sync/tree.d.ts.map +1 -1
  98. package/dist/sync/tree.js +13 -7
  99. package/dist/sync/tree.js.map +1 -1
  100. package/dist/sync/usage.d.ts +6 -0
  101. package/dist/sync/usage.d.ts.map +1 -0
  102. package/dist/sync/usage.js +91 -0
  103. package/dist/sync/usage.js.map +1 -0
  104. package/dist/types.d.ts +46 -2
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/voice/continuation.d.ts.map +1 -1
  107. package/dist/voice/continuation.js +1 -0
  108. package/dist/voice/continuation.js.map +1 -1
  109. package/dist/voice/history-focus.d.ts +14 -0
  110. package/dist/voice/history-focus.d.ts.map +1 -0
  111. package/dist/voice/history-focus.js +39 -0
  112. package/dist/voice/history-focus.js.map +1 -0
  113. package/dist/voice/live-context.d.ts +1 -1
  114. package/dist/voice/live-context.d.ts.map +1 -1
  115. package/dist/voice/live-context.js +3 -3
  116. package/dist/voice/live-context.js.map +1 -1
  117. package/dist/voice/live.d.ts.map +1 -1
  118. package/dist/voice/live.js +47 -33
  119. package/dist/voice/live.js.map +1 -1
  120. package/dist/voice/preparation.d.ts +8 -0
  121. package/dist/voice/preparation.d.ts.map +1 -0
  122. package/dist/voice/preparation.js +59 -0
  123. package/dist/voice/preparation.js.map +1 -0
  124. package/package.json +1 -1
  125. package/public/assets/index-BCDcSZkB.css +1 -0
  126. package/public/assets/index-SXgKBqZw.js +131 -0
  127. package/public/assets/{persona-XbLvCqRT.js → persona-BgbqhiLa.js} +1 -1
  128. package/public/index.html +3 -3
  129. package/public/persona/chat-avatar.webp +0 -0
  130. package/public/persona.html +3 -3
  131. package/voice/realtime/native.mjs +1 -1
  132. package/public/assets/index-CYz_kpAp.js +0 -126
  133. package/public/assets/index-DmRid5xE.css +0 -1
  134. /package/public/assets/{index-Ymd62i3g.js → index-S46UUaj8.js} +0 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.historyStamp = historyStamp;
7
+ exports.saveHistoryReadiness = saveHistoryReadiness;
8
+ exports.indexReadiness = indexReadiness;
9
+ exports.storedHistoryReadiness = storedHistoryReadiness;
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const crypto_1 = require("crypto");
13
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
14
+ const stamps_1 = require("./stamps");
15
+ const registry_1 = require("../sources/registry");
16
+ const model_files_1 = require("./model-files");
17
+ const KEY = 'call-history-ready-v1';
18
+ const cached = new WeakMap();
19
+ /** A scheduling/readiness hint, not evidence. Original bytes are still verified
20
+ * when preparing and retrieving. Include frozen aliases here: unlike the
21
+ * strict64 counter, readiness must cover their search links too. */
22
+ function historyStamp(source, before, roots) {
23
+ if (source.prepare("SELECT value FROM sync_settings WHERE key='source-scan-complete-v1'").get()?.value === '0')
24
+ throw new Error('History import has not completed. Scan sessions before calling.');
25
+ const now = Date.now(), cutoff = before || new Date(now).toISOString();
26
+ const files = (0, crypto_1.createHash)('sha256').update(JSON.stringify((0, registry_1.sourceRoots)(roots)));
27
+ for (const row of source.prepare('SELECT s.path,s.file_identity,s.byte_offset,s.scanned_bytes,s.modified_at FROM agent_sessions s JOIN agent_sources a ON a.id=s.agent WHERE s.included=1 AND s.missing=0 AND a.enabled=1 AND EXISTS (SELECT 1 FROM agent_entries e WHERE e.session_id=s.id AND e.is_activity=1) ORDER BY s.id').iterate()) {
28
+ const stat = fs_1.default.lstatSync(row.path);
29
+ if (!stat.isFile() || `${stat.dev}:${stat.ino}` !== row.file_identity || stat.size < row.scanned_bytes)
30
+ throw new Error('Original session file is unavailable.');
31
+ if (stat.size === row.scanned_bytes && stat.mtime.toISOString() !== row.modified_at)
32
+ throw new Error('Original session file is unavailable or changed. Prepare history again.');
33
+ if (!row.scanned_bytes || row.scanned_bytes < row.byte_offset)
34
+ throw new Error('Finish importing history before calling.');
35
+ // Later appends belong to a later preparation. Never make an active agent's
36
+ // growing log invalidate an already captured and verified prefix forever.
37
+ files.update(JSON.stringify([row.path, row.file_identity, row.byte_offset, row.scanned_bytes]));
38
+ }
39
+ const fileStamp = files.digest('hex');
40
+ const revision = `${source.pragma('data_version', { simple: true })}:${source.prepare('SELECT total_changes() AS n').get().n}:${fileStamp}`;
41
+ const prior = cached.get(source);
42
+ if (prior?.revision === revision && prior.before === before && now < prior.until)
43
+ return prior.stamp;
44
+ const hash = (0, crypto_1.createHash)('sha256').update(fileStamp).update(JSON.stringify([...(0, stamps_1.sourceStamps)(source, cutoff)]));
45
+ for (const row of source.prepare("SELECT i.sync_id,i.evidence_json FROM sync_items i JOIN syncs s ON s.id=i.sync_id WHERE s.status!='discarded' ORDER BY i.rowid").iterate())
46
+ hash.update(JSON.stringify(row));
47
+ for (const row of source.prepare("SELECT id,context_json FROM syncs WHERE status!='discarded' ORDER BY id").iterate())
48
+ hash.update(JSON.stringify(row));
49
+ const stamp = hash.digest('hex');
50
+ if (!before) {
51
+ const next = source.prepare(`SELECT MIN(at) AS at FROM (
52
+ SELECT timestamp AS at FROM agent_entries WHERE timestamp>?
53
+ UNION ALL SELECT created_at FROM sync_messages WHERE created_at>?
54
+ UNION ALL SELECT completed_at FROM syncs WHERE completed_at>?)`).get(cutoff, cutoff, cutoff);
55
+ cached.set(source, { revision, until: next.at ? Date.parse(next.at) : Infinity, stamp });
56
+ }
57
+ else
58
+ cached.set(source, { revision, until: Infinity, stamp, before });
59
+ return stamp;
60
+ }
61
+ function saveHistoryReadiness(db, source, before, stamp, model, roots) {
62
+ if (historyStamp(source, before, roots) !== stamp)
63
+ throw new Error('History changed during preparation. Prepare the remaining changes before calling.');
64
+ const prior = db.prepare('SELECT value FROM meta WHERE key=?').get(KEY);
65
+ // Unchanged preparation must not rewrite derived state merely to move a clock.
66
+ if (prior && prior.value.length <= 1024) {
67
+ try {
68
+ const value = JSON.parse(prior.value);
69
+ if (value.stamp === stamp && value.model === model && typeof value.before === 'string'
70
+ && new Date(value.before).toISOString() === value.before && value.before <= before)
71
+ return;
72
+ }
73
+ catch { /* Explicit preparation can replace an invalid receipt, not source evidence. */ }
74
+ }
75
+ db.prepare('INSERT INTO meta(key,value) VALUES(?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value').run(KEY, JSON.stringify({ before, stamp, model }));
76
+ }
77
+ function indexReadiness(db, source, capturedOnly = false) {
78
+ const absent = { ready: false, before: null };
79
+ try {
80
+ if (db.prepare("SELECT value FROM meta WHERE key='schema'").get()?.value !== 'history-index-v3-contentless')
81
+ return absent;
82
+ const row = db.prepare('SELECT value FROM meta WHERE key=?').get(KEY);
83
+ if (!row || row.value.length > 1024)
84
+ return absent;
85
+ const marker = JSON.parse(row.value);
86
+ if (typeof marker.before !== 'string' || !Number.isFinite(Date.parse(marker.before)) || new Date(marker.before).toISOString() !== marker.before || marker.before > new Date().toISOString()
87
+ || typeof marker.stamp !== 'string' || !/^[a-f0-9]{64}$/.test(marker.stamp)
88
+ || marker.model !== db.prepare("SELECT value FROM meta WHERE key='model'").get()?.value)
89
+ return absent;
90
+ if (db.prepare('SELECT 1 FROM passages p JOIN chunk_links c ON c.passage_id=p.id JOIN records r ON r.ref=c.ref WHERE p.embedded=0 AND r.at<=? LIMIT 1').get(marker.before))
91
+ return absent;
92
+ // A text conversation may keep using its prepared cutoff while saving new
93
+ // messages. Those newer messages are supplied directly, not falsely claimed
94
+ // as indexed. Original-file/cursor/admission changes still invalidate it.
95
+ return marker.stamp === historyStamp(source, capturedOnly ? marker.before : undefined) ? { ready: true, before: marker.before } : absent;
96
+ }
97
+ catch {
98
+ return absent;
99
+ }
100
+ }
101
+ /** Read-only metadata. Never creates a cache, scans source logs, starts a worker,
102
+ * downloads weights or infers. Missing/older receipts need explicit preparation. */
103
+ function storedHistoryReadiness(directory, source, capturedOnly = false) {
104
+ const file = path_1.default.join(directory, 'memory', 'index.sqlite');
105
+ if (!fs_1.default.existsSync(file))
106
+ return { ready: false, before: null };
107
+ let db;
108
+ try {
109
+ db = new better_sqlite3_1.default(file, { readonly: true, fileMustExist: true });
110
+ db.pragma('query_only = ON');
111
+ db.pragma('busy_timeout = 1000');
112
+ if (db.prepare("SELECT value FROM meta WHERE key='model'").get()?.value !== model_files_1.MODEL_ID)
113
+ return { ready: false, before: null };
114
+ if (db.prepare('SELECT 1 FROM passages WHERE embedded=1 LIMIT 1').get()
115
+ && !model_files_1.FILES.every(file => { try {
116
+ return fs_1.default.statSync(path_1.default.join(directory, 'memory', 'model', file.name)).size === file.size;
117
+ }
118
+ catch {
119
+ return false;
120
+ } }))
121
+ return { ready: false, before: null };
122
+ return indexReadiness(db, source, capturedOnly);
123
+ }
124
+ catch {
125
+ return { ready: false, before: null };
126
+ }
127
+ finally {
128
+ db?.close();
129
+ }
130
+ }
131
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/memory/readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { HistoryQuery, HistoryResults } from './types';
2
+ import type { SourceRecord } from './sources';
3
+ export declare const statusQuestion: (text: string) => boolean;
4
+ type Hit = HistoryResults['results'][number];
5
+ /** Candidate follow-ups, NOT an automatic truth/status classifier. Walk verified
6
+ * original narratives after each retrieved blocker in the SAME source session.
7
+ * Never use generated Draken replies, aliases, or another project's test result
8
+ * to declare a feature done. Source sequence wins over skewed timestamps. */
9
+ export declare function reconcileHistory(records: SourceRecord[], hits: Hit[], query: HistoryQuery): Pick<HistoryResults, 'results' | 'reconciliation'>;
10
+ export {};
11
+ //# sourceMappingURL=reconcile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/memory/reconcile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,YAAkM,CAAC;AAgB9O,KAAK,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAa7C;;;6EAG6E;AAC7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,gBAAgB,CAAC,CA6E9I"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.statusQuestion = void 0;
4
+ exports.reconcileHistory = reconcileHistory;
5
+ const statusQuestion = (text) => /\b(?:status|current|latest|blocked|blockers?|unfinished|unconfirmed|remaining|finished|completed?|still|how (?:long|much longer)|where (?:are we|we are)|what(?:'s| is) left)\b/i.test(text);
6
+ exports.statusQuestion = statusQuestion;
7
+ const pending = /\b(?:not (?:yet |fully )?(?:implemented|connected|wired|complete\w*|finished|enabled|available|established|activated)|unfinished|unconfirmed|pending|remain\w*|block\w*|disabled|incomplete|next|need\w*|todo|unverified)\b/i;
8
+ const stop = new Set(('the and for from with without this that these those have has had are was were will would could should into still ' +
9
+ 'not yet now then next only before after while more most some same other all any new old our your its but also which what where when how ' +
10
+ 'app native project work working implementation implemented implement implementing complete completed completion finished unfinished ' +
11
+ 'remaining remains remain pending blocked blockers needs need needed verified verification unverified passed passing tests test tested testing ' +
12
+ 'check checks checked build builds release debug simulator strict concurrency source sources report reported reports checkpoint updated ' +
13
+ 'continue continued continuing details documented documentation unchanged preserved evidence changes change requested existing later current ' +
14
+ 'ready readiness feature features fully end local locally real live enabled disabled intended result results planned plan full ' +
15
+ 'nothing deployed uncommitted mobile ios docs rewrite progress updated update there their several just functionality functional area').split(' '));
16
+ const narrative = (text) => text.split('\nTool requested:')[0];
17
+ function terms(text) {
18
+ return new Set((text.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase().match(/[\p{L}\p{N}]+/gu) || [])
19
+ .filter(word => word.length >= 3 && !stop.has(word) && !/^\d+$/.test(word))
20
+ .map(word => /^(?:push|apns|notifications?)$/.test(word) ? 'notification' : word.length > 3 && word.endsWith('s') ? word.slice(0, -1) : word));
21
+ }
22
+ function blocks(text) {
23
+ let change = false;
24
+ return narrative(text).split(/\n\s*\n/).map(block => {
25
+ const lead = block.split('\n')[0].replace(/^[#*\s-]+/, '');
26
+ if (/^(?:verification|tests?|details|documentation|live delivery|overall)/i.test(lead)
27
+ || (pending.test(lead) && !/^(?:implemented|completed|added|fixed|integrated|wired)\b/i.test(lead)))
28
+ change = false;
29
+ else if (/\b(?:implemented|completed|added|fixed|integrated|wired|reopened|reverted|rolled back)\b/i.test(lead))
30
+ change = true;
31
+ else if (/^\s*#/.test(block))
32
+ change = false;
33
+ return { words: terms(block), change };
34
+ });
35
+ }
36
+ /** Candidate follow-ups, NOT an automatic truth/status classifier. Walk verified
37
+ * original narratives after each retrieved blocker in the SAME source session.
38
+ * Never use generated Draken replies, aliases, or another project's test result
39
+ * to declare a feature done. Source sequence wins over skewed timestamps. */
40
+ function reconcileHistory(records, hits, query) {
41
+ if (!query.reconcile || query.kind !== 'sources' || !(query.recent || (0, exports.statusQuestion)(query.question)))
42
+ return { results: hits };
43
+ const all = records.filter(record => record.kind === 'session' && record.session_id && record.role === 'assistant'
44
+ && (!query.before || Boolean(record.at && record.at <= query.before))
45
+ && (!query.session_id || record.session_id === query.session_id)
46
+ && (!query.session_ids || query.session_ids.includes(record.session_id))
47
+ && narrative(record.text).trim().length >= 40 && !/^Tool requested:/.test(record.text));
48
+ const selected = all.sort((a, b) => b.position - a.position).slice(0, 4096);
49
+ const corpus = selected.map(record => ({ record, words: terms(narrative(record.text)), blocks: blocks(record.text) }));
50
+ const frequency = new Map();
51
+ for (const item of corpus)
52
+ for (const word of item.words)
53
+ frequency.set(word, (frequency.get(word) || 0) + 1);
54
+ const weight = (word) => 1 + Math.log(1 + corpus.length / (frequency.get(word) || 1));
55
+ const byRef = new Map(records.map(record => [record.ref, record]));
56
+ const follow = (ref) => {
57
+ const seed = byRef.get(ref);
58
+ if (!seed || seed.role !== 'assistant' || seed.kind !== 'session')
59
+ return [];
60
+ const clauses = narrative(seed.text).split(/\n|(?<=[.!?])\s+/u).filter(line => pending.test(line));
61
+ const facets = clauses.flatMap(line => line.split(/[,;:]\s*/)).map(terms).filter(words => words.size >= 2);
62
+ const anchor = new Set(facets.flatMap(words => [...words]));
63
+ if (anchor.size < 2)
64
+ return [];
65
+ const candidates = corpus.filter(item => item.record.session_id === seed.session_id && item.record.position > seed.position
66
+ && item.record.identity !== seed.identity).map(item => ({ ...item, shared: [...anchor].filter(word => item.words.has(word)) }))
67
+ .filter(item => item.shared.length >= Math.min(3, anchor.size) && facets.some(facet => item.blocks.some(block => [...facet].filter(word => block.words.has(word)).length >= Math.min(3, facet.size))));
68
+ if (!candidates.length)
69
+ return [];
70
+ const winners = new Map();
71
+ // Search each comma/line-delimited sub-task separately. A client report
72
+ // repeating 'backend jobs remain' must not crowd out the later job report.
73
+ // Prefer locally matching change sections, not broad whole-document overlap.
74
+ // This is ranking only: plans/negations still reach the model as quoted data.
75
+ for (const facet of facets) {
76
+ const ranked = candidates.map(item => ({ item, score: Math.max(...item.blocks.map(block => {
77
+ const shared = [...facet].filter(word => block.words.has(word));
78
+ return shared.length < Math.min(2, facet.size) ? 0 : shared.reduce((sum, word) => sum + weight(word), 0)
79
+ / facet.size * (block.change ? 2 : 0.6);
80
+ })) })).filter(item => item.score > 0).sort((a, b) => b.score - a.score || b.item.record.position - a.item.record.position);
81
+ if (ranked[0])
82
+ winners.set(ranked[0].item, (winners.get(ranked[0].item) || 0) + ranked[0].score);
83
+ }
84
+ const chosen = [...winners].sort((a, b) => b[1] - a[1]).slice(0, 2).map(([item]) => item);
85
+ const latest = candidates.reduce((a, b) => a.record.position > b.record.position ? a : b);
86
+ if (!chosen.includes(latest))
87
+ chosen.push(latest);
88
+ return [{ seed, chosen: chosen.sort((a, b) => a.record.position - b.record.position),
89
+ score: [...winners.values()].reduce((sum, value) => sum + value, 0) / Math.sqrt(facets.length), candidates: candidates.length }];
90
+ };
91
+ const rank = (groups) => groups.sort((a, b) => b.score - a.score || b.seed.position - a.seed.position);
92
+ const initial = rank(hits.flatMap(hit => follow(hit.ref))), groups = initial.slice(0, 4);
93
+ let omitted = initial.length - groups.length, frontier = groups.slice();
94
+ const visited = new Set(groups.map(group => group.seed.ref));
95
+ // A follow-up may itself have become stale (client done, jobs still pending,
96
+ // then jobs implemented). Check two further bounded generations, not just the
97
+ // initially ranked excerpts. No extra model inference or corpus writes.
98
+ for (let depth = 0; depth < 2; depth++) {
99
+ const refs = [...new Set(frontier.flatMap(group => group.chosen.map(item => item.record.ref)))].filter(ref => !visited.has(ref));
100
+ refs.forEach(ref => visited.add(ref));
101
+ const next = rank(refs.flatMap(follow));
102
+ frontier = next.slice(0, 4);
103
+ omitted += next.length - frontier.length;
104
+ groups.push(...frontier);
105
+ }
106
+ const threads = groups.map(group => ({ earlier_ref: group.seed.ref,
107
+ later_refs: group.chosen.map(item => item.record.ref), matched_terms: [...new Set(group.chosen.flatMap(item => item.shared))].slice(0, 24),
108
+ other_candidates: group.candidates - group.chosen.length }));
109
+ const result = [];
110
+ const add = (record) => {
111
+ if (result.some(item => item.ref === record.ref))
112
+ return;
113
+ result.push({ ...record, text: narrative(record.text), offset: 0, score: 1, sequence: record.position });
114
+ };
115
+ // Later reports precede their earlier anchor for packing priority. If space
116
+ // runs out, discard the old anchor, never preserve it without its follow-ups.
117
+ // All roots' direct follow-ups come before deeper dependencies and anchors;
118
+ // one broad roadmap must not consume the packet ahead of another feature.
119
+ for (const group of groups)
120
+ group.chosen.forEach(item => add(item.record));
121
+ for (const group of groups)
122
+ add(group.seed);
123
+ for (const hit of hits)
124
+ if (!result.some(item => item.ref === hit.ref))
125
+ result.push(hit);
126
+ return { results: result, reconciliation: {
127
+ checked_narratives: corpus.length, omitted_narratives: all.length - corpus.length,
128
+ omitted_threads: omitted, threads,
129
+ qualification: 'Bounded lexical follow-up candidates within the same original session (4096 narratives, four starting threads, two further generations). Not exhaustive or verified supersession. Reconcile each sub-task: implemented, tested, enabled/deployed and device/provider acceptance are different. A later partial success does not close the whole feature; a delivery gate does not erase implemented client work. No match is not proof that no later update exists.',
130
+ } };
131
+ }
132
+ //# sourceMappingURL=reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/memory/reconcile.ts"],"names":[],"mappings":";;;AAoCA,4CA6EC;AA9GM,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kLAAkL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAjO,QAAA,cAAc,kBAAmN;AAC9O,MAAM,OAAO,GAAG,8NAA8N,CAAC;AAC/O,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,mHAAmH;IACvI,0IAA0I;IAC1I,sIAAsI;IACtI,gJAAgJ;IAChJ,yIAAyI;IACzI,8IAA8I;IAC9I,gIAAgI;IAChI,qIAAqI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACrJ,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,KAAK,CAAC,IAAY;IACzB,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SACnG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnJ,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC;eACjF,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,GAAG,KAAK,CAAC;aACjH,IAAI,2FAA2F,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC;aAC1H,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,GAAG,KAAK,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;6EAG6E;AAC7E,SAAgB,gBAAgB,CAAC,OAAuB,EAAE,IAAW,EAAE,KAAmB;IACxF,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChI,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;WAC7G,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;WAClE,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC;WAC7D,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;WACrE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,MAAM;QAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;eACtH,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;aAC9H,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC9G,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;QAC7D,wEAAwE;QACxE,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACxF,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChE,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;0BACpG,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5H,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClF,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACrI,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,MAAiC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,6EAA6E;IAC7E,8EAA8E;IAC9E,wEAAwE;IACxE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACjI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;QAChE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1I,gBAAgB,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,MAAoB,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO;QACzD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3G,CAAC,CAAC;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;YACxC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YACjF,eAAe,EAAE,OAAO,EAAE,OAAO;YACjC,aAAa,EAAE,qcAAqc;SACrd,EAAE,CAAC;AACN,CAAC"}
@@ -2,7 +2,9 @@ import { type HistoryPage, type HistoryProgress, type HistoryQuery, type History
2
2
  export declare function historyProgress(): HistoryProgress;
3
3
  export declare function stopHistory(): void;
4
4
  export declare function validateHistoryQuery(value: unknown): HistoryQuery;
5
- export declare const prepareHistory: (before: string, signal: AbortSignal, background?: boolean) => Promise<void>;
5
+ export declare const historyReadiness: (capturedOnly?: boolean) => import("./readiness").HistoryReadiness;
6
+ export declare function prepareHistory(before: string, signal: AbortSignal, background?: boolean): Promise<void>;
7
+ export declare const searchPreparedHistory: (query: HistoryQuery, signal?: AbortSignal) => Promise<HistoryResults>;
6
8
  export declare const searchHistory: (query: HistoryQuery, signal?: AbortSignal) => Promise<HistoryResults>;
7
- export declare function readHistory(ref: string, offset?: number, signal?: AbortSignal): Promise<HistoryPage>;
9
+ export declare function readHistory(ref: string, offset?: number, signal?: AbortSignal, preparedBefore?: string): Promise<HistoryPage>;
8
10
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAsB,MAAM,SAAS,CAAC;AA0C5I,wBAAgB,eAAe,IAAI,eAAe,CAGjD;AAyDD,wBAAgB,WAAW,SAK1B;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CASjE;AACD,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,QAAQ,WAAW,EAAE,oBAAkB,kBAA6D,CAAC;AACpJ,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,EAAE,SAAS,WAAW,4BAAsF,CAAC;AAC9J,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,MAAM,CAAC,EAAE,WAAW,wBAGxE"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAsB,MAAM,SAAS,CAAC;AA4C5I,wBAAgB,eAAe,IAAI,eAAe,CAGjD;AAyDD,wBAAgB,WAAW,SAK1B;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAcjE;AACD,eAAO,MAAM,gBAAgB,GAAI,sBAAoB,2CAAgE,CAAC;AACtH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,UAAQ,iBAO3F;AACD,eAAO,MAAM,qBAAqB,GAAI,OAAO,YAAY,EAAE,SAAS,WAAW,4BAA+F,CAAC;AAC/K,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,EAAE,SAAS,WAAW,4BAAsF,CAAC;AAC9J,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,wBAIjG"}
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.searchHistory = exports.prepareHistory = void 0;
6
+ exports.searchHistory = exports.searchPreparedHistory = exports.historyReadiness = void 0;
7
7
  exports.historyProgress = historyProgress;
8
8
  exports.stopHistory = stopHistory;
9
9
  exports.validateHistoryQuery = validateHistoryQuery;
10
+ exports.prepareHistory = prepareHistory;
10
11
  exports.readHistory = readHistory;
11
12
  const path_1 = __importDefault(require("path"));
12
13
  const child_process_1 = require("child_process");
@@ -14,6 +15,8 @@ const schema_1 = require("../db/schema");
14
15
  const registry_1 = require("../sources/registry");
15
16
  const store_1 = require("../sync/store");
16
17
  const types_1 = require("./types");
18
+ const readiness_1 = require("./readiness");
19
+ const collector_1 = require("../sync/collector");
17
20
  let child, directory = '', sessionRoot = '', sequence = 0, active;
18
21
  let idle;
19
22
  const retiring = new Set(), queue = [];
@@ -46,7 +49,7 @@ function watch(work) {
46
49
  work.timer = setTimeout(() => { if (active === work) {
47
50
  settle(work, failure());
48
51
  retire();
49
- } }, work.method === 'read' ? 30000 : 10 * 60000);
52
+ } }, work.method.startsWith('read') ? 30000 : 10 * 60000);
50
53
  }
51
54
  function progressValue(value) {
52
55
  if (!value || !['scanning', 'downloading', 'loading', 'indexing', 'searching', 'reading'].includes(value.stage))
@@ -124,7 +127,7 @@ function pump() {
124
127
  try {
125
128
  start();
126
129
  work.started = work.updated = Date.now();
127
- work.progress = (0, types_1.historyUpdate)(work.method === 'read' ? 'reading' : 'scanning');
130
+ work.progress = (0, types_1.historyUpdate)(work.method.startsWith('read') ? 'reading' : 'scanning');
128
131
  watch(work);
129
132
  // A healthy first index can exceed an interactive-query timeout. Progress
130
133
  // renews its stall deadline, but total work remains bounded to two hours.
@@ -193,25 +196,48 @@ function validateHistoryQuery(value) {
193
196
  if (!value || typeof value !== 'object' || Array.isArray(value))
194
197
  throw new store_1.HttpError(400, 'A history query is required');
195
198
  const query = value;
196
- if (Object.keys(query).some(key => !['question', 'session_id', 'sync_id', 'before'].includes(key)))
199
+ if (Object.keys(query).some(key => !['question', 'session_id', 'session_ids', 'kind', 'recent', 'reconcile', 'topics', 'sync_id', 'before'].includes(key)))
197
200
  throw new store_1.HttpError(400, 'Unknown history query option');
198
201
  if (typeof query.question !== 'string' || !query.question.trim() || query.question.length > 2000)
199
202
  throw new store_1.HttpError(400, 'History question must be 1 to 2000 characters');
200
203
  if (query.session_id !== undefined && (typeof query.session_id !== 'string' || !/^(?:(?:codex|claude):)?[\w-]{1,128}(?::[\w-]{1,128})?$/.test(query.session_id)))
201
204
  throw new store_1.HttpError(400, 'Invalid session filter');
205
+ if (query.session_ids !== undefined && (!Array.isArray(query.session_ids) || !query.session_ids.length || query.session_ids.length > 8 || query.session_ids.some(id => typeof id !== 'string' || !/^(?:(?:codex|claude):)?[\w-]{1,128}(?::[\w-]{1,128})?$/.test(id))))
206
+ throw new store_1.HttpError(400, 'Invalid session filters');
207
+ if (query.kind !== undefined && query.kind !== 'sources' && query.kind !== 'conversation')
208
+ throw new store_1.HttpError(400, 'Invalid history kind');
209
+ if (query.topics !== undefined && (!Array.isArray(query.topics) || query.topics.length > 2 || query.topics.some(topic => typeof topic !== 'string' || !topic.trim() || topic.length > 200)))
210
+ throw new store_1.HttpError(400, 'Invalid history topics');
211
+ if (query.reconcile !== undefined && typeof query.reconcile !== 'boolean')
212
+ throw new store_1.HttpError(400, 'Invalid reconciliation option');
213
+ if (query.recent !== undefined && typeof query.recent !== 'boolean')
214
+ throw new store_1.HttpError(400, 'Invalid history ordering');
202
215
  if (query.sync_id !== undefined && (!Number.isSafeInteger(query.sync_id) || query.sync_id < 1))
203
216
  throw new store_1.HttpError(400, 'Invalid sync filter');
204
217
  if (query.before !== undefined && (typeof query.before !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(query.before) || !Number.isFinite(Date.parse(query.before)) || new Date(query.before).toISOString() !== query.before))
205
218
  throw new store_1.HttpError(400, 'Invalid history cutoff');
206
219
  return { ...query, question: query.question.trim() };
207
220
  }
208
- const prepareHistory = (before, signal, background = false) => request('prepare', { before }, signal, background);
209
- exports.prepareHistory = prepareHistory;
221
+ const historyReadiness = (capturedOnly = false) => (0, readiness_1.storedHistoryReadiness)((0, schema_1.getDataDir)(), (0, schema_1.getDb)(), capturedOnly);
222
+ exports.historyReadiness = historyReadiness;
223
+ async function prepareHistory(before, signal, background = false) {
224
+ if (!background) {
225
+ const scan = await (0, collector_1.scanSessions)(signal);
226
+ if (scan.warnings.length)
227
+ throw new store_1.HttpError(409, 'History import is incomplete. Check session sources before calling.');
228
+ }
229
+ signal.throwIfAborted();
230
+ return request('prepare', { before }, signal, background);
231
+ }
232
+ const searchPreparedHistory = (query, signal) => request('search-prepared', { query: validateHistoryQuery(query) }, signal);
233
+ exports.searchPreparedHistory = searchPreparedHistory;
210
234
  const searchHistory = (query, signal) => request('search', { query: validateHistoryQuery(query) }, signal);
211
235
  exports.searchHistory = searchHistory;
212
- function readHistory(ref, offset = 0, signal) {
236
+ function readHistory(ref, offset = 0, signal, preparedBefore) {
213
237
  if (!/^H[a-f0-9]{24}$/.test(ref) || !Number.isSafeInteger(offset) || offset < 0 || offset > 1000000)
214
238
  throw new store_1.HttpError(400, 'Invalid historical source or offset');
215
- return request('read', { ref, offset }, signal);
239
+ if (preparedBefore !== undefined)
240
+ validateHistoryQuery({ question: 'source', before: preparedBefore });
241
+ return request(preparedBefore ? 'read-prepared' : 'read', { ref, offset, before: preparedBefore }, signal);
216
242
  }
217
243
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type Database from 'better-sqlite3';
2
2
  import { type RootInput } from '../sources/registry';
3
3
  import type { NormalizationCache } from '../sync/jsonl';
4
- import type { HistoryRecord } from './types';
4
+ import type { HistoryQuery, HistoryRecord } from './types';
5
5
  export declare const digest: (text: string) => string;
6
6
  export interface SourceRecord extends HistoryRecord {
7
7
  group: string;
@@ -11,5 +11,5 @@ export interface SourceRecord extends HistoryRecord {
11
11
  /** Read canonical metadata/frozen pointers and verified, admitted JSONL records.
12
12
  * No discovery, scan, recovery or application/source writes. Current exclusions
13
13
  * and baseline apply to archive retrieval, not to frozen pages. */
14
- export declare function historySources(db: Database.Database, root?: RootInput, cache?: NormalizationCache): Generator<SourceRecord>;
14
+ export declare function historySources(db: Database.Database, root?: RootInput, cache?: NormalizationCache, scope?: Partial<HistoryQuery>): Generator<SourceRecord>;
15
15
  //# sourceMappingURL=sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/memory/sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,WAAoD,CAAC;AACxF,MAAM,WAAW,YAAa,SAAQ,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAEzG;;mEAEmE;AACnE,wBAAiB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAE,SAA4B,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC,CAqD9I"}
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/memory/sources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE3D,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,WAAoD,CAAC;AACxF,MAAM,WAAW,YAAa,SAAQ,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAEzG;;mEAEmE;AACnE,wBAAiB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAE,SAA4B,EAAE,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CA0DjL"}
@@ -12,10 +12,13 @@ exports.digest = digest;
12
12
  /** Read canonical metadata/frozen pointers and verified, admitted JSONL records.
13
13
  * No discovery, scan, recovery or application/source writes. Current exclusions
14
14
  * and baseline apply to archive retrieval, not to frozen pages. */
15
- function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
15
+ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache, scope = {}) {
16
16
  const sessions = new Map(db.prepare('SELECT s.id,s.included,s.missing,a.enabled FROM agent_sessions s JOIN agent_sources a ON a.id=s.agent').all().map(row => [row.id, row]));
17
17
  const baseline = db.prepare("SELECT value FROM sync_settings WHERE key='history_since'").get()?.value || '';
18
- const allowed = (session, at) => sessions.get(session)?.enabled === 1 && sessions.get(session)?.included === 1 && !sessions.get(session)?.missing && at >= baseline;
18
+ const allowed = (session, at) => scope.kind !== 'conversation'
19
+ && (!scope.session_id || session === scope.session_id) && (!scope.session_ids || scope.session_ids.includes(session))
20
+ && (!scope.before || Boolean(at && at <= scope.before))
21
+ && sessions.get(session)?.enabled === 1 && sessions.get(session)?.included === 1 && !sessions.get(session)?.missing && at >= baseline;
19
22
  const record = (key, data, identity) => {
20
23
  const clean = { ...data, text: (0, normalize_1.cleanText)(data.text, Number.MAX_SAFE_INTEGER), title: (0, normalize_1.cleanText)(data.title, 180), workspace: (0, normalize_1.cleanText)(data.workspace, 300), role: (0, normalize_1.cleanText)(data.role, 40) };
21
24
  return { ...clean, identity: identity || (0, exports.digest)(key + '\0' + clean.text), ref: `H${(0, exports.digest)(JSON.stringify([key, clean])).slice(0, 24)}` };
@@ -32,6 +35,8 @@ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
32
35
  const frozen = new evidence_1.EvidenceReader(db, root, cache);
33
36
  try {
34
37
  for (const row of db.prepare("SELECT i.sync_id,i.evidence_json FROM sync_items i JOIN syncs s ON s.id=i.sync_id WHERE s.status!='discarded' ORDER BY i.sync_id,i.rowid").iterate()) {
38
+ if (scope.sync_id && scope.sync_id !== row.sync_id)
39
+ continue;
35
40
  const metadata = JSON.parse(row.evidence_json);
36
41
  if (!allowed(metadata.session_id, metadata.timestamp))
37
42
  continue;
@@ -40,6 +45,8 @@ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
40
45
  yield result;
41
46
  }
42
47
  for (const row of db.prepare("SELECT id,status,completed_at,context_json,decisions,carry_forward FROM syncs WHERE status!='discarded' ORDER BY id").iterate()) {
48
+ if (scope.sync_id && scope.sync_id !== row.id)
49
+ continue;
43
50
  for (const item of JSON.parse(row.context_json)) {
44
51
  if (!allowed(item.session_id, item.timestamp))
45
52
  continue;
@@ -48,7 +55,7 @@ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
48
55
  yield result;
49
56
  }
50
57
  for (const kind of ['decisions', 'carry_forward'])
51
- if (row[kind].trim())
58
+ if (scope.kind !== 'sources' && !scope.session_id && !scope.session_ids && (!scope.before || (row.completed_at && row.completed_at <= scope.before)) && row[kind].trim())
52
59
  yield record(`${kind}:${row.id}`, {
53
60
  kind, sync_id: row.id, session_id: null, origin_ref: null, title: `Sync #${row.id} saved ${kind === 'decisions' ? 'decisions' : 'carry-forward'}`,
54
61
  workspace: '', role: 'saved_note', at: row.status === 'completed' ? row.completed_at : null, text: row[kind],
@@ -65,7 +72,7 @@ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
65
72
  for (const row of db.prepare(`SELECT e.id,e.event_key,e.session_id,s.agent,s.name,s.cwd,e.role,e.timestamp
66
73
  FROM agent_entries e JOIN agent_sessions s ON s.id=e.session_id
67
74
  WHERE e.active=1 AND e.present=1 AND e.is_activity=1 AND e.effective_length>0 ORDER BY e.id`).iterate()) {
68
- if (!allowed(row.session_id, row.timestamp))
75
+ if (scope.sync_id || !allowed(row.session_id, row.timestamp))
69
76
  continue;
70
77
  const text = reader.effective(row.id);
71
78
  const key = (0, exports.digest)(row.event_key + '\0' + (0, normalize_1.cleanText)(text, Number.MAX_SAFE_INTEGER));
@@ -78,7 +85,7 @@ function* historySources(db, root = (0, registry_1.getSourceRoots)(), cache) {
78
85
  reader.close();
79
86
  }
80
87
  for (const row of db.prepare(`SELECT m.id,m.sync_id,m.role,m.content,m.created_at FROM sync_messages m JOIN syncs s ON s.id=m.sync_id WHERE s.status!='discarded' ORDER BY m.id`).iterate()) {
81
- if (!row.content.trim())
88
+ if (scope.kind === 'sources' || scope.session_id || scope.session_ids || (scope.sync_id && scope.sync_id !== row.sync_id) || (scope.before && row.created_at > scope.before) || !row.content.trim())
82
89
  continue;
83
90
  yield record(`message:${row.id}`, { kind: 'discussion', session_id: null, sync_id: row.sync_id, origin_ref: null, title: `Sync #${row.sync_id} discussion`, workspace: '', role: row.role,
84
91
  at: row.created_at, text: row.content, qualification: 'Historical conversation, not a current request. Generated text is not proof of playback, agreement or execution.', group: `discussion:${row.sync_id}`, position: row.id });
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/memory/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/memory/sources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;0EAC0E;AAC1E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAwFnF"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;0EAC0E;AAC1E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAgGnF"}