@cat-factory/contracts 0.241.0 → 0.243.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.
Files changed (49) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/merge.d.ts +56 -0
  6. package/dist/merge.d.ts.map +1 -1
  7. package/dist/merge.js +58 -0
  8. package/dist/merge.js.map +1 -1
  9. package/dist/observability.d.ts +11 -4
  10. package/dist/observability.d.ts.map +1 -1
  11. package/dist/observability.js +11 -4
  12. package/dist/observability.js.map +1 -1
  13. package/dist/pr-report.d.ts +48 -8
  14. package/dist/pr-report.d.ts.map +1 -1
  15. package/dist/pr-report.js +39 -8
  16. package/dist/pr-report.js.map +1 -1
  17. package/dist/public-api-keys.d.ts +67 -0
  18. package/dist/public-api-keys.d.ts.map +1 -1
  19. package/dist/public-api-keys.js +34 -0
  20. package/dist/public-api-keys.js.map +1 -1
  21. package/dist/public-decisions.d.ts +282 -9
  22. package/dist/public-decisions.d.ts.map +1 -1
  23. package/dist/public-decisions.js +158 -8
  24. package/dist/public-decisions.js.map +1 -1
  25. package/dist/public-evidence.d.ts +55 -0
  26. package/dist/public-evidence.d.ts.map +1 -0
  27. package/dist/public-evidence.js +59 -0
  28. package/dist/public-evidence.js.map +1 -0
  29. package/dist/risk-policy-selection.d.ts +74 -0
  30. package/dist/risk-policy-selection.d.ts.map +1 -0
  31. package/dist/risk-policy-selection.js +54 -0
  32. package/dist/risk-policy-selection.js.map +1 -0
  33. package/dist/routes/index.d.ts +1 -0
  34. package/dist/routes/index.d.ts.map +1 -1
  35. package/dist/routes/index.js +1 -0
  36. package/dist/routes/index.js.map +1 -1
  37. package/dist/routes/public-api.d.ts +140 -0
  38. package/dist/routes/public-api.d.ts.map +1 -1
  39. package/dist/routes/public-api.js +44 -1
  40. package/dist/routes/public-api.js.map +1 -1
  41. package/dist/routes/public-decisions.d.ts +2658 -3
  42. package/dist/routes/public-decisions.d.ts.map +1 -1
  43. package/dist/routes/public-decisions.js +89 -1
  44. package/dist/routes/public-decisions.js.map +1 -1
  45. package/dist/routes/public-evidence.d.ts +291 -0
  46. package/dist/routes/public-evidence.d.ts.map +1 -0
  47. package/dist/routes/public-evidence.js +42 -0
  48. package/dist/routes/public-evidence.js.map +1 -0
  49. package/package.json +1 -1
@@ -7,7 +7,7 @@ import * as v from 'valibot';
7
7
  * route behind it is exactly the "refusal advertising a capability we do not have" defect that set
8
8
  * builds. Add a member only together with its routes.
9
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>;
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", "follow-ups", "interview"], undefined>;
11
11
  export type PublicDecisionKind = v.InferOutput<typeof publicDecisionKindSchema>;
