@clawbureau/clawverify-core 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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -0
  3. package/dist/crypto.d.ts +27 -0
  4. package/dist/crypto.d.ts.map +1 -0
  5. package/dist/crypto.js +124 -0
  6. package/dist/crypto.js.map +1 -0
  7. package/dist/index.d.ts +27 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +24 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/jcs.d.ts +13 -0
  12. package/dist/jcs.d.ts.map +1 -0
  13. package/dist/jcs.js +43 -0
  14. package/dist/jcs.js.map +1 -0
  15. package/dist/model-identity.d.ts +46 -0
  16. package/dist/model-identity.d.ts.map +1 -0
  17. package/dist/model-identity.js +233 -0
  18. package/dist/model-identity.js.map +1 -0
  19. package/dist/schema-registry.d.ts +99 -0
  20. package/dist/schema-registry.d.ts.map +1 -0
  21. package/dist/schema-registry.js +259 -0
  22. package/dist/schema-registry.js.map +1 -0
  23. package/dist/schema-validation.d.ts +35 -0
  24. package/dist/schema-validation.d.ts.map +1 -0
  25. package/dist/schema-validation.js +156 -0
  26. package/dist/schema-validation.js.map +1 -0
  27. package/dist/schema-validators.generated.d.ts +158 -0
  28. package/dist/schema-validators.generated.d.ts.map +1 -0
  29. package/dist/schema-validators.generated.js +19186 -0
  30. package/dist/schema-validators.generated.js.map +1 -0
  31. package/dist/types.d.ts +910 -0
  32. package/dist/types.d.ts.map +1 -0
  33. package/dist/types.js +33 -0
  34. package/dist/types.js.map +1 -0
  35. package/dist/verify-audit-result-attestation.d.ts +32 -0
  36. package/dist/verify-audit-result-attestation.d.ts.map +1 -0
  37. package/dist/verify-audit-result-attestation.js +396 -0
  38. package/dist/verify-audit-result-attestation.js.map +1 -0
  39. package/dist/verify-derivation-attestation.d.ts +30 -0
  40. package/dist/verify-derivation-attestation.d.ts.map +1 -0
  41. package/dist/verify-derivation-attestation.js +371 -0
  42. package/dist/verify-derivation-attestation.js.map +1 -0
  43. package/dist/verify-execution-attestation.d.ts +32 -0
  44. package/dist/verify-execution-attestation.d.ts.map +1 -0
  45. package/dist/verify-execution-attestation.js +578 -0
  46. package/dist/verify-execution-attestation.js.map +1 -0
  47. package/dist/verify-export-bundle.d.ts +14 -0
  48. package/dist/verify-export-bundle.d.ts.map +1 -0
  49. package/dist/verify-export-bundle.js +307 -0
  50. package/dist/verify-export-bundle.js.map +1 -0
  51. package/dist/verify-log-inclusion-proof.d.ts +16 -0
  52. package/dist/verify-log-inclusion-proof.d.ts.map +1 -0
  53. package/dist/verify-log-inclusion-proof.js +216 -0
  54. package/dist/verify-log-inclusion-proof.js.map +1 -0
  55. package/dist/verify-proof-bundle.d.ts +48 -0
  56. package/dist/verify-proof-bundle.d.ts.map +1 -0
  57. package/dist/verify-proof-bundle.js +1708 -0
  58. package/dist/verify-proof-bundle.js.map +1 -0
  59. package/dist/verify-receipt.d.ts +30 -0
  60. package/dist/verify-receipt.d.ts.map +1 -0
  61. package/dist/verify-receipt.js +408 -0
  62. package/dist/verify-receipt.js.map +1 -0
  63. package/dist/verify-web-receipt.d.ts +21 -0
  64. package/dist/verify-web-receipt.d.ts.map +1 -0
  65. package/dist/verify-web-receipt.js +341 -0
  66. package/dist/verify-web-receipt.js.map +1 -0
  67. package/package.json +54 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Schema Registry
