From 293550b56fe860c7d34b2435185c8d2db0309642 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 8 Jun 2026 08:14:10 -0300 Subject: [PATCH] Raise builder complex run timeout --- a2a.yaml | 2 +- agent.py | 11 ++++++----- deploy/20-deployment.yaml | 4 ++-- tests/test_builder_prompt.py | 7 +++++++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/a2a.yaml b/a2a.yaml index f2bc529..8d75184 100644 --- a/a2a.yaml +++ b/a2a.yaml @@ -1,5 +1,5 @@ name: agent-builder -version: 0.1.7 +version: 0.1.8 entrypoint: agent:AgentBuilder description: Generate, test, and deploy new a2a agents from natural language. expose: diff --git a/agent.py b/agent.py index a3c67e3..ece2f0c 100644 --- a/agent.py +++ b/agent.py @@ -39,7 +39,8 @@ class BuilderConfig(BaseModel): _URL_RE = re.compile(r"https?://[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}[\w/?#%&=.-]*") DEEPAGENTS_RECURSION_LIMIT = 500 -BUILDER_WALL_TIMEOUT_SECONDS = 25 * 60 +BUILDER_WALL_TIMEOUT_SECONDS = 60 * 60 +BUILDER_GRANT_RUN_TIMEOUT_SECONDS = BUILDER_WALL_TIMEOUT_SECONDS - 60 class AgentBuilder(A2AAgent[BuilderConfig, NoAuth]): @@ -49,7 +50,7 @@ class AgentBuilder(A2AAgent[BuilderConfig, NoAuth]): "Writes the project into the user's workspace, validates it in a " "sandbox, then ships it via the control plane." ) - version = "0.1.7" + version = "0.1.8" config_model = BuilderConfig auth_model = NoAuth @@ -76,14 +77,14 @@ class AgentBuilder(A2AAgent[BuilderConfig, NoAuth]): ), tags=["builder", "scaffold", "deepagents", "meta"], stream=True, - timeout_seconds=1800, + timeout_seconds=BUILDER_WALL_TIMEOUT_SECONDS, cost_class="expensive", grant_mode="read_write_overlay", grant_allow_patterns=("agents/{name}/**",), grant_outputs_prefix="agents/{name}/", grant_write_prefixes=("agents/{name}/",), - grant_ttl_seconds=1800, - grant_run_timeout_seconds=1740, + grant_ttl_seconds=BUILDER_WALL_TIMEOUT_SECONDS, + grant_run_timeout_seconds=BUILDER_GRANT_RUN_TIMEOUT_SECONDS, grant_approval_timeout_seconds=180, grant_scope_approval_timeout_seconds=120, ) diff --git a/deploy/20-deployment.yaml b/deploy/20-deployment.yaml index 3ef2362..2b0e44a 100644 --- a/deploy/20-deployment.yaml +++ b/deploy/20-deployment.yaml @@ -22,8 +22,8 @@ spec: spec: enableServiceLinks: false containerConcurrency: 10 - timeoutSeconds: 1800 - responseStartTimeoutSeconds: 1800 + timeoutSeconds: 3600 + responseStartTimeoutSeconds: 3600 containers: - name: agent image: registry.a2acloud.io/agents/agent-builder:a5913d6c2cb856a9941c529c027506c6c12b7d4e diff --git a/tests/test_builder_prompt.py b/tests/test_builder_prompt.py index 148de74..64279b6 100644 --- a/tests/test_builder_prompt.py +++ b/tests/test_builder_prompt.py @@ -162,10 +162,17 @@ class BuilderPromptTests(unittest.TestCase): self.assertIn("caller's saved LLM credential", agent_source) def test_builder_defaults_raise_timeout_budget(self) -> None: + agent_source = Path(__file__).resolve().parents[1].joinpath("agent.py").read_text() config_source = Path(__file__).resolve().parents[1].joinpath( "agent_builder/config.py" ).read_text() + self.assertIn("BUILDER_WALL_TIMEOUT_SECONDS = 60 * 60", agent_source) + self.assertIn("timeout_seconds=BUILDER_WALL_TIMEOUT_SECONDS", agent_source) + self.assertIn( + "grant_run_timeout_seconds=BUILDER_GRANT_RUN_TIMEOUT_SECONDS", + agent_source, + ) self.assertIn('os.environ.get("A2A_SANDBOX_TIMEOUT_S")', config_source) self.assertIn('os.environ.get("SANDBOX_TIMEOUT_S", "1200")', config_source) self.assertIn('deploy_wait_timeout_s=int(os.environ.get("DEPLOY_WAIT_TIMEOUT_S", "900"))', config_source)