Ctrl K
ComunidadGuías…

localai

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# shellcheck disable=SC2034
set -euo pipefail

SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")"
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"

# shellcheck source=/dev/null
. "$SCRIPT_DIR/lib/bootstrap.sh" 2>/dev/null ||
  . "$SCRIPT_DIR/../lib/bootstrap.sh" 2>/dev/null ||
  { echo "Error: missing LocalAI bootstrap library: lib/bootstrap.sh" >&2; exit 1; }

source_localai_cli_lib() {
  local name="$1"
  local candidate

  for candidate in "$SCRIPT_DIR/lib/$name" "$SCRIPT_DIR/../lib/$name"; do
    if [ -f "$candidate" ]; then
      # shellcheck source=/dev/null
      . "$candidate"
      return 0
    fi
  done

  if [[ "$name" == cli/* ]] && [ "${LOCALAI_CLI_LIB_REPAIR:-0}" != "1" ] && [ -x "$SCRIPT_DIR/update-local-ai.sh" ]; then
    echo "Warning: missing LocalAI CLI module $name; attempting repair with $SCRIPT_DIR/update-local-ai.sh --no-start" >&2
    if LOCALAI_CLI_LIB_REPAIR=1 "$SCRIPT_DIR/update-local-ai.sh" --no-start >/dev/null; then
      for candidate in "$SCRIPT_DIR/lib/$name" "$SCRIPT_DIR/../lib/$name"; do
        if [ -f "$candidate" ]; then
          # shellcheck source=/dev/null
          . "$candidate"
          return 0
        fi
      done
    fi
  fi

  echo "Error: missing LocalAI library: $name" >&2
  if [[ "$name" == cli/* ]]; then
    echo "Run the direct updater to repair the installed CLI modules:" >&2
    echo "  $SCRIPT_DIR/update-local-ai.sh" >&2
  fi
  exit 1
}

AI_DIR="$(resolve_ai_dir)"
BIN_DIR="$AI_DIR/$LOCALAI_BIN_SUBDIR"
CONF_DIR="$AI_DIR/$LOCALAI_CONF_SUBDIR"
MODELS_DIR="$AI_DIR/$LOCALAI_MODELS_SUBDIR"
CONFIG="$CONF_DIR/$LOCALAI_CONFIG_FILE"
KEYS_DIR="$CONF_DIR/$LOCALAI_KEYS_SUBDIR"
KEYS_FILE="$KEYS_DIR/$LOCALAI_KEYS_FILE"
LOG_FILE="$AI_DIR/$LOCALAI_LOGS_SUBDIR/llama-swap.log"
PORT_FILE="$CONF_DIR/$LOCALAI_PORT_FILE"
PID_FILE="$CONF_DIR/$LOCALAI_PID_FILE"
PID_START_FILE="$CONF_DIR/$LOCALAI_PID_FILE.start"
SERVICE_UNIT="${LOCALAI_SERVICE_NAME%.service}"
SERVICE_FILE="$LOCALAI_SYSTEMD_USER_DIR/$LOCALAI_SERVICE_NAME"
resolve_llama_swap_paths

source_localai_cli_lib cli/core.sh
source_localai_cli_lib cli/service.sh
source_localai_cli_lib cli/models.sh
source_localai_cli_lib cli/suggest.sh
source_localai_cli_lib cli/lifecycle.sh
source_localai_cli_lib cli/key.sh
source_localai_cli_lib install.sh
source_localai_cli_lib cuda.sh
source_localai_cli_lib cli/switch.sh
source_localai_cli_lib cli/backend.sh

COMMAND="${1:-help}"
if [ "$#" -gt 0 ]; then
  shift
fi

case "$COMMAND" in
  start|stop|restart)
    service_cmd "$COMMAND"
    ;;
  reload)
    reload_cmd "$@"
    ;;
  status)
    status_cmd
    ;;
  check)
    check_cmd "$@"
    ;;
  logs)
    logs_cmd
    ;;
  models)
    models_cmd
    ;;
  ui)
    ui_cmd "$@"
    ;;
  suggest)
    suggest_cmd "$@"
    ;;
  key)
    key_cmd "$@"
    ;;
  load)
    load_cmd "$@"
    ;;
  unload)
    unload_cmd "$@"
    ;;
  update)
    update_cmd "$@"
    ;;
  switch)
    switch_cmd "$@"
    ;;
  backend)
    backend_cmd "$@"
    ;;
  rollback)
    rollback_cmd "$@"
    ;;
  version)
    version_cmd
    ;;
  uninstall)
    uninstall_cmd "$@"
    ;;
  help|-h|--help)
    usage
    ;;
  *)
    usage >&2
    exit 2
    ;;
esac