@agent-receipts/schema 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +272 -1
- package/dist/index.d.ts +272 -1
- package/dist/index.js +137 -68
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +129 -68
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -151,6 +151,277 @@ declare const ActionReceipt: z.ZodObject<{
|
|
|
151
151
|
}>;
|
|
152
152
|
type ActionReceipt = z.infer<typeof ActionReceipt>;
|
|
153
153
|
|
|
154
|
+
/**
|
|
155
|
+
* A single constraint definition that specifies a rule to evaluate.
|
|
156
|
+
*/
|
|
157
|
+
declare const ConstraintDefinition: z.ZodObject<{
|
|
158
|
+
type: z.ZodString;
|
|
159
|
+
value: z.ZodUnknown;
|
|
160
|
+
message: z.ZodOptional<z.ZodString>;
|
|
161
|
+
}, "strip", z.ZodTypeAny, {
|
|
162
|
+
type: string;
|
|
163
|
+
value?: unknown;
|
|
164
|
+
message?: string | undefined;
|
|
165
|
+
}, {
|
|
166
|
+
type: string;
|
|
167
|
+
value?: unknown;
|
|
168
|
+
message?: string | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
type ConstraintDefinition = z.infer<typeof ConstraintDefinition>;
|
|
171
|
+
/**
|
|
172
|
+
* Result of evaluating a single constraint.
|
|
173
|
+
*/
|
|
174
|
+
declare const SingleConstraintResult: z.ZodObject<{
|
|
175
|
+
type: z.ZodString;
|
|
176
|
+
passed: z.ZodBoolean;
|
|
177
|
+
expected: z.ZodUnknown;
|
|
178
|
+
actual: z.ZodUnknown;
|
|
179
|
+
message: z.ZodOptional<z.ZodString>;
|
|
180
|
+
}, "strip", z.ZodTypeAny, {
|
|
181
|
+
type: string;
|
|
182
|
+
passed: boolean;
|
|
183
|
+
message?: string | undefined;
|
|
184
|
+
expected?: unknown;
|
|
185
|
+
actual?: unknown;
|
|
186
|
+
}, {
|
|
187
|
+
type: string;
|
|
188
|
+
passed: boolean;
|
|
189
|
+
message?: string | undefined;
|
|
190
|
+
expected?: unknown;
|
|
191
|
+
actual?: unknown;
|
|
192
|
+
}>;
|
|
193
|
+
type SingleConstraintResult = z.infer<typeof SingleConstraintResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Aggregate result of evaluating all constraints on a receipt.
|
|
196
|
+
*/
|
|
197
|
+
declare const ConstraintResult: z.ZodObject<{
|
|
198
|
+
passed: z.ZodBoolean;
|
|
199
|
+
results: z.ZodArray<z.ZodObject<{
|
|
200
|
+
type: z.ZodString;
|
|
201
|
+
passed: z.ZodBoolean;
|
|
202
|
+
expected: z.ZodUnknown;
|
|
203
|
+
actual: z.ZodUnknown;
|
|
204
|
+
message: z.ZodOptional<z.ZodString>;
|
|
205
|
+
}, "strip", z.ZodTypeAny, {
|
|
206
|
+
type: string;
|
|
207
|
+
passed: boolean;
|
|
208
|
+
message?: string | undefined;
|
|
209
|
+
expected?: unknown;
|
|
210
|
+
actual?: unknown;
|
|
211
|
+
}, {
|
|
212
|
+
type: string;
|
|
213
|
+
passed: boolean;
|
|
214
|
+
message?: string | undefined;
|
|
215
|
+
expected?: unknown;
|
|
216
|
+
actual?: unknown;
|
|
217
|
+
}>, "many">;
|
|
218
|
+
evaluated_at: z.ZodString;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
passed: boolean;
|
|
221
|
+
results: {
|
|
222
|
+
type: string;
|
|
223
|
+
passed: boolean;
|
|
224
|
+
message?: string | undefined;
|
|
225
|
+
expected?: unknown;
|
|
226
|
+
actual?: unknown;
|
|
227
|
+
}[];
|
|
228
|
+
evaluated_at: string;
|
|
229
|
+
}, {
|
|
230
|
+
passed: boolean;
|
|
231
|
+
results: {
|
|
232
|
+
type: string;
|
|
233
|
+
passed: boolean;
|
|
234
|
+
message?: string | undefined;
|
|
235
|
+
expected?: unknown;
|
|
236
|
+
actual?: unknown;
|
|
237
|
+
}[];
|
|
238
|
+
evaluated_at: string;
|
|
239
|
+
}>;
|
|
240
|
+
type ConstraintResult = z.infer<typeof ConstraintResult>;
|
|
241
|
+
/**
|
|
242
|
+
* Array of constraint definitions.
|
|
243
|
+
*/
|
|
244
|
+
declare const ConstraintDefinitions: z.ZodArray<z.ZodObject<{
|
|
245
|
+
type: z.ZodString;
|
|
246
|
+
value: z.ZodUnknown;
|
|
247
|
+
message: z.ZodOptional<z.ZodString>;
|
|
248
|
+
}, "strip", z.ZodTypeAny, {
|
|
249
|
+
type: string;
|
|
250
|
+
value?: unknown;
|
|
251
|
+
message?: string | undefined;
|
|
252
|
+
}, {
|
|
253
|
+
type: string;
|
|
254
|
+
value?: unknown;
|
|
255
|
+
message?: string | undefined;
|
|
256
|
+
}>, "many">;
|
|
257
|
+
type ConstraintDefinitions = z.infer<typeof ConstraintDefinitions>;
|
|
258
|
+
|
|
259
|
+
declare const RubricCriterion: z.ZodObject<{
|
|
260
|
+
name: z.ZodString;
|
|
261
|
+
description: z.ZodString;
|
|
262
|
+
weight: z.ZodNumber;
|
|
263
|
+
passing_threshold: z.ZodOptional<z.ZodNumber>;
|
|
264
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
265
|
+
good: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
266
|
+
bad: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
267
|
+
}, "strip", z.ZodTypeAny, {
|
|
268
|
+
good?: string[] | undefined;
|
|
269
|
+
bad?: string[] | undefined;
|
|
270
|
+
}, {
|
|
271
|
+
good?: string[] | undefined;
|
|
272
|
+
bad?: string[] | undefined;
|
|
273
|
+
}>>;
|
|
274
|
+
}, "strip", z.ZodTypeAny, {
|
|
275
|
+
name: string;
|
|
276
|
+
description: string;
|
|
277
|
+
weight: number;
|
|
278
|
+
passing_threshold?: number | undefined;
|
|
279
|
+
examples?: {
|
|
280
|
+
good?: string[] | undefined;
|
|
281
|
+
bad?: string[] | undefined;
|
|
282
|
+
} | undefined;
|
|
283
|
+
}, {
|
|
284
|
+
name: string;
|
|
285
|
+
description: string;
|
|
286
|
+
weight: number;
|
|
287
|
+
passing_threshold?: number | undefined;
|
|
288
|
+
examples?: {
|
|
289
|
+
good?: string[] | undefined;
|
|
290
|
+
bad?: string[] | undefined;
|
|
291
|
+
} | undefined;
|
|
292
|
+
}>;
|
|
293
|
+
type RubricCriterion = z.infer<typeof RubricCriterion>;
|
|
294
|
+
declare const Rubric: z.ZodObject<{
|
|
295
|
+
version: z.ZodDefault<z.ZodString>;
|
|
296
|
+
criteria: z.ZodArray<z.ZodObject<{
|
|
297
|
+
name: z.ZodString;
|
|
298
|
+
description: z.ZodString;
|
|
299
|
+
weight: z.ZodNumber;
|
|
300
|
+
passing_threshold: z.ZodOptional<z.ZodNumber>;
|
|
301
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
302
|
+
good: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
303
|
+
bad: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
304
|
+
}, "strip", z.ZodTypeAny, {
|
|
305
|
+
good?: string[] | undefined;
|
|
306
|
+
bad?: string[] | undefined;
|
|
307
|
+
}, {
|
|
308
|
+
good?: string[] | undefined;
|
|
309
|
+
bad?: string[] | undefined;
|
|
310
|
+
}>>;
|
|
311
|
+
}, "strip", z.ZodTypeAny, {
|
|
312
|
+
name: string;
|
|
313
|
+
description: string;
|
|
314
|
+
weight: number;
|
|
315
|
+
passing_threshold?: number | undefined;
|
|
316
|
+
examples?: {
|
|
317
|
+
good?: string[] | undefined;
|
|
318
|
+
bad?: string[] | undefined;
|
|
319
|
+
} | undefined;
|
|
320
|
+
}, {
|
|
321
|
+
name: string;
|
|
322
|
+
description: string;
|
|
323
|
+
weight: number;
|
|
324
|
+
passing_threshold?: number | undefined;
|
|
325
|
+
examples?: {
|
|
326
|
+
good?: string[] | undefined;
|
|
327
|
+
bad?: string[] | undefined;
|
|
328
|
+
} | undefined;
|
|
329
|
+
}>, "many">;
|
|
330
|
+
passing_threshold: z.ZodDefault<z.ZodNumber>;
|
|
331
|
+
require_all: z.ZodDefault<z.ZodBoolean>;
|
|
332
|
+
}, "strip", z.ZodTypeAny, {
|
|
333
|
+
passing_threshold: number;
|
|
334
|
+
version: string;
|
|
335
|
+
criteria: {
|
|
336
|
+
name: string;
|
|
337
|
+
description: string;
|
|
338
|
+
weight: number;
|
|
339
|
+
passing_threshold?: number | undefined;
|
|
340
|
+
examples?: {
|
|
341
|
+
good?: string[] | undefined;
|
|
342
|
+
bad?: string[] | undefined;
|
|
343
|
+
} | undefined;
|
|
344
|
+
}[];
|
|
345
|
+
require_all: boolean;
|
|
346
|
+
}, {
|
|
347
|
+
criteria: {
|
|
348
|
+
name: string;
|
|
349
|
+
description: string;
|
|
350
|
+
weight: number;
|
|
351
|
+
passing_threshold?: number | undefined;
|
|
352
|
+
examples?: {
|
|
353
|
+
good?: string[] | undefined;
|
|
354
|
+
bad?: string[] | undefined;
|
|
355
|
+
} | undefined;
|
|
356
|
+
}[];
|
|
357
|
+
passing_threshold?: number | undefined;
|
|
358
|
+
version?: string | undefined;
|
|
359
|
+
require_all?: boolean | undefined;
|
|
360
|
+
}>;
|
|
361
|
+
type Rubric = z.infer<typeof Rubric>;
|
|
362
|
+
declare const CriterionResult: z.ZodObject<{
|
|
363
|
+
criterion: z.ZodString;
|
|
364
|
+
score: z.ZodNumber;
|
|
365
|
+
passed: z.ZodBoolean;
|
|
366
|
+
reasoning: z.ZodString;
|
|
367
|
+
}, "strip", z.ZodTypeAny, {
|
|
368
|
+
passed: boolean;
|
|
369
|
+
criterion: string;
|
|
370
|
+
score: number;
|
|
371
|
+
reasoning: string;
|
|
372
|
+
}, {
|
|
373
|
+
passed: boolean;
|
|
374
|
+
criterion: string;
|
|
375
|
+
score: number;
|
|
376
|
+
reasoning: string;
|
|
377
|
+
}>;
|
|
378
|
+
type CriterionResult = z.infer<typeof CriterionResult>;
|
|
379
|
+
declare const JudgmentResult: z.ZodObject<{
|
|
380
|
+
verdict: z.ZodEnum<["pass", "fail", "partial"]>;
|
|
381
|
+
score: z.ZodNumber;
|
|
382
|
+
criteria_results: z.ZodArray<z.ZodObject<{
|
|
383
|
+
criterion: z.ZodString;
|
|
384
|
+
score: z.ZodNumber;
|
|
385
|
+
passed: z.ZodBoolean;
|
|
386
|
+
reasoning: z.ZodString;
|
|
387
|
+
}, "strip", z.ZodTypeAny, {
|
|
388
|
+
passed: boolean;
|
|
389
|
+
criterion: string;
|
|
390
|
+
score: number;
|
|
391
|
+
reasoning: string;
|
|
392
|
+
}, {
|
|
393
|
+
passed: boolean;
|
|
394
|
+
criterion: string;
|
|
395
|
+
score: number;
|
|
396
|
+
reasoning: string;
|
|
397
|
+
}>, "many">;
|
|
398
|
+
overall_reasoning: z.ZodString;
|
|
399
|
+
rubric_version: z.ZodString;
|
|
400
|
+
}, "strip", z.ZodTypeAny, {
|
|
401
|
+
score: number;
|
|
402
|
+
verdict: "pass" | "fail" | "partial";
|
|
403
|
+
criteria_results: {
|
|
404
|
+
passed: boolean;
|
|
405
|
+
criterion: string;
|
|
406
|
+
score: number;
|
|
407
|
+
reasoning: string;
|
|
408
|
+
}[];
|
|
409
|
+
overall_reasoning: string;
|
|
410
|
+
rubric_version: string;
|
|
411
|
+
}, {
|
|
412
|
+
score: number;
|
|
413
|
+
verdict: "pass" | "fail" | "partial";
|
|
414
|
+
criteria_results: {
|
|
415
|
+
passed: boolean;
|
|
416
|
+
criterion: string;
|
|
417
|
+
score: number;
|
|
418
|
+
reasoning: string;
|
|
419
|
+
}[];
|
|
420
|
+
overall_reasoning: string;
|
|
421
|
+
rubric_version: string;
|
|
422
|
+
}>;
|
|
423
|
+
type JudgmentResult = z.infer<typeof JudgmentResult>;
|
|
424
|
+
|
|
154
425
|
/**
|
|
155
426
|
* What the client sends to POST /api/v1/receipts.
|
|
156
427
|
*/
|
|
@@ -476,4 +747,4 @@ declare function formatZodError(error: z.ZodError): string;
|
|
|
476
747
|
*/
|
|
477
748
|
declare function createErrorResponse(code: string, message: string, status: number): ErrorResponse;
|
|
478
749
|
|
|
479
|
-
export { ActionReceipt, CompleteReceiptInput, CreateReceiptInput, Environment, Environment as EnvironmentType, ErrorCode, ErrorCode as ErrorCodeType, ErrorResponse, ListReceiptsQuery, PaginationMeta, ReceiptStatus, ReceiptStatus as ReceiptStatusType, ReceiptType, ReceiptType as ReceiptTypeType, SignablePayload, VerifyResponse, createErrorResponse, formatZodError, validate };
|
|
750
|
+
export { ActionReceipt, CompleteReceiptInput, ConstraintDefinition, ConstraintDefinitions, ConstraintResult, CreateReceiptInput, CriterionResult, Environment, Environment as EnvironmentType, ErrorCode, ErrorCode as ErrorCodeType, ErrorResponse, JudgmentResult, ListReceiptsQuery, PaginationMeta, ReceiptStatus, ReceiptStatus as ReceiptStatusType, ReceiptType, ReceiptType as ReceiptTypeType, Rubric, RubricCriterion, SignablePayload, SingleConstraintResult, VerifyResponse, createErrorResponse, formatZodError, validate };
|
package/dist/index.d.ts
CHANGED
|
@@ -151,6 +151,277 @@ declare const ActionReceipt: z.ZodObject<{
|
|
|
151
151
|
}>;
|
|
152
152
|
type ActionReceipt = z.infer<typeof ActionReceipt>;
|
|
153
153
|
|
|
154
|
+
/**
|
|
155
|
+
* A single constraint definition that specifies a rule to evaluate.
|
|
156
|
+
*/
|
|
157
|
+
declare const ConstraintDefinition: z.ZodObject<{
|
|
158
|
+
type: z.ZodString;
|
|
159
|
+
value: z.ZodUnknown;
|
|
160
|
+
message: z.ZodOptional<z.ZodString>;
|
|
161
|
+
}, "strip", z.ZodTypeAny, {
|
|
162
|
+
type: string;
|
|
163
|
+
value?: unknown;
|
|
164
|
+
message?: string | undefined;
|
|
165
|
+
}, {
|
|
166
|
+
type: string;
|
|
167
|
+
value?: unknown;
|
|
168
|
+
message?: string | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
type ConstraintDefinition = z.infer<typeof ConstraintDefinition>;
|
|
171
|
+
/**
|
|
172
|
+
* Result of evaluating a single constraint.
|
|
173
|
+
*/
|
|
174
|
+
declare const SingleConstraintResult: z.ZodObject<{
|
|
175
|
+
type: z.ZodString;
|
|
176
|
+
passed: z.ZodBoolean;
|
|
177
|
+
expected: z.ZodUnknown;
|
|
178
|
+
actual: z.ZodUnknown;
|
|
179
|
+
message: z.ZodOptional<z.ZodString>;
|
|
180
|
+
}, "strip", z.ZodTypeAny, {
|
|
181
|
+
type: string;
|
|
182
|
+
passed: boolean;
|
|
183
|
+
message?: string | undefined;
|
|
184
|
+
expected?: unknown;
|
|
185
|
+
actual?: unknown;
|
|
186
|
+
}, {
|
|
187
|
+
type: string;
|
|
188
|
+
passed: boolean;
|
|
189
|
+
message?: string | undefined;
|
|
190
|
+
expected?: unknown;
|
|
191
|
+
actual?: unknown;
|
|
192
|
+
}>;
|
|
193
|
+
type SingleConstraintResult = z.infer<typeof SingleConstraintResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Aggregate result of evaluating all constraints on a receipt.
|
|
196
|
+
*/
|
|
197
|
+
declare const ConstraintResult: z.ZodObject<{
|
|
198
|
+
passed: z.ZodBoolean;
|
|
199
|
+
results: z.ZodArray<z.ZodObject<{
|
|
200
|
+
type: z.ZodString;
|
|
201
|
+
passed: z.ZodBoolean;
|
|
202
|
+
expected: z.ZodUnknown;
|
|
203
|
+
actual: z.ZodUnknown;
|
|
204
|
+
message: z.ZodOptional<z.ZodString>;
|
|
205
|
+
}, "strip", z.ZodTypeAny, {
|
|
206
|
+
type: string;
|
|
207
|
+
passed: boolean;
|
|
208
|
+
message?: string | undefined;
|
|
209
|
+
expected?: unknown;
|
|
210
|
+
actual?: unknown;
|
|
211
|
+
}, {
|
|
212
|
+
type: string;
|
|
213
|
+
passed: boolean;
|
|
214
|
+
message?: string | undefined;
|
|
215
|
+
expected?: unknown;
|
|
216
|
+
actual?: unknown;
|
|
217
|
+
}>, "many">;
|
|
218
|
+
evaluated_at: z.ZodString;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
passed: boolean;
|
|
221
|
+
results: {
|
|
222
|
+
type: string;
|
|
223
|
+
passed: boolean;
|
|
224
|
+
message?: string | undefined;
|
|
225
|
+
expected?: unknown;
|
|
226
|
+
actual?: unknown;
|
|
227
|
+
}[];
|
|
228
|
+
evaluated_at: string;
|
|
229
|
+
}, {
|
|
230
|
+
passed: boolean;
|
|
231
|
+
results: {
|
|
232
|
+
type: string;
|
|
233
|
+
passed: boolean;
|
|
234
|
+
message?: string | undefined;
|
|
235
|
+
expected?: unknown;
|
|
236
|
+
actual?: unknown;
|
|
237
|
+
}[];
|
|
238
|
+
evaluated_at: string;
|
|
239
|
+
}>;
|
|
240
|
+
type ConstraintResult = z.infer<typeof ConstraintResult>;
|
|
241
|
+
/**
|
|
242
|
+
* Array of constraint definitions.
|
|
243
|
+
*/
|
|
244
|
+
declare const ConstraintDefinitions: z.ZodArray<z.ZodObject<{
|
|
245
|
+
type: z.ZodString;
|
|
246
|
+
value: z.ZodUnknown;
|
|
247
|
+
message: z.ZodOptional<z.ZodString>;
|
|
248
|
+
}, "strip", z.ZodTypeAny, {
|
|
249
|
+
type: string;
|
|
250
|
+
value?: unknown;
|
|
251
|
+
message?: string | undefined;
|
|
252
|
+
}, {
|
|
253
|
+
type: string;
|
|
254
|
+
value?: unknown;
|
|
255
|
+
message?: string | undefined;
|
|
256
|
+
}>, "many">;
|
|
257
|
+
type ConstraintDefinitions = z.infer<typeof ConstraintDefinitions>;
|
|
258
|
+
|
|
259
|
+
declare const RubricCriterion: z.ZodObject<{
|
|
260
|
+
name: z.ZodString;
|
|
261
|
+
description: z.ZodString;
|
|
262
|
+
weight: z.ZodNumber;
|
|
263
|
+
passing_threshold: z.ZodOptional<z.ZodNumber>;
|
|
264
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
265
|
+
good: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
266
|
+
bad: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
267
|
+
}, "strip", z.ZodTypeAny, {
|
|
268
|
+
good?: string[] | undefined;
|
|
269
|
+
bad?: string[] | undefined;
|
|
270
|
+
}, {
|
|
271
|
+
good?: string[] | undefined;
|
|
272
|
+
bad?: string[] | undefined;
|
|
273
|
+
}>>;
|
|
274
|
+
}, "strip", z.ZodTypeAny, {
|
|
275
|
+
name: string;
|
|
276
|
+
description: string;
|
|
277
|
+
weight: number;
|
|
278
|
+
passing_threshold?: number | undefined;
|
|
279
|
+
examples?: {
|
|
280
|
+
good?: string[] | undefined;
|
|
281
|
+
bad?: string[] | undefined;
|
|
282
|
+
} | undefined;
|
|
283
|
+
}, {
|
|
284
|
+
name: string;
|
|
285
|
+
description: string;
|
|
286
|
+
weight: number;
|
|
287
|
+
passing_threshold?: number | undefined;
|
|
288
|
+
examples?: {
|
|
289
|
+
good?: string[] | undefined;
|
|
290
|
+
bad?: string[] | undefined;
|
|
291
|
+
} | undefined;
|
|
292
|
+
}>;
|
|
293
|
+
type RubricCriterion = z.infer<typeof RubricCriterion>;
|
|
294
|
+
declare const Rubric: z.ZodObject<{
|
|
295
|
+
version: z.ZodDefault<z.ZodString>;
|
|
296
|
+
criteria: z.ZodArray<z.ZodObject<{
|
|
297
|
+
name: z.ZodString;
|
|
298
|
+
description: z.ZodString;
|
|
299
|
+
weight: z.ZodNumber;
|
|
300
|
+
passing_threshold: z.ZodOptional<z.ZodNumber>;
|
|
301
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
302
|
+
good: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
303
|
+
bad: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
304
|
+
}, "strip", z.ZodTypeAny, {
|
|
305
|
+
good?: string[] | undefined;
|
|
306
|
+
bad?: string[] | undefined;
|
|
307
|
+
}, {
|
|
308
|
+
good?: string[] | undefined;
|
|
309
|
+
bad?: string[] | undefined;
|
|
310
|
+
}>>;
|
|
311
|
+
}, "strip", z.ZodTypeAny, {
|
|
312
|
+
name: string;
|
|
313
|
+
description: string;
|
|
314
|
+
weight: number;
|
|
315
|
+
passing_threshold?: number | undefined;
|
|
316
|
+
examples?: {
|
|
317
|
+
good?: string[] | undefined;
|
|
318
|
+
bad?: string[] | undefined;
|
|
319
|
+
} | undefined;
|
|
320
|
+
}, {
|
|
321
|
+
name: string;
|
|
322
|
+
description: string;
|
|
323
|
+
weight: number;
|
|
324
|
+
passing_threshold?: number | undefined;
|
|
325
|
+
examples?: {
|
|
326
|
+
good?: string[] | undefined;
|
|
327
|
+
bad?: string[] | undefined;
|
|
328
|
+
} | undefined;
|
|
329
|
+
}>, "many">;
|
|
330
|
+
passing_threshold: z.ZodDefault<z.ZodNumber>;
|
|
331
|
+
require_all: z.ZodDefault<z.ZodBoolean>;
|
|
332
|
+
}, "strip", z.ZodTypeAny, {
|
|
333
|
+
passing_threshold: number;
|
|
334
|
+
version: string;
|
|
335
|
+
criteria: {
|
|
336
|
+
name: string;
|
|
337
|
+
description: string;
|
|
338
|
+
weight: number;
|
|
339
|
+
passing_threshold?: number | undefined;
|
|
340
|
+
examples?: {
|
|
341
|
+
good?: string[] | undefined;
|
|
342
|
+
bad?: string[] | undefined;
|
|
343
|
+
} | undefined;
|
|
344
|
+
}[];
|
|
345
|
+
require_all: boolean;
|
|
346
|
+
}, {
|
|
347
|
+
criteria: {
|
|
348
|
+
name: string;
|
|
349
|
+
description: string;
|
|
350
|
+
weight: number;
|
|
351
|
+
passing_threshold?: number | undefined;
|
|
352
|
+
examples?: {
|
|
353
|
+
good?: string[] | undefined;
|
|
354
|
+
bad?: string[] | undefined;
|
|
355
|
+
} | undefined;
|
|
356
|
+
}[];
|
|
357
|
+
passing_threshold?: number | undefined;
|
|
358
|
+
version?: string | undefined;
|
|
359
|
+
require_all?: boolean | undefined;
|
|
360
|
+
}>;
|
|
361
|
+
type Rubric = z.infer<typeof Rubric>;
|
|
362
|
+
declare const CriterionResult: z.ZodObject<{
|
|
363
|
+
criterion: z.ZodString;
|
|
364
|
+
score: z.ZodNumber;
|
|
365
|
+
passed: z.ZodBoolean;
|
|
366
|
+
reasoning: z.ZodString;
|
|
367
|
+
}, "strip", z.ZodTypeAny, {
|
|
368
|
+
passed: boolean;
|
|
369
|
+
criterion: string;
|
|
370
|
+
score: number;
|
|
371
|
+
reasoning: string;
|
|
372
|
+
}, {
|
|
373
|
+
passed: boolean;
|
|
374
|
+
criterion: string;
|
|
375
|
+
score: number;
|
|
376
|
+
reasoning: string;
|
|
377
|
+
}>;
|
|
378
|
+
type CriterionResult = z.infer<typeof CriterionResult>;
|
|
379
|
+
declare const JudgmentResult: z.ZodObject<{
|
|
380
|
+
verdict: z.ZodEnum<["pass", "fail", "partial"]>;
|
|
381
|
+
score: z.ZodNumber;
|
|
382
|
+
criteria_results: z.ZodArray<z.ZodObject<{
|
|
383
|
+
criterion: z.ZodString;
|
|
384
|
+
score: z.ZodNumber;
|
|
385
|
+
passed: z.ZodBoolean;
|
|
386
|
+
reasoning: z.ZodString;
|
|
387
|
+
}, "strip", z.ZodTypeAny, {
|
|
388
|
+
passed: boolean;
|
|
389
|
+
criterion: string;
|
|
390
|
+
score: number;
|
|
391
|
+
reasoning: string;
|
|
392
|
+
}, {
|
|
393
|
+
passed: boolean;
|
|
394
|
+
criterion: string;
|
|
395
|
+
score: number;
|
|
396
|
+
reasoning: string;
|
|
397
|
+
}>, "many">;
|
|
398
|
+
overall_reasoning: z.ZodString;
|
|
399
|
+
rubric_version: z.ZodString;
|
|
400
|
+
}, "strip", z.ZodTypeAny, {
|
|
401
|
+
score: number;
|
|
402
|
+
verdict: "pass" | "fail" | "partial";
|
|
403
|
+
criteria_results: {
|
|
404
|
+
passed: boolean;
|
|
405
|
+
criterion: string;
|
|
406
|
+
score: number;
|
|
407
|
+
reasoning: string;
|
|
408
|
+
}[];
|
|
409
|
+
overall_reasoning: string;
|
|
410
|
+
rubric_version: string;
|
|
411
|
+
}, {
|
|
412
|
+
score: number;
|
|
413
|
+
verdict: "pass" | "fail" | "partial";
|
|
414
|
+
criteria_results: {
|
|
415
|
+
passed: boolean;
|
|
416
|
+
criterion: string;
|
|
417
|
+
score: number;
|
|
418
|
+
reasoning: string;
|
|
419
|
+
}[];
|
|
420
|
+
overall_reasoning: string;
|
|
421
|
+
rubric_version: string;
|
|
422
|
+
}>;
|
|
423
|
+
type JudgmentResult = z.infer<typeof JudgmentResult>;
|
|
424
|
+
|
|
154
425
|
/**
|
|
155
426
|
* What the client sends to POST /api/v1/receipts.
|
|
156
427
|
*/
|
|
@@ -476,4 +747,4 @@ declare function formatZodError(error: z.ZodError): string;
|
|
|
476
747
|
*/
|
|
477
748
|
declare function createErrorResponse(code: string, message: string, status: number): ErrorResponse;
|
|
478
749
|
|
|
479
|
-
export { ActionReceipt, CompleteReceiptInput, CreateReceiptInput, Environment, Environment as EnvironmentType, ErrorCode, ErrorCode as ErrorCodeType, ErrorResponse, ListReceiptsQuery, PaginationMeta, ReceiptStatus, ReceiptStatus as ReceiptStatusType, ReceiptType, ReceiptType as ReceiptTypeType, SignablePayload, VerifyResponse, createErrorResponse, formatZodError, validate };
|
|
750
|
+
export { ActionReceipt, CompleteReceiptInput, ConstraintDefinition, ConstraintDefinitions, ConstraintResult, CreateReceiptInput, CriterionResult, Environment, Environment as EnvironmentType, ErrorCode, ErrorCode as ErrorCodeType, ErrorResponse, JudgmentResult, ListReceiptsQuery, PaginationMeta, ReceiptStatus, ReceiptStatus as ReceiptStatusType, ReceiptType, ReceiptType as ReceiptTypeType, Rubric, RubricCriterion, SignablePayload, SingleConstraintResult, VerifyResponse, createErrorResponse, formatZodError, validate };
|
package/dist/index.js
CHANGED
|
@@ -22,15 +22,23 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
ActionReceipt: () => ActionReceipt,
|
|
24
24
|
CompleteReceiptInput: () => CompleteReceiptInput,
|
|
25
|
+
ConstraintDefinition: () => ConstraintDefinition,
|
|
26
|
+
ConstraintDefinitions: () => ConstraintDefinitions,
|
|
27
|
+
ConstraintResult: () => ConstraintResult,
|
|
25
28
|
CreateReceiptInput: () => CreateReceiptInput,
|
|
29
|
+
CriterionResult: () => CriterionResult,
|
|
26
30
|
Environment: () => Environment,
|
|
27
31
|
ErrorCode: () => ErrorCode,
|
|
28
32
|
ErrorResponse: () => ErrorResponse,
|
|
33
|
+
JudgmentResult: () => JudgmentResult,
|
|
29
34
|
ListReceiptsQuery: () => ListReceiptsQuery,
|
|
30
35
|
PaginationMeta: () => PaginationMeta,
|
|
31
36
|
ReceiptStatus: () => ReceiptStatus,
|
|
32
37
|
ReceiptType: () => ReceiptType,
|
|
38
|
+
Rubric: () => Rubric,
|
|
39
|
+
RubricCriterion: () => RubricCriterion,
|
|
33
40
|
SignablePayload: () => SignablePayload,
|
|
41
|
+
SingleConstraintResult: () => SingleConstraintResult,
|
|
34
42
|
VerifyResponse: () => VerifyResponse,
|
|
35
43
|
createErrorResponse: () => createErrorResponse,
|
|
36
44
|
formatZodError: () => formatZodError,
|
|
@@ -116,96 +124,149 @@ var ActionReceipt = import_zod2.z.object({
|
|
|
116
124
|
metadata: import_zod2.z.record(import_zod2.z.unknown())
|
|
117
125
|
});
|
|
118
126
|
|
|
119
|
-
// src/
|
|
127
|
+
// src/constraints.ts
|
|
120
128
|
var import_zod3 = require("zod");
|
|
121
|
-
var
|
|
129
|
+
var ConstraintDefinition = import_zod3.z.object({
|
|
130
|
+
type: import_zod3.z.string().min(1),
|
|
131
|
+
value: import_zod3.z.unknown(),
|
|
132
|
+
message: import_zod3.z.string().optional()
|
|
133
|
+
});
|
|
134
|
+
var SingleConstraintResult = import_zod3.z.object({
|
|
135
|
+
type: import_zod3.z.string(),
|
|
136
|
+
passed: import_zod3.z.boolean(),
|
|
137
|
+
expected: import_zod3.z.unknown(),
|
|
138
|
+
actual: import_zod3.z.unknown(),
|
|
139
|
+
message: import_zod3.z.string().optional()
|
|
140
|
+
});
|
|
141
|
+
var ConstraintResult = import_zod3.z.object({
|
|
142
|
+
passed: import_zod3.z.boolean(),
|
|
143
|
+
results: import_zod3.z.array(SingleConstraintResult),
|
|
144
|
+
evaluated_at: import_zod3.z.string().datetime()
|
|
145
|
+
});
|
|
146
|
+
var ConstraintDefinitions = import_zod3.z.array(ConstraintDefinition);
|
|
147
|
+
|
|
148
|
+
// src/rubric.ts
|
|
149
|
+
var import_zod4 = require("zod");
|
|
150
|
+
var RubricCriterion = import_zod4.z.object({
|
|
151
|
+
name: import_zod4.z.string().min(1),
|
|
152
|
+
description: import_zod4.z.string().min(1),
|
|
153
|
+
weight: import_zod4.z.number().min(0).max(1),
|
|
154
|
+
passing_threshold: import_zod4.z.number().min(0).max(1).optional(),
|
|
155
|
+
examples: import_zod4.z.object({
|
|
156
|
+
good: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
157
|
+
bad: import_zod4.z.array(import_zod4.z.string()).optional()
|
|
158
|
+
}).optional()
|
|
159
|
+
});
|
|
160
|
+
var Rubric = import_zod4.z.object({
|
|
161
|
+
version: import_zod4.z.string().default("1.0"),
|
|
162
|
+
criteria: import_zod4.z.array(RubricCriterion).min(1),
|
|
163
|
+
passing_threshold: import_zod4.z.number().min(0).max(1).default(0.7),
|
|
164
|
+
require_all: import_zod4.z.boolean().default(false)
|
|
165
|
+
});
|
|
166
|
+
var CriterionResult = import_zod4.z.object({
|
|
167
|
+
criterion: import_zod4.z.string(),
|
|
168
|
+
score: import_zod4.z.number().min(0).max(1),
|
|
169
|
+
passed: import_zod4.z.boolean(),
|
|
170
|
+
reasoning: import_zod4.z.string()
|
|
171
|
+
});
|
|
172
|
+
var JudgmentResult = import_zod4.z.object({
|
|
173
|
+
verdict: import_zod4.z.enum(["pass", "fail", "partial"]),
|
|
174
|
+
score: import_zod4.z.number().min(0).max(1),
|
|
175
|
+
criteria_results: import_zod4.z.array(CriterionResult),
|
|
176
|
+
overall_reasoning: import_zod4.z.string(),
|
|
177
|
+
rubric_version: import_zod4.z.string()
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// src/api.ts
|
|
181
|
+
var import_zod5 = require("zod");
|
|
182
|
+
var CreateReceiptInput = import_zod5.z.object({
|
|
122
183
|
// Required
|
|
123
|
-
agent_id:
|
|
124
|
-
action:
|
|
125
|
-
input_hash:
|
|
184
|
+
agent_id: import_zod5.z.string().min(1),
|
|
185
|
+
action: import_zod5.z.string().min(1),
|
|
186
|
+
input_hash: import_zod5.z.string().min(1),
|
|
126
187
|
// Optional with defaults
|
|
127
188
|
receipt_type: ReceiptType.default("action"),
|
|
128
189
|
status: ReceiptStatus.default("pending"),
|
|
129
190
|
environment: Environment.default("production"),
|
|
130
191
|
// Optional
|
|
131
|
-
parent_receipt_id:
|
|
132
|
-
output_hash:
|
|
133
|
-
output_summary:
|
|
134
|
-
model:
|
|
135
|
-
tokens_in:
|
|
136
|
-
tokens_out:
|
|
137
|
-
cost_usd:
|
|
138
|
-
latency_ms:
|
|
139
|
-
tool_calls:
|
|
140
|
-
tags:
|
|
141
|
-
confidence:
|
|
142
|
-
callback_verified:
|
|
143
|
-
metadata:
|
|
192
|
+
parent_receipt_id: import_zod5.z.string().nullable().optional(),
|
|
193
|
+
output_hash: import_zod5.z.string().nullable().optional(),
|
|
194
|
+
output_summary: import_zod5.z.string().nullable().optional(),
|
|
195
|
+
model: import_zod5.z.string().nullable().optional(),
|
|
196
|
+
tokens_in: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
197
|
+
tokens_out: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
198
|
+
cost_usd: import_zod5.z.number().nonnegative().nullable().optional(),
|
|
199
|
+
latency_ms: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
200
|
+
tool_calls: import_zod5.z.array(import_zod5.z.string()).nullable().optional(),
|
|
201
|
+
tags: import_zod5.z.array(import_zod5.z.string()).nullable().optional(),
|
|
202
|
+
confidence: import_zod5.z.number().min(0).max(1).nullable().optional(),
|
|
203
|
+
callback_verified: import_zod5.z.boolean().nullable().optional(),
|
|
204
|
+
metadata: import_zod5.z.record(import_zod5.z.unknown()).optional()
|
|
144
205
|
});
|
|
145
|
-
var CompleteReceiptInput =
|
|
206
|
+
var CompleteReceiptInput = import_zod5.z.object({
|
|
146
207
|
// Required — must transition from pending
|
|
147
|
-
status:
|
|
208
|
+
status: import_zod5.z.enum(["completed", "failed", "timeout"]),
|
|
148
209
|
// Execution results (all optional — set what you know)
|
|
149
|
-
output_hash:
|
|
150
|
-
output_summary:
|
|
151
|
-
model:
|
|
152
|
-
tokens_in:
|
|
153
|
-
tokens_out:
|
|
154
|
-
cost_usd:
|
|
155
|
-
latency_ms:
|
|
156
|
-
tool_calls:
|
|
157
|
-
confidence:
|
|
158
|
-
callback_verified:
|
|
159
|
-
error:
|
|
210
|
+
output_hash: import_zod5.z.string().nullable().optional(),
|
|
211
|
+
output_summary: import_zod5.z.string().nullable().optional(),
|
|
212
|
+
model: import_zod5.z.string().nullable().optional(),
|
|
213
|
+
tokens_in: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
214
|
+
tokens_out: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
215
|
+
cost_usd: import_zod5.z.number().nonnegative().nullable().optional(),
|
|
216
|
+
latency_ms: import_zod5.z.number().int().nonnegative().nullable().optional(),
|
|
217
|
+
tool_calls: import_zod5.z.array(import_zod5.z.string()).nullable().optional(),
|
|
218
|
+
confidence: import_zod5.z.number().min(0).max(1).nullable().optional(),
|
|
219
|
+
callback_verified: import_zod5.z.boolean().nullable().optional(),
|
|
220
|
+
error: import_zod5.z.record(import_zod5.z.unknown()).nullable().optional()
|
|
160
221
|
});
|
|
161
|
-
var VerifyResponse =
|
|
162
|
-
verified:
|
|
163
|
-
receipt:
|
|
164
|
-
receipt_id:
|
|
165
|
-
chain_id:
|
|
222
|
+
var VerifyResponse = import_zod5.z.object({
|
|
223
|
+
verified: import_zod5.z.boolean(),
|
|
224
|
+
receipt: import_zod5.z.object({
|
|
225
|
+
receipt_id: import_zod5.z.string(),
|
|
226
|
+
chain_id: import_zod5.z.string(),
|
|
166
227
|
receipt_type: ReceiptType,
|
|
167
|
-
agent_id:
|
|
168
|
-
action:
|
|
228
|
+
agent_id: import_zod5.z.string(),
|
|
229
|
+
action: import_zod5.z.string(),
|
|
169
230
|
status: ReceiptStatus,
|
|
170
|
-
input_hash:
|
|
171
|
-
output_hash:
|
|
172
|
-
signature:
|
|
173
|
-
timestamp:
|
|
174
|
-
completed_at:
|
|
231
|
+
input_hash: import_zod5.z.string(),
|
|
232
|
+
output_hash: import_zod5.z.string().nullable(),
|
|
233
|
+
signature: import_zod5.z.string(),
|
|
234
|
+
timestamp: import_zod5.z.string().datetime(),
|
|
235
|
+
completed_at: import_zod5.z.string().datetime().nullable(),
|
|
175
236
|
environment: Environment,
|
|
176
|
-
latency_ms:
|
|
237
|
+
latency_ms: import_zod5.z.number().int().nonnegative().nullable()
|
|
177
238
|
}),
|
|
178
|
-
signature_valid:
|
|
179
|
-
chain_length:
|
|
180
|
-
public_key_url:
|
|
239
|
+
signature_valid: import_zod5.z.boolean(),
|
|
240
|
+
chain_length: import_zod5.z.number().int().nonnegative(),
|
|
241
|
+
public_key_url: import_zod5.z.string().url()
|
|
181
242
|
});
|
|
182
|
-
var ListReceiptsQuery =
|
|
183
|
-
page:
|
|
184
|
-
limit:
|
|
185
|
-
agent_id:
|
|
186
|
-
action:
|
|
243
|
+
var ListReceiptsQuery = import_zod5.z.object({
|
|
244
|
+
page: import_zod5.z.coerce.number().int().positive().default(1),
|
|
245
|
+
limit: import_zod5.z.coerce.number().int().positive().max(100).default(50),
|
|
246
|
+
agent_id: import_zod5.z.string().optional(),
|
|
247
|
+
action: import_zod5.z.string().optional(),
|
|
187
248
|
status: ReceiptStatus.optional(),
|
|
188
249
|
environment: Environment.optional(),
|
|
189
250
|
receipt_type: ReceiptType.optional(),
|
|
190
|
-
chain_id:
|
|
191
|
-
tag:
|
|
192
|
-
from:
|
|
193
|
-
to:
|
|
194
|
-
sort:
|
|
251
|
+
chain_id: import_zod5.z.string().optional(),
|
|
252
|
+
tag: import_zod5.z.string().optional(),
|
|
253
|
+
from: import_zod5.z.string().datetime().optional(),
|
|
254
|
+
to: import_zod5.z.string().datetime().optional(),
|
|
255
|
+
sort: import_zod5.z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")
|
|
195
256
|
});
|
|
196
|
-
var PaginationMeta =
|
|
197
|
-
page:
|
|
198
|
-
limit:
|
|
199
|
-
total:
|
|
200
|
-
total_pages:
|
|
201
|
-
has_next:
|
|
202
|
-
has_prev:
|
|
257
|
+
var PaginationMeta = import_zod5.z.object({
|
|
258
|
+
page: import_zod5.z.number().int().positive(),
|
|
259
|
+
limit: import_zod5.z.number().int().positive(),
|
|
260
|
+
total: import_zod5.z.number().int().nonnegative(),
|
|
261
|
+
total_pages: import_zod5.z.number().int().nonnegative(),
|
|
262
|
+
has_next: import_zod5.z.boolean(),
|
|
263
|
+
has_prev: import_zod5.z.boolean()
|
|
203
264
|
});
|
|
204
|
-
var ErrorResponse =
|
|
205
|
-
error:
|
|
265
|
+
var ErrorResponse = import_zod5.z.object({
|
|
266
|
+
error: import_zod5.z.object({
|
|
206
267
|
code: ErrorCode,
|
|
207
|
-
message:
|
|
208
|
-
status:
|
|
268
|
+
message: import_zod5.z.string(),
|
|
269
|
+
status: import_zod5.z.number().int()
|
|
209
270
|
})
|
|
210
271
|
});
|
|
211
272
|
|
|
@@ -243,15 +304,23 @@ function createErrorResponse(code, message, status) {
|
|
|
243
304
|
0 && (module.exports = {
|
|
244
305
|
ActionReceipt,
|
|
245
306
|
CompleteReceiptInput,
|
|
307
|
+
ConstraintDefinition,
|
|
308
|
+
ConstraintDefinitions,
|
|
309
|
+
ConstraintResult,
|
|
246
310
|
CreateReceiptInput,
|
|
311
|
+
CriterionResult,
|
|
247
312
|
Environment,
|
|
248
313
|
ErrorCode,
|
|
249
314
|
ErrorResponse,
|
|
315
|
+
JudgmentResult,
|
|
250
316
|
ListReceiptsQuery,
|
|
251
317
|
PaginationMeta,
|
|
252
318
|
ReceiptStatus,
|
|
253
319
|
ReceiptType,
|
|
320
|
+
Rubric,
|
|
321
|
+
RubricCriterion,
|
|
254
322
|
SignablePayload,
|
|
323
|
+
SingleConstraintResult,
|
|
255
324
|
VerifyResponse,
|
|
256
325
|
createErrorResponse,
|
|
257
326
|
formatZodError,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/enums.ts","../src/receipt.ts","../src/api.ts","../src/validation.ts"],"sourcesContent":["// Enums\nexport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n// Receipt schemas + types\nexport { SignablePayload, ActionReceipt } from './receipt'\n\n// API schemas + types\nexport {\n CreateReceiptInput,\n CompleteReceiptInput,\n VerifyResponse,\n ListReceiptsQuery,\n PaginationMeta,\n ErrorResponse,\n} from './api'\n\n// Validation utilities\nexport { validate, formatZodError, createErrorResponse } from './validation'\n\n// Re-export types explicitly for consumers who import types only\nexport type {\n ReceiptStatus as ReceiptStatusType,\n ReceiptType as ReceiptTypeType,\n Environment as EnvironmentType,\n ErrorCode as ErrorCodeType,\n} from './enums'\n","import { z } from 'zod'\n\nexport const ReceiptStatus = z.enum(['pending', 'completed', 'failed', 'timeout'])\nexport type ReceiptStatus = z.infer<typeof ReceiptStatus>\n\nexport const ReceiptType = z.enum(['action', 'verification', 'judgment', 'arbitration'])\nexport type ReceiptType = z.infer<typeof ReceiptType>\n\nexport const Environment = z.enum(['production', 'staging', 'test'])\nexport type Environment = z.infer<typeof Environment>\n\nexport const ErrorCode = z.enum([\n 'UNAUTHORIZED',\n 'KEY_REVOKED',\n 'FORBIDDEN',\n 'RECEIPT_NOT_FOUND',\n 'CHAIN_NOT_FOUND',\n 'AGENT_NOT_FOUND',\n 'RECEIPT_NOT_PENDING',\n 'RECEIPT_IMMUTABLE',\n 'RATE_LIMIT_EXCEEDED',\n 'VALIDATION_ERROR',\n 'INTERNAL_ERROR',\n])\nexport type ErrorCode = z.infer<typeof ErrorCode>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment } from './enums'\n\n/**\n * The 12 fields that are cryptographically signed.\n * These fields are extracted from a receipt and serialized as canonical JSON\n * before signing with Ed25519.\n */\nexport const SignablePayload = z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n org_id: z.string(),\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n status: ReceiptStatus,\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n})\nexport type SignablePayload = z.infer<typeof SignablePayload>\n\n/**\n * The complete receipt object as returned by the API.\n */\nexport const ActionReceipt = z.object({\n // Identity\n receipt_id: z.string(),\n parent_receipt_id: z.string().nullable(),\n chain_id: z.string(),\n\n // Type\n receipt_type: ReceiptType,\n\n // Who\n agent_id: z.string(),\n org_id: z.string(),\n\n // What\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n output_summary: z.string().nullable(),\n\n // How (all nullable — may not be known at creation)\n model: z.string().nullable(),\n tokens_in: z.number().int().nonnegative().nullable(),\n tokens_out: z.number().int().nonnegative().nullable(),\n cost_usd: z.number().nonnegative().nullable(),\n latency_ms: z.number().int().nonnegative().nullable(),\n tool_calls: z.array(z.string()).nullable(),\n\n // When\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n\n // Status\n status: ReceiptStatus,\n error: z.record(z.unknown()).nullable(),\n\n // Context\n environment: Environment,\n tags: z.array(z.string()).nullable(),\n\n // Verification (Tier 2 — Phase 6)\n constraints: z.record(z.unknown()).nullable(),\n constraint_result: z.record(z.unknown()).nullable(),\n\n // Trust\n signature: z.string(),\n verify_url: z.string().url(),\n\n // Optional\n callback_verified: z.boolean().nullable(),\n confidence: z.number().min(0).max(1).nullable(),\n metadata: z.record(z.unknown()),\n})\nexport type ActionReceipt = z.infer<typeof ActionReceipt>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n/**\n * What the client sends to POST /api/v1/receipts.\n */\nexport const CreateReceiptInput = z.object({\n // Required\n agent_id: z.string().min(1),\n action: z.string().min(1),\n input_hash: z.string().min(1),\n\n // Optional with defaults\n receipt_type: ReceiptType.default('action'),\n status: ReceiptStatus.default('pending'),\n environment: Environment.default('production'),\n\n // Optional\n parent_receipt_id: z.string().nullable().optional(),\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n metadata: z.record(z.unknown()).optional(),\n})\nexport type CreateReceiptInput = z.infer<typeof CreateReceiptInput>\n\n/**\n * What the client sends to PATCH /api/v1/receipts/:id/complete.\n */\nexport const CompleteReceiptInput = z.object({\n // Required — must transition from pending\n status: z.enum(['completed', 'failed', 'timeout']),\n\n // Execution results (all optional — set what you know)\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n error: z.record(z.unknown()).nullable().optional(),\n})\nexport type CompleteReceiptInput = z.infer<typeof CompleteReceiptInput>\n\n/**\n * What GET /api/v1/verify/:id returns.\n * Note: Does NOT include org_id, metadata, tags, or output_summary (org-private).\n */\nexport const VerifyResponse = z.object({\n verified: z.boolean(),\n receipt: z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n action: z.string(),\n status: ReceiptStatus,\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n signature: z.string(),\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n latency_ms: z.number().int().nonnegative().nullable(),\n }),\n signature_valid: z.boolean(),\n chain_length: z.number().int().nonnegative(),\n public_key_url: z.string().url(),\n})\nexport type VerifyResponse = z.infer<typeof VerifyResponse>\n\n/**\n * Query parameters for GET /api/v1/receipts.\n */\nexport const ListReceiptsQuery = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(50),\n agent_id: z.string().optional(),\n action: z.string().optional(),\n status: ReceiptStatus.optional(),\n environment: Environment.optional(),\n receipt_type: ReceiptType.optional(),\n chain_id: z.string().optional(),\n tag: z.string().optional(),\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n sort: z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default('created_at:desc'),\n})\nexport type ListReceiptsQuery = z.infer<typeof ListReceiptsQuery>\n\n/**\n * Pagination metadata included in list responses.\n */\nexport const PaginationMeta = z.object({\n page: z.number().int().positive(),\n limit: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n total_pages: z.number().int().nonnegative(),\n has_next: z.boolean(),\n has_prev: z.boolean(),\n})\nexport type PaginationMeta = z.infer<typeof PaginationMeta>\n\n/**\n * Standard error response format.\n */\nexport const ErrorResponse = z.object({\n error: z.object({\n code: ErrorCode,\n message: z.string(),\n status: z.number().int(),\n }),\n})\nexport type ErrorResponse = z.infer<typeof ErrorResponse>\n","import { z } from 'zod'\nimport type { ErrorResponse } from './api'\n\n/**\n * Validate data against a Zod schema.\n * Returns { success: true, data } or { success: false, error: ErrorResponse }\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: ErrorResponse } {\n const result = schema.safeParse(data)\n if (result.success) {\n return { success: true, data: result.data }\n }\n return {\n success: false,\n error: createErrorResponse(\n 'VALIDATION_ERROR',\n formatZodError(result.error),\n 400\n ),\n }\n}\n\n/**\n * Format Zod errors into a human-readable message.\n */\nexport function formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : ''\n return `${path}${issue.message}`\n })\n .join('; ')\n}\n\n/**\n * Create a standard error response object.\n */\nexport function createErrorResponse(\n code: string,\n message: string,\n status: number\n): ErrorResponse {\n return {\n error: {\n code: code as ErrorResponse['error']['code'],\n message,\n status,\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iBAAkB;AAEX,IAAM,gBAAgB,aAAE,KAAK,CAAC,WAAW,aAAa,UAAU,SAAS,CAAC;AAG1E,IAAM,cAAc,aAAE,KAAK,CAAC,UAAU,gBAAgB,YAAY,aAAa,CAAC;AAGhF,IAAM,cAAc,aAAE,KAAK,CAAC,cAAc,WAAW,MAAM,CAAC;AAG5D,IAAM,YAAY,aAAE,KAAK;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACvBD,IAAAA,cAAkB;AAQX,IAAM,kBAAkB,cAAE,OAAO;AAAA,EACtC,YAAY,cAAE,OAAO;AAAA,EACrB,UAAU,cAAE,OAAO;AAAA,EACnB,cAAc;AAAA,EACd,UAAU,cAAE,OAAO;AAAA,EACnB,QAAQ,cAAE,OAAO;AAAA,EACjB,QAAQ,cAAE,OAAO;AAAA,EACjB,YAAY,cAAE,OAAO;AAAA,EACrB,aAAa,cAAE,OAAO,EAAE,SAAS;AAAA,EACjC,QAAQ;AAAA,EACR,WAAW,cAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,cAAc,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,aAAa;AACf,CAAC;AAMM,IAAM,gBAAgB,cAAE,OAAO;AAAA;AAAA,EAEpC,YAAY,cAAE,OAAO;AAAA,EACrB,mBAAmB,cAAE,OAAO,EAAE,SAAS;AAAA,EACvC,UAAU,cAAE,OAAO;AAAA;AAAA,EAGnB,cAAc;AAAA;AAAA,EAGd,UAAU,cAAE,OAAO;AAAA,EACnB,QAAQ,cAAE,OAAO;AAAA;AAAA,EAGjB,QAAQ,cAAE,OAAO;AAAA,EACjB,YAAY,cAAE,OAAO;AAAA,EACrB,aAAa,cAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgB,cAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAGpC,OAAO,cAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACnD,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,UAAU,cAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAAA,EAC5C,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,YAAY,cAAE,MAAM,cAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAGzC,WAAW,cAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,cAAc,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAG7C,QAAQ;AAAA,EACR,OAAO,cAAE,OAAO,cAAE,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAGtC,aAAa;AAAA,EACb,MAAM,cAAE,MAAM,cAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAGnC,aAAa,cAAE,OAAO,cAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC5C,mBAAmB,cAAE,OAAO,cAAE,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA,EAGlD,WAAW,cAAE,OAAO;AAAA,EACpB,YAAY,cAAE,OAAO,EAAE,IAAI;AAAA;AAAA,EAG3B,mBAAmB,cAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,YAAY,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC9C,UAAU,cAAE,OAAO,cAAE,QAAQ,CAAC;AAChC,CAAC;;;AC9ED,IAAAC,cAAkB;AAMX,IAAM,qBAAqB,cAAE,OAAO;AAAA;AAAA,EAEzC,UAAU,cAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,QAAQ,cAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,YAAY,cAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAG5B,cAAc,YAAY,QAAQ,QAAQ;AAAA,EAC1C,QAAQ,cAAc,QAAQ,SAAS;AAAA,EACvC,aAAa,YAAY,QAAQ,YAAY;AAAA;AAAA,EAG7C,mBAAmB,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAClD,aAAa,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,gBAAgB,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,OAAO,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,WAAW,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9D,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/D,UAAU,cAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/D,YAAY,cAAE,MAAM,cAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACpD,MAAM,cAAE,MAAM,cAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,YAAY,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACzD,mBAAmB,cAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EACnD,UAAU,cAAE,OAAO,cAAE,QAAQ,CAAC,EAAE,SAAS;AAC3C,CAAC;AAMM,IAAM,uBAAuB,cAAE,OAAO;AAAA;AAAA,EAE3C,QAAQ,cAAE,KAAK,CAAC,aAAa,UAAU,SAAS,CAAC;AAAA;AAAA,EAGjD,aAAa,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,gBAAgB,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,OAAO,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,WAAW,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9D,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/D,UAAU,cAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/D,YAAY,cAAE,MAAM,cAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACpD,YAAY,cAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACzD,mBAAmB,cAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EACnD,OAAO,cAAE,OAAO,cAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS;AACnD,CAAC;AAOM,IAAM,iBAAiB,cAAE,OAAO;AAAA,EACrC,UAAU,cAAE,QAAQ;AAAA,EACpB,SAAS,cAAE,OAAO;AAAA,IAChB,YAAY,cAAE,OAAO;AAAA,IACrB,UAAU,cAAE,OAAO;AAAA,IACnB,cAAc;AAAA,IACd,UAAU,cAAE,OAAO;AAAA,IACnB,QAAQ,cAAE,OAAO;AAAA,IACjB,QAAQ;AAAA,IACR,YAAY,cAAE,OAAO;AAAA,IACrB,aAAa,cAAE,OAAO,EAAE,SAAS;AAAA,IACjC,WAAW,cAAE,OAAO;AAAA,IACpB,WAAW,cAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,cAAc,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC7C,aAAa;AAAA,IACb,YAAY,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACtD,CAAC;AAAA,EACD,iBAAiB,cAAE,QAAQ;AAAA,EAC3B,cAAc,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EAC3C,gBAAgB,cAAE,OAAO,EAAE,IAAI;AACjC,CAAC;AAMM,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,MAAM,cAAE,OAAO,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,EAClD,OAAO,cAAE,OAAO,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC7D,UAAU,cAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQ,cAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,QAAQ,cAAc,SAAS;AAAA,EAC/B,aAAa,YAAY,SAAS;AAAA,EAClC,cAAc,YAAY,SAAS;AAAA,EACnC,UAAU,cAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,KAAK,cAAE,OAAO,EAAE,SAAS;AAAA,EACzB,MAAM,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,IAAI,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACnC,MAAM,cAAE,OAAO,EAAE,MAAM,4DAA4D,EAAE,QAAQ,iBAAiB;AAChH,CAAC;AAMM,IAAM,iBAAiB,cAAE,OAAO;AAAA,EACrC,MAAM,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,OAAO,cAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACjC,OAAO,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACpC,aAAa,cAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EAC1C,UAAU,cAAE,QAAQ;AAAA,EACpB,UAAU,cAAE,QAAQ;AACtB,CAAC;AAMM,IAAM,gBAAgB,cAAE,OAAO;AAAA,EACpC,OAAO,cAAE,OAAO;AAAA,IACd,MAAM;AAAA,IACN,SAAS,cAAE,OAAO;AAAA,IAClB,QAAQ,cAAE,OAAO,EAAE,IAAI;AAAA,EACzB,CAAC;AACH,CAAC;;;ACrHM,SAAS,SACd,QACA,MACgF;AAChF,QAAM,SAAS,OAAO,UAAU,IAAI;AACpC,MAAI,OAAO,SAAS;AAClB,WAAO,EAAE,SAAS,MAAM,MAAM,OAAO,KAAK;AAAA,EAC5C;AACA,SAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,MACL;AAAA,MACA,eAAe,OAAO,KAAK;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF;AAKO,SAAS,eAAe,OAA2B;AACxD,SAAO,MAAM,OACV,IAAI,CAAC,UAAU;AACd,UAAM,OAAO,MAAM,KAAK,SAAS,IAAI,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC,OAAO;AACnE,WAAO,GAAG,IAAI,GAAG,MAAM,OAAO;AAAA,EAChC,CAAC,EACA,KAAK,IAAI;AACd;AAKO,SAAS,oBACd,MACA,SACA,QACe;AACf,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":["import_zod","import_zod"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/enums.ts","../src/receipt.ts","../src/constraints.ts","../src/rubric.ts","../src/api.ts","../src/validation.ts"],"sourcesContent":["// Enums\nexport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n// Receipt schemas + types\nexport { SignablePayload, ActionReceipt } from './receipt'\n\n// Constraint schemas + types\nexport {\n ConstraintDefinition,\n SingleConstraintResult,\n ConstraintResult,\n ConstraintDefinitions,\n} from './constraints'\n\n// Rubric schemas + types\nexport {\n RubricCriterion,\n Rubric,\n CriterionResult,\n JudgmentResult,\n} from './rubric'\n\n// API schemas + types\nexport {\n CreateReceiptInput,\n CompleteReceiptInput,\n VerifyResponse,\n ListReceiptsQuery,\n PaginationMeta,\n ErrorResponse,\n} from './api'\n\n// Validation utilities\nexport { validate, formatZodError, createErrorResponse } from './validation'\n\n// Re-export types explicitly for consumers who import types only\nexport type {\n ReceiptStatus as ReceiptStatusType,\n ReceiptType as ReceiptTypeType,\n Environment as EnvironmentType,\n ErrorCode as ErrorCodeType,\n} from './enums'\n","import { z } from 'zod'\n\nexport const ReceiptStatus = z.enum(['pending', 'completed', 'failed', 'timeout'])\nexport type ReceiptStatus = z.infer<typeof ReceiptStatus>\n\nexport const ReceiptType = z.enum(['action', 'verification', 'judgment', 'arbitration'])\nexport type ReceiptType = z.infer<typeof ReceiptType>\n\nexport const Environment = z.enum(['production', 'staging', 'test'])\nexport type Environment = z.infer<typeof Environment>\n\nexport const ErrorCode = z.enum([\n 'UNAUTHORIZED',\n 'KEY_REVOKED',\n 'FORBIDDEN',\n 'RECEIPT_NOT_FOUND',\n 'CHAIN_NOT_FOUND',\n 'AGENT_NOT_FOUND',\n 'RECEIPT_NOT_PENDING',\n 'RECEIPT_IMMUTABLE',\n 'RATE_LIMIT_EXCEEDED',\n 'VALIDATION_ERROR',\n 'INTERNAL_ERROR',\n])\nexport type ErrorCode = z.infer<typeof ErrorCode>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment } from './enums'\n\n/**\n * The 12 fields that are cryptographically signed.\n * These fields are extracted from a receipt and serialized as canonical JSON\n * before signing with Ed25519.\n */\nexport const SignablePayload = z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n org_id: z.string(),\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n status: ReceiptStatus,\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n})\nexport type SignablePayload = z.infer<typeof SignablePayload>\n\n/**\n * The complete receipt object as returned by the API.\n */\nexport const ActionReceipt = z.object({\n // Identity\n receipt_id: z.string(),\n parent_receipt_id: z.string().nullable(),\n chain_id: z.string(),\n\n // Type\n receipt_type: ReceiptType,\n\n // Who\n agent_id: z.string(),\n org_id: z.string(),\n\n // What\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n output_summary: z.string().nullable(),\n\n // How (all nullable — may not be known at creation)\n model: z.string().nullable(),\n tokens_in: z.number().int().nonnegative().nullable(),\n tokens_out: z.number().int().nonnegative().nullable(),\n cost_usd: z.number().nonnegative().nullable(),\n latency_ms: z.number().int().nonnegative().nullable(),\n tool_calls: z.array(z.string()).nullable(),\n\n // When\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n\n // Status\n status: ReceiptStatus,\n error: z.record(z.unknown()).nullable(),\n\n // Context\n environment: Environment,\n tags: z.array(z.string()).nullable(),\n\n // Verification (Tier 2 — Phase 6)\n constraints: z.record(z.unknown()).nullable(),\n constraint_result: z.record(z.unknown()).nullable(),\n\n // Trust\n signature: z.string(),\n verify_url: z.string().url(),\n\n // Optional\n callback_verified: z.boolean().nullable(),\n confidence: z.number().min(0).max(1).nullable(),\n metadata: z.record(z.unknown()),\n})\nexport type ActionReceipt = z.infer<typeof ActionReceipt>\n","import { z } from 'zod'\n\n/**\n * A single constraint definition that specifies a rule to evaluate.\n */\nexport const ConstraintDefinition = z.object({\n type: z.string().min(1),\n value: z.unknown(),\n message: z.string().optional(),\n})\nexport type ConstraintDefinition = z.infer<typeof ConstraintDefinition>\n\n/**\n * Result of evaluating a single constraint.\n */\nexport const SingleConstraintResult = z.object({\n type: z.string(),\n passed: z.boolean(),\n expected: z.unknown(),\n actual: z.unknown(),\n message: z.string().optional(),\n})\nexport type SingleConstraintResult = z.infer<typeof SingleConstraintResult>\n\n/**\n * Aggregate result of evaluating all constraints on a receipt.\n */\nexport const ConstraintResult = z.object({\n passed: z.boolean(),\n results: z.array(SingleConstraintResult),\n evaluated_at: z.string().datetime(),\n})\nexport type ConstraintResult = z.infer<typeof ConstraintResult>\n\n/**\n * Array of constraint definitions.\n */\nexport const ConstraintDefinitions = z.array(ConstraintDefinition)\nexport type ConstraintDefinitions = z.infer<typeof ConstraintDefinitions>\n","import { z } from 'zod'\n\nexport const RubricCriterion = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n weight: z.number().min(0).max(1),\n passing_threshold: z.number().min(0).max(1).optional(),\n examples: z.object({\n good: z.array(z.string()).optional(),\n bad: z.array(z.string()).optional(),\n }).optional(),\n})\nexport type RubricCriterion = z.infer<typeof RubricCriterion>\n\nexport const Rubric = z.object({\n version: z.string().default('1.0'),\n criteria: z.array(RubricCriterion).min(1),\n passing_threshold: z.number().min(0).max(1).default(0.7),\n require_all: z.boolean().default(false),\n})\nexport type Rubric = z.infer<typeof Rubric>\n\nexport const CriterionResult = z.object({\n criterion: z.string(),\n score: z.number().min(0).max(1),\n passed: z.boolean(),\n reasoning: z.string(),\n})\nexport type CriterionResult = z.infer<typeof CriterionResult>\n\nexport const JudgmentResult = z.object({\n verdict: z.enum(['pass', 'fail', 'partial']),\n score: z.number().min(0).max(1),\n criteria_results: z.array(CriterionResult),\n overall_reasoning: z.string(),\n rubric_version: z.string(),\n})\nexport type JudgmentResult = z.infer<typeof JudgmentResult>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n/**\n * What the client sends to POST /api/v1/receipts.\n */\nexport const CreateReceiptInput = z.object({\n // Required\n agent_id: z.string().min(1),\n action: z.string().min(1),\n input_hash: z.string().min(1),\n\n // Optional with defaults\n receipt_type: ReceiptType.default('action'),\n status: ReceiptStatus.default('pending'),\n environment: Environment.default('production'),\n\n // Optional\n parent_receipt_id: z.string().nullable().optional(),\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n metadata: z.record(z.unknown()).optional(),\n})\nexport type CreateReceiptInput = z.infer<typeof CreateReceiptInput>\n\n/**\n * What the client sends to PATCH /api/v1/receipts/:id/complete.\n */\nexport const CompleteReceiptInput = z.object({\n // Required — must transition from pending\n status: z.enum(['completed', 'failed', 'timeout']),\n\n // Execution results (all optional — set what you know)\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n error: z.record(z.unknown()).nullable().optional(),\n})\nexport type CompleteReceiptInput = z.infer<typeof CompleteReceiptInput>\n\n/**\n * What GET /api/v1/verify/:id returns.\n * Note: Does NOT include org_id, metadata, tags, or output_summary (org-private).\n */\nexport const VerifyResponse = z.object({\n verified: z.boolean(),\n receipt: z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n action: z.string(),\n status: ReceiptStatus,\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n signature: z.string(),\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n latency_ms: z.number().int().nonnegative().nullable(),\n }),\n signature_valid: z.boolean(),\n chain_length: z.number().int().nonnegative(),\n public_key_url: z.string().url(),\n})\nexport type VerifyResponse = z.infer<typeof VerifyResponse>\n\n/**\n * Query parameters for GET /api/v1/receipts.\n */\nexport const ListReceiptsQuery = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(50),\n agent_id: z.string().optional(),\n action: z.string().optional(),\n status: ReceiptStatus.optional(),\n environment: Environment.optional(),\n receipt_type: ReceiptType.optional(),\n chain_id: z.string().optional(),\n tag: z.string().optional(),\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n sort: z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default('created_at:desc'),\n})\nexport type ListReceiptsQuery = z.infer<typeof ListReceiptsQuery>\n\n/**\n * Pagination metadata included in list responses.\n */\nexport const PaginationMeta = z.object({\n page: z.number().int().positive(),\n limit: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n total_pages: z.number().int().nonnegative(),\n has_next: z.boolean(),\n has_prev: z.boolean(),\n})\nexport type PaginationMeta = z.infer<typeof PaginationMeta>\n\n/**\n * Standard error response format.\n */\nexport const ErrorResponse = z.object({\n error: z.object({\n code: ErrorCode,\n message: z.string(),\n status: z.number().int(),\n }),\n})\nexport type ErrorResponse = z.infer<typeof ErrorResponse>\n","import { z } from 'zod'\nimport type { ErrorResponse } from './api'\n\n/**\n * Validate data against a Zod schema.\n * Returns { success: true, data } or { success: false, error: ErrorResponse }\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: ErrorResponse } {\n const result = schema.safeParse(data)\n if (result.success) {\n return { success: true, data: result.data }\n }\n return {\n success: false,\n error: createErrorResponse(\n 'VALIDATION_ERROR',\n formatZodError(result.error),\n 400\n ),\n }\n}\n\n/**\n * Format Zod errors into a human-readable message.\n */\nexport function formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : ''\n return `${path}${issue.message}`\n })\n .join('; ')\n}\n\n/**\n * Create a standard error response object.\n */\nexport function createErrorResponse(\n code: string,\n message: string,\n status: number\n): ErrorResponse {\n return {\n error: {\n code: code as ErrorResponse['error']['code'],\n message,\n status,\n },\n }\n}\n"],"mappings":"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","names":["import_zod","import_zod","import_zod","import_zod"]}
|
package/dist/index.mjs
CHANGED
|
@@ -76,96 +76,149 @@ var ActionReceipt = z2.object({
|
|
|
76
76
|
metadata: z2.record(z2.unknown())
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
// src/
|
|
79
|
+
// src/constraints.ts
|
|
80
80
|
import { z as z3 } from "zod";
|
|
81
|
-
var
|
|
81
|
+
var ConstraintDefinition = z3.object({
|
|
82
|
+
type: z3.string().min(1),
|
|
83
|
+
value: z3.unknown(),
|
|
84
|
+
message: z3.string().optional()
|
|
85
|
+
});
|
|
86
|
+
var SingleConstraintResult = z3.object({
|
|
87
|
+
type: z3.string(),
|
|
88
|
+
passed: z3.boolean(),
|
|
89
|
+
expected: z3.unknown(),
|
|
90
|
+
actual: z3.unknown(),
|
|
91
|
+
message: z3.string().optional()
|
|
92
|
+
});
|
|
93
|
+
var ConstraintResult = z3.object({
|
|
94
|
+
passed: z3.boolean(),
|
|
95
|
+
results: z3.array(SingleConstraintResult),
|
|
96
|
+
evaluated_at: z3.string().datetime()
|
|
97
|
+
});
|
|
98
|
+
var ConstraintDefinitions = z3.array(ConstraintDefinition);
|
|
99
|
+
|
|
100
|
+
// src/rubric.ts
|
|
101
|
+
import { z as z4 } from "zod";
|
|
102
|
+
var RubricCriterion = z4.object({
|
|
103
|
+
name: z4.string().min(1),
|
|
104
|
+
description: z4.string().min(1),
|
|
105
|
+
weight: z4.number().min(0).max(1),
|
|
106
|
+
passing_threshold: z4.number().min(0).max(1).optional(),
|
|
107
|
+
examples: z4.object({
|
|
108
|
+
good: z4.array(z4.string()).optional(),
|
|
109
|
+
bad: z4.array(z4.string()).optional()
|
|
110
|
+
}).optional()
|
|
111
|
+
});
|
|
112
|
+
var Rubric = z4.object({
|
|
113
|
+
version: z4.string().default("1.0"),
|
|
114
|
+
criteria: z4.array(RubricCriterion).min(1),
|
|
115
|
+
passing_threshold: z4.number().min(0).max(1).default(0.7),
|
|
116
|
+
require_all: z4.boolean().default(false)
|
|
117
|
+
});
|
|
118
|
+
var CriterionResult = z4.object({
|
|
119
|
+
criterion: z4.string(),
|
|
120
|
+
score: z4.number().min(0).max(1),
|
|
121
|
+
passed: z4.boolean(),
|
|
122
|
+
reasoning: z4.string()
|
|
123
|
+
});
|
|
124
|
+
var JudgmentResult = z4.object({
|
|
125
|
+
verdict: z4.enum(["pass", "fail", "partial"]),
|
|
126
|
+
score: z4.number().min(0).max(1),
|
|
127
|
+
criteria_results: z4.array(CriterionResult),
|
|
128
|
+
overall_reasoning: z4.string(),
|
|
129
|
+
rubric_version: z4.string()
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// src/api.ts
|
|
133
|
+
import { z as z5 } from "zod";
|
|
134
|
+
var CreateReceiptInput = z5.object({
|
|
82
135
|
// Required
|
|
83
|
-
agent_id:
|
|
84
|
-
action:
|
|
85
|
-
input_hash:
|
|
136
|
+
agent_id: z5.string().min(1),
|
|
137
|
+
action: z5.string().min(1),
|
|
138
|
+
input_hash: z5.string().min(1),
|
|
86
139
|
// Optional with defaults
|
|
87
140
|
receipt_type: ReceiptType.default("action"),
|
|
88
141
|
status: ReceiptStatus.default("pending"),
|
|
89
142
|
environment: Environment.default("production"),
|
|
90
143
|
// Optional
|
|
91
|
-
parent_receipt_id:
|
|
92
|
-
output_hash:
|
|
93
|
-
output_summary:
|
|
94
|
-
model:
|
|
95
|
-
tokens_in:
|
|
96
|
-
tokens_out:
|
|
97
|
-
cost_usd:
|
|
98
|
-
latency_ms:
|
|
99
|
-
tool_calls:
|
|
100
|
-
tags:
|
|
101
|
-
confidence:
|
|
102
|
-
callback_verified:
|
|
103
|
-
metadata:
|
|
144
|
+
parent_receipt_id: z5.string().nullable().optional(),
|
|
145
|
+
output_hash: z5.string().nullable().optional(),
|
|
146
|
+
output_summary: z5.string().nullable().optional(),
|
|
147
|
+
model: z5.string().nullable().optional(),
|
|
148
|
+
tokens_in: z5.number().int().nonnegative().nullable().optional(),
|
|
149
|
+
tokens_out: z5.number().int().nonnegative().nullable().optional(),
|
|
150
|
+
cost_usd: z5.number().nonnegative().nullable().optional(),
|
|
151
|
+
latency_ms: z5.number().int().nonnegative().nullable().optional(),
|
|
152
|
+
tool_calls: z5.array(z5.string()).nullable().optional(),
|
|
153
|
+
tags: z5.array(z5.string()).nullable().optional(),
|
|
154
|
+
confidence: z5.number().min(0).max(1).nullable().optional(),
|
|
155
|
+
callback_verified: z5.boolean().nullable().optional(),
|
|
156
|
+
metadata: z5.record(z5.unknown()).optional()
|
|
104
157
|
});
|
|
105
|
-
var CompleteReceiptInput =
|
|
158
|
+
var CompleteReceiptInput = z5.object({
|
|
106
159
|
// Required — must transition from pending
|
|
107
|
-
status:
|
|
160
|
+
status: z5.enum(["completed", "failed", "timeout"]),
|
|
108
161
|
// Execution results (all optional — set what you know)
|
|
109
|
-
output_hash:
|
|
110
|
-
output_summary:
|
|
111
|
-
model:
|
|
112
|
-
tokens_in:
|
|
113
|
-
tokens_out:
|
|
114
|
-
cost_usd:
|
|
115
|
-
latency_ms:
|
|
116
|
-
tool_calls:
|
|
117
|
-
confidence:
|
|
118
|
-
callback_verified:
|
|
119
|
-
error:
|
|
162
|
+
output_hash: z5.string().nullable().optional(),
|
|
163
|
+
output_summary: z5.string().nullable().optional(),
|
|
164
|
+
model: z5.string().nullable().optional(),
|
|
165
|
+
tokens_in: z5.number().int().nonnegative().nullable().optional(),
|
|
166
|
+
tokens_out: z5.number().int().nonnegative().nullable().optional(),
|
|
167
|
+
cost_usd: z5.number().nonnegative().nullable().optional(),
|
|
168
|
+
latency_ms: z5.number().int().nonnegative().nullable().optional(),
|
|
169
|
+
tool_calls: z5.array(z5.string()).nullable().optional(),
|
|
170
|
+
confidence: z5.number().min(0).max(1).nullable().optional(),
|
|
171
|
+
callback_verified: z5.boolean().nullable().optional(),
|
|
172
|
+
error: z5.record(z5.unknown()).nullable().optional()
|
|
120
173
|
});
|
|
121
|
-
var VerifyResponse =
|
|
122
|
-
verified:
|
|
123
|
-
receipt:
|
|
124
|
-
receipt_id:
|
|
125
|
-
chain_id:
|
|
174
|
+
var VerifyResponse = z5.object({
|
|
175
|
+
verified: z5.boolean(),
|
|
176
|
+
receipt: z5.object({
|
|
177
|
+
receipt_id: z5.string(),
|
|
178
|
+
chain_id: z5.string(),
|
|
126
179
|
receipt_type: ReceiptType,
|
|
127
|
-
agent_id:
|
|
128
|
-
action:
|
|
180
|
+
agent_id: z5.string(),
|
|
181
|
+
action: z5.string(),
|
|
129
182
|
status: ReceiptStatus,
|
|
130
|
-
input_hash:
|
|
131
|
-
output_hash:
|
|
132
|
-
signature:
|
|
133
|
-
timestamp:
|
|
134
|
-
completed_at:
|
|
183
|
+
input_hash: z5.string(),
|
|
184
|
+
output_hash: z5.string().nullable(),
|
|
185
|
+
signature: z5.string(),
|
|
186
|
+
timestamp: z5.string().datetime(),
|
|
187
|
+
completed_at: z5.string().datetime().nullable(),
|
|
135
188
|
environment: Environment,
|
|
136
|
-
latency_ms:
|
|
189
|
+
latency_ms: z5.number().int().nonnegative().nullable()
|
|
137
190
|
}),
|
|
138
|
-
signature_valid:
|
|
139
|
-
chain_length:
|
|
140
|
-
public_key_url:
|
|
191
|
+
signature_valid: z5.boolean(),
|
|
192
|
+
chain_length: z5.number().int().nonnegative(),
|
|
193
|
+
public_key_url: z5.string().url()
|
|
141
194
|
});
|
|
142
|
-
var ListReceiptsQuery =
|
|
143
|
-
page:
|
|
144
|
-
limit:
|
|
145
|
-
agent_id:
|
|
146
|
-
action:
|
|
195
|
+
var ListReceiptsQuery = z5.object({
|
|
196
|
+
page: z5.coerce.number().int().positive().default(1),
|
|
197
|
+
limit: z5.coerce.number().int().positive().max(100).default(50),
|
|
198
|
+
agent_id: z5.string().optional(),
|
|
199
|
+
action: z5.string().optional(),
|
|
147
200
|
status: ReceiptStatus.optional(),
|
|
148
201
|
environment: Environment.optional(),
|
|
149
202
|
receipt_type: ReceiptType.optional(),
|
|
150
|
-
chain_id:
|
|
151
|
-
tag:
|
|
152
|
-
from:
|
|
153
|
-
to:
|
|
154
|
-
sort:
|
|
203
|
+
chain_id: z5.string().optional(),
|
|
204
|
+
tag: z5.string().optional(),
|
|
205
|
+
from: z5.string().datetime().optional(),
|
|
206
|
+
to: z5.string().datetime().optional(),
|
|
207
|
+
sort: z5.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")
|
|
155
208
|
});
|
|
156
|
-
var PaginationMeta =
|
|
157
|
-
page:
|
|
158
|
-
limit:
|
|
159
|
-
total:
|
|
160
|
-
total_pages:
|
|
161
|
-
has_next:
|
|
162
|
-
has_prev:
|
|
209
|
+
var PaginationMeta = z5.object({
|
|
210
|
+
page: z5.number().int().positive(),
|
|
211
|
+
limit: z5.number().int().positive(),
|
|
212
|
+
total: z5.number().int().nonnegative(),
|
|
213
|
+
total_pages: z5.number().int().nonnegative(),
|
|
214
|
+
has_next: z5.boolean(),
|
|
215
|
+
has_prev: z5.boolean()
|
|
163
216
|
});
|
|
164
|
-
var ErrorResponse =
|
|
165
|
-
error:
|
|
217
|
+
var ErrorResponse = z5.object({
|
|
218
|
+
error: z5.object({
|
|
166
219
|
code: ErrorCode,
|
|
167
|
-
message:
|
|
168
|
-
status:
|
|
220
|
+
message: z5.string(),
|
|
221
|
+
status: z5.number().int()
|
|
169
222
|
})
|
|
170
223
|
});
|
|
171
224
|
|
|
@@ -202,15 +255,23 @@ function createErrorResponse(code, message, status) {
|
|
|
202
255
|
export {
|
|
203
256
|
ActionReceipt,
|
|
204
257
|
CompleteReceiptInput,
|
|
258
|
+
ConstraintDefinition,
|
|
259
|
+
ConstraintDefinitions,
|
|
260
|
+
ConstraintResult,
|
|
205
261
|
CreateReceiptInput,
|
|
262
|
+
CriterionResult,
|
|
206
263
|
Environment,
|
|
207
264
|
ErrorCode,
|
|
208
265
|
ErrorResponse,
|
|
266
|
+
JudgmentResult,
|
|
209
267
|
ListReceiptsQuery,
|
|
210
268
|
PaginationMeta,
|
|
211
269
|
ReceiptStatus,
|
|
212
270
|
ReceiptType,
|
|
271
|
+
Rubric,
|
|
272
|
+
RubricCriterion,
|
|
213
273
|
SignablePayload,
|
|
274
|
+
SingleConstraintResult,
|
|
214
275
|
VerifyResponse,
|
|
215
276
|
createErrorResponse,
|
|
216
277
|
formatZodError,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/enums.ts","../src/receipt.ts","../src/api.ts","../src/validation.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const ReceiptStatus = z.enum(['pending', 'completed', 'failed', 'timeout'])\nexport type ReceiptStatus = z.infer<typeof ReceiptStatus>\n\nexport const ReceiptType = z.enum(['action', 'verification', 'judgment', 'arbitration'])\nexport type ReceiptType = z.infer<typeof ReceiptType>\n\nexport const Environment = z.enum(['production', 'staging', 'test'])\nexport type Environment = z.infer<typeof Environment>\n\nexport const ErrorCode = z.enum([\n 'UNAUTHORIZED',\n 'KEY_REVOKED',\n 'FORBIDDEN',\n 'RECEIPT_NOT_FOUND',\n 'CHAIN_NOT_FOUND',\n 'AGENT_NOT_FOUND',\n 'RECEIPT_NOT_PENDING',\n 'RECEIPT_IMMUTABLE',\n 'RATE_LIMIT_EXCEEDED',\n 'VALIDATION_ERROR',\n 'INTERNAL_ERROR',\n])\nexport type ErrorCode = z.infer<typeof ErrorCode>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment } from './enums'\n\n/**\n * The 12 fields that are cryptographically signed.\n * These fields are extracted from a receipt and serialized as canonical JSON\n * before signing with Ed25519.\n */\nexport const SignablePayload = z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n org_id: z.string(),\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n status: ReceiptStatus,\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n})\nexport type SignablePayload = z.infer<typeof SignablePayload>\n\n/**\n * The complete receipt object as returned by the API.\n */\nexport const ActionReceipt = z.object({\n // Identity\n receipt_id: z.string(),\n parent_receipt_id: z.string().nullable(),\n chain_id: z.string(),\n\n // Type\n receipt_type: ReceiptType,\n\n // Who\n agent_id: z.string(),\n org_id: z.string(),\n\n // What\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n output_summary: z.string().nullable(),\n\n // How (all nullable — may not be known at creation)\n model: z.string().nullable(),\n tokens_in: z.number().int().nonnegative().nullable(),\n tokens_out: z.number().int().nonnegative().nullable(),\n cost_usd: z.number().nonnegative().nullable(),\n latency_ms: z.number().int().nonnegative().nullable(),\n tool_calls: z.array(z.string()).nullable(),\n\n // When\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n\n // Status\n status: ReceiptStatus,\n error: z.record(z.unknown()).nullable(),\n\n // Context\n environment: Environment,\n tags: z.array(z.string()).nullable(),\n\n // Verification (Tier 2 — Phase 6)\n constraints: z.record(z.unknown()).nullable(),\n constraint_result: z.record(z.unknown()).nullable(),\n\n // Trust\n signature: z.string(),\n verify_url: z.string().url(),\n\n // Optional\n callback_verified: z.boolean().nullable(),\n confidence: z.number().min(0).max(1).nullable(),\n metadata: z.record(z.unknown()),\n})\nexport type ActionReceipt = z.infer<typeof ActionReceipt>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n/**\n * What the client sends to POST /api/v1/receipts.\n */\nexport const CreateReceiptInput = z.object({\n // Required\n agent_id: z.string().min(1),\n action: z.string().min(1),\n input_hash: z.string().min(1),\n\n // Optional with defaults\n receipt_type: ReceiptType.default('action'),\n status: ReceiptStatus.default('pending'),\n environment: Environment.default('production'),\n\n // Optional\n parent_receipt_id: z.string().nullable().optional(),\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n metadata: z.record(z.unknown()).optional(),\n})\nexport type CreateReceiptInput = z.infer<typeof CreateReceiptInput>\n\n/**\n * What the client sends to PATCH /api/v1/receipts/:id/complete.\n */\nexport const CompleteReceiptInput = z.object({\n // Required — must transition from pending\n status: z.enum(['completed', 'failed', 'timeout']),\n\n // Execution results (all optional — set what you know)\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n error: z.record(z.unknown()).nullable().optional(),\n})\nexport type CompleteReceiptInput = z.infer<typeof CompleteReceiptInput>\n\n/**\n * What GET /api/v1/verify/:id returns.\n * Note: Does NOT include org_id, metadata, tags, or output_summary (org-private).\n */\nexport const VerifyResponse = z.object({\n verified: z.boolean(),\n receipt: z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n action: z.string(),\n status: ReceiptStatus,\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n signature: z.string(),\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n latency_ms: z.number().int().nonnegative().nullable(),\n }),\n signature_valid: z.boolean(),\n chain_length: z.number().int().nonnegative(),\n public_key_url: z.string().url(),\n})\nexport type VerifyResponse = z.infer<typeof VerifyResponse>\n\n/**\n * Query parameters for GET /api/v1/receipts.\n */\nexport const ListReceiptsQuery = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(50),\n agent_id: z.string().optional(),\n action: z.string().optional(),\n status: ReceiptStatus.optional(),\n environment: Environment.optional(),\n receipt_type: ReceiptType.optional(),\n chain_id: z.string().optional(),\n tag: z.string().optional(),\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n sort: z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default('created_at:desc'),\n})\nexport type ListReceiptsQuery = z.infer<typeof ListReceiptsQuery>\n\n/**\n * Pagination metadata included in list responses.\n */\nexport const PaginationMeta = z.object({\n page: z.number().int().positive(),\n limit: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n total_pages: z.number().int().nonnegative(),\n has_next: z.boolean(),\n has_prev: z.boolean(),\n})\nexport type PaginationMeta = z.infer<typeof PaginationMeta>\n\n/**\n * Standard error response format.\n */\nexport const ErrorResponse = z.object({\n error: z.object({\n code: ErrorCode,\n message: z.string(),\n status: z.number().int(),\n }),\n})\nexport type ErrorResponse = z.infer<typeof ErrorResponse>\n","import { z } from 'zod'\nimport type { ErrorResponse } from './api'\n\n/**\n * Validate data against a Zod schema.\n * Returns { success: true, data } or { success: false, error: ErrorResponse }\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: ErrorResponse } {\n const result = schema.safeParse(data)\n if (result.success) {\n return { success: true, data: result.data }\n }\n return {\n success: false,\n error: createErrorResponse(\n 'VALIDATION_ERROR',\n formatZodError(result.error),\n 400\n ),\n }\n}\n\n/**\n * Format Zod errors into a human-readable message.\n */\nexport function formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : ''\n return `${path}${issue.message}`\n })\n .join('; ')\n}\n\n/**\n * Create a standard error response object.\n */\nexport function createErrorResponse(\n code: string,\n message: string,\n status: number\n): ErrorResponse {\n return {\n error: {\n code: code as ErrorResponse['error']['code'],\n message,\n status,\n },\n }\n}\n"],"mappings":"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","names":["z","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/enums.ts","../src/receipt.ts","../src/constraints.ts","../src/rubric.ts","../src/api.ts","../src/validation.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const ReceiptStatus = z.enum(['pending', 'completed', 'failed', 'timeout'])\nexport type ReceiptStatus = z.infer<typeof ReceiptStatus>\n\nexport const ReceiptType = z.enum(['action', 'verification', 'judgment', 'arbitration'])\nexport type ReceiptType = z.infer<typeof ReceiptType>\n\nexport const Environment = z.enum(['production', 'staging', 'test'])\nexport type Environment = z.infer<typeof Environment>\n\nexport const ErrorCode = z.enum([\n 'UNAUTHORIZED',\n 'KEY_REVOKED',\n 'FORBIDDEN',\n 'RECEIPT_NOT_FOUND',\n 'CHAIN_NOT_FOUND',\n 'AGENT_NOT_FOUND',\n 'RECEIPT_NOT_PENDING',\n 'RECEIPT_IMMUTABLE',\n 'RATE_LIMIT_EXCEEDED',\n 'VALIDATION_ERROR',\n 'INTERNAL_ERROR',\n])\nexport type ErrorCode = z.infer<typeof ErrorCode>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment } from './enums'\n\n/**\n * The 12 fields that are cryptographically signed.\n * These fields are extracted from a receipt and serialized as canonical JSON\n * before signing with Ed25519.\n */\nexport const SignablePayload = z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n org_id: z.string(),\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n status: ReceiptStatus,\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n})\nexport type SignablePayload = z.infer<typeof SignablePayload>\n\n/**\n * The complete receipt object as returned by the API.\n */\nexport const ActionReceipt = z.object({\n // Identity\n receipt_id: z.string(),\n parent_receipt_id: z.string().nullable(),\n chain_id: z.string(),\n\n // Type\n receipt_type: ReceiptType,\n\n // Who\n agent_id: z.string(),\n org_id: z.string(),\n\n // What\n action: z.string(),\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n output_summary: z.string().nullable(),\n\n // How (all nullable — may not be known at creation)\n model: z.string().nullable(),\n tokens_in: z.number().int().nonnegative().nullable(),\n tokens_out: z.number().int().nonnegative().nullable(),\n cost_usd: z.number().nonnegative().nullable(),\n latency_ms: z.number().int().nonnegative().nullable(),\n tool_calls: z.array(z.string()).nullable(),\n\n // When\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n\n // Status\n status: ReceiptStatus,\n error: z.record(z.unknown()).nullable(),\n\n // Context\n environment: Environment,\n tags: z.array(z.string()).nullable(),\n\n // Verification (Tier 2 — Phase 6)\n constraints: z.record(z.unknown()).nullable(),\n constraint_result: z.record(z.unknown()).nullable(),\n\n // Trust\n signature: z.string(),\n verify_url: z.string().url(),\n\n // Optional\n callback_verified: z.boolean().nullable(),\n confidence: z.number().min(0).max(1).nullable(),\n metadata: z.record(z.unknown()),\n})\nexport type ActionReceipt = z.infer<typeof ActionReceipt>\n","import { z } from 'zod'\n\n/**\n * A single constraint definition that specifies a rule to evaluate.\n */\nexport const ConstraintDefinition = z.object({\n type: z.string().min(1),\n value: z.unknown(),\n message: z.string().optional(),\n})\nexport type ConstraintDefinition = z.infer<typeof ConstraintDefinition>\n\n/**\n * Result of evaluating a single constraint.\n */\nexport const SingleConstraintResult = z.object({\n type: z.string(),\n passed: z.boolean(),\n expected: z.unknown(),\n actual: z.unknown(),\n message: z.string().optional(),\n})\nexport type SingleConstraintResult = z.infer<typeof SingleConstraintResult>\n\n/**\n * Aggregate result of evaluating all constraints on a receipt.\n */\nexport const ConstraintResult = z.object({\n passed: z.boolean(),\n results: z.array(SingleConstraintResult),\n evaluated_at: z.string().datetime(),\n})\nexport type ConstraintResult = z.infer<typeof ConstraintResult>\n\n/**\n * Array of constraint definitions.\n */\nexport const ConstraintDefinitions = z.array(ConstraintDefinition)\nexport type ConstraintDefinitions = z.infer<typeof ConstraintDefinitions>\n","import { z } from 'zod'\n\nexport const RubricCriterion = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n weight: z.number().min(0).max(1),\n passing_threshold: z.number().min(0).max(1).optional(),\n examples: z.object({\n good: z.array(z.string()).optional(),\n bad: z.array(z.string()).optional(),\n }).optional(),\n})\nexport type RubricCriterion = z.infer<typeof RubricCriterion>\n\nexport const Rubric = z.object({\n version: z.string().default('1.0'),\n criteria: z.array(RubricCriterion).min(1),\n passing_threshold: z.number().min(0).max(1).default(0.7),\n require_all: z.boolean().default(false),\n})\nexport type Rubric = z.infer<typeof Rubric>\n\nexport const CriterionResult = z.object({\n criterion: z.string(),\n score: z.number().min(0).max(1),\n passed: z.boolean(),\n reasoning: z.string(),\n})\nexport type CriterionResult = z.infer<typeof CriterionResult>\n\nexport const JudgmentResult = z.object({\n verdict: z.enum(['pass', 'fail', 'partial']),\n score: z.number().min(0).max(1),\n criteria_results: z.array(CriterionResult),\n overall_reasoning: z.string(),\n rubric_version: z.string(),\n})\nexport type JudgmentResult = z.infer<typeof JudgmentResult>\n","import { z } from 'zod'\nimport { ReceiptStatus, ReceiptType, Environment, ErrorCode } from './enums'\n\n/**\n * What the client sends to POST /api/v1/receipts.\n */\nexport const CreateReceiptInput = z.object({\n // Required\n agent_id: z.string().min(1),\n action: z.string().min(1),\n input_hash: z.string().min(1),\n\n // Optional with defaults\n receipt_type: ReceiptType.default('action'),\n status: ReceiptStatus.default('pending'),\n environment: Environment.default('production'),\n\n // Optional\n parent_receipt_id: z.string().nullable().optional(),\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n metadata: z.record(z.unknown()).optional(),\n})\nexport type CreateReceiptInput = z.infer<typeof CreateReceiptInput>\n\n/**\n * What the client sends to PATCH /api/v1/receipts/:id/complete.\n */\nexport const CompleteReceiptInput = z.object({\n // Required — must transition from pending\n status: z.enum(['completed', 'failed', 'timeout']),\n\n // Execution results (all optional — set what you know)\n output_hash: z.string().nullable().optional(),\n output_summary: z.string().nullable().optional(),\n model: z.string().nullable().optional(),\n tokens_in: z.number().int().nonnegative().nullable().optional(),\n tokens_out: z.number().int().nonnegative().nullable().optional(),\n cost_usd: z.number().nonnegative().nullable().optional(),\n latency_ms: z.number().int().nonnegative().nullable().optional(),\n tool_calls: z.array(z.string()).nullable().optional(),\n confidence: z.number().min(0).max(1).nullable().optional(),\n callback_verified: z.boolean().nullable().optional(),\n error: z.record(z.unknown()).nullable().optional(),\n})\nexport type CompleteReceiptInput = z.infer<typeof CompleteReceiptInput>\n\n/**\n * What GET /api/v1/verify/:id returns.\n * Note: Does NOT include org_id, metadata, tags, or output_summary (org-private).\n */\nexport const VerifyResponse = z.object({\n verified: z.boolean(),\n receipt: z.object({\n receipt_id: z.string(),\n chain_id: z.string(),\n receipt_type: ReceiptType,\n agent_id: z.string(),\n action: z.string(),\n status: ReceiptStatus,\n input_hash: z.string(),\n output_hash: z.string().nullable(),\n signature: z.string(),\n timestamp: z.string().datetime(),\n completed_at: z.string().datetime().nullable(),\n environment: Environment,\n latency_ms: z.number().int().nonnegative().nullable(),\n }),\n signature_valid: z.boolean(),\n chain_length: z.number().int().nonnegative(),\n public_key_url: z.string().url(),\n})\nexport type VerifyResponse = z.infer<typeof VerifyResponse>\n\n/**\n * Query parameters for GET /api/v1/receipts.\n */\nexport const ListReceiptsQuery = z.object({\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().positive().max(100).default(50),\n agent_id: z.string().optional(),\n action: z.string().optional(),\n status: ReceiptStatus.optional(),\n environment: Environment.optional(),\n receipt_type: ReceiptType.optional(),\n chain_id: z.string().optional(),\n tag: z.string().optional(),\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n sort: z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default('created_at:desc'),\n})\nexport type ListReceiptsQuery = z.infer<typeof ListReceiptsQuery>\n\n/**\n * Pagination metadata included in list responses.\n */\nexport const PaginationMeta = z.object({\n page: z.number().int().positive(),\n limit: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n total_pages: z.number().int().nonnegative(),\n has_next: z.boolean(),\n has_prev: z.boolean(),\n})\nexport type PaginationMeta = z.infer<typeof PaginationMeta>\n\n/**\n * Standard error response format.\n */\nexport const ErrorResponse = z.object({\n error: z.object({\n code: ErrorCode,\n message: z.string(),\n status: z.number().int(),\n }),\n})\nexport type ErrorResponse = z.infer<typeof ErrorResponse>\n","import { z } from 'zod'\nimport type { ErrorResponse } from './api'\n\n/**\n * Validate data against a Zod schema.\n * Returns { success: true, data } or { success: false, error: ErrorResponse }\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: ErrorResponse } {\n const result = schema.safeParse(data)\n if (result.success) {\n return { success: true, data: result.data }\n }\n return {\n success: false,\n error: createErrorResponse(\n 'VALIDATION_ERROR',\n formatZodError(result.error),\n 400\n ),\n }\n}\n\n/**\n * Format Zod errors into a human-readable message.\n */\nexport function formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : ''\n return `${path}${issue.message}`\n })\n .join('; ')\n}\n\n/**\n * Create a standard error response object.\n */\nexport function createErrorResponse(\n code: string,\n message: string,\n status: number\n): ErrorResponse {\n return {\n error: {\n code: code as ErrorResponse['error']['code'],\n message,\n status,\n },\n }\n}\n"],"mappings":"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","names":["z","z","z","z","z","z"]}
|
package/package.json
CHANGED