@claudexor/schema 3.0.3 → 3.1.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 (134) hide show
  1. package/LICENSE +1 -1
  2. package/dist/agent-capabilities.d.ts +37 -0
  3. package/dist/agent-capabilities.d.ts.map +1 -1
  4. package/dist/agent-capabilities.js +14 -0
  5. package/dist/agent-capabilities.js.map +1 -1
  6. package/dist/apply-eligibility.d.ts +384 -18
  7. package/dist/apply-eligibility.d.ts.map +1 -1
  8. package/dist/apply-eligibility.js +20 -1
  9. package/dist/apply-eligibility.js.map +1 -1
  10. package/dist/budget.d.ts +75 -0
  11. package/dist/budget.d.ts.map +1 -1
  12. package/dist/budget.js +46 -0
  13. package/dist/budget.js.map +1 -1
  14. package/dist/config.d.ts +41 -41
  15. package/dist/control-operation-responses.d.ts +287 -65
  16. package/dist/control-operation-responses.d.ts.map +1 -1
  17. package/dist/control-operation-responses.js +33 -3
  18. package/dist/control-operation-responses.js.map +1 -1
  19. package/dist/control-run-detail.d.ts +600 -150
  20. package/dist/control-run-detail.d.ts.map +1 -1
  21. package/dist/control-run-detail.js +28 -2
  22. package/dist/control-run-detail.js.map +1 -1
  23. package/dist/control-run-retry.d.ts +1 -1
  24. package/dist/control-run-scope.d.ts +1 -1
  25. package/dist/control-thread-apply.d.ts +10 -0
  26. package/dist/control-thread-apply.d.ts.map +1 -1
  27. package/dist/control.d.ts +664 -156
  28. package/dist/control.d.ts.map +1 -1
  29. package/dist/control.js +76 -2
  30. package/dist/control.js.map +1 -1
  31. package/dist/decision.d.ts +205 -9
  32. package/dist/decision.d.ts.map +1 -1
  33. package/dist/decision.js +69 -1
  34. package/dist/decision.js.map +1 -1
  35. package/dist/deep-scan.d.ts +27 -0
  36. package/dist/deep-scan.d.ts.map +1 -0
  37. package/dist/deep-scan.js +27 -0
  38. package/dist/deep-scan.js.map +1 -0
  39. package/dist/delivery.d.ts +13 -0
  40. package/dist/delivery.d.ts.map +1 -1
  41. package/dist/delivery.js +15 -0
  42. package/dist/delivery.js.map +1 -1
  43. package/dist/events.d.ts +59 -4
  44. package/dist/events.d.ts.map +1 -1
  45. package/dist/events.js +85 -0
  46. package/dist/events.js.map +1 -1
  47. package/dist/harness.d.ts +111 -3
  48. package/dist/harness.d.ts.map +1 -1
  49. package/dist/harness.js +77 -1
  50. package/dist/harness.js.map +1 -1
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +3 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/operation.d.ts +193 -10
  56. package/dist/operation.d.ts.map +1 -1
  57. package/dist/operation.js +45 -0
  58. package/dist/operation.js.map +1 -1
  59. package/dist/output-schema-dialect.d.ts +22 -0
  60. package/dist/output-schema-dialect.d.ts.map +1 -0
  61. package/dist/output-schema-dialect.js +37 -0
  62. package/dist/output-schema-dialect.js.map +1 -0
  63. package/dist/output-schema.d.ts +26 -2
  64. package/dist/output-schema.d.ts.map +1 -1
  65. package/dist/output-schema.js +313 -16
  66. package/dist/output-schema.js.map +1 -1
  67. package/dist/plan.d.ts +2 -2
  68. package/dist/problem.d.ts +3 -3
  69. package/dist/project.d.ts +47 -12
  70. package/dist/project.d.ts.map +1 -1
  71. package/dist/project.js +32 -0
  72. package/dist/project.js.map +1 -1
  73. package/dist/readiness.d.ts +14 -0
  74. package/dist/readiness.d.ts.map +1 -1
  75. package/dist/recovery.d.ts +14 -14
  76. package/dist/review.d.ts +7 -7
  77. package/dist/route.d.ts +2 -2
  78. package/dist/setup.d.ts +288 -94
  79. package/dist/setup.d.ts.map +1 -1
  80. package/dist/setup.js +90 -6
  81. package/dist/setup.js.map +1 -1
  82. package/dist/status-projection.d.ts +79 -4
  83. package/dist/status-projection.d.ts.map +1 -1
  84. package/dist/status-projection.js +161 -4
  85. package/dist/status-projection.js.map +1 -1
  86. package/dist/task.d.ts +14 -0
  87. package/dist/task.d.ts.map +1 -1
  88. package/dist/task.js +9 -0
  89. package/dist/task.js.map +1 -1
  90. package/dist/telemetry.d.ts +779 -16
  91. package/dist/telemetry.d.ts.map +1 -1
  92. package/dist/telemetry.js +177 -4
  93. package/dist/telemetry.js.map +1 -1
  94. package/dist/tool-ref.d.ts +14 -0
  95. package/dist/tool-ref.d.ts.map +1 -1
  96. package/dist/tool-ref.js +15 -0
  97. package/dist/tool-ref.js.map +1 -1
  98. package/dist/work-report.d.ts +131 -0
  99. package/dist/work-report.d.ts.map +1 -0
  100. package/dist/work-report.js +124 -0
  101. package/dist/work-report.js.map +1 -0
  102. package/dist/workspace.d.ts +2 -2
  103. package/generated/AgentCapabilityCatalog.schema.json +35 -0
  104. package/generated/ControlApplyCheckResponse.schema.json +5 -0
  105. package/generated/ControlDeliveryResponse.schema.json +14 -0
  106. package/generated/ControlHarnessListResponse.schema.json +19 -0
  107. package/generated/ControlOperationCatalog.schema.json +74 -0
  108. package/generated/ControlOperationDescriptor.schema.json +74 -0
  109. package/generated/ControlOperationParameter.schema.json +75 -0
  110. package/generated/ControlProjectRemoveReceipt.schema.json +58 -0
  111. package/generated/ControlRunAgainDraft.schema.json +11 -0
  112. package/generated/ControlRunDetail.schema.json +403 -9
  113. package/generated/ControlRunListResponse.schema.json +229 -3
  114. package/generated/ControlRunStartRequest.schema.json +11 -0
  115. package/generated/ControlRunSummary.schema.json +215 -2
  116. package/generated/ControlSetupJobCreateRequest.schema.json +2 -1
  117. package/generated/ControlSetupJobEvent.schema.json +28 -0
  118. package/generated/ControlSetupJobSnapshot.schema.json +28 -0
  119. package/generated/ControlThreadApplyResponse.schema.json +14 -0
  120. package/generated/ControlThreadDetail.schema.json +94 -1
  121. package/generated/ControlThreadTurnRequest.schema.json +11 -0
  122. package/generated/DecisionRecord.schema.json +178 -2
  123. package/generated/HarnessEvent.schema.json +79 -1
  124. package/generated/HarnessManifest.schema.json +19 -0
  125. package/generated/HarnessStatusDto.schema.json +19 -0
  126. package/generated/McpRunHandleResult.schema.json +286 -1
  127. package/generated/McpRunToolResult.schema.json +171 -1
  128. package/generated/RoutePoolDegradedPayload.schema.json +79 -0
  129. package/generated/RunEvent.schema.json +7 -1
  130. package/generated/RunFailure.schema.json +23 -1
  131. package/generated/RunTelemetry.schema.json +376 -1
  132. package/generated/StructuredOutputConformance.schema.json +83 -0
  133. package/generated/TaskContract.schema.json +16 -0
  134. package/package.json +2 -2
