#!/bin/bash # ═══════════════════════════════════════════════════════════════════════════ # ALFRED WORKSPACE CONSOLIDATOR # # Gathers ALL session data, memories, journals, plans, playbooks, # and archives from across every program into one unified directory. # # Sources consolidated: # 1. Copilot Chat memories (13 .md files) # 2. Cursor plans (24 .plan.md files) # 3. GoCodeMe chat sessions, playbooks, analytics # 4. Alfred Agent sessions (27+), transcripts, hook logs # 5. VS Code history (2910 dirs) # 6. Strategy docs (LAUNCH, PLAN, ROADMAP, TRIAGE, etc.) # 7. Backup archive (95 files — todos, agents, legal, etc.) # 8. VS Code workspace storage (14 workspaces) # # Output: ~/alfred-workspace-unified/ # # Built by Commander Danny William Perez and Alfred. # ═══════════════════════════════════════════════════════════════════════════ set -e UNIFIED="$HOME/alfred-workspace-unified" echo "═══════════════════════════════════════════════════════════════" echo " ALFRED WORKSPACE CONSOLIDATOR" echo " Target: $UNIFIED" echo "═══════════════════════════════════════════════════════════════" # Create structure mkdir -p "$UNIFIED"/{memories,sessions,plans,playbooks,journals,strategy,archives,analytics,skills,hooks,history-index} # ── 1. Copilot Chat Memories ────────────────────────────────────── SRC="$HOME/.vscode-server/data/User/globalStorage/github.copilot-chat/memory-tool/memories" if [ -d "$SRC" ]; then echo "✓ Copilot memories: $(ls "$SRC"/*.md 2>/dev/null | wc -l) files" cp -u "$SRC"/*.md "$UNIFIED/memories/" 2>/dev/null || true fi # ── 2. Cursor Plans ─────────────────────────────────────────────── SRC="$HOME/.cursor/plans" if [ -d "$SRC" ]; then echo "✓ Cursor plans: $(ls "$SRC"/*.plan.md 2>/dev/null | wc -l) files" cp -u "$SRC"/*.plan.md "$UNIFIED/plans/" 2>/dev/null || true cp -u "$SRC"/*.code-workspace "$UNIFIED/plans/" 2>/dev/null || true fi # ── 3. GoCodeMe Sessions & Data ────────────────────────────────── SRC="$HOME/.gocodeme" if [ -d "$SRC" ]; then echo "✓ GoCodeMe data:" # Chat sessions if [ -d "$SRC/chatSessions" ]; then mkdir -p "$UNIFIED/sessions/gocodeme" cp -u "$SRC/chatSessions/"*.json "$UNIFIED/sessions/gocodeme/" 2>/dev/null || true echo " - Chat sessions: $(ls "$SRC/chatSessions/"*.json 2>/dev/null | wc -l)" fi # Playbooks if [ -d "$SRC/playbooks" ]; then cp -u "$SRC/playbooks/"*.json "$UNIFIED/playbooks/" 2>/dev/null || true echo " - Playbooks: $(ls "$SRC/playbooks/"*.json 2>/dev/null | wc -l)" fi # Analytics if [ -f "$SRC/analytics/tool_usage.jsonl" ]; then cp -u "$SRC/analytics/tool_usage.jsonl" "$UNIFIED/analytics/" 2>/dev/null || true echo " - Analytics: $(wc -l < "$SRC/analytics/tool_usage.jsonl") tool usage events" fi # AI instructions cp -u "$SRC/ai-instructions.md" "$UNIFIED/memories/gocodeme-ai-instructions.md" 2>/dev/null || true cp -u "$SRC/settings.json" "$UNIFIED/analytics/gocodeme-settings.json" 2>/dev/null || true fi # ── 4. Alfred Agent Sessions ───────────────────────────────────── SRC="$HOME/alfred-agent/data" if [ -d "$SRC" ]; then echo "✓ Alfred Agent data:" # Sessions if [ -d "$SRC/sessions" ]; then mkdir -p "$UNIFIED/sessions/alfred-agent" cp -u "$SRC/sessions/"*.json "$UNIFIED/sessions/alfred-agent/" 2>/dev/null || true echo " - Sessions: $(ls "$SRC/sessions/"*.json 2>/dev/null | wc -l)" fi # Transcripts if [ -d "$SRC/transcripts" ] && [ "$(ls -A "$SRC/transcripts" 2>/dev/null)" ]; then mkdir -p "$UNIFIED/sessions/alfred-agent/transcripts" cp -ru "$SRC/transcripts/"* "$UNIFIED/sessions/alfred-agent/transcripts/" 2>/dev/null || true echo " - Transcripts: $(ls "$SRC/transcripts/" 2>/dev/null | wc -l)" fi # Hook logs if [ -d "$SRC/hook-logs" ]; then cp -u "$SRC/hook-logs/"* "$UNIFIED/hooks/" 2>/dev/null || true echo " - Hook logs: $(ls "$SRC/hook-logs/" 2>/dev/null | wc -l)" fi # Memories if [ -d "$SRC/memories" ] && [ "$(ls -A "$SRC/memories" 2>/dev/null)" ]; then cp -u "$SRC/memories/"* "$UNIFIED/memories/" 2>/dev/null || true echo " - Agent memories: $(ls "$SRC/memories/" 2>/dev/null | wc -l)" fi # Skills if [ -d "$SRC/skills" ] && [ "$(ls -A "$SRC/skills" 2>/dev/null)" ]; then cp -u "$SRC/skills/"* "$UNIFIED/skills/" 2>/dev/null || true echo " - Skills: $(ls "$SRC/skills/" 2>/dev/null | wc -l)" fi # Costs if [ -d "$SRC/costs" ] && [ "$(ls -A "$SRC/costs" 2>/dev/null)" ]; then mkdir -p "$UNIFIED/analytics/costs" cp -u "$SRC/costs/"* "$UNIFIED/analytics/costs/" 2>/dev/null || true fi fi # ── 5. Strategy Docs ───────────────────────────────────────────── echo "✓ Strategy docs:" for f in \ "$HOME/ALFRED_IDE_PLATFORM_PLAN_2026-04-02.md" \ "$HOME/ALFRED_LINUX_GRAND_ROADMAP_v4-v9.md" \ "$HOME/ALFRED_LINUX_MESH_PLAN_2026-04-04.md" \ "$HOME/BULLETPROOF_PLAN_2026-04-05.md" \ "$HOME/ECOSYSTEM_LAUNCH_TRIAGE_2026-04-02.md" \ "$HOME/LAUNCH_SCOREBOARD_2026-04-02.md" \ "$HOME/LAUNCH_SCOREBOARD_2026-04-08.md" \ "$HOME/LAUNCH_CHECKPOINT_2026-04-03.md"; do if [ -f "$f" ]; then cp -u "$f" "$UNIFIED/strategy/" echo " - $(basename "$f")" fi done # ── 6. Backup Archive ──────────────────────────────────────────── SRC="$HOME/.backup-archive" if [ -d "$SRC" ]; then echo "✓ Backup archive: $(ls "$SRC" | wc -l) files" mkdir -p "$UNIFIED/archives/backup-archive" cp -ru "$SRC/"* "$UNIFIED/archives/backup-archive/" 2>/dev/null || true fi # ── 7. VS Code History Index ───────────────────────────────────── HIST="$HOME/.vscode-server/data/User/History" if [ -d "$HIST" ]; then HIST_COUNT=$(ls "$HIST" | wc -l) echo "✓ VS Code history: $HIST_COUNT edit histories" # Build a lightweight index (don't copy all files) echo "# VS Code Edit History Index" > "$UNIFIED/history-index/vscode-history.md" echo "# Generated: $(date -Iseconds)" >> "$UNIFIED/history-index/vscode-history.md" echo "# Total: $HIST_COUNT files" >> "$UNIFIED/history-index/vscode-history.md" echo "" >> "$UNIFIED/history-index/vscode-history.md" for d in "$HIST"/*/; do if [ -f "$d/entries.json" ]; then resource=$(python3 -c "import sys,json; print(json.load(open('$d/entries.json')).get('resource','?'))" 2>/dev/null || echo "?") entries=$(python3 -c "import sys,json; print(len(json.load(open('$d/entries.json')).get('entries',[])))" 2>/dev/null || echo "?") echo "- $(basename "$d") | $entries edits | $resource" >> "$UNIFIED/history-index/vscode-history.md" fi done 2>/dev/null fi # ── 8. VS Code Workspace Storage Index ──────────────────────────── WS="$HOME/.vscode-server/data/User/workspaceStorage" if [ -d "$WS" ]; then echo "✓ VS Code workspaces: $(ls "$WS" | wc -l) workspaces" echo "# VS Code Workspace Index" > "$UNIFIED/history-index/vscode-workspaces.md" echo "# Generated: $(date -Iseconds)" >> "$UNIFIED/history-index/vscode-workspaces.md" echo "" >> "$UNIFIED/history-index/vscode-workspaces.md" for d in "$WS"/*/; do if [ -f "$d/workspace.json" ]; then info=$(cat "$d/workspace.json" 2>/dev/null) echo "- $(basename "$d") | $info" >> "$UNIFIED/history-index/vscode-workspaces.md" fi done 2>/dev/null fi # ── 9. Copilot Chat Agents & Settings ───────────────────────────── SRC="$HOME/.vscode-server/data/User/globalStorage/github.copilot-chat" if [ -d "$SRC" ]; then cp -u "$SRC/commandEmbeddings.json" "$UNIFIED/analytics/" 2>/dev/null || true cp -u "$SRC/settingEmbeddings.json" "$UNIFIED/analytics/" 2>/dev/null || true # Plan agent + Ask agent mkdir -p "$UNIFIED/skills/copilot-agents" cp -u "$SRC/plan-agent/Plan.agent.md" "$UNIFIED/skills/copilot-agents/" 2>/dev/null || true cp -u "$SRC/ask-agent/Ask.agent.md" "$UNIFIED/skills/copilot-agents/" 2>/dev/null || true echo "✓ Copilot agents & embeddings" fi # ── 10. Cline/Claude Dev Data ───────────────────────────────────── SRC="$HOME/.vscode-server/data/User/globalStorage/saoudrizwan.claude-dev" if [ -d "$SRC" ]; then mkdir -p "$UNIFIED/analytics/cline" cp -u "$SRC/cache/"*.json "$UNIFIED/analytics/cline/" 2>/dev/null || true cp -u "$SRC/settings/"*.json "$UNIFIED/analytics/cline/" 2>/dev/null || true echo "✓ Cline/Claude Dev data" fi # ── 11. Agent Backups ───────────────────────────────────────────── if [ -d "$HOME/backups/alfred-agent" ]; then echo "✓ Agent backups: $(ls "$HOME/backups/alfred-agent" | wc -l) snapshots" # Just create a symlink instead of copying ln -sfn "$HOME/backups/alfred-agent" "$UNIFIED/archives/agent-backups" fi # ── Summary ─────────────────────────────────────────────────────── echo "" echo "═══════════════════════════════════════════════════════════════" echo " CONSOLIDATION COMPLETE" echo "═══════════════════════════════════════════════════════════════" echo "" echo " Unified workspace: $UNIFIED" echo "" du -sh "$UNIFIED"/* 2>/dev/null | sort -rh | while read size dir; do echo " $size $(basename "$dir")" done echo "" TOTAL=$(find "$UNIFIED" -type f | wc -l) echo " Total files: $TOTAL" echo "═══════════════════════════════════════════════════════════════"