ace-git-commit 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/git/commit.yml +22 -0
  3. data/.ace-defaults/nav/protocols/guide-sources/ace-git-commit.yml +10 -0
  4. data/.ace-defaults/nav/protocols/prompt-sources/ace-git-commit.yml +19 -0
  5. data/.ace-defaults/nav/protocols/wfi-sources/ace-git-commit.yml +19 -0
  6. data/CHANGELOG.md +404 -0
  7. data/COMPARISON.md +176 -0
  8. data/LICENSE +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +14 -0
  11. data/exe/ace-git-commit +13 -0
  12. data/handbook/guides/version-control-system-message.g.md +507 -0
  13. data/handbook/prompts/git-commit.md +22 -0
  14. data/handbook/prompts/git-commit.system.md +150 -0
  15. data/handbook/skills/as-git-commit/SKILL.md +57 -0
  16. data/handbook/workflow-instructions/git/commit.wf.md +75 -0
  17. data/lib/ace/git_commit/atoms/git_executor.rb +62 -0
  18. data/lib/ace/git_commit/atoms/gitignore_checker.rb +118 -0
  19. data/lib/ace/git_commit/cli/commands/commit.rb +147 -0
  20. data/lib/ace/git_commit/cli.rb +23 -0
  21. data/lib/ace/git_commit/models/commit_group.rb +53 -0
  22. data/lib/ace/git_commit/models/commit_options.rb +75 -0
  23. data/lib/ace/git_commit/models/split_commit_result.rb +60 -0
  24. data/lib/ace/git_commit/models/stage_result.rb +71 -0
  25. data/lib/ace/git_commit/molecules/commit_grouper.rb +123 -0
  26. data/lib/ace/git_commit/molecules/commit_summarizer.rb +43 -0
  27. data/lib/ace/git_commit/molecules/diff_analyzer.rb +111 -0
  28. data/lib/ace/git_commit/molecules/file_stager.rb +153 -0
  29. data/lib/ace/git_commit/molecules/message_generator.rb +438 -0
  30. data/lib/ace/git_commit/molecules/path_resolver.rb +365 -0
  31. data/lib/ace/git_commit/molecules/split_commit_executor.rb +272 -0
  32. data/lib/ace/git_commit/organisms/commit_orchestrator.rb +330 -0
  33. data/lib/ace/git_commit/version.rb +7 -0
  34. data/lib/ace/git_commit.rb +41 -0
  35. metadata +149 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 88f062920b9470215101e8b19910d1b4f51e48422e33b5e9ee7edd1a67436c2a
