27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
/** Shared conversation view, selection, and store-state contracts. */
|
|
|
|
/** Tool call identity as carried on the wire (branded upstream in connection). */
|
|
export type CallId = string
|
|
|
|
/** Selection target for the details linkage channel (toolcall is the step special case). */
|
|
export interface SelectionTarget { turnSeq: number; stepSeq?: number; callId?: CallId; toolName?: string }
|
|
|
|
/**
|
|
* One conversation view tab, projected from a 'conversation.view' slot
|
|
* entry's registration options (label falls back to the entry id).
|
|
*/
|
|
export interface ViewTab { id: string; label: string }
|
|
|
|
/**
|
|
* Per-session state shared by conversation, chat-view, and details slots.
|
|
* Unknown persisted view ids fall back to the first registered view.
|
|
*/
|
|
export interface ChatStoreState {
|
|
/** Details-linkage channel (conversation writes, details reads). */
|
|
selection: SelectionTarget | null
|
|
/** Composer draft (persisted; survives session switches and reloads). */
|
|
draft: string
|
|
/** Active conversation view id ('conversation.view' entry id); null falls back to the first view. */
|
|
view: string | null
|
|
}
|