@cat-factory/contracts 0.166.0 → 0.168.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 (64) hide show
  1. package/dist/execution.d.ts +78 -0
  2. package/dist/execution.d.ts.map +1 -1
  3. package/dist/execution.js +13 -0
  4. package/dist/execution.js.map +1 -1
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/merge.d.ts +289 -1
  10. package/dist/merge.d.ts.map +1 -1
  11. package/dist/merge.js +60 -0
  12. package/dist/merge.js.map +1 -1
  13. package/dist/mergeTrackRecord.d.ts +183 -0
  14. package/dist/mergeTrackRecord.d.ts.map +1 -0
  15. package/dist/mergeTrackRecord.js +251 -0
  16. package/dist/mergeTrackRecord.js.map +1 -0
  17. package/dist/notification-webhooks.d.ts +5 -3
  18. package/dist/notification-webhooks.d.ts.map +1 -1
  19. package/dist/notifications.d.ts +42 -3
  20. package/dist/notifications.d.ts.map +1 -1
  21. package/dist/notifications.js +33 -1
  22. package/dist/notifications.js.map +1 -1
  23. package/dist/public-api.d.ts +3 -1
  24. package/dist/public-api.d.ts.map +1 -1
  25. package/dist/reproduction.d.ts +163 -0
  26. package/dist/reproduction.d.ts.map +1 -0
  27. package/dist/reproduction.js +166 -0
  28. package/dist/reproduction.js.map +1 -0
  29. package/dist/routes/agent-runs.d.ts +56 -0
  30. package/dist/routes/agent-runs.d.ts.map +1 -1
  31. package/dist/routes/execution.d.ts +227 -1
  32. package/dist/routes/execution.d.ts.map +1 -1
  33. package/dist/routes/execution.js +5 -1
  34. package/dist/routes/execution.js.map +1 -1
  35. package/dist/routes/human-review.d.ts +28 -0
  36. package/dist/routes/human-review.d.ts.map +1 -1
  37. package/dist/routes/human-test.d.ts +140 -0
  38. package/dist/routes/human-test.d.ts.map +1 -1
  39. package/dist/routes/index.d.ts +1 -0
  40. package/dist/routes/index.d.ts.map +1 -1
  41. package/dist/routes/index.js +1 -0
  42. package/dist/routes/index.js.map +1 -1
  43. package/dist/routes/merge.d.ts +354 -0
  44. package/dist/routes/merge.d.ts.map +1 -1
  45. package/dist/routes/mergeTrackRecord.d.ts +113 -0
  46. package/dist/routes/mergeTrackRecord.d.ts.map +1 -0
  47. package/dist/routes/mergeTrackRecord.js +33 -0
  48. package/dist/routes/mergeTrackRecord.js.map +1 -0
  49. package/dist/routes/notification-webhooks.d.ts +3 -3
  50. package/dist/routes/notifications.d.ts +12 -4
  51. package/dist/routes/notifications.d.ts.map +1 -1
  52. package/dist/routes/notifications.js +4 -2
  53. package/dist/routes/notifications.js.map +1 -1
  54. package/dist/routes/public-api.d.ts +9 -3
  55. package/dist/routes/public-api.d.ts.map +1 -1
  56. package/dist/routes/slack.d.ts +3 -3
  57. package/dist/routes/visual-confirm.d.ts +84 -0
  58. package/dist/routes/visual-confirm.d.ts.map +1 -1
  59. package/dist/routes/workspaces.d.ts +180 -2
  60. package/dist/routes/workspaces.d.ts.map +1 -1
  61. package/dist/slack.d.ts +2 -2
  62. package/dist/snapshot.d.ts +90 -1
  63. package/dist/snapshot.d.ts.map +1 -1
  64. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import * as v from 'valibot';
2
2
  import { mergeAssessmentSchema } from './merge.js';
3
3
  import { platformAlertReasonSchema, platformObservabilityWindowSchema } from './observability.js';
4
+ import { changeClassSchema, reviewEffortSchema } from './mergeTrackRecord.js';
4
5
  import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
5
6
  // ---------------------------------------------------------------------------
6
7
  // Notification wire contracts. A notification is a first-class, human-actionable
@@ -58,6 +59,10 @@ import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
58
59
  // when the account recovers, and re-notifies only when the firing set
59
60
  // of conditions changes (not every sweep). Informational: clicking it
60
61
  // opens the operator dashboard; `act` just marks it read.
62
+ // - `merge_tag_request`— a pull request cat-factory opened was merged DIRECTLY on the VCS
63
+ // provider (bypassing the merge card), so the merge track record has
64
+ // no reviewer-effort tag. A lightweight, dismissible nudge asking for
65
+ // one tap; it gates nothing and the record stays valid untagged.
61
66
  // - `budget_paused` — one or more runs were paused by the spend safeguard (the workspace,
