gitmem-mcp 1.0.3 → 1.0.5

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 (293) hide show
  1. package/CHANGELOG.md +14 -14
  2. package/dist/commands/check.d.ts +1 -1
  3. package/dist/commands/check.js +4 -3
  4. package/dist/diagnostics/anonymizer.d.ts +1 -1
  5. package/dist/diagnostics/anonymizer.js +1 -1
  6. package/dist/diagnostics/channels.d.ts +1 -1
  7. package/dist/diagnostics/channels.js +1 -1
  8. package/dist/diagnostics/collector.d.ts +1 -1
  9. package/dist/diagnostics/collector.js +1 -1
  10. package/dist/diagnostics/index.d.ts +1 -1
  11. package/dist/diagnostics/index.js +1 -1
  12. package/dist/hooks/quick-retrieve.js +2 -1
  13. package/dist/index.js +0 -0
  14. package/dist/schemas/active-sessions.d.ts +9 -9
  15. package/dist/schemas/active-sessions.js +1 -1
  16. package/dist/schemas/common.d.ts +2 -5
  17. package/dist/schemas/common.js +13 -7
  18. package/dist/schemas/create-learning.js +1 -1
  19. package/dist/schemas/session-close.d.ts +5 -8
  20. package/dist/schemas/session-close.js +7 -3
  21. package/dist/schemas/session-start.d.ts +4 -4
  22. package/dist/schemas/session-start.js +1 -1
  23. package/dist/schemas/thread.d.ts +1 -1
  24. package/dist/schemas/thread.js +1 -1
  25. package/dist/server.d.ts +2 -2
  26. package/dist/server.js +21 -10
  27. package/dist/services/active-sessions.js +3 -2
  28. package/dist/services/agent-briefing.d.ts +1 -1
  29. package/dist/services/agent-briefing.js +1 -1
  30. package/dist/services/agent-detection.d.ts +1 -0
  31. package/dist/services/agent-detection.js +21 -12
  32. package/dist/services/analytics.d.ts +1 -1
  33. package/dist/services/analytics.js +3 -3
  34. package/dist/services/behavioral-decay.js +2 -2
  35. package/dist/services/cache.d.ts +1 -1
  36. package/dist/services/cache.js +1 -1
  37. package/dist/services/compliance-validator.d.ts +1 -1
  38. package/dist/services/compliance-validator.js +5 -5
  39. package/dist/services/config.d.ts +1 -1
  40. package/dist/services/config.js +1 -1
  41. package/dist/services/file-lock.js +12 -0
  42. package/dist/services/gitmem-dir.d.ts +17 -4
  43. package/dist/services/gitmem-dir.js +43 -9
  44. package/dist/services/local-file-storage.d.ts +1 -1
  45. package/dist/services/local-file-storage.js +4 -3
  46. package/dist/services/local-vector-search.d.ts +1 -1
  47. package/dist/services/local-vector-search.js +2 -2
  48. package/dist/services/metrics.d.ts +6 -6
  49. package/dist/services/metrics.js +8 -8
  50. package/dist/services/session-state.d.ts +7 -7
  51. package/dist/services/session-state.js +19 -7
  52. package/dist/services/startup.d.ts +1 -1
  53. package/dist/services/startup.js +3 -2
  54. package/dist/services/supabase-client.d.ts +17 -6
  55. package/dist/services/supabase-client.js +44 -8
  56. package/dist/services/thread-manager.d.ts +1 -1
  57. package/dist/services/thread-manager.js +5 -5
  58. package/dist/services/thread-supabase.d.ts +1 -1
  59. package/dist/services/thread-supabase.js +2 -2
  60. package/dist/services/transcript-chunker.d.ts +1 -1
  61. package/dist/services/transcript-chunker.js +1 -1
  62. package/dist/services/variant-assignment.d.ts +6 -6
  63. package/dist/services/variant-assignment.js +9 -8
  64. package/dist/tools/analyze.d.ts +2 -2
  65. package/dist/tools/analyze.js +2 -2
  66. package/dist/tools/archive-learning.js +36 -22
  67. package/dist/tools/confirm-scars.js +1 -1
  68. package/dist/tools/create-decision.d.ts +1 -1
  69. package/dist/tools/create-decision.js +2 -2
  70. package/dist/tools/create-learning.d.ts +1 -1
  71. package/dist/tools/create-learning.js +4 -4
  72. package/dist/tools/create-linear-issue.d.ts +18 -0
  73. package/dist/tools/create-linear-issue.js +197 -0
  74. package/dist/tools/create-thread.d.ts +1 -1
  75. package/dist/tools/create-thread.js +2 -2
  76. package/dist/tools/definitions.js +50 -48
  77. package/dist/tools/get-transcript.d.ts +1 -1
  78. package/dist/tools/get-transcript.js +1 -1
  79. package/dist/tools/graph-traverse.d.ts +1 -1
  80. package/dist/tools/graph-traverse.js +18 -16
  81. package/dist/tools/list-threads.d.ts +2 -2
  82. package/dist/tools/list-threads.js +4 -4
  83. package/dist/tools/log.d.ts +1 -1
  84. package/dist/tools/log.js +1 -1
  85. package/dist/tools/prepare-context.d.ts +1 -1
  86. package/dist/tools/prepare-context.js +1 -1
  87. package/dist/tools/recall.d.ts +4 -4
  88. package/dist/tools/recall.js +25 -25
  89. package/dist/tools/record-scar-usage-batch.js +2 -2
  90. package/dist/tools/record-scar-usage.d.ts +1 -1
  91. package/dist/tools/record-scar-usage.js +3 -3
  92. package/dist/tools/resolve-thread.d.ts +2 -2
  93. package/dist/tools/resolve-thread.js +3 -3
  94. package/dist/tools/save-transcript.d.ts +1 -1
  95. package/dist/tools/save-transcript.js +1 -1
  96. package/dist/tools/search.d.ts +1 -1
  97. package/dist/tools/search.js +1 -1
  98. package/dist/tools/session-close.d.ts +1 -1
  99. package/dist/tools/session-close.js +31 -31
  100. package/dist/tools/session-start.d.ts +5 -5
  101. package/dist/tools/session-start.js +63 -61
  102. package/dist/types/index.d.ts +13 -13
  103. package/hooks/.claude-plugin/plugin.json +1 -1
  104. package/hooks/scripts/post-tool-use.sh +1 -1
  105. package/hooks/scripts/recall-check.sh +1 -1
  106. package/hooks/scripts/session-close-check.sh +1 -1
  107. package/hooks/scripts/session-start.sh +1 -1
  108. package/package.json +6 -3
  109. package/dist/commands/check.d.ts.map +0 -1
  110. package/dist/commands/check.js.map +0 -1
  111. package/dist/constants/closing-questions.d.ts.map +0 -1
  112. package/dist/constants/closing-questions.js.map +0 -1
  113. package/dist/diagnostics/anonymizer.d.ts.map +0 -1
  114. package/dist/diagnostics/anonymizer.js.map +0 -1
  115. package/dist/diagnostics/channels.d.ts.map +0 -1
  116. package/dist/diagnostics/channels.js.map +0 -1
  117. package/dist/diagnostics/collector.d.ts.map +0 -1
  118. package/dist/diagnostics/collector.js.map +0 -1
  119. package/dist/diagnostics/index.d.ts.map +0 -1
  120. package/dist/diagnostics/index.js.map +0 -1
  121. package/dist/hooks/format-utils.d.ts.map +0 -1
  122. package/dist/hooks/format-utils.js.map +0 -1
  123. package/dist/hooks/quick-retrieve.d.ts.map +0 -1
  124. package/dist/hooks/quick-retrieve.js.map +0 -1
  125. package/dist/index.d.ts.map +0 -1
  126. package/dist/index.js.map +0 -1
  127. package/dist/schemas/absorb-observations.d.ts.map +0 -1
  128. package/dist/schemas/absorb-observations.js.map +0 -1
  129. package/dist/schemas/active-sessions.d.ts.map +0 -1
  130. package/dist/schemas/active-sessions.js.map +0 -1
  131. package/dist/schemas/analyze.d.ts.map +0 -1
  132. package/dist/schemas/analyze.js.map +0 -1
  133. package/dist/schemas/common.d.ts.map +0 -1
  134. package/dist/schemas/common.js.map +0 -1
  135. package/dist/schemas/create-decision.d.ts.map +0 -1
  136. package/dist/schemas/create-decision.js.map +0 -1
  137. package/dist/schemas/create-learning.d.ts.map +0 -1
  138. package/dist/schemas/create-learning.js.map +0 -1
  139. package/dist/schemas/get-transcript.d.ts.map +0 -1
  140. package/dist/schemas/get-transcript.js.map +0 -1
  141. package/dist/schemas/index.d.ts.map +0 -1
  142. package/dist/schemas/index.js.map +0 -1
  143. package/dist/schemas/log.d.ts.map +0 -1
  144. package/dist/schemas/log.js.map +0 -1
  145. package/dist/schemas/prepare-context.d.ts.map +0 -1
  146. package/dist/schemas/prepare-context.js.map +0 -1
  147. package/dist/schemas/recall.d.ts.map +0 -1
  148. package/dist/schemas/recall.js.map +0 -1
  149. package/dist/schemas/record-scar-usage-batch.d.ts.map +0 -1
  150. package/dist/schemas/record-scar-usage-batch.js.map +0 -1
  151. package/dist/schemas/record-scar-usage.d.ts.map +0 -1
  152. package/dist/schemas/record-scar-usage.js.map +0 -1
  153. package/dist/schemas/registry.d.ts.map +0 -1
  154. package/dist/schemas/registry.js.map +0 -1
  155. package/dist/schemas/save-transcript.d.ts.map +0 -1
  156. package/dist/schemas/save-transcript.js.map +0 -1
  157. package/dist/schemas/search-transcripts.d.ts.map +0 -1
  158. package/dist/schemas/search-transcripts.js.map +0 -1
  159. package/dist/schemas/search.d.ts.map +0 -1
  160. package/dist/schemas/search.js.map +0 -1
  161. package/dist/schemas/session-close.d.ts.map +0 -1
  162. package/dist/schemas/session-close.js.map +0 -1
  163. package/dist/schemas/session-start.d.ts.map +0 -1
  164. package/dist/schemas/session-start.js.map +0 -1
  165. package/dist/schemas/thread.d.ts.map +0 -1
  166. package/dist/schemas/thread.js.map +0 -1
  167. package/dist/server.d.ts.map +0 -1
  168. package/dist/server.js.map +0 -1
  169. package/dist/services/active-sessions.d.ts.map +0 -1
  170. package/dist/services/active-sessions.js.map +0 -1
  171. package/dist/services/agent-briefing.d.ts.map +0 -1
  172. package/dist/services/agent-briefing.js.map +0 -1
  173. package/dist/services/agent-detection.d.ts.map +0 -1
  174. package/dist/services/agent-detection.js.map +0 -1
  175. package/dist/services/analytics.d.ts.map +0 -1
  176. package/dist/services/analytics.js.map +0 -1
  177. package/dist/services/behavioral-decay.d.ts.map +0 -1
  178. package/dist/services/behavioral-decay.js.map +0 -1
  179. package/dist/services/bm25.d.ts.map +0 -1
  180. package/dist/services/bm25.js.map +0 -1
  181. package/dist/services/cache.d.ts.map +0 -1
  182. package/dist/services/cache.js.map +0 -1
  183. package/dist/services/cache.test.d.ts +0 -8
  184. package/dist/services/cache.test.d.ts.map +0 -1
  185. package/dist/services/cache.test.js +0 -267
  186. package/dist/services/cache.test.js.map +0 -1
  187. package/dist/services/compliance-validator.d.ts.map +0 -1
  188. package/dist/services/compliance-validator.js.map +0 -1
  189. package/dist/services/config.d.ts.map +0 -1
  190. package/dist/services/config.js.map +0 -1
  191. package/dist/services/display-protocol.d.ts.map +0 -1
  192. package/dist/services/display-protocol.js.map +0 -1
  193. package/dist/services/effect-tracker.d.ts.map +0 -1
  194. package/dist/services/effect-tracker.js.map +0 -1
  195. package/dist/services/embedding.d.ts.map +0 -1
  196. package/dist/services/embedding.js.map +0 -1
  197. package/dist/services/file-lock.d.ts.map +0 -1
  198. package/dist/services/file-lock.js.map +0 -1
  199. package/dist/services/gitmem-dir.d.ts.map +0 -1
  200. package/dist/services/gitmem-dir.js.map +0 -1
  201. package/dist/services/local-file-storage.d.ts.map +0 -1
  202. package/dist/services/local-file-storage.js.map +0 -1
  203. package/dist/services/local-vector-search.d.ts.map +0 -1
  204. package/dist/services/local-vector-search.js.map +0 -1
  205. package/dist/services/metrics.d.ts.map +0 -1
  206. package/dist/services/metrics.js.map +0 -1
  207. package/dist/services/session-state.d.ts.map +0 -1
  208. package/dist/services/session-state.js.map +0 -1
  209. package/dist/services/startup.d.ts.map +0 -1
  210. package/dist/services/startup.js.map +0 -1
  211. package/dist/services/storage.d.ts.map +0 -1
  212. package/dist/services/storage.js.map +0 -1
  213. package/dist/services/supabase-client.d.ts.map +0 -1
  214. package/dist/services/supabase-client.js.map +0 -1
  215. package/dist/services/thread-dedup.d.ts.map +0 -1
  216. package/dist/services/thread-dedup.js.map +0 -1
  217. package/dist/services/thread-manager.d.ts.map +0 -1
  218. package/dist/services/thread-manager.js.map +0 -1
  219. package/dist/services/thread-suggestions.d.ts.map +0 -1
  220. package/dist/services/thread-suggestions.js.map +0 -1
  221. package/dist/services/thread-supabase.d.ts.map +0 -1
  222. package/dist/services/thread-supabase.js.map +0 -1
  223. package/dist/services/thread-vitality.d.ts.map +0 -1
  224. package/dist/services/thread-vitality.js.map +0 -1
  225. package/dist/services/tier.d.ts.map +0 -1
  226. package/dist/services/tier.js.map +0 -1
  227. package/dist/services/timezone.d.ts.map +0 -1
  228. package/dist/services/timezone.js.map +0 -1
  229. package/dist/services/transcript-chunker.d.ts.map +0 -1
  230. package/dist/services/transcript-chunker.js.map +0 -1
  231. package/dist/services/triple-writer.d.ts.map +0 -1
  232. package/dist/services/triple-writer.js.map +0 -1
  233. package/dist/services/variant-assignment.d.ts.map +0 -1
  234. package/dist/services/variant-assignment.js.map +0 -1
  235. package/dist/services/variant-generation.d.ts.map +0 -1
  236. package/dist/services/variant-generation.js.map +0 -1
  237. package/dist/tools/absorb-observations.d.ts.map +0 -1
  238. package/dist/tools/absorb-observations.js.map +0 -1
  239. package/dist/tools/analyze.d.ts.map +0 -1
  240. package/dist/tools/analyze.js.map +0 -1
  241. package/dist/tools/archive-learning.d.ts.map +0 -1
  242. package/dist/tools/archive-learning.js.map +0 -1
  243. package/dist/tools/cleanup-threads.d.ts.map +0 -1
  244. package/dist/tools/cleanup-threads.js.map +0 -1
  245. package/dist/tools/confirm-scars.d.ts.map +0 -1
  246. package/dist/tools/confirm-scars.js.map +0 -1
  247. package/dist/tools/create-decision.d.ts.map +0 -1
  248. package/dist/tools/create-decision.js.map +0 -1
  249. package/dist/tools/create-learning.d.ts.map +0 -1
  250. package/dist/tools/create-learning.js.map +0 -1
  251. package/dist/tools/create-thread.d.ts.map +0 -1
  252. package/dist/tools/create-thread.js.map +0 -1
  253. package/dist/tools/definitions.d.ts.map +0 -1
  254. package/dist/tools/definitions.js.map +0 -1
  255. package/dist/tools/dismiss-suggestion.d.ts.map +0 -1
  256. package/dist/tools/dismiss-suggestion.js.map +0 -1
  257. package/dist/tools/get-transcript.d.ts.map +0 -1
  258. package/dist/tools/get-transcript.js.map +0 -1
  259. package/dist/tools/graph-traverse.d.ts.map +0 -1
  260. package/dist/tools/graph-traverse.js.map +0 -1
  261. package/dist/tools/list-threads.d.ts.map +0 -1
  262. package/dist/tools/list-threads.js.map +0 -1
  263. package/dist/tools/log.d.ts.map +0 -1
  264. package/dist/tools/log.js.map +0 -1
  265. package/dist/tools/prepare-context.d.ts.map +0 -1
  266. package/dist/tools/prepare-context.js.map +0 -1
  267. package/dist/tools/promote-suggestion.d.ts.map +0 -1
  268. package/dist/tools/promote-suggestion.js.map +0 -1
  269. package/dist/tools/recall.d.ts.map +0 -1
  270. package/dist/tools/recall.js.map +0 -1
  271. package/dist/tools/recall.test.d.ts +0 -5
  272. package/dist/tools/recall.test.d.ts.map +0 -1
  273. package/dist/tools/recall.test.js +0 -155
  274. package/dist/tools/recall.test.js.map +0 -1
  275. package/dist/tools/record-scar-usage-batch.d.ts.map +0 -1
  276. package/dist/tools/record-scar-usage-batch.js.map +0 -1
  277. package/dist/tools/record-scar-usage.d.ts.map +0 -1
  278. package/dist/tools/record-scar-usage.js.map +0 -1
  279. package/dist/tools/resolve-thread.d.ts.map +0 -1
  280. package/dist/tools/resolve-thread.js.map +0 -1
  281. package/dist/tools/save-transcript.d.ts.map +0 -1
  282. package/dist/tools/save-transcript.js.map +0 -1
  283. package/dist/tools/search-transcripts.d.ts.map +0 -1
  284. package/dist/tools/search-transcripts.js.map +0 -1
  285. package/dist/tools/search.d.ts.map +0 -1
  286. package/dist/tools/search.js.map +0 -1
  287. package/dist/tools/session-close.d.ts.map +0 -1
  288. package/dist/tools/session-close.js.map +0 -1
  289. package/dist/tools/session-start.d.ts.map +0 -1
  290. package/dist/tools/session-start.js.map +0 -1
  291. package/dist/types/index.d.ts.map +0 -1
  292. package/dist/types/index.js.map +0 -1
  293. package/hooks/tests/test-hooks.sh +0 -577
