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
89 lines
2.9 KiB
Bash
Executable File
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
|