@humanbased/crosscheck 1.7.2-beta.9 → 1.8.0-beta.17
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__/author-attribution.test.d.ts +2 -0
- package/dist/__tests__/author-attribution.test.d.ts.map +1 -0
- package/dist/__tests__/author-attribution.test.js +89 -0
- package/dist/__tests__/author-attribution.test.js.map +1 -0
- package/dist/__tests__/comment-bodies.test.js +42 -0
- package/dist/__tests__/comment-bodies.test.js.map +1 -1
- package/dist/__tests__/opencode-policy.test.d.ts +2 -0
- package/dist/__tests__/opencode-policy.test.d.ts.map +1 -0
- package/dist/__tests__/opencode-policy.test.js +59 -0
- package/dist/__tests__/opencode-policy.test.js.map +1 -0
- package/dist/__tests__/review-comment-body.test.js +22 -0
- package/dist/__tests__/review-comment-body.test.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +5 -3
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/optimize.d.ts.map +1 -1
- package/dist/commands/optimize.js +5 -3
- package/dist/commands/optimize.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +2 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/github/client.d.ts +4 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +5 -3
- package/dist/github/client.js.map +1 -1
- package/dist/lib/author-attribution.d.ts +10 -0
- package/dist/lib/author-attribution.d.ts.map +1 -0
- package/dist/lib/author-attribution.js +94 -0
- package/dist/lib/author-attribution.js.map +1 -0
- package/dist/lib/comment-bodies.d.ts +7 -0
- package/dist/lib/comment-bodies.d.ts.map +1 -1
- package/dist/lib/comment-bodies.js +43 -6
- package/dist/lib/comment-bodies.js.map +1 -1
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +9 -1
- package/dist/lib/runner.js.map +1 -1
- package/dist/reviewers/fix.d.ts.map +1 -1
- package/dist/reviewers/fix.js +4 -2
- package/dist/reviewers/fix.js.map +1 -1
- package/dist/reviewers/opencode.d.ts +3 -2
- package/dist/reviewers/opencode.d.ts.map +1 -1
- package/dist/reviewers/opencode.js +27 -16
- package/dist/reviewers/opencode.js.map +1 -1
- package/get-started.md +6 -0
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const EFFORT_LEVELS = ['none', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
|
|
2
|
+
const EFFORT_RE = new RegExp(`^(${EFFORT_LEVELS.join('|')})(?:\\s+effort)?$`, 'i');
|
|
3
|
+
function vendorFromLabel(label) {
|
|
4
|
+
// OpenCode first: "OpenCode" also contains "code", and checking codex first
|
|
5
|
+
// would not match it, but keeping the most specific label first documents the
|
|
6
|
+
// precedence for future vendor names.
|
|
7
|
+
if (/open\s*code/i.test(label))
|
|
8
|
+
return 'opencode';
|
|
9
|
+
if (/claude/i.test(label))
|
|
10
|
+
return 'claude';
|
|
11
|
+
if (/codex/i.test(label))
|
|
12
|
+
return 'codex';
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const MAX_DETAIL_PART_LENGTH = 120;
|
|
16
|
+
// A declared model is display text taken from an untrusted PR body. Drop any
|
|
17
|
+
// part that carries markup or control characters rather than trying to render
|
|
18
|
+
// it: a newline could start a forged annotation line in the comment crosscheck
|
|
19
|
+
// posts, and backticks could open a fence that hides the real annotation.
|
|
20
|
+
function safeDetailPart(part) {
|
|
21
|
+
const trimmed = part.trim();
|
|
22
|
+
if (!trimmed || trimmed.length > MAX_DETAIL_PART_LENGTH)
|
|
23
|
+
return null;
|
|
24
|
+
// eslint-disable-next-line no-control-regex -- rejecting control characters is the point
|
|
25
|
+
if (/[\u0000-\u001f\u007f`<>]/.test(trimmed))
|
|
26
|
+
return null;
|
|
27
|
+
return trimmed;
|
|
28
|
+
}
|
|
29
|
+
// Splits `model · effort`, `model, effort`, or `model | high effort` into its
|
|
30
|
+
// parts. Model IDs can contain dots, dashes, slashes and hashes; effort is the
|
|
31
|
+
// only token drawn from a closed vocabulary.
|
|
32
|
+
function splitRunDetail(detail) {
|
|
33
|
+
if (!detail)
|
|
34
|
+
return {};
|
|
35
|
+
const parts = detail.split(/\s*(?:·|\||,)\s*/).map(part => part.trim()).filter(Boolean);
|
|
36
|
+
const modelParts = [];
|
|
37
|
+
let effort;
|
|
38
|
+
for (const part of parts) {
|
|
39
|
+
const match = EFFORT_RE.exec(part);
|
|
40
|
+
if (match) {
|
|
41
|
+
effort = match[1].toLowerCase();
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const safe = safeDetailPart(part);
|
|
45
|
+
if (safe)
|
|
46
|
+
modelParts.push(safe);
|
|
47
|
+
}
|
|
48
|
+
const model = modelParts.join(' · ') || undefined;
|
|
49
|
+
return {
|
|
50
|
+
...(model && { model }),
|
|
51
|
+
...(effort && { effort }),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// A declaration is a footer: the whole line, optionally preceded by the ⚡
|
|
55
|
+
// marker. Anchoring both ends keeps a `Generated with ...` mention embedded in
|
|
56
|
+
// prose from being read; limiting indentation to three spaces keeps a Markdown
|
|
57
|
+
// indented code example (four spaces or a tab) from passing as a footer. The
|
|
58
|
+
// scan below also skips fenced code blocks.
|
|
59
|
+
const LINKED_FOOTER_RE = /^ {0,3}(?:⚡\ufe0f?[ \t]*)?Generated with[ \t]+\[([^\]\n]+)\]\([^)\n]*\)(?:[ \t]*\(([^)\n]*)\))?[ \t]*$/;
|
|
60
|
+
const PLAIN_FOOTER_RE = /^ {0,3}(?:⚡\ufe0f?[ \t]*)?Generated with[ \t]+([^\n([]+?)[ \t]*(?:\(([^)\n]*)\))?[ \t]*$/;
|
|
61
|
+
export function parseAuthorAttribution(text) {
|
|
62
|
+
if (!text)
|
|
63
|
+
return null;
|
|
64
|
+
// Walk the body in source order and skip fenced blocks, so the first real
|
|
65
|
+
// footer wins regardless of whether it uses the linked or plain form.
|
|
66
|
+
let fence = null;
|
|
67
|
+
for (const line of text.split(/\r?\n/)) {
|
|
68
|
+
const candidate = /^ {0,3}([\x60]{3,}|~{3,})(.*)$/.exec(line);
|
|
69
|
+
if (fence) {
|
|
70
|
+
if (candidate
|
|
71
|
+
&& candidate[1][0] === fence.character
|
|
72
|
+
&& candidate[1].length >= fence.length
|
|
73
|
+
&& /^[ \t]*$/.test(candidate[2]))
|
|
74
|
+
fence = null;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (candidate) {
|
|
78
|
+
// Markdown forbids backticks in a backtick fence's info string.
|
|
79
|
+
if (candidate[1][0] !== '\x60' || !candidate[2].includes('\x60')) {
|
|
80
|
+
fence = { character: candidate[1][0], length: candidate[1].length };
|
|
81
|
+
}
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const match = LINKED_FOOTER_RE.exec(line) ?? PLAIN_FOOTER_RE.exec(line);
|
|
85
|
+
if (!match)
|
|
86
|
+
continue;
|
|
87
|
+
const vendor = vendorFromLabel(match[1]);
|
|
88
|
+
if (!vendor)
|
|
89
|
+
continue;
|
|
90
|
+
return { vendor, ...splitRunDetail(match[2]) };
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=author-attribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"author-attribution.js","sourceRoot":"","sources":["../../src/lib/author-attribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { SkillMetadata } from '../skills/broker.js';
|
|
2
|
+
import type { AuthorAttribution } from './author-attribution.js';
|
|
3
|
+
export declare function renderAuthorLine(author?: AuthorAttribution): string;
|
|
2
4
|
export interface AttributionFooterInput {
|
|
3
5
|
/** Past-tense verb for what the step did: Reviewed / Fixed / Resolved. */
|
|
4
6
|
action: string;
|
|
@@ -31,6 +33,8 @@ export interface FixAppliedCommentInput {
|
|
|
31
33
|
model?: string;
|
|
32
34
|
/** Reasoning effort the fix ran with. Rendered in the attribution. */
|
|
33
35
|
effort?: string;
|
|
36
|
+
/** Declared author of the original PR, when the PR states it. */
|
|
37
|
+
author?: AuthorAttribution;
|
|
34
38
|
/** Skills the fix step activated. Rendered beneath the attribution. */
|
|
35
39
|
skills?: SkillMetadata[];
|
|
36
40
|
}
|
|
@@ -40,6 +44,7 @@ export interface FixFailedCommentInput {
|
|
|
40
44
|
vendor?: string;
|
|
41
45
|
model?: string;
|
|
42
46
|
effort?: string;
|
|
47
|
+
author?: AuthorAttribution;
|
|
43
48
|
skills?: SkillMetadata[];
|
|
44
49
|
}
|
|
45
50
|
export declare function buildFixFailedCommentBody(input: FixFailedCommentInput): string;
|
|
@@ -62,6 +67,8 @@ export interface ConflictResolvedCommentInput {
|
|
|
62
67
|
model?: string;
|
|
63
68
|
/** Reasoning effort the resolver ran with. Rendered in the attribution. */
|
|
64
69
|
effort?: string;
|
|
70
|
+
/** Declared author of the original PR, when the PR states it. */
|
|
71
|
+
author?: AuthorAttribution;
|
|
65
72
|
/** Skills the conflict-resolve step activated. Rendered beneath the attribution. */
|
|
66
73
|
skills?: SkillMetadata[];
|
|
67
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-bodies.d.ts","sourceRoot":"","sources":["../../src/lib/comment-bodies.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"comment-bodies.d.ts","sourceRoot":"","sources":["../../src/lib/comment-bodies.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AA2BhE,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CASnE;AAMD,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAkB5E;AA0BD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,uEAAuE;IACvE,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CA0ChF;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;CACzB;AAKD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAmB9E;AAKD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,aAAa,GAAG,kBAAkB,CAAA;AAE/E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,kBAAkB,CAAA;IAE1B,OAAO,EAAE,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CA+BpF;AAQD,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,oFAAoF;IACpF,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CA2B5F"}
|
|
@@ -6,14 +6,44 @@ import { CROSSCHECK_REPO_URL } from './product.js';
|
|
|
6
6
|
import { modelDisplayName } from './review-models.js';
|
|
7
7
|
import { vendorDisplayName } from './vendor.js';
|
|
8
8
|
import { renderSkillAttributionLine } from '../skills/attribution.js';
|
|
9
|
+
function vendorProfileUrl(vendor) {
|
|
10
|
+
return vendor === 'codex' ? 'https://openai.com/codex'
|
|
11
|
+
: vendor === 'opencode' ? 'https://opencode.ai'
|
|
12
|
+
: 'https://claude.ai/code';
|
|
13
|
+
}
|
|
14
|
+
const MAX_AUTHOR_DETAIL_LENGTH = 120;
|
|
15
|
+
// Author attribution comes from an untrusted PR body. Keep only the first line
|
|
16
|
+
// and strip markup: a newline could start a forged annotation line in the
|
|
17
|
+
// comment crosscheck appends its own annotation to, and a backtick could open a
|
|
18
|
+
// fence that hides the real one.
|
|
19
|
+
function sanitizeAuthorDetail(value) {
|
|
20
|
+
// eslint-disable-next-line no-control-regex -- stripping control characters is the point
|
|
21
|
+
const withoutControls = value.split(/[\r\n]/, 1)[0].replace(/[\u0000-\u001f\u007f]/g, '');
|
|
22
|
+
return withoutControls
|
|
23
|
+
.replace(/[`<>]/g, '')
|
|
24
|
+
.replace(/\s+/g, ' ')
|
|
25
|
+
.trim()
|
|
26
|
+
.slice(0, MAX_AUTHOR_DETAIL_LENGTH);
|
|
27
|
+
}
|
|
28
|
+
// Names the coding agent that wrote the PR, plus whatever model and effort it
|
|
29
|
+
// declared. Kept separate from the footer (which names the agent that ran this
|
|
30
|
+
// step) so a fallback fixer cannot be confused with the PR's author.
|
|
31
|
+
export function renderAuthorLine(author) {
|
|
32
|
+
if (!author)
|
|
33
|
+
return '';
|
|
34
|
+
const model = sanitizeAuthorDetail(author.model ?? '');
|
|
35
|
+
const effort = sanitizeAuthorDetail(author.effort ?? '');
|
|
36
|
+
const details = [
|
|
37
|
+
modelDisplayName(model || 'default'),
|
|
38
|
+
effort ? `${effort} effort` : null,
|
|
39
|
+
].filter(Boolean).join(' · ');
|
|
40
|
+
return `> **PR author:** [${vendorDisplayName(author.vendor)}](${vendorProfileUrl(author.vendor)})${details ? ` · ${details}` : ''}`;
|
|
41
|
+
}
|
|
9
42
|
export function buildAttributionFooter(input) {
|
|
10
43
|
// Same name the commit subjects credit, from the same helper — a card and the
|
|
11
44
|
// commit it describes must not disagree about who did the work.
|
|
12
45
|
const vendor = input.vendor === 'codex' ? 'codex' : input.vendor === 'opencode' ? 'opencode' : 'claude';
|
|
13
|
-
const
|
|
14
|
-
: vendor === 'opencode' ? 'https://opencode.ai'
|
|
15
|
-
: 'https://claude.ai/code';
|
|
16
|
-
const vendorLink = `[${vendorDisplayName(vendor)}](${vendorUrl})`;
|
|
46
|
+
const vendorLink = `[${vendorDisplayName(vendor)}](${vendorProfileUrl(vendor)})`;
|
|
17
47
|
const sentence = input.override
|
|
18
48
|
|| `_${input.action} with ${vendorLink} via [Crosscheck](${CROSSCHECK_REPO_URL})_`;
|
|
19
49
|
// Its own italic run so a branded override keeps whatever markdown it uses.
|
|
@@ -58,7 +88,7 @@ function extractIssuePoints(reviewBody, max) {
|
|
|
58
88
|
return items;
|
|
59
89
|
}
|
|
60
90
|
export function buildFixAppliedCommentBody(input) {
|
|
61
|
-
const { owner, repo, sha, appliedCount, reviewCommentId, changedFiles, vendor, reviewCommentBody, model, effort, skills } = input;
|
|
91
|
+
const { owner, repo, sha, appliedCount, reviewCommentId, changedFiles, vendor, reviewCommentBody, model, effort, author, skills } = input;
|
|
62
92
|
const shortSha = sha.slice(0, 7);
|
|
63
93
|
const commitUrl = `https://github.com/${owner}/${repo}/commit/${sha}`;
|
|
64
94
|
const backlink = reviewCommentId
|
|
@@ -70,6 +100,9 @@ export function buildFixAppliedCommentBody(input) {
|
|
|
70
100
|
'',
|
|
71
101
|
`Pushed [\`${shortSha}\`](${commitUrl})${backlink}: **${appliedCount} change${plural} applied**.`,
|
|
72
102
|
];
|
|
103
|
+
const authorLine = renderAuthorLine(author);
|
|
104
|
+
if (authorLine)
|
|
105
|
+
lines.push('', authorLine);
|
|
73
106
|
if (reviewCommentBody) {
|
|
74
107
|
const issues = extractIssuePoints(reviewCommentBody, MAX_ISSUES_LISTED);
|
|
75
108
|
if (issues.length > 0) {
|
|
@@ -94,11 +127,13 @@ export function buildFixAppliedCommentBody(input) {
|
|
|
94
127
|
// the footer reports rather than claims credit — but it still names the model
|
|
95
128
|
// and effort that timed out, which is the first thing worth knowing.
|
|
96
129
|
export function buildFixFailedCommentBody(input) {
|
|
130
|
+
const authorLine = renderAuthorLine(input.author);
|
|
97
131
|
return [
|
|
98
132
|
'⚠️ **Auto-fix failed**',
|
|
99
133
|
'',
|
|
100
134
|
`The fix step timed out after retrying. Push a new commit or run \`crosscheck run ${input.prUrl}\` to retry manually.`,
|
|
101
135
|
'',
|
|
136
|
+
...(authorLine ? [authorLine, ''] : []),
|
|
102
137
|
buildAttributionFooter({
|
|
103
138
|
action: 'Attempted',
|
|
104
139
|
vendor: input.vendor,
|
|
@@ -147,7 +182,7 @@ const TITLE_BY_REASON = {
|
|
|
147
182
|
subprocess_error: '### ❌ Review failed',
|
|
148
183
|
};
|
|
149
184
|
export function buildConflictResolvedCommentBody(input) {
|
|
150
|
-
const { owner, repo, sha, conflictCount, files, model, effort, skills } = input;
|
|
185
|
+
const { owner, repo, sha, conflictCount, files, model, effort, author, skills } = input;
|
|
151
186
|
const shortSha = sha.slice(0, 7);
|
|
152
187
|
const commitUrl = `https://github.com/${owner}/${repo}/commit/${sha}`;
|
|
153
188
|
const plural = conflictCount !== 1 ? 's' : '';
|
|
@@ -156,6 +191,7 @@ export function buildConflictResolvedCommentBody(input) {
|
|
|
156
191
|
const fileLines = shown.map(p => `- \`${p}\``);
|
|
157
192
|
if (remainder > 0)
|
|
158
193
|
fileLines.push(`- _...and ${remainder} more_`);
|
|
194
|
+
const authorLine = renderAuthorLine(author);
|
|
159
195
|
return [
|
|
160
196
|
'### 🔀 Conflicts resolved',
|
|
161
197
|
'',
|
|
@@ -164,6 +200,7 @@ export function buildConflictResolvedCommentBody(input) {
|
|
|
164
200
|
'',
|
|
165
201
|
`Pushed [\`${shortSha}\`](${commitUrl}).`,
|
|
166
202
|
'',
|
|
203
|
+
...(authorLine ? [authorLine, ''] : []),
|
|
167
204
|
// Conflict resolution is Claude-only today; the footer still routes through
|
|
168
205
|
// the shared builder so the wording matches review and fix.
|
|
169
206
|
buildAttributionFooter({ action: 'Resolved', vendor: 'claude', model, effort, skills }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-bodies.js","sourceRoot":"","sources":["../../src/lib/comment-bodies.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"comment-bodies.js","sourceRoot":"","sources":["../../src/lib/comment-bodies.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAqB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAWjE,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAK9F,OAAO,EAA2C,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAIzF,OAAO,EAAwF,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAOlK,OAAO,EAAoG,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEzK,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/runner.js
CHANGED
|
@@ -37,6 +37,7 @@ import { tierTimeoutMs } from '../reviewers/tier-timeouts.js';
|
|
|
37
37
|
import { loadSkillCatalog } from '../skills/catalog.js';
|
|
38
38
|
import { createSkillActivationSession } from '../skills/broker.js';
|
|
39
39
|
import { formatSkillAttribution } from '../skills/attribution.js';
|
|
40
|
+
import { parseAuthorAttribution } from './author-attribution.js';
|
|
40
41
|
import { CompromisedCloneError, runGitWithoutHooks, changedFilesVsBase } from './clone.js';
|
|
41
42
|
const MAX_CROSSCHECK_COMMITS = 5;
|
|
42
43
|
const FIX_RETRY_DELAY_MS = 2 * 60 * 1000;
|
|
@@ -741,6 +742,9 @@ export async function pushWithNonFastForwardHandling(params) {
|
|
|
741
742
|
export async function runWorkflow(ctx) {
|
|
742
743
|
const { owner, repoName, prNumber, pr, tmpDir, token, config, origin, log, onPhaseChange, trigger } = ctx;
|
|
743
744
|
const triggerField = trigger !== undefined ? { trigger } : {};
|
|
745
|
+
// The author's declaration lives in the PR body. Parsing it once here means
|
|
746
|
+
// every card this run posts names the same author, model and effort.
|
|
747
|
+
const authorAttribution = parseAuthorAttribution(pr.body ?? '');
|
|
744
748
|
const configuredSteps = (ctx.steps ?? loadWorkflow(process.cwd())).map(step => {
|
|
745
749
|
if (!step.harness || step.instructions)
|
|
746
750
|
return step;
|
|
@@ -1201,7 +1205,7 @@ export async function runWorkflow(ctx) {
|
|
|
1201
1205
|
// Withheld when an explicit vendors.*.model overrode the tier map:
|
|
1202
1206
|
// citing a tier the run did not use would assert a routing decision
|
|
1203
1207
|
// that never happened.
|
|
1204
|
-
strategyCitation(reviewer === 'codex' ? config.vendors.codex : reviewer === 'opencode' ? config.vendors.opencode : config.vendors.claude, strategy, roundStrategy, model));
|
|
1208
|
+
strategyCitation(reviewer === 'codex' ? config.vendors.codex : reviewer === 'opencode' ? config.vendors.opencode : config.vendors.claude, strategy, roundStrategy, model), authorAttribution ?? undefined);
|
|
1205
1209
|
if (memoryPlan && structured?.snapshot) {
|
|
1206
1210
|
// The review is already posted; a memory write failure only costs the next review its delta.
|
|
1207
1211
|
try {
|
|
@@ -1473,6 +1477,7 @@ export async function runWorkflow(ctx) {
|
|
|
1473
1477
|
vendor: activeVendor,
|
|
1474
1478
|
model: activeVendor === 'codex' ? codexFixModel : activeVendor === 'opencode' ? opencodeFixModel : claudeFixModel,
|
|
1475
1479
|
effort: fixEffort,
|
|
1480
|
+
author: authorAttribution ?? undefined,
|
|
1476
1481
|
skills: activatedSkills,
|
|
1477
1482
|
}),
|
|
1478
1483
|
});
|
|
@@ -1559,6 +1564,7 @@ export async function runWorkflow(ctx) {
|
|
|
1559
1564
|
reviewCommentBody,
|
|
1560
1565
|
model: activeVendor === 'codex' ? codexFixModel : activeVendor === 'opencode' ? opencodeFixModel : claudeFixModel,
|
|
1561
1566
|
effort: fixEffort,
|
|
1567
|
+
author: authorAttribution ?? undefined,
|
|
1562
1568
|
skills: activatedSkills,
|
|
1563
1569
|
});
|
|
1564
1570
|
await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
|
|
@@ -1632,6 +1638,7 @@ export async function runWorkflow(ctx) {
|
|
|
1632
1638
|
reviewCommentBody,
|
|
1633
1639
|
model: activeVendor === 'codex' ? codexFixModel : activeVendor === 'opencode' ? opencodeFixModel : claudeFixModel,
|
|
1634
1640
|
effort: fixEffort,
|
|
1641
|
+
author: authorAttribution ?? undefined,
|
|
1635
1642
|
skills: activatedSkills,
|
|
1636
1643
|
});
|
|
1637
1644
|
await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
|
|
@@ -2140,6 +2147,7 @@ export async function runWorkflow(ctx) {
|
|
|
2140
2147
|
files: resolvedPaths.length > 0 ? resolvedPaths : conflictedFiles,
|
|
2141
2148
|
model: conflictResolveModel,
|
|
2142
2149
|
effort: resolveEffort,
|
|
2150
|
+
author: authorAttribution ?? undefined,
|
|
2143
2151
|
skills: activatedSkills,
|
|
2144
2152
|
});
|
|
2145
2153
|
await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
|