/** * @license * Copyright 2025 Qwen * SPDX-License-Identifier: Apache-2.0 */ import type { SlashCommand, CommandContext, OpenDialogActionReturn, MessageActionReturn, } from './types.js'; import { CommandKind } from './types.js'; import { getAvailableModelsForAuthType } from '../models/availableModels.js'; export const modelCommand: SlashCommand = { name: 'model', description: 'Switch the model for this session', kind: CommandKind.BUILT_IN, action: async ( context: CommandContext, ): Promise => { const { services } = context; const { config } = services; if (!config) { return { type: 'message', messageType: 'error', content: 'Configuration not available.', }; } const contentGeneratorConfig = config.getContentGeneratorConfig(); if (!contentGeneratorConfig) { return { type: 'message', messageType: 'error', content: 'Content generator configuration not available.', }; } const authType = contentGeneratorConfig.authType; if (!authType) { return { type: 'message', messageType: 'error', content: 'Authentication type not available.', }; } const availableModels = getAvailableModelsForAuthType(authType); if (availableModels.length === 0) { return { type: 'message', messageType: 'error', content: `No models available for the current authentication type (${authType}).`, }; } // Trigger model selection dialog return { type: 'dialog', dialog: 'model', }; }, };