@on-par/factory-core 0.9.28-next.9 → 0.9.28
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/checkers/app-smoke.d.ts.map +1 -1
- package/dist/checkers/app-smoke.js +4 -1
- package/dist/checkers/app-smoke.js.map +1 -1
- package/dist/checkers/evidence-plan.d.ts +2 -0
- package/dist/checkers/evidence-plan.d.ts.map +1 -1
- package/dist/checkers/evidence-plan.js +13 -6
- package/dist/checkers/evidence-plan.js.map +1 -1
- package/dist/checkers/evidence-selector.d.ts +2 -0
- package/dist/checkers/evidence-selector.d.ts.map +1 -1
- package/dist/checkers/evidence-selector.js +13 -10
- package/dist/checkers/evidence-selector.js.map +1 -1
- package/dist/checkers/evidence-workspace.d.ts +21 -0
- package/dist/checkers/evidence-workspace.d.ts.map +1 -0
- package/dist/checkers/evidence-workspace.js +118 -0
- package/dist/checkers/evidence-workspace.js.map +1 -0
- package/dist/checkers/index.js +1 -1
- package/dist/checkers/index.js.map +1 -1
- package/dist/checkers/internal-exports.d.ts +3 -1
- package/dist/checkers/internal-exports.d.ts.map +1 -1
- package/dist/checkers/internal-exports.js +3 -1
- package/dist/checkers/internal-exports.js.map +1 -1
- package/dist/checkers/resolve-commands.d.ts.map +1 -1
- package/dist/checkers/resolve-commands.js +5 -1
- package/dist/checkers/resolve-commands.js.map +1 -1
- package/dist/config/example.d.ts.map +1 -1
- package/dist/config/example.js +5 -2
- package/dist/config/example.js.map +1 -1
- package/dist/config/index.d.ts +6 -32
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +17 -32
- package/dist/config/index.js.map +1 -1
- package/dist/config/merge-policy.d.ts +36 -0
- package/dist/config/merge-policy.d.ts.map +1 -0
- package/dist/config/merge-policy.js +31 -0
- package/dist/config/merge-policy.js.map +1 -0
- package/dist/config/repo.js +1 -1
- package/dist/config/repo.js.map +1 -1
- package/dist/config/run-config-env.d.ts +5 -0
- package/dist/config/run-config-env.d.ts.map +1 -0
- package/dist/config/run-config-env.js +11 -0
- package/dist/config/run-config-env.js.map +1 -0
- package/dist/config/run-config-ladder.d.ts +18 -0
- package/dist/config/run-config-ladder.d.ts.map +1 -0
- package/dist/config/run-config-ladder.js +110 -0
- package/dist/config/run-config-ladder.js.map +1 -0
- package/dist/config/run-config-source.d.ts +6 -6
- package/dist/config/run-config-source.d.ts.map +1 -1
- package/dist/config/run-config-source.js +16 -15
- package/dist/config/run-config-source.js.map +1 -1
- package/dist/constitutions/index.d.ts.map +1 -1
- package/dist/constitutions/index.js +8 -0
- package/dist/constitutions/index.js.map +1 -1
- package/dist/environment/process-groups.d.ts +5 -0
- package/dist/environment/process-groups.d.ts.map +1 -1
- package/dist/environment/process-groups.js +19 -0
- package/dist/environment/process-groups.js.map +1 -1
- package/dist/events/config-traits.d.ts +1 -1
- package/dist/events/config-traits.d.ts.map +1 -1
- package/dist/events/config-traits.js +2 -0
- package/dist/events/config-traits.js.map +1 -1
- package/dist/events/queue-traits.d.ts +1 -1
- package/dist/events/queue-traits.d.ts.map +1 -1
- package/dist/events/queue-traits.js +8 -1
- package/dist/events/queue-traits.js.map +1 -1
- package/dist/events/rotation.js +1 -1
- package/dist/events/rotation.js.map +1 -1
- package/dist/fakes/octokit.d.ts +13 -1
- package/dist/fakes/octokit.d.ts.map +1 -1
- package/dist/fakes/octokit.js +13 -0
- package/dist/fakes/octokit.js.map +1 -1
- package/dist/filing/redact.d.ts +1 -0
- package/dist/filing/redact.d.ts.map +1 -1
- package/dist/filing/redact.js +1 -1
- package/dist/filing/redact.js.map +1 -1
- package/dist/harness/opencode-version.d.ts +2 -2
- package/dist/harness/opencode-version.d.ts.map +1 -1
- package/dist/harness/opencode-version.js +3 -3
- package/dist/harness/opencode-version.js.map +1 -1
- package/dist/internal.d.ts +13 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +14 -0
- package/dist/internal.js.map +1 -1
- package/dist/kpis/index.d.ts.map +1 -1
- package/dist/kpis/index.js +2 -1
- package/dist/kpis/index.js.map +1 -1
- package/dist/kpis/park.d.ts.map +1 -1
- package/dist/kpis/park.js +2 -1
- package/dist/kpis/park.js.map +1 -1
- package/dist/kpis/phase.d.ts.map +1 -1
- package/dist/kpis/phase.js +1 -0
- package/dist/kpis/phase.js.map +1 -1
- package/dist/land/changelog.d.ts +8 -0
- package/dist/land/changelog.d.ts.map +1 -0
- package/dist/land/changelog.js +90 -0
- package/dist/land/changelog.js.map +1 -0
- package/dist/land/sync.d.ts.map +1 -1
- package/dist/land/sync.js +93 -32
- package/dist/land/sync.js.map +1 -1
- package/dist/phases/check-evidence.d.ts.map +1 -1
- package/dist/phases/check-evidence.js +5 -1
- package/dist/phases/check-evidence.js.map +1 -1
- package/dist/phases/ship-approval.d.ts +17 -0
- package/dist/phases/ship-approval.d.ts.map +1 -0
- package/dist/phases/ship-approval.js +21 -0
- package/dist/phases/ship-approval.js.map +1 -0
- package/dist/phases/ship-branch-push.d.ts +17 -0
- package/dist/phases/ship-branch-push.d.ts.map +1 -0
- package/dist/phases/ship-branch-push.js +77 -0
- package/dist/phases/ship-branch-push.js.map +1 -0
- package/dist/phases/ship-evidence-comment.d.ts +14 -0
- package/dist/phases/ship-evidence-comment.d.ts.map +1 -0
- package/dist/phases/ship-evidence-comment.js +31 -0
- package/dist/phases/ship-evidence-comment.js.map +1 -0
- package/dist/phases/ship-existing-pr.d.ts +11 -0
- package/dist/phases/ship-existing-pr.d.ts.map +1 -0
- package/dist/phases/ship-existing-pr.js +36 -0
- package/dist/phases/ship-existing-pr.js.map +1 -0
- package/dist/phases/ship-finish.d.ts +15 -0
- package/dist/phases/ship-finish.d.ts.map +1 -0
- package/dist/phases/ship-finish.js +69 -0
- package/dist/phases/ship-finish.js.map +1 -0
- package/dist/phases/ship-git-detail.d.ts +31 -0
- package/dist/phases/ship-git-detail.d.ts.map +1 -0
- package/dist/phases/ship-git-detail.js +71 -0
- package/dist/phases/ship-git-detail.js.map +1 -0
- package/dist/phases/ship-git-remote.d.ts +51 -0
- package/dist/phases/ship-git-remote.d.ts.map +1 -0
- package/dist/phases/ship-git-remote.js +70 -0
- package/dist/phases/ship-git-remote.js.map +1 -0
- package/dist/phases/ship-git.d.ts +4 -79
- package/dist/phases/ship-git.d.ts.map +1 -1
- package/dist/phases/ship-git.js +2 -135
- package/dist/phases/ship-git.js.map +1 -1
- package/dist/phases/ship-main-sync.d.ts +18 -0
- package/dist/phases/ship-main-sync.d.ts.map +1 -0
- package/dist/phases/ship-main-sync.js +34 -0
- package/dist/phases/ship-main-sync.js.map +1 -0
- package/dist/phases/ship-open-pr.d.ts +24 -0
- package/dist/phases/ship-open-pr.d.ts.map +1 -0
- package/dist/phases/ship-open-pr.js +75 -0
- package/dist/phases/ship-open-pr.js.map +1 -0
- package/dist/phases/ship-options.d.ts +81 -0
- package/dist/phases/ship-options.d.ts.map +1 -0
- package/dist/phases/ship-options.js +4 -0
- package/dist/phases/ship-options.js.map +1 -0
- package/dist/phases/ship-reentry.d.ts +20 -0
- package/dist/phases/ship-reentry.d.ts.map +1 -0
- package/dist/phases/ship-reentry.js +47 -0
- package/dist/phases/ship-reentry.js.map +1 -0
- package/dist/phases/ship.d.ts +4 -76
- package/dist/phases/ship.d.ts.map +1 -1
- package/dist/phases/ship.js +40 -297
- package/dist/phases/ship.js.map +1 -1
- package/dist/phases/stack-order.d.ts +9 -0
- package/dist/phases/stack-order.d.ts.map +1 -1
- package/dist/phases/stack-order.js +13 -0
- package/dist/phases/stack-order.js.map +1 -1
- package/dist/queue/comment-rework-trigger.d.ts +24 -0
- package/dist/queue/comment-rework-trigger.d.ts.map +1 -0
- package/dist/queue/comment-rework-trigger.js +128 -0
- package/dist/queue/comment-rework-trigger.js.map +1 -0
- package/dist/queue/github-queue.d.ts +4 -2
- package/dist/queue/github-queue.d.ts.map +1 -1
- package/dist/queue/github-queue.js.map +1 -1
- package/dist/queue/internal-exports.d.ts +3 -0
- package/dist/queue/internal-exports.d.ts.map +1 -1
- package/dist/queue/internal-exports.js +2 -0
- package/dist/queue/internal-exports.js.map +1 -1
- package/dist/queue/lane-discovery-interval.d.ts +6 -0
- package/dist/queue/lane-discovery-interval.d.ts.map +1 -0
- package/dist/queue/lane-discovery-interval.js +9 -0
- package/dist/queue/lane-discovery-interval.js.map +1 -0
- package/dist/queue/linear-queue-backend.d.ts +17 -0
- package/dist/queue/linear-queue-backend.d.ts.map +1 -0
- package/dist/queue/linear-queue-backend.js +42 -0
- package/dist/queue/linear-queue-backend.js.map +1 -0
- package/dist/queue/linear-queue.d.ts +4 -2
- package/dist/queue/linear-queue.d.ts.map +1 -1
- package/dist/queue/linear-queue.js +79 -2
- package/dist/queue/linear-queue.js.map +1 -1
- package/dist/queue/prerequisite-stack.d.ts +47 -0
- package/dist/queue/prerequisite-stack.d.ts.map +1 -0
- package/dist/queue/prerequisite-stack.js +41 -0
- package/dist/queue/prerequisite-stack.js.map +1 -0
- package/dist/queue/queue-backend.d.ts +11 -5
- package/dist/queue/queue-backend.d.ts.map +1 -1
- package/dist/queue/queue-backend.js +8 -3
- package/dist/queue/queue-backend.js.map +1 -1
- package/dist/queue/review-rework-trigger.d.ts +7 -2
- package/dist/queue/review-rework-trigger.d.ts.map +1 -1
- package/dist/queue/review-rework-trigger.js +16 -8
- package/dist/queue/review-rework-trigger.js.map +1 -1
- package/dist/reports/pr-body.d.ts +5 -2
- package/dist/reports/pr-body.d.ts.map +1 -1
- package/dist/reports/pr-body.js +21 -10
- package/dist/reports/pr-body.js.map +1 -1
- package/dist/run/ci-rework-loop.d.ts.map +1 -1
- package/dist/run/ci-rework-loop.js +5 -1
- package/dist/run/ci-rework-loop.js.map +1 -1
- package/dist/run/feedback-github.d.ts +50 -0
- package/dist/run/feedback-github.d.ts.map +1 -0
- package/dist/run/feedback-github.js +87 -0
- package/dist/run/feedback-github.js.map +1 -0
- package/dist/run/feedback-round-hooks.d.ts +19 -0
- package/dist/run/feedback-round-hooks.d.ts.map +1 -0
- package/dist/run/feedback-round-hooks.js +106 -0
- package/dist/run/feedback-round-hooks.js.map +1 -0
- package/dist/run/feedback-round.d.ts +97 -0
- package/dist/run/feedback-round.d.ts.map +1 -0
- package/dist/run/feedback-round.js +275 -0
- package/dist/run/feedback-round.js.map +1 -0
- package/dist/run/linear-run.d.ts +23 -0
- package/dist/run/linear-run.d.ts.map +1 -0
- package/dist/run/linear-run.js +18 -0
- package/dist/run/linear-run.js.map +1 -0
- package/dist/run/park-comment.d.ts +9 -0
- package/dist/run/park-comment.d.ts.map +1 -1
- package/dist/run/park-comment.js +12 -0
- package/dist/run/park-comment.js.map +1 -1
- package/dist/run/ports.d.ts +10 -0
- package/dist/run/ports.d.ts.map +1 -1
- package/dist/run/ports.js +12 -0
- package/dist/run/ports.js.map +1 -1
- package/dist/run/pr-run-state.d.ts +99 -0
- package/dist/run/pr-run-state.d.ts.map +1 -0
- package/dist/run/pr-run-state.js +235 -0
- package/dist/run/pr-run-state.js.map +1 -0
- package/dist/run/prerequisite-restack.d.ts +39 -0
- package/dist/run/prerequisite-restack.d.ts.map +1 -0
- package/dist/run/prerequisite-restack.js +79 -0
- package/dist/run/prerequisite-restack.js.map +1 -0
- package/dist/run/review-rework-cap.d.ts +3 -1
- package/dist/run/review-rework-cap.d.ts.map +1 -1
- package/dist/run/review-rework-cap.js +2 -1
- package/dist/run/review-rework-cap.js.map +1 -1
- package/dist/run/review-rework.d.ts +17 -2
- package/dist/run/review-rework.d.ts.map +1 -1
- package/dist/run/review-rework.js +99 -33
- package/dist/run/review-rework.js.map +1 -1
- package/dist/run/run-issue.d.ts +5 -1
- package/dist/run/run-issue.d.ts.map +1 -1
- package/dist/run/run-issue.js +35 -28
- package/dist/run/run-issue.js.map +1 -1
- package/dist/run/stack-rebase.d.ts +28 -0
- package/dist/run/stack-rebase.d.ts.map +1 -0
- package/dist/run/stack-rebase.js +79 -0
- package/dist/run/stack-rebase.js.map +1 -0
- package/dist/run/stack-restack.d.ts.map +1 -1
- package/dist/run/stack-restack.js +21 -49
- package/dist/run/stack-restack.js.map +1 -1
- package/dist/utils/command-runner.d.ts.map +1 -1
- package/dist/utils/command-runner.js +4 -1
- package/dist/utils/command-runner.js.map +1 -1
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +4 -1
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/in-place.d.ts +24 -0
- package/dist/utils/in-place.d.ts.map +1 -0
- package/dist/utils/in-place.js +105 -0
- package/dist/utils/in-place.js.map +1 -0
- package/dist/work/internal-exports.d.ts +3 -0
- package/dist/work/internal-exports.d.ts.map +1 -0
- package/dist/work/internal-exports.js +4 -0
- package/dist/work/internal-exports.js.map +1 -0
- package/dist/work/ticket-writeback.d.ts +22 -0
- package/dist/work/ticket-writeback.d.ts.map +1 -0
- package/dist/work/ticket-writeback.js +73 -0
- package/dist/work/ticket-writeback.js.map +1 -0
- package/dist/work/work-key.d.ts +2 -0
- package/dist/work/work-key.d.ts.map +1 -1
- package/dist/work/work-key.js +4 -0
- package/dist/work/work-key.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { reworkWorker } from '../phases/check.js';
|
|
2
|
+
import { parseReworkCommand } from '../queue/comment-rework-trigger.js';
|
|
2
3
|
import { UNTRUSTED_REVIEW_FEEDBACK_NOTICE, wrapUntrustedReviewFeedback } from '../utils/untrusted-input.js';
|
|
3
4
|
export class ReviewReworkError extends Error {
|
|
4
5
|
name = 'ReviewReworkError';
|
|
5
6
|
}
|
|
6
7
|
const REVIEW_FEEDBACK_MAX_CHARS = 20_000;
|
|
7
|
-
export const REVIEW_REWORK_INSTRUCTIONS = "This round addresses a reviewer's change request on the open PR, not a checker failure. " +
|
|
8
|
+
export const REVIEW_REWORK_INSTRUCTIONS = "This round addresses a reviewer's change request or feedback comment on the open PR, not a checker failure. " +
|
|
8
9
|
'Make the changes each review comment asks for, scoped to the files and lines it names. ' +
|
|
9
10
|
'Do not change code the review does not ask about. If a comment conflicts with the spec, follow the spec and say so in the commit message.';
|
|
10
11
|
const errorMessage = (err) => (err instanceof Error ? err.message : String(err));
|
|
@@ -39,16 +40,36 @@ export async function fetchReviewFeedback(octokit, opts) {
|
|
|
39
40
|
})),
|
|
40
41
|
};
|
|
41
42
|
}
|
|
43
|
+
/** The feedback of one `/factory rework` comment, re-read from GitHub so only the text after the command is used. */
|
|
44
|
+
export async function fetchCommentFeedback(octokit, opts) {
|
|
45
|
+
const { owner, repo, prNumber, commentId } = opts;
|
|
46
|
+
const { data: comment } = await octokit.rest.issues.getComment({ owner, repo, comment_id: commentId });
|
|
47
|
+
const feedback = parseReworkCommand(comment.body ?? '');
|
|
48
|
+
if (feedback === null || feedback === '') {
|
|
49
|
+
throw new ReviewReworkError(`comment ${commentId} on PR #${prNumber} is no longer a /factory rework command`);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
prNumber,
|
|
53
|
+
reviewId: commentId,
|
|
54
|
+
reviewer: comment.user?.login ?? '',
|
|
55
|
+
state: 'COMMENTED',
|
|
56
|
+
body: feedback,
|
|
57
|
+
comments: [],
|
|
58
|
+
source: 'comment',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
42
61
|
export function renderReviewFeedback(feedback) {
|
|
43
62
|
const comments = feedback.comments.length === 0
|
|
44
63
|
? ['(no inline comments)']
|
|
45
64
|
: feedback.comments.map((c) => `- ${c.path}${c.line === undefined ? '' : `:${c.line}`} (@${c.author}):\n ${c.body}`);
|
|
46
|
-
let inner =
|
|
47
|
-
`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
let inner = feedback.source === 'comment'
|
|
66
|
+
? [`Comment ${feedback.reviewId} by @${feedback.reviewer} on PR #${feedback.prNumber}:`, feedback.body].join('\n')
|
|
67
|
+
: [
|
|
68
|
+
`Review ${feedback.reviewId} by @${feedback.reviewer} (${feedback.state}) on PR #${feedback.prNumber}:`,
|
|
69
|
+
feedback.body === '' ? '(no review body)' : feedback.body,
|
|
70
|
+
'Inline comments:',
|
|
71
|
+
...comments,
|
|
72
|
+
].join('\n');
|
|
52
73
|
if (inner.length > REVIEW_FEEDBACK_MAX_CHARS) {
|
|
53
74
|
inner = `${inner.slice(0, REVIEW_FEEDBACK_MAX_CHARS)}\n… (review truncated)`;
|
|
54
75
|
}
|
|
@@ -65,8 +86,10 @@ export function reviewReworkSummary(feedback) {
|
|
|
65
86
|
};
|
|
66
87
|
}
|
|
67
88
|
/** A synthetic CHECK resume: skips PLAN and BUILD for a review-rework run. */
|
|
68
|
-
export function reviewReworkResume(request) {
|
|
69
|
-
if (
|
|
89
|
+
export function reviewReworkResume(request, feedbackPlan) {
|
|
90
|
+
if (feedbackPlan?.replan)
|
|
91
|
+
return undefined;
|
|
92
|
+
if (!request.reviewRework && !request.iterate && !request.feedbackRound)
|
|
70
93
|
return undefined;
|
|
71
94
|
return {
|
|
72
95
|
phase: 'check',
|
|
@@ -75,34 +98,24 @@ export function reviewReworkResume(request) {
|
|
|
75
98
|
buildMinutes: 0,
|
|
76
99
|
};
|
|
77
100
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
feedback = await fetchReviewFeedback(octokit, {
|
|
89
|
-
owner,
|
|
90
|
-
repo: name,
|
|
91
|
-
prNumber: target.prNumber,
|
|
92
|
-
reviewId: target.reviewId,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
if (err instanceof ReviewReworkError)
|
|
97
|
-
throw err;
|
|
98
|
-
throw new ReviewReworkError(`could not read ${where}: ${errorMessage(err)}`, { cause: err });
|
|
101
|
+
/** Fails closed unless the PR is open with `branch` as head, so a rework can never ship to a different PR. */
|
|
102
|
+
async function assertOpenPrHead(octokit, opts) {
|
|
103
|
+
const { data: pull } = await octokit.rest.pulls.get({
|
|
104
|
+
owner: opts.owner,
|
|
105
|
+
repo: opts.repo,
|
|
106
|
+
pull_number: opts.prNumber,
|
|
107
|
+
});
|
|
108
|
+
if (pull.state !== 'open' || pull.head.ref !== opts.branch) {
|
|
109
|
+
throw new ReviewReworkError(`PR #${opts.prNumber} must be open with head ${opts.branch}; found ${pull.state} with head ${pull.head.ref}`);
|
|
99
110
|
}
|
|
100
|
-
|
|
111
|
+
}
|
|
112
|
+
/** One rework worker call on the PR branch for `summary`; throws when the worker never ran. */
|
|
113
|
+
async function runReworkWorker(checkOpts, summary, where, rework) {
|
|
101
114
|
const worked = await rework({
|
|
102
115
|
issue: checkOpts.issue,
|
|
103
116
|
worktree: checkOpts.worktree,
|
|
104
117
|
specPath: checkOpts.specPath,
|
|
105
|
-
summary
|
|
118
|
+
summary,
|
|
106
119
|
constitution: checkOpts.constitution,
|
|
107
120
|
router: checkOpts.router,
|
|
108
121
|
log: checkOpts.log,
|
|
@@ -121,6 +134,37 @@ export async function runReviewReworkBuild(opts) {
|
|
|
121
134
|
if (!worked.modelCompleted) {
|
|
122
135
|
throw new ReviewReworkError(`review rework worker never ran for ${where}${worked.failureReason ? `: ${worked.failureReason}` : ''}`);
|
|
123
136
|
}
|
|
137
|
+
}
|
|
138
|
+
export async function runReviewReworkBuild(opts) {
|
|
139
|
+
const { target, repo, branch, octokit, checkOpts, rework = reworkWorker } = opts;
|
|
140
|
+
const [owner = '', name = ''] = repo.split('/');
|
|
141
|
+
const kind = target.source === 'comment' ? 'comment' : 'review';
|
|
142
|
+
const where = `PR #${target.prNumber} / ${kind} ${target.reviewId}`;
|
|
143
|
+
let feedback;
|
|
144
|
+
try {
|
|
145
|
+
await assertOpenPrHead(octokit, { owner, repo: name, prNumber: target.prNumber, branch });
|
|
146
|
+
feedback =
|
|
147
|
+
target.source === 'comment'
|
|
148
|
+
? await fetchCommentFeedback(octokit, {
|
|
149
|
+
owner,
|
|
150
|
+
repo: name,
|
|
151
|
+
prNumber: target.prNumber,
|
|
152
|
+
commentId: target.reviewId,
|
|
153
|
+
})
|
|
154
|
+
: await fetchReviewFeedback(octokit, {
|
|
155
|
+
owner,
|
|
156
|
+
repo: name,
|
|
157
|
+
prNumber: target.prNumber,
|
|
158
|
+
reviewId: target.reviewId,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
if (err instanceof ReviewReworkError)
|
|
163
|
+
throw err;
|
|
164
|
+
throw new ReviewReworkError(`could not read ${where}: ${errorMessage(err)}`, { cause: err });
|
|
165
|
+
}
|
|
166
|
+
checkOpts.log('rework', `review rework: PR #${target.prNumber} ${kind} ${target.reviewId} by @${target.reviewer} — ${feedback.comments.length} inline comment(s) on ${branch}`);
|
|
167
|
+
await runReworkWorker(checkOpts, reviewReworkSummary(feedback), where, rework);
|
|
124
168
|
return { feedback };
|
|
125
169
|
}
|
|
126
170
|
/** Iterate fails closed unless the PR is still open with the run branch as head, so SHIP can never open a new PR. */
|
|
@@ -140,9 +184,31 @@ async function guardIterateTarget(target, request, octokit, checkOpts) {
|
|
|
140
184
|
checkOpts.log('rework', `iterate: PR #${target.prNumber} by @${target.actor} (comment ${target.commentId}) — re-running CHECK on ${request.branch}`);
|
|
141
185
|
}
|
|
142
186
|
/** runIssue's hook before the first CHECK: reworks the requested review unless a CHECK resume was asked for. */
|
|
143
|
-
export async function runRequestedReviewRework(request, ports, checkOpts) {
|
|
187
|
+
export async function runRequestedReviewRework(request, ports, checkOpts, feedbackPlan) {
|
|
144
188
|
if (request.resumeFrom)
|
|
145
189
|
return;
|
|
190
|
+
if (feedbackPlan) {
|
|
191
|
+
if (feedbackPlan.summary === undefined)
|
|
192
|
+
return;
|
|
193
|
+
const where = `PR #${feedbackPlan.prNumber} / feedback round`;
|
|
194
|
+
const [owner = '', name = ''] = request.repo.split('/');
|
|
195
|
+
try {
|
|
196
|
+
await assertOpenPrHead(ports.octokit, {
|
|
197
|
+
owner,
|
|
198
|
+
repo: name,
|
|
199
|
+
prNumber: feedbackPlan.prNumber,
|
|
200
|
+
branch: request.branch,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
if (err instanceof ReviewReworkError)
|
|
205
|
+
throw err;
|
|
206
|
+
throw new ReviewReworkError(`could not read ${where}: ${errorMessage(err)}`, { cause: err });
|
|
207
|
+
}
|
|
208
|
+
checkOpts.log('rework', `feedback round: reworking PR #${feedbackPlan.prNumber} on ${request.branch}`);
|
|
209
|
+
await runReworkWorker(checkOpts, feedbackPlan.summary, where, ports.reworkWorker ?? reworkWorker);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
146
212
|
if (!request.reviewRework) {
|
|
147
213
|
if (request.iterate)
|
|
148
214
|
await guardIterateTarget(request.iterate, request, ports.octokit, checkOpts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-rework.js","sourceRoot":"","sources":["../../src/run/review-rework.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"review-rework.js","sourceRoot":"","sources":["../../src/run/review-rework.ts"],"names":[],"mappings":"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"}
|
package/dist/run/run-issue.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ import type { SandboxPolicy } from '../sandbox/index.js';
|
|
|
24
24
|
import { type ConsumedSteering } from '../steering/index.js';
|
|
25
25
|
import type { Constitution, FailurePhase } from '../types/index.js';
|
|
26
26
|
import { type WorkRequest, type WorkRequestSourceKind } from '../work/index.js';
|
|
27
|
+
import { type LinearRunPorts } from './linear-run.js';
|
|
27
28
|
import { type LaneClaimStalenessProbe, type LaneFileGuard } from './lane-file-guard.js';
|
|
28
29
|
import type { BuildRoute, RunOutcome } from './outcome.js';
|
|
29
30
|
import type { RunPolicy } from './policy.js';
|
|
@@ -36,6 +37,7 @@ import type { IssueRunState } from '../types/index.js';
|
|
|
36
37
|
import type { RequiredChecksVerdict } from '../utils/required-checks.js';
|
|
37
38
|
import type { RunReportInfo } from './run-report-info.js';
|
|
38
39
|
import { type ProviderProbe } from './provider-probe.js';
|
|
40
|
+
import type { PrerequisiteStackTarget } from '../queue/prerequisite-stack.js';
|
|
39
41
|
/** Everything one run needs decided, as a plain resolved value — the CLI adapter
|
|
40
42
|
* computes this today; no config/file/path resolution happens in here. */
|
|
41
43
|
export interface RunRequest extends ReworkRequestFields {
|
|
@@ -129,6 +131,8 @@ export interface RunRequest extends ReworkRequestFields {
|
|
|
129
131
|
/** Resume at CHECK on a kept worktree (#2564): PLAN and BUILD are skipped. */
|
|
130
132
|
/** Parent ref of a stacked slice branch (#2716); CHECK and the review floor diff against it. Absent = origin/main. */
|
|
131
133
|
parentBaseRef?: string;
|
|
134
|
+
/** The open prerequisite PR this issue is stacked on (#3916); its stack line and marker go into the PR body. */
|
|
135
|
+
prerequisiteStack?: PrerequisiteStackTarget;
|
|
132
136
|
resumeFrom?: {
|
|
133
137
|
phase: 'check';
|
|
134
138
|
diffBase?: string;
|
|
@@ -157,7 +161,7 @@ export interface RunRequest extends ReworkRequestFields {
|
|
|
157
161
|
/** The injected seams runIssue needs. Effectful, path-bound concerns (Octokit, worktree
|
|
158
162
|
* layout, approvals/steering directories, report/artifact destinations) are the caller's
|
|
159
163
|
* responsibility to wire — runIssue only calls the closures it is handed. */
|
|
160
|
-
export interface RunPorts extends CiReworkPorts {
|
|
164
|
+
export interface RunPorts extends CiReworkPorts, LinearRunPorts {
|
|
161
165
|
/** Run-state slice-plan store for briefs (#3813); absent = the issue's slice-plan comment. */
|
|
162
166
|
slicePlanStore?: SlicePlanStore;
|
|
163
167
|
/** ADR-0161 stack mode: creates a slice branch in the worktree. Defaults to createStackSliceBranch. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../src/run/run-issue.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAyB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../src/run/run-issue.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,uBAAuB,IAAI,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAyB,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKlE,OAAO,EAAsB,KAAK,QAAQ,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAyB9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAA6D,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAmC,YAAY,EAAkB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,qBAAqB,EAAoB,MAAM,kBAAkB,CAAC;AAElG,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAIL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAkC,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAIpE,OAAO,EAAgD,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAK9E;2EAC2E;AAC3E,MAAM,WAAW,UAAW,SAAQ,mBAAmB;IACrD,oGAAoG;IACpG,eAAe,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,0HAA0H;IAC1H,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,8FAA8F;IAC9F,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,qBAAqB,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;QACpB,6CAA6C;QAC7C,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oHAAoH;IACpH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;gEAC4D;IAC5D,2EAA2E;IAC3E,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yGAAyG;IACzG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gHAAgH;IAChH,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACrG,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5G,SAAS,EAAE,kBAAkB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3D,iFAAiF;IACjF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iEAAiE;IACjE,mBAAmB,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IACpF,0FAA0F;IAC1F,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uHAAuH;IACvH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kGAAkG;IAClG,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,8EAA8E;IAC9E,sHAAsH;IACtH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gHAAgH;IAChH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3G;iGAC6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sJAAsJ;IACtJ,cAAc,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;8EAE8E;AAC9E,MAAM,WAAW,QAAS,SAAQ,aAAa,EAAE,cAAc;IAC7D,8FAA8F;IAC9F,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uGAAuG;IACvG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG;oFACgF;IAChF,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,SAAS,EAAE,SAAS,CAAC;IACrB,8FAA8F;IAC9F,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAClC;iFAC6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD;wFACoF;IACpF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF;8FAC0F;IAC1F,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kFAAkF;IAClF,mBAAmB,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,MAAM,YAAY,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,gBAAgB,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;uGAGmG;IACnG,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3E,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;qFAEiF;IACjF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D;;8DAE0D;IAC1D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;4FAGwF;IACxF,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;;uGAEmG;IACnG,SAAS,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACtC,iIAAiI;IACjI,uBAAuB,CAAC,EAAE,OAAO,8BAA8B,CAAC;IAChE,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,SAAS,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACpC,yGAAyG;IACzG,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IACzC,0HAA0H;IAC1H,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxE,uHAAuH;IACvH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gGAAgG;IAChG,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,iGAAiG;IACjG,sBAAsB,CAAC,EAAE,CACvB,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,KACnB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;CACvC;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAe9G"}
|
package/dist/run/run-issue.js
CHANGED
|
@@ -22,7 +22,6 @@ import { laneEnv } from '../environment/index.js';
|
|
|
22
22
|
import { buildPhase as buildPhaseDefault } from '../phases/build.js';
|
|
23
23
|
import { installLaneDependencies as installLaneDependenciesDefault } from './lane-install.js';
|
|
24
24
|
import { checkPhase as checkPhaseDefault } from '../phases/check.js';
|
|
25
|
-
import { renderEnvironmentReleaseComment } from '../phases/environment-release.js';
|
|
26
25
|
import { describeConstitutionSource } from '../constitutions/index.js';
|
|
27
26
|
import { lintFactoryConfig } from '../config/config-lint.js';
|
|
28
27
|
import { codexSandboxWarningMessages, sizeGateModeWarningMessages, unknownConfigKeyMessages, } from '../config/config-schema-lint.js';
|
|
@@ -34,7 +33,7 @@ import { beginBuildRoute, compatibleBuildModel, laneRouteCapabilities } from './
|
|
|
34
33
|
import { classifyCheckFailure } from './check-verdict.js';
|
|
35
34
|
import { withSingleTerminalEvent } from './terminal-events.js';
|
|
36
35
|
import { withRunAttribution } from './attribution.js';
|
|
37
|
-
import {
|
|
36
|
+
import { parkPayload, postEnvironmentReleaseComment, publishParkComment } from './park-comment.js';
|
|
38
37
|
import { createRunPhaseLogger } from './run-phase-log.js';
|
|
39
38
|
import { providerFailureRecorder } from './provider-failure-recorder.js';
|
|
40
39
|
import { gateBuildTarget, pickOrderedProvider } from './provider-breaker-gate.js';
|
|
@@ -58,6 +57,7 @@ import { ProcessGroupTracker } from '../environment/process-groups.js';
|
|
|
58
57
|
import { describeSteering } from '../steering/index.js';
|
|
59
58
|
import { workKeyFromIssue } from '../work/index.js';
|
|
60
59
|
import { LOCAL_BRIEF_SOURCE } from '../work/local-brief.js';
|
|
60
|
+
import { linearRunWriteback } from './linear-run.js';
|
|
61
61
|
import { deferOnLaneCollision, releaseLaneClaim, touchedFilesFrom, } from './lane-file-guard.js';
|
|
62
62
|
import { designSmellFindingFor, parkReasonFor, reworkRouteFor } from './outcome.js';
|
|
63
63
|
import { configParkMessage, formatPreservedBuildMessage, issueBodyHash, preservedFixTarget, } from './resume-context.js';
|
|
@@ -65,16 +65,15 @@ import { safeRecordRunState, terminalRunStateUpdate, thrownRunStateUpdate } from
|
|
|
65
65
|
import { runStatusForPhase } from './state.js';
|
|
66
66
|
import { settleParkedPullRequest } from './park-pr.js';
|
|
67
67
|
import { runParkSteward } from './park-steward.js';
|
|
68
|
+
import * as feedbackRound from './feedback-round-hooks.js';
|
|
68
69
|
import { reviewReworkResume, runRequestedReviewRework } from './review-rework.js';
|
|
69
70
|
import { shipWithCiRework } from './ci-rework-loop.js';
|
|
70
71
|
import { parkLogExtra } from './ship-park.js';
|
|
71
72
|
import { budgetGuardFor, enforceIssueBudget } from './budget.js';
|
|
72
73
|
import { providerProbe } from './provider-probe.js';
|
|
74
|
+
import { errorMessage } from '../checkers/preview-wait.js';
|
|
73
75
|
import { renderPreviousAttempt } from './previous-attempt.js';
|
|
74
76
|
import { withoutHumanOnlyLabels } from './max-lines-override.js';
|
|
75
|
-
function errorMessage(err) {
|
|
76
|
-
return err instanceof Error ? err.message : String(err);
|
|
77
|
-
}
|
|
78
77
|
export async function runIssue(request, policy, rawPorts) {
|
|
79
78
|
const { ports: attributed, stamp } = withRunAttribution(rawPorts);
|
|
80
79
|
const ports = withSingleTerminalEvent(attributed);
|
|
@@ -103,10 +102,11 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
103
102
|
const checkPhase = (o) => slot('check', () => (ports.checkPhase ?? checkPhaseDefault)(o));
|
|
104
103
|
const shipPhase = ports.shipPhase ?? shipPhaseDefault;
|
|
105
104
|
const log = ports.events();
|
|
105
|
+
const linear = linearRunWriteback(request.work, ports, log);
|
|
106
106
|
// One id per run: BUILD, CHECK and rework share a per-run VBCSCompiler server (#1910).
|
|
107
107
|
// 12 hex chars keeps the compiler's Unix-socket pipe path short under macOS $TMPDIR.
|
|
108
108
|
const runId = randomUUID().replace(/-/g, '').slice(0, 12);
|
|
109
|
-
|
|
109
|
+
let previousAttemptNote = renderPreviousAttempt(request.previousAttempt);
|
|
110
110
|
const phaseLogger = createRunPhaseLogger({
|
|
111
111
|
logsDir: request.logsDir,
|
|
112
112
|
issue: workKey,
|
|
@@ -210,13 +210,16 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
210
210
|
}
|
|
211
211
|
let settled;
|
|
212
212
|
if (!request.localOnly && !request.noPr) {
|
|
213
|
-
|
|
213
|
+
// prettier-ignore
|
|
214
|
+
const parkInput = { reason, message: terminalMessage, runId, branch: request.branch, lane: request.lane, blockers: [], ...(designSmell ? { designSmell } : {}) };
|
|
215
|
+
if (linear)
|
|
216
|
+
await linear.park(parkInput);
|
|
217
|
+
else if (request.work.kind !== LOCAL_BRIEF_SOURCE) {
|
|
214
218
|
const posted = await publishParkComment({
|
|
215
219
|
octokit: ports.octokit,
|
|
216
220
|
repo: request.repo,
|
|
217
221
|
worktree: ports.workspace.path,
|
|
218
|
-
|
|
219
|
-
input: { issue: workKey, reason, message: terminalMessage, runId, branch: request.branch, lane: request.lane, blockers: [], ...(designSmell ? { designSmell } : {}) },
|
|
222
|
+
input: { issue: workKey, ...parkInput },
|
|
220
223
|
});
|
|
221
224
|
if (!posted.ok)
|
|
222
225
|
log('environment_warning', `could not post the issue park comment: ${posted.error}`);
|
|
@@ -359,7 +362,12 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
359
362
|
let builtModel;
|
|
360
363
|
let pinNote;
|
|
361
364
|
let buildMinutes;
|
|
362
|
-
const
|
|
365
|
+
const feedbackPlan = await feedbackRound.prepareFeedbackForRun(request, ports, log);
|
|
366
|
+
const idle = await feedbackRound.idleFeedbackRound(feedbackPlan, request, ports, route, log);
|
|
367
|
+
if (idle)
|
|
368
|
+
return idle;
|
|
369
|
+
previousAttemptNote = feedbackRound.feedbackReplanNote(previousAttemptNote, feedbackPlan);
|
|
370
|
+
const resumed = request.resumeFrom ?? reviewReworkResume(request, feedbackPlan);
|
|
363
371
|
if (resumed) {
|
|
364
372
|
ports.events('check')('check', `resuming #${workKey} from CHECK on kept branch ${request.branch} — PLAN and BUILD skipped`);
|
|
365
373
|
route = resumed.route;
|
|
@@ -391,7 +399,8 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
391
399
|
if (derivedRoute) {
|
|
392
400
|
log('model-override', `build route derived from pinned build model ${request.modelPins.build} → ${derivedRoute}`);
|
|
393
401
|
}
|
|
394
|
-
const
|
|
402
|
+
const planReuse = feedbackPlan?.replan ? undefined : ports.planReuse;
|
|
403
|
+
const reused = await loadReusablePlan(planReuse, { ...request, issue: workKey }, log, ports.events('plan'));
|
|
395
404
|
const routeCaps = await laneRouteCapabilities(request, ports, ports.events('plan'));
|
|
396
405
|
const planGate = reused ? undefined : await capGate.enterPlan(route, ports.events('plan'));
|
|
397
406
|
if (planGate?.released)
|
|
@@ -425,7 +434,7 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
425
434
|
sizeGateMode: request.sizeGateMode,
|
|
426
435
|
parkOverBudget: request.parkOverBudget,
|
|
427
436
|
sliceIndex: request.sliceIndex,
|
|
428
|
-
slicePlanStore: ports.slicePlanStore,
|
|
437
|
+
slicePlanStore: linear?.slicePlanStore ?? ports.slicePlanStore,
|
|
429
438
|
maxSlices: request.maxSlices,
|
|
430
439
|
sizeBudget: request.sizeBudget,
|
|
431
440
|
blockUnresolvedRegressions: request.blockUnresolvedRegressions,
|
|
@@ -640,7 +649,7 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
640
649
|
requiredChecksVerdict: ports.requiredChecksVerdict,
|
|
641
650
|
};
|
|
642
651
|
capGate.watchCheck(builtRoute, builtModel);
|
|
643
|
-
await runRequestedReviewRework(request, ports, checkOpts);
|
|
652
|
+
await runRequestedReviewRework(request, ports, checkOpts, feedbackPlan);
|
|
644
653
|
const check = await (request.providerOrder
|
|
645
654
|
? runCheckStage(runStage, { ...gateDeps, order: request.providerOrder }, checkPhase, checkOpts, await worktreeRestorer(gitExec, ports.workspace.path, ports.events('check')))
|
|
646
655
|
: checkPhase(checkOpts));
|
|
@@ -679,20 +688,17 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
679
688
|
configFile: request.repoConfigFile,
|
|
680
689
|
}), failure);
|
|
681
690
|
}
|
|
682
|
-
if (!request.localOnly && !request.noPr)
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
}
|
|
693
|
-
catch (err) {
|
|
694
|
-
log('environment_warning', `could not post the environment-failure comment: ${errorMessage(err)}`);
|
|
695
|
-
}
|
|
691
|
+
if (linear && !request.localOnly && !request.noPr)
|
|
692
|
+
await linear.environment(env);
|
|
693
|
+
else if (!request.localOnly && !request.noPr) {
|
|
694
|
+
const warn = (message) => log('environment_warning', message);
|
|
695
|
+
await postEnvironmentReleaseComment({
|
|
696
|
+
octokit: ports.octokit,
|
|
697
|
+
repo: request.repo,
|
|
698
|
+
issue: workKey,
|
|
699
|
+
env,
|
|
700
|
+
warn,
|
|
701
|
+
});
|
|
696
702
|
}
|
|
697
703
|
let preserve = ports.checkResume !== undefined &&
|
|
698
704
|
!request.localOnly &&
|
|
@@ -858,6 +864,7 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
858
864
|
const { ship, parked } = shipped;
|
|
859
865
|
if (parked)
|
|
860
866
|
return await terminalParked(parked.reason, parked.message, parked.checkFailure, parked.ciFailure);
|
|
867
|
+
await feedbackRound.publishFeedbackForRun(request, ports, feedbackPlan, ship.headSha, log);
|
|
861
868
|
if (planSlice) {
|
|
862
869
|
const failure = await recordShippedSlice({
|
|
863
870
|
octokit: ports.octokit,
|
|
@@ -870,7 +877,7 @@ async function runIssueOnce(initialRequest, policy, ports, observed) {
|
|
|
870
877
|
// Brief PRs carry no stack-order line (shipPhase ignores the stack for inline work), so skip
|
|
871
878
|
// the parent-PR update: its branch names hold the brief's stand-in number (#3813).
|
|
872
879
|
stackMode: request.work.kind !== LOCAL_BRIEF_SOURCE,
|
|
873
|
-
store: ports.slicePlanStore,
|
|
880
|
+
store: linear?.slicePlanStore ?? ports.slicePlanStore,
|
|
874
881
|
log,
|
|
875
882
|
});
|
|
876
883
|
if (failure !== undefined)
|