4
+ data.tar.gz: a066dca342be804a4ecb86fe2d742ad095144830bf75dd6db401521bf82f5215
5
+ SHA512:
6
+ metadata.gz: 8edb440e5469e1352742e300161a642f31b987a6aac90919eb2f38b136fd1dcf6581ebfe4b41df9dd218fb8c01be44aa543bc5c39f1227005ebd2023ce8b9e2a
7
+ data.tar.gz: e94e923c63058307f418eb2aaafbb9ced3b2737b6318839cf3fca5f13bc9543ec2494afd82a3387b5928828ab36eac0ae6b1e7ec422b286c3c8b3a501eed4f5b
@@ -0,0 +1,22 @@
1
+ # Minimal ace-git-commit configuration
2
+ # Copy to .ace/git/commit.yml and customize for your project
3
+
4
+ git:
5
+ # LLM model for commit message generation
6
+ model: glite # or gpt4, claude, etc. - must match provider alias
7
+
8
+ # Commit message conventions
9
+ conventions:
10
+ format: conventional # conventional, simple, or detailed
11
+
12
+ scopes:
13
+ enabled: true
14
+ detect_from_paths: true
15
+
16
+ # Add your project-specific scopes
17
+ custom:
18
+ - core
19
+ - api
20
+ - ui
21
+ - docs
22
+ - test
@@ -0,0 +1,10 @@
1
+ ---
2
+ # Guide Sources Protocol Configuration for ace-git-commit gem
3
+ name: ace-git-commit
4
+ type: gem
5
+ description: Guides from ace-git-commit gem
6
+ priority: 10
7
+ config:
8
+ relative_path: handbook/guides
9
+ pattern: "*.g.md"
10
+ enabled: true
@@ -0,0 +1,19 @@
1
+ ---
2
+ # Prompt Sources Protocol Configuration for ace-git-commit gem
3
+ # This enables prompt discovery from the installed ace-git-commit gem
4
+
5
+ name: ace-git-commit
6
+ type: gem
7
+ description: System prompts from ace-git-commit gem
8
+ priority: 10
9
+
10
+ # Configuration for prompt discovery within the gem
11
+ config:
12
+ # Relative path within the gem (default: handbook/prompts)
13
+ relative_path: handbook/prompts
14
+
15
+ # Pattern for finding prompt files (supports both *.md and *.prompt.md)
16
+ pattern: "*.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
@@ -0,0 +1,19 @@
1
+ ---
2
+ # WFI Sources Protocol Configuration for ace-git-commit gem
3
+ # This enables workflow discovery from the installed ace-git-commit gem
4
+
5
+ name: ace-git-commit
6
+ type: gem
7
+ description: Workflow instructions from ace-git-commit gem
8
+ priority: 10
9
+
10
+ # Configuration for workflow discovery within the gem
11
+ config:
12
+ # Relative path within the gem (default: handbook/workflow-instructions)
13
+ relative_path: handbook/workflow-instructions
14
+
15
+ # Pattern for finding workflow files (default: *.wf.md)
16
+ pattern: "*.wf.md"
17
+
18
+ # Enable discovery
19
+ enabled: true
data/CHANGELOG.md ADDED
@@ -0,0 +1,404 @@
1
+ # Changelog
2
+
3
+ All notable changes to ace-git-commit will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.23.0] - 2026-03-23
11
+
12
+ ### Added
13
+ - Configuration section in README pointing to `.ace-defaults/git/commit.yml` for model overrides and `.ace-handbook/prompts/` for prompt template customization.
14
+
15
+ ### Changed
16
+ - Aligned gemspec summary with README tagline.
17
+ - Moved Installation from README to Getting Started guide as a proper section.
18
+ - Redesigned getting-started demo tape: sandbox with real commits (specific files, then remaining), replaces dry-run-only scenes.
19
+ - Re-recorded getting-started demo GIF from new tape.
20
+
21
+ ## [0.22.1] - 2026-03-23
22
+
23
+ ### Changed
24
+ - Refreshed the package README to the current ACE package layout pattern with updated section flow and docs navigation links.
25
+
26
+ ## [0.22.0] - 2026-03-18
27
+
28
+ ### Changed
29
+ - Refined `TS-COMMIT-001` E2E runner guidance so each goal is self-contained and no longer depends on prior discovery output.
30
+
31
+ ### Technical
32
+ - Normalized `TS-COMMIT-001` verifier expectation formatting for clearer impact-first evidence checks.
33
+ - Added task-scoped E2E review, change-plan, and rewrite-summary artifacts for `8qe.t.h5e.6`.
34
+
35
+ ## [0.21.6] - 2026-03-18
36
+
37
+ ### Changed
38
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
39
+
40
+
41
+ ## [0.21.5] - 2026-03-15
42
+
43
+ ### Fixed
44
+ - Fixed commit workflow embedded status using `git status -sb -uall` to show individual untracked files instead of collapsed directory entries.
45
+ - Added explicit guidance that untracked files (`??`) are committable changes, preventing agents from incorrectly reporting "nothing to commit" on untracked-only changes.
46
+
47
+ ### Changed
48
+ - Migrated CLI framework from dry-cli to ace-support-cli
49
+
50
+ ## [0.21.4] - 2026-03-13
51
+
52
+ ### Technical
53
+ - Harmonized canonical git-commit skill structure with the unified execution contract.
54
+
55
+ ## [0.21.3] - 2026-03-13
56
+
57
+ ### Changed
58
+ - Replaced provider-specific Codex execution metadata on the canonical `as-git-commit` skill with a unified canonical skill body that declares arguments, variables, and explicit workflow-execution guidance.
59
+ - Limited provider-specific forking for `as-git-commit` to Claude frontmatter only.
60
+
61
+ ## [0.21.2] - 2026-03-13
62
+
63
+ ### Changed
64
+ - Updated the canonical `as-git-commit` Codex metadata to use `context: ace-llm` with frontmatter-driven variable and instruction rendering for projected Codex skills.
65
+
66
+ ## [0.21.1] - 2026-03-12
67
+
68
+ ### Changed
69
+ - Updated README prompt-path guidance to reference the package-local handbook prompt source.
70
+
71
+ ## [0.21.0] - 2026-03-12
72
+
73
+ ### Added
74
+ - Added provider-specific Claude and Codex execution overrides to the canonical `as-git-commit` skill so projected provider skills can request forked execution with provider-specific models.
75
+
76
+ ## [0.20.0] - 2026-03-10
77
+
78
+ ### Added
79
+ - Added the canonical handbook-owned git commit skill for agent-facing commit generation.
80
+
81
+
82
+ ## [0.19.2] - 2026-03-08
83
+
84
+ ### Fixed
85
+ - Improved split-commit message generation reliability by replacing brittle marker parsing with strict JSON batch parsing, validation, and one repair retry.
86
+ - Removed generic `chore: update <scope>` fallback for missing batch messages; split commits now fall back to per-scope message generation when batch parsing fails.
87
+
88
+ ### Changed
89
+ - Strengthened git-commit prompting guidance to reduce generic `chore` usage for feature/fix/refactor-level code changes.
90
+
91
+ ### Technical
92
+ - Added regression tests for JSON batch parsing, retry behavior, and per-scope fallback message generation in split commit execution.
93
+
94
+ ## [0.19.1] - 2026-03-05
95
+
96
+ ### Fixed
97
+ - Cap `max_tokens` at 8192 for commit message generation to prevent inflated thinking budgets from the provider's global 65536 default.
98
+
99
+ ## [0.19.0] - 2026-03-03
100
+
101
+ ### Added
102
+ - Group all `.ace/` config files into a single "ace-config" commit scope instead of creating separate per-package commits.
103
+
104
+ ## [0.18.8] - 2026-02-26
105
+
106
+ ### Fixed
107
+ - Run normal stage-all flow before deciding no-op, instead of short-circuiting at the top of execution.
108
+ - Correct change detection to include untracked files via `ace-git` command executor helpers.
109
+ - Preserve single-line no-op output: `No changes to commit` is printed only after staging confirms nothing is staged.
110
+
111
+ ## [0.18.7] - 2026-02-26
112
+
113
+ ### Fixed
114
+ - Treat "no changes to commit" as a successful no-op (exit 0) instead of a failure.
115
+ - Simplify no-op output to a single clear line: `No changes to commit` (without staging progress or generic failure messaging).
116
+
117
+ ## [0.18.6] - 2026-02-25
118
+
119
+ ### Technical
120
+ - Bump runtime dependency constraint from `ace-git ~> 0.10` to `ace-git ~> 0.11`.
121
+
122
+ ## [0.18.5] - 2026-02-23
123
+
124
+ ### Technical
125
+ - Updated internal dependency version constraints to current releases
126
+
127
+ ## [0.18.4] - 2026-02-22
128
+
129
+ ### Changed
130
+ - Migrate CLI entrypoint to single-command dry-cli execution (`ace-git-commit [FILES] [OPTIONS]`)
131
+ - Handle `--version` directly in commit command flow for single-command mode
132
+ - Add `--staged` as an alias for `--only-staged`
133
+
134
+ ### Technical
135
+ - Remove registry/default-routing wiring from CLI module
136
+ - Rewrite CLI routing tests to executable-level single-command behavior checks
137
+
138
+ ## [0.18.2] - 2026-02-21
139
+
140
+ ### Added
141
+ - Enhance commit message generation with intent and action focus
142
+
143
+ ### Technical
144
+ - Add staged rename verification to mixed operations test
145
+ - Standardize workflow instruction path
146
+
147
+ ## [0.18.1] - 2026-02-19
148
+
149
+ ### Technical
150
+ - Namespace commit workflow instruction to git/ subdirectory
151
+
152
+ ## [0.18.0] - 2026-02-19
153
+
154
+ ### Added
155
+ - "This commit will..." test in subject-crafting step to improve intent capture
156
+ - "Describe the action, not the content" guidance with concrete examples
157
+ - Specific handling for deletion-only commits (use "remove", "delete", "drop" verbs)
158
+
159
+ ## [0.17.2] - 2026-02-11
160
+
161
+ ### Added
162
+ - Exception-based CLI error reporting for consistent error handling
163
+
164
+ ### Technical
165
+ - Migrate E2E tests to per-TC directory format
166
+ - Enhance E2E tests for commit splitting and path handling
167
+ - Standardize E2E test cache directory naming
168
+
169
+ ## [0.17.1] - 2026-01-27
170
+
171
+ ### Added
172
+ - Add `spec` commit type for task specifications and development artifacts
173
+ - Clarify `docs` type is for software documentation (user guides, API docs, README)
174
+
175
+ ## [0.17.0] - 2026-01-27
176
+
177
+ ### Added
178
+ - Path-based configuration splitting for scoped commits in mono-repos
179
+ - Batch LLM generation for multiple commit scopes in a single run
180
+ - Automatic scope detection based on file paths and glob patterns
181
+ - Support for scope-specific model overrides and type hints
182
+ - `scopes` configuration in `.ace/git/commit.yml` for defining file groupings
183
+
184
+ ### Changed
185
+ - Enhanced commit workflow to support multiple atomic commits per scope
186
+ - Improved configuration resolution with path rules from ace-support-config
187
+
188
+ ## [0.16.5] - 2026-01-20
189
+
190
+ ### Fixed
191
+ - Validate paths by checking git status for deleted/renamed files
192
+
193
+ ### Technical
194
+ - Update for ace-bundle integration
195
+
196
+ ## [0.16.4] - 2026-01-16
197
+
198
+ ### Changed
199
+ - Rename context: to bundle: keys in configuration files
200
+
201
+ ## [0.16.3] - 2026-01-10
202
+
203
+ ### Changed
204
+ - Use shared `Ace::Core::CLI::DryCli::DefaultRouting` module for CLI routing
205
+ - Removed duplicate routing code in favor of shared implementation
206
+ - Maintains same behavior with less code duplication
207
+
208
+ ## [0.16.2] - 2026-01-10
209
+
210
+ ### Fixed
211
+ - Fix CLI default command routing to properly handle flags
212
+ - Removed flawed `!args.first.start_with?("-")` check from routing condition
213
+ - Flags like `-i`, `--dry-run` now correctly route to default `commit` command
214
+ - Built-in flags (`--help`, `--version`) continue working via KNOWN_COMMANDS
215
+
216
+ ## [0.16.1] - 2026-01-09
217
+
218
+ ### Changed
219
+ - **BREAKING**: Eliminate wrapper pattern in dry-cli command
220
+ - Merged business logic directly into `Commit` dry-cli command class
221
+ - Deleted `commit_command.rb` wrapper file
222
+ - Simplified architecture by removing unnecessary delegation layer
223
+
224
+ ## [0.16.0] - 2026-01-07
225
+
226
+ ### Changed
227
+ - **BREAKING**: Migrated CLI framework from Thor to dry-cli (task 179.07)
228
+ - Replaced `thor` dependency with `dry-cli ~> 1.0`
229
+ - Created dry-cli command class (commit)
230
+ - Uses `Ace::Core::CLI::DryCli::Base` module for CLI helpers
231
+
232
+ ## [0.15.2] - 2026-01-04
233
+
234
+ ### Fixed
235
+
236
+ - ace-git-commit now respects `.gitignore` when staging directory paths
237
+ - Directories are passed directly to `git add` without file expansion
238
+ - Fixed issue where `ace-git-commit .ace-taskflow/` would try to stage files in gitignored subdirectories like `reviews/`
239
+ - Only glob patterns are expanded to file lists through PathResolver
240
+
241
+ ## [0.15.1] - 2026-01-03
242
+
243
+ ### Changed
244
+
245
+ - Enhanced `commit` workflow with `embed_document_source: true` to embed `<current_repository_status>`
246
+ - Workflow now includes pre-loaded git status and diff summary, eliminating redundant commands
247
+ - Reduced tool calls from 5 to 2-3 (40-60% improvement) when agents invoke `/ace:commit`
248
+
249
+ ## [0.15.0] - 2026-01-03
250
+
251
+ ### Changed
252
+ - **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.0.0)
253
+ - Standardized gemspec file patterns with deterministic Dir.glob
254
+ - Added MIT LICENSE file
255
+
256
+ ## [0.14.1] - 2025-12-30
257
+
258
+ ### Changed
259
+
260
+ - Replace ace-support-core dependency with ace-config for configuration cascade
261
+ - Migrate from Ace::Core to Ace::Config.create() API
262
+ - Migrate from `resolve_for` to `resolve_namespace` for cleaner config loading
263
+
264
+ ## [0.14.0] - 2025-12-30
265
+
266
+ ### Changed
267
+
268
+ * Rename `.ace.example/` to `.ace-defaults/` for gem defaults directory
269
+
270
+
271
+ ## [0.13.0] - 2025-12-28
272
+
273
+ ### Added
274
+ - **ADR-022 Configuration Pattern**: Migrate to gem defaults from `.ace.example/` with user override support
275
+ - Load defaults from `.ace.example/git/commit.yml` at runtime
276
+ - Deep merge with user config via ace-core cascade
277
+ - Follows "gem defaults < user config" priority
278
+
279
+ ### Fixed
280
+ - **Path Expansion**: Fixed gem root resolution in `load_gem_defaults` (4 levels instead of 5)
281
+ - **Debug Check Consistency**: Standardized `debug?` method to use `== "1"` pattern across all gems
282
+
283
+ ## [0.12.4] - 2025-12-27
284
+
285
+ ### Changed
286
+ - **Dependency Migration**: Migrated from `ace-git-diff (~> 0.1)` to `ace-git (~> 0.3)`
287
+ - GitExecutor now delegates to `Ace::Git::Atoms::CommandExecutor`
288
+ - Part of ace-git consolidation (ace-git-diff merged into ace-git)
289
+
290
+ ## [0.12.3] - 2025-12-06
291
+
292
+ ### Technical
293
+ - Updated ace-llm dependency from `~> 0.12.0` to `~> 0.13.0` for OpenRouter provider support
294
+
295
+ ## [0.12.2] - 2025-11-17
296
+
297
+ ### Technical
298
+ - Updated ace-llm dependency from `~> 0.10.0` to `~> 0.11.0` for graceful provider fallback support
299
+
300
+ ## [0.12.1] - 2025-11-16
301
+
302
+ ### Changed
303
+
304
+ - **Dependency Update**: Updated ace-support-core dependency from `~> 0.9` to `~> 0.11`
305
+ - Provides access to latest PromptCacheManager features and infrastructure improvements
306
+ - Maintains compatibility with standardized ACE ecosystem patterns
307
+
308
+ ## [0.12.0] - 2025-11-15
309
+
310
+ ### Added
311
+ - **Path restriction for targeted commits**: Support for committing only files within specified directories or paths
312
+ - **Glob pattern support**: Full glob pattern support (`**/*.rb`, `lib/**/*.test.js`) for flexible file selection
313
+ - **Repository boundary validation**: `within_repository?` method validates paths are within git repository boundaries
314
+ - **Early path validation**: Validates path existence before git operations with clear error messages
315
+ - **Comprehensive CLI documentation**: Updated help text with detailed path and pattern usage examples
316
+
317
+ ### Changed
318
+ - **PathResolver architecture**: Made `glob_pattern?` public and consolidated path detection logic
319
+ - **Staging strategy**: Intelligent routing between simple file staging and path-restricted staging based on input type
320
+ - **Error messaging**: Enhanced error messages for invalid paths and empty glob pattern results
321
+
322
+ ### Technical
323
+ - **Integration test coverage**: Added 4 comprehensive integration tests for path validation and glob pattern handling
324
+ - **Unit test expansion**: Added 6 new unit tests for `glob_pattern?` and `within_repository?` methods
325
+ - **Code quality improvements**: Removed method duplication between PathResolver and CommitOrchestrator
326
+
327
+ ## [0.11.2] - 2025-11-12
328
+
329
+ ### Fixed
330
+ - **Silent staging failures**: Staging operations now properly detect and report failures instead of continuing silently
331
+ - **Misleading error messages**: Error messages now accurately reflect operation outcomes with clear indicators (✓/✗)
332
+ - **Debug-only output**: Staging progress messages are now visible by default (not just in debug mode)
333
+ - **Error visibility in quiet mode**: Critical errors always display, even in quiet mode, ensuring users are informed of failures
334
+
335
+ ### Added
336
+ - **Verbosity control**: Added `--verbose` (default) and `--quiet` flags for output control
337
+ - **Error context**: Staging failures now include specific error details and actionable suggestions
338
+ - **StageResult model**: Infrastructure for tracking per-file staging outcomes
339
+ - **Transparent feedback**: Clear staging progress and error reporting with actionable suggestions (documented in README)
340
+
341
+ ### Changed
342
+ - **FileStager**: Now returns boolean success/failure status and stores error details in `last_error`
343
+ - **CommitOrchestrator**: Enhanced with visible staging progress, proper error handling, and fail-fast behavior
344
+ - **CommitOptions**: Extended with `verbose` (default: true) and `quiet` (default: false) options
345
+ - **User feedback**: All staging operations now provide clear, immediate feedback on success or failure
346
+
347
+ ## [0.11.1] - 2025-11-01
348
+
349
+ ### Changed
350
+
351
+ - **Dependency Migration**: Updated to use renamed infrastructure gems
352
+ - Changed dependency from `ace-core` to `ace-support-core`
353
+ - Changed dependency from `ace-test-support` to `ace-support-test-helpers` (if applicable)
354
+ - Part of ecosystem-wide naming convention alignment for infrastructure gems
355
+
356
+ ## [0.11.0]
357
+ - 2025-10-23
358
+
359
+ ### Changed
360
+ - Integrated with ace-git-diff for unified git command execution
361
+ - GitExecutor now delegates to ace-git-diff's CommandExecutor for all git operations
362
+ - Added ace-git-diff (~> 0.1.0) as runtime dependency
363
+ - Maintains full backward compatibility for all public APIs
364
+
365
+ ## [0.10.0] - 2025-10-14
366
+
367
+ ### Added
368
+ - Standardize Rakefile test commands and add CI fallback
369
+
370
+ ### Technical
371
+ - Add proper frontmatter with git dates to all managed documents
372
+
373
+ ## [0.9.2] - 2025-10-08
374
+
375
+ ### Changed
376
+
377
+ - **Test Structure Reorganization**: Reorganized tests for consistency
378
+ - Moved `test/ace/git_commit_test.rb` → `test/git_commit_test.rb`
379
+ - Aligns with standardized flat ATOM structure across all ACE packages
380
+
381
+ ## [0.9.1] - 2025-10-07
382
+
383
+ ### Changed
384
+ - **Test maintainability improvement**: Version tests now validate semantic versioning format instead of exact version values
385
+ - Prevents test failures on every version bump
386
+ - Uses regex pattern `/\A\d+\.\d+\.\d+/` to validate version format
387
+
388
+ ## [0.9.0] - 2024-XX-XX
389
+
390
+ ### Added
391
+ - Initial release with LLM-powered Git commit message generation
392
+ - Support for conventional commit format
393
+ - Automatic staging of all changes (monorepo-friendly)
394
+ - Gemini 2.0 Flash Lite (`glite`) as default model
395
+ - Flexible model selection with `--model` flag
396
+ - Intention-based message generation with `-i/--intention` flag
397
+ - Dry-run mode for previewing commit messages
398
+
399
+
400
+ ## [0.18.3] - 2026-02-22
401
+
402
+ ### Fixed
403
+ - Stripped duplicate command name prefix from commit examples
404
+ - Standardized quiet, verbose, debug option descriptions to canonical strings
data/COMPARISON.md ADDED
@@ -0,0 +1,176 @@
1
+ # Comparison: dev-tools git-commit vs ace-git-commit
2
+
3
+ ## Overview
4
+
5
+ This document compares the existing `git-commit` command in dev-tools with the new `ace-git-commit` gem implementation.
6
+
7
+ ## Command Line API Comparison
8
+
9
+ ### dev-tools git-commit
10
+
11
+ ```bash
12
+ git-commit [options] [files...]
13
+ ```
14
+
15
+ **Options:**
16
+ - `-d, --debug` - Enable debug output
17
+ - `-C, --repository REPO` - Specify explicit repository
18
+ - `-i, --intention INTENTION` - Intention context for commit message
19
+ - `-l, --local` - Use local LM Studio model
20
+ - `-n, --no-edit` - Skip editor, commit directly
21
+ - `-m, --message MESSAGE` - Use provided message (no LLM)
22
+ - `-a, --all` - Stage all changes before committing
23
+ - `--model MODEL` - Specify LLM model
24
+ - `--concurrent` - Execute commits concurrently
25
+ - `--main-only` - Process main repository only
26
+ - `--submodules-only` - Process submodules only
27
+ - `--repo-only` - Process only current repository
28
+
29
+ ### ace-git-commit
30
+
31
+ ```bash
32
+ ace-git-commit [options] [files...]
33
+ ```
34
+
35
+ **Options:**
36
+ - `-i, --intention INTENTION` - Provide context for LLM generation ✅ (same)
37
+ - `-m, --message MESSAGE` - Use provided message (no LLM) ✅ (same)
38
+ - `--model MODEL` - Override default LLM model ✅ (same)
39
+ - `-s, --only-staged` - Commit only staged changes ⚡ (different from --all)
40
+ - `-n, --dry-run` - Show what would be committed ⚡ (different from --no-edit)
41
+ - `-d, --debug` - Enable debug output ✅ (same)
42
+ - `-f, --force` - Force operation (future use) ⚡ (new)
43
+ - `-h, --help` - Show help ✅ (standard)
44
+ - `-v, --version` - Show version ✅ (standard)
45
+
46
+ ## Key Differences
47
+
48
+ ### 1. Repository Scope
49
+
50
+ | Feature | dev-tools git-commit | ace-git-commit |
51
+ |---------|---------------------|----------------|
52
+ | Multi-repo support | ✅ Yes (submodules) | ❌ No |
53
+ | Concurrent execution | ✅ Yes | ❌ No |
54
+ | Repository selection | ✅ --repository, --main-only, etc. | ❌ Single repo only |
55
+ | Default scope | Current + submodules | Current repo only |
56
+
57
+ ### 2. Staging Behavior
58
+
59
+ | Feature | dev-tools git-commit | ace-git-commit |
60
+ |---------|---------------------|----------------|
61
+ | Default behavior | Uses currently staged | **Stages ALL changes** |
62
+ | Stage all option | `--all` flag | Default (no flag needed) |
63
+ | Use only staged | Default behavior | `--only-staged` flag |
64
+ | Stage specific files | Pass as arguments | Pass as arguments |
65
+
66
+ ### 3. LLM Integration
67
+
68
+ | Feature | dev-tools git-commit | ace-git-commit |
69
+ |---------|---------------------|----------------|
70
+ | LLM integration | Via subprocess (ace-llm-query) | **Direct Ruby (QueryInterface)** |
71
+ | Default model | google:gemini-2.0-flash-lite | glite (alias) |
72
+ | Local model support | `--local` flag | Via `--model lmstudio:*` |
73
+ | Model selection | `--model` flag | `--model` flag |
74
+ | System prompt location | Embedded in code | dev-handbook/templates/prompts/ |
75
+
76
+ ### 4. Architecture
77
+
78
+ | Aspect | dev-tools git-commit | ace-git-commit |
79
+ |--------|---------------------|----------------|
80
+ | Pattern | Command pattern with orchestrator | **ATOM architecture** |
81
+ | Structure | CLI → Orchestrator → Multiple repos | CLI → Orchestrator → Single repo |
82
+ | Dependencies | Dry::CLI, complex orchestration | ace-core, ace-llm |
83
+ | Testing | Spec files with VCR | Minitest with mocks |
84
+
85
+ ### 5. Additional Features
86
+
87
+ | Feature | dev-tools git-commit | ace-git-commit |
88
+ |---------|---------------------|----------------|
89
+ | Dry run | ❌ No | ✅ `--dry-run` |
90
+ | Editor support | ✅ `--no-edit` to skip | ❌ Always direct commit |
91
+ | Concurrent commits | ✅ `--concurrent` | ❌ Single repo only |
92
+ | Force flag | ❌ No | ✅ Future use |
93
+
94
+ ## Migration Guide
95
+
96
+ ### For Users
97
+
98
+ If you're migrating from dev-tools git-commit to ace-git-commit:
99
+
100
+ | Old Command | New Command |
101
+ |-------------|-------------|
102
+ | `git-commit` | `ace-git-commit` (stages all by default) |
103
+ | `git-commit --all` | `ace-git-commit` (default behavior) |
104
+ | `git-commit --intention "msg"` | `ace-git-commit -i "msg"` ✅ (same) |
105
+ | `git-commit --message "msg"` | `ace-git-commit -m "msg"` ✅ (same) |
106
+ | `git-commit --local` | `ace-git-commit --model lmstudio:model` |
107
+ | `git-commit --repo-only` | `ace-git-commit` (default, single repo) |
108
+ | `git-commit --concurrent` | ❌ Not supported (single repo only) |
109
+ | `git-commit file1 file2` | `ace-git-commit file1 file2` ✅ (same) |
110
+
111
+ ### Key Behavioral Changes
112
+
113
+ 1. **Default Staging**: ace-git-commit stages ALL changes by default
114
+ - Old: `git-commit --all` to stage everything
115
+ - New: `ace-git-commit` stages everything automatically
116
+ - New: `ace-git-commit --only-staged` to use current staging
117
+
118
+ 2. **Repository Scope**: ace-git-commit is single-repo only
119
+ - Old: Processes submodules by default
120
+ - New: Only processes current repository
121
+ - Rationale: Simplified for true monorepo use
122
+
123
+ 3. **LLM Integration**: Direct Ruby integration
124
+ - Old: Subprocess call to ace-llm-query
125
+ - New: Direct Ruby call via QueryInterface
126
+ - Benefit: Better performance, error handling
127
+
128
+ ## Implementation Status
129
+
130
+ ### ace-git-commit Completed Features ✅
131
+
132
+ - [x] Core ATOM architecture
133
+ - [x] GitExecutor atom for git commands
134
+ - [x] DiffAnalyzer molecule for diff analysis
135
+ - [x] MessageGenerator with LLM integration
136
+ - [x] FileStager for staging logic
137
+ - [x] CommitOrchestrator for workflow
138
+ - [x] CommitOptions model
139
+ - [x] CLI with option parsing
140
+ - [x] Configuration support (YAML)
141
+ - [x] System prompt in dev-handbook
142
+ - [x] Comprehensive tests (22 passing)
143
+ - [x] README documentation
144
+
145
+ ### Not Implemented (Out of Scope) ❌
146
+
147
+ - [ ] Multi-repository support
148
+ - [ ] Submodule handling
149
+ - [ ] Concurrent execution
150
+ - [ ] Editor integration (--no-edit)
151
+ - [ ] Complex repository filtering
152
+
153
+ ## Recommendations
154
+
155
+ ### Use ace-git-commit when:
156
+ - Working in a true monorepo (ace)
157
+ - Want automatic staging of all changes
158
+ - Need better LLM integration performance
159
+ - Prefer simpler, focused tooling
160
+
161
+ ### Use dev-tools git-commit when:
162
+ - Need multi-repository support
163
+ - Working with submodules
164
+ - Need concurrent execution
165
+ - Require complex repository filtering
166
+
167
+ ## Summary
168
+
169
+ `ace-git-commit` is a simplified, monorepo-focused reimplementation that:
170
+ - **Simplifies** the default workflow (auto-stages all changes)
171
+ - **Improves** LLM integration (direct Ruby calls)
172
+ - **Focuses** on single-repository use cases
173
+ - **Follows** ATOM architecture patterns
174
+ - **Reduces** complexity by removing multi-repo features
175
+
176
+ The trade-off is losing multi-repository and submodule support in favor of a cleaner, simpler implementation optimized for monorepo workflows.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Michal Czyz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.