// 供应商配置处理工具函数 // 处理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; } }; // 读取配置中的 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; } };