Skip to content

Releases: amlyczz/dsh-agy-link

v0.3.5

Choose a tag to compare

@amlyczz amlyczz released this 20 Aug 03:17

Sliding activity watchdog for long-running tasks

v0.3.4 — first-turn thinking, deferred placement

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 11:32

v0.3.4 — first-turn thinking chip restored, placement fixed by deferral

agy attaches usage (and with it thinking_tokens) to the answer step's
DONE tail, after the text fragments already streamed. Two previous
attempts at placing the thinking annotation both failed:

  • v0.3.2 annotated at DONE arrival -> the chip wedged mid-sentence
    between two text fragments;
  • v0.3.3 guarded against that by skipping the annotation whenever the
    step had streamed text -> the FIRST turn of a conversation (a simple
    streamed answer) showed no thinking at all, and later tool turns then
    showed theirs, reading as "the first turn's thinking arrived late".

Now the annotation is deferred: steps that have not streamed text yet
(thinking-only turns, one-shot envelopes) annotate first as before;
streamed steps emit the chip right after the step's text completes, so
it is always present and never inside a sentence. Verified against a
live agy 1.1.15 run: fresh conversation, trivial question -> reasoning
chip present, full text intact, stop finish.

v0.3.3 — run_code dispatch path + clean thinking placement

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 11:20

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.

v0.3.2 — fix unknown-tool race + one-shot thinking

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 10:58

Fixes two regressions reported on 0.3.1:

  • unknown tool "agy_tool": tool registration used a one-shot ctx.get at plugin load, losing the race against the tools service startup (same root cause as the earlier /status 404). Registration is now reactive via ctx.inject and survives any load order.
  • First question showed no thinking: agy answers trivial questions in a single DONE envelope (text + usage together, no separate thinking step), which the mapper never annotated. Every text step carrying thinking_tokens now annotates the thinking turn first.

v0.3.1 — fuller agy tool vocabulary

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 10:38

Maps the rest of the agy tool vocabulary (view_file, list_dir, delete_file, search_file_content) onto the matching native card kinds: read cards with follow-along file locations, delete cards, and search cards.

v0.3.0 — native tool cards

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 10:34

Native tool cards. agy tool activity now renders with DSH's own tool-call UI instead of text annotations: terminal cards for run_command, inline diff cards for file writes, read/search cards for the rest, and errored tools as native error results.

Each completed agy tool step cuts the adapter's span with finish: tool-calls addressed to the internal agy_tool mirror; DSH's agent loop dispatches it (replaying the recorded output), records real tool events, and re-calls the provider to continue the same run.

v0.2.9 - tool activity in the reply body

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 09:57

What's changed (0.2.9)

Tool activity now renders in the reply body

User feedback on 0.2.8: tool annotations buried inside the DSH thinking fold were invisible and felt wrong. agy tools now render as visible lines in the message body:

🔧 [agy tool: write_to_file] {"TargetFile": "..."}
-> 7 lines, 180 bytes

They cannot become native DSH tool cards: a finish: tool-calls would make the DSH agent try to execute tools it does not own — agy runs its own closed tool loop inside its child process.

The thinking panel keeps only real thinking signal

  • [agy thinking turn · N thinking tokens] turn annotations (agy print mode never streams thinking text — verified against the live CLI at effort=high)
  • terminal error notes when a run ends with an error

74 tests green.

v0.2.8 - fix real agy 1.1.15 stream parsing + webserver race

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 09:38

What's fixed (0.2.8)

Real agy 1.1.15 stream format

The parser only understood hypothesized flat event shapes — the live CLI nests every step payload under a step_update envelope and uses a different vocabulary (agent_response + text_delta fragments, tool with tool_name/tool_info). Thinking and tool activity were silently dropped; only the final result text survived. Both shapes are now parsed.

Visible thinking turns + tool activity

agy print mode never streams thinking text (only thinking_tokens usage), so each thinking turn surfaces as [agy thinking turn · N thinking tokens], tools render [agy tool: name] args -> output, failures render [agy tool error: name] message.

Settings page was stuck on "binary: not found"

/plugins/agy-link/* routes never registered on dsh web — a one-shot ctx.get('webServer') raced the server startup. Routes now attach reactively via ctx.inject.

Auth always showed "unknown"

Status surfaces now lazily probe the real login state via agy models (60s cache) and report ok / signed-out truthfully.

agy models deadlock

agy reads stdin when it is a pipe and never sees EOF — model discovery silently timed out and the catalog always fell back. Stdin now closes right after spawn. Also parses the TAB-separated table format.

Removed: sidebar footer AGY button

Login (QR + authorization code) and mode/effort controls moved to Settings → Antigravity.

74 tests green.

v0.2.7

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 08:54

What's Changed

  • Visible agy status in DSH:
    • conversation header AGY pill
    • Settings → Antigravity status page
    • sidebar footer label
  • Workspace auto-binding: agy runs in the DSH session cwd when workspaceRoot is not configured
  • New /agy workspace [path] command and DSH_AGY_WORKSPACE_ROOT env
  • README language switcher at the top (中文 / English)

Full diff: v0.2.6...v0.2.7

v0.2.6 - fix streaming: lossless-JSON chunks

Choose a tag to compare

@amlyczz amlyczz released this 19 Aug 07:58

v0.2.6 - fix streaming: lossless-JSON chunks

Real agy sessions crashed with: session event "assistant/chunk" carries non-JSON-serializable data.

DSH's session layer rejects any chunk whose fields are undefined (lossless-JSON boundary). Four sites assigned undefined into chunk/event objects - every usage event, replayState-less finish, and parser event could kill the turn, which also stopped thinking from streaming:

  • usageFromRaw: cacheRead/cacheWrite/reasoningTokens set to undefined
  • finish: replayState: undefined when no conversation id
  • parseUsage: input/output/thinking/cache fields set to undefined
  • parser events: tool/error/conversationId set to undefined

All four now omit absent optional fields instead of assigning undefined. New test/lossless-json.test.ts replicates the dsh-session lossless-JSON walker and asserts every emitted chunk survives it (63 tests green).