# Alternatives Comparisons
# - Opencode
#   - Cons:
#     - Lack of doc, currently I care about customized providers.
#     - Does not compatible with kitty scrollback.
#     - Use Esc instead of Ctrl-C to interrupt.
#     - The input line does not support Home, End key.
#   - Summary: Its quality is not comparable to neovim,
#              though it declares "OpenCode is built by neovim users ...".
{ pkgs, config, ... }: {
  home.packages = [
    (import pkgs.npinsed.nur-charmbracelet {}).crush
  ];
  yq-merge.".config/crush/crush.json".text = builtins.toJSON {
    providers = {
      # Catwalk includes deepseek
      deepseek.api_key = config.ai.deepseek.api_key;
      siliconflow = {
        type = "openai-compat";
        inherit (config.ai.siliconflow) base_url api_key;
        extra_body = {
          # TODO: Why the think is enable by default for customized providers?
          enable_thinking = false;
        };
        models = builtins.attrValues config.ai.siliconflow.models;
      };
      # Catwalk includes minimax-china
      minimax-china.api_key = config.ai.minimax-china.api_key;
    };
  };
}