64 lines
1.7 KiB
Bash
Executable file
64 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROFILE_DIR=/home/teleo/.hermes/profiles/leoclean
|
|
KB_TOOL="$PROFILE_DIR/bin/kb_tool.py"
|
|
CLOUDSQL_TOOL="$PROFILE_DIR/bin/cloudsql_memory_tool.py"
|
|
MODE=${TELEO_KB_MODE:-auto}
|
|
COMMAND=${1:-}
|
|
CLOUDSQL_STATUS_TIMEOUT=${TELEO_CLOUDSQL_STATUS_TIMEOUT_SECONDS:-30}
|
|
|
|
cloudsql_supported() {
|
|
case "$COMMAND" in
|
|
status|search|context|show|evidence|edges|propose-core-change|list-proposals|show-proposal) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
cloudsql_args() {
|
|
if [ "${TELEO_MEMORY_INCLUDE_EXCERPTS:-}" = "1" ]; then
|
|
case "$COMMAND" in
|
|
search|context|show|evidence|edges) printf '%s\n' "--include-excerpts" ;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
run_cloudsql() {
|
|
if cloudsql_supported; then
|
|
extra_args=()
|
|
while IFS= read -r arg; do
|
|
[ -n "$arg" ] && extra_args+=("$arg")
|
|
done < <(cloudsql_args)
|
|
exec python3 "$CLOUDSQL_TOOL" "$@" "${extra_args[@]}"
|
|
fi
|
|
exec python3 "$KB_TOOL" "$@"
|
|
}
|
|
|
|
case "$MODE" in
|
|
cloudsql)
|
|
run_cloudsql "$@"
|
|
;;
|
|
local)
|
|
exec python3 "$KB_TOOL" --local "$@"
|
|
;;
|
|
remote)
|
|
exec python3 "$KB_TOOL" "$@"
|
|
;;
|
|
auto)
|
|
if [ -x "$CLOUDSQL_TOOL" ] && command -v psql >/dev/null 2>&1 && command -v gcloud >/dev/null 2>&1; then
|
|
if cloudsql_supported; then
|
|
if timeout "${CLOUDSQL_STATUS_TIMEOUT}s" python3 "$CLOUDSQL_TOOL" status --format json --redacted >/dev/null 2>&1; then
|
|
run_cloudsql "$@"
|
|
fi
|
|
fi
|
|
fi
|
|
if command -v docker >/dev/null 2>&1; then
|
|
exec python3 "$KB_TOOL" --local "$@"
|
|
fi
|
|
exec python3 "$KB_TOOL" "$@"
|
|
;;
|
|
*)
|
|
echo "Unsupported TELEO_KB_MODE=$MODE; expected auto, cloudsql, local, or remote" >&2
|
|
exit 64
|
|
;;
|
|
esac
|