@@ -4,7 +4,7 @@
4
4
  * Persist session with compliance validation.
5
5
  * Validates that required fields are present based on close type.
6
6
  *
7
- * Performance target: <3000ms (OD-429)
7
+ * Performance target: <3000ms
8
8
  */
9
9
  import { v4 as uuidv4 } from "uuid";
10
10
  import { detectAgent } from "../services/agent-detection.js";
@@ -12,10 +12,10 @@ import * as supabase from "../services/supabase-client.js";
12
12
  import { embed, isEmbeddingAvailable } from "../services/embedding.js";
13
13
  import { hasSupabase } from "../services/tier.js";
14
14
  import { getStorage } from "../services/storage.js";
15
- import { clearCurrentSession, getSurfacedScars, getConfirmations, getObservations, getChildren, getThreads, getSessionActivity } from "../services/session-state.js"; // OD-547, OD-552, v2 Phase 2
16
- import { normalizeThreads, mergeThreadStates, migrateStringThread, saveThreadsFile } from "../services/thread-manager.js"; // OD-thread-lifecycle
17
- import { deduplicateThreadList } from "../services/thread-dedup.js"; // OD-641
18
- import { syncThreadsToSupabase, loadOpenThreadEmbeddings } from "../services/thread-supabase.js"; // OD-624
15
+ import { clearCurrentSession, getSurfacedScars, getConfirmations, getObservations, getChildren, getThreads, getSessionActivity } from "../services/session-state.js";
16
+ import { normalizeThreads, mergeThreadStates, migrateStringThread, saveThreadsFile } from "../services/thread-manager.js"; //
17
+ import { deduplicateThreadList } from "../services/thread-dedup.js";
18
+ import { syncThreadsToSupabase, loadOpenThreadEmbeddings } from "../services/thread-supabase.js";
19
19
  import { validateSessionClose, buildCloseCompliance, } from "../services/compliance-validator.js";
