feat: add goose mode to the chat window (#1471)

This commit is contained in:
Yingjie He
2025-03-03 13:56:37 -08:00
committed by GitHub
parent 7edb624bdc
commit 27b9cd9288

View File

@@ -5,6 +5,7 @@ import { Sliders } from 'lucide-react';
import { ModelRadioList } from './settings/models/ModelRadioList';
import { Document, ChevronUp, ChevronDown } from './icons';
import type { View } from '../ChatWindow';
import { getApiUrl, getSecretKey } from '../config';
export default function BottomMenu({
hasMessages,
@@ -14,6 +15,7 @@ export default function BottomMenu({
setView: (view: View) => void;
}) {
const [isModelMenuOpen, setIsModelMenuOpen] = useState(false);
const [gooseMode, setGooseMode] = useState('approve');
const { currentModel } = useModel();
const { recentModels } = useRecentModels(); // Get recent models
const dropdownRef = useRef<HTMLDivElement>(null);
@@ -35,6 +37,29 @@ export default function BottomMenu({
};
}, [isModelMenuOpen]);
useEffect(() => {
const fetchCurrentMode = async () => {
try {
const response = await fetch(getApiUrl('/configs/get?key=GOOSE_MODE'), {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Secret-Key': getSecretKey(),
},
});
if (response.ok) {
const { value } = await response.json();
setGooseMode(value);
}
} catch (error) {
console.error('Error fetching current mode:', error);
}
};
fetchCurrentMode();
}, []);
// Add effect to handle Escape key
useEffect(() => {
const handleEsc = (event: KeyboardEvent) => {
@@ -76,6 +101,17 @@ export default function BottomMenu({
<ChevronUp className="ml-1" />
</span>
<div className="relative flex items-center ml-6">
<div
className="flex items-center cursor-pointer"
onClick={() => {
setView('settings');
}}
>
<span>Goose Mode: {gooseMode}</span>
</div>
</div>
{/* Model Selector Dropdown - Only in development */}
<div className="relative flex items-center ml-auto mr-4" ref={dropdownRef}>
<div