squish-memory 0.8.2 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.env.mcp +30 -0
  4. package/.mcp.json +2 -5
  5. package/CHANGELOG.md +111 -0
  6. package/QUICK-START.md +65 -0
  7. package/README.md +188 -530
  8. package/commands/managed-sync.ts +69 -0
  9. package/commands/mcp-server.ts +519 -0
  10. package/config/mcp-cli-fallback-policy.json +22 -0
  11. package/config/mcp-migration-map.json +22 -0
  12. package/config/mcp-mode-semantics.json +21 -0
  13. package/config/mcp-remote-auth.json +36 -0
  14. package/config/mcp-universal.schema.json +48 -0
  15. package/config/mcp.json +38 -0
  16. package/config/remote-memory-policy.json +32 -0
  17. package/dist/algorithms/merge/detection/hash-filters.js +2 -2
  18. package/dist/algorithms/merge/detection/hash-filters.js.map +1 -1
  19. package/dist/algorithms/merge/detection/two-stage-detector.d.ts +5 -2
  20. package/dist/algorithms/merge/detection/two-stage-detector.d.ts.map +1 -1
  21. package/dist/algorithms/merge/detection/two-stage-detector.js +139 -22
  22. package/dist/algorithms/merge/detection/two-stage-detector.js.map +1 -1
  23. package/dist/commands/managed-sync.d.ts +10 -0
  24. package/dist/commands/managed-sync.d.ts.map +1 -0
  25. package/dist/commands/managed-sync.js +64 -0
  26. package/dist/commands/managed-sync.js.map +1 -0
  27. package/dist/commands/mcp-server.d.ts +3 -0
  28. package/dist/commands/mcp-server.d.ts.map +1 -0
  29. package/dist/commands/mcp-server.js +389 -0
  30. package/dist/commands/mcp-server.js.map +1 -0
  31. package/dist/config.d.ts +24 -1
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js +32 -1
  34. package/dist/config.js.map +1 -1
  35. package/dist/core/associations.d.ts +1 -1
  36. package/dist/core/associations.d.ts.map +1 -1
  37. package/dist/core/consolidation.d.ts +31 -0
  38. package/dist/core/consolidation.d.ts.map +1 -1
  39. package/dist/core/consolidation.js +237 -29
  40. package/dist/core/consolidation.js.map +1 -1
  41. package/dist/core/embeddings/google-multimodal.d.ts +14 -0
  42. package/dist/core/embeddings/google-multimodal.d.ts.map +1 -0
  43. package/dist/core/embeddings/google-multimodal.js +142 -0
  44. package/dist/core/embeddings/google-multimodal.js.map +1 -0
  45. package/dist/core/embeddings.d.ts +3 -2
  46. package/dist/core/embeddings.d.ts.map +1 -1
  47. package/dist/core/embeddings.js +61 -39
  48. package/dist/core/embeddings.js.map +1 -1
  49. package/dist/core/mcp/client.d.ts +17 -0
  50. package/dist/core/mcp/client.d.ts.map +1 -0
  51. package/dist/core/mcp/client.js +101 -0
  52. package/dist/core/mcp/client.js.map +1 -0
  53. package/dist/core/mcp/index.d.ts +6 -0
  54. package/dist/core/mcp/index.d.ts.map +1 -0
  55. package/dist/core/mcp/index.js +6 -0
  56. package/dist/core/mcp/index.js.map +1 -0
  57. package/dist/core/mcp/server.d.ts +18 -0
  58. package/dist/core/mcp/server.d.ts.map +1 -0
  59. package/dist/core/mcp/server.js +131 -0
  60. package/dist/core/mcp/server.js.map +1 -0
  61. package/dist/core/mcp/standalone-server.d.ts +13 -0
  62. package/dist/core/mcp/standalone-server.d.ts.map +1 -0
  63. package/dist/core/mcp/standalone-server.js +46 -0
  64. package/dist/core/mcp/standalone-server.js.map +1 -0
  65. package/dist/core/mcp/tools.d.ts +9 -0
  66. package/dist/core/mcp/tools.d.ts.map +1 -0
  67. package/dist/core/mcp/tools.js +262 -0
  68. package/dist/core/mcp/tools.js.map +1 -0
  69. package/dist/core/mcp/types.d.ts +315 -0
  70. package/dist/core/mcp/types.d.ts.map +1 -0
  71. package/dist/core/mcp/types.js +48 -0
  72. package/dist/core/mcp/types.js.map +1 -0
  73. package/dist/core/memory/categorizer.d.ts +27 -0
  74. package/dist/core/memory/categorizer.d.ts.map +1 -0
  75. package/dist/core/memory/categorizer.js +304 -0
  76. package/dist/core/memory/categorizer.js.map +1 -0
  77. package/dist/core/memory/conflict-detector.d.ts +7 -0
  78. package/dist/core/memory/conflict-detector.d.ts.map +1 -0
  79. package/dist/core/memory/conflict-detector.js +43 -0
  80. package/dist/core/memory/conflict-detector.js.map +1 -0
  81. package/dist/core/memory/context-collector.d.ts +10 -0
  82. package/dist/core/memory/context-collector.d.ts.map +1 -0
  83. package/dist/core/memory/context-collector.js +55 -0
  84. package/dist/core/memory/context-collector.js.map +1 -0
  85. package/dist/core/memory/contradiction-resolver.d.ts +40 -0
  86. package/dist/core/memory/contradiction-resolver.d.ts.map +1 -0
  87. package/dist/core/memory/contradiction-resolver.js +368 -0
  88. package/dist/core/memory/contradiction-resolver.js.map +1 -0
  89. package/dist/core/memory/edit-workflow.d.ts +19 -0
  90. package/dist/core/memory/edit-workflow.d.ts.map +1 -0
  91. package/dist/core/memory/edit-workflow.js +120 -0
  92. package/dist/core/memory/edit-workflow.js.map +1 -0
  93. package/dist/core/memory/feedback-tracker.d.ts +12 -0
  94. package/dist/core/memory/feedback-tracker.d.ts.map +1 -0
  95. package/dist/core/memory/feedback-tracker.js +151 -0
  96. package/dist/core/memory/feedback-tracker.js.map +1 -0
  97. package/dist/core/memory/hybrid-retrieval.d.ts +11 -12
  98. package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -1
  99. package/dist/core/memory/hybrid-retrieval.js +56 -28
  100. package/dist/core/memory/hybrid-retrieval.js.map +1 -1
  101. package/dist/core/memory/hybrid-scorer.d.ts +5 -16
  102. package/dist/core/memory/hybrid-scorer.d.ts.map +1 -1
  103. package/dist/core/memory/hybrid-scorer.js +161 -125
  104. package/dist/core/memory/hybrid-scorer.js.map +1 -1
  105. package/dist/core/memory/hybrid-search.js +53 -19
  106. package/dist/core/memory/hybrid-search.js.map +1 -1
  107. package/dist/core/memory/memories.d.ts +4 -0
  108. package/dist/core/memory/memories.d.ts.map +1 -1
  109. package/dist/core/memory/memories.js +133 -60
  110. package/dist/core/memory/memories.js.map +1 -1
  111. package/dist/core/memory/progressive-disclosure.d.ts +43 -0
  112. package/dist/core/memory/progressive-disclosure.d.ts.map +1 -0
  113. package/dist/core/memory/progressive-disclosure.js +280 -0
  114. package/dist/core/memory/progressive-disclosure.js.map +1 -0
  115. package/dist/core/memory/query-rewriter.d.ts +13 -0
  116. package/dist/core/memory/query-rewriter.d.ts.map +1 -0
  117. package/dist/core/memory/query-rewriter.js +118 -0
  118. package/dist/core/memory/query-rewriter.js.map +1 -0
  119. package/dist/core/memory/response-analyzer.d.ts +9 -0
  120. package/dist/core/memory/response-analyzer.d.ts.map +1 -0
  121. package/dist/core/memory/response-analyzer.js +61 -0
  122. package/dist/core/memory/response-analyzer.js.map +1 -0
  123. package/dist/core/memory/stats.d.ts +17 -0
  124. package/dist/core/memory/stats.d.ts.map +1 -0
  125. package/dist/core/memory/stats.js +87 -0
  126. package/dist/core/memory/stats.js.map +1 -0
  127. package/dist/core/memory/telemetry.d.ts +69 -0
  128. package/dist/core/memory/telemetry.d.ts.map +1 -0
  129. package/dist/core/memory/telemetry.js +313 -0
  130. package/dist/core/memory/telemetry.js.map +1 -0
  131. package/dist/core/memory/temporal-facts.d.ts +41 -0
  132. package/dist/core/memory/temporal-facts.d.ts.map +1 -0
  133. package/dist/core/memory/temporal-facts.js +262 -0
  134. package/dist/core/memory/temporal-facts.js.map +1 -0
  135. package/dist/core/memory/trigger-detector.d.ts +14 -0
  136. package/dist/core/memory/trigger-detector.d.ts.map +1 -0
  137. package/dist/core/memory/trigger-detector.js +42 -0
  138. package/dist/core/memory/trigger-detector.js.map +1 -0
  139. package/dist/core/memory/write-gate.d.ts +54 -0
  140. package/dist/core/memory/write-gate.d.ts.map +1 -0
  141. package/dist/core/memory/write-gate.js +210 -0
  142. package/dist/core/memory/write-gate.js.map +1 -0
  143. package/dist/core/projects.d.ts +2 -0
  144. package/dist/core/projects.d.ts.map +1 -1
  145. package/dist/core/projects.js +33 -0
  146. package/dist/core/projects.js.map +1 -1
  147. package/dist/core/scheduler/cron-scheduler.d.ts +32 -0
  148. package/dist/core/scheduler/cron-scheduler.d.ts.map +1 -0
  149. package/dist/core/scheduler/cron-scheduler.js +238 -0
  150. package/dist/core/scheduler/cron-scheduler.js.map +1 -0
  151. package/dist/core/scheduler/heartbeat.d.ts +11 -0
  152. package/dist/core/scheduler/heartbeat.d.ts.map +1 -0
  153. package/dist/core/scheduler/heartbeat.js +73 -0
  154. package/dist/core/scheduler/heartbeat.js.map +1 -0
  155. package/dist/core/scheduler/index.d.ts +8 -0
  156. package/dist/core/scheduler/index.d.ts.map +1 -0
  157. package/dist/core/scheduler/index.js +8 -0
  158. package/dist/core/scheduler/index.js.map +1 -0
  159. package/dist/core/scheduler/job-runner.d.ts +11 -0
  160. package/dist/core/scheduler/job-runner.d.ts.map +1 -0
  161. package/dist/core/scheduler/job-runner.js +161 -0
  162. package/dist/core/scheduler/job-runner.js.map +1 -0
  163. package/dist/core/session/auto-load.d.ts +6 -0
  164. package/dist/core/session/auto-load.d.ts.map +1 -0
  165. package/dist/core/session/auto-load.js +119 -0
  166. package/dist/core/session/auto-load.js.map +1 -0
  167. package/dist/core/session/index.d.ts +7 -0
  168. package/dist/core/session/index.d.ts.map +1 -0
  169. package/dist/core/session/index.js +7 -0
  170. package/dist/core/session/index.js.map +1 -0
  171. package/dist/core/session/types.d.ts +26 -0
  172. package/dist/core/session/types.d.ts.map +1 -0
  173. package/dist/core/session/types.js +10 -0
  174. package/dist/core/session/types.js.map +1 -0
  175. package/dist/core/snapshots/comparison.d.ts.map +1 -1
  176. package/dist/core/snapshots/comparison.js +8 -2
  177. package/dist/core/snapshots/comparison.js.map +1 -1
  178. package/dist/core/utils/content-extraction.d.ts.map +1 -1
  179. package/dist/core/utils/content-extraction.js +11 -1
  180. package/dist/core/utils/content-extraction.js.map +1 -1
  181. package/dist/core/utils/summarization-helpers.d.ts.map +1 -1
  182. package/dist/core/utils/summarization-helpers.js +4 -1
  183. package/dist/core/utils/summarization-helpers.js.map +1 -1
  184. package/dist/core/utils.d.ts.map +1 -1
  185. package/dist/core/utils.js +26 -3
  186. package/dist/core/utils.js.map +1 -1
  187. package/dist/core/worker.d.ts +20 -0
  188. package/dist/core/worker.d.ts.map +1 -1
  189. package/dist/core/worker.js +86 -0
  190. package/dist/core/worker.js.map +1 -1
  191. package/dist/db/adapter.d.ts +1 -5
  192. package/dist/db/adapter.d.ts.map +1 -1
  193. package/dist/db/adapter.js +125 -12
  194. package/dist/db/adapter.js.map +1 -1
  195. package/dist/db/bootstrap.d.ts.map +1 -1
  196. package/dist/db/bootstrap.js +178 -3
  197. package/dist/db/bootstrap.js.map +1 -1
  198. package/dist/db/index.d.ts +1 -5
  199. package/dist/db/index.d.ts.map +1 -1
  200. package/dist/db/index.js +7 -4
  201. package/dist/db/index.js.map +1 -1
  202. package/dist/drizzle/schema-sqlite.d.ts +1953 -612
  203. package/dist/drizzle/schema-sqlite.d.ts.map +1 -1
  204. package/dist/drizzle/schema-sqlite.js +134 -0
  205. package/dist/drizzle/schema-sqlite.js.map +1 -1
  206. package/dist/drizzle/schema.d.ts +684 -3
  207. package/dist/drizzle/schema.d.ts.map +1 -1
  208. package/dist/drizzle/schema.js +81 -1
  209. package/dist/drizzle/schema.js.map +1 -1
  210. package/dist/index.d.ts +3 -3
  211. package/dist/index.js +152 -13
  212. package/dist/index.js.map +1 -1
  213. package/package.json +125 -103
  214. package/scripts/build-release.sh +33 -0
  215. package/scripts/db/check-db.mjs +88 -0
  216. package/scripts/db/fix-all-columns.mjs +52 -0
  217. package/scripts/db/fix-schema-all.mjs +55 -0
  218. package/scripts/db/fix-schema-full.mjs +46 -0
  219. package/scripts/db/fix-schema.mjs +38 -0
  220. package/scripts/db/init-db.mjs +13 -0
  221. package/scripts/db/recreate-db.mjs +14 -0
  222. package/scripts/generate-mcp.mjs +264 -0
  223. package/scripts/github-release.sh +61 -0
  224. package/scripts/init-dirs.mjs +13 -0
  225. package/scripts/init-dirs.ts +15 -0
  226. package/scripts/install-mcp.mjs +116 -0
  227. package/scripts/install-web.sh +120 -0
  228. package/scripts/install.mjs +340 -0
  229. package/scripts/openclaw-bootstrap.mjs +127 -0
  230. package/scripts/package-release.sh +71 -0
  231. package/scripts/remote-preflight.mjs +62 -0
  232. package/scripts/squish-fallback.mjs +132 -0
  233. package/scripts/test/test-all-systems.mjs +139 -0
  234. package/scripts/test/test-memory-system.mjs +139 -0
  235. package/scripts/test/test-v0.5.0.mjs +210 -0
  236. package/scripts/verify-mcp.mjs +214 -0
  237. package/skills/memory-guide/SKILL.md +181 -123
  238. package/skills/squish-cli/SKILL.md +200 -0
  239. package/skills/squish-mcp/SKILL.md +311 -0
  240. package/skills/squish-memory/SKILL.md +100 -62
  241. package/skills/squish-memory/claude-desktop.json +12 -0
  242. package/skills/squish-memory/install.mjs +335 -0
  243. package/skills/squish-memory/install.sh +94 -62
  244. package/skills/squish-memory/openclaw.json +13 -0
  245. package/skills/squish-memory/opencode.json +14 -0
  246. package/skills/squish-memory/skill.json +32 -0
  247. package/dist/adapters/claude-code/capture.d.ts +0 -11
  248. package/dist/adapters/claude-code/capture.d.ts.map +0 -1
  249. package/dist/adapters/claude-code/capture.js +0 -100
  250. package/dist/adapters/claude-code/capture.js.map +0 -1
  251. package/dist/adapters/claude-code/index.d.ts +0 -5
  252. package/dist/adapters/claude-code/index.d.ts.map +0 -1
  253. package/dist/adapters/claude-code/index.js +0 -6
  254. package/dist/adapters/claude-code/index.js.map +0 -1
  255. package/dist/adapters/claude-code/injection.d.ts +0 -34
  256. package/dist/adapters/claude-code/injection.d.ts.map +0 -1
  257. package/dist/adapters/claude-code/injection.js +0 -127
  258. package/dist/adapters/claude-code/injection.js.map +0 -1
  259. package/dist/adapters/claude-code/plugin-wrapper.d.ts +0 -21
  260. package/dist/adapters/claude-code/plugin-wrapper.d.ts.map +0 -1
  261. package/dist/adapters/claude-code/plugin-wrapper.js +0 -239
  262. package/dist/adapters/claude-code/plugin-wrapper.js.map +0 -1
  263. package/dist/adapters/claude-code/types.d.ts +0 -46
  264. package/dist/adapters/claude-code/types.d.ts.map +0 -1
  265. package/dist/adapters/claude-code/types.js +0 -6
  266. package/dist/adapters/claude-code/types.js.map +0 -1
