arsia-protocol 1.0.0__py3-none-any.whl

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 (86) hide show
  1. arsia_protocol/__init__.py +927 -0
  2. arsia_protocol/__main__.py +544 -0
  3. arsia_protocol/_data/profiles/arsia-compliance-profiles.json +166 -0
  4. arsia_protocol/_data/schemas/arsia-action-descriptor.schema.json +182 -0
  5. arsia_protocol/_data/schemas/arsia-action-discovery-response.schema.json +252 -0
  6. arsia_protocol/_data/schemas/arsia-asset-transfer-receipt.schema.json +177 -0
  7. arsia_protocol/_data/schemas/arsia-asset-transfer-request.schema.json +411 -0
  8. arsia_protocol/_data/schemas/arsia-asset-transfer-reversal.schema.json +41 -0
  9. arsia_protocol/_data/schemas/arsia-audit-query-response.schema.json +737 -0
  10. arsia_protocol/_data/schemas/arsia-audit-record.schema.json +751 -0
  11. arsia_protocol/_data/schemas/arsia-breach-notification.schema.json +97 -0
  12. arsia_protocol/_data/schemas/arsia-broker-discovery-request.schema.json +19 -0
  13. arsia_protocol/_data/schemas/arsia-broker-entry.schema.json +83 -0
  14. arsia_protocol/_data/schemas/arsia-broker-relay-audit.schema.json +117 -0
  15. arsia_protocol/_data/schemas/arsia-capability-descriptor.schema.json +55 -0
  16. arsia_protocol/_data/schemas/arsia-capability-policy.schema.json +69 -0
  17. arsia_protocol/_data/schemas/arsia-common.schema.json +54 -0
  18. arsia_protocol/_data/schemas/arsia-compliance-field.schema.json +267 -0
  19. arsia_protocol/_data/schemas/arsia-compliance-profiles.schema.json +132 -0
  20. arsia_protocol/_data/schemas/arsia-discovery-response.schema.json +131 -0
  21. arsia_protocol/_data/schemas/arsia-dora-incident.schema.json +102 -0
  22. arsia_protocol/_data/schemas/arsia-dpop-proof.schema.json +98 -0
  23. arsia_protocol/_data/schemas/arsia-escrow-conditions.schema.json +60 -0
  24. arsia_protocol/_data/schemas/arsia-explanation.schema.json +80 -0
  25. arsia_protocol/_data/schemas/arsia-identity-record.schema.json +132 -0
  26. arsia_protocol/_data/schemas/arsia-jwk-entry.schema.json +208 -0
  27. arsia_protocol/_data/schemas/arsia-jwt-claims.schema.json +157 -0
  28. arsia_protocol/_data/schemas/arsia-message.schema.json +2023 -0
  29. arsia_protocol/_data/schemas/arsia-mifid-audit-record.schema.json +289 -0
  30. arsia_protocol/_data/schemas/arsia-onboarding-decision.schema.json +258 -0
  31. arsia_protocol/_data/schemas/arsia-state-entry.schema.json +247 -0
  32. arsia_protocol/_data/schemas/arsia-state-operations.schema.json +940 -0
  33. arsia_protocol/_data/schemas/arsia-test-vectors.meta.json +208 -0
  34. arsia_protocol/_data/schemas/arsia-websocket-frame.schema.json +123 -0
  35. arsia_protocol/_data/test-vectors/arsia-test-vectors.json +16821 -0
  36. arsia_protocol/_data/test-vectors/keypairs.json +51 -0
  37. arsia_protocol/_data_resolver.py +64 -0
  38. arsia_protocol/_errors.py +38 -0
  39. arsia_protocol/actions/__init__.py +93 -0
  40. arsia_protocol/actions/actions.py +1286 -0
  41. arsia_protocol/assets/__init__.py +152 -0
  42. arsia_protocol/assets/assets.py +3000 -0
  43. arsia_protocol/core/__init__.py +243 -0
  44. arsia_protocol/core/authorization.py +1107 -0
  45. arsia_protocol/core/compliance.py +909 -0
  46. arsia_protocol/core/encryption.py +179 -0
  47. arsia_protocol/core/errors.py +772 -0
  48. arsia_protocol/core/idempotency.py +717 -0
  49. arsia_protocol/core/message.py +820 -0
  50. arsia_protocol/core/validation.py +883 -0
  51. arsia_protocol/core/version.py +193 -0
  52. arsia_protocol/hazmat/__init__.py +10 -0
  53. arsia_protocol/hazmat/canonicalization.py +70 -0
  54. arsia_protocol/hazmat/primitives/__init__.py +4 -0
  55. arsia_protocol/hazmat/primitives/ecdsa.py +116 -0
  56. arsia_protocol/hazmat/primitives/ed25519.py +238 -0
  57. arsia_protocol/hazmat/primitives/jwe.py +271 -0
  58. arsia_protocol/identity/__init__.py +176 -0
  59. arsia_protocol/identity/agent_id.py +342 -0
  60. arsia_protocol/identity/certificates.py +729 -0
  61. arsia_protocol/identity/discovery.py +618 -0
  62. arsia_protocol/identity/onboarding.py +1377 -0
  63. arsia_protocol/py.typed +0 -0
  64. arsia_protocol/routing/__init__.py +82 -0
  65. arsia_protocol/routing/routing.py +1307 -0
  66. arsia_protocol/state/__init__.py +135 -0
  67. arsia_protocol/state/audit.py +484 -0
  68. arsia_protocol/state/breach.py +169 -0
  69. arsia_protocol/state/state.py +1691 -0
  70. arsia_protocol/types/__init__.py +146 -0
  71. arsia_protocol/types/actions.py +193 -0
  72. arsia_protocol/types/assets.py +249 -0
  73. arsia_protocol/types/breach.py +97 -0
  74. arsia_protocol/types/compliance.py +134 -0
  75. arsia_protocol/types/envelope.py +285 -0
  76. arsia_protocol/types/errors.py +75 -0
  77. arsia_protocol/types/identity.py +234 -0
  78. arsia_protocol/types/routing.py +153 -0
  79. arsia_protocol/types/security.py +62 -0
  80. arsia_protocol/types/state.py +380 -0
  81. arsia_protocol-1.0.0.dist-info/METADATA +254 -0
  82. arsia_protocol-1.0.0.dist-info/RECORD +86 -0
  83. arsia_protocol-1.0.0.dist-info/WHEEL +4 -0
  84. arsia_protocol-1.0.0.dist-info/entry_points.txt +2 -0
  85. arsia_protocol-1.0.0.dist-info/licenses/LICENSE +140 -0
  86. arsia_protocol-1.0.0.dist-info/licenses/NOTICE +14 -0
