engram-mcp-server 1.2.8 → 1.2.9

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 (210) hide show
  1. package/README.md +12 -1
  2. package/dist/constants.d.ts +1 -1
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +6 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/index.js +7 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/installer/ide-detector.d.ts.map +1 -1
  9. package/dist/installer/ide-detector.js +10 -6
  10. package/dist/installer/ide-detector.js.map +1 -1
  11. package/dist/installer/index.d.ts.map +1 -1
  12. package/dist/installer/index.js +79 -15
  13. package/dist/installer/index.js.map +1 -1
  14. package/package.json +6 -3
  15. package/dist/installer.d.ts +0 -2
  16. package/dist/installer.d.ts.map +0 -1
  17. package/dist/installer.js +0 -315
  18. package/dist/installer.js.map +0 -1
  19. package/dist/src/constants.d.ts +0 -21
  20. package/dist/src/constants.d.ts.map +0 -1
  21. package/dist/src/constants.js +0 -81
  22. package/dist/src/constants.js.map +0 -1
  23. package/dist/src/database.d.ts +0 -32
  24. package/dist/src/database.d.ts.map +0 -1
  25. package/dist/src/database.js +0 -143
  26. package/dist/src/database.js.map +0 -1
  27. package/dist/src/errors.d.ts +0 -40
  28. package/dist/src/errors.d.ts.map +0 -1
  29. package/dist/src/errors.js +0 -63
  30. package/dist/src/errors.js.map +0 -1
  31. package/dist/src/index.d.ts +0 -3
  32. package/dist/src/index.d.ts.map +0 -1
  33. package/dist/src/index.js +0 -89
  34. package/dist/src/index.js.map +0 -1
  35. package/dist/src/installer/config-writer.d.ts +0 -25
  36. package/dist/src/installer/config-writer.d.ts.map +0 -1
  37. package/dist/src/installer/config-writer.js +0 -86
  38. package/dist/src/installer/config-writer.js.map +0 -1
  39. package/dist/src/installer/ide-configs.d.ts +0 -19
  40. package/dist/src/installer/ide-configs.d.ts.map +0 -1
  41. package/dist/src/installer/ide-configs.js +0 -131
  42. package/dist/src/installer/ide-configs.js.map +0 -1
  43. package/dist/src/installer/ide-detector.d.ts +0 -6
  44. package/dist/src/installer/ide-detector.d.ts.map +0 -1
  45. package/dist/src/installer/ide-detector.js +0 -45
  46. package/dist/src/installer/ide-detector.js.map +0 -1
  47. package/dist/src/installer/index.d.ts +0 -2
  48. package/dist/src/installer/index.d.ts.map +0 -1
  49. package/dist/src/installer/index.js +0 -229
  50. package/dist/src/installer/index.js.map +0 -1
  51. package/dist/src/logger.d.ts +0 -10
  52. package/dist/src/logger.d.ts.map +0 -1
  53. package/dist/src/logger.js +0 -51
  54. package/dist/src/logger.js.map +0 -1
  55. package/dist/src/migrations.d.ts +0 -4
  56. package/dist/src/migrations.d.ts.map +0 -1
  57. package/dist/src/migrations.js +0 -343
  58. package/dist/src/migrations.js.map +0 -1
  59. package/dist/src/repositories/changes.repo.d.ts +0 -35
  60. package/dist/src/repositories/changes.repo.d.ts.map +0 -1
  61. package/dist/src/repositories/changes.repo.js +0 -53
  62. package/dist/src/repositories/changes.repo.js.map +0 -1
  63. package/dist/src/repositories/config.repo.d.ts +0 -11
  64. package/dist/src/repositories/config.repo.d.ts.map +0 -1
  65. package/dist/src/repositories/config.repo.js +0 -38
  66. package/dist/src/repositories/config.repo.js.map +0 -1
  67. package/dist/src/repositories/conventions.repo.d.ts +0 -15
  68. package/dist/src/repositories/conventions.repo.d.ts.map +0 -1
  69. package/dist/src/repositories/conventions.repo.js +0 -39
  70. package/dist/src/repositories/conventions.repo.js.map +0 -1
  71. package/dist/src/repositories/decisions.repo.d.ts +0 -19
  72. package/dist/src/repositories/decisions.repo.d.ts.map +0 -1
  73. package/dist/src/repositories/decisions.repo.js +0 -48
  74. package/dist/src/repositories/decisions.repo.js.map +0 -1
  75. package/dist/src/repositories/events.repo.d.ts +0 -34
  76. package/dist/src/repositories/events.repo.d.ts.map +0 -1
  77. package/dist/src/repositories/events.repo.js +0 -71
  78. package/dist/src/repositories/events.repo.js.map +0 -1
  79. package/dist/src/repositories/file-notes.repo.d.ts +0 -26
  80. package/dist/src/repositories/file-notes.repo.d.ts.map +0 -1
  81. package/dist/src/repositories/file-notes.repo.js +0 -55
  82. package/dist/src/repositories/file-notes.repo.js.map +0 -1
  83. package/dist/src/repositories/index.d.ts +0 -38
  84. package/dist/src/repositories/index.d.ts.map +0 -1
  85. package/dist/src/repositories/index.js +0 -41
  86. package/dist/src/repositories/index.js.map +0 -1
  87. package/dist/src/repositories/milestones.repo.d.ts +0 -10
  88. package/dist/src/repositories/milestones.repo.d.ts.map +0 -1
  89. package/dist/src/repositories/milestones.repo.js +0 -20
  90. package/dist/src/repositories/milestones.repo.js.map +0 -1
  91. package/dist/src/repositories/sessions.repo.d.ts +0 -27
  92. package/dist/src/repositories/sessions.repo.d.ts.map +0 -1
  93. package/dist/src/repositories/sessions.repo.js +0 -61
  94. package/dist/src/repositories/sessions.repo.js.map +0 -1
  95. package/dist/src/repositories/snapshot.repo.d.ts +0 -11
  96. package/dist/src/repositories/snapshot.repo.d.ts.map +0 -1
  97. package/dist/src/repositories/snapshot.repo.js +0 -17
  98. package/dist/src/repositories/snapshot.repo.js.map +0 -1
  99. package/dist/src/repositories/tasks.repo.d.ts +0 -40
  100. package/dist/src/repositories/tasks.repo.d.ts.map +0 -1
  101. package/dist/src/repositories/tasks.repo.js +0 -90
  102. package/dist/src/repositories/tasks.repo.js.map +0 -1
  103. package/dist/src/response.d.ts +0 -28
  104. package/dist/src/response.d.ts.map +0 -1
  105. package/dist/src/response.js +0 -38
  106. package/dist/src/response.js.map +0 -1
  107. package/dist/src/scripts/install-hooks.d.ts +0 -3
  108. package/dist/src/scripts/install-hooks.d.ts.map +0 -1
  109. package/dist/src/scripts/install-hooks.js +0 -89
  110. package/dist/src/scripts/install-hooks.js.map +0 -1
  111. package/dist/src/services/compaction.service.d.ts +0 -27
  112. package/dist/src/services/compaction.service.d.ts.map +0 -1
  113. package/dist/src/services/compaction.service.js +0 -93
  114. package/dist/src/services/compaction.service.js.map +0 -1
  115. package/dist/src/services/event-trigger.service.d.ts +0 -24
  116. package/dist/src/services/event-trigger.service.d.ts.map +0 -1
  117. package/dist/src/services/event-trigger.service.js +0 -60
  118. package/dist/src/services/event-trigger.service.js.map +0 -1
  119. package/dist/src/services/git.service.d.ts +0 -20
  120. package/dist/src/services/git.service.d.ts.map +0 -1
  121. package/dist/src/services/git.service.js +0 -88
  122. package/dist/src/services/git.service.js.map +0 -1
  123. package/dist/src/services/index.d.ts +0 -5
  124. package/dist/src/services/index.d.ts.map +0 -1
  125. package/dist/src/services/index.js +0 -8
  126. package/dist/src/services/index.js.map +0 -1
  127. package/dist/src/services/project-scan.service.d.ts +0 -19
  128. package/dist/src/services/project-scan.service.d.ts.map +0 -1
  129. package/dist/src/services/project-scan.service.js +0 -66
  130. package/dist/src/services/project-scan.service.js.map +0 -1
  131. package/dist/src/tools/backup.d.ts +0 -3
  132. package/dist/src/tools/backup.d.ts.map +0 -1
  133. package/dist/src/tools/backup.js +0 -191
  134. package/dist/src/tools/backup.js.map +0 -1
  135. package/dist/src/tools/changes.d.ts +0 -3
  136. package/dist/src/tools/changes.d.ts.map +0 -1
  137. package/dist/src/tools/changes.js +0 -97
  138. package/dist/src/tools/changes.js.map +0 -1
  139. package/dist/src/tools/compaction.d.ts +0 -3
  140. package/dist/src/tools/compaction.d.ts.map +0 -1
  141. package/dist/src/tools/compaction.js +0 -151
  142. package/dist/src/tools/compaction.js.map +0 -1
  143. package/dist/src/tools/conventions.d.ts +0 -3
  144. package/dist/src/tools/conventions.d.ts.map +0 -1
  145. package/dist/src/tools/conventions.js +0 -121
  146. package/dist/src/tools/conventions.js.map +0 -1
  147. package/dist/src/tools/decisions.d.ts +0 -3
  148. package/dist/src/tools/decisions.d.ts.map +0 -1
  149. package/dist/src/tools/decisions.js +0 -136
  150. package/dist/src/tools/decisions.js.map +0 -1
  151. package/dist/src/tools/export-import.d.ts +0 -3
  152. package/dist/src/tools/export-import.d.ts.map +0 -1
  153. package/dist/src/tools/export-import.js +0 -180
  154. package/dist/src/tools/export-import.js.map +0 -1
  155. package/dist/src/tools/file-notes.d.ts +0 -3
  156. package/dist/src/tools/file-notes.d.ts.map +0 -1
  157. package/dist/src/tools/file-notes.js +0 -104
  158. package/dist/src/tools/file-notes.js.map +0 -1
  159. package/dist/src/tools/intelligence.d.ts +0 -3
  160. package/dist/src/tools/intelligence.d.ts.map +0 -1
  161. package/dist/src/tools/intelligence.js +0 -427
  162. package/dist/src/tools/intelligence.js.map +0 -1
  163. package/dist/src/tools/milestones.d.ts +0 -3
  164. package/dist/src/tools/milestones.d.ts.map +0 -1
  165. package/dist/src/tools/milestones.js +0 -71
  166. package/dist/src/tools/milestones.js.map +0 -1
  167. package/dist/src/tools/scheduler.d.ts +0 -3
  168. package/dist/src/tools/scheduler.d.ts.map +0 -1
  169. package/dist/src/tools/scheduler.js +0 -363
  170. package/dist/src/tools/scheduler.js.map +0 -1
  171. package/dist/src/tools/sessions.d.ts +0 -3
  172. package/dist/src/tools/sessions.d.ts.map +0 -1
  173. package/dist/src/tools/sessions.js +0 -356
  174. package/dist/src/tools/sessions.js.map +0 -1
  175. package/dist/src/tools/stats.d.ts +0 -3
  176. package/dist/src/tools/stats.d.ts.map +0 -1
  177. package/dist/src/tools/stats.js +0 -63
  178. package/dist/src/tools/stats.js.map +0 -1
  179. package/dist/src/tools/tasks.d.ts +0 -3
  180. package/dist/src/tools/tasks.d.ts.map +0 -1
  181. package/dist/src/tools/tasks.js +0 -206
  182. package/dist/src/tools/tasks.js.map +0 -1
  183. package/dist/src/types.d.ts +0 -170
  184. package/dist/src/types.d.ts.map +0 -1
  185. package/dist/src/types.js +0 -5
  186. package/dist/src/types.js.map +0 -1
  187. package/dist/src/utils.d.ts +0 -58
  188. package/dist/src/utils.d.ts.map +0 -1
  189. package/dist/src/utils.js +0 -190
  190. package/dist/src/utils.js.map +0 -1
  191. package/dist/tests/helpers/test-db.d.ts +0 -12
  192. package/dist/tests/helpers/test-db.d.ts.map +0 -1
  193. package/dist/tests/helpers/test-db.js +0 -149
  194. package/dist/tests/helpers/test-db.js.map +0 -1
  195. package/dist/tests/installer/installer.test.d.ts +0 -2
  196. package/dist/tests/installer/installer.test.d.ts.map +0 -1
  197. package/dist/tests/installer/installer.test.js +0 -160
  198. package/dist/tests/installer/installer.test.js.map +0 -1
  199. package/dist/tests/repositories/repos.test.d.ts +0 -2
  200. package/dist/tests/repositories/repos.test.d.ts.map +0 -1
  201. package/dist/tests/repositories/repos.test.js +0 -220
  202. package/dist/tests/repositories/repos.test.js.map +0 -1
  203. package/dist/tools/maintenance.d.ts +0 -3
  204. package/dist/tools/maintenance.d.ts.map +0 -1
  205. package/dist/tools/maintenance.js +0 -647
  206. package/dist/tools/maintenance.js.map +0 -1
  207. package/dist/tools/memory.d.ts +0 -3
  208. package/dist/tools/memory.d.ts.map +0 -1
  209. package/dist/tools/memory.js +0 -446
  210. package/dist/tools/memory.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tasks.repo.js","sourceRoot":"","sources":["../../../src/repositories/tasks.repo.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Standard MCP tool response types.
