Commit graph

88 commits

Author SHA1 Message Date
autocommit
8db4afe869 feat(cot-commit): Implement sophisticated COT reasoning logic for auto-commit decision triggers
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
809681f042 deploy(deploy): 🚀 Update deployment scripts, installation/upgrade processes, and documentation for improved workflow consistency
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
3cff601331 feat(auto-commit-service): Implement AI-powered fallback recovery with Claude integration, daemon scheduling, and commit grouping strategies for intelligent commit handling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
72c9df974f feat(tray): Implement tray components for commit processing pipeline with TrayClient, CommitLoop, LocalAgent, Prefilter, and tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
6358be5902 feat(git): Add auto-commit service with Git operations (commits, pushes, submodules) and database-backed state tracking
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
1cd8aa6a07 feat(llm): Introduce LLM client and validator components with test coverage
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
c8876b1194 feat(pipeline): Implement pipeline stages (analyze, commit, discover, format, group, prefilter, publish_verify, push, recover, retrieve, version_detect) and RAG components (codebase, conventions) for enhanced code analysis and automated commit workflows
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
a85156eccb chore(config): 🔧 Update .gitignore to exclude build artifacts, logs, and environment variables
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
autocommit
6d79bc2753 deps-upgrade(deps): ⬆️ Update dependencies to latest stable versions in pyproject.toml
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:20:13 -07:00
Natalie
a4a2f8dd82 feat(@ml/auto-commit-service): add stalled repo notifications
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-15 22:23:55 -07:00
Natalie
3b7be20bce feat(@ml/auto-commit-service): add cooldown logic for Claude recovery attempts
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-15 01:16:35 -07:00
Natalie
c508867e0e fix(auto-commit): 🐛 handle claude recovery failure cases
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-14 18:00:29 -07:00
Natalie
d70b90a60b feat(@ml/auto-commit-service): add stalled repos indicator
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-14 17:56:00 -07:00
Natalie
90f06a77aa feat(auto-commit): add clauderecovery cooldown and stalled repo tracking
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-14 17:54:42 -07:00
Natalie
b477082c30 fix(@ml/auto-commit-service): 🐛 update stashed check to skipped_dirty
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-12 23:18:47 -07:00
Natalie
b93c3aca2d feat(error-handling): add claudesync recovery logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-12 23:13:08 -07:00
Natalie
fa4d7adc98 🔥 remove stash operations from pre_cycle_sync
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-12 23:07:30 -07:00
Natalie
fd3511ed67 feat(@ml/auto-commit-service): add pre-cycle sync and stash operations
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-12 23:01:51 -07:00
Natalie
783c0117e4 feat(@ml): add menu-bar tray agent for local commits
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-12 19:43:37 -07:00
Lilith
81c66c1991 refactor(database): simplify to SQLite-only storage
Removed PostgreSQL support and dependencies for single source of truth:
- Removed all PostgreSQL fallback logic from connection.py
- Removed asyncpg dependency (keeping only aiosqlite)
- Simplified database URL to direct SQLite path
- Updated config: database_path now points to file, not directory
- Default location: ~/.cache/commits/auto_commit.db (not nested in postgres/)
- Cleaner get_database_size_mb() using direct file stat
- Simplified VACUUM logic (SQLite-only)

Benefits:
- No fallback complexity or environment variable checks
- Single dependency (aiosqlite) instead of two (asyncpg + aiosqlite)
- Clearer configuration (file path vs directory path)
- Less code, less maintenance, no tech debt
- Same rolling data retention features (500MB limit, 90 day retention)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 11:08:38 -08:00
Lilith
0ea54d2c1a feat(database): add PostgreSQL storage with 500MB rolling data retention
- Created database module with DatabaseManager, models, and repositories
- SQLAlchemy async support with PostgreSQL (asyncpg) and SQLite (aiosqlite) fallback
- Database stored in ~/.cache/commits/postgres (or auto_commit.db for SQLite)
- Automatic size monitoring and pruning every 5 minutes
- Configurable retention: 500MB max size, 90 days default data retention
- Rolling window: auto-prunes oldest commits/cycles/errors when threshold reached
- Models: Commit, Cycle, Error, RepositoryStatus with proper indexes
- Repository pattern for clean database operations
- Integrated into app lifespan (connects on startup, disconnects on shutdown)
- Updated daemon to accept db_manager parameter

