fix: fix tests and lint

This commit is contained in:
Richard Tang
2026-03-02 22:46:38 -08:00
parent bb227b3d73
commit 26481e27a6
6 changed files with 27 additions and 16 deletions
+1 -4
View File
@@ -159,10 +159,7 @@ class CredentialValidationResult:
f" {c.env_var} for {_label(c)}"
f"\n Connect this integration at hive.adenhq.com first."
)
lines.append(
"\nIf you've already set up credentials, "
"restart your terminal to load them."
)
lines.append("\nIf you've already set up credentials, restart your terminal to load them.")
return "\n".join(lines)
+1 -1
View File
@@ -740,7 +740,7 @@ class GraphSpec(BaseModel):
# GCU nodes must be referenced in at least one parent's sub_agents
referenced_subagents = set()
for node in self.nodes:
for sa_id in (node.sub_agents or []):
for sa_id in node.sub_agents or []:
referenced_subagents.add(sa_id)
orphaned = gcu_node_ids - referenced_subagents
+8 -3
View File
@@ -97,8 +97,7 @@ def validate_credentials(
# Preserve the original validation_result so callers can
# inspect which credentials are still missing.
exc = CredentialError(
"Credential setup incomplete. "
"Run again after configuring the required credentials."
"Credential setup incomplete. Run again after configuring the required credentials."
)
if hasattr(e, "validation_result"):
exc.validation_result = e.validation_result # type: ignore[attr-defined]
@@ -128,10 +127,16 @@ def credential_errors_to_json(exc: Exception) -> dict:
failed = result.failed
missing = []
for c in failed:
if c.available:
status = "invalid"
elif c.aden_not_connected:
status = "aden_not_connected"
else:
status = "missing"
entry: dict = {
"credential": c.credential_name,
"env_var": c.env_var,
"status": "invalid" if c.available else ("aden_not_connected" if c.aden_not_connected else "missing"),
"status": status,
}
if c.tools:
entry["tools"] = c.tools
@@ -187,7 +187,9 @@ def register_queen_lifecycle_tools(
await loop.run_in_executor(
None,
lambda: validate_credentials(
runtime.graph.nodes, interactive=False, skip=False,
runtime.graph.nodes,
interactive=False,
skip=False,
),
)
except CredentialError as e:
@@ -245,9 +247,7 @@ def register_queen_lifecycle_tools(
# Build structured error with per-credential details so the
# queen can report exactly what's missing and how to fix it.
error_payload = credential_errors_to_json(e)
error_payload["agent_path"] = str(
getattr(session, "worker_path", "") or ""
)
error_payload["agent_path"] = str(getattr(session, "worker_path", "") or "")
# Emit SSE event so the frontend opens the credentials modal
bus = getattr(session, "event_bus", None)
+6 -3
View File
@@ -47,8 +47,11 @@ class DummyLLMProvider(LLMProvider):
) -> AsyncIterator[StreamEvent]:
self._call_count += 1
if self._call_count == 1:
# First call: set the output via tool call
# Each execution takes 2 LLM calls:
# - Odd calls (1, 3, 5, ...): set output via tool call
# - Even calls (2, 4, 6, ...): finish with text
if self._call_count % 2 == 1:
# First call of each execution: set the output via tool call
yield ToolCallEvent(
tool_use_id=f"tc_{self._call_count}",
tool_name="set_output",
@@ -56,7 +59,7 @@ class DummyLLMProvider(LLMProvider):
)
yield FinishEvent(stop_reason="tool_use", input_tokens=10, output_tokens=10)
else:
# Subsequent calls: just finish with text
# Second call of each execution: finish with text
yield TextDeltaEvent(content="Done.", snapshot="Done.")
yield FinishEvent(stop_reason="end_turn", input_tokens=5, output_tokens=5)
@@ -106,7 +106,13 @@ fetch_emails_node = NodeSpec(
node_type="event_loop",
client_facing=False,
max_node_visits=0,
input_keys=["rules", "max_emails", "next_page_token", "last_processed_timestamp", "query"],
input_keys=[
"rules",
"max_emails",
"next_page_token",
"last_processed_timestamp",
"query",
],
output_keys=["emails", "next_page_token"],
nullable_output_keys=["next_page_token"],
system_prompt="""\