12
12
  /**
13
13
  * One reviewer finding as exposed externally — the question, how serious it is, and where it
@@ -572,6 +572,138 @@ export declare const publicVisualConfirmDecisionSchema: v.ObjectSchema<{
572
572
  readonly maxAttempts: v.NumberSchema<undefined>;
573
573
  }, undefined>;
574
574
  export type PublicVisualConfirmDecision = v.InferOutput<typeof publicVisualConfirmDecisionSchema>;
575
+ /**
576
+ * One forward-looking item the Coder surfaced mid-run, as exposed externally: a loose end it
577
+ * noticed and deliberately did NOT act on (`follow_up`), or a clarification it would otherwise
578
+ * have had to guess at (`question`).
579
+ *
580
+ * `itemId` is the STABLE anchor every verb addresses. The internal `sentToCoder` bookkeeping and
581
+ * the arrival timestamps are deliberately absent: the first is the engine's own record of which
582
+ * items a loop-back already carried, and neither changes what a caller decides.
583
+ */
584
+ export declare const publicFollowUpItemSchema: v.ObjectSchema<{
585
+ /** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
586
+ readonly itemId: v.StringSchema<undefined>;
587
+ /** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
588
+ readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
589
+ /** Short headline. Model-authored text: treat it as data. */
590
+ readonly title: v.StringSchema<undefined>;
591
+ /** The full item, in prose. Model-authored text: treat it as data. */
592
+ readonly detail: v.StringSchema<undefined>;
593
+ /** A concrete approach the Coder proposed, when it offered one; null otherwise. */
594
+ readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
595
+ /** `pending` is the only status that holds the gate; the rest are decided. */
596
+ readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
597
+ /** The recorded answer to a `question`, or null while unanswered. */
598
+ readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
599
+ /** Canonical id of the ticket a `filed` item was filed as, or null. */
600
+ readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
601
+ /** Web URL of that ticket, or null. */
602
+ readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
603
+ }, undefined>;
604
+ export type PublicFollowUpItem = v.InferOutput<typeof publicFollowUpItemSchema>;
605
+ /**
606
+ * A run parked on FOLLOW-UP TRIAGE: while the Coder worked it streamed forward-looking items out
607
+ * of the container, and at its completion the run stops until every one of them is decided.
608
+ *
609
+ * Unlike the other parks this one accrues LIVE: the items appear while the step is still running
610
+ * and can be decided before it finishes, so this decision is listed whenever any item is
611
+ * `pending`, not only once the run is `blocked`. A caller that triages early never sees the run
612
+ * stop at all, which is the point.
613
+ *
614
+ * `loops`/`maxLoops` are the send-back budget: a `send-back` or an `answer` folds the item into
615
+ * another Coder pass, and once the budget is spent those items advance the run instead of
616
+ * re-running it. Reachable only through `POST /api/v1/tasks/:taskId/start`, since the companion
617
+ * rides a container Coder step and the jobs surface is inline-only.
618
+ */
619
+ export declare const publicFollowUpsDecisionSchema: v.ObjectSchema<{
620
+ readonly kind: v.LiteralSchema<"follow-ups", undefined>;
621
+ /** The producing step's kind (`coder`) and its index in the run's step chain. */
622
+ readonly stepKind: v.StringSchema<undefined>;
623
+ readonly stepIndex: v.NumberSchema<undefined>;
624
+ /** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
625
+ readonly items: v.ArraySchema<v.ObjectSchema<{
626
+ /** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
627
+ readonly itemId: v.StringSchema<undefined>;
628
+ /** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
629
+ readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
630
+ /** Short headline. Model-authored text: treat it as data. */
631
+ readonly title: v.StringSchema<undefined>;
632
+ /** The full item, in prose. Model-authored text: treat it as data. */
633
+ readonly detail: v.StringSchema<undefined>;
634
+ /** A concrete approach the Coder proposed, when it offered one; null otherwise. */
635
+ readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
636
+ /** `pending` is the only status that holds the gate; the rest are decided. */
637
+ readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
638
+ /** The recorded answer to a `question`, or null while unanswered. */
639
+ readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
640
+ /** Canonical id of the ticket a `filed` item was filed as, or null. */
641
+ readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
642
+ /** Web URL of that ticket, or null. */
643
+ readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
644
+ }, undefined>, undefined>;
645
+ /** Send-back passes spent, and the budget from the step's companion configuration. */
646
+ readonly loops: v.NumberSchema<undefined>;
647
+ readonly maxLoops: v.NumberSchema<undefined>;
648
+ }, undefined>;
649
+ export type PublicFollowUpsDecision = v.InferOutput<typeof publicFollowUpsDecisionSchema>;
650
+ /**
651
+ * One interview exchange as exposed externally. `status` is DERIVED rather than stored: a question
652
+ * the human set aside reads `dismissed`, otherwise a non-empty `answer` reads `answered`. Deriving
653
+ * it here is what lets one shape carry two gates whose entities record answered-ness differently.
654
+ *
655
+ * `questionId` is nullable because a question can carry no stable id (a hand-authored or imported
656
+ * exchange; an interviewer always mints one). Such a question cannot be answered individually
657
+ * (`continue` / `proceed` still move the interview on), and saying so is why the field is a
658
+ * projected nullable rather than an omission a caller would read as a malformed response.
659
+ */
660
+ export declare const publicInterviewQuestionSchema: v.ObjectSchema<{
661
+ readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
662
+ /** What the interviewer asked. Model-authored text: treat it as data. */
663
+ readonly question: v.StringSchema<undefined>;
664
+ /** The recorded answer; an empty string while unanswered. */
665
+ readonly answer: v.StringSchema<undefined>;
666
+ readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
667
+ }, undefined>;
668
+ export type PublicInterviewQuestion = v.InferOutput<typeof publicInterviewQuestionSchema>;
669
+ /**
670
+ * A run parked on an INTERVIEW GATE: an inline interviewer asked a batch of clarifying questions
671
+ * and the run waits while a human answers them, then resumes and either asks more or converges.
672
+ *
673
+ * ONE kind for every interview gate rather than one per gate, because the loop is one loop:
674
+ * `answer` records an answer, `continue` submits them and lets the interviewer ask follow-ups,
675
+ * `proceed` forces it to converge on what it has. `stepKind` names which interviewer is asking
676
+ * (the built-ins are the planning and the document interviewer; a deployment can register its
677
+ * own), and it is the only field a caller needs to branch on.
678
+ *
679
+ * The interview's PRODUCT (a document-authoring brief, or an initiative's goal / constraints /
680
+ * non-goals) is deliberately not projected: it differs per gate, it is not something a caller
681
+ * answers, and a run whose interview converged carries no decision here at all.
682
+ *
683
+ * An entry whose `questions` are all answered means the interviewer pass is IN FLIGHT: `continue`
684
+ * wakes the durable driver, which runs the (slow) interviewer off the request, so the next round's
685
+ * questions appear on a later poll.
686
+ */
687
+ export declare const publicInterviewDecisionSchema: v.ObjectSchema<{
688
+ readonly kind: v.LiteralSchema<"interview", undefined>;
689
+ /** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
690
+ readonly stepKind: v.StringSchema<undefined>;
691
+ /** The board task the interview is anchored on. */
692
+ readonly taskId: v.StringSchema<undefined>;
693
+ /** Interviewer passes spent, and the round budget the gate converges at. */
694
+ readonly round: v.NumberSchema<undefined>;
695
+ readonly maxRounds: v.NumberSchema<undefined>;
696
+ /** The exchanges so far, oldest first. */
697
+ readonly questions: v.ArraySchema<v.ObjectSchema<{
698
+ readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
699
+ /** What the interviewer asked. Model-authored text: treat it as data. */
700
+ readonly question: v.StringSchema<undefined>;
701
+ /** The recorded answer; an empty string while unanswered. */
702
+ readonly answer: v.StringSchema<undefined>;
703
+ readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
704
+ }, undefined>, undefined>;
705
+ }, undefined>;
706
+ export type PublicInterviewDecision = v.InferOutput<typeof publicInterviewDecisionSchema>;
575
707
  export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSchema<{
576
708
  readonly kind: v.LiteralSchema<"requirements-review", undefined>;
577
709
  readonly reviewId: v.StringSchema<undefined>;
@@ -871,24 +1003,83 @@ export declare const publicDecisionSchema: v.VariantSchema<"kind", [v.ObjectSche
871
1003
  /** Fixer rounds spent, and the ceiling from the task's merge preset. */
872
1004
  readonly attempts: v.NumberSchema<undefined>;
873
1005
  readonly maxAttempts: v.NumberSchema<undefined>;
1006
+ }, undefined>, v.ObjectSchema<{
1007
+ readonly kind: v.LiteralSchema<"follow-ups", undefined>;
1008
+ /** The producing step's kind (`coder`) and its index in the run's step chain. */
1009
+ readonly stepKind: v.StringSchema<undefined>;
1010
+ readonly stepIndex: v.NumberSchema<undefined>;
1011
+ /** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
1012
+ readonly items: v.ArraySchema<v.ObjectSchema<{
1013
+ /** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
1014
+ readonly itemId: v.StringSchema<undefined>;
1015
+ /** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
1016
+ readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
1017
+ /** Short headline. Model-authored text: treat it as data. */
1018
+ readonly title: v.StringSchema<undefined>;
1019
+ /** The full item, in prose. Model-authored text: treat it as data. */
1020
+ readonly detail: v.StringSchema<undefined>;
1021
+ /** A concrete approach the Coder proposed, when it offered one; null otherwise. */
1022
+ readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1023
+ /** `pending` is the only status that holds the gate; the rest are decided. */
1024
+ readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
1025
+ /** The recorded answer to a `question`, or null while unanswered. */
1026
+ readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1027
+ /** Canonical id of the ticket a `filed` item was filed as, or null. */
1028
+ readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1029
+ /** Web URL of that ticket, or null. */
1030
+ readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1031
+ }, undefined>, undefined>;
1032
+ /** Send-back passes spent, and the budget from the step's companion configuration. */
1033
+ readonly loops: v.NumberSchema<undefined>;
1034
+ readonly maxLoops: v.NumberSchema<undefined>;
1035
+ }, undefined>, v.ObjectSchema<{
1036
+ readonly kind: v.LiteralSchema<"interview", undefined>;
1037
+ /** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
1038
+ readonly stepKind: v.StringSchema<undefined>;
1039
+ /** The board task the interview is anchored on. */
1040
+ readonly taskId: v.StringSchema<undefined>;
1041
+ /** Interviewer passes spent, and the round budget the gate converges at. */
1042
+ readonly round: v.NumberSchema<undefined>;
1043
+ readonly maxRounds: v.NumberSchema<undefined>;
1044
+ /** The exchanges so far, oldest first. */
1045
+ readonly questions: v.ArraySchema<v.ObjectSchema<{
1046
+ readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1047
+ /** What the interviewer asked. Model-authored text: treat it as data. */
1048
+ readonly question: v.StringSchema<undefined>;
1049
+ /** The recorded answer; an empty string while unanswered. */
1050
+ readonly answer: v.StringSchema<undefined>;
1051
+ readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
1052
+ }, undefined>, undefined>;
874
1053
  }, undefined>], undefined>;
