mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
69 lines
1.6 KiB
TypeScript
69 lines
1.6 KiB
TypeScript
/**
|
|
* @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<OpenDialogActionReturn | MessageActionReturn> => {
|
|
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',
|
|
};
|
|
},
|
|
};
|