@@ -0,0 +1,927 @@
1
+ # SPDX-License-Identifier: BUSL-1.1
2
+ # Copyright 2025-2026 Arsia Labs (Arsia Tecnologia Unipessoal Lda)
3
+
4
+ """ARSIA Protocol — reference Python SDK.
5
+
6
+ Build, sign, verify, and validate ARSIA message envelopes: the
7
+ compliance-enforced communication layer for autonomous AI agents.
8
+
9
+ See https://arsiaprotocol.org for the specification.
10
+
11
+ All public symbols from every SDK module are re-exported here so that
12
+ consumers can write::
13
+
14
+ from arsia_protocol import sign_message, verify_message
15
+ from arsia_protocol import ArsiaMessage, compute_trust_level
16
+
17
+ Low-level cryptographic primitives (``hazmat.*``) and the data
18
+ resolver (``_data_resolver``) are intentionally NOT re-exported —
19
+ they are implementation details.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ # -- Layer 0 — Standalone ---------------------------------------------------
25
+
26
+ from arsia_protocol.core.version import (
27
+ PROTOCOL_VERSION,
28
+ __version__,
29
+ compare_versions,
30
+ extract_content_type_version,
31
+ is_compatible,
32
+ parse_version,
33
+ validate_outbound_version,
34
+ )
35
+
36
+ from arsia_protocol.hazmat.primitives.ed25519 import (
37
+ generate_keypair as generate_ed25519_keypair,
38
+ )
39
+
40
+ from arsia_protocol.identity.agent_id import (
41
+ AGENT_ID_PATTERN,
42
+ AgentId,
43
+ is_identity_record_expired,
44
+ is_valid_agent_id,
45
+ parse_agent_id,
46
+ validate_agent_id,
47
+ )
48
+
49
+ # -- Layer 1 — Types --------------------------------------------------------
50
+
51
+ from arsia_protocol.types import (
52
+ BreachNotificationPayload,
53
+ NotificationTarget,
54
+ AISystemClassification,
55
+ ActionCategory,
56
+ ActionDescriptor,
57
+ AlternativeConsidered,
58
+ ArsiaAuditRecord,
59
+ ArsiaCapabilityDescriptor,
60
+ ArsiaCompliance,
61
+ ArsiaContext,
62
+ ArsiaDiscoveryDocument,
63
+ ArsiaError,
64
+ ArsiaErrorCode,
65
+ ArsiaFeatures,
66
+ ArsiaIdempotency,
67
+ ArsiaIntent,
68
+ ArsiaJWK,
69
+ ArsiaJWKS,
70
+ ArsiaMessage,
71
+ ArsiaPayload,
72
+ ArsiaRateLimits,
73
+ ArsiaSecurity,
74
+ AssetTransferReceiptResult,
75
+ AssetTransferRequestArgs,
76
+ AssetTransferReversalArgs,
77
+ AssetType,
78
+ AuditEventType,
79
+ BrokerCapacity,
80
+ BrokerEntry,
81
+ BrokerHealth,
82
+ CapabilityPolicy,
83
+ CapabilityRule,
84
+ CapabilityRuleStatus,
85
+ EscrowConditions,
86
+ Explanation,
87
+ GDPRLegalBasis,
88
+ HumanOversightLevel,
89
+ LegalBasis,
90
+ IdentityRecord,
91
+ OversightStatus,
92
+ PiiClassification,
93
+ PiiSpecialCategory,
94
+ SignatureAlgorithm,
95
+ StateEntry,
96
+ StateScope,
97
+ TransferStatus,
98
+ ValidationError,
99
+ )
100
+
101
+ # -- Layer 2 — Core ---------------------------------------------------------
102
+
103
+ from arsia_protocol.core.message import (
104
+ ARSIA_CONTENT_TYPE,
105
+ CLOCK_SKEW_TOLERANCE_SECONDS,
106
+ DEFAULT_MAX_MESSAGE_BYTES,
107
+ DEFAULT_REQUEST_TTL_SECONDS,
108
+ AsyncProcessingStatus,
109
+ build_async_status_response,
110
+ check_envelope_size,
111
+ create_approval_decision,
112
+ create_error,
113
+ create_event,
114
+ create_pending_approval,
115
+ create_request,
116
+ create_response,
117
+ format_timestamp,
118
+ is_expired,
119
+ matches_arsia_content_type,
120
+ sign_message,
121
+ verify_message,
122
+ )
123
+
124
+ from arsia_protocol.core.errors import (
125
+ ERROR_REGISTRY,
126
+ RETRY_POLICY,
127
+ ErrorCodeInfo,
128
+ RetryPolicy,
129
+ build_error_envelope,
130
+ build_forbidden_error,
131
+ build_not_implemented_error,
132
+ build_oversight_denied_error,
133
+ build_oversight_expired_error,
134
+ build_payload_too_large_error,
135
+ build_rate_limited_error,
136
+ build_service_unavailable_error,
137
+ compute_retry_delay,
138
+ get_error_info,
139
+ is_retryable,
140
+ )
141
+
142
+ from arsia_protocol.core.encryption import (
143
+ decrypt_and_verify,
144
+ encrypt_payload,
145
+ )
146
+
147
+ from arsia_protocol.core.compliance import (
148
+ CLASSIFICATION_HIERARCHY,
149
+ apply_profile,
150
+ check_oversight_timeout,
151
+ get_clock_skew_seconds,
152
+ get_effective_retention,
153
+ get_profile,
154
+ get_profile_names,
155
+ load_profiles,
156
+ validate_compliance,
157
+ validate_explainability,
158
+ )
159
+
160
+ # -- Layer 3 — Validation ---------------------------------------------------
161
+
162
+ from arsia_protocol.core.validation import (
163
+ INTENT_CONTENT_FIELD,
164
+ IdentityConsistencyResult,
165
+ PayloadTypeRegistry,
166
+ check_identity_consistency,
167
+ resolve_content_field,
168
+ validate_compliance_field,
169
+ validate_correlation,
170
+ validate_envelope,
171
+ validate_identity_record,
172
+ validate_schema,
173
+ validate_semantic,
174
+ )
175
+
176
+ # -- Layer 4 — Primitives ---------------------------------------------------
177
+
178
+ from arsia_protocol.actions.actions import (
179
+ CAPABILITY_MAX_LENGTH,
180
+ CAPABILITY_PATTERN,
181
+ EXPLICIT_GRANT_ONLY,
182
+ RESERVED_CAPABILITIES,
183
+ RESERVED_PREFIX,
184
+ ExecutionState,
185
+ RISK_LEVEL_CLASSIFICATION,
186
+ RiskClassification,
187
+ VALID_TRANSITIONS,
188
+ attach_effective_capabilities,
189
+ build_partial_execution_audit,
190
+ build_partial_rollback_response,
191
+ build_rollback_audit_record,
192
+ build_timeout_error,
193
+ is_explanation_required,
194
+ create_rollback_request,
195
+ build_version_not_supported_error,
196
+ downgrade_capabilities,
197
+ find_unsatisfied_capabilities,
198
+ get_risk_classification,
199
+ is_approval_expired,
200
+ is_major_version_bump,
201
+ is_reserved_capability,
202
+ is_reserved_prefix_misuse,
203
+ is_terminal_state,
204
+ is_valid_capability,
205
+ is_valid_transition,
206
+ match_capabilities,
207
+ match_capability,
208
+ resolve_action_version,
209
+ validate_action_descriptor,
210
+ validate_capability,
211
+ validate_explanation,
212
+ validate_explanation_timestamp,
213
+ validate_response_explanation,
214
+ validate_rollback,
215
+ validate_timeout_cancellation,
216
+ )
217
+
218
+ from arsia_protocol.identity.certificates import (
219
+ CertificateVerificationResult,
220
+ QC_STATEMENTS_OID,
221
+ TrustLevel,
222
+ compute_trust_level,
223
+ extract_public_key_from_cert,
224
+ has_qc_statements,
225
+ is_certificate_chain_expired,
226
+ verify_certificate_chain,
227
+ )
228
+
229
+ from arsia_protocol.identity.discovery import (
230
+ JWKS_MAX_CACHE_SECONDS,
231
+ JWKSCachePolicy,
232
+ ROTATION_OVERLAP_HOURS,
233
+ RSA_MINIMUM_KEY_BITS,
234
+ build_capability_listing,
235
+ build_discovery_document,
236
+ build_ec_jwk,
237
+ build_encryption_jwks,
238
+ build_identity_record_signature,
239
+ build_jwk,
240
+ build_jwks,
241
+ build_rotation_jwks,
242
+ filter_compromised_keys,
243
+ is_kid_revoked,
244
+ public_key_from_jwk,
245
+ select_jwk_from_jwks,
246
+ validate_capability_prerequisites,
247
+ validate_jwks_kid_uniqueness,
248
+ validate_rsa_key_size,
249
+ verify_identity_record_signature,
250
+ verify_jwks_agent_id_consistency,
251
+ )
252
+
253
+ from arsia_protocol.core.authorization import (
254
+ DEFAULT_CLOCK_SKEW_SECONDS,
255
+ DPOP_TYP,
256
+ JWT_TYP,
257
+ SUPPORTED_ALGORITHMS,
258
+ DPoPValidationResult,
259
+ TokenValidationResult,
260
+ build_dpop_proof,
261
+ build_jwt,
262
+ build_token_request,
263
+ check_scope_coverage,
264
+ compute_jwk_thumbprint,
265
+ decode_jwt,
266
+ parse_scope,
267
+ validate_dpop_proof,
268
+ validate_token_claims,
269
+ verify_dpop_binding,
270
+ verify_jwt_signature,
271
+ )
272
+
273
+ from arsia_protocol.identity.onboarding import (
274
+ CapabilityEvaluationResult,
275
+ CapabilityStatus,
276
+ CheckResult,
277
+ DenialReason,
278
+ ONBOARDING_AUDIT_EVENTS,
279
+ ONBOARDING_EVALUATE_CAPABILITY,
280
+ OnboardingDecision,
281
+ OnboardingOutcome,
282
+ OnboardingPhase,
283
+ ProvenanceResult,
284
+ build_decision_payload,
285
+ build_onboarding_decision,
286
+ check_audit_payload_hash,
287
+ check_audit_record_fields,
288
+ check_audit_records_array,
289
+ is_classification_consistent,
290
+ check_correlation_id,
291
+ check_discovery_response,
292
+ check_envelope_id,
293
+ check_envelope_required_fields,
294
+ check_expires_at,
295
+ check_pending_approval,
296
+ validate_profile_requirement,
297
+ evaluate_capability_policy,
298
+ evaluate_phase2_checks,
299
+ validate_capability_policy,
300
+ verify_provenance,
301
+ )
302
+
303
+ from arsia_protocol.state.breach import (
304
+ BREACH_CAPABILITY,
305
+ PAYLOAD_TYPE_BREACH_NOTIFICATION,
306
+ build_breach_notification,
307
+ validate_breach_notification,
308
+ )
309
+
310
+ from arsia_protocol.state.state import (
311
+ OPERATION_TO_CAPABILITY,
312
+ PAYLOAD_TYPE_DELETE,
313
+ PAYLOAD_TYPE_GET,
314
+ PAYLOAD_TYPE_GRANT,
315
+ PAYLOAD_TYPE_PREFIX,
316
+ PAYLOAD_TYPE_PURGE,
317
+ PAYLOAD_TYPE_QUERY,
318
+ PAYLOAD_TYPE_REVOKE,
319
+ PAYLOAD_TYPE_SET,
320
+ PAYLOAD_TYPE_SNAPSHOT,
321
+ STATE_CAPABILITY_PURGE,
322
+ STATE_CAPABILITY_READ,
323
+ STATE_CAPABILITY_SNAPSHOT,
324
+ STATE_CAPABILITY_WRITE,
325
+ STATE_KEY_MAX_LENGTH,
326
+ STATE_OPERATIONS,
327
+ STATE_RESERVED_KEY_PREFIX,
328
+ STATE_SCOPES,
329
+ STATE_VALUE_MAX_BYTES,
330
+ STATE_WILDCARD_EXCLUDES,
331
+ apply_compliance_defaults_for_state,
332
+ build_conflict_error,
333
+ build_delete_args,
334
+ build_get_args,
335
+ build_grant_args,
336
+ build_grant_result,
337
+ build_purge_args,
338
+ build_purge_result,
339
+ build_query_args,
340
+ build_revoke_args,
341
+ build_revoke_result,
342
+ build_set_args,
343
+ build_snapshot_args,
344
+ compute_effective_retention,
345
+ compute_value_size,
346
+ detect_immutable_field_changes,
347
+ enforce_value_size_limit,
348
+ is_entry_expired,
349
+ is_reserved_key,
350
+ is_within_retention,
351
+ parse_state_key,
352
+ payload_type_for,
353
+ required_capability_for,
354
+ resolve_entry_data_residency,
355
+ resolve_entry_retention,
356
+ validate_custom_state_payload_type,
357
+ validate_eu_ai_act_response,
358
+ validate_state_entry,
359
+ validate_state_key,
360
+ wildcard_covers_state_capability,
361
+ )
362
+
363
+ from arsia_protocol.assets.assets import (
364
+ ASSET_PRECISION,
365
+ ASSET_TYPES,
366
+ ASSETS_CAPABILITIES,
367
+ ASSETS_CAPABILITY_RISK_LEVELS,
368
+ ASSETS_PAYLOAD_PREFIX,
369
+ DORA_INCIDENT_TYPES,
370
+ DORA_SEVERITIES,
371
+ DoraIncidentType,
372
+ DoraSeverity,
373
+ ESCROW_STATES,
374
+ ESCROW_TRANSITIONS,
375
+ EscrowState,
376
+ FINANCIAL_ASSET_TYPES,
377
+ ISO_4217_CURRENCY_CODES,
378
+ MIFID_AUDIT_FIELDS,
379
+ MIFID_RETENTION_DAYS_MIN,
380
+ PAYLOAD_TYPE_DORA_INCIDENT,
381
+ PAYLOAD_TYPE_ESCROW_CANCEL,
382
+ PAYLOAD_TYPE_ESCROW_DISPUTE,
383
+ PAYLOAD_TYPE_TRANSFER_RECEIPT,
384
+ PAYLOAD_TYPE_TRANSFER_REQUEST,
385
+ PAYLOAD_TYPE_TRANSFER_REVERSAL,
386
+ PaymentReferenceStore,
387
+ SCA_REQUIRED_MIN_RISK_LEVEL,
388
+ build_dora_incident_event,
389
+ build_escrow_created_audit,
390
+ build_escrow_disputed_audit,
391
+ build_escrow_released_audit,
392
+ build_escrow_returned_audit,
393
+ build_mifid_audit_fields,
394
+ build_reversal_audit_fields,
395
+ can_reach_disputed,
396
+ classify_dora_incident_type,
397
+ count_decimal_places,
398
+ enforce_mifid_retention,
399
+ is_assets_capability,
400
+ is_infrastructure_failure,
401
+ is_mifid_applicable,
402
+ is_sca_exempt,
403
+ is_terminal_escrow_state,
404
+ is_valid_escrow_transition,
405
+ requires_human_oversight,
406
+ requires_psd2_sca,
407
+ validate_assets_token_scope,
408
+ validate_currency_or_unit,
409
+ validate_escrow_cancel,
410
+ validate_escrow_conditions,
411
+ validate_escrow_dispute,
412
+ validate_escrow_release,
413
+ PAYLOAD_TYPE_ESCROW_RELEASE,
414
+ AssetPendingApprovalArgs,
415
+ validate_asset_pending_approval,
416
+ validate_metadata_no_financial_data,
417
+ validate_payment_reference_unique,
418
+ validate_psd2_sca_factors,
419
+ validate_compliance_echo,
420
+ validate_idempotency_key_in_envelope,
421
+ validate_receipt_against_request,
422
+ validate_reversal_precondition,
423
+ validate_transfer_amount,
424
+ validate_transfer_delegation,
425
+ validate_transfer_receipt,
426
+ validate_transfer_request,
427
+ validate_transfer_reversal,
428
+ validate_two_party_auth,
429
+ )
430
+
431
+ from arsia_protocol.routing.routing import (
432
+ BROKER_EXPIRY_SAFETY_MARGIN_S,
433
+ BROKER_FORWARD_TIMEOUT_S,
434
+ BrokerRelayAuditRecord,
435
+ DEFAULT_PRIORITY,
436
+ EU_EEA_MEMBER_STATES,
437
+ LIFECYCLE_STATES,
438
+ LIFECYCLE_TRANSITIONS,
439
+ ForwardingResult,
440
+ LifecycleState,
441
+ MAX_RETRIES_RECOMMENDED,
442
+ MAX_RETRY_DELAY_S,
443
+ PAYLOAD_HASH_HEX_LENGTH,
444
+ RATE_LIMITED_DEFAULT_DELAY_S,
445
+ RETRYABLE_LIFECYCLE_STATES,
446
+ RETRY_BASE_DELAY_S,
447
+ RETRY_MULTIPLIER,
448
+ RateLimitStatus,
449
+ RoutingDecision,
450
+ TERMINAL_LIFECYCLE_STATES,
451
+ Topology,
452
+ broker_serves_zone,
453
+ build_broker_relay_audit_record,
454
+ compute_rate_limited_delay,
455
+ is_eu_eea_member,
456
+ is_retryable_lifecycle_state,
457
+ is_terminal_lifecycle_state,
458
+ is_valid_lifecycle_transition,
459
+ parse_rate_limit_headers,
460
+ resolve_priority,
461
+ select_broker_by_priority,
462
+ select_broker_random,
463
+ select_topology,
464
+ validate_broker_entry,
465
+ validate_broker_relay_audit_record,
466
+ validate_relay_preconditions,
467
+ )
468
+
469
+ # -- Layer 5 — Cross-cutting ------------------------------------------------
470
+
471
+ from arsia_protocol.state.audit import (
472
+ AUDIT_EVENT_TYPES,
473
+ build_audit_record,
474
+ compute_payload_hash,
475
+ derive_event_type_from_intent,
476
+ validate_audit_record,
477
+ )
478
+
479
+ from arsia_protocol.core.idempotency import (
480
+ HEADER_ONLY_RETENTION_HOURS,
481
+ IDEMPOTENCY_KEY_MAX_LENGTH,
482
+ IDEMPOTENCY_KEY_MIN_LENGTH,
483
+ DuplicateIdempotencyKey,
484
+ DuplicateRequestInProgress,
485
+ IdempotencyKeySource,
486
+ IdempotencyRecord,
487
+ IdempotencyScope,
488
+ IdempotencyStatus,
489
+ IdempotencyStore,
490
+ compute_idempotency_expiry,
491
+ extract_envelope_idempotency,
492
+ is_idempotency_record_expired,
493
+ is_valid_idempotency_key,
494
+ resolve_idempotency_key,
495
+ resolve_idempotency_source,
496
+ scope_tuple,
497
+ validate_idempotency_key,
498
+ )
499
+
500
+ del annotations
501
+
502
+ __all__ = [
503
+ # version (Layer 0)
504
+ "__version__",
505
+ "PROTOCOL_VERSION",
506
+ "compare_versions",
507
+ "extract_content_type_version",
508
+ "is_compatible",
509
+ "parse_version",
510
+ "validate_outbound_version",
511
+ # hazmat convenience (Layer 0)
512
+ "generate_ed25519_keypair",
513
+ # identity (Layer 0)
514
+ "AGENT_ID_PATTERN",
515
+ "AgentId",
516
+ "is_identity_record_expired",
517
+ "is_valid_agent_id",
518
+ "parse_agent_id",
519
+ "validate_agent_id",
520
+ # types (Layer 1)
521
+ "BreachNotificationPayload",
522
+ "NotificationTarget",
523
+ "AISystemClassification",
524
+ "ActionCategory",
525
+ "ActionDescriptor",
526
+ "AlternativeConsidered",
527
+ "ArsiaAuditRecord",
528
+ "ArsiaCapabilityDescriptor",
529
+ "ArsiaCompliance",
530
+ "ArsiaContext",
531
+ "ArsiaDiscoveryDocument",
532
+ "ArsiaError",
533
+ "ArsiaErrorCode",
534
+ "ArsiaFeatures",
535
+ "ArsiaIdempotency",
536
+ "ArsiaIntent",
537
+ "ArsiaJWK",
538
+ "ArsiaJWKS",
539
+ "ArsiaMessage",
540
+ "ArsiaPayload",
541
+ "ArsiaRateLimits",
542
+ "ArsiaSecurity",
543
+ "AssetTransferReceiptResult",
544
+ "AssetTransferRequestArgs",
545
+ "AssetTransferReversalArgs",
546
+ "AssetType",
547
+ "AuditEventType",
548
+ "BrokerCapacity",
549
+ "BrokerEntry",
550
+ "BrokerHealth",
551
+ "CapabilityPolicy",
552
+ "CapabilityRule",
553
+ "CapabilityRuleStatus",
554
+ "EscrowConditions",
555
+ "Explanation",
556
+ "GDPRLegalBasis",
557
+ "HumanOversightLevel",
558
+ "IdentityRecord",
559
+ "LegalBasis",
560
+ "OversightStatus",
561
+ "PiiClassification",
562
+ "PiiSpecialCategory",
563
+ "SignatureAlgorithm",
564
+ "StateEntry",
565
+ "StateScope",
566
+ "TransferStatus",
567
+ "ValidationError",
568
+ # message (Layer 2)
569
+ "ARSIA_CONTENT_TYPE",
570
+ "AsyncProcessingStatus",
571
+ "build_async_status_response",
572
+ "CLOCK_SKEW_TOLERANCE_SECONDS",
573
+ "DEFAULT_MAX_MESSAGE_BYTES",
574
+ "DEFAULT_REQUEST_TTL_SECONDS",
575
+ "check_envelope_size",
576
+ "create_approval_decision",
577
+ "create_error",
578
+ "create_event",
579
+ "create_pending_approval",
580
+ "create_request",
581
+ "create_response",
582
+ "format_timestamp",
583
+ "is_expired",
584
+ "matches_arsia_content_type",
585
+ "sign_message",
586
+ "verify_message",
587
+ # encryption (Layer 2)
588
+ "decrypt_and_verify",
589
+ "encrypt_payload",
590
+ # errors (Layer 2)
591
+ "ERROR_REGISTRY",
592
+ "ErrorCodeInfo",
593
+ "RETRY_POLICY",
594
+ "RetryPolicy",
595
+ "build_error_envelope",
596
+ "build_forbidden_error",
597
+ "build_not_implemented_error",
598
+ "build_oversight_denied_error",
599
+ "build_oversight_expired_error",
600
+ "build_payload_too_large_error",
601
+ "build_rate_limited_error",
602
+ "build_service_unavailable_error",
603
+ "compute_retry_delay",
604
+ "get_error_info",
605
+ "is_retryable",
606
+ # compliance (Layer 2)
607
+ "CLASSIFICATION_HIERARCHY",
608
+ "apply_profile",
609
+ "check_oversight_timeout",
610
+ "get_clock_skew_seconds",
611
+ "get_effective_retention",
612
+ "get_profile",
613
+ "get_profile_names",
614
+ "load_profiles",
615
+ "validate_compliance",
616
+ "validate_explainability",
617
+ # validation (Layer 3)
618
+ "INTENT_CONTENT_FIELD",
619
+ "IdentityConsistencyResult",
620
+ "PayloadTypeRegistry",
621
+ "check_identity_consistency",
622
+ "resolve_content_field",
623
+ "validate_compliance_field",
624
+ "validate_correlation",
625
+ "validate_envelope",
626
+ "validate_identity_record",
627
+ "validate_schema",
628
+ "validate_semantic",
629
+ # actions (Layer 4)
630
+ "CAPABILITY_MAX_LENGTH",
631
+ "CAPABILITY_PATTERN",
632
+ "ExecutionState",
633
+ "EXPLICIT_GRANT_ONLY",
634
+ "RESERVED_CAPABILITIES",
635
+ "RESERVED_PREFIX",
636
+ "RISK_LEVEL_CLASSIFICATION",
637
+ "RiskClassification",
638
+ "VALID_TRANSITIONS",
639
+ "attach_effective_capabilities",
640
+ "build_partial_execution_audit",
641
+ "build_partial_rollback_response",
642
+ "build_rollback_audit_record",
643
+ "build_timeout_error",
644
+ "is_explanation_required",
645
+ "create_rollback_request",
646
+ "build_version_not_supported_error",
647
+ "downgrade_capabilities",
648
+ "find_unsatisfied_capabilities",
649
+ "get_risk_classification",
650
+ "is_approval_expired",
651
+ "is_major_version_bump",
652
+ "is_reserved_capability",
653
+ "is_reserved_prefix_misuse",
654
+ "is_terminal_state",
655
+ "is_valid_capability",
656
+ "is_valid_transition",
657
+ "match_capabilities",
658
+ "match_capability",
659
+ "resolve_action_version",
660
+ "validate_action_descriptor",
661
+ "validate_capability",
662
+ "validate_explanation",
663
+ "validate_explanation_timestamp",
664
+ "validate_response_explanation",
665
+ "validate_rollback",
666
+ "validate_timeout_cancellation",
667
+ # certificates (Layer 4)
668
+ "CertificateVerificationResult",
669
+ "QC_STATEMENTS_OID",
670
+ "TrustLevel",
671
+ "compute_trust_level",
672
+ "extract_public_key_from_cert",
673
+ "has_qc_statements",
674
+ "is_certificate_chain_expired",
675
+ "verify_certificate_chain",
676
+ # discovery (Layer 4)
677
+ "JWKS_MAX_CACHE_SECONDS",
678
+ "JWKSCachePolicy",
679
+ "ROTATION_OVERLAP_HOURS",
680
+ "RSA_MINIMUM_KEY_BITS",
681
+ "build_capability_listing",
682
+ "build_discovery_document",
683
+ "build_ec_jwk",
684
+ "build_encryption_jwks",
685
+ "build_identity_record_signature",
686
+ "build_jwk",
687
+ "build_jwks",
688
+ "build_rotation_jwks",
689
+ "filter_compromised_keys",
690
+ "is_kid_revoked",
691
+ "public_key_from_jwk",
692
+ "select_jwk_from_jwks",
693
+ "validate_capability_prerequisites",
694
+ "validate_jwks_kid_uniqueness",
695
+ "validate_rsa_key_size",
696
+ "verify_identity_record_signature",
697
+ "verify_jwks_agent_id_consistency",
698
+ # authorization (Layer 4)
699
+ "DEFAULT_CLOCK_SKEW_SECONDS",
700
+ "DPOP_TYP",
701
+ "DPoPValidationResult",
702
+ "JWT_TYP",
703
+ "SUPPORTED_ALGORITHMS",
704
+ "TokenValidationResult",
705
+ "build_dpop_proof",
706
+ "build_jwt",
707
+ "build_token_request",
708
+ "check_scope_coverage",
709
+ "compute_jwk_thumbprint",
710
+ "decode_jwt",
711
+ "parse_scope",
712
+ "validate_dpop_proof",
713
+ "validate_token_claims",
714
+ "verify_dpop_binding",
715
+ "verify_jwt_signature",
716
+ # onboarding (Layer 4)
717
+ "CapabilityEvaluationResult",
718
+ "CapabilityStatus",
719
+ "CheckResult",
720
+ "DenialReason",
721
+ "ONBOARDING_AUDIT_EVENTS",
722
+ "ONBOARDING_EVALUATE_CAPABILITY",
723
+ "OnboardingDecision",
724
+ "OnboardingOutcome",
725
+ "OnboardingPhase",
726
+ "ProvenanceResult",
727
+ "build_decision_payload",
728
+ "build_onboarding_decision",
729
+ "check_audit_payload_hash",
730
+ "check_audit_record_fields",
731
+ "check_audit_records_array",
732
+ "is_classification_consistent",
733
+ "check_correlation_id",
734
+ "check_discovery_response",
735
+ "check_envelope_id",
736
+ "check_envelope_required_fields",
737
+ "check_expires_at",
738
+ "check_pending_approval",
739
+ "validate_profile_requirement",
740
+ "evaluate_capability_policy",
741
+ "evaluate_phase2_checks",
742
+ "validate_capability_policy",
743
+ "verify_provenance",
744
+ # breach (Layer 4)
745
+ "BREACH_CAPABILITY",
746
+ "PAYLOAD_TYPE_BREACH_NOTIFICATION",
747
+ "build_breach_notification",
748
+ "validate_breach_notification",
749
+ # state (Layer 4)
750
+ "OPERATION_TO_CAPABILITY",
751
+ "PAYLOAD_TYPE_DELETE",
752
+ "PAYLOAD_TYPE_GET",
753
+ "PAYLOAD_TYPE_GRANT",
754
+ "PAYLOAD_TYPE_PREFIX",
755
+ "PAYLOAD_TYPE_PURGE",
756
+ "PAYLOAD_TYPE_QUERY",
757
+ "PAYLOAD_TYPE_REVOKE",
758
+ "PAYLOAD_TYPE_SET",
759
+ "PAYLOAD_TYPE_SNAPSHOT",
760
+ "STATE_CAPABILITY_PURGE",
761
+ "STATE_CAPABILITY_READ",
762
+ "STATE_CAPABILITY_SNAPSHOT",
763
+ "STATE_CAPABILITY_WRITE",
764
+ "STATE_KEY_MAX_LENGTH",
765
+ "STATE_OPERATIONS",
766
+ "STATE_RESERVED_KEY_PREFIX",
767
+ "STATE_SCOPES",
768
+ "STATE_VALUE_MAX_BYTES",
769
+ "STATE_WILDCARD_EXCLUDES",
770
+ "apply_compliance_defaults_for_state",
771
+ "build_delete_args",
772
+ "build_conflict_error",
773
+ "build_get_args",
774
+ "build_grant_args",
775
+ "build_grant_result",
776
+ "build_purge_args",
777
+ "build_purge_result",
778
+ "build_query_args",
779
+ "build_revoke_args",
780
+ "build_revoke_result",
781
+ "build_set_args",
782
+ "build_snapshot_args",
783
+ "compute_effective_retention",
784
+ "compute_value_size",
785
+ "detect_immutable_field_changes",
786
+ "enforce_value_size_limit",
787
+ "is_entry_expired",
788
+ "is_reserved_key",
789
+ "is_within_retention",
790
+ "parse_state_key",
791
+ "payload_type_for",
792
+ "required_capability_for",
793
+ "resolve_entry_data_residency",
794
+ "resolve_entry_retention",
795
+ "validate_custom_state_payload_type",
796
+ "validate_eu_ai_act_response",
797
+ "validate_state_entry",
798
+ "validate_state_key",
799
+ "wildcard_covers_state_capability",
800
+ # assets (Layer 4)
801
+ "ASSET_PRECISION",
802
+ "ASSET_TYPES",
803
+ "ASSETS_CAPABILITIES",
804
+ "ASSETS_CAPABILITY_RISK_LEVELS",
805
+ "ASSETS_PAYLOAD_PREFIX",
806
+ "DORA_INCIDENT_TYPES",
807
+ "DORA_SEVERITIES",
808
+ "DoraIncidentType",
809
+ "DoraSeverity",
810
+ "ESCROW_STATES",
811
+ "ESCROW_TRANSITIONS",
812
+ "EscrowState",
813
+ "FINANCIAL_ASSET_TYPES",
814
+ "ISO_4217_CURRENCY_CODES",
815
+ "MIFID_AUDIT_FIELDS",
816
+ "MIFID_RETENTION_DAYS_MIN",
817
+ "PAYLOAD_TYPE_DORA_INCIDENT",
818
+ "PAYLOAD_TYPE_ESCROW_CANCEL",
819
+ "PAYLOAD_TYPE_ESCROW_DISPUTE",
820
+ "PAYLOAD_TYPE_TRANSFER_RECEIPT",
821
+ "PAYLOAD_TYPE_TRANSFER_REQUEST",
822
+ "PAYLOAD_TYPE_TRANSFER_REVERSAL",
823
+ "PaymentReferenceStore",
824
+ "SCA_REQUIRED_MIN_RISK_LEVEL",
825
+ "build_dora_incident_event",
826
+ "build_escrow_created_audit",
827
+ "build_escrow_disputed_audit",
828
+ "build_escrow_released_audit",
829
+ "build_escrow_returned_audit",
830
+ "build_mifid_audit_fields",
831
+ "build_reversal_audit_fields",
832
+ "can_reach_disputed",
833
+ "classify_dora_incident_type",
834
+ "count_decimal_places",
835
+ "enforce_mifid_retention",
836
+ "is_assets_capability",
837
+ "is_infrastructure_failure",
838
+ "is_mifid_applicable",
839
+ "is_sca_exempt",
840
+ "is_terminal_escrow_state",
841
+ "is_valid_escrow_transition",
842
+ "requires_human_oversight",
843
+ "requires_psd2_sca",
844
+ "validate_assets_token_scope",
845
+ "validate_currency_or_unit",
846
+ "validate_escrow_cancel",
847
+ "validate_escrow_conditions",
848
+ "validate_escrow_dispute",
849
+ "validate_escrow_release",
850
+ "PAYLOAD_TYPE_ESCROW_RELEASE",
851
+ "AssetPendingApprovalArgs",
852
+ "validate_asset_pending_approval",
853
+ "validate_metadata_no_financial_data",
854
+ "validate_payment_reference_unique",
855
+ "validate_psd2_sca_factors",
856
+ "validate_compliance_echo",
857
+ "validate_idempotency_key_in_envelope",
858
+ "validate_receipt_against_request",
859
+ "validate_reversal_precondition",
860
+ "validate_transfer_amount",
861
+ "validate_transfer_delegation",
862
+ "validate_transfer_receipt",
863
+ "validate_transfer_request",
864
+ "validate_transfer_reversal",
865
+ "validate_two_party_auth",
866
+ # routing (Layer 4)
867
+ "BROKER_EXPIRY_SAFETY_MARGIN_S",
868
+ "BROKER_FORWARD_TIMEOUT_S",
869
+ "BrokerRelayAuditRecord",
870
+ "DEFAULT_PRIORITY",
871
+ "EU_EEA_MEMBER_STATES",
872
+ "LIFECYCLE_STATES",
873
+ "LIFECYCLE_TRANSITIONS",
874
+ "ForwardingResult",
875
+ "LifecycleState",
876
+ "MAX_RETRIES_RECOMMENDED",
877
+ "MAX_RETRY_DELAY_S",
878
+ "PAYLOAD_HASH_HEX_LENGTH",
879
+ "RATE_LIMITED_DEFAULT_DELAY_S",
880
+ "RETRY_BASE_DELAY_S",
881
+ "RETRY_MULTIPLIER",
882
+ "RETRYABLE_LIFECYCLE_STATES",
883
+ "RateLimitStatus",
884
+ "RoutingDecision",
885
+ "TERMINAL_LIFECYCLE_STATES",
886
+ "Topology",
887
+ "broker_serves_zone",
888
+ "build_broker_relay_audit_record",
889
+ "compute_rate_limited_delay",
890
+ "is_eu_eea_member",
891
+ "is_retryable_lifecycle_state",
892
+ "is_terminal_lifecycle_state",
893
+ "is_valid_lifecycle_transition",
894
+ "parse_rate_limit_headers",
895
+ "resolve_priority",
896
+ "select_broker_by_priority",
897
+ "select_broker_random",
898
+ "select_topology",
899
+ "validate_broker_entry",
900
+ "validate_broker_relay_audit_record",
901
+ "validate_relay_preconditions",
902
+ # audit (Layer 5)
903
+ "AUDIT_EVENT_TYPES",
904
+ "build_audit_record",
905
+ "compute_payload_hash",
906
+ "derive_event_type_from_intent",
907
+ "validate_audit_record",
908
+ # idempotency (Layer 5)
909
+ "DuplicateIdempotencyKey",
910
+ "DuplicateRequestInProgress",
911
+ "HEADER_ONLY_RETENTION_HOURS",
912
+ "IDEMPOTENCY_KEY_MAX_LENGTH",
913
+ "IDEMPOTENCY_KEY_MIN_LENGTH",
914
+ "IdempotencyKeySource",
915
+ "IdempotencyRecord",
916
+ "IdempotencyScope",
917
+ "IdempotencyStatus",
918
+ "IdempotencyStore",
919
+ "compute_idempotency_expiry",
920
+ "extract_envelope_idempotency",
921
+ "is_idempotency_record_expired",
922
+ "is_valid_idempotency_key",
923
+ "resolve_idempotency_key",
924
+ "resolve_idempotency_source",
925
+ "scope_tuple",
926
+ "validate_idempotency_key",
927
+ ]