@@ -40,7 +40,7 @@ export type ReviewState = z.infer<typeof ReviewState>;
40
40
  /** Typed reason on non-clean terminals (replaces the old reason-as-status
41
41
  * values exhausted/not_converged/stuck_no_progress/...). Null on a clean
42
42
  * success. */
43
- export declare const RunReason: z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted"]>;
43
+ export declare const RunReason: z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted", "input_required", "work_incomplete", "context_capacity_exhausted", "work_report_contract"]>;
44
44
  export type RunReason = z.infer<typeof RunReason>;
45
45
  /** The v3 terminal truth (D8): independent axes instead of one mixed enum.
46
46
  * lifecycle says how far the PROCESS got; noChanges/checks/review say what
@@ -51,19 +51,77 @@ export declare const RunOutcomeFacts: z.ZodObject<{
51
51
  noChanges: z.ZodDefault<z.ZodBoolean>;
52
52
  checks: z.ZodDefault<z.ZodEnum<["passed", "failed", "not_configured"]>>;
53
53
  review: z.ZodDefault<z.ZodEnum<["approved", "blocked", "not_run"]>>;
54
- reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted"]>>>;
54
+ reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted", "input_required", "work_incomplete", "context_capacity_exhausted", "work_report_contract"]>>>;
55
+ /**
56
+ * D-16 work_state axis (INV-116): the model-attested work outcome,
57
+ * orthogonal to `lifecycle`. Absent on runs with no work_report transport
58
+ * (legacy/pre-D16 terminals). A `needs_input`/`incomplete` state makes an
59
+ * otherwise-succeeded run non-applyable and forces a non-zero CLI exit via
60
+ * the outcome-aware exit projection, WITHOUT flipping the lifecycle.
61
+ */
62
+ work_state: z.ZodOptional<z.ZodObject<{
63
+ state: z.ZodEnum<["completed", "needs_input", "incomplete", "unverified"]>;
64
+ source: z.ZodEnum<["constrained", "validated", "absent"]>;
65
+ required_inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
66
+ kind: z.ZodEnum<["file", "context", "credential", "permission", "decision", "external_dependency"]>;
67
+ locator: z.ZodDefault<z.ZodNullable<z.ZodString>>;
68
+ description: z.ZodString;
69
+ }, "strip", z.ZodTypeAny, {
70
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
71
+ description: string;
72
+ locator: string | null;
73
+ }, {
74
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
75
+ description: string;
76
+ locator?: string | null | undefined;
77
+ }>, "many">>;
78
+ }, "strip", z.ZodTypeAny, {
79
+ source: "constrained" | "validated" | "absent";
80
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
81
+ required_inputs?: {
82
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
83
+ description: string;
84
+ locator: string | null;
85
+ }[] | undefined;
86
+ }, {
87
+ source: "constrained" | "validated" | "absent";
88
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
89
+ required_inputs?: {
90
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
91
+ description: string;
92
+ locator?: string | null | undefined;
93
+ }[] | undefined;
94
+ }>>;
55
95
  }, "strict", z.ZodTypeAny, {
56
96
  review: "not_run" | "approved" | "blocked";
57
- reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null;
97
+ reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null;
58
98
  checks: "passed" | "failed" | "not_configured";
59
99
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
60
100
  noChanges: boolean;
101
+ work_state?: {
102
+ source: "constrained" | "validated" | "absent";
103
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
104
+ required_inputs?: {
105
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
106
+ description: string;
107
+ locator: string | null;
108
+ }[] | undefined;
109
+ } | undefined;
61
110
  }, {
62
111
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
63
112
  review?: "not_run" | "approved" | "blocked" | undefined;
64
- reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null | undefined;
113
+ reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null | undefined;
65
114
  checks?: "passed" | "failed" | "not_configured" | undefined;
66
115
  noChanges?: boolean | undefined;
116
+ work_state?: {
117
+ source: "constrained" | "validated" | "absent";
118
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
119
+ required_inputs?: {
120
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
121
+ description: string;
122
+ locator?: string | null | undefined;
123
+ }[] | undefined;
124
+ } | undefined;
67
125
  }>;
