From 9758c5588db0ebd4d59b94b8e3c9572952e790a8 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 8 Jun 2026 09:25:53 -0300 Subject: [PATCH] Refresh reviewer runtime visibility --- a2a.yaml | 4 ++-- agent.py | 9 ++++++++- agent_reviewer/builder.py | 2 ++ requirements.txt | 2 +- tests/test_agent.py | 4 +++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/a2a.yaml b/a2a.yaml index eefb0e7..9a37283 100644 --- a/a2a.yaml +++ b/a2a.yaml @@ -1,6 +1,6 @@ name: agent-reviewer -version: 0.1.0 +version: 0.1.1 entrypoint: agent:AgentReviewer description: Pre-deploy audit of an A2A agent's source — security, scope, ergonomics. expose: - public: false + public: true diff --git a/agent.py b/agent.py index eeef0c4..61b0776 100644 --- a/agent.py +++ b/agent.py @@ -30,7 +30,7 @@ class AgentReviewer(A2AAgent[ReviewerConfig, NoAuth]): "repo from Gitea, applies security / best-practice / grant-scope " "skill bundles, and returns a structured ReviewReport." ) - version = "0.1.0" + version = "0.1.1" config_model = ReviewerConfig auth_model = NoAuth @@ -115,6 +115,7 @@ class AgentReviewer(A2AAgent[ReviewerConfig, NoAuth]): llm_temperature_mode=creds.temperature_mode, llm_temperature=creds.temperature, llm_extra_body=creds.extra_body, + llm_metadata=getattr(creds, "metadata", None), ), completion_box=completion_box, ) @@ -134,6 +135,7 @@ class AgentReviewer(A2AAgent[ReviewerConfig, NoAuth]): heartbeat_task = asyncio.create_task(_heartbeat()) last_reply = "" try: + await ctx.emit_progress(f"review graph starting for {gitea_owner}/{agent_name}@{ref}") async for event in graph.astream_events( {"messages": [{"role": "user", "content": user_msg}]}, version="v2", @@ -168,6 +170,7 @@ class AgentReviewer(A2AAgent[ReviewerConfig, NoAuth]): report = completion_box.get("report") if report is None: + await ctx.emit_progress(f"review finished without structured report for {agent_name}@{ref}") return { "ok": False, "agent_name": agent_name, @@ -175,6 +178,10 @@ class AgentReviewer(A2AAgent[ReviewerConfig, NoAuth]): "warning": "reviewer finished without submitting a structured report", "reply": last_reply[:2000], } + await ctx.emit_progress( + "review submitted " + f"ok={report.ok} findings={len(report.findings)} agent={agent_name}@{ref}" + ) return report.model_dump() diff --git a/agent_reviewer/builder.py b/agent_reviewer/builder.py index fcc22ad..ac3df1d 100644 --- a/agent_reviewer/builder.py +++ b/agent_reviewer/builder.py @@ -33,6 +33,7 @@ class ReviewerContext: llm_temperature_mode: str | None = None llm_temperature: float | None = None llm_extra_body: dict[str, Any] | None = None + llm_metadata: dict[str, Any] | None = None SYSTEM_PROMPT = """\ @@ -139,6 +140,7 @@ def build_reviewer_graph( temperature_mode=ctx.llm_temperature_mode or "default", temperature=ctx.llm_temperature, extra_body=dict(ctx.llm_extra_body or {}), + metadata=dict(ctx.llm_metadata or {}), ) return create_a2a_deep_agent( diff --git a/requirements.txt b/requirements.txt index f7a4889..3dd0429 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -a2a-pack>=0.1.75 +a2a-pack>=0.1.82 httpx>=0.27 deepagents>=0.5.0 langchain>=0.3 diff --git a/tests/test_agent.py b/tests/test_agent.py index edf3925..2fdc783 100644 --- a/tests/test_agent.py +++ b/tests/test_agent.py @@ -21,7 +21,7 @@ from agent_reviewer.config import load_settings # noqa: E402 def test_class_metadata() -> None: assert AgentReviewer.name == "agent-reviewer" - assert AgentReviewer.version + assert AgentReviewer.version == "0.1.1" assert AgentReviewer.wants_cp_jwt is True @@ -102,6 +102,7 @@ def test_reviewer_graph_uses_forwarded_llm_credentials( llm_model="platform-model", llm_temperature_mode="omit", llm_extra_body={"extra_body": {"thinking": {"type": "disabled"}}}, + llm_metadata={"a2a_grant_id": "grant-1"}, ), completion_box={}, ) @@ -113,6 +114,7 @@ def test_reviewer_graph_uses_forwarded_llm_credentials( assert getattr(creds, "api_key") == "scoped-grant-token" assert getattr(creds, "temperature_mode") == "omit" assert getattr(creds, "extra_body") == {"extra_body": {"thinking": {"type": "disabled"}}} + assert getattr(creds, "metadata") == {"a2a_grant_id": "grant-1"} def test_reviewer_graph_rejects_missing_forwarded_llm_credentials(