62
67
  // account, or user budget is exhausted). Workspace-scoped (one card,
63
68
  // not one per run) and purely informational: the sweeper never re-drives
@@ -93,6 +98,7 @@ export const notificationTypeSchema = v.picklist([
93
98
  'platform_health',
94
99
  'budget_paused',
95
100
  'key_drift',
101
+ 'merge_tag_request',
96
102
  ]);
97
103
  /**
98
104
  * The closed set of notification types that count as "a task is waiting on a human review"
@@ -106,7 +112,9 @@ export const notificationTypeSchema = v.picklist([
106
112
  * Deliberately EXCLUDED: failure-remediation cards (`ci_failed`, `test_failed`,
107
113
  * `release_regression`) — "the machine needs help", not "a human owes a review" — and
108
114
  * block-less/system cards (`platform_health`, `budget_paused`, `key_drift`, `initiative`) that
109
- * aren't tied to a reviewable task.
115
+ * aren't tied to a reviewable task. `merge_tag_request` is excluded too: the PR it concerns has
116
+ * ALREADY merged, so it is a post-hoc nudge for one tap — counting it as review debt would
117
+ * friction task authoring over work that is finished.
110
118
  */
111
119
  export const REVIEW_WAIT_NOTIFICATION_TYPES = [
112
120
  'merge_review',
@@ -222,6 +230,18 @@ export const notificationPayloadSchema = v.object({
222
230
  * (D6.3) targets. Sorted by `(source, id)` so the identity is stable across sweeps.
223
231
  */
224
232
  driftAffected: v.optional(v.array(keyDriftAffectedSchema)),
233
+ /**
234
+ * The run's deterministic change class, on a `merge_review` / `pipeline_complete` /
235
+ * `merge_tag_request` card — so the human sees WHAT KIND of change they are being asked to
236
+ * review or tag, and the SPA can show that class's accumulated track record alongside.
237
+ */
238
+ changeClass: v.optional(changeClassSchema),
239
+ /**
240
+ * The merge track record the card's effort tag applies to. Carried on the merge-decision
241
+ * cards (so acting on one can tag in the same tap) and on a `merge_tag_request` (whose whole
242
+ * purpose is to tag it). Absent when no record was written (a best-effort side channel).
243
+ */
244
+ mergeTrackRecordId: v.optional(v.string()),
225
245
  });
226
246
  /** A human-actionable item surfaced on the board. */
227
247
  export const notificationSchema = v.object({
@@ -250,6 +270,18 @@ export const notificationSchema = v.object({
250
270
  // ---- Request bodies -------------------------------------------------------
251
271
  /** How a human resolved a notification from its card. */
252
272
  export const resolveNotificationActionSchema = v.picklist(['act', 'dismiss']);
273
+ /**
274
+ * Body of `POST /notifications/:id/act`. Every field is optional, so `{}` is the historical
275
+ * no-body behaviour.
276
+ *
277
+ * On a `merge_review` / `pipeline_complete` card, `reviewEffort` records — in the SAME tap that
278
+ * confirms the merge — how much review the PR actually needed, onto the run's merge track
279
+ * record. Omitting it is always fine: the record keeps a null tag and nothing downstream breaks
280
+ * (tagging is a nudge, never a gate).
281
+ */
282
+ export const actNotificationSchema = v.object({
283
+ reviewEffort: v.optional(v.nullable(reviewEffortSchema)),
284
+ });
253
285
  // Remediation of a drifted sealed credential (ADR 0026 D6.3) is explicit + per-secret but has NO
254
286
  // HTTP contract: the in-app `key_drift` card action drops every credential it lists (batch), and
255
287
  // the `key-drift:drop` operator CLI drops a single `(source, id)`. Neither takes a wire body, so
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
@@ -269,7 +269,7 @@ export type PublicPipelineList = v.InferOutput<typeof publicPipelineListSchema>;
269
269
  export declare const publicNotificationListSchema: v.ObjectSchema<{
270
270
  readonly notifications: v.ArraySchema<v.ObjectSchema<{
271
271
  readonly id: v.StringSchema<undefined>;
272
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift"], undefined>;
272
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
273
273
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
274
274
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
275
275
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -315,6 +315,8 @@ export declare const publicNotificationListSchema: v.ObjectSchema<{
315
315
  readonly reason: v.PicklistSchema<["key-mismatch", "corrupt"], undefined>;
316
316
  readonly sealedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
317
317
  }, undefined>, undefined>, undefined>;
318
+ readonly changeClass: v.OptionalSchema<v.PicklistSchema<["docs", "test", "dependency", "config", "source", "schema", "unknown"], undefined>, undefined>;
319
+ readonly mergeTrackRecordId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
318
320
  }, undefined>, undefined>, undefined>;
319
321
  readonly createdAt: v.NumberSchema<undefined>;
320
322
  readonly resolvedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAoB5B,+BAA+B;AAC/B,eAAO,MAAM,yBAAyB;IACpC,wEAAwE;;IAExE,iEAAiE;;IAEjE,kFAAkF;;aAElF,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEtF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,iEAAiD,CAAA;AACnF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB;IAChC,kDAAkD;;IAElD,iFAAiF;;aAEjF,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,8EAA8E;AAC9E,eAAO,MAAM,eAAe;;;;;IAK1B,kFAAkF;;QAblF,kDAAkD;;QAElD,iFAAiF;;;IAajF,yDAAyD;;;;;aAEzD,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAE7D,kFAAkF;AAClF,eAAO,MAAM,wBAAwB;;;;;;;aAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAM/E;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,iGAOjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,uGAAuG;AACvG,eAAO,MAAM,mBAAmB;;;;IAI9B,qFAAqF;;;aAGrF,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,eAAO,MAAM,uBAAuB;;;;;QANlC,qFAAqF;;;;aAMI,CAAA;AAC3F,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,iFAAiF;AACjF,eAAO,MAAM,gBAAgB;;IAE3B,wDAAwD;;;;;;IAMxD,mEAAmE;;IAEnE,8EAA8E;;IAE9E,6EAA6E;;aAE7E,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,oBAAoB;;;QAf/B,wDAAwD;;;;;;QAMxD,mEAAmE;;QAEnE,8EAA8E;;QAE9E,6EAA6E;;;aAKG,CAAA;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;IAGjC,gFAAgF;;aAEhF,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAEhF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;aAEhC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;aAGjC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAMhF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,iFAAiE,CAAA;AACnG,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,uFAAuF;AACvF,eAAO,MAAM,mBAAmB;IAC9B,sFAAsF;;IAEtF,4EAA4E;;IAE5E,kCAAkC;;IAElC,gFAAgF;;;;;;aAIhF,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;IAK1B,iDAAiD;;;QAxBjD,sFAAsF;;QAEtF,4EAA4E;;QAE5E,kCAAkC;;QAElC,gFAAgF;;;;;;;IAqBhF,8DAA8D;;;;;IAE9D,sFAAsF;;;;;aAEtF,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;AAM7D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;IAG/B,6DAA6D;;IAE7D;;;OAGG;;IAEH;;;;OAIG;;aAEH,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,eAAO,MAAM,wBAAwB;;;;QAhBnC,6DAA6D;;QAE7D;;;WAGG;;QAEH;;;;WAIG;;;aAKyF,CAAA;AAC9F,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAM/E;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAEvC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA"}
@@ -0,0 +1,163 @@
1
+ import * as v from 'valibot';
2
+ /** The per-task tri-state that opts a run into the proof phase (an `agentConfig` value). */
3
+ export declare const reproductionProofModeSchema: v.PicklistSchema<["auto", "always", "off"], undefined>;
4
+ export type ReproductionProofMode = v.InferOutput<typeof reproductionProofModeSchema>;
5
+ /**
6
+ * Read the tri-state out of a free-form `agentConfig` value, degrading any unknown/stale/
7
+ * hand-edited entry to the default `auto` rather than throwing. THE single place the union is
8
+ * interpreted — an engine that hand-rolled its own literal comparison would silently drift from
9
+ * the schema the moment a fourth mode is added.
10
+ */
11
+ export declare function parseReproductionProofMode(value: unknown): ReproductionProofMode;
12
+ /**
13
+ * How many agent+verify rounds the proof loop may run before it gives up and records
14
+ * `inconclusive`. Shares the pre-PR validation budget's shape and default so an operator meets
15
+ * one concept, not two.
16
+ */
17
+ export declare const REPRODUCTION_DEFAULT_MAX_ATTEMPTS = 3;
18
+ /**
19
+ * At most this many declared test paths — the loop applies them one by one, so the list stays
20
+ * short. Anything beyond the cap is DROPPED, and the count of what was dropped rides
21
+ * {@link resolvedReproductionSchema}'s `omittedTestPaths` so the harness (and the PR report) can
22
+ * say the pre-fix tree was reconstructed from an incomplete set. A silent truncation here would
23
+ * be worse than a visible one: a dropped path can leave the base tree without the reproduction,
24
+ * which greens it and reads as "the test does not capture the defect".
25
+ */
26
+ export declare const REPRODUCTION_MAX_TEST_PATHS = 20;
27
+ /**
28
+ * Longest accepted declared command / setup command. These are MODEL-AUTHORED strings that the
29
+ * harness runs through `sh -c`, so they are bounded at the engine's resolution boundary before
30
+ * they ever reach a job body: a "command" past this length is not the narrow test invocation the
31
+ * prompt asks for, and the engine declines the whole spec rather than shipping it (no proof is
32
+ * strictly better than a proof built on a command nobody can read).
33
+ */
34
+ export declare const REPRODUCTION_MAX_COMMAND_CHARS = 2000;
35
+ /** Longest accepted declared test path. Beyond it the path is dropped and counted as omitted. */
36
+ export declare const REPRODUCTION_MAX_TEST_PATH_CHARS = 400;
37
+ /**
38
+ * The RESOLVED reproduction spec a dispatch carries: what to run and which files constitute the
39
+ * reproduction. Folded onto the agent run context and forwarded on the coding job body ONLY for
40
+ * the dispatch that opens the PR (the same rule as `validationChecks`). Absent ⇒ the run is not
41
+ * opted in, or carries no declaration, so the harness runs its existing path unchanged.
42
+ */
43
+ export declare const resolvedReproductionSchema: v.ObjectSchema<{
44
+ /**
45
+ * The command that runs EXACTLY the declared reproduction test(s), as `sh -c` in the checkout.
46
+ * Run identically against both trees — the symmetry is what stops an environment defect from
47
+ * masquerading as a reproduction (see the initiative's D4).
48
+ */
49
+ readonly command: v.StringSchema<undefined>;
50
+ /**
51
+ * The test file(s) that constitute the reproduction, each a repo-relative path with no `..`
52
+ * segment (the engine drops anything else — see `omittedTestPaths`). Used to reconstruct the
53
+ * pre-fix tree when the run did NOT resume a branch that already carries them: the declared
54
+ * paths are applied onto the base worktree, never a whole-tree checkout (which would drag the
55
+ * fix across and green the base).
56
+ */
57
+ readonly testPaths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
58
+ /**
59
+ * How many declared paths the engine DROPPED while resolving this spec (over the cap, empty,
60
+ * absolute, traversing, or over-long). Present only when non-zero, and carried so the proof
61
+ * can state that the pre-fix tree was rebuilt from an incomplete reproduction rather than
62
+ * quietly reporting a verdict about it. See {@link REPRODUCTION_MAX_TEST_PATHS}.
63
+ */
64
+ readonly omittedTestPaths: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
65
+ /**
66
+ * Optional command that makes a FRESH worktree runnable (a dependency install). Run in BOTH
67
+ * worktrees or neither — an asymmetric setup is exactly how a false `reproduced` is produced.
68
+ */
69
+ readonly setupCommand: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
70
+ /** Repair-round budget; see {@link REPRODUCTION_DEFAULT_MAX_ATTEMPTS}. */
71
+ readonly maxAttempts: v.NumberSchema<undefined>;
72
+ }, undefined>;
73
+ export type ResolvedReproduction = v.InferOutput<typeof resolvedReproductionSchema>;
74
+ /**
75
+ * The verdict, computed by the harness from the two exit codes:
76
+ *
77
+ * - `reproduced` — RED on the pre-fix tree, GREEN on the final tree. The only shape that is proof.
78
+ * - `inconclusive` — any other shape (green at base ⇒ the test does not capture the defect;
79
+ * red at both ⇒ the fix does not resolve it, or the environment is broken). Recorded honestly
80
+ * rather than dressed up; it never fails the step (see the initiative's D6).
81
+ * - `declared_infeasible` — the agent structurally declared reproduction impossible, with a
82
+ * reason and what it verified instead. Nothing was run.
83
+ */
84
+ export declare const reproductionStatusSchema: v.PicklistSchema<["reproduced", "inconclusive", "declared_infeasible"], undefined>;
85
+ export type ReproductionStatus = v.InferOutput<typeof reproductionStatusSchema>;
86
+ /** One tree's run of the reproduction command. */
87
+ export declare const reproductionPhaseOutcomeSchema: v.ObjectSchema<{
88
+ /** Exit code (0 = pass); 124 on watchdog timeout, 127 on spawn failure, 130 on abort. */
89
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
90
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
91
+ /** Bounded, secret-scrubbed tail of the command's combined stdout+stderr. */
92
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
93
+ /** Wall-clock of the command, ms. */
94
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
95
+ /** Set when the command was killed by the per-command watchdog. */
96
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
97
+ /** Set when the phase's setup command failed, so the tree never ran the check meaningfully. */
98
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
99
+ }, undefined>;
100
+ export type ReproductionPhaseOutcome = v.InferOutput<typeof reproductionPhaseOutcomeSchema>;
101
+ /**
102
+ * The harness-computed reproduction report. Lenient throughout (`v.fallback`) so a
103
+ * partially-malformed payload from an older harness image degrades to a sensible shape rather
104
+ * than failing a run whose actual deliverable — the fix — is fine.
105
+ */
106
+ export declare const reproductionReportSchema: v.ObjectSchema<{
107
+ readonly status: v.SchemaWithFallback<v.PicklistSchema<["reproduced", "inconclusive", "declared_infeasible"], undefined>, "inconclusive">;
108
+ /** The command that was run against both trees (empty for `declared_infeasible`). */
109
+ readonly command: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
110
+ readonly testPaths: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.StringSchema<undefined>, "">, undefined>, readonly []>;
111
+ /**
112
+ * How many declared paths were dropped before the proof ran (see the resolved spec's field of
113
+ * the same name). Non-zero means the pre-fix tree was rebuilt from an INCOMPLETE reproduction,
114
+ * which the report must say rather than imply — an omission is exactly what turns a green base
115
+ * into a misleading "the test does not capture the defect".
116
+ */
117
+ readonly omittedTestPaths: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
118
+ /** The pre-fix tree's run. Absent for `declared_infeasible`. */
119
+ readonly base: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
120
+ /** Exit code (0 = pass); 124 on watchdog timeout, 127 on spawn failure, 130 on abort. */
121
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
122
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
123
+ /** Bounded, secret-scrubbed tail of the command's combined stdout+stderr. */
124
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
125
+ /** Wall-clock of the command, ms. */
126
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
127
+ /** Set when the command was killed by the per-command watchdog. */
128
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
129
+ /** Set when the phase's setup command failed, so the tree never ran the check meaningfully. */
130
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
131
+ }, undefined>, undefined>, undefined>;
132
+ /** The final tree's run. Absent for `declared_infeasible`, or when the base run settled it. */
133
+ readonly final: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
134
+ /** Exit code (0 = pass); 124 on watchdog timeout, 127 on spawn failure, 130 on abort. */
135
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
136
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
137
+ /** Bounded, secret-scrubbed tail of the command's combined stdout+stderr. */
138
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
139
+ /** Wall-clock of the command, ms. */
140
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
141
+ /** Set when the command was killed by the per-command watchdog. */
142
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
143
+ /** Set when the phase's setup command failed, so the tree never ran the check meaningfully. */
144
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
145
+ }, undefined>, undefined>, undefined>;
146
+ /** How many agent+verify rounds ran (1 = settled on the first pass). */
147
+ readonly attempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
148
+ readonly maxAttempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 3>;
149
+ /** For `declared_infeasible`: WHY the bug could not be reproduced, verbatim from the agent. */
150
+ readonly reason: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
151
+ /**
152
+ * For `declared_infeasible`: what the agent verified INSTEAD, verbatim. This is the field that
153
+ * makes an infeasibility declaration reviewable rather than an empty section.
154
+ */
155
+ readonly alternativeVerification: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
156
+ /** For `inconclusive`: which shape was observed, in one line, for the report and the step card. */
157
+ readonly note: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
158
+ readonly at: v.SchemaWithFallback<v.NumberSchema<undefined>, 0>;
159
+ }, undefined>;
160
+ export type ReproductionReport = v.InferOutput<typeof reproductionReportSchema>;
161
+ /** Parse an untrusted reproduction report (a harness payload), or `null` when unusable. */
162
+ export declare function parseReproductionReport(input: unknown): ReproductionReport | null;
163
+ //# sourceMappingURL=reproduction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reproduction.d.ts","sourceRoot":"","sources":["../src/reproduction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,wDAAwC,CAAA;AAChF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAEhF;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,IAAI,CAAA;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,OAAQ,CAAA;AAEnD,iGAAiG;AACjG,eAAO,MAAM,gCAAgC,MAAM,CAAA;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;IACrC;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH;;;;;OAKG;;IAEH;;;OAGG;;IAEH,0EAA0E;;aAE1E,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAInF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,oFAInC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,kDAAkD;AAClD,eAAO,MAAM,8BAA8B;IACzC,yFAAyF;;;IAGzF,6EAA6E;;IAE7E,qCAAqC;;IAErC,mEAAmE;;IAEnE,+FAA+F;;aAE/F,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAE3F;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;IAEnC,qFAAqF;;;IAGrF;;;;;OAKG;;IAEH,gEAAgE;;QA/BhE,yFAAyF;;;QAGzF,6EAA6E;;QAE7E,qCAAqC;;QAErC,mEAAmE;;QAEnE,+FAA+F;;;IAwB/F,+FAA+F;;QAjC/F,yFAAyF;;;QAGzF,6EAA6E;;QAE7E,qCAAqC;;QAErC,mEAAmE;;QAEnE,+FAA+F;;;IA0B/F,wEAAwE;;;IAGxE,+FAA+F;;IAE/F;;;OAGG;;IAEH,mGAAmG;;;aAGnG,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAGjF"}
@@ -0,0 +1,166 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // Bugfix REPRODUCTION PROOF.
4
+ //
5
+ // A bugfix run's pull request states that a change fixes a defect. Everything the
6
+ // verification report captures today proves the state of the work at the END — the CI
7
+ // verdict, the pre-PR validation output, the tester report. None of it shows that the
8
+ // defect ever manifested, or that this change is what made it stop.
9
+ //
10
+ // This is the missing half: the executor-harness runs the run's DECLARED reproduction
11
+ // command twice — once against the pre-fix tree, once against the final tree — and reports
12
+ // the two exit codes with their captured output. Only red-then-green is proof. The verdict
13
+ // is computed by the harness from exit codes, never self-reported by the model, which is the
14
+ // whole point (the `repro-test` kind's `outcome` field has always been the model's own claim).
15
+ //
16
+ // A run for which reproduction is genuinely infeasible declares that STRUCTURALLY, with a
17
+ // reason and the alternative verification performed, so "could not be reproduced" is never
18
+ // indistinguishable from "nobody tried".
19
+ //
20
+ // The spec travels to the container IN THE JOB BODY (containers have no DB access), so all
21
+ // three transports work with no transport-specific wiring. See
22
+ // docs/initiatives/bugfix-reproduction-proof.md.
23
+ // ---------------------------------------------------------------------------
24
+ /** The per-task tri-state that opts a run into the proof phase (an `agentConfig` value). */
25
+ export const reproductionProofModeSchema = v.picklist(['auto', 'always', 'off']);
26
+ /**
27
+ * Read the tri-state out of a free-form `agentConfig` value, degrading any unknown/stale/
28
+ * hand-edited entry to the default `auto` rather than throwing. THE single place the union is
29
+ * interpreted — an engine that hand-rolled its own literal comparison would silently drift from
30
+ * the schema the moment a fourth mode is added.
31
+ */
32
+ export function parseReproductionProofMode(value) {
33
+ return v.parse(v.fallback(reproductionProofModeSchema, 'auto'), value);
34
+ }
35
+ /**
36
+ * How many agent+verify rounds the proof loop may run before it gives up and records
37
+ * `inconclusive`. Shares the pre-PR validation budget's shape and default so an operator meets
38
+ * one concept, not two.
39
+ */
40
+ export const REPRODUCTION_DEFAULT_MAX_ATTEMPTS = 3;
41
+ /**
42
+ * At most this many declared test paths — the loop applies them one by one, so the list stays
43
+ * short. Anything beyond the cap is DROPPED, and the count of what was dropped rides
44
+ * {@link resolvedReproductionSchema}'s `omittedTestPaths` so the harness (and the PR report) can
45
+ * say the pre-fix tree was reconstructed from an incomplete set. A silent truncation here would
46
+ * be worse than a visible one: a dropped path can leave the base tree without the reproduction,
47
+ * which greens it and reads as "the test does not capture the defect".
48
+ */
49
+ export const REPRODUCTION_MAX_TEST_PATHS = 20;
50
+ /**
51
+ * Longest accepted declared command / setup command. These are MODEL-AUTHORED strings that the
52
+ * harness runs through `sh -c`, so they are bounded at the engine's resolution boundary before
53
+ * they ever reach a job body: a "command" past this length is not the narrow test invocation the
54
+ * prompt asks for, and the engine declines the whole spec rather than shipping it (no proof is
55
+ * strictly better than a proof built on a command nobody can read).
56
+ */
57
+ export const REPRODUCTION_MAX_COMMAND_CHARS = 2_000;
58
+ /** Longest accepted declared test path. Beyond it the path is dropped and counted as omitted. */
59
+ export const REPRODUCTION_MAX_TEST_PATH_CHARS = 400;
60
+ /**
61
+ * The RESOLVED reproduction spec a dispatch carries: what to run and which files constitute the
62
+ * reproduction. Folded onto the agent run context and forwarded on the coding job body ONLY for
63
+ * the dispatch that opens the PR (the same rule as `validationChecks`). Absent ⇒ the run is not
64
+ * opted in, or carries no declaration, so the harness runs its existing path unchanged.
65
+ */
66
+ export const resolvedReproductionSchema = v.object({
67
+ /**
68
+ * The command that runs EXACTLY the declared reproduction test(s), as `sh -c` in the checkout.
69
+ * Run identically against both trees — the symmetry is what stops an environment defect from
70
+ * masquerading as a reproduction (see the initiative's D4).
71
+ */
72
+ command: v.string(),
73
+ /**
74
+ * The test file(s) that constitute the reproduction, each a repo-relative path with no `..`
75
+ * segment (the engine drops anything else — see `omittedTestPaths`). Used to reconstruct the
76
+ * pre-fix tree when the run did NOT resume a branch that already carries them: the declared
77
+ * paths are applied onto the base worktree, never a whole-tree checkout (which would drag the
78
+ * fix across and green the base).
79
+ */
80
+ testPaths: v.array(v.string()),
81
+ /**
82
+ * How many declared paths the engine DROPPED while resolving this spec (over the cap, empty,
83
+ * absolute, traversing, or over-long). Present only when non-zero, and carried so the proof
84
+ * can state that the pre-fix tree was rebuilt from an incomplete reproduction rather than
85
+ * quietly reporting a verdict about it. See {@link REPRODUCTION_MAX_TEST_PATHS}.
86
+ */
87
+ omittedTestPaths: v.optional(v.number()),
88
+ /**
89
+ * Optional command that makes a FRESH worktree runnable (a dependency install). Run in BOTH
90
+ * worktrees or neither — an asymmetric setup is exactly how a false `reproduced` is produced.
91
+ */
92
+ setupCommand: v.optional(v.string()),
93
+ /** Repair-round budget; see {@link REPRODUCTION_DEFAULT_MAX_ATTEMPTS}. */
94
+ maxAttempts: v.number(),
95
+ });
96
+ // ---- The harness-produced report ------------------------------------------
97
+ /**
98
+ * The verdict, computed by the harness from the two exit codes:
99
+ *
100
+ * - `reproduced` — RED on the pre-fix tree, GREEN on the final tree. The only shape that is proof.
101
+ * - `inconclusive` — any other shape (green at base ⇒ the test does not capture the defect;
102
+ * red at both ⇒ the fix does not resolve it, or the environment is broken). Recorded honestly
103
+ * rather than dressed up; it never fails the step (see the initiative's D6).
104
+ * - `declared_infeasible` — the agent structurally declared reproduction impossible, with a
105
+ * reason and what it verified instead. Nothing was run.
106
+ */
107
+ export const reproductionStatusSchema = v.picklist([
108
+ 'reproduced',
109
+ 'inconclusive',
110
+ 'declared_infeasible',
111
+ ]);
112
+ /** One tree's run of the reproduction command. */
113
+ export const reproductionPhaseOutcomeSchema = v.object({
114
+ /** Exit code (0 = pass); 124 on watchdog timeout, 127 on spawn failure, 130 on abort. */
115
+ exitCode: v.fallback(v.number(), 1),
116
+ passed: v.fallback(v.boolean(), false),
117
+ /** Bounded, secret-scrubbed tail of the command's combined stdout+stderr. */
118
+ outputTail: v.fallback(v.optional(v.string()), undefined),
119
+ /** Wall-clock of the command, ms. */
120
+ durationMs: v.fallback(v.optional(v.number()), undefined),
121
+ /** Set when the command was killed by the per-command watchdog. */
122
+ timedOut: v.fallback(v.optional(v.boolean()), undefined),
123
+ /** Set when the phase's setup command failed, so the tree never ran the check meaningfully. */
124
+ setupFailed: v.fallback(v.optional(v.boolean()), undefined),
125
+ });
126
+ /**
127
+ * The harness-computed reproduction report. Lenient throughout (`v.fallback`) so a
128
+ * partially-malformed payload from an older harness image degrades to a sensible shape rather
129
+ * than failing a run whose actual deliverable — the fix — is fine.
130
+ */
131
+ export const reproductionReportSchema = v.object({
132
+ status: v.fallback(reproductionStatusSchema, 'inconclusive'),
133
+ /** The command that was run against both trees (empty for `declared_infeasible`). */
134
+ command: v.fallback(v.string(), ''),
135
+ testPaths: v.fallback(v.array(v.fallback(v.string(), '')), []),
136
+ /**
137
+ * How many declared paths were dropped before the proof ran (see the resolved spec's field of
138
+ * the same name). Non-zero means the pre-fix tree was rebuilt from an INCOMPLETE reproduction,
139
+ * which the report must say rather than imply — an omission is exactly what turns a green base
140
+ * into a misleading "the test does not capture the defect".
141
+ */
142
+ omittedTestPaths: v.fallback(v.optional(v.number()), undefined),
143
+ /** The pre-fix tree's run. Absent for `declared_infeasible`. */
144
+ base: v.fallback(v.optional(reproductionPhaseOutcomeSchema), undefined),
145
+ /** The final tree's run. Absent for `declared_infeasible`, or when the base run settled it. */
146
+ final: v.fallback(v.optional(reproductionPhaseOutcomeSchema), undefined),
147
+ /** How many agent+verify rounds ran (1 = settled on the first pass). */
148
+ attempts: v.fallback(v.number(), 1),
149
+ maxAttempts: v.fallback(v.number(), REPRODUCTION_DEFAULT_MAX_ATTEMPTS),
150
+ /** For `declared_infeasible`: WHY the bug could not be reproduced, verbatim from the agent. */
151
+ reason: v.fallback(v.optional(v.string()), undefined),
152
+ /**
153
+ * For `declared_infeasible`: what the agent verified INSTEAD, verbatim. This is the field that
154
+ * makes an infeasibility declaration reviewable rather than an empty section.
155
+ */
156
+ alternativeVerification: v.fallback(v.optional(v.string()), undefined),
157
+ /** For `inconclusive`: which shape was observed, in one line, for the report and the step card. */
158
+ note: v.fallback(v.optional(v.string()), undefined),
159
+ at: v.fallback(v.number(), 0),
160
+ });
161
+ /** Parse an untrusted reproduction report (a harness payload), or `null` when unusable. */
162
+ export function parseReproductionReport(input) {
163
+ const parsed = v.safeParse(reproductionReportSchema, input);
164
+ return parsed.success ? parsed.output : null;
165
+ }
166
+ //# sourceMappingURL=reproduction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reproduction.js","sourceRoot":"","sources":["../src/reproduction.ts"],"names":[],"mappings":"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"}
@@ -465,6 +465,34 @@ export declare const retryAgentRunContract: {
465
465
  }, undefined>, undefined>, readonly []>;
466
466
  readonly at: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
467
467
  }, undefined>, undefined>, undefined>;
468
+ readonly reproduction: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
469
+ readonly status: v.SchemaWithFallback<v.PicklistSchema<["reproduced", "inconclusive", "declared_infeasible"], undefined>, "inconclusive">;
470
+ readonly command: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
471
+ readonly testPaths: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.StringSchema<undefined>, "">, undefined>, readonly []>;
472
+ readonly omittedTestPaths: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
473
+ readonly base: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
474
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
475
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
476
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
477
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
478
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
479
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
480
+ }, undefined>, undefined>, undefined>;
481
+ readonly final: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
482
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
483
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
484
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
485
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
486
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
487
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
488
+ }, undefined>, undefined>, undefined>;
489
+ readonly attempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
490
+ readonly maxAttempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 3>;
491
+ readonly reason: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
492
+ readonly alternativeVerification: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
493
+ readonly note: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
494
+ readonly at: v.SchemaWithFallback<v.NumberSchema<undefined>, 0>;
495
+ }, undefined>, undefined>, undefined>;
468
496
  readonly pendingForkChat: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