68
126
  export type RunOutcomeFacts = z.infer<typeof RunOutcomeFacts>;
69
127
  export declare const ApplyRecommendation: z.ZodEnum<["apply", "inspect", "continue", "human_review"]>;
@@ -130,34 +188,126 @@ export declare const DecisionRecord: z.ZodObject<{
130
188
  noChanges: z.ZodDefault<z.ZodBoolean>;
131
189
  checks: z.ZodDefault<z.ZodEnum<["passed", "failed", "not_configured"]>>;
132
190
  review: z.ZodDefault<z.ZodEnum<["approved", "blocked", "not_run"]>>;
133
- reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted"]>>>;
191
+ reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["harness_failed", "no_changes", "review_blocked", "checks_failed", "budget_exhausted", "budget_overshoot", "cost_unverifiable", "not_converged", "stuck_no_progress", "wall_clock_exceeded", "user_cancelled", "crash_interrupted", "input_required", "work_incomplete", "context_capacity_exhausted", "work_report_contract"]>>>;
192
+ /**
193
+ * D-16 work_state axis (INV-116): the model-attested work outcome,
194
+ * orthogonal to `lifecycle`. Absent on runs with no work_report transport
195
+ * (legacy/pre-D16 terminals). A `needs_input`/`incomplete` state makes an
196
+ * otherwise-succeeded run non-applyable and forces a non-zero CLI exit via
197
+ * the outcome-aware exit projection, WITHOUT flipping the lifecycle.
198
+ */
199
+ work_state: z.ZodOptional<z.ZodObject<{
200
+ state: z.ZodEnum<["completed", "needs_input", "incomplete", "unverified"]>;
201
+ source: z.ZodEnum<["constrained", "validated", "absent"]>;
202
+ required_inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
203
+ kind: z.ZodEnum<["file", "context", "credential", "permission", "decision", "external_dependency"]>;
204
+ locator: z.ZodDefault<z.ZodNullable<z.ZodString>>;
205
+ description: z.ZodString;
206
+ }, "strip", z.ZodTypeAny, {
207
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
208
+ description: string;
209
+ locator: string | null;
210
+ }, {
211
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
212
+ description: string;
213
+ locator?: string | null | undefined;
214
+ }>, "many">>;
215
+ }, "strip", z.ZodTypeAny, {
216
+ source: "constrained" | "validated" | "absent";
217
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
218
+ required_inputs?: {
219
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
220
+ description: string;
221
+ locator: string | null;
222
+ }[] | undefined;
223
+ }, {
224
+ source: "constrained" | "validated" | "absent";
225
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
226
+ required_inputs?: {
227
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
228
+ description: string;
229
+ locator?: string | null | undefined;
230
+ }[] | undefined;
231
+ }>>;
134
232
  }, "strict", z.ZodTypeAny, {
135
233
  review: "not_run" | "approved" | "blocked";
136
- reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null;
234
+ reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null;
137
235
  checks: "passed" | "failed" | "not_configured";
138
236
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
139
237
  noChanges: boolean;
238
+ work_state?: {
239
+ source: "constrained" | "validated" | "absent";
240
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
241
+ required_inputs?: {
242
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
243
+ description: string;
244
+ locator: string | null;
245
+ }[] | undefined;
246
+ } | undefined;
140
247
  }, {
141
248
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
142
249
  review?: "not_run" | "approved" | "blocked" | undefined;
143
- reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null | undefined;
250
+ reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null | undefined;
144
251
  checks?: "passed" | "failed" | "not_configured" | undefined;
145
252
  noChanges?: boolean | undefined;
253
+ work_state?: {
254
+ source: "constrained" | "validated" | "absent";
255
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
256
+ required_inputs?: {
257
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
258
+ description: string;
259
+ locator?: string | null | undefined;
260
+ }[] | undefined;
261
+ } | undefined;
146
262
  }>;
