super-memory-pro 0.3.1 → 2.0.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 (52) hide show
  1. package/README.md +56 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/hooks/event-handler.d.ts.map +1 -1
  6. package/dist/hooks/event-handler.js +9 -0
  7. package/dist/hooks/event-handler.js.map +1 -1
  8. package/dist/hooks/message-handler.d.ts.map +1 -1
  9. package/dist/hooks/message-handler.js +3 -0
  10. package/dist/hooks/message-handler.js.map +1 -1
  11. package/dist/hooks/system-transform.d.ts +5 -12
  12. package/dist/hooks/system-transform.d.ts.map +1 -1
  13. package/dist/hooks/system-transform.js +43 -24
  14. package/dist/hooks/system-transform.js.map +1 -1
  15. package/dist/memory/embeddings.d.ts +22 -0
  16. package/dist/memory/embeddings.d.ts.map +1 -0
  17. package/dist/memory/embeddings.js +139 -0
  18. package/dist/memory/embeddings.js.map +1 -0
  19. package/dist/memory/extractor.d.ts.map +1 -1
  20. package/dist/memory/extractor.js +5 -1
  21. package/dist/memory/extractor.js.map +1 -1
  22. package/dist/memory/index.d.ts +13 -1
  23. package/dist/memory/index.d.ts.map +1 -1
  24. package/dist/memory/index.js +7 -1
  25. package/dist/memory/index.js.map +1 -1
  26. package/dist/memory/llm-extractor.d.ts +22 -0
  27. package/dist/memory/llm-extractor.d.ts.map +1 -0
  28. package/dist/memory/llm-extractor.js +117 -0
  29. package/dist/memory/llm-extractor.js.map +1 -0
  30. package/dist/memory/pattern-detector.d.ts +28 -0
  31. package/dist/memory/pattern-detector.d.ts.map +1 -0
  32. package/dist/memory/pattern-detector.js +221 -0
  33. package/dist/memory/pattern-detector.js.map +1 -0
  34. package/dist/memory/processor.d.ts +7 -1
  35. package/dist/memory/processor.d.ts.map +1 -1
  36. package/dist/memory/processor.js +112 -15
  37. package/dist/memory/processor.js.map +1 -1
  38. package/dist/memory/project-context.d.ts +24 -0
  39. package/dist/memory/project-context.d.ts.map +1 -0
  40. package/dist/memory/project-context.js +186 -0
  41. package/dist/memory/project-context.js.map +1 -0
  42. package/dist/memory/suggestions.d.ts +21 -0
  43. package/dist/memory/suggestions.d.ts.map +1 -0
  44. package/dist/memory/suggestions.js +205 -0
  45. package/dist/memory/suggestions.js.map +1 -0
  46. package/dist/memory/user-profile.d.ts +24 -0
  47. package/dist/memory/user-profile.d.ts.map +1 -0
  48. package/dist/memory/user-profile.js +220 -0
  49. package/dist/memory/user-profile.js.map +1 -0
  50. package/dist/types.d.ts +8 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +5 -5
package/README.md CHANGED
@@ -45,6 +45,17 @@
45
45
  - **🔄 Cross-Platform** — Works on Linux, macOS, Windows, and Termux (Android)
46
46
  - **📦 Auto-Installer** — Smart setup that detects and configures PostgreSQL automatically
47
47
 
48
+ ### 🆕 v2.0 Features
49
+
50
+ - **🤖 AI-Powered Extraction** — Uses LLM for semantic understanding of conversations
51
+ - **🎯 Context-Aware Recall** — Injects memories relevant to current session context
52
+ - **📊 Pattern Detection** — Identifies recurring workflows and habits across sessions
53
+ - **💡 Smart Suggestions** — Provides contextual workflow recommendations
54
+ - **📈 User Profile** — Builds evolving profile with preferences and experience level
55
+ - **🏗️ Project Context** — Automatic detection of architecture and conventions
56
+ - **🔄 Session Summarization** — Auto-generates session summaries with LLM
57
+ - **🧮 Embeddings Support** — Semantic search via vector similarity (optional)
58
+
48
59
  ---
49
60
 
50
61
  ## 🏗️ Architecture
@@ -184,6 +195,12 @@ Super-Memory/
184
195
  │ ├── memory/
185
196
  │ │ ├── index.ts # Module barrel
186
197
  │ │ ├── extractor.ts # Pattern extraction (regex/heuristic)
198
+ │ │ ├── llm-extractor.ts # 🆕 AI-powered extraction via LLM
199
+ │ │ ├── embeddings.ts # 🆕 Semantic search with embeddings
200
+ │ │ ├── pattern-detector.ts # 🆕 Cross-session pattern detection
201
+ │ │ ├── user-profile.ts # 🆕 Evolving user profile
202
+ │ │ ├── project-context.ts # 🆕 Automatic project context
203
+ │ │ ├── suggestions.ts # 🆕 Workflow suggestions
187
204
  │ │ ├── store.ts # Memory storage with dedup
