e2a 2.4.0__tar.gz → 2.5.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.
Files changed (29) hide show
  1. {e2a-2.4.0 → e2a-2.5.0}/CHANGELOG.md +19 -0
  2. {e2a-2.4.0 → e2a-2.5.0}/PKG-INFO +1 -1
  3. {e2a-2.4.0 → e2a-2.5.0}/pyproject.toml +1 -1
  4. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/generated/__init__.py +30 -0
  5. {e2a-2.4.0 → e2a-2.5.0}/.gitignore +0 -0
  6. {e2a-2.4.0 → e2a-2.5.0}/README.md +0 -0
  7. {e2a-2.4.0 → e2a-2.5.0}/codegen-requirements.txt +0 -0
  8. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/__init__.py +0 -0
  9. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/__init__.py +0 -0
  10. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/api.py +0 -0
  11. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/async_client.py +0 -0
  12. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/client.py +0 -0
  13. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/generated/_internal.py +0 -0
  14. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/generated/github_com_Mnexa_AI_e2a_internal_identity.py +0 -0
  15. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/generated/internal_agent.py +0 -0
  16. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/handler.py +0 -0
  17. {e2a-2.4.0 → e2a-2.5.0}/src/e2a/v1/websocket.py +0 -0
  18. {e2a-2.4.0 → e2a-2.5.0}/tests/__init__.py +0 -0
  19. {e2a-2.4.0 → e2a-2.5.0}/tests/test_contract.py +0 -0
  20. {e2a-2.4.0 → e2a-2.5.0}/tests/test_e2e.py +0 -0
  21. {e2a-2.4.0 → e2a-2.5.0}/tests/test_exports.py +0 -0
  22. {e2a-2.4.0 → e2a-2.5.0}/tests/test_generated_models.py +0 -0
  23. {e2a-2.4.0 → e2a-2.5.0}/tests/test_idempotency.py +0 -0
  24. {e2a-2.4.0 → e2a-2.5.0}/tests/test_v1_api.py +0 -0
  25. {e2a-2.4.0 → e2a-2.5.0}/tests/test_v1_async_client.py +0 -0
  26. {e2a-2.4.0 → e2a-2.5.0}/tests/test_v1_client.py +0 -0
  27. {e2a-2.4.0 → e2a-2.5.0}/tests/test_v1_handler.py +0 -0
  28. {e2a-2.4.0 → e2a-2.5.0}/tests/test_v1_websocket.py +0 -0
  29. {e2a-2.4.0 → e2a-2.5.0}/uv.lock +0 -0
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.5.0
4
+
5
+ ### Added
6
+ - Generated types for the per-user resource-limits primitive that
7
+ shipped with #158: `LimitsInfo`, `LimitsCaps`, `LimitsUsage`. These
8
+ describe the response shape of `GET /api/v1/users/me/limits`, which
9
+ the hosted dashboard uses to render the upgrade affordance and the
10
+ "you've used X of Y" surface. The high-level `E2AClient` doesn't
11
+ yet expose a typed helper for this endpoint — it's surfaced as a
12
+ dashboard-only concern today, and SDK consumers querying their own
13
+ usage should call `/agents` / `/messages` directly. The types are
14
+ emitted so anyone consuming the raw OpenAPI generation has the
15
+ shapes available.
16
+
17
+ ### Notes
18
+ - No runtime client behavior changed in this release. If you're not
19
+ using the limits primitive (self-host deployments without a paid
20
+ tier), 2.5.0 is functionally identical to 2.4.0.
21
+
3
22
  ## 2.4.0
4
23
 
5
24
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: e2a
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: Python SDK for the e2a protocol — email-to-agent authentication
5
5
  Project-URL: Homepage, https://e2a.dev
6
6
  Project-URL: Repository, https://github.com/Mnexa-AI/e2a
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "e2a"
7
- version = "2.4.0"
7
+ version = "2.5.0"
8
8
  description = "Python SDK for the e2a protocol — email-to-agent authentication"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -143,6 +143,26 @@ class Domain(BaseModel):
143
143
  verified_at: str | None = None
144
144
 
145
145
 
146
+ class LimitsCaps(BaseModel):
147
+ model_config = ConfigDict(
148
+ populate_by_name=True,
149
+ )
150
+ max_agents: int | None = None
151
+ max_domains: int | None = None
152
+ max_messages_month: int | None = None
153
+ max_storage_bytes: int | None = None
154
+
155
+
156
+ class LimitsUsage(BaseModel):
157
+ model_config = ConfigDict(
158
+ populate_by_name=True,
159
+ )
160
+ agents: int | None = None
161
+ domains: int | None = None
162
+ messages_month: int | None = None
163
+ storage_bytes: int | None = None
164
+
165
+
146
166
  class ListAgentsResponse(BaseModel):
147
167
  model_config = ConfigDict(
148
168
  populate_by_name=True,
@@ -409,6 +429,16 @@ class ApprovePendingMessageRequest(BaseModel):
409
429
  to: list[str] | None = None
410
430
 
411
431
 
432
+ class LimitsInfo(BaseModel):
433
+ model_config = ConfigDict(
434
+ populate_by_name=True,
435
+ )
436
+ limits: LimitsCaps | None = None
437
+ plan_code: str | None = None
438
+ upgrade_url: str | None = None
439
+ usage: LimitsUsage | None = None
440
+
441
+
412
442
  class ListMessagesResponse(BaseModel):
413
443
  model_config = ConfigDict(
414
444
  populate_by_name=True,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes