#!/usr/bin/env node

/**
 * inject-clear-models.js
 *
 * 清理大模型配置（minimax、zai 等）
 * 保留图片模型和搜索配置
 */

const { readConfig, writeConfig } = require('../find-config');

function run() {
  let configPath;
  try {
    ({ configPath } = readConfig());
  } catch (err) {
    console.error('❌ ' + err.message);
    process.exit(1);
  }

  console.log('📍 找到配置: ' + configPath);
  console.log('');
  console.log('🧹 清理大模型配置...');

  const { config } = readConfig();

  // 清理 models.providers 中的 minimax 和 zai
  if (config.models?.providers) {
    // 删除 minimax provider
    if (config.models.providers.minimax) {
      delete config.models.providers.minimax;
      console.log('  ✓ 已删除 models.providers.minimax');
    }

    // 删除 zai provider
    if (config.models.providers.zai) {
      delete config.models.providers.zai;
      console.log('  ✓ 已删除 models.providers.zai');
    }

    // 如果 providers 为空，删除整个 providers
    if (Object.keys(config.models.providers).length === 0) {
      delete config.models.providers;
      console.log('  ✓ providers 已清空');
    }
  }

  // 清理 auth.profiles 中的 minimax 和 zai
  if (config.auth?.profiles) {
    // 删除 minimax profile
    if (config.auth.profiles['minimax:cn']) {
      delete config.auth.profiles['minimax:cn'];
      console.log('  ✓ 已删除 auth.profiles["minimax:cn"]');
    }

    // 删除 zai profile
    if (config.auth.profiles['zai:default']) {
      delete config.auth.profiles['zai:default'];
      console.log('  ✓ 已删除 auth.profiles["zai:default"]');
    }

    // 如果 profiles 为空，删除整个 profiles
    if (Object.keys(config.auth.profiles).length === 0) {
      delete config.auth.profiles;
      console.log('  ✓ profiles 已清空');
    }
  }

  // 清理 agents.defaults.models 中的 minimax 和 zai
  if (config.agents?.defaults?.models) {
    // 删除 minimax 模型
    const minimaxKeys = Object.keys(config.agents.defaults.models).filter(k => k.startsWith('minimax/'));
    for (const key of minimaxKeys) {
      delete config.agents.defaults.models[key];
      console.log('  ✓ 已删除 agents.defaults.models["' + key + '"]');
    }

    // 删除 zai 模型
    const zaiKeys = Object.keys(config.agents.defaults.models).filter(k => k.startsWith('zai/'));
    for (const key of zaiKeys) {
      delete config.agents.defaults.models[key];
      console.log('  ✓ 已删除 agents.defaults.models["' + key + '"]');
    }

    // 如果 models 为空，删除整个 models
    if (Object.keys(config.agents.defaults.models).length === 0) {
      delete config.agents.defaults.models;
      console.log('  ✓ models 已清空');
    }
  }

  // 清理 agents.defaults.model（默认模型）如果是 minimax 或 zai
  if (config.agents?.defaults?.model?.primary) {
    const primary = config.agents.defaults.model.primary;
    if (primary.startsWith('minimax/') || primary.startsWith('zai/')) {
      delete config.agents.defaults.model;
      console.log('  ✓ 已删除 agents.defaults.model (原为: ' + primary + ')');
    }
  }

  // 清理 agents.defaults.imageGenerationModel 如果是 minimax
  if (config.agents?.defaults?.imageGenerationModel?.primary) {
    const primary = config.agents.defaults.imageGenerationModel.primary;
    if (primary.startsWith('minimax/')) {
      delete config.agents.defaults.imageGenerationModel;
      console.log('  ✓ 已删除 agents.defaults.imageGenerationModel');
    }
  }

  writeConfig(config, configPath);

  console.log('');
  console.log('✅ 大模型配置已清理');
  console.log('');
}

module.exports = { run };
