Back to home@flashyiyi

dsh-envelope-highlight

Restore syntax highlighting of read/write tool envelopes inside run_code (PTC / Code Mode) result cards

Stars
0
Language
TypeScript
Created
Aug 28, 2026
Updated
Aug 29, 2026
GitHub repo

Introduction

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:

  1. Structured object { path, lines, totalLines } — returned from the program, it lands in the run_code card's OUT area as raw JSON;
  2. 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