context-gatekeeper 0.3.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 (305) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +774 -0
  3. package/README.zh.md +765 -0
  4. package/bin/context-gatekeeper-cli.js +60 -0
  5. package/dist/api/gdpr.d.ts +104 -0
  6. package/dist/api/gdpr.d.ts.map +1 -0
  7. package/dist/api/gdpr.js +229 -0
  8. package/dist/api/gdpr.js.map +1 -0
  9. package/dist/api/health-check.d.ts +13 -0
  10. package/dist/api/health-check.d.ts.map +1 -0
  11. package/dist/api/health-check.js +2 -0
  12. package/dist/api/health-check.js.map +1 -0
  13. package/dist/api/index.d.ts +7 -0
  14. package/dist/api/index.d.ts.map +1 -0
  15. package/dist/api/index.js +8 -0
  16. package/dist/api/index.js.map +1 -0
  17. package/dist/api/observability.d.ts +39 -0
  18. package/dist/api/observability.d.ts.map +1 -0
  19. package/dist/api/observability.js +132 -0
  20. package/dist/api/observability.js.map +1 -0
  21. package/dist/api/session-manager.d.ts +41 -0
  22. package/dist/api/session-manager.d.ts.map +1 -0
  23. package/dist/api/session-manager.js +129 -0
  24. package/dist/api/session-manager.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mcp/server.d.ts +8 -0
  30. package/dist/mcp/server.d.ts.map +1 -0
  31. package/dist/mcp/server.js +613 -0
  32. package/dist/mcp/server.js.map +1 -0
  33. package/dist/mcp/tools/configure-llm.d.ts +26 -0
  34. package/dist/mcp/tools/configure-llm.d.ts.map +1 -0
  35. package/dist/mcp/tools/configure-llm.js +32 -0
  36. package/dist/mcp/tools/configure-llm.js.map +1 -0
  37. package/dist/mcp/tools/context-compress.d.ts +15 -0
  38. package/dist/mcp/tools/context-compress.d.ts.map +1 -0
  39. package/dist/mcp/tools/context-compress.js +15 -0
  40. package/dist/mcp/tools/context-compress.js.map +1 -0
  41. package/dist/mcp/tools/dual-mode-execute.d.ts +78 -0
  42. package/dist/mcp/tools/dual-mode-execute.d.ts.map +1 -0
  43. package/dist/mcp/tools/dual-mode-execute.js +299 -0
  44. package/dist/mcp/tools/dual-mode-execute.js.map +1 -0
  45. package/dist/mcp/tools/index.d.ts +19 -0
  46. package/dist/mcp/tools/index.d.ts.map +1 -0
  47. package/dist/mcp/tools/index.js +20 -0
  48. package/dist/mcp/tools/index.js.map +1 -0
  49. package/dist/mcp/tools/intelligent-recall.d.ts +67 -0
  50. package/dist/mcp/tools/intelligent-recall.d.ts.map +1 -0
  51. package/dist/mcp/tools/intelligent-recall.js +208 -0
  52. package/dist/mcp/tools/intelligent-recall.js.map +1 -0
  53. package/dist/mcp/tools/memory-anchor.d.ts +13 -0
  54. package/dist/mcp/tools/memory-anchor.d.ts.map +1 -0
  55. package/dist/mcp/tools/memory-anchor.js +16 -0
  56. package/dist/mcp/tools/memory-anchor.js.map +1 -0
  57. package/dist/mcp/tools/memory-delete-batch.d.ts +16 -0
  58. package/dist/mcp/tools/memory-delete-batch.d.ts.map +1 -0
  59. package/dist/mcp/tools/memory-delete-batch.js +26 -0
  60. package/dist/mcp/tools/memory-delete-batch.js.map +1 -0
  61. package/dist/mcp/tools/memory-extract.d.ts +68 -0
  62. package/dist/mcp/tools/memory-extract.d.ts.map +1 -0
  63. package/dist/mcp/tools/memory-extract.js +280 -0
  64. package/dist/mcp/tools/memory-extract.js.map +1 -0
  65. package/dist/mcp/tools/memory-recall.d.ts +42 -0
  66. package/dist/mcp/tools/memory-recall.d.ts.map +1 -0
  67. package/dist/mcp/tools/memory-recall.js +37 -0
  68. package/dist/mcp/tools/memory-recall.js.map +1 -0
  69. package/dist/mcp/tools/memory-report-usage.d.ts +17 -0
  70. package/dist/mcp/tools/memory-report-usage.d.ts.map +1 -0
  71. package/dist/mcp/tools/memory-report-usage.js +15 -0
  72. package/dist/mcp/tools/memory-report-usage.js.map +1 -0
  73. package/dist/mcp/tools/memory-search.d.ts +43 -0
  74. package/dist/mcp/tools/memory-search.d.ts.map +1 -0
  75. package/dist/mcp/tools/memory-search.js +38 -0
  76. package/dist/mcp/tools/memory-search.js.map +1 -0
  77. package/dist/mcp/tools/memory-session.d.ts +118 -0
  78. package/dist/mcp/tools/memory-session.d.ts.map +1 -0
  79. package/dist/mcp/tools/memory-session.js +113 -0
  80. package/dist/mcp/tools/memory-session.js.map +1 -0
  81. package/dist/mcp/tools/memory-stats.d.ts +10 -0
  82. package/dist/mcp/tools/memory-stats.d.ts.map +1 -0
  83. package/dist/mcp/tools/memory-stats.js +35 -0
  84. package/dist/mcp/tools/memory-stats.js.map +1 -0
  85. package/dist/mcp/tools/memory-store-batch.d.ts +49 -0
  86. package/dist/mcp/tools/memory-store-batch.d.ts.map +1 -0
  87. package/dist/mcp/tools/memory-store-batch.js +48 -0
  88. package/dist/mcp/tools/memory-store-batch.js.map +1 -0
  89. package/dist/mcp/tools/memory-store.d.ts +37 -0
  90. package/dist/mcp/tools/memory-store.d.ts.map +1 -0
  91. package/dist/mcp/tools/memory-store.js +34 -0
  92. package/dist/mcp/tools/memory-store.js.map +1 -0
  93. package/dist/mcp/tools/project-create.d.ts +16 -0
  94. package/dist/mcp/tools/project-create.d.ts.map +1 -0
  95. package/dist/mcp/tools/project-create.js +14 -0
  96. package/dist/mcp/tools/project-create.js.map +1 -0
  97. package/dist/models/types.d.ts +88 -0
  98. package/dist/models/types.d.ts.map +1 -0
  99. package/dist/models/types.js +19 -0
  100. package/dist/models/types.js.map +1 -0
  101. package/dist/schema/compression.d.ts +7 -0
  102. package/dist/schema/compression.d.ts.map +1 -0
  103. package/dist/schema/compression.js +66 -0
  104. package/dist/schema/compression.js.map +1 -0
  105. package/dist/schema/fulltext-search.d.ts +10 -0
  106. package/dist/schema/fulltext-search.d.ts.map +1 -0
  107. package/dist/schema/fulltext-search.js +73 -0
  108. package/dist/schema/fulltext-search.js.map +1 -0
  109. package/dist/schema/index.d.ts +9 -0
  110. package/dist/schema/index.d.ts.map +1 -0
  111. package/dist/schema/index.js +9 -0
  112. package/dist/schema/index.js.map +1 -0
  113. package/dist/schema/knowledge-graph.d.ts +108 -0
  114. package/dist/schema/knowledge-graph.d.ts.map +1 -0
  115. package/dist/schema/knowledge-graph.js +372 -0
  116. package/dist/schema/knowledge-graph.js.map +1 -0
  117. package/dist/schema/memory-session.d.ts +62 -0
  118. package/dist/schema/memory-session.d.ts.map +1 -0
  119. package/dist/schema/memory-session.js +258 -0
  120. package/dist/schema/memory-session.js.map +1 -0
  121. package/dist/schema/memory.d.ts +84 -0
  122. package/dist/schema/memory.d.ts.map +1 -0
  123. package/dist/schema/memory.js +622 -0
  124. package/dist/schema/memory.js.map +1 -0
  125. package/dist/schema/project.d.ts +8 -0
  126. package/dist/schema/project.d.ts.map +1 -0
  127. package/dist/schema/project.js +68 -0
  128. package/dist/schema/project.js.map +1 -0
  129. package/dist/schema/schema-init.d.ts +2 -0
  130. package/dist/schema/schema-init.d.ts.map +1 -0
  131. package/dist/schema/schema-init.js +199 -0
  132. package/dist/schema/schema-init.js.map +1 -0
  133. package/dist/schema/vector-index.d.ts +28 -0
  134. package/dist/schema/vector-index.d.ts.map +1 -0
  135. package/dist/schema/vector-index.js +179 -0
  136. package/dist/schema/vector-index.js.map +1 -0
  137. package/dist/scripts/agents/base.d.ts +89 -0
  138. package/dist/scripts/agents/base.d.ts.map +1 -0
  139. package/dist/scripts/agents/base.js +148 -0
  140. package/dist/scripts/agents/base.js.map +1 -0
  141. package/dist/scripts/agents/base.ts +193 -0
  142. package/dist/scripts/agents/claude-code.d.ts +21 -0
  143. package/dist/scripts/agents/claude-code.d.ts.map +1 -0
  144. package/dist/scripts/agents/claude-code.js +33 -0
  145. package/dist/scripts/agents/claude-code.js.map +1 -0
  146. package/dist/scripts/agents/claude-code.ts +36 -0
  147. package/dist/scripts/agents/claude-desktop.d.ts +25 -0
  148. package/dist/scripts/agents/claude-desktop.d.ts.map +1 -0
  149. package/dist/scripts/agents/claude-desktop.js +36 -0
  150. package/dist/scripts/agents/claude-desktop.js.map +1 -0
  151. package/dist/scripts/agents/claude-desktop.ts +39 -0
  152. package/dist/scripts/agents/cline.d.ts +22 -0
  153. package/dist/scripts/agents/cline.d.ts.map +1 -0
  154. package/dist/scripts/agents/cline.js +35 -0
  155. package/dist/scripts/agents/cline.js.map +1 -0
  156. package/dist/scripts/agents/cline.ts +38 -0
  157. package/dist/scripts/agents/continue.d.ts +20 -0
  158. package/dist/scripts/agents/continue.d.ts.map +1 -0
  159. package/dist/scripts/agents/continue.js +35 -0
  160. package/dist/scripts/agents/continue.js.map +1 -0
  161. package/dist/scripts/agents/continue.ts +38 -0
  162. package/dist/scripts/agents/cursor.d.ts +27 -0
  163. package/dist/scripts/agents/cursor.d.ts.map +1 -0
  164. package/dist/scripts/agents/cursor.js +38 -0
  165. package/dist/scripts/agents/cursor.js.map +1 -0
  166. package/dist/scripts/agents/cursor.ts +41 -0
  167. package/dist/scripts/cli/config-gen.d.ts +59 -0
  168. package/dist/scripts/cli/config-gen.d.ts.map +1 -0
  169. package/dist/scripts/cli/config-gen.js +156 -0
  170. package/dist/scripts/cli/config-gen.js.map +1 -0
  171. package/dist/scripts/cli/config-gen.ts +164 -0
  172. package/dist/scripts/cli/detect.d.ts +42 -0
  173. package/dist/scripts/cli/detect.d.ts.map +1 -0
  174. package/dist/scripts/cli/detect.js +131 -0
  175. package/dist/scripts/cli/detect.js.map +1 -0
  176. package/dist/scripts/cli/detect.ts +162 -0
  177. package/dist/scripts/cli/install.d.ts +31 -0
  178. package/dist/scripts/cli/install.d.ts.map +1 -0
  179. package/dist/scripts/cli/install.js +125 -0
  180. package/dist/scripts/cli/install.js.map +1 -0
  181. package/dist/scripts/cli/install.ts +157 -0
  182. package/dist/scripts/cli/status.d.ts +8 -0
  183. package/dist/scripts/cli/status.d.ts.map +1 -0
  184. package/dist/scripts/cli/status.js +39 -0
  185. package/dist/scripts/cli/status.js.map +1 -0
  186. package/dist/scripts/cli/status.ts +48 -0
  187. package/dist/scripts/cli/uninstall.d.ts +22 -0
  188. package/dist/scripts/cli/uninstall.d.ts.map +1 -0
  189. package/dist/scripts/cli/uninstall.js +141 -0
  190. package/dist/scripts/cli/uninstall.js.map +1 -0
  191. package/dist/scripts/cli/uninstall.ts +157 -0
  192. package/dist/scripts/cli.d.ts +23 -0
  193. package/dist/scripts/cli.d.ts.map +1 -0
  194. package/dist/scripts/cli.js +166 -0
  195. package/dist/scripts/cli.js.map +1 -0
  196. package/dist/scripts/cli.ts +173 -0
  197. package/dist/services/classifier/index.d.ts +36 -0
  198. package/dist/services/classifier/index.d.ts.map +1 -0
  199. package/dist/services/classifier/index.js +104 -0
  200. package/dist/services/classifier/index.js.map +1 -0
  201. package/dist/services/classifier/llm.d.ts +37 -0
  202. package/dist/services/classifier/llm.d.ts.map +1 -0
  203. package/dist/services/classifier/llm.js +119 -0
  204. package/dist/services/classifier/llm.js.map +1 -0
  205. package/dist/services/classifier/rules.d.ts +22 -0
  206. package/dist/services/classifier/rules.d.ts.map +1 -0
  207. package/dist/services/classifier/rules.js +98 -0
  208. package/dist/services/classifier/rules.js.map +1 -0
  209. package/dist/services/compressor/index.d.ts +3 -0
  210. package/dist/services/compressor/index.d.ts.map +1 -0
  211. package/dist/services/compressor/index.js +3 -0
  212. package/dist/services/compressor/index.js.map +1 -0
  213. package/dist/services/compressor/threshold.d.ts +35 -0
  214. package/dist/services/compressor/threshold.d.ts.map +1 -0
  215. package/dist/services/compressor/threshold.js +60 -0
  216. package/dist/services/compressor/threshold.js.map +1 -0
  217. package/dist/services/compressor/trigger.d.ts +24 -0
  218. package/dist/services/compressor/trigger.d.ts.map +1 -0
  219. package/dist/services/compressor/trigger.js +91 -0
  220. package/dist/services/compressor/trigger.js.map +1 -0
  221. package/dist/services/constraint-extractor.d.ts +25 -0
  222. package/dist/services/constraint-extractor.d.ts.map +1 -0
  223. package/dist/services/constraint-extractor.js +97 -0
  224. package/dist/services/constraint-extractor.js.map +1 -0
  225. package/dist/services/database-health.d.ts +22 -0
  226. package/dist/services/database-health.d.ts.map +1 -0
  227. package/dist/services/database-health.js +122 -0
  228. package/dist/services/database-health.js.map +1 -0
  229. package/dist/services/embedding-fixed.d.ts +9 -0
  230. package/dist/services/embedding-fixed.d.ts.map +1 -0
  231. package/dist/services/embedding-fixed.js +70 -0
  232. package/dist/services/embedding-fixed.js.map +1 -0
  233. package/dist/services/embedding-provider.d.ts +79 -0
  234. package/dist/services/embedding-provider.d.ts.map +1 -0
  235. package/dist/services/embedding-provider.js +229 -0
  236. package/dist/services/embedding-provider.js.map +1 -0
  237. package/dist/services/embedding.d.ts +17 -0
  238. package/dist/services/embedding.d.ts.map +1 -0
  239. package/dist/services/embedding.js +99 -0
  240. package/dist/services/embedding.js.map +1 -0
  241. package/dist/services/hnsw-index.d.ts +76 -0
  242. package/dist/services/hnsw-index.d.ts.map +1 -0
  243. package/dist/services/hnsw-index.js +301 -0
  244. package/dist/services/hnsw-index.js.map +1 -0
  245. package/dist/services/llm.d.ts +39 -0
  246. package/dist/services/llm.d.ts.map +1 -0
  247. package/dist/services/llm.js +207 -0
  248. package/dist/services/llm.js.map +1 -0
  249. package/dist/services/memory-tiers.d.ts +75 -0
  250. package/dist/services/memory-tiers.d.ts.map +1 -0
  251. package/dist/services/memory-tiers.js +275 -0
  252. package/dist/services/memory-tiers.js.map +1 -0
  253. package/dist/services/memory.d.ts +33 -0
  254. package/dist/services/memory.d.ts.map +1 -0
  255. package/dist/services/memory.js +209 -0
  256. package/dist/services/memory.js.map +1 -0
  257. package/dist/services/multi-agent-sharing.d.ts +83 -0
  258. package/dist/services/multi-agent-sharing.d.ts.map +1 -0
  259. package/dist/services/multi-agent-sharing.js +278 -0
  260. package/dist/services/multi-agent-sharing.js.map +1 -0
  261. package/dist/services/reranker.d.ts +88 -0
  262. package/dist/services/reranker.d.ts.map +1 -0
  263. package/dist/services/reranker.js +234 -0
  264. package/dist/services/reranker.js.map +1 -0
  265. package/dist/services/triple-extractor.d.ts +35 -0
  266. package/dist/services/triple-extractor.d.ts.map +1 -0
  267. package/dist/services/triple-extractor.js +293 -0
  268. package/dist/services/triple-extractor.js.map +1 -0
  269. package/dist/services/vector-provider.d.ts +40 -0
  270. package/dist/services/vector-provider.d.ts.map +1 -0
  271. package/dist/services/vector-provider.js +225 -0
  272. package/dist/services/vector-provider.js.map +1 -0
  273. package/dist/utils/after-chain-executor.d.ts +26 -0
  274. package/dist/utils/after-chain-executor.d.ts.map +1 -0
  275. package/dist/utils/after-chain-executor.js +135 -0
  276. package/dist/utils/after-chain-executor.js.map +1 -0
  277. package/dist/utils/after-chain.d.ts +94 -0
  278. package/dist/utils/after-chain.d.ts.map +1 -0
  279. package/dist/utils/after-chain.js +155 -0
  280. package/dist/utils/after-chain.js.map +1 -0
  281. package/dist/utils/db.d.ts +29 -0
  282. package/dist/utils/db.d.ts.map +1 -0
  283. package/dist/utils/db.js +201 -0
  284. package/dist/utils/db.js.map +1 -0
  285. package/dist/utils/encryption.d.ts +87 -0
  286. package/dist/utils/encryption.d.ts.map +1 -0
  287. package/dist/utils/encryption.js +175 -0
  288. package/dist/utils/encryption.js.map +1 -0
  289. package/dist/utils/errors.d.ts +35 -0
  290. package/dist/utils/errors.d.ts.map +1 -0
  291. package/dist/utils/errors.js +56 -0
  292. package/dist/utils/errors.js.map +1 -0
  293. package/dist/utils/logger.d.ts +27 -0
  294. package/dist/utils/logger.d.ts.map +1 -0
  295. package/dist/utils/logger.js +177 -0
  296. package/dist/utils/logger.js.map +1 -0
  297. package/dist/utils/priority.d.ts +26 -0
  298. package/dist/utils/priority.d.ts.map +1 -0
  299. package/dist/utils/priority.js +43 -0
  300. package/dist/utils/priority.js.map +1 -0
  301. package/dist/utils/watchdog.d.ts +57 -0
  302. package/dist/utils/watchdog.d.ts.map +1 -0
  303. package/dist/utils/watchdog.js +164 -0
  304. package/dist/utils/watchdog.js.map +1 -0
  305. package/package.json +78 -0