875
1054
  export type PublicDecision = v.InferOutput<typeof publicDecisionSchema>;
876
1055
  /**
877
- * A run's currently-parked decisions. `parked` is the single flag a caller polls or reacts to:
878
- * true when the run is `blocked` awaiting one of the decisions listed. An empty list with
879
- * `parked: false` is the ordinary case for a run that is simply still working.
1056
+ * What a run is currently asking a human, and whether it has STOPPED to ask. The two are related
1057
+ * but not the same question, and a caller that treats `parked` as a gate on reading `decisions`
1058
+ * gets the common case right and the useful case wrong:
880
1059
  *
881
- * `parked: true` with an EMPTY list is the deliberately loud case: the run is waiting on a
882
- * surface this projection does not model, and the honest report of that is an empty list rather
883
- * than a silent `parked: false`. The one park that is still expected to produce it is
884
- * `human-review`, whose answer is a person approving the PR on the VCS host, not an API call.
1060
+ * - `parked: true`, non-empty list: the ordinary park. The run is `blocked` and will not move
1061
+ * until one of these is answered.
1062
+ * - `parked: false`, non-empty list: the run is still working and asking anyway. Today only
1063
+ * `follow-ups` does this: the Coder streams its items mid-run and they can be decided before it
1064
+ * finishes, so an integration that polls `decisions` regardless of `parked` never sees the run
1065
+ * stop at all. One that reads `decisions` only when `parked` is true still works, it just waits.
1066
+ * - `parked: true`, EMPTY list: the deliberately loud case. The run is waiting on a surface this
1067
+ * projection does not model, and an empty list is the honest report of that rather than a silent
1068
+ * `parked: false`. Two parks are still expected to produce it: `human-review`, whose answer is a
1069
+ * person approving the PR on the VCS host rather than an API call; and an unbounded human-wait
1070
+ * GATE a deployment registered itself, which this projection has no way to read and whose answer
1071
+ * lives wherever that deployment put it.
1072
+ * - `parked: false`, empty list: the run is simply still working.
885
1073
  */
