description: "Whole-log turn outline for clients and maintainers composing or debugging the turnOutline projection unit behind full-session turn navigation."
English | 中文
This package gives history clients a whole-session outline of every started turn, including bounded prompt and settled-response previews. Clients can navigate turns that are not yet loaded and page backward from the exact event sequence needed to load a selected turn. It fits assemblies that provide session projections; elsewhere, clients continue using loaded-window navigation. Previews exclude injected context and tool results, and a response appears only after its turn settles.
Mount the plugin beside the session store and the projection registry when clients should navigate every turn of a session without holding its complete event log. The unit registers only when the registry is present.
- name: '@deepseek-ai/dsh-session'
- name: '@deepseek-ai/dsh-session-projection'
- name: '@deepseek-ai/dsh-session-turn-outline'
| Field | Meaning |
|---|---|
turn |
Host-assigned turn number from the turn/start payload |
seq |
The turn's turn/start event seq — paging a window back through this seq loads the whole turn |
prompt |
Preview of the turn's first human prompt (space-joined text blocks, collapsed whitespace, 50-character cap with a trailing ellipsis when clipped — one rail-card line); '' until an eligible prompt lands |
response |
Preview of the turn's final text-bearing assistant message (same normalization, 120-character cap — up to three rail-card lines); '' until the turn ends with assistant text |
The wire value is the complete entry array, strictly increasing by turn (whole-value rule): consumers replace, never merge. Prompts fill only from user/message events with the human user source, so injected context and tool results never leak into navigation; a turn whose prompt is images-only keeps '' and consumers label it by number. The response buffers as a draft while its turn streams and commits at turn/end; the change feed's raw-view identity gate keeps draft-only changes quiet, so the outline pushes at most three times per turn — boundary, prompt, settled response. Preview budgets match the chat rail's loaded-turn previews, so a turn shows the same words before and after its events load.
The unit is inert without the projection registry: inject keeps the fiber pending and nothing registers, so other assemblies lack the turnOutline key. Unmounting the plugin removes the key, because registrations are effects on the mounting fiber. Persisted-cache rows are schema-validated on restore — including the strictly-increasing turn order — so a corrupt row is discarded instead of seeding a broken fold.
Read these pages when the unit's contract is not enough. They move from the registry that drives units to adjacent session packages.
None, as the turnOutline unit folds already-logged turn boundaries into a client-facing read model and registers nothing model-facing.
None; the package never assembles or sends provider requests.
These limits define what the outline describes and when the unit is absent. They are current package constraints.
turn/end, so an open turn (or one whose end never logged) shows a prompt-only preview until the boundary lands.'' — images-only and command-only turns are navigable but labeled by number, and a turn whose steps emit no text gets no response preview.turnOutline key, and their consumers fall back to loaded-window navigation.