Database features:
- Size limit enforcement (default: 500MB)
- Automatic VACUUM after pruning
- Time-based retention (default: 90 days)
- Background pruning task (every 5 minutes)
- Comprehensive error logging and categorization
- Repository status tracking with consecutive error counts

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 11:02:09 -08:00
Lilith
023a134967 fix(core): fix ASGI 'coroutine not callable' error
- Made main() async and properly awaited create_auto_commit_service()
- Changed to manual uvicorn.Server() instead of uvicorn.run() factory mode
- Fixed TypeError that caused 500 errors on all HTTP requests
- Updated llama_service_url default from port 8000 to 8100
- Removed DependencyStartupConfig to avoid lilith-service-addresses dependency

This resolves the critical bug preventing daemon startup and HTTP operations.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 10:48:13 -08:00
Lilith
1c6a762acb chore(shared): 🔧 Let's analyze this step by step: 2026-01-13 10:32:34 -08:00
Lilith
f35b8e13ac chore(shared): 🔧 Let's analyze this step by step: 2026-01-13 10:28:28 -08:00
Lilith
1da61499c1 feat(auto_commit_service): Implement new auto-commit feature for service 2026-01-13 09:10:43 -08:00
Lilith
b72ac58178 feat(scheduler): Implement new scheduler algorithm for processing tasks 2026-01-13 08:26:14 -08:00
Lilith
868b566af8 chore(git): 🔧 Remove __pycache__ files from tracking
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-13 08:25:16 -08:00
Lilith
443d4fbf07 feat(scheduler): add settings and llm client to ml provider init 2026-01-13 06:41:39 -08:00
Lilith
2b3faefd46 feat(scheduler): add ml provider initialization 2026-01-13 06:10:03 -08:00
Lilith
2b93af6ad0 feat(scheduler): add rag+cot pipeline processor integration 2026-01-13 05:49:04 -08:00
Lilith
27267eb6e8 feat(auto-commit-service): add rag+cot pipeline processor support 2026-01-13 05:33:05 -08:00
Lilith
5296724334 feat(@ml): add auto-commit pipeline integration 2026-01-13 05:27:37 -08:00
Lilith
8f3803c2a2 feat(config): load ignore_repos from startup-config.json
- Load daemon config by matching current directory
- Override ignore_repos from config file (takes precedence over env var)
- Fall back to empty list if config not found

Usage: Edit ~/.config/commits/startup-config.json
No environment variables needed!

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 02:35:58 -08:00
Lilith
d6618679af feat(config): persist ignore_repos in daemon registry
- Add ignore_repos field to DaemonInfo dataclass
- Store in startup-config.json per-daemon
- Backward compatible (defaults to empty list)
- Eliminates need for environment variables

Usage: Edit ~/.config/commits/startup-config.json and add:
  "ignore_repos": ["repo-name-1", "repo-name-2"]

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 02:20:30 -08:00
Lilith
94babf4e7e fix(__pycache__): 🐛 resolve binary diff in cache file diff 2026-01-11 01:53:18 -08:00
Lilith
2d2727cf43 feat(@ml/auto-commit-service): add discovery and scheduler features 2026-01-11 01:50:51 -08:00
Lilith
e42edaec41 feat(auto-commit-service): add ignore_repos config option 2026-01-11 01:49:39 -08:00
Lilith
9e993181fe fix(git): handle exit code 1 from git add --dry-run
Git returns exit code 1 (not 128) when some files are ignored.
- Accept both returncode 1 and 128 for ignore detection
- Parse ignored paths per-batch to avoid cross-batch contamination
- Log ignored file count after filtering

Testing showed: exit code 1 = some ignored, 0 = none ignored

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 00:48:07 -08:00
Lilith
2473220592 fix(git): use add --dry-run for reliable ignore detection
BREAKING CHANGE: git ls-files -i only works on staged files
BREAKING CHANGE: git check-ignore doesn't flag tracked-but-ignored files