188
205
  │ │ ├── search.ts # Memory search and formatting
189
206
  │ │ └── processor.ts # Core orchestrator
@@ -197,12 +214,17 @@ Super-Memory/
197
214
  │ │ ├── health.ts # Health check endpoint
198
215
  │ │ └── memory.ts # Memory CRUD REST API
199
216
  │ ├── hooks/
200
- │ │ └── ... # OpenCode hook handlers (WIP)
217
+ │ │ ├── index.ts # Hook barrel exports
218
+ │ │ ├── message-handler.ts # Chat message processing
219
+ │ │ ├── event-handler.ts # Session lifecycle tracking
220
+ │ │ ├── tool-handler.ts # Tool output capture
221
+ │ │ ├── system-transform.ts # Context-aware memory injection
222
+ │ │ └── session-compactor.ts # Session compaction hints
201
223
  │ ├── tools/
202
224
  │ │ └── definitions.ts # Custom tool schemas
203
225
  │ └── installer/
204
226
  │ └── index.ts # Cross-platform installer
205
- └── tests/ # Test suite (WIP)
227
+ └── tests/ # Test suite
206
228
  ```
207
229
 
208
230
  ---
@@ -222,6 +244,38 @@ The installer **never hardcodes `sudo`** — it detects whether it's available a
222
244
 
223
245
  ---
224
246
 
247
+ ## ⚙️ Configuration
248
+
249
+ ### Environment Variables
250
+
251
+ | Variable | Default | Description |
252
+ |----------|---------|-------------|
253
+ | `UM_DB_HOST` | `localhost` | PostgreSQL host |
254
+ | `UM_DB_PORT` | `5432` | PostgreSQL port |
255
+ | `UM_DB_NAME` | `ultra_memory` | Database name |
256
+ | `UM_DB_USER` | System user | Database user |
257
+ | `UM_DB_PASSWORD` | Empty | Database password |
258
+ | `UM_MAX_INJECTIONS` | `5` | Max memories to inject |
259
+ | `UM_MIN_IMPORTANCE` | `2` | Min importance level |
260
+ | `UM_LLM_ENABLED` | `true` | Enable AI extraction |
261
+ | `UM_LLM_MODEL` | `gpt-4o-mini` | LLM model to use |
262
+ | `UM_LLM_API_KEY` | Empty | API key for LLM |
263
+ | `UM_LLM_BASE_URL` | `https://api.openai.com/v1` | LLM API base URL |
264
+ | `UM_LLM_SUMMARIZE` | `true` | Enable session summarization |
265
+
266
+ ### OpenCode Configuration
267
+
268
+ Add to your `~/.config/opencode/opencode.json`:
269
+
270
+ ```json
271
+ {
272
+ "plugin": ["super-memory"],
273
+ "lsp": true
274
+ }
275
+ ```
276
+
277
+ ---
278
+
225
279
  ## 📄 License
226
280
 
227
281
  This project is licensed under the **MIT License**.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAoBzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CA2BzC"}
package/dist/config.js CHANGED
@@ -21,6 +21,13 @@ export function loadConfig() {
21
21
  minImportance: parseInt(process.env.UM_MIN_IMPORTANCE || '2', 10),
22
22
  autoExtract: process.env.UM_AUTO_EXTRACT !== 'false',
23
23
  },
24
+ llm: {
25
+ enabled: process.env.UM_LLM_ENABLED !== 'false',
26
+ model: process.env.UM_LLM_MODEL || 'gpt-4o-mini',
27
+ apiKey: process.env.UM_LLM_API_KEY || '',
28
+ baseUrl: process.env.UM_LLM_BASE_URL || 'https://api.openai.com/v1',
29
+ summarizeSessions: process.env.UM_LLM_SUMMARIZE !== 'false',
30
+ },
24
31
  };
25
32
  }
26
33
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;YAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC;YACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;YAClD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,IAAI,UAAU;YACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YAC1C,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,EAAE,EAAE,CAAC;SACjE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,kBAAkB;YACzE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW;SAChD;QACD,MAAM,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;SACrD;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;YAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC;YACpD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;YAClD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,IAAI,UAAU;YACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YAC1C,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,EAAE,EAAE,CAAC;SACjE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,kBAAkB;YACzE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW;SAChD;QACD,MAAM,EAAE;YACN,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC;YACjE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;SACrD;QACD,GAAG,EAAE;YACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,OAAO;YAC/C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,aAAa;YAChD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YACxC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,2BAA2B;YACnE,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,OAAO;SAC5D;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/hooks/event-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CAsDnD"}
1
+ {"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/hooks/event-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CA6DnD"}
@@ -3,6 +3,7 @@
3
3
  // updates the memory system accordingly. Fire-and-forget to never block.
4
4
  // ──────────────────────────────────────────────────────────────────────────────
5
5
  import { processMessage } from '../memory/processor.js';
