import { atom } from 'nanostores' import type { ActiveTool, ActivityItem, Msg, SubagentProgress } from '../types.js' const buildTurnState = (): TurnState => ({ activity: [], outcome: '', reasoning: '', reasoningActive: false, reasoningStreaming: false, reasoningTokens: 0, streamPendingTools: [], streamSegments: [], streaming: '', subagents: [], toolTokens: 0, tools: [], turnTrail: [] }) export const $turnState = atom(buildTurnState()) export const getTurnState = () => $turnState.get() export const patchTurnState = (next: Partial | ((state: TurnState) => TurnState)) => $turnState.set(typeof next === 'function' ? next($turnState.get()) : { ...$turnState.get(), ...next }) export const resetTurnState = () => $turnState.set(buildTurnState()) export interface TurnState { activity: ActivityItem[] outcome: string reasoning: string reasoningActive: boolean reasoningStreaming: boolean reasoningTokens: number streamPendingTools: string[] streamSegments: Msg[] streaming: string subagents: SubagentProgress[] toolTokens: number tools: ActiveTool[] turnTrail: string[] }