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 @@
1
+ {"version":3,"file":"promote-suggestion.js","sourceRoot":"","sources":["../../src/tools/promote-suggestion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,KAAK,EACL,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAkBhC,kBAAkB;AAElB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAA+B;IAE/B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAE1B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE,oBAAoB,CAAC,oBAA2B,EAAE,SAAS,EAAE,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAC/D,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kCAAkC,MAAM,CAAC,aAAa,GAAG;YAChE,WAAW,EAAE,oBAAoB,CAAC,oBAA2B,EAAE,SAAS,EAAE,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;QACtC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B,YAAY,CAAC,KAAK,IAAI,SAAS,EAAE;YACnE,WAAW,EAAE,oBAAoB,CAAC,oBAA2B,EAAE,SAAS,EAAE,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACjF,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,oBAAoB,CAAC,oBAA2B,EAAE,SAAS,EAAE,CAAC,CAAC;KAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * recall Tool
3
+ *
4
+ * Check institutional memory for relevant scars before taking action.
5
+ * Core GitMem MVP tool that enables "check before act" workflow.
6
+ *
7
+ * Performance target: <2000ms response time (OD-429)
8
+ *
9
+ * OD-489: Uses local vector search when available for speed,
10
+ * falls back to Supabase scar_search when local cache isn't ready.
11
+ *
12
+ * OD-466: After scar search, fetches related knowledge triples and
13
+ * includes them in the formatted response for relationship context.
14
+ */
15
+ import type { KnowledgeTriple } from "../services/supabase-client.js";
16
+ import { type ScarWithVariant } from "../services/variant-assignment.js";
17
+ import type { Project, PerformanceData } from "../types/index.js";
18
+ /**
19
+ * Parameters for recall tool
20
+ */
21
+ export interface RecallParams {
22
+ plan: string;
23
+ project?: Project;
24
+ match_count?: number;
25
+ issue_id?: string;
26
+ }
27
+ /**
28
+ * Required verification block for enforcement gate (OD-487)
29
+ */
30
+ interface RequiredVerification {
31
+ when: string;
32
+ queries: string[];
33
+ must_show: string;
34
+ blocking?: boolean;
35
+ }
36
+ /**
37
+ * Formatted scar for response
38
+ */
39
+ interface FormattedScar {
40
+ id: string;
41
+ title: string;
42
+ learning_type?: string;
43
+ severity: string;
44
+ description: string;
45
+ counter_arguments: string[];
46
+ applies_when: string[];
47
+ source_issue?: string;
48
+ similarity: number;
49
+ required_verification?: RequiredVerification;
50
+ variant_info?: ScarWithVariant;
51
+ why_this_matters?: string;
52
+ action_protocol?: string[];
53
+ self_check_criteria?: string[];
54
+ related_triples?: KnowledgeTriple[];
55
+ }
56
+ /**
57
+ * Result from recall tool
58
+ */
59
+ export interface RecallResult {
60
+ activated: boolean;
61
+ plan: string;
62
+ project: Project;
63
+ match_count: number;
64
+ scars: FormattedScar[];
65
+ performance_ms: number;
66
+ formatted_response: string;
67
+ performance: PerformanceData;
68
+ }
69
+ /**
70
+ * Execute recall tool
71
+ *
72
+ * Queries orchestra_learnings for scars matching the provided plan
73
+ * using weighted semantic search (severity-weighted, temporally-decayed).
74
+ */
75
+ export declare function recall(params: RecallParams): Promise<RecallResult>;
76
+ export {};
77
+ //# sourceMappingURL=recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAYtE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,OAAO,EAAgB,eAAe,EAAsC,MAAM,mBAAmB,CAAC;AAEpH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0BD;;GAEG;AACH,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;IAC7C,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B,eAAe,CAAC,EAAE,eAAe,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;CAC9B;AAgID;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA+TxE"}
@@ -0,0 +1,423 @@
1
+ /**
2
+ * recall Tool
3
+ *
4
+ * Check institutional memory for relevant scars before taking action.
5
+ * Core GitMem MVP tool that enables "check before act" workflow.
6
+ *
7
+ * Performance target: <2000ms response time (OD-429)
8
+ *
9
+ * OD-489: Uses local vector search when available for speed,
10
+ * falls back to Supabase scar_search when local cache isn't ready.
11
+ *
12
+ * OD-466: After scar search, fetches related knowledge triples and
13
+ * includes them in the formatted response for relationship context.
14
+ */
15
+ import * as supabase from "../services/supabase-client.js";
16
+ import { localScarSearch, isLocalSearchReady } from "../services/local-vector-search.js";
17
+ import { hasSupabase, hasVariants, hasMetrics } from "../services/tier.js";
18
+ import { getStorage } from "../services/storage.js";
19
+ import { Timer, recordMetrics, buildPerformanceData, buildComponentPerformance, calculateContextBytes, } from "../services/metrics.js";
20
+ import { getOrAssignVariant, formatVariantEnforcement, } from "../services/variant-assignment.js";
21
+ import { addSurfacedScars, getCurrentSession } from "../services/session-state.js"; // OD-552
22
+ import { getAgentIdentity } from "../services/agent-detection.js"; // OD-547
23
+ import { v4 as uuidv4 } from "uuid";
24
+ import * as fs from "fs";
25
+ import { getSessionPath } from "../services/gitmem-dir.js";
26
+ /**
27
+ * Format scars into a readable response for Claude
28
+ */
29
+ function formatResponse(scars, plan) {
30
+ if (scars.length === 0) {
31
+ return `No relevant scars found for: "${plan.slice(0, 100)}..."
32
+
33
+ Proceed with caution - this may be new territory without documented lessons.`;
34
+ }
35
+ // OD-487: Check if any scars have required_verification (blocking gates)
36
+ const scarsWithVerification = scars.filter((s) => s.required_verification?.blocking);
37
+ const lines = [
38
+ "⚠️ INSTITUTIONAL MEMORY ACTIVATED",
39
+ "",
40
+ `Found ${scars.length} relevant scar${scars.length === 1 ? "" : "s"} for your plan:`,
41
+ "",
42
+ ];
43
+ // OD-487: Display blocking verification requirements FIRST and prominently
44
+ if (scarsWithVerification.length > 0) {
45
+ lines.push("═══════════════════════════════════════════════════════════════");
46
+ lines.push("🚨 **VERIFICATION REQUIRED BEFORE PROCEEDING**");
47
+ lines.push("═══════════════════════════════════════════════════════════════");
48
+ lines.push("");
49
+ for (const scar of scarsWithVerification) {
50
+ const rv = scar.required_verification;
51
+ lines.push(`**${scar.title}**`);
52
+ lines.push(`*When:* ${rv.when}`);
53
+ lines.push("");
54
+ lines.push("**YOU MUST RUN:**");
55
+ for (const query of rv.queries) {
56
+ lines.push("```sql");
57
+ lines.push(query);
58
+ lines.push("```");
59
+ }
60
+ lines.push("");
61
+ lines.push(`**MUST SHOW:** ${rv.must_show}`);
62
+ lines.push("");
63
+ lines.push("⛔ DO NOT write SQL until verification output is shown above.");
64
+ lines.push("");
65
+ }
66
+ lines.push("═══════════════════════════════════════════════════════════════");
67
+ lines.push("");
68
+ }
69
+ for (const scar of scars) {
70
+ const severityEmoji = {
71
+ critical: "🔴",
72
+ high: "🟠",
73
+ medium: "🟡",
74
+ low: "🟢",
75
+ }[scar.severity] || "⚪";
76
+ lines.push(`${severityEmoji} **${scar.title}** (${scar.severity}, score: ${scar.similarity.toFixed(2)})`);
77
+ // OD-525: Use variant enforcement text if available (blind to variant name)
78
+ if (scar.variant_info?.has_variants && scar.variant_info.variant) {
79
+ const variantText = formatVariantEnforcement(scar.variant_info.variant, scar.title);
80
+ lines.push(variantText);
81
+ }
82
+ else {
83
+ // Legacy path: use original scar description
84
+ lines.push(scar.description);
85
+ }
86
+ if (scar.counter_arguments.length > 0) {
87
+ lines.push("");
88
+ lines.push("*You might think:*");
89
+ for (const counter of scar.counter_arguments.slice(0, 2)) {
90
+ lines.push(` - ${counter}`);
91
+ }
92
+ }
93
+ if (scar.applies_when.length > 0) {
94
+ lines.push("");
95
+ lines.push("*Applies when:* " + scar.applies_when.slice(0, 3).join(", "));
96
+ }
97
+ // OD-530: Render LLM-cooperative enforcement fields (OD-508)
98
+ if (scar.why_this_matters) {
99
+ lines.push("");
100
+ lines.push(`**Why this matters:** ${scar.why_this_matters}`);
101
+ }
102
+ if (scar.action_protocol && scar.action_protocol.length > 0) {
103
+ lines.push("");
104
+ lines.push("**Action Protocol:**");
105
+ scar.action_protocol.forEach((step, i) => {
106
+ lines.push(` ${i + 1}. ${step}`);
107
+ });
108
+ }
109
+ if (scar.self_check_criteria && scar.self_check_criteria.length > 0) {
110
+ lines.push("");
111
+ lines.push("**Self-Check:**");
112
+ for (const criterion of scar.self_check_criteria) {
113
+ lines.push(` - [ ] ${criterion}`);
114
+ }
115
+ }
116
+ // OD-466: Render related knowledge triples
117
+ if (scar.related_triples && scar.related_triples.length > 0) {
118
+ lines.push("");
119
+ lines.push("*Related knowledge:*");
120
+ for (const triple of scar.related_triples) {
121
+ lines.push(` - ${triple.subject} **${triple.predicate}** ${triple.object}`);
122
+ }
123
+ }
124
+ if (scar.source_issue) {
125
+ lines.push(`*Source:* ${scar.source_issue}`);
126
+ }
127
+ lines.push("");
128
+ lines.push("---");
129
+ lines.push("");
130
+ }
131
+ lines.push("**Acknowledge these lessons before proceeding.**");
132
+ return lines.join("\n");
133
+ }
134
+ /**
135
+ * Execute recall tool
136
+ *
137
+ * Queries orchestra_learnings for scars matching the provided plan
138
+ * using weighted semantic search (severity-weighted, temporally-decayed).
139
+ */
140
+ export async function recall(params) {
141
+ const timer = new Timer();
142
+ const metricsId = uuidv4();
143
+ // Validate required parameter — callers may pass wrong param names
144
+ // (e.g., "action" instead of "plan"), which bypasses TypeScript at runtime
145
+ const plan = params.plan || params.action;
146
+ if (!plan || typeof plan !== "string" || plan.trim().length === 0) {
147
+ const latencyMs = timer.stop();
148
+ return {
149
+ activated: false,
150
+ plan: plan || "",
151
+ project: params.project || "orchestra_dev",
152
+ match_count: params.match_count || 3,
153
+ scars: [],
154
+ performance_ms: latencyMs,
155
+ formatted_response: "⚠️ Missing required parameter: plan (what you're about to do)",
156
+ performance: buildPerformanceData("recall", latencyMs, 0),
157
+ };
158
+ }
159
+ const project = params.project || "orchestra_dev";
160
+ const matchCount = params.match_count || 3;
161
+ const issueId = params.issue_id; // OD-525: For variant assignment
162
+ // Free tier: use local keyword search
163
+ if (!hasSupabase()) {
164
+ try {
165
+ const searchTimer = new Timer();
166
+ const rawScars = await getStorage().search(plan, matchCount);
167
+ const searchLatencyMs = searchTimer.stop();
168
+ const scars = rawScars.map((scar) => ({
169
+ id: scar.id,
170
+ title: scar.title,
171
+ learning_type: scar.learning_type || "scar",
172
+ severity: scar.severity || "medium",
173
+ description: scar.description || "",
174
+ counter_arguments: scar.counter_arguments || [],
175
+ applies_when: [],
176
+ similarity: scar.similarity || 0,
177
+ }));
178
+ const latencyMs = timer.stop();
179
+ const perfData = buildPerformanceData("recall", latencyMs, scars.length, {
180
+ memoriesSurfaced: scars.map((s) => s.id),
181
+ similarityScores: scars.map((s) => s.similarity),
182
+ search_mode: "local",
183
+ });
184
+ return {
185
+ activated: scars.length > 0,
186
+ plan,
187
+ project,
188
+ match_count: matchCount,
189
+ scars,
190
+ performance_ms: latencyMs,
191
+ formatted_response: formatResponse(scars, plan),
192
+ performance: perfData,
193
+ };
194
+ }
195
+ catch (error) {
196
+ const message = error instanceof Error ? error.message : String(error);
197
+ const latencyMs = timer.stop();
198
+ const perfData = buildPerformanceData("recall", latencyMs, 0);
199
+ return {
200
+ activated: false,
201
+ plan,
202
+ project,
203
+ match_count: matchCount,
204
+ scars: [],
205
+ performance_ms: latencyMs,
206
+ formatted_response: `⚠️ Error querying institutional memory: ${message}`,
207
+ performance: perfData,
208
+ };
209
+ }
210
+ }
211
+ // Pro/Dev tier: Check Supabase configuration
212
+ if (!supabase.isConfigured()) {
213
+ const latencyMs = timer.stop();
214
+ const perfData = buildPerformanceData("recall", latencyMs, 0);
215
+ return {
216
+ activated: false,
217
+ plan,
218
+ project,
219
+ match_count: matchCount,
220
+ scars: [],
221
+ performance_ms: latencyMs,
222
+ formatted_response: "⚠️ GitMem not configured - check SUPABASE_URL and SUPABASE_KEY environment variables.",
223
+ performance: perfData,
224
+ };
225
+ }
226
+ try {
227
+ let rawScars = [];
228
+ let cache_hit = false;
229
+ let cache_age_ms;
230
+ let search_mode = "remote";
231
+ let network_call = true; // Assume network call until proven otherwise
232
+ // OD-489: Try local vector search first (fast, no Supabase hit)
233
+ // Falls back to Supabase scar_search if local cache isn't ready
234
+ const searchTimer = new Timer();
235
+ if (isLocalSearchReady(project)) {
236
+ console.error("[recall] Using local vector search");
237
+ search_mode = "local";
238
+ cache_hit = true;
239
+ network_call = false; // LOCAL - no network call!
240
+ const localResults = await localScarSearch(plan, matchCount, project);
241
+ rawScars = localResults;
242
+ }
243
+ else {
244
+ console.error("[recall] Local cache not ready, using Supabase fallback");
245
+ search_mode = "remote";
246
+ network_call = true; // REMOTE - hits Supabase
247
+ // Fallback to Supabase scar_search via ww-mcp
248
+ const supabaseResult = await supabase.cachedScarSearch(plan, matchCount, project);
249
+ rawScars = supabaseResult.results;
250
+ cache_hit = supabaseResult.cache_hit;
251
+ cache_age_ms = supabaseResult.cache_age_ms;
252
+ }
253
+ const searchLatencyMs = searchTimer.stop();
254
+ // OD-547: Assign variants for A/B testing (dev tier only)
255
+ // Agent identity is always available, so variants are always assigned
256
+ const variantTimer = new Timer();
257
+ const variantResults = new Map();
258
+ const agentId = getAgentIdentity();
259
+ const currentSession = getCurrentSession();
260
+ const variantMetadata = {
261
+ issueId: issueId || currentSession?.linearIssue,
262
+ sessionId: currentSession?.sessionId,
263
+ };
264
+ if (hasVariants()) {
265
+ console.error(`[recall] Assigning variants for agent: ${agentId}`);
266
+ // Assign variants in parallel for all scars
267
+ const variantPromises = rawScars.map(async (scar) => {
268
+ const variantInfo = await getOrAssignVariant(agentId, scar.id, variantMetadata);
269
+ return { scarId: scar.id, variantInfo };
270
+ });
271
+ const results = await Promise.all(variantPromises);
272
+ for (const { scarId, variantInfo } of results) {
273
+ variantResults.set(scarId, variantInfo);
274
+ }
275
+ // OD-525: Record enforcement metrics for variants (dev only)
276
+ if (hasMetrics()) {
277
+ const metricsPromises = results
278
+ .filter(({ variantInfo }) => variantInfo.has_variants && variantInfo.variant)
279
+ .map(async ({ scarId, variantInfo }) => {
280
+ try {
281
+ await supabase.directUpsert("variant_performance_metrics", {
282
+ agent_id: agentId,
283
+ issue_id: variantMetadata.issueId || null,
284
+ session_id: variantMetadata.sessionId || null,
285
+ scar_id: scarId,
286
+ variant_id: variantInfo.variant.id,
287
+ enforcement_triggered: true,
288
+ });
289
+ }
290
+ catch (error) {
291
+ console.error(`[recall] Failed to record metrics for scar ${scarId}:`, error);
292
+ }
293
+ });
294
+ // Fire and forget
295
+ Promise.all(metricsPromises).catch((error) => {
296
+ console.error("[recall] Metrics recording error:", error);
297
+ });
298
+ }
299
+ }
300
+ const variantLatencyMs = variantTimer.stop();
301
+ // OD-466: Fetch related knowledge triples for surfaced scars
302
+ const tripleTimer = new Timer();
303
+ const scarIds = rawScars.map((s) => s.id);
304
+ const triplesMap = await supabase.fetchRelatedTriples(scarIds);
305
+ const tripleLatencyMs = tripleTimer.stop();
306
+ if (triplesMap.size > 0) {
307
+ console.error(`[recall] Found triples for ${triplesMap.size} scars (${tripleLatencyMs}ms)`);
308
+ }
309
+ // Format scars for response
310
+ const scars = rawScars.map((scar) => ({
311
+ id: scar.id,
312
+ title: scar.title,
313
+ learning_type: scar.learning_type || "scar",
314
+ severity: scar.severity || "medium",
315
+ description: scar.description || "",
316
+ counter_arguments: scar.counter_arguments || [],
317
+ applies_when: scar.applies_when || [],
318
+ source_issue: scar.source_linear_issue,
319
+ similarity: scar.similarity || 0,
320
+ required_verification: scar.required_verification,
321
+ variant_info: variantResults.get(scar.id), // OD-525
322
+ // OD-508: LLM-cooperative enforcement fields
323
+ why_this_matters: scar.why_this_matters,
324
+ action_protocol: scar.action_protocol,
325
+ self_check_criteria: scar.self_check_criteria,
326
+ // OD-466: Knowledge triples
327
+ related_triples: triplesMap.get(scar.id),
328
+ }));
329
+ // OD-552: Track surfaced scars for auto-bridge at session close
330
+ const recallSurfacedAt = new Date().toISOString();
331
+ const recallSurfacedScars = scars.map((scar) => ({
332
+ scar_id: scar.id,
333
+ scar_title: scar.title,
334
+ scar_severity: scar.severity || "medium",
335
+ surfaced_at: recallSurfacedAt,
336
+ source: "recall",
337
+ }));
338
+ addSurfacedScars(recallSurfacedScars);
339
+ // OD-552: Update per-session dir with accumulated surfaced scars
340
+ try {
341
+ const session = getCurrentSession();
342
+ if (session) {
343
+ const sessionFilePath = getSessionPath(session.sessionId, "session.json");
344
+ if (fs.existsSync(sessionFilePath)) {
345
+ const sessionData = JSON.parse(fs.readFileSync(sessionFilePath, "utf-8"));
346
+ sessionData.surfaced_scars = session.surfacedScars;
347
+ fs.writeFileSync(sessionFilePath, JSON.stringify(sessionData, null, 2));
348
+ }
349
+ }
350
+ }
351
+ catch (error) {
352
+ // Non-fatal: surfaced scars still tracked in memory
353
+ console.warn("[recall] Failed to update per-session file with surfaced scars:", error);
354
+ }
355
+ const latencyMs = timer.stop();
356
+ const memoriesSurfaced = scars.map((s) => s.id);
357
+ const similarityScores = scars.map((s) => s.similarity);
358
+ // OD-489: Build detailed performance breakdown for test harness
359
+ const breakdown = {
360
+ scar_search: buildComponentPerformance(searchLatencyMs, search_mode === "local" ? "local_cache" : "supabase", network_call, network_call ? "miss" : "hit"),
361
+ };
362
+ // Build performance data with detailed breakdown
363
+ const perfData = buildPerformanceData("recall", latencyMs, scars.length, {
364
+ memoriesSurfaced,
365
+ similarityScores,
366
+ cache_hit,
367
+ cache_age_ms,
368
+ search_mode,
369
+ breakdown,
370
+ });
371
+ // Record metrics asynchronously
372
+ const result = {
373
+ activated: scars.length > 0,
374
+ plan,
375
+ project,
376
+ match_count: matchCount,
377
+ scars,
378
+ performance_ms: latencyMs,
379
+ formatted_response: formatResponse(scars, plan),
380
+ performance: perfData,
381
+ };
382
+ recordMetrics({
383
+ id: metricsId,
384
+ tool_name: "recall",
385
+ query_text: plan,
386
+ tables_searched: search_mode === "local" ? [] : ["orchestra_learnings"],
387
+ latency_ms: latencyMs,
388
+ result_count: scars.length,
389
+ similarity_scores: similarityScores,
390
+ context_bytes: calculateContextBytes(result),
391
+ phase_tag: "recall",
392
+ memories_surfaced: memoriesSurfaced,
393
+ metadata: {
394
+ project,
395
+ match_count: matchCount,
396
+ cache_hit,
397
+ cache_age_ms,
398
+ search_mode,
399
+ // OD-489: Detailed instrumentation
400
+ network_calls_made: perfData.network_calls_made,
401
+ fully_local: perfData.fully_local,
402
+ },
403
+ }).catch(() => { }); // Don't fail on metrics error
404
+ return result;
405
+ }
406
+ catch (error) {
407
+ const message = error instanceof Error ? error.message : String(error);
408
+ console.error("[recall] Search failed:", message);
409
+ const latencyMs = timer.stop();
410
+ const perfData = buildPerformanceData("recall", latencyMs, 0);
411
+ return {
412
+ activated: false,
413
+ plan,
414
+ project,
415
+ match_count: matchCount,
416
+ scars: [],
417
+ performance_ms: latencyMs,
418
+ formatted_response: `⚠️ Error querying institutional memory: ${message}`,
419
+ performance: perfData,
420
+ };
421
+ }
422
+ }
423
+ //# sourceMappingURL=recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for recall tool
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=recall.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.test.d.ts","sourceRoot":"","sources":["../../src/tools/recall.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}