@on-par/factory-core 0.9.28-next.2 → 0.9.28-next.21
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/blockers/declared-prerequisites.d.ts +4 -1
- package/dist/blockers/declared-prerequisites.d.ts.map +1 -1
- package/dist/blockers/declared-prerequisites.js +10 -5
- package/dist/blockers/declared-prerequisites.js.map +1 -1
- 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 +1 -0
- package/dist/checkers/internal-exports.d.ts.map +1 -1
- package/dist/checkers/internal-exports.js +1 -0
- 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 +11 -2
- package/dist/config/example.js.map +1 -1
- package/dist/config/index.d.ts +20 -32
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +11 -30
- 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/runtime-config-keys.d.ts.map +1 -1
- package/dist/config/runtime-config-keys.js +1 -0
- package/dist/config/runtime-config-keys.js.map +1 -1
- package/dist/config/tracker-section.d.ts +39 -0
- package/dist/config/tracker-section.d.ts.map +1 -0
- package/dist/config/tracker-section.js +31 -0
- package/dist/config/tracker-section.js.map +1 -0
- 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/queue-traits.d.ts +1 -1
- package/dist/events/queue-traits.d.ts.map +1 -1
- package/dist/events/queue-traits.js +5 -1
- package/dist/events/queue-traits.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 +11 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +11 -0
- package/dist/internal.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-ci-watch.d.ts +25 -0
- package/dist/phases/ship-ci-watch.d.ts.map +1 -0
- package/dist/phases/ship-ci-watch.js +53 -0
- package/dist/phases/ship-ci-watch.js.map +1 -0
- package/dist/phases/ship-evidence-comment.d.ts +12 -0
- package/dist/phases/ship-evidence-comment.d.ts.map +1 -0
- package/dist/phases/ship-evidence-comment.js +30 -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-open-pr.d.ts +19 -0
- package/dist/phases/ship-open-pr.d.ts.map +1 -0
- package/dist/phases/ship-open-pr.js +71 -0
- package/dist/phases/ship-open-pr.js.map +1 -0
- package/dist/phases/ship-options.d.ts +76 -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-pr-lookup.d.ts +8 -0
- package/dist/phases/ship-pr-lookup.d.ts.map +1 -0
- package/dist/phases/ship-pr-lookup.js +41 -0
- package/dist/phases/ship-pr-lookup.js.map +1 -0
- package/dist/phases/ship-recovery.d.ts +16 -0
- package/dist/phases/ship-recovery.d.ts.map +1 -0
- package/dist/phases/ship-recovery.js +81 -0
- package/dist/phases/ship-recovery.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-types.d.ts +36 -0
- package/dist/phases/ship-types.d.ts.map +1 -0
- package/dist/phases/ship-types.js +2 -0
- package/dist/phases/ship-types.js.map +1 -0
- package/dist/phases/ship.d.ts +6 -113
- package/dist/phases/ship.d.ts.map +1 -1
- package/dist/phases/ship.js +55 -458
- package/dist/phases/ship.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/internal-exports.d.ts +2 -0
- package/dist/queue/internal-exports.d.ts.map +1 -1
- package/dist/queue/internal-exports.js +1 -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-lifecycle.d.ts +62 -0
- package/dist/queue/linear-queue-lifecycle.d.ts.map +1 -0
- package/dist/queue/linear-queue-lifecycle.js +139 -0
- package/dist/queue/linear-queue-lifecycle.js.map +1 -0
- package/dist/queue/linear-queue.d.ts +51 -0
- package/dist/queue/linear-queue.d.ts.map +1 -0
- package/dist/queue/linear-queue.js +335 -0
- package/dist/queue/linear-queue.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 +12 -8
- package/dist/queue/review-rework-trigger.js.map +1 -1
- package/dist/reports/pr-body.d.ts.map +1 -1
- package/dist/reports/pr-body.js +18 -8
- package/dist/reports/pr-body.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/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 +10 -0
- package/dist/run/review-rework.d.ts.map +1 -1
- package/dist/run/review-rework.js +45 -15
- package/dist/run/review-rework.js.map +1 -1
- package/dist/run/state.d.ts +6 -4
- package/dist/run/state.d.ts.map +1 -1
- package/dist/run/state.js +8 -5
- package/dist/run/state.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/index.d.ts +2 -2
- package/dist/work/index.d.ts.map +1 -1
- package/dist/work/index.js +4 -2
- package/dist/work/index.js.map +1 -1
- package/dist/work/linear-client.d.ts +21 -0
- package/dist/work/linear-client.d.ts.map +1 -0
- package/dist/work/linear-client.js +69 -0
- package/dist/work/linear-client.js.map +1 -0
- package/dist/work/linear-issue.d.ts +11 -0
- package/dist/work/linear-issue.d.ts.map +1 -0
- package/dist/work/linear-issue.js +69 -0
- package/dist/work/linear-issue.js.map +1 -0
- package/dist/work/linear-preflight.d.ts +21 -0
- package/dist/work/linear-preflight.d.ts.map +1 -0
- package/dist/work/linear-preflight.js +67 -0
- package/dist/work/linear-preflight.js.map +1 -0
- package/package.json +5 -5
package/dist/reports/pr-body.js
CHANGED
|
@@ -10,14 +10,24 @@ const WHAT_CHANGED_SENTENCES = 3;
|
|
|
10
10
|
export const PR_BODY_FOOTER = defaultFactoryConfig.pr.footer;
|
|
11
11
|
const KEY = String.raw `[A-Z][A-Z0-9]{1,9}-\d+`;
|
|
12
12
|
const LEADING_KEY = new RegExp(String.raw `^\s*(?:[\[(]${KEY}[\])]|${KEY}(?=\s*(?:[:\-–—|]|$)))\s*[:\-–—|]?\s*`);
|
|
13
|
-
const TRAILING_KEY = new RegExp(String.raw
|
|
14
|
-
const LOCAL_BRIEF =
|
|
13
|
+
const TRAILING_KEY = new RegExp(String.raw `[\[(]${KEY}[\])]$`);
|
|
14
|
+
const LOCAL_BRIEF = /\blocal[ -]brief\b/i;
|
|
15
|
+
/** Drops every sentence (a run up to a `.` or line end) that mentions a "local brief"; linear time. */
|
|
16
|
+
function dropLocalBriefSentences(text) {
|
|
17
|
+
return text
|
|
18
|
+
.split('\n')
|
|
19
|
+
.map((line) => line
|
|
20
|
+
.split(/(?<=\.)/)
|
|
21
|
+
.filter((piece) => !LOCAL_BRIEF.test(piece))
|
|
22
|
+
.join(''))
|
|
23
|
+
.join('\n');
|
|
24
|
+
}
|
|
15
25
|
/** A brief's title with its tracker-style id (`ARA-12: …`, `[ARA-12] …`, `… (ARA-12)`) and any "local brief"
|
|
16
26
|
* mention removed, for PR titles and bodies: reviewers cannot look those ids up. Plain words like UTF-8 stay. */
|
|
17
27
|
export function stripBriefIds(text) {
|
|
18
|
-
const stripped = text
|
|
19
|
-
.replace(LOCAL_BRIEF, '')
|
|
28
|
+
const stripped = dropLocalBriefSentences(text)
|
|
20
29
|
.replace(LEADING_KEY, '')
|
|
30
|
+
.trimEnd()
|
|
21
31
|
.replace(TRAILING_KEY, '')
|
|
22
32
|
.replace(/\s+/g, ' ')
|
|
23
33
|
.trim();
|
|
@@ -25,10 +35,10 @@ export function stripBriefIds(text) {
|
|
|
25
35
|
}
|
|
26
36
|
/** Summary line for brief-driven work: what it covers (the brief's title) and the open PR it builds on. Never the brief's id, digest or path. */
|
|
27
37
|
export function briefSummaryLine(title, basePr) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.
|
|
31
|
-
|
|
38
|
+
let what = stripBriefIds(title);
|
|
39
|
+
while (what.length > 0 && '.!?…'.includes(what.charAt(what.length - 1))) {
|
|
40
|
+
what = what.slice(0, -1);
|
|
41
|
+
}
|
|
32
42
|
return `${what}.${basePr === undefined ? '' : ` Builds on #${basePr}.`}`;
|
|
33
43
|
}
|
|
34
44
|
export function renderPrBody(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-body.js","sourceRoot":"","sources":["../../src/reports/pr-body.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,+FAA+F;AAC/F,mGAAmG;AACnG,oDAAoD;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,sCAAsC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC,EAAE,CAAC,MAAM,CAAC;AAyB7D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA,wBAAwB,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,eAAe,GAAG,SAAS,GAAG,uCAAuC,CAAC,CAAC;AAChH,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"pr-body.js","sourceRoot":"","sources":["../../src/reports/pr-body.ts"],"names":[],"mappings":"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"}
|
package/dist/run/ports.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { WorktreeSandbox } from '../utils/microvm.js';
|
|
|
6
6
|
import type { PrLookup } from '../phases/ship.js';
|
|
7
7
|
import type { RemoteBranchRecord } from '../types/index.js';
|
|
8
8
|
import { cleanupWorktree, setupWorktree } from '../utils/index.js';
|
|
9
|
+
import { setupInPlaceCheckout } from '../utils/in-place.js';
|
|
9
10
|
import type { LocalOnlyPolicy } from '../work/local-only.js';
|
|
10
11
|
/** The workspace-provisioning seam runIssue needs: a working tree the pipeline
|
|
11
12
|
* phases run in (cwd), and a teardown. */
|
|
@@ -49,6 +50,15 @@ export declare function worktreeWorkspace(opts: {
|
|
|
49
50
|
setup?: typeof setupWorktree;
|
|
50
51
|
cleanup?: typeof cleanupWorktree;
|
|
51
52
|
}): Promise<Workspace>;
|
|
53
|
+
/** In-place adapter (#3904): the current checkout IS the working tree. The factory did not
|
|
54
|
+
* create it, so dispose never tears it down. Locking stays the caller's responsibility. */
|
|
55
|
+
export declare function inPlaceWorkspace(opts: {
|
|
56
|
+
repoRoot: string;
|
|
57
|
+
branch: string;
|
|
58
|
+
log?: (type: EventKind, msg: string) => void;
|
|
59
|
+
findOpenPr?: (branch: string) => Promise<PrLookup>;
|
|
60
|
+
setup?: typeof setupInPlaceCheckout;
|
|
61
|
+
}): Promise<Workspace>;
|
|
52
62
|
/** Sim throwaway-workspace adapter: the sim's repoRoot IS the working tree; its
|
|
53
63
|
* dispose already removes every directory it created. */
|
|
54
64
|
export declare function simWorkspace(sim: SimWorkspace): Workspace;
|
package/dist/run/ports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/run/ports.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAEL,KAAK,uBAAuB,EAI7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;2CAC2C;AAC3C,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;kCAC8B;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C;AAED;;wCAEwC;AACxC,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;kEAC8D;IAC9D,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,sFAAsF;IACtF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8EAA8E;IAC9E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;aAGa;AACb,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,eAAe,CAAC;CAClC,GAAG,OAAO,CAAC,SAAS,CAAC,CAYrB;AAED;0DAC0D;AAC1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,CAEzD;AAED;mDACmD;AACnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAErE;AAED;;;sCAGsC;AACtC,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,uBAAuB,GAAG;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG,OAAO,CAAC,WAAW,CAAC,CAgBtB"}
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/run/ports.ts"],"names":[],"mappings":"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"}
|
package/dist/run/ports.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { acquirePortLease, laneEnv, recordLeasePgid, releasePortLease, } from '../environment/index.js';
|
|
7
7
|
import { ProcessGroupTracker } from '../environment/process-groups.js';
|
|
8
8
|
import { cleanupWorktree, setupWorktree } from '../utils/index.js';
|
|
9
|
+
import { setupInPlaceCheckout } from '../utils/in-place.js';
|
|
9
10
|
/** Locked-CLI-worktree adapter: provisions via setupWorktree, tears down via
|
|
10
11
|
* cleanupWorktree. Locking stays the caller's responsibility (unchanged from the
|
|
11
12
|
* CLI today); this adapter only names the seam. setup/cleanup are injectable for
|
|
@@ -23,6 +24,17 @@ export async function worktreeWorkspace(opts) {
|
|
|
23
24
|
dispose: () => cleanup(opts.repoRoot, opts.worktreePath, opts.log, opts.sandbox),
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
/** In-place adapter (#3904): the current checkout IS the working tree. The factory did not
|
|
28
|
+
* create it, so dispose never tears it down. Locking stays the caller's responsibility. */
|
|
29
|
+
export async function inPlaceWorkspace(opts) {
|
|
30
|
+
const setup = opts.setup ?? setupInPlaceCheckout;
|
|
31
|
+
const result = await setup(opts.repoRoot, opts.branch, opts.log, { findOpenPr: opts.findOpenPr });
|
|
32
|
+
return {
|
|
33
|
+
path: opts.repoRoot,
|
|
34
|
+
...(result?.remoteBranch ? { remoteBranch: result.remoteBranch } : {}),
|
|
35
|
+
dispose: async () => { },
|
|
36
|
+
};
|
|
37
|
+
}
|
|
26
38
|
/** Sim throwaway-workspace adapter: the sim's repoRoot IS the working tree; its
|
|
27
39
|
* dispose already removes every directory it created. */
|
|
28
40
|
export function simWorkspace(sim) {
|
package/dist/run/ports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/run/ports.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,qFAAqF;AACrF,sFAAsF;AACtF,iFAAiF;AACjF,gFAAgF;AAGhF,OAAO,EACL,gBAAgB,EAEhB,OAAO,EACP,eAAe,EACf,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAKvE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/run/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { Octokit } from '@octokit/rest';
|
|
2
|
+
import type { RunStatus } from '../types/index.js';
|
|
3
|
+
import { type WorkKey } from '../work/work-key.js';
|
|
4
|
+
export declare const PR_RUN_STATE_VERSION = "v1";
|
|
5
|
+
export declare const PR_RUN_STATUSES: readonly ['building', 'awaiting-ci', 'awaiting-review', 'parked'];
|
|
6
|
+
export type PrRunStatus = (typeof PR_RUN_STATUSES)[number];
|
|
7
|
+
export declare const SPEC_SUMMARY_MAX = 1000;
|
|
8
|
+
export declare const MAX_HANDLED_IDS = 200;
|
|
9
|
+
export declare const MAX_ROUNDS = 50;
|
|
10
|
+
export declare const MAX_ENCODED_CHARS = 60000;
|
|
11
|
+
export declare function prRunStateMarker(key: WorkKey): string;
|
|
12
|
+
export interface PrRunRound {
|
|
13
|
+
kind: 'check' | 'review' | 'ci';
|
|
14
|
+
id?: number;
|
|
15
|
+
headSha: string;
|
|
16
|
+
at: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PrRunState {
|
|
19
|
+
version: 1;
|
|
20
|
+
key: WorkKey;
|
|
21
|
+
prNumber: number;
|
|
22
|
+
status: PrRunStatus;
|
|
23
|
+
spec: {
|
|
24
|
+
sha256: string;
|
|
25
|
+
summary: string;
|
|
26
|
+
};
|
|
27
|
+
checkRework: {
|
|
28
|
+
used: number;
|
|
29
|
+
cap: number;
|
|
30
|
+
};
|
|
31
|
+
reviewRework: {
|
|
32
|
+
used: number;
|
|
33
|
+
cap: number;
|
|
34
|
+
};
|
|
35
|
+
handledReviewIds: number[];
|
|
36
|
+
handledCommentIds: number[];
|
|
37
|
+
rounds: PrRunRound[];
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
}
|
|
40
|
+
export type PrRunStateRejectReason = 'untrusted-author' | 'digest-mismatch' | 'key-mismatch' | 'malformed' | 'identity-unavailable';
|
|
41
|
+
export interface PrStateComment {
|
|
42
|
+
id: number;
|
|
43
|
+
authorId: number | undefined;
|
|
44
|
+
body: string;
|
|
45
|
+
}
|
|
46
|
+
type Ignored = {
|
|
47
|
+
commentId: number;
|
|
48
|
+
reason: PrRunStateRejectReason;
|
|
49
|
+
}[];
|
|
50
|
+
export type PrRunStateLoad = {
|
|
51
|
+
status: 'found';
|
|
52
|
+
commentId: number;
|
|
53
|
+
state: PrRunState;
|
|
54
|
+
ignored: Ignored;
|
|
55
|
+
} | {
|
|
56
|
+
status: 'none';
|
|
57
|
+
ignored: Ignored;
|
|
58
|
+
};
|
|
59
|
+
/** Allow-list step: rebuilds the state from known fields only, redacts the summary and bounds every list. */
|
|
60
|
+
export declare function sanitizePrRunState(state: PrRunState, maxIds?: number, maxRounds?: number): PrRunState;
|
|
61
|
+
/** The hidden marker block for a state; halves rounds and handled ids until it fits one comment. */
|
|
62
|
+
export declare function encodePrRunState(state: PrRunState): string;
|
|
63
|
+
export declare function decodePrRunState(body: string, key: WorkKey): {
|
|
64
|
+
ok: true;
|
|
65
|
+
state: PrRunState;
|
|
66
|
+
} | {
|
|
67
|
+
ok: false;
|
|
68
|
+
reason: PrRunStateRejectReason;
|
|
69
|
+
} | null;
|
|
70
|
+
/**
|
|
71
|
+
* Picks the state to trust: only a comment by `selfId` (the authenticated identity) is decoded. Lowest comment id
|
|
72
|
+
* wins, as in `readParkState`. An unknown identity fails closed: every marker comment is ignored.
|
|
73
|
+
*/
|
|
74
|
+
export declare function selectTrustedPrRunState(comments: readonly PrStateComment[], selfId: number | undefined, key: WorkKey): PrRunStateLoad;
|
|
75
|
+
/**
|
|
76
|
+
* Monotonic merge of local and remote state. `used` counters take the max (a restore can only raise them, never
|
|
77
|
+
* reset a cap), `cap` comes from local because local config is current, handled ids and rounds are unioned (rounds
|
|
78
|
+
* deduped by kind+id+headSha, sorted by `at`), and `status`, `spec` and `prNumber` come from the side with the
|
|
79
|
+
* later `updatedAt`. One missing side returns the other.
|
|
80
|
+
*/
|
|
81
|
+
export declare function reconcilePrRunState(local: PrRunState | null, remote: PrRunState | null): PrRunState | null;
|
|
82
|
+
export declare function prRunStatusFor(status: RunStatus, ciPending?: boolean): PrRunStatus;
|
|
83
|
+
export declare function loadPrRunState(deps: {
|
|
84
|
+
octokit: Pick<Octokit, 'rest'>;
|
|
85
|
+
repo: string;
|
|
86
|
+
prNumber: number;
|
|
87
|
+
key: WorkKey;
|
|
88
|
+
}): Promise<PrRunStateLoad>;
|
|
89
|
+
export declare function savePrRunState(deps: {
|
|
90
|
+
octokit: Octokit;
|
|
91
|
+
repo: string;
|
|
92
|
+
prNumber: number;
|
|
93
|
+
state: PrRunState;
|
|
94
|
+
}): Promise<{
|
|
95
|
+
commentId: number;
|
|
96
|
+
created: boolean;
|
|
97
|
+
}>;
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=pr-run-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-run-state.d.ts","sourceRoot":"","sources":["../../src/run/pr-run-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// packages/core/src/run/pr-run-state.ts — a run's resumable state in a factory-owned PR comment (#3909, ADR-0174)
|
|
2
|
+
//
|
|
3
|
+
// A disposable host loses `.factory/state` with the container. The run persists the state it needs to resume
|
|
4
|
+
// (rework counters, handled review ids, status, spec summary) in one hidden comment on its open PR. Anyone can post
|
|
5
|
+
// the marker, so only a comment by the authenticated identity whose sha256 digest matches is trusted.
|
|
6
|
+
import { createHash } from 'node:crypto';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { redactSecrets } from '../filing/redact.js';
|
|
9
|
+
import { workKeyFromIssue } from '../work/work-key.js';
|
|
10
|
+
import { upsertMarkerComment } from './park-comment.js';
|
|
11
|
+
export const PR_RUN_STATE_VERSION = 'v1';
|
|
12
|
+
export const PR_RUN_STATUSES = ['building', 'awaiting-ci', 'awaiting-review', 'parked'];
|
|
13
|
+
export const SPEC_SUMMARY_MAX = 1000;
|
|
14
|
+
export const MAX_HANDLED_IDS = 200;
|
|
15
|
+
export const MAX_ROUNDS = 50;
|
|
16
|
+
export const MAX_ENCODED_CHARS = 60_000;
|
|
17
|
+
const MARKER_PREFIX = `<!-- factory:run-state ${PR_RUN_STATE_VERSION} key:`;
|
|
18
|
+
const MARKER_RE = new RegExp(`<!-- factory:run-state ${PR_RUN_STATE_VERSION} key:(\\S+) -->`);
|
|
19
|
+
const DATA_RE = /<!-- factory:run-state-data ([A-Za-z0-9+/=]*) sha256:([0-9a-f]{64}) -->/;
|
|
20
|
+
const PAGE_SIZE = 100;
|
|
21
|
+
export function prRunStateMarker(key) {
|
|
22
|
+
return `${MARKER_PREFIX}${key} -->`;
|
|
23
|
+
}
|
|
24
|
+
const count = z.number().int().nonnegative();
|
|
25
|
+
const sha = z.string().regex(/^[0-9a-f]{7,40}$/);
|
|
26
|
+
const counter = z.object({ used: count, cap: count }).strict();
|
|
27
|
+
const schema = z
|
|
28
|
+
.object({
|
|
29
|
+
version: z.literal(1),
|
|
30
|
+
key: z.string().min(1),
|
|
31
|
+
prNumber: count,
|
|
32
|
+
status: z.enum(PR_RUN_STATUSES),
|
|
33
|
+
spec: z.object({ sha256: z.string().regex(/^[0-9a-f]{64}$|^$/), summary: z.string() }).strict(),
|
|
34
|
+
checkRework: counter,
|
|
35
|
+
reviewRework: counter,
|
|
36
|
+
handledReviewIds: z.array(count),
|
|
37
|
+
handledCommentIds: z.array(count),
|
|
38
|
+
rounds: z.array(z
|
|
39
|
+
.object({ kind: z.enum(['check', 'review', 'ci']), id: count.optional(), headSha: sha, at: z.string() })
|
|
40
|
+
.strict()),
|
|
41
|
+
updatedAt: z.string(),
|
|
42
|
+
})
|
|
43
|
+
.strict();
|
|
44
|
+
const sha256 = (text) => createHash('sha256').update(text).digest('hex');
|
|
45
|
+
const clampCount = (n) => (Number.isFinite(n) ? Math.max(0, Math.trunc(n)) : 0);
|
|
46
|
+
const uniqueSorted = (ids) => [...new Set(ids.map(clampCount))].sort((a, b) => a - b);
|
|
47
|
+
/** Allow-list step: rebuilds the state from known fields only, redacts the summary and bounds every list. */
|
|
48
|
+
export function sanitizePrRunState(state, maxIds = MAX_HANDLED_IDS, maxRounds = MAX_ROUNDS) {
|
|
49
|
+
return {
|
|
50
|
+
version: 1,
|
|
51
|
+
key: state.key,
|
|
52
|
+
prNumber: clampCount(state.prNumber),
|
|
53
|
+
status: state.status,
|
|
54
|
+
spec: { sha256: state.spec.sha256, summary: redactSecrets(state.spec.summary).slice(0, SPEC_SUMMARY_MAX) },
|
|
55
|
+
checkRework: { used: clampCount(state.checkRework.used), cap: clampCount(state.checkRework.cap) },
|
|
56
|
+
reviewRework: { used: clampCount(state.reviewRework.used), cap: clampCount(state.reviewRework.cap) },
|
|
57
|
+
handledReviewIds: uniqueSorted(state.handledReviewIds).slice(-maxIds),
|
|
58
|
+
handledCommentIds: uniqueSorted(state.handledCommentIds).slice(-maxIds),
|
|
59
|
+
rounds: state.rounds.slice(-maxRounds).map((r) => ({
|
|
60
|
+
kind: r.kind,
|
|
61
|
+
...(r.id === undefined ? {} : { id: clampCount(r.id) }),
|
|
62
|
+
headSha: r.headSha,
|
|
63
|
+
at: r.at,
|
|
64
|
+
})),
|
|
65
|
+
updatedAt: state.updatedAt,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function render(state) {
|
|
69
|
+
const json = JSON.stringify(state);
|
|
70
|
+
return [
|
|
71
|
+
prRunStateMarker(state.key),
|
|
72
|
+
'_Factory run state for resuming on another host. Do not edit; edits are ignored._',
|
|
73
|
+
`<!-- factory:run-state-data ${Buffer.from(json).toString('base64')} sha256:${sha256(json)} -->`,
|
|
74
|
+
].join('\n');
|
|
75
|
+
}
|
|
76
|
+
/** The hidden marker block for a state; halves rounds and handled ids until it fits one comment. */
|
|
77
|
+
export function encodePrRunState(state) {
|
|
78
|
+
let ids = MAX_HANDLED_IDS;
|
|
79
|
+
let rounds = MAX_ROUNDS;
|
|
80
|
+
let body = render(sanitizePrRunState(state, ids, rounds));
|
|
81
|
+
while (body.length > MAX_ENCODED_CHARS && (ids > 0 || rounds > 0)) {
|
|
82
|
+
ids = Math.floor(ids / 2);
|
|
83
|
+
rounds = Math.floor(rounds / 2);
|
|
84
|
+
body = render(sanitizePrRunState(state, ids, rounds));
|
|
85
|
+
}
|
|
86
|
+
return body;
|
|
87
|
+
}
|
|
88
|
+
export function decodePrRunState(body, key) {
|
|
89
|
+
const marker = MARKER_RE.exec(body);
|
|
90
|
+
if (!marker)
|
|
91
|
+
return null;
|
|
92
|
+
if (marker[1] !== key)
|
|
93
|
+
return { ok: false, reason: 'key-mismatch' };
|
|
94
|
+
const data = DATA_RE.exec(body);
|
|
95
|
+
if (!data)
|
|
96
|
+
return { ok: false, reason: 'malformed' };
|
|
97
|
+
const json = Buffer.from(data[1] ?? '', 'base64').toString('utf8');
|
|
98
|
+
let parsed;
|
|
99
|
+
try {
|
|
100
|
+
parsed = JSON.parse(json);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return { ok: false, reason: 'malformed' };
|
|
104
|
+
}
|
|
105
|
+
const checked = schema.safeParse(parsed);
|
|
106
|
+
if (!checked.success)
|
|
107
|
+
return { ok: false, reason: 'malformed' };
|
|
108
|
+
if (sha256(json) !== data[2])
|
|
109
|
+
return { ok: false, reason: 'digest-mismatch' };
|
|
110
|
+
if (checked.data.key !== key)
|
|
111
|
+
return { ok: false, reason: 'key-mismatch' };
|
|
112
|
+
return { ok: true, state: { ...checked.data, key } };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Picks the state to trust: only a comment by `selfId` (the authenticated identity) is decoded. Lowest comment id
|
|
116
|
+
* wins, as in `readParkState`. An unknown identity fails closed: every marker comment is ignored.
|
|
117
|
+
*/
|
|
118
|
+
export function selectTrustedPrRunState(comments, selfId, key) {
|
|
119
|
+
const ignored = [];
|
|
120
|
+
let winner;
|
|
121
|
+
for (const c of [...comments].sort((a, b) => a.id - b.id)) {
|
|
122
|
+
if (!MARKER_RE.test(c.body))
|
|
123
|
+
continue;
|
|
124
|
+
if (selfId === undefined) {
|
|
125
|
+
ignored.push({ commentId: c.id, reason: 'identity-unavailable' });
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (c.authorId !== selfId) {
|
|
129
|
+
ignored.push({ commentId: c.id, reason: 'untrusted-author' });
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const decoded = decodePrRunState(c.body, key);
|
|
133
|
+
if (decoded === null)
|
|
134
|
+
continue;
|
|
135
|
+
if (!decoded.ok)
|
|
136
|
+
ignored.push({ commentId: c.id, reason: decoded.reason });
|
|
137
|
+
else
|
|
138
|
+
winner ??= { commentId: c.id, state: decoded.state };
|
|
139
|
+
}
|
|
140
|
+
return winner ? { status: 'found', ...winner, ignored } : { status: 'none', ignored };
|
|
141
|
+
}
|
|
142
|
+
function mergeRounds(a, b) {
|
|
143
|
+
const seen = new Map();
|
|
144
|
+
for (const r of [...a, ...b])
|
|
145
|
+
seen.set(`${r.kind}:${r.id ?? ''}:${r.headSha}`, r);
|
|
146
|
+
return [...seen.values()].sort((x, y) => x.at.localeCompare(y.at));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Monotonic merge of local and remote state. `used` counters take the max (a restore can only raise them, never
|
|
150
|
+
* reset a cap), `cap` comes from local because local config is current, handled ids and rounds are unioned (rounds
|
|
151
|
+
* deduped by kind+id+headSha, sorted by `at`), and `status`, `spec` and `prNumber` come from the side with the
|
|
152
|
+
* later `updatedAt`. One missing side returns the other.
|
|
153
|
+
*/
|
|
154
|
+
export function reconcilePrRunState(local, remote) {
|
|
155
|
+
if (local === null)
|
|
156
|
+
return remote;
|
|
157
|
+
if (remote === null)
|
|
158
|
+
return local;
|
|
159
|
+
const later = remote.updatedAt > local.updatedAt ? remote : local;
|
|
160
|
+
return {
|
|
161
|
+
version: 1,
|
|
162
|
+
key: local.key,
|
|
163
|
+
prNumber: later.prNumber,
|
|
164
|
+
status: later.status,
|
|
165
|
+
spec: later.spec,
|
|
166
|
+
checkRework: { used: Math.max(local.checkRework.used, remote.checkRework.used), cap: local.checkRework.cap },
|
|
167
|
+
reviewRework: { used: Math.max(local.reviewRework.used, remote.reviewRework.used), cap: local.reviewRework.cap },
|
|
168
|
+
handledReviewIds: uniqueSorted([...local.handledReviewIds, ...remote.handledReviewIds]),
|
|
169
|
+
handledCommentIds: uniqueSorted([...local.handledCommentIds, ...remote.handledCommentIds]),
|
|
170
|
+
rounds: mergeRounds(local.rounds, remote.rounds),
|
|
171
|
+
updatedAt: local.updatedAt > remote.updatedAt ? local.updatedAt : remote.updatedAt,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
export function prRunStatusFor(status, ciPending) {
|
|
175
|
+
switch (status) {
|
|
176
|
+
case 'pending':
|
|
177
|
+
case 'planning':
|
|
178
|
+
case 'building':
|
|
179
|
+
case 'checking':
|
|
180
|
+
case 'reworking':
|
|
181
|
+
return 'building';
|
|
182
|
+
case 'shipping':
|
|
183
|
+
return 'awaiting-ci';
|
|
184
|
+
case 'ready':
|
|
185
|
+
return ciPending ? 'awaiting-ci' : 'awaiting-review';
|
|
186
|
+
case 'awaiting-review':
|
|
187
|
+
case 'merged':
|
|
188
|
+
return 'awaiting-review';
|
|
189
|
+
case 'parked':
|
|
190
|
+
case 'escalated':
|
|
191
|
+
case 'failed':
|
|
192
|
+
return 'parked';
|
|
193
|
+
default: {
|
|
194
|
+
const unreachable = status;
|
|
195
|
+
return unreachable;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export async function loadPrRunState(deps) {
|
|
200
|
+
const { octokit, repo, prNumber, key } = deps;
|
|
201
|
+
const [owner, name] = repo.split('/');
|
|
202
|
+
let selfId;
|
|
203
|
+
try {
|
|
204
|
+
selfId = (await octokit.rest.users.getAuthenticated()).data.id;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
selfId = undefined;
|
|
208
|
+
}
|
|
209
|
+
const comments = [];
|
|
210
|
+
for (let page = 1;; page++) {
|
|
211
|
+
const { data } = await octokit.rest.issues.listComments({
|
|
212
|
+
owner,
|
|
213
|
+
repo: name,
|
|
214
|
+
issue_number: prNumber,
|
|
215
|
+
per_page: PAGE_SIZE,
|
|
216
|
+
page,
|
|
217
|
+
});
|
|
218
|
+
for (const c of data)
|
|
219
|
+
comments.push({ id: c.id, authorId: c.user?.id, body: c.body ?? '' });
|
|
220
|
+
if (data.length < PAGE_SIZE)
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
return selectTrustedPrRunState(comments, selfId, key);
|
|
224
|
+
}
|
|
225
|
+
export function savePrRunState(deps) {
|
|
226
|
+
const { octokit, repo, prNumber, state } = deps;
|
|
227
|
+
return upsertMarkerComment({
|
|
228
|
+
octokit,
|
|
229
|
+
repo,
|
|
230
|
+
issue: workKeyFromIssue(prNumber),
|
|
231
|
+
marker: prRunStateMarker(state.key),
|
|
232
|
+
body: encodePrRunState(state),
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=pr-run-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-run-state.js","sourceRoot":"","sources":["../../src/run/pr-run-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FactoryConfig } from '../config/index.js';
|
|
2
2
|
import { type QueueGitHubClient } from '../queue/github-queue.js';
|
|
3
|
-
import type { ReviewReworkStore } from '../queue/review-rework-trigger.js';
|
|
3
|
+
import type { ReviewReworkSource, ReviewReworkStore } from '../queue/review-rework-trigger.js';
|
|
4
4
|
import { type ParkCommentInput } from './park-comment.js';
|
|
5
5
|
import { type WorkKey } from '../work/work-key.js';
|
|
6
6
|
export declare function resolveMaxReviewReworkRuns(config: Pick<FactoryConfig, 'queue'>): number;
|
|
@@ -12,6 +12,7 @@ export declare function reviewReworkCapMessage(input: {
|
|
|
12
12
|
cap: number;
|
|
13
13
|
count: number;
|
|
14
14
|
reviewIds: readonly number[];
|
|
15
|
+
source?: ReviewReworkSource;
|
|
15
16
|
}): string;
|
|
16
17
|
export declare function parkAtReviewReworkCap(deps: {
|
|
17
18
|
queue: QueueGitHubClient;
|
|
@@ -24,6 +25,7 @@ export declare function parkAtReviewReworkCap(deps: {
|
|
|
24
25
|
cap: number;
|
|
25
26
|
count: number;
|
|
26
27
|
reviewIds: readonly number[];
|
|
28
|
+
source?: ReviewReworkSource;
|
|
27
29
|
publishComment?: (input: Omit<ParkCommentInput, 'parkSha' | 'order'>) => Promise<unknown>;
|
|
28
30
|
}): Promise<void>;
|
|
29
31
|
//# sourceMappingURL=review-rework-cap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-rework-cap.d.ts","sourceRoot":"","sources":["../../src/run/review-rework-cap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"review-rework-cap.d.ts","sourceRoot":"","sources":["../../src/run/review-rework-cap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC/F,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,CAEvF;AAED,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GAAG,MAAM,CAIT;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB"}
|
|
@@ -12,7 +12,8 @@ export function countReviewReworkRuns(store, issue) {
|
|
|
12
12
|
}
|
|
13
13
|
export function reviewReworkCapMessage(input) {
|
|
14
14
|
const { issue, pr, cap, count, reviewIds } = input;
|
|
15
|
-
|
|
15
|
+
const what = input.source === 'comment' ? 'comment' : 'review';
|
|
16
|
+
return `#${issue} has had ${count} review-rework runs (cap ${cap}, queue.max_review_rework_runs); PR #${pr} ${what} ${reviewIds.join(', ')} started no new run. Resolve the review by hand, then run \`factory unpark ${issue}\`.`;
|
|
16
17
|
}
|
|
17
18
|
export async function parkAtReviewReworkCap(deps) {
|
|
18
19
|
const { queue, owner, repo, issue } = deps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-rework-cap.js","sourceRoot":"","sources":["../../src/run/review-rework-cap.ts"],"names":[],"mappings":"AAAA,iIAAiI;AACjI,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,eAAe,EAA0B,MAAM,0BAA0B,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAyB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAElE,MAAM,UAAU,0BAA0B,CAAC,MAAoC;IAC7E,OAAO,MAAM,CAAC,KAAK,EAAE,sBAAsB,IAAI,oBAAoB,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACnG,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,KAAsC,EAAE,KAAc;IAC1F,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"review-rework-cap.js","sourceRoot":"","sources":["../../src/run/review-rework-cap.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export interface ReviewReworkTarget {
|
|
|
6
6
|
prNumber: number;
|
|
7
7
|
reviewId: number;
|
|
8
8
|
reviewer: string;
|
|
9
|
+
/** `'comment'`: `reviewId` is a `/factory rework` issue-comment id (#3882). */
|
|
10
|
+
source?: 'comment';
|
|
9
11
|
}
|
|
10
12
|
/** #3625: a trusted `/factory iterate` comment; the run re-runs CHECK/rework on the PR branch. */
|
|
11
13
|
export interface IterateTarget {
|
|
@@ -32,6 +34,7 @@ export interface ReviewFeedback {
|
|
|
32
34
|
body: string;
|
|
33
35
|
author: string;
|
|
34
36
|
}[];
|
|
37
|
+
source?: 'comment';
|
|
35
38
|
}
|
|
36
39
|
export declare class ReviewReworkError extends Error {
|
|
37
40
|
name: string;
|
|
@@ -44,6 +47,13 @@ export declare function fetchReviewFeedback(octokit: Pick<Octokit, 'rest' | 'pag
|
|
|
44
47
|
prNumber: number;
|
|
45
48
|
reviewId: number;
|
|
46
49
|
}): Promise<ReviewFeedback>;
|
|
50
|
+
/** The feedback of one `/factory rework` comment, re-read from GitHub so only the text after the command is used. */
|
|
51
|
+
export declare function fetchCommentFeedback(octokit: Pick<Octokit, 'rest'>, opts: {
|
|
52
|
+
owner: string;
|
|
53
|
+
repo: string;
|
|
54
|
+
prNumber: number;
|
|
55
|
+
commentId: number;
|
|
56
|
+
}): Promise<ReviewFeedback>;
|
|
47
57
|
export declare function renderReviewFeedback(feedback: ReviewFeedback): string;
|
|
48
58
|
/** The review as a one-result CheckSummary, the same shape ciReworkSummary gives the rework worker. */
|
|
49
59
|
export declare function reviewReworkSummary(feedback: ReviewFeedback): CheckSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-rework.d.ts","sourceRoot":"","sources":["../../src/run/review-rework.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-rework.d.ts","sourceRoot":"","sources":["../../src/run/review-rework.ts"],"names":[],"mappings":"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"}
|