@hasna/mementos 0.14.30 → 0.14.32

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 (240) hide show
  1. package/LICENSE +190 -3
  2. package/README.md +34 -34
  3. package/dist/cli/brains.d.ts +3 -0
  4. package/dist/cli/brains.d.ts.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +25767 -0
  8. package/dist/db/acl.d.ts +34 -0
  9. package/dist/db/acl.d.ts.map +1 -0
  10. package/dist/db/agents.d.ts +15 -0
  11. package/dist/db/agents.d.ts.map +1 -0
  12. package/dist/db/audit.d.ts +39 -0
  13. package/dist/db/audit.d.ts.map +1 -0
  14. package/dist/db/database.d.ts +10 -0
  15. package/dist/db/database.d.ts.map +1 -0
  16. package/dist/db/entities.d.ts +62 -0
  17. package/dist/db/entities.d.ts.map +1 -0
  18. package/dist/db/entity-memories.d.ts +34 -0
  19. package/dist/db/entity-memories.d.ts.map +1 -0
  20. package/dist/db/locks.d.ts +63 -0
  21. package/dist/db/locks.d.ts.map +1 -0
  22. package/dist/db/machines.d.ts +16 -0
  23. package/dist/db/machines.d.ts.map +1 -0
  24. package/dist/db/memories.d.ts +40 -0
  25. package/dist/db/memories.d.ts.map +1 -0
  26. package/dist/db/pg-migrate.d.ts +14 -0
  27. package/dist/db/pg-migrate.d.ts.map +1 -0
  28. package/dist/db/pg-migrations.d.ts +8 -0
  29. package/dist/db/pg-migrations.d.ts.map +1 -0
  30. package/dist/db/projects.d.ts +6 -0
  31. package/dist/db/projects.d.ts.map +1 -0
  32. package/dist/db/ratings.d.ts +23 -0
  33. package/dist/db/ratings.d.ts.map +1 -0
  34. package/dist/db/relations.d.ts +29 -0
  35. package/dist/db/relations.d.ts.map +1 -0
  36. package/dist/db/session-jobs.d.ts +49 -0
  37. package/dist/db/session-jobs.d.ts.map +1 -0
  38. package/dist/db/synthesis.d.ts +101 -0
  39. package/dist/db/synthesis.d.ts.map +1 -0
  40. package/dist/db/tool-events.d.ts +27 -0
  41. package/dist/db/tool-events.d.ts.map +1 -0
  42. package/dist/db/webhook_hooks.d.ts +25 -0
  43. package/dist/db/webhook_hooks.d.ts.map +1 -0
  44. package/dist/index.d.ts +27 -4
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +14642 -1006
  47. package/dist/lib/activation-matcher.d.ts +16 -0
  48. package/dist/lib/activation-matcher.d.ts.map +1 -0
  49. package/dist/lib/asmr/categorizer.d.ts +31 -0
  50. package/dist/lib/asmr/categorizer.d.ts.map +1 -0
  51. package/dist/lib/asmr/context-agent.d.ts +4 -0
  52. package/dist/lib/asmr/context-agent.d.ts.map +1 -0
  53. package/dist/lib/asmr/ensemble.d.ts +23 -0
  54. package/dist/lib/asmr/ensemble.d.ts.map +1 -0
  55. package/dist/lib/asmr/fact-agent.d.ts +4 -0
  56. package/dist/lib/asmr/fact-agent.d.ts.map +1 -0
  57. package/dist/lib/asmr/index.d.ts +7 -0
  58. package/dist/lib/asmr/index.d.ts.map +1 -0
  59. package/dist/lib/asmr/orchestrator.d.ts +4 -0
  60. package/dist/lib/asmr/orchestrator.d.ts.map +1 -0
  61. package/dist/lib/asmr/temporal-agent.d.ts +4 -0
  62. package/dist/lib/asmr/temporal-agent.d.ts.map +1 -0
  63. package/dist/lib/asmr/types.d.ts +27 -0
  64. package/dist/lib/asmr/types.d.ts.map +1 -0
  65. package/dist/lib/auto-inject-orchestrator.d.ts +57 -0
  66. package/dist/lib/auto-inject-orchestrator.d.ts.map +1 -0
  67. package/dist/lib/auto-memory-queue.d.ts +46 -0
  68. package/dist/lib/auto-memory-queue.d.ts.map +1 -0
  69. package/dist/lib/auto-memory.d.ts +18 -0
  70. package/dist/lib/auto-memory.d.ts.map +1 -0
  71. package/dist/lib/bench.d.ts +20 -0
  72. package/dist/lib/bench.d.ts.map +1 -0
  73. package/dist/lib/built-in-hooks.d.ts +12 -0
  74. package/dist/lib/built-in-hooks.d.ts.map +1 -0
  75. package/dist/lib/channel-pusher.d.ts +39 -0
  76. package/dist/lib/channel-pusher.d.ts.map +1 -0
  77. package/dist/lib/config.d.ts +9 -0
  78. package/dist/lib/config.d.ts.map +1 -0
  79. package/dist/lib/connectors/files.d.ts +8 -0
  80. package/dist/lib/connectors/files.d.ts.map +1 -0
  81. package/dist/lib/connectors/github.d.ts +7 -0
  82. package/dist/lib/connectors/github.d.ts.map +1 -0
  83. package/dist/lib/connectors/index.d.ts +12 -0
  84. package/dist/lib/connectors/index.d.ts.map +1 -0
  85. package/dist/lib/connectors/notion.d.ts +7 -0
  86. package/dist/lib/connectors/notion.d.ts.map +1 -0
  87. package/dist/lib/connectors/types.d.ts +27 -0
  88. package/dist/lib/connectors/types.d.ts.map +1 -0
  89. package/dist/lib/context-extractor.d.ts +14 -0
  90. package/dist/lib/context-extractor.d.ts.map +1 -0
  91. package/dist/lib/context.d.ts +35 -0
  92. package/dist/lib/context.d.ts.map +1 -0
  93. package/dist/lib/contradiction.d.ts +50 -0
  94. package/dist/lib/contradiction.d.ts.map +1 -0
  95. package/dist/lib/decay.d.ts +35 -0
  96. package/dist/lib/decay.d.ts.map +1 -0
  97. package/dist/lib/dedup.d.ts +33 -0
  98. package/dist/lib/dedup.d.ts.map +1 -0
  99. package/dist/lib/duration.d.ts +28 -0
  100. package/dist/lib/duration.d.ts.map +1 -0
  101. package/dist/lib/embeddings.d.ts +20 -0
  102. package/dist/lib/embeddings.d.ts.map +1 -0
  103. package/dist/lib/export-v1.d.ts +30 -0
  104. package/dist/lib/export-v1.d.ts.map +1 -0
  105. package/dist/lib/extractor.d.ts +9 -0
  106. package/dist/lib/extractor.d.ts.map +1 -0
  107. package/dist/lib/extractors/audio.d.ts +8 -0
  108. package/dist/lib/extractors/audio.d.ts.map +1 -0
  109. package/dist/lib/extractors/index.d.ts +12 -0
  110. package/dist/lib/extractors/index.d.ts.map +1 -0
  111. package/dist/lib/extractors/ocr.d.ts +7 -0
  112. package/dist/lib/extractors/ocr.d.ts.map +1 -0
  113. package/dist/lib/extractors/pdf.d.ts +7 -0
  114. package/dist/lib/extractors/pdf.d.ts.map +1 -0
  115. package/dist/lib/extractors/types.d.ts +12 -0
  116. package/dist/lib/extractors/types.d.ts.map +1 -0
  117. package/dist/lib/file-deps.d.ts +27 -0
  118. package/dist/lib/file-deps.d.ts.map +1 -0
  119. package/dist/lib/focus.d.ts +58 -0
  120. package/dist/lib/focus.d.ts.map +1 -0
  121. package/dist/lib/gatherer.d.ts +16 -0
  122. package/dist/lib/gatherer.d.ts.map +1 -0
  123. package/dist/lib/gdpr.d.ts +24 -0
  124. package/dist/lib/gdpr.d.ts.map +1 -0
  125. package/dist/lib/hooks.d.ts +50 -0
  126. package/dist/lib/hooks.d.ts.map +1 -0
  127. package/dist/lib/importers/index.d.ts +38 -0
  128. package/dist/lib/importers/index.d.ts.map +1 -0
  129. package/dist/lib/injector.d.ts +86 -0
  130. package/dist/lib/injector.d.ts.map +1 -0
  131. package/dist/lib/matryoshka.d.ts +50 -0
  132. package/dist/lib/matryoshka.d.ts.map +1 -0
  133. package/dist/lib/memory-lock.d.ts +58 -0
  134. package/dist/lib/memory-lock.d.ts.map +1 -0
  135. package/dist/lib/model-config.d.ts +14 -0
  136. package/dist/lib/model-config.d.ts.map +1 -0
  137. package/dist/lib/open-sessions-connector.d.ts +60 -0
  138. package/dist/lib/open-sessions-connector.d.ts.map +1 -0
  139. package/dist/lib/poisoning.d.ts +19 -0
  140. package/dist/lib/poisoning.d.ts.map +1 -0
  141. package/dist/lib/poll.d.ts +17 -0
  142. package/dist/lib/poll.d.ts.map +1 -0
  143. package/dist/lib/procedural-extractor.d.ts +21 -0
  144. package/dist/lib/procedural-extractor.d.ts.map +1 -0
  145. package/dist/lib/profile-sync.d.ts +20 -0
  146. package/dist/lib/profile-sync.d.ts.map +1 -0
  147. package/dist/lib/profile-synthesizer.d.ts +20 -0
  148. package/dist/lib/profile-synthesizer.d.ts.map +1 -0
  149. package/dist/lib/project-detect.d.ts +18 -0
  150. package/dist/lib/project-detect.d.ts.map +1 -0
  151. package/dist/lib/providers/anthropic.d.ts +21 -0
  152. package/dist/lib/providers/anthropic.d.ts.map +1 -0
  153. package/dist/lib/providers/base.d.ts +96 -0
  154. package/dist/lib/providers/base.d.ts.map +1 -0
  155. package/dist/lib/providers/cerebras.d.ts +20 -0
  156. package/dist/lib/providers/cerebras.d.ts.map +1 -0
  157. package/dist/lib/providers/grok.d.ts +19 -0
  158. package/dist/lib/providers/grok.d.ts.map +1 -0
  159. package/dist/lib/providers/index.d.ts +7 -0
  160. package/dist/lib/providers/index.d.ts.map +1 -0
  161. package/dist/lib/providers/openai-compat.d.ts +18 -0
  162. package/dist/lib/providers/openai-compat.d.ts.map +1 -0
  163. package/dist/lib/providers/openai.d.ts +20 -0
  164. package/dist/lib/providers/openai.d.ts.map +1 -0
  165. package/dist/lib/providers/registry.d.ts +38 -0
  166. package/dist/lib/providers/registry.d.ts.map +1 -0
  167. package/dist/lib/quality.d.ts +16 -0
  168. package/dist/lib/quality.d.ts.map +1 -0
  169. package/dist/lib/redact.d.ts +10 -0
  170. package/dist/lib/redact.d.ts.map +1 -0
  171. package/dist/lib/remote-sync.d.ts +49 -0
  172. package/dist/lib/remote-sync.d.ts.map +1 -0
  173. package/dist/lib/retention.d.ts +17 -0
  174. package/dist/lib/retention.d.ts.map +1 -0
  175. package/dist/lib/search.d.ts +52 -0
  176. package/dist/lib/search.d.ts.map +1 -0
  177. package/dist/lib/session-auto-resolve.d.ts +28 -0
  178. package/dist/lib/session-auto-resolve.d.ts.map +1 -0
  179. package/dist/lib/session-processor.d.ts +38 -0
  180. package/dist/lib/session-processor.d.ts.map +1 -0
  181. package/dist/lib/session-queue.d.ts +28 -0
  182. package/dist/lib/session-queue.d.ts.map +1 -0
  183. package/dist/lib/session-registry.d.ts +47 -0
  184. package/dist/lib/session-registry.d.ts.map +1 -0
  185. package/dist/lib/session-start-briefing.d.ts +10 -0
  186. package/dist/lib/session-start-briefing.d.ts.map +1 -0
  187. package/dist/lib/session-watcher.d.ts +30 -0
  188. package/dist/lib/session-watcher.d.ts.map +1 -0
  189. package/dist/lib/sync.d.ts +10 -0
  190. package/dist/lib/sync.d.ts.map +1 -0
  191. package/dist/lib/synthesis/corpus-builder.d.ts +30 -0
  192. package/dist/lib/synthesis/corpus-builder.d.ts.map +1 -0
  193. package/dist/lib/synthesis/executor.d.ts +14 -0
  194. package/dist/lib/synthesis/executor.d.ts.map +1 -0
  195. package/dist/lib/synthesis/index.d.ts +37 -0
  196. package/dist/lib/synthesis/index.d.ts.map +1 -0
  197. package/dist/lib/synthesis/llm-analyzer.d.ts +18 -0
  198. package/dist/lib/synthesis/llm-analyzer.d.ts.map +1 -0
  199. package/dist/lib/synthesis/metrics.d.ts +13 -0
  200. package/dist/lib/synthesis/metrics.d.ts.map +1 -0
  201. package/dist/lib/synthesis/scheduler.d.ts +18 -0
  202. package/dist/lib/synthesis/scheduler.d.ts.map +1 -0
  203. package/dist/lib/synthesis/validator.d.ts +19 -0
  204. package/dist/lib/synthesis/validator.d.ts.map +1 -0
  205. package/dist/lib/tool-lesson-extractor.d.ts +24 -0
  206. package/dist/lib/tool-lesson-extractor.d.ts.map +1 -0
  207. package/dist/lib/tool-memory-synthesizer.d.ts +28 -0
  208. package/dist/lib/tool-memory-synthesizer.d.ts.map +1 -0
  209. package/dist/lib/topic-clusterer.d.ts +21 -0
  210. package/dist/lib/topic-clusterer.d.ts.map +1 -0
  211. package/dist/lib/when-to-use-generator.d.ts +22 -0
  212. package/dist/lib/when-to-use-generator.d.ts.map +1 -0
  213. package/dist/mcp/index.d.ts +5 -0
  214. package/dist/mcp/index.d.ts.map +1 -0
  215. package/dist/mcp/index.js +30258 -0
  216. package/dist/mcp/memory-broadcast.d.ts +12 -0
  217. package/dist/mcp/memory-broadcast.d.ts.map +1 -0
  218. package/dist/sdk/index.js +397 -0
  219. package/dist/server/index.d.ts +7 -0
  220. package/dist/server/index.d.ts.map +1 -0
  221. package/dist/server/index.js +18250 -0
  222. package/dist/types/hooks.d.ts +136 -0
  223. package/dist/types/hooks.d.ts.map +1 -0
  224. package/dist/types/index.d.ts +345 -0
  225. package/dist/types/index.d.ts.map +1 -0
  226. package/package.json +53 -13
  227. package/dist/agent-setup.d.ts +0 -51
  228. package/dist/agent-setup.d.ts.map +0 -1
  229. package/dist/bridge.d.ts +0 -50
  230. package/dist/bridge.d.ts.map +0 -1
  231. package/dist/cli.d.ts +0 -3
  232. package/dist/cli.d.ts.map +0 -1
  233. package/dist/cli.js +0 -1362
  234. package/dist/mcp-runtime.d.ts +0 -24
  235. package/dist/mcp-runtime.d.ts.map +0 -1
  236. package/dist/mcp.d.ts +0 -3
  237. package/dist/mcp.d.ts.map +0 -1
  238. package/dist/mcp.js +0 -354
  239. package/dist/remote-client.d.ts +0 -49
  240. package/dist/remote-client.d.ts.map +0 -1
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Memory quality auto-scoring.
3
+ * Heuristic scoring based on specificity, actionability, freshness, consistency.
4
+ */
5
+ import type { Memory } from "../types/index.js";
6
+ export interface QualityScore {
7
+ total: number;
8
+ specificity: number;
9
+ actionability: number;
10
+ freshness: number;
11
+ }
12
+ /**
13
+ * Compute a quality score for a memory.
14
+ */
15
+ export declare function computeQualityScore(memory: Memory): QualityScore;
16
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAwBhE"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Detect and redact secrets from text.
3
+ * Returns the text with secrets replaced by [REDACTED].
4
+ */
5
+ export declare function redactSecrets(text: string): string;
6
+ /**
7
+ * Check if text contains any detectable secrets.
8
+ */
9
+ export declare function containsSecrets(text: string): boolean;
10
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"AAsCA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Remote sync — push/pull memories to/from a remote mementos-serve instance.
3
+ *
4
+ * The remote must be running `mementos-serve`. Point at it via:
5
+ * MEMENTOS_REMOTE_URL=http://apple01:19428
6
+ * or pass the URL directly to push/pull functions.
7
+ */
8
+ declare const DEFAULT_PORT = 19428;
9
+ export interface RemoteSyncOptions {
10
+ remoteUrl?: string;
11
+ scope?: "global" | "shared" | "private" | "working";
12
+ agentId?: string;
13
+ projectId?: string;
14
+ since?: string;
15
+ limit?: number;
16
+ overwrite?: boolean;
17
+ }
18
+ export interface RemoteSyncResult {
19
+ pushed?: number;
20
+ pulled?: number;
21
+ errors: string[];
22
+ remote_url: string;
23
+ }
24
+ /**
25
+ * Push local memories to a remote mementos-serve instance.
26
+ * Uses POST /api/memories/import on the remote.
27
+ */
28
+ export declare function pushToRemote(opts?: RemoteSyncOptions): Promise<RemoteSyncResult>;
29
+ /**
30
+ * Pull memories from a remote mementos-serve instance into local DB.
31
+ * Uses POST /api/memories/export on the remote.
32
+ */
33
+ export declare function pullFromRemote(opts?: RemoteSyncOptions): Promise<RemoteSyncResult>;
34
+ /**
35
+ * Bidirectional sync: push local then pull remote.
36
+ * On key conflict, newer timestamp wins.
37
+ */
38
+ export declare function syncWithRemote(opts?: RemoteSyncOptions): Promise<RemoteSyncResult>;
39
+ /**
40
+ * Check if a remote mementos-serve is reachable.
41
+ */
42
+ export declare function pingRemote(url?: string): Promise<{
43
+ ok: boolean;
44
+ url: string;
45
+ status?: number;
46
+ error?: string;
47
+ }>;
48
+ export { DEFAULT_PORT };
49
+ //# sourceMappingURL=remote-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-sync.d.ts","sourceRoot":"","sources":["../../src/lib/remote-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,QAAA,MAAM,YAAY,QAAQ,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAqBD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B1F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB5F;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAU5F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUrH;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { MementosConfig } from "../types/index.js";
3
+ export declare function enforceQuotas(config: MementosConfig, db?: Database): number;
4
+ export declare function archiveStale(staleDays: number, db?: Database): number;
5
+ export declare function archiveUnused(days: number, db?: Database): number;
6
+ export declare function deprioritizeStale(days: number, db?: Database): number;
7
+ export declare function runCleanup(config: MementosConfig, db?: Database): {
8
+ expired: number;
9
+ evicted: number;
10
+ archived: number;
11
+ unused_archived: number;
12
+ deprioritized: number;
13
+ };
14
+ export declare function enforceMemoryBounds(projectId?: string, db?: Database): {
15
+ archived: number;
16
+ };
17
+ //# sourceMappingURL=retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/lib/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAUrE,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA0C3E;AAMD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAwBrE;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAoBjE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CA2BrE;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,cAAc,EACtB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAgBxG;AAOD,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAuEtB"}
@@ -0,0 +1,52 @@
1
+ import { Database } from "bun:sqlite";
2
+ import type { Memory, MemoryFilter, MemorySearchResult } from "../types/index.js";
3
+ /**
4
+ * Search memories by query string with relevance scoring.
5
+ *
6
+ * Uses FTS5 full-text search when available, falling back to LIKE queries.
7
+ * Searches across key, value, summary, and tags. Results are scored,
8
+ * weighted by importance, filtered, and sorted by score DESC then
9
+ * importance DESC.
10
+ */
11
+ export declare function searchMemories(query: string, filter?: MemoryFilter, db?: Database): MemorySearchResult[];
12
+ /**
13
+ * Search memories using FTS5 BM25 ranking explicitly.
14
+ * Returns results ranked by BM25 score (key weight 10, value weight 5, summary weight 3).
15
+ */
16
+ export declare function searchWithBm25(query: string, filter?: MemoryFilter, db?: Database): MemorySearchResult[];
17
+ export interface HybridSearchResult {
18
+ memory: Memory;
19
+ score: number;
20
+ keyword_rank: number | null;
21
+ semantic_rank: number | null;
22
+ match_type: MemorySearchResult["match_type"];
23
+ highlights?: {
24
+ field: string;
25
+ snippet: string;
26
+ }[];
27
+ }
28
+ /**
29
+ * Hybrid search: runs keyword search (FTS5+fuzzy) and semantic search in parallel,
30
+ * then fuses results using Reciprocal Rank Fusion (RRF).
31
+ *
32
+ * This combines the precision of keyword matching with the recall of semantic similarity.
33
+ */
34
+ export declare function hybridSearch(query: string, options?: {
35
+ filter?: MemoryFilter;
36
+ semantic_threshold?: number;
37
+ semantic_weight?: number;
38
+ keyword_weight?: number;
39
+ limit?: number;
40
+ k?: number;
41
+ }, db?: Database): Promise<HybridSearchResult[]>;
42
+ export declare function logSearchQuery(query: string, resultCount: number, agentId?: string, projectId?: string, db?: Database): void;
43
+ export declare function getSearchHistory(limit?: number, projectId?: string, db?: Database): {
44
+ query: string;
45
+ result_count: number;
46
+ created_at: string;
47
+ }[];
48
+ export declare function getPopularSearches(limit?: number, projectId?: string, db?: Database): {
49
+ query: string;
50
+ count: number;
51
+ }[];
52
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA2nBlF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CAiEtB;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CAwDtB;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AAgBD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;CACP,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiE/B;AAMD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ,IAAI,CAWN;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAU/D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAAW,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAUpC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Auto-resolve agent_id and project_id from session metadata.
3
+ * When a session is ingested without explicit agent/project context,
4
+ * try to detect them from available metadata fields.
5
+ */
6
+ import type { Database } from "bun:sqlite";
7
+ export interface AutoResolveResult {
8
+ agentId: string | null;
9
+ projectId: string | null;
10
+ confidence: "high" | "low" | "none";
11
+ method: string;
12
+ }
13
+ /**
14
+ * Attempt to resolve agent_id and project_id from metadata fields.
15
+ *
16
+ * Strategy:
17
+ * 1. If metadata.agentName matches an existing agent → agentId = agent.id, confidence=high
18
+ * 2. If metadata.workingDir matches a registered project path → projectId = project.id, confidence=high
19
+ * 3. If metadata.gitRemote contains a repo name that matches a project name → confidence=low
20
+ * 4. Otherwise confidence=none
21
+ */
22
+ export declare function autoResolveAgentProject(metadata: {
23
+ workingDir?: string;
24
+ agentName?: string;
25
+ gitRemote?: string;
26
+ sessionSource?: string;
27
+ }, db?: Database): AutoResolveResult;
28
+ //# sourceMappingURL=session-auto-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-auto-resolve.d.ts","sourceRoot":"","sources":["../../src/lib/session-auto-resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,EAAE,CAAC,EAAE,QAAQ,GACZ,iBAAiB,CAsFnB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Session transcript processor.
3
+ * Takes a full session transcript, chunks it, calls LLM to extract memories,
4
+ * saves extracted memories tagged with session_id + source.
5
+ * All failures are silently caught — never throws.
6
+ */
7
+ import type { Database } from "bun:sqlite";
8
+ export interface ChunkResult {
9
+ chunkIndex: number;
10
+ memoriesExtracted: number;
11
+ }
12
+ export interface ProcessingResult {
13
+ jobId: string;
14
+ chunksProcessed: number;
15
+ memoriesExtracted: number;
16
+ errors: string[];
17
+ }
18
+ /**
19
+ * Split a transcript into chunks with overlap.
20
+ */
21
+ export declare function chunkTranscript(transcript: string, chunkSize?: number, overlap?: number): string[];
22
+ /**
23
+ * Extract memories from a single chunk using the available LLM provider.
24
+ * Returns the count of memories saved.
25
+ */
26
+ export declare function extractMemoriesFromChunk(chunk: string, context: {
27
+ sessionId: string;
28
+ agentId?: string;
29
+ projectId?: string;
30
+ source?: string;
31
+ }, db?: Database): Promise<number>;
32
+ /**
33
+ * Process a session memory job end-to-end.
34
+ * Fetches the job, marks it processing, chunks transcript, extracts memories.
35
+ * Updates job status to completed or failed.
36
+ */
37
+ export declare function processSessionJob(jobId: string, db?: Database): Promise<ProcessingResult>;
38
+ //# sourceMappingURL=session-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-processor.d.ts","sourceRoot":"","sources":["../../src/lib/session-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAe3C,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,SAAO,EAChB,OAAO,SAAM,GACZ,MAAM,EAAE,CAeV;AAMD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,EACD,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,MAAM,CAAC,CAyHjB;AAMD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAqH3B"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Background queue for session memory job processing.
3
+ * Polls for pending jobs every 5 seconds, processes one at a time (concurrency=1).
4
+ * Fire-and-forget: enqueueSessionJob() returns immediately, processing happens async.
5
+ */
6
+ export interface SessionQueueStats {
7
+ pending: number;
8
+ processing: number;
9
+ completed: number;
10
+ failed: number;
11
+ }
12
+ /**
13
+ * Enqueue a job ID for processing. Fire-and-forget.
14
+ * The background worker will pick it up within the next polling interval.
15
+ */
16
+ export declare function enqueueSessionJob(jobId: string): void;
17
+ /**
18
+ * Get in-memory queue stats.
19
+ * Note: pending/completed/failed counts come from DB when a full scan is needed;
20
+ * this returns a lightweight in-memory snapshot.
21
+ */
22
+ export declare function getSessionQueueStats(): SessionQueueStats;
23
+ /**
24
+ * Start the background polling worker.
25
+ * Idempotent — safe to call multiple times (only starts once).
26
+ */
27
+ export declare function startSessionQueueWorker(): void;
28
+ //# sourceMappingURL=session-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-queue.d.ts","sourceRoot":"","sources":["../../src/lib/session-queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CA6BxD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAQ9C"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Session Registry — shared registry of active Claude Code sessions.
3
+ * Designed to be reusable across the open-* ecosystem (mementos, todos, conversations).
4
+ *
5
+ * Uses a shared SQLite DB at ~/.open-sessions-registry.db.
6
+ * Each MCP server registers on connect, heartbeats, and can query peers.
7
+ * PID identifies the Claude Code process — all MCPs in same session share a PID.
8
+ */
9
+ export interface SessionInfo {
10
+ id: string;
11
+ pid: number;
12
+ cwd: string;
13
+ git_root: string | null;
14
+ agent_name: string | null;
15
+ project_name: string | null;
16
+ tty: string | null;
17
+ mcp_server: string;
18
+ metadata: Record<string, unknown>;
19
+ registered_at: string;
20
+ last_seen_at: string;
21
+ }
22
+ export interface SessionFilter {
23
+ project_name?: string;
24
+ git_root?: string;
25
+ mcp_server?: string;
26
+ agent_name?: string;
27
+ exclude_pid?: number;
28
+ }
29
+ export declare function registerSession(opts: {
30
+ mcp_server: string;
31
+ agent_name?: string;
32
+ project_name?: string;
33
+ cwd?: string;
34
+ git_root?: string;
35
+ tty?: string;
36
+ metadata?: Record<string, unknown>;
37
+ }): SessionInfo;
38
+ export declare function heartbeatSession(id: string): void;
39
+ export declare function unregisterSession(id: string): void;
40
+ export declare function getSession(id: string): SessionInfo | null;
41
+ export declare function listSessions(filter?: SessionFilter): SessionInfo[];
42
+ export declare function getSessionByAgent(agentName: string): SessionInfo | null;
43
+ export declare function getSessionsByProject(projectName: string): SessionInfo[];
44
+ export declare function cleanStaleSessions(): number;
45
+ export declare function updateSessionAgent(mcpServer: string, agentName: string): void;
46
+ export declare function closeRegistry(): void;
47
+ //# sourceMappingURL=session-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../src/lib/session-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAwFD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,WAAW,CA8Cd;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGlD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAIzD;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,WAAW,EAAE,CAsClE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGvE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAEvE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAW3C;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAO7E;AAMD,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Session Start Briefing — pushes a project memory briefing when a new session begins.
3
+ * Includes: synthesized profile, top memories, last session summary, flagged items.
4
+ */
5
+ export declare function pushSessionBriefing(options: {
6
+ project_id?: string;
7
+ project_name?: string;
8
+ agent_id?: string;
9
+ }): Promise<boolean>;
10
+ //# sourceMappingURL=session-start-briefing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-start-briefing.d.ts","sourceRoot":"","sources":["../../src/lib/session-start-briefing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqFnB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Session Watcher — watches the active Claude Code session JSONL file
3
+ * for new messages. Enables proactive memory injection by detecting
4
+ * what the agent is working on in real-time.
5
+ */
6
+ export interface SessionMessage {
7
+ role: "user" | "assistant" | "tool";
8
+ content: string | {
9
+ type: string;
10
+ text?: string;
11
+ name?: string;
12
+ input?: Record<string, unknown>;
13
+ }[];
14
+ tool_use?: {
15
+ name: string;
16
+ input: Record<string, unknown>;
17
+ }[];
18
+ timestamp: string;
19
+ }
20
+ export type MessageCallback = (message: SessionMessage) => void;
21
+ export declare function startSessionWatcher(cwd: string, callback: MessageCallback): {
22
+ sessionFile: string | null;
23
+ };
24
+ export declare function stopSessionWatcher(): void;
25
+ export declare function getWatcherStatus(): {
26
+ active: boolean;
27
+ watching_file: string | null;
28
+ last_offset: number;
29
+ };
30
+ //# sourceMappingURL=session-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-watcher.d.ts","sourceRoot":"","sources":["../../src/lib/session-watcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IACpG,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AA+EhE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAiC1G;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC;AAED,wBAAgB,gBAAgB,IAAI;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB,CAMA"}
@@ -0,0 +1,10 @@
1
+ import { Database } from "bun:sqlite";
2
+ import type { ConflictResolution, SyncDirection, SyncResult } from "../types/index.js";
3
+ export declare function syncMemories(agentName: string, direction?: SyncDirection, options?: {
4
+ agent_id?: string;
5
+ project_id?: string;
6
+ conflict_resolution?: ConflictResolution;
7
+ db?: Database;
8
+ }): SyncResult;
9
+ export declare const defaultSyncAgents: string[];
10
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,KAAK,EACV,kBAAkB,EAElB,aAAa,EACb,UAAU,EACX,MAAM,mBAAmB,CAAC;AA6K3B,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,aAAsB,EACjC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;IACzC,EAAE,CAAC,EAAE,QAAQ,CAAC;CACV,GACL,UAAU,CAgCZ;AAED,eAAO,MAAM,iBAAiB,UAAgC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Database } from "bun:sqlite";
2
+ import type { Memory } from "../../types/index.js";
3
+ export interface MemoryCorpusItem {
4
+ memory: Memory;
5
+ recallCount: number;
6
+ lastRecalled: string | null;
7
+ searchHits: number;
8
+ similarMemoryIds: string[];
9
+ }
10
+ export interface AnalysisCorpus {
11
+ projectId: string | null;
12
+ totalMemories: number;
13
+ items: MemoryCorpusItem[];
14
+ staleMemories: Memory[];
15
+ duplicateCandidates: Array<{
16
+ a: Memory;
17
+ b: Memory;
18
+ similarity: number;
19
+ }>;
20
+ lowImportanceHighRecall: Memory[];
21
+ highImportanceLowRecall: Memory[];
22
+ generatedAt: string;
23
+ }
24
+ export declare function buildCorpus(options: {
25
+ projectId?: string;
26
+ agentId?: string;
27
+ limit?: number;
28
+ db?: Database;
29
+ }): Promise<AnalysisCorpus>;
30
+ //# sourceMappingURL=corpus-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corpus-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/corpus-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAyDD,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CA0H1B"}
@@ -0,0 +1,14 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { type SynthesisProposal } from "../../db/synthesis.js";
3
+ export interface ExecutionResult {
4
+ runId: string;
5
+ executed: number;
6
+ failed: number;
7
+ rollbackData: Record<string, unknown>;
8
+ }
9
+ export declare function executeProposals(runId: string, proposals: SynthesisProposal[], db?: Database): Promise<ExecutionResult>;
10
+ export declare function rollbackRun(runId: string, db?: Database): Promise<{
11
+ rolled_back: number;
12
+ errors: string[];
13
+ }>;
14
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAMD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAAE,EAC9B,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,eAAe,CAAC,CAsC1B;AAgND,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmBpD"}
@@ -0,0 +1,37 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { type SynthesisProposal, type SynthesisRun } from "../../db/synthesis.js";
3
+ import { type SafetyConfig } from "./validator.js";
4
+ import { type EffectivenessReport } from "./metrics.js";
5
+ export type { SafetyConfig } from "./validator.js";
6
+ export type { EffectivenessReport } from "./metrics.js";
7
+ export type { AnalysisCorpus, MemoryCorpusItem } from "./corpus-builder.js";
8
+ export type { SynthesisAnalysisResult } from "./llm-analyzer.js";
9
+ export type { ValidationResult, SafetyConfig as SafetyConfigType } from "./validator.js";
10
+ export type { ExecutionResult } from "./executor.js";
11
+ export type { SchedulerConfig, SchedulerState } from "./scheduler.js";
12
+ export interface SynthesisOptions {
13
+ projectId?: string;
14
+ agentId?: string;
15
+ provider?: string;
16
+ maxProposals?: number;
17
+ dryRun?: boolean;
18
+ safetyConfig?: Partial<SafetyConfig>;
19
+ db?: Database;
20
+ }
21
+ export interface SynthesisResult {
22
+ run: SynthesisRun;
23
+ proposals: SynthesisProposal[];
24
+ executed: number;
25
+ metrics: EffectivenessReport | null;
26
+ dryRun: boolean;
27
+ }
28
+ export declare function runSynthesis(options?: SynthesisOptions): Promise<SynthesisResult>;
29
+ export declare function rollbackSynthesis(runId: string, db?: Database): Promise<{
30
+ rolled_back: number;
31
+ errors: string[];
32
+ }>;
33
+ export declare function getSynthesisStatus(runId?: string, projectId?: string, db?: Database): {
34
+ lastRun: SynthesisRun | null;
35
+ recentRuns: SynthesisRun[];
36
+ };
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAM9E,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMtE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwJ3F;AAMD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAUpD;AAMD,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ;IAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CAwB9D"}
@@ -0,0 +1,18 @@
1
+ import type { AnalysisCorpus } from "./corpus-builder.js";
2
+ export interface SynthesisAnalysisResult {
3
+ proposals: Array<{
4
+ type: "merge" | "archive" | "promote" | "update_value" | "add_tag" | "remove_duplicate";
5
+ memory_ids: string[];
6
+ target_memory_id?: string;
7
+ proposed_changes: Record<string, unknown>;
8
+ reasoning: string;
9
+ confidence: number;
10
+ }>;
11
+ summary: string;
12
+ analysisDurationMs: number;
13
+ }
14
+ export declare function analyzeCorpus(corpus: AnalysisCorpus, options?: {
15
+ provider?: string;
16
+ maxProposals?: number;
17
+ }): Promise<SynthesisAnalysisResult>;
18
+ //# sourceMappingURL=llm-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-analyzer.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/llm-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,kBAAkB,CAAC;QACxF,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAyFD,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAAC,uBAAuB,CAAC,CA8ClC"}
@@ -0,0 +1,13 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { type SynthesisMetric } from "../../db/synthesis.js";
3
+ import type { AnalysisCorpus } from "./corpus-builder.js";
4
+ export interface EffectivenessReport {
5
+ runId: string;
6
+ corpusReduction: number;
7
+ importanceDrift: number;
8
+ deduplicationRate: number;
9
+ estimatedRecallImprovement: number;
10
+ metrics: SynthesisMetric[];
11
+ }
12
+ export declare function measureEffectiveness(runId: string, preCorpus: AnalysisCorpus, db?: Database): Promise<EffectivenessReport>;
13
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,EAAE,MAAM,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAMD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,cAAc,EACzB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,mBAAmB,CAAC,CAmG9B"}
@@ -0,0 +1,18 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { type SynthesisRun } from "../../db/synthesis.js";
3
+ export interface SchedulerConfig {
4
+ enabled: boolean;
5
+ minMemoriesForTrigger: number;
6
+ minEventsSinceLastRun: number;
7
+ maxRunIntervalHours: number;
8
+ minRunIntervalHours: number;
9
+ }
10
+ export interface SchedulerState {
11
+ lastRunAt: string | null;
12
+ eventsSinceLastRun: number;
13
+ shouldTrigger: boolean;
14
+ reason: string;
15
+ }
16
+ export declare function checkShouldTrigger(projectId: string | null, config?: Partial<SchedulerConfig>, db?: Database): SchedulerState;
17
+ export declare function triggerIfReady(projectId: string | null, agentId: string | null, config?: Partial<SchedulerConfig>, db?: Database): Promise<SynthesisRun | null>;
18
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,EAAE,CAAC,EAAE,QAAQ,GACZ,cAAc,CAwFhB;AAMD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsB9B"}
@@ -0,0 +1,19 @@
1
+ import type { AnalysisCorpus } from "./corpus-builder.js";
2
+ import type { SynthesisAnalysisResult } from "./llm-analyzer.js";
3
+ export interface ValidationResult {
4
+ valid: boolean;
5
+ rejectedProposals: Array<{
6
+ proposalId: string;
7
+ reason: string;
8
+ }>;
9
+ warnings: string[];
10
+ }
11
+ export interface SafetyConfig {
12
+ maxArchivePercent: number;
13
+ maxMergePercent: number;
14
+ minConfidence: number;
15
+ protectPinned: boolean;
16
+ protectHighImportance: number;
17
+ }
18
+ export declare function validateProposals(proposals: SynthesisAnalysisResult["proposals"], corpus: AnalysisCorpus, config?: Partial<SafetyConfig>): ValidationResult;
19
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/synthesis/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAMjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAcD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,uBAAuB,CAAC,WAAW,CAAC,EAC/C,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B,gBAAgB,CAyIlB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * LLM-based tool lesson extraction from session transcripts.
3
+ * Analyzes tool call sequences in a session and extracts:
4
+ * - "Tool X works well for Y with params Z"
5
+ * - "Tool X fails when Y because Z, use alternative A"
6
+ * - "For best results with X, set param Y to Z"
7
+ * - "When X returns error Y, solution is Z"
8
+ *
9
+ * Saves both structured tool_events and qualitative memories.
10
+ */
11
+ interface ExtractedLesson {
12
+ tool_name: string;
13
+ lesson: string;
14
+ when_to_use: string;
15
+ success: boolean;
16
+ error_type?: string | null;
17
+ }
18
+ export declare function extractToolLessons(transcript: string, options?: {
19
+ agent_id?: string;
20
+ project_id?: string;
21
+ session_id?: string;
22
+ }): Promise<ExtractedLesson[]>;
23
+ export {};
24
+ //# sourceMappingURL=tool-lesson-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-lesson-extractor.d.ts","sourceRoot":"","sources":["../../src/lib/tool-lesson-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAwBH,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,eAAe,EAAE,CAAC,CA6E5B"}