reviewflow 3.3.1 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cli/formatters/initSummary.d.ts +1 -1
  3. package/dist/cli/formatters/initSummary.d.ts.map +1 -1
  4. package/dist/cli/formatters/initSummary.js +2 -0
  5. package/dist/cli/formatters/initSummary.js.map +1 -1
  6. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts +12 -0
  7. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts.map +1 -0
  8. package/dist/entities/mcpSettings/mcpSettings.guard.js +15 -0
  9. package/dist/entities/mcpSettings/mcpSettings.guard.js.map +1 -0
  10. package/dist/entities/mcpSettings/mcpSettings.schema.d.ts +13 -0
  11. package/dist/entities/mcpSettings/mcpSettings.schema.d.ts.map +1 -0
  12. package/dist/entities/mcpSettings/mcpSettings.schema.js +9 -0
  13. package/dist/entities/mcpSettings/mcpSettings.schema.js.map +1 -0
  14. package/dist/main/cli.js.map +1 -1
  15. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.d.ts +2 -0
  16. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.d.ts.map +1 -0
  17. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js +52 -0
  18. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js.map +1 -0
  19. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js +67 -9
  20. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js.map +1 -1
  21. package/dist/usecases/cli/configureMcp.usecase.d.ts +1 -1
  22. package/dist/usecases/cli/configureMcp.usecase.d.ts.map +1 -1
  23. package/dist/usecases/cli/configureMcp.usecase.js +16 -3
  24. package/dist/usecases/cli/configureMcp.usecase.js.map +1 -1
  25. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.4.0](https://github.com/DGouron/review-flow/compare/reviewflow-v3.3.1...reviewflow-v3.4.0) (2026-02-13)
9
+
10
+
11
+ ### Added
12
+
13
+ * **cli:** add post-write validation for MCP server configuration ([#54](https://github.com/DGouron/review-flow/issues/54)) ([8bb049c](https://github.com/DGouron/review-flow/commit/8bb049cf87c6251179416b370b61aacb684ad5b8))
14
+ * **cli:** automatic MCP server configuration validation ([ce8ad3c](https://github.com/DGouron/review-flow/commit/ce8ad3cd11ed167819bce402622a4d1cbec81ebb))
15
+
16
+
17
+ ### Changed
18
+
19
+ * **cli:** use createGuard, separate schema, fix test mocks ([#54](https://github.com/DGouron/review-flow/issues/54)) ([cf6f54a](https://github.com/DGouron/review-flow/commit/cf6f54a22bcf9969b9293ef2dff40b643da48977))
20
+
8
21
  ## [3.3.1](https://github.com/DGouron/review-flow/compare/reviewflow-v3.3.0...reviewflow-v3.3.1) (2026-02-13)
9
22
 
10
23
 
@@ -3,7 +3,7 @@ export interface InitSummaryInput {
3
3
  envPath: string;
4
4
  port: number;
5
5
  repositoryCount: number;
6
- mcpStatus: 'configured' | 'already-configured' | 'claude-not-found' | 'skipped' | 'failed';
6
+ mcpStatus: 'configured' | 'already-configured' | 'claude-not-found' | 'validation-failed' | 'skipped' | 'failed';
7
7
  gitlabUsername: string;
8
8
  githubUsername: string;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"initSummary.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/initSummary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3F,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAiBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAoBjE"}
1
+ {"version":3,"file":"initSummary.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/initSummary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjH,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAmBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAoBjE"}
@@ -8,6 +8,8 @@ function mcpLine(status) {
8
8
  return ' MCP server: skipped (Claude CLI not found)';
9
9
  case 'skipped':
10
10
  return ' MCP server: skipped by user';
11
+ case 'validation-failed':
12
+ return ' MCP server: configuration written but validation failed';
11
13
  case 'failed':
12
14
  return ' MCP server: configuration failed';
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"initSummary.js","sourceRoot":"","sources":["../../../src/cli/formatters/initSummary.ts"],"names":[],"mappings":"AAUA,SAAS,OAAO,CAAC,MAAqC;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,6BAA6B,CAAC;QACvC,KAAK,oBAAoB;YACvB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,iDAAiD,CAAC;QAC3D,KAAK,SAAS;YACZ,OAAO,kCAAkC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,uCAAuC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,MAAM,KAAK,GAAa;QACtB,EAAE;QACF,sCAAsC;QACtC,EAAE;QACF,gBAAgB;QAChB,oBAAoB,KAAK,CAAC,UAAU,EAAE;QACtC,oBAAoB,KAAK,CAAC,OAAO,EAAE;QACnC,oBAAoB,KAAK,CAAC,IAAI,EAAE;QAChC,oBAAoB,KAAK,CAAC,eAAe,EAAE;QAC3C,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACxB,EAAE;QACF,aAAa;QACb,+DAA+D;QAC/D,yCAAyC;QACzC,4CAA4C;QAC5C,EAAE;KACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"initSummary.js","sourceRoot":"","sources":["../../../src/cli/formatters/initSummary.ts"],"names":[],"mappings":"AAUA,SAAS,OAAO,CAAC,MAAqC;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,6BAA6B,CAAC;QACvC,KAAK,oBAAoB;YACvB,OAAO,qCAAqC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,iDAAiD,CAAC;QAC3D,KAAK,SAAS;YACZ,OAAO,kCAAkC,CAAC;QAC5C,KAAK,mBAAmB;YACtB,OAAO,8DAA8D,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,uCAAuC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,MAAM,KAAK,GAAa;QACtB,EAAE;QACF,sCAAsC;QACtC,EAAE;QACF,gBAAgB;QAChB,oBAAoB,KAAK,CAAC,UAAU,EAAE;QACtC,oBAAoB,KAAK,CAAC,OAAO,EAAE;QACnC,oBAAoB,KAAK,CAAC,IAAI,EAAE;QAChC,oBAAoB,KAAK,CAAC,eAAe,EAAE;QAC3C,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACxB,EAAE;QACF,aAAa;QACb,+DAA+D;QAC/D,yCAAyC;QACzC,4CAA4C;QAC5C,EAAE;KACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type McpSettings } from '../../entities/mcpSettings/mcpSettings.schema.js';
2
+ export type { McpSettings };
3
+ export declare const isValidMcpSettings: (data: unknown) => data is McpSettings;
4
+ export declare const safeParseMcpSettings: (input: unknown) => import("zod").ZodSafeParseResult<{
5
+ mcpServers: Record<string, {
6
+ command: string;
7
+ args: string[];
8
+ }>;
9
+ }>;
10
+ export declare function parseMcpSettings(data: unknown): McpSettings;
11
+ export declare function hasServerEntry(data: unknown, serverName: string): boolean;
12
+ //# sourceMappingURL=mcpSettings.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.guard.d.ts","sourceRoot":"","sources":["../../../src/entities/mcpSettings/mcpSettings.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAInG,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,eAAO,MAAM,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,WAAsC,CAAC;AACnG,eAAO,MAAM,oBAAoB;;;;;EAA6B,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAE3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIzE"}
@@ -0,0 +1,15 @@
1
+ import { createGuard } from '../../shared/foundation/guard.base.js';
2
+ import { mcpSettingsSchema } from '../../entities/mcpSettings/mcpSettings.schema.js';
3
+ const mcpSettingsGuard = createGuard(mcpSettingsSchema);
4
+ export const isValidMcpSettings = mcpSettingsGuard.isValid;
5
+ export const safeParseMcpSettings = mcpSettingsGuard.safeParse;
6
+ export function parseMcpSettings(data) {
7
+ return mcpSettingsSchema.passthrough().parse(data);
8
+ }
9
+ export function hasServerEntry(data, serverName) {
10
+ const result = mcpSettingsGuard.safeParse(data);
11
+ if (!result.success)
12
+ return false;
13
+ return serverName in result.data.mcpServers;
14
+ }
15
+ //# sourceMappingURL=mcpSettings.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.guard.js","sourceRoot":"","sources":["../../../src/entities/mcpSettings/mcpSettings.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,8CAA8C,CAAC;AAEnG,MAAM,gBAAgB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAIxD,MAAM,CAAC,MAAM,kBAAkB,GAA2C,gBAAgB,CAAC,OAAO,CAAC;AACnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,iBAAiB,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,UAAkB;IAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const mcpServerEntrySchema: z.ZodObject<{
3
+ command: z.ZodString;
4
+ args: z.ZodArray<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export declare const mcpSettingsSchema: z.ZodObject<{
7
+ mcpServers: z.ZodRecord<z.ZodString, z.ZodObject<{
8
+ command: z.ZodString;
9
+ args: z.ZodArray<z.ZodString>;
10
+ }, z.core.$strip>>;
11
+ }, z.core.$strip>;
12
+ export type McpSettings = z.infer<typeof mcpSettingsSchema>;
13
+ //# sourceMappingURL=mcpSettings.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.schema.d.ts","sourceRoot":"","sources":["../../../src/entities/mcpSettings/mcpSettings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAE5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export const mcpServerEntrySchema = z.object({
3
+ command: z.string(),
4
+ args: z.array(z.string()),
5
+ });
6
+ export const mcpSettingsSchema = z.object({
7
+ mcpServers: z.record(z.string(), mcpServerEntrySchema),
8
+ });
9
+ //# sourceMappingURL=mcpSettings.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.schema.js","sourceRoot":"","sources":["../../../src/entities/mcpSettings/mcpSettings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC;CACvD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/main/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/main/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcpSettings.guard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.guard.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/units/entities/mcpSettings/mcpSettings.guard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { isValidMcpSettings, parseMcpSettings, hasServerEntry } from '../../../../entities/mcpSettings/mcpSettings.guard.js';
3
+ describe('McpSettings guard', () => {
4
+ it('should validate a settings object with one mcp server', () => {
5
+ const settings = {
6
+ mcpServers: {
7
+ 'review-progress': {
8
+ command: 'node',
9
+ args: ['/path/to/mcpServer.js'],
10
+ },
11
+ },
12
+ };
13
+ expect(isValidMcpSettings(settings)).toBe(true);
14
+ });
15
+ it('should reject settings without mcpServers', () => {
16
+ expect(isValidMcpSettings({})).toBe(false);
17
+ });
18
+ it('should confirm server entry exists by name', () => {
19
+ const settings = {
20
+ mcpServers: {
21
+ 'review-progress': { command: 'node', args: ['/path/to/mcpServer.js'] },
22
+ },
23
+ };
24
+ expect(hasServerEntry(settings, 'review-progress')).toBe(true);
25
+ });
26
+ it('should return false when server entry does not exist', () => {
27
+ const settings = {
28
+ mcpServers: {
29
+ 'other-server': { command: 'python', args: ['server.py'] },
30
+ },
31
+ };
32
+ expect(hasServerEntry(settings, 'review-progress')).toBe(false);
33
+ });
34
+ it('should return false for invalid settings', () => {
35
+ expect(hasServerEntry({}, 'review-progress')).toBe(false);
36
+ });
37
+ it('should parse settings and return typed mcpServers', () => {
38
+ const raw = {
39
+ mcpServers: {
40
+ 'review-progress': {
41
+ command: 'node',
42
+ args: ['/path/to/mcpServer.js'],
43
+ },
44
+ },
45
+ someOtherKey: 'preserved',
46
+ };
47
+ const result = parseMcpSettings(raw);
48
+ expect(result.mcpServers['review-progress'].command).toBe('node');
49
+ expect(result.mcpServers['review-progress'].args).toEqual(['/path/to/mcpServer.js']);
50
+ });
51
+ });
52
+ //# sourceMappingURL=mcpSettings.guard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSettings.guard.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/entities/mcpSettings/mcpSettings.guard.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAEnH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG;YACf,UAAU,EAAE;gBACV,iBAAiB,EAAE;oBACjB,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,uBAAuB,CAAC;iBAChC;aACF;SACF,CAAC;QAEF,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAG;YACf,UAAU,EAAE;gBACV,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,uBAAuB,CAAC,EAAE;aACxE;SACF,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,QAAQ,GAAG;YACf,UAAU,EAAE;gBACV,cAAc,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;aAC3D;SACF,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG;YACV,UAAU,EAAE;gBACV,iBAAiB,EAAE;oBACjB,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,uBAAuB,CAAC;iBAChC;aACF;YACD,YAAY,EAAE,WAAW;SAC1B,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -21,9 +21,16 @@ describe('ConfigureMcpUseCase', () => {
21
21
  expect(deps.writeFileSync).not.toHaveBeenCalled();
22
22
  });
23
23
  it('should configure mcp when settings file does not exist', () => {
24
+ const validWrittenSettings = JSON.stringify({
25
+ mcpServers: {
26
+ 'review-progress': { command: 'node', args: ['/path/to/dist/mcpServer.js'] },
27
+ },
28
+ });
24
29
  const deps = createFakeDeps({
25
30
  existsSync: vi.fn(() => false),
26
- readFileSync: vi.fn(() => { throw new Error('ENOENT'); }),
31
+ readFileSync: vi.fn()
32
+ .mockImplementationOnce(() => { throw new Error('ENOENT'); })
33
+ .mockReturnValueOnce(validWrittenSettings),
27
34
  });
28
35
  const usecase = new ConfigureMcpUseCase(deps);
29
36
  const result = usecase.execute();
@@ -51,16 +58,26 @@ describe('ConfigureMcpUseCase', () => {
51
58
  expect(deps.writeFileSync).not.toHaveBeenCalled();
52
59
  });
53
60
  it('should update mcp config when path has changed', () => {
54
- const existingSettings = {
61
+ const existingSettings = JSON.stringify({
55
62
  mcpServers: {
56
63
  'review-progress': {
57
64
  command: 'node',
58
65
  args: ['/old/path/mcpServer.js'],
59
66
  },
60
67
  },
61
- };
68
+ });
69
+ const updatedSettings = JSON.stringify({
70
+ mcpServers: {
71
+ 'review-progress': {
72
+ command: 'node',
73
+ args: ['/path/to/dist/mcpServer.js'],
74
+ },
75
+ },
76
+ });
62
77
  const deps = createFakeDeps({
63
- readFileSync: vi.fn(() => JSON.stringify(existingSettings)),
78
+ readFileSync: vi.fn()
79
+ .mockReturnValueOnce(existingSettings)
80
+ .mockReturnValueOnce(updatedSettings),
64
81
  });
65
82
  const usecase = new ConfigureMcpUseCase(deps);
66
83
  const result = usecase.execute();
@@ -68,27 +85,68 @@ describe('ConfigureMcpUseCase', () => {
68
85
  expect(deps.copyFileSync).toHaveBeenCalled();
69
86
  });
70
87
  it('should preserve existing mcp servers when adding review-progress', () => {
71
- const existingSettings = {
88
+ const existingSettings = JSON.stringify({
72
89
  mcpServers: {
73
90
  'other-server': { command: 'python', args: ['server.py'] },
74
91
  },
75
- };
92
+ });
93
+ const updatedSettings = JSON.stringify({
94
+ mcpServers: {
95
+ 'other-server': { command: 'python', args: ['server.py'] },
96
+ 'review-progress': { command: 'node', args: ['/path/to/dist/mcpServer.js'] },
97
+ },
98
+ });
76
99
  const deps = createFakeDeps({
77
- readFileSync: vi.fn(() => JSON.stringify(existingSettings)),
100
+ readFileSync: vi.fn()
101
+ .mockReturnValueOnce(existingSettings)
102
+ .mockReturnValueOnce(updatedSettings),
78
103
  });
79
104
  const usecase = new ConfigureMcpUseCase(deps);
80
- usecase.execute();
105
+ const result = usecase.execute();
106
+ expect(result).toBe('configured');
81
107
  const writtenContent = JSON.parse(deps.writeFileSync.mock.calls[0][1]);
82
108
  expect(writtenContent.mcpServers['other-server']).toBeDefined();
83
109
  expect(writtenContent.mcpServers['review-progress']).toBeDefined();
84
110
  });
85
111
  it('should backup settings before modifying', () => {
112
+ const validWrittenSettings = JSON.stringify({
113
+ mcpServers: {
114
+ 'review-progress': { command: 'node', args: ['/path/to/dist/mcpServer.js'] },
115
+ },
116
+ });
86
117
  const deps = createFakeDeps({
87
- readFileSync: vi.fn(() => '{}'),
118
+ readFileSync: vi.fn()
119
+ .mockReturnValueOnce('{}')
120
+ .mockReturnValueOnce(validWrittenSettings),
88
121
  });
89
122
  const usecase = new ConfigureMcpUseCase(deps);
90
123
  usecase.execute();
91
124
  expect(deps.copyFileSync).toHaveBeenCalledWith('/home/user/.claude/settings.json', '/home/user/.claude/settings.json.bak');
92
125
  });
126
+ it('should return validation-failed when review-progress entry is missing after write', () => {
127
+ const settingsWithoutReviewProgress = JSON.stringify({
128
+ mcpServers: {
129
+ 'some-other-server': { command: 'python', args: ['server.py'] },
130
+ },
131
+ });
132
+ const deps = createFakeDeps({
133
+ readFileSync: vi.fn()
134
+ .mockReturnValueOnce('{}')
135
+ .mockReturnValueOnce(settingsWithoutReviewProgress),
136
+ });
137
+ const usecase = new ConfigureMcpUseCase(deps);
138
+ const result = usecase.execute();
139
+ expect(result).toBe('validation-failed');
140
+ });
141
+ it('should return validation-failed when written file is not valid', () => {
142
+ const deps = createFakeDeps({
143
+ readFileSync: vi.fn()
144
+ .mockReturnValueOnce('{}')
145
+ .mockReturnValueOnce('not json'),
146
+ });
147
+ const usecase = new ConfigureMcpUseCase(deps);
148
+ const result = usecase.execute();
149
+ expect(result).toBe('validation-failed');
150
+ });
93
151
  });
94
152
  //# sourceMappingURL=configureMcp.usecase.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configureMcp.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/cli/configureMcp.usecase.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureMcp.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/cli/configureMcp.usecase.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type ConfigureMcpResult = 'configured' | 'already-configured' | 'claude-not-found' | 'failed';
1
+ export type ConfigureMcpResult = 'configured' | 'already-configured' | 'claude-not-found' | 'validation-failed' | 'failed';
2
2
  export interface ConfigureMcpDependencies {
3
3
  isClaudeInstalled: () => boolean;
4
4
  readFileSync: (path: string, encoding: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"configureMcp.usecase.d.ts","sourceRoot":"","sources":["../../../src/usecases/cli/configureMcp.usecase.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAErG,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,oBAAoB,EAAE,MAAM,MAAM,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,wBAAwB;IAE3D,OAAO,IAAI,kBAAkB;CA4C9B"}
1
+ {"version":3,"file":"configureMcp.usecase.d.ts","sourceRoot":"","sources":["../../../src/usecases/cli/configureMcp.usecase.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE3H,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,oBAAoB,EAAE,MAAM,MAAM,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,wBAAwB;IAE3D,OAAO,IAAI,kBAAkB;CAsD9B"}
@@ -1,3 +1,4 @@
1
+ import { hasServerEntry, safeParseMcpSettings } from '../../entities/mcpSettings/mcpSettings.guard.js';
1
2
  export class ConfigureMcpUseCase {
2
3
  deps;
3
4
  constructor(deps) {
@@ -16,9 +17,12 @@ export class ConfigureMcpUseCase {
16
17
  catch {
17
18
  settings = {};
18
19
  }
19
- const mcpServers = (settings.mcpServers ?? {});
20
- const existing = mcpServers['review-progress'];
21
- if (existing?.args?.[0] === mcpServerPath) {
20
+ const parseResult = safeParseMcpSettings(settings);
21
+ const mcpServers = parseResult.success
22
+ ? parseResult.data.mcpServers
23
+ : {};
24
+ const existingArgs = mcpServers['review-progress']?.args;
25
+ if (existingArgs?.[0] === mcpServerPath) {
22
26
  return 'already-configured';
23
27
  }
24
28
  if (this.deps.existsSync(this.deps.settingsPath)) {
@@ -30,6 +34,15 @@ export class ConfigureMcpUseCase {
30
34
  };
31
35
  settings.mcpServers = mcpServers;
32
36
  this.deps.writeFileSync(this.deps.settingsPath, JSON.stringify(settings, null, 2));
37
+ try {
38
+ const written = this.deps.readFileSync(this.deps.settingsPath, 'utf-8');
39
+ if (!hasServerEntry(JSON.parse(written), 'review-progress')) {
40
+ return 'validation-failed';
41
+ }
42
+ }
43
+ catch {
44
+ return 'validation-failed';
45
+ }
33
46
  return 'configured';
34
47
  }
35
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"configureMcp.usecase.js","sourceRoot":"","sources":["../../../src/usecases/cli/configureMcp.usecase.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;IAAG,CAAC;IAE/D,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACnC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACvD,IAAI,QAAiC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACxE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;QAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAEhC,CAAC;QAEd,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC1C,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,MAAM,CAChC,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,iBAAiB,CAAC,GAAG;YAC9B,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC;QACF,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"configureMcp.usecase.js","sourceRoot":"","sources":["../../../src/usecases/cli/configureMcp.usecase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAcnG,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;IAAG,CAAC;IAE/D,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACnC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACvD,IAAI,QAAiC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACxE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO;YACpC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;YAC7B,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;QAEzD,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YACxC,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,YAAY,CACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,MAAM,CAChC,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,iBAAiB,CAAC,GAAG;YAC9B,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC;QACF,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC;gBAC5D,OAAO,mBAAmB,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewflow",
3
- "version": "3.3.1",
3
+ "version": "3.4.0",
4
4
  "description": "AI-powered code review automation for GitLab/GitHub using Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/main/server.js",