@cleocode/contracts 2026.4.70 → 2026.4.72

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 (46) hide show
  1. package/dist/__tests__/evidence-record.test.d.ts +14 -0
  2. package/dist/__tests__/evidence-record.test.d.ts.map +1 -0
  3. package/dist/__tests__/evidence-record.test.js +362 -0
  4. package/dist/__tests__/evidence-record.test.js.map +1 -0
  5. package/dist/__tests__/invariants.test.d.ts +19 -0
  6. package/dist/__tests__/invariants.test.d.ts.map +1 -0
  7. package/dist/__tests__/invariants.test.js +351 -0
  8. package/dist/__tests__/invariants.test.js.map +1 -0
  9. package/dist/acceptance-gate-schema.d.ts +81 -4
  10. package/dist/acceptance-gate-schema.d.ts.map +1 -1
  11. package/dist/acceptance-gate-schema.js +60 -1
  12. package/dist/acceptance-gate-schema.js.map +1 -1
  13. package/dist/acceptance-gate.d.ts +99 -2
  14. package/dist/acceptance-gate.d.ts.map +1 -1
  15. package/dist/evidence-record-schema.d.ts +202 -0
  16. package/dist/evidence-record-schema.d.ts.map +1 -0
  17. package/dist/evidence-record-schema.js +130 -0
  18. package/dist/evidence-record-schema.js.map +1 -0
  19. package/dist/evidence-record.d.ts +167 -0
  20. package/dist/evidence-record.d.ts.map +1 -0
  21. package/dist/evidence-record.js +21 -0
  22. package/dist/evidence-record.js.map +1 -0
  23. package/dist/index.d.ts +10 -3
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +5 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/task-evidence.d.ts +251 -0
  28. package/dist/task-evidence.d.ts.map +1 -0
  29. package/dist/task-evidence.js +89 -0
  30. package/dist/task-evidence.js.map +1 -0
  31. package/package.json +8 -2
  32. package/schemas/acceptance-gate.schema.json +9 -0
  33. package/schemas/attachment.schema.json +9 -0
  34. package/schemas/gate-result-details.schema.json +9 -0
  35. package/schemas/gate-result.schema.json +9 -0
  36. package/schemas/manifest-v1.json +176 -0
  37. package/schemas/task-evidence.schema.json +9 -0
  38. package/schemas/task.schema.json +9 -0
  39. package/src/__tests__/evidence-record.test.ts +412 -0
  40. package/src/__tests__/invariants.test.ts +445 -0
  41. package/src/acceptance-gate-schema.ts +65 -1
  42. package/src/acceptance-gate.ts +108 -2
  43. package/src/evidence-record-schema.ts +158 -0
  44. package/src/evidence-record.ts +182 -0
  45. package/src/index.ts +65 -1
  46. package/src/task-evidence.ts +239 -0
