supervaizer 0.9.8__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.
- {supervaizer-0.9.8 → supervaizer-0.10.0}/.gitignore +2 -0
- supervaizer-0.9.8/README.md → supervaizer-0.10.0/PKG-INFO +139 -16
- supervaizer-0.9.8/PKG-INFO → supervaizer-0.10.0/README.md +80 -68
- {supervaizer-0.9.8 → supervaizer-0.10.0}/pyproject.toml +25 -17
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/__init__.py +11 -2
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/__version__.py +1 -1
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/account.py +4 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/account_service.py +7 -1
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/routes.py +24 -8
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agents.html +74 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agents_grid.html +5 -3
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/navigation.html +11 -1
- supervaizer-0.10.0/src/supervaizer/admin/templates/supervaize_instructions.html +212 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/agent.py +28 -6
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/case.py +46 -14
- supervaizer-0.10.0/src/supervaizer/cli.py +386 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/common.py +45 -4
- supervaizer-0.10.0/src/supervaizer/deploy/__init__.py +16 -0
- supervaizer-0.10.0/src/supervaizer/deploy/cli.py +296 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/__init__.py +9 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/clean.py +294 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/down.py +119 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/local.py +460 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/plan.py +167 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/status.py +169 -0
- supervaizer-0.10.0/src/supervaizer/deploy/commands/up.py +281 -0
- supervaizer-0.10.0/src/supervaizer/deploy/docker.py +370 -0
- supervaizer-0.10.0/src/supervaizer/deploy/driver_factory.py +42 -0
- supervaizer-0.10.0/src/supervaizer/deploy/drivers/__init__.py +39 -0
- supervaizer-0.10.0/src/supervaizer/deploy/drivers/aws_app_runner.py +607 -0
- supervaizer-0.10.0/src/supervaizer/deploy/drivers/base.py +196 -0
- supervaizer-0.10.0/src/supervaizer/deploy/drivers/cloud_run.py +570 -0
- supervaizer-0.10.0/src/supervaizer/deploy/drivers/do_app_platform.py +504 -0
- supervaizer-0.10.0/src/supervaizer/deploy/health.py +404 -0
- supervaizer-0.10.0/src/supervaizer/deploy/state.py +210 -0
- supervaizer-0.10.0/src/supervaizer/deploy/templates/Dockerfile.template +44 -0
- supervaizer-0.10.0/src/supervaizer/deploy/templates/debug_env.py +69 -0
- supervaizer-0.10.0/src/supervaizer/deploy/templates/docker-compose.yml.template +37 -0
- supervaizer-0.10.0/src/supervaizer/deploy/templates/dockerignore.template +66 -0
- supervaizer-0.10.0/src/supervaizer/deploy/templates/entrypoint.sh +20 -0
- supervaizer-0.10.0/src/supervaizer/deploy/utils.py +41 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/examples/controller_template.py +1 -1
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/job.py +18 -5
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/job_service.py +6 -5
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/parameter.py +13 -1
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/protocol/__init__.py +2 -2
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/routes.py +1 -1
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/routes.py +141 -17
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/server.py +5 -11
- supervaizer-0.10.0/src/supervaizer/utils/__init__.py +16 -0
- supervaizer-0.10.0/src/supervaizer/utils/version_check.py +56 -0
- supervaizer-0.9.8/src/supervaizer/cli.py +0 -146
- supervaizer-0.9.8/src/supervaizer/protocol/acp/__init__.py +0 -21
- supervaizer-0.9.8/src/supervaizer/protocol/acp/model.py +0 -198
- supervaizer-0.9.8/src/supervaizer/protocol/acp/routes.py +0 -74
- {supervaizer-0.9.8 → supervaizer-0.10.0}/LICENSE.md +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/static/js/job-start-form.js +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/agent_detail.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/base.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/case_detail.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/cases_list.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/cases_table.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/console.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/dashboard.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/job_detail.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/job_start_test.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/jobs_list.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/jobs_table.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/recent_activity.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/server.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/admin/templates/server_status_cards.html +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/event.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/instructions.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/lifecycle.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/__init__.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/protocol/a2a/model.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/py.typed +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/server_utils.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/storage.py +0 -0
- {supervaizer-0.9.8 → supervaizer-0.10.0}/src/supervaizer/telemetry.py +0 -0
|
@@ -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
|
-
[
|
|
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://
|
|
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
|
[](https://www.python.org/downloads/)
|
|
8
|
-
[](https://google.github.io/A2A/)
|
|
10
|
-
[](https://github.com/i-am-bee/ACP)
|
|
67
|
+
[](https://a2a-protocol.org/)
|
|
11
68
|
[](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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
124
|
-
|
|
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
|
|
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.8
|
|
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
|
-
[
|
|
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://
|
|
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
|
[](https://www.python.org/downloads/)
|
|
60
|
-
[](https://google.github.io/A2A/)
|
|
62
|
-
[](https://github.com/i-am-bee/ACP)
|
|
8
|
+
[](https://a2a-protocol.org/)
|
|
63
9
|
[](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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
176
|
-
|
|
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
|
|
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>=
|
|
11
|
+
"cryptography>=46.0.2",
|
|
12
12
|
"demjson3>=3.0.6",
|
|
13
13
|
"deprecated>=1.2.18",
|
|
14
|
-
"fastapi>=0.
|
|
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.
|
|
19
|
-
"
|
|
20
|
-
"pydantic>=2.
|
|
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.
|
|
28
|
-
"uvicorn>=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.
|
|
52
|
-
"jsonschema>=4.25.
|
|
53
|
-
"mypy>=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.
|
|
56
|
-
"pytest-cov>=
|
|
57
|
-
"pytest-mock>=3.
|
|
58
|
-
"pytest-sugar>=1.
|
|
59
|
-
"pytest>=8.4.
|
|
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.
|
|
69
|
+
"ruff>=0.13.3",
|
|
62
70
|
"types-deprecated>=1.2.15.20250304",
|
|
63
71
|
"types-python-slugify>=8.0.2.20240310",
|
|
64
72
|
|
|
@@ -14,7 +14,14 @@ from supervaizer.agent import (
|
|
|
14
14
|
AgentMethodParams,
|
|
15
15
|
AgentMethods,
|
|
16
16
|
)
|
|
17
|
-
from supervaizer.case import
|
|
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
|
-
"
|
|
61
|
+
"CaseNodeType",
|
|
55
62
|
"Cases",
|
|
63
|
+
"CaseNode",
|
|
64
|
+
"CaseNodes",
|
|
56
65
|
"CaseStartEvent",
|
|
57
66
|
"CaseUpdateEvent",
|
|
58
67
|
"create_error_response",
|
|
@@ -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 =
|
|
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
|
|