/** * Test script to verify TOML parsing with actual config files */ import TOML from 'smol-toml'; // Use inline TOML strings for testing const MAIN_CONFIG_TOML = ` [server] host = "127.0.0.1" port = 4200 websocket_port = 4200 websocket_path = "/ws" [agent.defaults] workspace = "~/.openfang/workspace" default_model = "gpt-4" [llm] default_provider = "openai" default_model = "gpt-4" `; const CHINESE_PROVIDERS_TOML = ` [[llm.providers]] name = "zhipu" display_name = "Zhipu GLM" api_key = "\${ZHIPU_API_KEY}" base_url = "https://open.bigmodel.cn/api/paas/v4" [[llm.providers.models]] id = "glm-4-plus" alias = "GLM-4-Plus" context_window = 128000 [[llm.providers]] name = "qwen" display_name = "Qwen" api_key = "\${QWEN_API_KEY}" base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1" [[llm.providers.models]] id = "qwen-max" alias = "Qwen-Max" `; console.log('=== Testing TOML Parsing ===\n'); // Test 1: Parse main config try { console.log('\n--- Test 1: Main config.toml ---'); const mainConfig = TOML.parse(MAIN_CONFIG_TOML); console.log('Parsed successfully!'); console.log('Server config:', JSON.stringify(mainConfig.server, null, 2)); console.log('Agent defaults:', JSON.stringify(mainConfig.agent?.defaults, null, 2)); console.log('LLM config:', JSON.stringify(mainConfig.llm, null, 2)); // Check required fields if (!mainConfig.server?.host) throw new Error('Missing server.host'); if (!mainConfig.server?.port) throw new Error('Missing server.port'); if (!mainConfig.agent?.defaults?.workspace) throw new Error('Missing agent.defaults.workspace'); if (!mainConfig.agent?.defaults?.default_model) throw new Error('Missing agent.defaults.default_model'); if (!mainConfig.llm?.default_provider) throw new Error('Missing llm.default_provider'); if (!mainConfig.llm?.default_model) throw new Error('Missing llm.default_model'); console.log('All required fields present!'); } catch (error) { console.error('Failed to parse main config:', error.message); process.exit(1); } // Test 2: Parse chinese-providers.toml try { console.log('\n--- Test 2: chinese-providers.toml ---'); const chineseProviders = TOML.parse(CHINESE_PROVIDERS_TOML); console.log('Parsed successfully!'); console.log('Number of providers:', chineseProviders.llm?.providers?.length || 0); // List providers if (chineseProviders.llm?.providers) { console.log('\nProviders found:'); chineseProviders.llm.providers.forEach((provider, index) => { console.log(` ${index + 1}. ${provider.name} (${provider.display_name || 'N/A'})`); if (provider.models) { console.log(` Models: ${provider.models.length}`); } }); } // Check for environment variable references const envVarPattern = /\$\{([^}]+)\}/g; const envVars = CHINESE_PROVIDERS_TOML.match(envVarPattern); if (envVars) { console.log('\nEnvironment variables referenced:'); const uniqueVars = [...new Set(envVars)]; uniqueVars.forEach(v => console.log(` - ${v}`)); } } catch (error) { console.error('Failed to parse chinese-providers:', error.message); process.exit(1); } console.log('\n=== All TOML parsing tests passed! ===\n');