@motivation-labs/crosscheck 0.14.0-beta.47 → 0.14.0-beta.68

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 (70) hide show
  1. package/dist/__tests__/annotation.test.d.ts +2 -0
  2. package/dist/__tests__/annotation.test.d.ts.map +1 -0
  3. package/dist/__tests__/annotation.test.js +93 -0
  4. package/dist/__tests__/annotation.test.js.map +1 -0
  5. package/dist/__tests__/backtrace.test.js +124 -2
  6. package/dist/__tests__/backtrace.test.js.map +1 -1
  7. package/dist/__tests__/github-client.test.d.ts +2 -0
  8. package/dist/__tests__/github-client.test.d.ts.map +1 -0
  9. package/dist/__tests__/github-client.test.js +22 -0
  10. package/dist/__tests__/github-client.test.js.map +1 -0
  11. package/dist/__tests__/is-fresh-review-comment.test.js +15 -0
  12. package/dist/__tests__/is-fresh-review-comment.test.js.map +1 -1
  13. package/dist/__tests__/post-review-comment.test.d.ts +2 -0
  14. package/dist/__tests__/post-review-comment.test.d.ts.map +1 -0
  15. package/dist/__tests__/post-review-comment.test.js +37 -0
  16. package/dist/__tests__/post-review-comment.test.js.map +1 -0
  17. package/dist/__tests__/pr-status.test.d.ts +2 -0
  18. package/dist/__tests__/pr-status.test.d.ts.map +1 -0
  19. package/dist/__tests__/pr-status.test.js +137 -0
  20. package/dist/__tests__/pr-status.test.js.map +1 -0
  21. package/dist/__tests__/review-comment-body.test.d.ts +2 -0
  22. package/dist/__tests__/review-comment-body.test.d.ts.map +1 -0
  23. package/dist/__tests__/review-comment-body.test.js +53 -0
  24. package/dist/__tests__/review-comment-body.test.js.map +1 -0
  25. package/dist/__tests__/review-models.test.d.ts +2 -0
  26. package/dist/__tests__/review-models.test.d.ts.map +1 -0
  27. package/dist/__tests__/review-models.test.js +39 -0
  28. package/dist/__tests__/review-models.test.js.map +1 -0
  29. package/dist/commands/review.d.ts.map +1 -1
  30. package/dist/commands/review.js +8 -5
  31. package/dist/commands/review.js.map +1 -1
  32. package/dist/github/client.d.ts +34 -1
  33. package/dist/github/client.d.ts.map +1 -1
  34. package/dist/github/client.js +145 -50
  35. package/dist/github/client.js.map +1 -1
  36. package/dist/lib/annotation.d.ts +21 -0
  37. package/dist/lib/annotation.d.ts.map +1 -0
  38. package/dist/lib/annotation.js +65 -0
  39. package/dist/lib/annotation.js.map +1 -0
  40. package/dist/lib/backtrace.d.ts +20 -0
  41. package/dist/lib/backtrace.d.ts.map +1 -1
  42. package/dist/lib/backtrace.js +95 -1
  43. package/dist/lib/backtrace.js.map +1 -1
  44. package/dist/lib/pr-status.d.ts +90 -0
  45. package/dist/lib/pr-status.d.ts.map +1 -0
  46. package/dist/lib/pr-status.js +320 -0
  47. package/dist/lib/pr-status.js.map +1 -0
  48. package/dist/lib/review-models.d.ts +7 -0
  49. package/dist/lib/review-models.d.ts.map +1 -0
  50. package/dist/lib/review-models.js +32 -0
  51. package/dist/lib/review-models.js.map +1 -0
  52. package/dist/lib/runner.d.ts.map +1 -1
  53. package/dist/lib/runner.js +33 -10
  54. package/dist/lib/runner.js.map +1 -1
  55. package/dist/reviewers/claude.d.ts +1 -0
  56. package/dist/reviewers/claude.d.ts.map +1 -1
  57. package/dist/reviewers/claude.js +4 -8
  58. package/dist/reviewers/claude.js.map +1 -1
  59. package/dist/reviewers/codex.d.ts.map +1 -1
  60. package/dist/reviewers/codex.js +5 -13
  61. package/dist/reviewers/codex.js.map +1 -1
  62. package/dist/reviewers/conflict-resolve.d.ts +1 -1
  63. package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
  64. package/dist/reviewers/conflict-resolve.js +3 -2
  65. package/dist/reviewers/conflict-resolve.js.map +1 -1
  66. package/dist/reviewers/fix.d.ts +1 -1
  67. package/dist/reviewers/fix.d.ts.map +1 -1
  68. package/dist/reviewers/fix.js +3 -2
  69. package/dist/reviewers/fix.js.map +1 -1
  70. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=annotation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/annotation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,93 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildAnnotation, buildCommitTrailers, parseAnnotation, } from '../lib/annotation.js';