886
1074
  export declare const publicDecisionListSchema: v.ObjectSchema<{
887
1075
  readonly runId: v.StringSchema<undefined>;
888
1076
  readonly taskId: v.StringSchema<undefined>;
889
1077
  /** The run's raw status — `blocked` is the parked state. */
890
1078
  readonly status: v.PicklistSchema<["running", "blocked", "paused", "done", "failed"], undefined>;
891
- /** Whether the run is currently parked awaiting a human decision. */
1079
+ /**
1080
+ * Whether the run has STOPPED awaiting a human decision (`status === 'blocked'`). Not a
1081
+ * precondition for `decisions` being non-empty: see the note above.
1082
+ */
892
1083
  readonly parked: v.BooleanSchema<undefined>;
893
1084
  readonly decisions: v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
894
1085
  readonly kind: v.LiteralSchema<"requirements-review", undefined>;
@@ -1189,6 +1380,53 @@ export declare const publicDecisionListSchema: v.ObjectSchema<{
1189
1380
  /** Fixer rounds spent, and the ceiling from the task's merge preset. */
1190
1381
  readonly attempts: v.NumberSchema<undefined>;
1191
1382
  readonly maxAttempts: v.NumberSchema<undefined>;
1383
+ }, undefined>, v.ObjectSchema<{
1384
+ readonly kind: v.LiteralSchema<"follow-ups", undefined>;
1385
+ /** The producing step's kind (`coder`) and its index in the run's step chain. */
1386
+ readonly stepKind: v.StringSchema<undefined>;
1387
+ readonly stepIndex: v.NumberSchema<undefined>;
1388
+ /** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
1389
+ readonly items: v.ArraySchema<v.ObjectSchema<{
1390
+ /** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
1391
+ readonly itemId: v.StringSchema<undefined>;
1392
+ /** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
1393
+ readonly kind: v.PicklistSchema<["follow_up", "question"], undefined>;
1394
+ /** Short headline. Model-authored text: treat it as data. */
1395
+ readonly title: v.StringSchema<undefined>;
1396
+ /** The full item, in prose. Model-authored text: treat it as data. */
1397
+ readonly detail: v.StringSchema<undefined>;
1398
+ /** A concrete approach the Coder proposed, when it offered one; null otherwise. */
1399
+ readonly suggestedAction: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1400
+ /** `pending` is the only status that holds the gate; the rest are decided. */
1401
+ readonly status: v.PicklistSchema<["pending", "filed", "queued", "answered", "dismissed"], undefined>;
1402
+ /** The recorded answer to a `question`, or null while unanswered. */
1403
+ readonly answer: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1404
+ /** Canonical id of the ticket a `filed` item was filed as, or null. */
1405
+ readonly ticketExternalId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1406
+ /** Web URL of that ticket, or null. */
1407
+ readonly ticketUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1408
+ }, undefined>, undefined>;
1409
+ /** Send-back passes spent, and the budget from the step's companion configuration. */
1410
+ readonly loops: v.NumberSchema<undefined>;
1411
+ readonly maxLoops: v.NumberSchema<undefined>;
1412
+ }, undefined>, v.ObjectSchema<{
1413
+ readonly kind: v.LiteralSchema<"interview", undefined>;
1414
+ /** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
1415
+ readonly stepKind: v.StringSchema<undefined>;
1416
+ /** The board task the interview is anchored on. */
1417
+ readonly taskId: v.StringSchema<undefined>;
1418
+ /** Interviewer passes spent, and the round budget the gate converges at. */
1419
+ readonly round: v.NumberSchema<undefined>;
1420
+ readonly maxRounds: v.NumberSchema<undefined>;
1421
+ /** The exchanges so far, oldest first. */
1422
+ readonly questions: v.ArraySchema<v.ObjectSchema<{
1423
+ readonly questionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
1424
+ /** What the interviewer asked. Model-authored text: treat it as data. */
1425
+ readonly question: v.StringSchema<undefined>;
1426
+ /** The recorded answer; an empty string while unanswered. */
1427
+ readonly answer: v.StringSchema<undefined>;
1428
+ readonly status: v.PicklistSchema<["open", "answered", "dismissed"], undefined>;
1429
+ }, undefined>, undefined>;
1192
1430
  }, undefined>], undefined>, undefined>;
