/**
 * @license
 * Copyright 2026 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { AuthType, openBrowserSecurely, shouldLaunchBrowser, UPGRADE_URL_PAGE, } from '@google/gemini-cli-core';
import { isUltraTier } from '../../utils/tierUtils.js';
import { CommandKind } from './types.js';
/**
 * Command to open the upgrade page for Gemini Code Assist.
 * Only intended to be shown/available when the user is logged in with Google.
 */
export const upgradeCommand = {
    name: 'upgrade',
    kind: CommandKind.BUILT_IN,
    description: 'Upgrade your Gemini Code Assist tier for higher limits',
    autoExecute: true,
    action: async (context) => {
        const authType = context.services.config?.getContentGeneratorConfig()?.authType;
        if (authType !== AuthType.LOGIN_WITH_GOOGLE) {
            // This command should ideally be hidden if not logged in with Google,
            // but we add a safety check here just in case.
            return {
                type: 'message',
                messageType: 'error',
                content: 'The /upgrade command is only available when logged in with Google.',
            };
        }
        const tierName = context.services.config?.getUserTierName();
        if (isUltraTier(tierName)) {
            return {
                type: 'message',
                messageType: 'info',
                content: `You are already on the highest tier: ${tierName}.`,
            };
        }
        if (!shouldLaunchBrowser()) {
            return {
                type: 'message',
                messageType: 'info',
                content: `Please open this URL in a browser: ${UPGRADE_URL_PAGE}`,
            };
        }
        try {
            await openBrowserSecurely(UPGRADE_URL_PAGE);
        }
        catch (error) {
            return {
                type: 'message',
                messageType: 'error',
                content: `Failed to open upgrade page: ${error instanceof Error ? error.message : String(error)}`,
            };
        }
        return undefined;
    },
};
//# sourceMappingURL=upgradeCommand.js.map