gitmem-mcp 1.0.0 → 1.0.2

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 (242) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/CLAUDE.md.template +63 -55
  3. package/README.md +79 -163
  4. package/bin/gitmem.js +233 -109
  5. package/bin/init-wizard.js +642 -0
  6. package/bin/uninstall.js +288 -0
  7. package/dist/commands/check.js +20 -20
  8. package/dist/commands/check.js.map +1 -1
  9. package/dist/constants/closing-questions.d.ts +6 -0
  10. package/dist/constants/closing-questions.d.ts.map +1 -1
  11. package/dist/constants/closing-questions.js +65 -0
  12. package/dist/constants/closing-questions.js.map +1 -1
  13. package/dist/hooks/format-utils.d.ts +52 -0
  14. package/dist/hooks/format-utils.d.ts.map +1 -0
  15. package/dist/hooks/format-utils.js +89 -0
  16. package/dist/hooks/format-utils.js.map +1 -0
  17. package/dist/hooks/quick-retrieve.d.ts +30 -0
  18. package/dist/hooks/quick-retrieve.d.ts.map +1 -0
  19. package/dist/hooks/quick-retrieve.js +149 -0
  20. package/dist/hooks/quick-retrieve.js.map +1 -0
  21. package/dist/schemas/active-sessions.d.ts +8 -8
  22. package/dist/schemas/analyze.d.ts +3 -3
  23. package/dist/schemas/common.d.ts +2 -2
  24. package/dist/schemas/common.d.ts.map +1 -1
  25. package/dist/schemas/common.js +1 -1
  26. package/dist/schemas/common.js.map +1 -1
  27. package/dist/schemas/create-decision.d.ts +3 -3
  28. package/dist/schemas/create-learning.d.ts +13 -13
  29. package/dist/schemas/log.d.ts +3 -3
  30. package/dist/schemas/prepare-context.d.ts +3 -3
  31. package/dist/schemas/recall.d.ts +3 -3
  32. package/dist/schemas/record-scar-usage-batch.d.ts +8 -3
  33. package/dist/schemas/record-scar-usage-batch.d.ts.map +1 -1
  34. package/dist/schemas/record-scar-usage.d.ts +3 -0
  35. package/dist/schemas/record-scar-usage.d.ts.map +1 -1
  36. package/dist/schemas/record-scar-usage.js +1 -0
  37. package/dist/schemas/record-scar-usage.js.map +1 -1
  38. package/dist/schemas/registry.d.ts +18 -0
  39. package/dist/schemas/registry.d.ts.map +1 -0
  40. package/dist/schemas/registry.js +158 -0
  41. package/dist/schemas/registry.js.map +1 -0
  42. package/dist/schemas/save-transcript.d.ts +3 -3
  43. package/dist/schemas/search-transcripts.d.ts +33 -0
  44. package/dist/schemas/search-transcripts.d.ts.map +1 -0
  45. package/dist/schemas/search-transcripts.js +26 -0
  46. package/dist/schemas/search-transcripts.js.map +1 -0
  47. package/dist/schemas/search.d.ts +3 -3
  48. package/dist/schemas/session-close.d.ts +43 -15
  49. package/dist/schemas/session-close.d.ts.map +1 -1
  50. package/dist/schemas/session-close.js +7 -2
  51. package/dist/schemas/session-close.js.map +1 -1
  52. package/dist/schemas/session-start.d.ts +3 -3
  53. package/dist/schemas/thread.d.ts +3 -3
  54. package/dist/server.d.ts.map +1 -1
  55. package/dist/server.js +82 -28
  56. package/dist/server.js.map +1 -1
  57. package/dist/services/active-sessions.d.ts +2 -1
  58. package/dist/services/active-sessions.d.ts.map +1 -1
  59. package/dist/services/active-sessions.js +130 -84
  60. package/dist/services/active-sessions.js.map +1 -1
  61. package/dist/services/analytics.d.ts.map +1 -1
  62. package/dist/services/analytics.js +1 -0
  63. package/dist/services/analytics.js.map +1 -1
  64. package/dist/services/behavioral-decay.d.ts +40 -0
  65. package/dist/services/behavioral-decay.d.ts.map +1 -0
  66. package/dist/services/behavioral-decay.js +110 -0
  67. package/dist/services/behavioral-decay.js.map +1 -0
  68. package/dist/services/bm25.d.ts +39 -0
  69. package/dist/services/bm25.d.ts.map +1 -0
  70. package/dist/services/bm25.js +132 -0
  71. package/dist/services/bm25.js.map +1 -0
  72. package/dist/services/cache.d.ts.map +1 -1
  73. package/dist/services/cache.js +9 -8
  74. package/dist/services/cache.js.map +1 -1
  75. package/dist/services/cache.test.js +17 -17
  76. package/dist/services/cache.test.js.map +1 -1
  77. package/dist/services/compliance-validator.d.ts.map +1 -1
  78. package/dist/services/compliance-validator.js +12 -1
  79. package/dist/services/compliance-validator.js.map +1 -1
  80. package/dist/services/display-protocol.d.ts +31 -0
  81. package/dist/services/display-protocol.d.ts.map +1 -0
  82. package/dist/services/display-protocol.js +73 -0
  83. package/dist/services/display-protocol.js.map +1 -0
  84. package/dist/services/effect-tracker.d.ts +81 -0
  85. package/dist/services/effect-tracker.d.ts.map +1 -0
  86. package/dist/services/effect-tracker.js +181 -0
  87. package/dist/services/effect-tracker.js.map +1 -0
  88. package/dist/services/file-lock.d.ts +31 -0
  89. package/dist/services/file-lock.d.ts.map +1 -0
  90. package/dist/services/file-lock.js +124 -0
  91. package/dist/services/file-lock.js.map +1 -0
  92. package/dist/services/gitmem-dir.d.ts +7 -0
  93. package/dist/services/gitmem-dir.d.ts.map +1 -1
  94. package/dist/services/gitmem-dir.js +21 -0
  95. package/dist/services/gitmem-dir.js.map +1 -1
  96. package/dist/services/local-file-storage.d.ts +3 -2
  97. package/dist/services/local-file-storage.d.ts.map +1 -1
  98. package/dist/services/local-file-storage.js +30 -43
  99. package/dist/services/local-file-storage.js.map +1 -1
  100. package/dist/services/local-vector-search.d.ts +10 -9
  101. package/dist/services/local-vector-search.d.ts.map +1 -1
  102. package/dist/services/local-vector-search.js +28 -23
  103. package/dist/services/local-vector-search.js.map +1 -1
  104. package/dist/services/metrics.d.ts +7 -2
  105. package/dist/services/metrics.d.ts.map +1 -1
  106. package/dist/services/metrics.js +41 -33
  107. package/dist/services/metrics.js.map +1 -1
  108. package/dist/services/session-state.d.ts +8 -0
  109. package/dist/services/session-state.d.ts.map +1 -1
  110. package/dist/services/session-state.js +9 -2
  111. package/dist/services/session-state.js.map +1 -1
  112. package/dist/services/startup.d.ts +12 -13
  113. package/dist/services/startup.d.ts.map +1 -1
  114. package/dist/services/startup.js +104 -57
  115. package/dist/services/startup.js.map +1 -1
  116. package/dist/services/supabase-client.d.ts +2 -1
  117. package/dist/services/supabase-client.d.ts.map +1 -1
  118. package/dist/services/supabase-client.js +22 -16
  119. package/dist/services/supabase-client.js.map +1 -1
  120. package/dist/services/thread-dedup.d.ts +9 -0
  121. package/dist/services/thread-dedup.d.ts.map +1 -1
  122. package/dist/services/thread-dedup.js +27 -0
  123. package/dist/services/thread-dedup.js.map +1 -1
  124. package/dist/services/thread-manager.d.ts.map +1 -1
  125. package/dist/services/thread-manager.js +38 -16
  126. package/dist/services/thread-manager.js.map +1 -1
  127. package/dist/services/thread-suggestions.d.ts.map +1 -1
  128. package/dist/services/thread-suggestions.js +1 -1
  129. package/dist/services/thread-suggestions.js.map +1 -1
  130. package/dist/services/thread-supabase.d.ts +0 -1
  131. package/dist/services/thread-supabase.d.ts.map +1 -1
  132. package/dist/services/thread-supabase.js +83 -54
  133. package/dist/services/thread-supabase.js.map +1 -1
  134. package/dist/services/timezone.d.ts.map +1 -1
  135. package/dist/services/timezone.js +1 -0
  136. package/dist/services/timezone.js.map +1 -1
  137. package/dist/services/transcript-chunker.d.ts.map +1 -1
  138. package/dist/services/transcript-chunker.js +18 -4
  139. package/dist/services/transcript-chunker.js.map +1 -1
  140. package/dist/services/variant-generation.d.ts +41 -0
  141. package/dist/services/variant-generation.d.ts.map +1 -0
  142. package/dist/services/variant-generation.js +263 -0
  143. package/dist/services/variant-generation.js.map +1 -0
  144. package/dist/tools/absorb-observations.d.ts.map +1 -1
  145. package/dist/tools/absorb-observations.js +9 -0
  146. package/dist/tools/absorb-observations.js.map +1 -1
  147. package/dist/tools/analyze.d.ts.map +1 -1
  148. package/dist/tools/analyze.js +13 -2
  149. package/dist/tools/analyze.js.map +1 -1
  150. package/dist/tools/archive-learning.d.ts +28 -0
  151. package/dist/tools/archive-learning.d.ts.map +1 -0
  152. package/dist/tools/archive-learning.js +81 -0
  153. package/dist/tools/archive-learning.js.map +1 -0
  154. package/dist/tools/cleanup-threads.d.ts +1 -0
  155. package/dist/tools/cleanup-threads.d.ts.map +1 -1
  156. package/dist/tools/cleanup-threads.js +111 -18
  157. package/dist/tools/cleanup-threads.js.map +1 -1
  158. package/dist/tools/confirm-scars.d.ts.map +1 -1
  159. package/dist/tools/confirm-scars.js +8 -2
  160. package/dist/tools/confirm-scars.js.map +1 -1
  161. package/dist/tools/create-decision.d.ts.map +1 -1
  162. package/dist/tools/create-decision.js +11 -8
  163. package/dist/tools/create-decision.js.map +1 -1
  164. package/dist/tools/create-learning.d.ts.map +1 -1
  165. package/dist/tools/create-learning.js +35 -11
  166. package/dist/tools/create-learning.js.map +1 -1
  167. package/dist/tools/create-thread.d.ts +2 -1
  168. package/dist/tools/create-thread.d.ts.map +1 -1
  169. package/dist/tools/create-thread.js +9 -4
  170. package/dist/tools/create-thread.js.map +1 -1
  171. package/dist/tools/definitions.d.ts +785 -34
  172. package/dist/tools/definitions.d.ts.map +1 -1
  173. package/dist/tools/definitions.js +239 -95
  174. package/dist/tools/definitions.js.map +1 -1
  175. package/dist/tools/dismiss-suggestion.d.ts +1 -0
  176. package/dist/tools/dismiss-suggestion.d.ts.map +1 -1
  177. package/dist/tools/dismiss-suggestion.js +4 -0
  178. package/dist/tools/dismiss-suggestion.js.map +1 -1
  179. package/dist/tools/graph-traverse.d.ts +1 -0
  180. package/dist/tools/graph-traverse.d.ts.map +1 -1
  181. package/dist/tools/graph-traverse.js +24 -9
  182. package/dist/tools/graph-traverse.js.map +1 -1
  183. package/dist/tools/list-threads.d.ts.map +1 -1
  184. package/dist/tools/list-threads.js +49 -5
  185. package/dist/tools/list-threads.js.map +1 -1
  186. package/dist/tools/log.d.ts +1 -0
  187. package/dist/tools/log.d.ts.map +1 -1
  188. package/dist/tools/log.js +84 -17
  189. package/dist/tools/log.js.map +1 -1
  190. package/dist/tools/prepare-context.d.ts +1 -0
  191. package/dist/tools/prepare-context.d.ts.map +1 -1
  192. package/dist/tools/prepare-context.js +15 -85
  193. package/dist/tools/prepare-context.js.map +1 -1
  194. package/dist/tools/promote-suggestion.d.ts +1 -0
  195. package/dist/tools/promote-suggestion.d.ts.map +1 -1
  196. package/dist/tools/promote-suggestion.js +5 -0
  197. package/dist/tools/promote-suggestion.js.map +1 -1
  198. package/dist/tools/recall.d.ts +2 -0
  199. package/dist/tools/recall.d.ts.map +1 -1
  200. package/dist/tools/recall.js +43 -10
  201. package/dist/tools/recall.js.map +1 -1
  202. package/dist/tools/recall.test.js +6 -6
  203. package/dist/tools/recall.test.js.map +1 -1
  204. package/dist/tools/record-scar-usage-batch.d.ts.map +1 -1
  205. package/dist/tools/record-scar-usage-batch.js +13 -0
  206. package/dist/tools/record-scar-usage-batch.js.map +1 -1
  207. package/dist/tools/record-scar-usage.d.ts.map +1 -1
  208. package/dist/tools/record-scar-usage.js +6 -0
  209. package/dist/tools/record-scar-usage.js.map +1 -1
  210. package/dist/tools/resolve-thread.d.ts.map +1 -1
  211. package/dist/tools/resolve-thread.js +57 -6
  212. package/dist/tools/resolve-thread.js.map +1 -1
  213. package/dist/tools/save-transcript.d.ts +1 -0
  214. package/dist/tools/save-transcript.d.ts.map +1 -1
  215. package/dist/tools/save-transcript.js +3 -1
  216. package/dist/tools/save-transcript.js.map +1 -1
  217. package/dist/tools/search-transcripts.d.ts +44 -0
  218. package/dist/tools/search-transcripts.d.ts.map +1 -0
  219. package/dist/tools/search-transcripts.js +158 -0
  220. package/dist/tools/search-transcripts.js.map +1 -0
  221. package/dist/tools/search.d.ts +1 -0
  222. package/dist/tools/search.d.ts.map +1 -1
  223. package/dist/tools/search.js +74 -3
  224. package/dist/tools/search.js.map +1 -1
  225. package/dist/tools/session-close.d.ts.map +1 -1
  226. package/dist/tools/session-close.js +563 -326
  227. package/dist/tools/session-close.js.map +1 -1
  228. package/dist/tools/session-start.d.ts +10 -6
  229. package/dist/tools/session-start.d.ts.map +1 -1
  230. package/dist/tools/session-start.js +319 -426
  231. package/dist/tools/session-start.js.map +1 -1
  232. package/dist/types/index.d.ts +37 -4
  233. package/dist/types/index.d.ts.map +1 -1
  234. package/hooks/hooks/hooks.json +8 -37
  235. package/hooks/scripts/auto-retrieve-hook.sh +163 -0
  236. package/hooks/scripts/post-tool-use.sh +0 -16
  237. package/hooks/scripts/recall-check.sh +0 -11
  238. package/hooks/scripts/session-close-check.sh +1 -1
  239. package/hooks/scripts/session-start.sh +89 -13
  240. package/hooks/tests/test-hooks.sh +3 -49
  241. package/package.json +3 -2
  242. package/schema/setup.sql +1 -1
