mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-19 02:43:18 +00:00
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import type {
|
|
OpenDialogActionReturn,
|
|
SlashCommand,
|
|
LogoutActionReturn,
|
|
} from './types.js';
|
|
import { CommandKind } from './types.js';
|
|
import { clearCachedCredentialFile } from '@google/gemini-cli-core';
|
|
import { SettingScope } from '../../config/settings.js';
|
|
|
|
const authLoginCommand: SlashCommand = {
|
|
name: 'signin',
|
|
altNames: ['login'],
|
|
description: 'Sign in or change the authentication method',
|
|
kind: CommandKind.BUILT_IN,
|
|
autoExecute: true,
|
|
action: (_context, _args): OpenDialogActionReturn => ({
|
|
type: 'dialog',
|
|
dialog: 'auth',
|
|
}),
|
|
};
|
|
|
|
const authLogoutCommand: SlashCommand = {
|
|
name: 'signout',
|
|
altNames: ['logout'],
|
|
description: 'Sign out and clear all cached credentials',
|
|
kind: CommandKind.BUILT_IN,
|
|
action: async (context, _args): Promise<LogoutActionReturn> => {
|
|
await clearCachedCredentialFile();
|
|
// Clear the selected auth type so user sees the auth selection menu
|
|
context.services.settings.setValue(
|
|
SettingScope.User,
|
|
'security.auth.selectedType',
|
|
undefined,
|
|
);
|
|
// Strip thoughts from history instead of clearing completely
|
|
context.services.config?.getGeminiClient()?.stripThoughtsFromHistory();
|
|
// Return logout action to signal explicit state change
|
|
return {
|
|
type: 'logout',
|
|
};
|
|
},
|
|
};
|
|
|
|
export const authCommand: SlashCommand = {
|
|
name: 'auth',
|
|
description: 'Manage authentication',
|
|
kind: CommandKind.BUILT_IN,
|
|
subCommands: [authLoginCommand, authLogoutCommand],
|
|
action: (context, args) =>
|
|
// Default to login if no subcommand is provided
|
|
authLoginCommand.action!(context, args),
|
|
};
|