| 1 |
import { makeId } from '@agent/lib/util'; |
| 2 |
import { create } from 'zustand'; |
| 3 |
|
| 4 |
// Progress statuses live outside the message chain so they're never persisted |
| 5 |
// or sent to the AI; the chat store clears them on every real message. |
| 6 |
export const useStatusStore = create((set, get) => ({ |
| 7 |
statuses: [], |
| 8 |
// Never cleared — navigation replaces the page. |
| 9 |
leavingPage: false, |
| 10 |
setLeavingPage: (leavingPage) => set({ leavingPage }), |
| 11 |
pushStatus: (type, label) => |
| 12 |
set((state) => ({ |
| 13 |
statuses: [...state.statuses, { id: makeId(), type, label }], |
| 14 |
})), |
| 15 |
clearStatuses: () => |
| 16 |
set((state) => (state.statuses.length ? { statuses: [] } : state)), |
| 17 |
getLatestStatus: () => get().statuses.at(-1) ?? null, |
| 18 |
})); |
| 19 |
|