summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/cli/src/ui/App.tsx22
-rw-r--r--packages/cli/src/ui/hooks/slashCommandProcessor.ts27
-rw-r--r--packages/cli/src/ui/hooks/useGeminiStream.ts2
3 files changed, 29 insertions, 22 deletions
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index 8b219778..8aaa1018 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -36,34 +36,32 @@ export const App = ({ config, cliVersion }: AppProps) => {
const [history, setHistory] = useState<HistoryItem[]>([]);
const [startupWarnings, setStartupWarnings] = useState<string[]>([]);
const {
+ isThemeDialogOpen,
+ openThemeDialog,
+ handleThemeSelect,
+ handleThemeHighlight,
+ } = useThemeCommand();
+
+ const {
streamingState,
submitQuery,
initError,
debugMessage,
slashCommands,
- } = useGeminiStream(setHistory, config);
+ } = useGeminiStream(setHistory, config, openThemeDialog);
const { elapsedTime, currentLoadingPhrase } =
useLoadingIndicator(streamingState);
- const {
- isThemeDialogOpen,
- openThemeDialog,
- handleThemeSelect,
- handleThemeHighlight,
- } = useThemeCommand();
-
useStartupWarnings(setStartupWarnings);
const handleFinalSubmit = useCallback(
(submittedValue: string) => {
const trimmedValue = submittedValue.trim();
- if (trimmedValue === '/theme') {
- openThemeDialog();
- } else if (trimmedValue.length > 0) {
+ if (trimmedValue.length > 0) {
submitQuery(submittedValue);
}
},
- [openThemeDialog, submitQuery],
+ [submitQuery],
);
const userMessages = useMemo(
diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.ts
index f7f93b9d..89649810 100644
--- a/packages/cli/src/ui/hooks/slashCommandProcessor.ts
+++ b/packages/cli/src/ui/hooks/slashCommandProcessor.ts
@@ -30,18 +30,10 @@ export const useSlashCommandProcessor = (
setHistory: React.Dispatch<React.SetStateAction<HistoryItem[]>>,
setDebugMessage: React.Dispatch<React.SetStateAction<string>>,
getNextMessageId: (baseTimestamp: number) => number,
+ openThemeDialog: () => void,
) => {
const slashCommands: SlashCommand[] = [
{
- name: 'clear',
- description: 'clear the screen',
- action: (_value: PartListUnion) => {
- // This just clears the *UI* history, not the model history.
- setDebugMessage('Clearing terminal.');
- setHistory((_) => []);
- },
- },
- {
name: 'help',
description: 'for help on gemini-code',
action: (_value: PartListUnion) => {
@@ -57,6 +49,22 @@ export const useSlashCommandProcessor = (
},
},
{
+ name: 'clear',
+ description: 'clear the screen',
+ action: (_value: PartListUnion) => {
+ // This just clears the *UI* history, not the model history.
+ setDebugMessage('Clearing terminal.');
+ setHistory((_) => []);
+ },
+ },
+ {
+ name: 'theme',
+ description: 'change the theme',
+ action: (_value: PartListUnion) => {
+ openThemeDialog();
+ },
+ },
+ {
name: 'exit',
description: '',
action: (_value: PartListUnion) => {
@@ -85,7 +93,6 @@ export const useSlashCommandProcessor = (
process.exit(0);
},
},
- // Removed /theme command, handled in App.tsx
];
// Checks if the query is a slash command and executes the command if it is.
diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts
index 89cd5223..9e2901ec 100644
--- a/packages/cli/src/ui/hooks/useGeminiStream.ts
+++ b/packages/cli/src/ui/hooks/useGeminiStream.ts
@@ -49,6 +49,7 @@ const addHistoryItem = (
export const useGeminiStream = (
setHistory: React.Dispatch<React.SetStateAction<HistoryItem[]>>,
config: Config,
+ openThemeDialog: () => void,
) => {
const toolRegistry = config.getToolRegistry();
const [streamingState, setStreamingState] = useState<StreamingState>(
@@ -74,6 +75,7 @@ export const useGeminiStream = (
setHistory,
setDebugMessage,
getNextMessageId,
+ openThemeDialog,
);
const { handleShellCommand } = useShellCommandProcessor(