@@ -0,0 +1,351 @@
1
+ /**
2
+ * Contract invariant tests for @cleocode/contracts.
3
+ *
4
+ * Asserts structural rules that must hold across ALL contracts:
5
+ *
6
+ * 1. No contract field named `notes`, `details`, or `text` is typed as bare
7
+ * `string` when a structured shape is possible.
8
+ * Whitelisted exceptions are documented with inline rationale.
9
+ *
10
+ * 2. All discriminated unions use `kind` as the discriminant — NOT `type`.
11
+ * Convention: `type` is reserved for FileAssertion variants only (legacy).
12
+ *
13
+ * 3. Zod schemas for each major contract type are exported from the index.
14
+ *
15
+ * @epic T760
16
+ * @task T804
17
+ */
18
+ import { describe, expect, it } from 'vitest';
19
+ import { acceptanceGateResultSchema, acceptanceGateSchema, attachmentSchema, fileAssertionSchema, gateResultDetailsSchema, taskEvidenceSchema, } from '../index.js';
20
+ /** Casts a schema to the opaque discriminated-union def shape. */
21
+ function asDiscriminatedUnion(schema) {
22
+ return schema._def;
23
+ }
24
+ /** Returns the discriminator key for a discriminated-union schema. */
25
+ function zodDiscriminator(schema) {
26
+ return asDiscriminatedUnion(schema).discriminator;
27
+ }
28
+ /** Returns option schemas from a discriminated-union schema. */
29
+ function zodOptions(schema) {
30
+ return asDiscriminatedUnion(schema).options;
31
+ }
32
+ /** Returns the literal value(s) from a literal schema field. */
33
+ function zodLiteralValues(literalField) {
34
+ // Zod v4: _def.values is an array
35
+ if (Array.isArray(literalField._def.values))
36
+ return literalField._def.values;
37
+ // Zod v3 compat: _def.value is a scalar
38
+ if (literalField._def.value !== undefined)
39
+ return [literalField._def.value];
40
+ return [];
41
+ }
42
+ /** Unwraps a ZodOptional and returns its inner discriminated-union def. */
43
+ function unwrapOptionalDiscriminator(schema) {
44
+ const optDef = schema._def;
45
+ return optDef.innerType._def.discriminator;
46
+ }
47
+ // ─── Rule 1: Field name invariants ────────────────────────────────────────────
48
+ /**
49
+ * Whitelisted fields where `string` typing is acceptable.
50
+ *
51
+ * Each entry documents WHY the bare string is appropriate so future
52
+ * reviewers can assess whether to keep or resolve the whitelist entry.
53
+ */
54
+ const WHITELISTED_STRING_FIELDS = {
55
+ // task.ts / TaskCreate — `notes?: string` is a single append note for the
56
+ // create flow, not a queryable structured record. Structured notes live in
57
+ // TaskWorkState.sessionNotes (SessionNote[]).
58
+ 'TaskCreate.notes': 'Single append note for create flow; structured notes live in SessionNote[]',
59
+ // task.ts / Task — `notes?: string[]` is legacy timestamped notes array.
60
+ // Structural upgrade tracked separately.
61
+ 'Task.notes': 'Legacy timestamped notes array; structured upgrade tracked separately',
62
+ // task-record.ts / TaskRecord — `notes?: string[]` mirrors Task.notes for
63
+ // the string-widened wire format used by dispatch/LAFS.
64
+ 'TaskRecord.notes': 'Wire-format mirror of Task.notes; same legacy rationale',
65
+ // task.ts / Release — `notes?: string | null` is a release changelog text.
66
+ // Not a query target; free-form narrative is appropriate here.
67
+ 'Release.notes': 'Release changelog text — free-form narrative, not query target',
68
+ // session.ts — `notes?: string[]` is a session-level log accumulator.
69
+ 'Session.notes': 'Session log accumulator — structured upgrade tracked separately',
70
+ // facade.ts — various `notes?: string` on action params (complete, prepare, etc.)
71
+ // are ephemeral caller-provided notes, not persisted entities.
72
+ 'TasksAPI.notes': 'Ephemeral caller note on action params — not a persisted entity',
73
+ // memory.ts — BridgePattern/BridgeObservation `text: string` is the
74
+ // primary content field; the type IS the structure here.
75
+ 'MemoryBridge.text': 'Primary content field in memory bridge — the text IS the value',
76
+ // SessionNote — `note: string` is the actual note content, not a metadata field.
77
+ // The struct is already structured (has taskId, sessionId, timestamp).
78
+ 'SessionNote.note': 'Content field on an already-structured SessionNote record',
79
+ // data-accessor.ts — `notesJson?: string` is a raw JSON column for
80
+ // database queries where the serialised form is needed.
81
+ 'DataAccessor.notesJson': 'Raw JSON column for DB query interface — deserialization is callers job',
82
+ // evidence-record.ts / ValidateSpecCheckRecord — `details: string` is a
83
+ // human-readable summary of per-REQ-ID results. Structured details for
84
+ // machine parsing live in other fields (reqIdsChecked, passed).
85
+ 'ValidateSpecCheckRecord.details': 'Human-readable per-REQ-ID summary; machine fields are reqIdsChecked+passed',
86
+ };
87
+ describe('Rule 1 — no bare string on notes/details/text fields (with whitelist)', () => {
88
+ it('GateResultDetails does not use bare string for kind-specific payloads', () => {
89
+ // GateResultDetails must be a discriminated union — verify via schema shape
90
+ expect(zodDiscriminator(gateResultDetailsSchema)).toBe('kind');
91
+ });
92
+ it('AcceptanceGateResult.details is typed via GateResultDetails (not bare string)', () => {
93
+ const resultShape = acceptanceGateResultSchema.shape;
94
+ // details must exist as an optional discriminated union (not a plain string)
95
+ expect(resultShape.details).toBeDefined();
96
+ // Unwrap the ZodOptional and confirm the inner type is a discriminated union
97
+ expect(unwrapOptionalDiscriminator(resultShape.details)).toBe('kind');
98
+ });
99
+ it('TaskEvidence does not use bare string as the primary evidence shape', () => {
100
+ // taskEvidenceSchema must be a discriminated union, not a plain string type
101
+ expect(zodDiscriminator(taskEvidenceSchema)).toBe('kind');
102
+ });
103
+ it('documents all whitelisted string fields', () => {
104
+ // This test serves as a registry assertion: the whitelist must be non-empty
105
+ // and each key must follow the format 'TypeName.fieldName'
106
+ const entries = Object.entries(WHITELISTED_STRING_FIELDS);
107
+ expect(entries.length).toBeGreaterThan(0);
108
+ for (const [key, reason] of entries) {
109
+ expect(key).toMatch(/^\w[\w.]+\.\w+$/);
110
+ expect(reason.length).toBeGreaterThan(10);
111
+ }
112
+ });
113
+ });
114
+ // ─── Rule 2: Discriminated unions use `kind`, not `type` ──────────────────────
115
+ describe('Rule 2 — discriminated unions use `kind` discriminant (not `type`)', () => {
116
+ it('acceptanceGateSchema uses kind discriminant', () => {
117
+ expect(zodDiscriminator(acceptanceGateSchema)).toBe('kind');
118
+ });
119
+ it('gateResultDetailsSchema uses kind discriminant', () => {
120
+ expect(zodDiscriminator(gateResultDetailsSchema)).toBe('kind');
121
+ });
122
+ it('taskEvidenceSchema uses kind discriminant', () => {
123
+ expect(zodDiscriminator(taskEvidenceSchema)).toBe('kind');
124
+ });
125
+ it('attachmentSchema uses kind discriminant', () => {
126
+ expect(zodDiscriminator(attachmentSchema)).toBe('kind');
127
+ });
128
+ it('FileAssertion uses type discriminant (documented exception — legacy)', () => {
129
+ // FileAssertion predates the `kind` convention and uses `type`.
130
+ // This test documents the exception, not enforces it.
131
+ // Resolution tracked under a future cleanup task.
132
+ expect(zodDiscriminator(fileAssertionSchema)).toBe('type');
133
+ });
134
+ });
135
+ // ─── Rule 3: Major Zod schemas are exported from index ────────────────────────
136
+ describe('Rule 3 — major Zod schemas are exported from index', () => {
137
+ it('exports acceptanceGateSchema', () => {
138
+ expect(typeof acceptanceGateSchema.parse).toBe('function');
139
+ });
140
+ it('exports acceptanceGateResultSchema', () => {
141
+ expect(typeof acceptanceGateResultSchema.parse).toBe('function');
142
+ });
143
+ it('exports gateResultDetailsSchema', () => {
144
+ expect(typeof gateResultDetailsSchema.parse).toBe('function');
145
+ });
146
+ it('exports taskEvidenceSchema', () => {
147
+ expect(typeof taskEvidenceSchema.parse).toBe('function');
148
+ });
149
+ it('exports attachmentSchema', () => {
150
+ expect(typeof attachmentSchema.parse).toBe('function');
151
+ });
152
+ it('acceptanceGateSchema is a discriminated union with 6 variants', () => {
153
+ const opts = zodOptions(acceptanceGateSchema);
154
+ expect(opts.length).toBe(6);
155
+ const kinds = opts.flatMap((opt) => zodLiteralValues(opt.shape.kind));
156
+ expect(kinds).toContain('test');
157
+ expect(kinds).toContain('file');
158
+ expect(kinds).toContain('command');
159
+ expect(kinds).toContain('lint');
160
+ expect(kinds).toContain('http');
161
+ expect(kinds).toContain('manual');
162
+ });
163
+ it('gateResultDetailsSchema is a discriminated union with 6 variants', () => {
164
+ const opts = zodOptions(gateResultDetailsSchema);
165
+ expect(opts.length).toBe(6);
166
+ const kinds = opts.flatMap((opt) => zodLiteralValues(opt.shape.kind));
167
+ expect(kinds).toContain('test');
168
+ expect(kinds).toContain('file');
169
+ expect(kinds).toContain('command');
170
+ expect(kinds).toContain('lint');
171
+ expect(kinds).toContain('http');
172
+ expect(kinds).toContain('manual');
173
+ });
174
+ it('taskEvidenceSchema is a discriminated union with 5 variants', () => {
175
+ const opts = zodOptions(taskEvidenceSchema);
176
+ expect(opts.length).toBe(5);
177
+ const kinds = opts.flatMap((opt) => zodLiteralValues(opt.shape.kind));
178
+ expect(kinds).toContain('file');
179
+ expect(kinds).toContain('log');
180
+ expect(kinds).toContain('screenshot');
181
+ expect(kinds).toContain('test-output');
182
+ expect(kinds).toContain('command-output');
183
+ });
184
+ });
185
+ // ─── Structural round-trip sanity checks ──────────────────────────────────────
186
+ describe('GateResultDetails — round-trip parse for all 6 kinds', () => {
187
+ it('parses test details', () => {
188
+ const result = gateResultDetailsSchema.parse({
189
+ kind: 'test',
190
+ exitCode: 0,
191
+ stdout: 'ok 7/7',
192
+ stderr: '',
193
+ duration: 3142,
194
+ });
195
+ expect(result.kind).toBe('test');
196
+ if (result.kind === 'test') {
197
+ expect(result.exitCode).toBe(0);
198
+ expect(result.duration).toBe(3142);
199
+ }
200
+ });
201
+ it('parses file details', () => {
202
+ const result = gateResultDetailsSchema.parse({
203
+ kind: 'file',
204
+ path: 'src/timer.ts',
205
+ passedAssertions: ['exists', 'nonEmpty'],
206
+ failedAssertions: [],
207
+ });
208
+ expect(result.kind).toBe('file');
209
+ if (result.kind === 'file') {
210
+ expect(result.passedAssertions).toHaveLength(2);
211
+ expect(result.failedAssertions).toHaveLength(0);
212
+ }
213
+ });
214
+ it('parses command details', () => {
215
+ const result = gateResultDetailsSchema.parse({
216
+ kind: 'command',
217
+ cmd: 'cleo doctor',
218
+ exitCode: 0,
219
+ stdout: 'all checks passed',
220
+ });
221
+ expect(result.kind).toBe('command');
222
+ if (result.kind === 'command') {
223
+ expect(result.exitCode).toBe(0);
224
+ }
225
+ });
226
+ it('parses lint details', () => {
227
+ const result = gateResultDetailsSchema.parse({
228
+ kind: 'lint',
229
+ tool: 'biome',
230
+ warnings: 0,
231
+ errors: 0,
232
+ });
233
+ expect(result.kind).toBe('lint');
234
+ if (result.kind === 'lint') {
235
+ expect(result.errors).toBe(0);
236
+ }
237
+ });
238
+ it('parses http details', () => {
239
+ const result = gateResultDetailsSchema.parse({
240
+ kind: 'http',
241
+ url: 'http://localhost:8080/',
242
+ status: 200,
243
+ body: '<!DOCTYPE html>',
244
+ });
245
+ expect(result.kind).toBe('http');
246
+ if (result.kind === 'http') {
247
+ expect(result.status).toBe(200);
248
+ }
249
+ });
250
+ it('parses manual details', () => {
251
+ const result = gateResultDetailsSchema.parse({
252
+ kind: 'manual',
253
+ prompt: 'Does the dark theme toggle work?',
254
+ accepted: true,
255
+ });
256
+ expect(result.kind).toBe('manual');
257
+ if (result.kind === 'manual') {
258
+ expect(result.accepted).toBe(true);
259
+ }
260
+ });
261
+ it('rejects unknown kind', () => {
262
+ expect(() => gateResultDetailsSchema.parse({
263
+ kind: 'unknown',
264
+ exitCode: 0,
265
+ })).toThrow();
266
+ });
267
+ });
268
+ describe('TaskEvidence — round-trip parse for all 5 kinds', () => {
269
+ const sha256 = 'a'.repeat(64);
270
+ const timestamp = '2026-04-15T10:00:00.000Z';
271
+ it('parses file evidence', () => {
272
+ const result = taskEvidenceSchema.parse({
273
+ kind: 'file',
274
+ sha256,
275
+ timestamp,
276
+ path: 'packages/contracts/dist/index.js',
277
+ mime: 'text/javascript',
278
+ });
279
+ expect(result.kind).toBe('file');
280
+ if (result.kind === 'file') {
281
+ expect(result.path).toBe('packages/contracts/dist/index.js');
282
+ }
283
+ });
284
+ it('parses log evidence', () => {
285
+ const result = taskEvidenceSchema.parse({
286
+ kind: 'log',
287
+ sha256,
288
+ timestamp,
289
+ source: 'pnpm test',
290
+ });
291
+ expect(result.kind).toBe('log');
292
+ if (result.kind === 'log') {
293
+ expect(result.source).toBe('pnpm test');
294
+ }
295
+ });
296
+ it('parses screenshot evidence', () => {
297
+ const result = taskEvidenceSchema.parse({
298
+ kind: 'screenshot',
299
+ sha256,
300
+ timestamp,
301
+ mime: 'image/png',
302
+ });
303
+ expect(result.kind).toBe('screenshot');
304
+ });
305
+ it('parses test-output evidence', () => {
306
+ const result = taskEvidenceSchema.parse({
307
+ kind: 'test-output',
308
+ sha256,
309
+ timestamp,
310
+ passed: 42,
311
+ failed: 0,
312
+ skipped: 2,
313
+ exitCode: 0,
314
+ });
315
+ expect(result.kind).toBe('test-output');
316
+ if (result.kind === 'test-output') {
317
+ expect(result.passed).toBe(42);
318
+ expect(result.failed).toBe(0);
319
+ }
320
+ });
321
+ it('parses command-output evidence', () => {
322
+ const result = taskEvidenceSchema.parse({
323
+ kind: 'command-output',
324
+ sha256,
325
+ timestamp,
326
+ cmd: 'pnpm run build',
327
+ exitCode: 0,
328
+ });
329
+ expect(result.kind).toBe('command-output');
330
+ if (result.kind === 'command-output') {
331
+ expect(result.exitCode).toBe(0);
332
+ }
333
+ });
334
+ it('rejects sha256 with wrong length', () => {
335
+ expect(() => taskEvidenceSchema.parse({
336
+ kind: 'file',
337
+ sha256: 'tooshort',
338
+ timestamp,
339
+ path: 'src/foo.ts',
340
+ })).toThrow();
341
+ });
342
+ it('rejects invalid timestamp', () => {
343
+ expect(() => taskEvidenceSchema.parse({
344
+ kind: 'log',
345
+ sha256,
346
+ timestamp: 'not-a-date',
347
+ source: 'pnpm test',
348
+ })).toThrow();
349
+ });
350
+ });
351
+ //# sourceMappingURL=invariants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariants.test.js","sourceRoot":"","sources":["../../src/__tests__/invariants.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAgCrB,kEAAkE;AAClE,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAQ,MAA6C,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,sEAAsE;AACtE,SAAS,gBAAgB,CAAC,MAAe;IACvC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;AACpD,CAAC;AAED,gEAAgE;AAChE,SAAS,UAAU,CAAC,MAAe;IACjC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED,gEAAgE;AAChE,SAAS,gBAAgB,CAAC,YAA2B;IACnD,kCAAkC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7E,wCAAwC;IACxC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,2EAA2E;AAC3E,SAAS,2BAA2B,CAAC,MAAe;IAClD,MAAM,MAAM,GAAI,MAAmC,CAAC,IAAI,CAAC;IACzD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,yBAAyB,GAA2B;IACxD,0EAA0E;IAC1E,2EAA2E;IAC3E,8CAA8C;IAC9C,kBAAkB,EAAE,4EAA4E;IAEhG,yEAAyE;IACzE,yCAAyC;IACzC,YAAY,EAAE,uEAAuE;IAErF,0EAA0E;IAC1E,wDAAwD;IACxD,kBAAkB,EAAE,yDAAyD;IAE7E,2EAA2E;IAC3E,+DAA+D;IAC/D,eAAe,EAAE,gEAAgE;IAEjF,sEAAsE;IACtE,eAAe,EAAE,iEAAiE;IAElF,kFAAkF;IAClF,+DAA+D;IAC/D,gBAAgB,EAAE,iEAAiE;IAEnF,oEAAoE;IACpE,yDAAyD;IACzD,mBAAmB,EAAE,gEAAgE;IAErF,iFAAiF;IACjF,uEAAuE;IACvE,kBAAkB,EAAE,2DAA2D;IAE/E,mEAAmE;IACnE,wDAAwD;IACxD,wBAAwB,EACtB,yEAAyE;IAE3E,wEAAwE;IACxE,uEAAuE;IACvE,gEAAgE;IAChE,iCAAiC,EAC/B,4EAA4E;CAC/E,CAAC;AAEF,QAAQ,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACrF,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,4EAA4E;QAC5E,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,WAAW,GAAG,0BAA0B,CAAC,KAAK,CAAC;QACrD,6EAA6E;QAC7E,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,6EAA6E;QAC7E,MAAM,CAAC,2BAA2B,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,4EAA4E;QAC5E,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,4EAA4E;QAC5E,2DAA2D;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAClF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,gEAAgE;QAChE,sDAAsD;QACtD,kDAAkD;QAClD,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,IAAI,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;YACxC,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,aAAa;YAClB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,wBAAwB;YAC7B,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,kCAAkC;YAC1C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,EAAE,CACV,uBAAuB,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,0BAA0B,CAAC;IAE7C,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,MAAM;YACZ,MAAM;YACN,SAAS;YACT,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,KAAK;YACX,MAAM;YACN,SAAS;YACT,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,SAAS;YACT,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,SAAS;YACT,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE,gBAAgB;YACtB,MAAM;YACN,SAAS;YACT,GAAG,EAAE,gBAAgB;YACrB,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CACV,kBAAkB,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,IAAI,EAAE,YAAY;SACnB,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,EAAE,CACV,kBAAkB,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,KAAK;YACX,MAAM;YACN,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,WAAW;SACpB,CAAC,CACH,CAAC,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -84,7 +84,8 @@ export declare const fileGateSchema: z.ZodObject<{
84
84
  advisory: z.ZodOptional<z.ZodBoolean>;
