Skip to content

Default Config Template

Default configuration template for CodeMap.

DEFAULT_CONFIG_TEMPLATE module-attribute

DEFAULT_CONFIG_TEMPLATE = '# CodeMap Configuration File\n# -------------------------\n# This file configures CodeMap\'s behavior. Uncomment and modify settings as needed.\n\n# LLM Configuration - Controls which model is used for AI operations\nllm:\n  # Format: "provider:model-name", e.g., "openai:gpt-4o", "anthropic:claude-3-opus"\n  model: "openai:gpt-4o-mini"\n  temperature: 0.5  # Lower for more deterministic outputs, higher for creativity\n  max_output_tokens: 1024  # Maximum tokens in responses\n\n# Embedding Configuration - Controls vector embedding behavior\nembedding:\n  # Recommended models: "minishlab/potion-base-8M3", Only Model2Vec static models are supported\n  model_name: "minishlab/potion-base-8M"\n  # dimension_metric: "cosine" # Metric for dimension calculation (e.g., "cosine", "euclidean")\n  # max_retries: 3 # Maximum retries for embedding requests\n  # retry_delay: 5 # Delay in seconds between retries\n  # max_content_length: 5000  # Maximum characters per file chunk\n  # Qdrant (Vector DB) settings\n  # qdrant_batch_size: 100 # Batch size for Qdrant uploads\n  # url: "http://localhost:6333" # Qdrant server URL\n  # timeout: 30 # Qdrant client timeout in seconds\n  # prefer_grpc: true # Prefer gRPC for Qdrant communication\n\n  # Advanced chunking settings - controls how code is split\n  # chunking:\n  #   max_hierarchy_depth: 2  # Maximum depth of code hierarchy to consider\n  #   max_file_lines: 1000  # Maximum lines per file before splitting\n\n  # Clustering settings for embeddings\n  # clustering:\n  #   method: "agglomerative"  # Clustering method: "agglomerative", "dbscan"\n  #   agglomerative: # Settings for Agglomerative Clustering\n  #     metric: "precomputed" # Metric: "cosine", "euclidean", "manhattan", "l1", "l2", "precomputed"\n  #     distance_threshold: 0.3 # Distance threshold for forming clusters\n  #     linkage: "complete" # Linkage criterion: "ward", "complete", "average", "single"\n  #   dbscan: # Settings for DBSCAN Clustering\n  #     eps: 0.3 # The maximum distance between two samples for one to be considered as in the neighborhood of the other\n  #     min_samples: 2 # The number of samples in a neighborhood for a point to be considered as a core point\n  #     algorithm: "auto" # Algorithm to compute pointwise distances: "auto", "ball_tree", "kd_tree", "brute"\n  #     metric: "precomputed" # Metric for distance computation: "cityblock", "cosine", "euclidean", "l1", "l2", "manhattan", "precomputed"\n\n# RAG (Retrieval Augmented Generation) Configuration\nrag:\n  max_context_length: 8000  # Maximum context length for the LLM\n  max_context_results: 10  # Maximum number of context results to return\n  similarity_threshold: 0.75  # Minimum similarity score (0-1) for relevance\n  # system_prompt: null # Optional system prompt to guide the RAG model (leave commented or set if needed)\n  include_file_content: true  # Include file content in context\n  include_metadata: true  # Include file metadata in context\n\n# Sync Configuration - Controls which files are excluded from processing\nsync:\n  exclude_patterns:\n    - "^node_modules/"\n    - "^\\\\.venv/"\n    - "^venv/"\n    - "^env/"\n    - "^__pycache__/"\n    - "^\\\\.mypy_cache/"\n    - "^\\\\.pytest_cache/"\n    - "^\\\\.ruff_cache/"\n    - "^dist/"\n    - "^build/"\n    - "^\\\\.git/"\n    - "\\\\\\\\.pyc$"\n    - "\\\\\\\\.pyo$"\n    - "\\\\\\\\.so$"\n    - "\\\\\\\\.dll$"\n\n# Generation Configuration - Controls documentation generation\ngen:\n  max_content_length: 5000  # Maximum content length per file for generation\n  use_gitignore: true  # Use .gitignore patterns to exclude files\n  output_dir: "documentation"  # Directory to store generated documentation\n  include_tree: true  # Include directory tree in output\n  include_entity_graph: true  # Include entity relationship graph\n  semantic_analysis: true  # Enable semantic analysis\n  lod_level: "docs"  # Level of detail: "signatures", "structure", "docs", "full"\n\n  # Mermaid diagram configuration for entity graphs\n  # mermaid_entities:\n  #   - "module"\n  #   - "class"\n  #   - "function"\n  #   - "method"\n  #   - "constant"\n  #   - "variable"\n  #   - "import"\n  # mermaid_relationships:\n  #   - "declares"\n  #   - "imports"\n  #   - "calls"\n  # mermaid_show_legend: true\n  # mermaid_remove_unconnected: false  # Show isolated nodes\n\n# Processor Configuration - Controls code processing behavior\nprocessor:\n  enabled: true  # Enable the processor\n  max_workers: 4  # Maximum number of parallel workers\n  ignored_patterns:  # Patterns to ignore during processing\n    - "**/.git/**"\n    - "**/__pycache__/**"\n    - "**/.venv/**"\n    - "**/node_modules/**"\n    - "**/*.pyc"\n    - "**/dist/**"\n    - "**/build/**"\n  default_lod_level: "signatures"  # Default level of detail: "signatures", "structure", "docs", "full"\n\n  # File watcher configuration\n  # watcher:\n  #   enabled: true  # Enable file watching\n  #   debounce_delay: 1.0  # Delay in seconds before processing changes\n\n# Commit Command Configuration\ncommit:\n  strategy: "semantic"  # Strategy for splitting diffs: "file", "hunk", "semantic"\n  bypass_hooks: false  # Whether to bypass git hooks\n  use_lod_context: true  # Use level of detail context\n  is_non_interactive: false  # Run in non-interactive mode\n\n  # Diff splitter configuration\n  # diff_splitter:\n  #   similarity_threshold: 0.6  # Similarity threshold for grouping related changes\n  #   directory_similarity_threshold: 0.3 # Threshold for considering directories similar (e.g., for renames)\n  #   file_move_similarity_threshold: 0.85 # Threshold for detecting file moves/renames based on content\n  #   min_chunks_for_consolidation: 2 # Minimum number of small chunks to consider for consolidation\n  #   max_chunks_before_consolidation: 20 # Maximum number of chunks before forcing consolidation\n  #   max_file_size_for_llm: 50000  # Maximum file size (bytes) for LLM processing of individual files\n  #   max_log_diff_size: 1000 # Maximum size (lines) of diff log to pass to LLM for context\n  #   default_code_extensions: # File extensions considered as code for semantic splitting\n  #     - "js"\n  #     - "jsx"\n  #     - "ts"\n  #     - "tsx"\n  #     - "py"\n  #     - "java"\n  #     - "c"\n  #     - "cpp"\n  #     - "h"\n  #     - "hpp"\n  #     - "cc"\n  #     - "cs"\n  #     - "go"\n  #     - "rb"\n  #     - "php"\n  #     - "rs"\n  #     - "swift"\n  #     - "scala"\n  #     - "kt"\n  #     - "sh"\n  #     - "pl"\n  #     - "pm"\n\n  # Commit convention configuration (Conventional Commits)\n  convention:\n    types: # Allowed commit types\n      - "feat"\n      - "fix"\n      - "docs"\n      - "style"\n      - "refactor"\n      - "perf"\n      - "test"\n      - "build"\n      - "ci"\n      - "chore"\n    scopes: []  # Add project-specific scopes here, e.g., ["api", "ui", "db"]\n    max_length: 72  # Maximum length of commit message header\n\n  # Commit linting configuration (based on conventional-changelog-lint rules)\n  # lint:\n  #   # Rules are defined as: {level: "ERROR"|"WARNING"|"DISABLED", rule: "always"|"never", value: <specific_value_if_any>}\n  #   header_max_length:\n  #     level: "ERROR"\n  #     rule: "always"\n  #     value: 100\n  #   header_case: # e.g., \'lower-case\', \'upper-case\', \'camel-case\', etc.\n  #     level: "DISABLED"\n  #     rule: "always"\n  #     value: "lower-case"\n  #   header_full_stop:\n  #     level: "ERROR"\n  #     rule: "never"\n  #     value: "."\n  #   type_enum: # Types must be from the \'convention.types\' list\n  #     level: "ERROR"\n  #     rule: "always"\n  #   type_case:\n  #     level: "ERROR"\n  #     rule: "always"\n  #     value: "lower-case"\n  #   type_empty:\n  #     level: "ERROR"\n  #     rule: "never"\n  #   scope_case:\n  #     level: "ERROR"\n  #     rule: "always"\n  #     value: "lower-case"\n  #   scope_empty: # Set to "ERROR" if scopes are mandatory\n  #     level: "DISABLED"\n  #     rule: "never"\n  #   scope_enum: # Scopes must be from the \'convention.scopes\' list if enabled\n  #     level: "DISABLED"\n  #     rule: "always"\n  #     # value: [] # Add allowed scopes here if rule is "always" and level is not DISABLED\n  #   subject_case: # Forbids specific cases in the subject\n  #     level: "ERROR"\n  #     rule: "never"\n  #     value: ["sentence-case", "start-case", "pascal-case", "upper-case"]\n  #   subject_empty:\n  #     level: "ERROR"\n  #     rule: "never"\n  #   subject_full_stop:\n  #     level: "ERROR"\n  #     rule: "never"\n  #     value: "."\n  #   subject_exclamation_mark:\n  #     level: "DISABLED"\n  #     rule: "never"\n  #   body_leading_blank: # Body must start with a blank line after subject\n  #     level: "WARNING"\n  #     rule: "always"\n  #   body_empty:\n  #     level: "DISABLED"\n  #     rule: "never"\n  #   body_max_line_length:\n  #     level: "ERROR"\n  #     rule: "always"\n  #     value: 100\n  #   footer_leading_blank: # Footer must start with a blank line after body\n  #     level: "WARNING"\n  #     rule: "always"\n  #   footer_empty:\n  #     level: "DISABLED"\n  #     rule: "never"\n  #   footer_max_line_length:\n  #     level: "ERROR"\n  #     rule: "always"\n  #     value: 100\n\n# Pull Request Configuration\npr:\n  defaults:\n    base_branch: null  # Default base branch (null = auto-detect, e.g., main, master, develop)\n    feature_prefix: "feature/"  # Default feature branch prefix\n\n  strategy: "github-flow"  # Git workflow: "github-flow", "gitflow", "trunk-based"\n\n  # Branch mapping for different PR types (primarily used in gitflow strategy)\n  # branch_mapping:\n  #   feature:\n  #     base: "develop"\n  #     prefix: "feature/"\n  #   release:\n  #     base: "main"\n  #     prefix: "release/"\n  #   hotfix:\n  #     base: "main"\n  #     prefix: "hotfix/"\n  #   bugfix:\n  #     base: "develop"\n  #     prefix: "bugfix/"\n\n  # PR generation configuration\n  generate:\n    title_strategy: "llm"  # Strategy for generating PR titles: "commits" (from commit messages), "llm" (AI generated)\n    description_strategy: "llm"  # Strategy for descriptions: "commits", "llm"\n    # description_template: | # Template for PR description when using \'llm\' strategy. Placeholders: {changes}, {testing_instructions}, {screenshots}\n    #   ## Changes\n    #   {changes}\n    #\n    #   ## Testing\n    #   {testing_instructions}\n    #\n    #   ## Screenshots\n    #   {screenshots}\n    use_workflow_templates: true  # Use workflow-specific templates if available (e.g., for GitHub PR templates)\n\n# Ask Command Configuration\nask:\n  interactive_chat: false  # Enable interactive chat mode for the \'ask\' command\n'