opencode-swarm 7.185.1 → 7.186.1
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/.opencode/skills/swarm-pr-review/SKILL.md +3 -3
- package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +19 -1
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/background/pr-feedback-event-queue.d.ts +3 -2
- package/dist/background/pr-feedback-loop-runtime.d.ts +4 -1
- package/dist/background/pr-feedback-loop.d.ts +2 -1
- package/dist/background/pr-monitor-worker.d.ts +9 -1
- package/dist/background/pr-review-trigger-contract.d.ts +8 -0
- package/dist/background/pr-subscriptions.d.ts +23 -0
- package/dist/cli/{auto-checkpoint-2jecngee.js → auto-checkpoint-fsd4a9q9.js} +7 -7
- package/dist/cli/{checkpoint-qm05wdbh.js → checkpoint-rc61fd93.js} +14 -14
- package/dist/cli/{coder-settlement-56prayae.js → coder-settlement-x198191a.js} +10 -10
- package/dist/cli/{config-doctor-3b99vx74.js → config-doctor-mj4ae4jn.js} +2 -2
- package/dist/cli/{core-cxnqsrxp.js → core-fvsjr20m.js} +3 -3
- package/dist/cli/{curation-policy-ytzwb080.js → curation-policy-pxwagyh7.js} +4 -4
- package/dist/cli/{curator-drift-dt4g79a4.js → curator-drift-t150w08d.js} +8 -8
- package/dist/cli/{curator-5k3mktpe.js → curator-h7j1xse4.js} +39 -39
- package/dist/cli/curator-llm-factory-29cswvhr.js +81 -0
- package/dist/cli/{evidence-summary-service-8e2fghz0.js → evidence-summary-service-h42y6hwq.js} +17 -17
- package/dist/cli/{gate-evidence-vk8rebsx.js → gate-evidence-c7caa5x2.js} +5 -5
- package/dist/cli/guardrail-explain-yfd11za1.js +82 -0
- package/dist/cli/{guardrail-log-m6mydjet.js → guardrail-log-hcr5rptq.js} +6 -6
- package/dist/cli/{guardrail-reset-w41yndke.js → guardrail-reset-fqgf5sdb.js} +39 -39
- package/dist/cli/{hive-promoter-400xzdds.js → hive-promoter-632ewk29.js} +39 -39
- package/dist/cli/{index-9g61bfj9.js → index-010en5sq.js} +1 -1
- package/dist/cli/{index-r9zc92pb.js → index-03d68zxw.js} +41 -41
- package/dist/cli/{index-s7va6n84.js → index-0t61279z.js} +3 -3
- package/dist/cli/{index-zt3taseq.js → index-3rd7gqfg.js} +2 -2
- package/dist/cli/{index-ek5gvpvm.js → index-4h6e73bx.js} +7 -7
- package/dist/cli/{index-2c6e1p7j.js → index-4z0zdcd7.js} +3 -3
- package/dist/cli/{index-afmyp3kt.js → index-5v1sqv3m.js} +1 -1
- package/dist/cli/{index-6wqv8f7d.js → index-8fnayk3x.js} +5 -5
- package/dist/cli/{index-2b3bgm20.js → index-8jq3jsas.js} +1 -1
- package/dist/cli/{index-xgdypzch.js → index-92bbwjek.js} +1 -1
- package/dist/cli/{index-62akgg9d.js → index-92y6cpqn.js} +1 -1
- package/dist/cli/{index-cnbpht7m.js → index-98j268bh.js} +3 -3
- package/dist/cli/{index-s68z4a39.js → index-9z9g1897.js} +2 -2
- package/dist/cli/{index-dryhmaft.js → index-ay508kfq.js} +3 -3
- package/dist/cli/{index-8nsjefpc.js → index-bpqw4n2f.js} +1 -1
- package/dist/cli/{index-6sffjy74.js → index-c5e1wr7h.js} +1 -1
- package/dist/cli/{index-pa6fzbms.js → index-chaa1v0b.js} +4 -4
- package/dist/cli/{index-cp2nerjd.js → index-dbcwvc1v.js} +43 -20
- package/dist/cli/{index-hgfkcb1q.js → index-ef3pecd4.js} +813 -583
- package/dist/cli/{index-nw16apxs.js → index-ezttvjcf.js} +5 -5
- package/dist/cli/{index-m1bhg85z.js → index-gbmsvfp2.js} +2 -2
- package/dist/cli/{index-zxck9sr7.js → index-gjrs1epm.js} +1 -1
- package/dist/cli/{index-9h93zjm3.js → index-hmwnegkz.js} +1 -1
- package/dist/cli/{index-7jt24hpz.js → index-hq9f7fwf.js} +2 -2
- package/dist/cli/{index-rtznwf0g.js → index-hw8w4mkh.js} +39 -39
- package/dist/cli/{index-07bk0zm9.js → index-j42256hj.js} +1 -1
- package/dist/cli/{index-ycqsnfd1.js → index-jwkybwv0.js} +4 -4
- package/dist/cli/{index-yj7etak0.js → index-m8dry0a6.js} +1 -1
- package/dist/cli/{index-dz5cbkrm.js → index-mnb1pg1n.js} +4 -4
- package/dist/cli/{index-rr1dggfe.js → index-nnmgg6z6.js} +1 -1
- package/dist/cli/{index-7n3h39h9.js → index-pe1wgpvg.js} +7 -7
- package/dist/cli/{index-pppjg0ct.js → index-ptp6d5mm.js} +18 -20
- package/dist/cli/{index-nen885g8.js → index-q9wnbz9q.js} +1 -1
- package/dist/cli/{index-5n08z6qj.js → index-qg0nhcke.js} +5 -5
- package/dist/cli/{index-ppj5bjaq.js → index-qj7ewgrf.js} +7 -7
- package/dist/cli/{index-nhw5rt5x.js → index-syt8wykh.js} +4 -4
- package/dist/cli/{index-74yxwf8y.js → index-t46swpqf.js} +1 -1
- package/dist/cli/{index-ekyg4p8b.js → index-teyvb5tr.js} +1 -1
- package/dist/cli/{index-ss6b8jpz.js → index-vvajq163.js} +2 -2
- package/dist/cli/{index-1fc5aj26.js → index-w12y73z5.js} +1 -1
- package/dist/cli/{index-vqz0avr4.js → index-wrhf5apg.js} +2 -2
- package/dist/cli/{index-smwybqka.js → index-xe34ymp8.js} +2 -2
- package/dist/cli/{index-fa014mra.js → index-xkxt1b08.js} +3 -3
- package/dist/cli/{index-373880cv.js → index-y7s92gte.js} +1 -1
- package/dist/cli/index.js +40 -40
- package/dist/cli/{knowledge-escalator-30bb9fyg.js → knowledge-escalator-gajaew60.js} +11 -11
- package/dist/cli/{knowledge-events-gfbx97x0.js → knowledge-events-fsbgfz4z.js} +9 -9
- package/dist/cli/{knowledge-link-dv78fb9g.js → knowledge-link-jnnk0nmk.js} +3 -3
- package/dist/cli/{knowledge-store-2ssd489f.js → knowledge-store-vaq1g1dx.js} +4 -4
- package/dist/cli/{knowledge-validator-7bxvezgv.js → knowledge-validator-pdr6m77a.js} +6 -6
- package/dist/cli/{mcp-apr65eya.js → mcp-5sn4e5t2.js} +1 -1
- package/dist/cli/{model-preflight-g7b12yn2.js → model-preflight-z9p55ssn.js} +39 -39
- package/dist/cli/{pending-delegations-x8q7cxr7.js → pending-delegations-asyc469v.js} +10 -10
- package/dist/cli/{pr-subscriptions-qwr6ybcb.js → pr-subscriptions-nacx8r6a.js} +12 -10
- package/dist/cli/{pr-workflow-gate-qd5tfkak.js → pr-workflow-gate-j3r636zg.js} +41 -39
- package/dist/cli/{runner-tb3eppeg.js → runner-fns4esbf.js} +4 -4
- package/dist/cli/{scan-cursor-1m6dj2s2.js → scan-cursor-y9rchz83.js} +5 -5
- package/dist/cli/{schema-yvhamv41.js → schema-g377jsvv.js} +1 -1
- package/dist/cli/{scope-persistence-xdedbzdg.js → scope-persistence-dtympt37.js} +13 -13
- package/dist/cli/{server-nhdkvdt2.js → server-n51pvxds.js} +39 -39
- package/dist/cli/{skill-generator-fzvp9m8z.js → skill-generator-k3hnf8xx.js} +13 -13
- package/dist/cli/{snapshot-coordination-init-xqxek8kn.js → snapshot-coordination-init-k1f93806.js} +39 -39
- package/dist/cli/{speckit-checkoff-57tf4079.js → speckit-checkoff-w7qbrzph.js} +4 -4
- package/dist/cli/{workspace-snapshot-kcfkk3a2.js → workspace-snapshot-1sa8m2ea.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-80n814a8.js → worktree-collision-ownership-4yxah5wy.js} +11 -11
- package/dist/cli/{worktree-isolation-kaxkr61t.js → worktree-isolation-p0pz81a1.js} +39 -39
- package/dist/git/pr.d.ts +73 -0
- package/dist/hooks/pr-workflow-gate.d.ts +69 -0
- package/dist/index.js +39 -39
- package/dist/tools/write-pr-review-trigger-eval.d.ts +2 -1
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-hkk29g2y.js +0 -81
- package/dist/cli/guardrail-explain-ma658hkw.js +0 -82
|
@@ -21,63 +21,63 @@ import {
|
|
|
21
21
|
sanitizeWorktreeTaskId,
|
|
22
22
|
standardWorktreeByCallID,
|
|
23
23
|
standardWorktreeSerializationSessions
|
|
24
|
-
} from "./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-
|
|
24
|
+
} from "./index-ef3pecd4.js";
|
|
25
|
+
import"./index-vvajq163.js";
|
|
26
|
+
import"./index-hmwnegkz.js";
|
|
27
|
+
import"./index-chaa1v0b.js";
|
|
28
28
|
import"./index-7bxssqaf.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
29
|
+
import"./index-w12y73z5.js";
|
|
30
|
+
import"./index-92y6cpqn.js";
|
|
31
31
|
import"./index-txdagbh7.js";
|
|
32
|
-
import"./index-
|
|
32
|
+
import"./index-xe34ymp8.js";
|
|
33
33
|
import"./index-rdec0y3z.js";
|
|
34
|
-
import"./index-
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
34
|
+
import"./index-0t61279z.js";
|
|
35
|
+
import"./index-4h6e73bx.js";
|
|
36
|
+
import"./index-mnb1pg1n.js";
|
|
37
|
+
import"./index-qg0nhcke.js";
|
|
38
|
+
import"./index-9z9g1897.js";
|
|
39
|
+
import"./index-dbcwvc1v.js";
|
|
40
40
|
import"./index-cjapb4hy.js";
|
|
41
|
-
import"./index-
|
|
41
|
+
import"./index-wrhf5apg.js";
|
|
42
42
|
import"./index-pt7h91zc.js";
|
|
43
43
|
import"./index-q7sjgr1y.js";
|
|
44
|
-
import"./index-
|
|
45
|
-
import"./index-
|
|
44
|
+
import"./index-syt8wykh.js";
|
|
45
|
+
import"./index-ptp6d5mm.js";
|
|
46
46
|
import"./index-6b295cas.js";
|
|
47
47
|
import"./index-9nyqt3kb.js";
|
|
48
|
-
import"./index-
|
|
48
|
+
import"./index-8jq3jsas.js";
|
|
49
49
|
import"./index-zsrtt42s.js";
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-
|
|
52
|
-
import"./index-
|
|
50
|
+
import"./index-3rd7gqfg.js";
|
|
51
|
+
import"./index-98j268bh.js";
|
|
52
|
+
import"./index-4z0zdcd7.js";
|
|
53
53
|
import"./index-g4fs6z4e.js";
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
54
|
+
import"./index-ezttvjcf.js";
|
|
55
|
+
import"./index-qj7ewgrf.js";
|
|
56
|
+
import"./index-5v1sqv3m.js";
|
|
57
57
|
import"./index-2s7dvzff.js";
|
|
58
|
-
import"./index-
|
|
59
|
-
import"./index-
|
|
58
|
+
import"./index-jwkybwv0.js";
|
|
59
|
+
import"./index-bpqw4n2f.js";
|
|
60
60
|
import"./index-rtry5xyf.js";
|
|
61
61
|
import {
|
|
62
62
|
resolveWorktreeIsolationConfig
|
|
63
|
-
} from "./index-
|
|
63
|
+
} from "./index-hq9f7fwf.js";
|
|
64
64
|
import"./index-frcemc0b.js";
|
|
65
65
|
import"./index-0725jpp7.js";
|
|
66
|
-
import"./index-
|
|
67
|
-
import"./index-
|
|
68
|
-
import"./index-
|
|
69
|
-
import"./index-
|
|
70
|
-
import"./index-
|
|
71
|
-
import"./index-
|
|
66
|
+
import"./index-8fnayk3x.js";
|
|
67
|
+
import"./index-ay508kfq.js";
|
|
68
|
+
import"./index-y7s92gte.js";
|
|
69
|
+
import"./index-010en5sq.js";
|
|
70
|
+
import"./index-q9wnbz9q.js";
|
|
71
|
+
import"./index-t46swpqf.js";
|
|
72
72
|
import"./index-ry16d01s.js";
|
|
73
73
|
import"./index-rdm3px0g.js";
|
|
74
74
|
import"./index-7pmbnjvj.js";
|
|
75
|
-
import"./index-
|
|
76
|
-
import"./index-
|
|
75
|
+
import"./index-92bbwjek.js";
|
|
76
|
+
import"./index-pe1wgpvg.js";
|
|
77
77
|
import"./index-vzm6zre7.js";
|
|
78
78
|
import"./index-ae75rja9.js";
|
|
79
|
-
import"./index-
|
|
80
|
-
import"./index-
|
|
79
|
+
import"./index-gjrs1epm.js";
|
|
80
|
+
import"./index-c5e1wr7h.js";
|
|
81
81
|
import"./index-6cjpmvpa.js";
|
|
82
82
|
import"./index-t7hmqgjy.js";
|
|
83
83
|
import"./index-w6w6ny06.js";
|
|
@@ -85,11 +85,11 @@ import"./index-mc72pk74.js";
|
|
|
85
85
|
import"./index-c1ggtmpm.js";
|
|
86
86
|
import"./index-ejhxgyvm.js";
|
|
87
87
|
import"./index-7g4c7s5r.js";
|
|
88
|
-
import"./index-
|
|
88
|
+
import"./index-m8dry0a6.js";
|
|
89
89
|
import"./index-gx2vp8gx.js";
|
|
90
|
-
import"./index-
|
|
90
|
+
import"./index-teyvb5tr.js";
|
|
91
91
|
import"./index-zxdawwc7.js";
|
|
92
|
-
import"./index-
|
|
92
|
+
import"./index-nnmgg6z6.js";
|
|
93
93
|
import"./index-48jvqqfa.js";
|
|
94
94
|
import"./index-bk5tah7q.js";
|
|
95
95
|
import"./index-gknz3bv1.js";
|
package/dist/git/pr.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as child_process from 'node:child_process';
|
|
2
2
|
import { resolveGhExecutable } from '../utils/gh-executable.js';
|
|
3
3
|
import { resolveGitExecutable } from '../utils/git-executable.js';
|
|
4
|
+
import { resolveGlabExecutable } from '../utils/glab-executable.js';
|
|
4
5
|
import { readLaneEnvFileFromDiskSync } from './branch.js';
|
|
5
6
|
export declare const GIT_TIMEOUT_MS = 30000;
|
|
6
7
|
/**
|
|
@@ -60,6 +61,21 @@ declare function spawnSyncWithTransientRetry(command: string, args: string[], op
|
|
|
60
61
|
* stdin: 'ignore', timeout, bounded stdout/stderr, proc.kill() in finally.
|
|
61
62
|
*/
|
|
62
63
|
export declare function ghExecAsync(args: string[], cwd: string): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Bounded async spawn shared by the gh and glab (GitLab) fetch paths
|
|
66
|
+
* (issue #2882). Same safety contract as the pre-#2882 ghExecAsync body:
|
|
67
|
+
* array-form argv, explicit cwd, stdin 'ignore', GIT_TIMEOUT_MS timeout,
|
|
68
|
+
* MAX_OUTPUT_BYTES per-stream caps, best-effort proc.kill() on settle.
|
|
69
|
+
*
|
|
70
|
+
* `label` names the CLI in error messages ('gh' / 'glab') so existing
|
|
71
|
+
* GitHub-path error text is unchanged. `opts.env` is an overlay merged onto
|
|
72
|
+
* process.env via mergeEnvForChild ONLY when defined — an absent overlay
|
|
73
|
+
* leaves the spawn options without an `env` key, preserving the inherit-
|
|
74
|
+
* process.env behavior the gh path has always had.
|
|
75
|
+
*/
|
|
76
|
+
declare function forgeExecAsyncImpl(binary: string, args: string[], cwd: string, label: string, opts?: {
|
|
77
|
+
env?: Record<string, string>;
|
|
78
|
+
}): Promise<string>;
|
|
63
79
|
/**
|
|
64
80
|
* Test-only dependency-injection seam — see `gitignore-warning.ts:_internals`.
|
|
65
81
|
* Production code calls `_internals.ghExec(...)` so tests can replace the
|
|
@@ -68,12 +84,16 @@ export declare function ghExecAsync(args: string[], cwd: string): Promise<string
|
|
|
68
84
|
export declare const _internals: {
|
|
69
85
|
ghExec: typeof ghExec;
|
|
70
86
|
ghExecAsync: typeof ghExecAsync;
|
|
87
|
+
forgeExecAsync: typeof forgeExecAsyncImpl;
|
|
88
|
+
getMRPollSnapshot: typeof getMRPollSnapshot;
|
|
89
|
+
getMRComments: typeof getMRComments;
|
|
71
90
|
spawnSyncWithTransientRetry: typeof spawnSyncWithTransientRetry;
|
|
72
91
|
spawnSync: typeof __spawnSyncSeam.spawnSync;
|
|
73
92
|
readLaneEnvFileFromDiskSync: typeof readLaneEnvFileFromDiskSync;
|
|
74
93
|
getMergeGroupRun: typeof getMergeGroupRun;
|
|
75
94
|
resolveGhExecutable: typeof resolveGhExecutable;
|
|
76
95
|
resolveGitExecutable: typeof resolveGitExecutable;
|
|
96
|
+
resolveGlabExecutable: typeof resolveGlabExecutable;
|
|
77
97
|
};
|
|
78
98
|
/**
|
|
79
99
|
* Check if gh CLI is available
|
|
@@ -160,6 +180,59 @@ export declare function getPRPollSnapshot(prNumber: number, repoFullName: string
|
|
|
160
180
|
* equivalent, so this stays the second spawn of the poll cycle.
|
|
161
181
|
*/
|
|
162
182
|
export declare function getPRReviewComments(prNumber: number, repoFullName: string, cwd: string): Promise<PRCommentResult[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Honest-unavailable marker for the three GitHub-synthesized fields
|
|
185
|
+
* (statusCheckRollup / reviewDecision / mergeStateStatus). `getProviderCapabilities`
|
|
186
|
+
* is the source of truth: GitLab reports all three unavailable, so the glab-backed
|
|
187
|
+
* snapshot carries explicit markers instead of fabricated equivalents (#2733 AC7).
|
|
188
|
+
*/
|
|
189
|
+
export declare const MR_SYNTHESIZED_FIELD_MARKER = "NOT_AVAILABLE";
|
|
190
|
+
/** Input for glab-backed MR fetches. `host` is the resolved forge host. */
|
|
191
|
+
export interface MRFetchInput {
|
|
192
|
+
/** Full project path (may be multi-segment: group/subgroup/repo). */
|
|
193
|
+
projectPath: string;
|
|
194
|
+
/** Merge request iid (the subscription's prNumber). */
|
|
195
|
+
iid: number;
|
|
196
|
+
cwd: string;
|
|
197
|
+
/** Forge host; when present and not gitlab.com, spawns get GITLAB_HOST. */
|
|
198
|
+
host?: string;
|
|
199
|
+
}
|
|
200
|
+
/** Check-shaped entry derived from a real GitLab pipeline (NOT a statusCheckRollup member). */
|
|
201
|
+
export interface MRPipelineCheck {
|
|
202
|
+
name: string;
|
|
203
|
+
status: string;
|
|
204
|
+
conclusion: string | null;
|
|
205
|
+
detailsUrl?: string;
|
|
206
|
+
}
|
|
207
|
+
/** glab-backed MR snapshot: PRPollSnapshot-compatible core plus a pipelines channel. */
|
|
208
|
+
export interface MRPollSnapshot {
|
|
209
|
+
status: PRStatusResult;
|
|
210
|
+
comments: PRCommentResult[];
|
|
211
|
+
merge: MergeStateResult;
|
|
212
|
+
review: ReviewStateResult;
|
|
213
|
+
/** Terminal pipeline verdicts for the MR head sha (empty when none terminal yet). */
|
|
214
|
+
pipelines: MRPipelineCheck[];
|
|
215
|
+
/** False when the pipelines fetch failed — caller preserves prior CI state. */
|
|
216
|
+
pipelinesFetchSucceeded: boolean;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* glab-backed MR snapshot (issue #2882): three bounded spawns.
|
|
220
|
+
* 1. `glab mr view <iid> -R <projectPath> -F json` — MR fields.
|
|
221
|
+
* 2. `glab api projects/<url-encoded-path>/merge_requests/<iid>` — REST
|
|
222
|
+
* detail (deprecated-but-present merge_status; the issue prescribes this
|
|
223
|
+
* call for merge state). Approvals on this payload are intentionally NOT
|
|
224
|
+
* consumed: no existing event vocabulary maps to GitLab approvals without
|
|
225
|
+
* fabricating the GitHub-synthesized reviewDecision (#2733 AC7 binding).
|
|
226
|
+
* 3. `glab api .../merge_requests/<iid>/pipelines?per_page=20` — pipelines
|
|
227
|
+
* for the MR, filtered to the head sha, latest by id, terminal-only.
|
|
228
|
+
*/
|
|
229
|
+
export declare function getMRPollSnapshot(input: MRFetchInput): Promise<MRPollSnapshot>;
|
|
230
|
+
/**
|
|
231
|
+
* glab-backed MR comments (issue #2882): the MR notes endpoint, ascending by
|
|
232
|
+
* creation time, system notes excluded (automation notes are not user
|
|
233
|
+
* comments). Bounded single page (per_page=100).
|
|
234
|
+
*/
|
|
235
|
+
export declare function getMRComments(input: MRFetchInput): Promise<PRCommentResult[]>;
|
|
163
236
|
/**
|
|
164
237
|
* Result of fetching a GitHub Actions run for a PR's merge group.
|
|
165
238
|
*/
|
|
@@ -15,6 +15,7 @@ import { type PrReviewDimensionCancellationRecord, type PrReviewPartialBaseCover
|
|
|
15
15
|
import { type CriticOutcome } from '../pr-review/finding-policy.js';
|
|
16
16
|
import { type PrReviewComposablePhase, type PrReviewItemClaim, type PrReviewPhaseComposition, parseCriticVerdict } from '../pr-review/legacy-transcript-adapter.js';
|
|
17
17
|
import { withPrWorkflowCheckoutMutationLock, workflowCheckoutMutationLockRelativePath, workflowGateStateLockRelativePath, workflowGateStateRelativePath } from '../pr-review/persistence.js';
|
|
18
|
+
import { type ForgeContext } from '../providers/forge-provider.js';
|
|
18
19
|
import { classifyLaneLivenessCondition, type EffectivePrLaneHorizon, resolveEffectivePrLaneHorizonMs } from './lane-liveness-watchdog.js';
|
|
19
20
|
export type { PrReviewDimensionCancellationRecord, PrReviewDimensionTerminalState, PrReviewPartialBaseCoverageRecord, PrReviewPartialBaseCoverageRecordV1, PrReviewPartialBaseCoverageRecordV2, PrReviewReportVerdict, PrReviewTerminalCoverageKind, PrReviewTerminalCoverageSettlement, PrReviewUnresolvedDimensionRecord, } from '../pr-review/completion.js';
|
|
20
21
|
export { allowedPrReviewReportVerdicts, normalizePrReviewPartialBaseCoverageRecord, PR_REVIEW_REPORT_VERDICTS, readPrReviewTerminalCoverageForReport, rollbackPrReviewPartialBaseCoverageAdmission, } from '../pr-review/completion.js';
|
|
@@ -406,6 +407,22 @@ interface PrReviewValidationBatchRecord {
|
|
|
406
407
|
}>;
|
|
407
408
|
validatedAt: string;
|
|
408
409
|
}
|
|
410
|
+
/**
|
|
411
|
+
* Issue #2878: one admitted micro-dispatch acknowledgment. The dead-family
|
|
412
|
+
* admission in `write_pr_review_trigger_eval` counts these per trigger family
|
|
413
|
+
* (filtered by pr head) to mechanically prove the bounded retry budget was
|
|
414
|
+
* exhausted before a liveness-dead family may be disclosed.
|
|
415
|
+
*/
|
|
416
|
+
interface PrReviewMicroFamilyDispatchRecord {
|
|
417
|
+
batchId: string;
|
|
418
|
+
prHeadSha: string;
|
|
419
|
+
lanes: Array<{
|
|
420
|
+
laneId: string;
|
|
421
|
+
workflowLane: string;
|
|
422
|
+
ownedWorkflowLanes?: string[];
|
|
423
|
+
}>;
|
|
424
|
+
admittedAt: string;
|
|
425
|
+
}
|
|
409
426
|
/**
|
|
410
427
|
* Per-batch coherence keys for item-keyed reviewer/critic composition.
|
|
411
428
|
*
|
|
@@ -483,6 +500,15 @@ export interface PrWorkflowGateState {
|
|
|
483
500
|
prReviewContractRetryDimensions?: PrReviewBaseDimensionId[];
|
|
484
501
|
/** Canonical ordered semantic ledger frozen by the first micro dispatch. */
|
|
485
502
|
prReviewTriggerLedger?: PrReviewInlineTriggerRow[];
|
|
503
|
+
/**
|
|
504
|
+
* Issue #2878: per-family micro dispatch attempt ledger, appended by every
|
|
505
|
+
* micro-dispatch acknowledgment (`recordPrReviewMicroFamilyDispatch`). The
|
|
506
|
+
* dead-family admission in `write_pr_review_trigger_eval` counts these per
|
|
507
|
+
* trigger family (filtered by pr head) to mechanically prove the bounded
|
|
508
|
+
* retry budget was exhausted before disclosing a liveness-dead family.
|
|
509
|
+
* Bounded at MAX_WORKFLOW_BATCHES with fail-closed overflow.
|
|
510
|
+
*/
|
|
511
|
+
prReviewMicroFamilyDispatches?: PrReviewMicroFamilyDispatchRecord[];
|
|
486
512
|
prReviewTriggerEvalPath?: string;
|
|
487
513
|
/**
|
|
488
514
|
* The run_id bound to the trigger-evaluation receipt at first consumption.
|
|
@@ -623,6 +649,7 @@ export declare function activatePrWorkflow(directory: string, sessionID: string,
|
|
|
623
649
|
prHeadSha?: string;
|
|
624
650
|
requireCheckoutPreflight?: boolean;
|
|
625
651
|
prUrl?: string;
|
|
652
|
+
forge?: ForgeContext;
|
|
626
653
|
}): Promise<PrWorkflowGateState>;
|
|
627
654
|
/**
|
|
628
655
|
* Issue #2601: append skill-contract advisories detected by the auto-resume
|
|
@@ -1173,6 +1200,38 @@ export declare function assertPrReviewBaseCoverageSettled(directory: string, ses
|
|
|
1173
1200
|
};
|
|
1174
1201
|
}>;
|
|
1175
1202
|
/** Persist a council/reviewer/critic validation batch before launch. */
|
|
1203
|
+
/**
|
|
1204
|
+
* Issue #2878: record one admitted micro-dispatch acknowledgment in the
|
|
1205
|
+
* per-family dispatch attempt ledger. The dead-family admission in
|
|
1206
|
+
* `write_pr_review_trigger_eval` counts these records (per trigger family,
|
|
1207
|
+
* filtered by pr head) to mechanically prove the bounded retry budget
|
|
1208
|
+
* (initial dispatch plus `PR_REVIEW_MICRO_FAMILY_RETRY_BUDGET` retries) was
|
|
1209
|
+
* exhausted before a liveness-dead family may be disclosed.
|
|
1210
|
+
*
|
|
1211
|
+
* Crash-window disposition, by ordering:
|
|
1212
|
+
* - The record is persisted at acknowledgment time, strictly before any lane
|
|
1213
|
+
* session is created, so no dead lane can exist whose dispatch was not
|
|
1214
|
+
* first durably counted — the count can never under-report relative to the
|
|
1215
|
+
* lanes that actually ran.
|
|
1216
|
+
* - A cap throw aborts the dispatch itself (the lane never launches), the
|
|
1217
|
+
* same fail-closed behavior as the validation-batch limit below.
|
|
1218
|
+
* - A crash between this persist and lane launch leaves an orphan entry whose
|
|
1219
|
+
* lanes never started. That is benign: a retry of the exact same dispatch
|
|
1220
|
+
* call is a no-op (batchId idempotence below), and the over-count direction
|
|
1221
|
+
* is conservative for a disclosure gate that admits only at or above the
|
|
1222
|
+
* budget threshold — the cited (batch, lane) must still exist as a real
|
|
1223
|
+
* stale delegation record to be disclosed at all, so phantom attempts
|
|
1224
|
+
* alone can never unlock a disclosure.
|
|
1225
|
+
*
|
|
1226
|
+
* Unlike `recordPrReviewValidationBatch`, a duplicate batchId is a no-op
|
|
1227
|
+
* rather than a throw: validation batches are one-shot contracts, while a
|
|
1228
|
+
* dispatch acknowledgment is an idempotent fact that must survive a
|
|
1229
|
+
* crash-retry of the same dispatch call without double-counting.
|
|
1230
|
+
*/
|
|
1231
|
+
export declare function recordPrReviewMicroFamilyDispatch(directory: string, sessionID: string, lanes: readonly PrWorkflowLaneSpec[], options: {
|
|
1232
|
+
batchId: string;
|
|
1233
|
+
prHeadSha: string;
|
|
1234
|
+
}): Promise<PrWorkflowGateState>;
|
|
1176
1235
|
export declare function recordPrReviewValidationBatch(directory: string, sessionID: string, phase: PrReviewValidationPhase, lanes: readonly PrWorkflowLaneSpec[], options: {
|
|
1177
1236
|
batchId: string;
|
|
1178
1237
|
prHeadSha: string;
|
|
@@ -1566,6 +1625,16 @@ export declare const _test_exports: {
|
|
|
1566
1625
|
result: "NOT_TRIGGERED";
|
|
1567
1626
|
evidence: string;
|
|
1568
1627
|
})[] | undefined;
|
|
1628
|
+
prReviewMicroFamilyDispatches?: {
|
|
1629
|
+
batchId: string;
|
|
1630
|
+
prHeadSha: string;
|
|
1631
|
+
lanes: {
|
|
1632
|
+
laneId: string;
|
|
1633
|
+
workflowLane: string;
|
|
1634
|
+
ownedWorkflowLanes?: string[] | undefined;
|
|
1635
|
+
}[];
|
|
1636
|
+
admittedAt: string;
|
|
1637
|
+
}[] | undefined;
|
|
1569
1638
|
prReviewTriggerEvalPath?: string | undefined;
|
|
1570
1639
|
prReviewTriggerEvalRunId?: string | undefined;
|
|
1571
1640
|
prReviewValidationBatches?: {
|