1jehuang / 1jehuang/jcode

Antigravity Gemini 3.6 Flash tool calls are rendered as plain text

Open
#845 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

autonomous: no bug priority: high regression triage: needs-decision
Dominant language
Rust
Stars
19.9k
Forks
2.3k
Avg merge
2d 7h
Merged PRs (30d)
30

Description

Description

When using Gemini 3.6 Flash through the Antigravity provider, a tool invocation can be surfaced in the assistant transcript as serialized plain text instead of being dispatched through Jcode's tool system.

The observed output has this shape:

[previous tool call] todo({“...” : ...})

The quotation marks may be typographic rather than valid JSON. In this case, the text is displayed as model output rather than producing a confirmed todo tool result.

This appears related to #518, but the observed symptom here is raw pseudo-tool-call text rather than the thought_signature HTTP 400 error described there.

Expected behavior

  • Structured tool calls from Antigravity are dispatched through Jcode's tool registry.
  • Tool-call syntax is not rendered as ordinary assistant text.
  • Jcode does not execute or trust arbitrary text that resembles a tool call.
  • Todo and completion state change only after the corresponding tool returns successfully.
  • Malformed or unsupported provider tool events produce a clear compatibility error.

Actual behavior

  • A tool call is emitted or displayed as ordinary text.
  • The serialized call is not reliably executed by Jcode.
  • The transcript can appear to report completed work even when the corresponding tool invocation was not confirmed.

Reproduction

  1. Run Jcode with Gemini 3.6 Flash through Antigravity.

  2. Enable Jcode tools, including todo.

  3. Ask the model to perform a task requiring multiple tool calls.

  4. Inspect the transcript after an earlier tool result.

  5. Check whether a later call appears as native tool output or as text resembling:

    [previous tool call] tool_name({...})
    

Suggested investigation

  • Preserve Antigravity/Gemini native function-call events through the provider boundary.
  • Map them to Jcode's provider-neutral tool-call representation.
  • Validate tool names, call IDs, and arguments before dispatch.
  • Add a dispatcher guard for textual pseudo-calls.
  • Add regression tests for sequential calls, malformed JSON, smart quotes, unknown tools, and false completion state.

Environment

  • Jcode: v0.71.1 (dd8755f7e)
  • Provider: antigravity
  • Model: Gemini 3.6 Flash
  • OS: Linux x86_64

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the Antigravity provider boundary and the provider-neutral tool-call dispatcher, then trace how native Gemini events become transcript output. Add regression coverage for sequential calls, malformed JSON, smart quotes, unknown tools, and false completion state; done means valid calls dispatch only after validation while pseudo-calls produce a clear compatibility error.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ai, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.