3
+ describe('crosscheck annotation contract', () => {
4
+ const stepTypes = ['review', 'recheck', 'fix', 'conflict-resolve'];
5
+ for (const type of stepTypes) {
6
+ it(`round-trips ${type} annotations`, () => {
7
+ const annotation = {
8
+ origin: 'claude',
9
+ reviewer: 'codex',
10
+ model: 'gpt-5',
11
+ type,
12
+ round: 2,
13
+ verdict: 'NEEDS_WORK',
14
+ service: 'crosscheck',
15
+ };
16
+ expect(parseAnnotation(buildAnnotation(annotation))).toEqual(annotation);
17
+ });
18
+ }
19
+ it('pins the emitted field order per type for snapshot stability', () => {
20
+ const snapshots = stepTypes.map(type => buildAnnotation({
21
+ origin: 'claude',
22
+ reviewer: 'codex',
23
+ model: 'gpt-5',
24
+ type,
25
+ round: 3,
26
+ verdict: 'BLOCK',
27
+ service: 'crosscheck',
28
+ }));
29
+ expect(snapshots).toEqual([
30
+ '<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=review round=3 verdict=BLOCK service=crosscheck -->',
31
+ '<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=recheck round=3 verdict=BLOCK service=crosscheck -->',
32
+ '<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=fix round=3 verdict=BLOCK service=crosscheck -->',
33
+ '<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=conflict-resolve round=3 verdict=BLOCK service=crosscheck -->',
34
+ ]);
35
+ });
36
+ it('parses legacy annotations with documented defaults', () => {
37
+ expect(parseAnnotation('<!-- crosscheck: origin=claude reviewer=codex verdict=APPROVE type=review -->')).toEqual({
38
+ origin: 'claude',
39
+ reviewer: 'codex',
40
+ model: 'default',
41
+ type: 'review',
42
+ round: 1,
43
+ verdict: 'APPROVE',
44
+ service: 'crosscheck',
45
+ });
46
+ });
47
+ it('keeps verdict-less review annotations parseable for freshness detection', () => {
48
+ expect(parseAnnotation('<!-- crosscheck: origin=claude reviewer=codex type=review -->')).toEqual({
49
+ origin: 'claude',
50
+ reviewer: 'codex',
51
+ model: 'default',
52
+ type: 'review',
53
+ round: 1,
54
+ verdict: 'UNKNOWN',
55
+ service: 'crosscheck',
56
+ });
57
+ });
58
+ it('parses fields order-independently and ignores unknown fields', () => {
59
+ expect(parseAnnotation('<!-- crosscheck: service=custom verdict=BLOCK extra=yes round=4 type=recheck model=claude-opus reviewer=claude origin=codex -->')).toEqual({
60
+ origin: 'codex',
61
+ reviewer: 'claude',
62
+ model: 'claude-opus',
63
+ type: 'recheck',
64
+ round: 4,
65
+ verdict: 'BLOCK',
66
+ service: 'custom',
67
+ });
68
+ });
69
+ it('uses the footer annotation when the body quotes older markers', () => {
70
+ const body = 'Quoted marker `<!-- crosscheck: origin=claude reviewer=codex verdict=BLOCK type=review -->`\n\n'
71
+ + '<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=recheck round=2 verdict=APPROVE service=crosscheck -->';
72
+ expect(parseAnnotation(body)?.type).toBe('recheck');
73
+ });
74
+ it('returns null for bare summary markers', () => {
75
+ expect(parseAnnotation('<!-- crosscheck: fix_applied -->')).toBeNull();
76
+ });
77
+ });
78
+ describe('crosscheck commit trailers', () => {
79
+ it('emits reviewer, model, step, and service trailers', () => {
80
+ expect(buildCommitTrailers({
81
+ reviewer: 'claude',
82
+ model: 'default',
83
+ step: 'fix',
84
+ service: 'crosscheck',
85
+ })).toBe([
86
+ 'Crosscheck-Reviewer: claude',
87
+ 'Crosscheck-Model: default',
88
+ 'Crosscheck-Step: fix',
89
+ 'Crosscheck-Service: crosscheck',
90
+ ].join('\n'));
91
+ });
92
+ });
93
+ //# sourceMappingURL=annotation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation.test.js","sourceRoot":"","sources":["../../src/__tests__/annotation.test.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,23 @@
1
1
  import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { scanUnreviewedPRs, buildScopesFromConfig } from '../lib/backtrace.js';
