supervaizer 0.9.7__tar.gz → 0.10.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 (80) hide show
  1. {supervaizer-0.9.7 → supervaizer-0.10.0}/.gitignore +2 -0
  2. supervaizer-0.9.7/README.md → supervaizer-0.10.0/PKG-INFO +139 -16
  3. supervaizer-0.9.7/PKG-INFO → supervaizer-0.10.0/README.md +80 -68
  4. {supervaizer-0.9.7 → supervaizer-0.10.0}/pyproject.toml +26 -18
  5. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/__init__.py +11 -2
  6. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/__version__.py +1 -1
  7. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/account.py +4 -0
  8. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/account_service.py +7 -1
  9. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/routes.py +46 -7
  10. supervaizer-0.10.0/src/supervaizer/admin/static/js/job-start-form.js +373 -0
  11. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agents.html +74 -0
  12. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agents_grid.html +5 -3
  13. supervaizer-0.10.0/src/supervaizer/admin/templates/job_start_test.html +109 -0
  14. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/navigation.html +11 -1
  15. supervaizer-0.10.0/src/supervaizer/admin/templates/supervaize_instructions.html +212 -0
  16. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/agent.py +165 -25
  17. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/case.py +46 -14
  18. supervaizer-0.10.0/src/supervaizer/cli.py +386 -0
  19. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/common.py +45 -4
  20. supervaizer-0.10.0/src/supervaizer/deploy/__init__.py +16 -0
  21. supervaizer-0.10.0/src/supervaizer/deploy/cli.py +296 -0
  22. supervaizer-0.10.0/src/supervaizer/deploy/commands/__init__.py +9 -0
  23. supervaizer-0.10.0/src/supervaizer/deploy/commands/clean.py +294 -0
  24. supervaizer-0.10.0/src/supervaizer/deploy/commands/down.py +119 -0
  25. supervaizer-0.10.0/src/supervaizer/deploy/commands/local.py +460 -0
  26. supervaizer-0.10.0/src/supervaizer/deploy/commands/plan.py +167 -0
  27. supervaizer-0.10.0/src/supervaizer/deploy/commands/status.py +169 -0
  28. supervaizer-0.10.0/src/supervaizer/deploy/commands/up.py +281 -0
  29. supervaizer-0.10.0/src/supervaizer/deploy/docker.py +370 -0
  30. supervaizer-0.10.0/src/supervaizer/deploy/driver_factory.py +42 -0
  31. supervaizer-0.10.0/src/supervaizer/deploy/drivers/__init__.py +39 -0
  32. supervaizer-0.10.0/src/supervaizer/deploy/drivers/aws_app_runner.py +607 -0
  33. supervaizer-0.10.0/src/supervaizer/deploy/drivers/base.py +196 -0
  34. supervaizer-0.10.0/src/supervaizer/deploy/drivers/cloud_run.py +570 -0
  35. supervaizer-0.10.0/src/supervaizer/deploy/drivers/do_app_platform.py +504 -0
  36. supervaizer-0.10.0/src/supervaizer/deploy/health.py +404 -0
  37. supervaizer-0.10.0/src/supervaizer/deploy/state.py +210 -0
  38. supervaizer-0.10.0/src/supervaizer/deploy/templates/Dockerfile.template +44 -0
  39. supervaizer-0.10.0/src/supervaizer/deploy/templates/debug_env.py +69 -0
  40. supervaizer-0.10.0/src/supervaizer/deploy/templates/docker-compose.yml.template +37 -0
  41. supervaizer-0.10.0/src/supervaizer/deploy/templates/dockerignore.template +66 -0
  42. supervaizer-0.10.0/src/supervaizer/deploy/templates/entrypoint.sh +20 -0
  43. supervaizer-0.10.0/src/supervaizer/deploy/utils.py +41 -0
  44. supervaizer-0.9.7/src/supervaizer/examples/controller-template.py → supervaizer-0.10.0/src/supervaizer/examples/controller_template.py +5 -4
  45. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/job.py +18 -5
  46. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/job_service.py +6 -5
  47. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/parameter.py +61 -1
  48. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/protocol/__init__.py +2 -2
  49. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/routes.py +1 -1
  50. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/routes.py +262 -12
  51. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/server.py +5 -11
  52. supervaizer-0.10.0/src/supervaizer/utils/__init__.py +16 -0
  53. supervaizer-0.10.0/src/supervaizer/utils/version_check.py +56 -0
  54. supervaizer-0.9.7/src/supervaizer/cli.py +0 -146
  55. supervaizer-0.9.7/src/supervaizer/protocol/acp/__init__.py +0 -21
  56. supervaizer-0.9.7/src/supervaizer/protocol/acp/model.py +0 -198
  57. supervaizer-0.9.7/src/supervaizer/protocol/acp/routes.py +0 -74
  58. {supervaizer-0.9.7 → supervaizer-0.10.0}/LICENSE.md +0 -0
  59. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agent_detail.html +0 -0
  60. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/base.html +0 -0
  61. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/case_detail.html +0 -0
  62. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/cases_list.html +0 -0
  63. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/cases_table.html +0 -0
  64. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/console.html +0 -0
  65. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/dashboard.html +0 -0
  66. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/job_detail.html +0 -0
  67. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/jobs_list.html +0 -0
  68. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/jobs_table.html +0 -0
  69. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/recent_activity.html +0 -0
  70. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/server.html +0 -0
  71. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/admin/templates/server_status_cards.html +0 -0
  72. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/event.py +0 -0
  73. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/instructions.py +0 -0
  74. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/lifecycle.py +0 -0
  75. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/__init__.py +0 -0
  76. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/model.py +0 -0
  77. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/py.typed +0 -0
  78. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/server_utils.py +0 -0
  79. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/storage.py +0 -0
  80. {supervaizer-0.9.7 → supervaizer-0.10.0}/src/supervaizer/telemetry.py +0 -0
