#!/usr/bin/env python3
# SPDX-License-Identifier: Apache-2.0
# Copyright 2024-2026 Lukasz Krzemien (biuro@softspark.eu)
# Source: https://github.com/softspark/ai-toolkit

"""Generate .aider.conf.yml configuration.

Usage: ./scripts/generate_aider_conf.py > .aider.conf.yml
"""
from __future__ import annotations

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent))

from _common import DEFAULT_CLAUDE_MODELS


def main() -> None:
    default_model = DEFAULT_CLAUDE_MODELS["sonnet"]
    print("# Aider configuration generated by ai-toolkit")
    print("# Regenerate using: ai-toolkit install --local")
    print("# Aider docs: https://aider.chat/docs/config/aider_conf.html")
    print()
    print("# Use the architect mode for complex tasks, aligned with our 2-phase workflow")
    print("architect: true")
    print("# Auto-accept architect proposals (default: true in aider >=0.82). Set to false")
    print("# if you want to approve every architect-mode edit manually.")
    print("auto-accept-architect: true")
    print()
    print("# Read project rules (loaded as read-only context)")
    print("read:")
    print('  - "CONVENTIONS.md"')
    print('  - ".claude/CLAUDE.md"')
    print('  - ".claude/constitution.md"')
    print('  - "AGENTS.md"')
    print()
    print("# Linting commands for quality gates")
    print("lint-cmd:")
    print('  - "python: ruff check"')
    print('  - "typescript: npx eslint"')
    print('  - "javascript: npx eslint"')
    print('  - "php: ./vendor/bin/phpstan analyse"')
    print('  - "go: go vet"')
    print()
    print("# Test commands (uncomment and customize per project). aider >=0.80 supports a")
    print("# single `test-cmd`; run with `--test` or enable `auto-test: true` to run after edits.")
    print("# test-cmd: pytest -q")
    print("# auto-test: false")
    print()
    print("# Model configuration")
    print(f"model: {default_model}")
    print(f"editor-model: {default_model}")
    print()
    print("# Auto-commit message formatting (matches our conventional commits)")
    print(
        'commit-prompt: "Write a short, concise commit message following'
        ' Conventional Commits (feat/fix/chore/docs/test/refactor)."'
    )
    print()
    print("# Git attribution (ai-toolkit policy: no AI co-authorship in commits).")
    print("# Do not flip this to true -- conflicts with the toolkit git-workflow rule")
    print("# (see app/rules/common/git-workflow.md).")
    print("attribute-co-authored-by: false")
    print("attribute-commit-message-author: false")
    print("attribute-commit-message-committer: false")
    print()
    print("# Language settings (aider >=0.83 `commit-language`, >=0.85 confirmed stable).")
    print("# Leave unset to inherit the user's system locale. Uncomment to pin.")
    print("# chat-language: en")
    print("# commit-language: en")
    print()
    print("# Watch-files mode scans for `# AI!` / `# ai?` comments (aider >=0.75). Opt-in")
    print("# because it changes how aider reads your editor buffers.")
    print("# watch-files: false")
    print()
    print("# Disable auto-commits if you prefer using the /commit slash skill explicitly")
    print("# auto-commits: false")
    print()


if __name__ == "__main__":
    main()
