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,68 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { query, run } from '../utils/db.js';
3
+ import { DatabaseError, ProjectNotFoundError } from '../utils/errors.js';
4
+ function rowToProject(row) {
5
+ return {
6
+ id: row.id,
7
+ name: row.name,
8
+ rootPath: row.root_path,
9
+ createdAt: new Date(row.created_at)
10
+ };
11
+ }
12
+ export function createProject(input) {
13
+ const id = uuidv4();
14
+ const now = new Date().toISOString();
15
+ try {
16
+ run(`
17
+ INSERT INTO projects (id, name, root_path, created_at)
18
+ VALUES (?, ?, ?, ?)
19
+ `, [id, input.name, input.rootPath || null, now]);
20
+ return getProject(id);
21
+ }
22
+ catch (error) {
23
+ throw new DatabaseError('Failed to create project', error);
24
+ }
25
+ }
26
+ export function getProject(id) {
27
+ try {
28
+ const results = query('SELECT * FROM projects WHERE id = ?', [id]);
29
+ return results.length > 0 ? rowToProject(results[0]) : null;
30
+ }
31
+ catch (error) {
32
+ throw new DatabaseError('Failed to get project', error);
33
+ }
34
+ }
35
+ export function getProjectOrThrow(id) {
36
+ const project = getProject(id);
37
+ if (!project) {
38
+ throw new ProjectNotFoundError(id);
39
+ }
40
+ return project;
41
+ }
42
+ export function getProjectByName(name) {
43
+ try {
44
+ const results = query('SELECT * FROM projects WHERE name = ?', [name]);
45
+ return results.length > 0 ? rowToProject(results[0]) : null;
46
+ }
47
+ catch (error) {
48
+ throw new DatabaseError('Failed to get project by name', error);
49
+ }
50
+ }
51
+ export function listProjects() {
52
+ try {
53
+ const rows = query('SELECT * FROM projects ORDER BY created_at DESC');
54
+ return rows.map(rowToProject);
55
+ }
56
+ catch (error) {
57
+ throw new DatabaseError('Failed to list projects', error);
58
+ }
59
+ }
60
+ export function deleteProject(id) {
61
+ try {
62
+ run('DELETE FROM projects WHERE id = ?', [id]);
63
+ }
64
+ catch (error) {
65
+ throw new DatabaseError('Failed to delete project', error);
66
+ }
67
+ }
68
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/schema/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function initSchema(): void;
2
+ //# sourceMappingURL=schema-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-init.d.ts","sourceRoot":"","sources":["../../src/schema/schema-init.ts"],"names":[],"mappings":"AAyEA,wBAAgB,UAAU,IAAI,IAAI,CA8IjC"}
@@ -0,0 +1,199 @@
1
+ import { logger } from '../utils/logger.js';
2
+ import { getDatabase } from '../utils/db.js';
3
+ import { DatabaseError } from '../utils/errors.js';
4
+ import { initFullTextSearch } from './fulltext-search.js';
5
+ import { initMemorySessions } from './memory-session.js';
6
+ import { initHNSWIndex } from '../services/hnsw-index.js';
7
+ import { initKnowledgeGraph } from './knowledge-graph.js';
8
+ import { initMemoryTiers } from '../services/memory-tiers.js';
9
+ import { initMultiAgentSharing } from '../services/multi-agent-sharing.js';
10
+ /**
11
+ * Safely add a column to a table if it doesn't exist.
12
+ * Returns true if column was added or already exists.
13
+ */
14
+ function addColumnIfNotExists(db, table, column, definition) {
15
+ try {
16
+ // First check if table exists
17
+ const tableCheck = db.exec(`SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'`);
18
+ if (tableCheck.length === 0 || tableCheck[0].values.length === 0) {
19
+ // Table doesn't exist yet - will be created by CREATE TABLE, no migration needed
20
+ return true;
21
+ }
22
+ const result = db.exec(`PRAGMA table_info(${table})`);
23
+ const columns = result[0]?.values?.map((row) => row[1]) || [];
24
+ if (!columns.includes(column)) {
25
+ db.run(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
26
+ }
27
+ return true;
28
+ }
29
+ catch (error) {
30
+ // Ignore duplicate column name (column already exists)
31
+ if (error instanceof Error && (error.message.includes('duplicate column name') || error.message.includes('no such table'))) {
32
+ return true;
33
+ }
34
+ // Log other errors but don't throw - graceful degradation
35
+ logger.warn(`Failed to add column ${table}.${column}`, { table, column, error: error instanceof Error ? error.message : String(error) });
36
+ return false;
37
+ }
38
+ }
39
+ /**
40
+ * Migrate existing schema to add new columns for multi-agent support.
41
+ * Called BEFORE any CREATE INDEX statements to ensure columns exist first.
42
+ */
43
+ function migrateSchema() {
44
+ const db = getDatabase();
45
+ // Migrate memories table - add new columns if they don't exist
46
+ const memoriesColumns = [
47
+ { name: 'user_id', def: "TEXT DEFAULT 'default'" },
48
+ { name: 'agent_id', def: "TEXT DEFAULT 'default'" },
49
+ { name: 'project_id', def: "TEXT DEFAULT 'default'" },
50
+ { name: 'parent_id', def: 'TEXT' },
51
+ { name: 'lineage', def: "TEXT DEFAULT '[]'" },
52
+ ];
53
+ for (const col of memoriesColumns) {
54
+ addColumnIfNotExists(db, 'memories', col.name, col.def);
55
+ }
56
+ // Migrate memory_sessions table - add new columns if they don't exist
57
+ const sessionsColumns = [
58
+ { name: 'user_id', def: "TEXT DEFAULT 'default'" },
59
+ { name: 'agent_id', def: "TEXT DEFAULT 'default'" },
60
+ { name: 'project_id', def: "TEXT DEFAULT 'default'" },
61
+ ];
62
+ for (const col of sessionsColumns) {
63
+ addColumnIfNotExists(db, 'memory_sessions', col.name, col.def);
64
+ }
65
+ }
66
+ export function initSchema() {
67
+ const db = getDatabase();
68
+ try {
69
+ db.run(`
70
+ CREATE TABLE IF NOT EXISTS memories (
71
+ id TEXT PRIMARY KEY,
72
+ user_id TEXT NOT NULL DEFAULT 'default',
73
+ agent_id TEXT NOT NULL DEFAULT 'default',
74
+ project_id TEXT NOT NULL DEFAULT 'default',
75
+ content TEXT NOT NULL,
76
+ priority TEXT NOT NULL CHECK (priority IN ('anchored', 'constraint', 'decision', 'preference', 'fact')),
77
+ project_tags TEXT NOT NULL DEFAULT '[]',
78
+ anchored INTEGER NOT NULL DEFAULT 0,
79
+ access_count INTEGER NOT NULL DEFAULT 0,
80
+ version INTEGER NOT NULL DEFAULT 1,
81
+ updated_by TEXT,
82
+ parent_id TEXT,
83
+ lineage TEXT NOT NULL DEFAULT '[]',
84
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
85
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
86
+ expires_at TEXT,
87
+ deleted INTEGER NOT NULL DEFAULT 0
88
+ )
89
+ `);
90
+ // Run migrations BEFORE creating indexes that depend on new columns
91
+ migrateSchema();
92
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_priority ON memories(priority)`);
93
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_anchored ON memories(anchored)`);
94
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_project_tags ON memories(project_tags)`);
95
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_deleted ON memories(deleted)`);
96
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_user_id ON memories(user_id)`);
97
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_agent_id ON memories(agent_id)`);
98
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id)`);
99
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_user_agent_project ON memories(user_id, agent_id, project_id)`);
100
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_lineage ON memories(lineage)`);
101
+ db.run(`CREATE INDEX IF NOT EXISTS idx_memories_parent_id ON memories(parent_id)`);
102
+ db.run(`
103
+ CREATE TABLE IF NOT EXISTS compressions (
104
+ id TEXT PRIMARY KEY,
105
+ memory_id TEXT NOT NULL,
106
+ operation TEXT NOT NULL CHECK (operation IN ('snapshot', 'update', 'merge', 'archive')),
107
+ delta TEXT NOT NULL,
108
+ summary TEXT NOT NULL,
109
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
110
+ FOREIGN KEY (memory_id) REFERENCES memories(id)
111
+ )
112
+ `);
113
+ db.run(`CREATE INDEX IF NOT EXISTS idx_compressions_memory_id ON compressions(memory_id)`);
114
+ db.run(`
115
+ CREATE TABLE IF NOT EXISTS projects (
116
+ id TEXT PRIMARY KEY,
117
+ name TEXT NOT NULL UNIQUE,
118
+ root_path TEXT,
119
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
120
+ )
121
+ `);
122
+ db.run(`
123
+ CREATE TABLE IF NOT EXISTS memory_project_tags (
124
+ memory_id TEXT NOT NULL,
125
+ tag TEXT NOT NULL,
126
+ PRIMARY KEY (memory_id, tag),
127
+ FOREIGN KEY (memory_id) REFERENCES memories(id)
128
+ )
129
+ `);
130
+ db.run(`
131
+ CREATE TABLE IF NOT EXISTS memory_embeddings (
132
+ memory_id TEXT PRIMARY KEY,
133
+ content_hash TEXT NOT NULL,
134
+ embedding TEXT NOT NULL,
135
+ embedding_model TEXT,
136
+ embedding_model_version TEXT,
137
+ embedding_dimension INTEGER,
138
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
139
+ FOREIGN KEY (memory_id) REFERENCES memories(id)
140
+ )
141
+ `);
142
+ db.run(`
143
+ CREATE TABLE IF NOT EXISTS vector_index_metadata (
144
+ id TEXT PRIMARY KEY,
145
+ name TEXT NOT NULL UNIQUE,
146
+ type TEXT NOT NULL CHECK (type IN ('hnsw', 'ivf', 'flat', 'custom')) DEFAULT 'hnsw',
147
+ dimension INTEGER NOT NULL,
148
+ metric TEXT NOT NULL CHECK (metric IN ('cosine', 'l2', 'ip')) DEFAULT 'cosine',
149
+ params TEXT NOT NULL DEFAULT '{}',
150
+ status TEXT NOT NULL CHECK (status IN ('building', 'ready', 'error', 'stale')) DEFAULT 'building',
151
+ last_rebuild_at TEXT,
152
+ error_message TEXT,
153
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
154
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
155
+ )
156
+ `);
157
+ db.run(`CREATE INDEX IF NOT EXISTS idx_vector_index_metadata_status ON vector_index_metadata(status)`);
158
+ // Initialize Full-Text Search (wrapped in try/catch for graceful degradation - FTS5 may not be available in sql.js)
159
+ try {
160
+ initFullTextSearch();
161
+ }
162
+ catch (error) {
163
+ logger.warn('Failed to initialize FTS5 full-text search', { error: error instanceof Error ? error.message : String(error) });
164
+ }
165
+ initMemorySessions();
166
+ // Initialize HNSW index (wrapped in try/catch for graceful degradation)
167
+ try {
168
+ initHNSWIndex('default');
169
+ }
170
+ catch (error) {
171
+ logger.warn('Failed to initialize HNSW index', { error: error instanceof Error ? error.message : String(error) });
172
+ }
173
+ // Initialize Knowledge Graph (wrapped in try/catch for graceful degradation)
174
+ try {
175
+ initKnowledgeGraph();
176
+ }
177
+ catch (error) {
178
+ logger.warn('Failed to initialize Knowledge Graph', { error: error instanceof Error ? error.message : String(error) });
179
+ }
180
+ // Initialize Memory Tiers (wrapped in try/catch for graceful degradation)
181
+ try {
182
+ initMemoryTiers();
183
+ }
184
+ catch (error) {
185
+ logger.warn('Failed to initialize Memory Tiers', { error: error instanceof Error ? error.message : String(error) });
186
+ }
187
+ // Initialize Multi-Agent Sharing (wrapped in try/catch for graceful degradation)
188
+ try {
189
+ initMultiAgentSharing();
190
+ }
191
+ catch (error) {
192
+ logger.warn('Failed to initialize Multi-Agent Sharing', { error: error instanceof Error ? error.message : String(error) });
193
+ }
194
+ }
195
+ catch (error) {
196
+ throw new DatabaseError('Failed to initialize schema', error);
197
+ }
198
+ }
199
+ //# sourceMappingURL=schema-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-init.js","sourceRoot":"","sources":["../../src/schema/schema-init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface VectorIndexRecord {
2
+ id: string;
3
+ name: string;
4
+ type: string;
5
+ dimension: number;
6
+ metric: string;
7
+ params: Record<string, unknown>;
8
+ status: string;
9
+ lastRebuildAt: string | null;
10
+ errorMessage: string | null;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }
14
+ export declare function registerVectorIndex(record: {
15
+ id: string;
16
+ name: string;
17
+ dimension: number;
18
+ type?: string;
19
+ metric?: string;
20
+ params?: Record<string, unknown>;
21
+ }): VectorIndexRecord;
22
+ export declare function getVectorIndex(id: string): VectorIndexRecord | null;
23
+ export declare function getVectorIndexByName(name: string): VectorIndexRecord | null;
24
+ export declare function listVectorIndexes(): VectorIndexRecord[];
25
+ export declare function updateVectorIndexStatus(id: string, status: VectorIndexRecord['status'], errorMessage?: string): void;
26
+ export declare function removeVectorIndex(id: string): void;
27
+ export declare function ensureVectorIndexMetadata(name: string, dimension: number): VectorIndexRecord;
28
+ //# sourceMappingURL=vector-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-index.d.ts","sourceRoot":"","sources":["../../src/schema/vector-index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,iBAAiB,CAwDpB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAqBnE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAqB3E;AAED,wBAAgB,iBAAiB,IAAI,iBAAiB,EAAE,CAoBvD;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAsBpH;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAWlD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,CA8B5F"}
@@ -0,0 +1,179 @@
1
+ import { getDatabase, castParams } from '../utils/db.js';
2
+ import { DatabaseError } from '../utils/errors.js';
3
+ import { query } from '../utils/db.js';
4
+ export function registerVectorIndex(record) {
5
+ const db = getDatabase();
6
+ try {
7
+ const existing = query(`SELECT id FROM vector_index_metadata WHERE name = ?`, [record.name]);
8
+ if (existing.length > 0) {
9
+ const normalized = normalizeRecord(record);
10
+ db.run(`
11
+ UPDATE vector_index_metadata
12
+ SET type = ?, dimension = ?, metric = ?, params = ?, status = 'building', updated_at = datetime('now')
13
+ WHERE id = ?
14
+ `, [normalized.type, normalized.dimension, normalized.metric, JSON.stringify(normalized.params), existing[0].id]);
15
+ return getVectorIndex(existing[0].id);
16
+ }
17
+ const normalized = normalizeRecord({
18
+ ...record,
19
+ status: 'building',
20
+ lastRebuildAt: null,
21
+ errorMessage: null,
22
+ createdAt: new Date().toISOString(),
23
+ updatedAt: new Date().toISOString()
24
+ });
25
+ db.run(`
26
+ INSERT INTO vector_index_metadata (id, name, type, dimension, metric, params, status, last_rebuild_at, error_message, created_at, updated_at)
27
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
28
+ `, [
29
+ normalized.id,
30
+ normalized.name,
31
+ normalized.type,
32
+ normalized.dimension,
33
+ normalized.metric,
34
+ JSON.stringify(normalized.params),
35
+ normalized.status,
36
+ normalized.lastRebuildAt,
37
+ normalized.errorMessage,
38
+ normalized.createdAt,
39
+ normalized.updatedAt
40
+ ]);
41
+ return getVectorIndex(normalized.id);
42
+ }
43
+ catch (error) {
44
+ throw new DatabaseError('Failed to register vector index', error);
45
+ }
46
+ }
47
+ export function getVectorIndex(id) {
48
+ try {
49
+ const rows = query(`SELECT * FROM vector_index_metadata WHERE id = ?`, [id]);
50
+ if (rows.length === 0)
51
+ return null;
52
+ return mapRow(rows[0]);
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ }
58
+ export function getVectorIndexByName(name) {
59
+ try {
60
+ const rows = query(`SELECT * FROM vector_index_metadata WHERE name = ?`, [name]);
61
+ if (rows.length === 0)
62
+ return null;
63
+ return mapRow(rows[0]);
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ export function listVectorIndexes() {
70
+ try {
71
+ const rows = query(`SELECT * FROM vector_index_metadata ORDER BY updated_at DESC`);
72
+ return rows.map(mapRow);
73
+ }
74
+ catch (error) {
75
+ throw new DatabaseError('Failed to list vector indexes', error);
76
+ }
77
+ }
78
+ export function updateVectorIndexStatus(id, status, errorMessage) {
79
+ const db = getDatabase();
80
+ try {
81
+ const update = ['status = ?', 'updated_at = datetime(\'now\')'];
82
+ const values = [status];
83
+ if (status === 'ready') {
84
+ update.push('last_rebuild_at = datetime(\'now\')');
85
+ update.push('error_message = NULL');
86
+ }
87
+ if (errorMessage) {
88
+ update.push('error_message = ?');
89
+ values.push(errorMessage);
90
+ }
91
+ values.push(id);
92
+ db.run(`UPDATE vector_index_metadata SET ${update.join(', ')} WHERE id = ?`, castParams(values));
93
+ }
94
+ catch (error) {
95
+ throw new DatabaseError('Failed to update vector index status', error);
96
+ }
97
+ }
98
+ export function removeVectorIndex(id) {
99
+ try {
100
+ query(`DELETE FROM vector_index_metadata WHERE id = ?`, [id]);
101
+ if (!getVectorIndex(id)) {
102
+ throw new DatabaseError('Vector index not found', new Error(id));
103
+ }
104
+ }
105
+ catch (error) {
106
+ if (error instanceof DatabaseError)
107
+ throw error;
108
+ throw new DatabaseError('Failed to remove vector index', error);
109
+ }
110
+ }
111
+ export function ensureVectorIndexMetadata(name, dimension) {
112
+ const existing = getVectorIndexByName(name);
113
+ if (existing) {
114
+ if (existing.dimension !== dimension) {
115
+ const rebuilt = registerVectorIndex({
116
+ id: existing.id,
117
+ name,
118
+ dimension,
119
+ type: existing.type,
120
+ metric: existing.metric,
121
+ params: existing.params
122
+ });
123
+ updateVectorIndexStatus(rebuilt.id, 'building');
124
+ return rebuilt;
125
+ }
126
+ return existing;
127
+ }
128
+ const created = registerVectorIndex({
129
+ id: `vindex-${name}`,
130
+ name,
131
+ dimension,
132
+ metric: 'cosine'
133
+ });
134
+ updateVectorIndexStatus(created.id, 'building');
135
+ return created;
136
+ }
137
+ function normalizeRecord(record) {
138
+ return {
139
+ id: record.id,
140
+ name: record.name,
141
+ type: record.type ?? 'hnsw',
142
+ dimension: record.dimension,
143
+ metric: record.metric ?? 'cosine',
144
+ params: record.params ?? {},
145
+ status: record.status ?? 'building',
146
+ lastRebuildAt: record.lastRebuildAt ?? null,
147
+ errorMessage: record.errorMessage ?? null,
148
+ createdAt: record.createdAt ?? new Date().toISOString(),
149
+ updatedAt: record.updatedAt ?? new Date().toISOString()
150
+ };
151
+ }
152
+ function mapRow(row) {
153
+ return {
154
+ id: row.id,
155
+ name: row.name,
156
+ type: row.type,
157
+ dimension: row.dimension,
158
+ metric: row.metric,
159
+ params: safeParseJson(row.params),
160
+ status: row.status,
161
+ lastRebuildAt: row.last_rebuild_at,
162
+ errorMessage: row.error_message,
163
+ createdAt: row.created_at,
164
+ updatedAt: row.updated_at
165
+ };
166
+ }
167
+ function safeParseJson(value) {
168
+ try {
169
+ const parsed = JSON.parse(value || '{}');
170
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
171
+ return parsed;
172
+ }
173
+ }
174
+ catch {
175
+ // ignore malformed json and return empty object
176
+ }
177
+ return {};
178
+ }
179
+ //# sourceMappingURL=vector-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-index.js","sourceRoot":"","sources":["../../src/schema/vector-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Base adapter interface for MCP-compatible agents.
3
+ *
4
+ * Each adapter encapsulates how a specific AI agent runtime
5
+ * spawns a child process and communicates with the
6
+ * Context Gatekeeper MCP server.
7
+ */
8
+ import { ChildProcess } from 'node:child_process';
9
+ export type PermissionLevel = 'read' | 'write' | 'watchdog';
10
+ export interface AgentConfig {
11
+ /** Name of the agent (used in reports) */
12
+ name: string;
13
+ /** Path to the agent CLI binary */
14
+ cliPath?: string;
15
+ /** Optional arguments to pass before the prompt */
16
+ cliArgs?: string[];
17
+ /** MCP config object written to a temp file before spawning */
18
+ mcpConfig: Record<string, unknown>;
19
+ /** Token configuration for Watchdog tests */
20
+ tokens?: {
21
+ read?: string;
22
+ write?: string;
23
+ watchdog?: string;
24
+ };
25
+ /** Per-agent DATA_DIR override */
26
+ dataDir?: string;
27
+ /** Timeout in ms for any single tool call (default 30000) */
28
+ timeoutMs?: number;
29
+ }
30
+ export interface ToolCallResult {
31
+ agent: string;
32
+ tool: string;
33
+ success: boolean;
34
+ latencyMs: number;
35
+ payload?: unknown;
36
+ error?: string;
37
+ raw?: string;
38
+ }
39
+ export interface ToolCallRequest {
40
+ tool: string;
41
+ arguments: Record<string, unknown>;
42
+ }
43
+ /**
44
+ * Abstract base class for agent adapters.
45
+ *
46
+ * Subclasses must implement `buildSpawnCommand` to construct the
47
+ * child process invocation. The base class handles:
48
+ * - temp directory creation and cleanup
49
+ * - MCP config file generation
50
+ * - child process lifecycle (spawn, stdin/stdout JSON-RPC, kill)
51
+ */
52
+ export declare abstract class BaseAgentAdapter {
53
+ protected child: ChildProcess | null;
54
+ protected dataDir: string;
55
+ protected mcpConfigPath: string;
56
+ protected config: AgentConfig;
57
+ constructor(config: AgentConfig);
58
+ abstract get name(): string;
59
+ abstract buildSpawnCommand(): {
60
+ command: string;
61
+ args: string[];
62
+ env: Record<string, string | undefined>;
63
+ };
64
+ /** Spawn the agent child process. Returns the process handle. */
65
+ spawnAgent(prompt: string): ChildProcess;
66
+ /** Read MCP server binary path from config. */
67
+ protected getMcpServerCommand(): {
68
+ command: string;
69
+ args: string[];
70
+ };
71
+ /** Build environment variables for a direct MCP server subprocess test. */
72
+ buildMcpServerEnv(extra?: Record<string, string | undefined>): Record<string, string | undefined>;
73
+ /** Wait for the child to exit. Resolves with the exit code. */
74
+ waitForExit(timeoutMs?: number): Promise<{
75
+ code: number | null;
76
+ stdout: string;
77
+ stderr: string;
78
+ }>;
79
+ /** Clean up temp directories. */
80
+ cleanup(): void;
81
+ /** Get the absolute path to the temp data directory for this agent run. */
82
+ getDataDir(): string;
83
+ }
84
+ /** Resolve the MCP server binary path that will be used by all adapters. */
85
+ export declare function resolveMcpServerBin(): {
86
+ command: string;
87
+ args: string[];
88
+ };
89
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,6CAA6C;IAC7C,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,8BAAsB,gBAAgB;IACpC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,MAAM,EAAE,WAAW;IAQ/B,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,IAAI;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;KACzC;IAED,iEAAiE;IACjE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAoBxC,+CAA+C;IAC/C,SAAS,CAAC,mBAAmB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAYpE,2EAA2E;IAC3E,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAgBjG,+DAA+D;IACzD,WAAW,CAAC,SAAS,SAAiC,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAwB/H,iCAAiC;IACjC,OAAO,IAAI,IAAI;IAWf,2EAA2E;IAC3E,UAAU,IAAI,MAAM;CAGrB;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAezE"}