claude-memory-layer 1.0.18 → 1.0.20

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 (42) hide show
  1. package/config/kpi-thresholds.json +7 -0
  2. package/dist/cli/index.js +532 -79
  3. package/dist/cli/index.js.map +3 -3
  4. package/dist/core/index.js +49 -4
  5. package/dist/core/index.js.map +2 -2
  6. package/dist/hooks/post-tool-use.js +140 -3
  7. package/dist/hooks/post-tool-use.js.map +2 -2
  8. package/dist/hooks/session-end.js +140 -3
  9. package/dist/hooks/session-end.js.map +2 -2
  10. package/dist/hooks/session-start.js +140 -3
  11. package/dist/hooks/session-start.js.map +2 -2
  12. package/dist/hooks/stop.js +140 -3
  13. package/dist/hooks/stop.js.map +2 -2
  14. package/dist/hooks/user-prompt-submit.js +379 -34
  15. package/dist/hooks/user-prompt-submit.js.map +3 -3
  16. package/dist/server/api/index.js +467 -34
  17. package/dist/server/api/index.js.map +3 -3
  18. package/dist/server/index.js +474 -41
  19. package/dist/server/index.js.map +3 -3
  20. package/dist/services/memory-service.js +140 -3
  21. package/dist/services/memory-service.js.map +2 -2
  22. package/dist/ui/app.js +362 -4
  23. package/dist/ui/index.html +90 -0
  24. package/dist/ui/style.css +41 -0
  25. package/memory/_index.md +3 -0
  26. package/memory/agent_response/uncategorized/2026-03-03.md +14 -0
  27. package/memory/session_summary/uncategorized/2026-03-03.md +5 -0
  28. package/memory/tool_observation/uncategorized/2026-03-03.md +21 -0
  29. package/package.json +3 -2
  30. package/scripts/delete-unknown-projects.js +154 -0
  31. package/src/cli/index.ts +23 -1
  32. package/src/core/embedder.ts +3 -2
  33. package/src/core/sqlite-event-store.ts +32 -0
  34. package/src/core/types.ts +2 -2
  35. package/src/core/vector-store.ts +20 -0
  36. package/src/hooks/user-prompt-submit.ts +225 -29
  37. package/src/server/api/events.ts +7 -0
  38. package/src/server/api/stats.ts +346 -0
  39. package/src/services/memory-service.ts +119 -2
  40. package/src/ui/app.js +362 -4
  41. package/src/ui/index.html +90 -0
  42. package/src/ui/style.css +41 -0
@@ -91,8 +91,8 @@ var ConfigSchema = z.object({
91
91
  }).default({}),
92
92
  embedding: z.object({
93
93
  provider: z.enum(["local", "openai"]).default("local"),
94
- model: z.string().default("Xenova/all-MiniLM-L6-v2"),
95
- openaiModel: z.string().default("text-embedding-3-small"),
94
+ model: z.string().default("jinaai/jina-embeddings-v5-text-nano"),
95
+ openaiModel: z.string().default("jinaai/jina-embeddings-v5-text-nano"),
96
96
  batchSize: z.number().default(32)
97
97
  }).default({}),
98
98
  retrieval: z.object({
@@ -2183,6 +2183,33 @@ var SQLiteEventStore = class {
2183
2183
  ids
2184
2184
  );
2185
2185
  }
2186
+ /**
2187
+ * Clear embedding outbox (used for embedding model migration)
2188
+ */
2189
+ async clearEmbeddingOutbox() {
2190
+ await this.initialize();
2191
+ sqliteRun(this.db, `DELETE FROM embedding_outbox`);
2192
+ }
2193
+ /**
2194
+ * Count total events
2195
+ */
2196
+ async countEvents() {
2197
+ await this.initialize();
2198
+ const row = sqliteGet(this.db, `SELECT COUNT(*) as count FROM events`);
2199
+ return row?.count || 0;
2200
+ }
2201
+ /**
2202
+ * Get events page in timestamp ascending order (stable migration/reindex scans)
2203
+ */
2204
+ async getEventsPage(limit = 1e3, offset = 0) {
2205
+ await this.initialize();
2206
+ const rows = sqliteAll(
2207
+ this.db,
2208
+ `SELECT * FROM events ORDER BY timestamp ASC LIMIT ? OFFSET ?`,
2209
+ [limit, offset]
2210
+ );
2211
+ return rows.map(this.rowToEvent);
2212
+ }
2186
2213
  /**
2187
2214
  * Mark outbox items as failed
2188
2215
  */
@@ -3940,6 +3967,23 @@ var VectorStore = class {
3940
3967
  const result = await this.table.countRows();
3941
3968
  return result;
3942
3969
  }
3970
+ /**
3971
+ * Clear all vectors (used for embedding model migration)
3972
+ */
3973
+ async clearAll() {
3974
+ await this.initialize();
3975
+ if (!this.db)
3976
+ return;
3977
+ try {
3978
+ if (typeof this.db.dropTable === "function") {
3979
+ await this.db.dropTable(this.tableName);
3980
+ } else if (typeof this.db.drop_table === "function") {
3981
+ await this.db.drop_table(this.tableName);
3982
+ }
3983
+ } catch {
3984
+ }
3985
+ this.table = null;
3986
+ }
3943
3987
  /**
3944
3988
  * Check if vector exists for event
3945
3989
  */
@@ -3957,7 +4001,7 @@ var Embedder = class {
3957
4001
  pipeline = null;
3958
4002
  modelName;
3959
4003
  initialized = false;
3960
- constructor(modelName = "Xenova/all-MiniLM-L6-v2") {
4004
+ constructor(modelName = "jinaai/jina-embeddings-v5-text-nano") {
3961
4005
  this.modelName = modelName;
3962
4006
  }
3963
4007
  /**
@@ -4037,8 +4081,9 @@ var Embedder = class {
4037
4081
  };
4038
4082
  var defaultEmbedder = null;
4039
4083
  function getDefaultEmbedder() {
4084
+ const envModel = process.env.CLAUDE_MEMORY_EMBEDDING_MODEL;
4040
4085
  if (!defaultEmbedder) {
4041
- defaultEmbedder = new Embedder();
4086
+ defaultEmbedder = new Embedder(envModel || void 0);
4042
4087
  }
4043
4088
  return defaultEmbedder;
4044
4089
  }