Skip to content

v0.1.4 — harness 0.2.0, and the tool-call fix it exposed

Latest

Choose a tag to compare

@scavanger2221 scavanger2221 released this 29 Sep 15:05

Install:

dsh plugin --profile web add github:scavanger2221/dsh-llm-opencode-go#v0.1.4

Then restart the app (dsh web) and set the key in Settings → Models → OpenCode Go.

DeepSeek Harness 0.2.0-rc.2 or later is required: it is the release that ships pi-ai 0.87, whose conversion this route mirrors.

Fixed

  • Tool calls were not reaching the model on harness 0.2.0. pi-ai 0.87 moved the prompt/tool fold out of the API implementations and into its Models registry — Models.streamSimple runs normalizeContext, which turns systemPrompt and tools into the leading system message the APIs now read, and no protocol reads context.systemPrompt or context.tools any more. dsh-llm-pi-ai streams through that registry; this route dispatches through the provider it builds itself, so every request went out with the user turn alone. The model answered as a bare chat model: "I don't have access to a bash tool in this environment", or its native DSML tool markup as plain text. lib/adapter.js now folds the context with the same public normalizeContext the registry uses, so the tool declaration and the system prompt reach the wire again and a streamed tool_calls reply becomes one tool-call block.
  • Replayed Anthropic history restored the wrong model identity. The replay envelope now records the requested model in model and the served one beside it in responseModel for every protocol, mirroring dsh-llm-pi-ai 0.2.0 and the pi-ai 0.87 behaviour it follows.

Changed

  • The @earendil-works/pi-ai peer range is now ^0.87.1. Harness 0.2.0-rc.2 supplies 0.87.1, which the old ^0.85.1 range excluded.
  • The documented harness floor is raised to 0.2.0-rc.2 in both READMEs, and AGENTS.md states the context-normalization rule so the next pi-ai upgrade cannot repeat this.

Verified

  • The adapter, cache, usage, host and card suites, run from an installed copy. The adapter suite now pins the wire request (the tool declaration and the system prompt reach it) and the streamed tool_calls delta; without the adapter fix it fails on "the tool declaration reaches the wire".
  • The live endpoint, through this adapter: deepseek-v4.1-flash (openai-completions) and minimax-m3 (anthropic-messages) each return a real bash tool call.