147
263
  why_winner: z.ZodDefault<z.ZodString>;
148
264
  why_not_others: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
265
+ ranking_policy_version: z.ZodDefault<z.ZodNumber>;
266
+ score_axes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
267
+ ranking_scorecard: z.ZodDefault<z.ZodArray<z.ZodObject<{
268
+ attempt_id: z.ZodString;
269
+ label: z.ZodString;
270
+ axes: z.ZodRecord<z.ZodString, z.ZodString>;
271
+ }, "strip", z.ZodTypeAny, {
272
+ label: string;
273
+ attempt_id: string;
274
+ axes: Record<string, string>;
275
+ }, {
276
+ label: string;
277
+ attempt_id: string;
278
+ axes: Record<string, string>;
279
+ }>, "many">>;
280
+ decisive_axis: z.ZodDefault<z.ZodNullable<z.ZodObject<{
281
+ key: z.ZodString;
282
+ winner_value: z.ZodString;
283
+ runner_up_value: z.ZodString;
284
+ }, "strip", z.ZodTypeAny, {
285
+ key: string;
286
+ winner_value: string;
287
+ runner_up_value: string;
288
+ }, {
289
+ key: string;
290
+ winner_value: string;
291
+ runner_up_value: string;
292
+ }>>>;
149
293
  accepted_risks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
150
294
  final_checks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
151
295
  evidence_facts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
152
296
  budget_summary: z.ZodDefault<z.ZodObject<{
153
297
  spend_usd: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
154
298
  estimated: z.ZodDefault<z.ZodBoolean>;
299
+ cash_usd: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
300
+ valuation_usd: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
155
301
  }, "strip", z.ZodTypeAny, {
156
302
  estimated: boolean;
157
303
  spend_usd: number | null;
304
+ cash_usd: number | null;
305
+ valuation_usd: number | null;
158
306
  }, {
159
307
  estimated?: boolean | undefined;
160
308
  spend_usd?: number | null | undefined;
309
+ cash_usd?: number | null | undefined;
310
+ valuation_usd?: number | null | undefined;
161
311
  }>>;
162
312
  apply_recommendation: z.ZodDefault<z.ZodEnum<["apply", "inspect", "continue", "human_review"]>>;
163
313
  verification_basis: z.ZodDefault<z.ZodEnum<["none", "cross_family_review", "both"]>>;
