Files
blackroad/bin/rag
Alexa Amundson 78fbe80f2a Initial monorepo — everything BlackRoad in one place
bin/       230 CLI tools (ask-*, br-*, agent-*, roadid, carpool)
scripts/   99 automation scripts
fleet/     Node configs and deployment
workers/   Cloudflare Worker sources (roadpay, road-search, squad webhooks)
roadc/     RoadC programming language
roadnet/   Mesh network (5 APs, WireGuard)
operator/  Memory system scripts
config/    System configs
dotfiles/  Shell configs
docs/      Documentation

BlackRoad OS — Pave Tomorrow.

RoadChain-SHA2048: d1a24f55318d338b
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
2026-03-14 17:08:41 -05:00

89 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# BlackRoad RAG — unified entry point
# Usage:
# rag search "how does auth work"
# rag status
# rag index
# rag api
# rag cite "gateway routing" --style academic
# rag progress
set -e
RAG_DIR="$HOME/.blackroad-rag"
PINK='\033[38;5;205m'
GREEN='\033[38;5;82m'
CYAN='\033[38;5;69m'
AMBER='\033[38;5;214m'
RESET='\033[0m'
case "${1:-help}" in
search)
shift
python3 "$RAG_DIR/rag-engine.py" search "$@"
;;
status)
python3 "$RAG_DIR/rag-engine.py" status
;;
index)
echo -e "${PINK}Starting background indexer...${RESET}"
nohup python3 "$RAG_DIR/index-background.py" >> /tmp/rag-index.log 2>&1 &
echo -e "${GREEN}PID: $!${RESET}"
echo -e "${CYAN}Progress: tail -f $RAG_DIR/index-progress.txt${RESET}"
;;
reindex)
echo -e "${AMBER}Dropping and rebuilding index...${RESET}"
python3 "$RAG_DIR/rag-engine.py" reindex
;;
api)
shift
python3 "$RAG_DIR/rag-api.py" "$@"
;;
progress)
if [[ -f "$RAG_DIR/index-progress.txt" ]]; then
tail -20 "$RAG_DIR/index-progress.txt"
else
echo "No indexing in progress."
fi
;;
cite)
shift
# Quick citation mode via the API
python3 -c "
import importlib.util, sys, json
from pathlib import Path
spec = importlib.util.spec_from_file_location('rag_engine', Path('$RAG_DIR/rag-engine.py'))
rag = importlib.util.module_from_spec(spec)
spec.loader.exec_module(rag)
spec2 = importlib.util.spec_from_file_location('academic_sources', Path('$RAG_DIR/academic-sources.py'))
acad = importlib.util.module_from_spec(spec2)
spec2.loader.exec_module(acad)
query = ' '.join(sys.argv[1:]).replace('--style','').replace('academic','').replace('inline','').replace('markdown','').strip()
style = 'academic'
for a in sys.argv:
if a in ('inline','academic','markdown'): style = a
results = rag.search(query, top_k=10)
print(acad.format_citations(results, query, style=style))
" "$@"
;;
scan)
shift
echo -e "${PINK}Scanning repos and generating chunks...${RESET}"
bash "$RAG_DIR/index-repos.sh" "$@"
;;
help|*)
echo -e "${PINK}BlackRoad RAG${RESET} — Semantic Code Search"
echo ""
echo " rag search <query> Search code semantically"
echo " rag status Show index stats"
echo " rag index Start background indexing"
echo " rag reindex Drop and rebuild index"
echo " rag progress Check indexing progress"
echo " rag cite <query> Get academic-style citations"
echo " rag scan Rescan repos into chunks"
echo " rag api [--port N] Start RAG API server"
echo ""
echo -e " ${CYAN}We remember the Road. We pave tomorrow.${RESET}"
;;
esac