v0.3.3 — run_code dispatch path + clean thinking placement
v0.3.3 — ride the run_code dispatch path; stop mid-text thinking chips
Fixes the two issues reported on 0.3.2 in the live GUI:
- unknown tool "agy_tool" on dispatch: this DSH deployment only lets a
model call run_code directly; every other tool must be invoked from
inside a run_code program. Span cuts now address run_code with a
generated one-line program that calls the registered agy_tool mirror —
the inner dispatch replays the recording and renders the native tool
card (terminal / diff / read / search). Cursor-only (run, step)
invocations are first-class: the mirror schema makes tool/input optional
and presenters enrich them from the recording. - thinking chip wedged mid-text: agy streams answers in fragments and
attaches thinking_tokens to the DONE tail; v0.3.2 annotated at that
point, splitting the reply. The annotation now fires only while the step
has not yet streamed text — one-shot answers keep their leading thinking
line, streamed answers stay clean.
Also: tool cards read agy's PascalCase argument keys (CommandLine,
AbsolutePath, SearchDirectory, WorkingDirectory, …) instead of falling
back to raw JSON titles.