@@ -207,19 +357,42 @@ export declare const DecisionRecord: z.ZodObject<{
207
357
  winner: string | null;
208
358
  facts: {
209
359
  review: "not_run" | "approved" | "blocked";
210
- reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null;
360
+ reason: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null;
211
361
  checks: "passed" | "failed" | "not_configured";
212
362
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
213
363
  noChanges: boolean;
364
+ work_state?: {
365
+ source: "constrained" | "validated" | "absent";
366
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
367
+ required_inputs?: {
368
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
369
+ description: string;
370
+ locator: string | null;
371
+ }[] | undefined;
372
+ } | undefined;
214
373
  };
215
374
  why_winner: string;
216
375
  why_not_others: Record<string, string>;
376
+ ranking_policy_version: number;
377
+ score_axes: string[];
378
+ ranking_scorecard: {
379
+ label: string;
380
+ attempt_id: string;
381
+ axes: Record<string, string>;
382
+ }[];
383
+ decisive_axis: {
384
+ key: string;
385
+ winner_value: string;
386
+ runner_up_value: string;
387
+ } | null;
217
388
  accepted_risks: string[];
218
389
  final_checks: string[];
219
390
  evidence_facts: string[];
220
391
  budget_summary: {
221
392
  estimated: boolean;
222
393
  spend_usd: number | null;
394
+ cash_usd: number | null;
395
+ valuation_usd: number | null;
223
396
  };
224
397
  apply_recommendation: "apply" | "inspect" | "continue" | "human_review";
225
398
  verification_basis: "none" | "cross_family_review" | "both";
@@ -240,18 +413,41 @@ export declare const DecisionRecord: z.ZodObject<{
240
413
  facts: {
241
414
  lifecycle: "failed" | "cancelled" | "succeeded" | "interrupted";
242
415
  review?: "not_run" | "approved" | "blocked" | undefined;
243
- reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | null | undefined;
416
+ reason?: "harness_failed" | "no_changes" | "review_blocked" | "checks_failed" | "budget_exhausted" | "budget_overshoot" | "cost_unverifiable" | "not_converged" | "stuck_no_progress" | "wall_clock_exceeded" | "user_cancelled" | "crash_interrupted" | "input_required" | "work_incomplete" | "context_capacity_exhausted" | "work_report_contract" | null | undefined;
244
417
  checks?: "passed" | "failed" | "not_configured" | undefined;
245
418
  noChanges?: boolean | undefined;
419
+ work_state?: {
420
+ source: "constrained" | "validated" | "absent";
421
+ state: "completed" | "needs_input" | "incomplete" | "unverified";
422
+ required_inputs?: {
423
+ kind: "file" | "context" | "decision" | "credential" | "permission" | "external_dependency";
424
+ description: string;
425
+ locator?: string | null | undefined;
426
+ }[] | undefined;
427
+ } | undefined;
246
428
  };
247
429
  why_winner?: string | undefined;
248
430
  why_not_others?: Record<string, string> | undefined;
431
+ ranking_policy_version?: number | undefined;
432
+ score_axes?: string[] | undefined;
433
+ ranking_scorecard?: {
434
+ label: string;
435
+ attempt_id: string;
436
+ axes: Record<string, string>;
437
+ }[] | undefined;
438
+ decisive_axis?: {
439
+ key: string;
440
+ winner_value: string;
441
+ runner_up_value: string;
442
+ } | null | undefined;
249
443
  accepted_risks?: string[] | undefined;
250
444
  final_checks?: string[] | undefined;
251
445
  evidence_facts?: string[] | undefined;
252
446
  budget_summary?: {
253
447
  estimated?: boolean | undefined;
254
448
  spend_usd?: number | null | undefined;
449
+ cash_usd?: number | null | undefined;
450
+ valuation_usd?: number | null | undefined;
255
451
  } | undefined;
256
452
  apply_recommendation?: "apply" | "inspect" | "continue" | "human_review" | undefined;
257
453
  verification_basis?: "none" | "cross_family_review" | "both" | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAciD,CAAC;AACjF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE;;uEAEuE;AACvE,eAAO,MAAM,WAAW,mDAIrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;wEACwE;AACxE,eAAO,MAAM,WAAW,+CAIrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;cAEc;AACd,eAAO,MAAM,SAAS,iPAe+D,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD;;;+EAG+E;AAC/E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAgBuC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6DAI7B,CAAC;AACJ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAStE,eAAO,MAAM,iBAAiB,oDAI3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;IAG1B,8EAA8E;;;;;;;;;;;;;;;IAgC9E,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;EAW3F,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,cAAc;;IAGvB;;0DAEsD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAnDtD,8EAA8E;;;;;;;;;;;;;;;QAgC9E,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoE3F,CAAC;AACJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAciD,CAAC;AACjF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE;;uEAEuE;AACvE,eAAO,MAAM,WAAW,mDAIrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;wEACwE;AACxE,eAAO,MAAM,WAAW,+CAIrB,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;cAEc;AACd,eAAO,MAAM,SAAS,4UAoB+D,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD;;;+EAG+E;AAC/E,eAAO,MAAM,eAAe;;;;;;IAcxB;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM4D,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB,6DAI7B,CAAC;AACJ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAStE,eAAO,MAAM,iBAAiB,oDAI3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;IAG1B,8EAA8E;;;;;;;;;;;;;;;IAgC9E,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;EAW3F,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,cAAc;;IAGvB;;0DAEsD;;;;;;;QAjGtD;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwCH,8EAA8E;;;;;;;;;;;;;;;QAgC9E,0FAA0F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkI3F,CAAC;AACJ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
package/dist/decision.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { Id } from "./primitives.js";
3
+ import { WorkState } from "./work-report.js";
3
4
  export const PairwiseComparison = z
4
5
  .object({
5
6
  candidate_a: Id.describe("First candidate in the comparison."),
@@ -40,6 +41,11 @@ export const RunReason = z
40
41
  "wall_clock_exceeded",
41
42
  "user_cancelled",
42
43
  "crash_interrupted",
44
+ // D-16 work_state / context reasons.
45
+ "input_required",
46
+ "work_incomplete",
47
+ "context_capacity_exhausted",
48
+ "work_report_contract",
43
49
  ])
44
50
  .describe("Typed reason qualifying a non-clean terminal; null on a clean success.");
45
51
  /** The v3 terminal truth (D8): independent axes instead of one mixed enum.
@@ -60,6 +66,14 @@ export const RunOutcomeFacts = z
60
66
  reason: RunReason.nullable()
61
67
  .default(null)
62
68
  .describe("Typed reason qualifying a non-clean terminal; null on a clean success."),
69
+ /**
70
+ * D-16 work_state axis (INV-116): the model-attested work outcome,
71
+ * orthogonal to `lifecycle`. Absent on runs with no work_report transport
72
+ * (legacy/pre-D16 terminals). A `needs_input`/`incomplete` state makes an
73
+ * otherwise-succeeded run non-applyable and forces a non-zero CLI exit via
74
+ * the outcome-aware exit projection, WITHOUT flipping the lifecycle.
75
+ */
76
+ work_state: WorkState.optional().describe("D-16 model-attested work outcome, orthogonal to lifecycle; a needs_input/incomplete state vetoes applyability and exit 0. Absent on runs with no work_report transport."),
63
77
  })