@@ -0,0 +1,73 @@
1
+ import { getDatabase } from '../utils/db.js';
2
+ import { query } from '../utils/db.js';
3
+ export function initFullTextSearch() {
4
+ const db = getDatabase();
5
+ try {
6
+ db.run(`
7
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
8
+ memory_id UNINDEXED,
9
+ content,
10
+ content='memories',
11
+ content_rowid='rowid',
12
+ tokenize='porter unicode61'
13
+ )
14
+ `);
15
+ db.run(`
16
+ CREATE TRIGGER IF NOT EXISTS memories_fts_ai AFTER INSERT ON memories BEGIN
17
+ INSERT INTO memories_fts(memory_id, content) VALUES (new.id, new.content);
18
+ END
19
+ `);
20
+ db.run(`
21
+ CREATE TRIGGER IF NOT EXISTS memories_fts_ad AFTER DELETE ON memories BEGIN
22
+ INSERT INTO memories_fts(memories_fts, memory_id, content) VALUES('delete', old.id, old.content);
23
+ END
24
+ `);
25
+ db.run(`
26
+ CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories BEGIN
27
+ INSERT INTO memories_fts(memories_fts, memory_id, content) VALUES('delete', old.id, old.content);
28
+ INSERT INTO memories_fts(memory_id, content) VALUES (new.id, new.content);
29
+ END
30
+ `);
31
+ }
32
+ catch {
33
+ // FTS5 not supported in sql.js - graceful degradation, no-op
34
+ }
35
+ }
36
+ export function searchFullText(queryText, limit = 10) {
37
+ if (!queryText || queryText.trim().length === 0) {
38
+ return [];
39
+ }
40
+ try {
41
+ const results = query(`
42
+ SELECT f.memory_id, m.content, bm25(memories_fts) as rank, bm25(memories_fts) as bm25
43
+ FROM memories_fts f
44
+ JOIN memories m ON f.memory_id = m.id
45
+ WHERE memories_fts MATCH ? AND m.deleted = 0
46
+ ORDER BY rank
47
+ LIMIT ?
48
+ `, [queryText, limit]);
49
+ return results.map(row => ({
50
+ memoryId: row.memory_id,
51
+ content: row.content,
52
+ rank: parseFloat(row.rank),
53
+ bm25Score: parseFloat(row.bm25)
54
+ }));
55
+ }
56
+ catch {
57
+ // FTS5 not supported or table not initialized - graceful degradation
58
+ return [];
59
+ }
60
+ }
61
+ export function rebuildFullTextIndex() {
62
+ const db = getDatabase();
63
+ try {
64
+ db.run(`INSERT INTO memories_fts(memories_fts) VALUES('rebuild')`);
65
+ const count = query(`SELECT COUNT(*) as cnt FROM memories WHERE deleted = 0`);
66
+ return count[0]?.cnt ?? 0;
67
+ }
68
+ catch {
69
+ // FTS5 not supported - graceful degradation
70
+ return 0;
71
+ }
72
+ }
73
+ //# sourceMappingURL=fulltext-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fulltext-search.js","sourceRoot":"","sources":["../../src/schema/fulltext-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,EAAE,CAAC,GAAG,CAAC;;;;;;;;KAQN,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC;;;;KAIN,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC;;;;KAIN,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC;;;;;KAKN,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,QAAgB,EAAE;IAElB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,KAAK,CACnB;;;;;;;OAOC,EACD,CAAC,SAAS,EAAE,KAAK,CAAC,CACnB,CAAC;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAEnE,MAAM,KAAK,GAAG,KAAK,CAAkB,wDAAwD,CAAC,CAAC;QAC/F,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { createMemory, getMemory, getMemoryOrThrow, updateMemory, deleteMemory, listMemories, searchMemories, incrementAccessCount, anchorMemory, getMemoriesByIds, storeEmbedding, getEmbedding, searchMemoriesBM25, searchMemoriesVector, searchMemoriesHybrid, cleanupExpiredMemories, buildIsolationFilter } from './memory.js';
2
+ export { createCompression, getCompression, getCompressionHistory, listCompressions, cleanupOldCompressions } from './compression.js';
3
+ export { createProject, getProject, getProjectOrThrow, getProjectByName, listProjects, deleteProject } from './project.js';
4
+ export { initSchema } from './schema-init.js';
5
+ export { ensureVectorIndexMetadata, registerVectorIndex, listVectorIndexes, removeVectorIndex } from './vector-index.js';
6
+ export { initFullTextSearch, searchFullText, rebuildFullTextIndex } from './fulltext-search.js';
7
+ export { initKnowledgeGraph, getEntity, createEntity, getRelationsByEntity, createRelation, getFactsByEntity, createFact, getKGStats, type KGEntity, type KGRelation, type KGFact, type KGExtractionResult } from './knowledge-graph.js';
8
+ export { extractTriplesFromMemory, extractTriplesFromMemories, extractTriplesFromConversation } from '../services/triple-extractor.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpU,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACtI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzO,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { createMemory, getMemory, getMemoryOrThrow, updateMemory, deleteMemory, listMemories, searchMemories, incrementAccessCount, anchorMemory, getMemoriesByIds, storeEmbedding, getEmbedding, searchMemoriesBM25, searchMemoriesVector, searchMemoriesHybrid, cleanupExpiredMemories, buildIsolationFilter } from './memory.js';
2
+ export { createCompression, getCompression, getCompressionHistory, listCompressions, cleanupOldCompressions } from './compression.js';
3
+ export { createProject, getProject, getProjectOrThrow, getProjectByName, listProjects, deleteProject } from './project.js';
4
+ export { initSchema } from './schema-init.js';
5
+ export { ensureVectorIndexMetadata, registerVectorIndex, listVectorIndexes, removeVectorIndex } from './vector-index.js';
6
+ export { initFullTextSearch, searchFullText, rebuildFullTextIndex } from './fulltext-search.js';
7
+ export { initKnowledgeGraph, getEntity, createEntity, getRelationsByEntity, createRelation, getFactsByEntity, createFact, getKGStats } from './knowledge-graph.js';
8
+ export { extractTriplesFromMemory, extractTriplesFromMemories, extractTriplesFromConversation } from '../services/triple-extractor.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpU,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACtI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAwE,MAAM,sBAAsB,CAAC;AACzO,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Knowledge Graph schema and operations
3
+ * Manages entities, relations, and facts extracted from memories
4
+ */
5
+ export interface KGEntity {
6
+ id: string;
7
+ name: string;
8
+ type: string;
9
+ properties: Record<string, unknown>;
10
+ sourceMemoryId: string | null;
11
+ confidence: number;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+ export interface KGRelation {
16
+ id: string;
17
+ sourceEntityId: string;
18
+ targetEntityId: string;
19
+ relationType: string;
20
+ properties: Record<string, unknown>;
21
+ sourceMemoryId: string | null;
22
+ confidence: number;
23
+ bidirectional: boolean;
24
+ createdAt: Date;
25
+ updatedAt: Date;
26
+ }
27
+ export interface KGFact {
28
+ id: string;
29
+ entityId: string;
30
+ relationId: string | null;
31
+ predicate: string;
32
+ value: string;
33
+ confidence: number;
34
+ sourceMemoryId: string | null;
35
+ validFrom: Date | null;
36
+ validTo: Date | null;
37
+ createdAt: Date;
38
+ updatedAt: Date;
39
+ }
40
+ export interface KGExtractionResult {
41
+ entities: KGEntity[];
42
+ relations: KGRelation[];
43
+ facts: KGFact[];
44
+ }
45
+ export declare function initKnowledgeGraph(): void;
46
+ export declare function createEntity(input: {
47
+ name: string;
48
+ type: string;
49
+ properties?: Record<string, unknown>;
50
+ sourceMemoryId?: string;
51
+ confidence?: number;
52
+ }): KGEntity;
53
+ export declare function getEntity(id: string): KGEntity | null;
54
+ export declare function findEntityByName(name: string, type?: string): KGEntity | null;
55
+ export declare function getOrCreateEntity(input: {
56
+ name: string;
57
+ type: string;
58
+ properties?: Record<string, unknown>;
59
+ sourceMemoryId?: string;
60
+ confidence?: number;
61
+ }): KGEntity;
62
+ export declare function updateEntity(id: string, updates: {
63
+ name?: string;
64
+ type?: string;
65
+ properties?: Record<string, unknown>;
66
+ confidence?: number;
67
+ }): KGEntity;
68
+ export declare function listEntities(options?: {
69
+ type?: string;
70
+ limit?: number;
71
+ offset?: number;
72
+ }): KGEntity[];
73
+ export declare function deleteEntity(id: string): void;
74
+ export declare function createRelation(input: {
75
+ sourceEntityId: string;
76
+ targetEntityId: string;
77
+ relationType: string;
78
+ properties?: Record<string, unknown>;
79
+ sourceMemoryId?: string;
80
+ confidence?: number;
81
+ bidirectional?: boolean;
82
+ }): KGRelation;
83
+ export declare function getRelation(id: string): KGRelation | null;
84
+ export declare function findRelation(sourceEntityId: string, targetEntityId: string, relationType: string): KGRelation | null;
85
+ export declare function getRelationsByEntity(entityId: string, direction?: 'outgoing' | 'incoming' | 'both'): KGRelation[];
86
+ export declare function deleteRelation(id: string): void;
87
+ export declare function createFact(input: {
88
+ entityId: string;
89
+ relationId?: string;
90
+ predicate: string;
91
+ value: string;
92
+ sourceMemoryId?: string;
93
+ confidence?: number;
94
+ validFrom?: Date;
95
+ validTo?: Date;
96
+ }): KGFact;
97
+ export declare function getFact(id: string): KGFact | null;
98
+ export declare function getFactsByEntity(entityId: string): KGFact[];
99
+ export declare function deleteFact(id: string): void;
100
+ export interface KGStats {
101
+ entityCount: number;
102
+ relationCount: number;
103
+ factCount: number;
104
+ entityTypes: Record<string, number>;
105
+ relationTypes: Record<string, number>;
106
+ }
107
+ export declare function getKGStats(): KGStats;
108
+ //# sourceMappingURL=knowledge-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../../src/schema/knowledge-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,372 @@
1
+ /**
2
+ * Knowledge Graph schema and operations
3
+ * Manages entities, relations, and facts extracted from memories
4
+ */
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ import { query, run, getDatabase } from '../utils/db.js';
7
+ import { DatabaseError } from '../utils/errors.js';
8
+ // ============ Schema ============
9
+ export function initKnowledgeGraph() {
10
+ const db = getDatabase();
11
+ try {
12
+ // Entities table
13
+ db.run(`
14
+ CREATE TABLE IF NOT EXISTS kg_entities (
15
+ id TEXT PRIMARY KEY,
16
+ name TEXT NOT NULL,
17
+ type TEXT NOT NULL,
18
+ properties TEXT NOT NULL DEFAULT '{}',
19
+ source_memory_id TEXT,
20
+ confidence REAL NOT NULL DEFAULT 1.0,
21
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
22
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
23
+ )
24
+ `);
25
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_entities_name ON kg_entities(name)`);
26
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_entities_type ON kg_entities(type)`);
27
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_entities_source ON kg_entities(source_memory_id)`);
28
+ // Relations table
29
+ db.run(`
30
+ CREATE TABLE IF NOT EXISTS kg_relations (
31
+ id TEXT PRIMARY KEY,
32
+ source_entity_id TEXT NOT NULL,
33
+ target_entity_id TEXT NOT NULL,
34
+ relation_type TEXT NOT NULL,
35
+ properties TEXT NOT NULL DEFAULT '{}',
36
+ source_memory_id TEXT,
37
+ confidence REAL NOT NULL DEFAULT 1.0,
38
+ bidirectional INTEGER NOT NULL DEFAULT 0,
39
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
40
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
41
+ FOREIGN KEY (source_entity_id) REFERENCES kg_entities(id),
42
+ FOREIGN KEY (target_entity_id) REFERENCES kg_entities(id)
43
+ )
44
+ `);
45
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_relations_source ON kg_relations(source_entity_id)`);
46
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_relations_target ON kg_relations(target_entity_id)`);
47
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_relations_type ON kg_relations(relation_type)`);
48
+ // Facts table
49
+ db.run(`
50
+ CREATE TABLE IF NOT EXISTS kg_facts (
51
+ id TEXT PRIMARY KEY,
52
+ entity_id TEXT NOT NULL,
53
+ relation_id TEXT,
54
+ predicate TEXT NOT NULL,
55
+ value TEXT NOT NULL,
56
+ confidence REAL NOT NULL DEFAULT 1.0,
57
+ source_memory_id TEXT,
58
+ valid_from TEXT,
59
+ valid_to TEXT,
60
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
61
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
62
+ FOREIGN KEY (entity_id) REFERENCES kg_entities(id),
63
+ FOREIGN KEY (relation_id) REFERENCES kg_relations(id)
64
+ )
65
+ `);
66
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_facts_entity ON kg_facts(entity_id)`);
67
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_facts_predicate ON kg_facts(predicate)`);
68
+ db.run(`CREATE INDEX IF NOT EXISTS idx_kg_facts_source ON kg_facts(source_memory_id)`);
69
+ }
70
+ catch (error) {
71
+ throw new DatabaseError('Failed to initialize knowledge graph schema', error);
72
+ }
73
+ }
74
+ // ============ Entity Operations ============
75
+ export function createEntity(input) {
76
+ const id = uuidv4();
77
+ const now = new Date().toISOString();
78
+ try {
79
+ run(`INSERT INTO kg_entities (id, name, type, properties, source_memory_id, confidence, created_at, updated_at)
80
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
81
+ id,
82
+ input.name,
83
+ input.type,
84
+ JSON.stringify(input.properties || {}),
85
+ input.sourceMemoryId || null,
86
+ input.confidence ?? 1.0,
87
+ now,
88
+ now
89
+ ]);
90
+ return getEntity(id);
91
+ }
92
+ catch (error) {
93
+ throw new DatabaseError('Failed to create entity', error);
94
+ }
95
+ }
96
+ export function getEntity(id) {
97
+ try {
98
+ const rows = query(`SELECT * FROM kg_entities WHERE id = ?`, [id]);
99
+ return rows.length > 0 ? mapEntityRow(rows[0]) : null;
100
+ }
101
+ catch (error) {
102
+ throw new DatabaseError('Failed to get entity', error);
103
+ }
104
+ }
105
+ export function findEntityByName(name, type) {
106
+ try {
107
+ let sql = `SELECT * FROM kg_entities WHERE name = ?`;
108
+ const params = [name];
109
+ if (type) {
110
+ sql += ` AND type = ?`;
111
+ params.push(type);
112
+ }
113
+ sql += ` LIMIT 1`;
114
+ const rows = query(sql, params);
115
+ return rows.length > 0 ? mapEntityRow(rows[0]) : null;
116
+ }
117
+ catch (error) {
118
+ throw new DatabaseError('Failed to find entity', error);
119
+ }
120
+ }
121
+ export function getOrCreateEntity(input) {
122
+ const existing = findEntityByName(input.name, input.type);
123
+ if (existing) {
124
+ return existing;
125
+ }
126
+ return createEntity(input);
127
+ }
128
+ export function updateEntity(id, updates) {
129
+ const existing = getEntity(id);
130
+ if (!existing) {
131
+ throw new DatabaseError('Entity not found', new Error(id));
132
+ }
133
+ const now = new Date().toISOString();
134
+ const updatesList = ['updated_at = ?'];
135
+ const params = [now];
136
+ if (updates.name !== undefined) {
137
+ updatesList.push('name = ?');
138
+ params.push(updates.name);
139
+ }
140
+ if (updates.type !== undefined) {
141
+ updatesList.push('type = ?');
142
+ params.push(updates.type);
143
+ }
144
+ if (updates.properties !== undefined) {
145
+ updatesList.push('properties = ?');
146
+ params.push(JSON.stringify(updates.properties));
147
+ }
148
+ if (updates.confidence !== undefined) {
149
+ updatesList.push('confidence = ?');
150
+ params.push(updates.confidence);
151
+ }
152
+ params.push(id);
153
+ run(`UPDATE kg_entities SET ${updatesList.join(', ')} WHERE id = ?`, params);
154
+ return getEntity(id);
155
+ }
156
+ export function listEntities(options = {}) {
157
+ try {
158
+ const conditions = [];
159
+ const params = [];
160
+ if (options.type) {
161
+ conditions.push('type = ?');
162
+ params.push(options.type);
163
+ }
164
+ const sql = `SELECT * FROM kg_entities${conditions.length ? ' WHERE ' + conditions.join(' AND ') : ''} ORDER BY created_at DESC LIMIT ? OFFSET ?`;
165
+ params.push(options.limit ?? 100);
166
+ params.push(options.offset ?? 0);
167
+ const rows = query(sql, params);
168
+ return rows.map(mapEntityRow);
169
+ }
170
+ catch (error) {
171
+ throw new DatabaseError('Failed to list entities', error);
172
+ }
173
+ }
174
+ export function deleteEntity(id) {
175
+ // Delete related facts and relations first
176
+ run(`DELETE FROM kg_facts WHERE entity_id = ? OR entity_id IN (SELECT entity_id FROM kg_relations WHERE source_entity_id = ? OR target_entity_id = ?)`, [id, id, id]);
177
+ run(`DELETE FROM kg_relations WHERE source_entity_id = ? OR target_entity_id = ?`, [id, id]);
178
+ run(`DELETE FROM kg_entities WHERE id = ?`, [id]);
179
+ }
180
+ // ============ Relation Operations ============
181
+ export function createRelation(input) {
182
+ const id = uuidv4();
183
+ const now = new Date().toISOString();
184
+ try {
185
+ run(`INSERT INTO kg_relations (id, source_entity_id, target_entity_id, relation_type, properties, source_memory_id, confidence, bidirectional, created_at, updated_at)
186
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
187
+ id,
188
+ input.sourceEntityId,
189
+ input.targetEntityId,
190
+ input.relationType,
191
+ JSON.stringify(input.properties || {}),
192
+ input.sourceMemoryId || null,
193
+ input.confidence ?? 1.0,
194
+ input.bidirectional ? 1 : 0,
195
+ now,
196
+ now
197
+ ]);
198
+ return getRelation(id);
199
+ }
200
+ catch (error) {
201
+ throw new DatabaseError('Failed to create relation', error);
202
+ }
203
+ }
204
+ export function getRelation(id) {
205
+ try {
206
+ const rows = query(`SELECT * FROM kg_relations WHERE id = ?`, [id]);
207
+ return rows.length > 0 ? mapRelationRow(rows[0]) : null;
208
+ }
209
+ catch (error) {
210
+ throw new DatabaseError('Failed to get relation', error);
211
+ }
212
+ }
213
+ export function findRelation(sourceEntityId, targetEntityId, relationType) {
214
+ try {
215
+ const rows = query(`SELECT * FROM kg_relations WHERE source_entity_id = ? AND target_entity_id = ? AND relation_type = ? LIMIT 1`, [sourceEntityId, targetEntityId, relationType]);
216
+ return rows.length > 0 ? mapRelationRow(rows[0]) : null;
217
+ }
218
+ catch (error) {
219
+ throw new DatabaseError('Failed to find relation', error);
220
+ }
221
+ }
222
+ export function getRelationsByEntity(entityId, direction = 'both') {
223
+ try {
224
+ let sql = `SELECT * FROM kg_relations WHERE `;
225
+ if (direction === 'outgoing') {
226
+ sql += `source_entity_id = ?`;
227
+ }
228
+ else if (direction === 'incoming') {
229
+ sql += `target_entity_id = ?`;
230
+ }
231
+ else {
232
+ sql += `(source_entity_id = ? OR target_entity_id = ?)`;
233
+ }
234
+ const rows = query(sql, direction === 'both' ? [entityId, entityId] : [entityId]);
235
+ return rows.map(mapRelationRow);
236
+ }
237
+ catch (error) {
238
+ throw new DatabaseError('Failed to get relations by entity', error);
239
+ }
240
+ }
241
+ export function deleteRelation(id) {
242
+ // Delete related facts first
243
+ run(`DELETE FROM kg_facts WHERE relation_id = ?`, [id]);
244
+ run(`DELETE FROM kg_relations WHERE id = ?`, [id]);
245
+ }
246
+ // ============ Fact Operations ============
247
+ export function createFact(input) {
248
+ const id = uuidv4();
249
+ const now = new Date().toISOString();
250
+ try {
251
+ run(`INSERT INTO kg_facts (id, entity_id, relation_id, predicate, value, source_memory_id, confidence, valid_from, valid_to, created_at, updated_at)
252
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
253
+ id,
254
+ input.entityId,
255
+ input.relationId || null,
256
+ input.predicate,
257
+ input.value,
258
+ input.sourceMemoryId || null,
259
+ input.confidence ?? 1.0,
260
+ input.validFrom?.toISOString() || null,
261
+ input.validTo?.toISOString() || null,
262
+ now,
263
+ now
264
+ ]);
265
+ return getFact(id);
266
+ }
267
+ catch (error) {
268
+ throw new DatabaseError('Failed to create fact', error);
269
+ }
270
+ }
271
+ export function getFact(id) {
272
+ try {
273
+ const rows = query(`SELECT * FROM kg_facts WHERE id = ?`, [id]);
274
+ return rows.length > 0 ? mapFactRow(rows[0]) : null;
275
+ }
276
+ catch (error) {
277
+ throw new DatabaseError('Failed to get fact', error);
278
+ }
279
+ }
280
+ export function getFactsByEntity(entityId) {
281
+ try {
282
+ const rows = query(`SELECT * FROM kg_facts WHERE entity_id = ? ORDER BY created_at DESC`, [entityId]);
283
+ return rows.map(mapFactRow);
284
+ }
285
+ catch (error) {
286
+ throw new DatabaseError('Failed to get facts by entity', error);
287
+ }
288
+ }
289
+ export function deleteFact(id) {
290
+ run(`DELETE FROM kg_facts WHERE id = ?`, [id]);
291
+ }
292
+ export function getKGStats() {
293
+ try {
294
+ const entityCount = query(`SELECT COUNT(*) as count FROM kg_entities`)[0]?.count ?? 0;
295
+ const relationCount = query(`SELECT COUNT(*) as count FROM kg_relations`)[0]?.count ?? 0;
296
+ const factCount = query(`SELECT COUNT(*) as count FROM kg_facts`)[0]?.count ?? 0;
297
+ const entityTypeRows = query(`SELECT type, COUNT(*) as count FROM kg_entities GROUP BY type`);
298
+ const relationTypeRows = query(`SELECT relation_type, COUNT(*) as count FROM kg_relations GROUP BY relation_type`);
299
+ const entityTypes = {};
300
+ for (const row of entityTypeRows) {
301
+ entityTypes[row.type] = row.count;
302
+ }
303
+ const relationTypes = {};
304
+ for (const row of relationTypeRows) {
305
+ relationTypes[row.relation_type] = row.count;
306
+ }
307
+ return {
308
+ entityCount,
309
+ relationCount,
310
+ factCount,
311
+ entityTypes,
312
+ relationTypes
313
+ };
314
+ }
315
+ catch (error) {
316
+ throw new DatabaseError('Failed to get KG stats', error);
317
+ }
318
+ }
319
+ function mapEntityRow(row) {
320
+ return {
321
+ id: row.id,
322
+ name: row.name,
323
+ type: row.type,
324
+ properties: safeParseJson(row.properties),
325
+ sourceMemoryId: row.source_memory_id,
326
+ confidence: row.confidence,
327
+ createdAt: new Date(row.created_at),
328
+ updatedAt: new Date(row.updated_at)
329
+ };
330
+ }
331
+ function mapRelationRow(row) {
332
+ return {
333
+ id: row.id,
334
+ sourceEntityId: row.source_entity_id,
335
+ targetEntityId: row.target_entity_id,
336
+ relationType: row.relation_type,
337
+ properties: safeParseJson(row.properties),
338
+ sourceMemoryId: row.source_memory_id,
339
+ confidence: row.confidence,
340
+ bidirectional: row.bidirectional === 1,
341
+ createdAt: new Date(row.created_at),
342
+ updatedAt: new Date(row.updated_at)
343
+ };
344
+ }
345
+ function mapFactRow(row) {
346
+ return {
347
+ id: row.id,
348
+ entityId: row.entity_id,
349
+ relationId: row.relation_id,
350
+ predicate: row.predicate,
351
+ value: row.value,
352
+ confidence: row.confidence,
353
+ sourceMemoryId: row.source_memory_id,
354
+ validFrom: row.valid_from ? new Date(row.valid_from) : null,
355
+ validTo: row.valid_to ? new Date(row.valid_to) : null,
356
+ createdAt: new Date(row.created_at),
357
+ updatedAt: new Date(row.updated_at)
358
+ };
359
+ }
360
+ function safeParseJson(value) {
361
+ try {
362
+ const parsed = JSON.parse(value || '{}');
363
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
364
+ return parsed;
365
+ }
366
+ }
367
+ catch {
368
+ // ignore
369
+ }
370
+ return {};
371
+ }
372
+ //# sourceMappingURL=knowledge-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../../src/schema/knowledge-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgDnD,mCAAmC;AAEnC,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,iBAAiB;QACjB,EAAE,CAAC,GAAG,CAAC;;;;;;;;;;;KAWN,CAAC,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QAC/E,EAAE,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QAC/E,EAAE,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAE7F,kBAAkB;QAClB,EAAE,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;KAeN,CAAC,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QAC/F,EAAE,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;QAC/F,EAAE,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAE1F,cAAc;QACd,EAAE,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;KAgBN,CAAC,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QAChF,EAAE,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACnF,EAAE,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAEzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,8CAA8C;AAE9C,MAAM,UAAU,YAAY,CAAC,KAM5B;IACC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,GAAG,CACD;uCACiC,EACjC;YACE,EAAE;YACF,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,IAAI;YACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACtC,KAAK,CAAC,cAAc,IAAI,IAAI;YAC5B,KAAK,CAAC,UAAU,IAAI,GAAG;YACvB,GAAG;YACH,GAAG;SACJ,CACF,CAAC;QAEF,OAAO,SAAS,CAAC,EAAE,CAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAY,wCAAwC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAa;IAC1D,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,0CAA0C,CAAC;QACrD,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,IAAI,eAAe,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,GAAG,IAAI,UAAU,CAAC;QAElB,MAAM,IAAI,GAAG,KAAK,CAAY,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAMjC;IACC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU,EAAE,OAKxC;IACC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,WAAW,GAAa,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,MAAM,GAAc,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAE7E,OAAO,SAAS,CAAC,EAAE,CAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAIzB,EAAE;IACJ,IAAI,CAAC;QACH,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,GAAG,GAAG,4BAA4B,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAAC;QAClJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,KAAK,CAAY,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,2CAA2C;IAC3C,GAAG,CAAC,kJAAkJ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtK,GAAG,CAAC,6EAA6E,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7F,GAAG,CAAC,sCAAsC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,gDAAgD;AAEhD,MAAM,UAAU,cAAc,CAAC,KAQ9B;IACC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,GAAG,CACD;6CACuC,EACvC;YACE,EAAE;YACF,KAAK,CAAC,cAAc;YACpB,KAAK,CAAC,cAAc;YACpB,KAAK,CAAC,YAAY;YAClB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACtC,KAAK,CAAC,cAAc,IAAI,IAAI;YAC5B,KAAK,CAAC,UAAU,IAAI,GAAG;YACvB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,GAAG;YACH,GAAG;SACJ,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,EAAE,CAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAc,yCAAyC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,cAAsB,EAAE,cAAsB,EAAE,YAAoB;IAC/F,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAChB,8GAA8G,EAC9G,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,CAC/C,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,YAA8C,MAAM;IACzG,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,mCAAmC,CAAC;QAE9C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,GAAG,IAAI,sBAAsB,CAAC;QAChC,CAAC;aAAM,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,GAAG,IAAI,sBAAsB,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,gDAAgD,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAc,GAAG,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,6BAA6B;IAC7B,GAAG,CAAC,4CAA4C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,uCAAuC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4CAA4C;AAE5C,MAAM,UAAU,UAAU,CAAC,KAS1B;IACC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,GAAG,CACD;gDAC0C,EAC1C;YACE,EAAE;YACF,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,UAAU,IAAI,IAAI;YACxB,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,KAAK;YACX,KAAK,CAAC,cAAc,IAAI,IAAI;YAC5B,KAAK,CAAC,UAAU,IAAI,GAAG;YACvB,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;YACtC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI;YACpC,GAAG;YACH,GAAG;SACJ,CACF,CAAC;QAEF,OAAO,OAAO,CAAC,EAAE,CAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAU,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAU,qEAAqE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,GAAG,CAAC,mCAAmC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAYD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,KAAK,CAAoB,2CAA2C,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QACzG,MAAM,aAAa,GAAG,KAAK,CAAoB,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAC5G,MAAM,SAAS,GAAG,KAAK,CAAoB,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAEpG,MAAM,cAAc,GAAG,KAAK,CAAkC,+DAA+D,CAAC,CAAC;QAC/H,MAAM,gBAAgB,GAAG,KAAK,CAA2C,kFAAkF,CAAC,CAAC;QAE7J,MAAM,WAAW,GAA2B,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;YACX,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AA0CD,SAAS,YAAY,CAAC,GAAc;IAClC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAgB;IACtC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,aAAa,EAAE,GAAG,CAAC,aAAa,KAAK,CAAC;QACtC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3D,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QACrD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}