agent-protocols 0.7.0__tar.gz → 0.9.0__tar.gz
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.
- agent_protocols-0.9.0/PKG-INFO +89 -0
- agent_protocols-0.9.0/README.md +72 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/pyproject.toml +2 -1
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols/__init__.py +59 -3
- agent_protocols-0.9.0/src/agent_protocols/delegation.py +610 -0
- agent_protocols-0.9.0/src/agent_protocols/discourse.py +1172 -0
- agent_protocols-0.9.0/src/agent_protocols/http_client.py +332 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols/identity.py +253 -18
- agent_protocols-0.9.0/src/agent_protocols/profile.py +179 -0
- agent_protocols-0.9.0/src/agent_protocols.egg-info/PKG-INFO +89 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols.egg-info/SOURCES.txt +4 -1
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols.egg-info/requires.txt +3 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_delegation.py +10 -10
- agent_protocols-0.9.0/tests/test_delegation_conformance.py +240 -0
- agent_protocols-0.9.0/tests/test_discourse.py +402 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_discourse_coverage.py +5 -1
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_http_client.py +98 -24
- agent_protocols-0.9.0/tests/test_identity_vectors.py +188 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_profile.py +4 -5
- agent_protocols-0.9.0/tests/test_profile_vectors.py +46 -0
- agent_protocols-0.7.0/PKG-INFO +0 -47
- agent_protocols-0.7.0/README.md +0 -32
- agent_protocols-0.7.0/src/agent_protocols/delegation.py +0 -211
- agent_protocols-0.7.0/src/agent_protocols/discourse.py +0 -763
- agent_protocols-0.7.0/src/agent_protocols/http_client.py +0 -287
- agent_protocols-0.7.0/src/agent_protocols/profile.py +0 -58
- agent_protocols-0.7.0/src/agent_protocols.egg-info/PKG-INFO +0 -47
- agent_protocols-0.7.0/tests/test_discourse.py +0 -520
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/setup.cfg +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols/errors.py +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols.egg-info/dependency_links.txt +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/src/agent_protocols.egg-info/top_level.txt +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_identity.py +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_identity_coverage.py +0 -0
- {agent_protocols-0.7.0 → agent_protocols-0.9.0}/tests/test_profile_coverage.py +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-protocols
|
|
3
|
+
Version: 0.9.0
|
|
4
|
+
Summary: Python SDK for Agent Identity, Agent Profile, Agent Delegation, and Agent Discourse protocols
|
|
5
|
+
Author: LDCLabs
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: agent,protocol,ed25519,sdk
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
Requires-Dist: cryptography>=42
|
|
11
|
+
Requires-Dist: jsonschema<5,>=4.17
|
|
12
|
+
Requires-Dist: rfc8785<0.2,>=0.1.4
|
|
13
|
+
Provides-Extra: http
|
|
14
|
+
Requires-Dist: requests<3,>=2.31; extra == "http"
|
|
15
|
+
Provides-Extra: test
|
|
16
|
+
Requires-Dist: pytest<10,>=8; extra == "test"
|
|
17
|
+
|
|
18
|
+
# agent-protocols Python SDK
|
|
19
|
+
|
|
20
|
+
Python SDK for the draft Agent Identity, Agent Profile, Agent Delegation, and Agent Discourse protocols.
|
|
21
|
+
|
|
22
|
+
## Modules
|
|
23
|
+
|
|
24
|
+
- `agent_protocols.identity`: `did:agent:` encoding, strict JSON parsing (`parse_strict_json`, `parse_envelope_json`), JCS canonicalization, event hashes, Ed25519 signing and strict verification (`verify_ed25519_strict`), closed event objects (`validate_event_fields`), clock-derived nonces with bounded `Max-Seen-Nonce` resynchronization, live-write and exact-resubmission checks (`verify_submission`), request JWT helpers.
|
|
25
|
+
- `agent_protocols.profile`: `profile.update` payload helpers, delegation discovery hints, validation, succession checks, materialization.
|
|
26
|
+
- `agent_protocols.delegation`: principal documents and resolution, Controller records with `supersedes` lineage, grant/revoke payloads, credentials, authority, acceptance, historical, and use checks, `verify_delegation_credential` over the latest grant record, and `audit_delegation_history` for auditors.
|
|
27
|
+
- `agent_protocols.discourse`: the ADP kernel — twelve built-in event types, freshness classes, room policy (`invites`, `open_roles`), signed join requests and reviews, the type system with the portable type schema profile, redacted records, server records, and archive verification.
|
|
28
|
+
- `agent_protocols.http_client`: optional requests-based Profile, Delegation, and Discourse clients. Install with `agent-protocols[http]`. Lists use `{"result", "next_cursor"}`; non-2xx responses raise `HttpResponseError` with the protocol `code`, `data`, and `max_seen_nonce`.
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from agent_protocols import AgentSigner, ClientNonceManager, materialize_profile, profile_update_event, unix_ms
|
|
34
|
+
|
|
35
|
+
signer = AgentSigner.generate()
|
|
36
|
+
nonces = ClientNonceManager()
|
|
37
|
+
created_at = unix_ms()
|
|
38
|
+
event = profile_update_event(
|
|
39
|
+
signer.agent_id(),
|
|
40
|
+
created_at,
|
|
41
|
+
nonces.next_nonce(created_at),
|
|
42
|
+
{"id": signer.agent_id(), "name": "ResearchAgent-v3"},
|
|
43
|
+
)
|
|
44
|
+
envelope = signer.sign_event(event)
|
|
45
|
+
profile = materialize_profile(envelope)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`next_nonce(created_at)` derives `max(last + 1, created_at)`, so nonces stay monotonic across restarts and devices. Agent Profile has no `username` field: the Agent ID is the identity key, and the latest profile is the accepted `profile.update` with the greatest `nonce`.
|
|
49
|
+
|
|
50
|
+
ADP room writes carry a signed `base_seq` / `base_hash`. Message and control writes — `message.create` and custom `message` or `control` kinds — must be based at or after the room head, the latest `genesis`, `contract`, or `control` record, so messages never conflict with each other; contract writes (`room.update`, `room.close`, `room.cancel`, `type.define`) and signal writes, including the membership events, only anchor to an accepted record. Use `event_requires_room_head` and `event_advances_room_head` to tell them apart, `validate_room_base` for the host-side base check, `discourse_event` to build them, and `room_join_request_event` for a join request, which carries `room_id` but no base. Mentions are represented by the event-level `mentions` field, not by `payload.extra`.
|
|
51
|
+
|
|
52
|
+
## Delegation
|
|
53
|
+
|
|
54
|
+
Controllers are records shared by `controllers` and `retired_controllers`: `id` is the Agent ID, `source` is an HTTPS origin or `local`, and `valid_from` starts the binding. Omit `delegation` for a signing-only key, use `"*"` for full authority, or supply `{ "scopes": [...], "audiences": [...] }` for restricted authority. `supersedes` lets a successor key manage its predecessors' credentials. Retirement adds `retired_at`; compromise additionally sets `invalid_from`. A principal that grants delegations publishes `delegation_query_url`.
|
|
55
|
+
|
|
56
|
+
Grants name the canonical `principal_id`. Credentials carry `principal_id`, an immutable `subject` and `owner_controller`, the latest `grant_event_id`, the service `accepted_at`, and `checked_at`. Materialization requires an explicit acceptance time and trusted previous state; it never derives acceptance time from `created_at`.
|
|
57
|
+
|
|
58
|
+
The validation layers have different responsibilities:
|
|
59
|
+
|
|
60
|
+
- Envelope validation checks cryptography, the closed event object, and payload shape, not principal authority.
|
|
61
|
+
- Event-authority validation checks the controller policy before signing. Acceptance validation also checks the envelope and the authoritative-resolution URL.
|
|
62
|
+
- Historical validation checks an accepted record `{"envelope", "accepted_at"}` against the original controller interval and ceiling. It does not authenticate a service receipt or prove offline revocation status.
|
|
63
|
+
- Use validation checks audience, status, and validity. Applications still authenticate the subject and enforce the requested scopes and every constraint.
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
# principal was freshly resolved over HTTPS; previous is trusted service state.
|
|
67
|
+
validate_delegation_acceptance(envelope, principal, resolved_url, accepted_at, previous)
|
|
68
|
+
credential = materialize_delegation_credential(
|
|
69
|
+
envelope, accepted_at=accepted_at, previous=previous,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
# A relying party checks the credential's latest grant record.
|
|
73
|
+
verdict = verify_delegation_credential(credential, records, principal, principal["id"], "https://dmsg.net", now)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Services remain responsible for fresh HTTPS resolution, live Identity timestamp and nonce checks, exact-resubmission lookups, atomic state and history storage, and current revocation or compromise reevaluation. These are SDK building blocks, not a hosted delegation service.
|
|
77
|
+
|
|
78
|
+
`DelegationClient.discover(origin)` reads a delegation service's discovery document and prefers its endpoints. Transport implementations injected into the HTTP client must honor `allow_redirects=False`.
|
|
79
|
+
|
|
80
|
+
## Running tests
|
|
81
|
+
|
|
82
|
+
From the repository root, use the same dependency extra and runner as CI:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
python3 -m pip install -e './python/agent-protocols[test]'
|
|
86
|
+
python3 -m pytest python/agent-protocols/tests
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The suite includes both `unittest.TestCase` classes and pytest functions. Running only `unittest discover` would omit the function-based conformance tests.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# agent-protocols Python SDK
|
|
2
|
+
|
|
3
|
+
Python SDK for the draft Agent Identity, Agent Profile, Agent Delegation, and Agent Discourse protocols.
|
|
4
|
+
|
|
5
|
+
## Modules
|
|
6
|
+
|
|
7
|
+
- `agent_protocols.identity`: `did:agent:` encoding, strict JSON parsing (`parse_strict_json`, `parse_envelope_json`), JCS canonicalization, event hashes, Ed25519 signing and strict verification (`verify_ed25519_strict`), closed event objects (`validate_event_fields`), clock-derived nonces with bounded `Max-Seen-Nonce` resynchronization, live-write and exact-resubmission checks (`verify_submission`), request JWT helpers.
|
|
8
|
+
- `agent_protocols.profile`: `profile.update` payload helpers, delegation discovery hints, validation, succession checks, materialization.
|
|
9
|
+
- `agent_protocols.delegation`: principal documents and resolution, Controller records with `supersedes` lineage, grant/revoke payloads, credentials, authority, acceptance, historical, and use checks, `verify_delegation_credential` over the latest grant record, and `audit_delegation_history` for auditors.
|
|
10
|
+
- `agent_protocols.discourse`: the ADP kernel — twelve built-in event types, freshness classes, room policy (`invites`, `open_roles`), signed join requests and reviews, the type system with the portable type schema profile, redacted records, server records, and archive verification.
|
|
11
|
+
- `agent_protocols.http_client`: optional requests-based Profile, Delegation, and Discourse clients. Install with `agent-protocols[http]`. Lists use `{"result", "next_cursor"}`; non-2xx responses raise `HttpResponseError` with the protocol `code`, `data`, and `max_seen_nonce`.
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from agent_protocols import AgentSigner, ClientNonceManager, materialize_profile, profile_update_event, unix_ms
|
|
17
|
+
|
|
18
|
+
signer = AgentSigner.generate()
|
|
19
|
+
nonces = ClientNonceManager()
|
|
20
|
+
created_at = unix_ms()
|
|
21
|
+
event = profile_update_event(
|
|
22
|
+
signer.agent_id(),
|
|
23
|
+
created_at,
|
|
24
|
+
nonces.next_nonce(created_at),
|
|
25
|
+
{"id": signer.agent_id(), "name": "ResearchAgent-v3"},
|
|
26
|
+
)
|
|
27
|
+
envelope = signer.sign_event(event)
|
|
28
|
+
profile = materialize_profile(envelope)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`next_nonce(created_at)` derives `max(last + 1, created_at)`, so nonces stay monotonic across restarts and devices. Agent Profile has no `username` field: the Agent ID is the identity key, and the latest profile is the accepted `profile.update` with the greatest `nonce`.
|
|
32
|
+
|
|
33
|
+
ADP room writes carry a signed `base_seq` / `base_hash`. Message and control writes — `message.create` and custom `message` or `control` kinds — must be based at or after the room head, the latest `genesis`, `contract`, or `control` record, so messages never conflict with each other; contract writes (`room.update`, `room.close`, `room.cancel`, `type.define`) and signal writes, including the membership events, only anchor to an accepted record. Use `event_requires_room_head` and `event_advances_room_head` to tell them apart, `validate_room_base` for the host-side base check, `discourse_event` to build them, and `room_join_request_event` for a join request, which carries `room_id` but no base. Mentions are represented by the event-level `mentions` field, not by `payload.extra`.
|
|
34
|
+
|
|
35
|
+
## Delegation
|
|
36
|
+
|
|
37
|
+
Controllers are records shared by `controllers` and `retired_controllers`: `id` is the Agent ID, `source` is an HTTPS origin or `local`, and `valid_from` starts the binding. Omit `delegation` for a signing-only key, use `"*"` for full authority, or supply `{ "scopes": [...], "audiences": [...] }` for restricted authority. `supersedes` lets a successor key manage its predecessors' credentials. Retirement adds `retired_at`; compromise additionally sets `invalid_from`. A principal that grants delegations publishes `delegation_query_url`.
|
|
38
|
+
|
|
39
|
+
Grants name the canonical `principal_id`. Credentials carry `principal_id`, an immutable `subject` and `owner_controller`, the latest `grant_event_id`, the service `accepted_at`, and `checked_at`. Materialization requires an explicit acceptance time and trusted previous state; it never derives acceptance time from `created_at`.
|
|
40
|
+
|
|
41
|
+
The validation layers have different responsibilities:
|
|
42
|
+
|
|
43
|
+
- Envelope validation checks cryptography, the closed event object, and payload shape, not principal authority.
|
|
44
|
+
- Event-authority validation checks the controller policy before signing. Acceptance validation also checks the envelope and the authoritative-resolution URL.
|
|
45
|
+
- Historical validation checks an accepted record `{"envelope", "accepted_at"}` against the original controller interval and ceiling. It does not authenticate a service receipt or prove offline revocation status.
|
|
46
|
+
- Use validation checks audience, status, and validity. Applications still authenticate the subject and enforce the requested scopes and every constraint.
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
# principal was freshly resolved over HTTPS; previous is trusted service state.
|
|
50
|
+
validate_delegation_acceptance(envelope, principal, resolved_url, accepted_at, previous)
|
|
51
|
+
credential = materialize_delegation_credential(
|
|
52
|
+
envelope, accepted_at=accepted_at, previous=previous,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# A relying party checks the credential's latest grant record.
|
|
56
|
+
verdict = verify_delegation_credential(credential, records, principal, principal["id"], "https://dmsg.net", now)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Services remain responsible for fresh HTTPS resolution, live Identity timestamp and nonce checks, exact-resubmission lookups, atomic state and history storage, and current revocation or compromise reevaluation. These are SDK building blocks, not a hosted delegation service.
|
|
60
|
+
|
|
61
|
+
`DelegationClient.discover(origin)` reads a delegation service's discovery document and prefers its endpoints. Transport implementations injected into the HTTP client must honor `allow_redirects=False`.
|
|
62
|
+
|
|
63
|
+
## Running tests
|
|
64
|
+
|
|
65
|
+
From the repository root, use the same dependency extra and runner as CI:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
python3 -m pip install -e './python/agent-protocols[test]'
|
|
69
|
+
python3 -m pytest python/agent-protocols/tests
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The suite includes both `unittest.TestCase` classes and pytest functions. Running only `unittest discover` would omit the function-based conformance tests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-protocols"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.9.0"
|
|
4
4
|
description = "Python SDK for Agent Identity, Agent Profile, Agent Delegation, and Agent Discourse protocols"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -15,6 +15,7 @@ dependencies = [
|
|
|
15
15
|
|
|
16
16
|
[project.optional-dependencies]
|
|
17
17
|
http = ["requests>=2.31,<3"]
|
|
18
|
+
test = ["pytest>=8,<10"]
|
|
18
19
|
|
|
19
20
|
[build-system]
|
|
20
21
|
requires = ["setuptools>=68"]
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
from .errors import AgentProtocolError
|
|
2
2
|
from .identity import (
|
|
3
3
|
AGENT_ID_PREFIX,
|
|
4
|
+
IDENTITY_EVENT_FIELDS,
|
|
5
|
+
MAX_NONCE_JUMP,
|
|
6
|
+
SHARED_ERROR_CODES,
|
|
4
7
|
AgentSigner,
|
|
5
8
|
ClientNonceManager,
|
|
6
9
|
MAX_NONCE_HEADER,
|
|
7
10
|
MemoryNonceStore,
|
|
8
11
|
RequestBinding,
|
|
12
|
+
SubmissionResult,
|
|
9
13
|
agent_id_from_public_key,
|
|
10
14
|
canonical_event_bytes,
|
|
11
15
|
create_event,
|
|
12
16
|
create_request_jwt_claims,
|
|
13
17
|
event_hash,
|
|
14
18
|
event_hash_bytes,
|
|
19
|
+
parse_envelope_json,
|
|
20
|
+
parse_strict_json,
|
|
15
21
|
public_key_bytes,
|
|
16
22
|
service_origin,
|
|
17
23
|
sign_event,
|
|
@@ -19,13 +25,17 @@ from .identity import (
|
|
|
19
25
|
unix_ms,
|
|
20
26
|
unix_secs,
|
|
21
27
|
validate_agent_id,
|
|
28
|
+
validate_event_fields,
|
|
22
29
|
validate_nonce,
|
|
30
|
+
validate_origin,
|
|
31
|
+
verify_ed25519_strict,
|
|
23
32
|
verify_envelope,
|
|
24
33
|
verify_event_hash,
|
|
25
34
|
verify_event_hash_signature,
|
|
26
35
|
verify_live_envelope,
|
|
27
36
|
verify_request_jwt,
|
|
28
37
|
verify_signature,
|
|
38
|
+
verify_submission,
|
|
29
39
|
verify_timestamp,
|
|
30
40
|
with_mention,
|
|
31
41
|
with_mentions,
|
|
@@ -38,49 +48,80 @@ from .profile import (
|
|
|
38
48
|
latest_profile_update,
|
|
39
49
|
materialize_profile,
|
|
40
50
|
profile_update_event,
|
|
51
|
+
validate_profile_payload,
|
|
52
|
+
validate_profile_succession,
|
|
41
53
|
validate_profile_update,
|
|
42
54
|
)
|
|
43
55
|
from .delegation import (
|
|
56
|
+
DELEGATION_ERROR_CODES,
|
|
44
57
|
DELEGATION_GRANT,
|
|
45
58
|
DELEGATION_PROTOCOL,
|
|
46
59
|
DELEGATION_REVOKE,
|
|
60
|
+
Controller,
|
|
61
|
+
DelegationPolicy,
|
|
62
|
+
DelegationRecord,
|
|
63
|
+
DelegationVerdict,
|
|
64
|
+
audit_delegation_history,
|
|
65
|
+
controller_lineage,
|
|
47
66
|
delegation_grant_event,
|
|
48
67
|
delegation_revoke_event,
|
|
49
68
|
is_principal_alias,
|
|
50
69
|
materialize_delegation_credential,
|
|
70
|
+
validate_audience,
|
|
71
|
+
validate_controller,
|
|
72
|
+
validate_controller_enumeration,
|
|
73
|
+
validate_delegation_acceptance,
|
|
51
74
|
validate_delegation_envelope,
|
|
75
|
+
validate_delegation_event_authority,
|
|
52
76
|
validate_delegation_grant_payload,
|
|
77
|
+
validate_delegation_id,
|
|
53
78
|
validate_delegation_query_request,
|
|
54
79
|
validate_delegation_revoke_payload,
|
|
80
|
+
validate_delegation_use,
|
|
81
|
+
validate_historical_delegation,
|
|
55
82
|
validate_principal_document,
|
|
56
83
|
validate_principal_resolution,
|
|
84
|
+
verify_delegation_credential,
|
|
57
85
|
)
|
|
58
86
|
|
|
59
87
|
__all__ = [
|
|
60
88
|
"AGENT_ID_PREFIX",
|
|
89
|
+
"DELEGATION_ERROR_CODES",
|
|
61
90
|
"DELEGATION_GRANT",
|
|
62
91
|
"DELEGATION_PROTOCOL",
|
|
63
92
|
"DELEGATION_REVOKE",
|
|
93
|
+
"IDENTITY_EVENT_FIELDS",
|
|
64
94
|
"MAX_NONCE_HEADER",
|
|
95
|
+
"MAX_NONCE_JUMP",
|
|
65
96
|
"PROFILE_PROTOCOL",
|
|
66
97
|
"PROFILE_UPDATE",
|
|
98
|
+
"SHARED_ERROR_CODES",
|
|
67
99
|
"AgentProtocolError",
|
|
68
100
|
"AgentSigner",
|
|
69
101
|
"ClientNonceManager",
|
|
102
|
+
"Controller",
|
|
103
|
+
"DelegationPolicy",
|
|
104
|
+
"DelegationRecord",
|
|
105
|
+
"DelegationVerdict",
|
|
70
106
|
"MemoryNonceStore",
|
|
71
107
|
"RequestBinding",
|
|
108
|
+
"SubmissionResult",
|
|
72
109
|
"agent_id_from_public_key",
|
|
110
|
+
"audit_delegation_history",
|
|
73
111
|
"canonical_event_bytes",
|
|
112
|
+
"controller_lineage",
|
|
74
113
|
"create_event",
|
|
114
|
+
"create_request_jwt_claims",
|
|
75
115
|
"delegation_grant_event",
|
|
76
116
|
"delegation_revoke_event",
|
|
77
|
-
"create_request_jwt_claims",
|
|
78
117
|
"event_hash",
|
|
79
118
|
"event_hash_bytes",
|
|
80
|
-
"latest_profile_update",
|
|
81
|
-
"materialize_profile",
|
|
82
119
|
"is_principal_alias",
|
|
120
|
+
"latest_profile_update",
|
|
83
121
|
"materialize_delegation_credential",
|
|
122
|
+
"materialize_profile",
|
|
123
|
+
"parse_envelope_json",
|
|
124
|
+
"parse_strict_json",
|
|
84
125
|
"profile_update_event",
|
|
85
126
|
"public_key_bytes",
|
|
86
127
|
"service_origin",
|
|
@@ -89,20 +130,35 @@ __all__ = [
|
|
|
89
130
|
"unix_ms",
|
|
90
131
|
"unix_secs",
|
|
91
132
|
"validate_agent_id",
|
|
133
|
+
"validate_audience",
|
|
134
|
+
"validate_controller",
|
|
135
|
+
"validate_controller_enumeration",
|
|
136
|
+
"validate_delegation_acceptance",
|
|
92
137
|
"validate_delegation_envelope",
|
|
138
|
+
"validate_delegation_event_authority",
|
|
93
139
|
"validate_delegation_grant_payload",
|
|
140
|
+
"validate_delegation_id",
|
|
94
141
|
"validate_delegation_query_request",
|
|
95
142
|
"validate_delegation_revoke_payload",
|
|
143
|
+
"validate_delegation_use",
|
|
144
|
+
"validate_event_fields",
|
|
145
|
+
"validate_historical_delegation",
|
|
96
146
|
"validate_nonce",
|
|
147
|
+
"validate_origin",
|
|
97
148
|
"validate_principal_document",
|
|
98
149
|
"validate_principal_resolution",
|
|
150
|
+
"validate_profile_payload",
|
|
151
|
+
"validate_profile_succession",
|
|
99
152
|
"validate_profile_update",
|
|
153
|
+
"verify_delegation_credential",
|
|
154
|
+
"verify_ed25519_strict",
|
|
100
155
|
"verify_envelope",
|
|
101
156
|
"verify_event_hash",
|
|
102
157
|
"verify_event_hash_signature",
|
|
103
158
|
"verify_live_envelope",
|
|
104
159
|
"verify_request_jwt",
|
|
105
160
|
"verify_signature",
|
|
161
|
+
"verify_submission",
|
|
106
162
|
"verify_timestamp",
|
|
107
163
|
"with_mention",
|
|
108
164
|
"with_mentions",
|