Skip to content

Commit 154add0

Browse files
refactor(lib): remove the dead build-info.json registration read-path
The build-info.json read-path (`FastACP.locate_build_info_path()` → `BUILD_INFO_PATH` → `registration.get_build_info()` → merged into register_agent's `registration_metadata`) has never been fed: no producer has ever written build-info.json (the read path landed 2025-09 expecting an external build system that never materialized), so the registration git provenance has been null for ~9 months. It's also redundant: AgentexCloudDeploy.build_id is an FK to AgentexCloudBuild, so a deployment's source provenance derives from the build record over that join rather than being denormalized onto registration_metadata. Remove the read-path and the unused BUILD_INFO_PATH env var; registration_metadata still carries deployment_id and agent_card. Tracked in AGX1-419. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 936bac6 commit 154add0

4 files changed

Lines changed: 27 additions & 56 deletions

File tree

src/agentex/lib/environment_variables.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ class EnvVarKeys(str, Enum):
3838
HEALTH_CHECK_PORT = "HEALTH_CHECK_PORT"
3939
# Auth Configuration
4040
AUTH_PRINCIPAL_B64 = "AUTH_PRINCIPAL_B64"
41-
# Build Information
42-
BUILD_INFO_PATH = "BUILD_INFO_PATH"
4341
AGENT_INPUT_TYPE = "AGENT_INPUT_TYPE"
4442
# Deployment
4543
AGENTEX_DEPLOYMENT_ID = "AGENTEX_DEPLOYMENT_ID"
@@ -85,8 +83,6 @@ class EnvironmentVariables(BaseModel):
8583
HEALTH_CHECK_PORT: int = 80
8684
# Auth Configuration
8785
AUTH_PRINCIPAL_B64: str | None = None
88-
# Build Information
89-
BUILD_INFO_PATH: str | None = None
9086
# Deployment
9187
AGENTEX_DEPLOYMENT_ID: str | None = None
9288
# Claude Agents SDK Configuration

src/agentex/lib/sdk/fastacp/fastacp.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
from __future__ import annotations
22

3-
import os
4-
import inspect
53
from typing import Any, Literal
6-
from pathlib import Path
74
from typing_extensions import deprecated
85

96
from agentex.lib.types.fastacp import (
@@ -82,14 +79,6 @@ def create_agentic_acp(config: AgenticACPConfig, **kwargs) -> BaseACPServer:
8279
"""
8380
return FastACP.create_async_acp(config, **kwargs)
8481

85-
@staticmethod
86-
def locate_build_info_path() -> None:
87-
"""If a build-info.json file is present, set the BUILD_INFO_PATH environment variable"""
88-
acp_root = Path(inspect.stack()[2].filename).resolve().parents[0]
89-
build_info_path = acp_root / "build-info.json"
90-
if build_info_path.exists():
91-
os.environ["BUILD_INFO_PATH"] = str(build_info_path)
92-
9382
@staticmethod
9483
def create(
9584
acp_type: Literal["sync", "async", "agentic"],
@@ -105,8 +94,6 @@ def create(
10594
**kwargs: Additional configuration parameters
10695
"""
10796

108-
FastACP.locate_build_info_path()
109-
11097
if acp_type == "sync":
11198
sync_config = config if isinstance(config, SyncACPConfig) else None
11299
instance = FastACP.create_sync_acp(sync_config, **kwargs)

src/agentex/lib/utils/registration.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,6 @@ def get_auth_principal(env_vars: EnvironmentVariables):
2020
except Exception:
2121
return None
2222

23-
def get_build_info():
24-
build_info_path = os.environ.get("BUILD_INFO_PATH")
25-
logger.info(f"Getting build info from {build_info_path}")
26-
if not build_info_path:
27-
return None
28-
try:
29-
with open(build_info_path, "r") as f:
30-
return json.load(f)
31-
except Exception:
32-
return None
33-
3423
async def register_agent(env_vars: EnvironmentVariables, agent_card=None):
3524
"""Register this agent with the Agentex server"""
3625
if not env_vars.AGENTEX_BASE_URL:
@@ -44,8 +33,8 @@ async def register_agent(env_vars: EnvironmentVariables, agent_card=None):
4433
or f"Generic description for agent: {env_vars.AGENT_NAME}"
4534
)
4635

47-
# Build registration metadata from build-info.json + deployment env var
48-
registration_metadata = get_build_info() or {}
36+
# Registration metadata carries the deployment id and agent card.
37+
registration_metadata: dict = {}
4938
if env_vars.AGENTEX_DEPLOYMENT_ID:
5039
registration_metadata["deployment_id"] = env_vars.AGENTEX_DEPLOYMENT_ID
5140
if agent_card is not None:

tests/lib/test_agent_card.py

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -358,40 +358,39 @@ async def test_agent_card_merged_into_metadata(self, mock_env_vars):
358358
card = AgentCard(input_types=["text"], data_events=["result"])
359359
mock_client = self._make_mock_client()
360360

361-
with patch("agentex.lib.utils.registration.get_build_info", return_value={"version": "1.0"}):
362-
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
363-
from agentex.lib.utils.registration import register_agent
364-
await register_agent(mock_env_vars, agent_card=card)
361+
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
362+
from agentex.lib.utils.registration import register_agent
365363

366-
sent_data = mock_client.post.call_args.kwargs["json"]
367-
metadata = sent_data["registration_metadata"]
364+
await register_agent(mock_env_vars, agent_card=card)
368365

369-
assert "agent_card" in metadata
370-
assert metadata["agent_card"]["input_types"] == ["text"]
371-
assert metadata["agent_card"]["data_events"] == ["result"]
372-
assert metadata["version"] == "1.0"
366+
sent_data = mock_client.post.call_args.kwargs["json"]
367+
metadata = sent_data["registration_metadata"]
373368

374-
async def test_none_preserved_when_no_card_no_build_info(self, mock_env_vars):
369+
assert "agent_card" in metadata
370+
assert metadata["agent_card"]["input_types"] == ["text"]
371+
assert metadata["agent_card"]["data_events"] == ["result"]
372+
373+
async def test_none_preserved_when_no_card(self, mock_env_vars):
375374
mock_client = self._make_mock_client()
376375

377-
with patch("agentex.lib.utils.registration.get_build_info", return_value=None):
378-
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
379-
from agentex.lib.utils.registration import register_agent
380-
await register_agent(mock_env_vars, agent_card=None)
376+
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
377+
from agentex.lib.utils.registration import register_agent
378+
379+
await register_agent(mock_env_vars, agent_card=None)
381380

382-
sent_data = mock_client.post.call_args.kwargs["json"]
383-
assert sent_data["registration_metadata"] is None
381+
sent_data = mock_client.post.call_args.kwargs["json"]
382+
assert sent_data["registration_metadata"] is None
384383

385-
async def test_card_creates_metadata_when_build_info_none(self, mock_env_vars):
384+
async def test_card_creates_metadata(self, mock_env_vars):
386385
card = AgentCard(input_types=["text"])
387386
mock_client = self._make_mock_client()
388387

389-
with patch("agentex.lib.utils.registration.get_build_info", return_value=None):
390-
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
391-
from agentex.lib.utils.registration import register_agent
392-
await register_agent(mock_env_vars, agent_card=card)
388+
with patch("agentex.lib.utils.registration.httpx.AsyncClient", return_value=mock_client):
389+
from agentex.lib.utils.registration import register_agent
390+
391+
await register_agent(mock_env_vars, agent_card=card)
393392

394-
sent_data = mock_client.post.call_args.kwargs["json"]
395-
metadata = sent_data["registration_metadata"]
396-
assert metadata is not None
397-
assert "agent_card" in metadata
393+
sent_data = mock_client.post.call_args.kwargs["json"]
394+
metadata = sent_data["registration_metadata"]
395+
assert metadata is not None
396+
assert "agent_card" in metadata

0 commit comments

Comments
 (0)