20
20
  import { normalizeReflectionKeys } from "../constants/closing-questions.js";
21
21
  import { Timer, recordMetrics, buildPerformanceData, updateRelevanceData, } from "../services/metrics.js";
@@ -27,7 +27,7 @@ import { processTranscript } from "../services/transcript-chunker.js";
27
27
  import * as fs from "fs";
28
28
  import * as path from "path";
29
29
  import * as os from "os";
30
- import { getGitmemPath, getGitmemDir, getSessionPath } from "../services/gitmem-dir.js";
30
+ import { getGitmemPath, getSessionPath, getSessionDir } from "../services/gitmem-dir.js";
31
31
  import { unregisterSession, findSessionByHostPid } from "../services/active-sessions.js";
32
32
  import { loadSuggestions, saveSuggestions, detectSuggestedThreads, loadRecentSessionEmbeddings } from "../services/thread-suggestions.js";
33
33
  import { writeAgentBriefing } from "../services/agent-briefing.js";
@@ -55,7 +55,7 @@ function countScarsApplied(scarsApplied) {
55
55
  }
56
56
  /**
57
57
  * Find the most recently modified transcript file in Claude Code projects directory
58
- * OD-538: Search by recency, not by filename matching (supports post-compaction)
58
+ * Search by recency, not by filename matching (supports post-compaction)
59
59
  */