85
85
  timeoutMs: z.ZodOptional<z.ZodNumber>;
86
86
  kind: z.ZodLiteral<"file">;
87
- path: z.ZodString;
87
+ path: z.ZodOptional<z.ZodString>;
88
+ attachmentSha256: z.ZodOptional<z.ZodString>;
88
89
  assertions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
89
90
  type: z.ZodLiteral<"exists">;
90
91
  }, z.core.$strip>, z.ZodObject<{
@@ -219,7 +220,8 @@ export declare const acceptanceGateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
219
220
  advisory: z.ZodOptional<z.ZodBoolean>;
220
221
  timeoutMs: z.ZodOptional<z.ZodNumber>;
221
222
  kind: z.ZodLiteral<"file">;
222
- path: z.ZodString;
223
+ path: z.ZodOptional<z.ZodString>;
224
+ attachmentSha256: z.ZodOptional<z.ZodString>;
223
225
  assertions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
224
226
  type: z.ZodLiteral<"exists">;
225
227
  }, z.core.$strip>, z.ZodObject<{
@@ -310,6 +312,48 @@ export declare const acceptanceGateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
310
312
  }, z.core.$strip>], "kind">;
311
313
  /** Inferred TypeScript type from {@link acceptanceGateSchema}. */
312
314
  export type AcceptanceGateSchemaInput = z.input<typeof acceptanceGateSchema>;
