#!/usr/bin/env bash set -euo pipefail ROOT="/home/openclaw/.openclaw/workspace" SEARX_SCRIPT="$ROOT/skills/searxng-local-search/scripts/search.sh" BRAVE_SCRIPT="$ROOT/skills/brave-mcp-search/scripts/search.sh" if [[ $# -lt 1 ]]; then echo 'Usage: scripts/search.sh "query" '\''{"count":5}'\''' >&2 exit 1 fi QUERY="$1" OPTS="${2:-}" TMP1="$(mktemp)" TMP2="$(mktemp)" trap 'rm -f "$TMP1" "$TMP2"' EXIT run_searx() { if [[ -n "$OPTS" ]]; then "$SEARX_SCRIPT" "$QUERY" "$OPTS" >"$TMP1" 2>&1 else "$SEARX_SCRIPT" "$QUERY" >"$TMP1" 2>&1 fi } run_brave() { if [[ -n "$OPTS" ]]; then "$BRAVE_SCRIPT" "$QUERY" "$OPTS" >"$TMP2" 2>&1 else "$BRAVE_SCRIPT" "$QUERY" >"$TMP2" 2>&1 fi } searx_good=false if run_searx; then if grep -qE '^[0-9]+\.' "$TMP1" \ && ! grep -q 'Found 0 total results' "$TMP1" \ && ! grep -q 'No results found\.' "$TMP1"; then searx_good=true fi fi if [[ "$searx_good" == true ]]; then printf 'Backend: SearXNG\n\n' cat "$TMP1" exit 0 fi if run_brave; then printf 'Backend: Brave MCP (fallback)\n\n' cat "$TMP2" exit 0 fi echo 'Error: both SearXNG and Brave MCP failed.' >&2 echo >&2 echo '--- SearXNG output ---' >&2 cat "$TMP1" >&2 || true echo >&2 echo '--- Brave MCP output ---' >&2 cat "$TMP2" >&2 || true exit 3