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.