315
+ /**
316
+ * Zod discriminated-union schema for {@link GateResultDetails}.
317
+ *
318
+ * Each variant mirrors the corresponding {@link AcceptanceGate} kind so
319
+ * callers can narrow `details` using the `kind` discriminant.
320
+ *
321
+ * @epic T760
322
+ * @task T802
323
+ */
324
+ export declare const gateResultDetailsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
325
+ kind: z.ZodLiteral<"test">;
326
+ exitCode: z.ZodNumber;
327
+ stdout: z.ZodString;
328
+ stderr: z.ZodString;
329
+ duration: z.ZodNumber;
330
+ }, z.core.$strip>, z.ZodObject<{
331
+ kind: z.ZodLiteral<"file">;
332
+ path: z.ZodString;
333
+ passedAssertions: z.ZodArray<z.ZodString>;
334
+ failedAssertions: z.ZodArray<z.ZodString>;
335
+ }, z.core.$strip>, z.ZodObject<{
336
+ kind: z.ZodLiteral<"command">;
337
+ cmd: z.ZodString;
338
+ exitCode: z.ZodNumber;
339
+ stdout: z.ZodString;
340
+ }, z.core.$strip>, z.ZodObject<{
341
+ kind: z.ZodLiteral<"lint">;
342
+ tool: z.ZodString;
343
+ warnings: z.ZodNumber;
344
+ errors: z.ZodNumber;
345
+ }, z.core.$strip>, z.ZodObject<{
346
+ kind: z.ZodLiteral<"http">;
347
+ url: z.ZodString;
348
+ status: z.ZodNumber;
349
+ body: z.ZodString;
350
+ }, z.core.$strip>, z.ZodObject<{
351
+ kind: z.ZodLiteral<"manual">;
352
+ prompt: z.ZodString;
353
+ accepted: z.ZodBoolean;
354
+ }, z.core.$strip>], "kind">;
355
+ /** Inferred TypeScript type from {@link gateResultDetailsSchema}. */
356
+ export type GateResultDetailsInput = z.input<typeof gateResultDetailsSchema>;
313
357
  /**
314
358
  * Zod schema for {@link AcceptanceGateResult}.
315
359
  *
@@ -335,6 +379,37 @@ export declare const acceptanceGateResultSchema: z.ZodObject<{
335
379
  skipped: "skipped";
336
380
  }>;
337
381
  durationMs: z.ZodNumber;
382
+ details: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
383
+ kind: z.ZodLiteral<"test">;
384
+ exitCode: z.ZodNumber;
385
+ stdout: z.ZodString;
386
+ stderr: z.ZodString;
387
+ duration: z.ZodNumber;
388
+ }, z.core.$strip>, z.ZodObject<{
389
+ kind: z.ZodLiteral<"file">;
390
+ path: z.ZodString;
391
+ passedAssertions: z.ZodArray<z.ZodString>;
392
+ failedAssertions: z.ZodArray<z.ZodString>;
393
+ }, z.core.$strip>, z.ZodObject<{
394
+ kind: z.ZodLiteral<"command">;
395
+ cmd: z.ZodString;
396
+ exitCode: z.ZodNumber;
397
+ stdout: z.ZodString;
398
+ }, z.core.$strip>, z.ZodObject<{
399
+ kind: z.ZodLiteral<"lint">;
400
+ tool: z.ZodString;
401
+ warnings: z.ZodNumber;
402
+ errors: z.ZodNumber;
403
+ }, z.core.$strip>, z.ZodObject<{
404
+ kind: z.ZodLiteral<"http">;
405
+ url: z.ZodString;
406
+ status: z.ZodNumber;
407
+ body: z.ZodString;
408
+ }, z.core.$strip>, z.ZodObject<{
409
+ kind: z.ZodLiteral<"manual">;
410
+ prompt: z.ZodString;
411
+ accepted: z.ZodBoolean;
412
+ }, z.core.$strip>], "kind">>;
338
413
  evidence: z.ZodOptional<z.ZodString>;
339
414
  errorMessage: z.ZodOptional<z.ZodString>;
340
415
  checkedAt: z.ZodString;
@@ -387,7 +462,8 @@ export declare const acceptanceItemSchema: z.ZodUnion<readonly [z.ZodString, z.Z
387
462
  advisory: z.ZodOptional<z.ZodBoolean>;
388
463
  timeoutMs: z.ZodOptional<z.ZodNumber>;
389
464
  kind: z.ZodLiteral<"file">;
390
- path: z.ZodString;
465
+ path: z.ZodOptional<z.ZodString>;
466
+ attachmentSha256: z.ZodOptional<z.ZodString>;
391
467
  assertions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
392
468
  type: z.ZodLiteral<"exists">;
393
469
  }, z.core.$strip>, z.ZodObject<{
@@ -530,7 +606,8 @@ export declare const acceptanceArraySchema: z.ZodArray<z.ZodUnion<readonly [z.Zo
530
606
  advisory: z.ZodOptional<z.ZodBoolean>;
531
607
  timeoutMs: z.ZodOptional<z.ZodNumber>;
532
608
  kind: z.ZodLiteral<"file">;
533
- path: z.ZodString;
609
+ path: z.ZodOptional<z.ZodString>;
610
+ attachmentSha256: z.ZodOptional<z.ZodString>;
534
611
  assertions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
535
612
  type: z.ZodLiteral<"exists">;
536
613
  }, z.core.$strip>, z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"acceptance-gate-schema.d.ts","sourceRoot":"","sources":["../src/acceptance-gate-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;iBASzB,CAAC;AAIH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;2BAe9B,CAAC;AAEH,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIrE;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;iBAQzB,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;iBAS5B,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAI3B,CAAC;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAO/B,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAI7E;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;iBAWrC,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAInF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAU/B,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwB/B,CAAC;AAEJ,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"acceptance-gate-schema.d.ts","sourceRoot":"","sources":["../src/acceptance-gate-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;iBASzB,CAAC;AAIH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;2BAe9B,CAAC;AAEH,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIrE;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;iBAQzB,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAazB,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;iBAS5B,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAI3B,CAAC;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAO/B,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAI7E;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqClC,CAAC;AAEH,qEAAqE;AACrE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAI7E;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAarC,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAInF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAU/B,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwB/B,CAAC;AAEJ,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -71,7 +71,16 @@ export const testGateSchema = gateBaseSchema.extend({
71
71
  /** Zod schema for {@link FileGate}. */