6
+ import { createSession } from '../db/queries.js';
6
7
  /**
7
8
  * Create a handler for the `event` hook.
8
9
  *
@@ -37,6 +38,14 @@ export function createEventHandler() {
37
38
  case 'session.created': {
38
39
  const sessionInfo = event.properties.info;
39
40
  console.log(`[UltraMemory] Session created: ${sessionInfo.id} (${sessionInfo.title})`);
41
+ // Track session in database
42
+ try {
43
+ await createSession(sessionInfo.id);
44
+ console.log(`[UltraMemory] Session ${sessionInfo.id} saved to database`);
45
+ }
46
+ catch (err) {
47
+ console.error(`[UltraMemory] Failed to save session ${sessionInfo.id}:`, err);
48
+ }
40
49
  break;
41
50
  }
42
51
  case 'session.updated': {
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../src/hooks/event-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uEAAuE;AACvE,yEAAyE;AACzE,iFAAiF;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,wDAAwD;QACxD,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAEpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;wBAClC,+DAA+D;wBAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;4BAAE,OAAO;wBAEtC,gDAAgD;wBAChD,MAAM,WAAW,GAAG,+BAA+B,IAAI,CAAC,OAAO,GAAG,CAAC;wBAEnE,MAAM,cAAc,CAAC,WAAW,EAAE;4BAChC,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,MAAM,EAAE,OAAO;yBAChB,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC1C,OAAO,CAAC,GAAG,CACT,kCAAkC,WAAW,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,GAAG,CAC1E,CAAC;wBACF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;wBAChE,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;wBACvC,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;wBAC7D,MAAM;oBACR,CAAC;oBAED;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEF,6CAA6C;QAC7C,KAAK,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF;;GAEG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,eAAe,CAAC,KAAY;IACnC,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"event-handler.js","sourceRoot":"","sources":["../../src/hooks/event-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uEAAuE;AACvE,yEAAyE;AACzE,iFAAiF;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,wDAAwD;QACxD,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAEpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;wBAClC,+DAA+D;wBAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;4BAAE,OAAO;wBAEtC,gDAAgD;wBAChD,MAAM,WAAW,GAAG,+BAA+B,IAAI,CAAC,OAAO,GAAG,CAAC;wBAEnE,MAAM,cAAc,CAAC,WAAW,EAAE;4BAChC,SAAS,EAAE,IAAI,CAAC,SAAS;4BACzB,MAAM,EAAE,OAAO;yBAChB,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC1C,OAAO,CAAC,GAAG,CACT,kCAAkC,WAAW,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,GAAG,CAC1E,CAAC;wBACF,4BAA4B;wBAC5B,IAAI,CAAC;4BACH,MAAM,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;4BACpC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,CAAC,EAAE,oBAAoB,CAAC,CAAC;wBAC3E,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAChF,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;wBAChE,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;wBACvC,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;wBAC7D,MAAM;oBACR,CAAC;oBAED;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEF,6CAA6C;QAC7C,KAAK,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF;;GAEG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,eAAe,CAAC,KAAY;IACnC,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/hooks/message-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAWjD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC,cAAc,CAAC,CA0B5D"}
1
+ {"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/hooks/message-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAWjD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC,cAAc,CAAC,CA8B5D"}
@@ -26,15 +26,18 @@ export function createMessageHandler() {
26
26
  try {
27
27
  const { sessionID } = input;
28
28
  const { parts } = output;
29
+ console.log(`[UltraMemory] Hook chat.message triggered for session ${sessionID}`);
29
30
  // Filter for text-type parts and extract their content
30
31
  const textParts = parts.filter(isTextPart);
31
32
  const content = textParts.map((p) => p.text).join('\n').trim();
32
33
  if (!content)
33
34
  return;
35
+ console.log(`[UltraMemory] Processing message (${content.length} chars) from session ${sessionID}`);
34
36
  await processMessage(content, {
35
37
  sessionId: sessionID,
36
38
  source: 'chat',
37
39
  });
40
+ console.log(`[UltraMemory] Message processed for session ${sessionID}`);
38
41
  }
39
42
  catch (err) {
40
43
  console.error('[UltraMemory] message-handler error:', err);
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/hooks/message-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,iFAAiF;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;GAEG;AACH,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7B,wDAAwD;QACxD,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;gBAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;gBAEzB,uDAAuD;gBACvD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE/D,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,MAAM,cAAc,CAAC,OAAO,EAAE;oBAC5B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;QAEF,6CAA6C;QAC7C,KAAK,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/hooks/message-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,iFAAiF;AAIjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;GAEG;AACH,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7B,wDAAwD;QACxD,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;gBAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;gBAEzB,OAAO,CAAC,GAAG,CAAC,yDAAyD,SAAS,EAAE,CAAC,CAAC;gBAElF,uDAAuD;gBACvD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE/D,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,MAAM,wBAAwB,SAAS,EAAE,CAAC,CAAC;gBACpG,MAAM,cAAc,CAAC,OAAO,EAAE;oBAC5B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,+CAA+C,SAAS,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;QAEF,6CAA6C;QAC7C,KAAK,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
@@ -7,18 +7,11 @@ import type { PluginConfig } from '../types.js';
7
7
  * AI has cross-session context about the user, project, and preferences.
8
8
  *
9
9
  * **Strategy:**
10
- * - The hook input does **not** include the current user message, so we
11
- * use a broad search query (`DEFAULT_SEARCH_QUERY`) to fetch high-
12
- * importance memories across all types.
13
- * - The `model` parameter is ignored memories are injected regardless
14
- * of which LLM is being used.
15
- * - Respects `config.memory.maxInjections` and `config.memory.minImportance`
16
- * to control how many memories are injected and their quality floor.
17
- * - If a Super Memory section already exists in the system prompt array
18
- * (e.g. from a previous invocation), it is replaced **in-place** rather
19
- * than duplicated.
20
- * - All errors are caught and logged — the hook **never throws**, so it
21
- * cannot crash OpenCode.
10
+ * - Uses sessionID to fetch session-specific memories for context-aware recall.
11
+ * - Falls back to broad search if session context is insufficient.
12
+ * - Respects `config.memory.maxInjections` and `config.memory.minImportance`.
13
+ * - If a Super Memory section already exists, it is replaced in-place.
14
+ * - All errors are caught and logged — the hook **never throws**.
22
15
  *
23
16
  * @param config - Resolved plugin configuration
24
17
  * @returns - The system transform hook function
@@ -1 +1 @@
1
- {"version":3,"file":"system-transform.d.ts","sourceRoot":"","sources":["../../src/hooks/system-transform.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,GACnB,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAwC1D"}
1
+ {"version":3,"file":"system-transform.d.ts","sourceRoot":"","sources":["../../src/hooks/system-transform.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,GACnB,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAyE1D"}
@@ -6,13 +6,13 @@
6
6
  // retrieves the most relevant stored memories and appends them as context
7
7
  // to every LLM request.
8
8
  import { getContextForQuery } from '../memory/processor.js';
9
+ import { searchMemories } from '../db/queries.js';
9
10
  // ─── Constants ────────────────────────────────────────────────────────────
10
11
  const MEMORY_HEADER = '[Super Memory - Relevant Context]';
11
12
  const MEMORY_FOOTER = '[End Super Memory]';
12
13
  /**
13
14
  * Broad search query used to fetch general high-importance memories.
14
- * Uses broad, inclusive terms to match across all memory types without
15
- * requiring the current user message (which is not available in this hook).
15
+ * Used as fallback when session-specific context is not available.
16
16
  */
