gitmem-mcp 0.2.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 (316) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/CLAUDE.md.template +65 -0
  3. package/LICENSE +21 -0
  4. package/README.md +221 -0
  5. package/bin/gitmem.js +383 -0
  6. package/dist/commands/check.d.ts +33 -0
  7. package/dist/commands/check.d.ts.map +1 -0
  8. package/dist/commands/check.js +492 -0
  9. package/dist/commands/check.js.map +1 -0
  10. package/dist/constants/closing-questions.d.ts +40 -0
  11. package/dist/constants/closing-questions.d.ts.map +1 -0
  12. package/dist/constants/closing-questions.js +107 -0
  13. package/dist/constants/closing-questions.js.map +1 -0
  14. package/dist/diagnostics/anonymizer.d.ts +55 -0
  15. package/dist/diagnostics/anonymizer.d.ts.map +1 -0
  16. package/dist/diagnostics/anonymizer.js +191 -0
  17. package/dist/diagnostics/anonymizer.js.map +1 -0
  18. package/dist/diagnostics/channels.d.ts +132 -0
  19. package/dist/diagnostics/channels.d.ts.map +1 -0
  20. package/dist/diagnostics/channels.js +150 -0
  21. package/dist/diagnostics/channels.js.map +1 -0
  22. package/dist/diagnostics/collector.d.ts +183 -0
  23. package/dist/diagnostics/collector.d.ts.map +1 -0
  24. package/dist/diagnostics/collector.js +227 -0
  25. package/dist/diagnostics/collector.js.map +1 -0
  26. package/dist/diagnostics/index.d.ts +28 -0
  27. package/dist/diagnostics/index.d.ts.map +1 -0
  28. package/dist/diagnostics/index.js +31 -0
  29. package/dist/diagnostics/index.js.map +1 -0
  30. package/dist/index.d.ts +13 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +18 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/schemas/absorb-observations.d.ts +63 -0
  35. package/dist/schemas/absorb-observations.d.ts.map +1 -0
  36. package/dist/schemas/absorb-observations.js +25 -0
  37. package/dist/schemas/absorb-observations.js.map +1 -0
  38. package/dist/schemas/active-sessions.d.ts +71 -0
  39. package/dist/schemas/active-sessions.d.ts.map +1 -0
  40. package/dist/schemas/active-sessions.js +19 -0
  41. package/dist/schemas/active-sessions.js.map +1 -0
  42. package/dist/schemas/analyze.d.ts +38 -0
  43. package/dist/schemas/analyze.d.ts.map +1 -0
  44. package/dist/schemas/analyze.js +30 -0
  45. package/dist/schemas/analyze.js.map +1 -0
  46. package/dist/schemas/common.d.ts +55 -0
  47. package/dist/schemas/common.d.ts.map +1 -0
  48. package/dist/schemas/common.js +65 -0
  49. package/dist/schemas/common.js.map +1 -0
  50. package/dist/schemas/create-decision.d.ts +48 -0
  51. package/dist/schemas/create-decision.d.ts.map +1 -0
  52. package/dist/schemas/create-decision.js +31 -0
  53. package/dist/schemas/create-decision.js.map +1 -0
  54. package/dist/schemas/create-learning.d.ts +107 -0
  55. package/dist/schemas/create-learning.d.ts.map +1 -0
  56. package/dist/schemas/create-learning.js +64 -0
  57. package/dist/schemas/create-learning.js.map +1 -0
  58. package/dist/schemas/get-transcript.d.ts +24 -0
  59. package/dist/schemas/get-transcript.d.ts.map +1 -0
  60. package/dist/schemas/get-transcript.js +22 -0
  61. package/dist/schemas/get-transcript.js.map +1 -0
  62. package/dist/schemas/index.d.ts +23 -0
  63. package/dist/schemas/index.d.ts.map +1 -0
  64. package/dist/schemas/index.js +23 -0
  65. package/dist/schemas/index.js.map +1 -0
  66. package/dist/schemas/log.d.ts +36 -0
  67. package/dist/schemas/log.d.ts.map +1 -0
  68. package/dist/schemas/log.js +27 -0
  69. package/dist/schemas/log.js.map +1 -0
  70. package/dist/schemas/prepare-context.d.ts +41 -0
  71. package/dist/schemas/prepare-context.d.ts.map +1 -0
  72. package/dist/schemas/prepare-context.js +31 -0
  73. package/dist/schemas/prepare-context.js.map +1 -0
  74. package/dist/schemas/recall.d.ts +41 -0
  75. package/dist/schemas/recall.d.ts.map +1 -0
  76. package/dist/schemas/recall.js +47 -0
  77. package/dist/schemas/recall.js.map +1 -0
  78. package/dist/schemas/record-scar-usage-batch.d.ts +82 -0
  79. package/dist/schemas/record-scar-usage-batch.d.ts.map +1 -0
  80. package/dist/schemas/record-scar-usage-batch.js +25 -0
  81. package/dist/schemas/record-scar-usage-batch.js.map +1 -0
  82. package/dist/schemas/record-scar-usage.d.ts +51 -0
  83. package/dist/schemas/record-scar-usage.d.ts.map +1 -0
  84. package/dist/schemas/record-scar-usage.js +32 -0
  85. package/dist/schemas/record-scar-usage.js.map +1 -0
  86. package/dist/schemas/save-transcript.d.ts +38 -0
  87. package/dist/schemas/save-transcript.d.ts.map +1 -0
  88. package/dist/schemas/save-transcript.js +30 -0
  89. package/dist/schemas/save-transcript.js.map +1 -0
  90. package/dist/schemas/search.d.ts +36 -0
  91. package/dist/schemas/search.d.ts.map +1 -0
  92. package/dist/schemas/search.js +27 -0
  93. package/dist/schemas/search.js.map +1 -0
  94. package/dist/schemas/session-close.d.ts +371 -0
  95. package/dist/schemas/session-close.d.ts.map +1 -0
  96. package/dist/schemas/session-close.js +95 -0
  97. package/dist/schemas/session-close.js.map +1 -0
  98. package/dist/schemas/session-start.d.ts +46 -0
  99. package/dist/schemas/session-start.d.ts.map +1 -0
  100. package/dist/schemas/session-start.js +33 -0
  101. package/dist/schemas/session-start.js.map +1 -0
  102. package/dist/schemas/thread.d.ts +72 -0
  103. package/dist/schemas/thread.d.ts.map +1 -0
  104. package/dist/schemas/thread.js +39 -0
  105. package/dist/schemas/thread.js.map +1 -0
  106. package/dist/server.d.ts +22 -0
  107. package/dist/server.d.ts.map +1 -0
  108. package/dist/server.js +313 -0
  109. package/dist/server.js.map +1 -0
  110. package/dist/services/active-sessions.d.ts +66 -0
  111. package/dist/services/active-sessions.d.ts.map +1 -0
  112. package/dist/services/active-sessions.js +311 -0
  113. package/dist/services/active-sessions.js.map +1 -0
  114. package/dist/services/agent-detection.d.ts +25 -0
  115. package/dist/services/agent-detection.d.ts.map +1 -0
  116. package/dist/services/agent-detection.js +93 -0
  117. package/dist/services/agent-detection.js.map +1 -0
  118. package/dist/services/analytics.d.ts +201 -0
  119. package/dist/services/analytics.d.ts.map +1 -0
  120. package/dist/services/analytics.js +483 -0
  121. package/dist/services/analytics.js.map +1 -0
  122. package/dist/services/cache.d.ts +148 -0
  123. package/dist/services/cache.d.ts.map +1 -0
  124. package/dist/services/cache.js +384 -0
  125. package/dist/services/cache.js.map +1 -0
  126. package/dist/services/cache.test.d.ts +8 -0
  127. package/dist/services/cache.test.d.ts.map +1 -0
  128. package/dist/services/cache.test.js +267 -0
  129. package/dist/services/cache.test.js.map +1 -0
  130. package/dist/services/compliance-validator.d.ts +30 -0
  131. package/dist/services/compliance-validator.d.ts.map +1 -0
  132. package/dist/services/compliance-validator.js +257 -0
  133. package/dist/services/compliance-validator.js.map +1 -0
  134. package/dist/services/config.d.ts +48 -0
  135. package/dist/services/config.d.ts.map +1 -0
  136. package/dist/services/config.js +128 -0
  137. package/dist/services/config.js.map +1 -0
  138. package/dist/services/embedding.d.ts +58 -0
  139. package/dist/services/embedding.d.ts.map +1 -0
  140. package/dist/services/embedding.js +243 -0
  141. package/dist/services/embedding.js.map +1 -0
  142. package/dist/services/gitmem-dir.d.ts +38 -0
  143. package/dist/services/gitmem-dir.d.ts.map +1 -0
  144. package/dist/services/gitmem-dir.js +84 -0
  145. package/dist/services/gitmem-dir.js.map +1 -0
  146. package/dist/services/local-file-storage.d.ts +56 -0
  147. package/dist/services/local-file-storage.d.ts.map +1 -0
  148. package/dist/services/local-file-storage.js +213 -0
  149. package/dist/services/local-file-storage.js.map +1 -0
  150. package/dist/services/local-vector-search.d.ts +137 -0
  151. package/dist/services/local-vector-search.d.ts.map +1 -0
  152. package/dist/services/local-vector-search.js +311 -0
  153. package/dist/services/local-vector-search.js.map +1 -0
  154. package/dist/services/metrics.d.ts +104 -0
  155. package/dist/services/metrics.d.ts.map +1 -0
  156. package/dist/services/metrics.js +264 -0
  157. package/dist/services/metrics.js.map +1 -0
  158. package/dist/services/session-state.d.ts +113 -0
  159. package/dist/services/session-state.d.ts.map +1 -0
  160. package/dist/services/session-state.js +203 -0
  161. package/dist/services/session-state.js.map +1 -0
  162. package/dist/services/startup.d.ts +112 -0
  163. package/dist/services/startup.d.ts.map +1 -0
  164. package/dist/services/startup.js +436 -0
  165. package/dist/services/startup.js.map +1 -0
  166. package/dist/services/storage.d.ts +43 -0
  167. package/dist/services/storage.d.ts.map +1 -0
  168. package/dist/services/storage.js +92 -0
  169. package/dist/services/storage.js.map +1 -0
  170. package/dist/services/supabase-client.d.ts +163 -0
  171. package/dist/services/supabase-client.d.ts.map +1 -0
  172. package/dist/services/supabase-client.js +510 -0
  173. package/dist/services/supabase-client.js.map +1 -0
  174. package/dist/services/thread-dedup.d.ts +44 -0
  175. package/dist/services/thread-dedup.d.ts.map +1 -0
  176. package/dist/services/thread-dedup.js +113 -0
  177. package/dist/services/thread-dedup.js.map +1 -0
  178. package/dist/services/thread-manager.d.ts +77 -0
  179. package/dist/services/thread-manager.d.ts.map +1 -0
  180. package/dist/services/thread-manager.js +250 -0
  181. package/dist/services/thread-manager.js.map +1 -0
  182. package/dist/services/thread-suggestions.d.ts +66 -0
  183. package/dist/services/thread-suggestions.d.ts.map +1 -0
  184. package/dist/services/thread-suggestions.js +243 -0
  185. package/dist/services/thread-suggestions.js.map +1 -0
  186. package/dist/services/thread-supabase.d.ts +111 -0
  187. package/dist/services/thread-supabase.d.ts.map +1 -0
  188. package/dist/services/thread-supabase.js +459 -0
  189. package/dist/services/thread-supabase.js.map +1 -0
  190. package/dist/services/thread-vitality.d.ts +65 -0
  191. package/dist/services/thread-vitality.d.ts.map +1 -0
  192. package/dist/services/thread-vitality.js +143 -0
  193. package/dist/services/thread-vitality.js.map +1 -0
  194. package/dist/services/tier.d.ts +52 -0
  195. package/dist/services/tier.d.ts.map +1 -0
  196. package/dist/services/tier.js +109 -0
  197. package/dist/services/tier.js.map +1 -0
  198. package/dist/services/timezone.d.ts +37 -0
  199. package/dist/services/timezone.d.ts.map +1 -0
  200. package/dist/services/timezone.js +147 -0
  201. package/dist/services/timezone.js.map +1 -0
  202. package/dist/services/transcript-chunker.d.ts +18 -0
  203. package/dist/services/transcript-chunker.d.ts.map +1 -0
  204. package/dist/services/transcript-chunker.js +237 -0
  205. package/dist/services/transcript-chunker.js.map +1 -0
  206. package/dist/services/triple-writer.d.ts +128 -0
  207. package/dist/services/triple-writer.d.ts.map +1 -0
  208. package/dist/services/triple-writer.js +338 -0
  209. package/dist/services/triple-writer.js.map +1 -0
  210. package/dist/services/variant-assignment.d.ts +92 -0
  211. package/dist/services/variant-assignment.d.ts.map +1 -0
  212. package/dist/services/variant-assignment.js +196 -0
  213. package/dist/services/variant-assignment.js.map +1 -0
  214. package/dist/tools/absorb-observations.d.ts +16 -0
  215. package/dist/tools/absorb-observations.d.ts.map +1 -0
  216. package/dist/tools/absorb-observations.js +82 -0
  217. package/dist/tools/absorb-observations.js.map +1 -0
  218. package/dist/tools/analyze.d.ts +55 -0
  219. package/dist/tools/analyze.d.ts.map +1 -0
  220. package/dist/tools/analyze.js +139 -0
  221. package/dist/tools/analyze.js.map +1 -0
  222. package/dist/tools/cleanup-threads.d.ts +47 -0
  223. package/dist/tools/cleanup-threads.d.ts.map +1 -0
  224. package/dist/tools/cleanup-threads.js +127 -0
  225. package/dist/tools/cleanup-threads.js.map +1 -0
  226. package/dist/tools/confirm-scars.d.ts +23 -0
  227. package/dist/tools/confirm-scars.d.ts.map +1 -0
  228. package/dist/tools/confirm-scars.js +209 -0
  229. package/dist/tools/confirm-scars.js.map +1 -0
  230. package/dist/tools/create-decision.d.ts +15 -0
  231. package/dist/tools/create-decision.d.ts.map +1 -0
  232. package/dist/tools/create-decision.js +138 -0
  233. package/dist/tools/create-decision.js.map +1 -0
  234. package/dist/tools/create-learning.d.ts +15 -0
  235. package/dist/tools/create-learning.d.ts.map +1 -0
  236. package/dist/tools/create-learning.js +226 -0
  237. package/dist/tools/create-learning.js.map +1 -0
  238. package/dist/tools/create-thread.d.ts +42 -0
  239. package/dist/tools/create-thread.d.ts.map +1 -0
  240. package/dist/tools/create-thread.js +180 -0
  241. package/dist/tools/create-thread.js.map +1 -0
  242. package/dist/tools/definitions.d.ts +5013 -0
  243. package/dist/tools/definitions.d.ts.map +1 -0
  244. package/dist/tools/definitions.js +2017 -0
  245. package/dist/tools/definitions.js.map +1 -0
  246. package/dist/tools/dismiss-suggestion.d.ts +20 -0
  247. package/dist/tools/dismiss-suggestion.d.ts.map +1 -0
  248. package/dist/tools/dismiss-suggestion.js +40 -0
  249. package/dist/tools/dismiss-suggestion.js.map +1 -0
  250. package/dist/tools/get-transcript.d.ts +24 -0
  251. package/dist/tools/get-transcript.d.ts.map +1 -0
  252. package/dist/tools/get-transcript.js +52 -0
  253. package/dist/tools/get-transcript.js.map +1 -0
  254. package/dist/tools/graph-traverse.d.ts +83 -0
  255. package/dist/tools/graph-traverse.d.ts.map +1 -0
  256. package/dist/tools/graph-traverse.js +394 -0
  257. package/dist/tools/graph-traverse.js.map +1 -0
  258. package/dist/tools/list-threads.d.ts +15 -0
  259. package/dist/tools/list-threads.d.ts.map +1 -0
  260. package/dist/tools/list-threads.js +114 -0
  261. package/dist/tools/list-threads.js.map +1 -0
  262. package/dist/tools/log.d.ts +43 -0
  263. package/dist/tools/log.d.ts.map +1 -0
  264. package/dist/tools/log.js +157 -0
  265. package/dist/tools/log.js.map +1 -0
  266. package/dist/tools/prepare-context.d.ts +36 -0
  267. package/dist/tools/prepare-context.d.ts.map +1 -0
  268. package/dist/tools/prepare-context.js +353 -0
  269. package/dist/tools/prepare-context.js.map +1 -0
  270. package/dist/tools/promote-suggestion.d.ts +25 -0
  271. package/dist/tools/promote-suggestion.d.ts.map +1 -0
  272. package/dist/tools/promote-suggestion.js +60 -0
  273. package/dist/tools/promote-suggestion.js.map +1 -0
  274. package/dist/tools/recall.d.ts +77 -0
  275. package/dist/tools/recall.d.ts.map +1 -0
  276. package/dist/tools/recall.js +423 -0
  277. package/dist/tools/recall.js.map +1 -0
  278. package/dist/tools/recall.test.d.ts +5 -0
  279. package/dist/tools/recall.test.d.ts.map +1 -0
  280. package/dist/tools/recall.test.js +155 -0
  281. package/dist/tools/recall.test.js.map +1 -0
  282. package/dist/tools/record-scar-usage-batch.d.ts +10 -0
  283. package/dist/tools/record-scar-usage-batch.d.ts.map +1 -0
  284. package/dist/tools/record-scar-usage-batch.js +153 -0
  285. package/dist/tools/record-scar-usage-batch.js.map +1 -0
  286. package/dist/tools/record-scar-usage.d.ts +14 -0
  287. package/dist/tools/record-scar-usage.d.ts.map +1 -0
  288. package/dist/tools/record-scar-usage.js +94 -0
  289. package/dist/tools/record-scar-usage.js.map +1 -0
  290. package/dist/tools/resolve-thread.d.ts +16 -0
  291. package/dist/tools/resolve-thread.d.ts.map +1 -0
  292. package/dist/tools/resolve-thread.js +102 -0
  293. package/dist/tools/resolve-thread.js.map +1 -0
  294. package/dist/tools/save-transcript.d.ts +29 -0
  295. package/dist/tools/save-transcript.d.ts.map +1 -0
  296. package/dist/tools/save-transcript.js +97 -0
  297. package/dist/tools/save-transcript.js.map +1 -0
  298. package/dist/tools/search.d.ts +46 -0
  299. package/dist/tools/search.d.ts.map +1 -0
  300. package/dist/tools/search.js +186 -0
  301. package/dist/tools/search.js.map +1 -0
  302. package/dist/tools/session-close.d.ts +14 -0
  303. package/dist/tools/session-close.d.ts.map +1 -0
  304. package/dist/tools/session-close.js +881 -0
  305. package/dist/tools/session-close.js.map +1 -0
  306. package/dist/tools/session-start.d.ts +38 -0
  307. package/dist/tools/session-start.d.ts.map +1 -0
  308. package/dist/tools/session-start.js +1104 -0
  309. package/dist/tools/session-start.js.map +1 -0
  310. package/dist/types/index.d.ts +456 -0
  311. package/dist/types/index.d.ts.map +1 -0
  312. package/dist/types/index.js +5 -0
  313. package/dist/types/index.js.map +1 -0
  314. package/package.json +76 -0
  315. package/schema/setup.sql +193 -0
  316. package/schema/starter-scars.json +206 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Zod schemas for thread lifecycle tools (OD-thread-lifecycle)
