gitmem-mcp 1.0.0 → 1.0.1

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 (246) hide show
  1. package/CLAUDE.md.template +63 -55
  2. package/README.md +60 -29
  3. package/bin/gitmem.js +233 -109
  4. package/bin/init-wizard.js +642 -0
  5. package/bin/uninstall.js +288 -0
  6. package/dist/commands/check.js +20 -20
  7. package/dist/commands/check.js.map +1 -1
  8. package/dist/constants/closing-questions.d.ts +6 -0
  9. package/dist/constants/closing-questions.d.ts.map +1 -1
  10. package/dist/constants/closing-questions.js +65 -0
  11. package/dist/constants/closing-questions.js.map +1 -1
  12. package/dist/hooks/format-utils.d.ts +52 -0
  13. package/dist/hooks/format-utils.d.ts.map +1 -0
  14. package/dist/hooks/format-utils.js +89 -0
  15. package/dist/hooks/format-utils.js.map +1 -0
  16. package/dist/hooks/quick-retrieve.d.ts +30 -0
  17. package/dist/hooks/quick-retrieve.d.ts.map +1 -0
  18. package/dist/hooks/quick-retrieve.js +149 -0
  19. package/dist/hooks/quick-retrieve.js.map +1 -0
  20. package/dist/index.js +0 -0
  21. package/dist/schemas/active-sessions.d.ts +8 -8
  22. package/dist/schemas/analyze.d.ts +3 -3
  23. package/dist/schemas/common.d.ts +2 -2
  24. package/dist/schemas/common.d.ts.map +1 -1
  25. package/dist/schemas/common.js +1 -1
  26. package/dist/schemas/common.js.map +1 -1
  27. package/dist/schemas/create-decision.d.ts +3 -3
  28. package/dist/schemas/create-learning.d.ts +13 -13
  29. package/dist/schemas/log.d.ts +3 -3
  30. package/dist/schemas/prepare-context.d.ts +3 -3
  31. package/dist/schemas/recall.d.ts +3 -3
  32. package/dist/schemas/record-scar-usage-batch.d.ts +8 -3
  33. package/dist/schemas/record-scar-usage-batch.d.ts.map +1 -1
  34. package/dist/schemas/record-scar-usage.d.ts +3 -0
  35. package/dist/schemas/record-scar-usage.d.ts.map +1 -1
  36. package/dist/schemas/record-scar-usage.js +1 -0
  37. package/dist/schemas/record-scar-usage.js.map +1 -1
  38. package/dist/schemas/registry.d.ts +18 -0
  39. package/dist/schemas/registry.d.ts.map +1 -0
  40. package/dist/schemas/registry.js +158 -0
  41. package/dist/schemas/registry.js.map +1 -0
  42. package/dist/schemas/save-transcript.d.ts +3 -3
  43. package/dist/schemas/search-transcripts.d.ts +33 -0
  44. package/dist/schemas/search-transcripts.d.ts.map +1 -0
  45. package/dist/schemas/search-transcripts.js +26 -0
  46. package/dist/schemas/search-transcripts.js.map +1 -0
  47. package/dist/schemas/search.d.ts +3 -3
  48. package/dist/schemas/session-close.d.ts +43 -15
  49. package/dist/schemas/session-close.d.ts.map +1 -1
  50. package/dist/schemas/session-close.js +7 -2
  51. package/dist/schemas/session-close.js.map +1 -1
  52. package/dist/schemas/session-start.d.ts +3 -3
  53. package/dist/schemas/thread.d.ts +3 -3
  54. package/dist/server.d.ts.map +1 -1
  55. package/dist/server.js +82 -28
  56. package/dist/server.js.map +1 -1
  57. package/dist/services/active-sessions.d.ts +2 -1
  58. package/dist/services/active-sessions.d.ts.map +1 -1
  59. package/dist/services/active-sessions.js +130 -84
  60. package/dist/services/active-sessions.js.map +1 -1
  61. package/dist/services/analytics.d.ts.map +1 -1
  62. package/dist/services/analytics.js +1 -0
  63. package/dist/services/analytics.js.map +1 -1
  64. package/dist/services/behavioral-decay.d.ts +40 -0
  65. package/dist/services/behavioral-decay.d.ts.map +1 -0
  66. package/dist/services/behavioral-decay.js +110 -0
  67. package/dist/services/behavioral-decay.js.map +1 -0
  68. package/dist/services/bm25.d.ts +39 -0
  69. package/dist/services/bm25.d.ts.map +1 -0
  70. package/dist/services/bm25.js +132 -0
  71. package/dist/services/bm25.js.map +1 -0
  72. package/dist/services/cache.d.ts.map +1 -1
  73. package/dist/services/cache.js +9 -8
  74. package/dist/services/cache.js.map +1 -1
  75. package/dist/services/cache.test.js +17 -17
  76. package/dist/services/cache.test.js.map +1 -1
  77. package/dist/services/compliance-validator.d.ts.map +1 -1
  78. package/dist/services/compliance-validator.js +12 -1
  79. package/dist/services/compliance-validator.js.map +1 -1
  80. package/dist/services/display-protocol.d.ts +31 -0
  81. package/dist/services/display-protocol.d.ts.map +1 -0
  82. package/dist/services/display-protocol.js +73 -0
  83. package/dist/services/display-protocol.js.map +1 -0
  84. package/dist/services/effect-tracker.d.ts +81 -0
  85. package/dist/services/effect-tracker.d.ts.map +1 -0
  86. package/dist/services/effect-tracker.js +181 -0
  87. package/dist/services/effect-tracker.js.map +1 -0
  88. package/dist/services/file-lock.d.ts +31 -0
  89. package/dist/services/file-lock.d.ts.map +1 -0
  90. package/dist/services/file-lock.js +124 -0
  91. package/dist/services/file-lock.js.map +1 -0
  92. package/dist/services/gitmem-dir.d.ts +7 -0
  93. package/dist/services/gitmem-dir.d.ts.map +1 -1
  94. package/dist/services/gitmem-dir.js +21 -0
  95. package/dist/services/gitmem-dir.js.map +1 -1
  96. package/dist/services/local-file-storage.d.ts +3 -2
  97. package/dist/services/local-file-storage.d.ts.map +1 -1
  98. package/dist/services/local-file-storage.js +30 -43
  99. package/dist/services/local-file-storage.js.map +1 -1
  100. package/dist/services/local-vector-search.d.ts +10 -9
  101. package/dist/services/local-vector-search.d.ts.map +1 -1
  102. package/dist/services/local-vector-search.js +28 -23
  103. package/dist/services/local-vector-search.js.map +1 -1
  104. package/dist/services/metrics.d.ts +7 -2
  105. package/dist/services/metrics.d.ts.map +1 -1
  106. package/dist/services/metrics.js +41 -33
  107. package/dist/services/metrics.js.map +1 -1
  108. package/dist/services/session-state.d.ts +8 -0
  109. package/dist/services/session-state.d.ts.map +1 -1
  110. package/dist/services/session-state.js +9 -2
  111. package/dist/services/session-state.js.map +1 -1
  112. package/dist/services/startup.d.ts +12 -13
  113. package/dist/services/startup.d.ts.map +1 -1
  114. package/dist/services/startup.js +104 -57
  115. package/dist/services/startup.js.map +1 -1
  116. package/dist/services/supabase-client.d.ts +2 -1
  117. package/dist/services/supabase-client.d.ts.map +1 -1
  118. package/dist/services/supabase-client.js +22 -16
  119. package/dist/services/supabase-client.js.map +1 -1
  120. package/dist/services/thread-dedup.d.ts +9 -0
  121. package/dist/services/thread-dedup.d.ts.map +1 -1
  122. package/dist/services/thread-dedup.js +27 -0
  123. package/dist/services/thread-dedup.js.map +1 -1
  124. package/dist/services/thread-manager.d.ts.map +1 -1
  125. package/dist/services/thread-manager.js +38 -16
  126. package/dist/services/thread-manager.js.map +1 -1
  127. package/dist/services/thread-suggestions.d.ts.map +1 -1
  128. package/dist/services/thread-suggestions.js +1 -1
  129. package/dist/services/thread-suggestions.js.map +1 -1
  130. package/dist/services/thread-supabase.d.ts +0 -1
  131. package/dist/services/thread-supabase.d.ts.map +1 -1
  132. package/dist/services/thread-supabase.js +83 -54
  133. package/dist/services/thread-supabase.js.map +1 -1
  134. package/dist/services/timezone.d.ts.map +1 -1
  135. package/dist/services/timezone.js +1 -0
  136. package/dist/services/timezone.js.map +1 -1
  137. package/dist/services/transcript-chunker.d.ts.map +1 -1
  138. package/dist/services/transcript-chunker.js +18 -4
  139. package/dist/services/transcript-chunker.js.map +1 -1
  140. package/dist/services/variant-generation.d.ts +41 -0
  141. package/dist/services/variant-generation.d.ts.map +1 -0
  142. package/dist/services/variant-generation.js +263 -0
  143. package/dist/services/variant-generation.js.map +1 -0
  144. package/dist/tools/absorb-observations.d.ts.map +1 -1
  145. package/dist/tools/absorb-observations.js +9 -0
  146. package/dist/tools/absorb-observations.js.map +1 -1
  147. package/dist/tools/analyze.d.ts.map +1 -1
  148. package/dist/tools/analyze.js +13 -2
  149. package/dist/tools/analyze.js.map +1 -1
  150. package/dist/tools/archive-learning.d.ts +28 -0
  151. package/dist/tools/archive-learning.d.ts.map +1 -0
  152. package/dist/tools/archive-learning.js +81 -0
  153. package/dist/tools/archive-learning.js.map +1 -0
  154. package/dist/tools/cleanup-threads.d.ts +1 -0
  155. package/dist/tools/cleanup-threads.d.ts.map +1 -1
  156. package/dist/tools/cleanup-threads.js +111 -18
  157. package/dist/tools/cleanup-threads.js.map +1 -1
  158. package/dist/tools/confirm-scars.d.ts.map +1 -1
  159. package/dist/tools/confirm-scars.js +8 -2
  160. package/dist/tools/confirm-scars.js.map +1 -1
  161. package/dist/tools/create-decision.d.ts.map +1 -1
  162. package/dist/tools/create-decision.js +11 -8
  163. package/dist/tools/create-decision.js.map +1 -1
  164. package/dist/tools/create-learning.d.ts.map +1 -1
  165. package/dist/tools/create-learning.js +35 -11
  166. package/dist/tools/create-learning.js.map +1 -1
  167. package/dist/tools/create-linear-issue.d.ts +18 -0
  168. package/dist/tools/create-linear-issue.d.ts.map +1 -0
  169. package/dist/tools/create-linear-issue.js +197 -0
  170. package/dist/tools/create-linear-issue.js.map +1 -0
  171. package/dist/tools/create-thread.d.ts +2 -1
  172. package/dist/tools/create-thread.d.ts.map +1 -1
  173. package/dist/tools/create-thread.js +9 -4
  174. package/dist/tools/create-thread.js.map +1 -1
  175. package/dist/tools/definitions.d.ts +785 -34
  176. package/dist/tools/definitions.d.ts.map +1 -1
  177. package/dist/tools/definitions.js +239 -95
  178. package/dist/tools/definitions.js.map +1 -1
  179. package/dist/tools/dismiss-suggestion.d.ts +1 -0
  180. package/dist/tools/dismiss-suggestion.d.ts.map +1 -1
  181. package/dist/tools/dismiss-suggestion.js +4 -0
  182. package/dist/tools/dismiss-suggestion.js.map +1 -1
  183. package/dist/tools/graph-traverse.d.ts +1 -0
  184. package/dist/tools/graph-traverse.d.ts.map +1 -1
  185. package/dist/tools/graph-traverse.js +24 -9
  186. package/dist/tools/graph-traverse.js.map +1 -1
  187. package/dist/tools/list-threads.d.ts.map +1 -1
  188. package/dist/tools/list-threads.js +49 -5
  189. package/dist/tools/list-threads.js.map +1 -1
  190. package/dist/tools/log.d.ts +1 -0
  191. package/dist/tools/log.d.ts.map +1 -1
  192. package/dist/tools/log.js +84 -17
  193. package/dist/tools/log.js.map +1 -1
  194. package/dist/tools/prepare-context.d.ts +1 -0
  195. package/dist/tools/prepare-context.d.ts.map +1 -1
  196. package/dist/tools/prepare-context.js +15 -85
  197. package/dist/tools/prepare-context.js.map +1 -1
  198. package/dist/tools/promote-suggestion.d.ts +1 -0
  199. package/dist/tools/promote-suggestion.d.ts.map +1 -1
  200. package/dist/tools/promote-suggestion.js +5 -0
  201. package/dist/tools/promote-suggestion.js.map +1 -1
  202. package/dist/tools/recall.d.ts +2 -0
  203. package/dist/tools/recall.d.ts.map +1 -1
  204. package/dist/tools/recall.js +43 -10
  205. package/dist/tools/recall.js.map +1 -1
  206. package/dist/tools/recall.test.js +6 -6
  207. package/dist/tools/recall.test.js.map +1 -1
  208. package/dist/tools/record-scar-usage-batch.d.ts.map +1 -1
  209. package/dist/tools/record-scar-usage-batch.js +13 -0
  210. package/dist/tools/record-scar-usage-batch.js.map +1 -1
  211. package/dist/tools/record-scar-usage.d.ts.map +1 -1
  212. package/dist/tools/record-scar-usage.js +6 -0
  213. package/dist/tools/record-scar-usage.js.map +1 -1
  214. package/dist/tools/resolve-thread.d.ts.map +1 -1
  215. package/dist/tools/resolve-thread.js +57 -6
  216. package/dist/tools/resolve-thread.js.map +1 -1
  217. package/dist/tools/save-transcript.d.ts +1 -0
  218. package/dist/tools/save-transcript.d.ts.map +1 -1
  219. package/dist/tools/save-transcript.js +3 -1
  220. package/dist/tools/save-transcript.js.map +1 -1
  221. package/dist/tools/search-transcripts.d.ts +44 -0
  222. package/dist/tools/search-transcripts.d.ts.map +1 -0
  223. package/dist/tools/search-transcripts.js +158 -0
  224. package/dist/tools/search-transcripts.js.map +1 -0
  225. package/dist/tools/search.d.ts +1 -0
  226. package/dist/tools/search.d.ts.map +1 -1
  227. package/dist/tools/search.js +74 -3
  228. package/dist/tools/search.js.map +1 -1
  229. package/dist/tools/session-close.d.ts.map +1 -1
  230. package/dist/tools/session-close.js +563 -326
  231. package/dist/tools/session-close.js.map +1 -1
  232. package/dist/tools/session-start.d.ts +10 -6
  233. package/dist/tools/session-start.d.ts.map +1 -1
  234. package/dist/tools/session-start.js +317 -426
  235. package/dist/tools/session-start.js.map +1 -1
  236. package/dist/types/index.d.ts +37 -4
  237. package/dist/types/index.d.ts.map +1 -1
  238. package/hooks/hooks/hooks.json +8 -37
  239. package/hooks/scripts/auto-retrieve-hook.sh +163 -0
  240. package/hooks/scripts/post-tool-use.sh +0 -16
  241. package/hooks/scripts/recall-check.sh +0 -11
  242. package/hooks/scripts/session-close-check.sh +1 -1
  243. package/hooks/scripts/session-start.sh +89 -13
  244. package/hooks/tests/test-hooks.sh +3 -49
  245. package/package.json +3 -2
  246. package/schema/setup.sql +1 -1
