Anvia
Studio

Studio Sessions

Session summaries, transcript entries, and session store contracts.

Import from @anvia/studio.

Transcript Entries

type StudioTranscriptChatEntry = {
  entryId: number;
  kind: "message";
  role: "user" | "assistant";
  text: string;
  traceId?: string;
};

type StudioTranscriptReasoningEntry = {
  entryId: number;
  kind: "reasoning";
  reasoningId?: string;
  text: string;
};

type StudioTranscriptToolEntry = {
  entryId: number;
  kind: "tool";
  toolName: string;
  callId?: string;
  args?: string;
  result?: string;
  approval?: StudioToolApprovalTranscript;
};

type StudioTranscriptEntry =
  | StudioTranscriptChatEntry
  | StudioTranscriptReasoningEntry
  | StudioTranscriptToolEntry;

Purpose: UI-friendly transcript model derived from messages and stream events.

Return behavior: persisted inside StudioSession.transcript.

Notable errors: none directly.

Session Types

type StudioSessionSummary = {
  id: string;
  agentId: string;
  title?: string;
  createdAt: string;
  updatedAt: string;
  messageCount: number;
  metadata?: JsonObject;
};

type StudioSession = StudioSessionSummary & {
  messages: Message[];
  transcript: StudioTranscriptEntry[];
};

Purpose: session list and detail contracts.

Return behavior: stores return summaries for lists and full sessions for detail.

Notable errors: none directly.

Session Store Inputs

type StudioSessionCreateInput = {
  id: string;
  agentId: string;
  title?: string;
  metadata?: JsonObject;
};

type StudioSessionListOptions = {
  agentId?: string;
  limit: number;
};

type StudioSessionAppendInput = {
  id: string;
  title?: string;
  messages: Message[];
  transcript: StudioTranscriptEntry[];
};

Purpose: arguments for session store methods.

Return behavior: used by StudioSessionStore.

Notable errors: store implementations may reject invalid or conflicting inputs.

StudioSessionStore

type StudioSessionStore = {
  readonly kind?: string;
  listSessions(options: StudioSessionListOptions): StudioSessionSummary[] | Promise<StudioSessionSummary[]>;
  createSession(input: StudioSessionCreateInput): StudioSessionSummary | Promise<StudioSessionSummary>;
  getSession(id: string): StudioSession | undefined | Promise<StudioSession | undefined>;
  appendSessionRun(input: StudioSessionAppendInput): StudioSession | undefined | Promise<StudioSession | undefined>;
  deleteSession?(id: string): boolean | Promise<boolean>;
};

Purpose: persistence adapter for Studio sessions.

Return behavior: methods may be sync or async.

Notable errors: persistence failures should throw or reject.