@cat-factory/contracts 0.236.0 → 0.237.0
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/companion.js +1 -1
- package/dist/companion.js.map +1 -1
- package/dist/execution.d.ts +0 -194
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +8 -87
- package/dist/execution.js.map +1 -1
- package/dist/human-verdict-gates.d.ts +4 -0
- package/dist/human-verdict-gates.d.ts.map +1 -1
- package/dist/human-verdict-gates.js +10 -2
- package/dist/human-verdict-gates.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/public-decisions.d.ts +878 -6
- package/dist/public-decisions.d.ts.map +1 -1
- package/dist/public-decisions.js +431 -13
- package/dist/public-decisions.js.map +1 -1
- package/dist/routes/public-decisions.d.ts +5957 -41
- package/dist/routes/public-decisions.d.ts.map +1 -1
- package/dist/routes/public-decisions.js +239 -1
- package/dist/routes/public-decisions.js.map +1 -1
- package/dist/step-decisions.d.ts +130 -0
- package/dist/step-decisions.d.ts.map +1 -0
- package/dist/step-decisions.js +118 -0
- package/dist/step-decisions.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Which parked decision a `publicDecision` entry describes.
|
|
4
|
+
*
|
|
5
|
+
* The list is the surface's own honesty check: `PUBLICLY_ANSWERABLE_PARK_SURFACES` (server-side
|
|
6
|
+
* admission) names the park surfaces a `decide` key is TOLD it can answer, and a kind here with no
|
|
7
|
+
* route behind it is exactly the "refusal advertising a capability we do not have" defect that set
|
|
8
|
+
* builds. Add a member only together with its routes.
|
|
9
|
+
*/
|
|
10
|
+
export declare const publicDecisionKindSchema: v.PicklistSchema<["requirements-review", "fork", "judge", "input-gate", "approval-gate", "agent-decision", "clarity-review", "brainstorm", "pr-review", "human-test", "visual-confirmation"], undefined>;
|
|
4
11
|
export type PublicDecisionKind = v.InferOutput<typeof publicDecisionKindSchema>;
|
|
5
12
|
/**
|
|
6
13
|
* One reviewer finding as exposed externally — the question, how serious it is, and where it
|
|
@@ -153,6 +160,395 @@ export declare const publicInputGateDecisionSchema: v.ObjectSchema<{
|
|
|
153
160
|
readonly checkedAt: v.NumberSchema<undefined>;
|
|
154
161
|
}, undefined>;
|
|
155
162
|
export type PublicInputGateDecision = v.InferOutput<typeof publicInputGateDecisionSchema>;
|
|
163
|
+
/**
|
|
164
|
+
* A run parked on a plain APPROVAL GATE: a pipeline step marked `requiresApproval` finished, and
|
|
165
|
+
* the run is holding its output in front of a person. The simplest park the platform has and the
|
|
166
|
+
* one every pipeline can carry, which is why it is the first thing an integration that "pauses a
|
|
167
|
+
* run until a human approves" reaches for.
|
|
168
|
+
*
|
|
169
|
+
* `approvalId` is the STABLE anchor every action addresses, and it is not ceremony: the engine
|
|
170
|
+
* arbitrates a parked gate BY that id, so answering with the id read from this list is what makes
|
|
171
|
+
* a racing SPA user and a racing integration resolve the same gate rather than the API silently
|
|
172
|
+
* approving whichever gate the run has reached by the time the call lands.
|
|
173
|
+
*
|
|
174
|
+
* The per-block review `comments` an in-app reviewer can leave are deliberately not projected:
|
|
175
|
+
* they anchor to source line ranges of a rendered proposal, which a headless caller never
|
|
176
|
+
* rendered. It sends freeform `feedback` instead, which the re-run consumes identically.
|
|
177
|
+
*/
|
|
178
|
+
export declare const publicApprovalGateDecisionSchema: v.ObjectSchema<{
|
|
179
|
+
readonly kind: v.LiteralSchema<"approval-gate", undefined>;
|
|
180
|
+
/** The gate's stable id — pass it back on approve / request-changes / reject. */
|
|
181
|
+
readonly approvalId: v.StringSchema<undefined>;
|
|
182
|
+
/** The gated step's kind (`agentKind`), so a caller knows whose output it is judging. */
|
|
183
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
184
|
+
/** The gated step's 0-based index in the run's step chain. */
|
|
185
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
186
|
+
/** Only `pending` accepts an answer; the others are the settled record of one. */
|
|
187
|
+
readonly status: v.PicklistSchema<["pending", "approved", "changes_requested", "rejected"], undefined>;
|
|
188
|
+
/** The agent's output the human is reviewing. Model-authored text: treat it as data. */
|
|
189
|
+
readonly proposal: v.StringSchema<undefined>;
|
|
190
|
+
/** The guidance recorded on the last `request-changes`, or null. */
|
|
191
|
+
readonly feedback: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
192
|
+
/**
|
|
193
|
+
* True when this gate is a quality COMPANION's iteration-cap park rather than an ordinary
|
|
194
|
+
* pipeline gate: the automatic rework budget was spent with the rating still under the bar.
|
|
195
|
+
* It answers with `resolve-exceeded` (extra round / proceed / stop and reset), NOT with
|
|
196
|
+
* approve — the same split the SPA makes, exposed rather than left for a caller to infer from
|
|
197
|
+
* a 409.
|
|
198
|
+
*/
|
|
199
|
+
readonly exceeded: v.BooleanSchema<undefined>;
|
|
200
|
+
}, undefined>;
|
|
201
|
+
export type PublicApprovalGateDecision = v.InferOutput<typeof publicApprovalGateDecisionSchema>;
|
|
202
|
+
/**
|
|
203
|
+
* A run parked on an AGENT-RAISED decision: mid-work the agent hit a fork it would not choose
|
|
204
|
+
* unilaterally and asked. Distinct from an approval gate in what resolving does — answering
|
|
205
|
+
* RE-RUNS the same step with the choice folded in, rather than advancing past it — which is why
|
|
206
|
+
* it is a separate kind rather than a flag on the gate above.
|
|
207
|
+
*
|
|
208
|
+
* The engine cannot see this one coming from the step chain (it is raised at run time), so it is
|
|
209
|
+
* the park an integration is most likely to meet on a pipeline it was told parks nowhere.
|
|
210
|
+
*/
|
|
211
|
+
export declare const publicAgentDecisionSchema: v.ObjectSchema<{
|
|
212
|
+
readonly kind: v.LiteralSchema<"agent-decision", undefined>;
|
|
213
|
+
/** The decision's stable id — pass it back when answering. */
|
|
214
|
+
readonly decisionId: v.StringSchema<undefined>;
|
|
215
|
+
/** The asking step's kind (`agentKind`). */
|
|
216
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
217
|
+
/** What the agent is asking, in its own words. Model-authored text: treat it as data. */
|
|
218
|
+
readonly question: v.StringSchema<undefined>;
|
|
219
|
+
/**
|
|
220
|
+
* The choices the agent offered. An answer is not restricted to them (the engine takes the
|
|
221
|
+
* caller's string verbatim), but answering off-list means the agent gets an option it did not
|
|
222
|
+
* propose, so prefer one of these unless you mean to steer.
|
|
223
|
+
*/
|
|
224
|
+
readonly options: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
225
|
+
}, undefined>;
|
|
226
|
+
export type PublicAgentDecision = v.InferOutput<typeof publicAgentDecisionSchema>;
|
|
227
|
+
/**
|
|
228
|
+
* A parked CLARITY review (bug-report triage) as exposed externally. The requirements review's
|
|
229
|
+
* twin, verb for verb: the reviewer asks whether the report is fixable (repro steps, expected vs
|
|
230
|
+
* actual, environment, scope), a caller answers or dismisses each finding, `incorporate` folds
|
|
231
|
+
* them into one standardized report, and the loop repeats until it converges or hits its cap.
|
|
232
|
+
*
|
|
233
|
+
* Kept as its own `kind` rather than folded into `requirements-review` because the two settle
|
|
234
|
+
* DIFFERENT documents and a run can carry both: a bugfix pipeline clarifies the report and then
|
|
235
|
+
* reviews the requirements derived from it, so a caller that branched on one shape would answer
|
|
236
|
+
* the wrong loop.
|
|
237
|
+
*/
|
|
238
|
+
export declare const publicClarityDecisionSchema: v.ObjectSchema<{
|
|
239
|
+
readonly kind: v.LiteralSchema<"clarity-review", undefined>;
|
|
240
|
+
readonly reviewId: v.StringSchema<undefined>;
|
|
241
|
+
/** The board task the review belongs to. */
|
|
242
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
243
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
244
|
+
/** Which reviewer pass this is (the initial review is 1). */
|
|
245
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
246
|
+
/** The reviewer-pass budget, from the task's merge preset. */
|
|
247
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
248
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
249
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
250
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
251
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
252
|
+
/** How important resolving it is before implementation proceeds. */
|
|
253
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
254
|
+
/** Short headline of the concern. */
|
|
255
|
+
readonly title: v.StringSchema<undefined>;
|
|
256
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
257
|
+
readonly detail: v.StringSchema<undefined>;
|
|
258
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
259
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
260
|
+
/** The recorded answer, or null while unanswered. */
|
|
261
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
262
|
+
}, undefined>, undefined>;
|
|
263
|
+
/**
|
|
264
|
+
* The standardized bug report the last incorporation produced; null until one exists. Once the
|
|
265
|
+
* review settles, this is the report every downstream agent works from.
|
|
266
|
+
*/
|
|
267
|
+
readonly clarifiedReport: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
268
|
+
}, undefined>;
|
|
269
|
+
export type PublicClarityDecision = v.InferOutput<typeof publicClarityDecisionSchema>;
|
|
270
|
+
/**
|
|
271
|
+
* A parked BRAINSTORM dialogue as exposed externally: the agent proposed a handful of concrete
|
|
272
|
+
* options with their trade-offs, and the run is waiting for a person to pick and steer before it
|
|
273
|
+
* converges on one direction.
|
|
274
|
+
*
|
|
275
|
+
* Keyed by `(task, stage)`, not task alone — a block may hold one live `requirements` session and
|
|
276
|
+
* one live `architecture` session at once, so a decision list can carry TWO brainstorm entries and
|
|
277
|
+
* every route takes the stage. A caller that keys its own state by `kind` alone will collide the
|
|
278
|
+
* two; key by `kind` + `stage`.
|
|
279
|
+
*/
|
|
280
|
+
export declare const publicBrainstormDecisionSchema: v.ObjectSchema<{
|
|
281
|
+
readonly kind: v.LiteralSchema<"brainstorm", undefined>;
|
|
282
|
+
readonly sessionId: v.StringSchema<undefined>;
|
|
283
|
+
/** Which dialogue this is: the requirements direction, or the architecture approach. */
|
|
284
|
+
readonly stage: v.PicklistSchema<["requirements", "architecture"], undefined>;
|
|
285
|
+
/** The board task the session belongs to. */
|
|
286
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
287
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
288
|
+
/** Which agent pass this is (the initial pass is 1). */
|
|
289
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
290
|
+
/** The agent-pass budget, from the task's merge preset. */
|
|
291
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
292
|
+
/**
|
|
293
|
+
* The proposed options. Structurally the same shape as a review finding (one source of truth
|
|
294
|
+
* for the item), but read it as a proposal to pick or steer, not a defect to answer.
|
|
295
|
+
*/
|
|
296
|
+
readonly options: v.ArraySchema<v.ObjectSchema<{
|
|
297
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
298
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
299
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
300
|
+
/** How important resolving it is before implementation proceeds. */
|
|
301
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
302
|
+
/** Short headline of the concern. */
|
|
303
|
+
readonly title: v.StringSchema<undefined>;
|
|
304
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
305
|
+
readonly detail: v.StringSchema<undefined>;
|
|
306
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
307
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
308
|
+
/** The recorded answer, or null while unanswered. */
|
|
309
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
310
|
+
}, undefined>, undefined>;
|
|
311
|
+
/** The converged direction the last incorporation produced; null until one exists. */
|
|
312
|
+
readonly convergedDirection: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
313
|
+
}, undefined>;
|
|
314
|
+
export type PublicBrainstormDecision = v.InferOutput<typeof publicBrainstormDecisionSchema>;
|
|
315
|
+
/**
|
|
316
|
+
* One cohesive group of changed files the reviewer worked as a unit, as exposed externally.
|
|
317
|
+
* Findings anchor to a slice by `sliceId`, so a caller can present them grouped the way the
|
|
318
|
+
* reviewer actually reasoned rather than as one flat list.
|
|
319
|
+
*
|
|
320
|
+
* The internal `prReviewSliceReviewSchema` (each slice's verbatim in-flight subagent report, which
|
|
321
|
+
* exists so a dying review can be RESUMED per slice) is deliberately absent: it is recovery
|
|
322
|
+
* plumbing for the engine, and its prose is superseded by the aggregated `findings`.
|
|
323
|
+
*/
|
|
324
|
+
export declare const publicPrReviewSliceSchema: v.ObjectSchema<{
|
|
325
|
+
/** Stable slice id (`prs_*`); a finding's `sliceId` refers to this. */
|
|
326
|
+
readonly sliceId: v.StringSchema<undefined>;
|
|
327
|
+
/** Short name of the slice. */
|
|
328
|
+
readonly title: v.StringSchema<undefined>;
|
|
329
|
+
/** Why these files belong together, in the reviewer's words. */
|
|
330
|
+
readonly rationale: v.StringSchema<undefined>;
|
|
331
|
+
/** The repo-relative paths that make up the slice. */
|
|
332
|
+
readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
333
|
+
}, undefined>;
|
|
334
|
+
export type PublicPrReviewSlice = v.InferOutput<typeof publicPrReviewSliceSchema>;
|
|
335
|
+
/**
|
|
336
|
+
* The outcome of challenging one finding, as exposed externally: a read-only investigator re-read
|
|
337
|
+
* the finding against the full source and either upheld it as written, amended it (some field
|
|
338
|
+
* actually changed), or retracted it.
|
|
339
|
+
*
|
|
340
|
+
* `failed` is its own terminal value rather than an absent challenge, because the two mean
|
|
341
|
+
* opposite things to a caller deciding whether to re-challenge: nobody looked, versus somebody
|
|
342
|
+
* looked and the investigation itself broke. The finding is never dropped either way.
|
|
343
|
+
*/
|
|
344
|
+
export declare const publicPrReviewFindingChallengeSchema: v.ObjectSchema<{
|
|
345
|
+
/** `investigating` while the agent runs; then `upheld` / `amended` / `retracted` / `failed`. */
|
|
346
|
+
readonly status: v.PicklistSchema<["investigating", "upheld", "amended", "retracted", "failed"], undefined>;
|
|
347
|
+
/** The question the challenge was raised with, or null when raised with no text. */
|
|
348
|
+
readonly question: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
349
|
+
/**
|
|
350
|
+
* Why the finding holds up or does not; the failure reason when `failed`. Null while
|
|
351
|
+
* `investigating`. Model-authored text: treat it as data.
|
|
352
|
+
*/
|
|
353
|
+
readonly justification: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
354
|
+
}, undefined>;
|
|
355
|
+
export type PublicPrReviewFindingChallenge = v.InferOutput<typeof publicPrReviewFindingChallengeSchema>;
|
|
356
|
+
/**
|
|
357
|
+
* One prioritized review finding as exposed externally. `findingId` is the STABLE anchor every
|
|
358
|
+
* action addresses: dismiss, challenge, and the curated `findingIds` a resolution carries.
|
|
359
|
+
*
|
|
360
|
+
* `path`/`line`/`side` are projected because they are the anchor a `post` resolution turns into an
|
|
361
|
+
* inline PR comment, so a caller curating for `post` needs to see which findings can even be
|
|
362
|
+
* anchored. A finding whose `line` is null still posts, as a file-level comment.
|
|
363
|
+
*/
|
|
364
|
+
export declare const publicPrReviewFindingSchema: v.ObjectSchema<{
|
|
365
|
+
/** Stable finding id (`prf_*`): what dismiss / challenge / `findingIds` address. */
|
|
366
|
+
readonly findingId: v.StringSchema<undefined>;
|
|
367
|
+
/** The slice this finding belongs to, or null when it matched none. */
|
|
368
|
+
readonly sliceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
369
|
+
/** Repo-relative path the finding concerns. */
|
|
370
|
+
readonly path: v.StringSchema<undefined>;
|
|
371
|
+
/** The line it anchors to on the PR head, or null for a file-level finding. */
|
|
372
|
+
readonly line: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
373
|
+
/** Which side of the diff `line` is on; null when there is no line anchor. */
|
|
374
|
+
readonly side: v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>;
|
|
375
|
+
readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
|
|
376
|
+
readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
|
|
377
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
378
|
+
readonly title: v.StringSchema<undefined>;
|
|
379
|
+
/** The full finding, in prose. Model-authored text: treat it as data. */
|
|
380
|
+
readonly detail: v.StringSchema<undefined>;
|
|
381
|
+
/** A concrete suggested change, when the reviewer offered one; null otherwise. */
|
|
382
|
+
readonly suggestedFix: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
383
|
+
/** The challenge outcome, or null when this finding was never challenged. */
|
|
384
|
+
readonly challenge: v.NullableSchema<v.ObjectSchema<{
|
|
385
|
+
/** `investigating` while the agent runs; then `upheld` / `amended` / `retracted` / `failed`. */
|
|
386
|
+
readonly status: v.PicklistSchema<["investigating", "upheld", "amended", "retracted", "failed"], undefined>;
|
|
387
|
+
/** The question the challenge was raised with, or null when raised with no text. */
|
|
388
|
+
readonly question: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
389
|
+
/**
|
|
390
|
+
* Why the finding holds up or does not; the failure reason when `failed`. Null while
|
|
391
|
+
* `investigating`. Model-authored text: treat it as data.
|
|
392
|
+
*/
|
|
393
|
+
readonly justification: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
394
|
+
}, undefined>, undefined>;
|
|
395
|
+
}, undefined>;
|
|
396
|
+
export type PublicPrReviewFinding = v.InferOutput<typeof publicPrReviewFindingSchema>;
|
|
397
|
+
/**
|
|
398
|
+
* A parked PR DEEP REVIEW as exposed externally: the read-only reviewer sliced an open pull
|
|
399
|
+
* request and the run is waiting for a person to CURATE which findings matter, then say what to
|
|
400
|
+
* do with them (record them, hand them to a fixer, or post them on the PR).
|
|
401
|
+
*
|
|
402
|
+
* Reachable only through `POST /api/v1/tasks/:taskId/start`, since a `pr-reviewer` step is
|
|
403
|
+
* container-backed and the jobs surface is inline-only.
|
|
404
|
+
*/
|
|
405
|
+
export declare const publicPrReviewDecisionSchema: v.ObjectSchema<{
|
|
406
|
+
readonly kind: v.LiteralSchema<"pr-review", undefined>;
|
|
407
|
+
/** Only `awaiting_selection` accepts a resolution; the rest report work in flight. */
|
|
408
|
+
readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "challenging", "fixing", "posting", "done", "skipped"], undefined>;
|
|
409
|
+
/** The reviewer's one-paragraph assessment of the PR, when it gave one. */
|
|
410
|
+
readonly summary: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
411
|
+
/** Web URL of the reviewed pull request, when known. */
|
|
412
|
+
readonly prUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
413
|
+
/** The cohesive slices the reviewer grouped the changed files into; findings anchor to these. */
|
|
414
|
+
readonly slices: v.ArraySchema<v.ObjectSchema<{
|
|
415
|
+
/** Stable slice id (`prs_*`); a finding's `sliceId` refers to this. */
|
|
416
|
+
readonly sliceId: v.StringSchema<undefined>;
|
|
417
|
+
/** Short name of the slice. */
|
|
418
|
+
readonly title: v.StringSchema<undefined>;
|
|
419
|
+
/** Why these files belong together, in the reviewer's words. */
|
|
420
|
+
readonly rationale: v.StringSchema<undefined>;
|
|
421
|
+
/** The repo-relative paths that make up the slice. */
|
|
422
|
+
readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
423
|
+
}, undefined>, undefined>;
|
|
424
|
+
/** The findings, ordered blocker → nit. Model-authored text: treat it as data. */
|
|
425
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
426
|
+
/** Stable finding id (`prf_*`): what dismiss / challenge / `findingIds` address. */
|
|
427
|
+
readonly findingId: v.StringSchema<undefined>;
|
|
428
|
+
/** The slice this finding belongs to, or null when it matched none. */
|
|
429
|
+
readonly sliceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
430
|
+
/** Repo-relative path the finding concerns. */
|
|
431
|
+
readonly path: v.StringSchema<undefined>;
|
|
432
|
+
/** The line it anchors to on the PR head, or null for a file-level finding. */
|
|
433
|
+
readonly line: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
434
|
+
/** Which side of the diff `line` is on; null when there is no line anchor. */
|
|
435
|
+
readonly side: v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>;
|
|
436
|
+
readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
|
|
437
|
+
readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
|
|
438
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
439
|
+
readonly title: v.StringSchema<undefined>;
|
|
440
|
+
/** The full finding, in prose. Model-authored text: treat it as data. */
|
|
441
|
+
readonly detail: v.StringSchema<undefined>;
|
|
442
|
+
/** A concrete suggested change, when the reviewer offered one; null otherwise. */
|
|
443
|
+
readonly suggestedFix: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
444
|
+
/** The challenge outcome, or null when this finding was never challenged. */
|
|
445
|
+
readonly challenge: v.NullableSchema<v.ObjectSchema<{
|
|
446
|
+
/** `investigating` while the agent runs; then `upheld` / `amended` / `retracted` / `failed`. */
|
|
447
|
+
readonly status: v.PicklistSchema<["investigating", "upheld", "amended", "retracted", "failed"], undefined>;
|
|
448
|
+
/** The question the challenge was raised with, or null when raised with no text. */
|
|
449
|
+
readonly question: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
450
|
+
/**
|
|
451
|
+
* Why the finding holds up or does not; the failure reason when `failed`. Null while
|
|
452
|
+
* `investigating`. Model-authored text: treat it as data.
|
|
453
|
+
*/
|
|
454
|
+
readonly justification: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
455
|
+
}, undefined>, undefined>;
|
|
456
|
+
}, undefined>, undefined>;
|
|
457
|
+
/** The finding ids currently selected to act on (empty until a caller curates). */
|
|
458
|
+
readonly selectedFindingIds: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
459
|
+
}, undefined>;
|
|
460
|
+
export type PublicPrReviewDecision = v.InferOutput<typeof publicPrReviewDecisionSchema>;
|
|
461
|
+
/** The ephemeral environment a `human-test` gate parked against, as exposed externally. */
|
|
462
|
+
export declare const publicHumanTestEnvironmentSchema: v.ObjectSchema<{
|
|
463
|
+
/** The public URL to test against; null while still provisioning. */
|
|
464
|
+
readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
465
|
+
readonly status: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
466
|
+
/** Epoch ms the environment expires, when known. */
|
|
467
|
+
readonly expiresAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
468
|
+
}, undefined>;
|
|
469
|
+
export type PublicHumanTestEnvironment = v.InferOutput<typeof publicHumanTestEnvironmentSchema>;
|
|
470
|
+
/**
|
|
471
|
+
* A run parked on the HUMAN-TEST gate: a live ephemeral environment is up and the run is waiting
|
|
472
|
+
* for a person to exercise it.
|
|
473
|
+
*
|
|
474
|
+
* Exposed with its limits stated rather than sold as equivalent to the other kinds. The verbs are
|
|
475
|
+
* mechanical, but the JUDGEMENT this park records ("does the change actually work") is the one an
|
|
476
|
+
* API consumer is least able to supply on its own. It earns its place for the integration that
|
|
477
|
+
* drives its own human through a different UI, or that has a real automated check to run against
|
|
478
|
+
* `environment.url`; it is not a way to wave a run through unlooked-at.
|
|
479
|
+
*/
|
|
480
|
+
export declare const publicHumanTestDecisionSchema: v.ObjectSchema<{
|
|
481
|
+
readonly kind: v.LiteralSchema<"human-test", undefined>;
|
|
482
|
+
/** Only `awaiting_human` accepts an answer; the others report work in flight. */
|
|
483
|
+
readonly phase: v.PicklistSchema<["provisioning", "awaiting_human", "fixing", "resolving_conflicts", "passed"], undefined>;
|
|
484
|
+
/** The environment to test against; null in degraded manual mode or after a destroy. */
|
|
485
|
+
readonly environment: v.NullableSchema<v.ObjectSchema<{
|
|
486
|
+
/** The public URL to test against; null while still provisioning. */
|
|
487
|
+
readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
488
|
+
readonly status: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
489
|
+
/** Epoch ms the environment expires, when known. */
|
|
490
|
+
readonly expiresAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
491
|
+
}, undefined>, undefined>;
|
|
492
|
+
/**
|
|
493
|
+
* Why no environment was provisioned (no env provider wired, or provisioning errored). Non-null
|
|
494
|
+
* means the gate is in manual mode: there is nothing to point a check at, and the change has to
|
|
495
|
+
* be tested against the PR branch by hand.
|
|
496
|
+
*/
|
|
497
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
498
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
499
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
500
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
501
|
+
}, undefined>;
|
|
502
|
+
export type PublicHumanTestDecision = v.InferOutput<typeof publicHumanTestDecisionSchema>;
|
|
503
|
+
/**
|
|
504
|
+
* One actual-vs-reference pairing the visual-confirmation gate is showing, as exposed externally:
|
|
505
|
+
* a logical view, the screenshot captured of it, and the reference design for the same view when
|
|
506
|
+
* one was uploaded.
|
|
507
|
+
*
|
|
508
|
+
* Either side may be null (a captured view with no reference, or a reference whose view was never
|
|
509
|
+
* captured), and BOTH ids being null is meaningful rather than degenerate: it says the view is
|
|
510
|
+
* known and neither image exists. That is why the fields are always-present nullables instead of
|
|
511
|
+
* optional ones.
|
|
512
|
+
*/
|
|
513
|
+
export declare const publicVisualConfirmPairSchema: v.ObjectSchema<{
|
|
514
|
+
/** The logical view this pairing is for. */
|
|
515
|
+
readonly view: v.StringSchema<undefined>;
|
|
516
|
+
/** Artifact id of the captured screenshot, or null. App-resolvable only; see below. */
|
|
517
|
+
readonly actualArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
518
|
+
/** Artifact id of the uploaded reference design, or null. App-resolvable only; see below. */
|
|
519
|
+
readonly referenceArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
520
|
+
}, undefined>;
|
|
521
|
+
export type PublicVisualConfirmPair = v.InferOutput<typeof publicVisualConfirmPairSchema>;
|
|
522
|
+
/**
|
|
523
|
+
* A run parked on the VISUAL-CONFIRMATION gate: the UI tester's screenshots are waiting to be
|
|
524
|
+
* compared against the uploaded reference designs.
|
|
525
|
+
*
|
|
526
|
+
* Same caveat as {@link publicHumanTestDecisionSchema}, and one more: the images themselves are
|
|
527
|
+
* NOT readable over `/api/v1`. `pairs` carries the artifact ids so a caller can see how many views
|
|
528
|
+
* were captured and which ones have a reference at all, but resolving an id to an image needs the
|
|
529
|
+
* app. That is stated rather than hidden: a caller approving on the strength of this projection
|
|
530
|
+
* alone is approving screenshots it has not seen.
|
|
531
|
+
*/
|
|
532
|
+
export declare const publicVisualConfirmDecisionSchema: v.ObjectSchema<{
|
|
533
|
+
readonly kind: v.LiteralSchema<"visual-confirmation", undefined>;
|
|
534
|
+
/** Only `awaiting_human` accepts an answer. */
|
|
535
|
+
readonly phase: v.PicklistSchema<["awaiting_human", "fixing", "approved"], undefined>;
|
|
536
|
+
/** The actual-vs-reference pairings, by logical view. Artifact ids are app-resolvable only. */
|
|
537
|
+
readonly pairs: v.ArraySchema<v.ObjectSchema<{
|
|
538
|
+
/** The logical view this pairing is for. */
|
|
539
|
+
readonly view: v.StringSchema<undefined>;
|
|
540
|
+
/** Artifact id of the captured screenshot, or null. App-resolvable only; see below. */
|
|
541
|
+
readonly actualArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
542
|
+
/** Artifact id of the uploaded reference design, or null. App-resolvable only; see below. */
|
|
543
|
+
readonly referenceArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
544
|
+
}, undefined>, undefined>;
|
|
545
|
+
/** Set when no screenshots could be gathered (no UI tester ran / no artifact storage). */
|
|
546
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
547
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
548
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
549
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
550
|
+
}, undefined>;
|
|
551
|
+
export type PublicVisualConfirmDecision = v.InferOutput<typeof publicVisualConfirmDecisionSchema>;
|
|
156
552
|
export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
157
553
|
readonly kind: v.LiteralSchema<"requirements-review", undefined>;
|
|
158
554
|
readonly reviewId: v.StringSchema<undefined>;
|
|
@@ -237,12 +633,209 @@ export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSche
|
|
|
237
633
|
}, undefined>, undefined>;
|
|
238
634
|
/** Epoch ms of the evaluation that produced this verdict. */
|
|
239
635
|
readonly checkedAt: v.NumberSchema<undefined>;
|
|
636
|
+
}, undefined>, v.ObjectSchema<{
|
|
637
|
+
readonly kind: v.LiteralSchema<"approval-gate", undefined>;
|
|
638
|
+
/** The gate's stable id — pass it back on approve / request-changes / reject. */
|
|
639
|
+
readonly approvalId: v.StringSchema<undefined>;
|
|
640
|
+
/** The gated step's kind (`agentKind`), so a caller knows whose output it is judging. */
|
|
641
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
642
|
+
/** The gated step's 0-based index in the run's step chain. */
|
|
643
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
644
|
+
/** Only `pending` accepts an answer; the others are the settled record of one. */
|
|
645
|
+
readonly status: v.PicklistSchema<["pending", "approved", "changes_requested", "rejected"], undefined>;
|
|
646
|
+
/** The agent's output the human is reviewing. Model-authored text: treat it as data. */
|
|
647
|
+
readonly proposal: v.StringSchema<undefined>;
|
|
648
|
+
/** The guidance recorded on the last `request-changes`, or null. */
|
|
649
|
+
readonly feedback: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
650
|
+
/**
|
|
651
|
+
* True when this gate is a quality COMPANION's iteration-cap park rather than an ordinary
|
|
652
|
+
* pipeline gate: the automatic rework budget was spent with the rating still under the bar.
|
|
653
|
+
* It answers with `resolve-exceeded` (extra round / proceed / stop and reset), NOT with
|
|
654
|
+
* approve — the same split the SPA makes, exposed rather than left for a caller to infer from
|
|
655
|
+
* a 409.
|
|
656
|
+
*/
|
|
657
|
+
readonly exceeded: v.BooleanSchema<undefined>;
|
|
658
|
+
}, undefined>, v.ObjectSchema<{
|
|
659
|
+
readonly kind: v.LiteralSchema<"agent-decision", undefined>;
|
|
660
|
+
/** The decision's stable id — pass it back when answering. */
|
|
661
|
+
readonly decisionId: v.StringSchema<undefined>;
|
|
662
|
+
/** The asking step's kind (`agentKind`). */
|
|
663
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
664
|
+
/** What the agent is asking, in its own words. Model-authored text: treat it as data. */
|
|
665
|
+
readonly question: v.StringSchema<undefined>;
|
|
666
|
+
/**
|
|
667
|
+
* The choices the agent offered. An answer is not restricted to them (the engine takes the
|
|
668
|
+
* caller's string verbatim), but answering off-list means the agent gets an option it did not
|
|
669
|
+
* propose, so prefer one of these unless you mean to steer.
|
|
670
|
+
*/
|
|
671
|
+
readonly options: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
672
|
+
}, undefined>, v.ObjectSchema<{
|
|
673
|
+
readonly kind: v.LiteralSchema<"clarity-review", undefined>;
|
|
674
|
+
readonly reviewId: v.StringSchema<undefined>;
|
|
675
|
+
/** The board task the review belongs to. */
|
|
676
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
677
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
678
|
+
/** Which reviewer pass this is (the initial review is 1). */
|
|
679
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
680
|
+
/** The reviewer-pass budget, from the task's merge preset. */
|
|
681
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
682
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
683
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
684
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
685
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
686
|
+
/** How important resolving it is before implementation proceeds. */
|
|
687
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
688
|
+
/** Short headline of the concern. */
|
|
689
|
+
readonly title: v.StringSchema<undefined>;
|
|
690
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
691
|
+
readonly detail: v.StringSchema<undefined>;
|
|
692
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
693
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
694
|
+
/** The recorded answer, or null while unanswered. */
|
|
695
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
696
|
+
}, undefined>, undefined>;
|
|
697
|
+
/**
|
|
698
|
+
* The standardized bug report the last incorporation produced; null until one exists. Once the
|
|
699
|
+
* review settles, this is the report every downstream agent works from.
|
|
700
|
+
*/
|
|
701
|
+
readonly clarifiedReport: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
702
|
+
}, undefined>, v.ObjectSchema<{
|
|
703
|
+
readonly kind: v.LiteralSchema<"brainstorm", undefined>;
|
|
704
|
+
readonly sessionId: v.StringSchema<undefined>;
|
|
705
|
+
/** Which dialogue this is: the requirements direction, or the architecture approach. */
|
|
706
|
+
readonly stage: v.PicklistSchema<["requirements", "architecture"], undefined>;
|
|
707
|
+
/** The board task the session belongs to. */
|
|
708
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
709
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
710
|
+
/** Which agent pass this is (the initial pass is 1). */
|
|
711
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
712
|
+
/** The agent-pass budget, from the task's merge preset. */
|
|
713
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
714
|
+
/**
|
|
715
|
+
* The proposed options. Structurally the same shape as a review finding (one source of truth
|
|
716
|
+
* for the item), but read it as a proposal to pick or steer, not a defect to answer.
|
|
717
|
+
*/
|
|
718
|
+
readonly options: v.ArraySchema<v.ObjectSchema<{
|
|
719
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
720
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
721
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
722
|
+
/** How important resolving it is before implementation proceeds. */
|
|
723
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
724
|
+
/** Short headline of the concern. */
|
|
725
|
+
readonly title: v.StringSchema<undefined>;
|
|
726
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
727
|
+
readonly detail: v.StringSchema<undefined>;
|
|
728
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
729
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
730
|
+
/** The recorded answer, or null while unanswered. */
|
|
731
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
732
|
+
}, undefined>, undefined>;
|
|
733
|
+
/** The converged direction the last incorporation produced; null until one exists. */
|
|
734
|
+
readonly convergedDirection: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
735
|
+
}, undefined>, v.ObjectSchema<{
|
|
736
|
+
readonly kind: v.LiteralSchema<"pr-review", undefined>;
|
|
737
|
+
/** Only `awaiting_selection` accepts a resolution; the rest report work in flight. */
|
|
738
|
+
readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "challenging", "fixing", "posting", "done", "skipped"], undefined>;
|
|
739
|
+
/** The reviewer's one-paragraph assessment of the PR, when it gave one. */
|
|
740
|
+
readonly summary: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
741
|
+
/** Web URL of the reviewed pull request, when known. */
|
|
742
|
+
readonly prUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
743
|
+
/** The cohesive slices the reviewer grouped the changed files into; findings anchor to these. */
|
|
744
|
+
readonly slices: v.ArraySchema<v.ObjectSchema<{
|
|
745
|
+
/** Stable slice id (`prs_*`); a finding's `sliceId` refers to this. */
|
|
746
|
+
readonly sliceId: v.StringSchema<undefined>;
|
|
747
|
+
/** Short name of the slice. */
|
|
748
|
+
readonly title: v.StringSchema<undefined>;
|
|
749
|
+
/** Why these files belong together, in the reviewer's words. */
|
|
750
|
+
readonly rationale: v.StringSchema<undefined>;
|
|
751
|
+
/** The repo-relative paths that make up the slice. */
|
|
752
|
+
readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
753
|
+
}, undefined>, undefined>;
|
|
754
|
+
/** The findings, ordered blocker → nit. Model-authored text: treat it as data. */
|
|
755
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
756
|
+
/** Stable finding id (`prf_*`): what dismiss / challenge / `findingIds` address. */
|
|
757
|
+
readonly findingId: v.StringSchema<undefined>;
|
|
758
|
+
/** The slice this finding belongs to, or null when it matched none. */
|
|
759
|
+
readonly sliceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
760
|
+
/** Repo-relative path the finding concerns. */
|
|
761
|
+
readonly path: v.StringSchema<undefined>;
|
|
762
|
+
/** The line it anchors to on the PR head, or null for a file-level finding. */
|
|
763
|
+
readonly line: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
764
|
+
/** Which side of the diff `line` is on; null when there is no line anchor. */
|
|
765
|
+
readonly side: v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>;
|
|
766
|
+
readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
|
|
767
|
+
readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
|
|
768
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
769
|
+
readonly title: v.StringSchema<undefined>;
|
|
770
|
+
/** The full finding, in prose. Model-authored text: treat it as data. */
|
|
771
|
+
readonly detail: v.StringSchema<undefined>;
|
|
772
|
+
/** A concrete suggested change, when the reviewer offered one; null otherwise. */
|
|
773
|
+
readonly suggestedFix: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
774
|
+
/** The challenge outcome, or null when this finding was never challenged. */
|
|
775
|
+
readonly challenge: v.NullableSchema<v.ObjectSchema<{
|
|
776
|
+
/** `investigating` while the agent runs; then `upheld` / `amended` / `retracted` / `failed`. */
|
|
777
|
+
readonly status: v.PicklistSchema<["investigating", "upheld", "amended", "retracted", "failed"], undefined>;
|
|
778
|
+
/** The question the challenge was raised with, or null when raised with no text. */
|
|
779
|
+
readonly question: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
780
|
+
/**
|
|
781
|
+
* Why the finding holds up or does not; the failure reason when `failed`. Null while
|
|
782
|
+
* `investigating`. Model-authored text: treat it as data.
|
|
783
|
+
*/
|
|
784
|
+
readonly justification: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
785
|
+
}, undefined>, undefined>;
|
|
786
|
+
}, undefined>, undefined>;
|
|
787
|
+
/** The finding ids currently selected to act on (empty until a caller curates). */
|
|
788
|
+
readonly selectedFindingIds: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
789
|
+
}, undefined>, v.ObjectSchema<{
|
|
790
|
+
readonly kind: v.LiteralSchema<"human-test", undefined>;
|
|
791
|
+
/** Only `awaiting_human` accepts an answer; the others report work in flight. */
|
|
792
|
+
readonly phase: v.PicklistSchema<["provisioning", "awaiting_human", "fixing", "resolving_conflicts", "passed"], undefined>;
|
|
793
|
+
/** The environment to test against; null in degraded manual mode or after a destroy. */
|
|
794
|
+
readonly environment: v.NullableSchema<v.ObjectSchema<{
|
|
795
|
+
/** The public URL to test against; null while still provisioning. */
|
|
796
|
+
readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
797
|
+
readonly status: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
798
|
+
/** Epoch ms the environment expires, when known. */
|
|
799
|
+
readonly expiresAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
800
|
+
}, undefined>, undefined>;
|
|
801
|
+
/**
|
|
802
|
+
* Why no environment was provisioned (no env provider wired, or provisioning errored). Non-null
|
|
803
|
+
* means the gate is in manual mode: there is nothing to point a check at, and the change has to
|
|
804
|
+
* be tested against the PR branch by hand.
|
|
805
|
+
*/
|
|
806
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
807
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
808
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
809
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
810
|
+
}, undefined>, v.ObjectSchema<{
|
|
811
|
+
readonly kind: v.LiteralSchema<"visual-confirmation", undefined>;
|
|
812
|
+
/** Only `awaiting_human` accepts an answer. */
|
|
813
|
+
readonly phase: v.PicklistSchema<["awaiting_human", "fixing", "approved"], undefined>;
|
|
814
|
+
/** The actual-vs-reference pairings, by logical view. Artifact ids are app-resolvable only. */
|
|
815
|
+
readonly pairs: v.ArraySchema<v.ObjectSchema<{
|
|
816
|
+
/** The logical view this pairing is for. */
|
|
817
|
+
readonly view: v.StringSchema<undefined>;
|
|
818
|
+
/** Artifact id of the captured screenshot, or null. App-resolvable only; see below. */
|
|
819
|
+
readonly actualArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
820
|
+
/** Artifact id of the uploaded reference design, or null. App-resolvable only; see below. */
|
|
821
|
+
readonly referenceArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
822
|
+
}, undefined>, undefined>;
|
|
823
|
+
/** Set when no screenshots could be gathered (no UI tester ran / no artifact storage). */
|
|
824
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
825
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
826
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
827
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
240
828
|
}, undefined>], undefined>;
|
|
241
829
|
export type PublicDecision = v.InferOutput<typeof publicDecisionSchema>;
|
|
242
830
|
/**
|
|
243
831
|
* A run's currently-parked decisions. `parked` is the single flag a caller polls or reacts to:
|
|
244
832
|
* true when the run is `blocked` awaiting one of the decisions listed. An empty list with
|
|
245
833
|
* `parked: false` is the ordinary case for a run that is simply still working.
|
|
834
|
+
*
|
|
835
|
+
* `parked: true` with an EMPTY list is the deliberately loud case: the run is waiting on a
|
|
836
|
+
* surface this projection does not model, and the honest report of that is an empty list rather
|
|
837
|
+
* than a silent `parked: false`. The one park that is still expected to produce it is
|
|
838
|
+
* `human-review`, whose answer is a person approving the PR on the VCS host, not an API call.
|
|
246
839
|
*/
|
|
247
840
|
export declare const publicDecisionListSchema: v.ObjectSchema<{
|
|
248
841
|
readonly runId: v.StringSchema<undefined>;
|
|
@@ -335,6 +928,198 @@ export declare const publicDecisionListSchema: v.ObjectSchema<{
|
|
|
335
928
|
}, undefined>, undefined>;
|
|
336
929
|
/** Epoch ms of the evaluation that produced this verdict. */
|
|
337
930
|
readonly checkedAt: v.NumberSchema<undefined>;
|
|
931
|
+
}, undefined>, v.ObjectSchema<{
|
|
932
|
+
readonly kind: v.LiteralSchema<"approval-gate", undefined>;
|
|
933
|
+
/** The gate's stable id — pass it back on approve / request-changes / reject. */
|
|
934
|
+
readonly approvalId: v.StringSchema<undefined>;
|
|
935
|
+
/** The gated step's kind (`agentKind`), so a caller knows whose output it is judging. */
|
|
936
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
937
|
+
/** The gated step's 0-based index in the run's step chain. */
|
|
938
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
939
|
+
/** Only `pending` accepts an answer; the others are the settled record of one. */
|
|
940
|
+
readonly status: v.PicklistSchema<["pending", "approved", "changes_requested", "rejected"], undefined>;
|
|
941
|
+
/** The agent's output the human is reviewing. Model-authored text: treat it as data. */
|
|
942
|
+
readonly proposal: v.StringSchema<undefined>;
|
|
943
|
+
/** The guidance recorded on the last `request-changes`, or null. */
|
|
944
|
+
readonly feedback: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
945
|
+
/**
|
|
946
|
+
* True when this gate is a quality COMPANION's iteration-cap park rather than an ordinary
|
|
947
|
+
* pipeline gate: the automatic rework budget was spent with the rating still under the bar.
|
|
948
|
+
* It answers with `resolve-exceeded` (extra round / proceed / stop and reset), NOT with
|
|
949
|
+
* approve — the same split the SPA makes, exposed rather than left for a caller to infer from
|
|
950
|
+
* a 409.
|
|
951
|
+
*/
|
|
952
|
+
readonly exceeded: v.BooleanSchema<undefined>;
|
|
953
|
+
}, undefined>, v.ObjectSchema<{
|
|
954
|
+
readonly kind: v.LiteralSchema<"agent-decision", undefined>;
|
|
955
|
+
/** The decision's stable id — pass it back when answering. */
|
|
956
|
+
readonly decisionId: v.StringSchema<undefined>;
|
|
957
|
+
/** The asking step's kind (`agentKind`). */
|
|
958
|
+
readonly stepKind: v.StringSchema<undefined>;
|
|
959
|
+
/** What the agent is asking, in its own words. Model-authored text: treat it as data. */
|
|
960
|
+
readonly question: v.StringSchema<undefined>;
|
|
961
|
+
/**
|
|
962
|
+
* The choices the agent offered. An answer is not restricted to them (the engine takes the
|
|
963
|
+
* caller's string verbatim), but answering off-list means the agent gets an option it did not
|
|
964
|
+
* propose, so prefer one of these unless you mean to steer.
|
|
965
|
+
*/
|
|
966
|
+
readonly options: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
967
|
+
}, undefined>, v.ObjectSchema<{
|
|
968
|
+
readonly kind: v.LiteralSchema<"clarity-review", undefined>;
|
|
969
|
+
readonly reviewId: v.StringSchema<undefined>;
|
|
970
|
+
/** The board task the review belongs to. */
|
|
971
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
972
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
973
|
+
/** Which reviewer pass this is (the initial review is 1). */
|
|
974
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
975
|
+
/** The reviewer-pass budget, from the task's merge preset. */
|
|
976
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
977
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
978
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
979
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
980
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
981
|
+
/** How important resolving it is before implementation proceeds. */
|
|
982
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
983
|
+
/** Short headline of the concern. */
|
|
984
|
+
readonly title: v.StringSchema<undefined>;
|
|
985
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
986
|
+
readonly detail: v.StringSchema<undefined>;
|
|
987
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
988
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
989
|
+
/** The recorded answer, or null while unanswered. */
|
|
990
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
991
|
+
}, undefined>, undefined>;
|
|
992
|
+
/**
|
|
993
|
+
* The standardized bug report the last incorporation produced; null until one exists. Once the
|
|
994
|
+
* review settles, this is the report every downstream agent works from.
|
|
995
|
+
*/
|
|
996
|
+
readonly clarifiedReport: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
997
|
+
}, undefined>, v.ObjectSchema<{
|
|
998
|
+
readonly kind: v.LiteralSchema<"brainstorm", undefined>;
|
|
999
|
+
readonly sessionId: v.StringSchema<undefined>;
|
|
1000
|
+
/** Which dialogue this is: the requirements direction, or the architecture approach. */
|
|
1001
|
+
readonly stage: v.PicklistSchema<["requirements", "architecture"], undefined>;
|
|
1002
|
+
/** The board task the session belongs to. */
|
|
1003
|
+
readonly taskId: v.StringSchema<undefined>;
|
|
1004
|
+
readonly status: v.PicklistSchema<["ready", "incorporating", "reviewing", "merged", "exceeded", "incorporated"], undefined>;
|
|
1005
|
+
/** Which agent pass this is (the initial pass is 1). */
|
|
1006
|
+
readonly iteration: v.NumberSchema<undefined>;
|
|
1007
|
+
/** The agent-pass budget, from the task's merge preset. */
|
|
1008
|
+
readonly maxIterations: v.NumberSchema<undefined>;
|
|
1009
|
+
/**
|
|
1010
|
+
* The proposed options. Structurally the same shape as a review finding (one source of truth
|
|
1011
|
+
* for the item), but read it as a proposal to pick or steer, not a defect to answer.
|
|
1012
|
+
*/
|
|
1013
|
+
readonly options: v.ArraySchema<v.ObjectSchema<{
|
|
1014
|
+
readonly itemId: v.StringSchema<undefined>;
|
|
1015
|
+
/** What kind of concern this raises (gap / clarification / assumption / risk / question). */
|
|
1016
|
+
readonly category: v.PicklistSchema<["gap", "clarification", "assumption", "risk", "question"], undefined>;
|
|
1017
|
+
/** How important resolving it is before implementation proceeds. */
|
|
1018
|
+
readonly severity: v.PicklistSchema<["low", "medium", "high"], undefined>;
|
|
1019
|
+
/** Short headline of the concern. */
|
|
1020
|
+
readonly title: v.StringSchema<undefined>;
|
|
1021
|
+
/** The full question / gap / challenge, in plain prose. */
|
|
1022
|
+
readonly detail: v.StringSchema<undefined>;
|
|
1023
|
+
/** `open` until answered or dismissed; only `open` findings block incorporation. */
|
|
1024
|
+
readonly status: v.PicklistSchema<["open", "answered", "resolved", "dismissed", "recommend_requested"], undefined>;
|
|
1025
|
+
/** The recorded answer, or null while unanswered. */
|
|
1026
|
+
readonly reply: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1027
|
+
}, undefined>, undefined>;
|
|
1028
|
+
/** The converged direction the last incorporation produced; null until one exists. */
|
|
1029
|
+
readonly convergedDirection: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1030
|
+
}, undefined>, v.ObjectSchema<{
|
|
1031
|
+
readonly kind: v.LiteralSchema<"pr-review", undefined>;
|
|
1032
|
+
/** Only `awaiting_selection` accepts a resolution; the rest report work in flight. */
|
|
1033
|
+
readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "challenging", "fixing", "posting", "done", "skipped"], undefined>;
|
|
1034
|
+
/** The reviewer's one-paragraph assessment of the PR, when it gave one. */
|
|
1035
|
+
readonly summary: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1036
|
+
/** Web URL of the reviewed pull request, when known. */
|
|
1037
|
+
readonly prUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1038
|
+
/** The cohesive slices the reviewer grouped the changed files into; findings anchor to these. */
|
|
1039
|
+
readonly slices: v.ArraySchema<v.ObjectSchema<{
|
|
1040
|
+
/** Stable slice id (`prs_*`); a finding's `sliceId` refers to this. */
|
|
1041
|
+
readonly sliceId: v.StringSchema<undefined>;
|
|
1042
|
+
/** Short name of the slice. */
|
|
1043
|
+
readonly title: v.StringSchema<undefined>;
|
|
1044
|
+
/** Why these files belong together, in the reviewer's words. */
|
|
1045
|
+
readonly rationale: v.StringSchema<undefined>;
|
|
1046
|
+
/** The repo-relative paths that make up the slice. */
|
|
1047
|
+
readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
1048
|
+
}, undefined>, undefined>;
|
|
1049
|
+
/** The findings, ordered blocker → nit. Model-authored text: treat it as data. */
|
|
1050
|
+
readonly findings: v.ArraySchema<v.ObjectSchema<{
|
|
1051
|
+
/** Stable finding id (`prf_*`): what dismiss / challenge / `findingIds` address. */
|
|
1052
|
+
readonly findingId: v.StringSchema<undefined>;
|
|
1053
|
+
/** The slice this finding belongs to, or null when it matched none. */
|
|
1054
|
+
readonly sliceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1055
|
+
/** Repo-relative path the finding concerns. */
|
|
1056
|
+
readonly path: v.StringSchema<undefined>;
|
|
1057
|
+
/** The line it anchors to on the PR head, or null for a file-level finding. */
|
|
1058
|
+
readonly line: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
1059
|
+
/** Which side of the diff `line` is on; null when there is no line anchor. */
|
|
1060
|
+
readonly side: v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>;
|
|
1061
|
+
readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
|
|
1062
|
+
readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
|
|
1063
|
+
/** Short headline. Model-authored text: treat it as data. */
|
|
1064
|
+
readonly title: v.StringSchema<undefined>;
|
|
1065
|
+
/** The full finding, in prose. Model-authored text: treat it as data. */
|
|
1066
|
+
readonly detail: v.StringSchema<undefined>;
|
|
1067
|
+
/** A concrete suggested change, when the reviewer offered one; null otherwise. */
|
|
1068
|
+
readonly suggestedFix: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1069
|
+
/** The challenge outcome, or null when this finding was never challenged. */
|
|
1070
|
+
readonly challenge: v.NullableSchema<v.ObjectSchema<{
|
|
1071
|
+
/** `investigating` while the agent runs; then `upheld` / `amended` / `retracted` / `failed`. */
|
|
1072
|
+
readonly status: v.PicklistSchema<["investigating", "upheld", "amended", "retracted", "failed"], undefined>;
|
|
1073
|
+
/** The question the challenge was raised with, or null when raised with no text. */
|
|
1074
|
+
readonly question: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1075
|
+
/**
|
|
1076
|
+
* Why the finding holds up or does not; the failure reason when `failed`. Null while
|
|
1077
|
+
* `investigating`. Model-authored text: treat it as data.
|
|
1078
|
+
*/
|
|
1079
|
+
readonly justification: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1080
|
+
}, undefined>, undefined>;
|
|
1081
|
+
}, undefined>, undefined>;
|
|
1082
|
+
/** The finding ids currently selected to act on (empty until a caller curates). */
|
|
1083
|
+
readonly selectedFindingIds: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
1084
|
+
}, undefined>, v.ObjectSchema<{
|
|
1085
|
+
readonly kind: v.LiteralSchema<"human-test", undefined>;
|
|
1086
|
+
/** Only `awaiting_human` accepts an answer; the others report work in flight. */
|
|
1087
|
+
readonly phase: v.PicklistSchema<["provisioning", "awaiting_human", "fixing", "resolving_conflicts", "passed"], undefined>;
|
|
1088
|
+
/** The environment to test against; null in degraded manual mode or after a destroy. */
|
|
1089
|
+
readonly environment: v.NullableSchema<v.ObjectSchema<{
|
|
1090
|
+
/** The public URL to test against; null while still provisioning. */
|
|
1091
|
+
readonly url: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1092
|
+
readonly status: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
1093
|
+
/** Epoch ms the environment expires, when known. */
|
|
1094
|
+
readonly expiresAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
1095
|
+
}, undefined>, undefined>;
|
|
1096
|
+
/**
|
|
1097
|
+
* Why no environment was provisioned (no env provider wired, or provisioning errored). Non-null
|
|
1098
|
+
* means the gate is in manual mode: there is nothing to point a check at, and the change has to
|
|
1099
|
+
* be tested against the PR branch by hand.
|
|
1100
|
+
*/
|
|
1101
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1102
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
1103
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
1104
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
1105
|
+
}, undefined>, v.ObjectSchema<{
|
|
1106
|
+
readonly kind: v.LiteralSchema<"visual-confirmation", undefined>;
|
|
1107
|
+
/** Only `awaiting_human` accepts an answer. */
|
|
1108
|
+
readonly phase: v.PicklistSchema<["awaiting_human", "fixing", "approved"], undefined>;
|
|
1109
|
+
/** The actual-vs-reference pairings, by logical view. Artifact ids are app-resolvable only. */
|
|
1110
|
+
readonly pairs: v.ArraySchema<v.ObjectSchema<{
|
|
1111
|
+
/** The logical view this pairing is for. */
|
|
1112
|
+
readonly view: v.StringSchema<undefined>;
|
|
1113
|
+
/** Artifact id of the captured screenshot, or null. App-resolvable only; see below. */
|
|
1114
|
+
readonly actualArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1115
|
+
/** Artifact id of the uploaded reference design, or null. App-resolvable only; see below. */
|
|
1116
|
+
readonly referenceArtifactId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1117
|
+
}, undefined>, undefined>;
|
|
1118
|
+
/** Set when no screenshots could be gathered (no UI tester ran / no artifact storage). */
|
|
1119
|
+
readonly degradedReason: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
1120
|
+
/** Fixer rounds spent, and the ceiling from the task's merge preset. */
|
|
1121
|
+
readonly attempts: v.NumberSchema<undefined>;
|
|
1122
|
+
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
338
1123
|
}, undefined>], undefined>, undefined>;
|
|
339
1124
|
}, undefined>;
|
|
340
1125
|
export type PublicDecisionList = v.InferOutput<typeof publicDecisionListSchema>;
|
|
@@ -363,10 +1148,14 @@ export declare const publicIncorporateSchema: v.ObjectSchema<{
|
|
|
363
1148
|
}, undefined>;
|
|
364
1149
|
export type PublicIncorporateInput = v.InferOutput<typeof publicIncorporateSchema>;
|
|
365
1150
|
/**
|
|
366
|
-
* Resolve
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
*
|
|
1151
|
+
* Resolve an iteration cap: one more pass, proceed with what the last pass produced, or stop and
|
|
1152
|
+
* reset the task to an editable state. The same three choices the SPA offers — there is
|
|
1153
|
+
* deliberately no timed default (a parked run waits for an answer indefinitely, so a silent
|
|
1154
|
+
* auto-proceed would ship work nobody approved).
|
|
1155
|
+
*
|
|
1156
|
+
* Shared by every capped loop the surface exposes: the three iterative reviews and a quality
|
|
1157
|
+
* companion at its automatic-rework cap. They are ONE body because they are one question, and
|
|
1158
|
+
* minting a per-loop DTO would put four identical types in four published SDKs.
|
|
370
1159
|
*/
|
|
371
1160
|
export declare const publicResolveExceededSchema: v.ObjectSchema<{
|
|
372
1161
|
readonly choice: v.PicklistSchema<["extra-round", "proceed", "stop-reset"], undefined>;
|
|
@@ -408,4 +1197,87 @@ export declare const publicResolveInputGateSchema: v.ObjectSchema<{
|
|
|
408
1197
|
readonly choice: v.PicklistSchema<["recheck", "proceed"], undefined>;
|
|
409
1198
|
}, undefined>;
|
|
410
1199
|
export type PublicResolveInputGateInput = v.InferOutput<typeof publicResolveInputGateSchema>;
|
|
1200
|
+
/**
|
|
1201
|
+
* Approve a parked gate, optionally replacing the agent's proposal with an edited one. The edit
|
|
1202
|
+
* is what flows to every downstream step, so supplying it is how a caller corrects the output
|
|
1203
|
+
* rather than bouncing the whole step; omit it to approve the text as written.
|
|
1204
|
+
*/
|
|
1205
|
+
export declare const publicApproveStepSchema: v.ObjectSchema<{
|
|
1206
|
+
readonly proposal: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 50000, undefined>]>, undefined>;
|
|
1207
|
+
}, undefined>;
|
|
1208
|
+
export type PublicApproveStepInput = v.InferOutput<typeof publicApproveStepSchema>;
|
|
1209
|
+
/**
|
|
1210
|
+
* Request changes on a parked gate: the step re-runs with this guidance folded in.
|
|
1211
|
+
*
|
|
1212
|
+
* `feedback` is REQUIRED here where the SPA's twin accepts either freeform text or anchored
|
|
1213
|
+
* per-block comments. An anchored comment carries the source line range of a rendered proposal, so
|
|
1214
|
+
* a headless caller has nothing to anchor to; requiring the freeform half means a re-run always
|
|
1215
|
+
* has something to act on rather than looping on an empty instruction.
|
|
1216
|
+
*/
|
|
1217
|
+
export declare const publicRequestStepChangesSchema: v.ObjectSchema<{
|
|
1218
|
+
readonly feedback: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 10000, undefined>]>;
|
|
1219
|
+
}, undefined>;
|
|
1220
|
+
export type PublicRequestStepChangesInput = v.InferOutput<typeof publicRequestStepChangesSchema>;
|
|
1221
|
+
/** Reject a parked gate: the run stops entirely (a terminal failure the board can retry). */
|
|
1222
|
+
export declare const publicRejectStepSchema: v.ObjectSchema<{
|
|
1223
|
+
readonly reason: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
1224
|
+
}, undefined>;
|
|
1225
|
+
export type PublicRejectStepInput = v.InferOutput<typeof publicRejectStepSchema>;
|
|
1226
|
+
/**
|
|
1227
|
+
* Resolve a companion gate parked at its automatic-rework cap. The SAME body as a review at its
|
|
1228
|
+
* cap ({@link publicResolveExceededSchema}), aliased rather than re-declared: the two carry one
|
|
1229
|
+
* question, and a structurally identical twin would be a second published type in four SDKs
|
|
1230
|
+
* meaning exactly what the first one means.
|
|
1231
|
+
*/
|
|
1232
|
+
export declare const publicResolveStepExceededSchema: v.ObjectSchema<{
|
|
1233
|
+
readonly choice: v.PicklistSchema<["extra-round", "proceed", "stop-reset"], undefined>;
|
|
1234
|
+
}, undefined>;
|
|
1235
|
+
export type PublicResolveStepExceededInput = v.InferOutput<typeof publicResolveStepExceededSchema>;
|
|
1236
|
+
/**
|
|
1237
|
+
* Answer an agent-raised decision. The choice is taken verbatim, so it may be one of the offered
|
|
1238
|
+
* `options` or a steer of the caller's own — the engine re-runs the asking step with it either way.
|
|
1239
|
+
*/
|
|
1240
|
+
export declare const publicResolveAgentDecisionSchema: v.ObjectSchema<{
|
|
1241
|
+
readonly choice: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
1242
|
+
}, undefined>;
|
|
1243
|
+
export type PublicResolveAgentDecisionInput = v.InferOutput<typeof publicResolveAgentDecisionSchema>;
|
|
1244
|
+
/**
|
|
1245
|
+
* Resolve a parked PR deep review: the curated `findingIds` plus what to do with them. `finish`
|
|
1246
|
+
* records the selection and completes the read-only review; `fix` hands the selected findings to a
|
|
1247
|
+
* fixer that commits onto the reviewed PR's branch; `post` publishes them as inline PR review
|
|
1248
|
+
* comments. `fix`/`post` need at least one selected finding, and both act on the real pull
|
|
1249
|
+
* request — this is the one decision route with an effect outside the platform.
|
|
1250
|
+
*
|
|
1251
|
+
* Both fields are plainly OPTIONAL rather than carrying a schema `default`, unlike the internal
|
|
1252
|
+
* twin. A default is "always present" on the way out and "may be omitted" on the way in, and the
|
|
1253
|
+
* SDK emitters read a request field's default as the former — so declaring one here would emit
|
|
1254
|
+
* four clients whose types insist on a value the API does not require. The fallbacks are applied
|
|
1255
|
+
* where the call is made instead, and documented on each field so the wire contract still states
|
|
1256
|
+
* what omitting it means.
|
|
1257
|
+
*/
|
|
1258
|
+
export declare const publicResolvePrReviewSchema: v.ObjectSchema<{
|
|
1259
|
+
/** Omitted reads as `finish`. */
|
|
1260
|
+
readonly action: v.OptionalSchema<v.PicklistSchema<["finish", "fix", "post"], undefined>, undefined>;
|
|
1261
|
+
/** Omitted reads as an empty selection, which only `finish` accepts. */
|
|
1262
|
+
readonly findingIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
|
|
1263
|
+
}, undefined>;
|
|
1264
|
+
export type PublicResolvePrReviewInput = v.InferOutput<typeof publicResolvePrReviewSchema>;
|
|
1265
|
+
/**
|
|
1266
|
+
* Challenge one parked finding: a read-only investigator digs into it against the full source and
|
|
1267
|
+
* either upholds, strengthens or retracts it. An omitted / blank `question` uses the generic
|
|
1268
|
+
* "validate this finding" prompt.
|
|
1269
|
+
*/
|
|
1270
|
+
export declare const publicChallengePrReviewFindingSchema: v.ObjectSchema<{
|
|
1271
|
+
readonly question: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 4000, undefined>]>, undefined>;
|
|
1272
|
+
}, undefined>;
|
|
1273
|
+
export type PublicChallengePrReviewFindingInput = v.InferOutput<typeof publicChallengePrReviewFindingSchema>;
|
|
1274
|
+
/**
|
|
1275
|
+
* Submit findings against a human-verdict gate (human-test or visual-confirmation) and request a
|
|
1276
|
+
* fix. The findings ARE the prompt the fixer works from, so unlike the SPA's textarea there is no
|
|
1277
|
+
* blank-is-fine case: an empty request would dispatch an agent with nothing to fix.
|
|
1278
|
+
*/
|
|
1279
|
+
export declare const publicRequestGateFixSchema: v.ObjectSchema<{
|
|
1280
|
+
readonly findings: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 10000, undefined>]>;
|
|
1281
|
+
}, undefined>;
|
|
1282
|
+
export type PublicRequestGateFixInput = v.InferOutput<typeof publicRequestGateFixSchema>;
|
|
411
1283
|
//# sourceMappingURL=public-decisions.d.ts.map
|