64
78
  .strict()
65
79
  .describe("Independent terminal outcome axes of a run (D8/D18).");
@@ -136,6 +150,44 @@ export const DecisionRecord = z
136
150
  .record(z.string(), z.string())
137
151
  .default({})
138
152
  .describe("Per-candidate reasons the others lost, keyed by candidate id."),
153
+ // QA-028 transparency: the full, versioned ranking scorecard so a decision is
154
+ // self-contained. `score_axes` names every compared ranking axis in
155
+ // precedence order; `ranking_scorecard` carries every axis value for every
156
+ // candidate; `decisive_axis` names the FIRST axis that separated the winner
157
+ // from the runner-up (null on an exact tie, where route order — disclosed in
158
+ // final_checks — decided). Producer: arbitration. A hidden non-tie axis can
159
+ // no longer read as an unexplained pick among equals.
160
+ ranking_policy_version: z
161
+ .number()
162
+ .int()
163
+ .positive()
164
+ .default(1)
165
+ .describe("Version of the ranking axis registry the scorecard was produced under."),
166
+ score_axes: z
167
+ .array(z.string())
168
+ .default([])
169
+ .describe("Every compared ranking axis key, in precedence (best-first) order."),
170
+ ranking_scorecard: z
171
+ .array(z.object({
172
+ attempt_id: Id.describe("Candidate attempt id (stable key; labels may localize)."),
173
+ label: z.string().describe("Anonymized candidate label shown to the arbiter."),
174
+ axes: z
175
+ .record(z.string(), z.string())
176
+ .describe("Formatted value for every ranking axis, keyed by axis key."),
177
+ }))
178
+ .default([])
179
+ .describe("Per-candidate full ranking scorecard, in final ranking order."),
180
+ decisive_axis: z
181
+ .object({
182
+ key: z.string().describe("The first ranking axis that separated winner from runner-up."),
183
+ winner_value: z.string().describe("The winner's formatted value on the decisive axis."),
184
+ runner_up_value: z
185
+ .string()
186
+ .describe("The runner-up's formatted value on the decisive axis."),
187
+ })
188
+ .nullable()
189
+ .default(null)
190
+ .describe("The axis that actually decided the winner vs the runner-up; null on an exact tie (route order decided, disclosed in final_checks)."),
139
191
  accepted_risks: z
140
192
  .array(z.string())
141
193
  .default([])
@@ -161,8 +213,24 @@ export const DecisionRecord = z
161
213
  .boolean()
162
214
  .default(false)
163
215
  .describe("True when any of the spend is token-derived rather than natively reported."),
