@agent-receipts/schema 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/index.d.mts +479 -0
- package/dist/index.d.ts +479 -0
- package/dist/index.js +260 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +219 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +57 -0
- package/receipt.schema.json +258 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
ActionReceipt: () => ActionReceipt,
|
|
24
|
+
CompleteReceiptInput: () => CompleteReceiptInput,
|
|
25
|
+
CreateReceiptInput: () => CreateReceiptInput,
|
|
26
|
+
Environment: () => Environment,
|
|
27
|
+
ErrorCode: () => ErrorCode,
|
|
28
|
+
ErrorResponse: () => ErrorResponse,
|
|
29
|
+
ListReceiptsQuery: () => ListReceiptsQuery,
|
|
30
|
+
PaginationMeta: () => PaginationMeta,
|
|
31
|
+
ReceiptStatus: () => ReceiptStatus,
|
|
32
|
+
ReceiptType: () => ReceiptType,
|
|
33
|
+
SignablePayload: () => SignablePayload,
|
|
34
|
+
VerifyResponse: () => VerifyResponse,
|
|
35
|
+
createErrorResponse: () => createErrorResponse,
|
|
36
|
+
formatZodError: () => formatZodError,
|
|
37
|
+
validate: () => validate
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(index_exports);
|
|
40
|
+
|
|
41
|
+
// src/enums.ts
|
|
42
|
+
var import_zod = require("zod");
|
|
43
|
+
var ReceiptStatus = import_zod.z.enum(["pending", "completed", "failed", "timeout"]);
|
|
44
|
+
var ReceiptType = import_zod.z.enum(["action", "verification", "judgment", "arbitration"]);
|
|
45
|
+
var Environment = import_zod.z.enum(["production", "staging", "test"]);
|
|
46
|
+
var ErrorCode = import_zod.z.enum([
|
|
47
|
+
"UNAUTHORIZED",
|
|
48
|
+
"KEY_REVOKED",
|
|
49
|
+
"FORBIDDEN",
|
|
50
|
+
"RECEIPT_NOT_FOUND",
|
|
51
|
+
"CHAIN_NOT_FOUND",
|
|
52
|
+
"AGENT_NOT_FOUND",
|
|
53
|
+
"RECEIPT_NOT_PENDING",
|
|
54
|
+
"RECEIPT_IMMUTABLE",
|
|
55
|
+
"RATE_LIMIT_EXCEEDED",
|
|
56
|
+
"VALIDATION_ERROR",
|
|
57
|
+
"INTERNAL_ERROR"
|
|
58
|
+
]);
|
|
59
|
+
|
|
60
|
+
// src/receipt.ts
|
|
61
|
+
var import_zod2 = require("zod");
|
|
62
|
+
var SignablePayload = import_zod2.z.object({
|
|
63
|
+
receipt_id: import_zod2.z.string(),
|
|
64
|
+
chain_id: import_zod2.z.string(),
|
|
65
|
+
receipt_type: ReceiptType,
|
|
66
|
+
agent_id: import_zod2.z.string(),
|
|
67
|
+
org_id: import_zod2.z.string(),
|
|
68
|
+
action: import_zod2.z.string(),
|
|
69
|
+
input_hash: import_zod2.z.string(),
|
|
70
|
+
output_hash: import_zod2.z.string().nullable(),
|
|
71
|
+
status: ReceiptStatus,
|
|
72
|
+
timestamp: import_zod2.z.string().datetime(),
|
|
73
|
+
completed_at: import_zod2.z.string().datetime().nullable(),
|
|
74
|
+
environment: Environment
|
|
75
|
+
});
|
|
76
|
+
var ActionReceipt = import_zod2.z.object({
|
|
77
|
+
// Identity
|
|
78
|
+
receipt_id: import_zod2.z.string(),
|
|
79
|
+
parent_receipt_id: import_zod2.z.string().nullable(),
|
|
80
|
+
chain_id: import_zod2.z.string(),
|
|
81
|
+
// Type
|
|
82
|
+
receipt_type: ReceiptType,
|
|
83
|
+
// Who
|
|
84
|
+
agent_id: import_zod2.z.string(),
|
|
85
|
+
org_id: import_zod2.z.string(),
|
|
86
|
+
// What
|
|
87
|
+
action: import_zod2.z.string(),
|
|
88
|
+
input_hash: import_zod2.z.string(),
|
|
89
|
+
output_hash: import_zod2.z.string().nullable(),
|
|
90
|
+
output_summary: import_zod2.z.string().nullable(),
|
|
91
|
+
// How (all nullable — may not be known at creation)
|
|
92
|
+
model: import_zod2.z.string().nullable(),
|
|
93
|
+
tokens_in: import_zod2.z.number().int().nonnegative().nullable(),
|
|
94
|
+
tokens_out: import_zod2.z.number().int().nonnegative().nullable(),
|
|
95
|
+
cost_usd: import_zod2.z.number().nonnegative().nullable(),
|
|
96
|
+
latency_ms: import_zod2.z.number().int().nonnegative().nullable(),
|
|
97
|
+
tool_calls: import_zod2.z.array(import_zod2.z.string()).nullable(),
|
|
98
|
+
// When
|
|
99
|
+
timestamp: import_zod2.z.string().datetime(),
|
|
100
|
+
completed_at: import_zod2.z.string().datetime().nullable(),
|
|
101
|
+
// Status
|
|
102
|
+
status: ReceiptStatus,
|
|
103
|
+
error: import_zod2.z.record(import_zod2.z.unknown()).nullable(),
|
|
104
|
+
// Context
|
|
105
|
+
environment: Environment,
|
|
106
|
+
tags: import_zod2.z.array(import_zod2.z.string()).nullable(),
|
|
107
|
+
// Verification (Tier 2 — Phase 6)
|
|
108
|
+
constraints: import_zod2.z.record(import_zod2.z.unknown()).nullable(),
|
|
109
|
+
constraint_result: import_zod2.z.record(import_zod2.z.unknown()).nullable(),
|
|
110
|
+
// Trust
|
|
111
|
+
signature: import_zod2.z.string(),
|
|
112
|
+
verify_url: import_zod2.z.string().url(),
|
|
113
|
+
// Optional
|
|
114
|
+
callback_verified: import_zod2.z.boolean().nullable(),
|
|
115
|
+
confidence: import_zod2.z.number().min(0).max(1).nullable(),
|
|
116
|
+
metadata: import_zod2.z.record(import_zod2.z.unknown())
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// src/api.ts
|
|
120
|
+
var import_zod3 = require("zod");
|
|
121
|
+
var CreateReceiptInput = import_zod3.z.object({
|
|
122
|
+
// Required
|
|
123
|
+
agent_id: import_zod3.z.string().min(1),
|
|
124
|
+
action: import_zod3.z.string().min(1),
|
|
125
|
+
input_hash: import_zod3.z.string().min(1),
|
|
126
|
+
// Optional with defaults
|
|
127
|
+
receipt_type: ReceiptType.default("action"),
|
|
128
|
+
status: ReceiptStatus.default("pending"),
|
|
129
|
+
environment: Environment.default("production"),
|
|
130
|
+
// Optional
|
|
131
|
+
parent_receipt_id: import_zod3.z.string().nullable().optional(),
|
|
132
|
+
output_hash: import_zod3.z.string().nullable().optional(),
|
|
133
|
+
output_summary: import_zod3.z.string().nullable().optional(),
|
|
134
|
+
model: import_zod3.z.string().nullable().optional(),
|
|
135
|
+
tokens_in: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
136
|
+
tokens_out: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
137
|
+
cost_usd: import_zod3.z.number().nonnegative().nullable().optional(),
|
|
138
|
+
latency_ms: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
139
|
+
tool_calls: import_zod3.z.array(import_zod3.z.string()).nullable().optional(),
|
|
140
|
+
tags: import_zod3.z.array(import_zod3.z.string()).nullable().optional(),
|
|
141
|
+
confidence: import_zod3.z.number().min(0).max(1).nullable().optional(),
|
|
142
|
+
callback_verified: import_zod3.z.boolean().nullable().optional(),
|
|
143
|
+
metadata: import_zod3.z.record(import_zod3.z.unknown()).optional()
|
|
144
|
+
});
|
|
145
|
+
var CompleteReceiptInput = import_zod3.z.object({
|
|
146
|
+
// Required — must transition from pending
|
|
147
|
+
status: import_zod3.z.enum(["completed", "failed", "timeout"]),
|
|
148
|
+
// Execution results (all optional — set what you know)
|
|
149
|
+
output_hash: import_zod3.z.string().nullable().optional(),
|
|
150
|
+
output_summary: import_zod3.z.string().nullable().optional(),
|
|
151
|
+
model: import_zod3.z.string().nullable().optional(),
|
|
152
|
+
tokens_in: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
153
|
+
tokens_out: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
154
|
+
cost_usd: import_zod3.z.number().nonnegative().nullable().optional(),
|
|
155
|
+
latency_ms: import_zod3.z.number().int().nonnegative().nullable().optional(),
|
|
156
|
+
tool_calls: import_zod3.z.array(import_zod3.z.string()).nullable().optional(),
|
|
157
|
+
confidence: import_zod3.z.number().min(0).max(1).nullable().optional(),
|
|
158
|
+
callback_verified: import_zod3.z.boolean().nullable().optional(),
|
|
159
|
+
error: import_zod3.z.record(import_zod3.z.unknown()).nullable().optional()
|
|
160
|
+
});
|
|
161
|
+
var VerifyResponse = import_zod3.z.object({
|
|
162
|
+
verified: import_zod3.z.boolean(),
|
|
163
|
+
receipt: import_zod3.z.object({
|
|
164
|
+
receipt_id: import_zod3.z.string(),
|
|
165
|
+
chain_id: import_zod3.z.string(),
|
|
166
|
+
receipt_type: ReceiptType,
|
|
167
|
+
agent_id: import_zod3.z.string(),
|
|
168
|
+
action: import_zod3.z.string(),
|
|
169
|
+
status: ReceiptStatus,
|
|
170
|
+
input_hash: import_zod3.z.string(),
|
|
171
|
+
output_hash: import_zod3.z.string().nullable(),
|
|
172
|
+
signature: import_zod3.z.string(),
|
|
173
|
+
timestamp: import_zod3.z.string().datetime(),
|
|
174
|
+
completed_at: import_zod3.z.string().datetime().nullable(),
|
|
175
|
+
environment: Environment,
|
|
176
|
+
latency_ms: import_zod3.z.number().int().nonnegative().nullable()
|
|
177
|
+
}),
|
|
178
|
+
signature_valid: import_zod3.z.boolean(),
|
|
179
|
+
chain_length: import_zod3.z.number().int().nonnegative(),
|
|
180
|
+
public_key_url: import_zod3.z.string().url()
|
|
181
|
+
});
|
|
182
|
+
var ListReceiptsQuery = import_zod3.z.object({
|
|
183
|
+
page: import_zod3.z.coerce.number().int().positive().default(1),
|
|
184
|
+
limit: import_zod3.z.coerce.number().int().positive().max(100).default(50),
|
|
185
|
+
agent_id: import_zod3.z.string().optional(),
|
|
186
|
+
action: import_zod3.z.string().optional(),
|
|
187
|
+
status: ReceiptStatus.optional(),
|
|
188
|
+
environment: Environment.optional(),
|
|
189
|
+
receipt_type: ReceiptType.optional(),
|
|
190
|
+
chain_id: import_zod3.z.string().optional(),
|
|
191
|
+
tag: import_zod3.z.string().optional(),
|
|
192
|
+
from: import_zod3.z.string().datetime().optional(),
|
|
193
|
+
to: import_zod3.z.string().datetime().optional(),
|
|
194
|
+
sort: import_zod3.z.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")
|
|
195
|
+
});
|
|
196
|
+
var PaginationMeta = import_zod3.z.object({
|
|
197
|
+
page: import_zod3.z.number().int().positive(),
|
|
198
|
+
limit: import_zod3.z.number().int().positive(),
|
|
199
|
+
total: import_zod3.z.number().int().nonnegative(),
|
|
200
|
+
total_pages: import_zod3.z.number().int().nonnegative(),
|
|
201
|
+
has_next: import_zod3.z.boolean(),
|
|
202
|
+
has_prev: import_zod3.z.boolean()
|
|
203
|
+
});
|
|
204
|
+
var ErrorResponse = import_zod3.z.object({
|
|
205
|
+
error: import_zod3.z.object({
|
|
206
|
+
code: ErrorCode,
|
|
207
|
+
message: import_zod3.z.string(),
|
|
208
|
+
status: import_zod3.z.number().int()
|
|
209
|
+
})
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// src/validation.ts
|
|
213
|
+
function validate(schema, data) {
|
|
214
|
+
const result = schema.safeParse(data);
|
|
215
|
+
if (result.success) {
|
|
216
|
+
return { success: true, data: result.data };
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
success: false,
|
|
220
|
+
error: createErrorResponse(
|
|
221
|
+
"VALIDATION_ERROR",
|
|
222
|
+
formatZodError(result.error),
|
|
223
|
+
400
|
|
224
|
+
)
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function formatZodError(error) {
|
|
228
|
+
return error.issues.map((issue) => {
|
|
229
|
+
const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
|
|
230
|
+
return `${path}${issue.message}`;
|
|
231
|
+
}).join("; ");
|
|
232
|
+
}
|
|
233
|
+
function createErrorResponse(code, message, status) {
|
|
234
|
+
return {
|
|
235
|
+
error: {
|
|
236
|
+
code,
|
|
237
|
+
message,
|
|
238
|
+
status
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
243
|
+
0 && (module.exports = {
|
|
244
|
+
ActionReceipt,
|
|
245
|
+
CompleteReceiptInput,
|
|
246
|
+
CreateReceiptInput,
|
|
247
|
+
Environment,
|
|
248
|
+
ErrorCode,
|
|
249
|
+
ErrorResponse,
|
|
250
|
+
ListReceiptsQuery,
|
|
251
|
+
PaginationMeta,
|
|
252
|
+
ReceiptStatus,
|
|
253
|
+
ReceiptType,
|
|
254
|
+
SignablePayload,
|
|
255
|
+
VerifyResponse,
|
|
256
|
+
createErrorResponse,
|
|
257
|
+
formatZodError,
|
|
258
|
+
validate
|
|
259
|
+
});
|
|
260
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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":"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","names":["import_zod","import_zod"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
// src/enums.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var ReceiptStatus = z.enum(["pending", "completed", "failed", "timeout"]);
|
|
4
|
+
var ReceiptType = z.enum(["action", "verification", "judgment", "arbitration"]);
|
|
5
|
+
var Environment = z.enum(["production", "staging", "test"]);
|
|
6
|
+
var ErrorCode = z.enum([
|
|
7
|
+
"UNAUTHORIZED",
|
|
8
|
+
"KEY_REVOKED",
|
|
9
|
+
"FORBIDDEN",
|
|
10
|
+
"RECEIPT_NOT_FOUND",
|
|
11
|
+
"CHAIN_NOT_FOUND",
|
|
12
|
+
"AGENT_NOT_FOUND",
|
|
13
|
+
"RECEIPT_NOT_PENDING",
|
|
14
|
+
"RECEIPT_IMMUTABLE",
|
|
15
|
+
"RATE_LIMIT_EXCEEDED",
|
|
16
|
+
"VALIDATION_ERROR",
|
|
17
|
+
"INTERNAL_ERROR"
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
// src/receipt.ts
|
|
21
|
+
import { z as z2 } from "zod";
|
|
22
|
+
var SignablePayload = z2.object({
|
|
23
|
+
receipt_id: z2.string(),
|
|
24
|
+
chain_id: z2.string(),
|
|
25
|
+
receipt_type: ReceiptType,
|
|
26
|
+
agent_id: z2.string(),
|
|
27
|
+
org_id: z2.string(),
|
|
28
|
+
action: z2.string(),
|
|
29
|
+
input_hash: z2.string(),
|
|
30
|
+
output_hash: z2.string().nullable(),
|
|
31
|
+
status: ReceiptStatus,
|
|
32
|
+
timestamp: z2.string().datetime(),
|
|
33
|
+
completed_at: z2.string().datetime().nullable(),
|
|
34
|
+
environment: Environment
|
|
35
|
+
});
|
|
36
|
+
var ActionReceipt = z2.object({
|
|
37
|
+
// Identity
|
|
38
|
+
receipt_id: z2.string(),
|
|
39
|
+
parent_receipt_id: z2.string().nullable(),
|
|
40
|
+
chain_id: z2.string(),
|
|
41
|
+
// Type
|
|
42
|
+
receipt_type: ReceiptType,
|
|
43
|
+
// Who
|
|
44
|
+
agent_id: z2.string(),
|
|
45
|
+
org_id: z2.string(),
|
|
46
|
+
// What
|
|
47
|
+
action: z2.string(),
|
|
48
|
+
input_hash: z2.string(),
|
|
49
|
+
output_hash: z2.string().nullable(),
|
|
50
|
+
output_summary: z2.string().nullable(),
|
|
51
|
+
// How (all nullable — may not be known at creation)
|
|
52
|
+
model: z2.string().nullable(),
|
|
53
|
+
tokens_in: z2.number().int().nonnegative().nullable(),
|
|
54
|
+
tokens_out: z2.number().int().nonnegative().nullable(),
|
|
55
|
+
cost_usd: z2.number().nonnegative().nullable(),
|
|
56
|
+
latency_ms: z2.number().int().nonnegative().nullable(),
|
|
57
|
+
tool_calls: z2.array(z2.string()).nullable(),
|
|
58
|
+
// When
|
|
59
|
+
timestamp: z2.string().datetime(),
|
|
60
|
+
completed_at: z2.string().datetime().nullable(),
|
|
61
|
+
// Status
|
|
62
|
+
status: ReceiptStatus,
|
|
63
|
+
error: z2.record(z2.unknown()).nullable(),
|
|
64
|
+
// Context
|
|
65
|
+
environment: Environment,
|
|
66
|
+
tags: z2.array(z2.string()).nullable(),
|
|
67
|
+
// Verification (Tier 2 — Phase 6)
|
|
68
|
+
constraints: z2.record(z2.unknown()).nullable(),
|
|
69
|
+
constraint_result: z2.record(z2.unknown()).nullable(),
|
|
70
|
+
// Trust
|
|
71
|
+
signature: z2.string(),
|
|
72
|
+
verify_url: z2.string().url(),
|
|
73
|
+
// Optional
|
|
74
|
+
callback_verified: z2.boolean().nullable(),
|
|
75
|
+
confidence: z2.number().min(0).max(1).nullable(),
|
|
76
|
+
metadata: z2.record(z2.unknown())
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// src/api.ts
|
|
80
|
+
import { z as z3 } from "zod";
|
|
81
|
+
var CreateReceiptInput = z3.object({
|
|
82
|
+
// Required
|
|
83
|
+
agent_id: z3.string().min(1),
|
|
84
|
+
action: z3.string().min(1),
|
|
85
|
+
input_hash: z3.string().min(1),
|
|
86
|
+
// Optional with defaults
|
|
87
|
+
receipt_type: ReceiptType.default("action"),
|
|
88
|
+
status: ReceiptStatus.default("pending"),
|
|
89
|
+
environment: Environment.default("production"),
|
|
90
|
+
// Optional
|
|
91
|
+
parent_receipt_id: z3.string().nullable().optional(),
|
|
92
|
+
output_hash: z3.string().nullable().optional(),
|
|
93
|
+
output_summary: z3.string().nullable().optional(),
|
|
94
|
+
model: z3.string().nullable().optional(),
|
|
95
|
+
tokens_in: z3.number().int().nonnegative().nullable().optional(),
|
|
96
|
+
tokens_out: z3.number().int().nonnegative().nullable().optional(),
|
|
97
|
+
cost_usd: z3.number().nonnegative().nullable().optional(),
|
|
98
|
+
latency_ms: z3.number().int().nonnegative().nullable().optional(),
|
|
99
|
+
tool_calls: z3.array(z3.string()).nullable().optional(),
|
|
100
|
+
tags: z3.array(z3.string()).nullable().optional(),
|
|
101
|
+
confidence: z3.number().min(0).max(1).nullable().optional(),
|
|
102
|
+
callback_verified: z3.boolean().nullable().optional(),
|
|
103
|
+
metadata: z3.record(z3.unknown()).optional()
|
|
104
|
+
});
|
|
105
|
+
var CompleteReceiptInput = z3.object({
|
|
106
|
+
// Required — must transition from pending
|
|
107
|
+
status: z3.enum(["completed", "failed", "timeout"]),
|
|
108
|
+
// Execution results (all optional — set what you know)
|
|
109
|
+
output_hash: z3.string().nullable().optional(),
|
|
110
|
+
output_summary: z3.string().nullable().optional(),
|
|
111
|
+
model: z3.string().nullable().optional(),
|
|
112
|
+
tokens_in: z3.number().int().nonnegative().nullable().optional(),
|
|
113
|
+
tokens_out: z3.number().int().nonnegative().nullable().optional(),
|
|
114
|
+
cost_usd: z3.number().nonnegative().nullable().optional(),
|
|
115
|
+
latency_ms: z3.number().int().nonnegative().nullable().optional(),
|
|
116
|
+
tool_calls: z3.array(z3.string()).nullable().optional(),
|
|
117
|
+
confidence: z3.number().min(0).max(1).nullable().optional(),
|
|
118
|
+
callback_verified: z3.boolean().nullable().optional(),
|
|
119
|
+
error: z3.record(z3.unknown()).nullable().optional()
|
|
120
|
+
});
|
|
121
|
+
var VerifyResponse = z3.object({
|
|
122
|
+
verified: z3.boolean(),
|
|
123
|
+
receipt: z3.object({
|
|
124
|
+
receipt_id: z3.string(),
|
|
125
|
+
chain_id: z3.string(),
|
|
126
|
+
receipt_type: ReceiptType,
|
|
127
|
+
agent_id: z3.string(),
|
|
128
|
+
action: z3.string(),
|
|
129
|
+
status: ReceiptStatus,
|
|
130
|
+
input_hash: z3.string(),
|
|
131
|
+
output_hash: z3.string().nullable(),
|
|
132
|
+
signature: z3.string(),
|
|
133
|
+
timestamp: z3.string().datetime(),
|
|
134
|
+
completed_at: z3.string().datetime().nullable(),
|
|
135
|
+
environment: Environment,
|
|
136
|
+
latency_ms: z3.number().int().nonnegative().nullable()
|
|
137
|
+
}),
|
|
138
|
+
signature_valid: z3.boolean(),
|
|
139
|
+
chain_length: z3.number().int().nonnegative(),
|
|
140
|
+
public_key_url: z3.string().url()
|
|
141
|
+
});
|
|
142
|
+
var ListReceiptsQuery = z3.object({
|
|
143
|
+
page: z3.coerce.number().int().positive().default(1),
|
|
144
|
+
limit: z3.coerce.number().int().positive().max(100).default(50),
|
|
145
|
+
agent_id: z3.string().optional(),
|
|
146
|
+
action: z3.string().optional(),
|
|
147
|
+
status: ReceiptStatus.optional(),
|
|
148
|
+
environment: Environment.optional(),
|
|
149
|
+
receipt_type: ReceiptType.optional(),
|
|
150
|
+
chain_id: z3.string().optional(),
|
|
151
|
+
tag: z3.string().optional(),
|
|
152
|
+
from: z3.string().datetime().optional(),
|
|
153
|
+
to: z3.string().datetime().optional(),
|
|
154
|
+
sort: z3.string().regex(/^(created_at|completed_at|latency_ms|cost_usd):(asc|desc)$/).default("created_at:desc")
|
|
155
|
+
});
|
|
156
|
+
var PaginationMeta = z3.object({
|
|
157
|
+
page: z3.number().int().positive(),
|
|
158
|
+
limit: z3.number().int().positive(),
|
|
159
|
+
total: z3.number().int().nonnegative(),
|
|
160
|
+
total_pages: z3.number().int().nonnegative(),
|
|
161
|
+
has_next: z3.boolean(),
|
|
162
|
+
has_prev: z3.boolean()
|
|
163
|
+
});
|
|
164
|
+
var ErrorResponse = z3.object({
|
|
165
|
+
error: z3.object({
|
|
166
|
+
code: ErrorCode,
|
|
167
|
+
message: z3.string(),
|
|
168
|
+
status: z3.number().int()
|
|
169
|
+
})
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// src/validation.ts
|
|
173
|
+
function validate(schema, data) {
|
|
174
|
+
const result = schema.safeParse(data);
|
|
175
|
+
if (result.success) {
|
|
176
|
+
return { success: true, data: result.data };
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
success: false,
|
|
180
|
+
error: createErrorResponse(
|
|
181
|
+
"VALIDATION_ERROR",
|
|
182
|
+
formatZodError(result.error),
|
|
183
|
+
400
|
|
184
|
+
)
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function formatZodError(error) {
|
|
188
|
+
return error.issues.map((issue) => {
|
|
189
|
+
const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
|
|
190
|
+
return `${path}${issue.message}`;
|
|
191
|
+
}).join("; ");
|
|
192
|
+
}
|
|
193
|
+
function createErrorResponse(code, message, status) {
|
|
194
|
+
return {
|
|
195
|
+
error: {
|
|
196
|
+
code,
|
|
197
|
+
message,
|
|
198
|
+
status
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export {
|
|
203
|
+
ActionReceipt,
|
|
204
|
+
CompleteReceiptInput,
|
|
205
|
+
CreateReceiptInput,
|
|
206
|
+
Environment,
|
|
207
|
+
ErrorCode,
|
|
208
|
+
ErrorResponse,
|
|
209
|
+
ListReceiptsQuery,
|
|
210
|
+
PaginationMeta,
|
|
211
|
+
ReceiptStatus,
|
|
212
|
+
ReceiptType,
|
|
213
|
+
SignablePayload,
|
|
214
|
+
VerifyResponse,
|
|
215
|
+
createErrorResponse,
|
|
216
|
+
formatZodError,
|
|
217
|
+
validate
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agent-receipts/schema",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Zod schemas and TypeScript types for the Action Receipt Protocol",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Amin <amin@webaes.co> (https://webaes.co)",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/webaesbyamin/agent-receipts",
|
|
10
|
+
"directory": "packages/schema"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/webaesbyamin/agent-receipts#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/webaesbyamin/agent-receipts/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"agent-receipts",
|
|
18
|
+
"action-receipt-protocol",
|
|
19
|
+
"zod",
|
|
20
|
+
"schema",
|
|
21
|
+
"validation",
|
|
22
|
+
"ai-agents",
|
|
23
|
+
"mcp"
|
|
24
|
+
],
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20.0.0"
|
|
27
|
+
},
|
|
28
|
+
"main": "./dist/index.js",
|
|
29
|
+
"module": "./dist/index.mjs",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.mjs",
|
|
35
|
+
"require": "./dist/index.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"receipt.schema.json"
|
|
41
|
+
],
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"zod": "^3.23.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"tsup": "^8.2.0",
|
|
47
|
+
"typescript": "^5.4.0",
|
|
48
|
+
"vitest": "^2.1.0",
|
|
49
|
+
"zod-to-json-schema": "^3.23.0"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "tsup && node -e \"const{zodToJsonSchema}=require('zod-to-json-schema');const{ActionReceipt}=require('./dist');const fs=require('fs');fs.writeFileSync('receipt.schema.json',JSON.stringify(zodToJsonSchema(ActionReceipt,'ActionReceipt'),null,2));\"",
|
|
53
|
+
"dev": "tsup --watch",
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"typecheck": "tsc --noEmit"
|
|
56
|
+
}
|
|
57
|
+
}
|