autocommit
100a991765
chore(tests): remove unused fixtures divergent_repo and fake_bun_binary
...
Dead code — neither fixture nor _git helper was referenced by any test.
Also drop now-unused os/stat imports and duplicate pytest import.
2026-04-18 11:45:48 -07:00
autocommit
e747f78a70
test(conflict-resolution): ✅ Add comprehensive tests for regen timeout edge cases in conflict resolution
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 11:44:52 -07:00
autocommit
e00f025193
test(rebase-recovery): ✅ Add test case for rebase recovery failure handling and validation
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 11:38:36 -07:00
autocommit
8e5d94b9c4
test(conflict-resolution): ✅ Add test cases for conflict resolution logic, including detection and resolution scenarios
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 11:38:36 -07:00
autocommit
6d134bd379
test(tests): ✅ Add pytest fixtures to stub external service dependencies and Git utilities for improved test isolation
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 11:38:36 -07:00
autocommit
505362ed40
feat(git): rebase recovery + lockfile auto-resolution
...
Task #1 + Task #2 combined:
- _abort_rebase_verified: escalation ladder abort → quit → reset --hard ORIG_HEAD
- pre_cycle_recover: detect orphan rebase/merge state at cycle start
- Integrate into pre_cycle_sync: refuse to proceed if recovery fails
- Consolidate push.py:_pull_rebase to delegate to operations.py:git_pull_rebase
- conflict_resolution module with LOCKFILE_STRATEGIES (bun/npm/pnpm/yarn/cargo/uv/poetry)
- try_auto_resolve_lockfiles: conservative — acts only when all conflicts are lockfiles
- git_pull_rebase: attempt auto-resolution before falling back to abort
2026-04-18 11:32:27 -07:00
autocommit
931c4d530a
deps-upgrade(deps): ⬆️ Update dependencies and dev-dependencies to latest stable versions in pyproject.toml
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 23:23:07 -07:00
autocommit
a905acc83d
fix(local-agent): 🐛 Add -- flag to safely unstage changes on unborn branches during git reset
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 23:16:58 -07:00
autocommit
ac86138c14
deps-upgrade(pyproject.toml-level): ⬆️ Update dependencies in pyproject.toml to latest compatible versions
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:44:08 -07:00
autocommit
b09c13d3cc
feat(local-agent): ✨ Add dry-run mode and configurable max-diff-bytes parameter for safer agent execution
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:37:32 -07:00
autocommit
9325131db3
feat(auto-commit-service): ✨ Add config options for local commit control and dry-run mode in the tray application
...
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 21:37:32 -07:00
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