Rebuild agent-builder on a2a-pack 0.1.51
All checks were successful
build / build (push) Successful in 16s
All checks were successful
build / build (push) Successful in 16s
This commit is contained in:
18
agent.py
18
agent.py
@@ -190,7 +190,7 @@ class AgentBuilder(A2AAgent[BuilderConfig, NoAuth]):
|
|||||||
if isinstance(out, dict):
|
if isinstance(out, dict):
|
||||||
final_state = out
|
final_state = out
|
||||||
except Exception as exc: # noqa: BLE001
|
except Exception as exc: # noqa: BLE001
|
||||||
return {"error": f"build graph failed: {type(exc).__name__}: {exc}"}
|
return {"error": _build_failure_error(exc)}
|
||||||
finally:
|
finally:
|
||||||
heartbeat_task.cancel()
|
heartbeat_task.cancel()
|
||||||
with suppress(asyncio.CancelledError):
|
with suppress(asyncio.CancelledError):
|
||||||
@@ -278,4 +278,20 @@ def _find_url(value: Any) -> str | None:
|
|||||||
m = _URL_RE.search(value)
|
m = _URL_RE.search(value)
|
||||||
return m.group(0) if m else None
|
return m.group(0) if m else None
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def _build_failure_error(exc: BaseException) -> str:
|
||||||
|
message = str(exc)
|
||||||
|
lowered = message.lower()
|
||||||
|
if (
|
||||||
|
"budget has been exceeded" in lowered
|
||||||
|
or "budget exceeded" in lowered
|
||||||
|
or "ratelimiterror" in type(exc).__name__.lower()
|
||||||
|
or "rate limit" in lowered
|
||||||
|
):
|
||||||
|
return (
|
||||||
|
"LLM budget exceeded before deployment; retry with a larger budget "
|
||||||
|
"or a smaller build scope"
|
||||||
|
)
|
||||||
|
return f"build graph failed: {type(exc).__name__}: {exc}"
|
||||||
# rebuild against a2a-pack 0.1.47 for manifest-backed meta-agent defaults
|
# rebuild against a2a-pack 0.1.47 for manifest-backed meta-agent defaults
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ if TYPE_CHECKING:
|
|||||||
from .config import Settings
|
from .config import Settings
|
||||||
|
|
||||||
|
|
||||||
A2A_PACK_MIN_VERSION = "0.1.47"
|
A2A_PACK_MIN_VERSION = "0.1.51"
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
a2a-pack>=0.1.47
|
a2a-pack>=0.1.51
|
||||||
httpx>=0.27
|
httpx>=0.27
|
||||||
boto3>=1.34
|
boto3>=1.34
|
||||||
deepagents>=0.5.0
|
deepagents>=0.5.0
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from agent_builder.builder import (
|
|||||||
from agent_builder.config import Settings
|
from agent_builder.config import Settings
|
||||||
from agent_builder.tools import A2A_PACK_MIN_VERSION
|
from agent_builder.tools import A2A_PACK_MIN_VERSION
|
||||||
from deepagents.backends import StateBackend
|
from deepagents.backends import StateBackend
|
||||||
|
from agent import _build_failure_error
|
||||||
|
|
||||||
|
|
||||||
class BuilderPromptTests(unittest.TestCase):
|
class BuilderPromptTests(unittest.TestCase):
|
||||||
@@ -132,6 +133,13 @@ class BuilderPromptTests(unittest.TestCase):
|
|||||||
for skill_name in expected:
|
for skill_name in expected:
|
||||||
self.assertIn(f"{BUILDER_SKILL_SOURCE}{skill_name}/", paths)
|
self.assertIn(f"{BUILDER_SKILL_SOURCE}{skill_name}/", paths)
|
||||||
|
|
||||||
|
def test_build_failure_error_classifies_budget_exhaustion(self) -> None:
|
||||||
|
self.assertEqual(
|
||||||
|
_build_failure_error(RuntimeError("Budget has been exceeded! Key=abc")),
|
||||||
|
"LLM budget exceeded before deployment; retry with a larger budget "
|
||||||
|
"or a smaller build scope",
|
||||||
|
)
|
||||||
|
|
||||||
def test_project_backend_keeps_deepagents_artifacts_inside_project_grant(self) -> None:
|
def test_project_backend_keeps_deepagents_artifacts_inside_project_grant(self) -> None:
|
||||||
backend = _build_project_backend(
|
backend = _build_project_backend(
|
||||||
BuilderContext(
|
BuilderContext(
|
||||||
|
|||||||
Reference in New Issue
Block a user