diff --git a/.zsh/aliases.zsh b/.zsh/aliases.zsh index 6e032ec..a670bdc 100644 --- a/.zsh/aliases.zsh +++ b/.zsh/aliases.zsh @@ -31,12 +31,7 @@ alias kca="knowledge-crystallize.sh --all" # Stamp all projects at once alias dch="diff-check.sh" # Detect drift between repo and ~/.dotfiles alias cl="changelog-gen.sh" # Regenerate CHANGELOG.md from git log -# Aider tiers (OpenRouter) — sunset planned in PR2, kept here during PR1 coexistence (see ADR-009 / spec AI-011) -alias ai="aider" # daily: DeepSeek V3.2 -alias aic="aider --model openrouter/qwen/qwen3-coder-next" # coding: Qwen3 Coder -alias aia="aider --architect --model openrouter/deepseek/deepseek-v3.2-speciale" # architecture: DeepSeek Speciale - -# OpenCode (secondary AI coding agent — replaces aider after PR2) +# OpenCode (primary AI coding agent — replaces aider) alias oc="opencode" # TUI: opencode Go subscription # tmux session management diff --git a/AGENTS.md b/AGENTS.md index f707797..1b20b5a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ > **Single Source of Truth for AI coding agents in this repo.** > -> Claude Code, OpenCode, Copilot, Cursor, Codex, Gemini, and Aider all read this file as their canonical system prompt. Per-agent files in `ai//` and `.github/` are thin pointers that delegate here, retaining only agent-specific extensions. See [`30-architecture/adr-009-multi-agent-runtime`](https://github.com/mlorentedev/dotfiles) (in vault) for the rationale. +> Claude Code, OpenCode, Copilot, Cursor, Codex, and Gemini all read this file as their canonical system prompt. Per-agent files in `ai//` and `.github/` are thin pointers that delegate here, retaining only agent-specific extensions. See [`30-architecture/adr-009-multi-agent-runtime`](https://github.com/mlorentedev/dotfiles) (in vault) for the rationale. ## Identity diff --git a/ai/aider/aider.conf.yml b/ai/aider/aider.conf.yml deleted file mode 100644 index 4f1d80a..0000000 --- a/ai/aider/aider.conf.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Aider global configuration -# Deployed to ~/.aider.conf.yml by setup scripts -# Docs: https://aider.chat/docs/config/aider_conf.html - -# Default tier: DeepSeek V3.2 (70% aider polyglot, ~$0.40/month) -# OPENROUTER_API_KEY is exported by load-secrets.sh at shell startup -# -# 3 tiers available (budget ~$2/month): -# daily (default): aider -# coding: aider --model openrouter/qwen/qwen3-coder-next -# architecture: aider --architect --model openrouter/deepseek/deepseek-v3.2-speciale -model: openrouter/deepseek/deepseek-v3.2 -editor-model: openrouter/deepseek/deepseek-v3.2 - -# UI -dark-mode: true -pretty: true -stream: true - -# Git — we control commits ourselves -auto-commits: false -attribute-co-authored-by: false -git-commit-verify: true - -# Linting -auto-lint: true - -# Repo map budget (tokens) -map-tokens: 4096 - -# Updates -check-update: true diff --git a/ai/aider/aider.model.settings.yml b/ai/aider/aider.model.settings.yml deleted file mode 100644 index c244959..0000000 --- a/ai/aider/aider.model.settings.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Aider model settings for OpenRouter providers -# Deployed to ~/.aider.model.settings.yml by setup scripts -# Docs: https://aider.chat/docs/config/adv-model-settings.html - -# --- Tier: daily (default) --- -- name: openrouter/deepseek/deepseek-v3.2 - edit_format: diff - use_repo_map: true - extra_params: - extra_body: - provider: - data_collection: "deny" - require_parameters: true - -# --- Tier: coding --- -- name: openrouter/qwen/qwen3-coder-next - edit_format: diff - use_repo_map: true - extra_params: - extra_body: - provider: - data_collection: "deny" - require_parameters: true - -# --- Tier: architecture (architect model) --- -- name: openrouter/deepseek/deepseek-v3.2-speciale - edit_format: diff - use_repo_map: true - extra_params: - extra_body: - provider: - data_collection: "deny" - require_parameters: true diff --git a/powershell/profile.ps1 b/powershell/profile.ps1 index 716d2cf..f53ea08 100644 --- a/powershell/profile.ps1 +++ b/powershell/profile.ps1 @@ -11,10 +11,8 @@ Set-Alias -Name c -Value claude Set-Alias -Name g -Value gemini -# Aider tiers (OpenRouter) -function ai { aider @Args } -function aic { aider --model openrouter/qwen/qwen3-coder-next @Args } -function aia { aider --architect --model openrouter/deepseek/deepseek-v3.2-speciale @Args } +# OpenCode (primary AI coding agent — replaces aider) +Set-Alias -Name oc -Value opencode # ============================================================================ # FUNCTIONS diff --git a/setup-linux.sh b/setup-linux.sh index 5a2cc96..a174b58 100755 --- a/setup-linux.sh +++ b/setup-linux.sh @@ -335,16 +335,7 @@ fi chmod +x "$HOME/.claude/init-project.sh" 2>/dev/null || true log_success "Claude Code configured with skills" -# Aider (AI pair programming) -log_info "Setting up Aider configuration..." -if [ -f "$CURRENT_DIR/ai/aider/aider.conf.yml" ]; then - cp "$CURRENT_DIR/ai/aider/aider.conf.yml" "$HOME/.aider.conf.yml" - log_success "Deployed .aider.conf.yml" -fi -if [ -f "$CURRENT_DIR/ai/aider/aider.model.settings.yml" ]; then - cp "$CURRENT_DIR/ai/aider/aider.model.settings.yml" "$HOME/.aider.model.settings.yml" - log_success "Deployed .aider.model.settings.yml" -fi +# Python tooling (uv + poetry) — used by hive MCP server (uvx hive-vault) and general Python workflows # Install uv (Python package manager — provides uvx) if ! command -v uv >/dev/null 2>&1; then log_info "Installing uv..." @@ -376,15 +367,6 @@ else log_info "poetry already installed" fi -# Install aider via uv (requires Python 3.12 — audioop removed in 3.13) -if command -v uv >/dev/null 2>&1; then - log_info "Installing aider-chat via uv..." - uv tool install --python 3.12 aider-chat 2>/dev/null || true - log_success "Aider installed" -else - log_warning "uv not found, skipping aider installation" -fi - # Create convenience symlinks for versioned-only binaries PYTHON_DIR=$(ls -d "$HOME/Applications"/python-* 2>/dev/null | sort -V | tail -1) || true if [ -n "$PYTHON_DIR" ] && [ -d "$PYTHON_DIR/bin" ] && [ ! -e "$PYTHON_DIR/bin/python" ]; then diff --git a/tests/aliases.bats b/tests/aliases.bats index 6f76456..659f4d3 100644 --- a/tests/aliases.bats +++ b/tests/aliases.bats @@ -32,26 +32,14 @@ setup() { grep -q 'alias tf="terraform"' "$ALIASES_FILE" } -# --- Aider tier aliases --- +# --- OpenCode alias (replaces aider tiers) --- -@test "aliases.zsh defines ai alias for daily tier" { - grep -q 'alias ai="aider"' "$ALIASES_FILE" +@test "aliases.zsh defines oc alias for opencode" { + grep -q '^alias oc="opencode"' "$ALIASES_FILE" } -@test "aliases.zsh defines aic alias for coding tier" { - grep -q 'alias aic=.*qwen.*coder' "$ALIASES_FILE" -} - -@test "aliases.zsh defines aia alias for architecture tier" { - grep -q 'alias aia=.*architect.*speciale' "$ALIASES_FILE" -} - -@test "aliases.zsh aic uses openrouter provider" { - grep 'alias aic=' "$ALIASES_FILE" | grep -q 'openrouter/' -} - -@test "aliases.zsh aia uses openrouter provider" { - grep 'alias aia=' "$ALIASES_FILE" | grep -q 'openrouter/' +@test "aliases.zsh no longer defines aider tier aliases (sunset)" { + ! grep -qE '^alias (ai|aic|aia)=' "$ALIASES_FILE" } # --- Knowledge aliases --- diff --git a/tests/opencode.bats b/tests/opencode.bats index 930f0e4..56e261a 100644 --- a/tests/opencode.bats +++ b/tests/opencode.bats @@ -45,17 +45,24 @@ setup() { [[ $(awk '/^# OpenCode/,/^# GitHub Copilot/' "$SETUP_SCRIPT" | grep -c '2>/dev/null || true') -eq 0 ]] } -# --- Regression: aider coexistence (PR1 keeps aider; sunset is PR2) --- +# --- Regression: aider sunset (PR2) --- -@test "setup-linux.sh STILL has aider install block (PR1 coexistence)" { - grep -q "# Aider (AI pair programming)" "$SETUP_SCRIPT" - grep -q "uv tool install --python 3.12 aider-chat" "$SETUP_SCRIPT" +@test "setup-linux.sh no longer installs aider" { + ! grep -q "uv tool install --python 3.12 aider-chat" "$SETUP_SCRIPT" + ! grep -q "# Aider (AI pair programming)" "$SETUP_SCRIPT" } -@test ".zsh/aliases.zsh STILL has aider aliases (PR1 coexistence)" { - grep -q '^alias ai="aider"' "$ALIASES_FILE" - grep -q '^alias aic="aider' "$ALIASES_FILE" - grep -q '^alias aia="aider' "$ALIASES_FILE" +@test "setup-linux.sh keeps uv install (used by hive MCP server)" { + grep -q "Installing uv" "$SETUP_SCRIPT" + grep -q "https://astral.sh/uv/install.sh" "$SETUP_SCRIPT" +} + +@test "ai/aider/ directory removed from repo" { + [[ ! -d "$DOTFILES_DIR/ai/aider" ]] +} + +@test ".zsh/aliases.zsh no longer has aider tier aliases" { + ! grep -qE '^alias (ai|aic|aia)=' "$ALIASES_FILE" } # --- opencode.jsonc structure --- diff --git a/tests/powershell-profile.bats b/tests/powershell-profile.bats index 0bcd44e..fff7fbb 100644 --- a/tests/powershell-profile.bats +++ b/tests/powershell-profile.bats @@ -22,46 +22,21 @@ setup() { # --- Aider tier functions --- -@test "profile.ps1 defines ai function for daily tier" { - grep -q 'function ai {' "$PROFILE_SCRIPT" -} - -@test "profile.ps1 ai function calls aider" { - grep 'function ai {' "$PROFILE_SCRIPT" | grep -q 'aider' -} +# --- OpenCode alias (replaces aider tier functions, sunset) --- -@test "profile.ps1 defines aic function for coding tier" { - grep -q 'function aic {' "$PROFILE_SCRIPT" +@test "profile.ps1 defines oc alias for opencode" { + grep -qE 'Set-Alias -Name oc -Value opencode' "$PROFILE_SCRIPT" } -@test "profile.ps1 aic function uses qwen coder model" { - grep 'function aic {' "$PROFILE_SCRIPT" | grep -q 'qwen.*coder' +@test "profile.ps1 no longer defines aider tier functions (sunset)" { + ! grep -qE '^function (ai|aic|aia) ' "$PROFILE_SCRIPT" } -@test "profile.ps1 defines aia function for architecture tier" { - grep -q 'function aia {' "$PROFILE_SCRIPT" -} - -@test "profile.ps1 aia function uses architect mode" { - grep 'function aia {' "$PROFILE_SCRIPT" | grep -q '\-\-architect' -} - -@test "profile.ps1 aia function uses deepseek speciale" { - grep 'function aia {' "$PROFILE_SCRIPT" | grep -q 'speciale' -} - -# --- Parity check: same models in bash and PowerShell --- - -@test "parity: aic uses same model in aliases.zsh and profile.ps1" { - bash_model=$(grep 'alias aic=' "$DOTFILES_DIR/.zsh/aliases.zsh" | grep -oP 'openrouter/[^ "]+') - ps_model=$(grep 'function aic {' "$PROFILE_SCRIPT" | grep -oP 'openrouter/[^ }]+') - [[ "$bash_model" = "$ps_model" ]] -} +# --- Parity check: oc alias exists in both bash and PowerShell --- -@test "parity: aia uses same model in aliases.zsh and profile.ps1" { - bash_model=$(grep 'alias aia=' "$DOTFILES_DIR/.zsh/aliases.zsh" | grep -oP 'openrouter/[^ "]+') - ps_model=$(grep 'function aia {' "$PROFILE_SCRIPT" | grep -oP 'openrouter/[^ }]+') - [[ "$bash_model" = "$ps_model" ]] +@test "parity: oc alias defined in both aliases.zsh and profile.ps1" { + grep -qE '^alias oc=' "$DOTFILES_DIR/.zsh/aliases.zsh" + grep -qE 'Set-Alias -Name oc' "$PROFILE_SCRIPT" } # --- Other functions ---