elydora 1.0.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.
- elydora-1.0.0/PKG-INFO +252 -0
- elydora-1.0.0/README.md +226 -0
- elydora-1.0.0/elydora/__init__.py +86 -0
- elydora-1.0.0/elydora/async_client.py +359 -0
- elydora-1.0.0/elydora/cli.py +182 -0
- elydora-1.0.0/elydora/client.py +355 -0
- elydora-1.0.0/elydora/crypto.py +167 -0
- elydora-1.0.0/elydora/errors.py +30 -0
- elydora-1.0.0/elydora/plugins/__init__.py +1 -0
- elydora-1.0.0/elydora/plugins/augment.py +160 -0
- elydora-1.0.0/elydora/plugins/base.py +44 -0
- elydora-1.0.0/elydora/plugins/claudecode.py +167 -0
- elydora-1.0.0/elydora/plugins/cursor.py +143 -0
- elydora-1.0.0/elydora/plugins/gemini.py +160 -0
- elydora-1.0.0/elydora/plugins/hook_template.py +390 -0
- elydora-1.0.0/elydora/plugins/kiro.py +113 -0
- elydora-1.0.0/elydora/plugins/opencode.py +268 -0
- elydora-1.0.0/elydora/plugins/registry.py +44 -0
- elydora-1.0.0/elydora/types.py +293 -0
- elydora-1.0.0/elydora/utils.py +59 -0
- elydora-1.0.0/elydora.egg-info/PKG-INFO +252 -0
- elydora-1.0.0/elydora.egg-info/SOURCES.txt +27 -0
- elydora-1.0.0/elydora.egg-info/dependency_links.txt +1 -0
- elydora-1.0.0/elydora.egg-info/entry_points.txt +2 -0
- elydora-1.0.0/elydora.egg-info/requires.txt +11 -0
- elydora-1.0.0/elydora.egg-info/top_level.txt +1 -0
- elydora-1.0.0/pyproject.toml +42 -0
- elydora-1.0.0/setup.cfg +4 -0
- elydora-1.0.0/setup.py +3 -0
elydora-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: elydora
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Python SDK for the Elydora tamper-evident audit platform
|
|
5
|
+
License: MIT
|
|
6
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
7
|
+
Classifier: Intended Audience :: Developers
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Typing :: Typed
|
|
16
|
+
Requires-Python: >=3.9
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: requests>=2.28.0
|
|
19
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
20
|
+
Requires-Dist: cryptography>=41.0.0
|
|
21
|
+
Requires-Dist: typing_extensions>=4.0.0; python_version < "3.11"
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
24
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
25
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
26
|
+
|
|
27
|
+
# Elydora Python SDK
|
|
28
|
+
|
|
29
|
+
Official Python SDK for the [Elydora](https://elydora.com) tamper-evident audit platform. Build cryptographically verifiable audit trails for AI agent operations.
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install elydora
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Requires Python 3.9+.
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from elydora import ElydoraClient
|
|
43
|
+
|
|
44
|
+
# Authenticate
|
|
45
|
+
auth = ElydoraClient.login("https://api.elydora.com", "user@example.com", "password")
|
|
46
|
+
|
|
47
|
+
# Create client
|
|
48
|
+
client = ElydoraClient(
|
|
49
|
+
org_id=auth["user"]["org_id"],
|
|
50
|
+
agent_id="my-agent-id",
|
|
51
|
+
private_key="<base64url-encoded-ed25519-seed>",
|
|
52
|
+
base_url="https://api.elydora.com",
|
|
53
|
+
token=auth["token"],
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Create and submit an operation
|
|
57
|
+
eor = client.create_operation(
|
|
58
|
+
operation_type="data.access",
|
|
59
|
+
subject={"user_id": "u-123", "resource": "patient-record"},
|
|
60
|
+
action={"type": "read", "scope": "full"},
|
|
61
|
+
payload={"record_id": "rec-456"},
|
|
62
|
+
)
|
|
63
|
+
response = client.submit_operation(eor)
|
|
64
|
+
print("Receipt:", response["receipt"]["receipt_id"])
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Async Support
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from elydora import AsyncElydoraClient
|
|
71
|
+
|
|
72
|
+
async def main():
|
|
73
|
+
client = AsyncElydoraClient(
|
|
74
|
+
org_id="org-123",
|
|
75
|
+
agent_id="agent-456",
|
|
76
|
+
private_key="<base64url-encoded-ed25519-seed>",
|
|
77
|
+
token="<jwt-token>",
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
eor = client.create_operation(
|
|
81
|
+
operation_type="inference",
|
|
82
|
+
subject={"model": "gpt-4"},
|
|
83
|
+
action={"type": "completion"},
|
|
84
|
+
)
|
|
85
|
+
response = await client.submit_operation(eor)
|
|
86
|
+
await client.close()
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## CLI
|
|
90
|
+
|
|
91
|
+
The SDK includes a CLI for installing audit hooks into AI coding agents.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
elydora install \
|
|
95
|
+
--agent claudecode \
|
|
96
|
+
--org_id org-123 \
|
|
97
|
+
--agent_id agent-456 \
|
|
98
|
+
--private_key <key> \
|
|
99
|
+
--kid agent-456-key-v1
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Commands
|
|
103
|
+
|
|
104
|
+
| Command | Description |
|
|
105
|
+
|---------|-------------|
|
|
106
|
+
| `elydora install` | Install Elydora audit hook for a coding agent |
|
|
107
|
+
| `elydora uninstall` | Remove Elydora audit hook for a coding agent |
|
|
108
|
+
| `elydora status` | Show installation status for all agents |
|
|
109
|
+
| `elydora agents` | List supported coding agents |
|
|
110
|
+
|
|
111
|
+
### Supported Agents
|
|
112
|
+
|
|
113
|
+
| Agent | Key |
|
|
114
|
+
|-------|-----|
|
|
115
|
+
| Claude Code | `claudecode` |
|
|
116
|
+
| Cursor | `cursor` |
|
|
117
|
+
| Gemini CLI | `gemini` |
|
|
118
|
+
| Augment Code | `augment` |
|
|
119
|
+
| Kiro | `kiro` |
|
|
120
|
+
| OpenCode | `opencode` |
|
|
121
|
+
|
|
122
|
+
## API Reference
|
|
123
|
+
|
|
124
|
+
### Configuration
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
client = ElydoraClient(
|
|
128
|
+
org_id="org-123", # Organization ID
|
|
129
|
+
agent_id="agent-456", # Agent ID
|
|
130
|
+
private_key="<seed>", # Base64url-encoded Ed25519 seed
|
|
131
|
+
base_url="https://...", # API base URL (default: https://api.elydora.com)
|
|
132
|
+
ttl_ms=30000, # Operation TTL in ms (default: 30000)
|
|
133
|
+
max_retries=3, # Max retries on transient failures (default: 3)
|
|
134
|
+
token="<jwt>", # Optional JWT bearer token
|
|
135
|
+
)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Authentication
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
# Register a new user and organization
|
|
142
|
+
reg = ElydoraClient.register(base_url, email, password, display_name=None, org_name=None)
|
|
143
|
+
|
|
144
|
+
# Login and receive a JWT
|
|
145
|
+
auth = ElydoraClient.login(base_url, email, password)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Operations
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
# Create a signed EOR locally (no network call)
|
|
152
|
+
eor = client.create_operation(
|
|
153
|
+
operation_type="inference",
|
|
154
|
+
subject={"model": "gpt-4"},
|
|
155
|
+
action={"type": "completion"},
|
|
156
|
+
payload={"prompt": "Hello"},
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
# Submit to API
|
|
160
|
+
response = client.submit_operation(eor)
|
|
161
|
+
|
|
162
|
+
# Retrieve an operation
|
|
163
|
+
op = client.get_operation(operation_id)
|
|
164
|
+
|
|
165
|
+
# Verify integrity
|
|
166
|
+
result = client.verify_operation(operation_id)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Agent Management
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
# Register a new agent
|
|
173
|
+
agent = client.register_agent({
|
|
174
|
+
"agent_id": "my-agent",
|
|
175
|
+
"display_name": "My Agent",
|
|
176
|
+
"responsible_entity": "team@example.com",
|
|
177
|
+
"keys": [{"kid": "key-v1", "public_key": "<base64url>", "algorithm": "ed25519"}],
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
# Get agent details
|
|
181
|
+
details = client.get_agent(agent_id)
|
|
182
|
+
|
|
183
|
+
# Freeze an agent
|
|
184
|
+
client.freeze_agent(agent_id, reason="security review")
|
|
185
|
+
|
|
186
|
+
# Revoke a key
|
|
187
|
+
client.revoke_key(agent_id, kid, reason="key rotation")
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Audit
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
import time
|
|
194
|
+
|
|
195
|
+
results = client.query_audit(
|
|
196
|
+
agent_id="agent-123",
|
|
197
|
+
operation_type="inference",
|
|
198
|
+
start_time=int(time.time() * 1000) - 86400000,
|
|
199
|
+
end_time=int(time.time() * 1000),
|
|
200
|
+
limit=50,
|
|
201
|
+
)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Epochs
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
epochs = client.list_epochs()
|
|
208
|
+
epoch = client.get_epoch(epoch_id)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Exports
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
export = client.create_export(
|
|
215
|
+
start_time=start,
|
|
216
|
+
end_time=end,
|
|
217
|
+
format="json",
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
exports = client.list_exports()
|
|
221
|
+
detail = client.get_export(export_id)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### JWKS
|
|
225
|
+
|
|
226
|
+
```python
|
|
227
|
+
jwks = client.get_jwks()
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Error Handling
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
from elydora import ElydoraError
|
|
234
|
+
|
|
235
|
+
try:
|
|
236
|
+
client.submit_operation(eor)
|
|
237
|
+
except ElydoraError as e:
|
|
238
|
+
print(e.code) # e.g. "INVALID_SIGNATURE"
|
|
239
|
+
print(e.message) # Human-readable message
|
|
240
|
+
print(e.status_code) # HTTP status code
|
|
241
|
+
print(e.request_id) # Request ID for support
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Dependencies
|
|
245
|
+
|
|
246
|
+
- [requests](https://pypi.org/project/requests/) - Sync HTTP client
|
|
247
|
+
- [aiohttp](https://pypi.org/project/aiohttp/) - Async HTTP client
|
|
248
|
+
- [cryptography](https://pypi.org/project/cryptography/) - Ed25519 signing
|
|
249
|
+
|
|
250
|
+
## License
|
|
251
|
+
|
|
252
|
+
MIT
|
elydora-1.0.0/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Elydora Python SDK
|
|
2
|
+
|
|
3
|
+
Official Python SDK for the [Elydora](https://elydora.com) tamper-evident audit platform. Build cryptographically verifiable audit trails for AI agent operations.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install elydora
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Python 3.9+.
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from elydora import ElydoraClient
|
|
17
|
+
|
|
18
|
+
# Authenticate
|
|
19
|
+
auth = ElydoraClient.login("https://api.elydora.com", "user@example.com", "password")
|
|
20
|
+
|
|
21
|
+
# Create client
|
|
22
|
+
client = ElydoraClient(
|
|
23
|
+
org_id=auth["user"]["org_id"],
|
|
24
|
+
agent_id="my-agent-id",
|
|
25
|
+
private_key="<base64url-encoded-ed25519-seed>",
|
|
26
|
+
base_url="https://api.elydora.com",
|
|
27
|
+
token=auth["token"],
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# Create and submit an operation
|
|
31
|
+
eor = client.create_operation(
|
|
32
|
+
operation_type="data.access",
|
|
33
|
+
subject={"user_id": "u-123", "resource": "patient-record"},
|
|
34
|
+
action={"type": "read", "scope": "full"},
|
|
35
|
+
payload={"record_id": "rec-456"},
|
|
36
|
+
)
|
|
37
|
+
response = client.submit_operation(eor)
|
|
38
|
+
print("Receipt:", response["receipt"]["receipt_id"])
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Async Support
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
from elydora import AsyncElydoraClient
|
|
45
|
+
|
|
46
|
+
async def main():
|
|
47
|
+
client = AsyncElydoraClient(
|
|
48
|
+
org_id="org-123",
|
|
49
|
+
agent_id="agent-456",
|
|
50
|
+
private_key="<base64url-encoded-ed25519-seed>",
|
|
51
|
+
token="<jwt-token>",
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
eor = client.create_operation(
|
|
55
|
+
operation_type="inference",
|
|
56
|
+
subject={"model": "gpt-4"},
|
|
57
|
+
action={"type": "completion"},
|
|
58
|
+
)
|
|
59
|
+
response = await client.submit_operation(eor)
|
|
60
|
+
await client.close()
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## CLI
|
|
64
|
+
|
|
65
|
+
The SDK includes a CLI for installing audit hooks into AI coding agents.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
elydora install \
|
|
69
|
+
--agent claudecode \
|
|
70
|
+
--org_id org-123 \
|
|
71
|
+
--agent_id agent-456 \
|
|
72
|
+
--private_key <key> \
|
|
73
|
+
--kid agent-456-key-v1
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Commands
|
|
77
|
+
|
|
78
|
+
| Command | Description |
|
|
79
|
+
|---------|-------------|
|
|
80
|
+
| `elydora install` | Install Elydora audit hook for a coding agent |
|
|
81
|
+
| `elydora uninstall` | Remove Elydora audit hook for a coding agent |
|
|
82
|
+
| `elydora status` | Show installation status for all agents |
|
|
83
|
+
| `elydora agents` | List supported coding agents |
|
|
84
|
+
|
|
85
|
+
### Supported Agents
|
|
86
|
+
|
|
87
|
+
| Agent | Key |
|
|
88
|
+
|-------|-----|
|
|
89
|
+
| Claude Code | `claudecode` |
|
|
90
|
+
| Cursor | `cursor` |
|
|
91
|
+
| Gemini CLI | `gemini` |
|
|
92
|
+
| Augment Code | `augment` |
|
|
93
|
+
| Kiro | `kiro` |
|
|
94
|
+
| OpenCode | `opencode` |
|
|
95
|
+
|
|
96
|
+
## API Reference
|
|
97
|
+
|
|
98
|
+
### Configuration
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
client = ElydoraClient(
|
|
102
|
+
org_id="org-123", # Organization ID
|
|
103
|
+
agent_id="agent-456", # Agent ID
|
|
104
|
+
private_key="<seed>", # Base64url-encoded Ed25519 seed
|
|
105
|
+
base_url="https://...", # API base URL (default: https://api.elydora.com)
|
|
106
|
+
ttl_ms=30000, # Operation TTL in ms (default: 30000)
|
|
107
|
+
max_retries=3, # Max retries on transient failures (default: 3)
|
|
108
|
+
token="<jwt>", # Optional JWT bearer token
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Authentication
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
# Register a new user and organization
|
|
116
|
+
reg = ElydoraClient.register(base_url, email, password, display_name=None, org_name=None)
|
|
117
|
+
|
|
118
|
+
# Login and receive a JWT
|
|
119
|
+
auth = ElydoraClient.login(base_url, email, password)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Operations
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
# Create a signed EOR locally (no network call)
|
|
126
|
+
eor = client.create_operation(
|
|
127
|
+
operation_type="inference",
|
|
128
|
+
subject={"model": "gpt-4"},
|
|
129
|
+
action={"type": "completion"},
|
|
130
|
+
payload={"prompt": "Hello"},
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
# Submit to API
|
|
134
|
+
response = client.submit_operation(eor)
|
|
135
|
+
|
|
136
|
+
# Retrieve an operation
|
|
137
|
+
op = client.get_operation(operation_id)
|
|
138
|
+
|
|
139
|
+
# Verify integrity
|
|
140
|
+
result = client.verify_operation(operation_id)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Agent Management
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
# Register a new agent
|
|
147
|
+
agent = client.register_agent({
|
|
148
|
+
"agent_id": "my-agent",
|
|
149
|
+
"display_name": "My Agent",
|
|
150
|
+
"responsible_entity": "team@example.com",
|
|
151
|
+
"keys": [{"kid": "key-v1", "public_key": "<base64url>", "algorithm": "ed25519"}],
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
# Get agent details
|
|
155
|
+
details = client.get_agent(agent_id)
|
|
156
|
+
|
|
157
|
+
# Freeze an agent
|
|
158
|
+
client.freeze_agent(agent_id, reason="security review")
|
|
159
|
+
|
|
160
|
+
# Revoke a key
|
|
161
|
+
client.revoke_key(agent_id, kid, reason="key rotation")
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Audit
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
import time
|
|
168
|
+
|
|
169
|
+
results = client.query_audit(
|
|
170
|
+
agent_id="agent-123",
|
|
171
|
+
operation_type="inference",
|
|
172
|
+
start_time=int(time.time() * 1000) - 86400000,
|
|
173
|
+
end_time=int(time.time() * 1000),
|
|
174
|
+
limit=50,
|
|
175
|
+
)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Epochs
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
epochs = client.list_epochs()
|
|
182
|
+
epoch = client.get_epoch(epoch_id)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Exports
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
export = client.create_export(
|
|
189
|
+
start_time=start,
|
|
190
|
+
end_time=end,
|
|
191
|
+
format="json",
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
exports = client.list_exports()
|
|
195
|
+
detail = client.get_export(export_id)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### JWKS
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
jwks = client.get_jwks()
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Error Handling
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
from elydora import ElydoraError
|
|
208
|
+
|
|
209
|
+
try:
|
|
210
|
+
client.submit_operation(eor)
|
|
211
|
+
except ElydoraError as e:
|
|
212
|
+
print(e.code) # e.g. "INVALID_SIGNATURE"
|
|
213
|
+
print(e.message) # Human-readable message
|
|
214
|
+
print(e.status_code) # HTTP status code
|
|
215
|
+
print(e.request_id) # Request ID for support
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Dependencies
|
|
219
|
+
|
|
220
|
+
- [requests](https://pypi.org/project/requests/) - Sync HTTP client
|
|
221
|
+
- [aiohttp](https://pypi.org/project/aiohttp/) - Async HTTP client
|
|
222
|
+
- [cryptography](https://pypi.org/project/cryptography/) - Ed25519 signing
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Elydora Python SDK — tamper-evident audit trail for AI agents."""
|
|
2
|
+
|
|
3
|
+
from .client import ElydoraClient
|
|
4
|
+
from .async_client import AsyncElydoraClient
|
|
5
|
+
from .errors import ElydoraError
|
|
6
|
+
from .crypto import (
|
|
7
|
+
compute_chain_hash,
|
|
8
|
+
compute_payload_hash,
|
|
9
|
+
jcs_canonicalize,
|
|
10
|
+
sha256_base64url,
|
|
11
|
+
sign_ed25519,
|
|
12
|
+
sign_eor,
|
|
13
|
+
get_public_key_base64url,
|
|
14
|
+
)
|
|
15
|
+
from .utils import base64url_encode, base64url_decode, generate_nonce, generate_uuidv7
|
|
16
|
+
from .types import (
|
|
17
|
+
EOR,
|
|
18
|
+
EAR,
|
|
19
|
+
Agent,
|
|
20
|
+
AgentKey,
|
|
21
|
+
Operation,
|
|
22
|
+
Receipt,
|
|
23
|
+
Epoch,
|
|
24
|
+
Export,
|
|
25
|
+
Organization,
|
|
26
|
+
User,
|
|
27
|
+
RegisterAgentRequest,
|
|
28
|
+
RegisterAgentResponse,
|
|
29
|
+
GetAgentResponse,
|
|
30
|
+
SubmitOperationResponse,
|
|
31
|
+
GetOperationResponse,
|
|
32
|
+
VerifyOperationResponse,
|
|
33
|
+
AuditQueryResponse,
|
|
34
|
+
GetEpochResponse,
|
|
35
|
+
ListEpochsResponse,
|
|
36
|
+
CreateExportResponse,
|
|
37
|
+
GetExportResponse,
|
|
38
|
+
ListExportsResponse,
|
|
39
|
+
JWKSResponse,
|
|
40
|
+
AuthRegisterResponse,
|
|
41
|
+
AuthLoginResponse,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
__version__ = "1.0.0"
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
"ElydoraClient",
|
|
48
|
+
"AsyncElydoraClient",
|
|
49
|
+
"ElydoraError",
|
|
50
|
+
"compute_chain_hash",
|
|
51
|
+
"compute_payload_hash",
|
|
52
|
+
"jcs_canonicalize",
|
|
53
|
+
"sha256_base64url",
|
|
54
|
+
"sign_ed25519",
|
|
55
|
+
"sign_eor",
|
|
56
|
+
"get_public_key_base64url",
|
|
57
|
+
"base64url_encode",
|
|
58
|
+
"base64url_decode",
|
|
59
|
+
"generate_nonce",
|
|
60
|
+
"generate_uuidv7",
|
|
61
|
+
"EOR",
|
|
62
|
+
"EAR",
|
|
63
|
+
"Agent",
|
|
64
|
+
"AgentKey",
|
|
65
|
+
"Operation",
|
|
66
|
+
"Receipt",
|
|
67
|
+
"Epoch",
|
|
68
|
+
"Export",
|
|
69
|
+
"Organization",
|
|
70
|
+
"User",
|
|
71
|
+
"RegisterAgentRequest",
|
|
72
|
+
"RegisterAgentResponse",
|
|
73
|
+
"GetAgentResponse",
|
|
74
|
+
"SubmitOperationResponse",
|
|
75
|
+
"GetOperationResponse",
|
|
76
|
+
"VerifyOperationResponse",
|
|
77
|
+
"AuditQueryResponse",
|
|
78
|
+
"GetEpochResponse",
|
|
79
|
+
"ListEpochsResponse",
|
|
80
|
+
"CreateExportResponse",
|
|
81
|
+
"GetExportResponse",
|
|
82
|
+
"ListExportsResponse",
|
|
83
|
+
"JWKSResponse",
|
|
84
|
+
"AuthRegisterResponse",
|
|
85
|
+
"AuthLoginResponse",
|
|
86
|
+
]
|