Repository navigation
Description
Found 2026-10-30 by Codex review (P1) on the opencode route-audit PR, and verified against the source:
bin/agy-proxy.mjs is text-only. It builds its prompt solely from body.messages (formatPrompt / extractLatestUserPrompt, ~line 864) and never reads body.tools; its chat responses contain only text content with finish_reason: 'stop' (~line 1057) and never structured tool_calls. bin/antigravity-ls-proxy.mjs bridges tool calls; agy does not.
Consequence: seating antigravity-agy as a leaf in a tool-using route pool (gemini-flash-plan, sonnet-plan, opus-plan) silently terminates agent turns — the model answers in plain text, the turn ends as a 'success', and no failover to a tool-capable door happens. Until this is fixed, agy leaves belong only in text/burn roles (its existing argon seats), never as failover for tool-using pools.
Acceptance: the proxy forwards tool definitions to the agy backend and returns structured tool_calls (streaming and non-streaming) in the OpenAI shape, with tests alongside the existing bin/agy-proxy.test.mjs suite. After it lands, the route pools named above can gain agy leaves for a genuine second Antigravity door (the ls proxy outage of 2026-10-24/25 is the motivating incident: 38 ConnectionRefused failures in gemini-flash-plan with nothing to fail over to).
Activity
fix(opencode-routes): withdraw the agy leaves - agy-proxy is text-onl…
dezren39 commentedon Oct 30, 2026
Intake review
Related: bin/antigravity-ls-proxy.mjs (the sibling proxy that already bridges tool calls — the reference implementation); #2624 (commandcode-proxy unit GC defect, same proxy family, different issue)
Notes: Found 2026-10-30 by Codex review (P1) on the opencode route-audit PR and verified against source: bin/agy-proxy.mjs is text-only — it builds its prompt from body.messages (~line 864), never reads body.tools, and returns only text content with finish_reason 'stop' (~line 1057). The body already states its acceptance inline (forward tool definitions, return structured tool_calls streaming and non-streaming in OpenAI shape, tests alongside bin/agy-proxy.test.mjs), so this pass is labels-only. Until fixed, agy leaves belong only in text/burn roles, never as failover for tool-using pools.
Risks: Seating agy in a tool-using pool today silently terminates agent turns as 'success' with no failover — a correctness failure that looks like a completed turn in every dashboard.
Suggested approach: Port the tool-call bridging shape from bin/antigravity-ls-proxy.mjs: forward body.tools to the agy backend, translate its responses into OpenAI tool_calls for both streaming and non-streaming paths, and extend bin/agy-proxy.test.mjs to cover a full tool round-trip.
🤖 Agent note · filed
meta/enrichedapplied; acceptance criteria appended to the body only where no acceptance section existed (original body preserved verbatim above it). Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found in this pass's search.developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
16 remaining items
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
queue/8634-2603-agy-proxy-tool-calls, tests 21/21 (node --test bin/agy-proxy.test.mjs)dezren39 commentedon Nov 8, 2026
Partial verification — staying open (2026-11-07 done-task-only audit, tracking: #7016).
Queue task(s) [7958, 8634] were marked done, and some work did land:
No merged change closes this issue's full scope, so the done status is not treated as completion. Remainder re-queued as triage task 11650.
dezren39 commentedon Nov 8, 2026
🤖 Agent note · done