dsh-envelope-highlight
Restore syntax highlighting of read-tool results inside run_code (PTC / Code Mode).
Problem
In native mode, the read tool's result renders as a line-numbered,
syntax-highlighted code view (ReadBlock + shiki). In PTC / Code Mode,
the model calls tools through run_code programs, and read results arrive in
two shapes — both rendered as plain text by the official UI:
- Structured object
{ path, lines, totalLines } — returned from the
program, it lands in the run_code card's OUT area as raw JSON;
- Envelope text (
<path>…</path>\n<type>file</type>\n<content>…\n</content>,
tool-fs's formatReadOutput) — the read sub-call (code-dispatch) content.
The syntax highlighting is lost in both cases.
Solution
This plugin registers two keyed tool.call.toolview views:
run_code (not registered by the shipped UI — zero replacement risk):
read envelopes and read-result JSON in the OUT area are parsed and rendered
as ReadBlock — file line numbers in the gutter, shiki syntax
highlighting, the same visual language as the native read card.
read (priority: -1, shadowing the official row): code-dispatch
sub-calls (whose resultView is always null) get their envelope content
rendered as ReadBlock; native read calls are reproduced exactly like the
official ReadRow.
Non-read output stays exactly as before.
Install
dsh plugin --profile <profile> add dsh-envelope-highlight
Build (from source)
# requires a dsh source checkout (DSH_CHECKOUT) with tsc/tsdown
npm run build # host (tsc) + client (tsdown) → lib/
npm pack
Scope
- ✅
run_code chat-row result card: read envelopes + read-result JSON →
highlighted ReadBlock
- ✅
read sub-call rows under the run_code tree (code-dispatch) →
highlighted ReadBlock; native read rows unchanged
- ❌ Details panel (
conversation.details.tool) — not covered yet
License
MIT