@motivation-labs/crosscheck 0.14.0-beta.47 → 0.14.0-beta.61
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__/annotation.test.d.ts +2 -0
- package/dist/__tests__/annotation.test.d.ts.map +1 -0
- package/dist/__tests__/annotation.test.js +93 -0
- package/dist/__tests__/annotation.test.js.map +1 -0
- package/dist/__tests__/is-fresh-review-comment.test.js +15 -0
- package/dist/__tests__/is-fresh-review-comment.test.js.map +1 -1
- package/dist/__tests__/post-review-comment.test.d.ts +2 -0
- package/dist/__tests__/post-review-comment.test.d.ts.map +1 -0
- package/dist/__tests__/post-review-comment.test.js +37 -0
- package/dist/__tests__/post-review-comment.test.js.map +1 -0
- package/dist/__tests__/review-comment-body.test.d.ts +2 -0
- package/dist/__tests__/review-comment-body.test.d.ts.map +1 -0
- package/dist/__tests__/review-comment-body.test.js +53 -0
- package/dist/__tests__/review-comment-body.test.js.map +1 -0
- package/dist/__tests__/review-models.test.d.ts +2 -0
- package/dist/__tests__/review-models.test.d.ts.map +1 -0
- package/dist/__tests__/review-models.test.js +39 -0
- package/dist/__tests__/review-models.test.js.map +1 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +8 -5
- package/dist/commands/review.js.map +1 -1
- package/dist/github/client.d.ts +15 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +69 -48
- package/dist/github/client.js.map +1 -1
- package/dist/lib/annotation.d.ts +21 -0
- package/dist/lib/annotation.d.ts.map +1 -0
- package/dist/lib/annotation.js +65 -0
- package/dist/lib/annotation.js.map +1 -0
- package/dist/lib/review-models.d.ts +7 -0
- package/dist/lib/review-models.d.ts.map +1 -0
- package/dist/lib/review-models.js +32 -0
- package/dist/lib/review-models.js.map +1 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +33 -10
- package/dist/lib/runner.js.map +1 -1
- package/dist/reviewers/claude.d.ts +1 -0
- package/dist/reviewers/claude.d.ts.map +1 -1
- package/dist/reviewers/claude.js +4 -8
- package/dist/reviewers/claude.js.map +1 -1
- package/dist/reviewers/codex.d.ts.map +1 -1
- package/dist/reviewers/codex.js +5 -13
- package/dist/reviewers/codex.js.map +1 -1
- package/dist/reviewers/conflict-resolve.d.ts +1 -1
- package/dist/reviewers/conflict-resolve.d.ts.map +1 -1
- package/dist/reviewers/conflict-resolve.js +3 -2
- package/dist/reviewers/conflict-resolve.js.map +1 -1
- package/dist/reviewers/fix.d.ts +1 -1
- package/dist/reviewers/fix.d.ts.map +1 -1
- package/dist/reviewers/fix.js +3 -2
- package/dist/reviewers/fix.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"review-comment-body.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/review-comment-body.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildReviewCommentBody } from '../github/client.js';
|
|
3
|
+
describe('buildReviewCommentBody', () => {
|
|
4
|
+
it('renders Claude thorough with model and custom service in the header and annotation', () => {
|
|
5
|
+
const body = buildReviewCommentBody({
|
|
6
|
+
body: 'VERDICT: APPROVE',
|
|
7
|
+
reviewer: 'claude',
|
|
8
|
+
brand: { service_name: 'Acme' },
|
|
9
|
+
origin: 'codex',
|
|
10
|
+
verdict: 'APPROVE',
|
|
11
|
+
model: 'claude-opus-4-7',
|
|
12
|
+
stepType: 'review',
|
|
13
|
+
round: 2,
|
|
14
|
+
});
|
|
15
|
+
expect(body).toContain('### Code Review by 🤖 Claude Code · Opus 4.7 · Acme');
|
|
16
|
+
expect(body).toContain('model=claude-opus-4-7 type=review round=2 verdict=APPROVE service=Acme');
|
|
17
|
+
});
|
|
18
|
+
it('omits model and service segments for default Codex subscription auth', () => {
|
|
19
|
+
const body = buildReviewCommentBody({
|
|
20
|
+
body: 'VERDICT: NEEDS_WORK',
|
|
21
|
+
reviewer: 'codex',
|
|
22
|
+
brand: { service_name: 'crosscheck' },
|
|
23
|
+
origin: 'claude',
|
|
24
|
+
verdict: 'NEEDS_WORK',
|
|
25
|
+
model: 'default',
|
|
26
|
+
stepType: 'review',
|
|
27
|
+
});
|
|
28
|
+
expect(body).toContain('### Code Review by ⚡ Codex\n\n');
|
|
29
|
+
expect(body).not.toContain(' · ');
|
|
30
|
+
expect(body).toContain('model=default');
|
|
31
|
+
});
|
|
32
|
+
it('renders recheck and fix step verbs', () => {
|
|
33
|
+
const recheck = buildReviewCommentBody({
|
|
34
|
+
body: 'VERDICT: APPROVE',
|
|
35
|
+
reviewer: 'codex',
|
|
36
|
+
verdict: 'APPROVE',
|
|
37
|
+
model: 'o4-mini',
|
|
38
|
+
stepType: 'recheck',
|
|
39
|
+
replyToCommentId: 123,
|
|
40
|
+
});
|
|
41
|
+
const fix = buildReviewCommentBody({
|
|
42
|
+
body: 'fixed',
|
|
43
|
+
reviewer: 'claude',
|
|
44
|
+
verdict: 'APPROVE',
|
|
45
|
+
model: 'claude-sonnet-4-6',
|
|
46
|
+
stepType: 'fix',
|
|
47
|
+
});
|
|
48
|
+
expect(recheck).toContain('> Recheck of [original review](#issuecomment-123)');
|
|
49
|
+
expect(recheck).toContain('### Recheck by ⚡ Codex · o4-mini');
|
|
50
|
+
expect(fix).toContain('### Fixes by 🤖 Claude Code · Sonnet 4.6');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=review-comment-body.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-comment-body.test.js","sourceRoot":"","sources":["../../src/__tests__/review-comment-body.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,IAAI,GAAG,sBAAsB,CAAC;YAClC,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;YAC/B,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC7E,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,sBAAsB,CAAC;YAClC,IAAI,EAAE,qBAAqB;YAC3B,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE;YACrC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAA;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,GAAG;SACtB,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,sBAAsB,CAAC;YACjC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAA;QAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-models.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/review-models.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { modelDisplayName, resolveClaudeModel, resolveCodexModel } from '../lib/review-models.js';
|
|
3
|
+
const quality = (tier) => ({
|
|
4
|
+
tier,
|
|
5
|
+
focus: [],
|
|
6
|
+
});
|
|
7
|
+
const codexVendor = (auth, model = null) => ({
|
|
8
|
+
enabled: true,
|
|
9
|
+
auth,
|
|
10
|
+
model,
|
|
11
|
+
effort: 'medium',
|
|
12
|
+
quality: 'medium',
|
|
13
|
+
});
|
|
14
|
+
describe('review model resolution', () => {
|
|
15
|
+
it('resolves Claude models by tier', () => {
|
|
16
|
+
expect(resolveClaudeModel(quality('fast'))).toBe('claude-haiku-4-5-20251001');
|
|
17
|
+
expect(resolveClaudeModel(quality('balanced'))).toBe('claude-sonnet-4-6');
|
|
18
|
+
expect(resolveClaudeModel(quality('thorough'))).toBe('claude-opus-4-7');
|
|
19
|
+
});
|
|
20
|
+
it('resolves Codex API-key models by tier and configured override', () => {
|
|
21
|
+
expect(resolveCodexModel(quality('fast'), codexVendor('api-key'))).toBe('gpt-4o-mini');
|
|
22
|
+
expect(resolveCodexModel(quality('balanced'), codexVendor('api-key'))).toBe('o4-mini');
|
|
23
|
+
expect(resolveCodexModel(quality('thorough'), codexVendor('api-key'))).toBe('o3');
|
|
24
|
+
expect(resolveCodexModel(quality('thorough'), codexVendor('api-key', 'custom-model'))).toBe('custom-model');
|
|
25
|
+
});
|
|
26
|
+
it('uses default for Codex subscription auth', () => {
|
|
27
|
+
expect(resolveCodexModel(quality('thorough'), codexVendor('subscription'))).toBe('default');
|
|
28
|
+
expect(modelDisplayName('default')).toBeNull();
|
|
29
|
+
});
|
|
30
|
+
it('formats known model display names', () => {
|
|
31
|
+
expect(modelDisplayName('claude-opus-4-7')).toBe('Opus 4.7');
|
|
32
|
+
expect(modelDisplayName('claude-sonnet-4-6')).toBe('Sonnet 4.6');
|
|
33
|
+
expect(modelDisplayName('claude-haiku-4-5-20251001')).toBe('Haiku 4.5');
|
|
34
|
+
expect(modelDisplayName('o4-mini')).toBe('o4-mini');
|
|
35
|
+
expect(modelDisplayName('o3')).toBe('o3');
|
|
36
|
+
expect(modelDisplayName('gpt-4o-mini')).toBe('gpt-4o-mini');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=review-models.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-models.test.js","sourceRoot":"","sources":["../../src/__tests__/review-models.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAoBA,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAoBA,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,iBA+HzF"}
|
package/dist/commands/review.js
CHANGED
|
@@ -42,12 +42,14 @@ export async function runReview(prUrl, configPath, forceReviewer) {
|
|
|
42
42
|
spinner.succeed(`PR #${number}: ${pr.title}`);
|
|
43
43
|
fileLog({ level: 'info', event: 'pr_received', repo: `${owner}/${repo}`, pr: number, sha: pr.head.sha });
|
|
44
44
|
let reviewer;
|
|
45
|
+
let origin = 'human';
|
|
45
46
|
if (forceReviewer === 'codex' || forceReviewer === 'claude') {
|
|
46
47
|
reviewer = forceReviewer;
|
|
47
48
|
console.log(chalk.dim(` reviewer: ${reviewer} (forced)`));
|
|
48
49
|
}
|
|
49
50
|
else {
|
|
50
|
-
const { origin, method } = await detectOriginFull(pr.body ?? '', pr.head.ref, owner, repo, number, config, token, pr.user?.login);
|
|
51
|
+
const { origin: detectedOrigin, method } = await detectOriginFull(pr.body ?? '', pr.head.ref, owner, repo, number, config, token, pr.user?.login);
|
|
52
|
+
origin = detectedOrigin;
|
|
51
53
|
reviewer = await assignReviewer(origin, config);
|
|
52
54
|
if (!reviewer) {
|
|
53
55
|
console.log(chalk.dim(` PR origin: ${origin} (via ${method}) — no reviewer assigned (use --reviewer codex|claude to force)`));
|
|
@@ -68,6 +70,7 @@ export async function runReview(prUrl, configPath, forceReviewer) {
|
|
|
68
70
|
spinner2.succeed('Repo ready');
|
|
69
71
|
let reviewText;
|
|
70
72
|
let tokensUsed;
|
|
73
|
+
let model = 'default';
|
|
71
74
|
const reviewStart = Date.now();
|
|
72
75
|
fileLog({ level: 'info', event: 'review_started', repo: `${owner}/${repo}`, pr: number, reviewer });
|
|
73
76
|
let elapsed = 0;
|
|
@@ -76,11 +79,11 @@ export async function runReview(prUrl, configPath, forceReviewer) {
|
|
|
76
79
|
try {
|
|
77
80
|
if (reviewer === 'codex') {
|
|
78
81
|
;
|
|
79
|
-
({ review: reviewText, tokensUsed } = await runCodexReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.codex, undefined, msg => { reviewSpinner.text = msg; }));
|
|
82
|
+
({ review: reviewText, tokensUsed, model } = await runCodexReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.codex, undefined, msg => { reviewSpinner.text = msg; }));
|
|
80
83
|
}
|
|
81
84
|
else {
|
|
82
85
|
;
|
|
83
|
-
({ review: reviewText, tokensUsed } = await runClaudeReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.claude, config.budget.per_review_usd, undefined, msg => { reviewSpinner.text = msg; }));
|
|
86
|
+
({ review: reviewText, tokensUsed, model } = await runClaudeReview(tmpDir, pr.base.ref, pr.title, config.quality, config.vendors.claude, config.budget.per_review_usd, undefined, msg => { reviewSpinner.text = msg; }));
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
89
|
finally {
|
|
@@ -91,12 +94,12 @@ export async function runReview(prUrl, configPath, forceReviewer) {
|
|
|
91
94
|
if (verdict === null) {
|
|
92
95
|
fileLog({ level: 'warn', event: 'verdict_parse_failed', repo: `${owner}/${repo}`, pr: number, reviewer, output_length: reviewText.length });
|
|
93
96
|
}
|
|
94
|
-
fileLog({ level: 'info', event: 'review_complete', repo: `${owner}/${repo}`, pr: number, reviewer, verdict: verdict ?? undefined, duration_ms: Date.now() - reviewStart, tokens_used: tokensUsed });
|
|
97
|
+
fileLog({ level: 'info', event: 'review_complete', repo: `${owner}/${repo}`, pr: number, reviewer, model, verdict: verdict ?? undefined, duration_ms: Date.now() - reviewStart, tokens_used: tokensUsed });
|
|
95
98
|
console.log(` ${formatVerdict(verdict)}`);
|
|
96
99
|
const commentBody = verdict === null
|
|
97
100
|
? `${NULL_VERDICT_WARNING}\n\n${clean}`
|
|
98
101
|
: prependVerdictToComment(clean, verdict);
|
|
99
|
-
await postReviewComment(octokit, owner, repo, number, commentBody, reviewer, config.brand);
|
|
102
|
+
await postReviewComment(octokit, owner, repo, number, commentBody, reviewer, config.brand, origin, verdict ?? undefined, undefined, false, model, 'review', 1);
|
|
100
103
|
fileLog({ level: 'info', event: 'comment_posted', repo: `${owner}/${repo}`, pr: number, url: prUrl });
|
|
101
104
|
console.log(chalk.green(`\n✓ Review posted to ${prUrl}\n`));
|
|
102
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
|
package/dist/github/client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Octokit } from 'octokit';
|
|
2
|
+
import { type CrosscheckStepType } from '../lib/annotation.js';
|
|
2
3
|
export declare function createGithubClient(token: string): import("@octokit/core").Octokit & {
|
|
3
4
|
paginate: import("@octokit/plugin-paginate-rest").PaginateInterface;
|
|
4
5
|
} & import("@octokit/plugin-paginate-graphql").paginateGraphQLInterface & import("@octokit/plugin-rest-endpoint-methods").Api & {
|
|
@@ -55,5 +56,18 @@ export interface BrandOptions {
|
|
|
55
56
|
comment_footer?: string;
|
|
56
57
|
reviewer_attribution?: string;
|
|
57
58
|
}
|
|
58
|
-
export
|
|
59
|
+
export interface ReviewCommentBodyInput {
|
|
60
|
+
body: string;
|
|
61
|
+
reviewer: string;
|
|
62
|
+
brand?: BrandOptions;
|
|
63
|
+
origin?: string;
|
|
64
|
+
verdict?: string | null;
|
|
65
|
+
replyToCommentId?: number;
|
|
66
|
+
isRecheck?: boolean;
|
|
67
|
+
model?: string;
|
|
68
|
+
stepType?: CrosscheckStepType;
|
|
69
|
+
round?: number;
|
|
70
|
+
}
|
|
71
|
+
export declare function buildReviewCommentBody(input: ReviewCommentBodyInput): string;
|
|
72
|
+
export declare function postReviewComment(octokit: Octokit, owner: string, repo: string, pullNumber: number, body: string, reviewer: string, brand?: BrandOptions, origin?: string, verdict?: string | null, replyToCommentId?: number, isRecheck?: boolean, model?: string, stepType?: CrosscheckStepType, round?: number): Promise<number>;
|
|
59
73
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/github/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,OAAO,EAA2D,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGvH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM;;;;;;EAE/C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOlG;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnE;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKtG;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,UAAQ,GACb,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBjD;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAoBxE;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCnB;AAID,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAaD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgB1D;AAMD,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOpG;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOrH;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,IAAI,CAAA;IACd,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAoC5F;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAsC5E;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,YAAiB,EACxB,MAAM,GAAE,MAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,CAAC,EAAE,OAAO,EACnB,KAAK,SAAY,EACjB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,KAAK,SAAI,GACR,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
|