codex-orchestrator 2.0.4 → 2.0.5
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/CHANGELOG.md +23 -0
- package/README.md +29 -3
- package/dist/src/v2/acceptance-proof.d.ts +5 -0
- package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
- package/dist/src/v2/acceptance-proof.js +10 -2
- package/dist/src/v2/acceptance-proof.js.map +1 -1
- package/dist/src/v2/adapters/gh-pull-request-adapter.d.ts +7 -1
- package/dist/src/v2/adapters/gh-pull-request-adapter.d.ts.map +1 -1
- package/dist/src/v2/adapters/gh-pull-request-adapter.js +288 -0
- package/dist/src/v2/adapters/gh-pull-request-adapter.js.map +1 -1
- package/dist/src/v2/adapters/pull-requests.d.ts +69 -0
- package/dist/src/v2/adapters/pull-requests.d.ts.map +1 -1
- package/dist/src/v2/adapters/pull-requests.js +48 -0
- package/dist/src/v2/adapters/pull-requests.js.map +1 -1
- package/dist/src/v2/adapters/worktree.d.ts +1 -0
- package/dist/src/v2/adapters/worktree.d.ts.map +1 -1
- package/dist/src/v2/adapters/worktree.js +10 -1
- package/dist/src/v2/adapters/worktree.js.map +1 -1
- package/dist/src/v2/cli.d.ts +9 -0
- package/dist/src/v2/cli.d.ts.map +1 -1
- package/dist/src/v2/cli.js +38 -11
- package/dist/src/v2/cli.js.map +1 -1
- package/dist/src/v2/config.d.ts +0 -1
- package/dist/src/v2/config.d.ts.map +1 -1
- package/dist/src/v2/config.js +0 -3
- package/dist/src/v2/config.js.map +1 -1
- package/dist/src/v2/containment.d.ts +11 -2
- package/dist/src/v2/containment.d.ts.map +1 -1
- package/dist/src/v2/containment.js +35 -7
- package/dist/src/v2/containment.js.map +1 -1
- package/dist/src/v2/direct-delivery.d.ts +1 -1
- package/dist/src/v2/direct-delivery.d.ts.map +1 -1
- package/dist/src/v2/direct-delivery.js +9 -3
- package/dist/src/v2/direct-delivery.js.map +1 -1
- package/dist/src/v2/review-feedback-coordinator.d.ts +54 -0
- package/dist/src/v2/review-feedback-coordinator.d.ts.map +1 -0
- package/dist/src/v2/review-feedback-coordinator.js +245 -0
- package/dist/src/v2/review-feedback-coordinator.js.map +1 -0
- package/dist/src/v2/review-feedback.d.ts +127 -0
- package/dist/src/v2/review-feedback.d.ts.map +1 -0
- package/dist/src/v2/review-feedback.js +436 -0
- package/dist/src/v2/review-feedback.js.map +1 -0
- package/dist/src/v2/run-issue.d.ts +57 -0
- package/dist/src/v2/run-issue.d.ts.map +1 -1
- package/dist/src/v2/run-issue.js +701 -36
- package/dist/src/v2/run-issue.js.map +1 -1
- package/dist/src/v2/run-store.d.ts +45 -1
- package/dist/src/v2/run-store.d.ts.map +1 -1
- package/dist/src/v2/run-store.js +113 -4
- package/dist/src/v2/run-store.js.map +1 -1
- package/dist/src/v2/runtime.d.ts +37 -0
- package/dist/src/v2/runtime.d.ts.map +1 -1
- package/dist/src/v2/runtime.js +120 -5
- package/dist/src/v2/runtime.js.map +1 -1
- package/dist/src/v2/setup.js +1 -1
- package/dist/src/v2/setup.js.map +1 -1
- package/docs/deep-dive.md +61 -5
- package/internal-workflow/docs/agents/contract-test-ledger.md +11 -1
- package/internal-workflow/evals/coding-skill-evals.json +18 -0
- package/internal-workflow/manifest.json +1 -1
- package/internal-workflow/skills/code-debugger/SKILL.md +3 -3
- package/internal-workflow/skills/code-review/SKILL.md +18 -6
- package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +1 -1
- package/internal-workflow/skills/spec-implementer/references/review-loop.md +7 -1
- package/internal-workflow/skills/tdd/SKILL.md +5 -4
- package/internal-workflow/skills/tdd/evals/evals.json +18 -0
- package/internal-workflow/skills/tdd/mocking.md +3 -42
- package/internal-workflow/skills/tdd/refactoring.md +6 -8
- package/package.json +1 -1
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { canonicalJson } from './containment.js';
|
|
3
|
+
const SHA256 = /^[0-9a-f]{64}$/u;
|
|
4
|
+
const GIT_SHA = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u;
|
|
5
|
+
const SOURCE_ID = /^pr-(?:thread|review):[^\s]+$/u;
|
|
6
|
+
const MAX_SOURCES = 256;
|
|
7
|
+
export function createReviewFeedbackBootstrap() {
|
|
8
|
+
return {
|
|
9
|
+
version: 1,
|
|
10
|
+
phase: 'bootstrap-required',
|
|
11
|
+
consumedSourceIds: [],
|
|
12
|
+
previousPublishedHeadSha: null,
|
|
13
|
+
repairRound: 0,
|
|
14
|
+
activeBatch: null,
|
|
15
|
+
implementationInvocation: null,
|
|
16
|
+
history: [],
|
|
17
|
+
verifiedReceipt: null,
|
|
18
|
+
terminal: null,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function createFrozenReviewFeedbackBatch(input) {
|
|
22
|
+
const sources = structuredClone(input.sources).map((source) => ({
|
|
23
|
+
...source,
|
|
24
|
+
body: normalizeReviewFeedbackBody(source.body),
|
|
25
|
+
})).sort((left, right) => left.sourceId.localeCompare(right.sourceId));
|
|
26
|
+
const identity = {
|
|
27
|
+
runId: input.runId,
|
|
28
|
+
canonicalRepository: input.canonicalRepository,
|
|
29
|
+
pullRequest: input.pullRequest,
|
|
30
|
+
priorPublishedHeadSha: input.priorPublishedHeadSha,
|
|
31
|
+
sources,
|
|
32
|
+
};
|
|
33
|
+
const batch = {
|
|
34
|
+
version: 1,
|
|
35
|
+
batchId: createHash('sha256')
|
|
36
|
+
.update(`codex-orchestrator-review-feedback-batch-v1\0${canonicalJson(identity)}`)
|
|
37
|
+
.digest('hex'),
|
|
38
|
+
...structuredClone(input),
|
|
39
|
+
sources,
|
|
40
|
+
};
|
|
41
|
+
validateFrozenReviewFeedbackBatch(batch);
|
|
42
|
+
return batch;
|
|
43
|
+
}
|
|
44
|
+
export function normalizeReviewFeedbackBody(body) {
|
|
45
|
+
return body.replace(/\r\n?/gu, '\n');
|
|
46
|
+
}
|
|
47
|
+
export function hashReviewFeedbackText(body) {
|
|
48
|
+
return createHash('sha256').update(normalizeReviewFeedbackBody(body)).digest('hex');
|
|
49
|
+
}
|
|
50
|
+
export function hashReviewFeedbackSnapshot(value) {
|
|
51
|
+
return createHash('sha256')
|
|
52
|
+
.update(`codex-orchestrator-review-feedback-snapshot-v1\0${canonicalJson(value)}`)
|
|
53
|
+
.digest('hex');
|
|
54
|
+
}
|
|
55
|
+
export function projectReviewFeedbackBatch(batch, targetRevision) {
|
|
56
|
+
validateFrozenReviewFeedbackBatch(batch);
|
|
57
|
+
if (!Number.isSafeInteger(targetRevision) || targetRevision < 1)
|
|
58
|
+
throw new Error('review feedback target revision is invalid');
|
|
59
|
+
const sources = [...batch.sources].sort((left, right) => left.sourceId.localeCompare(right.sourceId));
|
|
60
|
+
return {
|
|
61
|
+
repairFindings: sources.map((source) => ({
|
|
62
|
+
id: source.sourceId,
|
|
63
|
+
provenance: 'pr-review',
|
|
64
|
+
sourceId: source.sourceId,
|
|
65
|
+
targetRevision,
|
|
66
|
+
summary: [
|
|
67
|
+
`${source.kind === 'thread' ? 'Pull request review thread' : 'Pull request changes-requested review'}: ${source.sourceUrl}`,
|
|
68
|
+
...(source.path ? [`Location: ${source.path}${source.line === null ? '' : `:${source.line}`}`] : []),
|
|
69
|
+
source.body,
|
|
70
|
+
].join('\n'),
|
|
71
|
+
affectedContracts: [...new Set([
|
|
72
|
+
'pr-review',
|
|
73
|
+
...(source.path ? [`path:${source.path}`] : []),
|
|
74
|
+
])].sort(),
|
|
75
|
+
status: 'open',
|
|
76
|
+
})),
|
|
77
|
+
workerFeedback: sources.map((source) => ({
|
|
78
|
+
id: source.sourceId,
|
|
79
|
+
sourceUrl: source.sourceUrl,
|
|
80
|
+
path: source.path,
|
|
81
|
+
line: source.line,
|
|
82
|
+
body: source.body,
|
|
83
|
+
})),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function appendConsumedReviewSourceIds(execution, sourceIds) {
|
|
87
|
+
validateReviewFeedbackExecution(execution);
|
|
88
|
+
const seen = new Set(execution.consumedSourceIds);
|
|
89
|
+
const consumedSourceIds = [...execution.consumedSourceIds];
|
|
90
|
+
for (const sourceId of [...sourceIds].sort()) {
|
|
91
|
+
assertSourceId(sourceId, 'review feedback consumed source ID');
|
|
92
|
+
if (!seen.has(sourceId)) {
|
|
93
|
+
seen.add(sourceId);
|
|
94
|
+
consumedSourceIds.push(sourceId);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return { ...structuredClone(execution), consumedSourceIds };
|
|
98
|
+
}
|
|
99
|
+
export function bootstrapReviewFeedback(execution, previousPublishedHeadSha, existingSourceIds) {
|
|
100
|
+
if (execution.phase !== 'bootstrap-required')
|
|
101
|
+
throw new Error('review feedback bootstrap is already complete');
|
|
102
|
+
assertGitSha(previousPublishedHeadSha, 'review feedback previous published head');
|
|
103
|
+
const next = appendConsumedReviewSourceIds(execution, existingSourceIds);
|
|
104
|
+
const result = {
|
|
105
|
+
...next, phase: 'idle', previousPublishedHeadSha, repairRound: 0,
|
|
106
|
+
};
|
|
107
|
+
validateReviewFeedbackExecution(result);
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
export function activateReviewFeedback(execution, batch) {
|
|
111
|
+
validateReviewFeedbackExecution(execution);
|
|
112
|
+
validateFrozenReviewFeedbackBatch(batch);
|
|
113
|
+
if (execution.phase !== 'idle' || execution.previousPublishedHeadSha !== batch.priorPublishedHeadSha
|
|
114
|
+
|| batch.sources.some((source) => execution.consumedSourceIds.includes(source.sourceId))) {
|
|
115
|
+
throw new Error('review feedback execution cannot activate this batch');
|
|
116
|
+
}
|
|
117
|
+
const withConsumed = appendConsumedReviewSourceIds(execution, batch.sources.map((source) => source.sourceId));
|
|
118
|
+
const result = {
|
|
119
|
+
...withConsumed,
|
|
120
|
+
phase: 'frozen',
|
|
121
|
+
repairRound: 1,
|
|
122
|
+
activeBatch: structuredClone(batch),
|
|
123
|
+
implementationInvocation: null,
|
|
124
|
+
verifiedReceipt: null,
|
|
125
|
+
terminal: null,
|
|
126
|
+
};
|
|
127
|
+
validateReviewFeedbackExecution(result);
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
export function reserveNextReviewFeedbackRound(execution) {
|
|
131
|
+
validateReviewFeedbackExecution(execution);
|
|
132
|
+
if (!['frozen', 'repairing'].includes(execution.phase) || execution.repairRound >= 3) {
|
|
133
|
+
throw new Error('review feedback repair budget is exhausted or inactive');
|
|
134
|
+
}
|
|
135
|
+
const result = { ...structuredClone(execution), phase: 'repairing', repairRound: (execution.repairRound + 1) };
|
|
136
|
+
validateReviewFeedbackExecution(result);
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
export function markReviewFeedbackRepairing(execution) {
|
|
140
|
+
validateReviewFeedbackExecution(execution);
|
|
141
|
+
if (execution.phase !== 'frozen' && execution.phase !== 'repairing')
|
|
142
|
+
throw new Error('review feedback is not ready for repair');
|
|
143
|
+
const result = { ...structuredClone(execution), phase: 'repairing' };
|
|
144
|
+
validateReviewFeedbackExecution(result);
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
export function markReviewFeedbackVerified(execution, input) {
|
|
148
|
+
validateReviewFeedbackExecution(execution);
|
|
149
|
+
if (execution.phase !== 'repairing' || !execution.activeBatch)
|
|
150
|
+
throw new Error('review feedback is not ready to verify');
|
|
151
|
+
const result = {
|
|
152
|
+
...structuredClone(execution),
|
|
153
|
+
phase: 'verified',
|
|
154
|
+
implementationInvocation: null,
|
|
155
|
+
verifiedReceipt: { batchId: execution.activeBatch.batchId, ...structuredClone(input) },
|
|
156
|
+
};
|
|
157
|
+
validateReviewFeedbackExecution(result);
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
export function markReviewFeedbackPublishing(execution) {
|
|
161
|
+
validateReviewFeedbackExecution(execution);
|
|
162
|
+
if (execution.phase !== 'verified')
|
|
163
|
+
throw new Error('review feedback is not verified for publication');
|
|
164
|
+
const result = { ...structuredClone(execution), phase: 'publishing' };
|
|
165
|
+
validateReviewFeedbackExecution(result);
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
export function publishReviewFeedback(execution, receipt) {
|
|
169
|
+
validateReviewFeedbackExecution(execution);
|
|
170
|
+
validatePublishedReceipt(receipt);
|
|
171
|
+
if (execution.phase !== 'publishing' || !execution.activeBatch || receipt.batchId !== execution.activeBatch.batchId) {
|
|
172
|
+
throw new Error('review feedback publication receipt does not match active batch');
|
|
173
|
+
}
|
|
174
|
+
const result = {
|
|
175
|
+
...createReviewFeedbackBootstrap(),
|
|
176
|
+
phase: 'idle',
|
|
177
|
+
consumedSourceIds: [...execution.consumedSourceIds],
|
|
178
|
+
previousPublishedHeadSha: receipt.publishedHeadSha,
|
|
179
|
+
history: [...execution.history, structuredClone(receipt)],
|
|
180
|
+
};
|
|
181
|
+
validateReviewFeedbackExecution(result);
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
export function blockReviewFeedback(execution, kind, blockedAt) {
|
|
185
|
+
validateReviewFeedbackExecution(execution);
|
|
186
|
+
if (!execution.activeBatch)
|
|
187
|
+
throw new Error('review feedback has no active batch to block');
|
|
188
|
+
const receipt = {
|
|
189
|
+
kind: kind === 'safety' ? 'blocked-safety' : 'blocked-exhausted',
|
|
190
|
+
batchId: execution.activeBatch.batchId,
|
|
191
|
+
blockedAt,
|
|
192
|
+
};
|
|
193
|
+
const result = {
|
|
194
|
+
...structuredClone(execution),
|
|
195
|
+
phase: receipt.kind,
|
|
196
|
+
activeBatch: null,
|
|
197
|
+
implementationInvocation: null,
|
|
198
|
+
history: [...execution.history, receipt],
|
|
199
|
+
verifiedReceipt: null,
|
|
200
|
+
terminal: { kind, blockedAt },
|
|
201
|
+
};
|
|
202
|
+
validateReviewFeedbackExecution(result);
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
export function validateReviewFeedbackExecution(value) {
|
|
206
|
+
exactObject(value, [
|
|
207
|
+
'version', 'phase', 'consumedSourceIds', 'previousPublishedHeadSha', 'repairRound', 'activeBatch',
|
|
208
|
+
'implementationInvocation', 'history', 'verifiedReceipt', 'terminal',
|
|
209
|
+
], 'review feedback execution');
|
|
210
|
+
if (value.version !== 1)
|
|
211
|
+
throw new Error('review feedback execution version is invalid');
|
|
212
|
+
const phases = ['bootstrap-required', 'idle', 'frozen', 'repairing', 'verified', 'publishing', 'blocked-safety', 'blocked-exhausted'];
|
|
213
|
+
if (!phases.includes(value.phase))
|
|
214
|
+
throw new Error('review feedback execution phase is invalid');
|
|
215
|
+
validateSourceIds(value.consumedSourceIds, 'review feedback consumed source IDs');
|
|
216
|
+
if (value.previousPublishedHeadSha !== null)
|
|
217
|
+
assertGitSha(value.previousPublishedHeadSha, 'review feedback previous published head');
|
|
218
|
+
if (![0, 1, 2, 3].includes(value.repairRound))
|
|
219
|
+
throw new Error('review feedback repair round is invalid');
|
|
220
|
+
if (!Array.isArray(value.history) || value.history.length > MAX_SOURCES)
|
|
221
|
+
throw new Error('review feedback history is invalid');
|
|
222
|
+
for (const item of value.history)
|
|
223
|
+
validateHistory(item);
|
|
224
|
+
if (value.activeBatch !== null)
|
|
225
|
+
validateFrozenReviewFeedbackBatch(value.activeBatch);
|
|
226
|
+
if (value.implementationInvocation !== null)
|
|
227
|
+
validateImplementationInvocation(value.implementationInvocation);
|
|
228
|
+
if (value.verifiedReceipt !== null)
|
|
229
|
+
validateVerifiedReceipt(value.verifiedReceipt);
|
|
230
|
+
if (value.terminal !== null)
|
|
231
|
+
validateTerminal(value.terminal);
|
|
232
|
+
const phase = value.phase;
|
|
233
|
+
const active = ['frozen', 'repairing', 'verified', 'publishing'].includes(phase);
|
|
234
|
+
const blocked = phase === 'blocked-safety' || phase === 'blocked-exhausted';
|
|
235
|
+
if (phase === 'bootstrap-required' && (value.previousPublishedHeadSha !== null || value.repairRound !== 0 || value.activeBatch !== null)) {
|
|
236
|
+
throw new Error('review feedback bootstrap state is invalid');
|
|
237
|
+
}
|
|
238
|
+
if (phase === 'idle' && (value.previousPublishedHeadSha === null || value.repairRound !== 0 || value.activeBatch !== null
|
|
239
|
+
|| value.implementationInvocation !== null || value.terminal !== null)) {
|
|
240
|
+
throw new Error('review feedback idle state is invalid');
|
|
241
|
+
}
|
|
242
|
+
if (active && (value.previousPublishedHeadSha === null || value.activeBatch === null
|
|
243
|
+
|| ![1, 2, 3].includes(value.repairRound) || value.terminal !== null
|
|
244
|
+
|| value.activeBatch.priorPublishedHeadSha !== value.previousPublishedHeadSha)) {
|
|
245
|
+
throw new Error('review feedback active state is invalid');
|
|
246
|
+
}
|
|
247
|
+
if (blocked && (value.activeBatch !== null || value.implementationInvocation !== null || value.terminal === null
|
|
248
|
+
|| (phase === 'blocked-safety') !== (value.terminal.kind === 'safety'))) {
|
|
249
|
+
throw new Error('review feedback terminal state cannot retain active execution');
|
|
250
|
+
}
|
|
251
|
+
if (!active && value.implementationInvocation !== null)
|
|
252
|
+
throw new Error('review feedback invocation requires an active batch');
|
|
253
|
+
if (phase !== 'verified' && phase !== 'publishing' && value.verifiedReceipt !== null) {
|
|
254
|
+
throw new Error('review feedback verified receipt is invalid for phase');
|
|
255
|
+
}
|
|
256
|
+
if ((phase === 'verified' || phase === 'publishing')
|
|
257
|
+
&& value.verifiedReceipt?.batchId !== value.activeBatch?.batchId) {
|
|
258
|
+
throw new Error('review feedback verified receipt batch does not match active batch');
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
export function validateFrozenReviewFeedbackBatch(value) {
|
|
262
|
+
exactObject(value, ['version', 'batchId', 'runId', 'canonicalRepository', 'pullRequest', 'priorPublishedHeadSha', 'sources', 'frozenAt'], 'review feedback batch');
|
|
263
|
+
if (value.version !== 1)
|
|
264
|
+
throw new Error('review feedback batch version is invalid');
|
|
265
|
+
assertSha(value.batchId, 'review feedback batch ID');
|
|
266
|
+
assertString(value.runId, 'review feedback run ID');
|
|
267
|
+
if (typeof value.canonicalRepository !== 'string' || !/^[a-z0-9._-]+\/[a-z0-9._-]+$/u.test(value.canonicalRepository)) {
|
|
268
|
+
throw new Error('review feedback canonical repository is invalid');
|
|
269
|
+
}
|
|
270
|
+
exactObject(value.pullRequest, ['nodeId', 'number', 'headSha', 'headRefName', 'baseRefName', 'marker'], 'review feedback pull request');
|
|
271
|
+
assertString(value.pullRequest.nodeId, 'review feedback pull request node ID');
|
|
272
|
+
if (!Number.isSafeInteger(value.pullRequest.number) || value.pullRequest.number < 1)
|
|
273
|
+
throw new Error('review feedback pull request number is invalid');
|
|
274
|
+
assertGitSha(value.pullRequest.headSha, 'review feedback pull request head');
|
|
275
|
+
for (const field of ['headRefName', 'baseRefName', 'marker'])
|
|
276
|
+
assertString(value.pullRequest[field], `review feedback pull request ${field}`);
|
|
277
|
+
assertGitSha(value.priorPublishedHeadSha, 'review feedback prior published head');
|
|
278
|
+
if (!Array.isArray(value.sources) || value.sources.length === 0 || value.sources.length > MAX_SOURCES)
|
|
279
|
+
throw new Error('review feedback sources are invalid');
|
|
280
|
+
let prior = '';
|
|
281
|
+
for (const source of value.sources) {
|
|
282
|
+
validateFrozenSource(source);
|
|
283
|
+
if (source.sourceId <= prior)
|
|
284
|
+
throw new Error('review feedback sources must be sorted and unique');
|
|
285
|
+
prior = source.sourceId;
|
|
286
|
+
}
|
|
287
|
+
assertTimestamp(value.frozenAt, 'review feedback frozenAt');
|
|
288
|
+
const expected = createHash('sha256').update(`codex-orchestrator-review-feedback-batch-v1\0${canonicalJson({
|
|
289
|
+
runId: value.runId,
|
|
290
|
+
canonicalRepository: value.canonicalRepository,
|
|
291
|
+
pullRequest: value.pullRequest,
|
|
292
|
+
priorPublishedHeadSha: value.priorPublishedHeadSha,
|
|
293
|
+
sources: value.sources,
|
|
294
|
+
})}`).digest('hex');
|
|
295
|
+
if (value.batchId !== expected)
|
|
296
|
+
throw new Error('review feedback batch hash is invalid');
|
|
297
|
+
}
|
|
298
|
+
function validateFrozenSource(value) {
|
|
299
|
+
exactObject(value, ['sourceId', 'kind', 'sourceUrl', 'path', 'line', 'body', 'bodySha256', 'snapshotSha256', 'threadState', 'commitSha', 'sourceCreatedAt', 'sourceUpdatedAt', 'author', 'permission'], 'review feedback source');
|
|
300
|
+
assertSourceId(value.sourceId, 'review feedback source ID');
|
|
301
|
+
if (value.kind !== 'thread' && value.kind !== 'review')
|
|
302
|
+
throw new Error('review feedback source kind is invalid');
|
|
303
|
+
if ((value.kind === 'thread') !== value.sourceId.startsWith('pr-thread:'))
|
|
304
|
+
throw new Error('review feedback source ID kind mismatch');
|
|
305
|
+
assertString(value.sourceUrl, 'review feedback source URL');
|
|
306
|
+
if (value.path !== null)
|
|
307
|
+
assertString(value.path, 'review feedback source path');
|
|
308
|
+
if (value.line !== null && (!Number.isSafeInteger(value.line) || value.line < 1))
|
|
309
|
+
throw new Error('review feedback source line is invalid');
|
|
310
|
+
if (typeof value.body !== 'string' || value.body.length === 0 || value.body.length > 131_072)
|
|
311
|
+
throw new Error('review feedback source body is invalid');
|
|
312
|
+
assertSha(value.bodySha256, 'review feedback source body hash');
|
|
313
|
+
if (value.bodySha256 !== hashReviewFeedbackText(value.body))
|
|
314
|
+
throw new Error('review feedback source body hash is invalid');
|
|
315
|
+
assertSha(value.snapshotSha256, 'review feedback source snapshot hash');
|
|
316
|
+
if (value.kind === 'thread') {
|
|
317
|
+
exactObject(value.threadState, ['isResolved', 'isOutdated'], 'review feedback thread state');
|
|
318
|
+
if (typeof value.threadState.isResolved !== 'boolean' || typeof value.threadState.isOutdated !== 'boolean')
|
|
319
|
+
throw new Error('review feedback thread state is invalid');
|
|
320
|
+
}
|
|
321
|
+
else if (value.threadState !== null)
|
|
322
|
+
throw new Error('review feedback review source cannot have thread state');
|
|
323
|
+
assertGitSha(value.commitSha, 'review feedback source commit');
|
|
324
|
+
assertTimestamp(value.sourceCreatedAt, 'review feedback source createdAt');
|
|
325
|
+
assertTimestamp(value.sourceUpdatedAt, 'review feedback source updatedAt');
|
|
326
|
+
exactObject(value.author, ['login', 'userId'], 'review feedback source author');
|
|
327
|
+
assertString(value.author.login, 'review feedback source author login');
|
|
328
|
+
assertString(value.author.userId, 'review feedback source author ID');
|
|
329
|
+
exactObject(value.permission, ['permission', 'userId', 'checkedAt'], 'review feedback source permission');
|
|
330
|
+
if (value.permission.permission !== 'write' && value.permission.permission !== 'admin')
|
|
331
|
+
throw new Error('review feedback source permission is invalid');
|
|
332
|
+
if (value.permission.userId !== value.author.userId)
|
|
333
|
+
throw new Error('review feedback permission identity mismatch');
|
|
334
|
+
assertTimestamp(value.permission.checkedAt, 'review feedback permission checkedAt');
|
|
335
|
+
}
|
|
336
|
+
function validateImplementationInvocation(value) {
|
|
337
|
+
exactObject(value, ['phase', 'attemptId', 'reportPath', 'preparedAt', 'baseline', 'pid', 'processGroupId', 'launchedAt'], 'review feedback implementation invocation');
|
|
338
|
+
if (value.phase !== 'prepared' && value.phase !== 'launched')
|
|
339
|
+
throw new Error('review feedback invocation phase is invalid');
|
|
340
|
+
assertString(value.attemptId, 'review feedback invocation attempt ID');
|
|
341
|
+
assertString(value.reportPath, 'review feedback invocation report path');
|
|
342
|
+
assertTimestamp(value.preparedAt, 'review feedback invocation preparedAt');
|
|
343
|
+
exactObject(value.baseline, ['headSha', 'indexTreeSha', 'trackedContentSha256', 'untrackedContentSha256', 'worktreeIdentity'], 'review feedback invocation baseline');
|
|
344
|
+
assertGitSha(value.baseline.headSha, 'review feedback invocation head');
|
|
345
|
+
assertGitSha(value.baseline.indexTreeSha, 'review feedback invocation index tree');
|
|
346
|
+
assertSha(value.baseline.trackedContentSha256, 'review feedback invocation tracked hash');
|
|
347
|
+
assertSha(value.baseline.untrackedContentSha256, 'review feedback invocation untracked hash');
|
|
348
|
+
assertString(value.baseline.worktreeIdentity, 'review feedback invocation worktree identity');
|
|
349
|
+
if (value.phase === 'prepared' && (value.pid !== null || value.processGroupId !== null || value.launchedAt !== null))
|
|
350
|
+
throw new Error('prepared review feedback invocation has launch evidence');
|
|
351
|
+
if (value.phase === 'launched') {
|
|
352
|
+
if (!Number.isSafeInteger(value.pid) || value.pid < 1 || !Number.isSafeInteger(value.processGroupId) || value.processGroupId < 1)
|
|
353
|
+
throw new Error('launched review feedback invocation process is invalid');
|
|
354
|
+
assertTimestamp(value.launchedAt, 'review feedback invocation launchedAt');
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
function validateHistory(value) {
|
|
358
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
359
|
+
throw new Error('review feedback history item is invalid');
|
|
360
|
+
const kind = value.kind;
|
|
361
|
+
if (kind === 'published')
|
|
362
|
+
validatePublishedReceipt(value);
|
|
363
|
+
else if (kind === 'blocked-safety' || kind === 'blocked-exhausted') {
|
|
364
|
+
exactObject(value, ['kind', 'batchId', 'blockedAt'], 'review feedback blocked receipt');
|
|
365
|
+
assertSha(value.batchId, 'review feedback blocked batch ID');
|
|
366
|
+
assertTimestamp(value.blockedAt, 'review feedback blockedAt');
|
|
367
|
+
}
|
|
368
|
+
else
|
|
369
|
+
throw new Error('review feedback history kind is invalid');
|
|
370
|
+
}
|
|
371
|
+
function validatePublishedReceipt(value) {
|
|
372
|
+
exactObject(value, ['kind', 'batchId', 'sourceIds', 'priorHeadSha', 'publishedHeadSha', 'pullRequestNumber', 'summaryCommentId', 'publishedAt'], 'review feedback published receipt');
|
|
373
|
+
if (value.kind !== 'published')
|
|
374
|
+
throw new Error('review feedback published receipt kind is invalid');
|
|
375
|
+
assertSha(value.batchId, 'review feedback published batch ID');
|
|
376
|
+
validateSourceIds(value.sourceIds, 'review feedback published source IDs');
|
|
377
|
+
assertGitSha(value.priorHeadSha, 'review feedback prior head');
|
|
378
|
+
assertGitSha(value.publishedHeadSha, 'review feedback published head');
|
|
379
|
+
if (!Number.isSafeInteger(value.pullRequestNumber) || value.pullRequestNumber < 1)
|
|
380
|
+
throw new Error('review feedback published PR number is invalid');
|
|
381
|
+
assertString(value.summaryCommentId, 'review feedback summary comment ID');
|
|
382
|
+
assertTimestamp(value.publishedAt, 'review feedback publishedAt');
|
|
383
|
+
}
|
|
384
|
+
function validateVerifiedReceipt(value) {
|
|
385
|
+
exactObject(value, ['batchId', 'checkedChangeSha256', 'proofId', 'verifiedAt'], 'review feedback verified receipt');
|
|
386
|
+
assertSha(value.batchId, 'review feedback verified batch ID');
|
|
387
|
+
assertSha(value.checkedChangeSha256, 'review feedback checked change hash');
|
|
388
|
+
assertString(value.proofId, 'review feedback proof ID');
|
|
389
|
+
assertTimestamp(value.verifiedAt, 'review feedback verifiedAt');
|
|
390
|
+
}
|
|
391
|
+
function validateTerminal(value) {
|
|
392
|
+
exactObject(value, ['kind', 'blockedAt'], 'review feedback terminal');
|
|
393
|
+
if (value.kind !== 'safety' && value.kind !== 'exhausted')
|
|
394
|
+
throw new Error('review feedback terminal kind is invalid');
|
|
395
|
+
assertTimestamp(value.blockedAt, 'review feedback terminal blockedAt');
|
|
396
|
+
}
|
|
397
|
+
function validateSourceIds(value, field) {
|
|
398
|
+
if (!Array.isArray(value) || value.length > MAX_SOURCES * 4)
|
|
399
|
+
throw new Error(`${field} is invalid`);
|
|
400
|
+
const seen = new Set();
|
|
401
|
+
for (const item of value) {
|
|
402
|
+
assertSourceId(item, field);
|
|
403
|
+
if (seen.has(item))
|
|
404
|
+
throw new Error(`${field} must be unique`);
|
|
405
|
+
seen.add(item);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
function assertSourceId(value, field) {
|
|
409
|
+
if (typeof value !== 'string' || !SOURCE_ID.test(value))
|
|
410
|
+
throw new Error(`${field} is invalid`);
|
|
411
|
+
}
|
|
412
|
+
function exactObject(value, keys, field) {
|
|
413
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
414
|
+
throw new Error(`${field} must be an object`);
|
|
415
|
+
const actual = Object.keys(value).sort();
|
|
416
|
+
const expected = [...keys].sort();
|
|
417
|
+
if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index]))
|
|
418
|
+
throw new Error(`${field} has unknown or missing keys`);
|
|
419
|
+
}
|
|
420
|
+
function assertString(value, field) {
|
|
421
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > 131_072)
|
|
422
|
+
throw new Error(`${field} is invalid`);
|
|
423
|
+
}
|
|
424
|
+
function assertSha(value, field) {
|
|
425
|
+
if (typeof value !== 'string' || !SHA256.test(value))
|
|
426
|
+
throw new Error(`${field} is invalid`);
|
|
427
|
+
}
|
|
428
|
+
function assertGitSha(value, field) {
|
|
429
|
+
if (typeof value !== 'string' || !GIT_SHA.test(value))
|
|
430
|
+
throw new Error(`${field} is invalid`);
|
|
431
|
+
}
|
|
432
|
+
function assertTimestamp(value, field) {
|
|
433
|
+
if (typeof value !== 'string' || Number.isNaN(Date.parse(value)) || new Date(value).toISOString() !== value)
|
|
434
|
+
throw new Error(`${field} is invalid`);
|
|
435
|
+
}
|
|
436
|
+
//# sourceMappingURL=review-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-feedback.js","sourceRoot":"","sources":["../../../src/v2/review-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,13 @@ import { type RouteCoordinatorInput, type RouteCoordinatorResult, type RouteCoor
|
|
|
7
7
|
import type { RoutedContinuationRegistry } from './route-continuations.js';
|
|
8
8
|
import type { FrozenSpecReceiptV1 } from './spec-delivery.js';
|
|
9
9
|
import type { RunRecordV1, RunRecordWriter, RunStateFileV1 } from './run-store.js';
|
|
10
|
+
import type { ReviewFeedbackCoordinator } from './review-feedback-coordinator.js';
|
|
11
|
+
import { type ReviewFeedbackImplementationInvocationV1 } from './review-feedback.js';
|
|
10
12
|
export type RunIssueResult = {
|
|
11
13
|
status: 'review-ready';
|
|
12
14
|
pullRequestUrl: string;
|
|
13
15
|
evidencePath: string;
|
|
16
|
+
continuationEpoch?: string;
|
|
14
17
|
} | {
|
|
15
18
|
status: 'route-ready';
|
|
16
19
|
route: 'spec-required' | 'awaiting-user';
|
|
@@ -72,6 +75,13 @@ export interface RunIssueGit {
|
|
|
72
75
|
baseBranch: string;
|
|
73
76
|
baseSha: string;
|
|
74
77
|
}): Promise<void>;
|
|
78
|
+
ensureContinuationWorktree?(input: {
|
|
79
|
+
targetRoot: string;
|
|
80
|
+
worktreePath: string;
|
|
81
|
+
branchName: string;
|
|
82
|
+
baseBranch: string;
|
|
83
|
+
publishedHeadSha: string;
|
|
84
|
+
}): Promise<void>;
|
|
75
85
|
inspectWorktree(input: {
|
|
76
86
|
worktreePath: string;
|
|
77
87
|
branchName: string;
|
|
@@ -80,6 +90,7 @@ export interface RunIssueGit {
|
|
|
80
90
|
snapshot(worktreePath: string): Promise<Omit<CheckedChangeFreshness, 'checkPolicySha256'>>;
|
|
81
91
|
fingerprintDeniedPaths(worktreePath: string, deniedPaths: string[]): Promise<string>;
|
|
82
92
|
listChangedFiles(worktreePath: string): Promise<string[]>;
|
|
93
|
+
listChangedFilesIgnoringUntrackedRoot(worktreePath: string, ignoredRoot: string): Promise<string[]>;
|
|
83
94
|
fingerprintChangedFiles(worktreePath: string, changedFiles: string[]): Promise<string>;
|
|
84
95
|
stageAll(worktreePath: string): Promise<void>;
|
|
85
96
|
getTreeSha(worktreePath: string): Promise<string>;
|
|
@@ -143,6 +154,9 @@ export interface RunIssueDependencies {
|
|
|
143
154
|
}): Promise<{
|
|
144
155
|
url: string;
|
|
145
156
|
body: string;
|
|
157
|
+
number?: number;
|
|
158
|
+
nodeId?: string;
|
|
159
|
+
headSha?: string;
|
|
146
160
|
} | undefined>;
|
|
147
161
|
createDraft(input: {
|
|
148
162
|
title: string;
|
|
@@ -152,7 +166,16 @@ export interface RunIssueDependencies {
|
|
|
152
166
|
}): Promise<{
|
|
153
167
|
url: string;
|
|
154
168
|
}>;
|
|
169
|
+
listConversationComments?(number: number): Promise<Array<{
|
|
170
|
+
id: string;
|
|
171
|
+
body: string;
|
|
172
|
+
}>>;
|
|
173
|
+
postConversationComment?(number: number, body: string): Promise<{
|
|
174
|
+
id: string;
|
|
175
|
+
body: string;
|
|
176
|
+
}>;
|
|
155
177
|
};
|
|
178
|
+
reviewFeedback?: ReviewFeedbackCoordinator;
|
|
156
179
|
git: RunIssueGit;
|
|
157
180
|
implementationAgent: {
|
|
158
181
|
run(input: {
|
|
@@ -164,8 +187,30 @@ export interface RunIssueDependencies {
|
|
|
164
187
|
reworkFindings: string[];
|
|
165
188
|
repairOnly: boolean;
|
|
166
189
|
workflowGeneration: WorkflowGenerationReceipt;
|
|
190
|
+
reviewFeedbackRound?: number;
|
|
191
|
+
reviewFeedback?: Array<{
|
|
192
|
+
id: string;
|
|
193
|
+
sourceUrl: string;
|
|
194
|
+
path: string | null;
|
|
195
|
+
line: number | null;
|
|
196
|
+
body: string;
|
|
197
|
+
}>;
|
|
198
|
+
onPrepared?: (input: Omit<ReviewFeedbackImplementationInvocationV1, 'phase' | 'pid' | 'processGroupId' | 'launchedAt'>) => Promise<void>;
|
|
199
|
+
onLaunched?: (input: {
|
|
200
|
+
attemptId: string;
|
|
201
|
+
pid: number;
|
|
202
|
+
processGroupId: number;
|
|
203
|
+
launchedAt: string;
|
|
204
|
+
}) => Promise<void>;
|
|
167
205
|
signal: AbortSignal;
|
|
168
206
|
}): Promise<ImplementationAgentResult>;
|
|
207
|
+
recover?(input: {
|
|
208
|
+
runId: string;
|
|
209
|
+
canonicalRepository: string;
|
|
210
|
+
invocation: ReviewFeedbackImplementationInvocationV1;
|
|
211
|
+
}): Promise<Extract<ImplementationAgentResult, {
|
|
212
|
+
kind: 'completed';
|
|
213
|
+
}> | undefined>;
|
|
169
214
|
};
|
|
170
215
|
implementationReviewer: {
|
|
171
216
|
run(input: ImplementationReviewerInput): Promise<ImplementationReviewerResult>;
|
|
@@ -195,6 +240,7 @@ export interface RunIssueDependencies {
|
|
|
195
240
|
frozenCriteria: FrozenCriterion[];
|
|
196
241
|
checkedChange: CheckedChange;
|
|
197
242
|
workflowGeneration: WorkflowGenerationReceipt;
|
|
243
|
+
beforeAgentLaunch?: () => Promise<void>;
|
|
198
244
|
}): Promise<ProveChangeResult>;
|
|
199
245
|
};
|
|
200
246
|
checkedChangeMint: CheckedChangeMintCapability;
|
|
@@ -226,6 +272,7 @@ export declare class OwnerLockContentionError extends Error {
|
|
|
226
272
|
interface ActiveRun {
|
|
227
273
|
state: RunStateFileV1;
|
|
228
274
|
record: RunRecordV1;
|
|
275
|
+
config: AgentAutoConfig;
|
|
229
276
|
}
|
|
230
277
|
export declare class RunIssue {
|
|
231
278
|
private readonly dependencies;
|
|
@@ -234,6 +281,10 @@ export declare class RunIssue {
|
|
|
234
281
|
private reconcileClaim;
|
|
235
282
|
private publish;
|
|
236
283
|
private publicationDiverged;
|
|
284
|
+
private updateExistingPullRequest;
|
|
285
|
+
private continueReviewReady;
|
|
286
|
+
private resumeActivatedReviewFeedback;
|
|
287
|
+
private reviewReadyObservationBlocked;
|
|
237
288
|
runIssue(input: {
|
|
238
289
|
targetRoot: string;
|
|
239
290
|
issueNumber: number;
|
|
@@ -252,11 +303,17 @@ export declare class RunIssue {
|
|
|
252
303
|
private clearIntent;
|
|
253
304
|
private confirmEffect;
|
|
254
305
|
private authorized;
|
|
306
|
+
private authorizedForExactLabels;
|
|
307
|
+
private hasTrustedClaim;
|
|
255
308
|
private readIssue;
|
|
309
|
+
private revalidateFeedbackWorker;
|
|
310
|
+
private mapFeedbackRevalidation;
|
|
256
311
|
private runImplementation;
|
|
257
312
|
private runDirectReviewFull;
|
|
258
313
|
private recoverDirectReviewInvocation;
|
|
259
314
|
private startNextCycle;
|
|
315
|
+
private repairBudgetExhausted;
|
|
316
|
+
private blockReviewFeedback;
|
|
260
317
|
private mapImplementationFailure;
|
|
261
318
|
private mapProofFailure;
|
|
262
319
|
private revoked;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../../src/v2/run-issue.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAezE,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC9G,OAAO,
|
|
1
|
+
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../../src/v2/run-issue.ts"],"names":[],"mappings":"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"}
|