216
+ // QA-010b: the settled CASH vs subscription-VALUATION split, so the
217
+ // terminal decision record is self-contained. `spend_usd` above is the
218
+ // cash figure (0 on native-subscription routes); `valuation_usd`
219
+ // carries the subscription-equivalent total INCLUDING the reviewer
220
+ // panel, which used to live only in raw events. Optional/nullable so
221
+ // older records and ledgerless paths stay valid.
222
+ cash_usd: z
223
+ .number()
224
+ .nullable()
225
+ .default(null)
226
+ .describe("Settled cash spend in USD (0 on native-subscription routes); null when unknown."),
227
+ valuation_usd: z
228
+ .number()
229
+ .nullable()
230
+ .default(null)
231
+ .describe("Settled subscription-equivalent valuation in USD (includes the reviewer panel); null when unknown."),
164
232
  })
165
- .default({ spend_usd: null, estimated: false })
233
+ .default({ spend_usd: null, estimated: false, cash_usd: null, valuation_usd: null })
166
234
  .describe("Settled spend for the run; estimates are disclosed, never presented as exact."),
167
235
  apply_recommendation: ApplyRecommendation.default("inspect"),
168
236
  // Honest disclosure of WHAT verified an applyable run (gates, cross-family
@@ -1 +1 @@
1
- {"version":3,"file":"decision.js","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision.js","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Deep-scan reducer outcome (#27 / D-6). A multi-scout `ask --deep-scan` runs
4
+ * ONE bounded synthesis reducer over the raw scout reports so the final artifact
5
+ * is a real merge, not a concatenation. `succeeded` = the reducer merged the
6
+ * scouts; `failed` = the reducer errored/timed-out/was budget-denied (or no
7
+ * synthesize-capable route existed) and the final artifact is an HONEST raw
8
+ * scout bundle, never a fake synthesis; `skipped` = a single scout report needs
9
+ * no merge (width-1). Null on non-deep-scan runs and legacy artifacts.
10
+ */
11
+ export declare const DeepScanSynthesisStatus: z.ZodEnum<["succeeded", "failed", "skipped"]>;
12
+ export type DeepScanSynthesisStatus = z.infer<typeof DeepScanSynthesisStatus>;
13
+ export declare const DeepScanSynthesis: z.ZodObject<{
14
+ status: z.ZodEnum<["succeeded", "failed", "skipped"]>;
15
+ reducer_attempt_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
16
+ reason: z.ZodDefault<z.ZodNullable<z.ZodString>>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ status: "failed" | "succeeded" | "skipped";
19
+ reason: string | null;
20
+ reducer_attempt_id: string | null;
21
+ }, {
22
+ status: "failed" | "succeeded" | "skipped";
23
+ reason?: string | null | undefined;
24
+ reducer_attempt_id?: string | null | undefined;
25
+ }>;
26
+ export type DeepScanSynthesis = z.infer<typeof DeepScanSynthesis>;
27
+ //# sourceMappingURL=deep-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-scan.d.ts","sourceRoot":"","sources":["../src/deep-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,+CAA6C,CAAC;AAClF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAkB3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Deep-scan reducer outcome (#27 / D-6). A multi-scout `ask --deep-scan` runs
4
+ * ONE bounded synthesis reducer over the raw scout reports so the final artifact
5
+ * is a real merge, not a concatenation. `succeeded` = the reducer merged the
6
+ * scouts; `failed` = the reducer errored/timed-out/was budget-denied (or no
7
+ * synthesize-capable route existed) and the final artifact is an HONEST raw
8
+ * scout bundle, never a fake synthesis; `skipped` = a single scout report needs
9
+ * no merge (width-1). Null on non-deep-scan runs and legacy artifacts.
10
+ */
11
+ export const DeepScanSynthesisStatus = z.enum(["succeeded", "failed", "skipped"]);
12
+ export const DeepScanSynthesis = z
13
+ .object({
14
+ status: DeepScanSynthesisStatus.describe("succeeded = reducer merged the scouts; failed = honest raw bundle; skipped = single report, no merge."),
15
+ reducer_attempt_id: z
16
+ .string()
17
+ .nullable()
18
+ .default(null)
19
+ .describe("The reducer attempt id (roster/cost visible); null when no reducer attempt ran."),
20
+ reason: z
21
+ .string()
22
+ .nullable()
23
+ .default(null)
24
+ .describe("Why the reducer failed or was skipped; null on a clean merge."),
25
+ })
26
+ .describe("Deep-scan reducer outcome: whether the scout reports were merged into a real synthesis, degraded to an honest raw bundle, or skipped as a single report.");
27
+ //# sourceMappingURL=deep-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-scan.js","sourceRoot":"","sources":["../src/deep-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAGlF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CACtC,uGAAuG,CACxG;IACD,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC;KACD,QAAQ,CACP,0JAA0J,CAC3J,CAAC"}
@@ -9,6 +9,15 @@ export declare const DeliveryReceipt: z.ZodObject<{
9
9
  detail: z.ZodOptional<z.ZodString>;
10
10
  treeMutated: z.ZodOptional<z.ZodBoolean>;
11
11
  refused: z.ZodOptional<z.ZodBoolean>;
12
+ /** #26: TRUE when this delivery was an idempotent already-applied no-op —
13
+ * the tree was already this patch's exact postimage (reverse `git apply
14
+ * --check` clean), so `applied:true` with NO mutation. Distinguishes a
15
+ * fresh apply from a replay so a surface never claims it just changed files
16
+ * it did not. Defaults false. */
17
+ alreadyApplied: z.ZodDefault<z.ZodBoolean>;
18
+ /** #26: coarse typed delivery disposition, so a consumer reads the outcome
19
+ * without parsing `detail` prose. Optional (older receipts omit it). */
20
+ deliveryStatus: z.ZodOptional<z.ZodEnum<["applied", "already_applied", "refused"]>>;
12
21
  finalVerify: z.ZodObject<{
13
22
  attempted: z.ZodBoolean;
14
23
  base_sha: z.ZodDefault<z.ZodNullable<z.ZodString>>;
@@ -53,6 +62,7 @@ export declare const DeliveryReceipt: z.ZodObject<{
53
62
  }, "strict", z.ZodTypeAny, {
54
63
  mode: "apply" | "commit" | "branch" | "pr";
55
64
  applied: boolean;
65
+ alreadyApplied: boolean;
56
66
  finalVerify: {
57
67
  reason: string | null;
58
68
  duration_ms: number | null;
@@ -72,6 +82,7 @@ export declare const DeliveryReceipt: z.ZodObject<{
72
82
  prUrl?: string | undefined;
73
83
  treeMutated?: boolean | undefined;
74
84
  refused?: boolean | undefined;
85
+ deliveryStatus?: "applied" | "refused" | "already_applied" | undefined;
75
86
  }, {
76
87
  mode: "apply" | "commit" | "branch" | "pr";
77
88
  applied: boolean;
@@ -94,6 +105,8 @@ export declare const DeliveryReceipt: z.ZodObject<{
94
105
  prUrl?: string | undefined;
95
106
  treeMutated?: boolean | undefined;
96
107
  refused?: boolean | undefined;
108
+ alreadyApplied?: boolean | undefined;
109
+ deliveryStatus?: "applied" | "refused" | "already_applied" | undefined;
97
110
  }>;
98
111
  export type DeliveryReceipt = z.infer<typeof DeliveryReceipt>;
99
112
  //# sourceMappingURL=delivery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,yFAAyF;AACzF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc6C,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,yFAAyF;AACzF,eAAO,MAAM,eAAe;;;;;;;;;IAUxB;;;;qCAIiC;;IAKjC;4EACwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASH,CAAC;AAC1E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
package/dist/delivery.js CHANGED
@@ -11,6 +11,21 @@ export const DeliveryReceipt = z
11
11
  detail: z.string().optional(),
12
12
  treeMutated: z.boolean().optional(),
13
13
  refused: z.boolean().optional(),
14
+ /** #26: TRUE when this delivery was an idempotent already-applied no-op —
15
+ * the tree was already this patch's exact postimage (reverse `git apply
16
+ * --check` clean), so `applied:true` with NO mutation. Distinguishes a
17
+ * fresh apply from a replay so a surface never claims it just changed files
18
+ * it did not. Defaults false. */
19
+ alreadyApplied: z
20
+ .boolean()
21
+ .default(false)
22
+ .describe("True when delivery was an idempotent already-applied no-op (no files changed)."),
23
+ /** #26: coarse typed delivery disposition, so a consumer reads the outcome
24
+ * without parsing `detail` prose. Optional (older receipts omit it). */
25
+ deliveryStatus: z
26
+ .enum(["applied", "already_applied", "refused"])
27
+ .optional()
28
+ .describe("Coarse typed delivery disposition (applied / already_applied / refused)."),
14
29
  finalVerify: FinalVerifyRecord.describe("Fresh verifier evidence for this delivery attempt."),
15
30
  targetPreimageSha: z.string().describe("Target snapshot verified immediately before delivery."),
16
31
  })
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAC7F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;CAChG,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,4DAA4D,CAAC,CAAC"}
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,yFAAyF;AACzF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B;;;;qCAIiC;IACjC,cAAc,EAAE,CAAC;SACd,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,gFAAgF,CAAC;IAC7F;4EACwE;IACxE,cAAc,EAAE,CAAC;SACd,IAAI,CAAC,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;SAC/C,QAAQ,EAAE;SACV,QAAQ,CAAC,0EAA0E,CAAC;IACvF,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAC7F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;CAChG,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,4DAA4D,CAAC,CAAC"}