17
17
  const DEFAULT_SEARCH_QUERY = 'project context preferences decisions tech stack patterns workflow conventions';
18
18
  // ─── Hook Factory ─────────────────────────────────────────────────────────
@@ -23,42 +23,61 @@ const DEFAULT_SEARCH_QUERY = 'project context preferences decisions tech stack p
23
23
  * AI has cross-session context about the user, project, and preferences.
24
24
  *
25
25
  * **Strategy:**
26
- * - The hook input does **not** include the current user message, so we
27
- * use a broad search query (`DEFAULT_SEARCH_QUERY`) to fetch high-
28
- * importance memories across all types.
29
- * - The `model` parameter is ignored memories are injected regardless
30
- * of which LLM is being used.
31
- * - Respects `config.memory.maxInjections` and `config.memory.minImportance`
32
- * to control how many memories are injected and their quality floor.
33
- * - If a Super Memory section already exists in the system prompt array
34
- * (e.g. from a previous invocation), it is replaced **in-place** rather
35
- * than duplicated.
36
- * - All errors are caught and logged — the hook **never throws**, so it
37
- * cannot crash OpenCode.
26
+ * - Uses sessionID to fetch session-specific memories for context-aware recall.
27
+ * - Falls back to broad search if session context is insufficient.
28
+ * - Respects `config.memory.maxInjections` and `config.memory.minImportance`.
29
+ * - If a Super Memory section already exists, it is replaced in-place.
30
+ * - All errors are caught and logged — the hook **never throws**.
38
31
  *
39
32
  * @param config - Resolved plugin configuration
40
33
  * @returns - The system transform hook function
41
34
  */