469
497
  readonly messageId: v.StringSchema<undefined>;
470
498
  }, undefined>, undefined>, undefined>;
@@ -1401,6 +1429,34 @@ export declare const stopAgentRunContract: {
1401
1429
  }, undefined>, undefined>, readonly []>;
1402
1430
  readonly at: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
1403
1431
  }, undefined>, undefined>, undefined>;
1432
+ readonly reproduction: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1433
+ readonly status: v.SchemaWithFallback<v.PicklistSchema<["reproduced", "inconclusive", "declared_infeasible"], undefined>, "inconclusive">;
1434
+ readonly command: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
1435
+ readonly testPaths: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.StringSchema<undefined>, "">, undefined>, readonly []>;
1436
+ readonly omittedTestPaths: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
1437
+ readonly base: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
1438
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
1439
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
1440
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
1441
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
1442
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
1443
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
1444
+ }, undefined>, undefined>, undefined>;
1445
+ readonly final: v.SchemaWithFallback<v.OptionalSchema<v.ObjectSchema<{
1446
+ readonly exitCode: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
1447
+ readonly passed: v.SchemaWithFallback<v.BooleanSchema<undefined>, false>;
1448
+ readonly outputTail: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
1449
+ readonly durationMs: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
1450
+ readonly timedOut: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
1451
+ readonly setupFailed: v.SchemaWithFallback<v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, undefined>;
1452
+ }, undefined>, undefined>, undefined>;
1453
+ readonly attempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 1>;
1454
+ readonly maxAttempts: v.SchemaWithFallback<v.NumberSchema<undefined>, 3>;
1455
+ readonly reason: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
1456
+ readonly alternativeVerification: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
1457
+ readonly note: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
1458
+ readonly at: v.SchemaWithFallback<v.NumberSchema<undefined>, 0>;
1459
+ }, undefined>, undefined>, undefined>;
1404
1460
  readonly pendingForkChat: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1405
1461
  readonly messageId: v.StringSchema<undefined>;
1406
1462
  }, undefined>, undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}
1
+ {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}