#!/bin/bash # BlackRoad Memory Codex System # A living knowledge base of patterns, solutions, and best practices MEMORY_DIR="$HOME/.blackroad/memory" CODEX_DIR="$MEMORY_DIR/codex" CODEX_DB="$CODEX_DIR/codex.db" # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' CYAN='\033[0;36m' PURPLE='\033[0;35m' BLUE='\033[0;34m' NC='\033[0m' # Initialize codex init() { echo -e "${PURPLE}📚 Initializing BlackRoad Memory Codex...${NC}\n" mkdir -p "$CODEX_DIR/patterns" mkdir -p "$CODEX_DIR/solutions" mkdir -p "$CODEX_DIR/best-practices" mkdir -p "$CODEX_DIR/templates" # Create codex database sqlite3 "$CODEX_DB" </dev/null || echo 0) local solutions_found=$(grep -c "solution\|fix\|resolved" "$MEMORY_DIR/journals/master-journal.jsonl" 2>/dev/null || echo 0) # Add common patterns sqlite3 "$CODEX_DB" <5min should trigger alerts', 'HIGH' ); EOF # Add successful templates sqlite3 "$CODEX_DB" < "$output_file" <<'MDEOF' # 📚 BlackRoad Memory Codex Export ## Solutions MDEOF sqlite3 "$CODEX_DB" "SELECT '### ' || name || '\n**Category:** ' || category || '\n**Success Rate:** ' || ROUND(success_rate * 100, 1) || '%\n\n**Problem:**\n' || problem || '\n\n**Solution:**\n' || solution || '\n\n---\n' FROM solutions;" >> "$output_file" cat >> "$output_file" <<'MDEOF' ## Patterns MDEOF sqlite3 "$CODEX_DB" "SELECT '### ' || pattern_name || '\n**Type:** ' || pattern_type || '\n**Confidence:** ' || ROUND(confidence * 100, 1) || '%\n\n' || description || '\n\n---\n' FROM patterns;" >> "$output_file" cat >> "$output_file" <<'MDEOF' ## Best Practices MDEOF sqlite3 "$CODEX_DB" "SELECT '### ' || practice_name || '\n**Category:** ' || category || '\n**Priority:** ' || priority || '\n\n' || description || '\n\n**Rationale:** ' || rationale || '\n\n---\n' FROM best_practices;" >> "$output_file" elif [ "$format" = "json" ]; then sqlite3 "$CODEX_DB" < "$output_file" .mode json SELECT json_object( 'solutions', (SELECT json_group_array(json_object('name', name, 'category', category, 'problem', problem, 'solution', solution)) FROM solutions), 'patterns', (SELECT json_group_array(json_object('name', pattern_name, 'type', pattern_type, 'description', description)) FROM patterns), 'practices', (SELECT json_group_array(json_object('name', practice_name, 'category', category, 'description', description)) FROM best_practices) ); EOF fi echo -e "${GREEN}✅ Codex exported to: $output_file${NC}" } # Show codex stats stats() { echo -e "${PURPLE}📊 Codex Statistics:${NC}\n" local solutions=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM solutions") local patterns=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM patterns") local practices=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM best_practices") local anti_patterns=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM anti_patterns") local templates=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM templates") local lessons=$(sqlite3 "$CODEX_DB" "SELECT COUNT(*) FROM lessons_learned") echo -e " ${CYAN}Solutions:${NC} $solutions" echo -e " ${CYAN}Patterns:${NC} $patterns" echo -e " ${CYAN}Best Practices:${NC} $practices" echo -e " ${CYAN}Anti-Patterns:${NC} $anti_patterns" echo -e " ${CYAN}Templates:${NC} $templates" echo -e " ${CYAN}Lessons Learned:${NC} $lessons\n" # Most used solutions echo -e "${PURPLE}Most Used Solutions:${NC}" sqlite3 -column "$CODEX_DB" " SELECT name, uses FROM solutions ORDER BY uses DESC LIMIT 5; " echo "" # Highest confidence patterns echo -e "${PURPLE}Highest Confidence Patterns:${NC}" sqlite3 -column "$CODEX_DB" " SELECT pattern_name, ROUND(confidence * 100, 1) || '%' as conf FROM patterns ORDER BY confidence DESC LIMIT 5; " } # Main execution case "${1:-help}" in init) init ;; add-solution) add_solution "$2" "$3" "$4" "$5" ;; add-pattern) add_pattern "$2" "$3" "$4" ;; search) search "$2" "$3" ;; get-solution) get_solution "$2" ;; get-pattern) get_pattern "$2" ;; list) list_by_category "$2" ;; recommend) recommend "$2" ;; export) export_codex "$2" ;; stats) stats ;; help|*) echo -e "${PURPLE}╔════════════════════════════════════════════════╗${NC}" echo -e "${PURPLE}║ 📚 BlackRoad Memory Codex System ║${NC}" echo -e "${PURPLE}╚════════════════════════════════════════════════╝${NC}\n" echo "Living knowledge base of patterns, solutions, and best practices" echo "" echo "Usage: $0 COMMAND [OPTIONS]" echo "" echo "Setup:" echo " init - Initialize codex" echo "" echo "Add Knowledge:" echo " add-solution NAME CAT PROBLEM SOL - Add solution" echo " add-pattern NAME TYPE DESC - Add pattern" echo "" echo "Retrieve:" echo " search QUERY [TYPE] - Search codex" echo " get-solution NAME - Get specific solution" echo " get-pattern NAME - Get specific pattern" echo " recommend PROBLEM - Get recommendations" echo "" echo "Browse:" echo " list solutions - List all solutions" echo " list patterns - List all patterns" echo " list practices - List best practices" echo " list anti-patterns - List anti-patterns" echo " list templates - List templates" echo "" echo "Export:" echo " stats - Show statistics" echo " export [markdown|json] - Export codex" echo "" echo "Examples:" echo " $0 init" echo " $0 search retry" echo " $0 get-solution 'Exponential Backoff'" echo " $0 recommend 'high failure rate'" echo " $0 list practices" echo " $0 stats" ;; esac