termcode
Version:
Superior terminal AI coding agent with enterprise-grade security, intelligent error recovery, performance monitoring, and plugin system - Advanced Claude Code alternative
59 lines (58 loc) • 1.88 kB
JavaScript
import { useState, useCallback } from 'react';
export function useAppState(props) {
const [appState, setAppState] = useState({
mode: 'easy',
activePane: 'prompt',
showCommandPalette: false,
provider: props.provider,
model: props.model,
status: 'Ready',
branch: props.session?.branchName || 'main',
output: [],
currentTask: '',
currentDiff: null,
streaming: false,
config: props.config,
session: props.session,
projectInfo: props.projectInfo,
});
const setMode = useCallback((mode) => {
setAppState(prev => ({ ...prev, mode }));
}, []);
const setActivePane = useCallback((pane) => {
setAppState(prev => ({ ...prev, activePane: pane }));
}, []);
const setShowCommandPalette = useCallback((show) => {
setAppState(prev => ({ ...prev, showCommandPalette: show }));
}, []);
const addOutputLine = useCallback((line) => {
setAppState(prev => ({
...prev,
output: [...prev.output, line]
}));
}, []);
const setCurrentTask = useCallback((task) => {
setAppState(prev => ({ ...prev, currentTask: task }));
}, []);
const updateStatus = useCallback((status) => {
setAppState(prev => ({ ...prev, status }));
}, []);
const setStreaming = useCallback((streaming) => {
setAppState(prev => ({ ...prev, streaming }));
}, []);
const setCurrentDiff = useCallback((diff) => {
setAppState(prev => ({ ...prev, currentDiff: diff }));
}, []);
return {
appState,
setMode,
setActivePane,
showCommandPalette: appState.showCommandPalette,
setShowCommandPalette,
addOutputLine,
setCurrentTask,
updateStatus,
setStreaming,
setCurrentDiff,
};
}