agentx-python 0.8.8__py3-none-any.whl → 0.8.9__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.
- agentx/cli.py +34 -16
- agentx/version.py +7 -1
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/METADATA +1 -1
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/RECORD +8 -8
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/WHEEL +0 -0
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/entry_points.txt +0 -0
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/licenses/LICENSE +0 -0
- {agentx_python-0.8.8.dist-info → agentx_python-0.8.9.dist-info}/top_level.txt +0 -0
agentx/cli.py
CHANGED
|
@@ -4,18 +4,21 @@ Evaluate, Monitor), published separately at github.com/AgentX-ai/AgentX-trace-ev
|
|
|
4
4
|
wrapping a Bun-compiled TypeScript engine, not Python). That compiled engine binary is tens of
|
|
5
5
|
megabytes; most `pip install agentx-python` installs are just this SDK talking to the hosted
|
|
6
6
|
AgentX SaaS and would never touch it, so it isn't bundled in this package. Instead, this command
|
|
7
|
-
downloads the
|
|
7
|
+
downloads the release into ~/.agentx/bin the first time it's needed (mirroring
|
|
8
8
|
AgentX-trace-eval's own install.sh) and then hands off to the real `agentx-server` binary.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
Versioning: each SDK release pins the engine release it was tested against
|
|
11
|
+
(agentx.version.ENGINE_VERSION); the launcher installs that pin and converges to it - if the
|
|
12
|
+
stamped install (~/.agentx/bin/.version) differs from the pin, it re-installs, so upgrading the
|
|
13
|
+
SDK upgrades the engine to the matching pair. `--update` force-reinstalls the resolved version
|
|
14
|
+
(recovering a broken or pre-stamp install). Set AGENTX_TRACE_EVAL_VERSION to a tag or `latest`
|
|
15
|
+
to override the pin; in `latest` mode the launcher trusts whatever is installed, prints a
|
|
16
|
+
fail-open notice when GitHub has something newer, and `--update` fetches it.
|
|
15
17
|
|
|
16
18
|
Usage:
|
|
17
19
|
agentx-trace-eval --dev
|
|
18
20
|
agentx-trace-eval --update --dev
|
|
21
|
+
AGENTX_TRACE_EVAL_VERSION=latest agentx-trace-eval --update --dev
|
|
19
22
|
agentx-trace-eval --port 5000 --db-url postgres://...
|
|
20
23
|
"""
|
|
21
24
|
|
|
@@ -32,6 +35,8 @@ from typing import Optional, Tuple
|
|
|
32
35
|
|
|
33
36
|
import requests
|
|
34
37
|
|
|
38
|
+
from agentx.version import ENGINE_VERSION
|
|
39
|
+
|
|
35
40
|
REPO = "AgentX-ai/AgentX-trace-eval"
|
|
36
41
|
INSTALL_DIR = Path(os.environ.get("AGENTX_INSTALL_DIR", str(Path.home() / ".agentx" / "bin")))
|
|
37
42
|
_BIN_NAMES = ("agentx", "agentx-server", "agentx-engine")
|
|
@@ -114,11 +119,17 @@ def _latest_release_tag() -> Optional[str]:
|
|
|
114
119
|
return None
|
|
115
120
|
|
|
116
121
|
|
|
122
|
+
def resolve_version() -> str:
|
|
123
|
+
"""The engine version this launcher should be running: the AGENTX_TRACE_EVAL_VERSION
|
|
124
|
+
override (a tag, or `latest`) when set, else the SDK's tested pin."""
|
|
125
|
+
return os.environ.get("AGENTX_TRACE_EVAL_VERSION") or ENGINE_VERSION
|
|
126
|
+
|
|
127
|
+
|
|
117
128
|
def _install(version: str = "latest") -> None:
|
|
118
129
|
os_name, arch = _platform_tag()
|
|
119
130
|
INSTALL_DIR.mkdir(parents=True, exist_ok=True)
|
|
120
131
|
|
|
121
|
-
print(f"agentx-trace-eval: downloading agentx ({os_name}/{arch})...", file=sys.stderr)
|
|
132
|
+
print(f"agentx-trace-eval: downloading agentx {version} ({os_name}/{arch})...", file=sys.stderr)
|
|
122
133
|
with tempfile.TemporaryDirectory() as tmp:
|
|
123
134
|
tmp_dir = Path(tmp)
|
|
124
135
|
archive = tmp_dir / "agentx.tar.gz"
|
|
@@ -178,23 +189,30 @@ def _install(version: str = "latest") -> None:
|
|
|
178
189
|
_extract_tar(web_archive, web_dir)
|
|
179
190
|
|
|
180
191
|
|
|
181
|
-
def ensure_installed(version: str =
|
|
182
|
-
"""
|
|
192
|
+
def ensure_installed(version: Optional[str] = None, force: bool = False) -> Path:
|
|
193
|
+
"""Installs agentx-server (+ its engine and dashboard) into ~/.agentx/bin when it's missing
|
|
183
194
|
there, when `force` is set, or when `version` is a specific tag that differs from the
|
|
184
|
-
|
|
185
|
-
|
|
195
|
+
stamped install - the convergence that makes an SDK upgrade carry its tested engine along.
|
|
196
|
+
`version` defaults to resolve_version() (the AGENTX_TRACE_EVAL_VERSION override, else the
|
|
197
|
+
SDK's pin); pass "latest" to trust whatever is installed and only fetch when missing.
|
|
198
|
+
Returns the path to the agentx-server executable. Set AGENTX_INSTALL_DIR to change where
|
|
199
|
+
this looks/installs."""
|
|
200
|
+
if version is None:
|
|
201
|
+
version = resolve_version()
|
|
186
202
|
server_path = INSTALL_DIR / "agentx-server"
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if force or
|
|
203
|
+
stamped = _stamped_version()
|
|
204
|
+
pin_mismatch = version != "latest" and stamped != version
|
|
205
|
+
if force or pin_mismatch or not server_path.exists():
|
|
190
206
|
_install(version=version)
|
|
191
207
|
return server_path
|
|
192
208
|
|
|
193
209
|
|
|
194
210
|
def _maybe_print_update_notice(installed: Optional[str]) -> None:
|
|
211
|
+
"""Only relevant in `latest` mode, where nothing converges automatically - a quick fail-open
|
|
212
|
+
check tells the user when the world has moved on. (Pinned mode needs no notice: a pin
|
|
213
|
+
mismatch re-installs instead of nagging.)"""
|
|
195
214
|
latest = _latest_release_tag()
|
|
196
215
|
if installed is None:
|
|
197
|
-
# Pre-stamp install (or a wiped stamp): age unknown, so always point at --update.
|
|
198
216
|
print(
|
|
199
217
|
"agentx-trace-eval: installed engine version unknown"
|
|
200
218
|
+ (f" (newest release is {latest})" if latest else "")
|
|
@@ -215,7 +233,7 @@ def main() -> None:
|
|
|
215
233
|
# --update belongs to this launcher, not to agentx-server - consume it before the handoff.
|
|
216
234
|
args = [a for a in args if a != "--update"]
|
|
217
235
|
|
|
218
|
-
version =
|
|
236
|
+
version = resolve_version()
|
|
219
237
|
server_path = ensure_installed(version=version, force=force_update)
|
|
220
238
|
if not server_path.exists():
|
|
221
239
|
raise SystemExit(f"agentx-trace-eval: {server_path} still missing after install, giving up")
|
agentx/version.py
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
VERSION = "0.8.
|
|
1
|
+
VERSION = "0.8.9"
|
|
2
|
+
|
|
3
|
+
# The AgentX-trace-eval release this SDK version is tested against - what `agentx-trace-eval`
|
|
4
|
+
# installs and converges to (see agentx/cli.py). Bump together with VERSION when releasing, so
|
|
5
|
+
# every published SDK names a known-good engine+dashboard pair. Users can override with
|
|
6
|
+
# AGENTX_TRACE_EVAL_VERSION=<tag|latest>.
|
|
7
|
+
ENGINE_VERSION = "v0.3.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
agentx/__init__.py,sha256=4iMiGLNU4S-I-WyX0Z7l0BFUY_krVJ3seMQPqyO-ReA,602
|
|
2
2
|
agentx/agentx.py,sha256=WuzVQtXSPqBhRwKxkUlQ8VG2cwvGpbMcti4n6aTNPwA,8816
|
|
3
|
-
agentx/cli.py,sha256=
|
|
3
|
+
agentx/cli.py,sha256=yawLQLSeZ7KIl7ukgmly-lrYbx9GgKcaI9M4xamiMPw,10468
|
|
4
4
|
agentx/exceptions.py,sha256=2tDLdZjriFBQbjgzyIcah12RazpbujhqZSRbSXgAml4,1377
|
|
5
5
|
agentx/export.py,sha256=FNT00e-j9AQRkNDksUwgHJXgr8-XVPscEH4xUqJHmfM,4265
|
|
6
6
|
agentx/feedback.py,sha256=hMPU3ivUHvhOXOH7gvT4Jy1yztVmoIMOw1MbUNRs5Gk,3643
|
|
@@ -10,7 +10,7 @@ agentx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
10
10
|
agentx/testing.py,sha256=0shZEid_vhJgBegpO_loUq6APYDxQrUgD3jvcRdIDV8,7372
|
|
11
11
|
agentx/traces.py,sha256=sz9gxutlDKNgf0fdCkyzKsGwK5eMAJuIEl3NIwGrsuo,2287
|
|
12
12
|
agentx/util.py,sha256=lt2Kpg4Fj8whrSuAhLEahcPEIYRVpK9RCC5y9ShdTJs,703
|
|
13
|
-
agentx/version.py,sha256=
|
|
13
|
+
agentx/version.py,sha256=NVkvAxXnY4aNvFKBaIaMdP2_Lq6r1q1gNdF9rkcPaJ0,364
|
|
14
14
|
agentx/evaluations/__init__.py,sha256=Erv7RGFlRxGTG4rVb2uHhCqLLEX_iAWKqkZKzK6CumE,262
|
|
15
15
|
agentx/evaluations/_term.py,sha256=WFpiNzdgDBeJJ-Gg-6X7TwwxllobuE4OqFUTuDQvS3Y,2529
|
|
16
16
|
agentx/evaluations/client.py,sha256=miUmEq4IthUDl-QVAczqT7iaOu4X6QMbHhlm2rSSJpg,31239
|
|
@@ -63,9 +63,9 @@ agentx/tracing/ci_types.py,sha256=zFVcZGvc1qbVDdOlEPQ1i5R6terqJHxCzFF4ZjouxxI,14
|
|
|
63
63
|
agentx/tracing/eval_scope.py,sha256=ElMbPxpqpQBVuaUnHNlw9RIQu71oyOpd0yR55bDH8eI,2144
|
|
64
64
|
agentx/tracing/ingest_client.py,sha256=5X6RyxtMq1XYgOzsMd3b2f2qpmYpsMnhKm7NB3oup00,17664
|
|
65
65
|
agentx/tracing/tracer.py,sha256=qQojU-T4O8IJKyf9vue0Em66qPBTZKl3FMyr3KJKPnI,53770
|
|
66
|
-
agentx_python-0.8.
|
|
67
|
-
agentx_python-0.8.
|
|
68
|
-
agentx_python-0.8.
|
|
69
|
-
agentx_python-0.8.
|
|
70
|
-
agentx_python-0.8.
|
|
71
|
-
agentx_python-0.8.
|
|
66
|
+
agentx_python-0.8.9.dist-info/licenses/LICENSE,sha256=gZVsM-nLsE8vlaY6NXXsVoo6IlCClxkToAWmhgT3y_s,10762
|
|
67
|
+
agentx_python-0.8.9.dist-info/METADATA,sha256=MLSczgjVUoeyS3DniUVutzQ78YJqIsxc6P-WfMb5HzI,20992
|
|
68
|
+
agentx_python-0.8.9.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
69
|
+
agentx_python-0.8.9.dist-info/entry_points.txt,sha256=rQqF1JTY3T1yfviBU1r8PU-5mBdfOk6P4bZ1L4BskIM,172
|
|
70
|
+
agentx_python-0.8.9.dist-info/top_level.txt,sha256=s-q-HB9Gb_QdrZNacSeQyF_c25gQooMy7DlxzgLOHPk,7
|
|
71
|
+
agentx_python-0.8.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|