@kya-os/contracts 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/delegation/constraints.d.ts +982 -0
  2. package/dist/delegation/constraints.js +205 -0
  3. package/dist/delegation/index.d.ts +8 -0
  4. package/dist/delegation/index.js +24 -0
  5. package/dist/delegation/schemas.d.ts +3787 -0
  6. package/dist/delegation/schemas.js +230 -0
  7. package/dist/did/index.d.ts +8 -0
  8. package/dist/did/index.js +24 -0
  9. package/dist/did/resolve-contract.d.ts +220 -0
  10. package/dist/did/resolve-contract.js +32 -0
  11. package/dist/did/types.d.ts +164 -0
  12. package/dist/did/types.js +71 -0
  13. package/dist/env/constants.d.ts +58 -0
  14. package/dist/env/constants.js +60 -0
  15. package/dist/env/index.d.ts +5 -0
  16. package/dist/env/index.js +21 -0
  17. package/dist/index.d.ts +9 -1
  18. package/dist/index.js +17 -2
  19. package/dist/proof/index.d.ts +9 -0
  20. package/dist/proof/index.js +25 -0
  21. package/dist/proof/proof-record.d.ts +838 -0
  22. package/dist/proof/proof-record.js +134 -0
  23. package/dist/proof/signing-spec.d.ts +147 -0
  24. package/dist/proof/signing-spec.js +123 -0
  25. package/dist/runtime/errors.d.ts +348 -0
  26. package/dist/runtime/errors.js +120 -0
  27. package/dist/runtime/headers.d.ts +84 -0
  28. package/dist/runtime/headers.js +82 -0
  29. package/dist/runtime/index.d.ts +6 -0
  30. package/dist/runtime/index.js +22 -0
  31. package/dist/tlkrc/index.d.ts +5 -0
  32. package/dist/tlkrc/index.js +21 -0
  33. package/dist/tlkrc/rotation.d.ts +246 -0
  34. package/dist/tlkrc/rotation.js +127 -0
  35. package/dist/vc/index.d.ts +8 -0
  36. package/dist/vc/index.js +24 -0
  37. package/dist/vc/schemas.d.ts +2484 -0
  38. package/dist/vc/schemas.js +225 -0
  39. package/dist/vc/statuslist.d.ts +494 -0
  40. package/dist/vc/statuslist.js +133 -0
  41. package/package.json +51 -6
  42. package/dist/cli.d.ts.map +0 -1
  43. package/dist/cli.js.map +0 -1
  44. package/dist/handshake.d.ts.map +0 -1
  45. package/dist/handshake.js.map +0 -1
  46. package/dist/index.d.ts.map +0 -1
  47. package/dist/index.js.map +0 -1
  48. package/dist/proof.d.ts.map +0 -1
  49. package/dist/proof.js.map +0 -1
  50. package/dist/registry.d.ts.map +0 -1
  51. package/dist/registry.js.map +0 -1
  52. package/dist/test.d.ts.map +0 -1
  53. package/dist/test.js.map +0 -1
  54. package/dist/utils/validation.d.ts.map +0 -1
  55. package/dist/utils/validation.js.map +0 -1
  56. package/dist/verifier.d.ts.map +0 -1
  57. package/dist/verifier.js.map +0 -1