3
- */
4
- interface McpToolResponse {
5
- content: Array<{
6
- type: "text";
7
- text: string;
8
- }>;
9
- isError?: boolean;
10
- }
11
- /**
12
- * Return a successful JSON response.
13
- */
14
- export declare function success(data: Record<string, unknown>): McpToolResponse;
15
- /**
16
- * Return a successful plain-text response.
17
- */
18
- export declare function textResult(message: string): McpToolResponse;
19
- /**
20
- * Return an error response.
21
- */
22
- export declare function error(message: string): McpToolResponse;
23
- /**
24
- * Return an error response with structured data.
25
- */
26
- export declare function errorWithData(message: string, data: Record<string, unknown>): McpToolResponse;
27
- export {};
28
- //# sourceMappingURL=response.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,UAAU,eAAe;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAItE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAI3D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAKtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAK7F"}
@@ -1,38 +0,0 @@
1
- // ============================================================================
2
- // Engram MCP Server — Response Helpers
3
- // ============================================================================
4
- /**
5
- * Return a successful JSON response.
6
- */
7
- export function success(data) {
8
- return {
9
- content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
10
- };
11
- }
12
- /**
13
- * Return a successful plain-text response.
14
- */
15
- export function textResult(message) {
16
- return {
17
- content: [{ type: "text", text: message }],
18
- };
19
- }
20
- /**
21
- * Return an error response.
22
- */
23
- export function error(message) {
24
- return {
25
- isError: true,
26
- content: [{ type: "text", text: message }],
27
- };
28
- }
29
- /**
30
- * Return an error response with structured data.
31
- */
32
- export function errorWithData(message, data) {
33
- return {
34
- isError: true,
35
- content: [{ type: "text", text: JSON.stringify({ error: message, ...data }, null, 2) }],
36
- };
37
- }
38
- //# sourceMappingURL=response.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAU/E;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACjD,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACjC,OAAO;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAA6B;IACxE,OAAO;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACN,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=install-hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-hooks.d.ts","sourceRoot":"","sources":["../../../src/scripts/install-hooks.ts"],"names":[],"mappings":""}
@@ -1,89 +0,0 @@
1
- #!/usr/bin/env node
2
- // ============================================================================
3
- // Engram — Git Hook Installer
4
- //
5
- // Installs a post-commit hook that records git commits in Engram's memory,
6
- // so the agent always knows what changed between sessions even without
7
- // explicitly recording changes.
8
- // ============================================================================
9
- import * as fs from "fs";
10
- import * as path from "path";
11
- const HOOK_CONTENT = `#!/bin/bash
12
- # ─────────────────────────────────────────────────────────────
13
- # Engram Post-Commit Hook
14
- # Records commit info into .engram/git-changes.log
15
- # The Engram MCP server reads this on session start.
16
- # ─────────────────────────────────────────────────────────────
17
-
18
- ENGRAM_DIR=".engram"
19
- CHANGE_LOG="$ENGRAM_DIR/git-changes.log"
20
-
21
- # Ensure the directory exists
22
- mkdir -p "$ENGRAM_DIR"
23
-
24
- # Get commit info
25
- HASH=$(git rev-parse --short HEAD)
26
- MSG=$(git log -1 --pretty=format:"%s")
27
- AUTHOR=$(git log -1 --pretty=format:"%an")
28
- DATE=$(git log -1 --pretty=format:"%aI")
29
- FILES=$(git diff-tree --no-commit-id --name-status -r HEAD)
30
-
31
- # Append to change log
32
- {
33
- echo "--- COMMIT $HASH ---"
34
- echo "date: $DATE"
35
- echo "author: $AUTHOR"
36
- echo "message: $MSG"
37
- echo "files:"
38
- echo "$FILES"
39
- echo "---"
40
- echo ""
41
- } >> "$CHANGE_LOG"
42
-
43
- # Keep only last 200 entries to prevent unbounded growth
44
- if [ -f "$CHANGE_LOG" ]; then
45
- LINES=$(wc -l < "$CHANGE_LOG")
46
- if [ "$LINES" -gt 2000 ]; then
47
- tail -1000 "$CHANGE_LOG" > "$CHANGE_LOG.tmp"
48
- mv "$CHANGE_LOG.tmp" "$CHANGE_LOG"
49
- fi
50
- fi
51
- `;
52
- function installHooks() {
53
- // Find .git directory
54
- let dir = process.cwd();
55
- while (dir !== path.dirname(dir)) {
56
- if (fs.existsSync(path.join(dir, ".git"))) {
57
- break;
58
- }
59
- dir = path.dirname(dir);
60
- }
61
- const gitDir = path.join(dir, ".git");
62
- if (!fs.existsSync(gitDir)) {
63
- console.error("Error: Not a git repository. Navigate to a project with .git and try again.");
64
- process.exit(1);
65
- }
66
- const hooksDir = path.join(gitDir, "hooks");
67
- fs.mkdirSync(hooksDir, { recursive: true });
68
- const hookPath = path.join(hooksDir, "post-commit");
69
- // Check for existing hook
70
- if (fs.existsSync(hookPath)) {
71
- const existing = fs.readFileSync(hookPath, "utf-8");
72
- if (existing.includes("Engram Post-Commit Hook")) {
73
- console.log("Engram post-commit hook is already installed.");
74
- return;
75
- }
76
- // Append to existing hook
77
- fs.appendFileSync(hookPath, "\n\n" + HOOK_CONTENT);
78
- console.log("Engram post-commit hook appended to existing hook.");
79
- }
80
- else {
81
- fs.writeFileSync(hookPath, HOOK_CONTENT);
82
- console.log("Engram post-commit hook installed.");
83
- }
84
- // Make executable
85
- fs.chmodSync(hookPath, "755");
86
- console.log(`Hook location: ${hookPath}`);
87
- }
88
- installHooks();
89
- //# sourceMappingURL=install-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../../../src/scripts/install-hooks.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,8BAA8B;AAC9B,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,gCAAgC;AAChC,+EAA+E;AAE/E,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCpB,CAAC;AAEF,SAAS,YAAY;IACnB,sBAAsB;IACtB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM;QACR,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEpD,0BAA0B;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,0BAA0B;QAC1B,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,kBAAkB;IAClB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,YAAY,EAAE,CAAC"}
@@ -1,27 +0,0 @@
1
- import type { Database as DatabaseType } from "better-sqlite3";
2
- import type { Repositories } from "../repositories/index.js";
3
- /**
4
- * Handles compaction of old session data — both auto-compact (session start)
5
- * and manual compact (user-triggered).
6
- */
7
- export declare class CompactionService {
8
- private db;
9
- private repos;
10
- constructor(db: DatabaseType, repos: Repositories);
11
- /**
12
- * Auto-compaction: runs at session start if total completed sessions exceed threshold.
13
- * Returns true if compaction was performed.
14
- */
15
- autoCompact(threshold: number): boolean;
16
- /**
17
- * Manual compaction with dry-run support.
18
- */
19
- manualCompact(keepSessions: number, maxAgeDays?: number, dryRun?: boolean): {
20
- sessionsCompacted: number;
21
- changesSummarized: number;
22
- backupPath?: string;
23
- };
24
- private compactBeforeCutoff;
25
- private countCompactableSessions;
26
- }
27
- //# sourceMappingURL=compaction.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compaction.service.d.ts","sourceRoot":"","sources":["../../../src/services/compaction.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK;gBADL,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,YAAY;IAG/B;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAoBvC;;OAEG;IACH,aAAa,CACT,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,GAAE,OAAc,GACvB;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IA+BhF,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,wBAAwB;CAYnC"}
@@ -1,93 +0,0 @@
1
- // ============================================================================
2
- // Engram MCP Server — Compaction Service
3
- // ============================================================================
4
- import { backupDatabase } from "../database.js";
5
- import { log } from "../logger.js";
6
- /**
7
- * Handles compaction of old session data — both auto-compact (session start)
8
- * and manual compact (user-triggered).
9
- */
10
- export class CompactionService {
11
- db;
12
- repos;
13
- constructor(db, repos) {
14
- this.db = db;
15
- this.repos = repos;
16
- }
17
- /**
18
- * Auto-compaction: runs at session start if total completed sessions exceed threshold.
19
- * Returns true if compaction was performed.
20
- */
21
- autoCompact(threshold) {
22
- const configThreshold = this.repos.config.getInt("compact_threshold", threshold);
23
- const autoEnabled = this.repos.config.getBool("auto_compact", true);
24
- const totalSessions = this.repos.sessions.countCompleted();
25
- if (totalSessions <= configThreshold || !autoEnabled) {
26
- return false;
27
- }
28
- log.info(`Auto-compacting: ${totalSessions} sessions exceed threshold of ${configThreshold}`);
29
- try {
30
- backupDatabase();
31
- }
32
- catch { /* best effort */ }
33
- const cutoffId = this.repos.sessions.getIdAtOffset(configThreshold);
34
- if (!cutoffId)
35
- return false;
36
- this.compactBeforeCutoff(cutoffId);
37
- log.info("Auto-compaction complete.");
38
- return true;
39
- }
40
- /**
41
- * Manual compaction with dry-run support.
42
- */
43
- manualCompact(keepSessions, maxAgeDays, dryRun = true) {
44
- const cutoffId = this.repos.sessions.getIdAtOffset(keepSessions);
45
- if (!cutoffId) {
46
- return { sessionsCompacted: 0, changesSummarized: 0 };
47
- }
48
- const sessionsToCompact = this.countCompactableSessions(cutoffId, maxAgeDays);
49
- const changesToSummarize = this.repos.changes.countBeforeCutoff(cutoffId);
50
- if (dryRun) {
51
- return { sessionsCompacted: sessionsToCompact, changesSummarized: changesToSummarize };
52
- }
53
- // Create backup before compacting
54
- let backupPath;
55
- try {
56
- backupPath = backupDatabase();
57
- log.info(`Auto-backup created before compaction: ${backupPath}`);
58
- }
59
- catch (e) {
60
- log.warn(`Failed to create backup before compaction: ${e}`);
61
- }
62
- this.compactBeforeCutoff(cutoffId);
63
- // Vacuum to reclaim space
64
- this.db.exec("VACUUM");
65
- return { sessionsCompacted: sessionsToCompact, changesSummarized: changesToSummarize, backupPath };
66
- }
67
- compactBeforeCutoff(cutoffId) {
68
- const now = new Date().toISOString();
69
- const doCompact = this.db.transaction(() => {
70
- const sessionIds = this.repos.sessions.getCompletedBeforeId(cutoffId);
71
- for (const sid of sessionIds) {
72
- const changes = this.repos.changes.getBySession(sid);
73
- if (changes.length > 0) {
74
- const summary = changes.map(c => `[${c.change_type}] ${c.file_path}`).join("; ");
75
- this.repos.changes.insertCompacted(sid, now, `Compacted ${changes.length} changes: ${summary.slice(0, 2000)}`);
76
- }
77
- this.repos.changes.deleteNonCompacted(sid);
78
- }
79
- });
80
- doCompact();
81
- }
82
- countCompactableSessions(cutoffId, maxAgeDays) {
83
- let query = "SELECT COUNT(*) as c FROM sessions WHERE id <= ? AND ended_at IS NOT NULL";
84
- const params = [cutoffId];
85
- if (maxAgeDays) {
86
- const cutoffDate = new Date(Date.now() - maxAgeDays * 86400000).toISOString();
87
- query += " AND started_at < ?";
88
- params.push(cutoffDate);
89
- }
90
- return this.db.prepare(query).get(...params).c;
91
- }
92
- }
93
- //# sourceMappingURL=compaction.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compaction.service.js","sourceRoot":"","sources":["../../../src/services/compaction.service.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { Repositories } from "../repositories/index.js";
2
- import type { ScheduledEventRow } from "../types.js";
3
- /**
4
- * Handles automatic triggering of scheduled events during session start
5
- * and task completion.
6
- */
7
- export declare class EventTriggerService {
8
- private repos;
9
- constructor(repos: Repositories);
10
- /**
11
- * Trigger all session-start events: next_session, expired datetime, and every_session.
12
- * Returns the list of triggered events.
13
- */
14
- triggerSessionEvents(): ScheduledEventRow[];
15
- /**
16
- * Trigger task_complete events when a task is marked as done.
17
- */
18
- triggerTaskCompleteEvents(taskId: number): ScheduledEventRow[];
19
- /**
20
- * Mid-session check for any triggered events (datetime only).
21
- */
22
- checkEvents(): ScheduledEventRow[];
23
- }
24
- //# sourceMappingURL=event-trigger.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-trigger.service.d.ts","sourceRoot":"","sources":["../../../src/services/event-trigger.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,qBAAa,mBAAmB;IAChB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC;;;OAGG;IACH,oBAAoB,IAAI,iBAAiB,EAAE;IAoB3C;;OAEG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAU9D;;OAEG;IACH,WAAW,IAAI,iBAAiB,EAAE;CASrC"}
@@ -1,60 +0,0 @@
1
- // ============================================================================
2
- // Engram MCP Server — Event Trigger Service
3
- // ============================================================================
4
- /**
5
- * Handles automatic triggering of scheduled events during session start
6
- * and task completion.
7
- */
8
- export class EventTriggerService {
9
- repos;
10
- constructor(repos) {
11
- this.repos = repos;
12
- }
13
- /**
14
- * Trigger all session-start events: next_session, expired datetime, and every_session.
15
- * Returns the list of triggered events.
16
- */
17
- triggerSessionEvents() {
18
- try {
19
- const timestamp = new Date().toISOString();
20
- // Auto-trigger 'next_session' events
21
- this.repos.events.triggerNextSession(timestamp);
22
- // Auto-trigger 'datetime' events that have passed
23
- this.repos.events.triggerExpiredDatetime(timestamp);
24
- // Auto-trigger 'every_session' recurring events
25
- this.repos.events.triggerEverySession(timestamp);
26
- // Fetch all triggered events
27
- return this.repos.events.getTriggered();
28
- }
29
- catch {
30
- return []; // scheduled_events table may not exist yet
31
- }
32
- }
33
- /**
34
- * Trigger task_complete events when a task is marked as done.
35
- */
36
- triggerTaskCompleteEvents(taskId) {
37
- try {
38
- const timestamp = new Date().toISOString();
39
- this.repos.events.triggerTaskComplete(taskId, timestamp);
40
- return this.repos.events.getTriggered();
41
- }
42
- catch {
43
- return [];
44
- }
45
- }
46
- /**
47
- * Mid-session check for any triggered events (datetime only).
48
- */
49
- checkEvents() {
50
- try {
51
- const timestamp = new Date().toISOString();
52
- this.repos.events.triggerExpiredDatetime(timestamp);
53
- return this.repos.events.getTriggered();
54
- }
55
- catch {
56
- return [];
57
- }
58
- }
59
- }
60
- //# sourceMappingURL=event-trigger.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-trigger.service.js","sourceRoot":"","sources":["../../../src/services/event-trigger.service.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAK/E;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACR;IAApB,YAAoB,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAI,CAAC;IAE5C;;;OAGG;IACH,oBAAoB;QAChB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE3C,qCAAqC;YACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAEhD,kDAAkD;YAClD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAEpD,gDAAgD;YAChD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAEjD,6BAA6B;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC,CAAC,2CAA2C;QAC1D,CAAC;IACL,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,MAAc;QACpC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACP,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;CACJ"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Consolidates all git-related operations including hook log parsing.
3
- */
4
- export declare class GitService {
5
- private projectRoot;
6
- constructor(projectRoot: string);
7
- isRepo(): boolean;
8
- getBranch(): string | null;
9
- getHead(): string | null;
10
- getLogSince(since: string, limit?: number): string;
11
- getDiffStat(since: string): string;
12
- getFilesChanged(since: string): string[];
13
- runGitCommand(command: string): string;
14
- /**
15
- * Parse the git hook log file (.engram/git-changes.log) and extract
16
- * entries since the last session end time.
17
- */
18
- parseHookLog(lastSessionEndedAt?: string | null): string;
19
- }
20
- //# sourceMappingURL=git.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.service.d.ts","sourceRoot":"","sources":["../../../src/services/git.service.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,qBAAa,UAAU;IACP,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEvC,MAAM,IAAI,OAAO;IAIjB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAIlD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAItC;;;OAGG;IACH,YAAY,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;CA6C3D"}
@@ -1,88 +0,0 @@
1
- // ============================================================================
2
- // Engram MCP Server — Git Service
3
- // ============================================================================
4
- import * as fs from "fs";
5
- import * as path from "path";
6
- import { isGitRepo, getGitLogSince, getGitBranch, getGitHead, getGitDiffStat, getGitFilesChanged, gitCommand, } from "../utils.js";
7
- import { DB_DIR_NAME } from "../constants.js";
8
- /**
9
- * Consolidates all git-related operations including hook log parsing.
10
- */
11
- export class GitService {
12
- projectRoot;
13
- constructor(projectRoot) {
14
- this.projectRoot = projectRoot;
15
- }
16
- isRepo() {
17
- return isGitRepo(this.projectRoot);
18
- }
19
- getBranch() {
20
- return this.isRepo() ? getGitBranch(this.projectRoot) || null : null;
21
- }
22
- getHead() {
23
- return this.isRepo() ? getGitHead(this.projectRoot) || null : null;
24
- }
25
- getLogSince(since, limit) {
26
- return getGitLogSince(this.projectRoot, since, limit);
27
- }
28
- getDiffStat(since) {
29
- return getGitDiffStat(this.projectRoot, since);
30
- }
31
- getFilesChanged(since) {
32
- return getGitFilesChanged(this.projectRoot, since);
33
- }
34
- runGitCommand(command) {
35
- return gitCommand(this.projectRoot, command);
36
- }
37
- /**
38
- * Parse the git hook log file (.engram/git-changes.log) and extract
39
- * entries since the last session end time.
40
- */
41
- parseHookLog(lastSessionEndedAt) {
42
- try {
43
- const hookLogPath = path.join(this.projectRoot, DB_DIR_NAME, "git-changes.log");
44
- if (!fs.existsSync(hookLogPath))
45
- return "";
46
- const raw = fs.readFileSync(hookLogPath, "utf-8");
47
- if (!lastSessionEndedAt) {
48
- // First session — include last 20 lines as a hint
49
- return raw.split("\n").slice(-20).join("\n");
50
- }
51
- const cutoffDate = new Date(lastSessionEndedAt);
52
- const lines = raw.split("\n");
53
- const relevantBlocks = [];
54
- let inBlock = false;
55
- let blockLines = [];
56
- let blockDate = null;
57
- for (const line of lines) {
58
- if (line.startsWith("--- COMMIT")) {
59
- if (inBlock && blockDate && blockDate > cutoffDate) {
60
- relevantBlocks.push(blockLines.join("\n"));
61
- }
62
- inBlock = true;
63
- blockLines = [line];
64
- blockDate = null;
65
- }
66
- else if (inBlock && line.startsWith("date:")) {
67
- blockLines.push(line);
68
- try {
69
- blockDate = new Date(line.replace("date:", "").trim());
70
- }
71
- catch { /* skip */ }
72
- }
73
- else if (inBlock) {
74
- blockLines.push(line);
75
- }
76
- }
77
- // Flush last block
78
- if (inBlock && blockDate && blockDate > cutoffDate) {
79
- relevantBlocks.push(blockLines.join("\n"));
80
- }
81
- return relevantBlocks.join("\n\n");
82
- }
83
- catch {
84
- return ""; // git-changes.log is optional
85
- }
86
- }
87
- }
88
- //# sourceMappingURL=git.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.service.js","sourceRoot":"","sources":["../../../src/services/git.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { CompactionService } from "./compaction.service.js";
2
- export { ProjectScanService } from "./project-scan.service.js";
3
- export { GitService } from "./git.service.js";
4
- export { EventTriggerService } from "./event-trigger.service.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,8 +0,0 @@
1
- // ============================================================================
2
- // Engram MCP Server — Services Barrel Export
3
- // ============================================================================
4
- export { CompactionService } from "./compaction.service.js";
5
- export { ProjectScanService } from "./project-scan.service.js";
6
- export { GitService } from "./git.service.js";
7
- export { EventTriggerService } from "./event-trigger.service.js";
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6CAA6C;AAC7C,+EAA+E;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { Repositories } from "../repositories/index.js";
2
- import type { ProjectSnapshot } from "../types.js";
3
- /**
4
- * Manages cached project scanning and snapshot generation.
5
- */
6
- export declare class ProjectScanService {
7
- private repos;
8
- constructor(repos: Repositories);
9
- /**
10
- * Get the project snapshot from cache or perform a fresh scan.
11
- * Returns null if scanning fails (best-effort).
12
- */
13
- getOrRefresh(projectRoot: string, forceRefresh?: boolean, maxDepth?: number): ProjectSnapshot | null;
14
- /**
15
- * Build a fresh project snapshot and cache it.
16
- */
17
- buildFreshSnapshot(projectRoot: string, maxDepth?: number): ProjectSnapshot;
18
- }
19
- //# sourceMappingURL=project-scan.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-scan.service.d.ts","sourceRoot":"","sources":["../../../src/services/project-scan.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD;;GAEG;AACH,qBAAa,kBAAkB;IACf,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAkB3G;;OAEG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe;CAmC9E"}