// 供应商配置处理工具函数 // 处理includeCoAuthoredBy字段的添加/删除 export const updateCoAuthoredSetting = (jsonString: string, disable: boolean): string => { try { const config = JSON.parse(jsonString) if (disable) { // 添加或更新includeCoAuthoredBy字段 config.includeCoAuthoredBy = false } else { // 删除includeCoAuthoredBy字段 delete config.includeCoAuthoredBy } return JSON.stringify(config, null, 2) } catch (err) { // 如果JSON解析失败,返回原始字符串 return jsonString } } // 从JSON配置中检查是否包含includeCoAuthoredBy设置 export const checkCoAuthoredSetting = (jsonString: string): boolean => { try { const config = JSON.parse(jsonString) return config.includeCoAuthoredBy === false } catch (err) { return false } } // 从JSON配置中提取并处理官网地址 export const extractWebsiteUrl = (jsonString: string): string => { try { const config = JSON.parse(jsonString) const baseUrl = config?.env?.ANTHROPIC_BASE_URL if (baseUrl && typeof baseUrl === 'string') { // 去掉 "api." 前缀 return baseUrl.replace(/^https?:\/\/api\./, 'https://') } } catch (err) { // 忽略JSON解析错误 } return '' } // 读取配置中的 API Key(env.ANTHROPIC_AUTH_TOKEN) export const getApiKeyFromConfig = (jsonString: string): string => { try { const config = JSON.parse(jsonString) const key = config?.env?.ANTHROPIC_AUTH_TOKEN return typeof key === 'string' ? key : '' } catch (err) { return '' } } // 判断配置中是否存在 API Key 字段 export const hasApiKeyField = (jsonString: string): boolean => { try { const config = JSON.parse(jsonString) return Object.prototype.hasOwnProperty.call(config?.env ?? {}, 'ANTHROPIC_AUTH_TOKEN') } catch (err) { return false } } // 写入/更新配置中的 API Key,默认不新增缺失字段 export const setApiKeyInConfig = ( jsonString: string, apiKey: string, options: { createIfMissing?: boolean } = {} ): string => { const { createIfMissing = false } = options try { const config = JSON.parse(jsonString) if (!config.env) { if (!createIfMissing) return jsonString config.env = {} } if (!('ANTHROPIC_AUTH_TOKEN' in config.env) && !createIfMissing) { return jsonString } config.env.ANTHROPIC_AUTH_TOKEN = apiKey return JSON.stringify(config, null, 2) } catch (err) { return jsonString } }