@peac/kernel 0.10.9 → 0.10.10

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/package.json CHANGED
@@ -1,40 +1,37 @@
1
1
  {
2
2
  "name": "@peac/kernel",
3
- "version": "0.10.9",
3
+ "version": "0.10.10",
4
4
  "description": "PEAC protocol kernel - normative constants, errors, and registries",
5
- "main": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
5
+ "main": "dist/index.cjs",
6
+ "types": "dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
9
  "types": "./dist/index.d.ts",
10
- "import": "./dist/index.js",
11
- "require": "./dist/index.js",
12
- "default": "./dist/index.js"
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.cjs",
12
+ "default": "./dist/index.mjs"
13
13
  },
14
14
  "./constants": {
15
15
  "types": "./dist/constants.d.ts",
16
- "import": "./dist/constants.js",
17
- "require": "./dist/constants.js",
18
- "default": "./dist/constants.js"
16
+ "import": "./dist/constants.mjs",
17
+ "require": "./dist/constants.cjs"
19
18
  },
20
19
  "./errors": {
21
20
  "types": "./dist/errors.d.ts",
22
- "import": "./dist/errors.js",
23
- "require": "./dist/errors.js",
24
- "default": "./dist/errors.js"
21
+ "import": "./dist/errors.mjs",
22
+ "require": "./dist/errors.cjs"
25
23
  },
26
24
  "./registries": {
27
25
  "types": "./dist/registries.d.ts",
28
- "import": "./dist/registries.js",
29
- "require": "./dist/registries.js",
30
- "default": "./dist/registries.js"
26
+ "import": "./dist/registries.mjs",
27
+ "require": "./dist/registries.cjs"
31
28
  },
32
29
  "./types": {
33
30
  "types": "./dist/types.d.ts",
34
- "import": "./dist/types.js",
35
- "require": "./dist/types.js",
36
- "default": "./dist/types.js"
37
- }
31
+ "import": "./dist/types.mjs",
32
+ "require": "./dist/types.cjs"
33
+ },
34
+ "./package.json": "./package.json"
38
35
  },
39
36
  "keywords": [
40
37
  "peac",
@@ -63,11 +60,15 @@
63
60
  "access": "public"
64
61
  },
65
62
  "devDependencies": {
66
- "typescript": "^5.6.2"
63
+ "typescript": "^5.6.2",
64
+ "tsup": "^8.0.0"
67
65
  },
68
66
  "scripts": {
69
- "build": "tsc",
67
+ "prebuild": "rm -rf dist",
68
+ "build": "pnpm run build:js && pnpm run build:types",
70
69
  "clean": "rm -rf dist tsconfig.tsbuildinfo",
71
- "typecheck": "tsc --noEmit"
70
+ "typecheck": "tsc --noEmit",
71
+ "build:js": "tsup",
72
+ "build:types": "rm -f dist/.tsbuildinfo && tsc && rm -f dist/.tsbuildinfo"
72
73
  }
73
74
  }
