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