reviewflow 3.42.1 → 3.43.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 (52) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/dashboard/index.html +2 -2
  3. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.d.ts.map +1 -1
  4. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js +8 -4
  5. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js.map +1 -1
  6. package/dist/modules/setup-wizard/entities/projectConfig/projectConfig.gateway.d.ts +11 -3
  7. package/dist/modules/setup-wizard/entities/projectConfig/projectConfig.gateway.d.ts.map +1 -1
  8. package/dist/modules/setup-wizard/entities/projectContext/projectContext.guard.d.ts +4 -0
  9. package/dist/modules/setup-wizard/entities/projectContext/projectContext.guard.d.ts.map +1 -1
  10. package/dist/modules/setup-wizard/entities/projectContext/projectContext.schema.d.ts +8 -0
  11. package/dist/modules/setup-wizard/entities/projectContext/projectContext.schema.d.ts.map +1 -1
  12. package/dist/modules/setup-wizard/entities/projectContext/projectContext.schema.js +6 -0
  13. package/dist/modules/setup-wizard/entities/projectContext/projectContext.schema.js.map +1 -1
  14. package/dist/modules/setup-wizard/entities/setupState/setupState.guard.d.ts +4 -0
  15. package/dist/modules/setup-wizard/entities/setupState/setupState.guard.d.ts.map +1 -1
  16. package/dist/modules/setup-wizard/entities/setupState/setupState.schema.d.ts +4 -0
  17. package/dist/modules/setup-wizard/entities/setupState/setupState.schema.d.ts.map +1 -1
  18. package/dist/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.d.ts.map +1 -1
  19. package/dist/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.js +10 -2
  20. package/dist/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.js.map +1 -1
  21. package/dist/modules/setup-wizard/services/agentPresetCatalog.d.ts +4 -2
  22. package/dist/modules/setup-wizard/services/agentPresetCatalog.d.ts.map +1 -1
  23. package/dist/modules/setup-wizard/services/agentPresetCatalog.js +28 -29
  24. package/dist/modules/setup-wizard/services/agentPresetCatalog.js.map +1 -1
  25. package/dist/modules/setup-wizard/usecases/steps/configurePipeline.step.d.ts.map +1 -1
  26. package/dist/modules/setup-wizard/usecases/steps/configurePipeline.step.js +5 -4
  27. package/dist/modules/setup-wizard/usecases/steps/configurePipeline.step.js.map +1 -1
  28. package/dist/modules/setup-wizard/usecases/steps/generateFiles.step.d.ts.map +1 -1
  29. package/dist/modules/setup-wizard/usecases/steps/generateFiles.step.js +22 -6
  30. package/dist/modules/setup-wizard/usecases/steps/generateFiles.step.js.map +1 -1
  31. package/dist/tests/stubs/setup-wizard/projectConfig.stub.d.ts.map +1 -1
  32. package/dist/tests/stubs/setup-wizard/projectConfig.stub.js +9 -1
  33. package/dist/tests/stubs/setup-wizard/projectConfig.stub.js.map +1 -1
  34. package/dist/tests/units/dashboard/dashboardLoadingRace.test.d.ts +9 -0
  35. package/dist/tests/units/dashboard/dashboardLoadingRace.test.d.ts.map +1 -0
  36. package/dist/tests/units/dashboard/dashboardLoadingRace.test.js +59 -0
  37. package/dist/tests/units/dashboard/dashboardLoadingRace.test.js.map +1 -0
  38. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js +15 -0
  39. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js.map +1 -1
  40. package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js +29 -12
  41. package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js.map +1 -1
  42. package/dist/tests/units/modules/setup-wizard/services/agentPresetCatalog.test.js +24 -9
  43. package/dist/tests/units/modules/setup-wizard/services/agentPresetCatalog.test.js.map +1 -1
  44. package/package.json +1 -1
  45. package/templates/en/followup-advanced/README.md +51 -0
  46. package/templates/en/followup-advanced/SKILL.md +389 -0
  47. package/templates/en/review-advanced/README.md +71 -0
  48. package/templates/en/review-advanced/SKILL.md +421 -0
  49. package/templates/fr/followup-advanced/README.md +41 -0
  50. package/templates/fr/followup-advanced/SKILL.md +389 -0
  51. package/templates/fr/review-advanced/README.md +62 -0
  52. package/templates/fr/review-advanced/SKILL.md +421 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Regression test for issue #339 — Priority Lanes and Completed Reviews stuck