@@ -21,8 +21,7 @@ export const TOOLS = [
21
21
  },
22
22
  project: {
23
23
  type: "string",
24
- enum: ["orchestra_dev", "weekend_warrior"],
25
- description: "Project scope (default: orchestra_dev)",
24
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
26
25
  },
27
26
  match_count: {
28
27
  type: "number",
@@ -71,7 +70,7 @@ export const TOOLS = [
71
70
  },
72
71
  {
73
72
  name: "session_start",
74
- description: "Initialize session, detect agent, load institutional context (last session, relevant scars, recent decisions). DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user instead of formatting your own session summary.",
73
+ description: "Initialize session, detect agent, load institutional context (last session, recent decisions, open threads). Scars surface on-demand via recall(). DISPLAY: The result includes a pre-formatted 'display' field visible in the tool result. Output the display field verbatim as your response tool results are collapsed in the CLI.",
75
74
  inputSchema: {
76
75
  type: "object",
77
76
  properties: {
@@ -99,8 +98,7 @@ export const TOOLS = [
99
98
  },
100
99
  project: {
101
100
  type: "string",
102
- enum: ["orchestra_dev", "weekend_warrior"],
103
- description: "Project scope (default: orchestra_dev)",
101
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
104
102
  },
105
103
  force: {
106
104
  type: "boolean",
@@ -111,21 +109,20 @@ export const TOOLS = [
111
109
  },
112
110
  {
113
111
  name: "session_refresh",
114
- description: "Re-surface institutional context (scars, threads, decisions, wins) for the current active session without creating a new session. Use mid-session when you need to remember where you left off, after context compaction, or after a long gap. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user instead of formatting your own session summary.",
112
+ description: "Re-surface institutional context (threads, decisions) for the current active session without creating a new session. Use mid-session when you need to remember where you left off, after context compaction, or after a long gap. DISPLAY: The result includes a pre-formatted 'display' field visible in the tool result. Output the display field verbatim as your response tool results are collapsed in the CLI.",
115
113
  inputSchema: {
116
114
  type: "object",
117
115
  properties: {
118
116
  project: {
119
117
  type: "string",
120
- enum: ["orchestra_dev", "weekend_warrior"],
121
- description: "Project scope (default: from active session)",
118
+ description: "Project namespace (default: from active session). Free-form string (e.g., 'my-project').",
122
119
  },
123
120
  },
124
121
  },
125
122
  },
126
123
  {
127
124
  name: "session_close",
128
- description: "Persist session with compliance validation. IMPORTANT: Before calling this tool, write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to .gitmem/closing-payload.json using your file write tool. Then call this tool with ONLY session_id and close_type. The tool reads the payload file automatically and deletes it after processing. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user instead of formatting your own close summary.",
125
+ description: "Persist session with compliance validation. IMPORTANT: Before calling this tool, write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to {gitmem_dir}/closing-payload.json using your file write tool — the gitmem_dir path is returned by session_start (also shown in session start display as 'Payload path'). Then call this tool with ONLY session_id and close_type. The tool reads the payload file automatically and deletes it after processing. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response tool results are collapsed in the CLI.",
129
126
  inputSchema: {
130
127
  type: "object",
131
128
  properties: {
@@ -213,8 +210,7 @@ export const TOOLS = [
213
210
  },
214
211
  project: {
215
212
  type: "string",
216
- enum: ["orchestra_dev", "weekend_warrior"],
217
- description: "Project scope",
213
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
218
214
  },
219
215
  },
220
216
  required: ["learning_type", "title", "description"],
@@ -263,8 +259,7 @@ export const TOOLS = [
263
259
  },
264
260
  project: {
265
261
  type: "string",
266
- enum: ["orchestra_dev", "weekend_warrior"],
267
- description: "Project scope",
262
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
268
263
  },
269
264
  },
270
265
  required: ["title", "decision", "rationale"],
@@ -317,6 +312,10 @@ export const TOOLS = [
317
312
  type: "string",
318
313
  description: "Agent identity (CLI, DAC, CODA-1, etc.)",
319
314
  },
315
+ variant_id: {
316
+ type: "string",
317
+ description: "UUID of the assigned variant from scar_enforcement_variants (for A/B testing)",
318
+ },
320
319
  },
321
320
  required: ["scar_id", "surfaced_at", "reference_type", "reference_context"],
322
321
  },
@@ -380,7 +379,6 @@ export const TOOLS = [
380
379
  },
381
380
  project: {
382
381
  type: "string",
383
- enum: ["orchestra_dev", "weekend_warrior"],
384
382
  description: "Project scope for scar resolution",
385
383
  },
386
384
  },
@@ -408,8 +406,7 @@ export const TOOLS = [
408
406
  },
409
407
  project: {
410
408
  type: "string",
411
- enum: ["orchestra_dev", "weekend_warrior"],
412
- description: "Project scope (default: orchestra_dev)",
409
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
413
410
  },
414
411
  },
415
412
  required: ["session_id", "transcript"],
@@ -429,6 +426,32 @@ export const TOOLS = [
429
426
  required: ["session_id"],
430
427
  },
431
428
  },
429
+ {
430
+ name: "search_transcripts",
431
+ description: "Semantic search over session transcript chunks. Generates embedding for query and calls match_transcript_chunks RPC to find relevant conversation fragments across all indexed sessions.",
432
+ inputSchema: {
433
+ type: "object",
434
+ properties: {
435
+ query: {
436
+ type: "string",
437
+ description: "Natural language search query (e.g., 'deployment verification discussion', 'what was decided about caching')",
438
+ },
439
+ match_count: {
440
+ type: "number",
441
+ description: "Maximum number of chunks to return (default: 10, max: 50)",
442
+ },
443
+ similarity_threshold: {
444
+ type: "number",
445
+ description: "Minimum similarity score 0-1 (default: 0.3). Higher values return more relevant results.",
446
+ },
447
+ project: {
448
+ type: "string",
449
+ description: "Project namespace to filter by (e.g., 'orchestra_dev')",
450
+ },
451
+ },
452
+ required: ["query"],
453
+ },
454
+ },
432
455
  // ============================================================================
433
456
  // SEARCH & LOG TOOLS (OD-560, OD-561)
434
457
  // ============================================================================
@@ -448,8 +471,7 @@ export const TOOLS = [
448
471
  },
449
472
  project: {
450
473
  type: "string",
451
- enum: ["orchestra_dev", "weekend_warrior"],
452
- description: "Project scope (default: orchestra_dev)",
474
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
453
475
  },
454
476
  severity: {
455
477
  type: "string",
@@ -477,8 +499,7 @@ export const TOOLS = [
477
499
  },
478
500
  project: {
479
501
  type: "string",
480
- enum: ["orchestra_dev", "weekend_warrior"],
481
- description: "Project scope (default: orchestra_dev)",
502
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
482
503
  },
483
504
  learning_type: {
484
505
  type: "string",
@@ -525,8 +546,7 @@ export const TOOLS = [
525
546
  },
526
547
  project: {
527
548
  type: "string",
528
- enum: ["orchestra_dev", "weekend_warrior"],
529
- description: "Project scope (default: orchestra_dev)",
549
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
530
550
  },
531
551
  },
532
552
  required: ["plan", "format"],
@@ -581,8 +601,7 @@ export const TOOLS = [
581
601
  },
582
602
  project: {
583
603
  type: "string",
584
- enum: ["orchestra_dev", "weekend_warrior"],
585
- description: "Project scope (default: orchestra_dev)",
604
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
586
605
  },
587
606
  },
588
607
  },
