import { useEffect, useState, useCallback } from 'react'; import { all_goose_modes, ModeSelectionItem } from './ModeSelectionItem'; import { useConfig } from '../../ConfigContext'; import { ConversationLimitsDropdown } from './ConversationLimitsDropdown'; import { updateSession } from '../../../api'; export const ModeSection = ({ sessionId }: { sessionId?: string }) => { const [currentMode, setCurrentMode] = useState('auto'); const [maxTurns, setMaxTurns] = useState(1000); const { config, read, upsert } = useConfig(); const handleModeChange = async (newMode: string) => { try { if (sessionId) { await updateSession({ body: { session_id: sessionId, goose_mode: newMode } }); } await upsert('GOOSE_MODE', newMode, false); setCurrentMode(newMode); } catch (error) { console.error('Error updating goose mode:', error); throw new Error(`Failed to store new goose mode: ${newMode}`); } }; useEffect(() => { const mode = config.GOOSE_MODE as string | undefined; if (mode) { setCurrentMode(mode); } }, [config.GOOSE_MODE]); const fetchMaxTurns = useCallback(async () => { try { const turns = (await read('GOOSE_MAX_TURNS', false)) as number; if (turns) { setMaxTurns(turns); } } catch (error) { console.error('Error fetching max turns:', error); } }, [read]); const handleMaxTurnsChange = async (value: number) => { try { await upsert('GOOSE_MAX_TURNS', value, false); setMaxTurns(value); } catch (error) { console.error('Error updating max turns:', error); } }; useEffect(() => { fetchMaxTurns(); }, [fetchMaxTurns]); return (
{/* Mode Selection */} {all_goose_modes.map((mode) => ( ))} {/* Conversation Limits Dropdown */}
); };