You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(packaging)!: split agentex-sdk into slim client + heavy ADK overlay
Publishes the existing wheel as two namespace-sharing packages so REST-only
consumers install just the Stainless client without the ADK runtime.
- agentex-client (slim, root pyproject): Stainless client + types +
protocol; 6 deps; requires-python >=3.11; wheel excludes src/agentex/lib/**.
- agentex-sdk (heavy, adk/): the ADK overlay (agentex/lib/*) via a hatchling
build hook that force-includes ../src/agentex/lib and prunes test files
(force-include ignores `exclude`, hatchling #1395); pins agentex-client
floor-only; requires-python >=3.12.
Heavy depends on slim, so existing `pip install agentex-sdk` consumers are
unchanged. Both contribute disjoint files to the agentex.* namespace.
uv workspace wiring (this repo is uv-based post rye→uv migration):
- [tool.uv.workspace] members = ["adk"] + [tool.uv.sources]
agentex-client = { workspace = true } so dev resolves the ADK's client
dep to the local root; the published heavy wheel still pins the PyPI version.
- CI + scripts/{bootstrap,test} sync `--all-packages` so the ADK member's deps
install for lint/test; both wheels build via `uv build --all-packages --wheel`
(--wheel load-bearing — the heavy's cross-dir force-include can't go via sdist).
Release/publish wiring:
- release-please two-component mode (`.` + `adk/`), include-component-in-tag.
- bin/publish-pypi publishes slim before heavy via uv; `--check-url` makes the
per-component-tag double-trigger idempotent. Dual tokens, PYPI_TOKEN fallback.
- scripts/check-slim-deps CI guardrail fails if the slim dep set drifts from
the 6-dep base (catches Stainless re-adding ADK deps).
BREAKING CHANGE: release tag scheme changes from v* to <component>-v*.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This automatically pulls in [`agentex-client`](../) (the slim Stainless-generated REST client) so `from agentex import Agentex, AsyncAgentex` works the same as before.
-**`agentex-client`** — you only need to call the Agentex REST API. No agent authoring, no Temporal workflows, no FastACP server, no provider integrations. 6 deps.
27
+
28
+
The two packages contribute disjoint files to the `agentex.*` namespace — `agentex/lib/*` ships only from `agentex-sdk`.
29
+
30
+
## Repo layout
31
+
32
+
This package is hand-authored and lives at `adk/` inside [scaleapi/scale-agentex-python](https://github.com/scaleapi/scale-agentex-python). The Stainless generator preserves `adk/**` via `keep_files` so its codegen never touches anything here. The sibling `agentex-client` package lives at the repo root and IS Stainless-generated.
Copy file name to clipboardExpand all lines: bin/check-release-environment
+14-2Lines changed: 14 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,21 @@
1
1
#!/usr/bin/env bash
2
2
3
+
# This script is run by Release Doctor to validate the release environment.
4
+
# After the dual-package split (slim agentex-client + heavy agentex-sdk),
5
+
# both PyPI tokens must be present — one for each package name. If only
6
+
# PYPI_TOKEN is set, fall back to using it for both (back-compat for legacy
7
+
# single-token setups, which forces an account-scoped token).
8
+
3
9
errors=()
4
10
5
-
if [ -z"${PYPI_TOKEN}" ];then
6
-
errors+=("The PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
11
+
# Heavy `agentex-sdk` token (existing PyPI name).
12
+
if [ -z"${AGENTEX_PYPI_TOKEN}" ] && [ -z"${PYPI_TOKEN}" ];then
13
+
errors+=("The AGENTEX_PYPI_TOKEN secret has not been set (and no fallback PYPI_TOKEN). Add it in repo secrets so the heavy 'agentex-sdk' package can be published.")
14
+
fi
15
+
16
+
# Slim `agentex-client` token (new PyPI name).
17
+
if [ -z"${AGENTEX_CLIENT_PYPI_TOKEN}" ] && [ -z"${PYPI_TOKEN}" ];then
18
+
errors+=("The AGENTEX_CLIENT_PYPI_TOKEN secret has not been set (and no fallback PYPI_TOKEN). Add it in repo secrets so the slim 'agentex-client' package can be published. Falling back to PYPI_TOKEN requires an account-scoped token.")
echo -e "${RED}❌ BUILD_CLI=true but a wheel is missing (heavy='${heavy_wheel}' slim='${slim_wheel}'); refusing to test against the pre-installed SDK${NC}"
0 commit comments