363 lines
14 KiB
Fish
Executable File
363 lines
14 KiB
Fish
Executable File
#!/usr/bin/env fish
|
|
# Cognitive Ecosystem - Initialization Script
|
|
# Creates the essential structure for your knowledge system
|
|
|
|
# Configuration
|
|
set CURRENT_DIR (pwd)
|
|
set TEMPLATES_PATH "$CURRENT_DIR/.templates"
|
|
set CURRENT_DATE (date +%Y-%m-%d)
|
|
set DEFAULT_EDITOR "nvim" # Change to your preferred editor
|
|
|
|
# Colors for prettier output
|
|
set GREEN '\033[0;32m'
|
|
set BLUE '\033[0;34m'
|
|
set YELLOW '\033[0;33m'
|
|
set RED '\033[0;31m'
|
|
set NC '\033[0m' # No Color
|
|
|
|
function log_step
|
|
echo -e "$BLUE→ $argv$NC"
|
|
end
|
|
|
|
function log_done
|
|
echo -e "$GREEN✓ $argv$NC"
|
|
end
|
|
|
|
function log_warn
|
|
echo -e "$YELLOW! $argv$NC"
|
|
end
|
|
|
|
function log_error
|
|
echo -e "$RED✗ $argv$NC"
|
|
end
|
|
|
|
# Prompt for username
|
|
log_step "Please enter your username for the seed file:"
|
|
read -l USERNAME
|
|
if test -z "$USERNAME"
|
|
set USERNAME "user"
|
|
log_warn "No username provided, using 'user' as default"
|
|
else
|
|
log_done "Using username: $USERNAME"
|
|
end
|
|
|
|
# Safety check - confirm if critical directories already exist
|
|
if test -d "$CURRENT_DIR/journal" -o -d "$CURRENT_DIR/.templates"
|
|
log_warn "Some system directories already exist in: $CURRENT_DIR"
|
|
read -l -P "Continue and potentially overwrite existing files? (y/N) " confirm
|
|
|
|
if test "$confirm" != "y" -a "$confirm" != "Y"
|
|
log_error "Initialization aborted by user"
|
|
exit 1
|
|
end
|
|
end
|
|
|
|
# Create basic README
|
|
log_step "Creating README.md..."
|
|
echo "# Cognitive Ecosystem" > "$CURRENT_DIR/README.md"
|
|
echo "" >> "$CURRENT_DIR/README.md"
|
|
echo "A personal knowledge management system designed for deep integration of ideas, code, and resources." >> "$CURRENT_DIR/README.md"
|
|
log_done "README created"
|
|
|
|
# Create all necessary directories
|
|
log_step "Creating directory structure..."
|
|
# Main directories
|
|
mkdir -p "$CURRENT_DIR/journal/daily"
|
|
mkdir -p "$CURRENT_DIR/journal/weekly"
|
|
mkdir -p "$CURRENT_DIR/journal/monthly"
|
|
mkdir -p "$CURRENT_DIR/journal/quarterly"
|
|
mkdir -p "$CURRENT_DIR/journal/yearly"
|
|
mkdir -p "$CURRENT_DIR/projects"
|
|
mkdir -p "$CURRENT_DIR/people"
|
|
mkdir -p "$CURRENT_DIR/knowledge"
|
|
mkdir -p "$CURRENT_DIR/notebooks"
|
|
mkdir -p "$CURRENT_DIR/code"
|
|
mkdir -p "$CURRENT_DIR/resources"
|
|
mkdir -p "$TEMPLATES_PATH"
|
|
log_done "Directory structure created"
|
|
|
|
# Create seed node template
|
|
log_step "Creating seed node template..."
|
|
set SEED_TEMPLATE "$TEMPLATES_PATH/01-seed-node.md"
|
|
echo "---" > $SEED_TEMPLATE
|
|
echo "aliases: [\"Home\", \"Hub\", \"Seed\"]" >> $SEED_TEMPLATE
|
|
echo "tags: [system/core]" >> $SEED_TEMPLATE
|
|
echo "created: $CURRENT_DATE" >> $SEED_TEMPLATE
|
|
echo "---" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
echo "# Personal Seed Node" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
echo "## Input Stream" >> $SEED_TEMPLATE
|
|
echo "<!-- Capture your thoughts here without worrying about organization -->" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
echo "## Navigation" >> $SEED_TEMPLATE
|
|
echo "<!-- Core links to primary areas -->" >> $SEED_TEMPLATE
|
|
echo "- [[journal/00-index|Journal]]" >> $SEED_TEMPLATE
|
|
echo "- [[projects/00-index|Projects]]" >> $SEED_TEMPLATE
|
|
echo "- [[people/00-index|People]]" >> $SEED_TEMPLATE
|
|
echo "- [[knowledge/00-index|Knowledge]]" >> $SEED_TEMPLATE
|
|
echo "- [[notebooks/00-index|Notebooks]]" >> $SEED_TEMPLATE
|
|
echo "- [[code/00-index|Code]]" >> $SEED_TEMPLATE
|
|
echo "- [[resources/00-index|Resources]]" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
echo "## Current Focus" >> $SEED_TEMPLATE
|
|
echo "<!-- What needs your attention right now -->" >> $SEED_TEMPLATE
|
|
echo "" >> $SEED_TEMPLATE
|
|
log_done "Seed node template created"
|
|
|
|
# Create daily note template
|
|
log_step "Creating daily note template..."
|
|
set DAILY_TEMPLATE "$TEMPLATES_PATH/10-daily-note.md"
|
|
echo "---" > $DAILY_TEMPLATE
|
|
echo "tags: [journal/daily]" >> $DAILY_TEMPLATE
|
|
echo "date: {{date}}" >> $DAILY_TEMPLATE
|
|
echo "---" >> $DAILY_TEMPLATE
|
|
echo "# {{date_pretty}}" >> $DAILY_TEMPLATE
|
|
echo "" >> $DAILY_TEMPLATE
|
|
echo "## Morning Thoughts" >> $DAILY_TEMPLATE
|
|
echo "" >> $DAILY_TEMPLATE
|
|
echo "## Ideas & Notes" >> $DAILY_TEMPLATE
|
|
echo "" >> $DAILY_TEMPLATE
|
|
echo "## Evening Reflection" >> $DAILY_TEMPLATE
|
|
echo "" >> $DAILY_TEMPLATE
|
|
log_done "Daily note template created"
|
|
|
|
# Create project note template
|
|
log_step "Creating project note template..."
|
|
set PROJECT_TEMPLATE "$TEMPLATES_PATH/20-project-note.md"
|
|
echo "---" > $PROJECT_TEMPLATE
|
|
echo "tags: [project]" >> $PROJECT_TEMPLATE
|
|
echo "status: idea" >> $PROJECT_TEMPLATE
|
|
echo "started: {{date}}" >> $PROJECT_TEMPLATE
|
|
echo "---" >> $PROJECT_TEMPLATE
|
|
echo "# {{title}}" >> $PROJECT_TEMPLATE
|
|
echo "" >> $PROJECT_TEMPLATE
|
|
echo "## Purpose" >> $PROJECT_TEMPLATE
|
|
echo "" >> $PROJECT_TEMPLATE
|
|
echo "## Current Status" >> $PROJECT_TEMPLATE
|
|
echo "" >> $PROJECT_TEMPLATE
|
|
echo "## Next Steps" >> $PROJECT_TEMPLATE
|
|
echo "" >> $PROJECT_TEMPLATE
|
|
log_done "Project template created"
|
|
|
|
# Create knowledge note template
|
|
log_step "Creating knowledge note template..."
|
|
set KNOWLEDGE_TEMPLATE "$TEMPLATES_PATH/30-knowledge-note.md"
|
|
echo "---" > $KNOWLEDGE_TEMPLATE
|
|
echo "tags: [knowledge]" >> $KNOWLEDGE_TEMPLATE
|
|
echo "created: {{date}}" >> $KNOWLEDGE_TEMPLATE
|
|
echo "---" >> $KNOWLEDGE_TEMPLATE
|
|
echo "# {{title}}" >> $KNOWLEDGE_TEMPLATE
|
|
echo "" >> $KNOWLEDGE_TEMPLATE
|
|
echo "## Overview" >> $KNOWLEDGE_TEMPLATE
|
|
echo "" >> $KNOWLEDGE_TEMPLATE
|
|
echo "## Key Concepts" >> $KNOWLEDGE_TEMPLATE
|
|
echo "" >> $KNOWLEDGE_TEMPLATE
|
|
echo "## Connections" >> $KNOWLEDGE_TEMPLATE
|
|
echo "" >> $KNOWLEDGE_TEMPLATE
|
|
log_done "Knowledge template created"
|
|
|
|
# Create .env file template
|
|
log_step "Creating .env file template..."
|
|
set ENV_TEMPLATE "$TEMPLATES_PATH/50-env.template"
|
|
echo "# Cognitive Ecosystem Configuration" > $ENV_TEMPLATE
|
|
echo "" >> $ENV_TEMPLATE
|
|
echo "# API Keys" >> $ENV_TEMPLATE
|
|
echo "OPENAI_API_KEY=" >> $ENV_TEMPLATE
|
|
echo "ANTHROPIC_API_KEY=" >> $ENV_TEMPLATE
|
|
echo "" >> $ENV_TEMPLATE
|
|
echo "# Model Configuration" >> $ENV_TEMPLATE
|
|
echo "DEFAULT_LLM_PROVIDER=anthropic" >> $ENV_TEMPLATE
|
|
echo "DEFAULT_LLM_MODEL=claude-3-7-sonnet-20250219" >> $ENV_TEMPLATE
|
|
echo "DEFAULT_EMBEDDING_MODEL=text-embedding-3-large" >> $ENV_TEMPLATE
|
|
echo "" >> $ENV_TEMPLATE
|
|
echo "# System Settings" >> $ENV_TEMPLATE
|
|
echo "LOG_LEVEL=info" >> $ENV_TEMPLATE
|
|
echo "ENABLE_AUTONOMOUS_AGENTS=false" >> $ENV_TEMPLATE
|
|
log_done ".env template created"
|
|
|
|
# Create basic .gitignore
|
|
log_step "Creating .gitignore..."
|
|
echo ".env" > "$CURRENT_DIR/.gitignore"
|
|
echo ".DS_Store" >> "$CURRENT_DIR/.gitignore"
|
|
echo "__pycache__/" >> "$CURRENT_DIR/.gitignore"
|
|
echo "*.pyc" >> "$CURRENT_DIR/.gitignore"
|
|
log_done ".gitignore created"
|
|
|
|
# Create initial seed node
|
|
log_step "Creating seed node..."
|
|
set SEED_NODE "$CURRENT_DIR/people/01-seed-$USERNAME.md"
|
|
cat "$TEMPLATES_PATH/01-seed-node.md" > $SEED_NODE
|
|
log_done "Seed node created at $SEED_NODE"
|
|
|
|
# Create today's daily note
|
|
log_step "Creating today's daily note..."
|
|
set TODAY_NOTE "$CURRENT_DIR/journal/daily/$CURRENT_DATE.md"
|
|
cat "$TEMPLATES_PATH/10-daily-note.md" | sed "s/{{date}}/$CURRENT_DATE/g" | sed "s/{{date_pretty}}/"(date '+%A, %B %-d, %Y')"/g" > $TODAY_NOTE
|
|
log_done "Today's note created at $TODAY_NOTE"
|
|
|
|
# Create index files
|
|
log_step "Creating index files..."
|
|
# Journal index
|
|
set JOURNAL_INDEX "$CURRENT_DIR/journal/00-index.md"
|
|
echo "# Journal" > $JOURNAL_INDEX
|
|
echo "" >> $JOURNAL_INDEX
|
|
echo "## Daily Entries" >> $JOURNAL_INDEX
|
|
echo "- [[$CURRENT_DATE]] (Today)" >> $JOURNAL_INDEX
|
|
echo "" >> $JOURNAL_INDEX
|
|
echo "## Time Periods" >> $JOURNAL_INDEX
|
|
echo "- [[weekly/00-index|Weekly Reviews]]" >> $JOURNAL_INDEX
|
|
echo "- [[monthly/00-index|Monthly Reviews]]" >> $JOURNAL_INDEX
|
|
echo "- [[quarterly/00-index|Quarterly Reviews]]" >> $JOURNAL_INDEX
|
|
echo "- [[yearly/00-index|Yearly Reviews]]" >> $JOURNAL_INDEX
|
|
echo "" >> $JOURNAL_INDEX
|
|
|
|
# Journal sub-indexes
|
|
echo "# Weekly Reviews" > "$CURRENT_DIR/journal/weekly/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/journal/weekly/00-index.md"
|
|
echo "# Monthly Reviews" > "$CURRENT_DIR/journal/monthly/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/journal/monthly/00-index.md"
|
|
echo "# Quarterly Reviews" > "$CURRENT_DIR/journal/quarterly/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/journal/quarterly/00-index.md"
|
|
echo "# Yearly Reviews" > "$CURRENT_DIR/journal/yearly/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/journal/yearly/00-index.md"
|
|
|
|
# Projects index
|
|
echo "# Projects" > "$CURRENT_DIR/projects/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/projects/00-index.md"
|
|
echo "## Active Projects" >> "$CURRENT_DIR/projects/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/projects/00-index.md"
|
|
|
|
# People index
|
|
echo "# People" > "$CURRENT_DIR/people/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/people/00-index.md"
|
|
echo "## Connections" >> "$CURRENT_DIR/people/00-index.md"
|
|
echo "- [[01-seed-$USERNAME|$USERNAME (Me)]]" >> "$CURRENT_DIR/people/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/people/00-index.md"
|
|
|
|
# Knowledge index
|
|
echo "# Knowledge" > "$CURRENT_DIR/knowledge/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/knowledge/00-index.md"
|
|
echo "## Domains" >> "$CURRENT_DIR/knowledge/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/knowledge/00-index.md"
|
|
|
|
# Notebooks index
|
|
echo "# Notebooks" > "$CURRENT_DIR/notebooks/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/notebooks/00-index.md"
|
|
echo "## Experiments" >> "$CURRENT_DIR/notebooks/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/notebooks/00-index.md"
|
|
|
|
# Code index
|
|
echo "# Code" > "$CURRENT_DIR/code/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/code/00-index.md"
|
|
echo "## Components" >> "$CURRENT_DIR/code/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/code/00-index.md"
|
|
|
|
# Resources index
|
|
echo "# Resources" > "$CURRENT_DIR/resources/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/resources/00-index.md"
|
|
echo "## Papers" >> "$CURRENT_DIR/resources/00-index.md"
|
|
echo "" >> "$CURRENT_DIR/resources/00-index.md"
|
|
log_done "Index files created"
|
|
|
|
# Create .env file from template
|
|
log_step "Creating .env file..."
|
|
set ENV_FILE "$CURRENT_DIR/.env"
|
|
cp "$TEMPLATES_PATH/50-env.template" "$ENV_FILE"
|
|
log_done ".env file created"
|
|
|
|
# Set up fish abbreviation directly in current shell and in config
|
|
log_step "Setting up fish abbreviation..."
|
|
set REPO_PATH (realpath $CURRENT_DIR)
|
|
|
|
# Create the abbreviation in the current shell
|
|
abbr -a s "cd \"$REPO_PATH\" && $DEFAULT_EDITOR \"people/01-seed-$USERNAME.md\""
|
|
|
|
# Also add it to the config file if not already there
|
|
if not contains "abbr -Ua s" ~/.config/fish/config.fish
|
|
echo "" >> ~/.config/fish/config.fish
|
|
echo "# Cognitive Ecosystem - quick access to seed node" >> ~/.config/fish/config.fish
|
|
echo "abbr -Ua s 'cd \"$REPO_PATH\" && $DEFAULT_EDITOR \"people/01-seed-$USERNAME.md\"'" >> ~/.config/fish/config.fish
|
|
log_done "Added abbreviation 's' to fish config and current shell"
|
|
else
|
|
log_warn "Abbreviation 's' already exists in fish config"
|
|
log_done "Added abbreviation 's' to current shell only"
|
|
end
|
|
|
|
# Create next steps document
|
|
log_step "Creating next steps document..."
|
|
set NEXT_STEPS "$CURRENT_DIR/00-NEXT-STEPS.md"
|
|
echo "# Next Steps for Your Cognitive Ecosystem" > $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "Now that you have your basic structure in place, here are some suggested next steps:" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "## Immediate Actions" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "1. **Initialize Git Repository**" >> $NEXT_STEPS
|
|
echo " ```bash" >> $NEXT_STEPS
|
|
echo " git init" >> $NEXT_STEPS
|
|
echo " git add ." >> $NEXT_STEPS
|
|
echo " git commit -m \"Initial commit: Cognitive Ecosystem seed\"" >> $NEXT_STEPS
|
|
echo " ```" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "2. **Set Up Obsidian**" >> $NEXT_STEPS
|
|
echo " - Open this folder in Obsidian" >> $NEXT_STEPS
|
|
echo " - Configure graph view for better visualization" >> $NEXT_STEPS
|
|
echo " - Consider useful plugins like Dataview or Calendar" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "3. **Begin Journal Practice**" >> $NEXT_STEPS
|
|
echo " - Start using the daily journal for note-taking" >> $NEXT_STEPS
|
|
echo " - Use the seed node as your dashboard" >> $NEXT_STEPS
|
|
echo " - Begin organizing knowledge as it emerges" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "## Development Paths" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "1. **Basic CLI Tool**" >> $NEXT_STEPS
|
|
echo " - Create a simple Python CLI in the code directory" >> $NEXT_STEPS
|
|
echo " - Implement commands for common operations" >> $NEXT_STEPS
|
|
echo " - Add FZF integration for navigation" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "2. **Resource Processing**" >> $NEXT_STEPS
|
|
echo " - Set up a pipeline for processing PDFs" >> $NEXT_STEPS
|
|
echo " - Implement YouTube transcript extraction" >> $NEXT_STEPS
|
|
echo " - Create a system for code documentation" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "3. **Agent Framework**" >> $NEXT_STEPS
|
|
echo " - Implement a basic receptionist agent" >> $NEXT_STEPS
|
|
echo " - Set up vector storage for embeddings" >> $NEXT_STEPS
|
|
echo " - Create a simple chat interface" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "## File Numbering Convention" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "The system uses a numerical prefix convention for organizing files:" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "- **00-**: Index files that provide an overview of a directory" >> $NEXT_STEPS
|
|
echo "- **01-09**: Primary/core files (e.g., seed node)" >> $NEXT_STEPS
|
|
echo "- **10-49**: Standard content files" >> $NEXT_STEPS
|
|
echo "- **50-99**: Configuration and system files" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "The only files without numerical prefixes are journal entries, which use date-based naming." >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "## System Evolution" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "As your system grows, consider:" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "- **Git Hooks** for automation" >> $NEXT_STEPS
|
|
echo "- **Dashboard Development** for system visibility" >> $NEXT_STEPS
|
|
echo "- **Integration with External Tools** like tmux and neovim" >> $NEXT_STEPS
|
|
echo "- **Autonomous Processing** for knowledge metabolism" >> $NEXT_STEPS
|
|
echo "" >> $NEXT_STEPS
|
|
echo "Remember that the system should grow organically based on your actual usage patterns." >> $NEXT_STEPS
|
|
echo "Focus on establishing consistent practices before implementing complex automations." >> $NEXT_STEPS
|
|
log_done "Next steps document created"
|
|
|
|
echo ""
|
|
log_done "Initialization complete! Your cognitive ecosystem is ready."
|
|
echo ""
|
|
echo -e "$GREEN""To access your seed node, type 's' (works in current shell)""$NC"
|
|
echo -e "$BLUE""Or navigate to: $SEED_NODE""$NC"
|
|
echo ""
|
|
echo -e "$YELLOW""See 00-NEXT-STEPS.md for suggested actions to continue development""$NC"
|
|
echo ""
|