@motivation-labs/crosscheck 0.11.1-beta.0 → 0.12.0-beta.13
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/__tests__/onboard-preservation.test.js +131 -2
- package/dist/__tests__/onboard-preservation.test.js.map +1 -1
- package/dist/__tests__/runner.test.js +40 -1
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/commands/onboard.d.ts +2 -0
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +135 -24
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +15 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +13 -2
- package/dist/commands/watch.js.map +1 -1
- package/dist/lib/board.d.ts +2 -1
- package/dist/lib/board.d.ts.map +1 -1
- package/dist/lib/board.js +76 -20
- package/dist/lib/board.js.map +1 -1
- package/dist/lib/runner.d.ts +4 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +35 -7
- package/dist/lib/runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@ const BASE_DECISIONS = {
|
|
|
11
11
|
selectedRepos: ['alice/myapp'],
|
|
12
12
|
selectedOrgs: [],
|
|
13
13
|
vendorConfig: { mode: 'cross-vendor', claudeEnabled: true, codexEnabled: true },
|
|
14
|
+
authorVendor: 'claude',
|
|
14
15
|
qualityTier: 'balanced',
|
|
15
16
|
pipelinePreset: 'review-only',
|
|
16
17
|
tunnelBackend: 'localhost.run',
|
|
@@ -81,6 +82,65 @@ describe('applyOnboardConfig — first run', () => {
|
|
|
81
82
|
expect(raw.steps[0].instructions.length).toBeGreaterThan(10);
|
|
82
83
|
});
|
|
83
84
|
});
|
|
85
|
+
describe('applyOnboardConfig — authorVendor routing', () => {
|
|
86
|
+
it('authorVendor: claude writes author_routes[login] = claude', () => {
|
|
87
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, authorVendor: 'claude' }, workflowDir);
|
|
88
|
+
const routing = readConfig().routing;
|
|
89
|
+
expect(routing.author_routes.alice).toBe('claude');
|
|
90
|
+
});
|
|
91
|
+
it('authorVendor: codex writes author_routes[login] = codex', () => {
|
|
92
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, authorVendor: 'codex' }, workflowDir);
|
|
93
|
+
const routing = readConfig().routing;
|
|
94
|
+
expect(routing.author_routes.alice).toBe('codex');
|
|
95
|
+
});
|
|
96
|
+
it('authorVendor: both removes login entry from author_routes', () => {
|
|
97
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, authorVendor: 'both' }, workflowDir);
|
|
98
|
+
const routing = readConfig().routing;
|
|
99
|
+
expect(routing.author_routes).toBeUndefined();
|
|
100
|
+
});
|
|
101
|
+
it('authorVendor: both preserves other entries while removing login entry', () => {
|
|
102
|
+
writeFileSync(configPath, yaml.dump({
|
|
103
|
+
deployment: 'personal',
|
|
104
|
+
routing: { author_routes: { alice: 'claude', 'bot-user': 'codex' }, fallback_reviewer: 'auto' },
|
|
105
|
+
}));
|
|
106
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, authorVendor: 'both' }, workflowDir);
|
|
107
|
+
const routing = readConfig().routing;
|
|
108
|
+
expect(routing.author_routes).toEqual({ 'bot-user': 'codex' });
|
|
109
|
+
});
|
|
110
|
+
it('--reconfigure: overwrites existing author_routes[login] with new choice', () => {
|
|
111
|
+
writeFileSync(configPath, yaml.dump({
|
|
112
|
+
deployment: 'personal',
|
|
113
|
+
routing: { author_routes: { alice: 'claude' }, fallback_reviewer: 'auto' },
|
|
114
|
+
}));
|
|
115
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, authorVendor: 'codex' }, workflowDir);
|
|
116
|
+
const routing = readConfig().routing;
|
|
117
|
+
expect(routing.author_routes.alice).toBe('codex');
|
|
118
|
+
});
|
|
119
|
+
it('team mode: skips author_routes regardless of authorVendor', () => {
|
|
120
|
+
applyOnboardConfig(configPath, {
|
|
121
|
+
...BASE_DECISIONS,
|
|
122
|
+
deployment: 'team',
|
|
123
|
+
login: 'alice',
|
|
124
|
+
authorVendor: 'codex',
|
|
125
|
+
}, workflowDir);
|
|
126
|
+
const routing = readConfig().routing;
|
|
127
|
+
expect(routing.author_routes).toBeUndefined();
|
|
128
|
+
});
|
|
129
|
+
it('single-vendor mode: preserves existing author_routes (step skipped, authorVendor defaults to both)', () => {
|
|
130
|
+
writeFileSync(configPath, yaml.dump({
|
|
131
|
+
deployment: 'personal',
|
|
132
|
+
routing: { author_routes: { alice: 'claude' }, fallback_reviewer: 'auto' },
|
|
133
|
+
}));
|
|
134
|
+
applyOnboardConfig(configPath, {
|
|
135
|
+
...BASE_DECISIONS,
|
|
136
|
+
vendorConfig: { mode: 'single-vendor', claudeEnabled: true, codexEnabled: false },
|
|
137
|
+
authorVendor: 'both', // default when step is skipped
|
|
138
|
+
}, workflowDir);
|
|
139
|
+
const routing = readConfig().routing;
|
|
140
|
+
// author_routes must be untouched — single-vendor step is not applicable
|
|
141
|
+
expect(routing.author_routes).toEqual({ alice: 'claude' });
|
|
142
|
+
});
|
|
143
|
+
});
|
|
84
144
|
describe('applyOnboardConfig — re-run preservation', () => {
|
|
85
145
|
it('preserves quality.focus and quality.custom_prompt', () => {
|
|
86
146
|
// Seed config with custom quality settings
|
|
@@ -124,15 +184,16 @@ describe('applyOnboardConfig — re-run preservation', () => {
|
|
|
124
184
|
expect(routing.allowed_authors).toEqual(['alice', 'my-bot']); // custom list preserved
|
|
125
185
|
expect(routing.fallback_reviewer).toBe('claude'); // custom value preserved
|
|
126
186
|
});
|
|
127
|
-
it('preserves
|
|
187
|
+
it('preserves other users in author_routes; updates only login entry', () => {
|
|
128
188
|
writeFileSync(configPath, yaml.dump({
|
|
129
189
|
deployment: 'personal',
|
|
130
190
|
routing: {
|
|
131
191
|
allowed_authors: ['alice'],
|
|
132
|
-
author_routes: { alice: '
|
|
192
|
+
author_routes: { alice: 'codex', 'my-agent': 'codex' },
|
|
133
193
|
fallback_reviewer: 'auto',
|
|
134
194
|
},
|
|
135
195
|
}));
|
|
196
|
+
// BASE_DECISIONS has authorVendor: 'claude' — alice's entry should be updated to 'claude'
|
|
136
197
|
applyOnboardConfig(configPath, BASE_DECISIONS, workflowDir);
|
|
137
198
|
const cfg = readConfig();
|
|
138
199
|
const routing = cfg.routing;
|
|
@@ -308,4 +369,72 @@ describe('detectCurrentPreset', () => {
|
|
|
308
369
|
expect(detectCurrentPreset(workflowDir)).toBe('review-only');
|
|
309
370
|
});
|
|
310
371
|
});
|
|
372
|
+
describe('applyOnboardConfig — max_rounds in workflow.yml', () => {
|
|
373
|
+
it('writes max_rounds: 1 on fix and recheck steps by default', () => {
|
|
374
|
+
const dir = join(workflowDir, 'maxrounds-default');
|
|
375
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, pipelinePreset: 'review-fix-recheck' }, dir);
|
|
376
|
+
const raw = yaml.load(readFileSync(join(dir, 'workflow.yml'), 'utf8'));
|
|
377
|
+
const fixStep = raw.steps.find(s => s.type === 'fix');
|
|
378
|
+
const recheckStep = raw.steps.find(s => s.type === 'recheck');
|
|
379
|
+
expect(fixStep?.max_rounds).toBe(1);
|
|
380
|
+
expect(recheckStep?.max_rounds).toBe(1);
|
|
381
|
+
});
|
|
382
|
+
it('writes custom max_rounds on fix and recheck steps', () => {
|
|
383
|
+
const dir = join(workflowDir, 'maxrounds-custom');
|
|
384
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, pipelinePreset: 'review-fix-recheck', maxRounds: 3 }, dir);
|
|
385
|
+
const raw = yaml.load(readFileSync(join(dir, 'workflow.yml'), 'utf8'));
|
|
386
|
+
const fixStep = raw.steps.find(s => s.type === 'fix');
|
|
387
|
+
const recheckStep = raw.steps.find(s => s.type === 'recheck');
|
|
388
|
+
expect(fixStep?.max_rounds).toBe(3);
|
|
389
|
+
expect(recheckStep?.max_rounds).toBe(3);
|
|
390
|
+
});
|
|
391
|
+
it('max_rounds does not apply to review-only preset (fix step absent)', () => {
|
|
392
|
+
const dir = join(workflowDir, 'maxrounds-review-only');
|
|
393
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, pipelinePreset: 'review-only', maxRounds: 3 }, dir);
|
|
394
|
+
const raw = yaml.load(readFileSync(join(dir, 'workflow.yml'), 'utf8'));
|
|
395
|
+
expect(raw.steps.length).toBe(1);
|
|
396
|
+
expect(raw.steps[0].type).toBe('review');
|
|
397
|
+
});
|
|
398
|
+
it('patches max_rounds in-place when preset unchanged (preserves custom instructions)', () => {
|
|
399
|
+
const dir = join(workflowDir, 'maxrounds-patch');
|
|
400
|
+
mkdirSync(dir, { recursive: true });
|
|
401
|
+
// Seed a workflow with custom instructions
|
|
402
|
+
writeFileSync(join(dir, 'workflow.yml'), yaml.dump({
|
|
403
|
+
on: ['opened', 'synchronize'],
|
|
404
|
+
steps: [
|
|
405
|
+
{ name: 'review', type: 'review', reviewer: 'auto', max_rounds: 1, instructions: 'my custom review instructions' },
|
|
406
|
+
{ name: 'fix', type: 'fix', reviewer: 'origin', when: "review.verdict != 'APPROVE'", max_rounds: 1, instructions: 'my custom fix instructions' },
|
|
407
|
+
{ name: 'recheck', type: 'recheck', reviewer: 'auto', when: 'fix.applied_count > 0', max_rounds: 1, instructions: 'my custom recheck instructions' },
|
|
408
|
+
],
|
|
409
|
+
}));
|
|
410
|
+
// Re-run onboard with max_rounds: 2 — must patch in-place, not regenerate
|
|
411
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, pipelinePreset: 'review-fix-recheck', maxRounds: 2 }, dir);
|
|
412
|
+
const raw = yaml.load(readFileSync(join(dir, 'workflow.yml'), 'utf8'));
|
|
413
|
+
// max_rounds updated on fix and recheck
|
|
414
|
+
expect(raw.steps.find(s => s.type === 'fix')?.max_rounds).toBe(2);
|
|
415
|
+
expect(raw.steps.find(s => s.type === 'recheck')?.max_rounds).toBe(2);
|
|
416
|
+
// custom instructions preserved
|
|
417
|
+
expect(raw.steps.find(s => s.type === 'review')?.instructions).toBe('my custom review instructions');
|
|
418
|
+
expect(raw.steps.find(s => s.type === 'fix')?.instructions).toBe('my custom fix instructions');
|
|
419
|
+
expect(raw.steps.find(s => s.type === 'recheck')?.instructions).toBe('my custom recheck instructions');
|
|
420
|
+
});
|
|
421
|
+
it('patches max_rounds when decreasing back to 1 (preserves custom instructions)', () => {
|
|
422
|
+
const dir = join(workflowDir, 'maxrounds-downgrade');
|
|
423
|
+
mkdirSync(dir, { recursive: true });
|
|
424
|
+
writeFileSync(join(dir, 'workflow.yml'), yaml.dump({
|
|
425
|
+
on: ['opened', 'synchronize'],
|
|
426
|
+
steps: [
|
|
427
|
+
{ name: 'review', type: 'review', reviewer: 'auto', max_rounds: 1, instructions: 'custom review' },
|
|
428
|
+
{ name: 'fix', type: 'fix', reviewer: 'origin', when: "review.verdict != 'APPROVE'", max_rounds: 3, instructions: 'custom fix' },
|
|
429
|
+
{ name: 'recheck', type: 'recheck', reviewer: 'auto', when: 'fix.applied_count > 0', max_rounds: 3, instructions: 'custom recheck' },
|
|
430
|
+
],
|
|
431
|
+
}));
|
|
432
|
+
applyOnboardConfig(configPath, { ...BASE_DECISIONS, pipelinePreset: 'review-fix-recheck', maxRounds: 1 }, dir);
|
|
433
|
+
const raw = yaml.load(readFileSync(join(dir, 'workflow.yml'), 'utf8'));
|
|
434
|
+
expect(raw.steps.find(s => s.type === 'fix')?.max_rounds).toBe(1);
|
|
435
|
+
expect(raw.steps.find(s => s.type === 'recheck')?.max_rounds).toBe(1);
|
|
436
|
+
expect(raw.steps.find(s => s.type === 'fix')?.instructions).toBe('custom fix');
|
|
437
|
+
expect(raw.steps.find(s => s.type === 'recheck')?.instructions).toBe('custom recheck');
|
|
438
|
+
});
|
|
439
|
+
});
|
|
311
440
|
//# sourceMappingURL=onboard-preservation.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard-preservation.test.js","sourceRoot":"","sources":["../../src/__tests__/onboard-preservation.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onboard-preservation.test.js","sourceRoot":"","sources":["../../src/__tests__/onboard-preservation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { isRetryableFixError } from '../lib/runner.js';
|
|
2
|
+
import { isRetryableFixError, getEffectiveStepType, exceedsMaxRounds } from '../lib/runner.js';
|
|
3
3
|
describe('isRetryableFixError', () => {
|
|
4
4
|
it('returns false for auth failure errors', () => {
|
|
5
5
|
expect(isRetryableFixError(new Error('claude auth failure during fix step — run: claude auth login'))).toBe(false);
|
|
@@ -22,4 +22,43 @@ describe('isRetryableFixError', () => {
|
|
|
22
22
|
expect(isRetryableFixError(null)).toBe(true);
|
|
23
23
|
});
|
|
24
24
|
});
|
|
25
|
+
describe('exceedsMaxRounds', () => {
|
|
26
|
+
it('returns false when round is undefined (no tracking)', () => {
|
|
27
|
+
expect(exceedsMaxRounds('fix', 'fix', 1, undefined)).toBe(false);
|
|
28
|
+
expect(exceedsMaxRounds('recheck', 'recheck', 1, undefined)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
it('skips fix step when round exceeds max_rounds', () => {
|
|
31
|
+
expect(exceedsMaxRounds('fix', 'fix', 1, 2)).toBe(true);
|
|
32
|
+
expect(exceedsMaxRounds('fix', 'fix', 1, 1)).toBe(false);
|
|
33
|
+
expect(exceedsMaxRounds('fix', 'fix', 2, 2)).toBe(false);
|
|
34
|
+
expect(exceedsMaxRounds('fix', 'fix', 2, 3)).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
it('skips recheck step (from workflow) when round exceeds max_rounds', () => {
|
|
37
|
+
expect(exceedsMaxRounds('recheck', 'recheck', 1, 2)).toBe(true);
|
|
38
|
+
expect(exceedsMaxRounds('recheck', 'recheck', 1, 1)).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
it('never skips a review step coerced to recheck (always runs assessment)', () => {
|
|
41
|
+
expect(exceedsMaxRounds('recheck', 'review', 1, 2)).toBe(false);
|
|
42
|
+
expect(exceedsMaxRounds('recheck', 'review', 1, 99)).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
it('never skips a plain review step', () => {
|
|
45
|
+
expect(exceedsMaxRounds('review', 'review', 1, 2)).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('getEffectiveStepType', () => {
|
|
49
|
+
it('coerces review → recheck when isRecheckRun is true', () => {
|
|
50
|
+
expect(getEffectiveStepType('review', true)).toBe('recheck');
|
|
51
|
+
});
|
|
52
|
+
it('preserves review when isRecheckRun is false', () => {
|
|
53
|
+
expect(getEffectiveStepType('review', false)).toBe('review');
|
|
54
|
+
});
|
|
55
|
+
it('preserves fix regardless of isRecheckRun', () => {
|
|
56
|
+
expect(getEffectiveStepType('fix', true)).toBe('fix');
|
|
57
|
+
expect(getEffectiveStepType('fix', false)).toBe('fix');
|
|
58
|
+
});
|
|
59
|
+
it('preserves recheck regardless of isRecheckRun', () => {
|
|
60
|
+
expect(getEffectiveStepType('recheck', true)).toBe('recheck');
|
|
61
|
+
expect(getEffectiveStepType('recheck', false)).toBe('recheck');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
25
64
|
//# sourceMappingURL=runner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,8 +54,10 @@ export interface OnboardDecisions {
|
|
|
54
54
|
selectedRepos: string[];
|
|
55
55
|
selectedOrgs: string[];
|
|
56
56
|
vendorConfig: VendorModeConfig;
|
|
57
|
+
authorVendor: 'claude' | 'codex' | 'both';
|
|
57
58
|
qualityTier: QualityTier;
|
|
58
59
|
pipelinePreset: WorkflowPreset;
|
|
60
|
+
maxRounds?: number;
|
|
59
61
|
tunnelBackend: 'localhost.run' | 'smee';
|
|
60
62
|
smeeChannel: string;
|
|
61
63
|
cloneProtocol: 'ssh' | 'https';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAQD,KAAK,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAAA;AAEzE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,cAAc,GAAG,eAAe,CAAA;IACtC,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAID,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBT,CAAA;AAEV,KAAK,WAAW,GAAG,MAAM,OAAO,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAQD,KAAK,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAAA;AAEzE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,cAAc,GAAG,eAAe,CAAA;IACtC,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAID,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBT,CAAA;AAEV,KAAK,WAAW,GAAG,MAAM,OAAO,aAAa,CAAA;AAkM7C,wBAAgB,mBAAmB,CAAC,WAAW,GAAE,MAAuC,GAAG,cAAc,CAexG;AAsHD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,GAAG,MAAM,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,EAAE,gBAAgB,CAAA;IAC9B,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACzC,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,cAAc,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,eAAe,GAAG,MAAM,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,KAAK,GAAG,OAAO,CAAA;CAC/B;AA+CD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,SAAiC,GAC3C,IAAI,CAuKN;AAED,wBAAsB,UAAU,CAAC,IAAI,GAAE,WAAgB,iBA4VtD"}
|
package/dist/commands/onboard.js
CHANGED
|
@@ -147,6 +147,26 @@ async function promptVendorMode(claudeOk, codexOk, existingMode, existingClaudeE
|
|
|
147
147
|
codexEnabled: vendorIdx === 1,
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
|
+
async function promptAuthorVendor(login, existingAuthorRoutes, opts) {
|
|
151
|
+
const existing = existingAuthorRoutes?.[login];
|
|
152
|
+
const current = existing === 'codex' ? 'codex' : existing === 'claude' ? 'claude' : 'both';
|
|
153
|
+
if (opts.yes) {
|
|
154
|
+
console.log(` Primary author: ${chalk.cyan(current)}`);
|
|
155
|
+
return current;
|
|
156
|
+
}
|
|
157
|
+
const items = [
|
|
158
|
+
{ label: 'claude', description: 'my PRs without explicit attribution → Codex reviews them' },
|
|
159
|
+
{ label: 'codex', description: 'my PRs without explicit attribution → Claude reviews them' },
|
|
160
|
+
{ label: 'both', description: 'my PRs without explicit attribution → use fallback_reviewer' },
|
|
161
|
+
];
|
|
162
|
+
const defaultIdx = current === 'codex' ? 1 : current === 'claude' ? 0 : 2;
|
|
163
|
+
const idx = await promptSinglePicker(items, {
|
|
164
|
+
title: 'Which AI do you primarily use to write code?',
|
|
165
|
+
defaultIndex: defaultIdx,
|
|
166
|
+
});
|
|
167
|
+
console.log();
|
|
168
|
+
return idx === 1 ? 'codex' : idx === 2 ? 'both' : 'claude';
|
|
169
|
+
}
|
|
150
170
|
async function promptQualityTier(claudeEnabled, codexEnabled, currentTier, opts) {
|
|
151
171
|
if (opts.yes) {
|
|
152
172
|
const tier = (currentTier ?? 'balanced');
|
|
@@ -196,6 +216,25 @@ export function detectCurrentPreset(workflowDir = join(homedir(), '.crosscheck')
|
|
|
196
216
|
}
|
|
197
217
|
return 'review-only';
|
|
198
218
|
}
|
|
219
|
+
async function promptMaxRounds(currentMaxRounds, opts) {
|
|
220
|
+
if (opts.yes) {
|
|
221
|
+
const rounds = currentMaxRounds ?? 1;
|
|
222
|
+
console.log(` Max rounds: ${chalk.cyan(String(rounds))}`);
|
|
223
|
+
return rounds;
|
|
224
|
+
}
|
|
225
|
+
const items = [
|
|
226
|
+
{ label: '1 round', description: 'one fix pass, then re-check once' },
|
|
227
|
+
{ label: '2 rounds', description: 'up to two fix → re-check cycles' },
|
|
228
|
+
{ label: '3 rounds', description: 'up to three fix → re-check cycles (maximum)' },
|
|
229
|
+
];
|
|
230
|
+
const defaultIdx = Math.max(0, Math.min(2, (currentMaxRounds ?? 1) - 1));
|
|
231
|
+
const idx = await promptSinglePicker(items, {
|
|
232
|
+
title: 'How many fix → re-check rounds?',
|
|
233
|
+
defaultIndex: defaultIdx,
|
|
234
|
+
});
|
|
235
|
+
console.log();
|
|
236
|
+
return idx + 1;
|
|
237
|
+
}
|
|
199
238
|
async function promptWorkflowPipeline(opts) {
|
|
200
239
|
const currentPreset = detectCurrentPreset();
|
|
201
240
|
if (opts.yes) {
|
|
@@ -273,7 +312,7 @@ async function promptCloneProtocol(currentProtocol, opts) {
|
|
|
273
312
|
// Build the workflow YAML for the given preset, with inline per-step instructions.
|
|
274
313
|
// Written to ~/.crosscheck/workflow.yml on first onboard. On re-runs, regenerated
|
|
275
314
|
// only when the step-type sequence drifts from the selected preset.
|
|
276
|
-
function buildWorkflowYaml(preset) {
|
|
315
|
+
function buildWorkflowYaml(preset, maxRounds = 1) {
|
|
277
316
|
const reviewStep = {
|
|
278
317
|
name: 'review',
|
|
279
318
|
type: 'review',
|
|
@@ -286,7 +325,7 @@ function buildWorkflowYaml(preset) {
|
|
|
286
325
|
type: 'fix',
|
|
287
326
|
reviewer: 'origin',
|
|
288
327
|
when: "review.verdict != 'APPROVE'",
|
|
289
|
-
max_rounds:
|
|
328
|
+
max_rounds: maxRounds,
|
|
290
329
|
instructions: DEFAULT_FIX_INSTRUCTIONS,
|
|
291
330
|
};
|
|
292
331
|
const recheckStep = {
|
|
@@ -294,7 +333,7 @@ function buildWorkflowYaml(preset) {
|
|
|
294
333
|
type: 'recheck',
|
|
295
334
|
reviewer: 'auto',
|
|
296
335
|
when: "fix.applied_count > 0",
|
|
297
|
-
max_rounds:
|
|
336
|
+
max_rounds: maxRounds,
|
|
298
337
|
instructions: DEFAULT_RECHECK_INSTRUCTIONS,
|
|
299
338
|
};
|
|
300
339
|
let steps;
|
|
@@ -315,7 +354,7 @@ function buildWorkflowYaml(preset) {
|
|
|
315
354
|
// Writes all onboard decisions to configPath and manages the global workflow.yml.
|
|
316
355
|
// On re-runs, only the fields onboard owns are updated; everything else is preserved.
|
|
317
356
|
export function applyOnboardConfig(configPath, decisions, workflowDir = join(homedir(), '.crosscheck')) {
|
|
318
|
-
const { deployment, login, selectedRepos, selectedOrgs, vendorConfig, qualityTier, pipelinePreset, tunnelBackend, smeeChannel, cloneProtocol } = decisions;
|
|
357
|
+
const { deployment, login, selectedRepos, selectedOrgs, vendorConfig, qualityTier, pipelinePreset, maxRounds, tunnelBackend, smeeChannel, cloneProtocol } = decisions;
|
|
319
358
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
320
359
|
// Load existing config (preserves all custom fields) or start fresh
|
|
321
360
|
const raw = existsSync(configPath)
|
|
@@ -352,11 +391,22 @@ export function applyOnboardConfig(configPath, decisions, workflowDir = join(hom
|
|
|
352
391
|
const currentAuthors = Array.isArray(routing.allowed_authors) ? routing.allowed_authors : [];
|
|
353
392
|
if (currentAuthors.length === 0)
|
|
354
393
|
routing.allowed_authors = [login];
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
394
|
+
if (decisions.vendorConfig.mode === 'cross-vendor') {
|
|
395
|
+
const currentRoutes = routing.author_routes != null && typeof routing.author_routes === 'object'
|
|
396
|
+
? { ...routing.author_routes }
|
|
397
|
+
: {};
|
|
398
|
+
if (decisions.authorVendor === 'both') {
|
|
399
|
+
delete currentRoutes[login];
|
|
400
|
+
if (Object.keys(currentRoutes).length > 0) {
|
|
401
|
+
routing.author_routes = currentRoutes;
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
delete routing.author_routes;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
routing.author_routes = { ...currentRoutes, [login]: decisions.authorVendor };
|
|
409
|
+
}
|
|
360
410
|
}
|
|
361
411
|
}
|
|
362
412
|
if (routing.fallback_reviewer === undefined)
|
|
@@ -421,8 +471,9 @@ export function applyOnboardConfig(configPath, decisions, workflowDir = join(hom
|
|
|
421
471
|
'review-fix-recheck': ['review', 'fix', 'recheck'],
|
|
422
472
|
};
|
|
423
473
|
const requiredSet = new Set(presetStepTypes[pipelinePreset]);
|
|
474
|
+
const effectiveMaxRounds = maxRounds ?? 1;
|
|
424
475
|
if (!existsSync(globalWorkflowPath)) {
|
|
425
|
-
writeFileSync(globalWorkflowPath, buildWorkflowYaml(pipelinePreset));
|
|
476
|
+
writeFileSync(globalWorkflowPath, buildWorkflowYaml(pipelinePreset, effectiveMaxRounds));
|
|
426
477
|
}
|
|
427
478
|
else {
|
|
428
479
|
try {
|
|
@@ -432,18 +483,38 @@ export function applyOnboardConfig(configPath, decisions, workflowDir = join(hom
|
|
|
432
483
|
// (matches the schema-level transform in workflow.ts). Steps without a
|
|
433
484
|
// type field are filtered out. Set comparison (not sequence) so user-added
|
|
434
485
|
// duplicate steps or reordered steps are treated as equivalent and preserved.
|
|
435
|
-
const
|
|
486
|
+
const existingSteps = existingRaw?.steps ?? [];
|
|
487
|
+
const existingSet = new Set(existingSteps
|
|
436
488
|
.map(s => (s.type === 'address' ? 'fix' : s.type))
|
|
437
489
|
.filter((t) => Boolean(t)));
|
|
438
490
|
const setsMatch = requiredSet.size === existingSet.size && [...requiredSet].every(t => existingSet.has(t));
|
|
491
|
+
// Also regenerate when max_rounds has changed on any fix or recheck step
|
|
492
|
+
const existingMaxRounds = existingSteps
|
|
493
|
+
.filter(s => s.type === 'fix' || s.type === 'recheck')
|
|
494
|
+
.map(s => s.max_rounds ?? 1);
|
|
495
|
+
const maxRoundsDrifted = existingMaxRounds.length > 0
|
|
496
|
+
&& existingMaxRounds.some(r => r !== effectiveMaxRounds);
|
|
439
497
|
if (!setsMatch) {
|
|
440
|
-
|
|
498
|
+
// Preset changed — regenerate from template (step types differ)
|
|
499
|
+
writeFileSync(globalWorkflowPath, buildWorkflowYaml(pipelinePreset, effectiveMaxRounds));
|
|
500
|
+
}
|
|
501
|
+
else if (maxRoundsDrifted) {
|
|
502
|
+
// Preset unchanged, only max_rounds changed — patch in-place to preserve
|
|
503
|
+
// any custom instructions or structural edits the user may have made.
|
|
504
|
+
const patchedSteps = existingSteps.map(s => {
|
|
505
|
+
if (s.type === 'fix' || s.type === 'recheck') {
|
|
506
|
+
return { ...s, max_rounds: effectiveMaxRounds };
|
|
507
|
+
}
|
|
508
|
+
return s;
|
|
509
|
+
});
|
|
510
|
+
const patchedRaw = { ...existingRaw, steps: patchedSteps };
|
|
511
|
+
writeFileSync(globalWorkflowPath, yaml.dump(patchedRaw, { lineWidth: -1, noRefs: true }));
|
|
441
512
|
}
|
|
442
|
-
//
|
|
513
|
+
// No drift — preserve existing file (may have user-edited instructions or structural customizations)
|
|
443
514
|
}
|
|
444
515
|
catch {
|
|
445
516
|
// Malformed workflow file — regenerate
|
|
446
|
-
writeFileSync(globalWorkflowPath, buildWorkflowYaml(pipelinePreset));
|
|
517
|
+
writeFileSync(globalWorkflowPath, buildWorkflowYaml(pipelinePreset, effectiveMaxRounds));
|
|
447
518
|
}
|
|
448
519
|
}
|
|
449
520
|
}
|
|
@@ -627,16 +698,45 @@ export async function runOnboard(opts = {}) {
|
|
|
627
698
|
console.log(chalk.bold('Step 4 — review mode'));
|
|
628
699
|
const vendorConfig = await promptVendorMode(env.claudeOk, env.codexOk, existingConfig?.mode, existingConfig?.vendors?.claude?.enabled ?? true, existingConfig?.vendors?.codex?.enabled ?? true, opts);
|
|
629
700
|
console.log();
|
|
630
|
-
// ── Step 5:
|
|
631
|
-
console.log(chalk.bold('Step 5 —
|
|
701
|
+
// ── Step 5: Primary author (cross-vendor + personal only) ───────────────────
|
|
702
|
+
console.log(chalk.bold('Step 5 — primary author'));
|
|
703
|
+
let authorVendor = 'both';
|
|
704
|
+
if (vendorConfig.mode === 'cross-vendor' && deployment === 'personal') {
|
|
705
|
+
const existingRoutes = existingConfig?.routing?.author_routes ?? null;
|
|
706
|
+
authorVendor = await promptAuthorVendor(login, existingRoutes, opts);
|
|
707
|
+
}
|
|
708
|
+
else {
|
|
709
|
+
const reason = vendorConfig.mode === 'single-vendor' ? 'single-vendor mode' : 'team mode';
|
|
710
|
+
console.log(chalk.dim(` Skipped — not applicable in ${reason}.`));
|
|
711
|
+
console.log();
|
|
712
|
+
}
|
|
713
|
+
// ── Step 6: Review quality ────────────────────────────────────────────────
|
|
714
|
+
console.log(chalk.bold('Step 6 — review quality'));
|
|
632
715
|
const qualityTier = await promptQualityTier(vendorConfig.claudeEnabled, vendorConfig.codexEnabled, existingConfig?.quality?.tier, opts);
|
|
633
716
|
console.log();
|
|
634
|
-
// ── Step
|
|
635
|
-
console.log(chalk.bold('Step
|
|
717
|
+
// ── Step 7: Workflow pipeline ──────────────────────────────────────────────
|
|
718
|
+
console.log(chalk.bold('Step 7 — workflow pipeline'));
|
|
636
719
|
const pipelinePreset = await promptWorkflowPipeline(opts);
|
|
637
720
|
console.log();
|
|
638
|
-
// ── Step 7:
|
|
639
|
-
|
|
721
|
+
// ── Step 7.5: Max rounds (review-fix-recheck only) ────────────────────────
|
|
722
|
+
let maxRounds;
|
|
723
|
+
if (pipelinePreset === 'review-fix-recheck') {
|
|
724
|
+
console.log(chalk.bold('Step 7.5 — fix → re-check rounds'));
|
|
725
|
+
const globalWorkflowPath = join(homedir(), '.crosscheck', 'workflow.yml');
|
|
726
|
+
let currentMaxRounds;
|
|
727
|
+
if (existsSync(globalWorkflowPath)) {
|
|
728
|
+
try {
|
|
729
|
+
const raw = yaml.load(readFileSync(globalWorkflowPath, 'utf8'));
|
|
730
|
+
const fixOrRecheckStep = (raw?.steps ?? []).find(s => s.type === 'fix' || s.type === 'recheck');
|
|
731
|
+
currentMaxRounds = fixOrRecheckStep?.max_rounds;
|
|
732
|
+
}
|
|
733
|
+
catch { /* malformed — use default */ }
|
|
734
|
+
}
|
|
735
|
+
maxRounds = await promptMaxRounds(currentMaxRounds, opts);
|
|
736
|
+
console.log();
|
|
737
|
+
}
|
|
738
|
+
// ── Step 8: Connection type ────────────────────────────────────────────────
|
|
739
|
+
console.log(chalk.bold('Step 8 — connection type'));
|
|
640
740
|
const currentTunnel = existingConfig?.tunnel?.backend;
|
|
641
741
|
let tunnelBackend = await promptConnectionType(currentTunnel, opts);
|
|
642
742
|
let smeeChannel = existingConfig?.tunnel?.smee_channel ?? '';
|
|
@@ -662,11 +762,11 @@ export async function runOnboard(opts = {}) {
|
|
|
662
762
|
}
|
|
663
763
|
}
|
|
664
764
|
console.log();
|
|
665
|
-
// ── Step
|
|
666
|
-
console.log(chalk.bold('Step
|
|
765
|
+
// ── Step 9: Clone protocol ─────────────────────────────────────────────────
|
|
766
|
+
console.log(chalk.bold('Step 9 — clone protocol'));
|
|
667
767
|
const cloneProtocol = await promptCloneProtocol(existingConfig?.clone_protocol, opts);
|
|
668
|
-
// ── Step
|
|
669
|
-
console.log(chalk.bold('Step
|
|
768
|
+
// ── Step 10: Confirm and write ─────────────────────────────────────────────
|
|
769
|
+
console.log(chalk.bold('Step 10 — review and write config'));
|
|
670
770
|
console.log();
|
|
671
771
|
console.log(` deployment ${chalk.cyan(deployment)}`);
|
|
672
772
|
console.log(` connection ${chalk.cyan(tunnelBackend)}${tunnelBackend === 'smee' && smeeChannel ? chalk.dim(` (${smeeChannel})`) : ''}`);
|
|
@@ -676,8 +776,17 @@ export async function runOnboard(opts = {}) {
|
|
|
676
776
|
const activeVendor = vendorConfig.claudeEnabled ? 'claude' : 'codex';
|
|
677
777
|
console.log(` vendor ${chalk.cyan(activeVendor)}`);
|
|
678
778
|
}
|
|
779
|
+
if (vendorConfig.mode === 'cross-vendor' && deployment === 'personal') {
|
|
780
|
+
const routingLabel = authorVendor === 'both'
|
|
781
|
+
? 'both (attribution detection only)'
|
|
782
|
+
: `${authorVendor} → reviewed by ${authorVendor === 'claude' ? 'codex' : 'claude'}`;
|
|
783
|
+
console.log(` routing ${chalk.cyan(routingLabel)}`);
|
|
784
|
+
}
|
|
679
785
|
console.log(` quality ${chalk.cyan(qualityTier)}${chalk.dim(` — ${QUALITY_TIERS[qualityTier].description.split(' ')[0]}`)}`);
|
|
680
786
|
console.log(` pipeline ${chalk.cyan(pipelinePreset)}`);
|
|
787
|
+
if (pipelinePreset === 'review-fix-recheck') {
|
|
788
|
+
console.log(` max rounds ${chalk.cyan(String(maxRounds ?? 1))}`);
|
|
789
|
+
}
|
|
681
790
|
if (selectedOrgs.length > 0) {
|
|
682
791
|
console.log(` orgs ${selectedOrgs.map(o => chalk.cyan(o)).join(', ')}`);
|
|
683
792
|
}
|
|
@@ -705,8 +814,10 @@ export async function runOnboard(opts = {}) {
|
|
|
705
814
|
selectedRepos,
|
|
706
815
|
selectedOrgs,
|
|
707
816
|
vendorConfig,
|
|
817
|
+
authorVendor,
|
|
708
818
|
qualityTier,
|
|
709
819
|
pipelinePreset,
|
|
820
|
+
maxRounds,
|
|
710
821
|
tunnelBackend,
|
|
711
822
|
smeeChannel,
|
|
712
823
|
cloneProtocol,
|