diff options
| author | Allen Hutchison <[email protected]> | 2025-05-23 08:47:19 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-23 08:47:19 -0700 |
| commit | f8c4276e69cb8262433a4059540c873c2c996420 (patch) | |
| tree | 93cb2fa4cd8666bf5fb78b79a44b57d2a792e222 /packages/cli/src/ui/hooks/useGeminiStream.ts | |
| parent | 70277591c417cbc6bcb4b80ffa1873f52a983830 (diff) | |
Refactor(cli): Move memory add logic to server tool call (#493)
Diffstat (limited to 'packages/cli/src/ui/hooks/useGeminiStream.ts')
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.ts | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 5684102b..8468e61b 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -57,7 +57,9 @@ export const useGeminiStream = ( setShowHelp: React.Dispatch<React.SetStateAction<boolean>>, config: Config, onDebugMessage: (message: string) => void, - handleSlashCommand: (cmd: PartListUnion) => boolean, + handleSlashCommand: ( + cmd: PartListUnion, + ) => import('./slashCommandProcessor.js').SlashCommandActionReturn | boolean, shellModeActive: boolean, ) => { const [initError, setInitError] = useState<string | null>(null); @@ -138,9 +140,27 @@ export const useGeminiStream = ( await logger?.logMessage(MessageSenderType.USER, trimmedQuery); // Handle UI-only commands first - if (handleSlashCommand(trimmedQuery)) { + const slashCommandResult = handleSlashCommand(trimmedQuery); + if (typeof slashCommandResult === 'boolean' && slashCommandResult) { + // Command was handled, and it doesn't require a tool call from here return { queryToSend: null, shouldProceed: false }; + } else if ( + typeof slashCommandResult === 'object' && + slashCommandResult.shouldScheduleTool + ) { + // Slash command wants to schedule a tool call (e.g., /memory add) + const { toolName, toolArgs } = slashCommandResult; + if (toolName && toolArgs) { + const toolCallRequest: ToolCallRequestInfo = { + callId: `${toolName}-${Date.now()}-${Math.random().toString(16).slice(2)}`, + name: toolName, + args: toolArgs, + }; + schedule([toolCallRequest]); // schedule expects an array or single object + } + return { queryToSend: null, shouldProceed: false }; // Handled by scheduling the tool } + if (shellModeActive && handleShellCommand(trimmedQuery)) { return { queryToSend: null, shouldProceed: false }; } |
