@peac/schema 0.11.2 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1156,6 +1156,306 @@ function validateEvidence(evidence, limits) {
1156
1156
  }
1157
1157
  return { ok: true, value: evidence };
1158
1158
  }
1159
+ var PROOF_TYPES = [
1160
+ "ed25519-cert-chain",
1161
+ "eat-passport",
1162
+ "eat-background-check",
1163
+ "sigstore-oidc",
1164
+ "did",
1165
+ "spiffe",
1166
+ "x509-pki",
1167
+ "custom"
1168
+ ];
1169
+ var ProofTypeSchema = zod.z.enum(PROOF_TYPES);
1170
+ function isOriginOnly(value) {
1171
+ try {
1172
+ const url = new URL(value);
1173
+ if (url.protocol !== "https:" && url.protocol !== "http:") {
1174
+ return false;
1175
+ }
1176
+ if (url.pathname !== "/") {
1177
+ return false;
1178
+ }
1179
+ if (url.search !== "") {
1180
+ return false;
1181
+ }
1182
+ if (url.hash !== "" || value.includes("#")) {
1183
+ return false;
1184
+ }
1185
+ if (url.username !== "" || url.password !== "") {
1186
+ return false;
1187
+ }
1188
+ if (url.hostname.endsWith(".")) {
1189
+ return false;
1190
+ }
1191
+ const hostPart = value.replace(/^https?:\/\//, "").split(/[/:]/)[0];
1192
+ if (hostPart.endsWith(".")) {
1193
+ return false;
1194
+ }
1195
+ if (url.hostname.includes("%")) {
1196
+ return false;
1197
+ }
1198
+ return true;
1199
+ } catch {
1200
+ return false;
1201
+ }
1202
+ }
1203
+ var ACTOR_BINDING_EXTENSION_KEY = "org.peacprotocol/actor_binding";
1204
+ var ActorBindingSchema = zod.z.object({
1205
+ /** Stable actor identifier (opaque, no PII) */
1206
+ id: zod.z.string().min(1).max(256),
1207
+ /** Proof type from DD-143 multi-root vocabulary */
1208
+ proof_type: ProofTypeSchema,
1209
+ /** URI or hash of external proof artifact */
1210
+ proof_ref: zod.z.string().max(2048).optional(),
1211
+ /** Origin-only URL: scheme + host + optional port; NO path, query, or fragment */
1212
+ origin: zod.z.string().max(2048).refine(isOriginOnly, {
1213
+ message: "origin must be an origin-only URL (scheme + host + optional port; no path, query, or fragment)"
1214
+ }),
1215
+ /** SHA-256 hash of the intent (hash-first per DD-138) */
1216
+ intent_hash: zod.z.string().regex(/^sha256:[a-f0-9]{64}$/, {
1217
+ message: "intent_hash must match sha256:<64 hex chars>"
1218
+ }).optional()
1219
+ }).strict();
1220
+ var MVISTimeBoundsSchema = zod.z.object({
1221
+ /** Earliest valid time (RFC 3339) */
1222
+ not_before: zod.z.string().datetime(),
1223
+ /** Latest valid time (RFC 3339) */
1224
+ not_after: zod.z.string().datetime()
1225
+ }).strict();
1226
+ var MVISReplayProtectionSchema = zod.z.object({
1227
+ /** Unique token identifier (jti from JWT or equivalent) */
1228
+ jti: zod.z.string().min(1).max(256),
1229
+ /** Optional nonce for additional replay protection */
1230
+ nonce: zod.z.string().max(256).optional()
1231
+ }).strict();
1232
+ var MVISFieldsSchema = zod.z.object({
1233
+ /** Who issued the identity assertion */
1234
+ issuer: zod.z.string().min(1).max(2048),
1235
+ /** Who the identity is about (opaque identifier, no PII) */
1236
+ subject: zod.z.string().min(1).max(256),
1237
+ /** Cryptographic binding: kid or JWK thumbprint */
1238
+ key_binding: zod.z.string().min(1).max(256),
1239
+ /** Validity period */
1240
+ time_bounds: MVISTimeBoundsSchema,
1241
+ /** Replay protection */
1242
+ replay_protection: MVISReplayProtectionSchema
1243
+ }).strict();
1244
+ function validateActorBinding(data) {
1245
+ const result = ActorBindingSchema.safeParse(data);
1246
+ if (result.success) {
1247
+ return { ok: true, value: result.data };
1248
+ }
1249
+ return { ok: false, error: result.error.message };
1250
+ }
1251
+ function validateMVIS(data) {
1252
+ const result = MVISFieldsSchema.safeParse(data);
1253
+ if (!result.success) {
1254
+ return { ok: false, error: result.error.message };
1255
+ }
1256
+ const notBefore = new Date(result.data.time_bounds.not_before).getTime();
1257
+ const notAfter = new Date(result.data.time_bounds.not_after).getTime();
1258
+ if (notBefore >= notAfter) {
1259
+ return { ok: false, error: "not_before must be before not_after" };
1260
+ }
1261
+ const MAX_DURATION_MS = 100 * 365.25 * 24 * 60 * 60 * 1e3;
1262
+ if (notAfter - notBefore > MAX_DURATION_MS) {
1263
+ return { ok: false, error: "time_bounds duration must not exceed 100 years" };
1264
+ }
1265
+ return { ok: true, value: result.data };
1266
+ }
1267
+ var CREDENTIAL_EVENT_EXTENSION_KEY = "org.peacprotocol/credential_event";
1268
+ var CREDENTIAL_EVENTS = ["issued", "leased", "rotated", "revoked", "expired"];
1269
+ var CredentialEventTypeSchema = zod.z.enum(CREDENTIAL_EVENTS);
1270
+ var FINGERPRINT_REF_PATTERN = /^(sha256|hmac-sha256):[a-f0-9]{64}$/;
1271
+ var CredentialRefSchema = zod.z.string().max(256).regex(FINGERPRINT_REF_PATTERN, {
1272
+ message: "credential_ref must be an opaque fingerprint reference: (sha256|hmac-sha256):<64 hex chars>"
1273
+ });
1274
+ var CredentialEventSchema = zod.z.object({
1275
+ /** Lifecycle event type */
1276
+ event: CredentialEventTypeSchema,
1277
+ /** Opaque fingerprint reference of the credential (format validation only) */
1278
+ credential_ref: CredentialRefSchema,
1279
+ /** Authority that performed the action (HTTPS URL) */
1280
+ authority: zod.z.string().url().max(2048).refine((v) => v.startsWith("https://"), {
1281
+ message: "authority must be an HTTPS URL"
1282
+ }),
1283
+ /** When the credential expires (RFC 3339, optional) */
1284
+ expires_at: zod.z.string().datetime().optional(),
1285
+ /** Previous credential reference for rotation chains (optional) */
1286
+ previous_ref: CredentialRefSchema.optional()
1287
+ }).strict();
1288
+ function validateCredentialEvent(data) {
1289
+ const result = CredentialEventSchema.safeParse(data);
1290
+ if (result.success) {
1291
+ return { ok: true, value: result.data };
1292
+ }
1293
+ return { ok: false, error: result.error.message };
1294
+ }
1295
+ var TOOL_REGISTRY_EXTENSION_KEY = "org.peacprotocol/tool_registry";
1296
+ function isAllowedRegistryUri(value) {
1297
+ if (value.startsWith("urn:")) {
1298
+ return true;
1299
+ }
1300
+ try {
1301
+ const url = new URL(value);
1302
+ return url.protocol === "https:";
1303
+ } catch {
1304
+ return false;
1305
+ }
1306
+ }
1307
+ var ToolRegistrySchema = zod.z.object({
1308
+ /** Tool identifier */
1309
+ tool_id: zod.z.string().min(1).max(256),
1310
+ /** Registry URI (HTTPS or URN only; no file:// or data:// for SSRF prevention) */
1311
+ registry_uri: zod.z.string().max(2048).refine(isAllowedRegistryUri, {
1312
+ message: "registry_uri must be an HTTPS URL or URN (file:// and data:// are prohibited)"
1313
+ }),
1314
+ /** Tool version (optional, semver-like) */
1315
+ version: zod.z.string().max(64).optional(),
1316
+ /** Tool capabilities (optional) */
1317
+ capabilities: zod.z.array(zod.z.string().max(64)).max(32).optional()
1318
+ }).strict();
1319
+ function validateToolRegistry(data) {
1320
+ const result = ToolRegistrySchema.safeParse(data);
1321
+ if (result.success) {
1322
+ return { ok: true, value: result.data };
1323
+ }
1324
+ return { ok: false, error: result.error.message };
1325
+ }
1326
+ var CONTROL_ACTION_EXTENSION_KEY = "org.peacprotocol/control_action";
1327
+ var CONTROL_ACTIONS = ["grant", "deny", "escalate", "delegate", "audit"];
1328
+ var ControlActionTypeSchema = zod.z.enum(CONTROL_ACTIONS);
1329
+ var CONTROL_TRIGGERS = [
1330
+ "policy_evaluation",
1331
+ "manual_review",
1332
+ "anomaly_detection",
1333
+ "scheduled",
1334
+ "event_driven"
1335
+ ];
1336
+ var ControlTriggerSchema = zod.z.enum(CONTROL_TRIGGERS);
1337
+ var ControlActionSchema = zod.z.object({
1338
+ /** Action taken */
1339
+ action: ControlActionTypeSchema,
1340
+ /** What triggered the action */
1341
+ trigger: ControlTriggerSchema,
1342
+ /** Resource or scope the action applies to (optional) */
1343
+ resource: zod.z.string().max(2048).optional(),
1344
+ /** Reason for the action (optional, human-readable) */
1345
+ reason: zod.z.string().max(1024).optional(),
1346
+ /** Policy identifier that was evaluated (optional) */
1347
+ policy_ref: zod.z.string().max(2048).optional(),
1348
+ /** When the action was taken (RFC 3339, optional; defaults to receipt iat) */
1349
+ action_at: zod.z.string().datetime().optional()
1350
+ }).strict();
1351
+ function validateControlAction(data) {
1352
+ const result = ControlActionSchema.safeParse(data);
1353
+ if (result.success) {
1354
+ return { ok: true, value: result.data };
1355
+ }
1356
+ return { ok: false, error: result.error.message };
1357
+ }
1358
+ var TREATY_EXTENSION_KEY = "org.peacprotocol/treaty";
1359
+ var COMMITMENT_CLASSES = ["informational", "operational", "financial", "legal"];
1360
+ var CommitmentClassSchema = zod.z.enum(COMMITMENT_CLASSES);
1361
+ var TreatySchema = zod.z.object({
1362
+ /** Commitment level */
1363
+ commitment_class: CommitmentClassSchema,
1364
+ /** URL to full terms document (optional) */
1365
+ terms_ref: zod.z.string().url().max(2048).optional(),
1366
+ /** SHA-256 hash of terms document for integrity verification (optional) */
1367
+ terms_hash: zod.z.string().regex(/^sha256:[a-f0-9]{64}$/, {
1368
+ message: "terms_hash must match sha256:<64 hex chars>"
1369
+ }).optional(),
1370
+ /** Counterparty identifier (optional) */
1371
+ counterparty: zod.z.string().max(256).optional(),
1372
+ /** When the treaty becomes effective (RFC 3339, optional) */
1373
+ effective_at: zod.z.string().datetime().optional(),
1374
+ /** When the treaty expires (RFC 3339, optional) */
1375
+ expires_at: zod.z.string().datetime().optional()
1376
+ }).strict();
1377
+ function validateTreaty(data) {
1378
+ const result = TreatySchema.safeParse(data);
1379
+ if (!result.success) {
1380
+ return { ok: false, error: result.error.message };
1381
+ }
1382
+ if (result.data.effective_at && result.data.expires_at) {
1383
+ const effectiveMs = new Date(result.data.effective_at).getTime();
1384
+ const expiresMs = new Date(result.data.expires_at).getTime();
1385
+ if (effectiveMs > expiresMs) {
1386
+ return { ok: false, error: "effective_at must not be after expires_at" };
1387
+ }
1388
+ }
1389
+ return { ok: true, value: result.data };
1390
+ }
1391
+
1392
+ // src/extensions/fingerprint-ref.ts
1393
+ function hexToBase64url(hex) {
1394
+ const bytes = new Uint8Array(hex.length / 2);
1395
+ for (let i = 0; i < hex.length; i += 2) {
1396
+ bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
1397
+ }
1398
+ let base64;
1399
+ if (typeof Buffer !== "undefined") {
1400
+ base64 = Buffer.from(bytes).toString("base64");
1401
+ } else {
1402
+ base64 = btoa(String.fromCharCode(...bytes));
1403
+ }
1404
+ return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
1405
+ }
1406
+ function base64urlToHex(b64url) {
1407
+ let base64 = b64url.replace(/-/g, "+").replace(/_/g, "/");
1408
+ while (base64.length % 4 !== 0) {
1409
+ base64 += "=";
1410
+ }
1411
+ let bytes;
1412
+ if (typeof Buffer !== "undefined") {
1413
+ bytes = Buffer.from(base64, "base64");
1414
+ } else {
1415
+ const binary = atob(base64);
1416
+ bytes = new Uint8Array(binary.length);
1417
+ for (let i = 0; i < binary.length; i++) {
1418
+ bytes[i] = binary.charCodeAt(i);
1419
+ }
1420
+ }
1421
+ return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
1422
+ }
1423
+ var VALID_ALGS = ["sha256", "hmac-sha256"];
1424
+ var STRING_FORM_PATTERN = /^(sha256|hmac-sha256):([a-f0-9]{64})$/;
1425
+ var MAX_FINGERPRINT_REF_LENGTH = 76;
1426
+ var BASE64URL_PATTERN = /^[A-Za-z0-9_-]+$/;
1427
+ function stringToFingerprintRef(s) {
1428
+ if (s.length > MAX_FINGERPRINT_REF_LENGTH) {
1429
+ return null;
1430
+ }
1431
+ const match = STRING_FORM_PATTERN.exec(s);
1432
+ if (!match) {
1433
+ return null;
1434
+ }
1435
+ const alg = match[1];
1436
+ const hex = match[2];
1437
+ return {
1438
+ alg,
1439
+ value: hexToBase64url(hex)
1440
+ };
1441
+ }
1442
+ function fingerprintRefToString(obj) {
1443
+ if (!VALID_ALGS.includes(obj.alg)) {
1444
+ return null;
1445
+ }
1446
+ if (!BASE64URL_PATTERN.test(obj.value)) {
1447
+ return null;
1448
+ }
1449
+ try {
1450
+ const hex = base64urlToHex(obj.value);
1451
+ if (hex.length !== 64) {
1452
+ return null;
1453
+ }
1454
+ return `${obj.alg}:${hex}`;
1455
+ } catch {
1456
+ return null;
1457
+ }
1458
+ }
1159
1459
  var DISPUTE_LIMITS = {
1160
1460
  /** Maximum grounds per dispute */
1161
1461
  maxGrounds: 10,
@@ -2827,7 +3127,33 @@ function parseReceiptClaims(input, _opts) {
2827
3127
  claims: result.data
2828
3128
  };
2829
3129
  }
3130
+ var REVOCATION_REASONS = [
3131
+ "key_compromise",
3132
+ "superseded",
3133
+ "cessation_of_operation",
3134
+ "privilege_withdrawn"
3135
+ ];
3136
+ var RevokedKeyEntrySchema = zod.z.object({
3137
+ /** Key ID that was revoked */
3138
+ kid: zod.z.string().min(1).max(256),
3139
+ /** ISO 8601 timestamp of revocation */
3140
+ revoked_at: zod.z.string().datetime(),
3141
+ /** Revocation reason (optional, RFC 5280 CRLReason subset) */
3142
+ reason: zod.z.enum(REVOCATION_REASONS).optional()
3143
+ }).strict();
3144
+ var RevokedKeysArraySchema = zod.z.array(RevokedKeyEntrySchema).max(100);
3145
+ function validateRevokedKeys(data) {
3146
+ const result = RevokedKeysArraySchema.safeParse(data);
3147
+ if (result.success) {
3148
+ return { ok: true, value: result.data };
3149
+ }
3150
+ return { ok: false, error: result.error.issues.map((i) => i.message).join("; ") };
3151
+ }
3152
+ function findRevokedKey(revokedKeys, kid) {
3153
+ return revokedKeys.find((entry) => entry.kid === kid) ?? null;
3154
+ }
2830
3155
 
3156
+ exports.ACTOR_BINDING_EXTENSION_KEY = ACTOR_BINDING_EXTENSION_KEY;
2831
3157
  exports.AGENT_IDENTITY_TYPE = AGENT_IDENTITY_TYPE;
2832
3158
  exports.AIPREFSnapshotSchema = AIPREFSnapshot;
2833
3159
  exports.ATTESTATION_LIMITS = ATTESTATION_LIMITS;
@@ -2835,6 +3161,7 @@ exports.ATTESTATION_RECEIPT_TYPE = ATTESTATION_RECEIPT_TYPE;
2835
3161
  exports.ATTRIBUTION_LIMITS = ATTRIBUTION_LIMITS;
2836
3162
  exports.ATTRIBUTION_TYPE = ATTRIBUTION_TYPE;
2837
3163
  exports.ATTRIBUTION_USAGES = ATTRIBUTION_USAGES;
3164
+ exports.ActorBindingSchema = ActorBindingSchema;
2838
3165
  exports.AgentIdentityAttestationSchema = AgentIdentityAttestationSchema;
2839
3166
  exports.AgentIdentityEvidenceSchema = AgentIdentityEvidenceSchema;
2840
3167
  exports.AgentIdentityVerifiedSchema = AgentIdentityVerifiedSchema;
@@ -2850,23 +3177,36 @@ exports.BindingDetailsSchema = BindingDetailsSchema;
2850
3177
  exports.CANONICAL_DIGEST_ALGS = CANONICAL_DIGEST_ALGS;
2851
3178
  exports.CANONICAL_PURPOSES = CANONICAL_PURPOSES;
2852
3179
  exports.CARRIER_TRANSPORT_LIMITS = CARRIER_TRANSPORT_LIMITS;
3180
+ exports.COMMITMENT_CLASSES = COMMITMENT_CLASSES;
2853
3181
  exports.CONTRIBUTION_TYPES = CONTRIBUTION_TYPES;
3182
+ exports.CONTROL_ACTIONS = CONTROL_ACTIONS;
3183
+ exports.CONTROL_ACTION_EXTENSION_KEY = CONTROL_ACTION_EXTENSION_KEY;
3184
+ exports.CONTROL_TRIGGERS = CONTROL_TRIGGERS;
2854
3185
  exports.CONTROL_TYPES = CONTROL_TYPES;
3186
+ exports.CREDENTIAL_EVENTS = CREDENTIAL_EVENTS;
3187
+ exports.CREDENTIAL_EVENT_EXTENSION_KEY = CREDENTIAL_EVENT_EXTENSION_KEY;
2855
3188
  exports.CREDIT_METHODS = CREDIT_METHODS;
2856
3189
  exports.CanonicalPurposeSchema = CanonicalPurposeSchema;
2857
3190
  exports.CarrierFormatSchema = CarrierFormatSchema;
2858
3191
  exports.CarrierMetaSchema = CarrierMetaSchema;
3192
+ exports.CommitmentClassSchema = CommitmentClassSchema;
2859
3193
  exports.CompactJwsSchema = CompactJwsSchema;
2860
3194
  exports.ContactMethodSchema = ContactMethodSchema;
2861
3195
  exports.ContentHashSchema = ContentHashSchema;
2862
3196
  exports.ContributionObligationSchema = ContributionObligationSchema;
2863
3197
  exports.ContributionTypeSchema = ContributionTypeSchema;
3198
+ exports.ControlActionSchema = ControlActionSchema;
3199
+ exports.ControlActionTypeSchema = ControlActionTypeSchema;
2864
3200
  exports.ControlBlockSchema = ControlBlockSchema;
2865
3201
  exports.ControlDecisionSchema = ControlDecisionSchema;
2866
3202
  exports.ControlLicensingModeSchema = ControlLicensingModeSchema;
2867
3203
  exports.ControlPurposeSchema = ControlPurposeSchema;
2868
3204
  exports.ControlStepSchema = ControlStepSchema;
3205
+ exports.ControlTriggerSchema = ControlTriggerSchema;
2869
3206
  exports.ControlTypeSchema = ControlTypeSchema;
3207
+ exports.CredentialEventSchema = CredentialEventSchema;
3208
+ exports.CredentialEventTypeSchema = CredentialEventTypeSchema;
3209
+ exports.CredentialRefSchema = CredentialRefSchema;
2870
3210
  exports.CreditMethodSchema = CreditMethodSchema;
2871
3211
  exports.CreditObligationSchema = CreditObligationSchema;
2872
3212
  exports.DERIVATION_TYPES = DERIVATION_TYPES;
@@ -2920,6 +3260,9 @@ exports.KindSchema = KindSchema;
2920
3260
  exports.MAX_PURPOSE_TOKENS_PER_REQUEST = MAX_PURPOSE_TOKENS_PER_REQUEST;
2921
3261
  exports.MAX_PURPOSE_TOKEN_LENGTH = MAX_PURPOSE_TOKEN_LENGTH;
2922
3262
  exports.MIDDLEWARE_INTERACTION_KEY = MIDDLEWARE_INTERACTION_KEY;
3263
+ exports.MVISFieldsSchema = MVISFieldsSchema;
3264
+ exports.MVISReplayProtectionSchema = MVISReplayProtectionSchema;
3265
+ exports.MVISTimeBoundsSchema = MVISTimeBoundsSchema;
2923
3266
  exports.MinimalInteractionBindingSchema = MinimalInteractionBindingSchema;
2924
3267
  exports.NormalizedPayment = NormalizedPayment;
2925
3268
  exports.OBLIGATIONS_EXTENSION_KEY = OBLIGATIONS_EXTENSION_KEY;
@@ -2943,6 +3286,7 @@ exports.PEAC_RECEIPT_SCHEMA_URL = PEAC_RECEIPT_SCHEMA_URL;
2943
3286
  exports.PEAC_WIRE_TYP = PEAC_WIRE_TYP;
2944
3287
  exports.POLICY_DECISIONS = POLICY_DECISIONS;
2945
3288
  exports.PROOF_METHODS = PROOF_METHODS;
3289
+ exports.PROOF_TYPES = PROOF_TYPES;
2946
3290
  exports.PURPOSE_REASONS = PURPOSE_REASONS;
2947
3291
  exports.PURPOSE_TOKEN_REGEX = PURPOSE_TOKEN_REGEX;
2948
3292
  exports.PayloadRefSchema = PayloadRefSchema;
@@ -2952,12 +3296,14 @@ exports.PaymentSplitSchema = PaymentSplitSchema;
2952
3296
  exports.PeacEvidenceCarrierSchema = PeacEvidenceCarrierSchema;
2953
3297
  exports.PolicyContextSchema = PolicyContextSchema;
2954
3298
  exports.ProofMethodSchema = ProofMethodSchema;
3299
+ exports.ProofTypeSchema = ProofTypeSchema;
2955
3300
  exports.PurposeReasonSchema = PurposeReasonSchema;
2956
3301
  exports.PurposeTokenSchema = PurposeTokenSchema;
2957
3302
  exports.REDACTION_MODES = REDACTION_MODES;
2958
3303
  exports.REMEDIATION_TYPES = REMEDIATION_TYPES;
2959
3304
  exports.RESERVED_KIND_PREFIXES = RESERVED_KIND_PREFIXES;
2960
3305
  exports.RESULT_STATUSES = RESULT_STATUSES;
3306
+ exports.REVOCATION_REASONS = REVOCATION_REASONS;
2961
3307
  exports.ReceiptClaims = ReceiptClaims;
2962
3308
  exports.ReceiptClaimsSchema = ReceiptClaimsSchema;
2963
3309
  exports.ReceiptRefSchema = ReceiptRefSchema2;
@@ -2967,6 +3313,8 @@ exports.RemediationSchema = RemediationSchema;
2967
3313
  exports.RemediationTypeSchema = RemediationTypeSchema;
2968
3314
  exports.ResourceTargetSchema = ResourceTargetSchema;
2969
3315
  exports.ResultSchema = ResultSchema;
3316
+ exports.RevokedKeyEntrySchema = RevokedKeyEntrySchema;
3317
+ exports.RevokedKeysArraySchema = RevokedKeysArraySchema;
2970
3318
  exports.STEP_ID_PATTERN = STEP_ID_PATTERN;
2971
3319
  exports.StepIdSchema = StepIdSchema;
2972
3320
  exports.SubjectProfileSchema = SubjectProfileSchema;
@@ -2974,7 +3322,11 @@ exports.SubjectProfileSnapshotSchema = SubjectProfileSnapshotSchema;
2974
3322
  exports.SubjectSchema = Subject;
2975
3323
  exports.SubjectTypeSchema = SubjectTypeSchema;
2976
3324
  exports.TERMINAL_STATES = TERMINAL_STATES;
3325
+ exports.TOOL_REGISTRY_EXTENSION_KEY = TOOL_REGISTRY_EXTENSION_KEY;
3326
+ exports.TREATY_EXTENSION_KEY = TREATY_EXTENSION_KEY;
3327
+ exports.ToolRegistrySchema = ToolRegistrySchema;
2977
3328
  exports.ToolTargetSchema = ToolTargetSchema;
3329
+ exports.TreatySchema = TreatySchema;
2978
3330
  exports.VerifyRequestSchema = VerifyRequest;
2979
3331
  exports.WELL_KNOWN_KINDS = WELL_KNOWN_KINDS;
2980
3332
  exports.WORKFLOW_EXTENSION_KEY = WORKFLOW_EXTENSION_KEY;
@@ -3014,6 +3366,8 @@ exports.deriveKnownPurposes = deriveKnownPurposes;
3014
3366
  exports.detectCycleInSources = detectCycleInSources;
3015
3367
  exports.determinePurposeReason = determinePurposeReason;
3016
3368
  exports.extractObligationsExtension = extractObligationsExtension;
3369
+ exports.findRevokedKey = findRevokedKey;
3370
+ exports.fingerprintRefToString = fingerprintRefToString;
3017
3371
  exports.getInteraction = getInteraction;
3018
3372
  exports.getValidTransitions = getValidTransitions;
3019
3373
  exports.hasInteraction = hasInteraction;
@@ -3036,6 +3390,7 @@ exports.isDisputeExpired = isDisputeExpired;
3036
3390
  exports.isDisputeNotYetValid = isDisputeNotYetValid;
3037
3391
  exports.isLegacyPurpose = isLegacyPurpose;
3038
3392
  exports.isMinimalInteractionBinding = isMinimalInteractionBinding;
3393
+ exports.isOriginOnly = isOriginOnly;
3039
3394
  exports.isPaymentReceipt = isPaymentReceipt;
3040
3395
  exports.isReservedKindPrefix = isReservedKindPrefix;
3041
3396
  exports.isTerminalState = isTerminalState;
@@ -3054,8 +3409,10 @@ exports.normalizeToCanonicalOrPreserve = normalizeToCanonicalOrPreserve;
3054
3409
  exports.parsePurposeHeader = parsePurposeHeader;
3055
3410
  exports.parseReceiptClaims = parseReceiptClaims;
3056
3411
  exports.setInteraction = setInteraction;
3412
+ exports.stringToFingerprintRef = stringToFingerprintRef;
3057
3413
  exports.toCoreClaims = toCoreClaims;
3058
3414
  exports.transitionDisputeState = transitionDisputeState;
3415
+ exports.validateActorBinding = validateActorBinding;
3059
3416
  exports.validateAgentIdentityAttestation = validateAgentIdentityAttestation;
3060
3417
  exports.validateAttestationReceiptClaims = validateAttestationReceiptClaims;
3061
3418
  exports.validateAttributionAttestation = validateAttributionAttestation;
@@ -3063,6 +3420,8 @@ exports.validateAttributionSource = validateAttributionSource;
3063
3420
  exports.validateCarrierConstraints = validateCarrierConstraints;
3064
3421
  exports.validateContentHash = validateContentHash;
3065
3422
  exports.validateContributionObligation = validateContributionObligation;
3423
+ exports.validateControlAction = validateControlAction;
3424
+ exports.validateCredentialEvent = validateCredentialEvent;
3066
3425
  exports.validateCreditObligation = validateCreditObligation;
3067
3426
  exports.validateDisputeAttestation = validateDisputeAttestation;
3068
3427
  exports.validateDisputeContact = validateDisputeContact;
@@ -3073,10 +3432,14 @@ exports.validateInteraction = validateInteraction;
3073
3432
  exports.validateInteractionEvidence = validateInteractionEvidence;
3074
3433
  exports.validateInteractionOrdered = validateInteractionOrdered;
3075
3434
  exports.validateKernelConstraints = validateKernelConstraints;
3435
+ exports.validateMVIS = validateMVIS;
3076
3436
  exports.validateMinimalInteractionBinding = validateMinimalInteractionBinding;
3077
3437
  exports.validateObligationsExtension = validateObligationsExtension;
3078
3438
  exports.validatePurposeTokens = validatePurposeTokens;
3439
+ exports.validateRevokedKeys = validateRevokedKeys;
3079
3440
  exports.validateSubjectSnapshot = validateSubjectSnapshot;
3441
+ exports.validateToolRegistry = validateToolRegistry;
3442
+ exports.validateTreaty = validateTreaty;
3080
3443
  exports.validateWorkflowContext = validateWorkflowContext;
3081
3444
  exports.validateWorkflowContextOrdered = validateWorkflowContextOrdered;
3082
3445
  exports.validateWorkflowSummaryAttestation = validateWorkflowSummaryAttestation;