60
60
  function findMostRecentTranscript(projectsDir, cwdBasename, cwdFull) {
61
61
  // Claude Code names project dirs by replacing / with - in the full CWD path
@@ -101,7 +101,7 @@ function findMostRecentTranscript(projectsDir, cwdBasename, cwdFull) {
101
101
  }
102
102
  /**
103
103
  * Extract Claude Code session ID from transcript JSONL content
104
- * OD-538: Provides traceability between GitMem sessions and IDE sessions
104
+ * Provides traceability between GitMem sessions and IDE sessions
105
105
  */
106
106
  function extractClaudeSessionId(transcriptContent, filePath) {
107
107
  try {
@@ -168,7 +168,7 @@ async function sessionCloseFree(params, timer) {
168
168
  if (params.decisions && params.decisions.length > 0) {
169
169
  sessionData.decisions = params.decisions.map((d) => d.title);
170
170
  }
171
- // OD-thread-lifecycle: Normalize threads for free tier too
171
+ // : Normalize threads for free tier too
172
172
  const freeSessionThreads = getThreads();
173
173
  if (params.open_threads && params.open_threads.length > 0) {
174
174
  const normalized = normalizeThreads(params.open_threads, params.session_id);
@@ -206,7 +206,7 @@ async function sessionCloseFree(params, timer) {
206
206
  });
207
207
  }
208
208
  }
209
- // OD-689: Generate agent-briefing.md for PMEM bridge
209
+ // Generate agent-briefing.md for PMEM bridge
210
210
  const decisionsCount = params.decisions?.length || 0;
211
211
  await writeAgentBriefing(learningsCount, decisionsCount);
212
212
  // Clear session state
@@ -357,9 +357,9 @@ function cleanupSessionFiles(sessionId) {
357
357
  catch (error) {
358
358
  console.warn("[session_close] Failed to unregister session:", error);
359
359
  }
360
- // 2. Delete per-session directory
360
+ // 2. Delete per-session directory (sanitized via getSessionDir to prevent traversal)
361
361
  try {
362
- const sessionDir = path.join(getGitmemDir(), "sessions", sessionId);
362
+ const sessionDir = getSessionDir(sessionId);
363
363
  if (fs.existsSync(sessionDir)) {
364
364
  fs.rmSync(sessionDir, { recursive: true, force: true });
365
365
  console.error(`[session_close] Cleaned up session directory: ${sessionDir}`);
@@ -370,7 +370,7 @@ function cleanupSessionFiles(sessionId) {
370
370
  }
371
371
  // Legacy active-session.json cleanup removed — file is no longer written
372
372
  }
373
- // UUID and short-ID format validation for session_id (OD-548)
373
+ // UUID and short-ID format validation for session_id
374
374
  const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
375
375
  const SHORT_ID_REGEX = /^[0-9a-f]{8}$/i;
376
376
  function isValidSessionId(id) {
@@ -410,7 +410,7 @@ function buildSessionRecord(params, existingSession, isRetroactive, agentIdentit
410
410
  reflection.human_additions = params.human_corrections;
411
411
  }
412
412
  sessionData.closing_reflection = reflection;
413
- // OD-666: Distill Q8+Q9 into rapport_summary for cross-agent surfacing
413
+ // Distill Q8+Q9 into rapport_summary for cross-agent surfacing
414
414
  const q8 = params.closing_reflection.collaborative_dynamic;
415
415
  const q9 = params.closing_reflection.rapport_notes;
416
416
  if (q8 || q9) {
@@ -422,7 +422,7 @@ function buildSessionRecord(params, existingSession, isRetroactive, agentIdentit
422
422
  if (params.decisions && params.decisions.length > 0) {
423
423
  sessionData.decisions = params.decisions.map((d) => d.title);
424
424
  }
425
- // OD-thread-lifecycle: Normalize and merge open threads
425
+ // : Normalize and merge open threads
426
426
  const sessionThreads = getThreads();
427
427
  if (params.open_threads && params.open_threads.length > 0) {
428
428
  const normalized = normalizeThreads(params.open_threads, params.session_id);
@@ -434,7 +434,7 @@ function buildSessionRecord(params, existingSession, isRetroactive, agentIdentit
434
434
  else if (sessionThreads.length > 0) {
435
435
  sessionData.open_threads = sessionThreads;
436
436
  }
437
- // OD-534: If project_state provided, prepend it to open_threads as a ThreadObject
437
+ // If project_state provided, prepend it to open_threads as a ThreadObject
438
438
  if (params.project_state) {
439
439
  const projectStateText = `PROJECT STATE: ${params.project_state}`;
440
440
  const existing = (sessionData.open_threads || []);
@@ -532,7 +532,7 @@ async function captureSessionTranscript(sessionId, params, existingSession, isRe
532
532
  patch_warning: saveResult.patch_warning,
533
533
  };
534
534
  console.error(`[session_close] Transcript saved: ${saveResult.transcript_path} (${saveResult.size_kb}KB)`);
535
- // OD-540: Process transcript for semantic search (fire-and-forget — chunking is expensive)
535
+ // Process transcript for semantic search (fire-and-forget — chunking is expensive)
536
536
  processTranscript(sessionId, transcriptContent, transcriptProject)
537
537
  .then(result => {
538
538
  if (result.success) {
@@ -681,7 +681,7 @@ function bridgeScarsToUsageRecords(normalizedScarsApplied, sessionId, agentIdent
681
681
  export async function sessionClose(params) {
682
682
  const timer = new Timer();
683
683
  const metricsId = uuidv4();
684
- // OD-548: Validate session_id format before any DB calls
684
+ // Validate session_id format before any DB calls
685
685
  if (params.session_id && !isValidSessionId(params.session_id)) {
686
686
  const latencyMs = timer.stop();
687
687
  const perfData = buildPerformanceData("session_close", latencyMs, 0);
@@ -754,7 +754,7 @@ export async function sessionClose(params) {
754
754
  human_response: "auto-normalized from string payload",
755
755
  };
756
756
  }
757
- // OD-685: Adaptive ceremony level based on session activity.
757
+ // Adaptive ceremony level based on session activity.
758
758
  // Three levels: micro (quick fix), standard (normal), full (long/heavy session).
759
759
  // t-f7c2fa01: If closing_reflection is already present, skip the mismatch gate.
760
760
  const hasReflection = params.closing_reflection &&
@@ -965,7 +965,7 @@ export async function sessionClose(params) {
965
965
  }
966
966
  // 5. Build session data (merge with existing or create from scratch)
967
967
  const sessionData = buildSessionRecord(params, existingSession, isRetroactive, agentIdentity, closeCompliance, sessionId);
968
- // OD-624: Sync threads to Supabase (fire-and-forget, non-blocking)
968
+ // Sync threads to Supabase (fire-and-forget, non-blocking)
969
969
  const closeThreads = (sessionData.open_threads || []);
970
970
  if (closeThreads.length > 0) {
971
971
  const closeProject = isRetroactive ? "default" : existingSession?.project || "default";
@@ -982,10 +982,10 @@ export async function sessionClose(params) {
982
982
  catch (err) {
983
983
  console.error("[session_close] Failed to prune threads.json (non-fatal):", err);
984
984
  }
985
- // OD-538: Capture transcript if enabled (default true for CLI/DAC)
985
+ // Capture transcript if enabled (default true for CLI/DAC)
986
986
  let transcriptStatus;
987
987
  const shouldCaptureTranscript = params.capture_transcript !== false &&
988
- (agentIdentity === "CLI" || agentIdentity === "DAC");
988
+ (agentIdentity === "cli" || agentIdentity === "desktop");
989
989
  if (shouldCaptureTranscript) {
990
990
  const transcriptResult = await captureSessionTranscript(sessionId, params, existingSession, isRetroactive);
991
991
  transcriptStatus = transcriptResult.status;
@@ -993,7 +993,7 @@ export async function sessionClose(params) {
993
993
  sessionData.claude_code_session_id = transcriptResult.claudeSessionId;
994
994
  }
995
995
  }
996
- // OD-552: Auto-bridge Q6 answers to scar_usage records
996
+ // Auto-bridge Q6 answers to scar_usage records
997
997
  const normalizedScarsApplied = normalizeScarsApplied(params.closing_reflection?.scars_applied);
998
998
  if ((!params.scars_to_record || params.scars_to_record.length === 0) &&
999
999
  normalizedScarsApplied.length > 0) {
@@ -1004,10 +1004,10 @@ export async function sessionClose(params) {
1004
1004
  }
1005
1005
  // 6. Persist to Supabase (direct REST API, bypasses ww-mcp)
1006
1006
  try {
1007
- // OD-646: Upsert session WITHOUT embedding (fast path)
1007
+ // Upsert session WITHOUT embedding (fast path)
1008
1008
  // Embedding + thread detection run fire-and-forget after
1009
1009
  await supabase.directUpsert("orchestra_sessions", sessionData);
1010
- // OD-646: Tracked fire-and-forget embedding generation + session update + thread detection
1010
+ // Tracked fire-and-forget embedding generation + session update + thread detection
1011
1011
  if (isEmbeddingAvailable()) {
1012
1012
  getEffectTracker().track("embedding", "session_close", async () => {
1013
1013
  const embeddingParts = [
@@ -1037,8 +1037,8 @@ export async function sessionClose(params) {
1037
1037
  }
1038
1038
  });
1039
1039
  }
1040
- // OD-646: Tracked fire-and-forget scar usage recording (was blocking ~200-500ms)
1041
- // OD-552: scars_to_record may now come from auto-bridge above
1040
+ // Tracked fire-and-forget scar usage recording (was blocking ~200-500ms)
1041
+ // scars_to_record may now come from auto-bridge above
1042
1042
  if (params.scars_to_record && params.scars_to_record.length > 0) {
1043
1043
  const project = isRetroactive
1044
1044
  ? "default"
@@ -1052,7 +1052,7 @@ export async function sessionClose(params) {
1052
1052
  const perfData = buildPerformanceData("session_close", latencyMs, 1);
1053
1053
  // Update relevance data for memories applied during session
1054
1054
  if (normalizedScarsApplied.length > 0) {
1055
- updateRelevanceData(sessionId, normalizedScarsApplied).catch(() => { });
1055
+ updateRelevanceData(sessionId, normalizedScarsApplied).catch((err) => console.error("[session_close] updateRelevanceData failed:", err instanceof Error ? err.message : err));
1056
1056
  }
1057
1057
  // Record metrics
1058
1058
  recordMetrics({
@@ -1075,9 +1075,9 @@ export async function sessionClose(params) {
1075
1075
  retroactive: isRetroactive,
1076
1076
  },
1077
1077
  }).catch(() => { });
1078
- // OD-547: Clear session state after successful close
1078
+ // Clear session state after successful close
1079
1079
  clearCurrentSession();
1080
- // OD-689: Generate agent-briefing.md for PMEM bridge
1080
+ // Generate agent-briefing.md for PMEM bridge
1081
1081
  const decisionsCount = params.decisions?.length || 0;
1082
1082
  await writeAgentBriefing(learningsCount, decisionsCount);
1083
1083
  // GIT-21: Clean up session files (registry, per-session dir, legacy file)
@@ -1103,7 +1103,7 @@ export async function sessionClose(params) {
1103
1103
  const errorMessage = error instanceof Error ? error.message : String(error);
1104
1104
  const latencyMs = timer.stop();
1105
1105
  const perfData = buildPerformanceData("session_close", latencyMs, 0);
1106
- // OD-547: Clear session state even on error (session is done either way)
1106
+ // Clear session state even on error (session is done either way)
1107
1107
  clearCurrentSession();
1108
1108
  const errorDisplay = formatCloseDisplay(sessionId, closeCompliance, params, learningsCount, false, [`Failed to persist session: ${errorMessage}`], transcriptStatus);
1109
1109
  return {
@@ -4,9 +4,9 @@
4
4
  * Initialize session, detect agent, load institutional context.
5
5
  * Returns threads and recent decisions. Scars surface via recall on demand.
6
6
  *
7
- * Performance target: <750ms (OD-645: Lean Start)
7
+ * Performance target: <750ms
8
8
  *
9
- * OD-645: Removed scar/wins queries from start pipeline.
9
+ * Removed scar/wins queries from start pipeline.
10
10
  * Scars load on-demand via recall(). Wins available via search/log.
11
11
  * loadLastSession and loadRecentDecisions run in parallel.
12
12
  * createSessionRecord is fire-and-forget.
@@ -15,10 +15,10 @@ import type { SessionStartParams, SessionStartResult, Project } from "../types/i
15
15
  /**
16
16
  * Execute session_start tool
17
17
  *
18
- * OD-489: Returns detailed performance breakdown for test harness validation.
18
+ * Returns detailed performance breakdown for test harness validation.
19
19
  * Key metrics: network_calls_made, fully_local, breakdown per component.
20
20
  *
21
- * OD-558: Guards against overwriting existing active sessions.
21
+ * Guards against overwriting existing active sessions.
22
22
  * Returns existing session if active-session.json exists (idempotent).
23
23
  * Pass force=true to override.
24
24
  */
@@ -30,7 +30,7 @@ export declare function sessionStart(params: SessionStartParams): Promise<Sessio
30
30
  * without creating a new session ID. Same lean pipeline as session_start
31
31
  * (last session, decisions, threads) but skips session creation.
32
32
  *
33
- * OD-645: Scars/wins removed — load on-demand via recall/search.
33
+ * Scars/wins removed — load on-demand via recall/search.
34
34
  *
35
35
  * Use when: mid-session context refresh after compaction, long gaps, or
36
36
  * when you need to remember where you left off.