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'