SOLUTION: Use `git add --dry-run` to test which files will actually stage
- Detects all ignore cases: new files, tracked files, directory patterns
- Parse stderr to extract ignored file list when exit code 128
- Batch processing (1000 files/batch) to avoid ARG_MAX

Fixes: @egirl/egirl-platform with 5,175 files under ignored /apps/ /packages/ directories

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 00:31:00 -08:00
Lilith
f302e8366a fix(git): detect tracked-but-ignored files with ls-files -i
- Use `git ls-files -i --exclude-standard` to find tracked files now in .gitignore
- Combine with `git check-ignore` for comprehensive ignore detection
- Batch ls-files calls (1000 files/batch) to avoid ARG_MAX
- Prevents "paths are ignored" errors for legacy tracked files (apps/, packages/, test-output/)

BREAKING: git check-ignore alone doesn't flag already-tracked files
SOLUTION: Two-phase detection (tracked-ignored + new-ignored)

Fixes egirl-platform failures: 5,175 tracked-but-ignored files filtered

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 00:08:05 -08:00
Lilith
bbd8220232 fix(git): batch git add for large file sets to avoid ARG_MAX
- Add batching logic to git_add_specific() when files > 1000
- Splits into 1000-file batches to stay under system ARG_MAX limit (~2MB)
- Prevents "Argument list too long" errors on massive changesets
- Fixes failures in @egirl/egirl-platform with 10,042 changed files

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 23:50:17 -08:00
Lilith
7f9d9c0e65 fix(grouping): skip LLM grouping for large changesets (>100 files)
- Add early bailout when changed_files > 100 to prevent context overflow
- Prevents "request exceeds available context size" errors in Ministral-14B (4096 tokens)
- Falls back to single-group strategy for massive changesets
- Fixes "All commit groups failed" for repos with thousands of changed files

Resolves failures in @egirl/egirl-platform (10,042 changed files)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 23:38:38 -08:00
Lilith
7349aa2bea fix(git): filter gitignored files before staging
- Add git_check_ignored() to detect ignored files using `git check-ignore --stdin`
- Update git_add_specific() to filter out ignored files before `git add`
- Add stdin support to _run_git_command() for efficient batch operations
- Prevents "paths are ignored" errors when staging __pycache__, .pyc files
- Fixes "All commit groups failed" errors in @ml/auto-commit-service and @egirl/egirl-platform

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 23:30:05 -08:00
Lilith
a6a7e96889 feat(auto-commit): add crash detection and multi-retry restart
- Add llama_service_max_restart_attempts (default: 3)
- Add llama_service_restart_backoff_seconds (default: 5.0s)
- Implement retry logic with exponential backoff (5s, 10s, 15s)
- Track crash timestamps and restart attempts
- Expose crash state in /health and /status endpoints:
  - llama_service_crashed
  - llama_service_restart_attempts
  - llama_service_last_crash
  - llama_service_last_successful_restart
- Enhanced logging with ✓/✗ symbols for restart outcomes

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-10 23:27:58 -08:00
Lilith
f0bf1dc859 chore(@ml): 🔧 update python cache files 2026-01-10 21:49:51 -08:00
Lilith
e72712d559 feat(@ml/auto-commit-service): process file groups and generate commits for multiple files in each group 2026-01-10 10:31:07 -08:00
Lilith
0bba6b6099 chore(@ml/auto-commit-service): 🛠 update file grouping logic and refactor related code 2026-01-10 10:29:03 -08:00
Lilith
ddce7a59b4 fix(__pycache__): 🐛 resolve binary diff in .pyc file 2026-01-10 10:03:14 -08:00
Lilith
5c5c240a08 fix(@ml/auto-commit-service): 🐛 update repository base path description in config.py 2026-01-10 10:02:41 -08:00
Lilith
f2452b1449 fix(config): 🐛 resolve binary differences in config files 2026-01-10 09:52:27 -08:00