77 lines
2.9 KiB
TypeScript
77 lines
2.9 KiB
TypeScript
export interface EventState {
|
|
mainSessionIdle: boolean
|
|
mainSessionError: boolean
|
|
lastError: string | null
|
|
lastOutput: string
|
|
lastPartText: string
|
|
currentTool: string | null
|
|
/** Set to true when the main session has produced meaningful work (text, tool call, or tool result) */
|
|
hasReceivedMeaningfulWork: boolean
|
|
/** Count of assistant messages for the main session */
|
|
messageCount: number
|
|
/** Current agent name from the latest assistant message */
|
|
currentAgent: string | null
|
|
/** Current model ID from the latest assistant message */
|
|
currentModel: string | null
|
|
/** Current model variant from the latest assistant message */
|
|
currentVariant: string | null
|
|
/** Current message role (user/assistant) — used to filter user messages from display */
|
|
currentMessageRole: string | null
|
|
/** Agent profile colors keyed by display name */
|
|
agentColorsByName: Record<string, string>
|
|
/** Part type registry keyed by partID (text, reasoning, tool, ...) */
|
|
partTypesById: Record<string, string>
|
|
/** Whether a THINK block is currently open in output */
|
|
inThinkBlock: boolean
|
|
/** Tracks streamed reasoning text to avoid duplicates */
|
|
lastReasoningText: string
|
|
/** Whether compact thinking line already printed for current reasoning block */
|
|
hasPrintedThinkingLine: boolean
|
|
/** Last rendered thinking line width (for in-place padding updates) */
|
|
lastThinkingLineWidth: number
|
|
/** Message role lookup by message ID to filter user parts */
|
|
messageRoleById: Record<string, string>
|
|
/** Last rendered thinking summary (to avoid duplicate re-render) */
|
|
lastThinkingSummary: string
|
|
/** Whether text stream is currently at line start (for padding) */
|
|
textAtLineStart: boolean
|
|
/** Whether reasoning stream is currently at line start (for padding) */
|
|
thinkingAtLineStart: boolean
|
|
/** Current assistant message ID — prevents counter resets on repeated message.updated for same message */
|
|
currentMessageId: string | null
|
|
/** Assistant message start timestamp by message ID */
|
|
messageStartedAtById: Record<string, number>
|
|
/** Prevent duplicate completion metadata lines per message */
|
|
completionMetaPrintedByMessageId: Record<string, boolean>
|
|
}
|
|
|
|
export function createEventState(): EventState {
|
|
return {
|
|
mainSessionIdle: false,
|
|
mainSessionError: false,
|
|
lastError: null,
|
|
lastOutput: "",
|
|
lastPartText: "",
|
|
currentTool: null,
|
|
hasReceivedMeaningfulWork: false,
|
|
messageCount: 0,
|
|
currentAgent: null,
|
|
currentModel: null,
|
|
currentVariant: null,
|
|
currentMessageRole: null,
|
|
agentColorsByName: {},
|
|
partTypesById: {},
|
|
inThinkBlock: false,
|
|
lastReasoningText: "",
|
|
hasPrintedThinkingLine: false,
|
|
lastThinkingLineWidth: 0,
|
|
messageRoleById: {},
|
|
lastThinkingSummary: "",
|
|
textAtLineStart: true,
|
|
thinkingAtLineStart: false,
|
|
currentMessageId: null,
|
|
messageStartedAtById: {},
|
|
completionMetaPrintedByMessageId: {},
|
|
}
|
|
}
|