2
+ import { scanUnreviewedPRs, scanOpenPRStatuses, buildScopesFromConfig } from '../lib/backtrace.js';
3
3
  import { ConfigSchema } from '../config/schema.js';
4
4
  vi.mock('../github/client.js', () => ({
5
5
  listOpenPRs: vi.fn(),
6
6
  listOrgRepos: vi.fn(),
7
7
  listUserRepos: vi.fn(),
8
8
  prHasCrossCheckComment: vi.fn(),
9
+ listPRComments: vi.fn(),
10
+ listPRCommitsDetailed: vi.fn(),
11
+ listCommitStatuses: vi.fn(),
9
12
  }));
10
- const { listOpenPRs, listOrgRepos, listUserRepos, prHasCrossCheckComment } = await import('../github/client.js');
13
+ const { listOpenPRs, listOrgRepos, listUserRepos, prHasCrossCheckComment, listPRComments, listPRCommitsDetailed, listCommitStatuses, } = await import('../github/client.js');
11
14
  const mockListOpenPRs = vi.mocked(listOpenPRs);
12
15
  const mockListOrgRepos = vi.mocked(listOrgRepos);
13
16
  const mockListUserRepos = vi.mocked(listUserRepos);
14
17
  const mockPrHasCrossCheckComment = vi.mocked(prHasCrossCheckComment);
18
+ const mockListPRComments = vi.mocked(listPRComments);
19
+ const mockListPRCommitsDetailed = vi.mocked(listPRCommitsDetailed);
20
+ const mockListCommitStatuses = vi.mocked(listCommitStatuses);
15
21
  const defaultConfig = ConfigSchema.parse({});
