Back to home

ciceroyang

dsh-trajectory

Render a DeepSeek Harness session log into a shareable HTML trajectory document

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-trajectory

Renders a DeepSeek Harness session log into a shareable HTML trajectory document — the offline, zero-dependency cousin of the official Trajectory view. "Every run leaves a trace", made portable.

Usage

node trajectory.mjs <session.jsonl.zstd>
node trajectory.mjs <sessions-dir>      # newest log wins
node trajectory.mjs <sessions-dir> --all # merge every session into one chronological volume
node trajectory.mjs <log> --out report.html

Output: one self-contained HTML file (inline CSS, no external assets) plus the first 16 hex chars of its SHA-256.

What the document contains

  • session metadata (id / workspace / time range / turn count / token ledger)
  • per-turn timeline: user asks, tool calls (argument briefs + error markers), assistant excerpts
  • end-reason annotations (completed / blocked / error / …)

Technical notes

  • multi-frame zstd frame scan + per-frame decode (the single-shot-decompress pitfall, algorithm ported from the official format.ts)
  • zero dependencies, plain ESM; the HTML renderer is a pure function, fully unit-testable
  • all output is HTML-escaped, so hostile log text cannot become script

Use cases

  • delivery audit: hand the trajectory to a reviewer with a checkable SHA-256
  • incident review: tool errors visible in their exact timeline position
  • sharing: no DSH installation needed — open in any browser

Sibling tools

  • dsh-report-studio: session → daily/weekly/handoff reports with receipts
  • dsh-plugin-starter / dsh-doctor: plugin scaffold / environment doctor