Skip to content

Commit c0566d9

Browse files
stainless-app[bot]max-parke-scaleclaudeNiteshDhanpaldeepthi-rao-scale
authored
chore: release main (#475)
Co-authored-by: Max Parke <max.parke@scale.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Nitesh Dhanpal <NiteshDhanpal@users.noreply.github.com> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Deepthi Rao <deepthi.rao@scale.com>
1 parent 2b7649c commit c0566d9

16 files changed

Lines changed: 527 additions & 68 deletions

.release-please-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
".": "0.21.0",
3-
"adk": "0.21.0"
2+
".": "0.22.0",
3+
"adk": "0.22.0"
44
}

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,24 @@
1212

1313
* **tracing:** emit OTel metrics for async span queue depth, batch drain, and SGP export success/failure (HTTP status labels). Disable SDK-side recording with ``AGENTEX_TRACING_METRICS=0``.
1414

15+
## 0.22.0 (2026-07-29)
16+
17+
Full Changelog: [agentex-client-v0.21.0...agentex-client-v0.22.0](https://github.com/scaleapi/scale-agentex-python/compare/agentex-client-v0.21.0...agentex-client-v0.22.0)
18+
19+
### Features
20+
21+
* **lib:** capture client-attested build provenance ([#454](https://github.com/scaleapi/scale-agentex-python/issues/454)) ([8964044](https://github.com/scaleapi/scale-agentex-python/commit/896404475a1e93955eabd562caa1670364335c29))
22+
23+
24+
### Bug Fixes
25+
26+
* **lib:** default 'agentex agents build' to --no-cache so stale layers can't ship stale source ([#476](https://github.com/scaleapi/scale-agentex-python/issues/476)) ([632d82c](https://github.com/scaleapi/scale-agentex-python/commit/632d82c2e4eeb1f7113b575b8666ffd53a1ab2eb))
27+
28+
29+
### Refactors
30+
31+
* **lib:** remove the dead build-info.json registration read-path ([#455](https://github.com/scaleapi/scale-agentex-python/issues/455)) ([2078f9f](https://github.com/scaleapi/scale-agentex-python/commit/2078f9fabb3099fa2d5d02f67ed5af50b8efbc09))
32+
1533
## 0.21.0 (2026-07-28)
1634

1735
Full Changelog: [agentex-client-v0.20.0...agentex-client-v0.21.0](https://github.com/scaleapi/scale-agentex-python/compare/agentex-client-v0.20.0...agentex-client-v0.21.0)

adk/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## 0.22.0 (2026-07-29)
4+
5+
Full Changelog: [agentex-sdk-v0.21.0...agentex-sdk-v0.22.0](https://github.com/scaleapi/scale-agentex-python/compare/agentex-sdk-v0.21.0...agentex-sdk-v0.22.0)
6+
7+
### Chores
8+
9+
* **agentex-sdk:** Synchronize agentex versions
10+
311
## 0.21.0 (2026-07-28)
412

513
Full Changelog: [agentex-sdk-v0.20.0...agentex-sdk-v0.21.0](https://github.com/scaleapi/scale-agentex-python/compare/agentex-sdk-v0.20.0...agentex-sdk-v0.21.0)

adk/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# (agentex/{__init__.py, _*.py, types/, resources/}) ships from the slim
55
# sibling package `agentex-client` which is pinned as a runtime dep.
66
name = "agentex-sdk"
7-
version = "0.21.0"
7+
version = "0.22.0"
88
description = "Agent Development Kit (ADK) overlay for the Agentex API — FastACP server, Temporal workflows, LLM provider integrations, observability"
99
license = "Apache-2.0"
1010
authors = [

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# overlay (formerly `src/agentex/lib/*`) now lives in `adk/` and ships
44
# as the sibling `agentex-sdk` package — see `adk/pyproject.toml`.
55
name = "agentex-client"
6-
version = "0.21.0"
6+
version = "0.22.0"
77
description = "The official Python REST client for the Agentex API"
88
dynamic = ["readme"]
99
license = "Apache-2.0"

src/agentex/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
__title__ = "agentex"
4-
__version__ = "0.21.0" # x-release-please-version
4+
__version__ = "0.22.0" # x-release-please-version

src/agentex/lib/cli/commands/agents.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ def build(
127127
None,
128128
help="Docker build argument in the format 'KEY=VALUE' (can be used multiple times)",
129129
),
130+
cache: bool = typer.Option(
131+
False,
132+
"--cache/--no-cache",
133+
help="Whether to use the build cache. Defaults to off so a stale cached layer "
134+
"can't silently ship source that no longer matches the checkout (notably when "
135+
"republishing a moving tag like ':latest'). Pass --cache to opt back in.",
136+
),
130137
):
131138
"""
132139
Build an agent image locally from the given manifest.
@@ -155,6 +162,7 @@ def build(
155162
secret=secret or "", # Provide default empty string
156163
tag=tag or "latest", # Provide default
157164
build_args=build_arg or [], # Provide default empty list
165+
cache=cache,
158166
)
159167
if image_url:
160168
typer.echo(f"Successfully built image: {image_url}")

src/agentex/lib/cli/handlers/agent_handlers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def build_agent(
3939
secret: str | None = None,
4040
tag: str | None = None,
4141
build_args: list[str] | None = None,
42+
cache: bool = False,
4243
) -> str:
4344
"""Build the agent locally and optionally push to registry
4445
@@ -49,6 +50,10 @@ def build_agent(
4950
secret: Docker build secret in format 'id=secret-id,src=path-to-secret-file'
5051
tag: Image tag to use (defaults to 'latest')
5152
build_args: List of Docker build arguments in format 'KEY=VALUE'
53+
cache: Whether to use the build cache. Defaults to False (passes --no-cache to
54+
buildx) so a stale cached layer can't silently ship source that no longer
55+
matches the checkout, notably when republishing a moving tag like ':latest'.
56+
Pass True to opt back in for faster local rebuilds.
5257
5358
Returns:
5459
The image URL
@@ -85,7 +90,10 @@ def build_agent(
8590
"file": str(build_context.path / build_context.dockerfile_path), # type: ignore[operator]
8691
"tags": [image_name],
8792
"platforms": platforms,
93+
"cache": cache, # cache=False -> `docker buildx build --no-cache`
8894
}
95+
if not cache:
96+
logger.info("Build cache disabled (--no-cache)")
8997

9098
# Add Docker build args if provided
9199
if build_args:

src/agentex/lib/environment_variables.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ class EnvVarKeys(str, Enum):
3737
HEALTH_CHECK_PORT = "HEALTH_CHECK_PORT"
3838
# Auth Configuration
3939
AUTH_PRINCIPAL_B64 = "AUTH_PRINCIPAL_B64"
40-
# Build Information
41-
BUILD_INFO_PATH = "BUILD_INFO_PATH"
4240
AGENT_INPUT_TYPE = "AGENT_INPUT_TYPE"
4341
# Deployment
4442
AGENTEX_DEPLOYMENT_ID = "AGENTEX_DEPLOYMENT_ID"
@@ -87,8 +85,6 @@ class EnvironmentVariables(BaseModel):
8785
HEALTH_CHECK_PORT: int = 80
8886
# Auth Configuration
8987
AUTH_PRINCIPAL_B64: str | None = None
90-
# Build Information
91-
BUILD_INFO_PATH: str | None = None
9288
# Deployment
9389
AGENTEX_DEPLOYMENT_ID: str | None = None
9490
# Claude Agents SDK Configuration

src/agentex/lib/sdk/config/agent_manifest.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from agentex.lib.utils.io import load_yaml_file
2525
from agentex.lib.utils.logging import make_logger
2626
from agentex.config.agent_manifest import AgentManifest # noqa: F401
27+
from agentex.lib.utils.build_provenance import iter_context_files
2728

2829
logger = make_logger(__name__)
2930

@@ -189,12 +190,11 @@ def zipped(root_path: Path | None = None) -> Iterator[IO[bytes]]:
189190

190191
tar_buffer = io.BytesIO()
191192

193+
# Sorted, relpath-stable enumeration (shared with the content hash) so the
194+
# archive's member order is deterministic across machines.
192195
with tarfile.open(fileobj=tar_buffer, mode="w:gz") as tar_file:
193-
for path in Path(root_path).rglob(
194-
"*"
195-
): # Recursively add files to the tar.gz
196-
if path.is_file(): # Ensure that we're only adding files
197-
tar_file.add(path, arcname=path.relative_to(root_path))
196+
for path in iter_context_files(Path(root_path)):
197+
tar_file.add(path, arcname=path.relative_to(root_path))
198198

199199
tar_buffer.seek(0) # Reset the buffer position to the beginning
200200
yield tar_buffer

0 commit comments

Comments
 (0)