16
22
  function makePR(overrides = {}) {
17
23
  return {
@@ -24,6 +30,7 @@ function makePR(overrides = {}) {
24
30
  baseRef: 'main',
25
31
  body: null,
26
32
  createdAt: overrides.createdAt ?? '2025-01-01T00:00:00Z',
33
+ updatedAt: overrides.updatedAt ?? overrides.createdAt ?? '2025-01-01T00:00:00Z',
27
34
  };
28
35
  }
29
36
  beforeEach(() => {
@@ -155,4 +162,119 @@ describe('buildScopesFromConfig', () => {
155
162
  expect(scopes).not.toContainEqual(expect.objectContaining({ owner: 'alice' }));
156
163
  });
157
164
  });
165
+ describe('scanOpenPRStatuses', () => {
166
+ it('records org expansion failures as scope failures', async () => {
167
+ const scopes = [{ org: 'acme' }];
168
+ mockListOrgRepos.mockRejectedValue(new Error('org unavailable'));
169
+ const result = await scanOpenPRStatuses(scopes, defaultConfig, 'token');
170
+ expect(result.statuses).toEqual([]);
171
+ expect(result.failures).toEqual([
172
+ {
173
+ owner: 'acme',
174
+ stage: 'scope',
175
+ message: 'org unavailable',
176
+ },
177
+ ]);
178
+ expect(result.scannedRepos).toBe(0);
179
+ expect(result.scannedPRs).toBe(0);
180
+ expect(mockListOpenPRs).not.toHaveBeenCalled();
181
+ });
182
+ it('records repo listing failures and continues scanning other repos', async () => {
183
+ const scopes = [
184
+ { owner: 'acme', repo: 'broken' },
185
+ { owner: 'acme', repo: 'api' },
186
+ ];
187
+ mockListOpenPRs
188
+ .mockRejectedValueOnce(new Error('repo unavailable'))
189
+ .mockResolvedValueOnce([makePR({ number: 2 })]);
190
+ mockListPRComments.mockResolvedValue([]);
191
+ mockListPRCommitsDetailed.mockResolvedValue([]);
192
+ mockListCommitStatuses.mockResolvedValue([]);
193
+ const result = await scanOpenPRStatuses(scopes, defaultConfig, 'token');
194
+ expect(result.statuses.map(s => s.pr.number)).toEqual([2]);
195
+ expect(result.failures).toEqual([
196
+ {
197
+ owner: 'acme',
198
+ repo: 'broken',
199
+ stage: 'repo',
200
+ message: 'repo unavailable',
201
+ },
202
+ ]);
203
+ expect(result.scannedRepos).toBe(2);
204
+ expect(result.scannedPRs).toBe(1);
205
+ });
206
+ it('returns folded PR statuses for open PRs in scope', async () => {
207
+ const scopes = [{ owner: 'acme', repo: 'api' }];
208
+ mockListOpenPRs.mockResolvedValue([makePR({ number: 1 })]);
209
+ mockListPRComments.mockResolvedValue([
210
+ {
211
+ id: 11,
212
+ body: '### Code Review by ⚡ Codex\n\nok\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=APPROVE type=review -->',
213
+ createdAt: '2026-01-01T01:00:00Z',
214
+ updatedAt: '2026-01-01T01:00:00Z',
215
+ },
216
+ ]);
217
+ mockListPRCommitsDetailed.mockResolvedValue([{ sha: 'abc123', committedAt: '2026-01-01T00:30:00Z' }]);
218
+ mockListCommitStatuses.mockResolvedValue([{ context: 'crosscheck/review', state: 'success', updatedAt: '2026-01-01T01:05:00Z' }]);
219
+ const result = await scanOpenPRStatuses(scopes, defaultConfig, 'token');
220
+ expect(result.statuses).toHaveLength(1);
221
+ expect(result.statuses[0].state).toBe('APPROVE');
222
+ expect(result.statuses[0].lastActive.toISOString()).toBe('2026-01-01T01:05:00.000Z');
223
+ expect(result.failures).toEqual([]);
224
+ expect(mockListPRComments).toHaveBeenCalledWith('acme', 'api', 1, 'token');
225
+ });
226
+ it('records partial failures and continues scanning other PRs', async () => {
227
+ const scopes = [{ owner: 'acme', repo: 'api' }];
228
+ mockListOpenPRs.mockResolvedValue([
229
+ makePR({ number: 1 }),
230
+ makePR({ number: 2 }),
231
+ ]);
232
+ mockListPRComments
233
+ .mockRejectedValueOnce(new Error('comments unavailable'))
234
+ .mockResolvedValueOnce([]);
235
+ mockListPRCommitsDetailed.mockResolvedValue([]);
236
+ mockListCommitStatuses.mockResolvedValue([]);
237
+ const result = await scanOpenPRStatuses(scopes, defaultConfig, 'token');
238
+ expect(result.statuses.map(s => s.pr.number)).toEqual([2]);
239
+ expect(result.failures).toEqual([
240
+ {
241
+ owner: 'acme',
242
+ repo: 'api',
243
+ pr: 1,
244
+ stage: 'pr',
245
+ message: 'comments unavailable',
246
+ },
247
+ ]);
248
+ });
249
+ it('honors allowed_authors before fetching per-PR details', async () => {
250
+ const config = ConfigSchema.parse({ routing: { allowed_authors: ['bob'] } });
251
+ const scopes = [{ owner: 'acme', repo: 'api' }];
252
+ mockListOpenPRs.mockResolvedValue([makePR({ number: 1, author: 'alice' })]);
253
+ const result = await scanOpenPRStatuses(scopes, config, 'token');
254
+ expect(result.statuses).toEqual([]);
255
+ expect(result.skippedAuthor).toBe(1);
256
+ expect(mockListPRComments).not.toHaveBeenCalled();
257
+ });
258
+ it('records org scope expansion failures and continues scanning other scopes', async () => {
259
+ const scopes = [
260
+ { org: 'broken-org' },
261
+ { owner: 'acme', repo: 'api' },
262
+ ];
263
+ mockListOrgRepos.mockRejectedValue(new Error('org unavailable'));
264
+ mockListOpenPRs.mockResolvedValue([makePR({ number: 1 })]);
265
+ mockListPRComments.mockResolvedValue([]);
266
+ mockListPRCommitsDetailed.mockResolvedValue([]);
267
+ mockListCommitStatuses.mockResolvedValue([]);
268
+ const result = await scanOpenPRStatuses(scopes, defaultConfig, 'token');
269
+ expect(result.statuses.map(status => status.pr.number)).toEqual([1]);
270
+ expect(result.failures).toEqual([
271
+ {
272
+ owner: 'broken-org',
273
+ stage: 'scope',
274
+ message: 'org unavailable',
275
+ },
276
+ ]);
277
+ expect(result.scannedRepos).toBe(1);
278
+ });
279
+ });
158
280
  //# sourceMappingURL=backtrace.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backtrace.test.js","sourceRoot":"","sources":["../../src/__tests__/backtrace.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backtrace.test.js","sourceRoot":"","sources":["../../src/__tests__/backtrace.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github-client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/github-client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { listOpenPRs, listOrgRepos } from '../github/client.js';
3
+ afterEach(() => {
4
+ vi.unstubAllGlobals();
5
+ });
6
+ describe('github client listing failures', () => {
7
+ it('throws when listOpenPRs receives a non-OK response', async () => {
8
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(new Response(JSON.stringify({ message: 'server error' }), {
9
+ status: 500,
10
+ statusText: 'Internal Server Error',
11
+ })));
12
+ await expect(listOpenPRs('acme', 'api', 'token')).rejects.toThrow('Failed to list open PRs [500]: Internal Server Error');
13
+ });
14
+ it('throws when listOrgRepos receives a non-OK response', async () => {
15
+ vi.stubGlobal('fetch', vi.fn().mockResolvedValue(new Response(JSON.stringify({ message: 'rate limited' }), {
16
+ status: 403,
17
+ statusText: 'Forbidden',
18
+ })));
19
+ await expect(listOrgRepos('acme', 'token')).rejects.toThrow('Failed to list org repos [403]: Forbidden');
20
+ });
21
+ });
22
+ //# sourceMappingURL=github-client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-client.test.js","sourceRoot":"","sources":["../../src/__tests__/github-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE/D,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,gBAAgB,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE;YACxD,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,uBAAuB;SACpC,CAAC,CACH,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC/D,sDAAsD,CACvD,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE;YACxD,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,WAAW;SACxB,CAAC,CACH,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzD,2CAA2C,CAC5C,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -4,9 +4,15 @@ describe('isFreshReviewComment', () => {
4
4
  it('returns true for a current review annotation', () => {
5
5
  expect(isFreshReviewComment('### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=BLOCK type=review -->')).toBe(true);
6
6
  });