3
+ * on "Loading..." forever.
4
+ *
5
+ * Structural assertions on src/dashboard/index.html via raw-string + regex,
6
+ * matching the precedent of dashboardLayout.test.ts (no jsdom dependency).
7
+ */
8
+ import { readFileSync } from 'node:fs';
9
+ import { dirname, join } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { beforeAll, describe, expect, it } from 'vitest';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ const PROJECT_ROOT = join(__dirname, '..', '..', '..', '..');
15
+ const INDEX_HTML_PATH = join(PROJECT_ROOT, 'src', 'dashboard', 'index.html');
16
+ function extractFunctionBody(source, functionName) {
17
+ const signatureIndex = source.indexOf(`function ${functionName}(`);
18
+ if (signatureIndex === -1)
19
+ return '';
20
+ const firstBraceIndex = source.indexOf('{', signatureIndex);
21
+ if (firstBraceIndex === -1)
22
+ return '';
23
+ let depth = 1;
24
+ let cursor = firstBraceIndex + 1;
25
+ while (depth > 0 && cursor < source.length) {
26
+ const char = source[cursor];
27
+ if (char === '{')
28
+ depth += 1;
29
+ if (char === '}')
30
+ depth -= 1;
31
+ cursor += 1;
32
+ }
33
+ return source.substring(signatureIndex, cursor);
34
+ }
35
+ describe('Issue #339 — dashboard loading state race', () => {
36
+ let indexHtml;
37
+ beforeAll(() => {
38
+ indexHtml = readFileSync(INDEX_HTML_PATH, 'utf-8');
39
+ });
40
+ it('fetchMrTracking renders after clearing the mrTracking loading flag, not before', () => {
41
+ const functionBody = extractFunctionBody(indexHtml, 'fetchMrTracking');
42
+ expect(functionBody).not.toBe('');
43
+ const clearFlagIndex = functionBody.lastIndexOf("setLoadingFlag('mrTracking', false)");
44
+ const renderCallIndex = functionBody.lastIndexOf('updateMrTrackingUI()');
45
+ expect(clearFlagIndex).toBeGreaterThan(-1);
46
+ expect(renderCallIndex).toBeGreaterThan(-1);
47
+ expect(renderCallIndex).toBeGreaterThan(clearFlagIndex);
48
+ });
49
+ it('fetchReviewFiles renders after clearing the reviewFiles loading flag, not before', () => {
50
+ const functionBody = extractFunctionBody(indexHtml, 'fetchReviewFiles');
51
+ expect(functionBody).not.toBe('');
52
+ const clearFlagIndex = functionBody.indexOf("setLoadingFlag('reviewFiles', false)");
53
+ const renderCallIndex = functionBody.lastIndexOf('updateReviewFilesUI()');
54
+ expect(clearFlagIndex).toBeGreaterThan(-1);
55
+ expect(renderCallIndex).toBeGreaterThan(-1);
56
+ expect(renderCallIndex).toBeGreaterThan(clearFlagIndex);
57
+ });
58
+ });
59
+ //# sourceMappingURL=dashboardLoadingRace.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboardLoadingRace.test.js","sourceRoot":"","sources":["../../../../src/tests/units/dashboard/dashboardLoadingRace.test.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,21 @@ describe('ClaudeSessionCliGateway.dispatch', () => {
58
58
  // which contradicts auto and triggers the disclaimer requirement.
59
59
  expect(calls[0]?.args).not.toContain('--dangerously-skip-permissions');
60
60
  });