1193
1431
  }, undefined>;
1194
1432
  export type PublicDecisionList = v.InferOutput<typeof publicDecisionListSchema>;
@@ -1349,4 +1587,39 @@ export declare const publicRequestGateFixSchema: v.ObjectSchema<{
1349
1587
  readonly findings: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 10000, undefined>]>;
1350
1588
  }, undefined>;
1351
1589
  export type PublicRequestGateFixInput = v.InferOutput<typeof publicRequestGateFixSchema>;
1590
+ /**
1591
+ * Answer one `question` item the Coder surfaced. Identical to the SPA's
1592
+ * {@link answerFollowUpSchema} and aliased rather than re-declared, on the same grounds as the
1593
+ * judge and input-gate bodies: both surfaces drive the SAME service method, so there is nothing
1594
+ * to narrow, and a structurally identical twin would be a second published type in four SDKs
1595
+ * meaning exactly what the first one means.
1596
+ */
1597
+ export declare const publicAnswerFollowUpSchema: v.ObjectSchema<{
1598
+ readonly answer: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
1599
+ }, undefined>;
1600
+ export type PublicAnswerFollowUpInput = v.InferOutput<typeof publicAnswerFollowUpSchema>;
1601
+ /**
1602
+ * Answer one interview question. Declared fresh rather than aliased, unlike the bodies above: two
1603
+ * gates ride this route (the planning and the document interviewer) and each declares its own
1604
+ * internal body, so aliasing either one would privilege that gate's bounds on a surface serving
1605
+ * both, and a bound that is right for one and wrong for the other refuses valid input.
1606
+ *
1607
+ * The numbers are therefore taken from what the two gates STORE rather than from what either one
1608
+ * accepts: an exchange lives in `initiativeQaSchema` / `docInterviewQaSchema`, both of which cap an
1609
+ * id at 80 and an answer at 2000, so a question this surface can name is a question these bounds
1610
+ * can address. They are stated as literals rather than derived from those constants because this
1611
+ * is a published contract: deriving it would let an internal cap SHRINK the public bound silently,
1612
+ * which is the one direction `/api/v1` may not move. `publicAnswerInterviewBounds` in
1613
+ * `public-decisions.test.ts` asserts the relation instead, so a gate that widens its own storage
1614
+ * fails a test here rather than refusing valid input in production.
1615
+ *
1616
+ * An EMPTY `answer` is accepted, because both services accept it: it clears an answer recorded by
1617
+ * mistake, where a minimum length would leave a caller no way to undo one.
1618
+ */
1619
+ export declare const publicAnswerInterviewSchema: v.ObjectSchema<{
1620
+ /** The `questionId` from the decision's `questions`. */
1621
+ readonly questionId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
1622
+ readonly answer: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
1623
+ }, undefined>;
1624
+ export type PublicAnswerInterviewInput = v.InferOutput<typeof publicAnswerInterviewSchema>;
1352
1625
  //# sourceMappingURL=public-decisions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-decisions.d.ts","sourceRoot":"","sources":["../src/public-decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-decisions.d.ts","sourceRoot":"","sources":["../src/public-decisions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as v from 'valibot';
