diff --git a/README.md b/README.md index 355cb38..f48db90 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ bin/update.sh | `bin/aider_install.sh -u` | Desinstala Aider CLI | | `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente | | `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider | +| `bin/ai_token.sh` | Gestiona tokens de múltiples proveedores de IA vía SOPS | ### Herramientas para Editores de Código @@ -162,6 +163,23 @@ bin/aider_install.sh -u Aider es un asistente de código basado en IA que te permite colaborar con modelos de lenguaje de OpenAI directamente desde la terminal. El script de instalación utiliza el instalador oficial de Aider. +#### Gestor de Tokens de IA + +```bash +# Gestionar tokens de diferentes proveedores de IA +bin/ai_token.sh +``` + +El script `ai_token.sh` proporciona una forma centralizada y segura de gestionar tokens de API para múltiples proveedores de IA: + +- Muestra un menú interactivo con los proveedores disponibles definidos en `bin/config/ai.tokens` +- Solicita y valida el token de API de forma segura +- Encripta el token usando SOPS y lo almacena en `$HOME/sops/{provider}.sops.yaml` +- Incluye verificaciones de seguridad (longitud del token, caracteres válidos) +- Soporte completo para internacionalización + +Proveedores soportados por defecto: Anthropic Claude, OpenAI ChatGPT, Google Gemini, Groq, DeepSeek, HuggingFace, Replicate, OpenRouter, Brave Search, Serper Search, Voyage RAG, Apify y más. + La configuración de proyectos se almacena en `bin/config/projects.dat`, donde se encuentra el nombre de la carpeta de proyectos utilizada por el sistema. ### Instalación de Helix Editor diff --git a/bin/ai_token.sh b/bin/ai_token.sh index c1a6aa3..6eee3d7 100755 --- a/bin/ai_token.sh +++ b/bin/ai_token.sh @@ -5,7 +5,7 @@ #Author : Sora Rosero One #Generated by : Claude Code (claude-3-7-sonnet-20250219) #Created : 2025/03/21 16:06:20 -#Modified : 2025/03/21 16:53:56 +#Modified : 2025/03/21 17:11:27 #Version : 1.0.0 #Use Notes : # Gestiona múltiples tokens de IA definidos en ai.tokens @@ -55,20 +55,20 @@ source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib" # Cargar mensajes en el idioma del sistema o español por defecto load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers" -apps_title="Gestor de Tokens de IA" +apps_title="${aimsg_100}" title="${head_000} ${head_002}" # Comprobar dependencias necesarias check_dependencies() { # Verificar que 'dialog' esté instalado if ! command -v dialog &>/dev/null; then - echo "${npm_001}" + echo "${qrmsg_013}" exit 1 fi # Verificar que 'sops' esté instalado if ! command -v sops &>/dev/null; then - dialog --backtitle "$title" --title "${head_error}" --msgbox "${npm_051}" 7 50 + dialog_error_box "${head_error}" "${aimsg_115}" exit 1 fi } @@ -79,7 +79,7 @@ load_providers() { local config_file="$BIN_HOME/$BIN_BASE/$BIN_CFGS/ai.tokens" if [ ! -f "$config_file" ]; then - echo "ERROR: El archivo de configuración de proveedores no existe: $config_file" + echo "${aimsg_111} $config_file" exit 1 fi @@ -148,15 +148,15 @@ show_provider_menu() { done # Añadir opción para salir - options+="\n999:Salir" + options+="\n999:${aimsg_113}" # Mostrar menú usando console.lib - choice=$(menu_actions "Seleccione el proveedor de IA para configurar su token:" "$options" 12) + choice=$(menu_actions "${aimsg_101}" "$options" 12) # Verificar salida if [ "$choice" == "${head_key_end}" ] || [ "$choice" == "999" ]; then clear - echo "Operación cancelada por el usuario." + echo "${aimsg_108}" exit 0 fi @@ -174,7 +174,7 @@ get_token() { while true; do # Usar dialog_input_pass de console.lib - dialog_input_pass "Token de API para $provider_name" "Ingrese su token de API para $provider_code:" "" + dialog_input_pass "${aimsg_102} $provider_name" "${aimsg_103} $provider_code:" "" # Comprobar si el usuario canceló if [ $codex -ne 0 ]; then @@ -183,16 +183,16 @@ get_token() { # Validar token if [ -z "$value" ]; then - dialog_error_box "${head_error}" "El token no puede estar vacío. Por favor ingrese un token válido." + dialog_error_box "${head_error}" "${aimsg_104}" continue fi # Comprobar longitud del token (debe tener al menos 20 caracteres) if [ ${#value} -lt 20 ]; then - dialog_error_box "${head_warning}" "El token parece ser demasiado corto. Verifique que haya copiado el token completo." + dialog_error_box "${head_warning}" "${aimsg_105}" # Preguntar si continuar - dialog_yesno "¿Desea continuar de todos modos con este token?" + dialog_yesno "${aimsg_106}" if [ $result -ne 0 ]; then continue fi @@ -225,10 +225,10 @@ main() { sops_file="$BIN_HOME/$BIN_SOPS/${provider_code}.sops.yaml" if [ -f "$sops_file" ]; then # Preguntar con dialog_yesno de console.lib - dialog_yesno "El archivo $sops_file ya existe. ¿Desea sobrescribirlo?" + dialog_yesno "${aimsg_107}" if [ $result -ne 0 ]; then - dialog_error_box "${head_canceled}" "Operación cancelada por el usuario." + dialog_error_box "${head_canceled}" "${aimsg_108}" clear exit 0 fi @@ -237,16 +237,16 @@ main() { # Obtener token token=$(get_token "$provider_desc" "$provider_code") if [ $? -ne 0 ]; then - dialog_error_box "${head_canceled}" "Operación cancelada por el usuario." + dialog_error_box "${head_canceled}" "${aimsg_108}" clear exit 0 fi # Encriptar token if encrypt_token "$provider_code" "$token"; then - dialog_error_box "${head_success}" "El token de $provider_desc ha sido encriptado exitosamente en: $sops_file" + dialog_error_box "${head_success}" "${aimsg_109} $sops_file" else - dialog_error_box "${head_error}" "Falló la encriptación del token de $provider_desc." + dialog_error_box "${head_error}" "${aimsg_110}" clear exit 1 fi diff --git a/bin/msg/developers.es b/bin/msg/developers.es index 7628d91..3be2d85 100644 --- a/bin/msg/developers.es +++ b/bin/msg/developers.es @@ -243,3 +243,21 @@ glmsg_050="Para autenticarse con GitLab, ejecute:" glmsg_051="Para más información, visite: https://gitlab.com/gitlab-org/cli/blob/main/docs/index.md" glmsg_052="ERROR: La instalación de GitLab CLI falló." +# Mensajes para ai_token.sh +aimsg_100="GESTOR DE TOKENS DE IA" +aimsg_101="Seleccione el proveedor de IA para configurar su token:" +aimsg_102="Token de API para" +aimsg_103="Ingrese su token de API para" +aimsg_104="El token no puede estar vacío. Por favor ingrese un token válido." +aimsg_105="El token parece ser demasiado corto. Verifique que haya copiado el token completo." +aimsg_106="¿Desea continuar de todos modos con este token?" +aimsg_107="El archivo ya existe. ¿Desea sobrescribirlo?" +aimsg_108="Operación cancelada por el usuario." +aimsg_109="El token ha sido encriptado exitosamente en:" +aimsg_110="Falló la encriptación del token." +aimsg_111="Error: El archivo de configuración de proveedores no existe:" +aimsg_112="El token contiene caracteres no estándar. Verifique que sea correcto." +aimsg_113="Salir" +aimsg_114="Selección inválida. Intente nuevamente." +aimsg_115="SOPS no está instalado. Por favor, ejecute bin/bootstrap.sh para instalar las herramientas necesarias." +