@@ -639,8 +658,7 @@ export const TOOLS = [
639
658
  },
640
659
  project: {
641
660
  type: "string",
642
- enum: ["orchestra_dev", "weekend_warrior"],
643
- description: "Project scope (default: orchestra_dev)",
661
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
644
662
  },
645
663
  },
646
664
  required: ["suggestion_id"],
@@ -669,8 +687,7 @@ export const TOOLS = [
669
687
  properties: {
670
688
  project: {
671
689
  type: "string",
672
- enum: ["orchestra_dev", "weekend_warrior"],
673
- description: "Project scope (default: orchestra_dev)",
690
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
674
691
  },
675
692
  auto_archive: {
676
693
  type: "boolean",
@@ -679,6 +696,20 @@ export const TOOLS = [
679
696
  },
680
697
  },
681
698
  },
699
+ // --- Effect Health Tool ---
700
+ {
701
+ name: "health",
702
+ description: "Show write health for the current session. Reports success/failure rates for all tracked fire-and-forget operations (metrics, cache, triple writes, embeddings, scar usage). Use this to diagnose silent failures.",
703
+ inputSchema: {
704
+ type: "object",
705
+ properties: {
706
+ failure_limit: {
707
+ type: "number",
708
+ description: "Max number of recent failures to return (default: 10)",
709
+ },
710
+ },
711
+ },
712
+ },
682
713
  // ============================================================================
683
714
  // SHORT ALIASES (gitmem-*)
684
715
  // Self-documenting: each description includes both alias and full name
@@ -695,8 +726,7 @@ export const TOOLS = [
695
726
  },
696
727
  project: {
697
728
  type: "string",
698
- enum: ["orchestra_dev", "weekend_warrior"],
699
- description: "Project scope (default: orchestra_dev)",
729
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
700
730
  },
701
731
  match_count: {
702
732
  type: "number",
@@ -731,7 +761,7 @@ export const TOOLS = [
731
761
  },
732
762
  {
733
763
  name: "gitmem-ss",
734
- description: "gitmem-ss (session_start) - Initialize session with institutional context. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user.",
764
+ description: "gitmem-ss (session_start) - Initialize session with institutional context. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response — tool results are collapsed in the CLI.",
735
765
  inputSchema: {
736
766
  type: "object",
737
767
  properties: {
@@ -759,8 +789,7 @@ export const TOOLS = [
759
789
  },
760
790
  project: {
761
791
  type: "string",
762
- enum: ["orchestra_dev", "weekend_warrior"],
763
- description: "Project scope (default: orchestra_dev)",
792
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
764
793
  },
765
794
  force: {
766
795
  type: "boolean",
@@ -771,21 +800,20 @@ export const TOOLS = [
771
800
  },
772
801
  {
773
802
  name: "gitmem-sr",
774
- description: "gitmem-sr (session_refresh) - Refresh institutional context for the active session without creating a new session. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user.",
803
+ description: "gitmem-sr (session_refresh) - Refresh institutional context for the active session without creating a new session. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response — tool results are collapsed in the CLI.",
775
804
  inputSchema: {
776
805
  type: "object",
777
806
  properties: {
778
807
  project: {
779
808
  type: "string",
780
- enum: ["orchestra_dev", "weekend_warrior"],
781
- description: "Project scope (default: from active session)",
809
+ description: "Project namespace (default: from active session). Free-form string (e.g., 'my-project').",
782
810
  },
783
811
  },
784
812
  },
785
813
  },
786
814
  {
787
815
  name: "gitmem-sc",
788
- description: "gitmem-sc (session_close) - Close session with compliance validation. IMPORTANT: Write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to .gitmem/closing-payload.json BEFORE calling this tool. Only pass session_id and close_type inline. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user instead of formatting your own close summary.",
816
+ description: "gitmem-sc (session_close) - Close session with compliance validation. IMPORTANT: Write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to {gitmem_dir}/closing-payload.json BEFORE calling this tool — gitmem_dir is from session_start. Only pass session_id and close_type inline. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response tool results are collapsed in the CLI.",
789
817
  inputSchema: {
790
818
  type: "object",
791
819
  properties: {
@@ -873,8 +901,7 @@ export const TOOLS = [
873
901
  },
874
902
  project: {
875
903
  type: "string",
876
- enum: ["orchestra_dev", "weekend_warrior"],
877
- description: "Project scope",
904
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
878
905
  },
879
906
  },
880
907
  required: ["learning_type", "title", "description"],
@@ -923,8 +950,7 @@ export const TOOLS = [
923
950
  },
924
951
  project: {
925
952
  type: "string",
926
- enum: ["orchestra_dev", "weekend_warrior"],
927
- description: "Project scope",
953
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
928
954
  },
929
955
  },
930
956
  required: ["title", "decision", "rationale"],
@@ -977,6 +1003,10 @@ export const TOOLS = [
977
1003
  type: "string",
978
1004
  description: "Agent identity (CLI, DAC, CODA-1, etc.)",
979
1005
  },
1006
+ variant_id: {
1007
+ type: "string",
1008
+ description: "UUID of the assigned variant from scar_enforcement_variants (for A/B testing)",
1009
+ },
980
1010
  },
981
1011
  required: ["scar_id", "surfaced_at", "reference_type", "reference_context"],
982
1012
  },
@@ -1040,7 +1070,6 @@ export const TOOLS = [
1040
1070
  },
1041
1071
  project: {
1042
1072
  type: "string",
1043
- enum: ["orchestra_dev", "weekend_warrior"],
1044
1073
  description: "Project scope for scar resolution",
1045
1074
  },
1046
1075
  },
@@ -1068,8 +1097,7 @@ export const TOOLS = [
1068
1097
  },
1069
1098
  project: {
1070
1099
  type: "string",
1071
- enum: ["orchestra_dev", "weekend_warrior"],
1072
- description: "Project scope (default: orchestra_dev)",
1100
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1073
1101
  },
1074
1102
  },
1075
1103
  required: ["session_id", "transcript"],
@@ -1089,6 +1117,59 @@ export const TOOLS = [
1089
1117
  required: ["session_id"],
1090
1118
  },
1091
1119
  },
1120
+ // gitmem-stx / gm-stx (search_transcripts)
1121
+ {
1122
+ name: "gitmem-stx",
1123
+ description: "gitmem-stx (search_transcripts) - Semantic search over transcript chunks",
1124
+ inputSchema: {
1125
+ type: "object",
1126
+ properties: {
1127
+ query: {
1128
+ type: "string",
1129
+ description: "Natural language search query",
1130
+ },
1131
+ match_count: {
1132
+ type: "number",
1133
+ description: "Maximum number of chunks to return (default: 10, max: 50)",
1134
+ },
1135
+ similarity_threshold: {
1136
+ type: "number",
1137
+ description: "Minimum similarity score 0-1 (default: 0.3)",
1138
+ },
1139
+ project: {
1140
+ type: "string",
1141
+ description: "Project namespace to filter by",
1142
+ },
1143
+ },
1144
+ required: ["query"],
1145
+ },
1146
+ },
1147
+ {
1148
+ name: "gm-stx",
1149
+ description: "gm-stx (search_transcripts) - Semantic search over transcript chunks",
1150
+ inputSchema: {
1151
+ type: "object",
1152
+ properties: {
1153
+ query: {
1154
+ type: "string",
1155
+ description: "Natural language search query",
1156
+ },
1157
+ match_count: {
1158
+ type: "number",
1159
+ description: "Maximum number of chunks to return (default: 10, max: 50)",
1160
+ },
1161
+ similarity_threshold: {
1162
+ type: "number",
1163
+ description: "Minimum similarity score 0-1 (default: 0.3)",
1164
+ },
1165
+ project: {
1166
+ type: "string",
1167
+ description: "Project namespace to filter by",
1168
+ },
1169
+ },
1170
+ required: ["query"],
1171
+ },
1172
+ },
1092
1173
  // gitmem-search (OD-560)
1093
1174
  {
1094
1175
  name: "gitmem-search",
@@ -1106,8 +1187,7 @@ export const TOOLS = [
1106
1187
  },
1107
1188
  project: {
1108
1189
  type: "string",
1109
- enum: ["orchestra_dev", "weekend_warrior"],
1110
- description: "Project scope (default: orchestra_dev)",
1190
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1111
1191
  },
1112
1192
  severity: {
1113
1193
  type: "string",
@@ -1136,8 +1216,7 @@ export const TOOLS = [
1136
1216
  },
1137
1217
  project: {
1138
1218
  type: "string",
1139
- enum: ["orchestra_dev", "weekend_warrior"],
1140
- description: "Project scope (default: orchestra_dev)",
1219
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1141
1220
  },
1142
1221
  learning_type: {
1143
1222
  type: "string",
@@ -1182,8 +1261,7 @@ export const TOOLS = [
1182
1261
  },
1183
1262
  project: {
1184
1263
  type: "string",
1185
- enum: ["orchestra_dev", "weekend_warrior"],
1186
- description: "Project scope (default: orchestra_dev)",
1264
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1187
1265
  },
1188
1266
  },
1189
1267
  required: ["plan", "format"],
@@ -1224,7 +1302,7 @@ export const TOOLS = [
1224
1302
  properties: {
1225
1303
  status: { type: "string", enum: ["open", "resolved"], description: "Filter by status (default: open)" },
1226
1304
  include_resolved: { type: "boolean", description: "Include recently resolved threads (default: false)" },
1227
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"], description: "Project scope" },
1305
+ project: { type: "string", description: "Project namespace for organizing memories" },
1228
1306
  },
1229
1307
  },
1230
1308
  },
@@ -1262,7 +1340,7 @@ export const TOOLS = [
1262
1340
  type: "object",
1263
1341
  properties: {
1264
1342
  suggestion_id: { type: "string", description: "Suggestion ID (e.g., ts-a1b2c3d4)" },
1265
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"], description: "Project scope" },
1343
+ project: { type: "string", description: "Project namespace for organizing memories" },
1266
1344
  },
1267
1345
  required: ["suggestion_id"],
1268
1346
  },
@@ -1286,17 +1364,28 @@ export const TOOLS = [
1286
1364
  inputSchema: {
1287
1365
  type: "object",
1288
1366
  properties: {
1289
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"] },
1367
+ project: { type: "string" },
1290
1368
  auto_archive: { type: "boolean", description: "Auto-archive dormant threads (30+ days)" },
1291
1369
  },
1292
1370
  },
1293
1371
  },
1372
+ // gitmem-health (health) — Effect Tracker health report
1373
+ {
1374
+ name: "gitmem-health",
1375
+ description: "gitmem-health (health) - Show write health for fire-and-forget operations this session",
1376
+ inputSchema: {
1377
+ type: "object",
1378
+ properties: {
1379
+ failure_limit: { type: "number", description: "Max recent failures to return (default: 10)" },
1380
+ },
1381
+ },
1382
+ },
1294
1383
  // ============================================================================
1295
1384
  // GM-* SHORT, MEMORABLE ALIASES (user-facing ergonomics)
1296
1385
  // ============================================================================
1297
1386
  {
1298
1387
  name: "gm-open",
1299
- description: "gm-open (session_start) - Open a GitMem session and load institutional context. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user.",
1388
+ description: "gm-open (session_start) - Open a GitMem session and load institutional context. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response — tool results are collapsed in the CLI.",
1300
1389
  inputSchema: {
1301
1390
  type: "object",
1302
1391
  properties: {
@@ -1324,8 +1413,7 @@ export const TOOLS = [
1324
1413
  },
1325
1414
  project: {
1326
1415
  type: "string",
1327
- enum: ["orchestra_dev", "weekend_warrior"],
1328
- description: "Project scope (default: orchestra_dev)",
1416
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1329
1417
  },
1330
1418
  force: {
1331
1419
  type: "boolean",
@@ -1359,21 +1447,20 @@ export const TOOLS = [
1359
1447
  },
1360
1448
  {
1361
1449
  name: "gm-refresh",
1362
- description: "gm-refresh (session_refresh) - Refresh context for the active session without creating a new one. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user.",
1450
+ description: "gm-refresh (session_refresh) - Refresh context for the active session without creating a new one. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response — tool results are collapsed in the CLI.",
1363
1451
  inputSchema: {
1364
1452
  type: "object",
1365
1453
  properties: {
1366
1454
  project: {
1367
1455
  type: "string",
1368
- enum: ["orchestra_dev", "weekend_warrior"],
1369
- description: "Project scope (default: from active session)",
1456
+ description: "Project namespace (default: from active session). Free-form string (e.g., 'my-project').",
1370
1457
  },
1371
1458
  },
1372
1459
  },
1373
1460
  },
1374
1461
  {
1375
1462
  name: "gm-close",
1376
- description: "gm-close (session_close) - Close a GitMem session. IMPORTANT: Write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to .gitmem/closing-payload.json BEFORE calling this tool. Only pass session_id and close_type inline. DISPLAY: The result includes a pre-formatted 'display' field. Echo it verbatim to the user instead of formatting your own close summary.",
1463
+ description: "gm-close (session_close) - Close a GitMem session. IMPORTANT: Write all heavy payload data (closing_reflection, task_completion, human_corrections, scars_to_record, open_threads, decisions, learnings_created) to {gitmem_dir}/closing-payload.json BEFORE calling this tool — gitmem_dir is from session_start. Only pass session_id and close_type inline. DISPLAY: The result includes a pre-formatted 'display' field. Output the display field verbatim as your response tool results are collapsed in the CLI.",
1377
1464
  inputSchema: {
1378
1465
  type: "object",
1379
1466
  properties: {
@@ -1461,8 +1548,7 @@ export const TOOLS = [
1461
1548
  },
1462
1549
  project: {
1463
1550
  type: "string",
1464
- enum: ["orchestra_dev", "weekend_warrior"],
1465
- description: "Project scope",
1551
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1466
1552
  },
1467
1553
  },
1468
1554
  required: ["learning_type", "title", "description"],
@@ -1485,8 +1571,7 @@ export const TOOLS = [
1485
1571
  },
1486
1572
  project: {
1487
1573
  type: "string",
1488
- enum: ["orchestra_dev", "weekend_warrior"],
1489
- description: "Project scope",
1574
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1490
1575
  },
1491
1576
  severity: {
1492
1577
  type: "string",
@@ -1515,8 +1600,7 @@ export const TOOLS = [
1515
1600
  },
1516
1601
  project: {
1517
1602
  type: "string",
1518
- enum: ["orchestra_dev", "weekend_warrior"],
1519
- description: "Project scope",
1603
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1520
1604
  },
1521
1605
  learning_type: {
1522
1606
  type: "string",
@@ -1561,8 +1645,7 @@ export const TOOLS = [
1561
1645
  },
1562
1646
  project: {
1563
1647
  type: "string",
1564
- enum: ["orchestra_dev", "weekend_warrior"],
1565
- description: "Project scope",
1648
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1566
1649
  },
1567
1650
  },
1568
1651
  required: ["plan", "format"],
@@ -1603,7 +1686,7 @@ export const TOOLS = [
1603
1686
  properties: {
1604
1687
  status: { type: "string", enum: ["open", "resolved"], description: "Filter by status (default: open)" },
1605
1688
  include_resolved: { type: "boolean", description: "Include resolved threads" },
1606
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"], description: "Project scope" },
1689
+ project: { type: "string", description: "Project namespace for organizing memories" },
1607
1690
  },
1608
1691
  },
1609
1692
  },
@@ -1641,7 +1724,7 @@ export const TOOLS = [
1641
1724
  type: "object",
1642
1725
  properties: {
1643
1726
  suggestion_id: { type: "string", description: "Suggestion ID" },
1644
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"], description: "Project scope" },
1727
+ project: { type: "string", description: "Project namespace for organizing memories" },
1645
1728
  },
1646
1729
  required: ["suggestion_id"],
1647
1730
  },
@@ -1665,11 +1748,22 @@ export const TOOLS = [
1665
1748
  inputSchema: {
1666
1749
  type: "object",
1667
1750
  properties: {
1668
- project: { type: "string", enum: ["orchestra_dev", "weekend_warrior"] },
1751
+ project: { type: "string" },
1669
1752
  auto_archive: { type: "boolean", description: "Auto-archive dormant threads" },
1670
1753
  },
1671
1754
  },
1672
1755
  },
1756
+ // gm-health (health) — Effect Tracker health report
1757
+ {
1758
+ name: "gm-health",
1759
+ description: "gm-health (health) - Show write health for fire-and-forget operations",
1760
+ inputSchema: {
1761
+ type: "object",
1762
+ properties: {
1763
+ failure_limit: { type: "number", description: "Max recent failures (default: 10)" },
1764
+ },
1765
+ },
1766
+ },
1673
1767
  // ============================================================================
1674
1768
  // ANALYTICS TOOLS (OD-567)
1675
1769
  // ============================================================================
@@ -1690,8 +1784,7 @@ export const TOOLS = [
1690
1784
  },
1691
1785
  project: {
1692
1786
  type: "string",
1693
- enum: ["orchestra_dev", "weekend_warrior"],
1694
- description: "Project scope",
1787
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1695
1788
  },
1696
1789
  agent: {
1697
1790
  type: "string",
@@ -1723,8 +1816,7 @@ export const TOOLS = [
1723
1816
  },
1724
1817
  project: {
1725
1818
  type: "string",
1726
- enum: ["orchestra_dev", "weekend_warrior"],
1727
- description: "Project scope",
1819
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1728
1820
  },
1729
1821
  agent: {
1730
1822
  type: "string",
@@ -1756,8 +1848,7 @@ export const TOOLS = [
1756
1848
  },
1757
1849
  project: {
1758
1850
  type: "string",
1759
- enum: ["orchestra_dev", "weekend_warrior"],
1760
- description: "Project scope",
1851
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1761
1852
  },
1762
1853
  agent: {
1763
1854
  type: "string",
@@ -1790,8 +1881,7 @@ export const TOOLS = [
1790
1881
  properties: {
1791
1882
  project: {
1792
1883
  type: "string",
1793
- enum: ["orchestra_dev", "weekend_warrior"],
1794
- description: "Project scope (default: orchestra_dev)",
1884
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1795
1885
  },
1796
1886
  },
1797
1887
  },
@@ -1804,8 +1894,7 @@ export const TOOLS = [
1804
1894
  properties: {
1805
1895
  project: {
1806
1896
  type: "string",
1807
- enum: ["orchestra_dev", "weekend_warrior"],
1808
- description: "Project scope (default: orchestra_dev)",
1897
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1809
1898
  },
1810
1899
  },
1811
1900
  },
@@ -1818,8 +1907,7 @@ export const TOOLS = [
1818
1907
  properties: {
1819
1908
  project: {
1820
1909
  type: "string",
1821
- enum: ["orchestra_dev", "weekend_warrior"],
1822
- description: "Project scope (default: orchestra_dev)",
1910
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1823
1911
  },
1824
1912
  },
1825
1913
  },
@@ -1832,8 +1920,7 @@ export const TOOLS = [
1832
1920
  properties: {
1833
1921
  project: {
1834
1922
  type: "string",
1835
- enum: ["orchestra_dev", "weekend_warrior"],
1836
- description: "Project scope (default: orchestra_dev)",
1923
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1837
1924
  },
1838
1925
  },
1839
1926
  },
@@ -1846,8 +1933,7 @@ export const TOOLS = [
1846
1933
  properties: {
1847
1934
  project: {
1848
1935
  type: "string",
1849
- enum: ["orchestra_dev", "weekend_warrior"],
1850
- description: "Project scope (default: orchestra_dev)",
1936
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1851
1937
  },
1852
1938
  },
1853
1939
  },
@@ -1860,12 +1946,66 @@ export const TOOLS = [
1860
1946
  properties: {
1861
1947
  project: {
1862
1948
  type: "string",
1863
- enum: ["orchestra_dev", "weekend_warrior"],
1864
- description: "Project scope (default: orchestra_dev)",
1949
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1865
1950
  },
1866
1951
  },
1867
1952
  },
1868
1953
  },
1954
+ // --- Archive Learning Tool ---
1955
+ {
1956
+ name: "archive_learning",
1957
+ description: "Archives a learning (scar/win/pattern) by setting is_active=false and recording archived_at timestamp. Archived learnings are excluded from recall and search results but preserved for audit trail.",
1958
+ inputSchema: {
1959
+ type: "object",
1960
+ properties: {
1961
+ id: {
1962
+ type: "string",
1963
+ description: "UUID of the learning to archive",
1964
+ },
1965
+ reason: {
1966
+ type: "string",
1967
+ description: "Optional reason for archiving (e.g., 'superseded by OD-XXX', 'no longer relevant')",
1968
+ },
1969
+ },
1970
+ required: ["id"],
1971
+ },
1972
+ },
1973
+ {
1974
+ name: "gitmem-al",
1975
+ description: "gitmem-al (archive_learning) - Archive a scar/win/pattern (sets is_active=false)",
1976
+ inputSchema: {
1977
+ type: "object",
1978
+ properties: {
1979
+ id: {
1980
+ type: "string",
1981
+ description: "UUID of the learning to archive",
1982
+ },
1983
+ reason: {
1984
+ type: "string",
1985
+ description: "Optional reason for archiving",
1986
+ },
1987
+ },
1988
+ required: ["id"],
1989
+ },
1990
+ },
1991
+ {
1992
+ name: "gm-archive",
1993
+ description: "gm-archive (archive_learning) - Archive a scar/win/pattern",
1994
+ inputSchema: {
1995
+ type: "object",
1996
+ properties: {
1997
+ id: {
1998
+ type: "string",
1999
+ description: "UUID of the learning to archive",
2000
+ },
2001
+ reason: {
2002
+ type: "string",
2003
+ description: "Optional reason for archiving",
2004
+ },
2005
+ },
2006
+ required: ["id"],
2007
+ },
2008
+ },
1869
2009
  // --- Knowledge Graph Traversal (Phase 3) ---
1870
2010
  {
1871
2011
  name: "graph_traverse",
@@ -1893,8 +2033,7 @@ export const TOOLS = [
1893
2033
  },
1894
2034
  project: {
1895
2035
  type: "string",
1896
- enum: ["orchestra_dev", "weekend_warrior"],
1897
- description: "Project scope (default: orchestra_dev)",
2036
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1898
2037
  },
1899
2038
  limit: {
1900
2039
  type: "number",
@@ -1927,8 +2066,7 @@ export const TOOLS = [
1927
2066
  depth: { type: "number", description: "Max depth for provenance (default: 3)" },
1928
2067
  project: {
1929
2068
  type: "string",
1930
- enum: ["orchestra_dev", "weekend_warrior"],
1931
- description: "Project scope",
2069
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1932
2070
  },
1933
2071
  limit: { type: "number", description: "Max triples (default: 50)" },
1934
2072
  },
@@ -1955,8 +2093,7 @@ export const TOOLS = [
1955
2093
  depth: { type: "number", description: "Max depth for provenance" },
1956
2094
  project: {
1957
2095
  type: "string",
1958
- enum: ["orchestra_dev", "weekend_warrior"],
1959
- description: "Project scope",
2096
+ description: "Project namespace (e.g., 'my-project', 'orchestra_dev'). Scopes sessions and searches.",
1960
2097
  },
1961
2098
  limit: { type: "number", description: "Max triples" },
1962
2099
  },
@@ -1981,6 +2118,7 @@ export const BATCH_TOOL_NAMES = new Set([
1981
2118
  export const TRANSCRIPT_TOOL_NAMES = new Set([
1982
2119
  "save_transcript", "gitmem-st",
1983
2120
  "get_transcript", "gitmem-gt",
2121
+ "search_transcripts", "gitmem-stx", "gm-stx",
1984
2122
  ]);
1985
2123
  export const ANALYZE_TOOL_NAMES = new Set([
1986
2124
  "analyze", "gitmem-analyze", "gm-analyze",
@@ -1988,6 +2126,9 @@ export const ANALYZE_TOOL_NAMES = new Set([
1988
2126
  export const GRAPH_TOOL_NAMES = new Set([
1989
2127
  "graph_traverse", "gitmem-graph", "gm-graph",
1990
2128
  ]);
2129
+ export const ARCHIVE_TOOL_NAMES = new Set([
2130
+ "archive_learning", "gitmem-al", "gm-archive",
2131
+ ]);
1991
2132
  /**
1992
2133
  * Get tools registered for the current tier.
1993
2134
  * Free: core tools only (7 canonical + aliases)
@@ -2011,6 +2152,9 @@ export function getRegisteredTools() {
2011
2152
  if (GRAPH_TOOL_NAMES.has(tool.name)) {
2012
2153
  return hasSupabase();
2013
2154
  }
2155
+ if (ARCHIVE_TOOL_NAMES.has(tool.name)) {
2156
+ return hasSupabase();
2157
+ }
2014
2158
  return true;
2015
2159
  });
2016
2160
  }