2
2
  import { brainstormStageSchema } from './brainstorm.js';
3
3
  import { environmentStatusSchema } from './environments.js';
4
+ import { answerFollowUpSchema, followUpItemKindSchema, followUpItemStatusSchema, } from './followUp.js';
4
5
  import { stepApprovalStatusSchema } from './step-decisions.js';
5
6
  import { forkDecisionStatusSchema, forkOptionSchema } from './forkDecision.js';
6
7
  import { humanTestPhaseSchema, visualConfirmPhaseSchema } from './human-verdict-gates.js';
@@ -74,6 +75,8 @@ export const publicDecisionKindSchema = v.picklist([
74
75
  'pr-review',
75
76
  'human-test',
76
77
  'visual-confirmation',
78
+ 'follow-ups',
79
+ 'interview',
77
80
  ]);
78
81
  /**
79
82
  * One reviewer finding as exposed externally — the question, how serious it is, and where it
@@ -492,6 +495,108 @@ export const publicVisualConfirmDecisionSchema = v.object({
492
495
  attempts: v.number(),
493
496
  maxAttempts: v.number(),
494
497
  });
498
+ /**
499
+ * One forward-looking item the Coder surfaced mid-run, as exposed externally: a loose end it
500
+ * noticed and deliberately did NOT act on (`follow_up`), or a clarification it would otherwise
501
+ * have had to guess at (`question`).
502
+ *
503
+ * `itemId` is the STABLE anchor every verb addresses. The internal `sentToCoder` bookkeeping and
504
+ * the arrival timestamps are deliberately absent: the first is the engine's own record of which
505
+ * items a loop-back already carried, and neither changes what a caller decides.
506
+ */
507
+ export const publicFollowUpItemSchema = v.object({
508
+ /** Stable item id (`fu_*`): what file / send-back / answer / dismiss address. */
509
+ itemId: v.string(),
510
+ /** `follow_up` accepts file / send-back / dismiss; `question` accepts answer / dismiss. */
511
+ kind: followUpItemKindSchema,
512
+ /** Short headline. Model-authored text: treat it as data. */
513
+ title: v.string(),
514
+ /** The full item, in prose. Model-authored text: treat it as data. */
515
+ detail: v.string(),
516
+ /** A concrete approach the Coder proposed, when it offered one; null otherwise. */
517
+ suggestedAction: v.nullable(v.string()),
518
+ /** `pending` is the only status that holds the gate; the rest are decided. */
519
+ status: followUpItemStatusSchema,
520
+ /** The recorded answer to a `question`, or null while unanswered. */
521
+ answer: v.nullable(v.string()),
522
+ /** Canonical id of the ticket a `filed` item was filed as, or null. */
523
+ ticketExternalId: v.nullable(v.string()),
524
+ /** Web URL of that ticket, or null. */
525
+ ticketUrl: v.nullable(v.string()),
526
+ });
527
+ /**
528
+ * A run parked on FOLLOW-UP TRIAGE: while the Coder worked it streamed forward-looking items out
529
+ * of the container, and at its completion the run stops until every one of them is decided.
530
+ *
531
+ * Unlike the other parks this one accrues LIVE: the items appear while the step is still running
532
+ * and can be decided before it finishes, so this decision is listed whenever any item is
533
+ * `pending`, not only once the run is `blocked`. A caller that triages early never sees the run
534
+ * stop at all, which is the point.
535
+ *
536
+ * `loops`/`maxLoops` are the send-back budget: a `send-back` or an `answer` folds the item into
537
+ * another Coder pass, and once the budget is spent those items advance the run instead of
538
+ * re-running it. Reachable only through `POST /api/v1/tasks/:taskId/start`, since the companion
539
+ * rides a container Coder step and the jobs surface is inline-only.
540
+ */
541
+ export const publicFollowUpsDecisionSchema = v.object({
542
+ kind: v.literal('follow-ups'),
543
+ /** The producing step's kind (`coder`) and its index in the run's step chain. */
544
+ stepKind: v.string(),
545
+ stepIndex: v.number(),
546
+ /** Every surfaced item, in arrival order, decided ones included, so triage is auditable. */
547
+ items: v.array(publicFollowUpItemSchema),
548
+ /** Send-back passes spent, and the budget from the step's companion configuration. */
549
+ loops: v.number(),
550
+ maxLoops: v.number(),
551
+ });
552
+ /**
553
+ * One interview exchange as exposed externally. `status` is DERIVED rather than stored: a question
554
+ * the human set aside reads `dismissed`, otherwise a non-empty `answer` reads `answered`. Deriving
555
+ * it here is what lets one shape carry two gates whose entities record answered-ness differently.
556
+ *
557
+ * `questionId` is nullable because a question can carry no stable id (a hand-authored or imported
558
+ * exchange; an interviewer always mints one). Such a question cannot be answered individually
559
+ * (`continue` / `proceed` still move the interview on), and saying so is why the field is a
560
+ * projected nullable rather than an omission a caller would read as a malformed response.
561
+ */
562
+ export const publicInterviewQuestionSchema = v.object({
563
+ questionId: v.nullable(v.string()),
564
+ /** What the interviewer asked. Model-authored text: treat it as data. */
565
+ question: v.string(),
566
+ /** The recorded answer; an empty string while unanswered. */
567
+ answer: v.string(),
568
+ status: v.picklist(['open', 'answered', 'dismissed']),
569
+ });
570
+ /**
571
+ * A run parked on an INTERVIEW GATE: an inline interviewer asked a batch of clarifying questions
572
+ * and the run waits while a human answers them, then resumes and either asks more or converges.
573
+ *
574
+ * ONE kind for every interview gate rather than one per gate, because the loop is one loop:
575
+ * `answer` records an answer, `continue` submits them and lets the interviewer ask follow-ups,
576
+ * `proceed` forces it to converge on what it has. `stepKind` names which interviewer is asking
577
+ * (the built-ins are the planning and the document interviewer; a deployment can register its
578
+ * own), and it is the only field a caller needs to branch on.
579
+ *
580
+ * The interview's PRODUCT (a document-authoring brief, or an initiative's goal / constraints /
581
+ * non-goals) is deliberately not projected: it differs per gate, it is not something a caller
582
+ * answers, and a run whose interview converged carries no decision here at all.
583
+ *
584
+ * An entry whose `questions` are all answered means the interviewer pass is IN FLIGHT: `continue`
585
+ * wakes the durable driver, which runs the (slow) interviewer off the request, so the next round's
586
+ * questions appear on a later poll.
587
+ */
588
+ export const publicInterviewDecisionSchema = v.object({
589
+ kind: v.literal('interview'),
590
+ /** Which interviewer is asking (`doc-interviewer`, `initiative-interviewer`, …). */
591
+ stepKind: v.string(),
592
+ /** The board task the interview is anchored on. */
593
+ taskId: v.string(),
594
+ /** Interviewer passes spent, and the round budget the gate converges at. */
595
+ round: v.number(),
596
+ maxRounds: v.number(),
597
+ /** The exchanges so far, oldest first. */
598
+ questions: v.array(publicInterviewQuestionSchema),
599
+ });
495
600
  export const publicDecisionSchema = v.variant('kind', [
496
601
  publicRequirementsDecisionSchema,
497
602
  publicForkDecisionSchema,
@@ -504,23 +609,37 @@ export const publicDecisionSchema = v.variant('kind', [
504
609
  publicPrReviewDecisionSchema,
505
610
  publicHumanTestDecisionSchema,
506
611
  publicVisualConfirmDecisionSchema,
612
+ publicFollowUpsDecisionSchema,
613
+ publicInterviewDecisionSchema,
507
614
  ]);
508
615
  /**
509
- * A run's currently-parked decisions. `parked` is the single flag a caller polls or reacts to:
510
- * true when the run is `blocked` awaiting one of the decisions listed. An empty list with
511
- * `parked: false` is the ordinary case for a run that is simply still working.
616
+ * What a run is currently asking a human, and whether it has STOPPED to ask. The two are related
617
+ * but not the same question, and a caller that treats `parked` as a gate on reading `decisions`
618
+ * gets the common case right and the useful case wrong:
512
619
  *
513
- * `parked: true` with an EMPTY list is the deliberately loud case: the run is waiting on a
514
- * surface this projection does not model, and the honest report of that is an empty list rather
515
- * than a silent `parked: false`. The one park that is still expected to produce it is
516
- * `human-review`, whose answer is a person approving the PR on the VCS host, not an API call.
620
+ * - `parked: true`, non-empty list: the ordinary park. The run is `blocked` and will not move
621
+ * until one of these is answered.
622
+ * - `parked: false`, non-empty list: the run is still working and asking anyway. Today only
623
+ * `follow-ups` does this: the Coder streams its items mid-run and they can be decided before it
624
+ * finishes, so an integration that polls `decisions` regardless of `parked` never sees the run
625
+ * stop at all. One that reads `decisions` only when `parked` is true still works, it just waits.
626
+ * - `parked: true`, EMPTY list: the deliberately loud case. The run is waiting on a surface this
627
+ * projection does not model, and an empty list is the honest report of that rather than a silent
628
+ * `parked: false`. Two parks are still expected to produce it: `human-review`, whose answer is a
629
+ * person approving the PR on the VCS host rather than an API call; and an unbounded human-wait
630
+ * GATE a deployment registered itself, which this projection has no way to read and whose answer
631
+ * lives wherever that deployment put it.
632
+ * - `parked: false`, empty list: the run is simply still working.
517
633
  */
518
634
  export const publicDecisionListSchema = v.object({
519
635
  runId: v.string(),
520
636
  taskId: v.string(),
521
637
  /** The run's raw status — `blocked` is the parked state. */
522
638
  status: publicRunStatusSchema,
523
- /** Whether the run is currently parked awaiting a human decision. */
639
+ /**
640
+ * Whether the run has STOPPED awaiting a human decision (`status === 'blocked'`). Not a
641
+ * precondition for `decisions` being non-empty: see the note above.
642
+ */
524
643
  parked: v.boolean(),
525
644
  decisions: v.array(publicDecisionSchema),
526
645
  });
@@ -656,4 +775,35 @@ export const publicChallengePrReviewFindingSchema = v.object({
656
775
  export const publicRequestGateFixSchema = v.object({
657
776
  findings: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(10000)),
658
777
  });
778
+ /**
779
+ * Answer one `question` item the Coder surfaced. Identical to the SPA's
780
+ * {@link answerFollowUpSchema} and aliased rather than re-declared, on the same grounds as the
781
+ * judge and input-gate bodies: both surfaces drive the SAME service method, so there is nothing
782
+ * to narrow, and a structurally identical twin would be a second published type in four SDKs
783
+ * meaning exactly what the first one means.
784
+ */
785
+ export const publicAnswerFollowUpSchema = answerFollowUpSchema;
786
+ /**
787
+ * Answer one interview question. Declared fresh rather than aliased, unlike the bodies above: two
788
+ * gates ride this route (the planning and the document interviewer) and each declares its own
789
+ * internal body, so aliasing either one would privilege that gate's bounds on a surface serving
790
+ * both, and a bound that is right for one and wrong for the other refuses valid input.
791
+ *
792
+ * The numbers are therefore taken from what the two gates STORE rather than from what either one
793
+ * accepts: an exchange lives in `initiativeQaSchema` / `docInterviewQaSchema`, both of which cap an
794
+ * id at 80 and an answer at 2000, so a question this surface can name is a question these bounds
795
+ * can address. They are stated as literals rather than derived from those constants because this
796
+ * is a published contract: deriving it would let an internal cap SHRINK the public bound silently,
797
+ * which is the one direction `/api/v1` may not move. `publicAnswerInterviewBounds` in
798
+ * `public-decisions.test.ts` asserts the relation instead, so a gate that widens its own storage
799
+ * fails a test here rather than refusing valid input in production.
800
+ *
801
+ * An EMPTY `answer` is accepted, because both services accept it: it clears an answer recorded by
802
+ * mistake, where a minimum length would leave a caller no way to undo one.
803
+ */
804
+ export const publicAnswerInterviewSchema = v.object({
805
+ /** The `questionId` from the decision's `questions`. */
806
+ questionId: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(80)),
807
+ answer: v.pipe(v.string(), v.maxLength(2000)),
808
+ });
659
809
  //# sourceMappingURL=public-decisions.js.map