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.
- package/CHANGELOG.md +7 -0
- package/CLAUDE.md.template +63 -55
- package/README.md +79 -163
- package/bin/gitmem.js +233 -109
- package/bin/init-wizard.js +642 -0
- package/bin/uninstall.js +288 -0
- package/dist/commands/check.js +20 -20
- package/dist/commands/check.js.map +1 -1
- package/dist/constants/closing-questions.d.ts +6 -0
- package/dist/constants/closing-questions.d.ts.map +1 -1
- package/dist/constants/closing-questions.js +65 -0
- package/dist/constants/closing-questions.js.map +1 -1
- package/dist/hooks/format-utils.d.ts +52 -0
- package/dist/hooks/format-utils.d.ts.map +1 -0
- package/dist/hooks/format-utils.js +89 -0
- package/dist/hooks/format-utils.js.map +1 -0
- package/dist/hooks/quick-retrieve.d.ts +30 -0
- package/dist/hooks/quick-retrieve.d.ts.map +1 -0
- package/dist/hooks/quick-retrieve.js +149 -0
- package/dist/hooks/quick-retrieve.js.map +1 -0
- package/dist/schemas/active-sessions.d.ts +8 -8
- package/dist/schemas/analyze.d.ts +3 -3
- package/dist/schemas/common.d.ts +2 -2
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +1 -1
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/create-decision.d.ts +3 -3
- package/dist/schemas/create-learning.d.ts +13 -13
- package/dist/schemas/log.d.ts +3 -3
- package/dist/schemas/prepare-context.d.ts +3 -3
- package/dist/schemas/recall.d.ts +3 -3
- package/dist/schemas/record-scar-usage-batch.d.ts +8 -3
- package/dist/schemas/record-scar-usage-batch.d.ts.map +1 -1
- package/dist/schemas/record-scar-usage.d.ts +3 -0
- package/dist/schemas/record-scar-usage.d.ts.map +1 -1
- package/dist/schemas/record-scar-usage.js +1 -0
- package/dist/schemas/record-scar-usage.js.map +1 -1
- package/dist/schemas/registry.d.ts +18 -0
- package/dist/schemas/registry.d.ts.map +1 -0
- package/dist/schemas/registry.js +158 -0
- package/dist/schemas/registry.js.map +1 -0
- package/dist/schemas/save-transcript.d.ts +3 -3
- package/dist/schemas/search-transcripts.d.ts +33 -0
- package/dist/schemas/search-transcripts.d.ts.map +1 -0
- package/dist/schemas/search-transcripts.js +26 -0
- package/dist/schemas/search-transcripts.js.map +1 -0
- package/dist/schemas/search.d.ts +3 -3
- package/dist/schemas/session-close.d.ts +43 -15
- package/dist/schemas/session-close.d.ts.map +1 -1
- package/dist/schemas/session-close.js +7 -2
- package/dist/schemas/session-close.js.map +1 -1
- package/dist/schemas/session-start.d.ts +3 -3
- package/dist/schemas/thread.d.ts +3 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +82 -28
- package/dist/server.js.map +1 -1
- package/dist/services/active-sessions.d.ts +2 -1
- package/dist/services/active-sessions.d.ts.map +1 -1
- package/dist/services/active-sessions.js +130 -84
- package/dist/services/active-sessions.js.map +1 -1
- package/dist/services/analytics.d.ts.map +1 -1
- package/dist/services/analytics.js +1 -0
- package/dist/services/analytics.js.map +1 -1
- package/dist/services/behavioral-decay.d.ts +40 -0
- package/dist/services/behavioral-decay.d.ts.map +1 -0
- package/dist/services/behavioral-decay.js +110 -0
- package/dist/services/behavioral-decay.js.map +1 -0
- package/dist/services/bm25.d.ts +39 -0
- package/dist/services/bm25.d.ts.map +1 -0
- package/dist/services/bm25.js +132 -0
- package/dist/services/bm25.js.map +1 -0
- package/dist/services/cache.d.ts.map +1 -1
- package/dist/services/cache.js +9 -8
- package/dist/services/cache.js.map +1 -1
- package/dist/services/cache.test.js +17 -17
- package/dist/services/cache.test.js.map +1 -1
- package/dist/services/compliance-validator.d.ts.map +1 -1
- package/dist/services/compliance-validator.js +12 -1
- package/dist/services/compliance-validator.js.map +1 -1
- package/dist/services/display-protocol.d.ts +31 -0
- package/dist/services/display-protocol.d.ts.map +1 -0
- package/dist/services/display-protocol.js +73 -0
- package/dist/services/display-protocol.js.map +1 -0
- package/dist/services/effect-tracker.d.ts +81 -0
- package/dist/services/effect-tracker.d.ts.map +1 -0
- package/dist/services/effect-tracker.js +181 -0
- package/dist/services/effect-tracker.js.map +1 -0
- package/dist/services/file-lock.d.ts +31 -0
- package/dist/services/file-lock.d.ts.map +1 -0
- package/dist/services/file-lock.js +124 -0
- package/dist/services/file-lock.js.map +1 -0
- package/dist/services/gitmem-dir.d.ts +7 -0
- package/dist/services/gitmem-dir.d.ts.map +1 -1
- package/dist/services/gitmem-dir.js +21 -0
- package/dist/services/gitmem-dir.js.map +1 -1
- package/dist/services/local-file-storage.d.ts +3 -2
- package/dist/services/local-file-storage.d.ts.map +1 -1
- package/dist/services/local-file-storage.js +30 -43
- package/dist/services/local-file-storage.js.map +1 -1
- package/dist/services/local-vector-search.d.ts +10 -9
- package/dist/services/local-vector-search.d.ts.map +1 -1
- package/dist/services/local-vector-search.js +28 -23
- package/dist/services/local-vector-search.js.map +1 -1
- package/dist/services/metrics.d.ts +7 -2
- package/dist/services/metrics.d.ts.map +1 -1
- package/dist/services/metrics.js +41 -33
- package/dist/services/metrics.js.map +1 -1
- package/dist/services/session-state.d.ts +8 -0
- package/dist/services/session-state.d.ts.map +1 -1
- package/dist/services/session-state.js +9 -2
- package/dist/services/session-state.js.map +1 -1
- package/dist/services/startup.d.ts +12 -13
- package/dist/services/startup.d.ts.map +1 -1
- package/dist/services/startup.js +104 -57
- package/dist/services/startup.js.map +1 -1
- package/dist/services/supabase-client.d.ts +2 -1
- package/dist/services/supabase-client.d.ts.map +1 -1
- package/dist/services/supabase-client.js +22 -16
- package/dist/services/supabase-client.js.map +1 -1
- package/dist/services/thread-dedup.d.ts +9 -0
- package/dist/services/thread-dedup.d.ts.map +1 -1
- package/dist/services/thread-dedup.js +27 -0
- package/dist/services/thread-dedup.js.map +1 -1
- package/dist/services/thread-manager.d.ts.map +1 -1
- package/dist/services/thread-manager.js +38 -16
- package/dist/services/thread-manager.js.map +1 -1
- package/dist/services/thread-suggestions.d.ts.map +1 -1
- package/dist/services/thread-suggestions.js +1 -1
- package/dist/services/thread-suggestions.js.map +1 -1
- package/dist/services/thread-supabase.d.ts +0 -1
- package/dist/services/thread-supabase.d.ts.map +1 -1
- package/dist/services/thread-supabase.js +83 -54
- package/dist/services/thread-supabase.js.map +1 -1
- package/dist/services/timezone.d.ts.map +1 -1
- package/dist/services/timezone.js +1 -0
- package/dist/services/timezone.js.map +1 -1
- package/dist/services/transcript-chunker.d.ts.map +1 -1
- package/dist/services/transcript-chunker.js +18 -4
- package/dist/services/transcript-chunker.js.map +1 -1
- package/dist/services/variant-generation.d.ts +41 -0
- package/dist/services/variant-generation.d.ts.map +1 -0
- package/dist/services/variant-generation.js +263 -0
- package/dist/services/variant-generation.js.map +1 -0
- package/dist/tools/absorb-observations.d.ts.map +1 -1
- package/dist/tools/absorb-observations.js +9 -0
- package/dist/tools/absorb-observations.js.map +1 -1
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +13 -2
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/archive-learning.d.ts +28 -0
- package/dist/tools/archive-learning.d.ts.map +1 -0
- package/dist/tools/archive-learning.js +81 -0
- package/dist/tools/archive-learning.js.map +1 -0
- package/dist/tools/cleanup-threads.d.ts +1 -0
- package/dist/tools/cleanup-threads.d.ts.map +1 -1
- package/dist/tools/cleanup-threads.js +111 -18
- package/dist/tools/cleanup-threads.js.map +1 -1
- package/dist/tools/confirm-scars.d.ts.map +1 -1
- package/dist/tools/confirm-scars.js +8 -2
- package/dist/tools/confirm-scars.js.map +1 -1
- package/dist/tools/create-decision.d.ts.map +1 -1
- package/dist/tools/create-decision.js +11 -8
- package/dist/tools/create-decision.js.map +1 -1
- package/dist/tools/create-learning.d.ts.map +1 -1
- package/dist/tools/create-learning.js +35 -11
- package/dist/tools/create-learning.js.map +1 -1
- package/dist/tools/create-thread.d.ts +2 -1
- package/dist/tools/create-thread.d.ts.map +1 -1
- package/dist/tools/create-thread.js +9 -4
- package/dist/tools/create-thread.js.map +1 -1
- package/dist/tools/definitions.d.ts +785 -34
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +239 -95
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/dismiss-suggestion.d.ts +1 -0
- package/dist/tools/dismiss-suggestion.d.ts.map +1 -1
- package/dist/tools/dismiss-suggestion.js +4 -0
- package/dist/tools/dismiss-suggestion.js.map +1 -1
- package/dist/tools/graph-traverse.d.ts +1 -0
- package/dist/tools/graph-traverse.d.ts.map +1 -1
- package/dist/tools/graph-traverse.js +24 -9
- package/dist/tools/graph-traverse.js.map +1 -1
- package/dist/tools/list-threads.d.ts.map +1 -1
- package/dist/tools/list-threads.js +49 -5
- package/dist/tools/list-threads.js.map +1 -1
- package/dist/tools/log.d.ts +1 -0
- package/dist/tools/log.d.ts.map +1 -1
- package/dist/tools/log.js +84 -17
- package/dist/tools/log.js.map +1 -1
- package/dist/tools/prepare-context.d.ts +1 -0
- package/dist/tools/prepare-context.d.ts.map +1 -1
- package/dist/tools/prepare-context.js +15 -85
- package/dist/tools/prepare-context.js.map +1 -1
- package/dist/tools/promote-suggestion.d.ts +1 -0
- package/dist/tools/promote-suggestion.d.ts.map +1 -1
- package/dist/tools/promote-suggestion.js +5 -0
- package/dist/tools/promote-suggestion.js.map +1 -1
- package/dist/tools/recall.d.ts +2 -0
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +43 -10
- package/dist/tools/recall.js.map +1 -1
- package/dist/tools/recall.test.js +6 -6
- package/dist/tools/recall.test.js.map +1 -1
- package/dist/tools/record-scar-usage-batch.d.ts.map +1 -1
- package/dist/tools/record-scar-usage-batch.js +13 -0
- package/dist/tools/record-scar-usage-batch.js.map +1 -1
- package/dist/tools/record-scar-usage.d.ts.map +1 -1
- package/dist/tools/record-scar-usage.js +6 -0
- package/dist/tools/record-scar-usage.js.map +1 -1
- package/dist/tools/resolve-thread.d.ts.map +1 -1
- package/dist/tools/resolve-thread.js +57 -6
- package/dist/tools/resolve-thread.js.map +1 -1
- package/dist/tools/save-transcript.d.ts +1 -0
- package/dist/tools/save-transcript.d.ts.map +1 -1
- package/dist/tools/save-transcript.js +3 -1
- package/dist/tools/save-transcript.js.map +1 -1
- package/dist/tools/search-transcripts.d.ts +44 -0
- package/dist/tools/search-transcripts.d.ts.map +1 -0
- package/dist/tools/search-transcripts.js +158 -0
- package/dist/tools/search-transcripts.js.map +1 -0
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +74 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/session-close.d.ts.map +1 -1
- package/dist/tools/session-close.js +563 -326
- package/dist/tools/session-close.js.map +1 -1
- package/dist/tools/session-start.d.ts +10 -6
- package/dist/tools/session-start.d.ts.map +1 -1
- package/dist/tools/session-start.js +319 -426
- package/dist/tools/session-start.js.map +1 -1
- package/dist/types/index.d.ts +37 -4
- package/dist/types/index.d.ts.map +1 -1
- package/hooks/hooks/hooks.json +8 -37
- package/hooks/scripts/auto-retrieve-hook.sh +163 -0
- package/hooks/scripts/post-tool-use.sh +0 -16
- package/hooks/scripts/recall-check.sh +0 -11
- package/hooks/scripts/session-close-check.sh +1 -1
- package/hooks/scripts/session-start.sh +89 -13
- package/hooks/tests/test-hooks.sh +3 -49
- package/package.json +3 -2
- package/schema/setup.sql +1 -1
|
@@ -14,11 +14,11 @@ export declare const SessionStartParamsSchema: z.ZodObject<{
|
|
|
14
14
|
issue_title: z.ZodOptional<z.ZodString>;
|
|
15
15
|
issue_description: z.ZodOptional<z.ZodString>;
|
|
16
16
|
issue_labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
17
|
-
project: z.ZodOptional<z.
|
|
17
|
+
project: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
18
18
|
/** OD-558: Force overwrite of existing active session */
|
|
19
19
|
force: z.ZodOptional<z.ZodBoolean>;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
|
-
project?:
|
|
21
|
+
project?: string | undefined;
|
|
22
22
|
linear_issue?: string | undefined;
|
|
23
23
|
force?: boolean | undefined;
|
|
24
24
|
agent_identity?: "CLI" | "DAC" | "CODA-1" | "Brain_Local" | "Brain_Cloud" | "Unknown" | undefined;
|
|
@@ -26,7 +26,7 @@ export declare const SessionStartParamsSchema: z.ZodObject<{
|
|
|
26
26
|
issue_description?: string | undefined;
|
|
27
27
|
issue_labels?: string[] | undefined;
|
|
28
28
|
}, {
|
|
29
|
-
project?:
|
|
29
|
+
project?: string | undefined;
|
|
30
30
|
linear_issue?: string | undefined;
|
|
31
31
|
force?: boolean | undefined;
|
|
32
32
|
agent_identity?: "CLI" | "DAC" | "CODA-1" | "Brain_Local" | "Brain_Cloud" | "Unknown" | undefined;
|
package/dist/schemas/thread.d.ts
CHANGED
|
@@ -43,13 +43,13 @@ export declare const ThreadObjectSchema: z.ZodObject<{
|
|
|
43
43
|
export declare const ListThreadsParamsSchema: z.ZodObject<{
|
|
44
44
|
status: z.ZodOptional<z.ZodEnum<["open", "resolved"]>>;
|
|
45
45
|
include_resolved: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
-
project: z.ZodOptional<z.
|
|
46
|
+
project: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
47
47
|
}, "strip", z.ZodTypeAny, {
|
|
48
|
-
project?:
|
|
48
|
+
project?: string | undefined;
|
|
49
49
|
status?: "open" | "resolved" | undefined;
|
|
50
50
|
include_resolved?: boolean | undefined;
|
|
51
51
|
}, {
|
|
52
|
-
project?:
|
|
52
|
+
project?: string | undefined;
|
|
53
53
|
status?: "open" | "resolved" | undefined;
|
|
54
54
|
include_resolved?: boolean | undefined;
|
|
55
55
|
}>;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA4EnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA+TrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAwB/C"}
|
package/dist/server.js
CHANGED
|
@@ -17,6 +17,7 @@ import { recall } from "./tools/recall.js";
|
|
|
17
17
|
import { confirmScars } from "./tools/confirm-scars.js";
|
|
18
18
|
import { saveTranscript } from "./tools/save-transcript.js";
|
|
19
19
|
import { getTranscript } from "./tools/get-transcript.js";
|
|
20
|
+
import { searchTranscripts } from "./tools/search-transcripts.js";
|
|
20
21
|
import { search } from "./tools/search.js";
|
|
21
22
|
import { log } from "./tools/log.js";
|
|
22
23
|
import { analyze } from "./tools/analyze.js";
|
|
@@ -29,9 +30,13 @@ import { createThread } from "./tools/create-thread.js";
|
|
|
29
30
|
import { promoteSuggestion } from "./tools/promote-suggestion.js";
|
|
30
31
|
import { dismissSuggestion } from "./tools/dismiss-suggestion.js";
|
|
31
32
|
import { cleanupThreads } from "./tools/cleanup-threads.js";
|
|
33
|
+
import { archiveLearning } from "./tools/archive-learning.js";
|
|
32
34
|
import { getCacheStatus, checkCacheHealth, flushCache, startBackgroundInit, } from "./services/startup.js";
|
|
35
|
+
import { getEffectTracker } from "./services/effect-tracker.js";
|
|
36
|
+
import { getProject } from "./services/session-state.js";
|
|
33
37
|
import { getTier, hasSupabase, hasCacheManagement, hasBatchOperations, hasTranscripts, } from "./services/tier.js";
|
|
34
38
|
import { getRegisteredTools } from "./tools/definitions.js";
|
|
39
|
+
import { validateToolArgs } from "./schemas/registry.js";
|
|
35
40
|
/**
|
|
36
41
|
* Create and configure the MCP server
|
|
37
42
|
*/
|
|
@@ -66,6 +71,19 @@ export function createServer() {
|
|
|
66
71
|
isError: true,
|
|
67
72
|
};
|
|
68
73
|
}
|
|
74
|
+
// Validate tool arguments against registered Zod schemas
|
|
75
|
+
const validationError = validateToolArgs(name, toolArgs);
|
|
76
|
+
if (validationError) {
|
|
77
|
+
return {
|
|
78
|
+
content: [
|
|
79
|
+
{
|
|
80
|
+
type: "text",
|
|
81
|
+
text: JSON.stringify({ error: validationError }),
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
isError: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
69
87
|
try {
|
|
70
88
|
let result;
|
|
71
89
|
switch (name) {
|
|
@@ -118,6 +136,11 @@ export function createServer() {
|
|
|
118
136
|
case "gitmem-gt":
|
|
119
137
|
result = await getTranscript(toolArgs);
|
|
120
138
|
break;
|
|
139
|
+
case "search_transcripts":
|
|
140
|
+
case "gitmem-stx":
|
|
141
|
+
case "gm-stx":
|
|
142
|
+
result = await searchTranscripts(toolArgs);
|
|
143
|
+
break;
|
|
121
144
|
case "search":
|
|
122
145
|
case "gitmem-search":
|
|
123
146
|
case "gm-search":
|
|
@@ -173,6 +196,11 @@ export function createServer() {
|
|
|
173
196
|
case "gm-cleanup":
|
|
174
197
|
result = await cleanupThreads(toolArgs);
|
|
175
198
|
break;
|
|
199
|
+
case "archive_learning":
|
|
200
|
+
case "gitmem-al":
|
|
201
|
+
case "gm-archive":
|
|
202
|
+
result = await archiveLearning(toolArgs);
|
|
203
|
+
break;
|
|
176
204
|
case "gitmem-help": {
|
|
177
205
|
const tier = getTier();
|
|
178
206
|
const commands = [
|
|
@@ -193,38 +221,53 @@ export function createServer() {
|
|
|
193
221
|
{ alias: "gitmem-ps", full: "promote_suggestion", description: "Promote a suggested thread to open thread" },
|
|
194
222
|
{ alias: "gitmem-ds", full: "dismiss_suggestion", description: "Dismiss a suggested thread" },
|
|
195
223
|
{ alias: "gitmem-cleanup", full: "cleanup_threads", description: "Triage threads by lifecycle health" },
|
|
224
|
+
{ alias: "gitmem-health", full: "health", description: "Show write health for fire-and-forget operations" },
|
|
225
|
+
{ alias: "gitmem-al", full: "archive_learning", description: "Archive a scar/win/pattern (is_active=false)" },
|
|
196
226
|
];
|
|
197
227
|
if (hasBatchOperations()) {
|
|
198
228
|
commands.push({ alias: "gitmem-rsb", full: "record_scar_usage_batch", description: "Track multiple scars (batch)" });
|
|
199
229
|
}
|
|
200
230
|
if (hasTranscripts()) {
|
|
201
|
-
commands.push({ alias: "gitmem-st", full: "save_transcript", description: "Save session transcript to storage" }, { alias: "gitmem-gt", full: "get_transcript", description: "Retrieve session transcript" });
|
|
231
|
+
commands.push({ alias: "gitmem-st", full: "save_transcript", description: "Save session transcript to storage" }, { alias: "gitmem-gt", full: "get_transcript", description: "Retrieve session transcript" }, { alias: "gitmem-stx", full: "search_transcripts", description: "Semantic search over transcript chunks" });
|
|
202
232
|
}
|
|
203
233
|
if (hasCacheManagement()) {
|
|
204
234
|
commands.push({ alias: "gitmem-cache-status", full: "cache_status", description: "Show cache status" }, { alias: "gitmem-cache-health", full: "cache_health", description: "Compare local vs remote" }, { alias: "gitmem-cache-flush", full: "cache_flush", description: "Force reload from Supabase" });
|
|
205
235
|
}
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
\
|
|
220
|
-
`);
|
|
221
|
-
// Return plain JSON result (no header - it's already printed above)
|
|
236
|
+
// Build command table for display
|
|
237
|
+
const cmdLines = commands.map(c => ` ${c.alias.padEnd(22)} ${c.description}`).join("\n");
|
|
238
|
+
const display = [
|
|
239
|
+
`gitmem v0.1.0 · ${tier} · ${registeredTools.length} tools · ${hasSupabase() ? "supabase" : "local (.gitmem/)"}`,
|
|
240
|
+
"Memory that compounds.",
|
|
241
|
+
"",
|
|
242
|
+
cmdLines,
|
|
243
|
+
"",
|
|
244
|
+
"**For detailed documentation and help, visit https://gitmem.ai/docs**",
|
|
245
|
+
"",
|
|
246
|
+
"───────────────────────────────────────────────────",
|
|
247
|
+
"DISPLAY PROTOCOL: Output the content above verbatim as your response text.",
|
|
248
|
+
"Tool results are collapsed in the CLI — the user cannot see them unless you echo them.",
|
|
249
|
+
].join("\n");
|
|
222
250
|
result = {
|
|
223
251
|
version: "0.1.0",
|
|
224
252
|
tier,
|
|
225
253
|
tools_registered: registeredTools.length,
|
|
226
254
|
storage: hasSupabase() ? "supabase" : "local (.gitmem/)",
|
|
227
255
|
commands,
|
|
256
|
+
display,
|
|
257
|
+
};
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
// Effect Tracker health report
|
|
261
|
+
case "health":
|
|
262
|
+
case "gitmem-health":
|
|
263
|
+
case "gm-health": {
|
|
264
|
+
const failureLimit = typeof toolArgs.failure_limit === "number" ? toolArgs.failure_limit : 10;
|
|
265
|
+
const tracker = getEffectTracker();
|
|
266
|
+
const report = tracker.getHealthReport(failureLimit);
|
|
267
|
+
const summary = tracker.formatSummary();
|
|
268
|
+
result = {
|
|
269
|
+
...report,
|
|
270
|
+
text: summary || "No tracked effects this session.",
|
|
228
271
|
};
|
|
229
272
|
break;
|
|
230
273
|
}
|
|
@@ -237,28 +280,40 @@ export function createServer() {
|
|
|
237
280
|
// Cache management tools (OD-473)
|
|
238
281
|
case "gitmem-cache-status":
|
|
239
282
|
case "gm-cache-s":
|
|
240
|
-
result = getCacheStatus(toolArgs.project || "
|
|
283
|
+
result = getCacheStatus(toolArgs.project || getProject() || "default");
|
|
241
284
|
break;
|
|
242
285
|
case "gitmem-cache-health":
|
|
243
286
|
case "gm-cache-h":
|
|
244
|
-
result = await checkCacheHealth(toolArgs.project || "
|
|
287
|
+
result = await checkCacheHealth(toolArgs.project || getProject() || "default");
|
|
245
288
|
break;
|
|
246
289
|
case "gitmem-cache-flush":
|
|
247
290
|
case "gm-cache-f":
|
|
248
|
-
result = await flushCache(toolArgs.project || "
|
|
291
|
+
result = await flushCache(toolArgs.project || getProject() || "default");
|
|
249
292
|
break;
|
|
250
293
|
default:
|
|
251
294
|
throw new Error(`Unknown tool: ${name}`);
|
|
252
295
|
}
|
|
296
|
+
// Build the response text.
|
|
297
|
+
// When a `display` field exists, use it directly as the response.
|
|
298
|
+
// The display should contain everything both the user and LLM need —
|
|
299
|
+
// formatted output for readability, plus any key IDs/refs inline.
|
|
300
|
+
// No separate machine-data blob: it bloats the response and causes
|
|
301
|
+
// CLI auto-collapse ("+N lines"), hurting the user experience.
|
|
302
|
+
let responseText;
|
|
303
|
+
if (result && typeof result === "object" && "display" in result && typeof result.display === "string") {
|
|
304
|
+
responseText = result.display;
|
|
305
|
+
}
|
|
306
|
+
else if (result && typeof result === "object" && "text" in result && typeof result.text === "string") {
|
|
307
|
+
responseText = result.text;
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
responseText = JSON.stringify(result, null, 2);
|
|
311
|
+
}
|
|
253
312
|
return {
|
|
254
313
|
content: [
|
|
255
314
|
{
|
|
256
315
|
type: "text",
|
|
257
|
-
text:
|
|
258
|
-
? result.display
|
|
259
|
-
: (result && typeof result === "object" && "text" in result && typeof result.text === "string")
|
|
260
|
-
? result.text
|
|
261
|
-
: JSON.stringify(result, null, 2),
|
|
316
|
+
text: responseText,
|
|
262
317
|
},
|
|
263
318
|
],
|
|
264
319
|
};
|
|
@@ -300,9 +355,8 @@ export async function runServer() {
|
|
|
300
355
|
// Pro/Dev: Initialize local vector search in background (non-blocking)
|
|
301
356
|
// This loads scars with embeddings directly from Supabase REST API
|
|
302
357
|
console.error("[gitmem] Starting background cache initialization...");
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
startBackgroundInit("weekend_warrior");
|
|
358
|
+
const warmupProject = process.env.GITMEM_DEFAULT_PROJECT || "default";
|
|
359
|
+
startBackgroundInit(warmupProject);
|
|
306
360
|
console.error("[gitmem] Server ready | Cache loading in background");
|
|
307
361
|
}
|
|
308
362
|
else {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,9 @@ import type { ActiveSessionEntry } from "../types/index.js";
|
|
|
14
14
|
/**
|
|
15
15
|
* Register a new session in the active-sessions registry.
|
|
16
16
|
* Idempotent: re-registering the same session_id replaces the entry.
|
|
17
|
+
* Returns session IDs that were displaced (different session_id, same hostname+pid).
|
|
17
18
|
*/
|
|
18
|
-
export declare function registerSession(entry: ActiveSessionEntry):
|
|
19
|
+
export declare function registerSession(entry: ActiveSessionEntry): string[];
|
|
19
20
|
/**
|
|
20
21
|
* Unregister a session from the active-sessions registry.
|
|
21
22
|
* Returns true if the session was found and removed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-sessions.d.ts","sourceRoot":"","sources":["../../src/services/active-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"active-sessions.d.ts","sourceRoot":"","sources":["../../src/services/active-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,mBAAmB,CAAC;AAgFpF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CA4BnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAoB5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,kBAAkB,EAAE,CAEzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAG7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAG5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA4EnC;AAyDD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAwD3C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -15,8 +15,11 @@ import * as path from "path";
|
|
|
15
15
|
import * as os from "os";
|
|
16
16
|
import { getGitmemDir, getSessionPath } from "./gitmem-dir.js";
|
|
17
17
|
import { ActiveSessionsRegistrySchema } from "../schemas/active-sessions.js";
|
|
18
|
+
import { withLockSync } from "./file-lock.js";
|
|
18
19
|
const REGISTRY_FILENAME = "active-sessions.json";
|
|
20
|
+
const LOCK_FILENAME = "active-sessions.lock";
|
|
19
21
|
const STALE_THRESHOLD_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
22
|
+
const ADOPT_THRESHOLD_MS = 2 * 60 * 60 * 1000; // 2 hours — adopt dead-PID sessions if recent
|
|
20
23
|
// --- Atomic write utility ---
|
|
21
24
|
/**
|
|
22
25
|
* Atomic write: write to a temp file in the same directory, then rename.
|
|
@@ -45,6 +48,9 @@ function atomicWriteFileSync(filePath, data) {
|
|
|
45
48
|
function getRegistryPath() {
|
|
46
49
|
return path.join(getGitmemDir(), REGISTRY_FILENAME);
|
|
47
50
|
}
|
|
51
|
+
function getLockPath() {
|
|
52
|
+
return path.join(getGitmemDir(), LOCK_FILENAME);
|
|
53
|
+
}
|
|
48
54
|
/**
|
|
49
55
|
* Read the registry from disk. Returns empty registry if file
|
|
50
56
|
* doesn't exist, is corrupted, or fails Zod validation.
|
|
@@ -84,25 +90,48 @@ function writeRegistry(registry) {
|
|
|
84
90
|
/**
|
|
85
91
|
* Register a new session in the active-sessions registry.
|
|
86
92
|
* Idempotent: re-registering the same session_id replaces the entry.
|
|
93
|
+
* Returns session IDs that were displaced (different session_id, same hostname+pid).
|
|
87
94
|
*/
|
|
88
95
|
export function registerSession(entry) {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
const displaced = [];
|
|
97
|
+
withLockSync(getLockPath(), () => {
|
|
98
|
+
const registry = readRegistry();
|
|
99
|
+
// Collect displaced session IDs (same hostname+pid, different session_id)
|
|
100
|
+
for (const s of registry.sessions) {
|
|
101
|
+
if (s.session_id !== entry.session_id && s.hostname === entry.hostname && s.pid === entry.pid) {
|
|
102
|
+
displaced.push(s.session_id);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Remove by session_id AND by hostname+pid to prevent duplicates
|
|
106
|
+
registry.sessions = registry.sessions.filter((s) => s.session_id !== entry.session_id &&
|
|
107
|
+
!(s.hostname === entry.hostname && s.pid === entry.pid));
|
|
108
|
+
registry.sessions.push(entry);
|
|
109
|
+
writeRegistry(registry);
|
|
110
|
+
});
|
|
111
|
+
if (displaced.length > 0) {
|
|
112
|
+
console.error(`[active-sessions] Registered session ${entry.session_id.slice(0, 8)} — displaced ${displaced.length} prior session(s): ${displaced.map(id => id.slice(0, 8)).join(", ")}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.error(`[active-sessions] Registered session ${entry.session_id.slice(0, 8)} (agent: ${entry.agent}, pid: ${entry.pid})`);
|
|
116
|
+
}
|
|
117
|
+
return displaced;
|
|
94
118
|
}
|
|
95
119
|
/**
|
|
96
120
|
* Unregister a session from the active-sessions registry.
|
|
97
121
|
* Returns true if the session was found and removed.
|
|
98
122
|
*/
|
|
99
123
|
export function unregisterSession(sessionId) {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
124
|
+
const removed = withLockSync(getLockPath(), () => {
|
|
125
|
+
const registry = readRegistry();
|
|
126
|
+
const before = registry.sessions.length;
|
|
127
|
+
registry.sessions = registry.sessions.filter((s) => s.session_id !== sessionId);
|
|
128
|
+
const wasRemoved = registry.sessions.length < before;
|
|
129
|
+
if (wasRemoved) {
|
|
130
|
+
writeRegistry(registry);
|
|
131
|
+
}
|
|
132
|
+
return wasRemoved;
|
|
133
|
+
});
|
|
104
134
|
if (removed) {
|
|
105
|
-
writeRegistry(registry);
|
|
106
135
|
console.error(`[active-sessions] Unregistered session ${sessionId.slice(0, 8)}`);
|
|
107
136
|
}
|
|
108
137
|
else {
|
|
@@ -144,52 +173,67 @@ export function findSessionById(sessionId) {
|
|
|
144
173
|
* Returns the number of sessions pruned.
|
|
145
174
|
*/
|
|
146
175
|
export function pruneStale() {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
//
|
|
157
|
-
|
|
176
|
+
return withLockSync(getLockPath(), () => {
|
|
177
|
+
const registry = readRegistry();
|
|
178
|
+
const now = Date.now();
|
|
179
|
+
const currentHostname = os.hostname();
|
|
180
|
+
const currentPid = process.pid;
|
|
181
|
+
const before = registry.sessions.length;
|
|
182
|
+
const gitmemDir = getGitmemDir();
|
|
183
|
+
let adopted = false;
|
|
184
|
+
registry.sessions = registry.sessions.filter((entry) => {
|
|
185
|
+
// GIT-22: Check for orphaned registry entry (session file missing)
|
|
186
|
+
const sessionFile = path.join(gitmemDir, "sessions", entry.session_id, "session.json");
|
|
187
|
+
if (!fs.existsSync(sessionFile)) {
|
|
188
|
+
// Only prune if session is old enough that session_start should have written the file.
|
|
189
|
+
// Brand-new sessions may not have the file yet (race window during session_start).
|
|
190
|
+
const age = now - new Date(entry.started_at).getTime();
|
|
191
|
+
if (age > 60_000) { // 1 minute grace period
|
|
192
|
+
console.error(`[active-sessions] Pruning orphaned registry entry ${entry.session_id.slice(0, 8)} (session file missing)`);
|
|
193
|
+
cleanupSessionDir(gitmemDir, entry.session_id);
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Check age
|
|
158
198
|
const age = now - new Date(entry.started_at).getTime();
|
|
159
|
-
if (age >
|
|
160
|
-
console.error(`[active-sessions] Pruning
|
|
199
|
+
if (age > STALE_THRESHOLD_MS) {
|
|
200
|
+
console.error(`[active-sessions] Pruning stale session ${entry.session_id.slice(0, 8)} (age: ${Math.round(age / 3600000)}h)`);
|
|
161
201
|
cleanupSessionDir(gitmemDir, entry.session_id);
|
|
162
202
|
return false;
|
|
163
203
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
204
|
+
// Check if PID is alive (only for sessions on the same host)
|
|
205
|
+
if (entry.hostname === currentHostname) {
|
|
206
|
+
try {
|
|
207
|
+
process.kill(entry.pid, 0); // Signal 0 = check existence only
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// PID is dead. If session is recent, adopt it into the current process
|
|
211
|
+
// instead of pruning. This handles MCP server restarts during context
|
|
212
|
+
// compaction where the hostname stays the same but the PID changes.
|
|
213
|
+
if (age < ADOPT_THRESHOLD_MS) {
|
|
214
|
+
console.error(`[active-sessions] Adopting orphaned session ${entry.session_id.slice(0, 8)} (dead pid ${entry.pid} → ${currentPid})`);
|
|
215
|
+
entry.pid = currentPid;
|
|
216
|
+
adopted = true;
|
|
217
|
+
return true; // Keep in registry with updated PID
|
|
218
|
+
}
|
|
219
|
+
console.error(`[active-sessions] Pruning dead session ${entry.session_id.slice(0, 8)} (pid ${entry.pid} no longer running)`);
|
|
220
|
+
cleanupSessionDir(gitmemDir, entry.session_id);
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
176
223
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
224
|
+
return true;
|
|
225
|
+
});
|
|
226
|
+
const pruned = before - registry.sessions.length;
|
|
227
|
+
if (pruned > 0 || adopted) {
|
|
228
|
+
writeRegistry(registry);
|
|
229
|
+
if (pruned > 0) {
|
|
230
|
+
console.error(`[active-sessions] Pruned ${pruned} stale session(s)`);
|
|
181
231
|
}
|
|
182
232
|
}
|
|
183
|
-
|
|
233
|
+
// GIT-22: Clean up orphaned session directories (dir exists but no registry entry)
|
|
234
|
+
pruneOrphanedDirs(gitmemDir, registry);
|
|
235
|
+
return pruned;
|
|
184
236
|
});
|
|
185
|
-
const pruned = before - registry.sessions.length;
|
|
186
|
-
if (pruned > 0) {
|
|
187
|
-
writeRegistry(registry);
|
|
188
|
-
console.error(`[active-sessions] Pruned ${pruned} stale session(s)`);
|
|
189
|
-
}
|
|
190
|
-
// GIT-22: Clean up orphaned session directories (dir exists but no registry entry)
|
|
191
|
-
pruneOrphanedDirs(gitmemDir, registry);
|
|
192
|
-
return pruned;
|
|
193
237
|
}
|
|
194
238
|
/**
|
|
195
239
|
* GIT-22: Remove session directories that have no corresponding registry entry.
|
|
@@ -260,42 +304,44 @@ export function migrateFromLegacy() {
|
|
|
260
304
|
return false;
|
|
261
305
|
migrationRan = true;
|
|
262
306
|
try {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
307
|
+
return withLockSync(getLockPath(), () => {
|
|
308
|
+
const gitmemDir = getGitmemDir();
|
|
309
|
+
const oldPath = path.join(gitmemDir, "active-session.json");
|
|
310
|
+
const newPath = path.join(gitmemDir, REGISTRY_FILENAME);
|
|
311
|
+
// Skip if new registry already exists or old file is absent
|
|
312
|
+
if (fs.existsSync(newPath) || !fs.existsSync(oldPath)) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
const raw = fs.readFileSync(oldPath, "utf-8");
|
|
316
|
+
const old = JSON.parse(raw);
|
|
317
|
+
if (!old.session_id) {
|
|
318
|
+
console.warn("[active-sessions] Legacy file has no session_id, skipping migration");
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
// 1. Create per-session directory with session.json
|
|
322
|
+
const sessionFilePath = getSessionPath(old.session_id, "session.json");
|
|
323
|
+
fs.writeFileSync(sessionFilePath, JSON.stringify({
|
|
324
|
+
...old,
|
|
325
|
+
hostname: old.hostname || os.hostname(),
|
|
326
|
+
pid: old.pid || process.pid,
|
|
327
|
+
}, null, 2));
|
|
328
|
+
// 2. Create registry with single entry
|
|
329
|
+
const entry = {
|
|
330
|
+
session_id: old.session_id,
|
|
331
|
+
agent: old.agent || "CLI",
|
|
332
|
+
started_at: old.started_at || new Date().toISOString(),
|
|
333
|
+
hostname: old.hostname || os.hostname(),
|
|
334
|
+
pid: old.pid || process.pid,
|
|
335
|
+
project: old.project || "default",
|
|
336
|
+
};
|
|
337
|
+
writeRegistry({ sessions: [entry] });
|
|
338
|
+
// 3. Rename old file to backup
|
|
339
|
+
const backupPath = path.join(gitmemDir, "active-session.json.migrated");
|
|
340
|
+
fs.renameSync(oldPath, backupPath);
|
|
341
|
+
console.error(`[active-sessions] Migrated legacy active-session.json → ` +
|
|
342
|
+
`sessions/${old.session_id.slice(0, 8)}/ + active-sessions.json (backup: active-session.json.migrated)`);
|
|
343
|
+
return true;
|
|
344
|
+
});
|
|
299
345
|
}
|
|
300
346
|
catch (error) {
|
|
301
347
|
console.warn("[active-sessions] Legacy migration failed (non-fatal):", error);
|