claude-session-continuity-mcp 1.16.2 → 1.17.1

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/dist/schemas.d.ts CHANGED
@@ -21,15 +21,15 @@ export declare const ContextUpdateSchema: z.ZodObject<{
21
21
  project: string;
22
22
  currentState: string;
23
23
  verification?: "passed" | "failed" | undefined;
24
- recentFiles?: string[] | undefined;
25
24
  blockers?: string | undefined;
25
+ recentFiles?: string[] | undefined;
26
26
  architectureDecision?: string | undefined;
27
27
  }, {
28
28
  project: string;
29
29
  currentState: string;
30
30
  verification?: "passed" | "failed" | undefined;
31
- recentFiles?: string[] | undefined;
32
31
  blockers?: string | undefined;
32
+ recentFiles?: string[] | undefined;
33
33
  architectureDecision?: string | undefined;
34
34
  }>;
35
35
  export declare const MemoryStoreSchema: z.ZodObject<{
@@ -40,15 +40,15 @@ export declare const MemoryStoreSchema: z.ZodObject<{
40
40
  importance: z.ZodDefault<z.ZodNumber>;
41
41
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
42
42
  }, "strip", z.ZodTypeAny, {
43
- type: "error" | "observation" | "decision" | "learning" | "pattern" | "preference";
44
43
  content: string;
44
+ type: "pattern" | "observation" | "decision" | "learning" | "error" | "preference";
45
45
  importance: number;
46
46
  project?: string | undefined;
47
47
  tags?: string[] | undefined;
48
48
  metadata?: Record<string, unknown> | undefined;
49
49
  }, {
50
- type: "error" | "observation" | "decision" | "learning" | "pattern" | "preference";
51
50
  content: string;
51
+ type: "pattern" | "observation" | "decision" | "learning" | "error" | "preference";
52
52
  project?: string | undefined;
53
53
  tags?: string[] | undefined;
54
54
  importance?: number | undefined;
@@ -63,20 +63,20 @@ export declare const MemorySearchSchema: z.ZodObject<{
63
63
  minImportance: z.ZodDefault<z.ZodNumber>;
64
64
  detail: z.ZodDefault<z.ZodBoolean>;
65
65
  }, "strip", z.ZodTypeAny, {
66
- limit: number;
67
66
  query: string;
68
- minImportance: number;
67
+ limit: number;
69
68
  semantic: boolean;
69
+ minImportance: number;
70
70
  detail: boolean;
71
71
  project?: string | undefined;
72
- type?: "error" | "observation" | "decision" | "learning" | "pattern" | "preference" | undefined;
72
+ type?: "pattern" | "observation" | "decision" | "learning" | "error" | "preference" | undefined;
73
73
  }, {
74
74
  query: string;
75
75
  project?: string | undefined;
76
- type?: "error" | "observation" | "decision" | "learning" | "pattern" | "preference" | undefined;
77
76
  limit?: number | undefined;
78
- minImportance?: number | undefined;
79
77
  semantic?: boolean | undefined;
78
+ type?: "pattern" | "observation" | "decision" | "learning" | "error" | "preference" | undefined;
79
+ minImportance?: number | undefined;
80
80
  detail?: boolean | undefined;
81
81
  }>;
82
82
  export declare const MemoryGetSchema: z.ZodObject<{
@@ -103,30 +103,30 @@ export declare const TaskManageSchema: z.ZodObject<{
103
103
  status: z.ZodOptional<z.ZodEnum<["pending", "in_progress", "done", "blocked"]>>;
104
104
  }, "strip", z.ZodTypeAny, {
105
105
  project: string;
106
- action: "update" | "list" | "add" | "complete";
107
- title?: string | undefined;
108
- status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
106
+ action: "update" | "add" | "list" | "complete";
109
107
  description?: string | undefined;
108
+ title?: string | undefined;
110
109
  taskId?: number | undefined;
111
110
  priority?: number | undefined;
111
+ status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
112
112
  }, {
113
113
  project: string;
114
- action: "update" | "list" | "add" | "complete";
115
- title?: string | undefined;
116
- status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
114
+ action: "update" | "add" | "list" | "complete";
117
115
  description?: string | undefined;
116
+ title?: string | undefined;
118
117
  taskId?: number | undefined;
119
118
  priority?: number | undefined;
119
+ status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
120
120
  }>;
121
121
  export declare const VerifySchema: z.ZodObject<{
122
122
  project: z.ZodString;
123
123
  gates: z.ZodDefault<z.ZodArray<z.ZodEnum<["build", "test", "lint"]>, "many">>;
124
124
  }, "strip", z.ZodTypeAny, {
125
125
  project: string;
126
- gates: ("build" | "test" | "lint")[];
126
+ gates: ("test" | "build" | "lint")[];
127
127
  }, {
128
128
  project: string;
129
- gates?: ("build" | "test" | "lint")[] | undefined;
129
+ gates?: ("test" | "build" | "lint")[] | undefined;
130
130
  }>;
131
131
  export declare const LearnSchema: z.ZodObject<{
132
132
  project: z.ZodString;
@@ -145,32 +145,32 @@ export declare const LearnSchema: z.ZodObject<{
145
145
  toVersion: z.ZodOptional<z.ZodString>;
146
146
  }, "strip", z.ZodTypeAny, {
147
147
  project: string;
148
- type: "decision" | "pattern" | "dependency" | "fix";
149
148
  content: string;
149
+ type: "fix" | "pattern" | "decision" | "dependency";
150
+ solution?: string | undefined;
151
+ action?: "remove" | "add" | "upgrade" | "downgrade" | undefined;
152
+ dependency?: string | undefined;
150
153
  reason?: string | undefined;
151
- alternatives?: string[] | undefined;
152
154
  files?: string[] | undefined;
153
- solution?: string | undefined;
155
+ alternatives?: string[] | undefined;
154
156
  preventionTip?: string | undefined;
155
157
  example?: string | undefined;
156
158
  appliesTo?: string | undefined;
157
- dependency?: string | undefined;
158
- action?: "add" | "remove" | "upgrade" | "downgrade" | undefined;
159
159
  fromVersion?: string | undefined;
160
160
  toVersion?: string | undefined;
161
161
  }, {
162
162
  project: string;
163
- type: "decision" | "pattern" | "dependency" | "fix";
164
163
  content: string;
164
+ type: "fix" | "pattern" | "decision" | "dependency";
165
+ solution?: string | undefined;
166
+ action?: "remove" | "add" | "upgrade" | "downgrade" | undefined;
167
+ dependency?: string | undefined;
165
168
  reason?: string | undefined;
166
- alternatives?: string[] | undefined;
167
169
  files?: string[] | undefined;
168
- solution?: string | undefined;
170
+ alternatives?: string[] | undefined;
169
171
  preventionTip?: string | undefined;
170
172
  example?: string | undefined;
171
173
  appliesTo?: string | undefined;
172
- dependency?: string | undefined;
173
- action?: "add" | "remove" | "upgrade" | "downgrade" | undefined;
174
174
  fromVersion?: string | undefined;
175
175
  toVersion?: string | undefined;
176
176
  }>;
@@ -210,15 +210,15 @@ export declare const ToolSchemas: {
210
210
  project: string;
211
211
  currentState: string;
212
212
  verification?: "passed" | "failed" | undefined;
213
- recentFiles?: string[] | undefined;
214
213
  blockers?: string | undefined;
214
+ recentFiles?: string[] | undefined;
215
215
  architectureDecision?: string | undefined;
216
216
  }, {
217
217
  project: string;
218
218
  currentState: string;
219
219
  verification?: "passed" | "failed" | undefined;
220
- recentFiles?: string[] | undefined;
221
220
  blockers?: string | undefined;
221
+ recentFiles?: string[] | undefined;
222
222
  architectureDecision?: string | undefined;
223
223
  }>;
224
224
  readonly memory_store: z.ZodObject<{
@@ -229,15 +229,15 @@ export declare const ToolSchemas: {
229
229
  importance: z.ZodDefault<z.ZodNumber>;
230
230
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
231
231
  }, "strip", z.ZodTypeAny, {
232
- type: "error" | "observation" | "decision" | "learning" | "pattern" | "preference";
233
232
  content: string;
233
+ type: "pattern" | "observation" | "decision" | "learning" | "error" | "preference";
234
234
  importance: number;
235
235
  project?: string | undefined;
236
236
  tags?: string[] | undefined;
237
237
  metadata?: Record<string, unknown> | undefined;
238
238
  }, {
239
- type: "error" | "observation" | "decision" | "learning" | "pattern" | "preference";
240
239
  content: string;
240
+ type: "pattern" | "observation" | "decision" | "learning" | "error" | "preference";
241
241
  project?: string | undefined;
242
242
  tags?: string[] | undefined;
243
243
  importance?: number | undefined;
@@ -252,20 +252,20 @@ export declare const ToolSchemas: {
252
252
  minImportance: z.ZodDefault<z.ZodNumber>;
253
253
  detail: z.ZodDefault<z.ZodBoolean>;
254
254
  }, "strip", z.ZodTypeAny, {
255
- limit: number;
256
255
  query: string;
257
- minImportance: number;
256
+ limit: number;
258
257
  semantic: boolean;
258
+ minImportance: number;
259
259
  detail: boolean;
260
260
  project?: string | undefined;
261
- type?: "error" | "observation" | "decision" | "learning" | "pattern" | "preference" | undefined;
261
+ type?: "pattern" | "observation" | "decision" | "learning" | "error" | "preference" | undefined;
262
262
  }, {
263
263
  query: string;
264
264
  project?: string | undefined;
265
- type?: "error" | "observation" | "decision" | "learning" | "pattern" | "preference" | undefined;
266
265
  limit?: number | undefined;
267
- minImportance?: number | undefined;
268
266
  semantic?: boolean | undefined;
267
+ type?: "pattern" | "observation" | "decision" | "learning" | "error" | "preference" | undefined;
268
+ minImportance?: number | undefined;
269
269
  detail?: boolean | undefined;
270
270
  }>;
271
271
  readonly memory_get: z.ZodObject<{
@@ -293,30 +293,30 @@ export declare const ToolSchemas: {
293
293
  status: z.ZodOptional<z.ZodEnum<["pending", "in_progress", "done", "blocked"]>>;
294
294
  }, "strip", z.ZodTypeAny, {
295
295
  project: string;
296
- action: "update" | "list" | "add" | "complete";
297
- title?: string | undefined;
298
- status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
296
+ action: "update" | "add" | "list" | "complete";
299
297
  description?: string | undefined;
298
+ title?: string | undefined;
300
299
  taskId?: number | undefined;
301
300
  priority?: number | undefined;
301
+ status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
302
302
  }, {
303
303
  project: string;
304
- action: "update" | "list" | "add" | "complete";
305
- title?: string | undefined;
306
- status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
304
+ action: "update" | "add" | "list" | "complete";
307
305
  description?: string | undefined;
306
+ title?: string | undefined;
308
307
  taskId?: number | undefined;
309
308
  priority?: number | undefined;
309
+ status?: "pending" | "in_progress" | "done" | "blocked" | undefined;
310
310
  }>;
311
311
  readonly verify: z.ZodObject<{
312
312
  project: z.ZodString;
313
313
  gates: z.ZodDefault<z.ZodArray<z.ZodEnum<["build", "test", "lint"]>, "many">>;
314
314
  }, "strip", z.ZodTypeAny, {
315
315
  project: string;
316
- gates: ("build" | "test" | "lint")[];
316
+ gates: ("test" | "build" | "lint")[];
317
317
  }, {
318
318
  project: string;
319
- gates?: ("build" | "test" | "lint")[] | undefined;
319
+ gates?: ("test" | "build" | "lint")[] | undefined;
320
320
  }>;
321
321
  readonly learn: z.ZodObject<{
322
322
  project: z.ZodString;
@@ -335,32 +335,32 @@ export declare const ToolSchemas: {
335
335
  toVersion: z.ZodOptional<z.ZodString>;
336
336
  }, "strip", z.ZodTypeAny, {
337
337
  project: string;
338
- type: "decision" | "pattern" | "dependency" | "fix";
339
338
  content: string;
339
+ type: "fix" | "pattern" | "decision" | "dependency";
340
+ solution?: string | undefined;
341
+ action?: "remove" | "add" | "upgrade" | "downgrade" | undefined;
342
+ dependency?: string | undefined;
340
343
  reason?: string | undefined;
341
- alternatives?: string[] | undefined;
342
344
  files?: string[] | undefined;
343
- solution?: string | undefined;
345
+ alternatives?: string[] | undefined;
344
346
  preventionTip?: string | undefined;
345
347
  example?: string | undefined;
346
348
  appliesTo?: string | undefined;
347
- dependency?: string | undefined;
348
- action?: "add" | "remove" | "upgrade" | "downgrade" | undefined;
349
349
  fromVersion?: string | undefined;
350
350
  toVersion?: string | undefined;
351
351
  }, {
352
352
  project: string;
353
- type: "decision" | "pattern" | "dependency" | "fix";
354
353
  content: string;
354
+ type: "fix" | "pattern" | "decision" | "dependency";
355
+ solution?: string | undefined;
356
+ action?: "remove" | "add" | "upgrade" | "downgrade" | undefined;
357
+ dependency?: string | undefined;
355
358
  reason?: string | undefined;
356
- alternatives?: string[] | undefined;
357
359
  files?: string[] | undefined;
358
- solution?: string | undefined;
360
+ alternatives?: string[] | undefined;
359
361
  preventionTip?: string | undefined;
360
362
  example?: string | undefined;
361
363
  appliesTo?: string | undefined;
362
- dependency?: string | undefined;
363
- action?: "add" | "remove" | "upgrade" | "downgrade" | undefined;
364
364
  fromVersion?: string | undefined;
365
365
  toVersion?: string | undefined;
366
366
  }>;
@@ -37,9 +37,17 @@ export declare function logHookError(hook: string, err: unknown): void;
37
37
  */
38
38
  export declare function isCodexHost(transcriptPath?: string): boolean;
39
39
  /**
40
- * Emit context to stdout in the host's expected format (Codex support, 2026-07-09).
40
+ * Detect whether the hook is running under Gemini CLI (Google), 2026-07-10.
41
+ * Same two-signal approach as Codex — Gemini's transcript_path can be null/stubbed
42
+ * at SessionStart (google-gemini/gemini-cli#14715), so the installer-injected
43
+ * "--gemini" argv marker is the reliable signal; the ~/.gemini/tmp/.../chats path
44
+ * is the fallback for later events.
45
+ */
46
+ export declare function isGeminiHost(transcriptPath?: string): boolean;
47
+ /**
48
+ * Emit context to stdout in the host's expected format.
41
49
  * - Claude Code injects raw stdout text directly.
42
- * - Codex CLI expects {hookSpecificOutput:{hookEventName, additionalContext}}.
50
+ * - Codex CLI and Gemini CLI both expect {hookSpecificOutput:{hookEventName, additionalContext}}.
43
51
  */
44
52
  export declare function emitContext(context: string, hookEventName: string, transcriptPath?: string): void;
45
53
  export {};
@@ -156,12 +156,29 @@ export function isCodexHost(transcriptPath) {
156
156
  return transcriptPath.includes('/.codex/sessions/') || /rollout-.*\.jsonl$/.test(transcriptPath);
157
157
  }
158
158
  /**
159
- * Emit context to stdout in the host's expected format (Codex support, 2026-07-09).
159
+ * Detect whether the hook is running under Gemini CLI (Google), 2026-07-10.
160
+ * Same two-signal approach as Codex — Gemini's transcript_path can be null/stubbed
161
+ * at SessionStart (google-gemini/gemini-cli#14715), so the installer-injected
162
+ * "--gemini" argv marker is the reliable signal; the ~/.gemini/tmp/.../chats path
163
+ * is the fallback for later events.
164
+ */
165
+ export function isGeminiHost(transcriptPath) {
166
+ if (process.argv.includes('--gemini'))
167
+ return true;
168
+ if (!transcriptPath)
169
+ return false;
170
+ // Gemini stores chats at ~/.gemini/tmp/<hash>/chats/*.jsonl. Match that specific
171
+ // path, NOT a bare "/.gemini/" — a Claude session run from a dir containing
172
+ // ".gemini" would otherwise be misclassified (audit-3 2026-07-10 finding).
173
+ return transcriptPath.includes('/.gemini/tmp/');
174
+ }
175
+ /**
176
+ * Emit context to stdout in the host's expected format.
160
177
  * - Claude Code injects raw stdout text directly.
161
- * - Codex CLI expects {hookSpecificOutput:{hookEventName, additionalContext}}.
178
+ * - Codex CLI and Gemini CLI both expect {hookSpecificOutput:{hookEventName, additionalContext}}.
162
179
  */
163
180
  export function emitContext(context, hookEventName, transcriptPath) {
164
- if (isCodexHost(transcriptPath)) {
181
+ if (isCodexHost(transcriptPath) || isGeminiHost(transcriptPath)) {
165
182
  process.stdout.write(JSON.stringify({
166
183
  hookSpecificOutput: { hookEventName, additionalContext: context },
167
184
  }));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "claude-session-continuity-mcp",
3
- "version": "1.16.2",
4
- "description": "Session continuity for Claude Code & OpenAI Codex CLI - never re-explain your project again. 100% local, zero config, auto context injection.",
3
+ "version": "1.17.1",
4
+ "description": "Session continuity for Claude Code, OpenAI Codex CLI & Google Gemini CLI - never re-explain your project again. 100% local, zero config, auto context injection.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
@@ -21,8 +21,6 @@
21
21
  "test": "vitest run",
22
22
  "test:watch": "vitest",
23
23
  "test:coverage": "vitest run --coverage",
24
- "dashboard": "node dist/dashboard.js",
25
- "dashboard:v2": "node dist/dashboard-v2.js",
26
24
  "postinstall": "node dist/hooks/install.js install 2>/dev/null || true",
27
25
  "prepublishOnly": "npm run build && npm test"
28
26
  },
@@ -34,6 +32,9 @@
34
32
  "codex",
35
33
  "codex-cli",
36
34
  "openai",
35
+ "gemini",
36
+ "gemini-cli",
37
+ "google",
37
38
  "ai",
38
39
  "context",
39
40
  "memory",
@@ -59,7 +60,7 @@
59
60
  "LICENSE"
60
61
  ],
61
62
  "engines": {
62
- "node": ">=18.0.0"
63
+ "node": ">=22.0.0"
63
64
  },
64
65
  "dependencies": {
65
66
  "@modelcontextprotocol/sdk": "^1.0.0",
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Project Manager MCP Dashboard v2
4
- * Modern dashboard with:
5
- * - Tailwind-inspired design (CSS-only, no build step)
6
- * - Real-time updates
7
- * - Project timeline view
8
- * - Memory graph visualization
9
- * - Context snapshot viewer
10
- */
11
- export {};