supervaizer 0.10.10__py3-none-any.whl → 0.10.11__py3-none-any.whl
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/__version__.py +1 -1
- supervaizer/account.py +10 -2
- supervaizer/account_service.py +13 -3
- supervaizer/deploy/templates/index.html +57 -0
- supervaizer/server.py +8 -2
- {supervaizer-0.10.10.dist-info → supervaizer-0.10.11.dist-info}/METADATA +1 -1
- {supervaizer-0.10.10.dist-info → supervaizer-0.10.11.dist-info}/RECORD +10 -9
- {supervaizer-0.10.10.dist-info → supervaizer-0.10.11.dist-info}/WHEEL +0 -0
- {supervaizer-0.10.10.dist-info → supervaizer-0.10.11.dist-info}/entry_points.txt +0 -0
- {supervaizer-0.10.10.dist-info → supervaizer-0.10.11.dist-info}/licenses/LICENSE.md +0 -0
supervaizer/__version__.py
CHANGED
supervaizer/account.py
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
from typing import TYPE_CHECKING, Any, ClassVar, Dict, Optional, Union
|
|
9
9
|
|
|
10
10
|
import httpx
|
|
11
|
-
from pydantic import Field
|
|
11
|
+
from pydantic import Field, field_validator
|
|
12
12
|
|
|
13
13
|
from supervaizer.__version__ import VERSION
|
|
14
14
|
from supervaizer.common import ApiError, ApiResult, ApiSuccess, SvBaseModel
|
|
@@ -55,6 +55,14 @@ class AccountAbstract(SvBaseModel):
|
|
|
55
55
|
description="The URL of the Supervaize SaaS API provided by Supervaize.com"
|
|
56
56
|
)
|
|
57
57
|
|
|
58
|
+
@field_validator("workspace_id", "api_key", "api_url", mode="before")
|
|
59
|
+
@classmethod
|
|
60
|
+
def strip_whitespace(cls, v: Any) -> Any:
|
|
61
|
+
"""Strip leading/trailing whitespace (e.g. newlines from env vars)."""
|
|
62
|
+
if isinstance(v, str):
|
|
63
|
+
return v.strip()
|
|
64
|
+
return v
|
|
65
|
+
|
|
58
66
|
model_config = {
|
|
59
67
|
"reference_group": "Core",
|
|
60
68
|
"json_schema_extra": {
|
|
@@ -121,7 +129,7 @@ class Account(AccountAbstract):
|
|
|
121
129
|
"""URL for the Supervaize Control API.
|
|
122
130
|
Tested in tests/test_account.py
|
|
123
131
|
"""
|
|
124
|
-
return f"{self.api_url_w_v1}/ctrl-events/"
|
|
132
|
+
return f"{self.api_url_w_v1}/ctrl-events/".strip()
|
|
125
133
|
|
|
126
134
|
def get_url(self, pattern_name: str, **kwargs: Any) -> str:
|
|
127
135
|
"""Generate a URL using the predefined patterns.
|
supervaizer/account_service.py
CHANGED
|
@@ -59,14 +59,17 @@ def send_event(
|
|
|
59
59
|
|
|
60
60
|
headers = account.api_headers
|
|
61
61
|
payload = event.payload
|
|
62
|
+
url_event = (
|
|
63
|
+
account.url_event.strip()
|
|
64
|
+
) # defensive: env vars often have trailing newline
|
|
62
65
|
|
|
63
66
|
# Generate curl equivalent for debugging
|
|
64
67
|
|
|
65
68
|
curl_headers = " ".join([f'-H "{k}: {v}"' for k, v in headers.items()])
|
|
66
|
-
curl_cmd = f"curl -X 'GET' '{
|
|
69
|
+
curl_cmd = f"curl -X 'GET' '{url_event}' {curl_headers}"
|
|
67
70
|
|
|
68
71
|
try:
|
|
69
|
-
response = _httpx_client.post(
|
|
72
|
+
response = _httpx_client.post(url_event, headers=headers, json=payload)
|
|
70
73
|
|
|
71
74
|
# Log response details before raising for status
|
|
72
75
|
|
|
@@ -76,6 +79,13 @@ def send_event(
|
|
|
76
79
|
)
|
|
77
80
|
|
|
78
81
|
log.success(result.log_message)
|
|
82
|
+
except (httpx.ConnectError, httpx.ConnectTimeout) as e:
|
|
83
|
+
log.error(
|
|
84
|
+
f"Supervaize controller is not available at {url_event}. "
|
|
85
|
+
"Connection refused or timed out. Is the controller server running?"
|
|
86
|
+
)
|
|
87
|
+
log.error(f"❌ Error sending event {event.type.name}: {e!s}")
|
|
88
|
+
raise e
|
|
79
89
|
except httpx.HTTPError as e:
|
|
80
90
|
# Enhanced error logging
|
|
81
91
|
log.error("[Send event] HTTP Error occurred")
|
|
@@ -83,7 +93,7 @@ def send_event(
|
|
|
83
93
|
|
|
84
94
|
error_result = ApiError(
|
|
85
95
|
message=f"Error sending event {event.type.name}",
|
|
86
|
-
url=
|
|
96
|
+
url=url_event,
|
|
87
97
|
payload=event.payload,
|
|
88
98
|
exception=e,
|
|
89
99
|
)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Supervaizer API</title>
|
|
7
|
+
<!-- Tailwind CSS -->
|
|
8
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
9
|
+
</head>
|
|
10
|
+
<body class="bg-gray-50 min-h-screen">
|
|
11
|
+
<main class="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8">
|
|
12
|
+
<div class="px-4 py-6 sm:px-0">
|
|
13
|
+
<h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">
|
|
14
|
+
Supervaizer API
|
|
15
|
+
</h1>
|
|
16
|
+
<p class="mt-2 text-sm text-gray-500">
|
|
17
|
+
Controller version {{ version }} · API version {{ api_version }}
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<div class="mt-8">
|
|
21
|
+
<h2 class="text-lg font-medium text-gray-900 mb-4">Links</h2>
|
|
22
|
+
<ul class="space-y-2">
|
|
23
|
+
<li>
|
|
24
|
+
<a href="/docs" class="text-blue-600 hover:text-blue-800 font-medium">
|
|
25
|
+
Swagger UI
|
|
26
|
+
</a>
|
|
27
|
+
</li>
|
|
28
|
+
<li>
|
|
29
|
+
<a href="/redoc" class="text-blue-600 hover:text-blue-800 font-medium">
|
|
30
|
+
ReDoc
|
|
31
|
+
</a>
|
|
32
|
+
</li>
|
|
33
|
+
<li>
|
|
34
|
+
<a href="/openapi.json" class="text-blue-600 hover:text-blue-800 font-medium">
|
|
35
|
+
OpenAPI
|
|
36
|
+
</a>
|
|
37
|
+
</li>
|
|
38
|
+
{% if show_admin %}
|
|
39
|
+
<li>
|
|
40
|
+
<a href="/admin" class="text-blue-600 hover:text-blue-800 font-medium">
|
|
41
|
+
Admin
|
|
42
|
+
</a>
|
|
43
|
+
</li>
|
|
44
|
+
{% endif %}
|
|
45
|
+
<li>
|
|
46
|
+
<a href="/console" class="text-blue-600 hover:text-blue-800 font-medium">
|
|
47
|
+
Console
|
|
48
|
+
</a>
|
|
49
|
+
</li>
|
|
50
|
+
<li> BASE: {{ base }}
|
|
51
|
+
</li>
|
|
52
|
+
</ul>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</main>
|
|
56
|
+
</body>
|
|
57
|
+
</html>
|
supervaizer/server.py
CHANGED
|
@@ -46,7 +46,11 @@ from supervaizer.routes import (
|
|
|
46
46
|
create_utils_routes,
|
|
47
47
|
get_server,
|
|
48
48
|
)
|
|
49
|
-
from supervaizer.storage import
|
|
49
|
+
from supervaizer.storage import (
|
|
50
|
+
PERSISTENCE_ENABLED,
|
|
51
|
+
StorageManager,
|
|
52
|
+
load_running_entities_on_startup,
|
|
53
|
+
)
|
|
50
54
|
|
|
51
55
|
insp = inspect
|
|
52
56
|
|
|
@@ -70,7 +74,9 @@ class ServerInfo(BaseModel):
|
|
|
70
74
|
|
|
71
75
|
|
|
72
76
|
def save_server_info_to_storage(server_instance: "Server") -> None:
|
|
73
|
-
"""Save server information to storage."""
|
|
77
|
+
"""Save server information to storage (only when persistence is enabled)."""
|
|
78
|
+
if not PERSISTENCE_ENABLED:
|
|
79
|
+
return
|
|
74
80
|
try:
|
|
75
81
|
storage = StorageManager()
|
|
76
82
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
supervaizer/__init__.py,sha256=eBbGjduMBH-FDjcGlSqeR4Kf4uo60Cf1DrRur8VGkJo,2341
|
|
2
|
-
supervaizer/__version__.py,sha256=
|
|
3
|
-
supervaizer/account.py,sha256=
|
|
4
|
-
supervaizer/account_service.py,sha256=
|
|
2
|
+
supervaizer/__version__.py,sha256=nMELcLDyp7XnPLe74EnEqTFcqZkxnRP1_s0G43H3RDQ,349
|
|
3
|
+
supervaizer/account.py,sha256=TZQdDo1OdjquFsLFxPvUUqzOcdMOIAQHHaREghD5SJ4,11421
|
|
4
|
+
supervaizer/account_service.py,sha256=ZgZ0fhsbSVA076c-35ZZoYJBrQZsAwfFS7namVeoD3s,3459
|
|
5
5
|
supervaizer/agent.py,sha256=Clenvdr_v-lV7_v6YCcevp8dj5JUNvpTWrBZBYM82lg,36509
|
|
6
6
|
supervaizer/case.py,sha256=dOgRujyf4MFcZ-937zxJbqLIPduKg6ZspHuhnWiq13Q,14385
|
|
7
7
|
supervaizer/cli.py,sha256=3KH4gZXTiJ9GtY375kGm5HaKCGV2V8WEbcWdF_sWWEc,13936
|
|
@@ -13,7 +13,7 @@ supervaizer/job_service.py,sha256=22Qe7Z5_u3R28tcNH_21YMIYciWFtJaM7I-MXtIhBMU,46
|
|
|
13
13
|
supervaizer/lifecycle.py,sha256=5CunJN7MsM5blyNiFMJMLFDUBmTmmAsPE24QC-gSbYA,13958
|
|
14
14
|
supervaizer/parameter.py,sha256=sYDuGof_w6mlix0oxjB6odV0sO0QSBL1KwFZa3Y2cOA,8157
|
|
15
15
|
supervaizer/routes.py,sha256=o3u7pGGLE0MQzWtQNdd5xk1M0G9Y_BR_JiLVmCFtdC4,34319
|
|
16
|
-
supervaizer/server.py,sha256=
|
|
16
|
+
supervaizer/server.py,sha256=79MtQcB4fpV9VgFh-dBsbwbHf097waeLmBnArhClVb8,22473
|
|
17
17
|
supervaizer/server_utils.py,sha256=FMglpADQBJynkR2v-pfwANu6obsaPvR9j0BQc5Otpac,1590
|
|
18
18
|
supervaizer/storage.py,sha256=WLX8ggwt1AGF07DrfD1K6PyP2-N45c_Ep4CL0iPLVbI,15332
|
|
19
19
|
supervaizer/telemetry.py,sha256=XSYw8ZwoY8W6C7mhwHU67t7trJzWd7CBkkSNdsDT_HA,2596
|
|
@@ -63,6 +63,7 @@ supervaizer/deploy/templates/debug_env.py,sha256=WFlxfiCAlkxM1NybNvtmmG5zJnoSvjW
|
|
|
63
63
|
supervaizer/deploy/templates/docker-compose.yml.template,sha256=ZcW8WyhmqMElaxBpokuZG12n0tFJL8BY7k7Tvdz6tdw,1100
|
|
64
64
|
supervaizer/deploy/templates/dockerignore.template,sha256=bYFRn6QGsjtRDH-Y7vzWk3-u3jIp90FajV2Ed94ah5M,515
|
|
65
65
|
supervaizer/deploy/templates/entrypoint.sh,sha256=z079VUotu6DJX92fJiBB3eVwCEgcP6B9D9Fvwv_FL9w,463
|
|
66
|
+
supervaizer/deploy/templates/index.html,sha256=z2ocEOYbWbl1Rz3Toc5JZkN7OAoW_GFV1yKKhdyC3vw,2160
|
|
66
67
|
supervaizer/examples/controller_template.py,sha256=bQRtZdq9Z8Pg0b3bRy4oVy6YIIM_e5DzhXVPOr1gFvk,6337
|
|
67
68
|
supervaizer/protocol/__init__.py,sha256=00GHbUsLNsf0a1rQrUPpVN2Uy-7rDz72Ps6TUVD91tE,389
|
|
68
69
|
supervaizer/protocol/a2a/__init__.py,sha256=1ACfPGLzS6XdZPiFxn1nVamvbasqtJJ7U1BBbSmT-nI,625
|
|
@@ -71,8 +72,8 @@ supervaizer/protocol/a2a/routes.py,sha256=rkQTNBD1NTYimKCb8iOk4bVf9ldDP1LqHfOsyh
|
|
|
71
72
|
supervaizer/utils/__init__.py,sha256=fd0NFwN_cen3QPms2SOnuz4jcetay3f_31dit2As7EA,458
|
|
72
73
|
supervaizer/utils/version_check.py,sha256=-tsOURpHVh0LNTbpQsyJDJENKszC-NzXDSO_EToEQPE,1893
|
|
73
74
|
supervaizer/py.typed,sha256=bHhvLx7c6MqrzXVPbdK3qAOcSxzp4wDtTx4QifMC2EY,74
|
|
74
|
-
supervaizer-0.10.
|
|
75
|
-
supervaizer-0.10.
|
|
76
|
-
supervaizer-0.10.
|
|
77
|
-
supervaizer-0.10.
|
|
78
|
-
supervaizer-0.10.
|
|
75
|
+
supervaizer-0.10.11.dist-info/METADATA,sha256=Ec_LGKWoFOmqjOks7mlaIHaE46hCCZMqSlDUFS8zif0,12648
|
|
76
|
+
supervaizer-0.10.11.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
77
|
+
supervaizer-0.10.11.dist-info/entry_points.txt,sha256=vL_IBR_AeEI2u2-6YL4PY9k2Mar4-gprG8-UxERWjmg,52
|
|
78
|
+
supervaizer-0.10.11.dist-info/licenses/LICENSE.md,sha256=dmdnt1vfpxNPr8Lt0BnxKE5uzUwK3CWTthTUStgOXjY,15327
|
|
79
|
+
supervaizer-0.10.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|