7
+ it('returns true for a v2 review annotation with model, round, and service', () => {
8
+ expect(isFreshReviewComment('### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex model=gpt-5 type=review round=2 verdict=BLOCK service=crosscheck -->')).toBe(true);
9
+ });
7
10
  it('returns false for a recheck annotation', () => {
8
11
  expect(isFreshReviewComment('> Recheck of [original review](#issuecomment-1)\n\n### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=NEEDS_WORK type=recheck -->')).toBe(false);
9
12
  });
13
+ it('returns true for a verdict-less review annotation from a null-verdict run', () => {
14
+ expect(isFreshReviewComment('### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex type=review -->')).toBe(true);
15
+ });
10
16
  it('returns false for a fix_failed annotation', () => {
11
17
  expect(isFreshReviewComment('⚠️ **Auto-fix failed**\n\nblah\n\n<!-- crosscheck: fix_failed -->')).toBe(false);
12
18
  });
@@ -45,6 +51,9 @@ describe('isFreshReviewComment', () => {
45
51
  it('returns false for a pre-type-era annotated recheck (no type=, has reviewer=, "> Recheck of" prefix)', () => {
46
52
  expect(isFreshReviewComment('> Recheck of [original review](#issuecomment-1)\n\n### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=NEEDS_WORK -->')).toBe(false);
47
53
  });
54
+ it('does not treat parser defaults alone as proof of a fresh review', () => {
55
+ expect(isFreshReviewComment('Status note without the review header.\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=BLOCK -->')).toBe(false);
56
+ });
48
57
  it('returns false for an unrelated human comment with neither annotation nor header', () => {
49
58
  expect(isFreshReviewComment('LGTM, merging now.')).toBe(false);
50
59
  });
@@ -67,5 +76,11 @@ describe('isFreshReviewComment', () => {
67
76
  + '<!-- crosscheck: origin=claude reviewer=codex verdict=NEEDS_WORK type=recheck -->';
68
77
  expect(isFreshReviewComment(body)).toBe(false);
69
78
  });
79
+ // Guards the Codex PR #155 [P2]: an explicit but unrecognized type (emitted by
80
+ // a future minor version) must not be treated as a review — the annotation
81
+ // contract says any explicit type other than 'review' is not a fresh review.
82
+ it('returns false for an annotation with an explicit but unrecognized step type', () => {
83
+ expect(isFreshReviewComment('### Code Review by ⚡ Codex\n\nbody\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=BLOCK type=future-step -->')).toBe(false);
84
+ });
70
85
  });