@@ -0,0 +1,348 @@
1
+ /**
2
+ * Runtime Error Contracts
3
+ *
4
+ * Error types and schemas for runtime errors, especially authorization errors
5
+ *
6
+ * Related Spec: MCP-I §6
7
+ * Python Reference: Core-Documentation.md
8
+ */
9
+ import { z } from 'zod';
10
+ /**
11
+ * Display hint types for authorization UI
12
+ */
13
+ export declare const DisplayHintSchema: z.ZodEnum<["link", "qr", "code"]>;
14
+ export type DisplayHint = z.infer<typeof DisplayHintSchema>;
15
+ /**
16
+ * Display options for authorization flow
17
+ */
18
+ export declare const AuthorizationDisplaySchema: z.ZodObject<{
19
+ /** Optional title for the authorization screen */
20
+ title: z.ZodOptional<z.ZodString>;
21
+ /** Hints for how to display authorization (link, QR code, or code) */
22
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
23
+ /** Optional short authorization code */
24
+ authorizationCode: z.ZodOptional<z.ZodString>;
25
+ /** Optional QR code URL */
26
+ qrUrl: z.ZodOptional<z.ZodString>;
27
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
+ /** Optional title for the authorization screen */
29
+ title: z.ZodOptional<z.ZodString>;
30
+ /** Hints for how to display authorization (link, QR code, or code) */
31
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
32
+ /** Optional short authorization code */
33
+ authorizationCode: z.ZodOptional<z.ZodString>;
34
+ /** Optional QR code URL */
35
+ qrUrl: z.ZodOptional<z.ZodString>;
36
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
37
+ /** Optional title for the authorization screen */
38
+ title: z.ZodOptional<z.ZodString>;
39
+ /** Hints for how to display authorization (link, QR code, or code) */
40
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
41
+ /** Optional short authorization code */
42
+ authorizationCode: z.ZodOptional<z.ZodString>;
43
+ /** Optional QR code URL */
44
+ qrUrl: z.ZodOptional<z.ZodString>;
45
+ }, z.ZodTypeAny, "passthrough">>;
46
+ export type AuthorizationDisplay = z.infer<typeof AuthorizationDisplaySchema>;
47
+ /**
48
+ * NeedsAuthorizationError Schema
49
+ *
50
+ * Error returned when a request requires authorization.
51
+ * Includes a resumeToken and authorizationUrl for the authorization flow.
52
+ */
53
+ export declare const NeedsAuthorizationErrorSchema: z.ZodObject<{
54
+ /** Error code */
55
+ error: z.ZodLiteral<"needs_authorization">;
56
+ /** Human-readable error message */
57
+ message: z.ZodString;
58
+ /** URL for the user to authorize (includes resume token) */
59
+ authorizationUrl: z.ZodString;
60
+ /** Short-lived resume token for continuing after authorization */
61
+ resumeToken: z.ZodString;
62
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
63
+ expiresAt: z.ZodNumber;
64
+ /** Required scopes for authorization */
65
+ scopes: z.ZodArray<z.ZodString, "many">;
66
+ /** Optional display configuration for authorization UI */
67
+ display: z.ZodOptional<z.ZodObject<{
68
+ /** Optional title for the authorization screen */
69
+ title: z.ZodOptional<z.ZodString>;
70
+ /** Hints for how to display authorization (link, QR code, or code) */
71
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
72
+ /** Optional short authorization code */
73
+ authorizationCode: z.ZodOptional<z.ZodString>;
74
+ /** Optional QR code URL */
75
+ qrUrl: z.ZodOptional<z.ZodString>;
76
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
77
+ /** Optional title for the authorization screen */
78
+ title: z.ZodOptional<z.ZodString>;
79
+ /** Hints for how to display authorization (link, QR code, or code) */
80
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
81
+ /** Optional short authorization code */
82
+ authorizationCode: z.ZodOptional<z.ZodString>;
83
+ /** Optional QR code URL */
84
+ qrUrl: z.ZodOptional<z.ZodString>;
85
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
86
+ /** Optional title for the authorization screen */
87
+ title: z.ZodOptional<z.ZodString>;
88
+ /** Hints for how to display authorization (link, QR code, or code) */
89
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
90
+ /** Optional short authorization code */
91
+ authorizationCode: z.ZodOptional<z.ZodString>;
92
+ /** Optional QR code URL */
93
+ qrUrl: z.ZodOptional<z.ZodString>;
94
+ }, z.ZodTypeAny, "passthrough">>>;
95
+ /** Optional additional context */
96
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
97
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
98
+ /** Error code */
99
+ error: z.ZodLiteral<"needs_authorization">;
100
+ /** Human-readable error message */
101
+ message: z.ZodString;
102
+ /** URL for the user to authorize (includes resume token) */
103
+ authorizationUrl: z.ZodString;
104
+ /** Short-lived resume token for continuing after authorization */
105
+ resumeToken: z.ZodString;
106
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
107
+ expiresAt: z.ZodNumber;
108
+ /** Required scopes for authorization */
109
+ scopes: z.ZodArray<z.ZodString, "many">;
110
+ /** Optional display configuration for authorization UI */
111
+ display: z.ZodOptional<z.ZodObject<{
112
+ /** Optional title for the authorization screen */
113
+ title: z.ZodOptional<z.ZodString>;
114
+ /** Hints for how to display authorization (link, QR code, or code) */
115
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
116
+ /** Optional short authorization code */
117
+ authorizationCode: z.ZodOptional<z.ZodString>;
118
+ /** Optional QR code URL */
119
+ qrUrl: z.ZodOptional<z.ZodString>;
120
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
121
+ /** Optional title for the authorization screen */
122
+ title: z.ZodOptional<z.ZodString>;
123
+ /** Hints for how to display authorization (link, QR code, or code) */
124
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
125
+ /** Optional short authorization code */
126
+ authorizationCode: z.ZodOptional<z.ZodString>;
127
+ /** Optional QR code URL */
128
+ qrUrl: z.ZodOptional<z.ZodString>;
129
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
130
+ /** Optional title for the authorization screen */
131
+ title: z.ZodOptional<z.ZodString>;
132
+ /** Hints for how to display authorization (link, QR code, or code) */
133
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
134
+ /** Optional short authorization code */
135
+ authorizationCode: z.ZodOptional<z.ZodString>;
136
+ /** Optional QR code URL */
137
+ qrUrl: z.ZodOptional<z.ZodString>;
138
+ }, z.ZodTypeAny, "passthrough">>>;
139
+ /** Optional additional context */
140
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
141
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
142
+ /** Error code */
143
+ error: z.ZodLiteral<"needs_authorization">;
144
+ /** Human-readable error message */
145
+ message: z.ZodString;
146
+ /** URL for the user to authorize (includes resume token) */
147
+ authorizationUrl: z.ZodString;
148
+ /** Short-lived resume token for continuing after authorization */
149
+ resumeToken: z.ZodString;
150
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
151
+ expiresAt: z.ZodNumber;
152
+ /** Required scopes for authorization */
153
+ scopes: z.ZodArray<z.ZodString, "many">;
154
+ /** Optional display configuration for authorization UI */
155
+ display: z.ZodOptional<z.ZodObject<{
156
+ /** Optional title for the authorization screen */
157
+ title: z.ZodOptional<z.ZodString>;
158
+ /** Hints for how to display authorization (link, QR code, or code) */
159
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
160
+ /** Optional short authorization code */
161
+ authorizationCode: z.ZodOptional<z.ZodString>;
162
+ /** Optional QR code URL */
163
+ qrUrl: z.ZodOptional<z.ZodString>;
164
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
165
+ /** Optional title for the authorization screen */
166
+ title: z.ZodOptional<z.ZodString>;
167
+ /** Hints for how to display authorization (link, QR code, or code) */
168
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
169
+ /** Optional short authorization code */
170
+ authorizationCode: z.ZodOptional<z.ZodString>;
171
+ /** Optional QR code URL */
172
+ qrUrl: z.ZodOptional<z.ZodString>;
173
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
174
+ /** Optional title for the authorization screen */
175
+ title: z.ZodOptional<z.ZodString>;
176
+ /** Hints for how to display authorization (link, QR code, or code) */
177
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
178
+ /** Optional short authorization code */
179
+ authorizationCode: z.ZodOptional<z.ZodString>;
180
+ /** Optional QR code URL */
181
+ qrUrl: z.ZodOptional<z.ZodString>;
182
+ }, z.ZodTypeAny, "passthrough">>>;
183
+ /** Optional additional context */
184
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
185
+ }, z.ZodTypeAny, "passthrough">>;
186
+ export type NeedsAuthorizationError = z.infer<typeof NeedsAuthorizationErrorSchema>;
187
+ /**
188
+ * Generic Error Schema
189
+ *
190
+ * Standard error format for all runtime errors
191
+ */
192
+ export declare const RuntimeErrorSchema: z.ZodObject<{
193
+ /** Error code */
194
+ error: z.ZodString;
195
+ /** Human-readable error message */
196
+ message: z.ZodString;
197
+ /** Optional error details */
198
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
199
+ /** HTTP status code (if applicable) */
200
+ httpStatus: z.ZodOptional<z.ZodNumber>;
201
+ }, "strip", z.ZodTypeAny, {
202
+ message: string;
203
+ error: string;
204
+ details?: Record<string, any> | undefined;
205
+ httpStatus?: number | undefined;
206
+ }, {
207
+ message: string;
208
+ error: string;
209
+ details?: Record<string, any> | undefined;
210
+ httpStatus?: number | undefined;
211
+ }>;
212
+ export type RuntimeError = z.infer<typeof RuntimeErrorSchema>;
213
+ /**
214
+ * Validation Helpers
215
+ */
216
+ /**
217
+ * Validate a needs authorization error
218
+ *
219
+ * @param error - The error to validate
220
+ * @returns Validation result
221
+ */
222
+ export declare function validateNeedsAuthorizationError(error: unknown): z.SafeParseReturnType<z.objectInputType<{
223
+ /** Error code */
224
+ error: z.ZodLiteral<"needs_authorization">;
225
+ /** Human-readable error message */
226
+ message: z.ZodString;
227
+ /** URL for the user to authorize (includes resume token) */
228
+ authorizationUrl: z.ZodString;
229
+ /** Short-lived resume token for continuing after authorization */
230
+ resumeToken: z.ZodString;
231
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
232
+ expiresAt: z.ZodNumber;
233
+ /** Required scopes for authorization */
234
+ scopes: z.ZodArray<z.ZodString, "many">;
235
+ /** Optional display configuration for authorization UI */
236
+ display: z.ZodOptional<z.ZodObject<{
237
+ /** Optional title for the authorization screen */
238
+ title: z.ZodOptional<z.ZodString>;
239
+ /** Hints for how to display authorization (link, QR code, or code) */
240
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
241
+ /** Optional short authorization code */
242
+ authorizationCode: z.ZodOptional<z.ZodString>;
243
+ /** Optional QR code URL */
244
+ qrUrl: z.ZodOptional<z.ZodString>;
245
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
246
+ /** Optional title for the authorization screen */
247
+ title: z.ZodOptional<z.ZodString>;
248
+ /** Hints for how to display authorization (link, QR code, or code) */
249
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
250
+ /** Optional short authorization code */
251
+ authorizationCode: z.ZodOptional<z.ZodString>;
252
+ /** Optional QR code URL */
253
+ qrUrl: z.ZodOptional<z.ZodString>;
254
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
255
+ /** Optional title for the authorization screen */
256
+ title: z.ZodOptional<z.ZodString>;
257
+ /** Hints for how to display authorization (link, QR code, or code) */
258
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
259
+ /** Optional short authorization code */
260
+ authorizationCode: z.ZodOptional<z.ZodString>;
261
+ /** Optional QR code URL */
262
+ qrUrl: z.ZodOptional<z.ZodString>;
263
+ }, z.ZodTypeAny, "passthrough">>>;
264
+ /** Optional additional context */
265
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
266
+ }, z.ZodTypeAny, "passthrough">, z.objectOutputType<{
267
+ /** Error code */
268
+ error: z.ZodLiteral<"needs_authorization">;
269
+ /** Human-readable error message */
270
+ message: z.ZodString;
271
+ /** URL for the user to authorize (includes resume token) */
272
+ authorizationUrl: z.ZodString;
273
+ /** Short-lived resume token for continuing after authorization */
274
+ resumeToken: z.ZodString;
275
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
276
+ expiresAt: z.ZodNumber;
277
+ /** Required scopes for authorization */
278
+ scopes: z.ZodArray<z.ZodString, "many">;
279
+ /** Optional display configuration for authorization UI */
280
+ display: z.ZodOptional<z.ZodObject<{
281
+ /** Optional title for the authorization screen */
282
+ title: z.ZodOptional<z.ZodString>;
283
+ /** Hints for how to display authorization (link, QR code, or code) */
284
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
285
+ /** Optional short authorization code */
286
+ authorizationCode: z.ZodOptional<z.ZodString>;
287
+ /** Optional QR code URL */
288
+ qrUrl: z.ZodOptional<z.ZodString>;
289
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
290
+ /** Optional title for the authorization screen */
291
+ title: z.ZodOptional<z.ZodString>;
292
+ /** Hints for how to display authorization (link, QR code, or code) */
293
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
294
+ /** Optional short authorization code */
295
+ authorizationCode: z.ZodOptional<z.ZodString>;
296
+ /** Optional QR code URL */
297
+ qrUrl: z.ZodOptional<z.ZodString>;
298
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
299
+ /** Optional title for the authorization screen */
300
+ title: z.ZodOptional<z.ZodString>;
301
+ /** Hints for how to display authorization (link, QR code, or code) */
302
+ hint: z.ZodOptional<z.ZodArray<z.ZodEnum<["link", "qr", "code"]>, "many">>;
303
+ /** Optional short authorization code */
304
+ authorizationCode: z.ZodOptional<z.ZodString>;
305
+ /** Optional QR code URL */
306
+ qrUrl: z.ZodOptional<z.ZodString>;
307
+ }, z.ZodTypeAny, "passthrough">>>;
308
+ /** Optional additional context */
309
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
310
+ }, z.ZodTypeAny, "passthrough">>;
311
+ /**
312
+ * Check if error is a needs authorization error
313
+ *
314
+ * @param error - The error to check
315
+ * @returns true if it's a needs authorization error
316
+ */
317
+ export declare function isNeedsAuthorizationError(error: any): error is NeedsAuthorizationError;
318
+ /**
319
+ * Create a needs authorization error
320
+ *
321
+ * @param config - Configuration for the error
322
+ * @returns NeedsAuthorizationError instance
323
+ */
324
+ export declare function createNeedsAuthorizationError(config: {
325
+ message: string;
326
+ authorizationUrl: string;
327
+ resumeToken: string;
328
+ expiresAt: number;
329
+ scopes: string[];
330
+ display?: AuthorizationDisplay;
331
+ }): NeedsAuthorizationError;
332
+ /**
333
+ * Constants
334
+ */
335
+ /**
336
+ * Error codes
337
+ */
338
+ export declare const ERROR_CODES: Readonly<{
339
+ readonly NEEDS_AUTHORIZATION: "needs_authorization";
340
+ readonly INVALID_TOKEN: "invalid_token";
341
+ readonly TOKEN_EXPIRED: "token_expired";
342
+ readonly INSUFFICIENT_SCOPE: "insufficient_scope";
343
+ readonly INVALID_SIGNATURE: "invalid_signature";
344
+ readonly DELEGATION_REVOKED: "delegation_revoked";
345
+ readonly CREDENTIAL_REVOKED: "credential_revoked";
346
+ }>;
347
+ export type ErrorCode = typeof ERROR_CODES[keyof typeof ERROR_CODES];
348
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime Error Contracts
4
+ *
5
+ * Error types and schemas for runtime errors, especially authorization errors
6
+ *
7
+ * Related Spec: MCP-I §6
8
+ * Python Reference: Core-Documentation.md
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ERROR_CODES = exports.RuntimeErrorSchema = exports.NeedsAuthorizationErrorSchema = exports.AuthorizationDisplaySchema = exports.DisplayHintSchema = void 0;
12
+ exports.validateNeedsAuthorizationError = validateNeedsAuthorizationError;
13
+ exports.isNeedsAuthorizationError = isNeedsAuthorizationError;
14
+ exports.createNeedsAuthorizationError = createNeedsAuthorizationError;
15
+ const zod_1 = require("zod");
16
+ /**
17
+ * Display hint types for authorization UI
18
+ */
19
+ exports.DisplayHintSchema = zod_1.z.enum(['link', 'qr', 'code']);
20
+ /**
21
+ * Display options for authorization flow
22
+ */
23
+ exports.AuthorizationDisplaySchema = zod_1.z.object({
24
+ /** Optional title for the authorization screen */
25
+ title: zod_1.z.string().optional(),
26
+ /** Hints for how to display authorization (link, QR code, or code) */
27
+ hint: zod_1.z.array(exports.DisplayHintSchema).optional(),
28
+ /** Optional short authorization code */
29
+ authorizationCode: zod_1.z.string().optional(),
30
+ /** Optional QR code URL */
31
+ qrUrl: zod_1.z.string().url().optional(),
32
+ }).passthrough();
33
+ /**
34
+ * NeedsAuthorizationError Schema
35
+ *
36
+ * Error returned when a request requires authorization.
37
+ * Includes a resumeToken and authorizationUrl for the authorization flow.
38
+ */
39
+ exports.NeedsAuthorizationErrorSchema = zod_1.z.object({
40
+ /** Error code */
41
+ error: zod_1.z.literal('needs_authorization'),
42
+ /** Human-readable error message */
43
+ message: zod_1.z.string().min(1),
44
+ /** URL for the user to authorize (includes resume token) */
45
+ authorizationUrl: zod_1.z.string().url(),
46
+ /** Short-lived resume token for continuing after authorization */
47
+ resumeToken: zod_1.z.string().min(1),
48
+ /** Expiration timestamp for the resume token (milliseconds since epoch) */
49
+ expiresAt: zod_1.z.number().int().positive(),
50
+ /** Required scopes for authorization */
51
+ scopes: zod_1.z.array(zod_1.z.string()),
52
+ /** Optional display configuration for authorization UI */
53
+ display: exports.AuthorizationDisplaySchema.optional(),
54
+ /** Optional additional context */
55
+ context: zod_1.z.record(zod_1.z.any()).optional(),
56
+ }).passthrough();
57
+ /**
58
+ * Generic Error Schema
59
+ *
60
+ * Standard error format for all runtime errors
61
+ */
62
+ exports.RuntimeErrorSchema = zod_1.z.object({
63
+ /** Error code */
64
+ error: zod_1.z.string().min(1),
65
+ /** Human-readable error message */
66
+ message: zod_1.z.string().min(1),
67
+ /** Optional error details */
68
+ details: zod_1.z.record(zod_1.z.any()).optional(),
69
+ /** HTTP status code (if applicable) */
70
+ httpStatus: zod_1.z.number().int().min(400).max(599).optional(),
71
+ });
72
+ /**
73
+ * Validation Helpers
74
+ */
75
+ /**
76
+ * Validate a needs authorization error
77
+ *
78
+ * @param error - The error to validate
79
+ * @returns Validation result
80
+ */
81
+ function validateNeedsAuthorizationError(error) {
82
+ return exports.NeedsAuthorizationErrorSchema.safeParse(error);
83
+ }
84
+ /**
85
+ * Check if error is a needs authorization error
86
+ *
87
+ * @param error - The error to check
88
+ * @returns true if it's a needs authorization error
89
+ */
90
+ function isNeedsAuthorizationError(error) {
91
+ return error && error.error === 'needs_authorization';
92
+ }
93
+ /**
94
+ * Create a needs authorization error
95
+ *
96
+ * @param config - Configuration for the error
97
+ * @returns NeedsAuthorizationError instance
98
+ */
99
+ function createNeedsAuthorizationError(config) {
100
+ return {
101
+ error: 'needs_authorization',
102
+ ...config,
103
+ };
104
+ }
105
+ /**
106
+ * Constants
107
+ */
108
+ /**
109
+ * Error codes
110
+ */
111
+ exports.ERROR_CODES = Object.freeze({
112
+ NEEDS_AUTHORIZATION: 'needs_authorization',
113
+ INVALID_TOKEN: 'invalid_token',
114
+ TOKEN_EXPIRED: 'token_expired',
115
+ INSUFFICIENT_SCOPE: 'insufficient_scope',
116
+ INVALID_SIGNATURE: 'invalid_signature',
117
+ DELEGATION_REVOKED: 'delegation_revoked',
118
+ CREDENTIAL_REVOKED: 'credential_revoked',
119
+ });
120
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Runtime Header Contracts
3
+ *
4
+ * Header contracts for downstream services
5
+ *
6
+ * Related Spec: MCP-I §6
7
+ * Python Reference: Core-Documentation.md
8
+ */
9
+ /**
10
+ * Downstream Headers Interface
11
+ *
12
+ * Headers passed to downstream services after verification
13
+ */
14
+ export interface DownstreamHeaders {
15
+ /** DID of the verified agent */
16
+ 'X-Agent-DID': string;
17
+ /** Optional delegation ID */
18
+ 'X-Delegation-Id'?: string;
19
+ /** Optional delegation chain (format: vc_id>del_id>...) */
20
+ 'X-Delegation-Chain'?: string;
21
+ /** Proof ID for audit trail */
22
+ 'X-MCPI-Proof-Id': string;
23
+ /** Optional CRISP spend info (JSON string: {unit, delta, remaining}) */
24
+ 'X-CRISP-Spend'?: string;
25
+ /** Optional session ID */
26
+ 'X-Session-Id'?: string;
27
+ /** Optional scopes */
28
+ 'X-Scopes'?: string;
29
+ }
30
+ /**
31
+ * Header names as constants for type safety
32
+ */
33
+ export declare const DOWNSTREAM_HEADER_NAMES: Readonly<{
34
+ readonly AGENT_DID: "X-Agent-DID";
35
+ readonly DELEGATION_ID: "X-Delegation-Id";
36
+ readonly DELEGATION_CHAIN: "X-Delegation-Chain";
37
+ readonly PROOF_ID: "X-MCPI-Proof-Id";
38
+ readonly CRISP_SPEND: "X-CRISP-Spend";
39
+ readonly SESSION_ID: "X-Session-Id";
40
+ readonly SCOPES: "X-Scopes";
41
+ }>;
42
+ /**
43
+ * CRISP Spend Info
44
+ *
45
+ * Structure for X-CRISP-Spend header value
46
+ */
47
+ export interface CrispSpendInfo {
48
+ /** Unit of spending */
49
+ unit: 'USD' | 'ops' | 'points';
50
+ /** Amount spent in this request */
51
+ delta?: number;
52
+ /** Remaining budget */
53
+ remaining?: number;
54
+ }
55
+ /**
56
+ * Helper to serialize CRISP spend info to header value
57
+ *
58
+ * @param info - CRISP spend info
59
+ * @returns JSON string for header
60
+ */
61
+ export declare function serializeCrispSpend(info: CrispSpendInfo): string;
62
+ /**
63
+ * Helper to parse CRISP spend info from header value
64
+ *
65
+ * @param headerValue - JSON string from header
66
+ * @returns Parsed CRISP spend info or null if invalid
67
+ */
68
+ export declare function parseCrispSpend(headerValue: string): CrispSpendInfo | null;
69
+ /**
70
+ * Helper to create downstream headers
71
+ *
72
+ * @param config - Configuration for headers
73
+ * @returns DownstreamHeaders object
74
+ */
75
+ export declare function createDownstreamHeaders(config: {
76
+ agentDid: string;
77
+ proofId: string;
78
+ delegationId?: string;
79
+ delegationChain?: string;
80
+ crispSpend?: CrispSpendInfo;
81
+ sessionId?: string;
82
+ scopes?: string[];
83
+ }): DownstreamHeaders;
84
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime Header Contracts
4
+ *
5
+ * Header contracts for downstream services
6
+ *
7
+ * Related Spec: MCP-I §6
8
+ * Python Reference: Core-Documentation.md
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.DOWNSTREAM_HEADER_NAMES = void 0;
12
+ exports.serializeCrispSpend = serializeCrispSpend;
13
+ exports.parseCrispSpend = parseCrispSpend;
14
+ exports.createDownstreamHeaders = createDownstreamHeaders;
15
+ /**
16
+ * Header names as constants for type safety
17
+ */
18
+ exports.DOWNSTREAM_HEADER_NAMES = Object.freeze({
19
+ AGENT_DID: 'X-Agent-DID',
20
+ DELEGATION_ID: 'X-Delegation-Id',
21
+ DELEGATION_CHAIN: 'X-Delegation-Chain',
22
+ PROOF_ID: 'X-MCPI-Proof-Id',
23
+ CRISP_SPEND: 'X-CRISP-Spend',
24
+ SESSION_ID: 'X-Session-Id',
25
+ SCOPES: 'X-Scopes',
26
+ });
27
+ /**
28
+ * Helper to serialize CRISP spend info to header value
29
+ *
30
+ * @param info - CRISP spend info
31
+ * @returns JSON string for header
32
+ */
33
+ function serializeCrispSpend(info) {
34
+ return JSON.stringify(info);
35
+ }
36
+ /**
37
+ * Helper to parse CRISP spend info from header value
38
+ *
39
+ * @param headerValue - JSON string from header
40
+ * @returns Parsed CRISP spend info or null if invalid
41
+ */
42
+ function parseCrispSpend(headerValue) {
43
+ try {
44
+ const parsed = JSON.parse(headerValue);
45
+ if (parsed && typeof parsed.unit === 'string') {
46
+ return parsed;
47
+ }
48
+ return null;
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Helper to create downstream headers
56
+ *
57
+ * @param config - Configuration for headers
58
+ * @returns DownstreamHeaders object
59
+ */
60
+ function createDownstreamHeaders(config) {
61
+ const headers = {
62
+ 'X-Agent-DID': config.agentDid,
63
+ 'X-MCPI-Proof-Id': config.proofId,
64
+ };
65
+ if (config.delegationId) {
66
+ headers['X-Delegation-Id'] = config.delegationId;
67
+ }
68
+ if (config.delegationChain) {
69
+ headers['X-Delegation-Chain'] = config.delegationChain;
70
+ }
71
+ if (config.crispSpend) {
72
+ headers['X-CRISP-Spend'] = serializeCrispSpend(config.crispSpend);
73
+ }
74
+ if (config.sessionId) {
75
+ headers['X-Session-Id'] = config.sessionId;
76
+ }
77
+ if (config.scopes && config.scopes.length > 0) {
78
+ headers['X-Scopes'] = config.scopes.join(',');
79
+ }
80
+ return headers;
81
+ }
82
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Runtime Module Exports
3
+ */
4
+ export * from './errors.js';
5
+ export * from './headers.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime Module Exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./errors.js"), exports);
21
+ __exportStar(require("./headers.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * TLKRC Module Exports
3
+ */
4
+ export * from './rotation.js';
5
+ //# sourceMappingURL=index.d.ts.map