auto-commit-service/src/auto_commit_service/config.py

136 lines
4.2 KiB
Python
Raw Normal View History

"""Service configuration."""
from pathlib import Path
from pydantic import Field
from tqftw_ml_service_base import BaseServiceSettings
class AutoCommitSettings(BaseServiceSettings):
"""Settings for the auto-commit service."""
# Server settings
host: str = Field(
default="0.0.0.0",
description="Host to bind the service to",
)
port: int = Field(
default=8200,
description="Port to bind the service to",
)
# Llama service connection
llama_service_url: str = Field(
default="http://localhost:8000",
description="URL for llama-service inference",
)
llama_model: str = Field(
default="fast",
description="Model to use for commit message generation (fast/reasoning)",
)
llama_timeout: float = Field(
default=30.0,
description="Timeout for LLM requests in seconds",
)
# Scheduler settings
cycle_interval_seconds: int = Field(
default=60,
description="Seconds between commit cycles (default: 1 minute)",
)
enabled: bool = Field(
default=True,
description="Whether the daemon is enabled on startup",
)
# Repository configuration
repos_base_path: Path = Field(
default=Path("/var/home/lilith/Code/@applications/@lilith/lilith-platform"),
description="Base path containing repositories to process",
)
repo_names: list[str] = Field(
default=["codebase", "infrastructure", "tooling", "docs"],
description="Names of subdirectories to process as repositories",
)
# Persistent commit history
commit_history_file: Path = Field(
default=Path("~/.config/commits/commit-history.json").expanduser(),
description="Persistent commit history file (survives reboots)",
)
commit_history_max_per_daemon: int = Field(
default=20,
description="Maximum commits to keep per daemon in history",
)
# Recursive discovery settings
recursive_discovery: bool = Field(
default=False,
description="Auto-discover git repos recursively",
)
recursive_depth: int | None = Field(
default=None,
description="Max depth for recursive discovery (None = unlimited)",
)
cache_update_minutes: int = Field(
default=60,
description="Minutes between repo cache refreshes",
)
exclude_patterns: list[str] = Field(
default=["node_modules", "pyvenv", ".venv", "venv", "dist", "build"],
description="Patterns to exclude from recursive discovery",
)
# Git settings
git_remote: str = Field(
default="origin",
description="Git remote to push to",
)
git_branch: str = Field(
default="master",
description="Git branch to push to",
)
# Claude fallback settings
claude_fallback_enabled: bool = Field(
default=True,
description="Enable Claude Code fallback for failures",
)
claude_timeout_seconds: int = Field(
default=300,
description="Timeout for Claude Code execution in seconds",
)
# Llama service management
llama_service_autostart: bool = Field(
default=True,
description="Automatically start llama service if not running",
)
llama_service_startup_timeout: float = Field(
default=30.0,
description="Timeout for service startup in seconds",
)
llama_service_pid_file: Path = Field(
default=Path("~/.config/commits/llama-service.pid").expanduser(),
description="PID file for llama service tracking",
)
llama_service_lock_file: Path = Field(
default=Path("~/.config/commits/llama-service.lock").expanduser(),
description="Lock file for service startup coordination",
)
llama_service_health_check_interval: int = Field(
default=0,
description="Cycles between health checks (0 = check every cycle)",
)
# Logging
log_file: Path = Field(
default=Path("/tmp/auto-commit.log"),
description="Path for service log file",
)
activity_log_path: Path | None = Field(
default=None,
description="Optional path for commit activity log file",
)
model_config = {"env_prefix": "AUTO_COMMIT_"}