71
86
  //# sourceMappingURL=is-fresh-review-comment.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-fresh-review-comment.test.js","sourceRoot":"","sources":["../../src/__tests__/is-fresh-review-comment.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"is-fresh-review-comment.test.js","sourceRoot":"","sources":["../../src/__tests__/is-fresh-review-comment.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=post-review-comment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-review-comment.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/post-review-comment.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { postReviewComment } from '../github/client.js';
3
+ function makeOctokit() {
4
+ const createComment = vi.fn().mockResolvedValue({ data: { id: 123 } });
5
+ return {
6
+ octokit: {
7
+ rest: {
8
+ issues: { createComment },
9
+ },
10
+ },
11
+ createComment,
12
+ };
13
+ }
14
+ describe('postReviewComment', () => {
15
+ it('emits a v2 review annotation even when verdict parsing failed', async () => {
16
+ const { octokit, createComment } = makeOctokit();
17
+ await postReviewComment(octokit, 'owner', 'repo', 42, 'Review body', 'codex', {}, 'claude', null);
18
+ expect(createComment).toHaveBeenCalledWith(expect.objectContaining({
19
+ body: expect.stringContaining('<!-- crosscheck: origin=claude reviewer=codex model=default type=review round=1 verdict=UNKNOWN service=crosscheck -->'),
20
+ }));
21
+ });
22
+ it('emits type=recheck with the supplied workflow round', async () => {
23
+ const { octokit, createComment } = makeOctokit();
24
+ await postReviewComment(octokit, 'owner', 'repo', 42, 'Recheck body', 'claude', {}, 'codex', 'APPROVE', 99, true, undefined, 'recheck', 2);
25
+ expect(createComment).toHaveBeenCalledWith(expect.objectContaining({
26
+ body: expect.stringContaining('<!-- crosscheck: origin=codex reviewer=claude model=default type=recheck round=2 verdict=APPROVE service=crosscheck -->'),
27
+ }));
28
+ });
29
+ it('threads model, stepType, and round into the annotation', async () => {
30
+ const { octokit, createComment } = makeOctokit();
31
+ await postReviewComment(octokit, 'owner', 'repo', 42, 'Review', 'claude', {}, 'codex', 'NEEDS_WORK', undefined, false, 'claude-opus-4-7', 'review', 3);
32
+ expect(createComment).toHaveBeenCalledWith(expect.objectContaining({
33
+ body: expect.stringContaining('model=claude-opus-4-7 type=review round=3'),
34
+ }));
35
+ });
36
+ });
37
+ //# sourceMappingURL=post-review-comment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-review-comment.test.js","sourceRoot":"","sources":["../../src/__tests__/post-review-comment.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,SAAS,WAAW;IAClB,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IACtE,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,MAAM,EAAE,EAAE,aAAa,EAAE;aAC1B;SACO;QACV,aAAa;KACd,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAA;QAEhD,MAAM,iBAAiB,CACrB,OAAO,EACP,OAAO,EACP,MAAM,EACN,EAAE,EACF,aAAa,EACb,OAAO,EACP,EAAE,EACF,QAAQ,EACR,IAAI,CACL,CAAA;QAED,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAC3B,wHAAwH,CACzH;SACF,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAA;QAEhD,MAAM,iBAAiB,CACrB,OAAO,EACP,OAAO,EACP,MAAM,EACN,EAAE,EACF,cAAc,EACd,QAAQ,EACR,EAAE,EACF,OAAO,EACP,SAAS,EACT,EAAE,EACF,IAAI,EACJ,SAAS,EACT,SAAS,EACT,CAAC,CACF,CAAA;QAED,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAC3B,yHAAyH,CAC1H;SACF,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAA;QAEhD,MAAM,iBAAiB,CACrB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAC3E,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CACjD,CAAA;QAED,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,2CAA2C,CAAC;SAC3E,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pr-status.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-status.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/pr-status.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,137 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { buildProgressSummary, computeLastActive, computeTokenTotals, foldPRStatus, isStale, } from '../lib/pr-status.js';
3
+ const BASE_PR = {
4
+ owner: 'acme',
5
+ repo: 'api',
6
+ number: 42,
7
+ title: 'Add scanner',
8
+ author: 'alice',
9
+ headSha: 'abc123',
10
+ headRef: 'feat/scanner',
11
+ headRepo: 'acme/api',
12
+ baseRef: 'main',
13
+ body: null,
14
+ createdAt: '2026-01-01T00:00:00Z',
15
+ updatedAt: '2026-01-01T00:10:00Z',
16
+ };
17
+ function comment(body, createdAt) {
18
+ return { id: 1, body, createdAt, updatedAt: createdAt };
19
+ }
20
+ function reviewComment(verdict, createdAt, type = 'review') {
21
+ return comment(`### Code Review by ⚡ Codex\n\nBody\n\n<!-- crosscheck: origin=claude reviewer=codex verdict=${verdict} type=${type} -->`, createdAt);
22
+ }
23
+ describe('foldPRStatus', () => {
24
+ it('returns PR when there is no crosscheck comment', () => {
25
+ const status = foldPRStatus(BASE_PR, [], []);
26
+ expect(status.state).toBe('PR');
27
+ expect(status.nextAction).toBe('review');
28
+ expect(status.verdict).toBeNull();
29
+ });
30
+ it('returns APPROVE from the latest crosscheck annotation', () => {
31
+ const status = foldPRStatus(BASE_PR, [
32
+ reviewComment('NEEDS_WORK', '2026-01-01T01:00:00Z'),
33
+ reviewComment('APPROVE', '2026-01-01T02:00:00Z', 'recheck'),
34
+ ], []);
35
+ expect(status.state).toBe('APPROVE');
36
+ expect(status.nextAction).toBe('none');
37
+ expect(status.verdict).toBe('APPROVE');
38
+ });
39
+ it('returns RECHECK when NEEDS_WORK has a later fix but no later recheck', () => {
40
+ const logs = [
41
+ {
42
+ ts: '2026-01-01T03:00:00Z',
43
+ level: 'info',
44
+ event: 'fix_complete',
45
+ repo: 'acme/api',
46
+ pr: 42,
47
+ sha: 'def456',
48
+ applied_count: 3,
49
+ tokens_used: 8400,
50
+ },
51
+ ];
52
+ const status = foldPRStatus(BASE_PR, [
53
+ reviewComment('NEEDS_WORK', '2026-01-01T02:00:00Z'),
54
+ ], logs);
55
+ expect(status.state).toBe('RECHECK');
56
+ expect(status.nextAction).toBe('recheck');
57
+ expect(buildProgressSummary(status)).toBe('PR -> CR(NEEDS_WORK) -> Fix(3, 8.4K)');
58
+ });
59
+ it('maps BLOCK to next action fix', () => {
60
+ const status = foldPRStatus(BASE_PR, [
61
+ reviewComment('BLOCK', '2026-01-01T02:00:00Z'),
62
+ ], []);
63
+ expect(status.state).toBe('BLOCK');
64
+ expect(status.nextAction).toBe('fix');
65
+ });
66
+ it('ignores quoted annotations and uses the footer annotation', () => {
67
+ const status = foldPRStatus(BASE_PR, [
68
+ comment([
69
+ 'The review text mentions `<!-- crosscheck: origin=claude reviewer=codex verdict=APPROVE type=review -->` as an example.',
70
+ '> <!-- crosscheck: origin=claude reviewer=codex verdict=APPROVE type=review -->',
71
+ '',
72
+ '```',
73
+ '<!-- crosscheck: origin=claude reviewer=codex verdict=APPROVE type=review -->',
74
+ '```',
75
+ '',
76
+ '<!-- crosscheck: origin=claude reviewer=codex verdict=BLOCK type=review -->',
77
+ ].join('\n'), '2026-01-01T02:00:00Z'),
78
+ ], []);
79
+ expect(status.state).toBe('BLOCK');
80
+ expect(status.verdict).toBe('BLOCK');
81
+ });
82
+ it('builds a capped progress summary with two fix/recheck rounds', () => {
83
+ const status = foldPRStatus(BASE_PR, [
84
+ reviewComment('NEEDS_WORK', '2026-01-01T01:00:00Z'),
85
+ reviewComment('NEEDS_WORK', '2026-01-01T03:00:00Z', 'recheck'),
86
+ reviewComment('APPROVE', '2026-01-01T05:00:00Z', 'recheck'),
87
+ ], [
88
+ { ts: '2026-01-01T02:00:00Z', level: 'info', event: 'fix_complete', repo: 'acme/api', pr: 42, applied_count: 3, tokens_used: 8400 },
89
+ { ts: '2026-01-01T04:00:00Z', level: 'info', event: 'fix_complete', repo: 'acme/api', pr: 42, applied_count: 1, tokens_used: 1200 },
90
+ { ts: '2026-01-01T06:00:00Z', level: 'info', event: 'fix_complete', repo: 'acme/api', pr: 42, applied_count: 2, tokens_used: 2200 },
91
+ ]);
92
+ expect(buildProgressSummary(status)).toBe('PR -> CR(NEEDS_WORK) -> Fix(3, 8.4K) -> Recheck(NEEDS_WORK) -> Fix(1, 1.2K) -> Recheck(APPROVE)');
93
+ });
94
+ });
95
+ describe('stale activity', () => {
96
+ it('uses the latest activity instead of PR creation time', () => {
97
+ vi.useFakeTimers();
98
+ vi.setSystemTime(new Date('2026-01-10T00:00:00Z'));
99
+ try {
100
+ const pr = {
101
+ ...BASE_PR,
102
+ createdAt: '2025-01-01T00:00:00Z',
103
+ updatedAt: '2025-01-01T00:00:00Z',
104
+ commits: [{ sha: 'abc123', committedAt: '2026-01-09T23:00:00Z' }],
105
+ };
106
+ const status = foldPRStatus(pr, [], []);
107
+ expect(computeLastActive(pr, [], []).toISOString()).toBe('2026-01-09T23:00:00.000Z');
108
+ expect(isStale(status, 2 * 60 * 60 * 1000)).toBe(false);
109
+ expect(isStale(status, 30 * 60 * 1000)).toBe(true);
110
+ }
111
+ finally {
112
+ vi.useRealTimers();
113
+ }
114
+ });
115
+ });
116
+ describe('computeTokenTotals', () => {
117
+ it('aggregates review, fix, and recheck tokens per PR and head SHA', () => {
118
+ const totals = computeTokenTotals([
119
+ { ts: '2026-01-01T01:00:00Z', level: 'info', event: 'review_complete', repo: 'acme/api', pr: 42, sha: 'abc123', step_type: 'review', tokens_used: 1000 },
120
+ { ts: '2026-01-01T02:00:00Z', level: 'info', event: 'fix_complete', repo: 'acme/api', pr: 42, sha: 'abc123', tokens_used: 2500 },
121
+ { ts: '2026-01-01T03:00:00Z', level: 'info', event: 'review_complete', repo: 'acme/api', pr: 42, sha: 'abc123', step_type: 'recheck', tokens_used: 1500 },
122
+ { ts: '2026-01-01T04:00:00Z', level: 'info', event: 'review_complete', repo: 'acme/web', pr: 7, tokens_used: 500 },
123
+ { ts: '2026-01-01T05:00:00Z', level: 'info', event: 'fix_complete', repo: 'acme/api', pr: 42 },
124
+ ]);
125
+ expect(totals.byPR['acme/api#42']).toEqual({ review: 1000, fix: 2500, recheck: 1500, total: 5000 });
126
+ expect(totals.byPRHeadSha['acme/api#42@abc123']).toEqual({ review: 1000, fix: 2500, recheck: 1500, total: 5000 });
127
+ expect(totals.byPR['acme/web#7']).toEqual({ review: 500, fix: 0, recheck: 0, total: 500 });
128
+ });
129
+ it('counts legacy review_complete logs with type=recheck as recheck tokens', () => {
130
+ const totals = computeTokenTotals([
131
+ { ts: '2026-01-01T01:00:00Z', level: 'info', event: 'review_complete', repo: 'acme/api', pr: 42, sha: 'abc123', type: 'recheck', tokens_used: 700 },
132
+ ]);
133
+ expect(totals.byPR['acme/api#42']).toEqual({ review: 0, fix: 0, recheck: 700, total: 700 });
134
+ expect(totals.byPRHeadSha['acme/api#42@abc123']).toEqual({ review: 0, fix: 0, recheck: 700, total: 700 });
135
+ });
136
+ });
137
+ //# sourceMappingURL=pr-status.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-status.test.js","sourceRoot":"","sources":["../../src/__tests__/pr-status.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=review-comment-body.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-comment-body.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/review-comment-body.test.ts"],"names":[],"mappings":""}