72
72
  export const fileGateSchema = gateBaseSchema.extend({
73
73
  kind: z.literal('file'),
74
- path: z.string().min(1),
74
+ /** Absolute or project-root-relative file path. Mutually exclusive with `attachmentSha256`. */
75
+ path: z.string().min(1).optional(),
76
+ /**
77
+ * SHA-256 hex of an attachment blob. Gate runner resolves the on-disk path
78
+ * via AttachmentStore. Mutually exclusive with `path`.
79
+ */
80
+ attachmentSha256: z
81
+ .string()
82
+ .regex(/^[0-9a-f]{64}$/i, 'attachmentSha256 must be a 64-char hex string')
83
+ .optional(),
75
84
  assertions: z.array(fileAssertionSchema).min(1),
76
85
  });
77
86
  /** Zod schema for {@link CommandGate}. */
@@ -136,6 +145,54 @@ export const acceptanceGateSchema = z.discriminatedUnion('kind', [
136
145
  httpGateSchema,
137
146
  manualGateSchema,
138
147
  ]);
148
+ // ─── GateResultDetails schema (T802) ─────────────────────────────────────────
149
+ /**
150
+ * Zod discriminated-union schema for {@link GateResultDetails}.
151
+ *
152
+ * Each variant mirrors the corresponding {@link AcceptanceGate} kind so
153
+ * callers can narrow `details` using the `kind` discriminant.
154
+ *
155
+ * @epic T760
156
+ * @task T802
157
+ */
158
+ export const gateResultDetailsSchema = z.discriminatedUnion('kind', [
159
+ z.object({
160
+ kind: z.literal('test'),
161
+ exitCode: z.number().int(),
162
+ stdout: z.string(),
163
+ stderr: z.string(),
164
+ duration: z.number().nonnegative(),
165
+ }),
166
+ z.object({
167
+ kind: z.literal('file'),
168
+ path: z.string().min(1),
169
+ passedAssertions: z.array(z.string()),
170
+ failedAssertions: z.array(z.string()),
171
+ }),
172
+ z.object({
173
+ kind: z.literal('command'),
174
+ cmd: z.string().min(1),
175
+ exitCode: z.number().int(),
176
+ stdout: z.string(),
177
+ }),
178
+ z.object({
179
+ kind: z.literal('lint'),
180
+ tool: z.string().min(1),
181
+ warnings: z.number().int().nonnegative(),
182
+ errors: z.number().int().nonnegative(),
183
+ }),
184
+ z.object({
185
+ kind: z.literal('http'),
186
+ url: z.string(),
187
+ status: z.number().int().min(100).max(599),
188
+ body: z.string(),
189
+ }),
190
+ z.object({
191
+ kind: z.literal('manual'),
192
+ prompt: z.string().min(1),
193
+ accepted: z.boolean(),
194
+ }),
195
+ ]);
139
196
  // ─── Result schema ────────────────────────────────────────────────────────────
140
197
  /**
141
198
  * Zod schema for {@link AcceptanceGateResult}.
@@ -149,6 +206,8 @@ export const acceptanceGateResultSchema = z.object({
149
206
  kind: z.enum(['test', 'file', 'command', 'lint', 'http', 'manual']),
150
207
  result: z.enum(['pass', 'fail', 'warn', 'skipped', 'error']),
151
208
  durationMs: z.number().nonnegative(),
209
+ /** Typed kind-specific detail payload (T802). */
210
+ details: gateResultDetailsSchema.optional(),
152
211
  evidence: z.string().optional(),
153
212
  errorMessage: z.string().optional(),
154
213
  /** ISO 8601 timestamp. */
@@ -1 +1 @@
1
- {"version":3,"file":"acceptance-gate-schema.js","sourceRoot":"","sources":["../src/acceptance-gate-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acceptance-gate-schema.js","sourceRoot":"","sources":["../src/acceptance-gate-schema.ts"],"names":[],"mappings":"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"}