@@ -7,10 +7,11 @@ import { ensureProject, getProjectByPath } from '../../core/projects.js';
7
7
  import { getEmbedding } from '../../core/embeddings.js';
8
8
  import { fromSqliteJson, fromSqliteTags, normalizeTags, toSqliteJson, toSqliteTags } from '../../core/memory/serialization.js';
9
9
  import { createDatabaseClient } from '../../core/database.js';
10
- import { normalizeTimestamp, isDatabaseUnavailableError, clampLimit, prepareEmbedding } from '../../core/utils.js';
11
- import { getQMDMemorySync } from '../../core/sync/qmd-sync.js';
10
+ import { isDatabaseUnavailableError, clampLimit, prepareEmbedding } from '../../core/utils.js';
12
11
  import { hybridSearch as hybridSearchImpl } from './hybrid-search.js';
13
12
  import { calculateImportance } from './importance.js';
13
+ import { detectMemorySignals } from './trigger-detector.js';
14
+ import { resolveContradictions, applySupersession } from './contradiction-resolver.js';
14
15
  export async function rememberMemory(input) {
15
16
  let db;
16
17
  try {
@@ -24,7 +25,8 @@ export async function rememberMemory(input) {
24
25
  const project = await ensureProject(input.project);
25
26
  const embedding = await getEmbedding(input.content);
26
27
  const id = randomUUID();
27
- const type = input.type ?? 'observation';
28
+ const signals = detectMemorySignals(input.content);
29
+ const type = input.type ?? signals.suggestedType;
28
30
  const baseValues = {
29
31
  id,
30
32
  projectId: project?.id ?? null,
@@ -51,11 +53,21 @@ export async function rememberMemory(input) {
51
53
  tagsValue = toSqliteTags(tags);
52
54
  }
53
55
  let metadataValue;
56
+ // Build enriched metadata with memory signals
57
+ const enrichedMetadata = {
58
+ ...(input.metadata ?? {}),
59
+ memorySignals: {
60
+ explicitTriggers: signals.explicitTriggers,
61
+ implicit: signals.implicit,
62
+ priority: signals.priority,
63
+ requiresConflictCheck: signals.implicit.correction,
64
+ },
65
+ };
54
66
  if (config.isTeamMode) {
55
- metadataValue = input.metadata ?? null;
67
+ metadataValue = enrichedMetadata;
56
68
  }
57
69
  else {
58
- metadataValue = toSqliteJson(input.metadata ?? null);
70
+ metadataValue = toSqliteJson(enrichedMetadata);
59
71
  }
60
72
  await db.insert(schema.memories).values({
61
73
  ...baseValues,
@@ -65,6 +77,33 @@ export async function rememberMemory(input) {
65
77
  importanceScore: importance.score,
66
78
  lastImportanceRecalc: new Date(),
67
79
  });
80
+ // Resolve contradictions and supersede old memories (async, non-blocking)
81
+ resolveContradictions(input.content, type, project?.id)
82
+ .then(async (result) => {
83
+ if (result.supersededIds.length > 0) {
84
+ await applySupersession(id, result.supersededIds, result.confidence);
85
+ // Update metadata with contradiction resolution info
86
+ const updatedMetadata = {
87
+ ...enrichedMetadata,
88
+ contradictionResolution: {
89
+ supersededCount: result.supersededIds.length,
90
+ confidence: result.confidence,
91
+ reason: result.reason,
92
+ },
93
+ };
94
+ if (config.isTeamMode) {
95
+ metadataValue = updatedMetadata;
96
+ }
97
+ else {
98
+ metadataValue = toSqliteJson(updatedMetadata);
99
+ }
100
+ }
101
+ })
102
+ .catch((error) => {
103
+ import('../logger.js').then(({ logger }) => {
104
+ logger?.debug?.(`Contradiction resolution failed: ${error}`);
105
+ });
106
+ });
68
107
  // Sync to QMD if enabled (async, don't block)
69
108
  const memoryRecord = {
70
109
  id,
@@ -72,17 +111,9 @@ export async function rememberMemory(input) {
72
111
  type,
73
112
  content: input.content,
74
113
  tags,
75
- metadata: input.metadata ?? null,
114
+ metadata: enrichedMetadata,
115
+ importance: importance.score,
76
116
  };
77
- if (config.qmdEnabled) {
78
- getQMDMemorySync().then(sync => sync.syncMemory(memoryRecord))
79
- .catch((error) => {
80
- // Silently fail - QMD sync is optional
81
- import('../logger.js').then(({ logger }) => {
82
- logger?.debug?.(`QMD sync failed: ${error}`);
83
- });
84
- });
85
- }
86
117
  return memoryRecord;
87
118
  }
88
119
  export async function getMemoryById(id, incrementAccess = true) {
@@ -178,7 +209,11 @@ function parseEmbedding(embeddingData) {
178
209
  catch {
179
210
  // Not JSON, try Float32Array
180
211
  try {
181
- const floatArray = new Float32Array(embeddingData.buffer || embeddingData);
212
+ const buffer = embeddingData.buffer;
213
+ const arrayBuffer = buffer instanceof ArrayBuffer
214
+ ? buffer
215
+ : buffer;
216
+ const floatArray = new Float32Array(arrayBuffer);
182
217
  return Array.from(floatArray);
183
218
  }
184
219
  catch {
@@ -227,22 +262,22 @@ async function searchMemoriesSqlite(input, tags, limit) {
227
262
  const whereClause = conditions.length > 0 ? 'WHERE ' + conditions.join(' AND ') : '';
228
263
  // Fetch memories with embeddings for semantic search
229
264
  const fetchLimit = Math.max(limit * 3, 50); // Fetch more for re-ranking
230
- const statement = sqlite.prepare(`
231
- SELECT
232
- m.id as id,
233
- m.project_id as projectId,
234
- m.type as type,
235
- m.content as content,
236
- m.summary as summary,
237
- m.tags as tags,
238
- m.metadata as metadata,
239
- m.embedding as embedding,
240
- m.embedding_json as embeddingJson,
241
- m.created_at as createdAt
242
- FROM memories m
243
- ${whereClause}
244
- ORDER BY m.created_at DESC
245
- LIMIT ?
265
+ const statement = sqlite.prepare(`
266
+ SELECT
267
+ m.id as id,
268
+ m.project_id as projectId,
269
+ m.type as type,
270
+ m.content as content,
271
+ m.summary as summary,
272
+ m.tags as tags,
273
+ m.metadata as metadata,
274
+ m.embedding as embedding,
275
+ m.embedding_json as embeddingJson,
276
+ m.created_at as createdAt
277
+ FROM memories m
278
+ ${whereClause}
279
+ ORDER BY m.created_at DESC
280
+ LIMIT ?
246
281
  `);
247
282
  const rows = statement.all(...params, fetchLimit);
248
283
  if (rows.length === 0)
@@ -296,38 +331,43 @@ async function searchMemoriesPostgres(input, tags, limit) {
296
331
  const whereClause = whereParts.length ? `WHERE ${whereParts.join(' AND ')}` : '';
297
332
  const embedding = await getEmbedding(input.query);
298
333
  if (embedding) {
299
- const rows = await db.$client.query(`SELECT
300
- id,
301
- project_id as "projectId",
302
- type,
303
- content,
304
- summary,
305
- tags,
306
- metadata,
307
- created_at as "createdAt",
308
- 1 - (embedding <-> $${values.length + 1}) as similarity
309
- FROM memories
310
- ${whereClause}
311
- ORDER BY embedding <-> $${values.length + 1}
312
- LIMIT $${values.length + 2}`, [...values, embedding, limit]);
334
+ const rows = await db.$client.query(`SELECT
335
+ id,
336
+ project_id as "projectId",
337
+ type,
338
+ content,
339
+ summary,
340
+ tags,
341
+ metadata,
342
+ created_at as "createdAt",
343
+ valid_from as "validFrom",
344
+ valid_to as "validTo",
345
+ recorded_at as "recordedAt"
346
+ FROM memories
347
+ ${whereClause}
348
+ ORDER BY created_at DESC
349
+ LIMIT $${values.length + 1}`, [...values, limit]);
313
350
  return rows.rows.map((row) => ({
314
351
  ...normalizeMemory(row),
315
352
  similarity: row.similarity ?? 0,
316
353
  }));
317
354
  }
318
- const rows = await db.$client.query(`SELECT
319
- id,
320
- project_id as "projectId",
321
- type,
322
- content,
323
- summary,
324
- tags,
325
- metadata,
326
- created_at as "createdAt"
327
- FROM memories
328
- ${whereClause}
329
- ORDER BY created_at DESC
330
- LIMIT $${values.length + 1}`, [...values, limit]);
355
+ const rows = await db.$client.query(`SELECT
356
+ id,
357
+ project_id as "projectId",
358
+ type,
359
+ content,
360
+ summary,
361
+ tags,
362
+ metadata,
363
+ created_at as "createdAt",
364
+ valid_from as "validFrom",
365
+ valid_to as "validTo",
366
+ recorded_at as "recordedAt"
367
+ FROM memories
368
+ ${whereClause}
369
+ ORDER BY created_at DESC
370
+ LIMIT $${values.length + 1}`, [...values, limit]);
331
371
  return rows.rows.map((row) => ({
332
372
  ...normalizeMemory(row),
333
373
  similarity: 0,
@@ -348,6 +388,36 @@ function normalizeMemory(row) {
348
388
  else {
349
389
  metadata = fromSqliteJson(row.metadata ?? null);
350
390
  }
391
+ const createdAt = row.createdAt ?? row.created_at;
392
+ let createdAtStr = null;
393
+ if (createdAt) {
394
+ try {
395
+ if (createdAt instanceof Date && !isNaN(createdAt.getTime())) {
396
+ createdAtStr = createdAt.toISOString();
397
+ }
398
+ else if (typeof createdAt === 'number' && createdAt > 0) {
399
+ if (createdAt > 100000000000000) {
400
+ createdAtStr = new Date(createdAt / 1000000).toISOString();
401
+ }
402
+ else if (createdAt > 1000000000000) {
403
+ createdAtStr = new Date(createdAt).toISOString();
404
+ }
405
+ else {
406
+ createdAtStr = new Date(createdAt * 1000).toISOString();
407
+ }
408
+ }
409
+ else if (typeof createdAt === 'string' && createdAt.trim()) {
410
+ const parsed = new Date(createdAt);
411
+ createdAtStr = isNaN(parsed.getTime()) ? new Date().toISOString() : parsed.toISOString();
412
+ }
413
+ else {
414
+ createdAtStr = new Date().toISOString();
415
+ }
416
+ }
417
+ catch {
418
+ createdAtStr = new Date().toISOString();
419
+ }
420
+ }
351
421
  return {
352
422
  id: row.id,
353
423
  projectId: row.projectId ?? row.project_id ?? null,
@@ -356,7 +426,10 @@ function normalizeMemory(row) {
356
426
  summary: row.summary ?? null,
357
427
  tags,
358
428
  metadata,
359
- createdAt: normalizeTimestamp(row.createdAt ?? row.created_at),
429
+ createdAt: createdAtStr,
430
+ validFrom: row.validFrom ?? row.valid_from ?? null,
431
+ validTo: row.validTo ?? row.valid_to ?? null,
432
+ recordedAt: row.recordedAt ?? row.recorded_at ?? null,
360
433
  };
361
434
  }
362
435
  //# sourceMappingURL=memories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memories.js","sourceRoot":"","sources":["../../../core/memory/memories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memories.js","sourceRoot":"","sources":["../../../core/memory/memories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC/H,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAsB,0BAA0B,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEnH,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAiB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAyCvF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAoB;IACvD,IAAI,EAAO,CAAC;IACZ,IAAI,CAAC;QACH,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAEjD,MAAM,UAAU,GAAG;QACjB,EAAE;QACF,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI;QAC9B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;KAC9B,CAAC;IAEF,qCAAqC;IACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC;QACrC,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEpD,IAAI,SAAS,CAAC;IACd,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEA,IAAI,aAAa,CAAC;IAClB,8CAA8C;IAC9C,MAAM,gBAAgB,GAA4B;QAChD,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzB,aAAa,EAAE;YACb,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,qBAAqB,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;SACnD;KACF,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,aAAa,GAAG,gBAAgB,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACtC,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,aAAa;QACvB,GAAG,eAAe;QAClB,eAAe,EAAE,UAAU,CAAC,KAAK;QACjC,oBAAoB,EAAE,IAAI,IAAI,EAAE;KACjC,CAAC,CAAC;IAEF,0EAA0E;IAC1E,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;SACpD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACrB,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACrE,qDAAqD;YACrD,MAAM,eAAe,GAA4B;gBAC/C,GAAG,gBAAgB;gBACnB,uBAAuB,EAAE;oBACvB,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;oBAC5C,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC;YACF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,aAAa,GAAG,eAAe,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACzC,MAAM,EAAE,KAAK,EAAE,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEN,8CAA8C;IAC/C,MAAM,YAAY,GAAiB;QAClC,EAAE;QACF,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI;QAC9B,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI;QACJ,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,UAAU,CAAC,KAAe;KACvC,CAAC;IAEA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU,EAAE,kBAA2B,IAAI;IAC7E,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,uDAAuD;QACvD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAC7B,GAAG,CAAC;gBACH,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC;gBACvC,cAAc,EAAE,IAAI,IAAI,EAAE;aAC3B,CAAC;iBACD,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,CAAC,8CAA8C;QAC7D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,KAAa;IACxE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aACjD,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;aAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACxC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC,CAAC,8CAA8C;QAC3D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,MAAM,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,yDAAyD;IACzD,OAAO,MAAM,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,aAAkB;IACxC,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,2BAA2B;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,aAAa,CAAC;IAEvD,8BAA8B;IAC9B,IAAI,aAAa,YAAY,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1E,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;gBACpC,MAAM,WAAW,GAAG,MAAM,YAAY,WAAW;oBAC/C,CAAC,CAAC,MAAM;oBACR,CAAC,CAAE,MAAiC,CAAC;gBACvC,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,KAAkB,EAAE,IAAc,EAAE,KAAa;IACnF,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAc,CAAC;IAEjC,oDAAoD;IACpD,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvD,uBAAuB;IACvB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACjG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,qDAAqD;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B;IAExE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;;;;;;;;;;;;;MAa7B,WAAW;;;GAGd,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,CAW9C,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,kDAAkD;IAClD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE9C,uDAAuD;YACvD,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACpC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,kDAAkD;QAClD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,CAAC;YACzD,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,KAAK;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,4DAA4D;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAgB,EAAE,CAAC,CAAC;QACzD,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,UAAU,EAAE,CAAC;KACd,CAAC,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,KAAkB,EAAE,IAAc,EAAE,KAAa;IACrF,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAA+C,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAChC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEpC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAO,EAAE,CAAC,OAAe,CAAC,KAAK,CAC1C;;;;;;;;;;;;;OAaE,WAAW;;cAEJ,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAC5B,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CACnB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAgB,EAAE,CAAC,CAAC;YAChD,GAAG,eAAe,CAAC,GAAG,CAAC;YACvB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAEA,MAAM,IAAI,GAAG,MAAO,EAAE,CAAC,OAAe,CAAC,KAAK,CAC1C;;;;;;;;;;;;;OAaE,WAAW;;cAEJ,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,EAC5B,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CACnB,CAAC;IAEF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAgB,EAAE,CAAC,CAAC;QAChD,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,UAAU,EAAE,CAAC;KACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ;IAC/B,IAAI,IAAc,CAAC;IACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,QAAwC,CAAC;IAC7C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,cAAc,CAA0B,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC;IAClD,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,IAAI,SAAS,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC7D,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACzC,CAAC;iBAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,SAAS,GAAG,eAAe,EAAE,CAAC;oBAChC,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7D,CAAC;qBAAM,IAAI,SAAS,GAAG,aAAa,EAAE,CAAC;oBACrC,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAEA,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI;QAClD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,IAAI;QACJ,QAAQ;QACR,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI;QAClD,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI;QAC5C,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI;KACtD,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ export interface LightweightIndex {
2
+ id: string;
3
+ memoryId: string;
4
+ contentHash: string;
5
+ contentPreview: string;
6
+ keyTerms: string[];
7
+ category: string;
8
+ importance: number;
9
+ createdAt: Date;
10
+ }
11
+ export interface MemoryPreview {
12
+ id: string;
13
+ type: string;
14
+ contentPreview: string;
15
+ keyTerms: string[];
16
+ category: string;
17
+ importance: number;
18
+ lastAccessedAt?: Date;
19
+ }
20
+ export interface FullMemoryLoad {
21
+ id: string;
22
+ content: string;
23
+ summary?: string;
24
+ tags: string[];
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ export interface TokenBudgetStatus {
28
+ budget: number;
29
+ used: number;
30
+ remaining: number;
31
+ loadedCount: number;
32
+ preloadCount: number;
33
+ }
34
+ export declare function createLightweightIndex(memoryId: string, content: string, category: string, importance: number): Promise<LightweightIndex>;
35
+ export declare function searchLightweightIndices(projectId: string, query: string, limit?: number): Promise<MemoryPreview[]>;
36
+ export declare function loadFullMemory(memoryId: string): Promise<FullMemoryLoad | null>;
37
+ export declare function estimateTokenCount(text: string): Promise<number>;
38
+ export declare function allocateTokenBudget(sessionId: string, budget: number): Promise<TokenBudgetStatus>;
39
+ export declare function preloadCandidateMemories(sessionId: string, projectId: string, budget: number, excludeLoadedIds: string[]): Promise<string[]>;
40
+ export declare function getPreloadCandidates(sessionId: string): Promise<MemoryPreview[]>;
41
+ export declare function updateIndexImportance(memoryId: string, importance: number): Promise<void>;
42
+ export declare function deleteLightweightIndex(memoryId: string): Promise<void>;
43
+ //# sourceMappingURL=progressive-disclosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive-disclosure.d.ts","sourceRoot":"","sources":["../../../core/memory/progressive-disclosure.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA+B3B;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC,CAgE1B;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAoBrF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtE;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAwCtF;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5E"}
@@ -0,0 +1,280 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { eq, desc, and, sql } from 'drizzle-orm';
3
+ import { getDb } from '../../db/index.js';
4
+ import { getSchema } from '../../db/schema.js';
5
+ import { createDatabaseClient } from '../../core/database.js';
6
+ const PREVIEW_TOKENS = 50;
7
+ const MAX_PRELOAD_CANDIDATES = 20;
8
+ const TOKEN_ESTIMATE_CHARS = 4;
9
+ export async function createLightweightIndex(memoryId, content, category, importance) {
10
+ const db = createDatabaseClient(await getDb());
11
+ const schema = await getSchema();
12
+ const contentHash = hashContent(content);
13
+ const contentPreview = extractPreview(content);
14
+ const keyTerms = extractKeyTerms(content);
15
+ const index = {
16
+ id: randomUUID(),
17
+ memoryId,
18
+ contentHash,
19
+ contentPreview,
20
+ keyTerms,
21
+ category,
22
+ importance,
23
+ createdAt: new Date(),
24
+ };
25
+ await db.insert(schema.lightweightMemoryIndices).values({
26
+ id: index.id,
27
+ memoryId: index.memoryId,
28
+ contentHash: index.contentHash,
29
+ contentPreview: index.contentPreview,
30
+ keyTerms: JSON.stringify(index.keyTerms),
31
+ category: index.category,
32
+ importanceScore: index.importance,
33
+ createdAt: index.createdAt,
34
+ });
35
+ return index;
36
+ }
37
+ export async function searchLightweightIndices(projectId, query, limit = 10) {
38
+ const db = createDatabaseClient(await getDb());
39
+ const schema = await getSchema();
40
+ const queryLower = query.toLowerCase();
41
+ const queryTerms = queryLower.split(/\s+/).filter((t) => t.length > 2);
42
+ const results = await db
43
+ .select({
44
+ id: schema.lightweightMemoryIndices.id,
45
+ memoryId: schema.lightweightMemoryIndices.memoryId,
46
+ contentPreview: schema.lightweightMemoryIndices.contentPreview,
47
+ keyTerms: schema.lightweightMemoryIndices.keyTerms,
48
+ category: schema.lightweightMemoryIndices.category,
49
+ importanceScore: schema.lightweightMemoryIndices.importanceScore,
50
+ lastAccessedAt: schema.memories.lastAccessedAt,
51
+ })
52
+ .from(schema.lightweightMemoryIndices)
53
+ .leftJoin(schema.memories, eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
54
+ .where(eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
55
+ .limit(limit * 2);
56
+ const scored = results.map((row) => {
57
+ let score = row.importanceScore ?? 50;
58
+ const keyTerms = typeof row.keyTerms === 'string'
59
+ ? JSON.parse(row.keyTerms)
60
+ : row.keyTerms ?? [];
61
+ const termsLower = keyTerms.map((t) => t.toLowerCase());
62
+ for (const term of queryTerms) {
63
+ if (row.contentPreview.toLowerCase().includes(term)) {
64
+ score += 10;
65
+ }
66
+ if (termsLower.some((t) => t.includes(term))) {
67
+ score += 15;
68
+ }
69
+ }
70
+ return {
71
+ id: row.id,
72
+ memoryId: row.memoryId,
73
+ contentPreview: row.contentPreview,
74
+ keyTerms,
75
+ category: row.category,
76
+ importance: row.importanceScore ?? 50,
77
+ lastAccessedAt: row.lastAccessedAt,
78
+ score,
79
+ };
80
+ });
81
+ scored.sort((a, b) => b.score - a.score);
82
+ return scored.slice(0, limit).map((item) => ({
83
+ id: item.memoryId,
84
+ type: 'preview',
85
+ contentPreview: item.contentPreview,
86
+ keyTerms: item.keyTerms,
87
+ category: item.category,
88
+ importance: item.importance,
89
+ lastAccessedAt: item.lastAccessedAt,
90
+ }));
91
+ }
92
+ export async function loadFullMemory(memoryId) {
93
+ const db = createDatabaseClient(await getDb());
94
+ const schema = await getSchema();
95
+ const rows = await db
96
+ .select()
97
+ .from(schema.memories)
98
+ .where(eq(schema.memories.id, memoryId))
99
+ .limit(1);
100
+ if (rows.length === 0)
101
+ return null;
102
+ const row = rows[0];
103
+ return {
104
+ id: row.id,
105
+ content: row.content,
106
+ summary: row.summary ?? undefined,
107
+ tags: Array.isArray(row.tags) ? row.tags : [],
108
+ metadata: row.metadata ?? undefined,
109
+ };
110
+ }
111
+ export async function estimateTokenCount(text) {
112
+ return Math.ceil(text.length / TOKEN_ESTIMATE_CHARS);
113
+ }
114
+ export async function allocateTokenBudget(sessionId, budget) {
115
+ const db = createDatabaseClient(await getDb());
116
+ const schema = await getSchema();
117
+ const [session] = await db
118
+ .select()
119
+ .from(schema.contextPagingSessions)
120
+ .where(eq(schema.contextPagingSessions.sessionId, sessionId))
121
+ .limit(1);
122
+ if (!session) {
123
+ return {
124
+ budget,
125
+ used: 0,
126
+ remaining: budget,
127
+ loadedCount: 0,
128
+ preloadCount: 0,
129
+ };
130
+ }
131
+ const tokensUsed = session.tokensUsed ?? 0;
132
+ const loadedCount = session.loadedMemoryIds?.length ?? 0;
133
+ const preloadCount = session.preloadCandidateIds?.length ?? 0;
134
+ return {
135
+ budget,
136
+ used: tokensUsed,
137
+ remaining: Math.max(0, budget - tokensUsed),
138
+ loadedCount,
139
+ preloadCount,
140
+ };
141
+ }
142
+ export async function preloadCandidateMemories(sessionId, projectId, budget, excludeLoadedIds) {
143
+ const status = await allocateTokenBudget(sessionId, budget);
144
+ const availableTokens = status.remaining;
145
+ if (availableTokens < PREVIEW_TOKENS * 2) {
146
+ return [];
147
+ }
148
+ const db = createDatabaseClient(await getDb());
149
+ const schema = await getSchema();
150
+ const rows = await db
151
+ .select({
152
+ id: schema.memories.id,
153
+ content: schema.memories.content,
154
+ importanceScore: schema.memories.importanceScore,
155
+ lastAccessedAt: schema.memories.lastAccessedAt,
156
+ })
157
+ .from(schema.memories)
158
+ .where(and(eq(schema.memories.projectId, projectId), eq(schema.memories.isActive, true), excludeLoadedIds.length > 0
159
+ ? sql `${schema.memories.id} NOT IN (${excludeLoadedIds.map(id => `'${id.replace(/'/g, "''")}'`).join(',')})`
160
+ : sql `TRUE`))
161
+ .orderBy(desc(schema.memories.importanceScore), desc(schema.memories.lastAccessedAt))
162
+ .limit(MAX_PRELOAD_CANDIDATES);
163
+ const candidates = [];
164
+ let tokensForPreload = Math.min(availableTokens - PREVIEW_TOKENS, availableTokens * 0.3);
165
+ for (const row of rows) {
166
+ const tokens = await estimateTokenCount(row.content ?? '');
167
+ if (tokens <= tokensForPreload) {
168
+ candidates.push(row.id);
169
+ tokensForPreload -= tokens;
170
+ }
171
+ if (candidates.length >= 5)
172
+ break;
173
+ }
174
+ await db
175
+ .update(schema.contextPagingSessions)
176
+ .set({
177
+ preloadCandidateIds: candidates,
178
+ updatedAt: new Date(),
179
+ })
180
+ .where(eq(schema.contextPagingSessions.sessionId, sessionId));
181
+ return candidates;
182
+ }
183
+ export async function getPreloadCandidates(sessionId) {
184
+ const db = createDatabaseClient(await getDb());
185
+ const schema = await getSchema();
186
+ const [session] = await db
187
+ .select()
188
+ .from(schema.contextPagingSessions)
189
+ .where(eq(schema.contextPagingSessions.sessionId, sessionId))
190
+ .limit(1);
191
+ if (!session)
192
+ return [];
193
+ const candidateIds = session.preloadCandidateIds ?? [];
194
+ if (candidateIds.length === 0)
195
+ return [];
196
+ const previews = [];
197
+ for (const memoryId of candidateIds.slice(0, 5)) {
198
+ const [index] = await db
199
+ .select()
200
+ .from(schema.lightweightMemoryIndices)
201
+ .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId))
202
+ .limit(1);
203
+ if (index) {
204
+ const keyTerms = typeof index.keyTerms === 'string'
205
+ ? JSON.parse(index.keyTerms)
206
+ : index.keyTerms ?? [];
207
+ previews.push({
208
+ id: index.memoryId,
209
+ type: 'preload',
210
+ contentPreview: index.contentPreview,
211
+ keyTerms,
212
+ category: index.category,
213
+ importance: index.importanceScore ?? 50,
214
+ });
215
+ }
216
+ }
217
+ return previews;
218
+ }
219
+ export async function updateIndexImportance(memoryId, importance) {
220
+ const db = createDatabaseClient(await getDb());
221
+ const schema = await getSchema();
222
+ await db
223
+ .update(schema.lightweightMemoryIndices)
224
+ .set({
225
+ importanceScore: importance,
226
+ })
227
+ .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
228
+ }
229
+ export async function deleteLightweightIndex(memoryId) {
230
+ const db = createDatabaseClient(await getDb());
231
+ const schema = await getSchema();
232
+ await db
233
+ .delete(schema.lightweightMemoryIndices)
234
+ .where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
235
+ }
236
+ function hashContent(content) {
237
+ let hash = 0;
238
+ for (let i = 0; i < content.length; i++) {
239
+ const char = content.charCodeAt(i);
240
+ hash = ((hash << 5) - hash) + char;
241
+ hash = hash & hash;
242
+ }
243
+ return Math.abs(hash).toString(36);
244
+ }
245
+ function extractPreview(content) {
246
+ const firstPeriod = content.indexOf('.');
247
+ const firstNewline = content.indexOf('\n');
248
+ let endIndex = content.length;
249
+ if (firstPeriod > 0 && firstPeriod < 100) {
250
+ endIndex = firstPeriod + 1;
251
+ }
252
+ else if (firstNewline > 0 && firstNewline < 100) {
253
+ endIndex = firstNewline;
254
+ }
255
+ return content.substring(0, Math.min(endIndex, 150)).trim();
256
+ }
257
+ function extractKeyTerms(content) {
258
+ const words = content.toLowerCase()
259
+ .replace(/[^\w\s]/g, ' ')
260
+ .split(/\s+/)
261
+ .filter((w) => w.length > 3);
262
+ const stopWords = new Set([
263
+ 'this', 'that', 'with', 'from', 'have', 'been', 'were', 'they',
264
+ 'their', 'which', 'about', 'would', 'could', 'should', 'there',
265
+ 'what', 'when', 'where', 'who', 'will', 'just', 'like', 'into',
266
+ 'than', 'then', 'both', 'each', 'more', 'most', 'other', 'some',
267
+ 'such', 'only', 'over', 'very', 'also', 'back', 'after', 'being',
268
+ ]);
269
+ const termCounts = {};
270
+ for (const word of words) {
271
+ if (!stopWords.has(word) && !/^\d+$/.test(word)) {
272
+ termCounts[word] = (termCounts[word] ?? 0) + 1;
273
+ }
274
+ }
275
+ return Object.entries(termCounts)
276
+ .sort((a, b) => b[1] - a[1])
277
+ .slice(0, 5)
278
+ .map(([term]) => term);
279
+ }
280
+ //# sourceMappingURL=progressive-disclosure.js.map