Files
qwen-code/packages/cli/src/utils/systemInfoFields.ts

119 lines
2.3 KiB
TypeScript

/**
* @license
* Copyright 2025 Qwen
* SPDX-License-Identifier: Apache-2.0
*/
import type { ExtendedSystemInfo } from './systemInfo.js';
import { t } from '../i18n/index.js';
/**
* Field configuration for system information display
*/
export interface SystemInfoField {
label: string;
key: keyof ExtendedSystemInfo;
}
/**
* Unified field configuration for system information display.
* This ensures consistent labeling between /about and /bug commands.
*/
export function getSystemInfoFields(
info: ExtendedSystemInfo,
): SystemInfoField[] {
const allFields: SystemInfoField[] = [
{
label: t('CLI Version'),
key: 'cliVersion',
},
{
label: t('Git Commit'),
key: 'gitCommit',
},
{
label: t('Model'),
key: 'modelVersion',
},
{
label: t('Sandbox'),
key: 'sandboxEnv',
},
{
label: t('OS Platform'),
key: 'osPlatform',
},
{
label: t('OS Arch'),
key: 'osArch',
},
{
label: t('OS Release'),
key: 'osRelease',
},
{
label: t('Node.js Version'),
key: 'nodeVersion',
},
{
label: t('NPM Version'),
key: 'npmVersion',
},
{
label: t('Session ID'),
key: 'sessionId',
},
{
label: t('Auth Method'),
key: 'selectedAuthType',
},
{
label: t('Base URL'),
key: 'baseUrl',
},
{
label: t('Memory Usage'),
key: 'memoryUsage',
},
{
label: t('IDE Client'),
key: 'ideClient',
},
];
// Filter out optional fields that are not present
return allFields.filter((field) => {
const value = info[field.key];
// Optional fields: only show if they exist and are non-empty
if (
field.key === 'baseUrl' ||
field.key === 'gitCommit' ||
field.key === 'ideClient'
) {
return Boolean(value);
}
return true;
});
}
/**
* Get the value for a field from system info
*/
export function getFieldValue(
field: SystemInfoField,
info: ExtendedSystemInfo,
): string {
const value = info[field.key];
if (value === undefined || value === null) {
return '';
}
// Special formatting for selectedAuthType
if (field.key === 'selectedAuthType') {
return String(value).startsWith('oauth') ? 'OAuth' : String(value);
}
return String(value);
}