import { create } from "zustand"; export interface TerminalJob { id: number; scriptPath: string; command: string[]; status: number | null; stdout: string; stderr: string; stdin: string; isRunning: boolean; } interface TerminalState { jobs: TerminalJob[]; isOpen: boolean; activeJobId: number | null; openTerminal: () => void; closeTerminal: () => void; addJob: (job: Omit) => void; updateJob: (id: number, updates: Partial) => void; setActiveJob: (id: number | null) => void; clearJobs: () => void; removeJob: (id: number) => void; } export const useTerminalStore = create((set) => ({ jobs: [], isOpen: false, activeJobId: null, openTerminal: () => set({ isOpen: true }), closeTerminal: () => set({ isOpen: false }), addJob: (job) => set((state) => ({ jobs: [ ...state.jobs, { ...job, status: null, stdout: "", stderr: "", stdin: "", isRunning: true, }, ], activeJobId: job.id, })), updateJob: (id, updates) => set((state) => ({ jobs: state.jobs.map((j) => (j.id === id ? { ...j, ...updates } : j)), })), setActiveJob: (id) => set({ activeJobId: id }), clearJobs: () => set({ jobs: [], activeJobId: null }), removeJob: (id) => set((state) => { const newJobs = state.jobs.filter((j) => j.id !== id); return { jobs: newJobs, activeJobId: state.activeJobId === id ? newJobs.length > 0 ? newJobs[newJobs.length - 1].id : null : state.activeJobId, }; }), }));