works.iterative.claude.ui.transcript

Members list

Type members

Classlikes

object Preview

The one line that stands for a longer body.

The one line that stands for a longer body.

A session is mostly activity, and a column of bare tool names answers nothing. The preview is what turns Bash into Bash — command: ls: the first line that carries anything, tidied of the indentation that file and command output arrive with, and cut where it would stop being one line.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
Preview.type
final case class Transcript(sessionId: String, entries: List[TranscriptEntry])

One session's conversation as the reader sees it.

One session's conversation as the reader sees it.

Value parameters

entries

the rows in conversation order, oldest first

sessionId

the session this page was read from, echoed back so a page can be attributed to a conversation without trusting the request that asked for it

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object Transcript

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
Transcript.type
object TranscriptApi

What a host serving transcripts must answer, described once.

What a host serving transcripts must answer, described once.

These are descriptions, not servers: a consumer attaches its own logic with serverLogic and interprets the result with whichever Tapir server matches the effect system it already runs — ZIO, cats-effect, Future, sync. That is why Tapir sits on this side of the module and not in the cross-built sources: the element reaches the same address with the browser's own fetch, so the browser bundle carries none of this.

The address is taken from TranscriptEndpoint, the one place the path and its parameter are written down, so the description and the URL the element builds cannot drift apart.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Reads and writes Transcript as JSON.

Reads and writes Transcript as JSON.

The wire is a small closed vocabulary — user, agent, activity — with times as epoch milliseconds and absent values simply left out. Written by hand rather than derived, so the shape is inspectable and stays identical on both platforms the contract is compiled for.

Reads are one-way tolerant: an entry whose kind this version does not know is dropped, so a page written by a newer writer still renders everything this reader understands instead of failing whole.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Where a reader asks for a session's transcript, and how that question is written down.

Where a reader asks for a session's transcript, and how that question is written down.

The description is deliberately free of any HTTP machinery: it is a path, a query parameter, and the two pure functions that write and read them. A host mounts it with whatever server it already runs; the client builds the same URL from the same source.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

A single row of a conversation transcript.

A single row of a conversation transcript.

The categories are named after what a reader sees, not after any agent tool's log format: an agent tool reaches this model through an adapter, so the same three rows render a conversation whichever tool produced it.

at is optional because not every source timestamps every row.

Attributes

Companion
object
Supertypes
trait Enum
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
enum
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type

Why a transcript could not be delivered.

Why a transcript could not be delivered.

A reader who asked for a session and got nothing needs to know which of these happened — a mistyped id reads very differently from an archive that cannot be opened. Each case carries the words to show and the HTTP status a host answers with; the status is a plain number, so describing it costs the contract no server dependency.

Attributes

Companion
object
Supertypes
trait Enum
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
enum
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type

Turns what a conversation archive gives back into what the endpoint owes.

Turns what a conversation archive gives back into what the endpoint owes.

Both directions are pure functions, so a host's own logic is reduced to the one effectful step it cannot avoid — reading the archive — and every consumer, on whichever effect system, answers a given session identically.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type