42
35
  export function createSystemTransform(config) {
43
- return async (_input, output) => {
36
+ return async (input, output) => {
44
37
  try {
45
- // Fetch relevant memories using a broad query. This ensures the AI
46
- // always receives context about the project, user preferences, tech
47
- // stack, decisions, and workflows regardless of the current message.
48
- const context = await getContextForQuery(DEFAULT_SEARCH_QUERY, {
49
- maxInjections: config.memory.maxInjections,
50
- minImportance: config.memory.minImportance,
51
- });
38
+ console.log('[UltraMemory] Hook experimental.chat.system.transform triggered');
39
+ const sessionID = input.sessionID;
40
+ let context = '';
41
+ // Step 1: Try to get session-specific context using sessionID
42
+ if (sessionID) {
43
+ try {
44
+ // Search for memories from this specific session
45
+ const sessionMemories = await searchMemories({
46
+ query: '',
47
+ project_id: undefined,
48
+ limit: config.memory.maxInjections,
49
+ });
50
+ // Filter to only memories from this session
51
+ const sessionSpecific = sessionMemories.filter((m) => m.memory.session_id === sessionID && m.memory.importance >= config.memory.minImportance);
52
+ if (sessionSpecific.length > 0) {
53
+ const { formatMemoriesForPrompt } = await import('../memory/search.js');
54
+ context = formatMemoriesForPrompt(sessionSpecific);
55
+ console.log(`[UltraMemory] Found ${sessionSpecific.length} session-specific memories`);
56
+ }
57
+ }
58
+ catch (err) {
59
+ console.error('[UltraMemory] Failed to fetch session memories:', err);
60
+ }
61
+ }
62
+ // Step 2: If no session-specific context, use broad search
63
+ if (!context || context.trim().length === 0) {
64
+ console.log('[UltraMemory] Using broad search for memories');
65
+ context = await getContextForQuery(DEFAULT_SEARCH_QUERY, {
66
+ maxInjections: config.memory.maxInjections,
67
+ minImportance: config.memory.minImportance,
68
+ });
69
+ }
52
70
  // No relevant memories found — leave the system prompt unchanged.
53
71
  if (!context || context.trim().length === 0) {
72
+ console.log('[UltraMemory] No relevant memories found for injection');
54
73
  return;
55
74
  }
75
+ console.log(`[UltraMemory] Injecting memories (${context.length} chars) into system prompt`);
56
76
  // Build the memory section as a single, clean markdown block.
57
77
  const memorySection = `\n${MEMORY_HEADER}\n${context}\n${MEMORY_FOOTER}`;
58
78
  // Check if there is already a Super Memory section in the prompt
59
79
  // array. If so, replace it in-place to prevent duplication across
60
- // multiple hook invocations (defensive — should not happen in
61
- // normal OpenCode operation but guards against edge cases).
80
+ // multiple hook invocations.
62
81
  const existingIdx = output.system.findIndex((s) => s.includes(MEMORY_HEADER));
63
82
  if (existingIdx >= 0) {
64
83
  output.system[existingIdx] = memorySection;
@@ -1 +1 @@
1
- {"version":3,"file":"system-transform.js","sourceRoot":"","sources":["../../src/hooks/system-transform.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,wEAAwE;AACxE,gCAAgC;AAChC,EAAE;AACF,wEAAwE;AACxE,0EAA0E;AAC1E,wBAAwB;AAIxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,6EAA6E;AAE7E,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAC1D,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,oBAAoB,GACxB,gFAAgF,CAAC;AAEnF,6EAA6E;AAE7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAoB;IAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,mEAAmE;YACnE,oEAAoE;YACpE,qEAAqE;YACrE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,oBAAoB,EAAE;gBAC7D,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;gBAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;aAC3C,CAAC,CAAC;YAEH,kEAAkE;YAClE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,8DAA8D;YAC9D,MAAM,aAAa,GAAG,KAAK,aAAa,KAAK,OAAO,KAAK,aAAa,EAAE,CAAC;YAEzE,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,4DAA4D;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC1B,CAAC;YAEF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wDAAwD;YACxD,OAAO,CAAC,KAAK,CACX,2DAA2D,EAC3D,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"system-transform.js","sourceRoot":"","sources":["../../src/hooks/system-transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { PluginConfig, MemoryRecord, MemorySearchResult } from '../types.js';
2
+ export interface EmbeddingResult {
3
+ id: string;
4
+ content: string;
5
+ similarity: number;
6
+ memory: MemoryRecord;
7
+ }
8
+ /**
9
+ * Search memories using semantic similarity with embeddings.
10
+ * Falls back to full-text search if embeddings fail.
11
+ */
12
+ export declare function searchWithEmbeddings(query: string, config: PluginConfig, options?: {
13
+ limit?: number;
14
+ minSimilarity?: number;
15
+ projectId?: string;
16
+ }): Promise<MemorySearchResult[]>;
17
+ /**
18
+ * Store an embedding for a memory record.
19
+ * Returns the embedding vector for caching.
20
+ */
21
+ export declare function storeEmbedding(memoryId: string, content: string, config: PluginConfig): Promise<number[]>;
22
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKlF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB;AAiED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8D/B;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BnB"}
@@ -0,0 +1,139 @@
1
+ // ─── Embeddings Module ────────────────────────────────────────────────────
2
+ // Semantic search using embeddings for more relevant memory retrieval.
3
+ // Falls back to full-text search if embeddings are unavailable.
4
+ import { getPool } from '../db/connection.js';
5
+ // ─── Embedding Generation ────────────────────────────────────────────────
6
+ /**
7
+ * Generate an embedding vector for text using the configured LLM provider.
8
+ * Uses the OpenAI-compatible embeddings API.
9
+ */
10
+ async function generateEmbedding(text, config) {
11
+ if (!config.llm.apiKey) {
12
+ throw new Error('LLM API key not configured for embeddings');
13
+ }
14
+ const url = `${config.llm.baseUrl}/embeddings`;
15
+ const response = await fetch(url, {
16
+ method: 'POST',
17
+ headers: {
18
+ 'Content-Type': 'application/json',
19
+ Authorization: `Bearer ${config.llm.apiKey}`,
20
+ },
21
+ body: JSON.stringify({
22
+ model: 'text-embedding-3-small',
23
+ input: text.slice(0, 8000), // Limit input length
24
+ }),
25
+ });
26
+ if (!response.ok) {
27
+ throw new Error(`Embedding API error: ${response.status}`);
28
+ }
29
+ const data = (await response.json());
30
+ return data.data[0]?.embedding ?? [];
31
+ }
32
+ // ─── Similarity Calculation ──────────────────────────────────────────────
33
+ /**
34
+ * Calculate cosine similarity between two vectors.
35
+ */
36
+ function cosineSimilarity(a, b) {
37
+ if (a.length !== b.length || a.length === 0) {
38
+ return 0;
39
+ }
40
+ let dotProduct = 0;
41
+ let normA = 0;
42
+ let normB = 0;
43
+ for (let i = 0; i < a.length; i++) {
44
+ const ai = a[i] ?? 0;
45
+ const bi = b[i] ?? 0;
46
+ dotProduct += ai * bi;
47
+ normA += ai * ai;
48
+ normB += bi * bi;
49
+ }
50
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
51
+ }
52
+ // ─── Semantic Search ─────────────────────────────────────────────────────
53
+ /**
54
+ * Search memories using semantic similarity with embeddings.
55
+ * Falls back to full-text search if embeddings fail.
56
+ */
57
+ export async function searchWithEmbeddings(query, config, options = {}) {
58
+ const { limit = 10, minSimilarity = 0.5, projectId } = options;
59
+ try {
60
+ // Generate query embedding
61
+ const queryEmbedding = await generateEmbedding(query, config);
62
+ if (queryEmbedding.length === 0) {
63
+ throw new Error('Failed to generate query embedding');
64
+ }
65
+ // Fetch all memories (for small datasets)
66
+ // For production, consider using pgvector for efficient ANN search
67
+ const pool = getPool();
68
+ const result = await pool.query(`SELECT * FROM memories
69
+ WHERE ($1::text IS NULL OR project_id = $1)
70
+ ORDER BY importance DESC, created_at DESC
71
+ LIMIT 500`, [projectId ?? null]);
72
+ // Calculate similarity for each memory
73
+ const results = [];
74
+ for (const memory of result.rows) {
75
+ if (!memory.content)
76
+ continue;
77
+ try {
78
+ // Generate embedding for memory content
79
+ const memoryEmbedding = await generateEmbedding(memory.content, config);
80
+ if (memoryEmbedding.length > 0) {
81
+ const similarity = cosineSimilarity(queryEmbedding, memoryEmbedding);
82
+ if (similarity >= minSimilarity) {
83
+ results.push({
84
+ id: memory.id,
85
+ content: memory.content,
86
+ similarity,
87
+ memory,
88
+ });
89
+ }
90
+ }
91
+ }
92
+ catch (err) {
93
+ // Skip memories that fail embedding generation
94
+ continue;
95
+ }
96
+ }
97
+ // Sort by similarity and return top results
98
+ return results
99
+ .sort((a, b) => b.similarity - a.similarity)
100
+ .slice(0, limit)
101
+ .map((r) => ({
102
+ memory: r.memory,
103
+ relevance: r.similarity,
104
+ }));
105
+ }
106
+ catch (err) {
107
+ console.error('[UltraMemory] Embedding search failed:', err);
108
+ throw err;
109
+ }
110
+ }
111
+ // ─── Storage ─────────────────────────────────────────────────────────────
112
+ /**
113
+ * Store an embedding for a memory record.
114
+ * Returns the embedding vector for caching.
115
+ */
116
+ export async function storeEmbedding(memoryId, content, config) {
117
+ try {
118
+ const embedding = await generateEmbedding(content, config);
119
+ if (embedding.length > 0) {
120
+ const pool = getPool();
121
+ // Store embedding in metadata (assuming JSONB storage)
122
+ await pool.query(`UPDATE memories
123
+ SET metadata = jsonb_set(
124
+ COALESCE(metadata, '{}'::jsonb),
125
+ '{embedding}',
126
+ $2::jsonb
127
+ )
128
+ WHERE id = $1`, [memoryId, JSON.stringify(embedding)]);
129
+ console.log(`[UltraMemory] Stored embedding for memory ${memoryId}`);
130
+ return embedding;
131
+ }
132
+ return [];
133
+ }
134
+ catch (err) {
135
+ console.error(`[UltraMemory] Failed to store embedding for ${memoryId}:`, err);
136
+ return [];
137
+ }
138
+ }
139
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/memory/extractor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsJ9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCvD;AAwBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCtF;AAoBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AA2CD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCtD;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAwExD"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/memory/extractor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsJ9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCvD;AAwBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAmCtF;AAoBD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AA2CD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCtD;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAwExD"}
@@ -1,6 +1,10 @@
1
1
  // ─── Pattern Extraction Utilities ───────────────────────────────────────────
2
2
  // Heuristic/regex-based extractors for tech stack, decisions, preferences,
3
- // recurring patterns, and content classification. No AI/ML involved.
3
+ // recurring patterns, and content classification.
4
+ //
5
+ // NOTE: When LLM is enabled, the processor uses LLM extraction (llm-extractor.ts)
6
+ // for semantic analysis. These regex extractors serve as fallback/supplement
7
+ // to ensure coverage even when LLM is unavailable.
4
8
  // ─── Technology Detection ──────────────────────────────────────────────────
5
9
  /**
6
10
  * Canonical tech name → detection patterns.
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/memory/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/memory/extractor.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,kDAAkD;AAClD,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAC7E,mDAAmD;AAInD,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,YAAY,GAA2C;IAC3D,uBAAuB;IACvB,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE;IACtE,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;IACjE,EAAE,IAAI,EAAE,MAAM,EAAO,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAQ,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;IACjE,EAAE,IAAI,EAAE,MAAM,EAAO,QAAQ,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE;IAC/D,EAAE,IAAI,EAAE,QAAQ,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,qBAAqB,CAAC,EAAE;IAC3D,EAAE,IAAI,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAQ,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE;IAC7D,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE;IAEtD,YAAY;IACZ,EAAE,IAAI,EAAE,QAAQ,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,MAAM,EAAO,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAS,QAAQ,EAAE,CAAC,wGAAwG,CAAC,EAAE;IAC3I,EAAE,IAAI,EAAE,MAAM,EAAO,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAQ,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;IAC5C,EAAE,IAAI,EAAE,IAAI,EAAS,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;IAC3C,EAAE,IAAI,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,MAAM,EAAO,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,QAAQ,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,KAAK,EAAQ,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAE7C,YAAY;IACZ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE;IACtE,EAAE,IAAI,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE;IAC/D,EAAE,IAAI,EAAE,OAAO,EAAM,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAG,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAG,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IAElD,iBAAiB;IACjB,EAAE,IAAI,EAAE,QAAQ,EAAQ,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,YAAY,EAAI,QAAQ,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE;IACnE,EAAE,IAAI,EAAE,KAAK,EAAW,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAW,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAI,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE;IACvD,EAAE,IAAI,EAAE,QAAQ,EAAQ,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAO,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAO,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAK,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAO,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAQ,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAQ,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,uBAAuB,CAAC,EAAE;IAC/D,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAEnD,wBAAwB;IACxB,EAAE,IAAI,EAAE,QAAQ,EAAQ,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAO,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAO,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAK,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,MAAM,EAAU,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAEjD,kBAAkB;IAClB,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAE/C,WAAW;IACX,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC,EAAE;IACzE,EAAE,IAAI,EAAE,WAAW,EAAK,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,WAAW,EAAK,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAM,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAElD,UAAU;IACV,EAAE,IAAI,EAAE,MAAM,EAAS,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,QAAQ,EAAO,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAG,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAM,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAO,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAElD,mBAAmB;IACnB,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAM,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,WAAW,EAAG,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAM,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IAEjD,mBAAmB;IACnB,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAS,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAE9C,SAAS;IACT,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;IAE/C,6BAA6B;IAC7B,EAAE,IAAI,EAAE,OAAO,EAAO,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,UAAU,EAAI,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,MAAM,EAAQ,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAS,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;IAE7C,6BAA6B;IAC7B,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAK,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAM,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,oBAAoB,CAAC,EAAE;IAE3D,OAAO;IACP,EAAE,IAAI,EAAE,UAAU,EAAI,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAO,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,UAAU,EAAI,QAAQ,EAAE,CAAC,6BAA6B,CAAC,EAAE;IACjE,EAAE,IAAI,EAAE,WAAW,EAAG,QAAQ,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,IAAI,EAAU,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;CAC7C,CAAC;AAEF,+DAA+D;AAC/D,MAAM,qBAAqB,GAAG;IAC5B,UAAU;IACV,sEAAsE;IACtE,uEAAuE;IACvE,2EAA2E;IAC3E,6GAA6G;IAC7G,6DAA6D;IAC7D,oFAAoF;IACpF,mFAAmF;IACnF,UAAU;IACV,2EAA2E;IAC3E,0EAA0E;IAC1E,kEAAkE;IAClE,+FAA+F;CAChG,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,0BAA0B;IAC1B,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;QAC/C,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;QACzB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,iDAAiD;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC5F,sDAAsD;YACtD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACjD,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC5C,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC7B,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,YAAY;QAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAE9E,MAAM,iBAAiB,GAAa;IAClC,UAAU;IACV,qFAAqF;IACrF,uIAAuI;IACvI,2EAA2E;IAC3E,oDAAoD;IACpD,kGAAkG;IAClG,yEAAyE;IACzE,qDAAqD;IACrD,+EAA+E;IAE/E,UAAU;IACV,8FAA8F;IAC9F,0GAA0G;IAC1G,iFAAiF;IACjF,6FAA6F;IAC7F,sDAAsD;IACtD,8EAA8E;CAC/E,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,qDAAqD;YACrD,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,0BAA0B;gBAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,IAAI,CAAC;wBACX,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,uDAAuD;oBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAE9E,MAAM,mBAAmB,GAAa;IACpC,UAAU;IACV,mKAAmK;IACnK,iHAAiH;IACjH,kHAAkH;IAClH,yEAAyE;IACzE,kDAAkD;IAElD,UAAU;IACV,4EAA4E;IAC5E,wFAAwF;IACxF,iGAAiG;IACjG,8DAA8D;IAC9D,6DAA6D;CAC9D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAE9E,MAAM,gBAAgB,GAAa;IACjC,0BAA0B;IAC1B,6HAA6H;IAC7H,MAAM;IACN,oJAAoJ;IACpJ,SAAS;IACT,sGAAsG;IACtG,oEAAoE;IACpE,UAAU;IACV,oGAAoG;IACpG,UAAU;IACV,yEAAyE;IACzE,SAAS;IACT,oEAAoE;IACpE,MAAM;IACN,aAAa;IACb,QAAQ;IACR,mFAAmF;IACnF,KAAK;IACL,8DAA8D;IAC9D,MAAM;IACN,qEAAqE;IACrE,wBAAwB;IACxB,wEAAwE;IACxE,cAAc;CACf,CAAC;AAEF,MAAM,iBAAiB,GAAa;IAClC,gCAAgC;IAChC,+GAA+G;IAC/G,4GAA4G;IAC5G,+DAA+D;IAE/D,gCAAgC;IAChC,sGAAsG;IACtG,mHAAmH;IACnH,wEAAwE;CACzE,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,2BAA2B;IAC3B,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,sEAAsE;IACtE,MAAM,qBAAqB,GAAG;QAC5B,gGAAgG;QAChG,+CAA+C;QAC/C,mDAAmD;QACnD,+DAA+D;QAC/D,mCAAmC;QACnC,sDAAsD;KACvD,CAAC;IACF,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpD,2EAA2E;QAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC5D,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;YACxE,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,MAAM,kBAAkB,GAAG;QACzB,sFAAsF;QACtF,wDAAwD;QACxD,0EAA0E;QAC1E,4DAA4D;QAC5D,qCAAqC;KACtC,CAAC;IACF,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,wCAAwC;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,+DAA+D;IAC/D,MAAM,iBAAiB,GAAG;QACxB,qFAAqF;QACrF,gFAAgF;QAChF,8CAA8C;QAC9C,6DAA6D;KAC9D,CAAC;IACF,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6DAA6D;IAC7D,MAAM,iBAAiB,GAAG;QACxB,iHAAiH;QACjH,kFAAkF;QAClF,wEAAwE;QACxE,mEAAmE;KACpE,CAAC;IACF,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,+DAA+D;IAC/D,MAAM,kBAAkB,GAAG;QACzB,kFAAkF;QAClF,iBAAiB;QACjB,8DAA8D;KAC/D,CAAC;IACF,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,kCAAkC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAE9E,iEAAiE;AACjE,SAAS,YAAY,CAAC,IAAY,EAAE,QAAkB;IACpD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +1,19 @@
1
1
  export { extractTechStack, extractDecisions, extractUserPreferences, extractPatterns, classifyContent, } from './extractor.js';
2
+ export { extractWithLLM, summarizeWithLLM, } from './llm-extractor.js';
3
+ export type { ExtractedContext } from './llm-extractor.js';
2
4
  export { storeMemory, storeMemories, storeTechStack, } from './store.js';
3
5
  export { searchRelevantMemories, formatMemoriesForPrompt, } from './search.js';
4
6
  export type { SearchOptions } from './search.js';
5
- export { processMessage, getContextForQuery, } from './processor.js';
7
+ export { processMessage, getContextForQuery, summarizeSession, } from './processor.js';
6
8
  export type { ProcessMessageMetadata, ContextQueryOptions } from './processor.js';
9
+ export { searchWithEmbeddings, storeEmbedding, } from './embeddings.js';
10
+ export type { EmbeddingResult } from './embeddings.js';
11
+ export { detectPatterns, } from './pattern-detector.js';
12
+ export type { DetectedPattern, PatternAnalysis } from './pattern-detector.js';
13
+ export { buildUserProfile, getProfileInsights, } from './user-profile.js';
14
+ export type { UserProfile, ProfileInsight } from './user-profile.js';
15
+ export { buildProjectContext, getProjectInsights, } from './project-context.js';
16
+ export type { ProjectContext, ProjectInsight } from './project-context.js';
17
+ export { getSuggestions, getQuickSuggestions, } from './suggestions.js';
18
+ export type { Suggestion, SuggestionContext } from './suggestions.js';
7
19
  //# sourceMappingURL=index.d.ts.map