@@ -1,121 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const http_js_1 = require("../http.js");
5
- (0, vitest_1.describe)('VARY_HEADERS', () => {
6
- (0, vitest_1.it)('includes PEAC-Purpose and PEAC-Receipt', () => {
7
- (0, vitest_1.expect)(http_js_1.VARY_HEADERS).toContain('PEAC-Purpose');
8
- (0, vitest_1.expect)(http_js_1.VARY_HEADERS).toContain('PEAC-Receipt');
9
- (0, vitest_1.expect)(http_js_1.VARY_HEADERS).toHaveLength(2);
10
- });
11
- });
12
- (0, vitest_1.describe)('applyPurposeVary', () => {
13
- (0, vitest_1.describe)('with Web API Headers', () => {
14
- (0, vitest_1.it)('sets Vary when no existing header', () => {
15
- const headers = new Headers();
16
- (0, http_js_1.applyPurposeVary)(headers);
17
- (0, vitest_1.expect)(headers.get('Vary')).toBe('PEAC-Purpose');
18
- });
19
- (0, vitest_1.it)('appends to existing Vary header', () => {
20
- const headers = new Headers();
21
- headers.set('Vary', 'Accept-Encoding');
22
- (0, http_js_1.applyPurposeVary)(headers);
23
- // Headers.append behavior
24
- (0, vitest_1.expect)(headers.get('Vary')).toContain('Accept-Encoding');
25
- (0, vitest_1.expect)(headers.get('Vary')).toContain('PEAC-Purpose');
26
- });
27
- (0, vitest_1.it)('does not duplicate when PEAC-Purpose already present', () => {
28
- const headers = new Headers();
29
- headers.set('Vary', 'PEAC-Purpose');
30
- (0, http_js_1.applyPurposeVary)(headers);
31
- (0, vitest_1.expect)(headers.get('Vary')).toBe('PEAC-Purpose');
32
- });
33
- (0, vitest_1.it)('handles case-insensitive match', () => {
34
- const headers = new Headers();
35
- headers.set('Vary', 'peac-purpose');
36
- (0, http_js_1.applyPurposeVary)(headers);
37
- // Should not duplicate
38
- (0, vitest_1.expect)(headers.get('Vary')).toBe('peac-purpose');
39
- });
40
- (0, vitest_1.it)('handles Vary: * (wildcard)', () => {
41
- const headers = new Headers();
42
- headers.set('Vary', '*');
43
- (0, http_js_1.applyPurposeVary)(headers);
44
- // Wildcard means vary on everything, no need to append
45
- (0, vitest_1.expect)(headers.get('Vary')).toContain('*');
46
- });
47
- (0, vitest_1.it)('is idempotent when called twice', () => {
48
- const headers = new Headers();
49
- (0, http_js_1.applyPurposeVary)(headers);
50
- (0, http_js_1.applyPurposeVary)(headers);
51
- (0, vitest_1.expect)(headers.get('Vary')).toBe('PEAC-Purpose');
52
- });
53
- (0, vitest_1.it)('works for deny responses (vary must apply to denials too)', () => {
54
- // Deny responses must also vary to prevent caching denial across purposes
55
- const headers = new Headers();
56
- headers.set('PEAC-Decision', 'deny');
57
- (0, http_js_1.applyPurposeVary)(headers);
58
- (0, vitest_1.expect)(headers.get('Vary')).toBe('PEAC-Purpose');
59
- });
60
- });
61
- (0, vitest_1.describe)('with Node.js-like response object', () => {
62
- (0, vitest_1.it)('sets Vary via setHeader', () => {
63
- const headers = {};
64
- const res = {
65
- getHeader: (name) => headers[name.toLowerCase()],
66
- setHeader: (name, value) => {
67
- headers[name.toLowerCase()] = value;
68
- },
69
- };
70
- (0, http_js_1.applyPurposeVary)(res);
71
- (0, vitest_1.expect)(headers['vary']).toBe('PEAC-Purpose');
72
- });
73
- (0, vitest_1.it)('appends to existing Vary via setHeader', () => {
74
- const headers = { vary: 'Accept-Encoding' };
75
- const res = {
76
- getHeader: (name) => headers[name.toLowerCase()],
77
- setHeader: (name, value) => {
78
- headers[name.toLowerCase()] = value;
79
- },
80
- };
81
- (0, http_js_1.applyPurposeVary)(res);
82
- (0, vitest_1.expect)(headers['vary']).toBe('Accept-Encoding, PEAC-Purpose');
83
- });
84
- (0, vitest_1.it)('does not duplicate when already present', () => {
85
- const headers = { vary: 'PEAC-Purpose' };
86
- const res = {
87
- getHeader: (name) => headers[name.toLowerCase()],
88
- setHeader: (name, value) => {
89
- headers[name.toLowerCase()] = value;
90
- },
91
- };
92
- (0, http_js_1.applyPurposeVary)(res);
93
- (0, vitest_1.expect)(headers['vary']).toBe('PEAC-Purpose');
94
- });
95
- });
96
- (0, vitest_1.describe)('with Map-like headers (Hono, etc.)', () => {
97
- (0, vitest_1.it)('sets Vary via set method', () => {
98
- const map = new Map();
99
- const headers = {
100
- set: (name, value) => map.set(name, value),
101
- };
102
- (0, http_js_1.applyPurposeVary)(headers);
103
- (0, vitest_1.expect)(map.get('Vary')).toBe('PEAC-Purpose');
104
- });
105
- });
106
- });
107
- (0, vitest_1.describe)('getPeacVaryHeaders', () => {
108
- (0, vitest_1.it)('returns comma-separated list of PEAC headers', () => {
109
- const result = (0, http_js_1.getPeacVaryHeaders)();
110
- (0, vitest_1.expect)(result).toBe('PEAC-Purpose, PEAC-Receipt');
111
- });
112
- });
113
- (0, vitest_1.describe)('needsPurposeVary', () => {
114
- (0, vitest_1.it)('returns true when purpose was enforced', () => {
115
- (0, vitest_1.expect)((0, http_js_1.needsPurposeVary)(true)).toBe(true);
116
- });
117
- (0, vitest_1.it)('returns false when purpose was not enforced', () => {
118
- (0, vitest_1.expect)((0, http_js_1.needsPurposeVary)(false)).toBe(false);
119
- });
120
- });
121
- //# sourceMappingURL=http.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../src/__tests__/http.test.ts"],"names":[],"mappings":"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"}
package/dist/constants.js DELETED
@@ -1,251 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Protocol Constants
4
- * Derived from specs/kernel/constants.json
5
- *
6
- * NOTE: This file is manually synced for v0.9.15.
7
- * From v0.9.16+, this will be auto-generated via codegen.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CONSTANTS = exports.VERIFICATION_MODES = exports.VERIFIER_POLICY_VERSION = exports.PRIVATE_IP_RANGES = exports.VERIFIER_NETWORK = exports.VERIFIER_LIMITS = exports.HASH = exports.VERIFICATION_REPORT_VERSION = exports.BUNDLE_VERSION = exports.LIMITS = exports.RECEIPT = exports.JWKS = exports.DISCOVERY = exports.ISSUER_CONFIG = exports.POLICY = exports.HEADERS = exports.ALGORITHMS = exports.WIRE_VERSION = exports.WIRE_TYPE = void 0;
11
- exports.parseHash = parseHash;
12
- exports.formatHash = formatHash;
13
- exports.isValidHash = isValidHash;
14
- /**
15
- * Wire format type for PEAC receipts
16
- * Normalized to peac-receipt/0.1 per DEC-20260114-002
17
- */
18
- exports.WIRE_TYPE = 'peac-receipt/0.1';
19
- /**
20
- * Wire format version (extracted from WIRE_TYPE)
21
- * Use this for wire_version fields in receipts
22
- */
23
- exports.WIRE_VERSION = '0.1';
24
- /**
25
- * Supported cryptographic algorithms
26
- */
27
- exports.ALGORITHMS = {
28
- supported: ['EdDSA'],
29
- default: 'EdDSA',
30
- };
31
- /**
32
- * HTTP header names for PEAC protocol
33
- */
34
- exports.HEADERS = {
35
- receipt: 'PEAC-Receipt',
36
- receiptPointer: 'PEAC-Receipt-Pointer',
37
- dpop: 'DPoP',
38
- // Purpose headers (v0.9.24+)
39
- purpose: 'PEAC-Purpose',
40
- purposeApplied: 'PEAC-Purpose-Applied',
41
- purposeReason: 'PEAC-Purpose-Reason',
42
- };
43
- /**
44
- * Policy manifest settings (/.well-known/peac.txt)
45
- *
46
- * Policy documents declare access terms for agents and gateways.
47
- * @see docs/specs/PEAC-TXT.md
48
- */
49
- exports.POLICY = {
50
- manifestPath: '/.well-known/peac.txt',
51
- fallbackPath: '/peac.txt',
52
- manifestVersion: 'peac-policy/0.1',
53
- cacheTtlSeconds: 3600,
54
- maxBytes: 262144, // 256 KiB
55
- maxDepth: 8,
56
- };
57
- /**
58
- * Issuer configuration settings (/.well-known/peac-issuer.json)
59
- *
60
- * Issuer config enables verifiers to discover JWKS and verification endpoints.
61
- * @see docs/specs/PEAC-ISSUER.md
62
- */
63
- exports.ISSUER_CONFIG = {
64
- configPath: '/.well-known/peac-issuer.json',
65
- configVersion: 'peac-issuer/0.1',
66
- cacheTtlSeconds: 3600,
67
- maxBytes: 65536, // 64 KiB
68
- maxDepth: 4,
69
- fetchTimeoutMs: 10000,
70
- };
71
- /**
72
- * @deprecated Use POLICY instead. Will be removed in v1.0.
73
- */
74
- exports.DISCOVERY = {
75
- manifestPath: exports.POLICY.manifestPath,
76
- manifestVersion: 'peac/0.9',
77
- cacheTtlSeconds: exports.POLICY.cacheTtlSeconds,
78
- };
79
- /**
80
- * JWKS rotation and revocation settings
81
- */
82
- exports.JWKS = {
83
- rotationDays: 90,
84
- overlapDays: 7,
85
- emergencyRevocationHours: 24,
86
- };
87
- /**
88
- * Receipt validation constants
89
- */
90
- exports.RECEIPT = {
91
- minReceiptIdLength: 16,
92
- maxReceiptIdLength: 64,
93
- defaultTtlSeconds: 86400, // 24 hours
94
- };
95
- /**
96
- * Payment amount validation limits (in cents/smallest currency unit)
97
- */
98
- exports.LIMITS = {
99
- maxAmountCents: 999999999999,
100
- minAmountCents: 1,
101
- };
102
- /**
103
- * Bundle format version.
104
- * Used in dispute bundles, audit bundles, and archive bundles.
105
- */
106
- exports.BUNDLE_VERSION = 'peac-bundle/0.1';
107
- /**
108
- * Verification report format version.
109
- */
110
- exports.VERIFICATION_REPORT_VERSION = 'peac-verification-report/0.1';
111
- /**
112
- * Hash format constants and utilities.
113
- * All hashes use the self-describing format: sha256:<64 lowercase hex chars>
114
- */
115
- exports.HASH = {
116
- /** Canonical hash algorithm */
117
- algorithm: 'sha256',
118
- /** Hash prefix pattern */
119
- prefix: 'sha256:',
120
- /** Valid hash regex: sha256:<64 lowercase hex> */
121
- pattern: /^sha256:[0-9a-f]{64}$/,
122
- /** Hex-only pattern for legacy comparison */
123
- hexPattern: /^[0-9a-f]{64}$/,
124
- };
125
- /**
126
- * Parse a sha256:<hex> hash string into components.
127
- * Returns null if the format is invalid.
128
- *
129
- * @param hash - Hash string to parse (e.g., "sha256:abc123...")
130
- * @returns Parsed hash or null if invalid
131
- */
132
- function parseHash(hash) {
133
- if (!exports.HASH.pattern.test(hash)) {
134
- return null;
135
- }
136
- return {
137
- alg: 'sha256',
138
- hex: hash.slice(7), // Remove 'sha256:' prefix
139
- };
140
- }
141
- /**
142
- * Format a hex string as a sha256:<hex> hash.
143
- * Validates that the hex is exactly 64 lowercase characters.
144
- *
145
- * @param hex - Hex string (64 lowercase characters)
146
- * @returns Formatted hash or null if invalid
147
- */
148
- function formatHash(hex) {
149
- if (!exports.HASH.hexPattern.test(hex)) {
150
- return null;
151
- }
152
- return `sha256:${hex}`;
153
- }
154
- /**
155
- * Validate a hash string is in the correct format.
156
- *
157
- * @param hash - Hash string to validate
158
- * @returns true if valid sha256:<64 hex> format
159
- */
160
- function isValidHash(hash) {
161
- return exports.HASH.pattern.test(hash);
162
- }
163
- /**
164
- * Verifier security limits per VERIFIER-SECURITY-MODEL.md
165
- */
166
- exports.VERIFIER_LIMITS = {
167
- /** Maximum receipt size in bytes (256 KB) */
168
- maxReceiptBytes: 262144,
169
- /** Maximum number of claims in a receipt */
170
- maxClaimsCount: 100,
171
- /** Maximum extension size in bytes (64 KB) */
172
- maxExtensionBytes: 65536,
173
- /** Maximum string length for individual claims (64 KB) */
174
- maxStringLength: 65536,
175
- /** Maximum JWKS document size in bytes (64 KB) */
176
- maxJwksBytes: 65536,
177
- /** Maximum number of keys in a JWKS */
178
- maxJwksKeys: 20,
179
- /** Maximum individual key size in bytes */
180
- maxKeySize: 4096,
181
- /** Network fetch timeout in milliseconds */
182
- fetchTimeoutMs: 5000,
183
- /** Maximum number of redirects to follow */
184
- maxRedirects: 3,
185
- /** Maximum network response size in bytes (256 KB) */
186
- maxResponseBytes: 262144,
187
- };
188
- /**
189
- * Verifier network security settings per VERIFIER-SECURITY-MODEL.md
190
- */
191
- exports.VERIFIER_NETWORK = {
192
- /** Only allow HTTPS URLs */
193
- httpsOnly: true,
194
- /** Block requests to private IP ranges */
195
- blockPrivateIps: true,
196
- /** Default redirect policy (false = no redirects) */
197
- allowRedirects: false,
198
- };
199
- /**
200
- * Private IPv4 CIDR blocks to block for SSRF protection
201
- */
202
- exports.PRIVATE_IP_RANGES = {
203
- /** RFC 1918 private ranges */
204
- rfc1918: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16'],
205
- /** Link-local addresses */
206
- linkLocal: ['169.254.0.0/16'],
207
- /** Loopback addresses */
208
- loopback: ['127.0.0.0/8'],
209
- /** IPv6 loopback */
210
- ipv6Loopback: ['::1/128'],
211
- /** IPv6 link-local */
212
- ipv6LinkLocal: ['fe80::/10'],
213
- };
214
- /**
215
- * Verifier policy version
216
- */
217
- exports.VERIFIER_POLICY_VERSION = 'peac-verifier-policy/0.1';
218
- /**
219
- * Verification modes per VERIFIER-SECURITY-MODEL.md
220
- */
221
- exports.VERIFICATION_MODES = {
222
- /** All verification in browser/client, may fetch JWKS */
223
- clientSide: 'client_side',
224
- /** No network access, uses bundled/pinned keys */
225
- offlineOnly: 'offline_only',
226
- /** Prefer offline, fallback to network */
227
- offlinePreferred: 'offline_preferred',
228
- /** Allow network fetches for key discovery */
229
- networkAllowed: 'network_allowed',
230
- };
231
- /**
232
- * All constants export
233
- */
234
- exports.CONSTANTS = {
235
- WIRE_TYPE: exports.WIRE_TYPE,
236
- WIRE_VERSION: exports.WIRE_VERSION,
237
- ALGORITHMS: exports.ALGORITHMS,
238
- HEADERS: exports.HEADERS,
239
- DISCOVERY: exports.DISCOVERY,
240
- JWKS: exports.JWKS,
241
- RECEIPT: exports.RECEIPT,
242
- LIMITS: exports.LIMITS,
243
- BUNDLE_VERSION: exports.BUNDLE_VERSION,
244
- VERIFICATION_REPORT_VERSION: exports.VERIFICATION_REPORT_VERSION,
245
- HASH: exports.HASH,
246
- VERIFIER_LIMITS: exports.VERIFIER_LIMITS,
247
- VERIFIER_NETWORK: exports.VERIFIER_NETWORK,
248
- VERIFIER_POLICY_VERSION: exports.VERIFIER_POLICY_VERSION,
249
- VERIFICATION_MODES: exports.VERIFICATION_MODES,
250
- };
251
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAwIH,8BAQC;AASD,gCAKC;AAQD,kCAEC;AAtKD;;;GAGG;AACU,QAAA,SAAS,GAAG,kBAA2B,CAAC;AAErD;;;GAGG;AACU,QAAA,YAAY,GAAG,KAAc,CAAC;AAE3C;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,SAAS,EAAE,CAAC,OAAO,CAAU;IAC7B,OAAO,EAAE,OAAgB;CACjB,CAAC;AAEX;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,OAAO,EAAE,cAAuB;IAChC,cAAc,EAAE,sBAA+B;IAC/C,IAAI,EAAE,MAAe;IACrB,6BAA6B;IAC7B,OAAO,EAAE,cAAuB;IAChC,cAAc,EAAE,sBAA+B;IAC/C,aAAa,EAAE,qBAA8B;CACrC,CAAC;AAEX;;;;;GAKG;AACU,QAAA,MAAM,GAAG;IACpB,YAAY,EAAE,uBAAgC;IAC9C,YAAY,EAAE,WAAoB;IAClC,eAAe,EAAE,iBAA0B;IAC3C,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,MAAM,EAAE,UAAU;IAC5B,QAAQ,EAAE,CAAC;CACH,CAAC;AAEX;;;;;GAKG;AACU,QAAA,aAAa,GAAG;IAC3B,UAAU,EAAE,+BAAwC;IACpD,aAAa,EAAE,iBAA0B;IACzC,eAAe,EAAE,IAAI;IACrB,QAAQ,EAAE,KAAK,EAAE,SAAS;IAC1B,QAAQ,EAAE,CAAC;IACX,cAAc,EAAE,KAAK;CACb,CAAC;AAEX;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY,EAAE,cAAM,CAAC,YAAY;IACjC,eAAe,EAAE,UAAmB;IACpC,eAAe,EAAE,cAAM,CAAC,eAAe;CAC/B,CAAC;AAEX;;GAEG;AACU,QAAA,IAAI,GAAG;IAClB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,CAAC;IACd,wBAAwB,EAAE,EAAE;CACpB,CAAC;AAEX;;GAEG;AACU,QAAA,OAAO,GAAG;IACrB,kBAAkB,EAAE,EAAE;IACtB,kBAAkB,EAAE,EAAE;IACtB,iBAAiB,EAAE,KAAK,EAAE,WAAW;CAC7B,CAAC;AAEX;;GAEG;AACU,QAAA,MAAM,GAAG;IACpB,cAAc,EAAE,YAAY;IAC5B,cAAc,EAAE,CAAC;CACT,CAAC;AAEX;;;GAGG;AACU,QAAA,cAAc,GAAG,iBAA0B,CAAC;AAEzD;;GAEG;AACU,QAAA,2BAA2B,GAAG,8BAAuC,CAAC;AAEnF;;;GAGG;AACU,QAAA,IAAI,GAAG;IAClB,+BAA+B;IAC/B,SAAS,EAAE,QAAiB;IAE5B,0BAA0B;IAC1B,MAAM,EAAE,SAAkB;IAE1B,kDAAkD;IAClD,OAAO,EAAE,uBAAuB;IAEhC,6CAA6C;IAC7C,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,YAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,0BAA0B;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,YAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,YAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,6CAA6C;IAC7C,eAAe,EAAE,MAAM;IACvB,4CAA4C;IAC5C,cAAc,EAAE,GAAG;IACnB,8CAA8C;IAC9C,iBAAiB,EAAE,KAAK;IACxB,0DAA0D;IAC1D,eAAe,EAAE,KAAK;IACtB,kDAAkD;IAClD,YAAY,EAAE,KAAK;IACnB,uCAAuC;IACvC,WAAW,EAAE,EAAE;IACf,2CAA2C;IAC3C,UAAU,EAAE,IAAI;IAChB,4CAA4C;IAC5C,cAAc,EAAE,IAAI;IACpB,4CAA4C;IAC5C,YAAY,EAAE,CAAC;IACf,sDAAsD;IACtD,gBAAgB,EAAE,MAAM;CAChB,CAAC;AAEX;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,4BAA4B;IAC5B,SAAS,EAAE,IAAI;IACf,0CAA0C;IAC1C,eAAe,EAAE,IAAI;IACrB,qDAAqD;IACrD,cAAc,EAAE,KAAK;CACb,CAAC;AAEX;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,8BAA8B;IAC9B,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAU;IACnE,2BAA2B;IAC3B,SAAS,EAAE,CAAC,gBAAgB,CAAU;IACtC,yBAAyB;IACzB,QAAQ,EAAE,CAAC,aAAa,CAAU;IAClC,oBAAoB;IACpB,YAAY,EAAE,CAAC,SAAS,CAAU;IAClC,sBAAsB;IACtB,aAAa,EAAE,CAAC,WAAW,CAAU;CAC7B,CAAC;AAEX;;GAEG;AACU,QAAA,uBAAuB,GAAG,0BAAmC,CAAC;AAE3E;;GAEG;AACU,QAAA,kBAAkB,GAAG;IAChC,yDAAyD;IACzD,UAAU,EAAE,aAAsB;IAClC,kDAAkD;IAClD,WAAW,EAAE,cAAuB;IACpC,0CAA0C;IAC1C,gBAAgB,EAAE,mBAA4B;IAC9C,8CAA8C;IAC9C,cAAc,EAAE,iBAA0B;CAClC,CAAC;AAEX;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB,SAAS,EAAT,iBAAS;IACT,YAAY,EAAZ,oBAAY;IACZ,UAAU,EAAV,kBAAU;IACV,OAAO,EAAP,eAAO;IACP,SAAS,EAAT,iBAAS;IACT,IAAI,EAAJ,YAAI;IACJ,OAAO,EAAP,eAAO;IACP,MAAM,EAAN,cAAM;IACN,cAAc,EAAd,sBAAc;IACd,2BAA2B,EAA3B,mCAA2B;IAC3B,IAAI,EAAJ,YAAI;IACJ,eAAe,EAAf,uBAAe;IACf,gBAAgB,EAAhB,wBAAgB;IAChB,uBAAuB,EAAvB,+BAAuB;IACvB,kBAAkB,EAAlB,0BAAkB;CACV,CAAC"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- /**
3
- * PEAC Protocol Error Categories
4
- *
5
- * AUTO-GENERATED from specs/kernel/errors.json
6
- * DO NOT EDIT MANUALLY - run: npx tsx scripts/codegen-errors.ts
7
- * Spec version: 0.10.7
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ERROR_CATEGORIES = void 0;
11
- /**
12
- * Canonical error categories derived from specs/kernel/errors.json.
13
- * This is the single source of truth for all error category definitions.
14
- * Sorted alphabetically. This ordering is a codegen invariant.
15
- */
16
- exports.ERROR_CATEGORIES = [
17
- 'attribution',
18
- 'bundle',
19
- 'control',
20
- 'dispute',
21
- 'identity',
22
- 'infrastructure',
23
- 'interaction',
24
- 'ucp',
25
- 'validation',
26
- 'verification',
27
- 'verifier',
28
- 'workflow',
29
- ];
30
- //# sourceMappingURL=error-categories.generated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-categories.generated.js","sourceRoot":"","sources":["../src/error-categories.generated.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;GAIG;AACU,QAAA,gBAAgB,GAAG;IAC9B,aAAa;IACb,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,KAAK;IACL,YAAY;IACZ,cAAc;IACd,UAAU;IACV,UAAU;CACF,CAAC"}