61
+ it('extracts the session id when the CLI wraps it in ANSI colour codes despite piped stdout', async () => {
62
+ const { runner } = createRunner([
63
+ {
64
+ stdout: 'backgrounded · b252a492\n claude agents list sessions\n claude attach b252a492 open in this terminal\n claude logs b252a492 show recent output\n claude stop b252a492 stop this session',
65
+ stderr: '',
66
+ exitCode: 0,
67
+ },
68
+ ]);
69
+ const gateway = new ClaudeSessionCliGateway(runner);
70
+ const result = await gateway.dispatch(baseDispatchInput);
71
+ expect(result.status).toBe('dispatched');
72
+ if (result.status === 'dispatched') {
73
+ expect(result.sessionId).toBe('b252a492');
74
+ }
75
+ });
61
76
  it('returns "rate-limited" when stderr matches a rate-limit pattern', async () => {
62
77
  const { runner } = createRunner([
63
78
  { stdout: '', stderr: 'HTTP 429 Too Many Requests', exitCode: 1 },
@@ -1 +1 @@
1
- {"version":3,"file":"claudeSession.cli.gateway.test.js","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claudeSession.cli.gateway.test.js","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,14 @@ import { tmpdir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
5
  import { ProjectConfigFileSystemGateway } from '../../../../../../modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.js';
6
+ const BASE_CONFIG = {
7
+ github: true,
8
+ gitlab: false,
9
+ defaultModel: 'sonnet',
10
+ reviewSkill: 'review-code',
11
+ reviewFollowupSkill: 'review-followup',
12
+ language: 'en',
13
+ };
6
14
  describe('ProjectConfigFileSystemGateway', () => {
7
15
  let rootDir;
8
16
  beforeEach(() => {
@@ -17,31 +25,40 @@ describe('ProjectConfigFileSystemGateway', () => {
17
25
  });
18
26
  it('writes config under .claude/reviews/config.json', () => {
19
27
  const gateway = new ProjectConfigFileSystemGateway();
20
- gateway.write(rootDir, { preset: 'backend', language: 'en', agents: ['architecture'] });
28
+ gateway.write(rootDir, {
29
+ ...BASE_CONFIG,
30
+ agents: [{ name: 'clean-architecture', displayName: 'Clean Archi' }],
31
+ });
21
32
  expect(existsSync(join(rootDir, '.claude', 'reviews', 'config.json'))).toBe(true);
22
33
  });
23
34
  it('reads back what it wrote', () => {
24
35
  const gateway = new ProjectConfigFileSystemGateway();
25
- gateway.write(rootDir, {
26
- preset: 'fullstack',
36
+ const config = {
37
+ ...BASE_CONFIG,
38
+ gitlab: false,
27
39
  language: 'fr',
28
- agents: ['testing', 'security'],
29
- });
40
+ agents: [
41
+ { name: 'testing', displayName: 'Testing' },
42
+ { name: 'security', displayName: 'Security' },
43
+ ],
44
+ };
45
+ gateway.write(rootDir, config);
30
46
  const reloaded = gateway.read(rootDir);
31
- expect(reloaded).toEqual({
32
- preset: 'fullstack',
33
- language: 'fr',
34
- agents: ['testing', 'security'],
35
- });
47
+ expect(reloaded).toEqual(config);
48
+ });
49
+ it('reads back a config with no agents field (falls back to engine defaults)', () => {
50
+ const gateway = new ProjectConfigFileSystemGateway();
51
+ gateway.write(rootDir, BASE_CONFIG);
52
+ expect(gateway.read(rootDir)).toEqual(BASE_CONFIG);
36
53
  });
37
54
  it('creates a .bak file when backup is requested on existing config', () => {
38
55
  const gateway = new ProjectConfigFileSystemGateway();
39
- gateway.write(rootDir, { preset: 'backend', language: 'en', agents: [] });
56
+ gateway.write(rootDir, BASE_CONFIG);
40
57
  const backupPath = gateway.backup(rootDir);
41
58
  expect(backupPath).not.toBeNull();
42
59
  if (backupPath) {
43
60
  expect(existsSync(backupPath)).toBe(true);
44
- expect(readFileSync(backupPath, 'utf-8')).toContain('"preset"');
61
+ expect(readFileSync(backupPath, 'utf-8')).toContain('"reviewSkill"');
45
62
  }
46
63
  });
47
64
  it('returns null from backup when config is absent', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.fileSystem.gateway.test.js","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wFAAwF,CAAC;AAExI,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YACrB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"projectConfig.fileSystem.gateway.test.js","sourceRoot":"","sources":["../../../../../../../src/tests/units/modules/setup-wizard/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wFAAwF,CAAC;AAExI,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,QAAiB;IAC/B,WAAW,EAAE,aAAa;IAC1B,mBAAmB,EAAE,iBAAiB;IACtC,QAAQ,EAAE,IAAa;CACxB,CAAC;AAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YACrB,GAAG,WAAW;YACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;SACrE,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG;YACb,GAAG,WAAW;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAa;YACvB,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE;gBAC3C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE;aAC9C;SACF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,14 +1,19 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { getAgentsForPreset, getFullAgentCatalog, } from '../../../../../modules/setup-wizard/services/agentPresetCatalog.js';
2
+ import { getAgentsForPreset, getFullAgentCatalog, buildCustomAgents, } from '../../../../../modules/setup-wizard/services/agentPresetCatalog.js';
3
+ function names(agents) {
4
+ return agents.map((agent) => agent.name);
5
+ }
3
6
  describe('agentPresetCatalog', () => {
4
- it('returns specific agents for the backend preset', () => {
5
- const agents = getAgentsForPreset('backend');
6
- expect(agents).toContain('architecture');
7
+ it('returns specific agents for the backend preset, including pipeline stages', () => {
8
+ const agents = names(getAgentsForPreset('backend'));
9
+ expect(agents).toContain('clean-architecture');
7
10
  expect(agents).toContain('solid');
8
11
  expect(agents).toContain('testing');
12
+ expect(agents).toContain('threads');
13
+ expect(agents).toContain('report');
9
14
  });
10
15
  it('returns react-best-practices in the frontend preset', () => {
11
- expect(getAgentsForPreset('frontend')).toContain('react-best-practices');
16
+ expect(names(getAgentsForPreset('frontend'))).toContain('react-best-practices');
12
17
  });
13
18
  it('returns an empty list for the basic preset', () => {
14
19
  expect(getAgentsForPreset('basic')).toEqual([]);
@@ -16,16 +21,26 @@ describe('agentPresetCatalog', () => {
16
21
  it('returns an empty list for the custom preset (user picks manually)', () => {
17
22
  expect(getAgentsForPreset('custom')).toEqual([]);
18
23
  });
19
- it('returns a deduplicated agent catalog', () => {
24
+ it('returns a deduplicated agent catalog, excluding pipeline-internal stages', () => {
20
25
  const catalog = getFullAgentCatalog();
21
26
  expect(catalog.length).toBeGreaterThan(0);
22
- expect(new Set(catalog).size).toBe(catalog.length);
27
+ expect(new Set(names(catalog)).size).toBe(catalog.length);
28
+ expect(names(catalog)).not.toContain('threads');
29
+ expect(names(catalog)).not.toContain('report');
23
30
  });
24
31
  it('returns a defensive copy that callers can mutate without affecting the source', () => {
25
32
  const a = getFullAgentCatalog();
26
- a.push('mutation');
33
+ a.push({ name: 'mutation', displayName: 'Mutation' });
27
34
  const b = getFullAgentCatalog();
28
- expect(b).not.toContain('mutation');
35
+ expect(names(b)).not.toContain('mutation');
36
+ });
37
+ it('resolves selected catalog names to agent definitions and appends pipeline stages', () => {
38
+ const agents = buildCustomAgents(['solid', 'security']);
39
+ expect(names(agents)).toEqual(expect.arrayContaining(['solid', 'security', 'threads', 'report']));
40
+ });
41
+ it('ignores unknown agent names and de-duplicates the result', () => {
42
+ const agents = buildCustomAgents(['solid', 'solid', 'not-a-real-agent']);
43
+ expect(names(agents)).toEqual(['solid', 'threads', 'report']);
29
44
  });
30
45
  });
31
46
  //# sourceMappingURL=agentPresetCatalog.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentPresetCatalog.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/setup-wizard/services/agentPresetCatalog.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,uDAAuD,CAAC;AAE/D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"agentPresetCatalog.test.js","sourceRoot":"","sources":["../../../../../../src/tests/units/modules/setup-wizard/services/agentPresetCatalog.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewflow",
3
- "version": "3.42.1",
3
+ "version": "3.43.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",
@@ -0,0 +1,51 @@
1
+ # followup-advanced
2
+
3
+ A follow-up review skill that never trusts a commit message — it always re-reads the actual code before resolving a thread. Matching counterpart to `review-advanced`.
4
+
5
+ ## Overview
6
+
7
+ This template provides:
8
+ - The same context-file protocol as `followup-basic`
9
+ - A hard rule: a commit message is a claim, never evidence — every thread is verified against the current code at its file:line
10
+ - New issues found during follow-up cite a real source, same format as `review-advanced`
11
+
12
+ ## Installation
13
+
14
+ 1. Copy this folder to your project:
15
+ ```bash
16
+ cp -r templates/en/followup-advanced .claude/skills/my-followup
17
+ ```
18
+
19
+ 2. Rename the skill in `SKILL.md` frontmatter
20
+
21
+ 3. Configure it as the follow-up skill in `.claude/reviews/config.json`:
22
+ ```json
23
+ {
24
+ "reviewSkill": "my-review",
25
+ "reviewFollowupSkill": "my-followup"
26
+ }
27
+ ```
28
+
29
+ ## Why It Never Trusts the Commit Message
30
+
31
+ A commit message ("fix: null check added") is an author's claim, not proof the code changed as described. Messages can be wrong, incomplete, or copy-pasted from an unrelated commit. This template mandates re-reading the current code at the exact file:line of every previous thread before marking it resolved. If the code can't be read for a thread, the thread stays open — resolving on assumption is never allowed.
32
+
33
+ ## Matching review-advanced
34
+
35
+ Use this template alongside [review-advanced](../review-advanced/) if you want the initial review and its follow-up to share the same citation requirement for any new issue raised.
36
+
37
+ ## Markers Used
38
+
39
+ | Marker | Purpose |
40
+ |--------|---------|
41
+ | `[PHASE:...]` | Track review phase |
42
+ | `[PROGRESS:...:started/completed]` | Track context, verification, scan, threads, report |
43
+ | `[THREAD_REPLY:...]` / `[THREAD_RESOLVE:...]` | Thread management (or via context-file actions) |
44
+ | `[POST_COMMENT:...]` | Post final report |
45
+ | `[REVIEW_STATS:...]` | Report statistics |
46
+
47
+ ## See Also
48
+
49
+ - [review-advanced](../review-advanced/) — Matching initial review template with the same citation format
50
+ - [followup-basic](../followup-basic/) — Lighter follow-up template without the code-verification rule
51
+ - [Review Skills Guide](../../../docs/guide/review-skills.md)