3
+ * Fail-closed validation: reject any unknown version/type/algorithm
4
+ * CVF-US-009: Schema registry allowlist for deterministic validation
5
+ */
6
+ import { type EnvelopeVersion, type EnvelopeType, type Algorithm, type HashAlgorithm } from './types.js';
7
+ /**
8
+ * Schema allowlist entry - defines an allowed schema ID with its version
9
+ */
10
+ export interface SchemaAllowlistEntry {
11
+ /** Schema identifier (e.g., 'artifact_signature') */
12
+ schema_id: string;
13
+ /** Current active version */
14
+ version: string;
15
+ /** All supported versions for this schema */
16
+ supported_versions: string[];
17
+ /** Schema status */
18
+ status: 'active' | 'deprecated';
19
+ /** When this schema was added to the allowlist */
20
+ added_at: string;
21
+ /** Optional deprecation date for deprecated schemas */
22
+ deprecated_at?: string;
23
+ }
24
+ /**
25
+ * Allowlisted schema IDs and their versions
26
+ * This is the authoritative list - any schema not in this list is rejected
27
+ */
28
+ export declare const SCHEMA_ALLOWLIST: readonly SchemaAllowlistEntry[];
29
+ /**
30
+ * Check if a schema ID is in the allowlist
31
+ * @param schemaId - The schema ID to check
32
+ * @returns true if the schema ID is allowlisted, false otherwise
33
+ */
34
+ export declare function isAllowlistedSchemaId(schemaId: unknown): schemaId is string;
35
+ /**
36
+ * Check if a schema ID + version combination is allowlisted
37
+ * @param schemaId - The schema ID to check
38
+ * @param version - The version to check
39
+ * @returns true if the combination is allowlisted, false otherwise
40
+ */
41
+ export declare function isAllowlistedSchemaVersion(schemaId: string, version: string): boolean;
42
+ /**
43
+ * Get the allowlist entry for a schema ID
44
+ * @param schemaId - The schema ID to look up
45
+ * @returns The allowlist entry or undefined if not found
46
+ */
47
+ export declare function getSchemaAllowlistEntry(schemaId: string): SchemaAllowlistEntry | undefined;
48
+ /**
49
+ * Get all allowlisted schema IDs
50
+ * @returns Array of all allowlisted schema IDs
51
+ */
52
+ export declare function getAllowlistedSchemaIds(): string[];
53
+ /**
54
+ * Validate schema ID and version against the allowlist
55
+ * Returns detailed error information for fail-closed behavior
56
+ */
57
+ export interface SchemaValidationResult {
58
+ valid: boolean;
59
+ schema_id?: string;
60
+ version?: string;
61
+ error_code?: 'UNKNOWN_SCHEMA_ID' | 'UNKNOWN_SCHEMA_VERSION' | 'DEPRECATED_SCHEMA';
62
+ error_message?: string;
63
+ }
64
+ /**
65
+ * Validate a schema ID and version against the allowlist
66
+ * @param schemaId - The schema ID to validate
67
+ * @param version - The version to validate (optional, defaults to checking if ID exists)
68
+ * @returns Validation result with error details if invalid
69
+ */
70
+ export declare function validateSchemaAllowlist(schemaId: string, version?: string): SchemaValidationResult;
71
+ /**
72
+ * Check if an envelope version is allowlisted
73
+ */
74
+ export declare function isAllowedVersion(version: unknown): version is EnvelopeVersion;
75
+ /**
76
+ * Check if an envelope type is allowlisted
77
+ */
78
+ export declare function isAllowedType(type: unknown): type is EnvelopeType;
79
+ /**
80
+ * Check if a signature algorithm is allowlisted
81
+ */
82
+ export declare function isAllowedAlgorithm(algorithm: unknown): algorithm is Algorithm;
83
+ /**
84
+ * Check if a hash algorithm is allowlisted
85
+ */
86
+ export declare function isAllowedHashAlgorithm(hashAlgorithm: unknown): hashAlgorithm is HashAlgorithm;
87
+ /**
88
+ * Validate DID format (did:key:... or did:web:...)
89
+ */
90
+ export declare function isValidDidFormat(did: unknown): did is string;
91
+ /**
92
+ * Validate ISO 8601 date format
93
+ */
94
+ export declare function isValidIsoDate(date: unknown): date is string;
95
+ /**
96
+ * Validate base64url string format
97
+ */
98
+ export declare function isValidBase64Url(str: unknown): str is string;
99
+ //# sourceMappingURL=schema-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../src/schema-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB;IACpB,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC;IAChC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EA0GlD,CAAC;AASX;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAG3E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAIT;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,GACf,oBAAoB,GAAG,SAAS,CAElC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,mBAAmB,GAAG,wBAAwB,GAAG,mBAAmB,CAAC;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,sBAAsB,CA0CxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAK7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAKjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI,SAAS,CAK7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,OAAO,GACrB,aAAa,IAAI,aAAa,CAKhC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAI5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAI5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAI5D"}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Schema Registry
3
+ * Fail-closed validation: reject any unknown version/type/algorithm
4
+ * CVF-US-009: Schema registry allowlist for deterministic validation
5
+ */
6
+ import { ENVELOPE_VERSIONS, ENVELOPE_TYPES, ALGORITHMS, HASH_ALGORITHMS, } from './types.js';
7
+ /**
8
+ * Allowlisted schema IDs and their versions
9
+ * This is the authoritative list - any schema not in this list is rejected
10
+ */
11
+ export const SCHEMA_ALLOWLIST = [
12
+ {
13
+ schema_id: 'artifact_signature',
14
+ version: '1',
15
+ supported_versions: ['1'],
16
+ status: 'active',
17
+ added_at: '2026-01-01T00:00:00Z',
18
+ },
19
+ {
20
+ schema_id: 'message_signature',
21
+ version: '1',
22
+ supported_versions: ['1'],
23
+ status: 'active',
24
+ added_at: '2026-01-01T00:00:00Z',
25
+ },
26
+ {
27
+ schema_id: 'gateway_receipt',
28
+ version: '1',
29
+ supported_versions: ['1'],
30
+ status: 'active',
31
+ added_at: '2026-01-01T00:00:00Z',
32
+ },
33
+ {
34
+ schema_id: 'web_receipt',
35
+ version: '1',
36
+ supported_versions: ['1'],
37
+ status: 'active',
38
+ added_at: '2026-02-11T00:00:00Z',
39
+ },
40
+ {
41
+ schema_id: 'proof_bundle',
42
+ version: '1',
43
+ supported_versions: ['1'],
44
+ status: 'active',
45
+ added_at: '2026-01-01T00:00:00Z',
46
+ },
47
+ {
48
+ schema_id: 'event_chain',
49
+ version: '1',
50
+ supported_versions: ['1'],
51
+ status: 'active',
52
+ added_at: '2026-01-01T00:00:00Z',
53
+ },
54
+ {
55
+ schema_id: 'owner_attestation',
56
+ version: '1',
57
+ supported_versions: ['1'],
58
+ status: 'active',
59
+ added_at: '2026-01-01T00:00:00Z',
60
+ },
61
+ {
62
+ schema_id: 'commit_proof',
63
+ version: '1',
64
+ supported_versions: ['1'],
65
+ status: 'active',
66
+ added_at: '2026-01-01T00:00:00Z',
67
+ },
68
+ {
69
+ schema_id: 'execution_attestation',
70
+ version: '1',
71
+ supported_versions: ['1'],
72
+ status: 'active',
73
+ added_at: '2026-01-01T00:00:00Z',
74
+ },
75
+ {
76
+ schema_id: 'prompt_pack',
77
+ version: '1',
78
+ supported_versions: ['1'],
79
+ status: 'active',
80
+ added_at: '2026-02-09T00:00:00Z',
81
+ },
82
+ {
83
+ schema_id: 'system_prompt_report',
84
+ version: '1',
85
+ supported_versions: ['1'],
86
+ status: 'active',
87
+ added_at: '2026-02-09T00:00:00Z',
88
+ },
89
+ {
90
+ schema_id: 'derivation_attestation',
91
+ version: '1',
92
+ supported_versions: ['1'],
93
+ status: 'active',
94
+ added_at: '2026-02-11T00:00:00Z',
95
+ },
96
+ {
97
+ schema_id: 'audit_result_attestation',
98
+ version: '1',
99
+ supported_versions: ['1'],
100
+ status: 'active',
101
+ added_at: '2026-02-11T00:00:00Z',
102
+ },
103
+ {
104
+ schema_id: 'export_bundle',
105
+ version: '1',
106
+ supported_versions: ['1'],
107
+ status: 'active',
108
+ added_at: '2026-02-11T00:00:00Z',
109
+ },
110
+ {
111
+ schema_id: 'scoped_token',
112
+ version: '1',
113
+ supported_versions: ['1'],
114
+ status: 'active',
115
+ added_at: '2026-01-01T00:00:00Z',
116
+ },
117
+ ];
118
+ /**
119
+ * Map of schema_id to allowlist entry for O(1) lookup
120
+ */
121
+ const SCHEMA_ALLOWLIST_MAP = new Map(SCHEMA_ALLOWLIST.map((entry) => [entry.schema_id, entry]));
122
+ /**
123
+ * Check if a schema ID is in the allowlist
124
+ * @param schemaId - The schema ID to check
125
+ * @returns true if the schema ID is allowlisted, false otherwise
126
+ */
127
+ export function isAllowlistedSchemaId(schemaId) {
128
+ if (typeof schemaId !== 'string')
129
+ return false;
130
+ return SCHEMA_ALLOWLIST_MAP.has(schemaId);
131
+ }
132
+ /**
133
+ * Check if a schema ID + version combination is allowlisted
134
+ * @param schemaId - The schema ID to check
135
+ * @param version - The version to check
136
+ * @returns true if the combination is allowlisted, false otherwise
137
+ */
138
+ export function isAllowlistedSchemaVersion(schemaId, version) {
139
+ const entry = SCHEMA_ALLOWLIST_MAP.get(schemaId);
140
+ if (!entry)
141
+ return false;
142
+ return entry.supported_versions.includes(version);
143
+ }
144
+ /**
145
+ * Get the allowlist entry for a schema ID
146
+ * @param schemaId - The schema ID to look up
147
+ * @returns The allowlist entry or undefined if not found
148
+ */
149
+ export function getSchemaAllowlistEntry(schemaId) {
150
+ return SCHEMA_ALLOWLIST_MAP.get(schemaId);
151
+ }
152
+ /**
153
+ * Get all allowlisted schema IDs
154
+ * @returns Array of all allowlisted schema IDs
155
+ */
156
+ export function getAllowlistedSchemaIds() {
157
+ return Array.from(SCHEMA_ALLOWLIST_MAP.keys());
158
+ }
159
+ /**
160
+ * Validate a schema ID and version against the allowlist
161
+ * @param schemaId - The schema ID to validate
162
+ * @param version - The version to validate (optional, defaults to checking if ID exists)
163
+ * @returns Validation result with error details if invalid
164
+ */
165
+ export function validateSchemaAllowlist(schemaId, version) {
166
+ // Check if schema ID is allowlisted
167
+ if (!isAllowlistedSchemaId(schemaId)) {
168
+ return {
169
+ valid: false,
170
+ schema_id: schemaId,
171
+ error_code: 'UNKNOWN_SCHEMA_ID',
172
+ error_message: `Schema ID '${schemaId}' is not in the allowlist. Allowlisted schemas: ${getAllowlistedSchemaIds().join(', ')}`,
173
+ };
174
+ }
175
+ const entry = getSchemaAllowlistEntry(schemaId);
176
+ // Check if version is provided and valid
177
+ if (version !== undefined) {
178
+ if (!entry.supported_versions.includes(version)) {
179
+ return {
180
+ valid: false,
181
+ schema_id: schemaId,
182
+ version: version,
183
+ error_code: 'UNKNOWN_SCHEMA_VERSION',
184
+ error_message: `Version '${version}' is not supported for schema '${schemaId}'. Supported versions: ${entry.supported_versions.join(', ')}`,
185
+ };
186
+ }
187
+ }
188
+ // Check if schema is deprecated (warning, but still valid)
189
+ if (entry.status === 'deprecated') {
190
+ return {
191
+ valid: true,
192
+ schema_id: schemaId,
193
+ version: version ?? entry.version,
194
+ error_code: 'DEPRECATED_SCHEMA',
195
+ error_message: `Schema '${schemaId}' is deprecated as of ${entry.deprecated_at}`,
196
+ };
197
+ }
198
+ return {
199
+ valid: true,
200
+ schema_id: schemaId,
201
+ version: version ?? entry.version,
202
+ };
203
+ }
204
+ /**
205
+ * Check if an envelope version is allowlisted
206
+ */
207
+ export function isAllowedVersion(version) {
208
+ return (typeof version === 'string' &&
209
+ ENVELOPE_VERSIONS.includes(version));
210
+ }
211
+ /**
212
+ * Check if an envelope type is allowlisted
213
+ */
214
+ export function isAllowedType(type) {
215
+ return (typeof type === 'string' &&
216
+ ENVELOPE_TYPES.includes(type));
217
+ }
218
+ /**
219
+ * Check if a signature algorithm is allowlisted
220
+ */
221
+ export function isAllowedAlgorithm(algorithm) {
222
+ return (typeof algorithm === 'string' &&
223
+ ALGORITHMS.includes(algorithm));
224
+ }
225
+ /**
226
+ * Check if a hash algorithm is allowlisted
227
+ */
228
+ export function isAllowedHashAlgorithm(hashAlgorithm) {
229
+ return (typeof hashAlgorithm === 'string' &&
230
+ HASH_ALGORITHMS.includes(hashAlgorithm));
231
+ }
232
+ /**
233
+ * Validate DID format (did:key:... or did:web:...)
234
+ */
235
+ export function isValidDidFormat(did) {
236
+ if (typeof did !== 'string')
237
+ return false;
238
+ // Basic DID format validation
239
+ return /^did:(key|web):[a-zA-Z0-9._%-]+$/.test(did);
240
+ }
241
+ /**
242
+ * Validate ISO 8601 date format
243
+ */
244
+ export function isValidIsoDate(date) {
245
+ if (typeof date !== 'string')
246
+ return false;
247
+ const parsed = Date.parse(date);
248
+ return !isNaN(parsed);
249
+ }
250
+ /**
251
+ * Validate base64url string format
252
+ */
253
+ export function isValidBase64Url(str) {
254
+ if (typeof str !== 'string')
255
+ return false;
256
+ // Base64url uses A-Z, a-z, 0-9, -, _
257
+ return /^[A-Za-z0-9_-]+$/.test(str);
258
+ }
259
+ //# sourceMappingURL=schema-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../src/schema-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,eAAe,GAKhB,MAAM,YAAY,CAAC;AAoBpB;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoC;IAC/D;QACE,SAAS,EAAE,oBAAoB;QAC/B,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,mBAAmB;QAC9B,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,mBAAmB;QAC9B,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,uBAAuB;QAClC,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,sBAAsB;QACjC,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,wBAAwB;QACnC,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,0BAA0B;QACrC,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;IACD;QACE,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,GAAG;QACZ,kBAAkB,EAAE,CAAC,GAAG,CAAC;QACzB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,sBAAsB;KACjC;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,oBAAoB,GAAsC,IAAI,GAAG,CACrE,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAC1D,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,OAAe;IAEf,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB;IAEhB,OAAO,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,OAAgB;IAEhB,oCAAoC;IACpC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,mBAAmB;YAC/B,aAAa,EAAE,cAAc,QAAQ,mDAAmD,uBAAuB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC/H,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAE,CAAC;IAEjD,yCAAyC;IACzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,wBAAwB;gBACpC,aAAa,EAAE,YAAY,OAAO,kCAAkC,QAAQ,0BAA0B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC5I,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;YACjC,UAAU,EAAE,mBAAmB;YAC/B,aAAa,EAAE,WAAW,QAAQ,yBAAyB,KAAK,CAAC,aAAa,EAAE;SACjF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC1B,iBAAuC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC3D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACvB,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACnD,OAAO,CACL,OAAO,SAAS,KAAK,QAAQ;QAC5B,UAAgC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAAsB;IAEtB,OAAO,CACL,OAAO,aAAa,KAAK,QAAQ;QAChC,eAAqC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,8BAA8B;IAC9B,OAAO,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,qCAAqC;IACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Strict JSON Schema validation (Ajv) — Workers-safe
3
+ * CVF-US-024
4
+ *
5
+ * Cloudflare Workers disallow runtime code generation (new Function/eval).
6
+ * Ajv normally compiles schemas using generated functions, so we use Ajv
7
+ * "standalone" output generated ahead-of-time:
8
+ * services/clawverify/src/schema-validators.generated.ts
9
+ */
10
+ import type { ErrorObject } from 'ajv';
11
+ export interface SchemaValidationFailure {
12
+ valid: false;
13
+ message: string;
14
+ field?: string;
15
+ /** Raw Ajv errors (for debugging). */
16
+ errors?: ErrorObject[] | null;
17
+ }
18
+ export type SchemaValidationResult = {
19
+ valid: true;
20
+ } | SchemaValidationFailure;
21
+ export declare function getSchemaValidationInitError(): string | null;
22
+ export declare function isSchemaValidationReady(): boolean;
23
+ export declare function validateProofBundleEnvelopeV1(envelope: unknown): SchemaValidationResult;
24
+ export declare function validateGatewayReceiptEnvelopeV1(envelope: unknown): SchemaValidationResult;
25
+ export declare function validateWebReceiptEnvelopeV1(envelope: unknown): SchemaValidationResult;
26
+ export declare function validateExecutionAttestationEnvelopeV1(envelope: unknown): SchemaValidationResult;
27
+ export declare function validateDerivationAttestationEnvelopeV1(envelope: unknown): SchemaValidationResult;
28
+ export declare function validateAuditResultAttestationEnvelopeV1(envelope: unknown): SchemaValidationResult;
29
+ export declare function validateLogInclusionProofV1(value: unknown): SchemaValidationResult;
30
+ export declare function validateExportBundleV1(value: unknown): SchemaValidationResult;
31
+ export declare function validateModelIdentityV1(value: unknown): SchemaValidationResult;
32
+ export declare function validateUrmV1(urm: unknown): SchemaValidationResult;
33
+ export declare function validatePromptPackV1(value: unknown): SchemaValidationResult;
34
+ export declare function validateSystemPromptReportV1(value: unknown): SchemaValidationResult;
35
+ //# sourceMappingURL=schema-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../src/schema-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAgBvC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GACf,uBAAuB,CAAC;AAyC5B,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CAG5D;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAkHD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,OAAO,GAChB,sBAAsB,CAMxB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAElF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAE9E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAElE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAE3E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAEnF"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Strict JSON Schema validation (Ajv) — Workers-safe
3
+ * CVF-US-024
4
+ *
5
+ * Cloudflare Workers disallow runtime code generation (new Function/eval).
6
+ * Ajv normally compiles schemas using generated functions, so we use Ajv
7
+ * "standalone" output generated ahead-of-time:
8
+ * services/clawverify/src/schema-validators.generated.ts
9
+ */
10
+ import { validateGatewayReceiptEnvelopeV1 as validateGatewayReceiptEnvelopeV1Generated, validateProofBundleEnvelopeV1 as validateProofBundleEnvelopeV1Generated, validateWebReceiptEnvelopeV1 as validateWebReceiptEnvelopeV1Generated, validateExecutionAttestationEnvelopeV1 as validateExecutionAttestationEnvelopeV1Generated, validateDerivationAttestationEnvelopeV1 as validateDerivationAttestationEnvelopeV1Generated, validateAuditResultAttestationEnvelopeV1 as validateAuditResultAttestationEnvelopeV1Generated, validateLogInclusionProofV1 as validateLogInclusionProofV1Generated, validateExportBundleV1 as validateExportBundleV1Generated, validateModelIdentityV1 as validateModelIdentityV1Generated, validateUrmV1 as validateUrmV1Generated, validatePromptPackV1 as validatePromptPackV1Generated, validateSystemPromptReportV1 as validateSystemPromptReportV1Generated, } from './schema-validators.generated.js';
11
+ const validateProofBundleEnvelopeV1Fn = validateProofBundleEnvelopeV1Generated;
12
+ const validateGatewayReceiptEnvelopeV1Fn = validateGatewayReceiptEnvelopeV1Generated;
13
+ const validateWebReceiptEnvelopeV1Fn = validateWebReceiptEnvelopeV1Generated;
14
+ const validateExecutionAttestationEnvelopeV1Fn = validateExecutionAttestationEnvelopeV1Generated;
15
+ const validateDerivationAttestationEnvelopeV1Fn = validateDerivationAttestationEnvelopeV1Generated;
16
+ const validateAuditResultAttestationEnvelopeV1Fn = validateAuditResultAttestationEnvelopeV1Generated;
17
+ const validateLogInclusionProofV1Fn = validateLogInclusionProofV1Generated;
18
+ const validateExportBundleV1Fn = validateExportBundleV1Generated;
19
+ const validateModelIdentityV1Fn = validateModelIdentityV1Generated;
20
+ const validateUrmV1Fn = validateUrmV1Generated;
21
+ const validatePromptPackV1Fn = validatePromptPackV1Generated;
22
+ const validateSystemPromptReportV1Fn = validateSystemPromptReportV1Generated;
23
+ export function getSchemaValidationInitError() {
24
+ // Standalone validators are generated at build/commit time.
25
+ return null;
26
+ }
27
+ export function isSchemaValidationReady() {
28
+ return true;
29
+ }
30
+ const IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
31
+ function decodeJsonPointerSegment(seg) {
32
+ // RFC 6901: ~1 -> '/', ~0 -> '~'
33
+ return seg.replace(/~1/g, '/').replace(/~0/g, '~');
34
+ }
35
+ function appendInstancePathSegment(base, seg) {
36
+ // Ajv uses JSON Pointer in instancePath; for arrays the segment is the index.
37
+ if (/^\d+$/.test(seg)) {
38
+ return `${base}[${seg}]`;
39
+ }
40
+ if (IDENTIFIER_RE.test(seg)) {
41
+ return base.length === 0 ? seg : `${base}.${seg}`;
42
+ }
43
+ const q = JSON.stringify(seg);
44
+ return base.length === 0 ? `[${q}]` : `${base}[${q}]`;
45
+ }
46
+ function appendPropertySegment(base, prop) {
47
+ // missingProperty/additionalProperty are object property names (not array indices).
48
+ if (IDENTIFIER_RE.test(prop)) {
49
+ return base.length === 0 ? prop : `${base}.${prop}`;
50
+ }
51
+ const q = JSON.stringify(prop);
52
+ return base.length === 0 ? `[${q}]` : `${base}[${q}]`;
53
+ }
54
+ function instancePathToField(instancePath) {
55
+ if (!instancePath)
56
+ return '';
57
+ const parts = instancePath
58
+ .split('/')
59
+ .filter(Boolean)
60
+ .map(decodeJsonPointerSegment);
61
+ let out = '';
62
+ for (const part of parts) {
63
+ out = appendInstancePathSegment(out, part);
64
+ }
65
+ return out;
66
+ }
67
+ function additionalPropertyFromParams(params) {
68
+ if (!params || typeof params !== 'object')
69
+ return undefined;
70
+ const p = params;
71
+ const ap = p.additionalProperty;
72
+ return typeof ap === 'string' ? ap : undefined;
73
+ }
74
+ function missingPropertyFromParams(params) {
75
+ if (!params || typeof params !== 'object')
76
+ return undefined;
77
+ const p = params;
78
+ const mp = p.missingProperty;
79
+ return typeof mp === 'string' ? mp : undefined;
80
+ }
81
+ function fieldFromAjvError(err) {
82
+ const base = instancePathToField(err.instancePath);
83
+ if (err.keyword === 'additionalProperties') {
84
+ const ap = additionalPropertyFromParams(err.params);
85
+ if (ap)
86
+ return appendPropertySegment(base, ap);
87
+ }
88
+ if (err.keyword === 'required') {
89
+ const mp = missingPropertyFromParams(err.params);
90
+ if (mp)
91
+ return appendPropertySegment(base, mp);
92
+ }
93
+ return base.length > 0 ? base : undefined;
94
+ }
95
+ function messageFromAjvError(err) {
96
+ const keyword = err.keyword ? `[${err.keyword}] ` : '';
97
+ const msg = err.message ?? 'schema validation error';
98
+ if (err.keyword === 'additionalProperties') {
99
+ const ap = additionalPropertyFromParams(err.params);
100
+ if (ap)
101
+ return `${keyword}${msg}: ${ap}`;
102
+ }
103
+ return `${keyword}${msg}`;
104
+ }
105
+ function validateWith(fn, value, label) {
106
+ const ok = fn(value);
107
+ if (ok)
108
+ return { valid: true };
109
+ const errors = fn.errors ?? null;
110
+ const first = errors && errors.length > 0 ? errors[0] : null;
111
+ return {
112
+ valid: false,
113
+ message: first
114
+ ? `${label}: ${messageFromAjvError(first)}`
115
+ : `${label}: schema validation failed`,
116
+ field: first ? fieldFromAjvError(first) : undefined,
117
+ errors,
118
+ };
119
+ }
120
+ export function validateProofBundleEnvelopeV1(envelope) {
121
+ return validateWith(validateProofBundleEnvelopeV1Fn, envelope, 'proof_bundle_envelope.v1');
122
+ }
123
+ export function validateGatewayReceiptEnvelopeV1(envelope) {
124
+ return validateWith(validateGatewayReceiptEnvelopeV1Fn, envelope, 'gateway_receipt_envelope.v1');
125
+ }
126
+ export function validateWebReceiptEnvelopeV1(envelope) {
127
+ return validateWith(validateWebReceiptEnvelopeV1Fn, envelope, 'web_receipt_envelope.v1');
128
+ }
129
+ export function validateExecutionAttestationEnvelopeV1(envelope) {
130
+ return validateWith(validateExecutionAttestationEnvelopeV1Fn, envelope, 'execution_attestation_envelope.v1');
131
+ }
132
+ export function validateDerivationAttestationEnvelopeV1(envelope) {
133
+ return validateWith(validateDerivationAttestationEnvelopeV1Fn, envelope, 'derivation_attestation_envelope.v1');
134
+ }
135
+ export function validateAuditResultAttestationEnvelopeV1(envelope) {
136
+ return validateWith(validateAuditResultAttestationEnvelopeV1Fn, envelope, 'audit_result_attestation_envelope.v1');
137
+ }
138
+ export function validateLogInclusionProofV1(value) {
139
+ return validateWith(validateLogInclusionProofV1Fn, value, 'log_inclusion_proof.v1');
140
+ }
141
+ export function validateExportBundleV1(value) {
142
+ return validateWith(validateExportBundleV1Fn, value, 'export_bundle.v1');
143
+ }
144
+ export function validateModelIdentityV1(value) {
145
+ return validateWith(validateModelIdentityV1Fn, value, 'model_identity.v1');
146
+ }
147
+ export function validateUrmV1(urm) {
148
+ return validateWith(validateUrmV1Fn, urm, 'urm.v1');
149
+ }
150
+ export function validatePromptPackV1(value) {
151
+ return validateWith(validatePromptPackV1Fn, value, 'prompt_pack.v1');
152
+ }
153
+ export function validateSystemPromptReportV1(value) {
154
+ return validateWith(validateSystemPromptReportV1Fn, value, 'system_prompt_report.v1');
155
+ }
156
+ //# sourceMappingURL=schema-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../src/schema-validation.ts"],"names":[],"mappings":"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"}