fn tool_frames(v: &Value) -> Vec<&Value>Expand description
Every frame in a transcript line that could be a tool call or result.
Covers two genuinely different provider shapes (codex P2 on PR #2952):
- Claude stream-json — blocks inside
message.content(or a bare top-levelcontentarray). - Gemini and friends — the LINE ITSELF is the frame:
{"type":"tool_use","tool_name":…,"tool_id":…,"parameters":{…}}(seefrontend/app/view/agent/providers/gemini-translator.ts).
Without the second, every non-Claude agent silently showed no in-flight tool and no todos at all, since the array lookup just yielded nothing.