@@ -0,0 +1,288 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * GitMem Uninstall
5
+ *
6
+ * Cleanly reverses everything `npx gitmem init` did.
7
+ * Usage: npx gitmem uninstall [--yes] [--all]
8
+ */
9
+
10
+ import {
11
+ readFileSync,
12
+ writeFileSync,
13
+ existsSync,
14
+ rmSync,
15
+ } from "fs";
16
+ import { dirname, join } from "path";
17
+ import { fileURLToPath } from "url";
18
+ import { createInterface } from "readline/promises";
19
+
20
+ const __dirname = dirname(fileURLToPath(import.meta.url));
21
+ const cwd = process.cwd();
22
+
23
+ const args = process.argv.slice(2);
24
+ const autoYes = args.includes("--yes") || args.includes("-y");
25
+ const deleteAll = args.includes("--all");
26
+
27
+ const gitmemDir = join(cwd, ".gitmem");
28
+ const mcpJsonPath = join(cwd, ".mcp.json");
29
+ const claudeMdPath = join(cwd, "CLAUDE.md");
30
+ const claudeDir = join(cwd, ".claude");
31
+ const settingsPath = join(claudeDir, "settings.json");
32
+ const gitignorePath = join(cwd, ".gitignore");
33
+
34
+ let rl;
35
+
36
+ async function confirm(message, defaultYes = true) {
37
+ if (autoYes) return defaultYes;
38
+ if (!rl) {
39
+ rl = createInterface({ input: process.stdin, output: process.stdout });
40
+ }
41
+ const suffix = defaultYes ? "[Y/n]" : "[y/N]";
42
+ const answer = await rl.question(` ${message} ${suffix} `);
43
+ const trimmed = answer.trim().toLowerCase();
44
+ if (trimmed === "") return defaultYes;
45
+ return trimmed === "y" || trimmed === "yes";
46
+ }
47
+
48
+ function readJson(path) {
49
+ try {
50
+ return JSON.parse(readFileSync(path, "utf-8"));
51
+ } catch {
52
+ return null;
53
+ }
54
+ }
55
+
56
+ function writeJson(path, data) {
57
+ writeFileSync(path, JSON.stringify(data, null, 2) + "\n");
58
+ }
59
+
60
+ function isGitmemHook(entry) {
61
+ if (!entry.hooks || !Array.isArray(entry.hooks)) return false;
62
+ return entry.hooks.some(
63
+ (h) => typeof h.command === "string" && h.command.includes("gitmem")
64
+ );
65
+ }
66
+
67
+ // ── Steps ──
68
+
69
+ function stepClaudeMd() {
70
+ if (!existsSync(claudeMdPath)) {
71
+ console.log(" No CLAUDE.md found. Skipping.");
72
+ return;
73
+ }
74
+
75
+ let content = readFileSync(claudeMdPath, "utf-8");
76
+ const startMarker = "<!-- gitmem:start -->";
77
+ const endMarker = "<!-- gitmem:end -->";
78
+
79
+ if (!content.includes(startMarker)) {
80
+ console.log(" No gitmem section in CLAUDE.md. Skipping.");
81
+ return;
82
+ }
83
+
84
+ const startIdx = content.indexOf(startMarker);
85
+ const endIdx = content.indexOf(endMarker);
86
+ if (startIdx === -1 || endIdx === -1) {
87
+ console.log(" Malformed gitmem markers in CLAUDE.md. Skipping.");
88
+ return;
89
+ }
90
+
91
+ // Remove the block including markers and surrounding whitespace
92
+ const before = content.slice(0, startIdx).trimEnd();
93
+ const after = content.slice(endIdx + endMarker.length).trimStart();
94
+
95
+ const result = before + (before && after ? "\n\n" : "") + after;
96
+
97
+ if (result.trim() === "") {
98
+ // CLAUDE.md would be empty — delete it
99
+ rmSync(claudeMdPath);
100
+ console.log(" Removed CLAUDE.md (was gitmem-only)");
101
+ } else {
102
+ writeFileSync(claudeMdPath, result.trimEnd() + "\n");
103
+ console.log(" Stripped gitmem section from CLAUDE.md");
104
+ }
105
+ }
106
+
107
+ function stepMcpJson() {
108
+ const config = readJson(mcpJsonPath);
109
+ if (!config?.mcpServers) {
110
+ console.log(" No .mcp.json found. Skipping.");
111
+ return;
112
+ }
113
+
114
+ const had = !!config.mcpServers.gitmem || !!config.mcpServers["gitmem-mcp"];
115
+ if (!had) {
116
+ console.log(" No gitmem in .mcp.json. Skipping.");
117
+ return;
118
+ }
119
+
120
+ delete config.mcpServers.gitmem;
121
+ delete config.mcpServers["gitmem-mcp"];
122
+
123
+ const remaining = Object.keys(config.mcpServers).length;
124
+ writeJson(mcpJsonPath, config);
125
+ console.log(
126
+ ` Removed gitmem server (${remaining} other server${remaining !== 1 ? "s" : ""} preserved)`
127
+ );
128
+ }
129
+
130
+ function stepHooks() {
131
+ const settings = readJson(settingsPath);
132
+ if (!settings?.hooks) {
133
+ console.log(" No hooks in .claude/settings.json. Skipping.");
134
+ return;
135
+ }
136
+
137
+ let removed = 0;
138
+ let preserved = 0;
139
+ const cleaned = {};
140
+
141
+ for (const [eventType, entries] of Object.entries(settings.hooks)) {
142
+ if (!Array.isArray(entries)) continue;
143
+ const nonGitmem = entries.filter((e) => {
144
+ if (isGitmemHook(e)) {
145
+ removed++;
146
+ return false;
147
+ }
148
+ preserved++;
149
+ return true;
150
+ });
151
+ if (nonGitmem.length > 0) {
152
+ cleaned[eventType] = nonGitmem;
153
+ }
154
+ }
155
+
156
+ if (removed === 0) {
157
+ console.log(" No gitmem hooks found. Skipping.");
158
+ return;
159
+ }
160
+
161
+ if (Object.keys(cleaned).length > 0) {
162
+ settings.hooks = cleaned;
163
+ } else {
164
+ delete settings.hooks;
165
+ }
166
+
167
+ writeJson(settingsPath, settings);
168
+ console.log(
169
+ ` Removed gitmem hooks` +
170
+ (preserved > 0
171
+ ? ` (${preserved} other hook${preserved !== 1 ? "s" : ""} preserved)`
172
+ : "")
173
+ );
174
+ }
175
+
176
+ function stepPermissions() {
177
+ const settings = readJson(settingsPath);
178
+ const allow = settings?.permissions?.allow;
179
+ if (!Array.isArray(allow)) {
180
+ console.log(" No permissions in .claude/settings.json. Skipping.");
181
+ return;
182
+ }
183
+
184
+ const pattern = "mcp__gitmem__*";
185
+ const idx = allow.indexOf(pattern);
186
+ if (idx === -1) {
187
+ console.log(" No gitmem permissions found. Skipping.");
188
+ return;
189
+ }
190
+
191
+ allow.splice(idx, 1);
192
+ settings.permissions.allow = allow;
193
+
194
+ // Clean up empty permissions
195
+ if (allow.length === 0) {
196
+ delete settings.permissions.allow;
197
+ }
198
+ if (
199
+ settings.permissions &&
200
+ Object.keys(settings.permissions).length === 0
201
+ ) {
202
+ delete settings.permissions;
203
+ }
204
+
205
+ writeJson(settingsPath, settings);
206
+ console.log(" Removed mcp__gitmem__* from permissions.allow");
207
+ }
208
+
209
+ async function stepGitmemDir() {
210
+ if (!existsSync(gitmemDir)) {
211
+ console.log(" No .gitmem/ directory. Skipping.");
212
+ return;
213
+ }
214
+
215
+ if (deleteAll) {
216
+ rmSync(gitmemDir, { recursive: true, force: true });
217
+ console.log(" Deleted .gitmem/ directory");
218
+ return;
219
+ }
220
+
221
+ console.log(
222
+ " This contains your memory data (scars, sessions, decisions)."
223
+ );
224
+
225
+ // Default to No for data deletion
226
+ if (await confirm("Delete .gitmem/?", false)) {
227
+ rmSync(gitmemDir, { recursive: true, force: true });
228
+ console.log(" Deleted .gitmem/ directory");
229
+ } else {
230
+ console.log(" Skipped — .gitmem/ preserved.");
231
+ }
232
+ }
233
+
234
+ function stepGitignore() {
235
+ if (!existsSync(gitignorePath)) return;
236
+
237
+ let content = readFileSync(gitignorePath, "utf-8");
238
+ if (!content.includes(".gitmem/")) return;
239
+
240
+ // Remove the .gitmem/ line
241
+ const lines = content.split("\n");
242
+ const filtered = lines.filter((line) => line.trim() !== ".gitmem/");
243
+ writeFileSync(gitignorePath, filtered.join("\n"));
244
+ }
245
+
246
+ // ── Main ──
247
+
248
+ async function main() {
249
+ console.log("");
250
+ console.log(" gitmem — Uninstall");
251
+ console.log("");
252
+
253
+ console.log(" Step 1/5 — Remove gitmem section from CLAUDE.md");
254
+ stepClaudeMd();
255
+ console.log("");
256
+
257
+ console.log(" Step 2/5 — Remove gitmem from .mcp.json");
258
+ stepMcpJson();
259
+ console.log("");
260
+
261
+ console.log(" Step 3/5 — Remove gitmem hooks from .claude/settings.json");
262
+ stepHooks();
263
+ console.log("");
264
+
265
+ console.log(
266
+ " Step 4/5 — Remove gitmem permissions from .claude/settings.json"
267
+ );
268
+ stepPermissions();
269
+ console.log("");
270
+
271
+ console.log(" Step 5/5 — Delete .gitmem/ directory?");
272
+ await stepGitmemDir();
273
+
274
+ // Also clean .gitignore entry
275
+ stepGitignore();
276
+
277
+ console.log("");
278
+ console.log(" Uninstall complete.");
279
+ console.log("");
280
+
281
+ if (rl) rl.close();
282
+ }
283
+
284
+ main().catch((err) => {
285
+ console.error("Error:", err.message || err);
286
+ if (rl) rl.close();
287
+ process.exit(1);
288
+ });
@@ -354,7 +354,7 @@ async function runFullCheck() {
354
354
  const benchmarks = {};
355
355
  const cache = getCache();
356
356
  // Cold start benchmark (cache initialization)
357
- console.log(" Running cold start benchmark...");
357
+ console.error(" Running cold start benchmark...");
358
358
  try {
359
359
  benchmarks.coldStart = await runBenchmark("coldStart", async () => {
360
360
  // Simulate cold start by creating new cache instance
@@ -363,10 +363,10 @@ async function runFullCheck() {
363
363
  }, 5);
364
364
  }
365
365
  catch (error) {
366
- console.log(` Cold start benchmark failed: ${error}`);
366
+ console.error(` Cold start benchmark failed: ${error}`);
367
367
  }
368
368
  // Cache populate benchmark
369
- console.log(" Running cache populate benchmark...");
369
+ console.error(" Running cache populate benchmark...");
370
370
  try {
371
371
  benchmarks.cachePopulate = await runBenchmark("cachePopulate", async () => {
372
372
  const key = `bench_populate_${Date.now()}`;
@@ -374,10 +374,10 @@ async function runFullCheck() {
374
374
  }, 5);
375
375
  }
376
376
  catch (error) {
377
- console.log(` Cache populate benchmark failed: ${error}`);
377
+ console.error(` Cache populate benchmark failed: ${error}`);
378
378
  }
379
379
  // Cache hit benchmark
380
- console.log(" Running cache hit benchmark...");
380
+ console.error(" Running cache hit benchmark...");
381
381
  try {
382
382
  // First, populate a cache entry
383
383
  const hitKey = `bench_hit_${Date.now()}`;
@@ -387,11 +387,11 @@ async function runFullCheck() {
387
387
  }, 5);
388
388
  }
389
389
  catch (error) {
390
- console.log(` Cache hit benchmark failed: ${error}`);
390
+ console.error(` Cache hit benchmark failed: ${error}`);
391
391
  }
392
392
  // Recall benchmark (if Supabase configured)
393
393
  if (hasSupabase()) {
394
- console.log(" Running recall benchmark...");
394
+ console.error(" Running recall benchmark...");
395
395
  try {
396
396
  benchmarks.recall = await runBenchmark("recall", async () => {
397
397
  // Simulate recall by doing a search
@@ -406,7 +406,7 @@ async function runFullCheck() {
406
406
  }, 5);
407
407
  }
408
408
  catch (error) {
409
- console.log(` Recall benchmark failed: ${error}`);
409
+ console.error(` Recall benchmark failed: ${error}`);
410
410
  }
411
411
  }
412
412
  return benchmarks;
@@ -416,30 +416,30 @@ async function runFullCheck() {
416
416
  */
417
417
  export async function runCheck(options) {
418
418
  const mode = options.full ? "full" : "quick";
419
- console.log(`\nGitMem Diagnostic Check (${mode} mode)\n`);
420
- console.log("=".repeat(50));
419
+ console.error(`\nGitMem Diagnostic Check (${mode} mode)\n`);
420
+ console.error("=".repeat(50));
421
421
  const collector = new DiagnosticsCollector();
422
422
  collector.start();
423
423
  // Run quick checks
424
- console.log("\nRunning health checks...");
424
+ console.error("\nRunning health checks...");
425
425
  const { health, configuration, dataVolume } = await runQuickCheck();
426
426
  // Print health check results
427
- console.log("\nHealth Checks:");
427
+ console.error("\nHealth Checks:");
428
428
  for (const [name, result] of Object.entries(health)) {
429
429
  const icon = result.status === "pass" ? "✓" : result.status === "fail" ? "✗" : "○";
430
430
  const time = result.durationMs ? ` (${result.durationMs}ms)` : "";
431
- console.log(` ${icon} ${name}: ${result.message}${time}`);
431
+ console.error(` ${icon} ${name}: ${result.message}${time}`);
432
432
  }
433
433
  // Run benchmarks if full mode
434
434
  let benchmarks;
435
435
  if (options.full) {
436
- console.log("\nRunning benchmarks...");
436
+ console.error("\nRunning benchmarks...");
437
437
  benchmarks = await runFullCheck();
438
438
  if (benchmarks) {
439
- console.log("\nBenchmark Results:");
439
+ console.error("\nBenchmark Results:");
440
440
  for (const [name, result] of Object.entries(benchmarks)) {
441
441
  if (result) {
442
- console.log(` ${name}: mean=${result.meanMs.toFixed(2)}ms, p95=${result.p95Ms.toFixed(2)}ms`);
442
+ console.error(` ${name}: mean=${result.meanMs.toFixed(2)}ms, p95=${result.p95Ms.toFixed(2)}ms`);
443
443
  }
444
444
  }
445
445
  }
@@ -470,17 +470,17 @@ export async function runCheck(options) {
470
470
  const outputPath = options.output || join(gitmemDir, `diagnostic-${Date.now()}.json`);
471
471
  // Write report
472
472
  writeFileSync(outputPath, JSON.stringify(report, null, 2));
473
- console.log(`\nReport saved to: ${outputPath}`);
473
+ console.error(`\nReport saved to: ${outputPath}`);
474
474
  // Summary
475
475
  const passCount = Object.values(health).filter((h) => h.status === "pass").length;
476
476
  const failCount = Object.values(health).filter((h) => h.status === "fail").length;
477
477
  const skipCount = Object.values(health).filter((h) => h.status === "skip").length;
478
- console.log(`\nSummary: ${passCount} passed, ${failCount} failed, ${skipCount} skipped`);
478
+ console.error(`\nSummary: ${passCount} passed, ${failCount} failed, ${skipCount} skipped`);
479
479
  if (failCount > 0) {
480
- console.log("\n⚠️ Some health checks failed. Review the report for details.");
480
+ console.error("\n⚠️ Some health checks failed. Review the report for details.");
481
481
  process.exit(1);
482
482
  }
483
- console.log("\n✓ All health checks passed.");
483
+ console.error("\n✓ All health checks passed.");
484
484
  }
485
485
  /**
486
486
  * Entry point for CLI
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -37,4 +37,10 @@ export declare function closingReflectionSchema(): Record<string, unknown>;
37
37
  * Build a description string listing all questions (for tool descriptions or prompts).
38
38
  */
39
39
  export declare function closingReflectionDescription(): string;
40
+ /**
41
+ * Normalize closing_reflection field names from common aliases to canonical keys.
42
+ * Agents frequently guess field names (q1_broke, q2_slow, etc.) instead of using
43
+ * the canonical names (what_broke, what_took_longer). This prevents validation failures.
44
+ */
45
+ export declare function normalizeReflectionKeys(reflection: Record<string, unknown>): Record<string, unknown>;
40
46
  //# sourceMappingURL=closing-questions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"closing-questions.d.ts","sourceRoot":"","sources":["../../src/constants/closing-questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IAC7D,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;CAClC;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EA4D9C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAIrD"}
1
+ {"version":3,"file":"closing-questions.d.ts","sourceRoot":"","sources":["../../src/constants/closing-questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IAC7D,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;CAClC;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EA4D9C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAIrD;AA2CD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
@@ -104,4 +104,69 @@ export function closingReflectionSchema() {
104
104
  export function closingReflectionDescription() {
105
105
  return CLOSING_QUESTIONS.map((q) => `Q${q.number} (${q.key}): ${q.question}`).join("\n");
106
106
  }
107
+ /**
108
+ * Common aliases agents use for closing_reflection field names.
109
+ * Maps alias → canonical key from CLOSING_QUESTIONS.
110
+ */
111
+ const REFLECTION_ALIASES = {
112
+ // Q1
113
+ q1_broke: "what_broke",
114
+ broke: "what_broke",
115
+ unexpected: "what_broke",
116
+ // Q2
117
+ q2_slow: "what_took_longer",
118
+ took_longer: "what_took_longer",
119
+ slow: "what_took_longer",
120
+ // Q3
121
+ q3_differently: "do_differently",
122
+ differently: "do_differently",
123
+ next_time: "do_differently",
124
+ // Q4
125
+ q4_worked: "what_worked",
126
+ worked: "what_worked",
127
+ pattern_worked: "what_worked",
128
+ // Q5
129
+ q5_wrong_assumption: "wrong_assumption",
130
+ assumption: "wrong_assumption",
131
+ wrong: "wrong_assumption",
132
+ // Q6
133
+ q6_scars_applied: "scars_applied",
134
+ scars: "scars_applied",
135
+ // Q7
136
+ q7_capture: "institutional_memory_items",
137
+ capture: "institutional_memory_items",
138
+ capture_as_memory: "institutional_memory_items",
139
+ memory_items: "institutional_memory_items",
140
+ // Q8-Q9 (rapport, not in CLOSING_QUESTIONS but used)
141
+ q8_human_style: "human_work_style",
142
+ q9_dynamic: "collaborative_dynamic",
143
+ };
144
+ /** Canonical keys from CLOSING_QUESTIONS */
145
+ const CANONICAL_KEYS = new Set(CLOSING_QUESTIONS.map((q) => q.key));
146
+ /**
147
+ * Normalize closing_reflection field names from common aliases to canonical keys.
148
+ * Agents frequently guess field names (q1_broke, q2_slow, etc.) instead of using
149
+ * the canonical names (what_broke, what_took_longer). This prevents validation failures.
150
+ */
151
+ export function normalizeReflectionKeys(reflection) {
152
+ const normalized = {};
153
+ for (const [key, value] of Object.entries(reflection)) {
154
+ if (CANONICAL_KEYS.has(key) || key === "human_work_style" || key === "collaborative_dynamic" || key === "rapport_notes") {
155
+ // Already canonical
156
+ normalized[key] = value;
157
+ }
158
+ else if (REFLECTION_ALIASES[key]) {
159
+ // Map alias to canonical (don't overwrite if canonical already set)
160
+ const canonical = REFLECTION_ALIASES[key];
161
+ if (!(canonical in normalized)) {
162
+ normalized[canonical] = value;
163
+ }
164
+ }
165
+ else {
166
+ // Unknown key — pass through
167
+ normalized[key] = value;
168
+ }
169
+ }
170
+ return normalized;
171
+ }
107
172
  //# sourceMappingURL=closing-questions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"closing-questions.js","sourceRoot":"","sources":["../../src/constants/closing-questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD;QACE,GAAG,EAAE,YAAY;QACjB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,0CAA0C;QACpD,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,4BAA4B;QACtC,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;KACpB;IACD;QACE,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,uDAAuD;QACjE,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,UAAU;KACtB;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,MAAM,EAAE,CAAC;QACT,QAAQ,EACN,qEAAqE;YACrE,8EAA8E;YAC9E,+DAA+D;QACjE,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,iCAAiC;IAC/C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC/B,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;gBAClB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,iCAAiC,EAAE;QAC/C,WAAW,EAAE,cAAc,iBAAiB,CAAC,MAAM,kDAAkD;KACtG,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,iBAAiB,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"closing-questions.js","sourceRoot":"","sources":["../../src/constants/closing-questions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared formatting utilities for scar display.
3
+ *
4
+ * Used by:
5
+ * - prepare-context.ts (MCP tool for sub-agent injection)
6
+ * - quick-retrieve.ts (hook-invoked retrieval for auto-inject)
7
+ */
8
+ export interface FormattableScar {
9
+ id: string;
10
+ title: string;
11
+ description: string;
12
+ severity: string;
13
+ counter_arguments?: string[];
14
+ similarity?: number;
15
+ source_linear_issue?: string;
16
+ required_verification?: {
17
+ when: string;
18
+ queries: string[];
19
+ must_show: string;
20
+ blocking?: boolean;
21
+ };
22
+ why_this_matters?: string;
23
+ action_protocol?: string[];
24
+ self_check_criteria?: string[];
25
+ }
26
+ export declare const SEVERITY_EMOJI: Record<string, string>;
27
+ export declare const SEVERITY_LABEL: Record<string, string>;
28
+ export declare const SEVERITY_ORDER: Record<string, number>;
29
+ /**
30
+ * Estimate tokens from a string.
31
+ * Rough heuristic: ~4 characters per token for English text.
32
+ */
33
+ export declare function estimateTokens(text: string): number;
34
+ /**
35
+ * Format scars in compact mode.
36
+ * One line per scar: emoji LABEL: Title — first sentence of description.
37
+ * Sorted by severity (critical first). Truncated to token budget.
38
+ */
39
+ export declare function formatCompact(scars: FormattableScar[], plan: string, maxTokens: number): {
40
+ payload: string;
41
+ included: number;
42
+ };
43
+ /**
44
+ * Format scars in gate mode.
45
+ * Only blocking scars (required_verification.blocking === true).
46
+ * Returns PASS if none found.
47
+ */
48
+ export declare function formatGate(scars: FormattableScar[]): {
49
+ payload: string;
50
+ blocking: number;
51
+ };
52
+ //# sourceMappingURL=format-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/hooks/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAID,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAIF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA0BvC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA4B1F"}