@@ -249,3 +249,5 @@ uv.lock
249
249
  /data/*
250
250
 
251
251
  .pypirc
252
+
253
+ .deployment/
@@ -1,15 +1,74 @@
1
+ Metadata-Version: 2.4
2
+ Name: supervaizer
3
+ Version: 0.10.0
4
+ Summary: Controller system for Supervaize
5
+ Project-URL: Homepage, https://supervaize.com
6
+ Project-URL: Repository, https://github.com/supervaize/supervaizer
7
+ Project-URL: Documentation, https://doc.supervaize.com
8
+ Author-email: Alain Prasquier - Supervaize <alain@supervaize.com>
9
+ License-Expression: MPL-2.0
10
+ License-File: LICENSE.md
11
+ Keywords: AI,agent,agentic,controller,supervaize,workflow
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Requires-Python: >=3.12
18
+ Requires-Dist: art>=6.5
19
+ Requires-Dist: cryptography>=46.0.2
20
+ Requires-Dist: demjson3>=3.0.6
21
+ Requires-Dist: deprecated>=1.2.18
22
+ Requires-Dist: fastapi>=0.118.0
23
+ Requires-Dist: httpx>=0.28.1
24
+ Requires-Dist: jinja2>=3.1.6
25
+ Requires-Dist: loguru>=0.7.3
26
+ Requires-Dist: orjson>=3.11.3
27
+ Requires-Dist: packaging>=24.0
28
+ Requires-Dist: pydantic>=2.12.0
29
+ Requires-Dist: python-slugify>=8.0.4
30
+ Requires-Dist: pyyaml>=6.0.3
31
+ Requires-Dist: rich>=14.1.0
32
+ Requires-Dist: shortuuid>=1.0.13
33
+ Requires-Dist: sse-starlette>=3.0.2
34
+ Requires-Dist: tinydb>=4.8.1
35
+ Requires-Dist: typer>=0.19.2
36
+ Requires-Dist: uvicorn>=0.36.0
37
+ Provides-Extra: deploy
38
+ Requires-Dist: boto3>=1.34.0; extra == 'deploy'
39
+ Requires-Dist: docker>=7.0.0; extra == 'deploy'
40
+ Requires-Dist: google-cloud-artifact-registry>=1.8.0; extra == 'deploy'
41
+ Requires-Dist: google-cloud-run>=0.10.0; extra == 'deploy'
42
+ Requires-Dist: google-cloud-secret-manager>=2.18.0; extra == 'deploy'
43
+ Requires-Dist: psutil>=7.1.0; extra == 'deploy'
44
+ Provides-Extra: dev
45
+ Requires-Dist: hatch>=1.14.2; extra == 'dev'
46
+ Requires-Dist: jsonschema>=4.25.1; extra == 'dev'
47
+ Requires-Dist: mypy>=1.18.2; extra == 'dev'
48
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
49
+ Requires-Dist: pytest-asyncio>=1.2.0; extra == 'dev'
50
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
51
+ Requires-Dist: pytest-mock>=3.15.1; extra == 'dev'
52
+ Requires-Dist: pytest-sugar>=1.1.1; extra == 'dev'
53
+ Requires-Dist: pytest>=8.4.2; extra == 'dev'
54
+ Requires-Dist: respx>=0.22.0; extra == 'dev'
55
+ Requires-Dist: ruff>=0.13.3; extra == 'dev'
56
+ Requires-Dist: types-deprecated>=1.2.15.20250304; extra == 'dev'
57
+ Requires-Dist: types-python-slugify>=8.0.2.20240310; extra == 'dev'
58
+ Description-Content-Type: text/markdown
59
+
1
60
  # SUPERVAIZER
2
61
 
3
- [[Operate AI Agents with confidence]]
62
+ [Operate AI Agents with confidence]
4
63
 
5
- A Python toolkit for building, managing, and connecting AI agents with full [Agent-to-Agent (A2A)](https://google.github.io/A2A/#/) and [Agent Communication Protocol (ACP)](https://github.com/i-am-bee/ACP) support.
64
+ A Python toolkit for building, managing, and connecting AI agents with full [Agent-to-Agent (A2A)](https://a2a-protocol.org/) protocol support.
6
65
 
7
66
  [![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue.svg)](https://www.python.org/downloads/)
8
- [![Package Version](https://img.shields.io/badge/Supervaizer-0.9.6-yellow.svg)](https://github.com/supervaize/supervaizer)
9
- [![A2A Protocol](https://img.shields.io/badge/A2A-Protocol-orange.svg)](https://google.github.io/A2A/)
10
- [![ACP Protocol](https://img.shields.io/badge/ACP-Protocol-purple.svg)](https://github.com/i-am-bee/ACP)
67
+ [![A2A Protocol](https://img.shields.io/badge/A2A-Protocol-orange.svg)](https://a2a-protocol.org/)
11
68
  [![Test Coverage](https://img.shields.io/badge/Coverage-81%25-brightgreen.svg)](https://github.com/supervaize/supervaizer)
12
69
 
70
+ > **⚠️ Beta Disclaimer**: SUPERVAIZER is currently in beta mode. Not everything works as expected yet. Please report any issues you encounter.
71
+
13
72
  - [SUPERVAIZER](#supervaizer)
14
73
  - [Description](#description)
15
74
  - [Quick Start](#quick-start)
@@ -18,35 +77,45 @@ A Python toolkit for building, managing, and connecting AI agents with full [Age
18
77
  - [3. Scaffold the controller](#3-scaffold-the-controller)
19
78
  - [(Optional) 4. Configure your Supervaize account \& environment](#optional-4-configure-your-supervaize-account--environment)
20
79
  - [5. Start the server 🚀](#5-start-the-server-)
80
+ - [6. Optional parameters](#6-optional-parameters)
21
81
  - [What's next?](#whats-next)
22
82
  - [Features](#features)
23
83
  - [Protocol Support](#protocol-support)
84
+ - [Cloud Deployment](#cloud-deployment)
85
+ - [Quick Start](#quick-start-1)
86
+ - [Deployment Commands](#deployment-commands)
87
+ - [Features](#features-1)
88
+ - [Documentation](#documentation)
24
89
  - [Using the CLI](#using-the-cli)
25
90
  - [API Documentation \& User Interfaces](#api-documentation--user-interfaces)
26
91
  - [Admin Interface (`/admin`)](#admin-interface-admin)
27
- - [Quick Start](#quick-start-1)
92
+ - [Quick Start](#quick-start-2)
28
93
  - [Calculating costs](#calculating-costs)
29
- - [Documentation](#documentation)
94
+ - [Documentation](#documentation-1)
30
95
  - [Contributing](#contributing)
31
96
  - [License](#license)
32
97
 
33
98
  ## Description
34
99
 
35
- SUPERVAIZER is a toolkit built for the age of AI interoperability. At its core, it implements Google's Agent-to-Agent (A2A) protocol and IBM's Agent Communication Protocol (ACP), enabling seamless discovery and interaction between agents across different systems and platforms.
100
+ SUPERVAIZER is a toolkit built for the age of AI interoperability. At its core, it implements the Agent-to-Agent (A2A) protocol, enabling seamless discovery and interaction between agents across different systems and platforms.
36
101
 
37
- With comprehensive support for the A2A/ACP protocols, specification, SUPERVAIZER allows you to:
102
+ With comprehensive support for the A2A protocol specification, SUPERVAIZER allows you to:
38
103
 
39
- - Enhance the capabilities of your agents, making them automatically discoverable by other A2A/ACP compatible systems
104
+ - Enhance the capabilities of your agents, making them automatically discoverable by other A2A compatible systems
40
105
  - Expose standardized agent capabilities through agent cards
41
106
  - Monitor agent health and status through dedicated endpoints
42
107
  - Connect your agents to the growing ecosystem of A2A-compatible tools
43
108
 
44
109
  Beyond A2A interoperability, SUPERVAIZER provides a robust API for agent registration, job control, event handling, telemetry, and more, making it a crucial component for building and managing AI agent systems.
45
110
 
111
+ SUPERVAIZER is the recommended controller to integrate AI Agents into the [supervaize](https://supervaize.com) plateform.
112
+
46
113
  ## Quick Start
47
114
 
48
115
  Kickstart a **Python** agent with the **Supervaizer Controller** so it's discoverable and operable by Supervaize.
49
116
 
117
+ See full our full [documentation](https://doc.supervaize.com/docs/category/supervaizer-controller)
118
+
50
119
  ### What we'll do
51
120
 
52
121
  1. **Install Supervaizer** in that project
@@ -107,28 +176,82 @@ Once the server is running, you'll have:
107
176
  - **A2A discovery**: `/.well-known/agents.json`
108
177
  - **ACP discovery**: `/agents`
109
178
 
179
+ ### 6. Optional parameters
180
+
181
+ Configure retry behavior for HTTP requests to the Supervaize API:
182
+
183
+ - **`SUPERVAIZE_HTTP_MAX_RETRIES`**: Number of retry attempts for failed HTTP requests (default: `2`). The client will automatically retry requests that fail with status codes 429, 500, 502, 503, or 504.
184
+
185
+ ```bash
186
+ export SUPERVAIZE_MAX_HTTP_RETRIES=3 # Will attempt up to 4 times total (1 original + 3 retries)
187
+ ```
188
+
110
189
  ### What's next?
111
190
 
112
191
  - Add more **custom methods** (`chat`, `custom`) to extend control
113
- - Turn on **A2A / ACP** discovery for interoperability
192
+ - Turn on **A2A** discovery for interoperability
114
193
  - Hook your controller into Supervaize to **monitor, audit, and operate** the agent
115
194
 
116
- For detailed instructions on customizing your controller, see the [Controller Setup Guide](https://doc.supervaize.com/docs/supervaizer-controller/controller-setup-guide).
195
+ For detailed instructions on customizing your controller, see the [Controller Setup Guide](https://doc.supervaize.com/docs/supervaizer-controller/controller-setup)
117
196
 
118
197
  ## Features
119
198
 
120
199
  - **Agent Management**: Register, update, and control agents
121
200
  - **Job Control**: Create, track, and manage jobs
122
201
  - **Event Handling**: Process and respond to system events
123
- - Protocol support
124
- - **A2A Protocol **: Integration with Google's Agent-to-Agent protocol for interoperability
125
- - **ACP Protocol **: Integration with IBM/BeeAI's Agent Communication Protocol for standardized agent discovery and interaction
202
+ - **🚀 Cloud Deployment**: Automated deployment to GCP Cloud Run, AWS App Runner, and DigitalOcean App Platform
203
+ - **A2A Protocol Support**: Full integration with the Agent-to-Agent protocol for standardized agent discovery and interaction
126
204
  - **Server Communication**: Interact with SUPERVAIZE servers (see [supervaize.com](https://www.supervaize.com) for more info)
127
205
  - **Web Admin Interface**: Easy to use web-based admin dashboard for managing jobs, cases, and system monitoring
128
206
 
129
207
  ## Protocol Support
130
208
 
131
- SUPERVAIZER provides comprehensive support for multiple agent communication protocols. See [Protocol Documentation](docs/PROTOCOLS.md) for complete details.
209
+ SUPERVAIZER provides comprehensive support for the A2A agent communication protocol. See [Protocol Documentation](docs/PROTOCOLS.md) for complete details.
210
+
211
+ ## Cloud Deployment
212
+
213
+ SUPERVAIZER includes a powerful deployment CLI that automates the entire process of deploying your agents to production cloud platforms.
214
+
215
+ ### Quick Start
216
+
217
+ ```bash
218
+ # Install with deployment dependencies
219
+ pip install supervaizer[deploy]
220
+
221
+ # Test locally with Docker
222
+ supervaizer deploy local --generate-api-key --generate-rsa
223
+
224
+ # Deploy to Google Cloud Run
225
+ supervaizer deploy up --platform cloud-run --region us-central1
226
+
227
+ # Deploy to AWS App Runner
228
+ supervaizer deploy up --platform aws-app-runner --region us-east-1
229
+
230
+ # Deploy to DigitalOcean App Platform
231
+ supervaizer deploy up --platform do-app-platform --region nyc
232
+ ```
233
+
234
+ ### Deployment Commands
235
+
236
+ - **`supervaizer deploy plan`** - Preview deployment actions before applying
237
+ - **`supervaizer deploy up`** - Deploy to cloud platform with automated build, push, and verification
238
+ - **`supervaizer deploy down`** - Tear down deployment and clean up resources
239
+ - **`supervaizer deploy status`** - Check deployment status and health
240
+ - **`supervaizer deploy local`** - Local Docker testing with docker-compose
241
+ - **`supervaizer deploy clean`** - Clean up deployment artifacts and state
242
+
243
+ ### Features
244
+
245
+ - ✅ **Automated Docker Workflow**: Build → Push → Deploy → Verify
246
+ - ✅ **Secret Management**: Secure handling of API keys and RSA keys
247
+ - ✅ **Health Verification**: Automatic health checks at `/.well-known/health`
248
+ - ✅ **Idempotent Deployments**: Safe create/update operations with rollback on failure
249
+ - ✅ **Local Testing**: Full Docker Compose environment for pre-deployment testing
250
+
251
+ ### Documentation
252
+
253
+ - [RFC-001: Cloud Deployment CLI](docs/rfc/001-cloud-deployment-cli.md) - Complete specification
254
+ - [Local Testing Guide](docs/LOCAL_TESTING.md) - Docker testing documentation
132
255
 
133
256
  ## Using the CLI
134
257
 
@@ -1,67 +1,15 @@
1
- Metadata-Version: 2.4
2
- Name: supervaizer
3
- Version: 0.9.7
4
- Summary: Controller system for Supervaize
5
- Project-URL: Homepage, https://supervaize.com
6
- Project-URL: Repository, https://github.com/supervaize/supervaizer
7
- Project-URL: Documentation, https://doc.supervaize.com
8
- Author-email: Alain Prasquier - Supervaize <alain@supervaize.com>
9
- License-Expression: MPL-2.0
10
- License-File: LICENSE.md
11
- Keywords: AI,agent,agentic,controller,supervaize,workflow
12
- Classifier: Development Status :: 4 - Beta
13
- Classifier: Intended Audience :: Developers
14
- Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
15
- Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.12
17
- Requires-Python: >=3.12
18
- Requires-Dist: art>=6.5
19
- Requires-Dist: cryptography>=45.0.6
20
- Requires-Dist: demjson3>=3.0.6
21
- Requires-Dist: deprecated>=1.2.18
22
- Requires-Dist: fastapi>=0.116.1
23
- Requires-Dist: httpx>=0.28.1
24
- Requires-Dist: jinja2>=3.1.6
25
- Requires-Dist: loguru>=0.7.3
26
- Requires-Dist: orjson>=3.11.1
27
- Requires-Dist: psutil>=6.1.0
28
- Requires-Dist: pydantic>=2.11.7
29
- Requires-Dist: pymongo>=4.14.0
30
- Requires-Dist: python-slugify>=8.0.4
31
- Requires-Dist: rich>=14.1.0
32
- Requires-Dist: shortuuid>=1.0.13
33
- Requires-Dist: sse-starlette>=3.0.2
34
- Requires-Dist: tinydb>=4.8.1
35
- Requires-Dist: typer>=0.16
36
- Requires-Dist: uvicorn>=0.35.0
37
- Provides-Extra: dev
38
- Requires-Dist: hatch>=1.14.0; extra == 'dev'
39
- Requires-Dist: jsonschema>=4.25.0; extra == 'dev'
40
- Requires-Dist: mypy>=1.17.1; extra == 'dev'
41
- Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
42
- Requires-Dist: pytest-asyncio>=1.1.0; extra == 'dev'
43
- Requires-Dist: pytest-cov>=6.2.1; extra == 'dev'
44
- Requires-Dist: pytest-mock>=3.14.1; extra == 'dev'
45
- Requires-Dist: pytest-sugar>=1.0.0; extra == 'dev'
46
- Requires-Dist: pytest>=8.4.1; extra == 'dev'
47
- Requires-Dist: respx>=0.22.0; extra == 'dev'
48
- Requires-Dist: ruff>=0.12.8; extra == 'dev'
49
- Requires-Dist: types-deprecated>=1.2.15.20250304; extra == 'dev'
50
- Requires-Dist: types-python-slugify>=8.0.2.20240310; extra == 'dev'
51
- Description-Content-Type: text/markdown
52
-
53
1
  # SUPERVAIZER
54
2
 
55
- [[Operate AI Agents with confidence]]
3
+ [Operate AI Agents with confidence]
56
4
 
57
- A Python toolkit for building, managing, and connecting AI agents with full [Agent-to-Agent (A2A)](https://google.github.io/A2A/#/) and [Agent Communication Protocol (ACP)](https://github.com/i-am-bee/ACP) support.
5
+ A Python toolkit for building, managing, and connecting AI agents with full [Agent-to-Agent (A2A)](https://a2a-protocol.org/) protocol support.
58
6
 
59
7
  [![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue.svg)](https://www.python.org/downloads/)
60
- [![Package Version](https://img.shields.io/badge/Supervaizer-0.9.6-yellow.svg)](https://github.com/supervaize/supervaizer)
61
- [![A2A Protocol](https://img.shields.io/badge/A2A-Protocol-orange.svg)](https://google.github.io/A2A/)
62
- [![ACP Protocol](https://img.shields.io/badge/ACP-Protocol-purple.svg)](https://github.com/i-am-bee/ACP)
8
+ [![A2A Protocol](https://img.shields.io/badge/A2A-Protocol-orange.svg)](https://a2a-protocol.org/)
63
9
  [![Test Coverage](https://img.shields.io/badge/Coverage-81%25-brightgreen.svg)](https://github.com/supervaize/supervaizer)
64
10
 
11
+ > **⚠️ Beta Disclaimer**: SUPERVAIZER is currently in beta mode. Not everything works as expected yet. Please report any issues you encounter.
12
+
65
13
  - [SUPERVAIZER](#supervaizer)
66
14
  - [Description](#description)
67
15
  - [Quick Start](#quick-start)
@@ -70,35 +18,45 @@ A Python toolkit for building, managing, and connecting AI agents with full [Age
70
18
  - [3. Scaffold the controller](#3-scaffold-the-controller)
71
19
  - [(Optional) 4. Configure your Supervaize account \& environment](#optional-4-configure-your-supervaize-account--environment)
72
20
  - [5. Start the server 🚀](#5-start-the-server-)
21
+ - [6. Optional parameters](#6-optional-parameters)
73
22
  - [What's next?](#whats-next)
74
23
  - [Features](#features)
75
24
  - [Protocol Support](#protocol-support)
25
+ - [Cloud Deployment](#cloud-deployment)
26
+ - [Quick Start](#quick-start-1)
27
+ - [Deployment Commands](#deployment-commands)
28
+ - [Features](#features-1)
29
+ - [Documentation](#documentation)
76
30
  - [Using the CLI](#using-the-cli)
77
31
  - [API Documentation \& User Interfaces](#api-documentation--user-interfaces)
78
32
  - [Admin Interface (`/admin`)](#admin-interface-admin)
79
- - [Quick Start](#quick-start-1)
33
+ - [Quick Start](#quick-start-2)
80
34
  - [Calculating costs](#calculating-costs)
81
- - [Documentation](#documentation)
35
+ - [Documentation](#documentation-1)
82
36
  - [Contributing](#contributing)
83
37
  - [License](#license)
84
38
 
85
39
  ## Description
86
40
 
87
- SUPERVAIZER is a toolkit built for the age of AI interoperability. At its core, it implements Google's Agent-to-Agent (A2A) protocol and IBM's Agent Communication Protocol (ACP), enabling seamless discovery and interaction between agents across different systems and platforms.
41
+ SUPERVAIZER is a toolkit built for the age of AI interoperability. At its core, it implements the Agent-to-Agent (A2A) protocol, enabling seamless discovery and interaction between agents across different systems and platforms.
88
42
 
89
- With comprehensive support for the A2A/ACP protocols, specification, SUPERVAIZER allows you to:
43
+ With comprehensive support for the A2A protocol specification, SUPERVAIZER allows you to:
90
44
 
91
- - Enhance the capabilities of your agents, making them automatically discoverable by other A2A/ACP compatible systems
45
+ - Enhance the capabilities of your agents, making them automatically discoverable by other A2A compatible systems
92
46
  - Expose standardized agent capabilities through agent cards
93
47
  - Monitor agent health and status through dedicated endpoints
94
48
  - Connect your agents to the growing ecosystem of A2A-compatible tools
95
49
 
96
50
  Beyond A2A interoperability, SUPERVAIZER provides a robust API for agent registration, job control, event handling, telemetry, and more, making it a crucial component for building and managing AI agent systems.
97
51
 
52
+ SUPERVAIZER is the recommended controller to integrate AI Agents into the [supervaize](https://supervaize.com) plateform.
53
+
98
54
  ## Quick Start
99
55
 
100
56
  Kickstart a **Python** agent with the **Supervaizer Controller** so it's discoverable and operable by Supervaize.
101
57
 
58
+ See full our full [documentation](https://doc.supervaize.com/docs/category/supervaizer-controller)
59
+
102
60
  ### What we'll do
103
61
 
104
62
  1. **Install Supervaizer** in that project
@@ -159,28 +117,82 @@ Once the server is running, you'll have:
159
117
  - **A2A discovery**: `/.well-known/agents.json`
160
118
  - **ACP discovery**: `/agents`
161
119
 
120
+ ### 6. Optional parameters
121
+
122
+ Configure retry behavior for HTTP requests to the Supervaize API:
123
+
124
+ - **`SUPERVAIZE_HTTP_MAX_RETRIES`**: Number of retry attempts for failed HTTP requests (default: `2`). The client will automatically retry requests that fail with status codes 429, 500, 502, 503, or 504.
125
+
126
+ ```bash
127
+ export SUPERVAIZE_MAX_HTTP_RETRIES=3 # Will attempt up to 4 times total (1 original + 3 retries)
128
+ ```
129
+
162
130
  ### What's next?
163
131
 
164
132
  - Add more **custom methods** (`chat`, `custom`) to extend control
165
- - Turn on **A2A / ACP** discovery for interoperability
133
+ - Turn on **A2A** discovery for interoperability
166
134
  - Hook your controller into Supervaize to **monitor, audit, and operate** the agent
167
135
 
168
- For detailed instructions on customizing your controller, see the [Controller Setup Guide](https://doc.supervaize.com/docs/supervaizer-controller/controller-setup-guide).
136
+ For detailed instructions on customizing your controller, see the [Controller Setup Guide](https://doc.supervaize.com/docs/supervaizer-controller/controller-setup)
169
137
 
170
138
  ## Features
171
139
 
172
140
  - **Agent Management**: Register, update, and control agents
173
141
  - **Job Control**: Create, track, and manage jobs
174
142
  - **Event Handling**: Process and respond to system events
175
- - Protocol support
176
- - **A2A Protocol **: Integration with Google's Agent-to-Agent protocol for interoperability
177
- - **ACP Protocol **: Integration with IBM/BeeAI's Agent Communication Protocol for standardized agent discovery and interaction
143
+ - **🚀 Cloud Deployment**: Automated deployment to GCP Cloud Run, AWS App Runner, and DigitalOcean App Platform
144
+ - **A2A Protocol Support**: Full integration with the Agent-to-Agent protocol for standardized agent discovery and interaction
178
145
  - **Server Communication**: Interact with SUPERVAIZE servers (see [supervaize.com](https://www.supervaize.com) for more info)
179
146
  - **Web Admin Interface**: Easy to use web-based admin dashboard for managing jobs, cases, and system monitoring
180
147
 
181
148
  ## Protocol Support
182
149
 
183
- SUPERVAIZER provides comprehensive support for multiple agent communication protocols. See [Protocol Documentation](docs/PROTOCOLS.md) for complete details.
150
+ SUPERVAIZER provides comprehensive support for the A2A agent communication protocol. See [Protocol Documentation](docs/PROTOCOLS.md) for complete details.
151
+
152
+ ## Cloud Deployment
153
+
154
+ SUPERVAIZER includes a powerful deployment CLI that automates the entire process of deploying your agents to production cloud platforms.
155
+
156
+ ### Quick Start
157
+
158
+ ```bash
159
+ # Install with deployment dependencies
160
+ pip install supervaizer[deploy]
161
+
162
+ # Test locally with Docker
163
+ supervaizer deploy local --generate-api-key --generate-rsa
164
+
165
+ # Deploy to Google Cloud Run
166
+ supervaizer deploy up --platform cloud-run --region us-central1
167
+
168
+ # Deploy to AWS App Runner
169
+ supervaizer deploy up --platform aws-app-runner --region us-east-1
170
+
171
+ # Deploy to DigitalOcean App Platform
172
+ supervaizer deploy up --platform do-app-platform --region nyc
173
+ ```
174
+
175
+ ### Deployment Commands
176
+
177
+ - **`supervaizer deploy plan`** - Preview deployment actions before applying
178
+ - **`supervaizer deploy up`** - Deploy to cloud platform with automated build, push, and verification
179
+ - **`supervaizer deploy down`** - Tear down deployment and clean up resources
180
+ - **`supervaizer deploy status`** - Check deployment status and health
181
+ - **`supervaizer deploy local`** - Local Docker testing with docker-compose
182
+ - **`supervaizer deploy clean`** - Clean up deployment artifacts and state
183
+
184
+ ### Features
185
+
186
+ - ✅ **Automated Docker Workflow**: Build → Push → Deploy → Verify
187
+ - ✅ **Secret Management**: Secure handling of API keys and RSA keys
188
+ - ✅ **Health Verification**: Automatic health checks at `/.well-known/health`
189
+ - ✅ **Idempotent Deployments**: Safe create/update operations with rollback on failure
190
+ - ✅ **Local Testing**: Full Docker Compose environment for pre-deployment testing
191
+
192
+ ### Documentation
193
+
194
+ - [RFC-001: Cloud Deployment CLI](docs/rfc/001-cloud-deployment-cli.md) - Complete specification
195
+ - [Local Testing Guide](docs/LOCAL_TESTING.md) - Docker testing documentation
184
196
 
185
197
  ## Using the CLI
186
198
 
@@ -8,24 +8,24 @@ authors = [
8
8
  ]
9
9
  dependencies = [
10
10
  "art>=6.5",
11
- "cryptography>=45.0.6",
11
+ "cryptography>=46.0.2",
12
12
  "demjson3>=3.0.6",
13
13
  "deprecated>=1.2.18",
14
- "fastapi>=0.116.1",
14
+ "fastapi>=0.118.0",
15
15
  "httpx>=0.28.1",
16
16
  "jinja2>=3.1.6",
17
17
  "loguru>=0.7.3",
18
- "orjson>=3.11.1",
19
- "psutil>=6.1.0",
20
- "pydantic>=2.11.7",
21
- "pymongo>=4.14.0",
18
+ "orjson>=3.11.3",
19
+ "packaging>=24.0",
20
+ "pydantic>=2.12.0",
22
21
  "python-slugify>=8.0.4",
22
+ "pyyaml>=6.0.3",
23
23
  "rich>=14.1.0",
24
24
  "shortuuid>=1.0.13",
25
25
  "sse-starlette>=3.0.2",
26
26
  "tinydb>=4.8.1",
27
- "typer>=0.16",
28
- "uvicorn>=0.35.0",
27
+ "typer>=0.19.2",
28
+ "uvicorn>=0.36.0",
29
29
  ]
30
30
  license = "MPL-2.0"
31
31
  classifiers = [
@@ -47,18 +47,26 @@ Documentation = "https://doc.supervaize.com"
47
47
  supervaizer = "supervaizer.cli:app"
48
48
 
49
49
  [project.optional-dependencies]
50
+ deploy = [
51
+ "boto3>=1.34.0",
52
+ "docker>=7.0.0",
53
+ "google-cloud-artifact-registry>=1.8.0",
54
+ "google-cloud-run>=0.10.0",
55
+ "google-cloud-secret-manager>=2.18.0",
56
+ "psutil>=7.1.0",
57
+ ]
50
58
  dev = [
51
- "hatch>=1.14.0",
52
- "jsonschema>=4.25.0",
53
- "mypy>=1.17.1",
59
+ "hatch>=1.14.2",
60
+ "jsonschema>=4.25.1",
61
+ "mypy>=1.18.2",
54
62
  "pre-commit>=3.7.0",
55
- "pytest-asyncio>=1.1.0",
56
- "pytest-cov>=6.2.1",
57
- "pytest-mock>=3.14.1",
58
- "pytest-sugar>=1.0.0",
59
- "pytest>=8.4.1",
63
+ "pytest-asyncio>=1.2.0",
64
+ "pytest-cov>=7.0.0",
65
+ "pytest-mock>=3.15.1",
66
+ "pytest-sugar>=1.1.1",
67
+ "pytest>=8.4.2",
60
68
  "respx>=0.22.0",
61
- "ruff>=0.12.8",
69
+ "ruff>=0.13.3",
62
70
  "types-deprecated>=1.2.15.20250304",
63
71
  "types-python-slugify>=8.0.2.20240310",
64
72
 
@@ -70,7 +78,7 @@ markers = [
70
78
  "db: calls to the database",
71
79
  "current: test under development",
72
80
  ]
73
- addopts = "--cov=supervaizer --cov-report=term --cov-report=html"
81
+ #addopts = "--cov=supervaizer --cov-report=term --cov-report=html"
74
82
  asyncio_default_fixture_loop_scope = "function"
75
83
  testpaths = ["tests"]
76
84
  pythonpath = ["src"]
@@ -14,7 +14,14 @@ from supervaizer.agent import (
14
14
  AgentMethodParams,
15
15
  AgentMethods,
16
16
  )
17
- from supervaizer.case import Case, CaseNodeUpdate, CaseNoteType, Cases
17
+ from supervaizer.case import (
18
+ Case,
19
+ CaseNodeUpdate,
20
+ CaseNodeType,
21
+ Cases,
22
+ CaseNode,
23
+ CaseNodes,
24
+ )
18
25
  from supervaizer.common import ApiError, ApiResult, ApiSuccess
19
26
  from supervaizer.event import (
20
27
  AgentRegisterEvent,
@@ -51,8 +58,10 @@ __all__ = [
51
58
  "ApiSuccess",
52
59
  "Case",
53
60
  "CaseNodeUpdate",
54
- "CaseNoteType",
61
+ "CaseNodeType",
55
62
  "Cases",
63
+ "CaseNode",
64
+ "CaseNodes",
56
65
  "CaseStartEvent",
57
66
  "CaseUpdateEvent",
58
67
  "create_error_response",
@@ -5,6 +5,6 @@
5
5
  # https://mozilla.org/MPL/2.0/.
6
6
 
7
7
 
8
- VERSION = "0.9.7"
8
+ VERSION = "0.10.0"
9
9
  API_VERSION = "v1"
10
10
  TELEMETRY_VERSION = "v1"
@@ -20,6 +20,7 @@ if TYPE_CHECKING:
20
20
  from supervaizer.event import Event
21
21
  from supervaizer.job import Job
22
22
  from supervaizer.server import Server
23
+ from supervaizer.common import log
23
24
 
24
25
 
25
26
  class AccountAbstract(SvBaseModel):
@@ -268,6 +269,9 @@ class Account(AccountAbstract):
268
269
 
269
270
  def send_update_case(self, case: "Case", update: "CaseNodeUpdate") -> ApiResult:
270
271
  # Import here to avoid circular imports
272
+ log.debug(f"[send_update_case] CaseRef {case} with update {update}")
273
+ log.debug(f"[send_update_case] {type(case)}")
274
+ log.debug(f"[send_update_case] {type(update)}")
271
275
  from supervaizer.event import CaseUpdateEvent
272
276
 
273
277
  event = CaseUpdateEvent(case=case, update=update, account=self)
@@ -9,6 +9,7 @@
9
9
  # https://mozilla.org/MPL/2.0/.
10
10
 
11
11
  import logging
12
+ import os
12
13
  from typing import TYPE_CHECKING, Union
13
14
 
14
15
  import httpx
@@ -19,6 +20,11 @@ logger = logging.getLogger("httpx")
19
20
  # Enable httpx debug logging (optional - uncomment for transport-level debugging)
20
21
  logger.setLevel(logging.DEBUG)
21
22
 
23
+ _httpx_transport = httpx.HTTPTransport(
24
+ retries=int(os.getenv("SUPERVAIZE_HTTP_MAX_RETRIES", 2))
25
+ )
26
+ _httpx_client = httpx.Client(transport=_httpx_transport)
27
+
22
28
  if TYPE_CHECKING:
23
29
  from supervaizer.account import Account
24
30
  from supervaizer.agent import Agent
@@ -60,7 +66,7 @@ def send_event(
60
66
  curl_cmd = f"curl -X 'GET' '{account.url_event}' {curl_headers}"
61
67
 
62
68
  try:
63
- response = httpx.post(account.url_event, headers=headers, json=payload)
69
+ response = _httpx_client.post(account.url_event, headers=headers, json=payload)
64
70
 
65
71
  # Log response details before raising for status
66
72