3
+ */
4
+ import { z } from "zod";
5
+ import { ProjectSchema } from "./common.js";
6
+ /**
7
+ * Thread status enum
8
+ */
9
+ export const ThreadStatusSchema = z.enum(["open", "resolved"]);
10
+ /**
11
+ * Thread object schema (structured thread with lifecycle)
12
+ */
13
+ export const ThreadObjectSchema = z.object({
14
+ id: z.string(),
15
+ text: z.string(),
16
+ status: ThreadStatusSchema,
17
+ created_at: z.string(),
18
+ resolved_at: z.string().optional(),
19
+ source_session: z.string().optional(),
20
+ resolved_by_session: z.string().optional(),
21
+ resolution_note: z.string().optional(),
22
+ });
23
+ /**
24
+ * list_threads parameters
25
+ */
26
+ export const ListThreadsParamsSchema = z.object({
27
+ status: ThreadStatusSchema.optional(),
28
+ include_resolved: z.boolean().optional(),
29
+ project: ProjectSchema.optional(),
30
+ });
31
+ /**
32
+ * resolve_thread parameters
33
+ */
34
+ export const ResolveThreadParamsSchema = z.object({
35
+ thread_id: z.string().optional(),
36
+ text_match: z.string().optional(),
37
+ resolution_note: z.string().optional(),
38
+ });
39
+ //# sourceMappingURL=thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/schemas/thread.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GitMem MCP Server
3
+ *
4
+ * Registers all tools and handles MCP protocol communication.
5
+ * Tool definitions are in ./tools/definitions.ts
6
+ */
7
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
+ /**
9
+ * Create and configure the MCP server
10
+ */
11
+ export declare function createServer(): Server;
12
+ /**
13
+ * Run the server with stdio transport
14
+ *
15
+ * OD-473: Initializes local vector search in background for fast startup.
16
+ * OD-489: Uses direct Supabase queries to get embeddings for local cache.
17
+ *
18
+ * Server starts immediately; cache loads in background.
19
+ * First few queries may use Supabase fallback until cache is ready.
20
+ */
21
+ export declare function runServer(): Promise<void>;
22
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAqEnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAyQrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B/C"}
package/dist/server.js ADDED
@@ -0,0 +1,313 @@
1
+ /**
2
+ * GitMem MCP Server
3
+ *
4
+ * Registers all tools and handles MCP protocol communication.
5
+ * Tool definitions are in ./tools/definitions.ts
6
+ */
7
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import { sessionStart, sessionRefresh } from "./tools/session-start.js";
11
+ import { sessionClose } from "./tools/session-close.js";
12
+ import { createLearning } from "./tools/create-learning.js";
13
+ import { createDecision } from "./tools/create-decision.js";
14
+ import { recordScarUsage } from "./tools/record-scar-usage.js";
15
+ import { recordScarUsageBatch } from "./tools/record-scar-usage-batch.js";
16
+ import { recall } from "./tools/recall.js";
17
+ import { confirmScars } from "./tools/confirm-scars.js";
18
+ import { saveTranscript } from "./tools/save-transcript.js";
19
+ import { getTranscript } from "./tools/get-transcript.js";
20
+ import { search } from "./tools/search.js";
21
+ import { log } from "./tools/log.js";
22
+ import { analyze } from "./tools/analyze.js";
23
+ import { graphTraverse } from "./tools/graph-traverse.js";
24
+ import { prepareContext } from "./tools/prepare-context.js";
25
+ import { absorbObservations } from "./tools/absorb-observations.js";
26
+ import { listThreads } from "./tools/list-threads.js";
27
+ import { resolveThread } from "./tools/resolve-thread.js";
28
+ import { createThread } from "./tools/create-thread.js";
29
+ import { promoteSuggestion } from "./tools/promote-suggestion.js";
30
+ import { dismissSuggestion } from "./tools/dismiss-suggestion.js";
31
+ import { cleanupThreads } from "./tools/cleanup-threads.js";
32
+ import { getCacheStatus, checkCacheHealth, flushCache, startBackgroundInit, } from "./services/startup.js";
33
+ import { getTier, hasSupabase, hasCacheManagement, hasBatchOperations, hasTranscripts, } from "./services/tier.js";
34
+ import { getRegisteredTools } from "./tools/definitions.js";
35
+ /**
36
+ * Create and configure the MCP server
37
+ */
38
+ export function createServer() {
39
+ const server = new Server({
40
+ name: "gitmem-mcp",
41
+ version: "0.1.0",
42
+ }, {
43
+ capabilities: {
44
+ tools: {},
45
+ },
46
+ });
47
+ // Register list tools handler (tier-gated)
48
+ const registeredTools = getRegisteredTools();
49
+ const registeredToolNames = new Set(registeredTools.map(t => t.name));
50
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
51
+ tools: registeredTools,
52
+ }));
53
+ // Register call tool handler
54
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
55
+ const { name, arguments: args } = request.params;
56
+ const toolArgs = (args || {});
57
+ // Guard: reject calls to tools not available in current tier
58
+ if (!registeredToolNames.has(name)) {
59
+ return {
60
+ content: [
61
+ {
62
+ type: "text",
63
+ text: JSON.stringify({ error: `Unknown tool: ${name}. Available tools depend on your GitMem tier (current: ${getTier()}).` }),
64
+ },
65
+ ],
66
+ isError: true,
67
+ };
68
+ }
69
+ try {
70
+ let result;
71
+ switch (name) {
72
+ case "recall":
73
+ case "gitmem-r":
74
+ result = await recall(toolArgs);
75
+ break;
76
+ case "confirm_scars":
77
+ case "gitmem-cs":
78
+ case "gm-confirm":
79
+ result = await confirmScars(toolArgs);
80
+ break;
81
+ case "session_start":
82
+ case "gitmem-ss":
83
+ case "gm-open":
84
+ result = await sessionStart(toolArgs);
85
+ break;
86
+ case "session_refresh":
87
+ case "gitmem-sr":
88
+ case "gm-refresh":
89
+ result = await sessionRefresh(toolArgs);
90
+ break;
91
+ case "session_close":
92
+ case "gitmem-sc":
93
+ case "gm-close":
94
+ result = await sessionClose(toolArgs);
95
+ break;
96
+ case "create_learning":
97
+ case "gitmem-cl":
98
+ case "gm-scar":
99
+ result = await createLearning(toolArgs);
100
+ break;
101
+ case "create_decision":
102
+ case "gitmem-cd":
103
+ result = await createDecision(toolArgs);
104
+ break;
105
+ case "record_scar_usage":
106
+ case "gitmem-rs":
107
+ result = await recordScarUsage(toolArgs);
108
+ break;
109
+ case "record_scar_usage_batch":
110
+ case "gitmem-rsb":
111
+ result = await recordScarUsageBatch(toolArgs);
112
+ break;
113
+ case "save_transcript":
114
+ case "gitmem-st":
115
+ result = await saveTranscript(toolArgs);
116
+ break;
117
+ case "get_transcript":
118
+ case "gitmem-gt":
119
+ result = await getTranscript(toolArgs);
120
+ break;
121
+ case "search":
122
+ case "gitmem-search":
123
+ case "gm-search":
124
+ result = await search(toolArgs);
125
+ break;
126
+ case "log":
127
+ case "gitmem-log":
128
+ case "gm-log":
129
+ result = await log(toolArgs);
130
+ break;
131
+ case "analyze":
132
+ case "gitmem-analyze":
133
+ case "gm-analyze":
134
+ result = await analyze(toolArgs);
135
+ break;
136
+ case "prepare_context":
137
+ case "gitmem-pc":
138
+ case "gm-pc":
139
+ result = await prepareContext(toolArgs);
140
+ break;
141
+ case "absorb_observations":
142
+ case "gitmem-ao":
143
+ case "gm-absorb":
144
+ result = await absorbObservations(toolArgs);
145
+ break;
146
+ case "list_threads":
147
+ case "gitmem-lt":
148
+ case "gm-threads":
149
+ result = await listThreads(toolArgs);
150
+ break;
151
+ case "resolve_thread":
152
+ case "gitmem-rt":
153
+ case "gm-resolve":
154
+ result = await resolveThread(toolArgs);
155
+ break;
156
+ case "create_thread":
157
+ case "gitmem-ct":
158
+ case "gm-thread-new":
159
+ result = await createThread(toolArgs);
160
+ break;
161
+ case "promote_suggestion":
162
+ case "gitmem-ps":
163
+ case "gm-promote":
164
+ result = await promoteSuggestion(toolArgs);
165
+ break;
166
+ case "dismiss_suggestion":
167
+ case "gitmem-ds":
168
+ case "gm-dismiss":
169
+ result = await dismissSuggestion(toolArgs);
170
+ break;
171
+ case "cleanup_threads":
172
+ case "gitmem-cleanup":
173
+ case "gm-cleanup":
174
+ result = await cleanupThreads(toolArgs);
175
+ break;
176
+ case "gitmem-help": {
177
+ const tier = getTier();
178
+ const commands = [
179
+ { alias: "gitmem-r", full: "recall", description: "Check scars before taking action" },
180
+ { alias: "gitmem-cs", full: "confirm_scars", description: "Confirm recalled scars (APPLYING/N_A/REFUTED)" },
181
+ { alias: "gitmem-ss", full: "session_start", description: "Initialize session with context" },
182
+ { alias: "gitmem-sc", full: "session_close", description: "Close session with compliance validation" },
183
+ { alias: "gitmem-cl", full: "create_learning", description: "Create scar/win/pattern entry" },
184
+ { alias: "gitmem-cd", full: "create_decision", description: "Log architectural/operational decision" },
185
+ { alias: "gitmem-rs", full: "record_scar_usage", description: "Track scar application" },
186
+ { alias: "gitmem-search", full: "search", description: "Search institutional memory (exploration)" },
187
+ { alias: "gitmem-log", full: "log", description: "List recent learnings chronologically" },
188
+ { alias: "gitmem-analyze", full: "analyze", description: "Session analytics and insights" },
189
+ { alias: "gitmem-pc", full: "prepare_context", description: "Generate memory payload for sub-agents" },
190
+ { alias: "gitmem-ao", full: "absorb_observations", description: "Capture sub-agent/teammate observations" },
191
+ { alias: "gitmem-lt", full: "list_threads", description: "List open threads across sessions" },
192
+ { alias: "gitmem-rt", full: "resolve_thread", description: "Mark a thread as resolved" },
193
+ { alias: "gitmem-ps", full: "promote_suggestion", description: "Promote a suggested thread to open thread" },
194
+ { alias: "gitmem-ds", full: "dismiss_suggestion", description: "Dismiss a suggested thread" },
195
+ { alias: "gitmem-cleanup", full: "cleanup_threads", description: "Triage threads by lifecycle health" },
196
+ ];
197
+ if (hasBatchOperations()) {
198
+ commands.push({ alias: "gitmem-rsb", full: "record_scar_usage_batch", description: "Track multiple scars (batch)" });
199
+ }
200
+ if (hasTranscripts()) {
201
+ commands.push({ alias: "gitmem-st", full: "save_transcript", description: "Save session transcript to storage" }, { alias: "gitmem-gt", full: "get_transcript", description: "Retrieve session transcript" });
202
+ }
203
+ if (hasCacheManagement()) {
204
+ commands.push({ alias: "gitmem-cache-status", full: "cache_status", description: "Show cache status" }, { alias: "gitmem-cache-health", full: "cache_health", description: "Compare local vs remote" }, { alias: "gitmem-cache-flush", full: "cache_flush", description: "Force reload from Supabase" });
205
+ }
206
+ // Output colored header directly to terminal (stderr)
207
+ console.error(`
208
+ \x1b[31m╔═══════════════════════════════════════════════════════════╗\x1b[0m
209
+ \x1b[31m║\x1b[0m \x1b[31m║\x1b[0m
210
+ \x1b[31m║ ██████ ██ ████████ ███ ███ ███████ ███ ███ ║\x1b[0m
211
+ \x1b[38;5;208m║ ██ ██ ██ ████ ████ ██ ████ ████ ║\x1b[0m
212
+ \x1b[38;5;208m║ ██ ███ ██ ██ ██ ████ ██ █████ ██ ████ ██ ║\x1b[0m
213
+ \x1b[33m║ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ║\x1b[0m
214
+ \x1b[33m║ ██████ ██ ██ ██ ██ ███████ ██ ██ ║\x1b[0m
215
+ \x1b[33m║\x1b[0m \x1b[33m║\x1b[0m
216
+ \x1b[38;5;208m║\x1b[0m \x1b[1;37mInstitutional Memory & Learning System\x1b[0m \x1b[38;5;208m║\x1b[0m
217
+ \x1b[31m║\x1b[0m \x1b[3;90mNever repeat the same mistake\x1b[0m \x1b[31m║\x1b[0m
218
+ \x1b[31m║\x1b[0m \x1b[31m║\x1b[0m
219
+ \x1b[31m╚═══════════════════════════════════════════════════════════╝\x1b[0m
220
+ `);
221
+ // Return plain JSON result (no header - it's already printed above)
222
+ result = {
223
+ version: "0.1.0",
224
+ tier,
225
+ tools_registered: registeredTools.length,
226
+ storage: hasSupabase() ? "supabase" : "local (.gitmem/)",
227
+ commands,
228
+ };
229
+ break;
230
+ }
231
+ // Knowledge graph traversal (Phase 3)
232
+ case "graph_traverse":
233
+ case "gitmem-graph":
234
+ case "gm-graph":
235
+ result = await graphTraverse(toolArgs);
236
+ break;
237
+ // Cache management tools (OD-473)
238
+ case "gitmem-cache-status":
239
+ case "gm-cache-s":
240
+ result = getCacheStatus(toolArgs.project || "orchestra_dev");
241
+ break;
242
+ case "gitmem-cache-health":
243
+ case "gm-cache-h":
244
+ result = await checkCacheHealth(toolArgs.project || "orchestra_dev");
245
+ break;
246
+ case "gitmem-cache-flush":
247
+ case "gm-cache-f":
248
+ result = await flushCache(toolArgs.project || "orchestra_dev");
249
+ break;
250
+ default:
251
+ throw new Error(`Unknown tool: ${name}`);
252
+ }
253
+ return {
254
+ content: [
255
+ {
256
+ type: "text",
257
+ text: (result && typeof result === "object" && "display" in result && typeof result.display === "string")
258
+ ? result.display
259
+ : (result && typeof result === "object" && "text" in result && typeof result.text === "string")
260
+ ? result.text
261
+ : JSON.stringify(result, null, 2),
262
+ },
263
+ ],
264
+ };
265
+ }
266
+ catch (error) {
267
+ const message = error instanceof Error ? error.message : String(error);
268
+ return {
269
+ content: [
270
+ {
271
+ type: "text",
272
+ text: JSON.stringify({ error: message }),
273
+ },
274
+ ],
275
+ isError: true,
276
+ };
277
+ }
278
+ });
279
+ return server;
280
+ }
281
+ /**
282
+ * Run the server with stdio transport
283
+ *
284
+ * OD-473: Initializes local vector search in background for fast startup.
285
+ * OD-489: Uses direct Supabase queries to get embeddings for local cache.
286
+ *
287
+ * Server starts immediately; cache loads in background.
288
+ * First few queries may use Supabase fallback until cache is ready.
289
+ */
290
+ export async function runServer() {
291
+ const tier = getTier();
292
+ // Start server immediately (don't block on cache loading)
293
+ const server = createServer();
294
+ const transport = new StdioServerTransport();
295
+ await server.connect(transport);
296
+ const toolCount = getRegisteredTools().length;
297
+ const storage = hasSupabase() ? "supabase" : "local";
298
+ console.error(`[gitmem] Tier: ${tier} | Storage: ${storage} | Tools: ${toolCount}`);
299
+ if (hasSupabase()) {
300
+ // Pro/Dev: Initialize local vector search in background (non-blocking)
301
+ // This loads scars with embeddings directly from Supabase REST API
302
+ console.error("[gitmem] Starting background cache initialization...");
303
+ startBackgroundInit("orchestra_dev");
304
+ // Also init weekend_warrior if needed (non-blocking)
305
+ startBackgroundInit("weekend_warrior");
306
+ console.error("[gitmem] Server ready | Cache loading in background");
307
+ }
308
+ else {
309
+ // Free tier: no Supabase cache to load
310
+ console.error("[gitmem] Server ready | Using local storage (.gitmem/)");
311
+ }
312
+ }
313
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Active Sessions Registry (GIT-19)
3
+ *
4
+ * CRUD operations for .gitmem/active-sessions.json — the multi-session
5
+ * registry that tracks all running MCP server sessions.
6
+ *
7
+ * Key design decisions:
8
+ * - Atomic writes (write-temp-rename) because multiple processes may
9
+ * register/unregister concurrently.
10
+ * - Sync I/O to match codebase convention (fs.writeFileSync etc).
11
+ * - Graceful degradation: corrupted registry = start fresh.
12
+ */
13
+ import type { ActiveSessionEntry } from "../types/index.js";
14
+ /**
15
+ * Register a new session in the active-sessions registry.
16
+ * Idempotent: re-registering the same session_id replaces the entry.
17
+ */
18
+ export declare function registerSession(entry: ActiveSessionEntry): void;
19
+ /**
20
+ * Unregister a session from the active-sessions registry.
21
+ * Returns true if the session was found and removed.
22
+ */
23
+ export declare function unregisterSession(sessionId: string): boolean;
24
+ /**
25
+ * List all active sessions from the registry.
26
+ */
27
+ export declare function listActiveSessions(): ActiveSessionEntry[];
28
+ /**
29
+ * Find a session by hostname and PID.
30
+ * Used by session_start to detect if this process already has a registered session.
31
+ */
32
+ export declare function findSessionByHostPid(hostname: string, pid: number): ActiveSessionEntry | null;
33
+ /**
34
+ * Find a session by session_id.
35
+ */
36
+ export declare function findSessionById(sessionId: string): ActiveSessionEntry | null;
37
+ /**
38
+ * Prune stale sessions from the registry (GIT-22 enhanced).
39
+ *
40
+ * A session is stale if:
41
+ * 1. Its started_at is older than 24 hours, OR
42
+ * 2. Its PID no longer exists on this hostname (process died without cleanup), OR
43
+ * 3. Its per-session directory/session.json is missing (orphaned registry entry)
44
+ *
45
+ * Also cleans up per-session directories for pruned sessions,
46
+ * and removes orphaned session directories with no registry entry.
47
+ * Returns the number of sessions pruned.
48
+ */
49
+ export declare function pruneStale(): number;
50
+ /**
51
+ * GIT-23: Migrate from old active-session.json (singular) to new multi-session format.
52
+ *
53
+ * Runs once per process. If old file exists and new registry does not:
54
+ * 1. Read old file
55
+ * 2. Create per-session directory with session.json
56
+ * 3. Create active-sessions.json registry with single entry
57
+ * 4. Rename old file to active-session.json.migrated (backup)
58
+ *
59
+ * Idempotent: skips if new registry already exists or old file is absent.
60
+ */
61
+ export declare function migrateFromLegacy(): boolean;
62
+ /**
63
+ * Reset migration flag (for testing only).
64
+ */
65
+ export declare function resetMigrationFlag(): void;
66
+ //# sourceMappingURL=active-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-sessions.d.ts","sourceRoot":"","sources":["../../src/services/active-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,mBAAmB,CAAC;AAyEpF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAQ/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAc5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAG7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAG5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA2DnC;AAyDD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAsD3C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}